@namzu/sdk 30.1.0 → 31.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 +576 -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 +7 -0
- package/dist/provider/collect-chat-completion.d.ts.map +1 -1
- package/dist/provider/collect-chat-completion.js +35 -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 +75 -10
- 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/interface.d.ts +18 -7
- package/dist/types/provider/interface.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/pricing/rates.source.json +315 -204
- package/src/provider/collect-chat-completion.ts +36 -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 +143 -9
- package/src/types/plugin/index.ts +7 -5
- package/src/types/provider/chat.ts +35 -4
- package/src/types/provider/interface.ts +22 -7
- 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
|
@@ -3,9 +3,17 @@ import type {
|
|
|
3
3
|
MCPJsonRpcMessage,
|
|
4
4
|
MCPStdioTransportConfig,
|
|
5
5
|
MCPTransport,
|
|
6
|
+
MCPTransportSendOptions,
|
|
6
7
|
} from '../../types/connector/index.js'
|
|
7
8
|
import { SCOPE_ATTRIBUTE } from '../../utils/log/types.js'
|
|
8
9
|
import { type Logger, resolveLogger } from '../../utils/logger.js'
|
|
10
|
+
import {
|
|
11
|
+
WINDOWS_CORE_ENV_KEYS,
|
|
12
|
+
applyEnvironmentOverrides,
|
|
13
|
+
pickEnvironmentEntries,
|
|
14
|
+
readEnvironmentEntry,
|
|
15
|
+
setEnvironmentEntry,
|
|
16
|
+
} from '../../utils/process-environment.js'
|
|
9
17
|
|
|
10
18
|
/**
|
|
11
19
|
* How long a child gets to honour SIGTERM before SIGKILL. Two seconds is
|
|
@@ -50,45 +58,11 @@ const BASE_ENV_KEYS: readonly string[] = [
|
|
|
50
58
|
'TMPDIR',
|
|
51
59
|
'USER',
|
|
52
60
|
'LOGNAME',
|
|
53
|
-
// Windows. `SystemRoot` and `
|
|
54
|
-
// child cannot resolve system DLLs or the command interpreter.
|
|
55
|
-
|
|
56
|
-
'SystemRoot',
|
|
57
|
-
'SystemDrive',
|
|
58
|
-
'ComSpec',
|
|
59
|
-
'WINDIR',
|
|
60
|
-
'TEMP',
|
|
61
|
-
'TMP',
|
|
62
|
-
'USERPROFILE',
|
|
63
|
-
'HOMEDRIVE',
|
|
64
|
-
'HOMEPATH',
|
|
65
|
-
'APPDATA',
|
|
66
|
-
'LOCALAPPDATA',
|
|
67
|
-
'PROGRAMDATA',
|
|
68
|
-
'PROGRAMFILES',
|
|
69
|
-
'NUMBER_OF_PROCESSORS',
|
|
70
|
-
'PROCESSOR_ARCHITECTURE',
|
|
61
|
+
// Windows. `SystemRoot`, `ComSpec` and `WINDIR` are load-bearing: without
|
|
62
|
+
// them a child cannot resolve system DLLs or the command interpreter.
|
|
63
|
+
...WINDOWS_CORE_ENV_KEYS,
|
|
71
64
|
]
|
|
72
65
|
|
|
73
|
-
/**
|
|
74
|
-
* Read one variable from the parent, honouring the platform's own casing rules.
|
|
75
|
-
*
|
|
76
|
-
* Node exposes `process.env` on Windows through a case-insensitive proxy, so a
|
|
77
|
-
* direct lookup already works there — but the KEY this returns has to be the
|
|
78
|
-
* one the parent actually uses, or a child comparing key names sees a spelling
|
|
79
|
-
* the host never set.
|
|
80
|
-
*/
|
|
81
|
-
function readParentVar(source: NodeJS.ProcessEnv, name: string): [string, string] | undefined {
|
|
82
|
-
const direct = source[name]
|
|
83
|
-
if (direct !== undefined) return [name, direct]
|
|
84
|
-
if (process.platform !== 'win32') return undefined
|
|
85
|
-
const lowered = name.toLowerCase()
|
|
86
|
-
for (const [key, value] of Object.entries(source)) {
|
|
87
|
-
if (key.toLowerCase() === lowered && value !== undefined) return [key, value]
|
|
88
|
-
}
|
|
89
|
-
return undefined
|
|
90
|
-
}
|
|
91
|
-
|
|
92
66
|
/**
|
|
93
67
|
* What the child is handed: plumbing, then the named inheritances, then the
|
|
94
68
|
* literal values.
|
|
@@ -103,19 +77,15 @@ export function buildChildEnv(
|
|
|
103
77
|
config: Pick<MCPStdioTransportConfig, 'env' | 'inheritEnv'>,
|
|
104
78
|
source: NodeJS.ProcessEnv = process.env,
|
|
105
79
|
): Record<string, string> {
|
|
106
|
-
const env
|
|
107
|
-
for (const name of BASE_ENV_KEYS) {
|
|
108
|
-
const found = readParentVar(source, name)
|
|
109
|
-
if (found) env[found[0]] = found[1]
|
|
110
|
-
}
|
|
80
|
+
const env = pickEnvironmentEntries(BASE_ENV_KEYS, source)
|
|
111
81
|
for (const name of config.inheritEnv ?? []) {
|
|
112
|
-
const found =
|
|
82
|
+
const found = readEnvironmentEntry(source, name)
|
|
113
83
|
// A named variable the parent does not hold is simply absent. Refusing
|
|
114
84
|
// the spawn would turn an optional credential into a startup failure,
|
|
115
85
|
// and inventing an empty string would tell the server it has one.
|
|
116
|
-
if (found) env
|
|
86
|
+
if (found) setEnvironmentEntry(env, found[0], found[1])
|
|
117
87
|
}
|
|
118
|
-
|
|
88
|
+
applyEnvironmentOverrides(env, config.env)
|
|
119
89
|
return env
|
|
120
90
|
}
|
|
121
91
|
|
|
@@ -244,10 +214,15 @@ export class StdioTransport implements MCPTransport {
|
|
|
244
214
|
this.errorHandlers = []
|
|
245
215
|
}
|
|
246
216
|
|
|
247
|
-
async send(message: MCPJsonRpcMessage): Promise<void> {
|
|
217
|
+
async send(message: MCPJsonRpcMessage, options?: MCPTransportSendOptions): Promise<void> {
|
|
218
|
+
options?.signal?.throwIfAborted()
|
|
248
219
|
if (!this.process?.stdin?.writable) {
|
|
249
220
|
throw new Error('StdioTransport: not connected or stdin not writable')
|
|
250
221
|
}
|
|
222
|
+
// No await lies between the checks and write, so a standard AbortSignal
|
|
223
|
+
// cannot change in this interval. Once written, MCP protocol
|
|
224
|
+
// `notifications/cancelled` is the cooperative cancellation mechanism.
|
|
225
|
+
options?.signal?.throwIfAborted()
|
|
251
226
|
const data = `${JSON.stringify(message)}\n`
|
|
252
227
|
this.process.stdin.write(data)
|
|
253
228
|
}
|
|
@@ -2,9 +2,11 @@ import type {
|
|
|
2
2
|
MCPJsonRpcMessage,
|
|
3
3
|
MCPStreamableHttpTransportConfig,
|
|
4
4
|
MCPTransport,
|
|
5
|
+
MCPTransportSendOptions,
|
|
5
6
|
} from '../../types/connector/index.js'
|
|
6
7
|
import { SCOPE_ATTRIBUTE } from '../../utils/log/types.js'
|
|
7
8
|
import { type Logger, resolveLogger } from '../../utils/logger.js'
|
|
9
|
+
import { ConnectorHttpOperation, validateConnectorTimeoutMs } from '../http-operation.js'
|
|
8
10
|
|
|
9
11
|
const DEFAULT_TIMEOUT_MS = 30_000
|
|
10
12
|
|
|
@@ -14,17 +16,25 @@ export class StreamableHttpTransport implements MCPTransport {
|
|
|
14
16
|
private errorHandlers: Array<(error: Error) => void> = []
|
|
15
17
|
private connected = false
|
|
16
18
|
private sessionId: string | null = null
|
|
19
|
+
private generation = 0
|
|
20
|
+
private activeSends = new Set<AbortController>()
|
|
17
21
|
private log: Logger
|
|
22
|
+
private readonly timeoutMs: number
|
|
18
23
|
|
|
19
24
|
constructor(
|
|
20
25
|
private readonly config: MCPStreamableHttpTransportConfig,
|
|
21
26
|
log?: Logger,
|
|
22
27
|
) {
|
|
28
|
+
this.timeoutMs = validateConnectorTimeoutMs(
|
|
29
|
+
config.timeoutMs ?? DEFAULT_TIMEOUT_MS,
|
|
30
|
+
'StreamableHttpTransport timeoutMs',
|
|
31
|
+
)
|
|
23
32
|
this.log = resolveLogger(log).child({ [SCOPE_ATTRIBUTE]: 'connector/mcp/streamable-http' })
|
|
24
33
|
}
|
|
25
34
|
|
|
26
35
|
async connect(): Promise<void> {
|
|
27
36
|
if (this.connected) return
|
|
37
|
+
this.generation++
|
|
28
38
|
this.connected = true
|
|
29
39
|
this.log.info('StreamableHttpTransport connected', { 'namzu.mcp.url': this.config.url })
|
|
30
40
|
}
|
|
@@ -34,9 +44,15 @@ export class StreamableHttpTransport implements MCPTransport {
|
|
|
34
44
|
// Never connected, or already closed: nothing will notify, so this is
|
|
35
45
|
// the only chance to drop what `connect()` registered before it failed.
|
|
36
46
|
this.clearHandlers()
|
|
47
|
+
this.sessionId = null
|
|
37
48
|
return
|
|
38
49
|
}
|
|
39
50
|
this.connected = false
|
|
51
|
+
this.generation++
|
|
52
|
+
this.sessionId = null
|
|
53
|
+
const reason = new Error('StreamableHttpTransport closed')
|
|
54
|
+
for (const controller of this.activeSends) controller.abort(reason)
|
|
55
|
+
this.activeSends.clear()
|
|
40
56
|
for (const handler of this.closeHandlers) handler()
|
|
41
57
|
// After the notification, never before it.
|
|
42
58
|
this.clearHandlers()
|
|
@@ -49,38 +65,45 @@ export class StreamableHttpTransport implements MCPTransport {
|
|
|
49
65
|
this.errorHandlers = []
|
|
50
66
|
}
|
|
51
67
|
|
|
52
|
-
async send(message: MCPJsonRpcMessage): Promise<void> {
|
|
68
|
+
async send(message: MCPJsonRpcMessage, options?: MCPTransportSendOptions): Promise<void> {
|
|
53
69
|
if (!this.connected) {
|
|
54
70
|
throw new Error('StreamableHttpTransport: not connected')
|
|
55
71
|
}
|
|
56
72
|
|
|
57
|
-
const
|
|
58
|
-
const
|
|
59
|
-
|
|
60
|
-
this.
|
|
73
|
+
const owned = this.beginSend(options?.signal)
|
|
74
|
+
const operation = new ConnectorHttpOperation(
|
|
75
|
+
owned.controller.signal,
|
|
76
|
+
this.timeoutMs,
|
|
77
|
+
'Streamable HTTP MCP send',
|
|
61
78
|
)
|
|
62
79
|
|
|
63
80
|
try {
|
|
64
|
-
const response = await
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
81
|
+
const response = await operation.run(() =>
|
|
82
|
+
fetch(this.config.url, {
|
|
83
|
+
method: 'POST',
|
|
84
|
+
headers: this.buildHeaders(),
|
|
85
|
+
body: JSON.stringify(message),
|
|
86
|
+
signal: operation.signal,
|
|
87
|
+
}),
|
|
88
|
+
)
|
|
72
89
|
|
|
73
90
|
if (!response.ok) {
|
|
74
91
|
throw new Error(`StreamableHttpTransport: HTTP ${response.status}: ${response.statusText}`)
|
|
75
92
|
}
|
|
93
|
+
this.assertCurrent(owned.generation, operation)
|
|
94
|
+
// MCP assigns the session during initialize. Letting an ordinary or
|
|
95
|
+
// failed per-request response rotate it makes one bad cancellation
|
|
96
|
+
// POST capable of poisoning every later request on this connection.
|
|
97
|
+
if (message.method === 'initialize') this.captureSessionId(response)
|
|
76
98
|
|
|
77
|
-
await this.dispatchResponseMessages(response)
|
|
78
|
-
} catch (err) {
|
|
79
|
-
const error = err instanceof Error ? err : new Error(String(err))
|
|
80
|
-
for (const handler of this.errorHandlers) handler(error)
|
|
81
|
-
throw error
|
|
99
|
+
await this.dispatchResponseMessages(response, operation, owned.generation)
|
|
82
100
|
} finally {
|
|
83
|
-
|
|
101
|
+
// A streamable HTTP send owns one POST; its rejection is delivered to
|
|
102
|
+
// that caller. It is not evidence that the logical MCP session died.
|
|
103
|
+
// Raising onError here would let A's failed best-effort cancellation
|
|
104
|
+
// reject every unrelated pending request B..N on the shared client.
|
|
105
|
+
operation.close()
|
|
106
|
+
owned.dispose()
|
|
84
107
|
}
|
|
85
108
|
}
|
|
86
109
|
|
|
@@ -122,8 +145,45 @@ export class StreamableHttpTransport implements MCPTransport {
|
|
|
122
145
|
}
|
|
123
146
|
}
|
|
124
147
|
|
|
125
|
-
private
|
|
126
|
-
|
|
148
|
+
private beginSend(signal: AbortSignal | undefined): {
|
|
149
|
+
readonly controller: AbortController
|
|
150
|
+
readonly generation: number
|
|
151
|
+
dispose(): void
|
|
152
|
+
} {
|
|
153
|
+
signal?.throwIfAborted()
|
|
154
|
+
const controller = new AbortController()
|
|
155
|
+
const onAbort = (): void => controller.abort(signal?.reason)
|
|
156
|
+
signal?.addEventListener('abort', onAbort, { once: true })
|
|
157
|
+
if (signal?.aborted) onAbort()
|
|
158
|
+
if (controller.signal.aborted) {
|
|
159
|
+
signal?.removeEventListener('abort', onAbort)
|
|
160
|
+
controller.signal.throwIfAborted()
|
|
161
|
+
}
|
|
162
|
+
this.activeSends.add(controller)
|
|
163
|
+
return {
|
|
164
|
+
controller,
|
|
165
|
+
generation: this.generation,
|
|
166
|
+
dispose: () => {
|
|
167
|
+
signal?.removeEventListener('abort', onAbort)
|
|
168
|
+
this.activeSends.delete(controller)
|
|
169
|
+
},
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
private assertCurrent(generation: number, operation: ConnectorHttpOperation): void {
|
|
174
|
+
operation.throwIfStopped()
|
|
175
|
+
if (!this.connected || generation !== this.generation) {
|
|
176
|
+
throw new Error('Streamable HTTP MCP response belongs to a closed connection generation')
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
private async dispatchResponseMessages(
|
|
181
|
+
response: Response,
|
|
182
|
+
operation: ConnectorHttpOperation,
|
|
183
|
+
generation: number,
|
|
184
|
+
): Promise<void> {
|
|
185
|
+
const text = await operation.run(() => response.text())
|
|
186
|
+
this.assertCurrent(generation, operation)
|
|
127
187
|
if (text.trim().length === 0) return
|
|
128
188
|
|
|
129
189
|
const contentType = response.headers.get('content-type') ?? ''
|
|
@@ -132,7 +192,11 @@ export class StreamableHttpTransport implements MCPTransport {
|
|
|
132
192
|
: parseJsonMessages(text)
|
|
133
193
|
|
|
134
194
|
for (const message of messages) {
|
|
135
|
-
|
|
195
|
+
this.assertCurrent(generation, operation)
|
|
196
|
+
for (const handler of [...this.messageHandlers]) {
|
|
197
|
+
this.assertCurrent(generation, operation)
|
|
198
|
+
handler(message)
|
|
199
|
+
}
|
|
136
200
|
}
|
|
137
201
|
}
|
|
138
202
|
}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { z } from 'zod'
|
|
2
2
|
import type { ConnectorManager } from '../../manager/connector/lifecycle.js'
|
|
3
|
+
import { renderToolSchema } from '../../registry/tool/schema.js'
|
|
3
4
|
import type { ConnectorMethod } from '../../types/connector/index.js'
|
|
4
5
|
import type { ConnectorId, ConnectorInstanceId } from '../../types/ids/index.js'
|
|
5
6
|
import type { ToolContext, ToolDefinition, ToolResult } from '../../types/tool/index.js'
|
|
6
7
|
import { parseConnectorInstanceId } from '../../utils/id.js'
|
|
8
|
+
import { connectorToolError } from './result.js'
|
|
7
9
|
|
|
8
10
|
export function connectorMethodToTool(
|
|
9
11
|
connectorId: ConnectorId,
|
|
@@ -16,25 +18,30 @@ export function connectorMethodToTool(
|
|
|
16
18
|
return {
|
|
17
19
|
name: toolName,
|
|
18
20
|
description: `[${connectorId}] ${method.description}`,
|
|
19
|
-
|
|
21
|
+
// ConnectorManager owns method parsing. A second Zod parse here would
|
|
22
|
+
// re-run transforms before the manager sees the value.
|
|
23
|
+
inputSchema: z.unknown(),
|
|
24
|
+
modelInputSchema: renderToolSchema(method.inputSchema),
|
|
25
|
+
...(method.outputSchema ? { outputSchema: renderToolSchema(method.outputSchema) } : {}),
|
|
20
26
|
category: 'network',
|
|
21
27
|
permissions: ['network_access'],
|
|
22
28
|
isReadOnly: () => false,
|
|
23
29
|
isDestructive: () => false,
|
|
24
30
|
isConcurrencySafe: () => true,
|
|
25
31
|
|
|
26
|
-
async execute(input: unknown,
|
|
32
|
+
async execute(input: unknown, context: ToolContext): Promise<ToolResult> {
|
|
27
33
|
const result = await manager.execute({
|
|
28
34
|
instanceId,
|
|
29
35
|
method: method.name,
|
|
30
36
|
input,
|
|
37
|
+
signal: context.abortSignal,
|
|
31
38
|
})
|
|
32
39
|
|
|
33
40
|
return {
|
|
34
41
|
success: result.success,
|
|
35
42
|
output: result.success ? JSON.stringify(result.output, null, 2) : '',
|
|
36
43
|
data: result.output,
|
|
37
|
-
error: result.
|
|
44
|
+
error: result.success ? undefined : connectorToolError(result),
|
|
38
45
|
}
|
|
39
46
|
},
|
|
40
47
|
}
|
|
@@ -49,9 +56,10 @@ export function connectorInstanceToTools(
|
|
|
49
56
|
throw new Error(`Connector instance not found: "${instanceId}"`)
|
|
50
57
|
}
|
|
51
58
|
|
|
52
|
-
const
|
|
59
|
+
const connectorId = manager.getInstanceConnectorId(instanceId)
|
|
60
|
+
const definition = manager.getInstanceDefinition(instanceId)
|
|
53
61
|
return definition.methods.map((method) =>
|
|
54
|
-
connectorMethodToTool(
|
|
62
|
+
connectorMethodToTool(connectorId, instanceId, method, manager),
|
|
55
63
|
)
|
|
56
64
|
}
|
|
57
65
|
|
|
@@ -87,7 +95,7 @@ export function createConnectorRouterTool(
|
|
|
87
95
|
isDestructive: () => false,
|
|
88
96
|
isConcurrencySafe: () => true,
|
|
89
97
|
|
|
90
|
-
async execute(input: ConnectorRouterInput,
|
|
98
|
+
async execute(input: ConnectorRouterInput, context: ToolContext): Promise<ToolResult> {
|
|
91
99
|
const instanceId = parseConnectorInstanceId(String(input.instanceId))
|
|
92
100
|
const instance = manager.getInstance(instanceId)
|
|
93
101
|
if (!instance) {
|
|
@@ -98,11 +106,12 @@ export function createConnectorRouterTool(
|
|
|
98
106
|
}
|
|
99
107
|
}
|
|
100
108
|
|
|
101
|
-
|
|
109
|
+
const connectorId = manager.getInstanceConnectorId(instanceId)
|
|
110
|
+
if (connectorId !== input.connectorId) {
|
|
102
111
|
return {
|
|
103
112
|
success: false,
|
|
104
113
|
output: '',
|
|
105
|
-
error: `Instance "${input.instanceId}" belongs to connector "${
|
|
114
|
+
error: `Instance "${input.instanceId}" belongs to connector "${connectorId}", not "${input.connectorId}"`,
|
|
106
115
|
}
|
|
107
116
|
}
|
|
108
117
|
|
|
@@ -110,13 +119,14 @@ export function createConnectorRouterTool(
|
|
|
110
119
|
instanceId,
|
|
111
120
|
method: input.method,
|
|
112
121
|
input: input.input,
|
|
122
|
+
signal: context.abortSignal,
|
|
113
123
|
})
|
|
114
124
|
|
|
115
125
|
return {
|
|
116
126
|
success: result.success,
|
|
117
127
|
output: result.success ? JSON.stringify(result.output, null, 2) : '',
|
|
118
128
|
data: result.output,
|
|
119
|
-
error: result.
|
|
129
|
+
error: result.success ? undefined : connectorToolError(result),
|
|
120
130
|
}
|
|
121
131
|
},
|
|
122
132
|
}
|
|
@@ -130,11 +140,10 @@ function buildRouterDescription(manager: ConnectorManager): string {
|
|
|
130
140
|
|
|
131
141
|
const parts = ['Execute a method on a connected connector instance. Available:']
|
|
132
142
|
for (const inst of instances) {
|
|
133
|
-
const
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
}
|
|
143
|
+
const connectorId = manager.getInstanceConnectorId(inst.id)
|
|
144
|
+
const definition = manager.getInstanceDefinition(inst.id)
|
|
145
|
+
const methods = definition.methods.map((method) => method.name).join(', ')
|
|
146
|
+
parts.push(`- ${connectorId} (${inst.id}): ${methods}`)
|
|
138
147
|
}
|
|
139
148
|
return parts.join('\n')
|
|
140
149
|
}
|
|
@@ -3,6 +3,7 @@ import type { ConnectorManager } from '../../manager/connector/lifecycle.js'
|
|
|
3
3
|
import { defineTool } from '../../tools/defineTool.js'
|
|
4
4
|
import type { ToolDefinition } from '../../types/tool/index.js'
|
|
5
5
|
import { parseConnectorInstanceId } from '../../utils/id.js'
|
|
6
|
+
import { connectorToolError } from './result.js'
|
|
6
7
|
|
|
7
8
|
export interface ConnectorToolConfig {
|
|
8
9
|
manager: ConnectorManager
|
|
@@ -28,7 +29,7 @@ export function createConnectorExecuteTool(config: ConnectorToolConfig): ToolDef
|
|
|
28
29
|
destructive: false,
|
|
29
30
|
concurrencySafe: true,
|
|
30
31
|
|
|
31
|
-
async execute(input) {
|
|
32
|
+
async execute(input, context) {
|
|
32
33
|
const instanceId = parseConnectorInstanceId(String(input.instance_id))
|
|
33
34
|
const instance = config.manager.getInstance(instanceId)
|
|
34
35
|
|
|
@@ -52,13 +53,15 @@ export function createConnectorExecuteTool(config: ConnectorToolConfig): ToolDef
|
|
|
52
53
|
instanceId,
|
|
53
54
|
method: input.method,
|
|
54
55
|
input: input.input,
|
|
56
|
+
signal: context.abortSignal,
|
|
55
57
|
})
|
|
56
58
|
|
|
57
59
|
if (!result.success) {
|
|
58
60
|
return {
|
|
59
61
|
success: false,
|
|
60
62
|
output: '',
|
|
61
|
-
error: result
|
|
63
|
+
error: connectorToolError(result),
|
|
64
|
+
data: { output: result.output, metadata: result.metadata },
|
|
62
65
|
}
|
|
63
66
|
}
|
|
64
67
|
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { ConnectorExecuteResult } from '../../types/connector/index.js'
|
|
2
|
+
|
|
3
|
+
/** Keep remote side-effect uncertainty in the text the model actually sees. */
|
|
4
|
+
export function connectorToolError(result: ConnectorExecuteResult): string {
|
|
5
|
+
const base = result.error ?? 'Connector execution failed'
|
|
6
|
+
const normalized = base.toLowerCase()
|
|
7
|
+
const outcome = result.metadata?.remoteOutcome
|
|
8
|
+
const retrySafety = result.metadata?.retrySafety
|
|
9
|
+
if (outcome === 'not_started' && !normalized.includes('no remote request was started')) {
|
|
10
|
+
return `${base} No remote request was started; retry is safe.`
|
|
11
|
+
}
|
|
12
|
+
if (outcome === 'unknown' && !normalized.includes('remote outcome is unknown')) {
|
|
13
|
+
return retrySafety === 'safe'
|
|
14
|
+
? `${base} The remote outcome is unknown, but retry is safe for this operation.`
|
|
15
|
+
: `${base} The remote outcome is unknown; do not automatically retry.`
|
|
16
|
+
}
|
|
17
|
+
if (outcome === 'response_received' && !normalized.includes('response')) {
|
|
18
|
+
return `${base} A remote response was received; use its status before deciding whether to retry.`
|
|
19
|
+
}
|
|
20
|
+
return base
|
|
21
|
+
}
|