@namzu/sdk 45.1.0 → 48.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +436 -8
- package/README.md +7 -8
- package/dist/advisory/history.d.ts.map +1 -1
- package/dist/advisory/history.js +21 -1
- package/dist/advisory/history.js.map +1 -1
- package/dist/advisory/index.d.ts +1 -1
- package/dist/advisory/index.d.ts.map +1 -1
- package/dist/advisory/index.js +1 -1
- package/dist/advisory/index.js.map +1 -1
- package/dist/advisory/registry.d.ts +17 -0
- package/dist/advisory/registry.d.ts.map +1 -1
- package/dist/advisory/registry.js +26 -0
- package/dist/advisory/registry.js.map +1 -1
- package/dist/agents/PipelineAgent.d.ts +2 -46
- package/dist/agents/PipelineAgent.d.ts.map +1 -1
- package/dist/agents/PipelineAgent.js +2 -242
- package/dist/agents/PipelineAgent.js.map +1 -1
- package/dist/agents/QueryAgent.d.ts +21 -0
- package/dist/agents/QueryAgent.d.ts.map +1 -0
- package/dist/agents/QueryAgent.js +214 -0
- package/dist/agents/QueryAgent.js.map +1 -0
- package/dist/agents/ReactiveAgent.d.ts +4 -16
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +4 -183
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/RouterAgent.d.ts +2 -20
- package/dist/agents/RouterAgent.d.ts.map +1 -1
- package/dist/agents/RouterAgent.js +2 -266
- package/dist/agents/RouterAgent.js.map +1 -1
- package/dist/agents/SupervisorAgent.d.ts +3 -43
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +3 -418
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/agents/defineAgent.d.ts +2 -1
- package/dist/agents/defineAgent.d.ts.map +1 -1
- package/dist/agents/defineAgent.js +6 -1
- package/dist/agents/defineAgent.js.map +1 -1
- package/dist/agents/examples/PipelineAgent.d.ts +46 -0
- package/dist/agents/examples/PipelineAgent.d.ts.map +1 -0
- package/dist/agents/examples/PipelineAgent.js +242 -0
- package/dist/agents/examples/PipelineAgent.js.map +1 -0
- package/dist/agents/examples/RouterAgent.d.ts +22 -0
- package/dist/agents/examples/RouterAgent.d.ts.map +1 -0
- package/dist/agents/examples/RouterAgent.js +268 -0
- package/dist/agents/examples/RouterAgent.js.map +1 -0
- package/dist/agents/examples/SupervisorAgent.d.ts +45 -0
- package/dist/agents/examples/SupervisorAgent.d.ts.map +1 -0
- package/dist/agents/examples/SupervisorAgent.js +406 -0
- package/dist/agents/examples/SupervisorAgent.js.map +1 -0
- package/dist/agents/explore.d.ts +6 -3
- package/dist/agents/explore.d.ts.map +1 -1
- package/dist/agents/explore.js +6 -3
- package/dist/agents/explore.js.map +1 -1
- package/dist/agents/forward-options.d.ts +11 -0
- package/dist/agents/forward-options.d.ts.map +1 -0
- package/dist/agents/forward-options.js +15 -0
- package/dist/agents/forward-options.js.map +1 -0
- package/dist/agents/index.d.ts +1 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +2 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/runAgent.d.ts +19 -8
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js +99 -29
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/authorization/command-line.d.ts +2 -0
- package/dist/authorization/command-line.d.ts.map +1 -1
- package/dist/authorization/command-line.js +2 -2
- package/dist/authorization/command-line.js.map +1 -1
- package/dist/authorization/gate.d.ts +13 -2
- package/dist/authorization/gate.d.ts.map +1 -1
- package/dist/authorization/gate.js +37 -5
- package/dist/authorization/gate.js.map +1 -1
- package/dist/authorization/program.d.ts +151 -0
- package/dist/authorization/program.d.ts.map +1 -0
- package/dist/authorization/program.js +713 -0
- package/dist/authorization/program.js.map +1 -0
- package/dist/authorization/reexec-wrapper.d.ts +106 -0
- package/dist/authorization/reexec-wrapper.d.ts.map +1 -0
- package/dist/authorization/reexec-wrapper.js +532 -0
- package/dist/authorization/reexec-wrapper.js.map +1 -0
- package/dist/authorization/rules.d.ts +9 -0
- package/dist/authorization/rules.d.ts.map +1 -1
- package/dist/authorization/rules.js +27 -1
- package/dist/authorization/rules.js.map +1 -1
- package/dist/authorization/shell-lexer.d.ts +39 -0
- package/dist/authorization/shell-lexer.d.ts.map +1 -1
- package/dist/authorization/shell-lexer.js +113 -69
- package/dist/authorization/shell-lexer.js.map +1 -1
- package/dist/bridge/sse/mapper.d.ts.map +1 -1
- package/dist/bridge/sse/mapper.js +6 -0
- package/dist/bridge/sse/mapper.js.map +1 -1
- package/dist/capabilities/index.d.ts +54 -0
- package/dist/capabilities/index.d.ts.map +1 -0
- package/dist/capabilities/index.js +92 -0
- package/dist/capabilities/index.js.map +1 -0
- package/dist/config/registry.d.ts +2 -1
- package/dist/config/registry.d.ts.map +1 -1
- package/dist/config/registry.js +3 -2
- package/dist/config/registry.js.map +1 -1
- package/dist/connector/index.d.ts +4 -4
- package/dist/connector/index.d.ts.map +1 -1
- package/dist/connector/index.js +3 -3
- package/dist/connector/index.js.map +1 -1
- package/dist/connector/mcp/adapter.d.ts +16 -1
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +60 -4
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/connector/mcp/client.d.ts +13 -4
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +20 -3
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/discovery.d.ts +24 -1
- package/dist/connector/mcp/discovery.d.ts.map +1 -1
- package/dist/connector/mcp/discovery.js +44 -0
- package/dist/connector/mcp/discovery.js.map +1 -1
- package/dist/connector/mcp/index.d.ts +2 -0
- package/dist/connector/mcp/index.d.ts.map +1 -1
- package/dist/connector/mcp/index.js +11 -0
- package/dist/connector/mcp/index.js.map +1 -1
- package/dist/connector/mcp/mcp-toolset.d.ts +133 -0
- package/dist/connector/mcp/mcp-toolset.d.ts.map +1 -0
- package/dist/connector/mcp/mcp-toolset.js +399 -0
- package/dist/connector/mcp/mcp-toolset.js.map +1 -0
- package/dist/connector/tools/index.d.ts +2 -2
- package/dist/connector/tools/index.d.ts.map +1 -1
- package/dist/connector/tools/index.js +1 -1
- package/dist/connector/tools/index.js.map +1 -1
- package/dist/connector/tools/router.d.ts +15 -13
- package/dist/connector/tools/router.d.ts.map +1 -1
- package/dist/connector/tools/router.js +30 -51
- package/dist/connector/tools/router.js.map +1 -1
- package/dist/contracts/a2a.d.ts +2 -2
- package/dist/directory/derive-supervisor.d.ts +2 -2
- package/dist/directory/derive-supervisor.d.ts.map +1 -1
- package/dist/directory/derive-supervisor.js +6 -7
- package/dist/directory/derive-supervisor.js.map +1 -1
- package/dist/directory/derive.d.ts.map +1 -1
- package/dist/directory/derive.js +5 -5
- package/dist/directory/derive.js.map +1 -1
- package/dist/execution/code-runtime/types.d.ts +2 -2
- package/dist/execution/code-runtime/types.js +1 -1
- package/dist/invariants/index.d.ts +2 -1
- package/dist/invariants/index.d.ts.map +1 -1
- package/dist/invariants/index.js +3 -2
- package/dist/invariants/index.js.map +1 -1
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +9 -0
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/connector/environment.d.ts +6 -0
- package/dist/manager/connector/environment.d.ts.map +1 -1
- package/dist/manager/connector/environment.js +11 -4
- package/dist/manager/connector/environment.js.map +1 -1
- package/dist/manager/connector/index.d.ts +2 -2
- package/dist/manager/connector/index.d.ts.map +1 -1
- package/dist/manager/connector/index.js +2 -2
- package/dist/manager/connector/index.js.map +1 -1
- package/dist/manager/connector/tenant.d.ts +6 -0
- package/dist/manager/connector/tenant.d.ts.map +1 -1
- package/dist/manager/connector/tenant.js +11 -4
- package/dist/manager/connector/tenant.js.map +1 -1
- package/dist/manager/index.d.ts +2 -2
- package/dist/manager/index.d.ts.map +1 -1
- package/dist/manager/index.js +2 -2
- package/dist/manager/index.js.map +1 -1
- package/dist/manager/resident/learning-observation.d.ts +4 -4
- package/dist/manager/resident/learning.d.ts +36 -36
- package/dist/manager/session/attribution.d.ts +22 -0
- package/dist/manager/session/attribution.d.ts.map +1 -0
- package/dist/manager/session/attribution.js +64 -0
- package/dist/manager/session/attribution.js.map +1 -0
- package/dist/manager/session/turn-recorder.d.ts +14 -0
- package/dist/manager/session/turn-recorder.d.ts.map +1 -1
- package/dist/manager/session/turn-recorder.js +208 -55
- package/dist/manager/session/turn-recorder.js.map +1 -1
- package/dist/peers/address.d.ts +36 -0
- package/dist/peers/address.d.ts.map +1 -0
- package/dist/peers/address.js +52 -0
- package/dist/peers/address.js.map +1 -0
- package/dist/peers/client.d.ts +47 -0
- package/dist/peers/client.d.ts.map +1 -0
- package/dist/peers/client.js +132 -0
- package/dist/peers/client.js.map +1 -0
- package/dist/peers/dir.d.ts +88 -0
- package/dist/peers/dir.d.ts.map +1 -0
- package/dist/peers/dir.js +139 -0
- package/dist/peers/dir.js.map +1 -0
- package/dist/peers/endpoint.d.ts +144 -0
- package/dist/peers/endpoint.d.ts.map +1 -0
- package/dist/peers/endpoint.js +420 -0
- package/dist/peers/endpoint.js.map +1 -0
- package/dist/peers/envelope.d.ts +42 -0
- package/dist/peers/envelope.d.ts.map +1 -0
- package/dist/peers/envelope.js +110 -0
- package/dist/peers/envelope.js.map +1 -0
- package/dist/peers/index.d.ts +30 -0
- package/dist/peers/index.d.ts.map +1 -0
- package/dist/peers/index.js +22 -0
- package/dist/peers/index.js.map +1 -0
- package/dist/peers/protocol.d.ts +645 -0
- package/dist/peers/protocol.d.ts.map +1 -0
- package/dist/peers/protocol.js +151 -0
- package/dist/peers/protocol.js.map +1 -0
- package/dist/peers/record.d.ts +71 -0
- package/dist/peers/record.d.ts.map +1 -0
- package/dist/peers/record.js +45 -0
- package/dist/peers/record.js.map +1 -0
- package/dist/peers/registry.d.ts +54 -0
- package/dist/peers/registry.d.ts.map +1 -0
- package/dist/peers/registry.js +213 -0
- package/dist/peers/registry.js.map +1 -0
- package/dist/plugin/define.d.ts +24 -0
- package/dist/plugin/define.d.ts.map +1 -0
- package/dist/plugin/define.js +42 -0
- package/dist/plugin/define.js.map +1 -0
- package/dist/plugin/index.d.ts +2 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1 -0
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/lifecycle.d.ts +27 -3
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/lifecycle.js +242 -92
- package/dist/plugin/lifecycle.js.map +1 -1
- package/dist/plugin/resolver.d.ts +2 -2
- package/dist/plugin/resolver.d.ts.map +1 -1
- package/dist/plugin/resolver.js.map +1 -1
- package/dist/plugin/shell-hook.d.ts.map +1 -1
- package/dist/plugin/shell-hook.js +17 -3
- package/dist/plugin/shell-hook.js.map +1 -1
- package/dist/pricing/catalogue.generated.d.ts.map +1 -1
- package/dist/pricing/catalogue.generated.js +28 -4
- package/dist/pricing/catalogue.generated.js.map +1 -1
- package/dist/probe/errors.d.ts +2 -1
- package/dist/probe/errors.d.ts.map +1 -1
- package/dist/probe/errors.js +3 -2
- package/dist/probe/errors.js.map +1 -1
- package/dist/prompt/coding-agent-doctrine.d.ts +18 -7
- package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -1
- package/dist/prompt/coding-agent-doctrine.js +11 -6
- package/dist/prompt/coding-agent-doctrine.js.map +1 -1
- package/dist/prompt/contributions.d.ts +4 -1
- package/dist/prompt/contributions.d.ts.map +1 -1
- package/dist/prompt/contributions.js +7 -2
- package/dist/prompt/contributions.js.map +1 -1
- package/dist/prompt/index.d.ts +1 -1
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +1 -1
- package/dist/prompt/index.js.map +1 -1
- package/dist/provider/collect-chat-completion.d.ts +6 -1
- package/dist/provider/collect-chat-completion.d.ts.map +1 -1
- package/dist/provider/collect-chat-completion.js +88 -10
- package/dist/provider/collect-chat-completion.js.map +1 -1
- package/dist/provider/mock.d.ts.map +1 -1
- package/dist/provider/mock.js +23 -6
- package/dist/provider/mock.js.map +1 -1
- package/dist/provider/registry.d.ts +2 -1
- package/dist/provider/registry.d.ts.map +1 -1
- package/dist/provider/registry.js +3 -2
- package/dist/provider/registry.js.map +1 -1
- package/dist/provider/tool-call-framing.d.ts +164 -0
- package/dist/provider/tool-call-framing.d.ts.map +1 -0
- package/dist/provider/tool-call-framing.js +163 -0
- package/dist/provider/tool-call-framing.js.map +1 -0
- package/dist/public-runtime.d.ts +27 -14
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +49 -11
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +9 -6
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +13 -5
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +16 -5
- package/dist/public-types.d.ts.map +1 -1
- package/dist/read-model/registry.d.ts +2 -1
- package/dist/read-model/registry.d.ts.map +1 -1
- package/dist/read-model/registry.js +3 -2
- package/dist/read-model/registry.js.map +1 -1
- package/dist/registry/ManagedRegistry.d.ts +30 -0
- package/dist/registry/ManagedRegistry.d.ts.map +1 -1
- package/dist/registry/ManagedRegistry.js +45 -6
- package/dist/registry/ManagedRegistry.js.map +1 -1
- package/dist/registry/collision.d.ts +57 -0
- package/dist/registry/collision.d.ts.map +1 -0
- package/dist/registry/collision.js +41 -0
- package/dist/registry/collision.js.map +1 -0
- package/dist/registry/command/index.d.ts +5 -3
- package/dist/registry/command/index.d.ts.map +1 -1
- package/dist/registry/command/index.js +6 -4
- package/dist/registry/command/index.js.map +1 -1
- package/dist/registry/index.d.ts +3 -4
- package/dist/registry/index.d.ts.map +1 -1
- package/dist/registry/index.js +2 -2
- package/dist/registry/index.js.map +1 -1
- package/dist/registry/plugin/index.d.ts.map +1 -1
- package/dist/registry/plugin/index.js +14 -1
- package/dist/registry/plugin/index.js.map +1 -1
- package/dist/registry/tool/callable.d.ts +22 -0
- package/dist/registry/tool/callable.d.ts.map +1 -0
- package/dist/registry/tool/callable.js +28 -0
- package/dist/registry/tool/callable.js.map +1 -0
- package/dist/registry/tool/execute.d.ts +14 -77
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +15 -720
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/registry/tool/portable.d.ts +25 -0
- package/dist/registry/tool/portable.d.ts.map +1 -1
- package/dist/registry/tool/portable.js +50 -0
- package/dist/registry/tool/portable.js.map +1 -1
- package/dist/registry/tool/presentation.d.ts +6 -5
- package/dist/registry/tool/presentation.d.ts.map +1 -1
- package/dist/registry/tool/presentation.js +3 -3
- package/dist/registry/tool/presentation.js.map +1 -1
- package/dist/runtime/bidi/session.d.ts +5 -4
- package/dist/runtime/bidi/session.d.ts.map +1 -1
- package/dist/runtime/bidi/session.js +18 -1
- package/dist/runtime/bidi/session.js.map +1 -1
- package/dist/runtime/query/executor/tool-call-admission.d.ts +82 -13
- package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
- package/dist/runtime/query/executor/tool-call-admission.js +227 -17
- package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +37 -5
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +103 -14
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/file-evidence-replay.d.ts +1 -1
- package/dist/runtime/query/file-evidence-replay.d.ts.map +1 -1
- package/dist/runtime/query/file-evidence-replay.js +8 -7
- package/dist/runtime/query/file-evidence-replay.js.map +1 -1
- package/dist/runtime/query/fork/prepare.d.ts +4 -1
- package/dist/runtime/query/fork/prepare.d.ts.map +1 -1
- package/dist/runtime/query/fork/prepare.js +4 -0
- package/dist/runtime/query/fork/prepare.js.map +1 -1
- package/dist/runtime/query/guardrail-presets.d.ts +4 -3
- package/dist/runtime/query/guardrail-presets.d.ts.map +1 -1
- package/dist/runtime/query/guardrail-presets.js +4 -3
- package/dist/runtime/query/guardrail-presets.js.map +1 -1
- package/dist/runtime/query/index.d.ts +23 -10
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +149 -70
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +8 -1
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +2 -2
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/tool-review.js +55 -2
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +342 -116
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/iteration/tool-input.d.ts +79 -0
- package/dist/runtime/query/iteration/tool-input.d.ts.map +1 -0
- package/dist/runtime/query/iteration/tool-input.js +291 -0
- package/dist/runtime/query/iteration/tool-input.js.map +1 -0
- package/dist/runtime/query/observation-context.d.ts +2 -2
- package/dist/runtime/query/observation-context.d.ts.map +1 -1
- package/dist/runtime/query/observation-context.js.map +1 -1
- package/dist/runtime/query/prelude-lease.d.ts +18 -0
- package/dist/runtime/query/prelude-lease.d.ts.map +1 -0
- package/dist/runtime/query/prelude-lease.js +121 -0
- package/dist/runtime/query/prelude-lease.js.map +1 -0
- package/dist/runtime/query/prepare-turn.d.ts.map +1 -1
- package/dist/runtime/query/prepare-turn.js +386 -187
- package/dist/runtime/query/prepare-turn.js.map +1 -1
- package/dist/runtime/query/prompt-cache.d.ts +2 -2
- package/dist/runtime/query/prompt-cache.d.ts.map +1 -1
- package/dist/runtime/query/prompt.d.ts +2 -2
- package/dist/runtime/query/prompt.d.ts.map +1 -1
- package/dist/runtime/query/prompt.js +1 -1
- package/dist/runtime/query/prompt.js.map +1 -1
- package/dist/runtime/query/resume-session.d.ts.map +1 -1
- package/dist/runtime/query/resume-session.js +37 -2
- package/dist/runtime/query/resume-session.js.map +1 -1
- package/dist/runtime/query/review-policy.d.ts +65 -3
- package/dist/runtime/query/review-policy.d.ts.map +1 -1
- package/dist/runtime/query/review-policy.js +143 -22
- package/dist/runtime/query/review-policy.js.map +1 -1
- package/dist/runtime/query/tooling.d.ts +3 -2
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/runtime/query/turn-state.d.ts.map +1 -1
- package/dist/runtime/query/turn-state.js +5 -0
- package/dist/runtime/query/turn-state.js.map +1 -1
- package/dist/runtime/system-events.d.ts +112 -0
- package/dist/runtime/system-events.d.ts.map +1 -0
- package/dist/runtime/system-events.js +183 -0
- package/dist/runtime/system-events.js.map +1 -0
- package/dist/scheduler/delegating.d.ts +2 -1
- package/dist/scheduler/delegating.d.ts.map +1 -1
- package/dist/scheduler/delegating.js +3 -2
- package/dist/scheduler/delegating.js.map +1 -1
- package/dist/skills/index.d.ts +1 -1
- package/dist/skills/index.d.ts.map +1 -1
- package/dist/skills/index.js +1 -1
- package/dist/skills/index.js.map +1 -1
- package/dist/skills/registry.d.ts +18 -0
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +20 -0
- package/dist/skills/registry.js.map +1 -1
- package/dist/store/evidence/index-page.d.ts +2 -2
- package/dist/store/session-log/conformance.d.ts +1 -1
- package/dist/store/session-log/conformance.d.ts.map +1 -1
- package/dist/store/session-log/conformance.js +49 -8
- package/dist/store/session-log/conformance.js.map +1 -1
- package/dist/store/session-log/core.d.ts +8 -3
- package/dist/store/session-log/core.d.ts.map +1 -1
- package/dist/store/session-log/core.js +2 -1
- package/dist/store/session-log/core.js.map +1 -1
- package/dist/store/session-log/fold.d.ts +12 -0
- package/dist/store/session-log/fold.d.ts.map +1 -1
- package/dist/store/session-log/fold.js +57 -7
- package/dist/store/session-log/fold.js.map +1 -1
- package/dist/store/session-log/index.d.ts +2 -2
- package/dist/store/session-log/index.d.ts.map +1 -1
- package/dist/store/session-log/index.js +1 -1
- package/dist/store/session-log/index.js.map +1 -1
- package/dist/test-support/toolset.d.ts +19 -0
- package/dist/test-support/toolset.d.ts.map +1 -0
- package/dist/test-support/toolset.js +20 -0
- package/dist/test-support/toolset.js.map +1 -0
- package/dist/tools/builtins/bash.d.ts +29 -0
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +19 -9
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/browser-url.d.ts +1 -1
- package/dist/tools/builtins/browser-url.js +1 -1
- package/dist/tools/builtins/browser.d.ts +6 -6
- package/dist/tools/builtins/computer-use-coordinates.d.ts +65 -0
- package/dist/tools/builtins/computer-use-coordinates.d.ts.map +1 -0
- package/dist/tools/builtins/computer-use-coordinates.js +123 -0
- package/dist/tools/builtins/computer-use-coordinates.js.map +1 -0
- package/dist/tools/builtins/computer-use-image.d.ts +77 -0
- package/dist/tools/builtins/computer-use-image.d.ts.map +1 -0
- package/dist/tools/builtins/computer-use-image.js +223 -0
- package/dist/tools/builtins/computer-use-image.js.map +1 -0
- package/dist/tools/builtins/computer-use.d.ts +519 -14
- package/dist/tools/builtins/computer-use.d.ts.map +1 -1
- package/dist/tools/builtins/computer-use.js +1196 -183
- package/dist/tools/builtins/computer-use.js.map +1 -1
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +9 -1
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/index.d.ts +2 -1
- package/dist/tools/builtins/index.d.ts.map +1 -1
- package/dist/tools/builtins/index.js +1 -1
- package/dist/tools/builtins/index.js.map +1 -1
- package/dist/tools/builtins/json-string-hint.d.ts +15 -0
- package/dist/tools/builtins/json-string-hint.d.ts.map +1 -0
- package/dist/tools/builtins/json-string-hint.js +17 -0
- package/dist/tools/builtins/json-string-hint.js.map +1 -0
- package/dist/tools/builtins/search-tools.d.ts.map +1 -1
- package/dist/tools/builtins/search-tools.js +7 -15
- package/dist/tools/builtins/search-tools.js.map +1 -1
- package/dist/tools/builtins/skill.d.ts +74 -0
- package/dist/tools/builtins/skill.d.ts.map +1 -1
- package/dist/tools/builtins/skill.js +214 -174
- package/dist/tools/builtins/skill.js.map +1 -1
- package/dist/tools/builtins/write-file.d.ts.map +1 -1
- package/dist/tools/builtins/write-file.js +11 -0
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/command-shell.d.ts +10 -0
- package/dist/tools/command-shell.d.ts.map +1 -1
- package/dist/tools/command-shell.js +45 -1
- package/dist/tools/command-shell.js.map +1 -1
- package/dist/tools/coordinator/agent.d.ts.map +1 -1
- package/dist/tools/coordinator/agent.js +5 -0
- package/dist/tools/coordinator/agent.js.map +1 -1
- package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -1
- package/dist/tools/coordinator/ask-user-question.js +26 -13
- package/dist/tools/coordinator/ask-user-question.js.map +1 -1
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +5 -0
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/coordinator/question-options.d.ts +78 -0
- package/dist/tools/coordinator/question-options.d.ts.map +1 -0
- package/dist/tools/coordinator/question-options.js +153 -0
- package/dist/tools/coordinator/question-options.js.map +1 -0
- package/dist/tools/defineTool.d.ts +12 -0
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +24 -0
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/memory/search.d.ts.map +1 -1
- package/dist/tools/memory/search.js +4 -1
- package/dist/tools/memory/search.js.map +1 -1
- package/dist/tools/memory/update.d.ts.map +1 -1
- package/dist/tools/memory/update.js +8 -5
- package/dist/tools/memory/update.js.map +1 -1
- package/dist/tools/render-nonce.d.ts +47 -0
- package/dist/tools/render-nonce.d.ts.map +1 -0
- package/dist/tools/render-nonce.js +63 -0
- package/dist/tools/render-nonce.js.map +1 -0
- package/dist/tools/roster.d.ts +46 -19
- package/dist/tools/roster.d.ts.map +1 -1
- package/dist/tools/roster.js +63 -33
- package/dist/tools/roster.js.map +1 -1
- package/dist/tools/schedules/present.d.ts.map +1 -1
- package/dist/tools/schedules/present.js +2 -0
- package/dist/tools/schedules/present.js.map +1 -1
- package/dist/tools/schedules/schedule-tool.d.ts +6 -5
- package/dist/tools/schedules/schedule-tool.d.ts.map +1 -1
- package/dist/tools/schedules/schedule-tool.js +208 -37
- package/dist/tools/schedules/schedule-tool.js.map +1 -1
- package/dist/tools/schedules/types.d.ts +120 -6
- package/dist/tools/schedules/types.d.ts.map +1 -1
- package/dist/tools/trusted-read-only.d.ts +9 -5
- package/dist/tools/trusted-read-only.d.ts.map +1 -1
- package/dist/tools/trusted-read-only.js +14 -10
- package/dist/tools/trusted-read-only.js.map +1 -1
- package/dist/tools/untrusted-envelope.d.ts +67 -28
- package/dist/tools/untrusted-envelope.d.ts.map +1 -1
- package/dist/tools/untrusted-envelope.js +108 -59
- package/dist/tools/untrusted-envelope.js.map +1 -1
- package/dist/toolsets/combine.d.ts +44 -0
- package/dist/toolsets/combine.d.ts.map +1 -0
- package/dist/toolsets/combine.js +153 -0
- package/dist/toolsets/combine.js.map +1 -0
- package/dist/toolsets/manager.d.ts +201 -0
- package/dist/toolsets/manager.d.ts.map +1 -0
- package/dist/toolsets/manager.js +837 -0
- package/dist/toolsets/manager.js.map +1 -0
- package/dist/toolsets/source-glob.d.ts +15 -0
- package/dist/toolsets/source-glob.d.ts.map +1 -0
- package/dist/toolsets/source-glob.js +23 -0
- package/dist/toolsets/source-glob.js.map +1 -0
- package/dist/toolsets/toolset.d.ts +20 -0
- package/dist/toolsets/toolset.d.ts.map +1 -0
- package/dist/toolsets/toolset.js +28 -0
- package/dist/toolsets/toolset.js.map +1 -0
- package/dist/toolsets/types.d.ts +128 -0
- package/dist/toolsets/types.d.ts.map +1 -0
- package/dist/toolsets/types.js +33 -0
- package/dist/toolsets/types.js.map +1 -0
- package/dist/toolsets/wrappers.d.ts +59 -0
- package/dist/toolsets/wrappers.d.ts.map +1 -0
- package/dist/toolsets/wrappers.js +165 -0
- package/dist/toolsets/wrappers.js.map +1 -0
- package/dist/types/agent/base.d.ts +27 -16
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/agent/index.d.ts +1 -0
- package/dist/types/agent/index.d.ts.map +1 -1
- package/dist/types/agent/index.js +1 -0
- package/dist/types/agent/index.js.map +1 -1
- package/dist/types/agent/pipeline.d.ts +2 -0
- package/dist/types/agent/pipeline.d.ts.map +1 -1
- package/dist/types/agent/query.d.ts +117 -0
- package/dist/types/agent/query.d.ts.map +1 -0
- package/dist/types/agent/query.js +2 -0
- package/dist/types/agent/query.js.map +1 -0
- package/dist/types/agent/reactive.d.ts +2 -129
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/agent/router.d.ts +2 -0
- package/dist/types/agent/router.d.ts.map +1 -1
- package/dist/types/agent/supervisor.d.ts +5 -2
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/authorization/index.d.ts +70 -12
- package/dist/types/authorization/index.d.ts.map +1 -1
- package/dist/types/authorization/index.js +11 -0
- package/dist/types/authorization/index.js.map +1 -1
- package/dist/types/computer-use/index.d.ts +176 -0
- package/dist/types/computer-use/index.d.ts.map +1 -1
- package/dist/types/computer-use/index.js.map +1 -1
- package/dist/types/connector/mcp.d.ts +32 -0
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/errors/index.d.ts +15 -0
- package/dist/types/errors/index.d.ts.map +1 -1
- package/dist/types/errors/index.js.map +1 -1
- package/dist/types/hitl/index.d.ts +57 -0
- package/dist/types/hitl/index.d.ts.map +1 -1
- package/dist/types/hitl/index.js.map +1 -1
- package/dist/types/message/index.d.ts +130 -9
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +4 -1
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/plugin/index.d.ts +22 -4
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/plugin/index.js +1 -0
- package/dist/types/plugin/index.js.map +1 -1
- package/dist/types/provider/chat.d.ts +5 -0
- package/dist/types/provider/chat.d.ts.map +1 -1
- package/dist/types/provider/config.d.ts +8 -3
- package/dist/types/provider/config.d.ts.map +1 -1
- package/dist/types/provider/stream.d.ts +39 -0
- package/dist/types/provider/stream.d.ts.map +1 -1
- package/dist/types/sandbox/index.d.ts +1 -1
- package/dist/types/session/events.d.ts +14 -3
- package/dist/types/session/events.d.ts.map +1 -1
- package/dist/types/session/events.js.map +1 -1
- package/dist/types/tool/index.d.ts +171 -91
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/toolset/index.d.ts +10 -40
- package/dist/types/toolset/index.d.ts.map +1 -1
- package/package.json +3 -1
- package/src/advisory/history.ts +27 -2
- package/src/advisory/index.ts +1 -1
- package/src/advisory/registry.ts +33 -0
- package/src/agents/AGENTS.md +14 -7
- package/src/agents/PipelineAgent.ts +2 -303
- package/src/agents/QueryAgent.ts +269 -0
- package/src/agents/ReactiveAgent.ts +6 -216
- package/src/agents/RouterAgent.ts +2 -337
- package/src/agents/SupervisorAgent.ts +3 -476
- package/src/agents/defineAgent.ts +13 -2
- package/src/agents/examples/PipelineAgent.ts +302 -0
- package/src/agents/examples/RouterAgent.ts +338 -0
- package/src/agents/examples/SupervisorAgent.ts +472 -0
- package/src/agents/explore.ts +6 -3
- package/src/agents/forward-options.ts +37 -0
- package/src/agents/index.ts +2 -0
- package/src/agents/runAgent.ts +144 -37
- package/src/authorization/command-line.ts +2 -2
- package/src/authorization/gate.ts +46 -5
- package/src/authorization/program.ts +773 -0
- package/src/authorization/reexec-wrapper.ts +589 -0
- package/src/authorization/rules.ts +36 -1
- package/src/authorization/shell-lexer.ts +136 -63
- package/src/bridge/sse/mapper.ts +6 -0
- package/src/capabilities/index.ts +157 -0
- package/src/config/registry.ts +4 -1
- package/src/connector/index.ts +9 -2
- package/src/connector/mcp/adapter.ts +58 -3
- package/src/connector/mcp/client.ts +20 -4
- package/src/connector/mcp/discovery.ts +60 -0
- package/src/connector/mcp/index.ts +13 -0
- package/src/connector/mcp/mcp-toolset.ts +515 -0
- package/src/connector/tools/index.ts +2 -2
- package/src/connector/tools/router.ts +35 -58
- package/src/directory/derive-supervisor.ts +12 -8
- package/src/directory/derive.ts +8 -5
- package/src/execution/code-runtime/types.ts +2 -2
- package/src/invariants/index.ts +4 -1
- package/src/manager/agent/lifecycle.ts +9 -0
- package/src/manager/connector/environment.ts +17 -4
- package/src/manager/connector/index.ts +2 -2
- package/src/manager/connector/tenant.ts +17 -4
- package/src/manager/index.ts +2 -2
- package/src/manager/session/attribution.ts +79 -0
- package/src/manager/session/turn-recorder.ts +211 -55
- package/src/peers/address.ts +58 -0
- package/src/peers/client.ts +202 -0
- package/src/peers/dir.ts +176 -0
- package/src/peers/endpoint.ts +564 -0
- package/src/peers/envelope.ts +121 -0
- package/src/peers/index.ts +96 -0
- package/src/peers/protocol.ts +196 -0
- package/src/peers/record.ts +56 -0
- package/src/peers/registry.ts +241 -0
- package/src/plugin/define.ts +68 -0
- package/src/plugin/index.ts +2 -0
- package/src/plugin/lifecycle.ts +286 -106
- package/src/plugin/resolver.ts +6 -3
- package/src/plugin/shell-hook.ts +21 -5
- package/src/pricing/catalogue.generated.ts +28 -4
- package/src/pricing/rates.source.json +27 -6
- package/src/probe/errors.ts +4 -1
- package/src/prompt/coding-agent-doctrine.ts +22 -10
- package/src/prompt/contributions.ts +12 -2
- package/src/prompt/index.ts +1 -0
- package/src/provider/collect-chat-completion.ts +96 -11
- package/src/provider/mock.ts +24 -6
- package/src/provider/registry.ts +4 -1
- package/src/provider/tool-call-framing.ts +226 -0
- package/src/public-runtime.ts +152 -9
- package/src/public-tools.ts +43 -5
- package/src/public-types.ts +65 -6
- package/src/read-model/registry.ts +7 -2
- package/src/registry/ManagedRegistry.ts +57 -6
- package/src/registry/collision.ts +64 -0
- package/src/registry/command/index.ts +7 -3
- package/src/registry/index.ts +3 -9
- package/src/registry/plugin/index.ts +14 -1
- package/src/registry/tool/callable.ts +36 -0
- package/src/registry/tool/execute.ts +16 -839
- package/src/registry/tool/portable.ts +59 -0
- package/src/registry/tool/presentation.ts +6 -5
- package/src/runtime/bidi/session.ts +24 -5
- package/src/runtime/query/executor/tool-call-admission.ts +288 -22
- package/src/runtime/query/executor.ts +129 -16
- package/src/runtime/query/file-evidence-replay.ts +8 -7
- package/src/runtime/query/fork/prepare.ts +6 -1
- package/src/runtime/query/guardrail-presets.ts +4 -3
- package/src/runtime/query/index.ts +199 -101
- package/src/runtime/query/iteration/index.ts +13 -3
- package/src/runtime/query/iteration/phases/compaction.ts +1 -1
- package/src/runtime/query/iteration/phases/context.ts +2 -2
- package/src/runtime/query/iteration/phases/tool-review.ts +59 -2
- package/src/runtime/query/iteration/stream-turn.ts +390 -136
- package/src/runtime/query/iteration/tool-input.ts +284 -0
- package/src/runtime/query/observation-context.ts +2 -2
- package/src/runtime/query/prelude-lease.ts +132 -0
- package/src/runtime/query/prepare-turn.ts +477 -198
- package/src/runtime/query/prompt-cache.ts +2 -2
- package/src/runtime/query/prompt.ts +4 -4
- package/src/runtime/query/resume-session.ts +42 -3
- package/src/runtime/query/review-policy.ts +190 -24
- package/src/runtime/query/tooling.ts +3 -6
- package/src/runtime/query/turn-state.ts +4 -0
- package/src/runtime/system-events.ts +246 -0
- package/src/scheduler/delegating.ts +7 -2
- package/src/skills/index.ts +1 -1
- package/src/skills/registry.ts +33 -0
- package/src/store/session-log/conformance.ts +51 -8
- package/src/store/session-log/core.ts +10 -4
- package/src/store/session-log/fold.ts +33 -7
- package/src/store/session-log/index.ts +2 -0
- package/src/test-support/toolset.ts +23 -0
- package/src/tools/builtins/bash.ts +27 -10
- package/src/tools/builtins/browser-url.ts +1 -1
- package/src/tools/builtins/computer-use-coordinates.ts +144 -0
- package/src/tools/builtins/computer-use-image.ts +278 -0
- package/src/tools/builtins/computer-use.ts +1495 -191
- package/src/tools/builtins/edit.ts +12 -2
- package/src/tools/builtins/index.ts +7 -1
- package/src/tools/builtins/json-string-hint.ts +16 -0
- package/src/tools/builtins/search-tools.ts +7 -20
- package/src/tools/builtins/skill.ts +304 -174
- package/src/tools/builtins/write-file.ts +12 -0
- package/src/tools/command-shell.ts +46 -1
- package/src/tools/coordinator/agent.ts +6 -0
- package/src/tools/coordinator/ask-user-question.ts +29 -15
- package/src/tools/coordinator/index.ts +6 -0
- package/src/tools/coordinator/question-options.ts +195 -0
- package/src/tools/defineTool.ts +38 -0
- package/src/tools/memory/search.ts +4 -1
- package/src/tools/memory/update.ts +8 -5
- package/src/tools/render-nonce.ts +69 -0
- package/src/tools/roster.ts +84 -33
- package/src/tools/schedules/present.ts +2 -0
- package/src/tools/schedules/schedule-tool.ts +238 -39
- package/src/tools/schedules/types.ts +120 -6
- package/src/tools/trusted-read-only.ts +19 -10
- package/src/tools/untrusted-envelope.ts +121 -57
- package/src/toolsets/combine.ts +181 -0
- package/src/toolsets/manager.ts +996 -0
- package/src/toolsets/source-glob.ts +22 -0
- package/src/toolsets/toolset.ts +31 -0
- package/src/toolsets/types.ts +154 -0
- package/src/toolsets/wrappers.ts +191 -0
- package/src/types/agent/base.ts +29 -16
- package/src/types/agent/index.ts +1 -0
- package/src/types/agent/pipeline.ts +2 -0
- package/src/types/agent/query.ts +129 -0
- package/src/types/agent/reactive.ts +5 -142
- package/src/types/agent/router.ts +2 -0
- package/src/types/agent/supervisor.ts +5 -2
- package/src/types/authorization/index.ts +33 -0
- package/src/types/computer-use/index.ts +202 -0
- package/src/types/connector/mcp.ts +32 -0
- package/src/types/errors/index.ts +15 -0
- package/src/types/hitl/index.ts +57 -0
- package/src/types/message/index.ts +135 -7
- package/src/types/plugin/index.ts +44 -21
- package/src/types/provider/chat.ts +5 -0
- package/src/types/provider/config.ts +8 -3
- package/src/types/provider/stream.ts +39 -0
- package/src/types/sandbox/index.ts +1 -1
- package/src/types/session/events.ts +14 -3
- package/src/types/tool/index.ts +173 -105
- package/src/types/toolset/index.ts +10 -47
- package/dist/registry/toolset/catalog.d.ts +0 -42
- package/dist/registry/toolset/catalog.d.ts.map +0 -1
- package/dist/registry/toolset/catalog.js +0 -234
- package/dist/registry/toolset/catalog.js.map +0 -1
- package/src/registry/toolset/catalog.ts +0 -308
|
@@ -0,0 +1,472 @@
|
|
|
1
|
+
import { EMPTY_TOKEN_USAGE } from '../../constants/limits.js'
|
|
2
|
+
import { drainQuery } from '../../runtime/query/index.js'
|
|
3
|
+
import { PendingAnswers, QuestionParkBinding } from '../../runtime/query/question-park.js'
|
|
4
|
+
import { CompletionInbox } from '../../scheduler/completion-inbox.js'
|
|
5
|
+
import { LocalTaskScheduler } from '../../scheduler/local.js'
|
|
6
|
+
import {
|
|
7
|
+
ASK_USER_QUESTION_TOOL_NAME,
|
|
8
|
+
buildCoordinatorTools,
|
|
9
|
+
} from '../../tools/coordinator/index.js'
|
|
10
|
+
import { toolset } from '../../toolsets/toolset.js'
|
|
11
|
+
import { deferred, filtered } from '../../toolsets/wrappers.js'
|
|
12
|
+
import type {
|
|
13
|
+
AgentInput,
|
|
14
|
+
AgentMetadata,
|
|
15
|
+
AgentTaskResult,
|
|
16
|
+
SupervisorAgentConfig,
|
|
17
|
+
SupervisorAgentResult,
|
|
18
|
+
} from '../../types/agent/index.js'
|
|
19
|
+
import type { TaskHandle, TaskScheduler } from '../../types/agent/scheduler.js'
|
|
20
|
+
import type { AgentTaskContext } from '../../types/agent/task.js'
|
|
21
|
+
import type { SessionId, TurnId } from '../../types/ids/index.js'
|
|
22
|
+
import { deriveChildState } from '../../types/invocation/index.js'
|
|
23
|
+
import type { ActorRef } from '../../types/session/actor.js'
|
|
24
|
+
import type { SessionEventListener } from '../../types/session/events.js'
|
|
25
|
+
import type { ToolDefinition } from '../../types/tool/index.js'
|
|
26
|
+
import { ZERO_COST } from '../../utils/cost.js'
|
|
27
|
+
import type { Logger } from '../../utils/logger.js'
|
|
28
|
+
import { AbstractAgent } from '../AbstractAgent.js'
|
|
29
|
+
import { resolveAgentBudget } from '../budget.js'
|
|
30
|
+
import { childSessionStorage } from '../storage.js'
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Build the authoritative per-task ledger from the gateway's task handles.
|
|
34
|
+
*
|
|
35
|
+
* A handle carries a `result` only when its worker actually produced one. A
|
|
36
|
+
* handle with NO result never produced a verifiable outcome, so it MUST NOT be
|
|
37
|
+
* synthesized as a success: the synthesized status is always the terminal
|
|
38
|
+
* `'failed'`, regardless of the handle's reported `state` (which may itself be
|
|
39
|
+
* `'completed'`).
|
|
40
|
+
*
|
|
41
|
+
* The earlier implementation cast `handle.state` onto the synthesized result's
|
|
42
|
+
* status, letting a worker that ended without a result count toward
|
|
43
|
+
* `completedTasks`. That produced fabricated "done" workers with empty outputs
|
|
44
|
+
* (observed in a live supervised session): the supervisor reported "3 workers done, 40KB
|
|
45
|
+
* reports" when the workers never started. Real workers (those with a present
|
|
46
|
+
* `result`) are unaffected — their `result` is preserved verbatim.
|
|
47
|
+
*/
|
|
48
|
+
export function synthesizeTaskResults(
|
|
49
|
+
taskHandles: readonly TaskHandle[],
|
|
50
|
+
turn: { readonly sessionId: SessionId; readonly turnId: TurnId },
|
|
51
|
+
now: number = Date.now(),
|
|
52
|
+
): AgentTaskResult[] {
|
|
53
|
+
return taskHandles.map((handle, index) => ({
|
|
54
|
+
agentId: handle.agentId,
|
|
55
|
+
result: handle.result ?? {
|
|
56
|
+
sessionId: turn.sessionId,
|
|
57
|
+
turnId: turn.turnId,
|
|
58
|
+
status: 'failed' as const,
|
|
59
|
+
usage: { ...EMPTY_TOKEN_USAGE },
|
|
60
|
+
cost: { ...ZERO_COST },
|
|
61
|
+
iterations: 0,
|
|
62
|
+
durationMs: now - handle.createdAt,
|
|
63
|
+
messages: [],
|
|
64
|
+
},
|
|
65
|
+
taskIndex: index,
|
|
66
|
+
}))
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
/** Count only the task results that genuinely completed. */
|
|
70
|
+
export function countCompletedTasks(taskResults: readonly AgentTaskResult[]): number {
|
|
71
|
+
return taskResults.filter((t) => t.result.status === 'completed').length
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** @deprecated Example of supervised delegation; hosts can compose their own agent. */
|
|
75
|
+
export class SupervisorAgent extends AbstractAgent<SupervisorAgentConfig, SupervisorAgentResult> {
|
|
76
|
+
readonly type = 'supervisor' as const
|
|
77
|
+
|
|
78
|
+
constructor(metadata: Omit<AgentMetadata, 'type' | 'capabilities'>, log?: Logger) {
|
|
79
|
+
super(
|
|
80
|
+
{
|
|
81
|
+
...metadata,
|
|
82
|
+
type: 'supervisor',
|
|
83
|
+
capabilities: {
|
|
84
|
+
supportsTools: true,
|
|
85
|
+
supportsStreaming: true,
|
|
86
|
+
supportsConcurrency: true,
|
|
87
|
+
supportsSubAgents: true,
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
log,
|
|
91
|
+
)
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* One turn at a time per instance.
|
|
96
|
+
*
|
|
97
|
+
* `abortController` and `currentSessionId` are instance state, so two
|
|
98
|
+
* overlapping turns share one abort controller — cancelling either kills
|
|
99
|
+
* both — and the second clobbers the first's session, so a later
|
|
100
|
+
* `cancel()` cancels the wrong children. Neither failure announces itself.
|
|
101
|
+
* A host that wants parallelism constructs a second instance.
|
|
102
|
+
*/
|
|
103
|
+
async run(
|
|
104
|
+
input: AgentInput,
|
|
105
|
+
config: SupervisorAgentConfig,
|
|
106
|
+
listener?: SessionEventListener,
|
|
107
|
+
): Promise<SupervisorAgentResult> {
|
|
108
|
+
return await this.underIdempotencyKey(config.idempotencyKey, () =>
|
|
109
|
+
this.underInvocationLock(() => this.runExclusive(input, config, listener)),
|
|
110
|
+
)
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private async runExclusive(
|
|
114
|
+
input: AgentInput,
|
|
115
|
+
config: SupervisorAgentConfig,
|
|
116
|
+
listener?: SessionEventListener,
|
|
117
|
+
): Promise<SupervisorAgentResult> {
|
|
118
|
+
const startTime = Date.now()
|
|
119
|
+
if (!config.sessionId || !config.topicId || !config.projectId || !config.tenantId) {
|
|
120
|
+
throw new Error(
|
|
121
|
+
'SupervisorAgent requires sessionId, topicId, projectId, and tenantId in config (session-hierarchy.md §12.1).',
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
const sessionId = config.sessionId
|
|
125
|
+
const turnId = this.createTurnId()
|
|
126
|
+
this.bindTurn(sessionId, turnId, config.logger)
|
|
127
|
+
const topicId = config.topicId
|
|
128
|
+
const projectId = config.projectId
|
|
129
|
+
const tenantId = config.tenantId
|
|
130
|
+
|
|
131
|
+
const parentActor: ActorRef = {
|
|
132
|
+
kind: 'agent',
|
|
133
|
+
agentId: this.metadata.id,
|
|
134
|
+
tenantId,
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// One resolve for the two spellings. Read at each of the three sites
|
|
138
|
+
// instead, a host that set only `scheduler` would get a working one
|
|
139
|
+
// on one path and `undefined` on another — a half-migration that
|
|
140
|
+
// fails silently, which is worse than not renaming the field.
|
|
141
|
+
const configuredScheduler = config.scheduler
|
|
142
|
+
const budget = await resolveAgentBudget(
|
|
143
|
+
input,
|
|
144
|
+
{ ...config, budget: config.budget ?? configuredScheduler?.budget },
|
|
145
|
+
{ sessionId, turnId },
|
|
146
|
+
)
|
|
147
|
+
if (configuredScheduler && configuredScheduler.budget !== budget) {
|
|
148
|
+
throw new Error('Injected task scheduler must share the supervisor token budget authority')
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
const childStorage = await childSessionStorage(config, input.workingDirectory)
|
|
152
|
+
|
|
153
|
+
let gateway: TaskScheduler
|
|
154
|
+
if (configuredScheduler) {
|
|
155
|
+
gateway = configuredScheduler
|
|
156
|
+
} else if (config.agentManager) {
|
|
157
|
+
const mergedFactoryOptions = config.factoryOptions
|
|
158
|
+
? {
|
|
159
|
+
...config.factoryOptions,
|
|
160
|
+
taskRouter: config.taskRouter ?? config.factoryOptions.taskRouter,
|
|
161
|
+
}
|
|
162
|
+
: config.taskRouter
|
|
163
|
+
? ({
|
|
164
|
+
taskRouter: config.taskRouter,
|
|
165
|
+
} as import('../../types/agent/index.js').AgentFactoryOptions)
|
|
166
|
+
: undefined
|
|
167
|
+
|
|
168
|
+
const taskContext: AgentTaskContext = {
|
|
169
|
+
parentSessionId: sessionId,
|
|
170
|
+
parentTurnId: turnId,
|
|
171
|
+
parentAgentId: this.metadata.id,
|
|
172
|
+
parentAbortController: this.abortController,
|
|
173
|
+
// This context describes the CURRENT supervisor. AgentManager owns
|
|
174
|
+
// the increment when it constructs the child. Resetting a delegated
|
|
175
|
+
// supervisor to zero here made every grandchild depth one again.
|
|
176
|
+
depth: config.depth ?? 0,
|
|
177
|
+
budget,
|
|
178
|
+
factoryOptions: mergedFactoryOptions,
|
|
179
|
+
// The supervisor already hands this to its OWN turn. Handing it to
|
|
180
|
+
// the spawn context makes a worker's REVIEW-tier calls reach the
|
|
181
|
+
// same person. It does not grant the root-only question tool.
|
|
182
|
+
// Without the handler, workers silently auto-approved themselves.
|
|
183
|
+
...(config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
|
|
184
|
+
// And the switch that sends batches the handler would otherwise
|
|
185
|
+
// never see to it (plan mode), so a worker's rule-allowed or
|
|
186
|
+
// grant-covered call is refused where the supervisor's would be.
|
|
187
|
+
...(config.reviewAllowedCalls ? { reviewAllowedCalls: config.reviewAllowedCalls } : {}),
|
|
188
|
+
// Handed down for the same reason: a worker is a fresh turn whose
|
|
189
|
+
// executor installs the shipped screens unless the spawn says
|
|
190
|
+
// otherwise, so the supervisor's own choice — including an
|
|
191
|
+
// empty list, which `config.toolResultGuardrails` distinguishes
|
|
192
|
+
// from absent by being an array at all.
|
|
193
|
+
...(config.toolResultGuardrails
|
|
194
|
+
? { toolResultGuardrails: config.toolResultGuardrails }
|
|
195
|
+
: {}),
|
|
196
|
+
tenantId,
|
|
197
|
+
topicId,
|
|
198
|
+
sessionId,
|
|
199
|
+
projectId,
|
|
200
|
+
parentActor,
|
|
201
|
+
// A supervisor held in memory delegates to workers held in
|
|
202
|
+
// memory; without this each worker wrote a disk log under
|
|
203
|
+
// `NAMZU_HOME` its supervisor never asked for.
|
|
204
|
+
...(childStorage ? { childStorage } : {}),
|
|
205
|
+
}
|
|
206
|
+
// The only hop between the config and the gateway's policy. Omit it
|
|
207
|
+
// and the field is settable, documented, and read by nothing —
|
|
208
|
+
// which is exactly the state it was in before.
|
|
209
|
+
gateway = new LocalTaskScheduler(config.agentManager, taskContext, listener, input, {
|
|
210
|
+
...(config.siblingFailurePolicy
|
|
211
|
+
? { siblingFailurePolicy: config.siblingFailurePolicy }
|
|
212
|
+
: {}),
|
|
213
|
+
log: this.log,
|
|
214
|
+
})
|
|
215
|
+
} else {
|
|
216
|
+
// Names `scheduler`, not `gateway`. An error message is a piece of
|
|
217
|
+
// documentation delivered at the worst moment, and one that names
|
|
218
|
+
// a field being retired teaches the name on its way out.
|
|
219
|
+
throw new Error("SupervisorAgentConfig requires either 'scheduler' or 'agentManager'")
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
let planManagerRef: import('../../manager/plan/lifecycle.js').PlanManager | undefined
|
|
223
|
+
|
|
224
|
+
// Created here because the TOOLS are created here: the durability
|
|
225
|
+
// channel has to reach the tool instance, and the turn that supplies
|
|
226
|
+
// it does not exist yet. `query` binds them once it does.
|
|
227
|
+
const questionParks = new QuestionParkBinding()
|
|
228
|
+
const pendingAnswers = new PendingAnswers()
|
|
229
|
+
|
|
230
|
+
// Created here for the same reason: both ends are here. The tools claim
|
|
231
|
+
// a completion when they deliver it as a `tool_result`, and the loop
|
|
232
|
+
// drains whatever is left over into the transcript — so the inbox has
|
|
233
|
+
// to be the same object on both sides, and this is the only place that
|
|
234
|
+
// sees both.
|
|
235
|
+
//
|
|
236
|
+
// It attaches through `onTaskCompleted`, which every gateway already
|
|
237
|
+
// implements, so a host gateway needs no change to take part.
|
|
238
|
+
const completionInbox = new CompletionInbox(this.log)
|
|
239
|
+
completionInbox.attach(gateway)
|
|
240
|
+
|
|
241
|
+
// From here to the return in a try/finally, so the listener is released
|
|
242
|
+
// on every way out. The registration loop below can throw
|
|
243
|
+
// ToolNameCollisionError, and a host that hits that fixes its config and
|
|
244
|
+
// runs again — which is how a leak of one listener per turn becomes a leak
|
|
245
|
+
// of one per ATTEMPT.
|
|
246
|
+
try {
|
|
247
|
+
const isRootAgent = (config.depth ?? 0) === 0
|
|
248
|
+
const coordinatorToolDefs = buildCoordinatorTools({
|
|
249
|
+
gateway,
|
|
250
|
+
completionInbox,
|
|
251
|
+
workingDirectory: input.workingDirectory,
|
|
252
|
+
runtimeContext: input.runtimeContext,
|
|
253
|
+
allowedAgentIds: config.agentIds,
|
|
254
|
+
// The only hop between the config and the decision. Omit it and
|
|
255
|
+
// everything still compiles: the field is settable, documented, and
|
|
256
|
+
// read by nothing — which is the shape of a declaration this repo
|
|
257
|
+
// has had to go and delete before.
|
|
258
|
+
allowDelegation: config.allowDelegation,
|
|
259
|
+
taskStore: input.taskStore,
|
|
260
|
+
sessionId,
|
|
261
|
+
turnId,
|
|
262
|
+
getPlanManager: () => planManagerRef,
|
|
263
|
+
// A human-question tool belongs only to the root agent. The handler
|
|
264
|
+
// itself still reaches `drainQuery` below: delegated REVIEW-tier
|
|
265
|
+
// tool calls must keep asking the operator instead of falling back
|
|
266
|
+
// to unattended auto-approval.
|
|
267
|
+
...(isRootAgent && config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
|
|
268
|
+
questionParks,
|
|
269
|
+
pendingAnswers,
|
|
270
|
+
...(config.onPlanApproved ? { onPlanApproved: config.onPlanApproved } : {}),
|
|
271
|
+
})
|
|
272
|
+
|
|
273
|
+
// The boundary is semantic, not an implementation detail of the
|
|
274
|
+
// built-in builder. A host toolset containing the same capability
|
|
275
|
+
// must not reopen it for a delegated agent.
|
|
276
|
+
const callerToolsets = (config.toolsets ?? []).map((ts) =>
|
|
277
|
+
isRootAgent ? ts : filtered(ts, (tool) => tool.name !== ASK_USER_QUESTION_TOOL_NAME),
|
|
278
|
+
)
|
|
279
|
+
|
|
280
|
+
// The coordinator tools are just another toolset now, honouring
|
|
281
|
+
// `runtimeToolOverrides` the way every other kernel-mounted tool
|
|
282
|
+
// family does (task tools, advisory tools) — both halves were
|
|
283
|
+
// missing here and nowhere else, so `{ create_task: 'disabled' }`
|
|
284
|
+
// was honoured everywhere except the one surface a host would most
|
|
285
|
+
// want to decline, and a turn that must not delegate had prompt
|
|
286
|
+
// text and a gateway refusal as its only defences.
|
|
287
|
+
//
|
|
288
|
+
// A name the host's OWN toolsets already used is refused, not
|
|
289
|
+
// silently shadowed: `drainQuery` combines `callerToolsets` and
|
|
290
|
+
// this toolset into one `ToolManager` (plan.md v3 §2), which
|
|
291
|
+
// throws `ToolsetConflictError`, naming both sources, on any
|
|
292
|
+
// collision at construction — the same mechanism any two
|
|
293
|
+
// colliding toolsets hit, replacing this file's own hand-written
|
|
294
|
+
// `ToolNameCollisionError` check. The principle is complete
|
|
295
|
+
// mediation rather than fail-safe defaults: "proposals to gain
|
|
296
|
+
// performance by remembering the result of an authority check
|
|
297
|
+
// [must] be examined skeptically. If a change in authority
|
|
298
|
+
// occurs, such remembered results must be systematically
|
|
299
|
+
// updated" (Saltzer & Schroeder 1975, §I.A.3(c)) — a silent
|
|
300
|
+
// overwrite is a remembered binding going stale unnoticed.
|
|
301
|
+
const overrides = input.runtimeToolOverrides
|
|
302
|
+
const coordinatorActiveTools: ToolDefinition[] = []
|
|
303
|
+
const coordinatorDeferredTools: ToolDefinition[] = []
|
|
304
|
+
for (const tool of coordinatorToolDefs) {
|
|
305
|
+
const override = overrides?.[tool.name]
|
|
306
|
+
if (override === 'disabled') continue
|
|
307
|
+
;(override === 'active' || override === undefined
|
|
308
|
+
? coordinatorActiveTools
|
|
309
|
+
: coordinatorDeferredTools
|
|
310
|
+
).push(tool)
|
|
311
|
+
}
|
|
312
|
+
// Two SEPARATE toolsets, not `combineToolsets`'d into one — see
|
|
313
|
+
// `runtime/query/index.ts`'s identical fix: a merged toolset has no
|
|
314
|
+
// single `availability` of its own, so `ToolManager` would read
|
|
315
|
+
// EVERY coordinator tool back as `'active'`, silently dropping
|
|
316
|
+
// `runtimeToolOverrides`' deferred half.
|
|
317
|
+
const toolsets = [
|
|
318
|
+
...callerToolsets,
|
|
319
|
+
toolset('supervisor:coordinator:active', coordinatorActiveTools),
|
|
320
|
+
deferred(toolset('supervisor:coordinator:deferred', coordinatorDeferredTools)),
|
|
321
|
+
]
|
|
322
|
+
|
|
323
|
+
const childInvocationState = deriveChildState(
|
|
324
|
+
config.invocationState ?? { tenantId },
|
|
325
|
+
this.metadata.id,
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
const turn = await drainQuery(
|
|
329
|
+
{
|
|
330
|
+
systemPrompt: config.systemPrompt,
|
|
331
|
+
skills: config.skills,
|
|
332
|
+
provider: config.provider,
|
|
333
|
+
toolsets,
|
|
334
|
+
...(config.toolResultGuardrails !== undefined
|
|
335
|
+
? { toolResultGuardrails: config.toolResultGuardrails }
|
|
336
|
+
: {}),
|
|
337
|
+
...(input.attachmentStore ? { attachmentStore: input.attachmentStore } : {}),
|
|
338
|
+
...(config.attachmentResolveTimeoutMs !== undefined
|
|
339
|
+
? { attachmentResolveTimeoutMs: config.attachmentResolveTimeoutMs }
|
|
340
|
+
: {}),
|
|
341
|
+
turnConfig: {
|
|
342
|
+
model: config.model,
|
|
343
|
+
tokenBudget: config.tokenBudget,
|
|
344
|
+
timeoutMs: config.timeoutMs,
|
|
345
|
+
...(config.sandbox ? { sandbox: config.sandbox } : {}),
|
|
346
|
+
...(config.streamIdleTimeoutMs !== undefined
|
|
347
|
+
? { streamIdleTimeoutMs: config.streamIdleTimeoutMs }
|
|
348
|
+
: {}),
|
|
349
|
+
...(config.maxRequestRichContentBytes !== undefined
|
|
350
|
+
? {
|
|
351
|
+
maxRequestRichContentBytes: config.maxRequestRichContentBytes,
|
|
352
|
+
}
|
|
353
|
+
: {}),
|
|
354
|
+
maxIterations: config.maxIterations,
|
|
355
|
+
temperature: config.temperature,
|
|
356
|
+
env: config.env,
|
|
357
|
+
...(config.pruneKeepLast !== undefined ? { pruneKeepLast: config.pruneKeepLast } : {}),
|
|
358
|
+
logger: this.log,
|
|
359
|
+
// See ReactiveAgent: a hand-listed literal drops what nobody
|
|
360
|
+
// remembered to add, and reports nothing when it does.
|
|
361
|
+
...(config.thinking ? { thinking: config.thinking } : {}),
|
|
362
|
+
...(config.effort ? { effort: config.effort } : {}),
|
|
363
|
+
},
|
|
364
|
+
questionParks,
|
|
365
|
+
pendingAnswers,
|
|
366
|
+
// How wide a fan-out actually runs. Absent leaves the kernel
|
|
367
|
+
// default — the same forwarding ReactiveAgent has always done,
|
|
368
|
+
// missing from the one agent whose job is delegation.
|
|
369
|
+
...(config.maxToolConcurrency !== undefined
|
|
370
|
+
? { maxToolConcurrency: config.maxToolConcurrency }
|
|
371
|
+
: {}),
|
|
372
|
+
agentId: this.metadata.id,
|
|
373
|
+
agentName: this.metadata.name,
|
|
374
|
+
workingDirectory: input.workingDirectory,
|
|
375
|
+
messages: input.messages,
|
|
376
|
+
signal: input.signal,
|
|
377
|
+
sessionId,
|
|
378
|
+
topicId,
|
|
379
|
+
projectId,
|
|
380
|
+
tenantId,
|
|
381
|
+
turnId,
|
|
382
|
+
...(config.parentSessionId ? { parentSessionId: config.parentSessionId } : {}),
|
|
383
|
+
...(config.parentTurnId ? { parentTurnId: config.parentTurnId } : {}),
|
|
384
|
+
depth: config.depth,
|
|
385
|
+
contextLevel: 'full',
|
|
386
|
+
onContextCreated: ({ planManager }) => {
|
|
387
|
+
planManagerRef = planManager
|
|
388
|
+
},
|
|
389
|
+
taskStore: input.taskStore,
|
|
390
|
+
runtimeToolOverrides: input.runtimeToolOverrides,
|
|
391
|
+
runtimeContext: input.runtimeContext,
|
|
392
|
+
taskScheduler: gateway,
|
|
393
|
+
budget,
|
|
394
|
+
completionInbox,
|
|
395
|
+
advisory: config.advisory,
|
|
396
|
+
invocationState: childInvocationState,
|
|
397
|
+
// HITL surface: forward optional review-time hooks so hosts can
|
|
398
|
+
// run "Ask before acting" supervisors instead of the default
|
|
399
|
+
// auto-approve. drainQuery falls back to autoApproveHandler
|
|
400
|
+
// when resumeHandler is omitted (= same behaviour as before).
|
|
401
|
+
...(config.resumeHandler ? { resumeHandler: config.resumeHandler } : {}),
|
|
402
|
+
...(config.reviewAllowedCalls ? { reviewAllowedCalls: config.reviewAllowedCalls } : {}),
|
|
403
|
+
// Forwarded for the same reason the handler is. A capability the
|
|
404
|
+
// kernel honours in `drainQuery` but that never reaches the
|
|
405
|
+
// surface a host actually constructs is a capability nobody can
|
|
406
|
+
// use — which is the shape of defect this file has already been
|
|
407
|
+
// corrected for twice.
|
|
408
|
+
...(config.steering ? { steering: config.steering } : {}),
|
|
409
|
+
...(config.inboundMessages ? { inboundMessages: config.inboundMessages } : {}),
|
|
410
|
+
...(config.projectInstructionContext
|
|
411
|
+
? { projectInstructionContext: config.projectInstructionContext }
|
|
412
|
+
: {}),
|
|
413
|
+
...(config.authorizationGate ? { authorizationGate: config.authorizationGate } : {}),
|
|
414
|
+
// The one hop between the config and the tool. `drainQuery`
|
|
415
|
+
// registers `structured_output` from this and the loop
|
|
416
|
+
// captures it, so the kernel never cared which archetype it
|
|
417
|
+
// came from — only `ReactiveAgent` was passing it.
|
|
418
|
+
...(config.structuredOutput ? { structuredOutput: config.structuredOutput } : {}),
|
|
419
|
+
...(config.sandboxProvider ? { sandboxProvider: config.sandboxProvider } : {}),
|
|
420
|
+
...(config.sandboxTeardownTimeoutMs !== undefined
|
|
421
|
+
? { sandboxTeardownTimeoutMs: config.sandboxTeardownTimeoutMs }
|
|
422
|
+
: {}),
|
|
423
|
+
// Working-memory / compaction seam (optional; absent => unchanged
|
|
424
|
+
// run path, byte-identical for every existing consumer).
|
|
425
|
+
...(config.compactionConfig ? { compactionConfig: config.compactionConfig } : {}),
|
|
426
|
+
...(config.workingMemoryProvider
|
|
427
|
+
? { workingMemoryProvider: config.workingMemoryProvider }
|
|
428
|
+
: {}),
|
|
429
|
+
...(config.paths ? { paths: config.paths } : {}),
|
|
430
|
+
...(config.sessionLog ? { sessionLog: config.sessionLog } : {}),
|
|
431
|
+
...(config.checkpointStore ? { checkpointStore: config.checkpointStore } : {}),
|
|
432
|
+
},
|
|
433
|
+
listener,
|
|
434
|
+
)
|
|
435
|
+
|
|
436
|
+
const taskHandles = gateway.listTasks()
|
|
437
|
+
const taskResults = synthesizeTaskResults(taskHandles, {
|
|
438
|
+
sessionId,
|
|
439
|
+
turnId,
|
|
440
|
+
})
|
|
441
|
+
|
|
442
|
+
const completedTasks = countCompletedTasks(taskResults)
|
|
443
|
+
|
|
444
|
+
return {
|
|
445
|
+
sessionId,
|
|
446
|
+
turnId: turn.id,
|
|
447
|
+
status: turn.status === 'completed' ? 'completed' : 'failed',
|
|
448
|
+
stopReason: turn.stopReason,
|
|
449
|
+
usage: turn.tokenUsage,
|
|
450
|
+
budget: budget.summary(),
|
|
451
|
+
cost: turn.costInfo,
|
|
452
|
+
iterations: turn.currentIteration,
|
|
453
|
+
durationMs: Date.now() - startTime,
|
|
454
|
+
messages: turn.messages,
|
|
455
|
+
result: turn.result,
|
|
456
|
+
// `BaseAgentResult.structuredOutput` names "an archetype's result
|
|
457
|
+
// literal did not copy it" as a defect it was written to close.
|
|
458
|
+
// This literal still did not copy it, so the same defect was live
|
|
459
|
+
// in the one archetype nobody checked: the value would have been
|
|
460
|
+
// produced, recorded on the turn, serialized into `result`, and
|
|
461
|
+
// absent from the type a supervisor host actually reads.
|
|
462
|
+
structuredOutput: turn.structuredOutput,
|
|
463
|
+
lastError: turn.lastError,
|
|
464
|
+
taskResults,
|
|
465
|
+
completedTasks,
|
|
466
|
+
totalTasks: taskResults.length,
|
|
467
|
+
}
|
|
468
|
+
} finally {
|
|
469
|
+
completionInbox.close()
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
}
|
package/src/agents/explore.ts
CHANGED
|
@@ -5,9 +5,12 @@
|
|
|
5
5
|
* the delegations a parent makes most, and a child built from the parent's
|
|
6
6
|
* whole working set answers them holding `write` and `bash` — so a lookup
|
|
7
7
|
* needs the same approvals as a change. A host that offers this delegate
|
|
8
|
-
* builds its roster
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* builds its roster by filtering EACH of the parent's contributing toolsets
|
|
9
|
+
* with `filtered(ts, (tool, source) => isTrustedReadOnly(tool, undefined, source))`
|
|
10
|
+
* (`toolsets/wrappers.ts`, `tools/trusted-read-only.ts`, `tools/roster.ts`
|
|
11
|
+
* for why this runs before any `combineToolsets`, not after) and its prompt
|
|
12
|
+
* from the text here; the two are exported separately because a host adds
|
|
13
|
+
* its own doctrine and environment around the prompt.
|
|
11
14
|
*/
|
|
12
15
|
|
|
13
16
|
export const EXPLORE_AGENT_ID = 'explore'
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route a front door's compatible options without another hand-written copy
|
|
3
|
+
* of every assignment. The route table is checked against the front door's
|
|
4
|
+
* complete option type at its declaration site.
|
|
5
|
+
*/
|
|
6
|
+
export function pickRoutedOptions<
|
|
7
|
+
TOptions extends object,
|
|
8
|
+
TRoutes extends { readonly [K in keyof TOptions]: 'query' | 'turn' | 'special' },
|
|
9
|
+
TDestination extends 'query' | 'turn',
|
|
10
|
+
>(
|
|
11
|
+
options: TOptions,
|
|
12
|
+
routes: TRoutes,
|
|
13
|
+
destination: TDestination,
|
|
14
|
+
): Pick<
|
|
15
|
+
TOptions,
|
|
16
|
+
Extract<
|
|
17
|
+
{
|
|
18
|
+
[K in keyof TRoutes]: TRoutes[K] extends TDestination ? K : never
|
|
19
|
+
}[keyof TRoutes],
|
|
20
|
+
keyof TOptions
|
|
21
|
+
>
|
|
22
|
+
> {
|
|
23
|
+
const picked: Record<string, unknown> = {}
|
|
24
|
+
for (const key of Object.keys(routes) as (keyof TOptions & string)[]) {
|
|
25
|
+
const route: 'query' | 'turn' | 'special' = routes[key]
|
|
26
|
+
if (route === destination && options[key] !== undefined) picked[key] = options[key]
|
|
27
|
+
}
|
|
28
|
+
return picked as Pick<
|
|
29
|
+
TOptions,
|
|
30
|
+
Extract<
|
|
31
|
+
{
|
|
32
|
+
[K in keyof TRoutes]: TRoutes[K] extends TDestination ? K : never
|
|
33
|
+
}[keyof TRoutes],
|
|
34
|
+
keyof TOptions
|
|
35
|
+
>
|
|
36
|
+
>
|
|
37
|
+
}
|
package/src/agents/index.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { AbstractAgent } from './AbstractAgent.js'
|
|
2
|
+
export { QueryAgent } from './QueryAgent.js'
|
|
3
|
+
// Compatibility exports. These are example orchestration patterns, not SDK agent kinds.
|
|
2
4
|
export { ReactiveAgent } from './ReactiveAgent.js'
|
|
3
5
|
export { PipelineAgent } from './PipelineAgent.js'
|
|
4
6
|
export { RouterAgent } from './RouterAgent.js'
|