@namzu/sdk 30.2.0 → 31.1.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 +562 -0
- package/README.md +43 -2
- package/dist/advisory/executor.d.ts +2 -1
- package/dist/advisory/executor.d.ts.map +1 -1
- package/dist/advisory/executor.js +4 -1
- package/dist/advisory/executor.js.map +1 -1
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +12 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/RouterAgent.d.ts.map +1 -1
- package/dist/agents/RouterAgent.js +21 -3
- package/dist/agents/RouterAgent.js.map +1 -1
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +34 -11
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/agents/runAgent.d.ts +12 -0
- package/dist/agents/runAgent.d.ts.map +1 -1
- package/dist/agents/runAgent.js +26 -2
- package/dist/agents/runAgent.js.map +1 -1
- package/dist/authorization/command-line.d.ts +81 -0
- package/dist/authorization/command-line.d.ts.map +1 -0
- package/dist/authorization/command-line.js +347 -0
- package/dist/authorization/command-line.js.map +1 -0
- package/dist/authorization/rules.d.ts.map +1 -1
- package/dist/authorization/rules.js +22 -1
- package/dist/authorization/rules.js.map +1 -1
- package/dist/bridge/a2a/client.d.ts +23 -5
- package/dist/bridge/a2a/client.d.ts.map +1 -1
- package/dist/bridge/a2a/client.js +320 -73
- package/dist/bridge/a2a/client.js.map +1 -1
- package/dist/bridge/a2a/mapper.d.ts.map +1 -1
- package/dist/bridge/a2a/mapper.js +4 -0
- package/dist/bridge/a2a/mapper.js.map +1 -1
- package/dist/bridge/acp/server.d.ts +13 -1
- package/dist/bridge/acp/server.d.ts.map +1 -1
- package/dist/bridge/acp/server.js +150 -44
- package/dist/bridge/acp/server.js.map +1 -1
- package/dist/bridge/mcp/connector/adapter.d.ts +3 -2
- package/dist/bridge/mcp/connector/adapter.d.ts.map +1 -1
- package/dist/bridge/mcp/connector/adapter.js +17 -21
- package/dist/bridge/mcp/connector/adapter.js.map +1 -1
- package/dist/bridge/sse/mapper.d.ts.map +1 -1
- package/dist/bridge/sse/mapper.js +3 -0
- package/dist/bridge/sse/mapper.js.map +1 -1
- package/dist/compaction/dangling.d.ts +29 -2
- package/dist/compaction/dangling.d.ts.map +1 -1
- package/dist/compaction/dangling.js +172 -35
- package/dist/compaction/dangling.js.map +1 -1
- package/dist/compaction/index.d.ts +3 -2
- package/dist/compaction/index.d.ts.map +1 -1
- package/dist/compaction/index.js +1 -1
- package/dist/compaction/index.js.map +1 -1
- package/dist/compaction/manual.d.ts +11 -1
- package/dist/compaction/manual.d.ts.map +1 -1
- package/dist/compaction/manual.js +89 -14
- package/dist/compaction/manual.js.map +1 -1
- package/dist/compaction/plan.d.ts +19 -6
- package/dist/compaction/plan.d.ts.map +1 -1
- package/dist/compaction/plan.js +18 -4
- package/dist/compaction/plan.js.map +1 -1
- package/dist/compaction/retention.d.ts +10 -7
- package/dist/compaction/retention.d.ts.map +1 -1
- package/dist/compaction/retention.js +26 -8
- package/dist/compaction/retention.js.map +1 -1
- package/dist/compaction/summary.d.ts +4 -4
- package/dist/compaction/summary.js +4 -4
- package/dist/compaction/verifier.d.ts +19 -1
- package/dist/compaction/verifier.d.ts.map +1 -1
- package/dist/compaction/verifier.js +20 -1
- package/dist/compaction/verifier.js.map +1 -1
- package/dist/config/runtime.d.ts +6 -6
- package/dist/connector/BaseConnector.d.ts +6 -4
- package/dist/connector/BaseConnector.d.ts.map +1 -1
- package/dist/connector/BaseConnector.js +8 -2
- package/dist/connector/BaseConnector.js.map +1 -1
- package/dist/connector/builtins/http.d.ts +16 -4
- package/dist/connector/builtins/http.d.ts.map +1 -1
- package/dist/connector/builtins/http.js +177 -44
- package/dist/connector/builtins/http.js.map +1 -1
- package/dist/connector/builtins/webhook.d.ts +15 -4
- package/dist/connector/builtins/webhook.d.ts.map +1 -1
- package/dist/connector/builtins/webhook.js +165 -45
- package/dist/connector/builtins/webhook.js.map +1 -1
- package/dist/connector/execution-contract.d.ts +11 -0
- package/dist/connector/execution-contract.d.ts.map +1 -0
- package/dist/connector/execution-contract.js +14 -0
- package/dist/connector/execution-contract.js.map +1 -0
- package/dist/connector/http-operation.d.ts +48 -0
- package/dist/connector/http-operation.d.ts.map +1 -0
- package/dist/connector/http-operation.js +205 -0
- package/dist/connector/http-operation.js.map +1 -0
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +8 -3
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/connector/mcp/client.d.ts +14 -8
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +160 -44
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/connector/mcp/http-sse.d.ts +8 -2
- package/dist/connector/mcp/http-sse.d.ts.map +1 -1
- package/dist/connector/mcp/http-sse.js +70 -17
- package/dist/connector/mcp/http-sse.js.map +1 -1
- package/dist/connector/mcp/prompt-adapter.d.ts.map +1 -1
- package/dist/connector/mcp/prompt-adapter.js +9 -2
- package/dist/connector/mcp/prompt-adapter.js.map +1 -1
- package/dist/connector/mcp/stdio.d.ts +2 -2
- package/dist/connector/mcp/stdio.d.ts.map +1 -1
- package/dist/connector/mcp/stdio.js +14 -50
- package/dist/connector/mcp/stdio.js.map +1 -1
- package/dist/connector/mcp/streamable-http.d.ts +7 -2
- package/dist/connector/mcp/streamable-http.d.ts.map +1 -1
- package/dist/connector/mcp/streamable-http.js +66 -18
- package/dist/connector/mcp/streamable-http.js.map +1 -1
- package/dist/connector/tools/adapter.d.ts +2 -2
- package/dist/connector/tools/adapter.d.ts.map +1 -1
- package/dist/connector/tools/adapter.js +23 -14
- package/dist/connector/tools/adapter.js.map +1 -1
- package/dist/connector/tools/definitions.d.ts.map +1 -1
- package/dist/connector/tools/definitions.js +5 -2
- package/dist/connector/tools/definitions.js.map +1 -1
- package/dist/connector/tools/result.d.ts +4 -0
- package/dist/connector/tools/result.d.ts.map +1 -0
- package/dist/connector/tools/result.js +20 -0
- package/dist/connector/tools/result.js.map +1 -0
- package/dist/connector/web/guarded-fetch.d.ts +4 -2
- package/dist/connector/web/guarded-fetch.d.ts.map +1 -1
- package/dist/connector/web/guarded-fetch.js +157 -43
- package/dist/connector/web/guarded-fetch.js.map +1 -1
- package/dist/constants/sandbox/index.d.ts +3 -2
- package/dist/constants/sandbox/index.d.ts.map +1 -1
- package/dist/constants/sandbox/index.js +3 -2
- package/dist/constants/sandbox/index.js.map +1 -1
- package/dist/contracts/api.d.ts +2 -0
- package/dist/contracts/api.d.ts.map +1 -1
- package/dist/contracts/schemas.d.ts +38 -12
- package/dist/contracts/schemas.d.ts.map +1 -1
- package/dist/contracts/schemas.js +7 -0
- package/dist/contracts/schemas.js.map +1 -1
- package/dist/directory/derive-supervisor.d.ts.map +1 -1
- package/dist/directory/derive-supervisor.js +8 -0
- package/dist/directory/derive-supervisor.js.map +1 -1
- package/dist/directory/derive.d.ts.map +1 -1
- package/dist/directory/derive.js +8 -0
- package/dist/directory/derive.js.map +1 -1
- package/dist/directory/load.d.ts.map +1 -1
- package/dist/directory/load.js +2 -0
- package/dist/directory/load.js.map +1 -1
- package/dist/directory/types.d.ts +4 -0
- package/dist/directory/types.d.ts.map +1 -1
- package/dist/eval/experiment.d.ts +10 -10
- package/dist/eval/experiment.d.ts.map +1 -1
- package/dist/eval/experiment.js +121 -91
- package/dist/eval/experiment.js.map +1 -1
- package/dist/eval/judge.d.ts +6 -0
- package/dist/eval/judge.d.ts.map +1 -1
- package/dist/eval/judge.js +7 -2
- package/dist/eval/judge.js.map +1 -1
- package/dist/eval/types.d.ts +7 -1
- package/dist/eval/types.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.d.ts +12 -10
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +16 -3
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/connector/environment.d.ts +2 -2
- package/dist/manager/connector/environment.d.ts.map +1 -1
- package/dist/manager/connector/environment.js +2 -2
- package/dist/manager/connector/environment.js.map +1 -1
- package/dist/manager/connector/lifecycle.d.ts +10 -2
- package/dist/manager/connector/lifecycle.d.ts.map +1 -1
- package/dist/manager/connector/lifecycle.js +273 -24
- package/dist/manager/connector/lifecycle.js.map +1 -1
- package/dist/manager/connector/tenant.d.ts +5 -4
- package/dist/manager/connector/tenant.d.ts.map +1 -1
- package/dist/manager/connector/tenant.js +47 -22
- package/dist/manager/connector/tenant.js.map +1 -1
- package/dist/manager/goal/activation.d.ts +23 -0
- package/dist/manager/goal/activation.d.ts.map +1 -0
- package/dist/manager/goal/activation.js +41 -0
- package/dist/manager/goal/activation.js.map +1 -0
- package/dist/manager/index.d.ts +3 -2
- package/dist/manager/index.d.ts.map +1 -1
- package/dist/manager/index.js.map +1 -1
- package/dist/manager/run/persistence.d.ts +2 -0
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +5 -1
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/manager/topic/dependency.d.ts +24 -0
- package/dist/manager/topic/dependency.d.ts.map +1 -0
- package/dist/manager/topic/dependency.js +13 -0
- package/dist/manager/topic/dependency.js.map +1 -0
- package/dist/manager/topic/lifecycle.d.ts +9 -21
- package/dist/manager/topic/lifecycle.d.ts.map +1 -1
- package/dist/manager/topic/lifecycle.js +17 -29
- package/dist/manager/topic/lifecycle.js.map +1 -1
- package/dist/plugin/index.d.ts +1 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/lifecycle.d.ts +15 -0
- package/dist/plugin/lifecycle.d.ts.map +1 -1
- package/dist/plugin/lifecycle.js +144 -38
- package/dist/plugin/lifecycle.js.map +1 -1
- package/dist/plugin/loader.d.ts +3 -3
- package/dist/plugin/loader.d.ts.map +1 -1
- package/dist/plugin/loader.js +58 -12
- package/dist/plugin/loader.js.map +1 -1
- package/dist/provider/collect-chat-completion.d.ts.map +1 -1
- package/dist/provider/collect-chat-completion.js +4 -0
- package/dist/provider/collect-chat-completion.js.map +1 -1
- package/dist/provider/fallback.d.ts +3 -1
- package/dist/provider/fallback.d.ts.map +1 -1
- package/dist/provider/fallback.js +62 -10
- package/dist/provider/fallback.js.map +1 -1
- package/dist/provider/idle-timeout.d.ts +4 -0
- package/dist/provider/idle-timeout.d.ts.map +1 -1
- package/dist/provider/idle-timeout.js +131 -15
- package/dist/provider/idle-timeout.js.map +1 -1
- package/dist/provider/index.d.ts +2 -0
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +1 -0
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/instrumentation.d.ts.map +1 -1
- package/dist/provider/instrumentation.js +1 -0
- package/dist/provider/instrumentation.js.map +1 -1
- package/dist/provider/retry.d.ts.map +1 -1
- package/dist/provider/retry.js +13 -1
- package/dist/provider/retry.js.map +1 -1
- package/dist/public-runtime.d.ts +57 -24
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +42 -35
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +1 -0
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +5 -0
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +33 -12
- package/dist/public-types.d.ts.map +1 -1
- package/dist/rag/embedding.d.ts +8 -3
- package/dist/rag/embedding.d.ts.map +1 -1
- package/dist/rag/embedding.js +120 -9
- package/dist/rag/embedding.js.map +1 -1
- package/dist/rag/index.d.ts +1 -1
- package/dist/rag/index.d.ts.map +1 -1
- package/dist/rag/index.js +1 -1
- package/dist/rag/index.js.map +1 -1
- package/dist/rag/ingestion.d.ts +2 -2
- package/dist/rag/ingestion.d.ts.map +1 -1
- package/dist/rag/ingestion.js +15 -3
- package/dist/rag/ingestion.js.map +1 -1
- package/dist/rag/knowledge-base.d.ts +3 -3
- package/dist/rag/knowledge-base.d.ts.map +1 -1
- package/dist/rag/knowledge-base.js +8 -4
- package/dist/rag/knowledge-base.js.map +1 -1
- package/dist/rag/operation.d.ts +10 -0
- package/dist/rag/operation.d.ts.map +1 -0
- package/dist/rag/operation.js +26 -0
- package/dist/rag/operation.js.map +1 -0
- package/dist/rag/rag-tool.d.ts.map +1 -1
- package/dist/rag/rag-tool.js +6 -3
- package/dist/rag/rag-tool.js.map +1 -1
- package/dist/rag/retriever.d.ts +2 -2
- package/dist/rag/retriever.d.ts.map +1 -1
- package/dist/rag/retriever.js +31 -15
- package/dist/rag/retriever.js.map +1 -1
- package/dist/rag/vector-store.d.ts +3 -3
- package/dist/rag/vector-store.d.ts.map +1 -1
- package/dist/rag/vector-store.js +4 -2
- package/dist/rag/vector-store.js.map +1 -1
- package/dist/registry/command/kernel-commands.d.ts +16 -4
- package/dist/registry/command/kernel-commands.d.ts.map +1 -1
- package/dist/registry/command/kernel-commands.js +171 -0
- package/dist/registry/command/kernel-commands.js.map +1 -1
- package/dist/run/reporter.d.ts.map +1 -1
- package/dist/run/reporter.js +9 -0
- package/dist/run/reporter.js.map +1 -1
- package/dist/run-query/index.d.ts +15 -1
- package/dist/run-query/index.d.ts.map +1 -1
- package/dist/run-query/index.js +69 -15
- package/dist/run-query/index.js.map +1 -1
- package/dist/runtime/query/context.d.ts.map +1 -1
- package/dist/runtime/query/context.js +10 -3
- package/dist/runtime/query/context.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +3 -0
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +80 -18
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/guard.d.ts +9 -0
- package/dist/runtime/query/guard.d.ts.map +1 -1
- package/dist/runtime/query/guard.js +11 -0
- package/dist/runtime/query/guard.js.map +1 -1
- package/dist/runtime/query/index.d.ts +30 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +548 -95
- 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 +74 -14
- package/dist/runtime/query/iteration/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +94 -53
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +3 -0
- package/dist/runtime/query/iteration/phases/context.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/context.js.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 +21 -0
- 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 +4 -0
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/project-instructions.d.ts +69 -0
- package/dist/runtime/query/project-instructions.d.ts.map +1 -0
- package/dist/runtime/query/project-instructions.js +137 -0
- package/dist/runtime/query/project-instructions.js.map +1 -0
- package/dist/runtime/query/request-rich-content.d.ts +22 -0
- package/dist/runtime/query/request-rich-content.d.ts.map +1 -0
- package/dist/runtime/query/request-rich-content.js +122 -0
- package/dist/runtime/query/request-rich-content.js.map +1 -0
- package/dist/runtime/query/result.d.ts.map +1 -1
- package/dist/runtime/query/result.js +12 -1
- package/dist/runtime/query/result.js.map +1 -1
- package/dist/runtime/query/resume-pending.d.ts.map +1 -1
- package/dist/runtime/query/resume-pending.js +19 -20
- package/dist/runtime/query/resume-pending.js.map +1 -1
- package/dist/runtime/query/resume-run.d.ts.map +1 -1
- package/dist/runtime/query/resume-run.js +54 -8
- package/dist/runtime/query/resume-run.js.map +1 -1
- package/dist/runtime/query/run-state.d.ts +5 -0
- package/dist/runtime/query/run-state.d.ts.map +1 -1
- package/dist/runtime/query/run-state.js +6 -1
- package/dist/runtime/query/run-state.js.map +1 -1
- package/dist/runtime/query/sandbox-lifecycle.d.ts +54 -0
- package/dist/runtime/query/sandbox-lifecycle.d.ts.map +1 -0
- package/dist/runtime/query/sandbox-lifecycle.js +167 -0
- package/dist/runtime/query/sandbox-lifecycle.js.map +1 -0
- package/dist/sandbox/isolation.d.ts.map +1 -1
- package/dist/sandbox/isolation.js +9 -0
- package/dist/sandbox/isolation.js.map +1 -1
- package/dist/sandbox/provider/local.d.ts +56 -6
- package/dist/sandbox/provider/local.d.ts.map +1 -1
- package/dist/sandbox/provider/local.js +181 -76
- package/dist/sandbox/provider/local.js.map +1 -1
- package/dist/sandbox/terminal.d.ts +13 -5
- package/dist/sandbox/terminal.d.ts.map +1 -1
- package/dist/sandbox/terminal.js +11 -3
- package/dist/sandbox/terminal.js.map +1 -1
- package/dist/session/errors.d.ts +28 -29
- package/dist/session/errors.d.ts.map +1 -1
- package/dist/session/errors.js +28 -29
- package/dist/session/errors.js.map +1 -1
- package/dist/session/handoff/broadcast.d.ts +5 -8
- package/dist/session/handoff/broadcast.d.ts.map +1 -1
- package/dist/session/handoff/broadcast.js +16 -6
- package/dist/session/handoff/broadcast.js.map +1 -1
- package/dist/session/handoff/single.d.ts +5 -8
- package/dist/session/handoff/single.d.ts.map +1 -1
- package/dist/session/handoff/single.js +7 -4
- package/dist/session/handoff/single.js.map +1 -1
- package/dist/store/attachment/index.d.ts +11 -3
- package/dist/store/attachment/index.d.ts.map +1 -1
- package/dist/store/attachment/index.js +49 -4
- package/dist/store/attachment/index.js.map +1 -1
- package/dist/store/feedback/conformance.d.ts.map +1 -1
- package/dist/store/feedback/conformance.js +32 -0
- package/dist/store/feedback/conformance.js.map +1 -1
- package/dist/store/feedback/disk.d.ts +8 -6
- package/dist/store/feedback/disk.d.ts.map +1 -1
- package/dist/store/feedback/disk.js +111 -76
- package/dist/store/feedback/disk.js.map +1 -1
- package/dist/store/goal/index.d.ts +111 -0
- package/dist/store/goal/index.d.ts.map +1 -0
- package/dist/store/goal/index.js +436 -0
- package/dist/store/goal/index.js.map +1 -0
- package/dist/store/index.d.ts +1 -1
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -1
- package/dist/store/index.js.map +1 -1
- package/dist/store/kv/revision-record-store.d.ts +70 -0
- package/dist/store/kv/revision-record-store.d.ts.map +1 -0
- package/dist/store/kv/revision-record-store.js +290 -0
- package/dist/store/kv/revision-record-store.js.map +1 -0
- package/dist/store/memory/disk.d.ts +9 -7
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +256 -98
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/run/disk.d.ts +10 -2
- package/dist/store/run/disk.d.ts.map +1 -1
- package/dist/store/run/disk.js +70 -4
- package/dist/store/run/disk.js.map +1 -1
- package/dist/store/run/memory.d.ts +4 -2
- package/dist/store/run/memory.d.ts.map +1 -1
- package/dist/store/run/memory.js +15 -1
- package/dist/store/run/memory.js.map +1 -1
- package/dist/store/session/disk.d.ts +9 -0
- package/dist/store/session/disk.d.ts.map +1 -1
- package/dist/store/session/disk.js +57 -5
- package/dist/store/session/disk.js.map +1 -1
- package/dist/store/session/memory.d.ts +1 -0
- package/dist/store/session/memory.d.ts.map +1 -1
- package/dist/store/session/memory.js +14 -0
- package/dist/store/session/memory.js.map +1 -1
- package/dist/store/topic/memory.d.ts +1 -2
- package/dist/store/topic/memory.d.ts.map +1 -1
- package/dist/store/topic/memory.js +4 -5
- package/dist/store/topic/memory.js.map +1 -1
- package/dist/store/topic/objective.d.ts +8 -4
- package/dist/store/topic/objective.d.ts.map +1 -1
- package/dist/store/topic/objective.js +185 -100
- package/dist/store/topic/objective.js.map +1 -1
- package/dist/store/topic/state.d.ts +1 -2
- package/dist/store/topic/state.d.ts.map +1 -1
- package/dist/store/topic/state.js +50 -62
- package/dist/store/topic/state.js.map +1 -1
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +20 -0
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/computer-use.d.ts +9 -1
- package/dist/tools/builtins/computer-use.d.ts.map +1 -1
- package/dist/tools/builtins/computer-use.js.map +1 -1
- package/dist/tools/builtins/content-fingerprint.d.ts +8 -7
- package/dist/tools/builtins/content-fingerprint.d.ts.map +1 -1
- package/dist/tools/builtins/content-fingerprint.js +9 -10
- package/dist/tools/builtins/content-fingerprint.js.map +1 -1
- package/dist/tools/builtins/edit.d.ts +6 -1
- package/dist/tools/builtins/edit.d.ts.map +1 -1
- package/dist/tools/builtins/edit.js +166 -27
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/write-file.d.ts.map +1 -1
- package/dist/tools/builtins/write-file.js +45 -19
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/command-arguments.d.ts +43 -0
- package/dist/tools/command-arguments.d.ts.map +1 -0
- package/dist/tools/command-arguments.js +52 -0
- package/dist/tools/command-arguments.js.map +1 -0
- package/dist/tools/coordinator/index.d.ts +2 -0
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +3 -1
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/defineTool.d.ts +10 -0
- package/dist/tools/defineTool.d.ts.map +1 -1
- package/dist/tools/defineTool.js +1 -0
- package/dist/tools/defineTool.js.map +1 -1
- package/dist/tools/env-scrub.d.ts +7 -5
- package/dist/tools/env-scrub.d.ts.map +1 -1
- package/dist/tools/env-scrub.js +7 -5
- package/dist/tools/env-scrub.js.map +1 -1
- package/dist/tools/goal/index.d.ts +20 -0
- package/dist/tools/goal/index.d.ts.map +1 -0
- package/dist/tools/goal/index.js +104 -0
- package/dist/tools/goal/index.js.map +1 -0
- package/dist/tools/memory/index.d.ts +16 -0
- package/dist/tools/memory/index.d.ts.map +1 -1
- package/dist/tools/memory/index.js +6 -2
- package/dist/tools/memory/index.js.map +1 -1
- package/dist/tools/memory/search.d.ts +4 -1
- package/dist/tools/memory/search.d.ts.map +1 -1
- package/dist/tools/memory/search.js +10 -2
- package/dist/tools/memory/search.js.map +1 -1
- package/dist/types/agent/base.d.ts +11 -3
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/agent/factory.d.ts +2 -0
- package/dist/types/agent/factory.d.ts.map +1 -1
- package/dist/types/agent/reactive.d.ts +2 -0
- package/dist/types/agent/reactive.d.ts.map +1 -1
- package/dist/types/agent/supervisor.d.ts +6 -0
- package/dist/types/agent/supervisor.d.ts.map +1 -1
- package/dist/types/agent/task.d.ts +6 -2
- package/dist/types/agent/task.d.ts.map +1 -1
- package/dist/types/connector/core.d.ts +13 -8
- package/dist/types/connector/core.d.ts.map +1 -1
- package/dist/types/connector/definition.d.ts +37 -18
- package/dist/types/connector/definition.d.ts.map +1 -1
- package/dist/types/connector/http.d.ts +6 -0
- package/dist/types/connector/http.d.ts.map +1 -1
- package/dist/types/connector/mcp.d.ts +24 -6
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/connector/tenant.d.ts +17 -7
- package/dist/types/connector/tenant.d.ts.map +1 -1
- package/dist/types/connector/webhook.d.ts +6 -0
- package/dist/types/connector/webhook.d.ts.map +1 -1
- package/dist/types/goal/index.d.ts +46 -0
- package/dist/types/goal/index.d.ts.map +1 -0
- package/dist/types/goal/index.js +2 -0
- package/dist/types/goal/index.js.map +1 -0
- package/dist/types/ids/index.d.ts +2 -0
- package/dist/types/ids/index.d.ts.map +1 -1
- package/dist/types/ids/index.js.map +1 -1
- package/dist/types/message/index.d.ts +79 -13
- package/dist/types/message/index.d.ts.map +1 -1
- package/dist/types/message/index.js +49 -3
- package/dist/types/message/index.js.map +1 -1
- package/dist/types/plugin/index.d.ts +7 -5
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/plugin/index.js.map +1 -1
- package/dist/types/provider/chat.d.ts +27 -4
- package/dist/types/provider/chat.d.ts.map +1 -1
- package/dist/types/provider/index.d.ts +1 -1
- package/dist/types/provider/index.d.ts.map +1 -1
- package/dist/types/provider/interface.d.ts +18 -7
- package/dist/types/provider/interface.d.ts.map +1 -1
- package/dist/types/provider/model.d.ts +12 -0
- package/dist/types/provider/model.d.ts.map +1 -1
- package/dist/types/provider/stream.d.ts +6 -0
- package/dist/types/provider/stream.d.ts.map +1 -1
- package/dist/types/rag/embedding.d.ts +15 -2
- package/dist/types/rag/embedding.d.ts.map +1 -1
- package/dist/types/rag/ingestion.d.ts +2 -2
- package/dist/types/rag/ingestion.d.ts.map +1 -1
- package/dist/types/rag/knowledge-base.d.ts +3 -3
- package/dist/types/rag/knowledge-base.d.ts.map +1 -1
- package/dist/types/rag/retrieval.d.ts +2 -2
- package/dist/types/rag/retrieval.d.ts.map +1 -1
- package/dist/types/rag/scope.d.ts +4 -0
- package/dist/types/rag/scope.d.ts.map +1 -1
- package/dist/types/rag/vector.d.ts +5 -2
- package/dist/types/rag/vector.d.ts.map +1 -1
- package/dist/types/run/config.d.ts +20 -0
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +25 -1
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/run/metadata.d.ts +2 -0
- package/dist/types/run/metadata.d.ts.map +1 -1
- package/dist/types/run/step.d.ts +2 -6
- package/dist/types/run/step.d.ts.map +1 -1
- package/dist/types/run/step.js.map +1 -1
- package/dist/types/run/store.d.ts +55 -2
- package/dist/types/run/store.d.ts.map +1 -1
- package/dist/types/sandbox/index.d.ts +47 -6
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js +23 -10
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/session/store.d.ts +13 -0
- package/dist/types/session/store.d.ts.map +1 -1
- package/dist/types/tool/index.d.ts +33 -11
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/types/topic/entity.d.ts +3 -4
- package/dist/types/topic/entity.d.ts.map +1 -1
- package/dist/types/topic/store.d.ts +3 -3
- package/dist/utils/id.d.ts +3 -1
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +4 -0
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/process-environment.d.ts +26 -0
- package/dist/utils/process-environment.d.ts.map +1 -0
- package/dist/utils/process-environment.js +78 -0
- package/dist/utils/process-environment.js.map +1 -0
- package/dist/vault/InMemoryCredentialVault.d.ts +2 -0
- package/dist/vault/InMemoryCredentialVault.d.ts.map +1 -1
- package/dist/vault/InMemoryCredentialVault.js +24 -4
- package/dist/vault/InMemoryCredentialVault.js.map +1 -1
- package/dist/vault/instrumentation.d.ts.map +1 -1
- package/dist/vault/instrumentation.js +15 -0
- package/dist/vault/instrumentation.js.map +1 -1
- package/package.json +1 -1
- package/src/advisory/executor.ts +4 -1
- package/src/agents/ReactiveAgent.ts +12 -0
- package/src/agents/RouterAgent.ts +25 -3
- package/src/agents/SupervisorAgent.ts +33 -11
- package/src/agents/runAgent.ts +38 -2
- package/src/authorization/command-line.ts +390 -0
- package/src/authorization/rules.ts +22 -1
- package/src/bridge/a2a/client.ts +384 -97
- package/src/bridge/a2a/mapper.ts +5 -0
- package/src/bridge/acp/server.ts +184 -42
- package/src/bridge/mcp/connector/adapter.ts +28 -20
- package/src/bridge/sse/mapper.ts +3 -0
- package/src/compaction/dangling.ts +203 -38
- package/src/compaction/index.ts +9 -2
- package/src/compaction/manual.ts +125 -18
- package/src/compaction/plan.ts +42 -11
- package/src/compaction/retention.ts +23 -8
- package/src/compaction/summary.ts +4 -4
- package/src/compaction/verifier.ts +66 -0
- package/src/connector/BaseConnector.ts +19 -4
- package/src/connector/builtins/http.ts +236 -46
- package/src/connector/builtins/webhook.ts +207 -47
- package/src/connector/execution-contract.ts +27 -0
- package/src/connector/http-operation.ts +238 -0
- package/src/connector/mcp/adapter.ts +8 -3
- package/src/connector/mcp/client.ts +207 -58
- package/src/connector/mcp/http-sse.ts +91 -23
- package/src/connector/mcp/prompt-adapter.ts +8 -2
- package/src/connector/mcp/stdio.ts +21 -46
- package/src/connector/mcp/streamable-http.ts +86 -22
- package/src/connector/tools/adapter.ts +23 -14
- package/src/connector/tools/definitions.ts +5 -2
- package/src/connector/tools/result.ts +21 -0
- package/src/connector/web/guarded-fetch.ts +188 -48
- package/src/constants/sandbox/index.ts +3 -2
- package/src/contracts/api.ts +2 -0
- package/src/contracts/schemas.ts +7 -0
- package/src/directory/derive-supervisor.ts +8 -0
- package/src/directory/derive.ts +8 -0
- package/src/directory/load.ts +2 -0
- package/src/directory/types.ts +4 -0
- package/src/eval/experiment.ts +160 -111
- package/src/eval/judge.ts +13 -2
- package/src/eval/types.ts +7 -1
- package/src/manager/agent/lifecycle.ts +28 -12
- package/src/manager/connector/environment.ts +3 -1
- package/src/manager/connector/lifecycle.ts +364 -24
- package/src/manager/connector/tenant.ts +56 -23
- package/src/manager/goal/activation.ts +52 -0
- package/src/manager/index.ts +10 -2
- package/src/manager/run/persistence.ts +6 -1
- package/src/manager/topic/dependency.ts +39 -0
- package/src/manager/topic/lifecycle.ts +19 -31
- package/src/plugin/index.ts +1 -0
- package/src/plugin/lifecycle.ts +180 -39
- package/src/plugin/loader.ts +70 -13
- package/src/provider/collect-chat-completion.ts +3 -0
- package/src/provider/fallback.ts +79 -11
- package/src/provider/idle-timeout.ts +143 -17
- package/src/provider/index.ts +2 -0
- package/src/provider/instrumentation.ts +1 -0
- package/src/provider/retry.ts +16 -1
- package/src/public-runtime.ts +190 -32
- package/src/public-tools.ts +5 -0
- package/src/public-types.ts +85 -11
- package/src/rag/embedding.ts +147 -19
- package/src/rag/index.ts +1 -1
- package/src/rag/ingestion.ts +16 -2
- package/src/rag/knowledge-base.ts +13 -4
- package/src/rag/operation.ts +28 -0
- package/src/rag/rag-tool.ts +6 -3
- package/src/rag/retriever.ts +62 -11
- package/src/rag/vector-store.ts +8 -2
- package/src/registry/command/kernel-commands.ts +223 -4
- package/src/run/reporter.ts +10 -0
- package/src/run-query/index.ts +84 -15
- package/src/runtime/query/context.ts +13 -3
- package/src/runtime/query/executor.ts +90 -17
- package/src/runtime/query/guard.ts +12 -0
- package/src/runtime/query/index.ts +652 -103
- package/src/runtime/query/iteration/index.ts +89 -13
- package/src/runtime/query/iteration/phases/compaction.ts +120 -55
- package/src/runtime/query/iteration/phases/context.ts +4 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +28 -0
- package/src/runtime/query/iteration/stream-turn.ts +3 -0
- package/src/runtime/query/project-instructions.ts +212 -0
- package/src/runtime/query/request-rich-content.ts +153 -0
- package/src/runtime/query/result.ts +12 -1
- package/src/runtime/query/resume-pending.ts +20 -18
- package/src/runtime/query/resume-run.ts +52 -8
- package/src/runtime/query/run-state.ts +11 -1
- package/src/runtime/query/sandbox-lifecycle.ts +210 -0
- package/src/sandbox/isolation.ts +9 -0
- package/src/sandbox/provider/local.ts +255 -90
- package/src/sandbox/terminal.ts +13 -5
- package/src/session/errors.ts +68 -42
- package/src/session/handoff/broadcast.ts +20 -14
- package/src/session/handoff/single.ts +14 -13
- package/src/store/attachment/index.ts +65 -3
- package/src/store/feedback/conformance.ts +39 -0
- package/src/store/feedback/disk.ts +128 -82
- package/src/store/goal/index.ts +594 -0
- package/src/store/index.ts +1 -1
- package/src/store/kv/revision-record-store.ts +346 -0
- package/src/store/memory/disk.ts +288 -113
- package/src/store/run/disk.ts +96 -5
- package/src/store/run/memory.ts +22 -2
- package/src/store/session/disk.ts +93 -6
- package/src/store/session/memory.ts +22 -0
- package/src/store/topic/memory.ts +4 -5
- package/src/store/topic/objective.ts +215 -100
- package/src/store/topic/state.ts +100 -63
- package/src/tools/builtins/bash.ts +21 -0
- package/src/tools/builtins/computer-use.ts +9 -1
- package/src/tools/builtins/content-fingerprint.ts +9 -12
- package/src/tools/builtins/edit.ts +190 -27
- package/src/tools/builtins/write-file.ts +55 -19
- package/src/tools/command-arguments.ts +54 -0
- package/src/tools/coordinator/index.ts +4 -1
- package/src/tools/defineTool.ts +11 -0
- package/src/tools/env-scrub.ts +7 -5
- package/src/tools/goal/index.ts +129 -0
- package/src/tools/memory/index.ts +26 -3
- package/src/tools/memory/search.ts +20 -3
- package/src/types/agent/base.ts +12 -3
- package/src/types/agent/factory.ts +2 -0
- package/src/types/agent/reactive.ts +2 -0
- package/src/types/agent/supervisor.ts +6 -0
- package/src/types/agent/task.ts +6 -2
- package/src/types/connector/core.ts +13 -8
- package/src/types/connector/definition.ts +54 -20
- package/src/types/connector/http.ts +7 -0
- package/src/types/connector/mcp.ts +27 -6
- package/src/types/connector/tenant.ts +21 -7
- package/src/types/connector/webhook.ts +7 -0
- package/src/types/goal/index.ts +50 -0
- package/src/types/ids/index.ts +2 -0
- package/src/types/message/index.ts +147 -12
- package/src/types/plugin/index.ts +7 -5
- package/src/types/provider/chat.ts +35 -4
- package/src/types/provider/index.ts +1 -1
- package/src/types/provider/interface.ts +22 -7
- package/src/types/provider/model.ts +13 -0
- package/src/types/provider/stream.ts +6 -0
- package/src/types/rag/embedding.ts +16 -2
- package/src/types/rag/ingestion.ts +2 -1
- package/src/types/rag/knowledge-base.ts +7 -3
- package/src/types/rag/retrieval.ts +2 -1
- package/src/types/rag/scope.ts +5 -0
- package/src/types/rag/vector.ts +5 -2
- package/src/types/run/config.ts +20 -0
- package/src/types/run/events.ts +28 -3
- package/src/types/run/metadata.ts +2 -0
- package/src/types/run/step.ts +2 -7
- package/src/types/run/store.ts +60 -2
- package/src/types/sandbox/index.ts +57 -14
- package/src/types/session/store.ts +18 -0
- package/src/types/tool/index.ts +33 -11
- package/src/types/topic/entity.ts +3 -4
- package/src/types/topic/store.ts +3 -3
- package/src/utils/id.ts +6 -0
- package/src/utils/process-environment.ts +101 -0
- package/src/vault/InMemoryCredentialVault.ts +29 -4
- package/src/vault/instrumentation.ts +24 -0
package/src/bridge/acp/server.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isAbsolute } from 'node:path'
|
|
2
|
+
|
|
1
3
|
import {
|
|
2
4
|
ACP_CLIENT_NOTIFICATIONS,
|
|
3
5
|
ACP_CLIENT_REQUESTS,
|
|
@@ -90,7 +92,14 @@ export interface AcpAgentGateway {
|
|
|
90
92
|
readonly filesystem: AcpClientFilesystem | undefined
|
|
91
93
|
/** Turns to resume from, oldest first. Empty for a fresh session. */
|
|
92
94
|
readonly history: readonly unknown[]
|
|
93
|
-
}): Promise<{
|
|
95
|
+
}): Promise<{
|
|
96
|
+
readonly stopReason?: string
|
|
97
|
+
/**
|
|
98
|
+
* The exact conversation to use for the next prompt, after the run has
|
|
99
|
+
* settled. Omit it when the gateway does not own durable history.
|
|
100
|
+
*/
|
|
101
|
+
readonly history?: readonly unknown[]
|
|
102
|
+
}>
|
|
94
103
|
|
|
95
104
|
/**
|
|
96
105
|
* The turns a prior session left behind, for `session/load`.
|
|
@@ -123,6 +132,8 @@ export interface AcpServerOptions {
|
|
|
123
132
|
interface Session {
|
|
124
133
|
readonly cwd: string
|
|
125
134
|
controller: AbortController
|
|
135
|
+
/** One live prompt per protocol session. Other sessions remain independent. */
|
|
136
|
+
promptInFlight: boolean
|
|
126
137
|
/**
|
|
127
138
|
* Whether the human said "approve all" for THIS session.
|
|
128
139
|
*
|
|
@@ -153,7 +164,10 @@ class AcpError extends Error {
|
|
|
153
164
|
export class ACPServer {
|
|
154
165
|
private readonly log: Logger
|
|
155
166
|
private readonly sessions = new Map<string, Session>()
|
|
167
|
+
/** IDs being loaded or created but not yet published. */
|
|
168
|
+
private readonly reservedSessionIds = new Map<string, symbol>()
|
|
156
169
|
private initialized = false
|
|
170
|
+
private stopped = false
|
|
157
171
|
private clientCapabilities: readonly string[] = []
|
|
158
172
|
private sessionSeq = 0
|
|
159
173
|
|
|
@@ -191,6 +205,7 @@ export class ACPServer {
|
|
|
191
205
|
}
|
|
192
206
|
|
|
193
207
|
async start(): Promise<void> {
|
|
208
|
+
if (this.stopped) throw new Error('An ACP server cannot be restarted after it has stopped.')
|
|
194
209
|
this.options.transport.onMessage((message) => {
|
|
195
210
|
void this.dispatch(message)
|
|
196
211
|
})
|
|
@@ -198,8 +213,7 @@ export class ACPServer {
|
|
|
198
213
|
}
|
|
199
214
|
|
|
200
215
|
async stop(): Promise<void> {
|
|
201
|
-
|
|
202
|
-
this.sessions.clear()
|
|
216
|
+
this.stopped = true
|
|
203
217
|
// Anything still waiting on the client is rejected rather than left
|
|
204
218
|
// pending: the transport is about to close, so no answer is coming, and
|
|
205
219
|
// a promise nobody will ever settle keeps whatever awaited it alive.
|
|
@@ -207,6 +221,9 @@ export class ACPServer {
|
|
|
207
221
|
waiting.reject(new Error('The client connection closed before it answered.'))
|
|
208
222
|
}
|
|
209
223
|
this.pending.clear()
|
|
224
|
+
for (const session of this.sessions.values()) session.controller.abort()
|
|
225
|
+
this.sessions.clear()
|
|
226
|
+
this.reservedSessionIds.clear()
|
|
210
227
|
await this.options.transport.close()
|
|
211
228
|
}
|
|
212
229
|
|
|
@@ -218,14 +235,39 @@ export class ACPServer {
|
|
|
218
235
|
* so it needs an id, a place to park the promise, and a `dispatch` that
|
|
219
236
|
* recognises a response frame.
|
|
220
237
|
*/
|
|
221
|
-
private request<T>(
|
|
238
|
+
private request<T>(
|
|
239
|
+
method: string,
|
|
240
|
+
params: Record<string, unknown>,
|
|
241
|
+
signal?: AbortSignal,
|
|
242
|
+
): Promise<T> {
|
|
222
243
|
this.requestSeq += 1
|
|
223
244
|
const id = `agent_${this.requestSeq}`
|
|
224
245
|
return new Promise<T>((resolve, reject) => {
|
|
225
|
-
|
|
226
|
-
|
|
246
|
+
const finish = (): boolean => {
|
|
247
|
+
if (this.pending.get(id) !== entry) return false
|
|
227
248
|
this.pending.delete(id)
|
|
228
|
-
|
|
249
|
+
signal?.removeEventListener('abort', onAbort)
|
|
250
|
+
return true
|
|
251
|
+
}
|
|
252
|
+
const onAbort = (): void => {
|
|
253
|
+
const reason =
|
|
254
|
+
signal?.reason instanceof Error
|
|
255
|
+
? signal.reason
|
|
256
|
+
: new DOMException('The permission request was cancelled.', 'AbortError')
|
|
257
|
+
entry.reject(reason)
|
|
258
|
+
}
|
|
259
|
+
const entry = {
|
|
260
|
+
resolve: (value: unknown) => {
|
|
261
|
+
if (finish()) resolve(value as T)
|
|
262
|
+
},
|
|
263
|
+
reject: (error: Error) => {
|
|
264
|
+
if (finish()) reject(error)
|
|
265
|
+
},
|
|
266
|
+
}
|
|
267
|
+
this.pending.set(id, entry)
|
|
268
|
+
signal?.addEventListener('abort', onAbort, { once: true })
|
|
269
|
+
void this.send({ jsonrpc: '2.0', id, method, params }).catch((err: unknown) => {
|
|
270
|
+
entry.reject(err instanceof Error ? err : new Error(String(err)))
|
|
229
271
|
})
|
|
230
272
|
})
|
|
231
273
|
}
|
|
@@ -238,7 +280,6 @@ export class ACPServer {
|
|
|
238
280
|
// asker waiting forever and the run parked with nobody coming.
|
|
239
281
|
if (message.id !== undefined && this.pending.has(message.id)) {
|
|
240
282
|
const waiting = this.pending.get(message.id)
|
|
241
|
-
this.pending.delete(message.id)
|
|
242
283
|
if (message.error) {
|
|
243
284
|
waiting?.reject(new Error(message.error.message))
|
|
244
285
|
} else {
|
|
@@ -331,7 +372,13 @@ export class ACPServer {
|
|
|
331
372
|
private onSessionNew(params: AcpSessionNewParams): AcpSessionNewResult {
|
|
332
373
|
this.requireInitialized()
|
|
333
374
|
this.requirePermissionCapability()
|
|
334
|
-
|
|
375
|
+
const cwd = this.requireAbsoluteCwd(params.cwd)
|
|
376
|
+
const { sessionId, token } = this.reserveGeneratedSessionId()
|
|
377
|
+
// No await separates reserve from publish, so another operation cannot
|
|
378
|
+
// take or close this namespace slot between the two statements. Load has
|
|
379
|
+
// an async store read and therefore keeps its explicit failure cleanup.
|
|
380
|
+
this.publishSession(sessionId, token, cwd, [])
|
|
381
|
+
return { sessionId }
|
|
335
382
|
}
|
|
336
383
|
|
|
337
384
|
/**
|
|
@@ -351,29 +398,91 @@ export class ACPServer {
|
|
|
351
398
|
'This agent has no session store, so there is nothing to resume. Create a new session instead.',
|
|
352
399
|
)
|
|
353
400
|
}
|
|
354
|
-
const
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
401
|
+
const cwd = this.requireAbsoluteCwd(params.cwd)
|
|
402
|
+
const token = this.reserveSessionId(params.sessionId)
|
|
403
|
+
try {
|
|
404
|
+
const history = await this.options.gateway.load(params.sessionId)
|
|
405
|
+
if (!Array.isArray(history)) {
|
|
406
|
+
throw new AcpError(
|
|
407
|
+
ACP_ERROR_CODES.INTERNAL_ERROR,
|
|
408
|
+
`The session store returned an invalid history for "${params.sessionId}".`,
|
|
409
|
+
)
|
|
410
|
+
}
|
|
411
|
+
// The SAME id, not a new one. A client that asked to resume `ses_x` and
|
|
412
|
+
// got `ses_y` back has to rewrite whatever it had keyed by the old one.
|
|
413
|
+
this.publishSession(params.sessionId, token, cwd, history)
|
|
414
|
+
return { sessionId: params.sessionId }
|
|
415
|
+
} catch (error) {
|
|
416
|
+
this.releaseSessionId(params.sessionId, token)
|
|
417
|
+
throw error
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
|
|
421
|
+
private requireAbsoluteCwd(cwd: string | undefined): string {
|
|
422
|
+
const resolved = cwd ?? process.cwd()
|
|
423
|
+
if (!isAbsolute(resolved)) {
|
|
424
|
+
throw new AcpError(
|
|
425
|
+
ACP_ERROR_CODES.INVALID_PARAMS,
|
|
426
|
+
`ACP session cwd must be an absolute path; received ${JSON.stringify(resolved)}.`,
|
|
427
|
+
)
|
|
428
|
+
}
|
|
429
|
+
return resolved
|
|
364
430
|
}
|
|
365
431
|
|
|
366
|
-
private
|
|
367
|
-
this.
|
|
368
|
-
|
|
432
|
+
private reserveGeneratedSessionId(): { readonly sessionId: string; readonly token: symbol } {
|
|
433
|
+
if (this.options.newSessionId) {
|
|
434
|
+
const sessionId = this.options.newSessionId()
|
|
435
|
+
return { sessionId, token: this.reserveSessionId(sessionId) }
|
|
436
|
+
}
|
|
437
|
+
|
|
438
|
+
for (;;) {
|
|
439
|
+
this.sessionSeq += 1
|
|
440
|
+
const sessionId = `acp_${this.sessionSeq}`
|
|
441
|
+
if (this.sessions.has(sessionId) || this.reservedSessionIds.has(sessionId)) continue
|
|
442
|
+
return { sessionId, token: this.reserveSessionId(sessionId) }
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
private reserveSessionId(sessionId: string): symbol {
|
|
447
|
+
if (this.stopped) {
|
|
448
|
+
throw new AcpError(ACP_ERROR_CODES.INVALID_REQUEST, 'The ACP connection has closed.')
|
|
449
|
+
}
|
|
450
|
+
if (!sessionId || this.sessions.has(sessionId) || this.reservedSessionIds.has(sessionId)) {
|
|
451
|
+
throw new AcpError(
|
|
452
|
+
ACP_ERROR_CODES.INVALID_PARAMS,
|
|
453
|
+
`Session id "${sessionId}" is already open or being loaded on this connection.`,
|
|
454
|
+
)
|
|
455
|
+
}
|
|
456
|
+
const token = Symbol(sessionId)
|
|
457
|
+
this.reservedSessionIds.set(sessionId, token)
|
|
458
|
+
return token
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
private releaseSessionId(sessionId: string, token: symbol): void {
|
|
462
|
+
if (this.reservedSessionIds.get(sessionId) === token) this.reservedSessionIds.delete(sessionId)
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
private publishSession(
|
|
466
|
+
sessionId: string,
|
|
467
|
+
token: symbol,
|
|
468
|
+
cwd: string,
|
|
469
|
+
history: readonly unknown[],
|
|
470
|
+
): void {
|
|
471
|
+
if (this.stopped || this.reservedSessionIds.get(sessionId) !== token) {
|
|
472
|
+
throw new AcpError(
|
|
473
|
+
ACP_ERROR_CODES.INVALID_REQUEST,
|
|
474
|
+
`Session "${sessionId}" could not be opened because the connection closed.`,
|
|
475
|
+
)
|
|
476
|
+
}
|
|
369
477
|
this.sessions.set(sessionId, {
|
|
370
|
-
cwd
|
|
478
|
+
cwd,
|
|
371
479
|
controller: new AbortController(),
|
|
480
|
+
promptInFlight: false,
|
|
372
481
|
// Fresh per session. See `Session.approveAll`.
|
|
373
482
|
approveAll: false,
|
|
374
|
-
history,
|
|
483
|
+
history: [...history],
|
|
375
484
|
})
|
|
376
|
-
|
|
485
|
+
this.releaseSessionId(sessionId, token)
|
|
377
486
|
}
|
|
378
487
|
|
|
379
488
|
private requireInitialized(): void {
|
|
@@ -399,26 +508,52 @@ export class ACPServer {
|
|
|
399
508
|
|
|
400
509
|
private async onSessionPrompt(params: AcpSessionPromptParams): Promise<AcpSessionPromptResult> {
|
|
401
510
|
const session = this.requireSession(params.sessionId)
|
|
511
|
+
if (session.promptInFlight) {
|
|
512
|
+
throw new AcpError(
|
|
513
|
+
ACP_ERROR_CODES.INVALID_REQUEST,
|
|
514
|
+
`Session "${params.sessionId}" already has a prompt in flight. Wait for it to settle or cancel it before sending another.`,
|
|
515
|
+
)
|
|
516
|
+
}
|
|
517
|
+
session.promptInFlight = true
|
|
402
518
|
// A fresh controller per turn: the previous one may already be aborted
|
|
403
519
|
// by a cancel of the turn before, and reusing it would start this one
|
|
404
520
|
// already cancelled.
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
const outcome = await this.options.gateway.prompt({
|
|
408
|
-
sessionId: params.sessionId,
|
|
409
|
-
prompt: params.prompt,
|
|
410
|
-
cwd: session.cwd,
|
|
411
|
-
signal: session.controller.signal,
|
|
412
|
-
onEvent: (event) => {
|
|
413
|
-
const update = toAcpSessionUpdate(event, this.options.presenter)
|
|
414
|
-
if (update) void this.notifyUpdate(params.sessionId, update)
|
|
415
|
-
},
|
|
416
|
-
ask: (request) => this.askPermission(session, request),
|
|
417
|
-
filesystem: this.clientFilesystem(),
|
|
418
|
-
history: session.history,
|
|
419
|
-
})
|
|
521
|
+
const controller = new AbortController()
|
|
522
|
+
session.controller = controller
|
|
420
523
|
|
|
421
|
-
|
|
524
|
+
try {
|
|
525
|
+
const outcome = await this.options.gateway.prompt({
|
|
526
|
+
sessionId: params.sessionId,
|
|
527
|
+
prompt: params.prompt,
|
|
528
|
+
cwd: session.cwd,
|
|
529
|
+
signal: controller.signal,
|
|
530
|
+
onEvent: (event) => {
|
|
531
|
+
const update = toAcpSessionUpdate(event, this.options.presenter)
|
|
532
|
+
if (update) void this.notifyUpdate(params.sessionId, update)
|
|
533
|
+
},
|
|
534
|
+
ask: (request) => this.askPermission(params.sessionId, session, request, controller.signal),
|
|
535
|
+
filesystem: this.clientFilesystem(),
|
|
536
|
+
history: session.history,
|
|
537
|
+
})
|
|
538
|
+
if (outcome.history !== undefined) {
|
|
539
|
+
if (!Array.isArray(outcome.history)) {
|
|
540
|
+
throw new AcpError(
|
|
541
|
+
ACP_ERROR_CODES.INTERNAL_ERROR,
|
|
542
|
+
`The gateway returned an invalid history for session "${params.sessionId}".`,
|
|
543
|
+
)
|
|
544
|
+
}
|
|
545
|
+
session.history = [...outcome.history]
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
return {
|
|
549
|
+
stopReason: controller.signal.aborted ? 'cancelled' : toAcpStopReason(outcome.stopReason),
|
|
550
|
+
}
|
|
551
|
+
} catch (error) {
|
|
552
|
+
if (controller.signal.aborted) return { stopReason: 'cancelled' }
|
|
553
|
+
throw error
|
|
554
|
+
} finally {
|
|
555
|
+
session.promptInFlight = false
|
|
556
|
+
}
|
|
422
557
|
}
|
|
423
558
|
|
|
424
559
|
private onSessionCancel(params: AcpSessionCancelParams): null {
|
|
@@ -433,9 +568,12 @@ export class ACPServer {
|
|
|
433
568
|
* everything for this session.
|
|
434
569
|
*/
|
|
435
570
|
private async askPermission(
|
|
571
|
+
sessionId: string,
|
|
436
572
|
session: Session,
|
|
437
573
|
request: AcpPermissionRequest,
|
|
574
|
+
signal: AbortSignal,
|
|
438
575
|
): Promise<AcpPermissionOutcome> {
|
|
576
|
+
signal.throwIfAborted()
|
|
439
577
|
// The latch, read from the SESSION. Checked here rather than in the
|
|
440
578
|
// gateway so no gateway can forget it.
|
|
441
579
|
if (session.approveAll) return { kind: 'approve_all' }
|
|
@@ -443,10 +581,14 @@ export class ACPServer {
|
|
|
443
581
|
const answer = await this.request<AcpRequestPermissionResult>(
|
|
444
582
|
ACP_CLIENT_REQUESTS.REQUEST_PERMISSION,
|
|
445
583
|
{
|
|
446
|
-
|
|
584
|
+
// The wire session owns this identity. A gateway is allowed to
|
|
585
|
+
// describe the tool batch, but it cannot relabel A's consent as B's.
|
|
586
|
+
sessionId,
|
|
447
587
|
toolCalls: request.toolCalls,
|
|
448
588
|
},
|
|
589
|
+
signal,
|
|
449
590
|
)
|
|
591
|
+
signal.throwIfAborted()
|
|
450
592
|
|
|
451
593
|
switch (answer?.outcome) {
|
|
452
594
|
case 'approve':
|
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { connectorToolError } from '../../../connector/tools/result.js'
|
|
2
2
|
import type { ConnectorManager } from '../../../manager/connector/lifecycle.js'
|
|
3
|
+
import { renderToolSchema } from '../../../registry/tool/schema.js'
|
|
3
4
|
import type {
|
|
4
5
|
ConnectorDefinition,
|
|
5
6
|
ConnectorExecuteResult,
|
|
6
7
|
ConnectorInstance,
|
|
7
8
|
ConnectorMethod,
|
|
9
|
+
ConnectorOperationOptions,
|
|
8
10
|
MCPConnectorBridgeToolMapping,
|
|
9
11
|
MCPJsonSchema,
|
|
10
12
|
MCPToolDefinition,
|
|
11
13
|
MCPToolResult,
|
|
14
|
+
MCPValueJsonSchema,
|
|
12
15
|
} from '../../../types/connector/index.js'
|
|
13
|
-
import type { ConnectorInstanceId } from '../../../types/ids/index.js'
|
|
16
|
+
import type { ConnectorId, ConnectorInstanceId } from '../../../types/ids/index.js'
|
|
14
17
|
import { SCOPE_ATTRIBUTE } from '../../../utils/log/types.js'
|
|
15
18
|
import { type Logger, resolveLogger } from '../../../utils/logger.js'
|
|
16
19
|
|
|
@@ -35,11 +38,11 @@ export class MCPConnectorBridge {
|
|
|
35
38
|
const tools: MCPToolDefinition[] = []
|
|
36
39
|
|
|
37
40
|
for (const instance of instances) {
|
|
38
|
-
const
|
|
39
|
-
|
|
41
|
+
const connectorId = this.manager.getInstanceConnectorId(instance.id)
|
|
42
|
+
const definition = this.manager.getInstanceDefinition(instance.id)
|
|
40
43
|
|
|
41
44
|
for (const method of definition.methods) {
|
|
42
|
-
const mcpTool = this.methodToMCPTool(instance, definition, method)
|
|
45
|
+
const mcpTool = this.methodToMCPTool(instance.id, connectorId, definition, method)
|
|
43
46
|
tools.push(mcpTool)
|
|
44
47
|
}
|
|
45
48
|
}
|
|
@@ -51,7 +54,11 @@ export class MCPConnectorBridge {
|
|
|
51
54
|
return tools
|
|
52
55
|
}
|
|
53
56
|
|
|
54
|
-
async callTool(
|
|
57
|
+
async callTool(
|
|
58
|
+
name: string,
|
|
59
|
+
args?: Record<string, unknown>,
|
|
60
|
+
options?: ConnectorOperationOptions,
|
|
61
|
+
): Promise<MCPToolResult> {
|
|
55
62
|
const mapping = this.mappings.find((m) => m.mcpToolName === name)
|
|
56
63
|
if (!mapping) {
|
|
57
64
|
return {
|
|
@@ -64,6 +71,7 @@ export class MCPConnectorBridge {
|
|
|
64
71
|
instanceId: mapping.instanceId,
|
|
65
72
|
method: mapping.methodName,
|
|
66
73
|
input: args ?? {},
|
|
74
|
+
signal: options?.signal,
|
|
67
75
|
})
|
|
68
76
|
|
|
69
77
|
return this.connectorResultToMCPResult(result)
|
|
@@ -74,16 +82,17 @@ export class MCPConnectorBridge {
|
|
|
74
82
|
}
|
|
75
83
|
|
|
76
84
|
private methodToMCPTool(
|
|
77
|
-
|
|
85
|
+
instanceId: ConnectorInstanceId,
|
|
86
|
+
connectorId: ConnectorId,
|
|
78
87
|
definition: ConnectorDefinition,
|
|
79
88
|
method: ConnectorMethod,
|
|
80
89
|
): MCPToolDefinition {
|
|
81
|
-
const mcpToolName = `${this.prefix}_${
|
|
90
|
+
const mcpToolName = `${this.prefix}_${connectorId}_${method.name}`
|
|
82
91
|
|
|
83
92
|
this.mappings.push({
|
|
84
93
|
mcpToolName,
|
|
85
|
-
connectorId
|
|
86
|
-
instanceId
|
|
94
|
+
connectorId,
|
|
95
|
+
instanceId,
|
|
87
96
|
methodName: method.name,
|
|
88
97
|
})
|
|
89
98
|
|
|
@@ -93,19 +102,18 @@ export class MCPConnectorBridge {
|
|
|
93
102
|
name: mcpToolName,
|
|
94
103
|
description: `[${definition.name}] ${method.description}`,
|
|
95
104
|
inputSchema,
|
|
105
|
+
...(method.outputSchema ? { outputSchema: this.zodToMCPOutputSchema(method) } : {}),
|
|
96
106
|
}
|
|
97
107
|
}
|
|
98
108
|
|
|
99
109
|
private zodToMCPSchema(method: ConnectorMethod): MCPJsonSchema {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
return { type: 'object' }
|
|
108
|
-
}
|
|
110
|
+
return renderToolSchema(method.inputSchema) as MCPJsonSchema
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
private zodToMCPOutputSchema(method: ConnectorMethod): MCPValueJsonSchema {
|
|
114
|
+
return renderToolSchema(
|
|
115
|
+
method.outputSchema as NonNullable<ConnectorMethod['outputSchema']>,
|
|
116
|
+
) as MCPValueJsonSchema
|
|
109
117
|
}
|
|
110
118
|
|
|
111
119
|
private connectorResultToMCPResult(result: ConnectorExecuteResult): MCPToolResult {
|
|
@@ -119,7 +127,7 @@ export class MCPConnectorBridge {
|
|
|
119
127
|
}
|
|
120
128
|
|
|
121
129
|
return {
|
|
122
|
-
content: [{ type: 'text', text: result
|
|
130
|
+
content: [{ type: 'text', text: connectorToolError(result) }],
|
|
123
131
|
isError: true,
|
|
124
132
|
}
|
|
125
133
|
}
|
package/src/bridge/sse/mapper.ts
CHANGED
|
@@ -383,6 +383,9 @@ const MAPPING: {
|
|
|
383
383
|
// from the RunEvent stream directly; promoting it to the SSE contract
|
|
384
384
|
// needs a StreamEventType addition first.
|
|
385
385
|
capability_warning: null,
|
|
386
|
+
// Counts describing a local storage repair are likewise a RunEvent host
|
|
387
|
+
// diagnostic, not yet part of the public SSE wire vocabulary.
|
|
388
|
+
message_history_repaired: null,
|
|
386
389
|
|
|
387
390
|
agent_pending: {
|
|
388
391
|
wire: 'agent.pending',
|