Skip to content

symfonic.capabilities.tools.stages.lazy

lazy

Lazy-routing stage — narrowing from procedural-memory skill routing.

The engine's _lazy_resolve_tools answers "which registered tool names did the active procedural skills name?" and returns None for every flavour of "cannot say". This stage is the consumer of that answer, and it refuses the same two ways twice: an empty allowlist and an allowlist that resolves to nothing both abstain rather than hand the model a zero-tool turn.

LazyRoutingStage

LazyRoutingStage(*, allowed_names: Sequence[str] | None = None)

Narrow to the tool names procedural routing resolved.

Source code in src/symfonic/capabilities/tools/stages/lazy.py
def __init__(self, *, allowed_names: Sequence[str] | None = None) -> None:
    self._allowed = None if allowed_names is None else tuple(allowed_names)