mirror of
https://github.com/MODSetter/SurfSense.git
synced 2026-05-31 19:45:15 +02:00
chore(automation): trim docstrings to intent only
Cut the docstrings and Field(description=...) text across the entire automations/ tree down to single-line intent statements, matching the multi_agent_chat conciseness style: - Module docstrings: one line stating what the file is. - Class docstrings: deleted when the class name + module docstring already cover intent; kept only where they add a constraint or rationale not visible in the signature. - Pydantic Field descriptions: short noun phrases / clauses, not full sentences. Reasoning that belonged in the design plan moved out of the code. - Enum values: per-value docstrings replaced with terse inline comments where the meaning isn't obvious from the name. Behaviour is unchanged. The same 33 files, same public surface, same imports — verified by re-running the 10-point registry smoke test and the 8-point schema round-trip / constraint suite from commits 9 and 10. LOC: 1180 → 691 (-42%).
This commit is contained in:
parent
7a96c0e29c
commit
f0e00bd3ee
33 changed files with 80 additions and 568 deletions
|
|
@ -1,4 +1,4 @@
|
|||
"""Capability registry: ``types.py`` (dataclass), ``store.py`` (dict + register fn)."""
|
||||
"""Capability registry."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""Capability registry: in-memory dict + ``register_capability`` API."""
|
||||
"""In-memory capability registry. Populated once at process startup."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
|
@ -8,33 +8,16 @@ _REGISTRY: dict[str, Capability] = {}
|
|||
|
||||
|
||||
def register_capability(capability: Capability) -> None:
|
||||
"""Add a capability to the in-memory registry.
|
||||
|
||||
Raises ``ValueError`` on duplicate ``id`` — registration is
|
||||
idempotent only at the module level (a module's
|
||||
``register_capability`` call runs once per process), so a
|
||||
duplicate is always a bug.
|
||||
"""
|
||||
|
||||
"""Register a capability. Raises on duplicate id."""
|
||||
if capability.id in _REGISTRY:
|
||||
raise ValueError(
|
||||
f"Capability already registered: {capability.id!r}"
|
||||
)
|
||||
raise ValueError(f"Capability already registered: {capability.id!r}")
|
||||
_REGISTRY[capability.id] = capability
|
||||
|
||||
|
||||
def get_capability(capability_id: str) -> Capability | None:
|
||||
"""Look up one capability by id. Returns ``None`` on miss."""
|
||||
|
||||
return _REGISTRY.get(capability_id)
|
||||
|
||||
|
||||
def all_capabilities() -> dict[str, Capability]:
|
||||
"""Snapshot of the registry as a defensive copy.
|
||||
|
||||
Returned dict is safe to iterate while other code calls
|
||||
``register_capability`` (which v1 never does post-startup, but
|
||||
the contract holds anyway).
|
||||
"""
|
||||
|
||||
"""Defensive snapshot of the registry."""
|
||||
return dict(_REGISTRY)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
"""``Capability`` dataclass — the v1-minimum five-field shape."""
|
||||
"""``Capability`` dataclass and handler signature. Locked at five fields for v1."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
|
|
@ -7,32 +7,10 @@ from dataclasses import dataclass
|
|||
from typing import Any
|
||||
|
||||
CapabilityHandler = Callable[[dict[str, Any]], Awaitable[Any]]
|
||||
"""The signature every capability handler must satisfy.
|
||||
|
||||
The handler is a closure that already holds whatever runtime context
|
||||
it needs (DB session, search-space scope, logger, etc.). The
|
||||
registry only passes through the caller's input dict — the same dict
|
||||
that was validated against ``input_schema``.
|
||||
"""
|
||||
|
||||
|
||||
@dataclass(frozen=True, slots=True)
|
||||
class Capability:
|
||||
"""The unit of "what SurfSense can do," consumed by every layer.
|
||||
|
||||
v1 keeps the dataclass to exactly five fields. Earlier drafts
|
||||
considered ``name``, ``required_credentials``, ``side_effects``,
|
||||
``expected_duration_seconds``, and ``cost_estimate``; every one
|
||||
of those has been removed until a concrete consumer feature
|
||||
requires it (see ``automation-design-plan.md`` §3, decision v1).
|
||||
|
||||
The handler is a ready-to-call function. It does not receive a
|
||||
context argument — context is bound at registration time by the
|
||||
factory that builds the closure (so a capability returned to an
|
||||
agent's tool list looks identical to one returned to an
|
||||
automation's action runtime).
|
||||
"""
|
||||
|
||||
id: str
|
||||
description: str
|
||||
input_schema: dict[str, Any]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue