@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamable-http.js","sourceRoot":"","sources":["../../../src/connector/mcp/streamable-http.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"streamable-http.js","sourceRoot":"","sources":["../../../src/connector/mcp/streamable-http.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,14 +13,14 @@ declare const ConnectorRouterInputSchema: z.ZodObject<{
|
|
|
13
13
|
input: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
14
14
|
}, "strip", z.ZodTypeAny, {
|
|
15
15
|
input: Record<string, unknown>;
|
|
16
|
+
instanceId: string;
|
|
16
17
|
method: string;
|
|
17
18
|
connectorId: string;
|
|
18
|
-
instanceId: string;
|
|
19
19
|
}, {
|
|
20
20
|
input: Record<string, unknown>;
|
|
21
|
+
instanceId: string;
|
|
21
22
|
method: string;
|
|
22
23
|
connectorId: string;
|
|
23
|
-
instanceId: string;
|
|
24
24
|
}>;
|
|
25
25
|
export type ConnectorRouterInput = z.infer<typeof ConnectorRouterInputSchema>;
|
|
26
26
|
export declare function createConnectorRouterTool(manager: ConnectorManager): ToolDefinition<ConnectorRouterInput>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/connector/tools/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/connector/tools/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAE5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAA;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAChF,OAAO,KAAK,EAAe,cAAc,EAAc,MAAM,2BAA2B,CAAA;AAIxF,wBAAgB,qBAAqB,CACpC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,mBAAmB,EAC/B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,gBAAgB,GACvB,cAAc,CAiChB;AAED,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,mBAAmB,EAC/B,OAAO,EAAE,gBAAgB,GACvB,cAAc,EAAE,CAWlB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,gBAAgB,GAAG,cAAc,EAAE,CAM7E;AAED,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;EAO9B,CAAA;AAEF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAE7E,wBAAgB,yBAAyB,CACxC,OAAO,EAAE,gBAAgB,GACvB,cAAc,CAAC,oBAAoB,CAAC,CA8CtC"}
|
|
@@ -1,27 +1,34 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { renderToolSchema } from '../../registry/tool/schema.js';
|
|
2
3
|
import { parseConnectorInstanceId } from '../../utils/id.js';
|
|
4
|
+
import { connectorToolError } from './result.js';
|
|
3
5
|
export function connectorMethodToTool(connectorId, instanceId, method, manager) {
|
|
4
6
|
const toolName = `${connectorId}_${method.name}`;
|
|
5
7
|
return {
|
|
6
8
|
name: toolName,
|
|
7
9
|
description: `[${connectorId}] ${method.description}`,
|
|
8
|
-
|
|
10
|
+
// ConnectorManager owns method parsing. A second Zod parse here would
|
|
11
|
+
// re-run transforms before the manager sees the value.
|
|
12
|
+
inputSchema: z.unknown(),
|
|
13
|
+
modelInputSchema: renderToolSchema(method.inputSchema),
|
|
14
|
+
...(method.outputSchema ? { outputSchema: renderToolSchema(method.outputSchema) } : {}),
|
|
9
15
|
category: 'network',
|
|
10
16
|
permissions: ['network_access'],
|
|
11
17
|
isReadOnly: () => false,
|
|
12
18
|
isDestructive: () => false,
|
|
13
19
|
isConcurrencySafe: () => true,
|
|
14
|
-
async execute(input,
|
|
20
|
+
async execute(input, context) {
|
|
15
21
|
const result = await manager.execute({
|
|
16
22
|
instanceId,
|
|
17
23
|
method: method.name,
|
|
18
24
|
input,
|
|
25
|
+
signal: context.abortSignal,
|
|
19
26
|
});
|
|
20
27
|
return {
|
|
21
28
|
success: result.success,
|
|
22
29
|
output: result.success ? JSON.stringify(result.output, null, 2) : '',
|
|
23
30
|
data: result.output,
|
|
24
|
-
error: result.
|
|
31
|
+
error: result.success ? undefined : connectorToolError(result),
|
|
25
32
|
};
|
|
26
33
|
},
|
|
27
34
|
};
|
|
@@ -31,8 +38,9 @@ export function connectorInstanceToTools(instanceId, manager) {
|
|
|
31
38
|
if (!instance) {
|
|
32
39
|
throw new Error(`Connector instance not found: "${instanceId}"`);
|
|
33
40
|
}
|
|
34
|
-
const
|
|
35
|
-
|
|
41
|
+
const connectorId = manager.getInstanceConnectorId(instanceId);
|
|
42
|
+
const definition = manager.getInstanceDefinition(instanceId);
|
|
43
|
+
return definition.methods.map((method) => connectorMethodToTool(connectorId, instanceId, method, manager));
|
|
36
44
|
}
|
|
37
45
|
export function allConnectorTools(manager) {
|
|
38
46
|
const tools = [];
|
|
@@ -59,7 +67,7 @@ export function createConnectorRouterTool(manager) {
|
|
|
59
67
|
isReadOnly: () => false,
|
|
60
68
|
isDestructive: () => false,
|
|
61
69
|
isConcurrencySafe: () => true,
|
|
62
|
-
async execute(input,
|
|
70
|
+
async execute(input, context) {
|
|
63
71
|
const instanceId = parseConnectorInstanceId(String(input.instanceId));
|
|
64
72
|
const instance = manager.getInstance(instanceId);
|
|
65
73
|
if (!instance) {
|
|
@@ -69,23 +77,25 @@ export function createConnectorRouterTool(manager) {
|
|
|
69
77
|
error: `Connector instance not found: "${input.instanceId}"`,
|
|
70
78
|
};
|
|
71
79
|
}
|
|
72
|
-
|
|
80
|
+
const connectorId = manager.getInstanceConnectorId(instanceId);
|
|
81
|
+
if (connectorId !== input.connectorId) {
|
|
73
82
|
return {
|
|
74
83
|
success: false,
|
|
75
84
|
output: '',
|
|
76
|
-
error: `Instance "${input.instanceId}" belongs to connector "${
|
|
85
|
+
error: `Instance "${input.instanceId}" belongs to connector "${connectorId}", not "${input.connectorId}"`,
|
|
77
86
|
};
|
|
78
87
|
}
|
|
79
88
|
const result = await manager.execute({
|
|
80
89
|
instanceId,
|
|
81
90
|
method: input.method,
|
|
82
91
|
input: input.input,
|
|
92
|
+
signal: context.abortSignal,
|
|
83
93
|
});
|
|
84
94
|
return {
|
|
85
95
|
success: result.success,
|
|
86
96
|
output: result.success ? JSON.stringify(result.output, null, 2) : '',
|
|
87
97
|
data: result.output,
|
|
88
|
-
error: result.
|
|
98
|
+
error: result.success ? undefined : connectorToolError(result),
|
|
89
99
|
};
|
|
90
100
|
},
|
|
91
101
|
};
|
|
@@ -97,11 +107,10 @@ function buildRouterDescription(manager) {
|
|
|
97
107
|
}
|
|
98
108
|
const parts = ['Execute a method on a connected connector instance. Available:'];
|
|
99
109
|
for (const inst of instances) {
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
110
|
+
const connectorId = manager.getInstanceConnectorId(inst.id);
|
|
111
|
+
const definition = manager.getInstanceDefinition(inst.id);
|
|
112
|
+
const methods = definition.methods.map((method) => method.name).join(', ');
|
|
113
|
+
parts.push(`- ${connectorId} (${inst.id}): ${methods}`);
|
|
105
114
|
}
|
|
106
115
|
return parts.join('\n');
|
|
107
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/connector/tools/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/connector/tools/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/connector/tools/definitions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../../src/connector/tools/definitions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AAE5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAI/D,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,gBAAgB,CAAA;CACzB;AAUD,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CA6DtF;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAuCnF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,EAAE,CAElF"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { defineTool } from '../../tools/defineTool.js';
|
|
3
3
|
import { parseConnectorInstanceId } from '../../utils/id.js';
|
|
4
|
+
import { connectorToolError } from './result.js';
|
|
4
5
|
const connectorExecuteInputSchema = z.object({
|
|
5
6
|
instance_id: z.string().describe('The connector instance ID to execute against'),
|
|
6
7
|
method: z.string().describe('The connector method to invoke (e.g. "request", "send")'),
|
|
@@ -17,7 +18,7 @@ export function createConnectorExecuteTool(config) {
|
|
|
17
18
|
readOnly: false,
|
|
18
19
|
destructive: false,
|
|
19
20
|
concurrencySafe: true,
|
|
20
|
-
async execute(input) {
|
|
21
|
+
async execute(input, context) {
|
|
21
22
|
const instanceId = parseConnectorInstanceId(String(input.instance_id));
|
|
22
23
|
const instance = config.manager.getInstance(instanceId);
|
|
23
24
|
if (!instance) {
|
|
@@ -38,12 +39,14 @@ export function createConnectorExecuteTool(config) {
|
|
|
38
39
|
instanceId,
|
|
39
40
|
method: input.method,
|
|
40
41
|
input: input.input,
|
|
42
|
+
signal: context.abortSignal,
|
|
41
43
|
});
|
|
42
44
|
if (!result.success) {
|
|
43
45
|
return {
|
|
44
46
|
success: false,
|
|
45
47
|
output: '',
|
|
46
|
-
error: result
|
|
48
|
+
error: connectorToolError(result),
|
|
49
|
+
data: { output: result.output, metadata: result.metadata },
|
|
47
50
|
};
|
|
48
51
|
}
|
|
49
52
|
const outputStr = typeof result.output === 'string' ? result.output : JSON.stringify(result.output, null, 2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/connector/tools/definitions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAEtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../../src/connector/tools/definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ConnectorExecuteResult } from '../../types/connector/index.js';
|
|
2
|
+
/** Keep remote side-effect uncertainty in the text the model actually sees. */
|
|
3
|
+
export declare function connectorToolError(result: ConnectorExecuteResult): string;
|
|
4
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/connector/tools/result.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAE5E,+EAA+E;AAC/E,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,CAiBzE"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/** Keep remote side-effect uncertainty in the text the model actually sees. */
|
|
2
|
+
export function connectorToolError(result) {
|
|
3
|
+
const base = result.error ?? 'Connector execution failed';
|
|
4
|
+
const normalized = base.toLowerCase();
|
|
5
|
+
const outcome = result.metadata?.remoteOutcome;
|
|
6
|
+
const retrySafety = result.metadata?.retrySafety;
|
|
7
|
+
if (outcome === 'not_started' && !normalized.includes('no remote request was started')) {
|
|
8
|
+
return `${base} No remote request was started; retry is safe.`;
|
|
9
|
+
}
|
|
10
|
+
if (outcome === 'unknown' && !normalized.includes('remote outcome is unknown')) {
|
|
11
|
+
return retrySafety === 'safe'
|
|
12
|
+
? `${base} The remote outcome is unknown, but retry is safe for this operation.`
|
|
13
|
+
: `${base} The remote outcome is unknown; do not automatically retry.`;
|
|
14
|
+
}
|
|
15
|
+
if (outcome === 'response_received' && !normalized.includes('response')) {
|
|
16
|
+
return `${base} A remote response was received; use its status before deciding whether to retry.`;
|
|
17
|
+
}
|
|
18
|
+
return base;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.js","sourceRoot":"","sources":["../../../src/connector/tools/result.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,UAAU,kBAAkB,CAAC,MAA8B;IAChE,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,4BAA4B,CAAA;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACrC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAA;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAA;IAChD,IAAI,OAAO,KAAK,aAAa,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,CAAC;QACxF,OAAO,GAAG,IAAI,gDAAgD,CAAA;IAC/D,CAAC;IACD,IAAI,OAAO,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;QAChF,OAAO,WAAW,KAAK,MAAM;YAC5B,CAAC,CAAC,GAAG,IAAI,uEAAuE;YAChF,CAAC,CAAC,GAAG,IAAI,6DAA6D,CAAA;IACxE,CAAC;IACD,IAAI,OAAO,KAAK,mBAAmB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACzE,OAAO,GAAG,IAAI,mFAAmF,CAAA;IAClG,CAAC;IACD,OAAO,IAAI,CAAA;AACZ,CAAC"}
|
|
@@ -29,7 +29,7 @@ export interface GuardedFetchConfig {
|
|
|
29
29
|
* a host uses to pin resolution — see `assertAllowed` for the rebinding
|
|
30
30
|
* gap this cannot close on its own.
|
|
31
31
|
*/
|
|
32
|
-
readonly resolve?: (hostname: string) => Promise<readonly string[]>;
|
|
32
|
+
readonly resolve?: (hostname: string, signal?: AbortSignal) => Promise<readonly string[]>;
|
|
33
33
|
}
|
|
34
34
|
/**
|
|
35
35
|
* Is this address inside the host's own network?
|
|
@@ -43,8 +43,10 @@ export interface GuardedFetchConfig {
|
|
|
43
43
|
export declare function isPrivateAddress(address: string): boolean;
|
|
44
44
|
export declare class GuardedFetchProvider implements WebFetchProvider {
|
|
45
45
|
private readonly config;
|
|
46
|
+
private readonly timeoutMs;
|
|
47
|
+
private readonly maxBytes;
|
|
48
|
+
private readonly maxRedirects;
|
|
46
49
|
constructor(config?: GuardedFetchConfig);
|
|
47
|
-
private get maxRedirects();
|
|
48
50
|
/**
|
|
49
51
|
* Refuse a URL before anything is sent.
|
|
50
52
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"guarded-fetch.d.ts","sourceRoot":"","sources":["../../../src/connector/web/guarded-fetch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"guarded-fetch.d.ts","sourceRoot":"","sources":["../../../src/connector/web/guarded-fetch.ts"],"names":[],"mappings":"AAUA,OAAO,EACN,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,YAAY,CAAA;AAkCnB,MAAM,WAAW,kBAAkB;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAA;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;CACzF;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAwCzD;AAED,qBAAa,oBAAqB,YAAW,gBAAgB;IAKhD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAQ;gBAER,MAAM,GAAE,kBAAuB;IAkB5D;;;;;;;;OAQG;YACW,aAAa;IAwFrB,KAAK,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAsF9D"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { lookup } from 'node:dns/promises';
|
|
2
2
|
import { isIP } from 'node:net';
|
|
3
|
+
import { ConnectorHttpOperation, DEFAULT_CONNECTOR_MAX_RESPONSE_BYTES, DEFAULT_CONNECTOR_REQUEST_TIMEOUT_MS, validateConnectorMaxResponseBytes, validateConnectorTimeoutMs, } from '../http-operation.js';
|
|
3
4
|
import { WebFetchRefusedError, } from './types.js';
|
|
4
5
|
/**
|
|
5
6
|
* Fetching a URL a model chose, without handing it the inside of the host.
|
|
@@ -19,8 +20,6 @@ import { WebFetchRefusedError, } from './types.js';
|
|
|
19
20
|
/** Every scheme this will follow. Everything else is refused by name. */
|
|
20
21
|
const ALLOWED_SCHEMES = new Set(['http:', 'https:']);
|
|
21
22
|
const DEFAULT_MAX_REDIRECTS = 5;
|
|
22
|
-
const DEFAULT_MAX_BYTES = 2 * 1024 * 1024;
|
|
23
|
-
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
24
23
|
/**
|
|
25
24
|
* Headers this never forwards, whatever the caller asked for.
|
|
26
25
|
*
|
|
@@ -63,28 +62,49 @@ export function isPrivateAddress(address) {
|
|
|
63
62
|
}
|
|
64
63
|
if (kind === 6) {
|
|
65
64
|
const lower = address.toLowerCase().replace(/^\[|\]$/g, '');
|
|
66
|
-
|
|
65
|
+
// `net.isIP` accepts scoped link-local values such as `fe80::1%lo0`,
|
|
66
|
+
// while the URL parser intentionally does not. The zone names an
|
|
67
|
+
// interface, not an address bit, so remove it before canonicalising.
|
|
68
|
+
const zoneAt = lower.indexOf('%');
|
|
69
|
+
const unscoped = zoneAt === -1 ? lower : lower.slice(0, zoneAt);
|
|
70
|
+
// Canonicalise before testing mapped addresses. `new URL()` turns the
|
|
71
|
+
// dotted spelling `::ffff:127.0.0.1` into `::ffff:7f00:1`; checking only
|
|
72
|
+
// a dotted suffix would therefore accept the exact value this provider
|
|
73
|
+
// receives from a model-authored URL.
|
|
74
|
+
const canonical = new URL(`http://[${unscoped}]/`).hostname.slice(1, -1);
|
|
75
|
+
if (canonical === '::1' || canonical === '::')
|
|
67
76
|
return true;
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
const mapped = canonical.match(/^::ffff:([0-9a-f]{1,4}):([0-9a-f]{1,4})$/);
|
|
78
|
+
if (mapped?.[1] && mapped[2]) {
|
|
79
|
+
const high = Number.parseInt(mapped[1], 16);
|
|
80
|
+
const low = Number.parseInt(mapped[2], 16);
|
|
81
|
+
return isPrivateAddress(`${high >>> 8}.${high & 0xff}.${low >>> 8}.${low & 0xff}`);
|
|
82
|
+
}
|
|
83
|
+
const firstHextet = Number.parseInt(canonical.split(':', 1)[0] ?? '0', 16);
|
|
84
|
+
if ((firstHextet & 0xffc0) === 0xfe80)
|
|
85
|
+
return true; // link-local fe80::/10
|
|
86
|
+
if ((firstHextet & 0xfe00) === 0xfc00)
|
|
71
87
|
return true; // unique-local fc00::/7
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const mapped = lower.match(/^::ffff:(\d+\.\d+\.\d+\.\d+)$/);
|
|
75
|
-
if (mapped?.[1])
|
|
76
|
-
return isPrivateAddress(mapped[1]);
|
|
88
|
+
if ((firstHextet & 0xff00) === 0xff00)
|
|
89
|
+
return true; // multicast ff00::/8
|
|
77
90
|
return false;
|
|
78
91
|
}
|
|
79
92
|
return false;
|
|
80
93
|
}
|
|
81
94
|
export class GuardedFetchProvider {
|
|
82
95
|
config;
|
|
96
|
+
timeoutMs;
|
|
97
|
+
maxBytes;
|
|
98
|
+
maxRedirects;
|
|
83
99
|
constructor(config = {}) {
|
|
84
100
|
this.config = config;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
101
|
+
this.timeoutMs = validateConnectorTimeoutMs(config.timeoutMs ?? DEFAULT_CONNECTOR_REQUEST_TIMEOUT_MS, 'GuardedFetchProvider timeoutMs');
|
|
102
|
+
this.maxBytes = validateConnectorMaxResponseBytes(config.maxBytes ?? DEFAULT_CONNECTOR_MAX_RESPONSE_BYTES, 'GuardedFetchProvider maxBytes');
|
|
103
|
+
const maxRedirects = config.maxRedirects ?? DEFAULT_MAX_REDIRECTS;
|
|
104
|
+
if (!Number.isSafeInteger(maxRedirects) || maxRedirects < 0) {
|
|
105
|
+
throw new Error(`GuardedFetchProvider maxRedirects must be a non-negative safe integer; received ${String(maxRedirects)}`);
|
|
106
|
+
}
|
|
107
|
+
this.maxRedirects = maxRedirects;
|
|
88
108
|
}
|
|
89
109
|
/**
|
|
90
110
|
* Refuse a URL before anything is sent.
|
|
@@ -95,7 +115,8 @@ export class GuardedFetchProvider {
|
|
|
95
115
|
* `302 -> http://169.254.169.254/`, and a fetch that validated only what
|
|
96
116
|
* the caller typed follows it happily.
|
|
97
117
|
*/
|
|
98
|
-
async assertAllowed(rawUrl) {
|
|
118
|
+
async assertAllowed(rawUrl, operation) {
|
|
119
|
+
operation.throwIfStopped();
|
|
99
120
|
let url;
|
|
100
121
|
try {
|
|
101
122
|
url = new URL(rawUrl);
|
|
@@ -119,8 +140,10 @@ export class GuardedFetchProvider {
|
|
|
119
140
|
reason: 'blocked-host',
|
|
120
141
|
});
|
|
121
142
|
}
|
|
122
|
-
if (this.config.allowPrivateAddresses === true)
|
|
143
|
+
if (this.config.allowPrivateAddresses === true) {
|
|
144
|
+
operation.throwIfStopped();
|
|
123
145
|
return url;
|
|
146
|
+
}
|
|
124
147
|
// RESOLVED, not just parsed. A hostname check alone is bypassed by any
|
|
125
148
|
// name whose A record points inside — which is a thing anyone can set
|
|
126
149
|
// up on a domain they own, and costs nothing to try.
|
|
@@ -138,9 +161,13 @@ export class GuardedFetchProvider {
|
|
|
138
161
|
}
|
|
139
162
|
else {
|
|
140
163
|
try {
|
|
141
|
-
addresses = await resolve(hostname);
|
|
164
|
+
addresses = await operation.run(() => resolve(hostname, operation.signal));
|
|
142
165
|
}
|
|
143
166
|
catch (err) {
|
|
167
|
+
// A caller cancellation or this operation's deadline is not a DNS
|
|
168
|
+
// policy refusal. Preserve the exact first cause rather than wrapping
|
|
169
|
+
// it as though the hostname itself were unsafe.
|
|
170
|
+
operation.throwIfStopped();
|
|
144
171
|
// REFUSE. `.catch(() => [])` was the first version of this line
|
|
145
172
|
// and it is fail-open: an empty list satisfies the loop below,
|
|
146
173
|
// so a name nobody could resolve was treated as a name with no
|
|
@@ -160,61 +187,65 @@ export class GuardedFetchProvider {
|
|
|
160
187
|
throw new WebFetchRefusedError(`Refused "${hostname}" — it resolves to ${address}, inside this host's own network.`, { url: rawUrl, reason: 'private-address' });
|
|
161
188
|
}
|
|
162
189
|
}
|
|
190
|
+
operation.throwIfStopped();
|
|
163
191
|
return url;
|
|
164
192
|
}
|
|
165
193
|
async fetch(request) {
|
|
166
194
|
const doFetch = this.config.fetch ?? globalThis.fetch;
|
|
167
|
-
const
|
|
168
|
-
const maxBytes = this.config.maxBytes ?? DEFAULT_MAX_BYTES;
|
|
169
|
-
const headers = {};
|
|
170
|
-
for (const [key, value] of Object.entries(request.headers ?? {})) {
|
|
171
|
-
if (!STRIPPED_HEADERS.has(key.toLowerCase()))
|
|
172
|
-
headers[key] = value;
|
|
173
|
-
}
|
|
174
|
-
const timer = new AbortController();
|
|
175
|
-
const deadline = setTimeout(() => timer.abort(), timeoutMs);
|
|
176
|
-
// Both: the caller's cancel and our own deadline. Honouring only one
|
|
177
|
-
// leaves the other unable to stop a fetch that has stopped being
|
|
178
|
-
// wanted.
|
|
179
|
-
request.signal?.addEventListener('abort', () => timer.abort(), { once: true });
|
|
195
|
+
const operation = new ConnectorHttpOperation(request.signal, this.timeoutMs, `Web fetch "${request.url}"`);
|
|
180
196
|
try {
|
|
197
|
+
const headers = {};
|
|
198
|
+
for (const [key, value] of Object.entries(request.headers ?? {})) {
|
|
199
|
+
if (!STRIPPED_HEADERS.has(key.toLowerCase()))
|
|
200
|
+
headers[key] = value;
|
|
201
|
+
}
|
|
181
202
|
const redirects = [];
|
|
182
|
-
let
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
}
|
|
203
|
+
let redirectsFollowed = 0;
|
|
204
|
+
let current = await this.assertAllowed(request.url, operation);
|
|
205
|
+
for (;;) {
|
|
206
|
+
operation.throwIfStopped();
|
|
187
207
|
redirects.push(current.toString());
|
|
188
208
|
// `manual`, so every hop comes back here to be checked. Letting
|
|
189
209
|
// the platform follow redirects is exactly the hole this class
|
|
190
210
|
// exists to close: it would land on the final URL having never
|
|
191
211
|
// asked whether that URL was allowed.
|
|
192
|
-
const response = await doFetch(current, {
|
|
212
|
+
const response = await operation.run(() => doFetch(current, {
|
|
193
213
|
headers,
|
|
194
214
|
redirect: 'manual',
|
|
195
|
-
signal:
|
|
196
|
-
});
|
|
215
|
+
signal: operation.signal,
|
|
216
|
+
}));
|
|
197
217
|
const location = response.headers.get('location');
|
|
198
218
|
if (response.status >= 300 && response.status < 400 && location) {
|
|
219
|
+
// The budget is about redirects FOLLOWED. Refuse before parsing or
|
|
220
|
+
// resolving the forbidden next target, so a spent budget cannot be
|
|
221
|
+
// turned into one last DNS query.
|
|
222
|
+
if (redirectsFollowed >= this.maxRedirects) {
|
|
223
|
+
cancelResponseBody(response, new Error('redirect limit reached'));
|
|
224
|
+
operation.throwIfStopped();
|
|
225
|
+
throw new WebFetchRefusedError(`Refused after ${this.maxRedirects} redirects from "${request.url}".`, { url: request.url, reason: 'redirect-limit' });
|
|
226
|
+
}
|
|
199
227
|
// Resolved against the current URL, because a `Location` may
|
|
200
228
|
// be relative — and a relative one that is not resolved would
|
|
201
229
|
// be checked as a different URL than the one followed.
|
|
202
230
|
const next = new URL(location, current);
|
|
231
|
+
cancelResponseBody(response, new Error('following redirect'));
|
|
232
|
+
operation.throwIfStopped();
|
|
203
233
|
try {
|
|
204
|
-
current = await this.assertAllowed(next.toString());
|
|
234
|
+
current = await this.assertAllowed(next.toString(), operation);
|
|
205
235
|
}
|
|
206
236
|
catch (err) {
|
|
237
|
+
operation.throwIfStopped();
|
|
207
238
|
if (err instanceof WebFetchRefusedError) {
|
|
208
239
|
throw new WebFetchRefusedError(`A redirect from "${current.toString()}" pointed at "${next.toString()}", which was refused: ${err.message}`, { url: next.toString(), reason: 'redirect-target' });
|
|
209
240
|
}
|
|
210
241
|
throw err;
|
|
211
242
|
}
|
|
243
|
+
redirectsFollowed++;
|
|
212
244
|
continue;
|
|
213
245
|
}
|
|
214
|
-
const
|
|
215
|
-
const truncated = Buffer.byteLength(text) > maxBytes;
|
|
216
|
-
const body = truncated ? Buffer.from(text).subarray(0, maxBytes).toString('utf8') : text;
|
|
246
|
+
const { body, truncated } = await readCappedResponseText(response, operation, this.maxBytes);
|
|
217
247
|
const contentType = response.headers.get('content-type') ?? undefined;
|
|
248
|
+
operation.throwIfStopped();
|
|
218
249
|
return {
|
|
219
250
|
url: current.toString(),
|
|
220
251
|
status: response.status,
|
|
@@ -226,8 +257,91 @@ export class GuardedFetchProvider {
|
|
|
226
257
|
}
|
|
227
258
|
}
|
|
228
259
|
finally {
|
|
229
|
-
|
|
260
|
+
operation.close();
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
async function readCappedResponseText(response, operation, maxBytes) {
|
|
265
|
+
// Native fetch exposes a byte stream whenever bytes exist. This fallback
|
|
266
|
+
// keeps Response-shaped host doubles compatible while still racing their
|
|
267
|
+
// text promise and applying the same byte semantics after it settles.
|
|
268
|
+
if (!response.body) {
|
|
269
|
+
const text = await operation.run(() => response.text());
|
|
270
|
+
const bytes = new TextEncoder().encode(text);
|
|
271
|
+
if (bytes.byteLength <= maxBytes) {
|
|
272
|
+
operation.throwIfStopped();
|
|
273
|
+
return { body: text, truncated: false };
|
|
230
274
|
}
|
|
275
|
+
operation.throwIfStopped();
|
|
276
|
+
return {
|
|
277
|
+
body: decodeUtf8Prefix(bytes.slice(0, maxBytes), true),
|
|
278
|
+
truncated: true,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
const reader = response.body.getReader();
|
|
282
|
+
const chunks = [];
|
|
283
|
+
let totalBytes = 0;
|
|
284
|
+
let truncated = false;
|
|
285
|
+
try {
|
|
286
|
+
for (;;) {
|
|
287
|
+
const { done, value } = await operation.run(() => reader.read());
|
|
288
|
+
if (done)
|
|
289
|
+
break;
|
|
290
|
+
if (value.byteLength === 0)
|
|
291
|
+
continue;
|
|
292
|
+
const remaining = maxBytes - totalBytes;
|
|
293
|
+
if (value.byteLength > remaining) {
|
|
294
|
+
// Copy the retained prefix. `subarray` would keep an arbitrarily
|
|
295
|
+
// large hostile chunk's backing buffer alive through the result.
|
|
296
|
+
if (remaining > 0)
|
|
297
|
+
chunks.push(value.slice(0, remaining));
|
|
298
|
+
totalBytes += remaining;
|
|
299
|
+
truncated = true;
|
|
300
|
+
cancelReader(reader, new Error(`web response exceeded ${maxBytes} bytes`));
|
|
301
|
+
operation.throwIfStopped();
|
|
302
|
+
break;
|
|
303
|
+
}
|
|
304
|
+
chunks.push(value);
|
|
305
|
+
totalBytes += value.byteLength;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
catch (error) {
|
|
309
|
+
cancelReader(reader, error);
|
|
310
|
+
throw error;
|
|
311
|
+
}
|
|
312
|
+
finally {
|
|
313
|
+
reader.releaseLock();
|
|
314
|
+
}
|
|
315
|
+
operation.throwIfStopped();
|
|
316
|
+
const bytes = new Uint8Array(totalBytes);
|
|
317
|
+
let offset = 0;
|
|
318
|
+
for (const chunk of chunks) {
|
|
319
|
+
bytes.set(chunk, offset);
|
|
320
|
+
offset += chunk.byteLength;
|
|
321
|
+
}
|
|
322
|
+
return { body: decodeUtf8Prefix(bytes, truncated), truncated };
|
|
323
|
+
}
|
|
324
|
+
function decodeUtf8Prefix(bytes, truncated) {
|
|
325
|
+
const decoder = new TextDecoder();
|
|
326
|
+
// Streaming decode deliberately omits the final flush for a truncated
|
|
327
|
+
// prefix. That drops an incomplete trailing code point instead of showing
|
|
328
|
+
// the model a synthetic replacement character that was never in the page.
|
|
329
|
+
return decoder.decode(bytes, { stream: truncated });
|
|
330
|
+
}
|
|
331
|
+
function cancelReader(reader, reason) {
|
|
332
|
+
try {
|
|
333
|
+
void Promise.resolve(reader.cancel(reason)).catch(() => undefined);
|
|
334
|
+
}
|
|
335
|
+
catch {
|
|
336
|
+
// Cleanup must not replace the operation's real outcome.
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
function cancelResponseBody(response, reason) {
|
|
340
|
+
try {
|
|
341
|
+
void Promise.resolve(response.body?.cancel(reason)).catch(() => undefined);
|
|
342
|
+
}
|
|
343
|
+
catch {
|
|
344
|
+
// Cleanup must not turn a redirect refusal into a transport failure.
|
|
231
345
|
}
|
|
232
346
|
}
|
|
233
347
|
//# sourceMappingURL=guarded-fetch.js.map
|