@namzu/sdk 46.0.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 +325 -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 +8 -0
- package/dist/authorization/gate.d.ts.map +1 -1
- package/dist/authorization/gate.js +12 -1
- 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 +8 -1
- package/dist/authorization/rules.js.map +1 -1
- package/dist/authorization/shell-lexer.d.ts +19 -4
- package/dist/authorization/shell-lexer.d.ts.map +1 -1
- package/dist/authorization/shell-lexer.js +91 -65
- 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/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 +24 -11
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +45 -9
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +6 -4
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +8 -3
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +13 -2
- 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 +7 -7
- package/dist/registry/tool/callable.d.ts.map +1 -1
- package/dist/registry/tool/callable.js +6 -7
- package/dist/registry/tool/callable.js.map +1 -1
- 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 -727
- 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 +45 -2
- package/dist/runtime/query/executor/tool-call-admission.d.ts.map +1 -1
- package/dist/runtime/query/executor/tool-call-admission.js +189 -5
- package/dist/runtime/query/executor/tool-call-admission.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +33 -3
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +86 -10
- 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 +22 -3
- package/dist/runtime/query/review-policy.d.ts.map +1 -1
- package/dist/runtime/query/review-policy.js +84 -6
- 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 +12 -0
- package/dist/skills/registry.d.ts.map +1 -1
- package/dist/skills/registry.js +19 -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.d.ts.map +1 -1
- package/dist/tools/builtins/computer-use.js +19 -11
- 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/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/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 +10 -0
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +17 -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/schedule-tool.d.ts.map +1 -1
- package/dist/tools/schedules/schedule-tool.js +94 -14
- package/dist/tools/schedules/schedule-tool.js.map +1 -1
- package/dist/tools/schedules/types.d.ts +52 -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 +49 -12
- package/dist/types/authorization/index.d.ts.map +1 -1
- package/dist/types/authorization/index.js +6 -0
- package/dist/types/authorization/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 +152 -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 +1 -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 +21 -1
- package/src/authorization/program.ts +773 -0
- package/src/authorization/reexec-wrapper.ts +589 -0
- package/src/authorization/rules.ts +18 -1
- package/src/authorization/shell-lexer.ts +104 -59
- 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/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 +136 -7
- package/src/public-tools.ts +24 -4
- package/src/public-types.ts +60 -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 +8 -9
- package/src/registry/tool/execute.ts +16 -846
- 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 +228 -6
- package/src/runtime/query/executor.ts +110 -12
- 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 +87 -9
- 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 +25 -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.ts +21 -11
- package/src/tools/builtins/edit.ts +12 -2
- package/src/tools/builtins/json-string-hint.ts +16 -0
- package/src/tools/builtins/search-tools.ts +7 -20
- 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 +28 -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/schedule-tool.ts +107 -14
- package/src/tools/schedules/types.ts +52 -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 +12 -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 +154 -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
|
@@ -326,26 +326,41 @@ export function assertPluginHookResult(result: PluginHookResult): asserts result
|
|
|
326
326
|
}
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
329
|
+
/** Actions the query can interpret for a particular hook event. */
|
|
330
|
+
export type PluginHookResultFor<E extends PluginHookEvent> = E extends 'user_prompt_submit'
|
|
331
|
+
? Extract<PluginHookResult, { action: 'continue' | 'annotate' | 'skip' | 'error' }>
|
|
332
|
+
: E extends 'pre_tool_use'
|
|
333
|
+
? Extract<PluginHookResult, { action: 'continue' | 'skip' | 'modify' | 'error' }>
|
|
334
|
+
: E extends 'post_tool_use'
|
|
335
|
+
? Extract<PluginHookResult, { action: 'continue' | 'replace' | 'retry' | 'error' }>
|
|
336
|
+
: E extends 'turn_interrupt' | 'session_start' | 'session_end'
|
|
337
|
+
? Extract<PluginHookResult, { action: 'continue' }>
|
|
338
|
+
: Extract<PluginHookResult, { action: 'continue' | 'error' }>
|
|
339
|
+
|
|
340
|
+
/** The event and its handler verdict stay correlated, including in hook arrays. */
|
|
341
|
+
export type PluginHookDefinition<E extends PluginHookEvent = PluginHookEvent> =
|
|
342
|
+
E extends PluginHookEvent
|
|
343
|
+
? {
|
|
344
|
+
readonly event: E
|
|
345
|
+
readonly handler: (context: PluginHookContext) => Promise<PluginHookResultFor<E>>
|
|
346
|
+
/**
|
|
347
|
+
* Lower runs first. Default 100.
|
|
348
|
+
*
|
|
349
|
+
* Order was install order, which is neither declared nor stable — it
|
|
350
|
+
* depends on when each plugin happened to be installed. That is fine
|
|
351
|
+
* for hooks that only observe, and wrong for the ones that decide:
|
|
352
|
+
* `executeHooks` SHORT-CIRCUITS on `skip` and `error`, so a hook that
|
|
353
|
+
* denies a dangerous command only gets to deny it if it runs before
|
|
354
|
+
* whatever else stops the chain. A guard that fires depending on
|
|
355
|
+
* installation history is not a guard.
|
|
356
|
+
*
|
|
357
|
+
* Ties keep registration order, so plugins that never set a priority
|
|
358
|
+
* behave exactly as before. Convention: guards below 100, observers
|
|
359
|
+
* above.
|
|
360
|
+
*/
|
|
361
|
+
readonly priority?: number
|
|
362
|
+
}
|
|
363
|
+
: never
|
|
349
364
|
|
|
350
365
|
// ---------------------------------------------------------------------------
|
|
351
366
|
// Plugin MCP server config
|
|
@@ -367,6 +382,8 @@ export interface PluginManifest {
|
|
|
367
382
|
readonly version: string
|
|
368
383
|
readonly description: string
|
|
369
384
|
readonly author?: string
|
|
385
|
+
/** Plugin-authored request context, present only while this plugin is enabled. */
|
|
386
|
+
readonly instructions?: string
|
|
370
387
|
readonly tools?: readonly string[]
|
|
371
388
|
readonly skills?: readonly string[]
|
|
372
389
|
readonly hooks?: readonly string[]
|
|
@@ -391,6 +408,7 @@ export const PluginManifestSchema = z.object({
|
|
|
391
408
|
version: z.string().min(1),
|
|
392
409
|
description: z.string().min(1),
|
|
393
410
|
author: z.string().optional(),
|
|
411
|
+
instructions: z.string().min(1).optional(),
|
|
394
412
|
tools: z.array(z.string()).max(MAX_TOOLS_PER_PLUGIN).optional(),
|
|
395
413
|
skills: z.array(z.string()).max(MAX_SKILLS_PER_PLUGIN).optional(),
|
|
396
414
|
hooks: z.array(z.string()).max(MAX_HOOKS_PER_PLUGIN).optional(),
|
|
@@ -419,7 +437,12 @@ export interface PluginDefinition {
|
|
|
419
437
|
// ---------------------------------------------------------------------------
|
|
420
438
|
|
|
421
439
|
export type PluginLifecycleEvent =
|
|
422
|
-
| {
|
|
440
|
+
| {
|
|
441
|
+
type: 'plugin_installed'
|
|
442
|
+
pluginId: PluginId
|
|
443
|
+
name: string
|
|
444
|
+
scope: PluginScope
|
|
445
|
+
}
|
|
423
446
|
| { type: 'plugin_enabled'; pluginId: PluginId; name: string }
|
|
424
447
|
| { type: 'plugin_disabled'; pluginId: PluginId; name: string }
|
|
425
448
|
| { type: 'plugin_uninstalled'; pluginId: PluginId; name: string }
|
|
@@ -193,5 +193,10 @@ export interface ChatCompletionResponse {
|
|
|
193
193
|
citations?: readonly import('../message/index.js').Citation[]
|
|
194
194
|
}
|
|
195
195
|
finishReason: 'stop' | 'tool_calls' | 'length' | 'content_filter'
|
|
196
|
+
/**
|
|
197
|
+
* `'context_window'` when a `'length'` finish was the model's context
|
|
198
|
+
* window rather than the output token limit; see `StreamChunk.finishDetail`.
|
|
199
|
+
*/
|
|
200
|
+
finishDetail?: 'context_window'
|
|
196
201
|
usage: TokenUsage
|
|
197
202
|
}
|
|
@@ -38,9 +38,14 @@ export interface MockToolCall {
|
|
|
38
38
|
/** Fragment size for the argument JSON; smaller exercises more buffering. */
|
|
39
39
|
argChunkSize?: number
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
41
|
+
* Send only the first half of the arguments, omit the block-close signal
|
|
42
|
+
* and finish with `'length'` (unless the turn sets `finishReason`),
|
|
43
|
+
* reproducing the provider cutting a tool call off at `max_tokens`. The
|
|
44
|
+
* response ends at this call, as an output limit ends it: later calls in
|
|
45
|
+
* the turn's `toolCalls` are not streamed. The consumer should mark the
|
|
46
|
+
* call `inputTruncated` with a `truncated` `inputError` rather than
|
|
47
|
+
* crashing on a parse; under a scripted `finishReason` of `'stop'` or
|
|
48
|
+
* `'tool_calls'` it is `malformed` instead.
|
|
44
49
|
*/
|
|
45
50
|
truncateArguments?: boolean
|
|
46
51
|
/**
|
|
@@ -29,8 +29,28 @@ export interface StreamChunk {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
content?: string
|
|
32
|
+
/**
|
|
33
|
+
* Who wrote {@link content}. Absent means the model. `'driver'` marks
|
|
34
|
+
* text a driver adds of its own after the model's output, such as a
|
|
35
|
+
* list of the sources a hosted search used. It is shown and kept in
|
|
36
|
+
* the message like any other text, but it is not output the model
|
|
37
|
+
* produced: the turn loop does not read it as the model moving on from
|
|
38
|
+
* its last tool call, which would turn a call the output limit cut
|
|
39
|
+
* off into a malformed one.
|
|
40
|
+
*/
|
|
41
|
+
contentOrigin?: 'driver'
|
|
32
42
|
/** Identity and phase of this content fragment, when the provider supplies them. */
|
|
33
43
|
textPart?: Omit<import('../message/index.js').AssistantTextPart, 'text'>
|
|
44
|
+
/**
|
|
45
|
+
* Fragments of tool calls. `index` is what groups them: every fragment
|
|
46
|
+
* of one call carries the same index, and no other call in the
|
|
47
|
+
* response uses it. The call's `id` and `function.name` may arrive on
|
|
48
|
+
* any of its fragments, including after arguments; arguments that
|
|
49
|
+
* arrive first are kept for the call at their index. The turn loop gives
|
|
50
|
+
* a call whose id never arrives, here or on `toolCallEnd`, an id of its
|
|
51
|
+
* own. A second id on an index another call holds is refused, by the
|
|
52
|
+
* turn loop and by `collectChatCompletion`.
|
|
53
|
+
*/
|
|
34
54
|
toolCalls?: Array<{
|
|
35
55
|
index: number
|
|
36
56
|
id?: string
|
|
@@ -52,6 +72,12 @@ export interface StreamChunk {
|
|
|
52
72
|
* leave this undefined; the orchestrator infers from
|
|
53
73
|
* end-of-stream instead.
|
|
54
74
|
*
|
|
75
|
+
* `id` fills in the call's id when no fragment carried one. The
|
|
76
|
+
* completion always carries the id the call was announced with, and
|
|
77
|
+
* follows the announcement: a close with an empty `id` for a call no
|
|
78
|
+
* fragment named, or for a call whose name has not arrived, is
|
|
79
|
+
* settled when the stream ends instead.
|
|
80
|
+
*
|
|
55
81
|
* Added 2026-05-01 (ses_001-tool-stream-events A9).
|
|
56
82
|
*/
|
|
57
83
|
toolCallEnd?: {
|
|
@@ -93,6 +119,19 @@ export interface StreamChunk {
|
|
|
93
119
|
citation?: import('../message/index.js').Citation
|
|
94
120
|
}
|
|
95
121
|
finishReason?: 'stop' | 'tool_calls' | 'length' | 'content_filter'
|
|
122
|
+
/**
|
|
123
|
+
* Which limit a `'length'` finish reached, when it was not the output
|
|
124
|
+
* token limit: `'context_window'` when the response filled the model's
|
|
125
|
+
* context window (a stop reason such as `model_context_window_exceeded`
|
|
126
|
+
* or `model_length`).
|
|
127
|
+
*
|
|
128
|
+
* Both stop the output where it stands, so both are `'length'`, and a
|
|
129
|
+
* tool call either one cut off is truncated. They differ in what can
|
|
130
|
+
* follow: after the output limit the turn loop asks the model to continue
|
|
131
|
+
* a reply it cut off mid-text, and after the context window there is no
|
|
132
|
+
* room to continue into. Set only with `finishReason: 'length'`.
|
|
133
|
+
*/
|
|
134
|
+
finishDetail?: 'context_window'
|
|
96
135
|
usage?: TokenUsage
|
|
97
136
|
error?: string
|
|
98
137
|
|
|
@@ -466,7 +466,7 @@ export interface SandboxDestroyOptions {
|
|
|
466
466
|
* - `azureFileShare` — mount an Azure Files SMB share into the
|
|
467
467
|
* container. Used by managed Azure Container Instances (incl.
|
|
468
468
|
* Standby Pool) which have no host filesystem to bind from; the
|
|
469
|
-
*
|
|
469
|
+
* host provisions a per-task share before claim and
|
|
470
470
|
* the ACI backend translates this variant to ACI's `volume +
|
|
471
471
|
* azureFile` shape.
|
|
472
472
|
*/
|
|
@@ -1096,11 +1096,22 @@ type CoreSessionEvent =
|
|
|
1096
1096
|
toolUseId: ToolUseId
|
|
1097
1097
|
input: unknown
|
|
1098
1098
|
/**
|
|
1099
|
-
* True when the
|
|
1100
|
-
*
|
|
1101
|
-
*
|
|
1099
|
+
* True when the streamed arguments could not be read, whether the
|
|
1100
|
+
* response stopped before they closed or they were not valid JSON;
|
|
1101
|
+
* {@link inputError} says which. `input` is then `{}`, a sanitized
|
|
1102
|
+
* object, so public consumers never receive internal recovery
|
|
1103
|
+
* sentinels.
|
|
1102
1104
|
*/
|
|
1103
1105
|
inputTruncated?: boolean
|
|
1106
|
+
/** Why the arguments could not be read. Present exactly when `inputTruncated` is. */
|
|
1107
|
+
inputError?: import('../message/index.js').ToolInputError
|
|
1108
|
+
/**
|
|
1109
|
+
* The arguments as they arrived, when they could not be read: at most
|
|
1110
|
+
* the first 16 384 characters, with `inputError.length` saying how many
|
|
1111
|
+
* there were. The whole text stays on the assistant message, as
|
|
1112
|
+
* `ToolCall.metadata.partialArguments`.
|
|
1113
|
+
*/
|
|
1114
|
+
partialArguments?: string
|
|
1104
1115
|
}
|
|
1105
1116
|
|
|
1106
1117
|
/**
|
package/src/types/tool/index.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import type { z } from 'zod'
|
|
2
|
-
import type { Logger } from '../../utils/logger.js'
|
|
3
2
|
import type { CodeNavigationProvider } from '../code-navigation/index.js'
|
|
4
3
|
// Type-only, and circular by design: a tool-result guardrail is described in
|
|
5
4
|
// terms of the tool that produced the result, and the registry that holds
|
|
@@ -12,18 +11,27 @@ import type { PermissionMode } from '../permission/index.js'
|
|
|
12
11
|
import type { Sandbox } from '../sandbox/index.js'
|
|
13
12
|
import type { ToolPresentation } from './presentation.js'
|
|
14
13
|
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
/**
|
|
15
|
+
* The read-only slice of a `ToolManager` (`toolsets/manager.ts`) a running
|
|
16
|
+
* tool's own `execute()` body is given, through {@link ToolContext.toolRegistry}.
|
|
17
|
+
*
|
|
18
|
+
* Replaces the old `ToolRegistryRef`, which also carried `activate` (a
|
|
19
|
+
* mutation) and an optional `searchActive`. Availability is derived, not
|
|
20
|
+
* mutated (see `ToolManager.availability`), so there is nothing left for a
|
|
21
|
+
* tool body to activate: a tool that wants to make more of the catalogue
|
|
22
|
+
* callable returns `ToolResult.reveals` instead, and the manager derives the
|
|
23
|
+
* effect from that result once it is persisted onto the tool message.
|
|
24
|
+
*/
|
|
25
|
+
export interface ToolsView {
|
|
26
|
+
has(name: string): boolean
|
|
27
|
+
availability(name: string): ToolAvailability
|
|
28
|
+
searchDeferred(query: string, limit?: number): readonly ToolDefinition[]
|
|
21
29
|
}
|
|
22
30
|
|
|
23
31
|
/**
|
|
24
32
|
* The slice of the skills registry a tool is given.
|
|
25
33
|
*
|
|
26
|
-
* Structural for the reason `
|
|
34
|
+
* Structural for the reason `ToolsView` is: this file is imported by
|
|
27
35
|
* everything, and naming `SkillRegistry` here would drag the skill loader's
|
|
28
36
|
* filesystem imports into every consumer's type graph.
|
|
29
37
|
*/
|
|
@@ -98,7 +106,7 @@ export interface SkillRegistryRef {
|
|
|
98
106
|
* The slice of the background job registry a tool is given.
|
|
99
107
|
*
|
|
100
108
|
* A structural reference rather than the class, for the reason
|
|
101
|
-
* `
|
|
109
|
+
* `ToolsView` exists: this type file is imported by everything, and
|
|
102
110
|
* naming the implementation here would drag a `node:child_process` module
|
|
103
111
|
* into every consumer's type graph. `owner` is not on this surface at all —
|
|
104
112
|
* the executor binds it to the turn, so a tool cannot start a job that
|
|
@@ -400,7 +408,7 @@ export interface ToolContext {
|
|
|
400
408
|
|
|
401
409
|
invocationState?: InvocationState
|
|
402
410
|
|
|
403
|
-
toolRegistry?:
|
|
411
|
+
toolRegistry?: ToolsView
|
|
404
412
|
/**
|
|
405
413
|
* The names this turn may call, if the turn was narrowed.
|
|
406
414
|
*
|
|
@@ -550,7 +558,7 @@ export interface ToolContext {
|
|
|
550
558
|
* option alone is the host's to write and the kernel's default reaches
|
|
551
559
|
* nobody.
|
|
552
560
|
*
|
|
553
|
-
* The registry's own {@link
|
|
561
|
+
* The registry's own {@link ToolManagerConfig.resultGuardrails} (`toolsets/manager.ts`) WIN when
|
|
554
562
|
* the registry was built with them — including an empty array, which means
|
|
555
563
|
* none — because a registry that stated its policy has stated it. These
|
|
556
564
|
* apply to a registry that declared none, which is the ordinary case: a
|
|
@@ -566,7 +574,7 @@ export interface ToolContext {
|
|
|
566
574
|
* Run another tool through the same dispatch this call came through.
|
|
567
575
|
*
|
|
568
576
|
* For `run_code`, whose whole purpose is calling tools in a loop. NOT
|
|
569
|
-
* added to {@link
|
|
577
|
+
* added to {@link ToolsView}: that ref is about discovering and
|
|
570
578
|
* activating tools, and putting `execute` on it would make "can dispatch"
|
|
571
579
|
* a property of holding a registry reference rather than a capability a
|
|
572
580
|
* host wired deliberately.
|
|
@@ -722,6 +730,20 @@ export interface ToolResult {
|
|
|
722
730
|
* must not lose: what its controls do, where things are, what failed.
|
|
723
731
|
*/
|
|
724
732
|
workingState?: readonly import('../../compaction/types.js').WorkingStatePin[]
|
|
733
|
+
/**
|
|
734
|
+
* Names of deferred tool schemas this successful result loads, like
|
|
735
|
+
* `search_tools`. This is a discovery receipt, not proof that an external
|
|
736
|
+
* connection or capability is ready. Use `readyWhen(toolset, check)` for
|
|
737
|
+
* a host-owned prerequisite; search cannot satisfy that check.
|
|
738
|
+
*
|
|
739
|
+
* Only a name currently `'deferred'` in the manager is loaded, and
|
|
740
|
+
* only when it is also inside `ToolContext.allowedTools` when that turn
|
|
741
|
+
* is narrowed to an allow-list. Every other name — unknown, already
|
|
742
|
+
* active, suspended, or outside the allow-list — is silently ignored:
|
|
743
|
+
* this can never throw, resurrect a tool a host marked unready, or
|
|
744
|
+
* widen what a narrowed turn may call.
|
|
745
|
+
*/
|
|
746
|
+
reveals?: readonly string[]
|
|
725
747
|
/**
|
|
726
748
|
* This result needs a person before the turn can go on — a sign-in page,
|
|
727
749
|
* a CAPTCHA, a second factor, anything the model must not try to answer
|
|
@@ -779,8 +801,59 @@ export interface ToolDefinition<TInput = unknown> extends ToolPresentation<TInpu
|
|
|
779
801
|
* Concise, model-readable recovery guidance appended when inputSchema
|
|
780
802
|
* rejects a call. Use for conditional schemas whose required shapes
|
|
781
803
|
* cannot be reconstructed from JSON Schema's top-level `required` list.
|
|
804
|
+
*
|
|
805
|
+
* Also appended when a call's arguments were malformed, not valid JSON,
|
|
806
|
+
* and the tool declares no {@link malformedInputHint}: a model that could
|
|
807
|
+
* not write this tool's arguments as JSON needs the same shape.
|
|
782
808
|
*/
|
|
783
809
|
validationErrorHint?: string
|
|
810
|
+
/**
|
|
811
|
+
* Concise, model-readable advice appended when a call to this tool was cut
|
|
812
|
+
* off before its arguments closed and the call itself has to carry less:
|
|
813
|
+
* how this tool takes long input in parts. It follows the size budget the
|
|
814
|
+
* model is given (see {@link largeStringArguments}).
|
|
815
|
+
*
|
|
816
|
+
* That is a cut-off by the stream ending, or by the output limit when the
|
|
817
|
+
* call was at least half of the response. When most of the response went
|
|
818
|
+
* to what came before the call, the model is told to send less before it
|
|
819
|
+
* instead, and this is not appended. Nor after a content filter's stop,
|
|
820
|
+
* which sending less does not get past, nor for a malformed call, since
|
|
821
|
+
* size does not fix JSON: that is {@link malformedInputHint}.
|
|
822
|
+
*/
|
|
823
|
+
truncatedInputHint?: string
|
|
824
|
+
/**
|
|
825
|
+
* Concise, model-readable advice appended when a call to this tool is
|
|
826
|
+
* answered as malformed: its arguments were not valid JSON, so the call
|
|
827
|
+
* never reached {@link inputSchema}. For example, how to escape a file
|
|
828
|
+
* body inside a JSON string. When it is absent,
|
|
829
|
+
* {@link validationErrorHint} is appended instead, so a tool that states
|
|
830
|
+
* its required shape there need not state it twice; one that declares
|
|
831
|
+
* both and wants the shape shown includes it here.
|
|
832
|
+
*
|
|
833
|
+
* Every unreadable call is malformed except the one the response stopped
|
|
834
|
+
* on, when it stopped early: at the output limit (`finishReason:
|
|
835
|
+
* 'length'`), at a content filter, or with no finish reason at all. That
|
|
836
|
+
* call was cut off, and gets {@link truncatedInputHint} instead. A call
|
|
837
|
+
* the model followed with more text, reasoning or another call is
|
|
838
|
+
* malformed whatever the finish reason, the output limit included. See
|
|
839
|
+
* `ToolInputError`.
|
|
840
|
+
*/
|
|
841
|
+
malformedInputHint?: string
|
|
842
|
+
/**
|
|
843
|
+
* The arguments that carry long free-form text — a file body, a
|
|
844
|
+
* replacement, a delegated assignment — each with the number of characters
|
|
845
|
+
* one call should keep it under, e.g. `{ content: 12_000 }`.
|
|
846
|
+
*
|
|
847
|
+
* Read only when a call to this tool is cut off before its arguments
|
|
848
|
+
* close and the call itself has to carry less (see
|
|
849
|
+
* {@link truncatedInputHint} for when that is): the model is told to keep
|
|
850
|
+
* these arguments under their budgets, each lowered to half of what
|
|
851
|
+
* arrived after an output limit. A tool that declares none is still told,
|
|
852
|
+
* after an output limit, to keep its arguments as a whole under half of
|
|
853
|
+
* what arrived. Declaring them names the arguments the model should
|
|
854
|
+
* shorten, and gives a budget after a stream that ended as well.
|
|
855
|
+
*/
|
|
856
|
+
largeStringArguments?: Readonly<Record<string, number>>
|
|
784
857
|
|
|
785
858
|
/**
|
|
786
859
|
* The shape this tool returns, as JSON Schema, appended to the
|
|
@@ -947,6 +1020,52 @@ export interface ToolDefinition<TInput = unknown> extends ToolPresentation<TInpu
|
|
|
947
1020
|
*/
|
|
948
1021
|
capturesScreen?(input: TInput): boolean
|
|
949
1022
|
|
|
1023
|
+
/**
|
|
1024
|
+
* This call always needs a person's approval, whatever the host's rules
|
|
1025
|
+
* say and whatever mode the turn is running in.
|
|
1026
|
+
*
|
|
1027
|
+
* Distinct from {@link isDestructive}, and stronger. A destructive call
|
|
1028
|
+
* is still let through by a gate `allow` rule (`allow_by_name`,
|
|
1029
|
+
* `allow_by_category`, …) and by `auto` mode or an unattended turn — the
|
|
1030
|
+
* rule and the mode both outrank it. This flag cannot be outranked either
|
|
1031
|
+
* way: it survives an `allow` rule the same way an escalation does (the
|
|
1032
|
+
* decision is forced back to review before the rule's `allow` ever
|
|
1033
|
+
* settles anything), and it is asked about, or refused when nobody can
|
|
1034
|
+
* be asked, in every mode — `auto` and a remembered "approve all"
|
|
1035
|
+
* included — the same way a sandbox escape or a path outside the turn's
|
|
1036
|
+
* roots is. No grant, skill grant or `accept-edits` exemption covers it.
|
|
1037
|
+
* A `deny` rule still wins: this flag can only ADD a review, never open
|
|
1038
|
+
* one a rule closed.
|
|
1039
|
+
*
|
|
1040
|
+
* For a call that is sensitive for a reason other than being
|
|
1041
|
+
* destructive — it costs money, it leaves an audit trail somewhere else,
|
|
1042
|
+
* it is policy-sensitive — rather than a tool author reaching for
|
|
1043
|
+
* `isDestructive` on a call that does not destroy anything, just to get
|
|
1044
|
+
* the review a host might not otherwise configure. See
|
|
1045
|
+
* `docs/sdk/review-policy.md`.
|
|
1046
|
+
*
|
|
1047
|
+
* Never populated from a connected server's own wire annotations
|
|
1048
|
+
* (`mcpToolToToolDefinition` does not set it): a server cannot demand,
|
|
1049
|
+
* or waive, its own review requirement. It is host/plugin-trust-boundary
|
|
1050
|
+
* metadata, like {@link capturesScreen}.
|
|
1051
|
+
*/
|
|
1052
|
+
requiresApproval?(input: TInput): boolean
|
|
1053
|
+
|
|
1054
|
+
/**
|
|
1055
|
+
* Free-form, tool-author-declared data for filtering and behaviour
|
|
1056
|
+
* customization — never a classification the runtime itself reads.
|
|
1057
|
+
*
|
|
1058
|
+
* Not sent to the model: unlike {@link outputSchema}, which is shown in
|
|
1059
|
+
* the description precisely so the model can act on it, this is for a
|
|
1060
|
+
* host, a capability or a toolset wrapper to read back, with
|
|
1061
|
+
* `matchesToolSelector` (`tools/roster.ts`) or by hand. A connected
|
|
1062
|
+
* server's own annotations that have nowhere else to land — its
|
|
1063
|
+
* `title`, `idempotentHint`, `openWorldHint`, and any `_meta` it
|
|
1064
|
+
* attached — arrive here (`mcpToolToToolDefinition`); `isReadOnly` and
|
|
1065
|
+
* `isDestructive` keep the two hints that already have a typed home.
|
|
1066
|
+
*/
|
|
1067
|
+
metadata?: Readonly<Record<string, unknown>>
|
|
1068
|
+
|
|
950
1069
|
/**
|
|
951
1070
|
* Opt-in ordering boundary in a direct model tool-call batch. Earlier
|
|
952
1071
|
* calls settle before this call starts; later calls wait for this call
|
|
@@ -958,24 +1077,18 @@ export interface ToolDefinition<TInput = unknown> extends ToolPresentation<TInpu
|
|
|
958
1077
|
* their external effects have stopped, and does not imply success.
|
|
959
1078
|
*/
|
|
960
1079
|
executionBarrier?: boolean
|
|
961
|
-
|
|
962
|
-
/**
|
|
963
|
-
* Where this tool came from, when it did not come from here.
|
|
964
|
-
*
|
|
965
|
-
* Absent means host-defined: this process, code the operator installed,
|
|
966
|
-
* no untrusted party in the chain. Present means a connected server
|
|
967
|
-
* supplied both the tool and its own description of what the tool does
|
|
968
|
-
* — including whether it is read-only, which three separate gates were
|
|
969
|
-
* treating as a fact rather than as the hint the wire calls it.
|
|
970
|
-
*
|
|
971
|
-
* See {@link isTrustedReadOnly}. This field exists so a gate can tell
|
|
972
|
-
* the two apart; `isReadOnly` keeps reporting faithfully what the
|
|
973
|
-
* server said, because the outbound re-export and the destructive
|
|
974
|
-
* label shown to a human both need the server's own answer.
|
|
975
|
-
*/
|
|
976
|
-
provenance?: ToolProvenance
|
|
977
1080
|
}
|
|
978
1081
|
|
|
1082
|
+
/**
|
|
1083
|
+
* A tool's owning source's read-only trust decision, as `screenToolResult`
|
|
1084
|
+
* reads it off a call's `ToolContext`/result plumbing.
|
|
1085
|
+
*
|
|
1086
|
+
* Where a tool once carried this on itself (`ToolDefinition.provenance`,
|
|
1087
|
+
* removed — plan.md v3 §3), it now comes from the `ToolManager`'s
|
|
1088
|
+
* `sourceOf(name)` for the call in progress: a definition cannot claim its
|
|
1089
|
+
* own source, only the toolset that contributed it can. See
|
|
1090
|
+
* `toolsets/types.ts`'s `ToolSourceRef` and `tools/trusted-read-only.ts`.
|
|
1091
|
+
*/
|
|
979
1092
|
export interface ToolProvenance {
|
|
980
1093
|
/** The connected server this tool came from, named as configured. */
|
|
981
1094
|
readonly server: string
|
|
@@ -1006,6 +1119,12 @@ export interface LLMToolSchema {
|
|
|
1006
1119
|
}
|
|
1007
1120
|
}
|
|
1008
1121
|
|
|
1122
|
+
/**
|
|
1123
|
+
* `'suspended'` means the owning toolset's host-owned readiness check is
|
|
1124
|
+
* false. Such tools are excluded from discovery and execution even if a
|
|
1125
|
+
* deferred-schema receipt exists. `RuntimeToolOverrides` still does not
|
|
1126
|
+
* implement session-level suspension.
|
|
1127
|
+
*/
|
|
1009
1128
|
export type ToolAvailability = 'deferred' | 'active' | 'suspended'
|
|
1010
1129
|
|
|
1011
1130
|
export type ZodToJsonSchema = (schema: z.ZodType) => Record<string, unknown>
|
|
@@ -1023,36 +1142,22 @@ export interface ToolTierConfig {
|
|
|
1023
1142
|
labelInDescription?: boolean
|
|
1024
1143
|
}
|
|
1025
1144
|
|
|
1026
|
-
export interface ToolRegistryConfig {
|
|
1027
|
-
logger?: Logger
|
|
1028
|
-
tierConfig?: ToolTierConfig
|
|
1029
|
-
/**
|
|
1030
|
-
* Screens run against every tool result before anything downstream
|
|
1031
|
-
* reads it — the output budget, compaction, and the model itself are
|
|
1032
|
-
* all past this point.
|
|
1033
|
-
*
|
|
1034
|
-
* Absent means no screening, which is what shipped before this existed:
|
|
1035
|
-
* a connected server's text reached the model unexamined. See
|
|
1036
|
-
* {@link ToolResultGuardrailSpec}.
|
|
1037
|
-
*/
|
|
1038
|
-
resultGuardrails?: readonly ToolResultGuardrailSpec[]
|
|
1039
|
-
}
|
|
1040
|
-
|
|
1041
1145
|
export interface ToolExecutionResult extends ToolResult {
|
|
1042
1146
|
permissionDenied?: boolean
|
|
1043
1147
|
permissionMessage?: string
|
|
1044
1148
|
}
|
|
1045
1149
|
|
|
1046
1150
|
/**
|
|
1047
|
-
* An input decoded exactly once by its owning
|
|
1151
|
+
* An input decoded exactly once by its owning `ToolManager`.
|
|
1048
1152
|
*
|
|
1049
1153
|
* `input` is the detached, deeply frozen JSON review projection:
|
|
1050
1154
|
* authorization, approval UI, probes and audit all inspect this value. The
|
|
1051
|
-
*
|
|
1052
|
-
*
|
|
1053
|
-
* aliases therefore cannot change either side after
|
|
1054
|
-
* preparation is
|
|
1055
|
-
*
|
|
1155
|
+
* manager privately retains a separate detached copy that
|
|
1156
|
+
* `ToolManager.executePrepared` (`toolsets/manager.ts`) gives the tool.
|
|
1157
|
+
* Caller-owned aliases therefore cannot change either side after
|
|
1158
|
+
* preparation. A preparation is owned by the manager that made it and
|
|
1159
|
+
* cannot be executed by a different one, or after its tool's definition
|
|
1160
|
+
* changed identity (a live toolset's own update).
|
|
1056
1161
|
*/
|
|
1057
1162
|
export interface PreparedToolExecution {
|
|
1058
1163
|
readonly toolName: string
|
|
@@ -1064,62 +1169,6 @@ export type ToolPreparationResult =
|
|
|
1064
1169
|
| { readonly success: true; readonly prepared: PreparedToolExecution }
|
|
1065
1170
|
| { readonly success: false; readonly result: ToolExecutionResult }
|
|
1066
1171
|
|
|
1067
|
-
/**
|
|
1068
|
-
* Full tool registry contract — registration, lookup, execution, prompt generation.
|
|
1069
|
-
* Concrete implementation: `ToolRegistry` in `registry/tool/execute.ts`.
|
|
1070
|
-
*/
|
|
1071
|
-
export interface ToolRegistryContract {
|
|
1072
|
-
register(id: string, tool: ToolDefinition): void
|
|
1073
|
-
register(tool: ToolDefinition, initialState?: ToolAvailability): void
|
|
1074
|
-
register(tools: ToolDefinition[], initialState?: ToolAvailability): void
|
|
1075
|
-
|
|
1076
|
-
unregister(id: string): boolean
|
|
1077
|
-
clear(): void
|
|
1078
|
-
|
|
1079
|
-
get(name: string): ToolDefinition | undefined
|
|
1080
|
-
getOrThrow(name: string): ToolDefinition
|
|
1081
|
-
has(name: string): boolean
|
|
1082
|
-
getAll(): ToolDefinition[]
|
|
1083
|
-
listIds(): string[]
|
|
1084
|
-
listNames(): string[]
|
|
1085
|
-
|
|
1086
|
-
getAvailability(name: string): ToolAvailability
|
|
1087
|
-
activate(names: string[]): void
|
|
1088
|
-
defer(names: string[]): void
|
|
1089
|
-
suspendAll(): void
|
|
1090
|
-
hasSuspended(): boolean
|
|
1091
|
-
searchDeferred(query: string): ToolDefinition[]
|
|
1092
|
-
/** Ranked active matches, when this registry supports active-tool discovery. */
|
|
1093
|
-
searchActive?(query: string): ToolDefinition[]
|
|
1094
|
-
getCallableTools(toolNames?: string[]): ToolDefinition[]
|
|
1095
|
-
|
|
1096
|
-
/**
|
|
1097
|
-
* Decode/transform an input once, before authorization or human review.
|
|
1098
|
-
*
|
|
1099
|
-
* The returned preparation is opaque registry authority. Implementations
|
|
1100
|
-
* must not run tool code here. They must detach both the executable value
|
|
1101
|
-
* and `prepared.input` from caller/schema aliases, and make the latter a
|
|
1102
|
-
* deeply immutable JSON projection of the exact value retained for
|
|
1103
|
-
* execution. Unsupported mutable/exotic graphs fail closed.
|
|
1104
|
-
*/
|
|
1105
|
-
prepareExecution(toolName: string, rawInput: unknown): ToolPreparationResult
|
|
1106
|
-
|
|
1107
|
-
/** Execute the exact value retained by `prepareExecution`, without parsing again. */
|
|
1108
|
-
executePrepared(
|
|
1109
|
-
prepared: PreparedToolExecution,
|
|
1110
|
-
context: ToolContext,
|
|
1111
|
-
): Promise<ToolExecutionResult>
|
|
1112
|
-
|
|
1113
|
-
execute(toolName: string, rawInput: unknown, context: ToolContext): Promise<ToolExecutionResult>
|
|
1114
|
-
|
|
1115
|
-
size(): number
|
|
1116
|
-
|
|
1117
|
-
toLLMTools(toolNames?: string[]): LLMToolSchema[]
|
|
1118
|
-
toPromptSection(toolNames?: string[]): string
|
|
1119
|
-
toTierGuidance(): string | null
|
|
1120
|
-
assignTiers(mapping: Record<string, string>): void
|
|
1121
|
-
}
|
|
1122
|
-
|
|
1123
1172
|
export * from './repair.js'
|
|
1124
1173
|
|
|
1125
1174
|
export type {
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import type { LLMToolSchema, ToolDefinition, ToolPermission } from '../tool/index.js'
|
|
2
|
-
|
|
3
1
|
export type ToolSourceKind =
|
|
4
2
|
| 'host_tool'
|
|
5
3
|
| 'provider_builtin'
|
|
@@ -8,8 +6,6 @@ export type ToolSourceKind =
|
|
|
8
6
|
| 'plugin'
|
|
9
7
|
| 'connector'
|
|
10
8
|
|
|
11
|
-
export type ToolLoadingMode = 'eager' | 'deferred' | 'disabled' | 'suspended'
|
|
12
|
-
|
|
13
9
|
export interface ToolSource {
|
|
14
10
|
readonly id: string
|
|
15
11
|
readonly kind: ToolSourceKind
|
|
@@ -21,6 +17,16 @@ export interface ToolSource {
|
|
|
21
17
|
readonly url?: string
|
|
22
18
|
readonly transport?: 'streamable_http' | 'sse' | 'stdio'
|
|
23
19
|
readonly authorizationRef?: string
|
|
20
|
+
/**
|
|
21
|
+
* The operator marked this connected server's read-only claims
|
|
22
|
+
* trustworthy (plan.md §4's `readOnlyHintTrusted` option). Absent or
|
|
23
|
+
* `false` means untrusted — an unmarked server's `isReadOnly` claim
|
|
24
|
+
* raises the plan-mode bar but never lowers it on its own; see
|
|
25
|
+
* `toToolSourceRef` and `tools/trusted-read-only.ts`. One value per
|
|
26
|
+
* server, not per tool: every tool an `mcpToolset` contributes for a
|
|
27
|
+
* given server carries the same trust decision.
|
|
28
|
+
*/
|
|
29
|
+
readonly readOnlyHintTrusted?: boolean
|
|
24
30
|
}
|
|
25
31
|
readonly providerTool?: {
|
|
26
32
|
readonly type: string
|
|
@@ -34,46 +40,3 @@ export interface ToolSource {
|
|
|
34
40
|
}
|
|
35
41
|
readonly metadata?: Record<string, unknown>
|
|
36
42
|
}
|
|
37
|
-
|
|
38
|
-
export interface ToolsetPolicy {
|
|
39
|
-
readonly enabled?: boolean
|
|
40
|
-
readonly loading?: ToolLoadingMode
|
|
41
|
-
readonly preferred?: boolean
|
|
42
|
-
readonly providerConfig?: Record<string, unknown>
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
export interface ToolsetDefinition {
|
|
46
|
-
readonly id: string
|
|
47
|
-
readonly sourceId: string
|
|
48
|
-
readonly name: string
|
|
49
|
-
readonly description?: string
|
|
50
|
-
readonly defaultPolicy?: ToolsetPolicy
|
|
51
|
-
readonly metadata?: Record<string, unknown>
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface ToolCatalogEntry {
|
|
55
|
-
readonly name: string
|
|
56
|
-
readonly description: string
|
|
57
|
-
readonly sourceId: string
|
|
58
|
-
readonly toolsetId: string
|
|
59
|
-
readonly policy: ToolsetPolicy
|
|
60
|
-
readonly definition?: ToolDefinition
|
|
61
|
-
readonly llmSchema?: LLMToolSchema
|
|
62
|
-
readonly permissions?: readonly ToolPermission[]
|
|
63
|
-
readonly category?: ToolDefinition['category']
|
|
64
|
-
readonly metadata?: Record<string, unknown>
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
export interface ToolCatalogSearchResult {
|
|
68
|
-
readonly tool: ToolCatalogEntry
|
|
69
|
-
readonly source: ToolSource
|
|
70
|
-
readonly toolset: ToolsetDefinition
|
|
71
|
-
readonly score: number
|
|
72
|
-
readonly matched: readonly string[]
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
export interface ToolCatalogSnapshot {
|
|
76
|
-
readonly sources: readonly ToolSource[]
|
|
77
|
-
readonly toolsets: readonly ToolsetDefinition[]
|
|
78
|
-
readonly tools: readonly ToolCatalogEntry[]
|
|
79
|
-
}
|