@namzu/sdk 34.2.0 → 36.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 +171 -0
- package/README.md +2 -6
- package/dist/agents/PipelineAgent.d.ts.map +1 -1
- package/dist/agents/PipelineAgent.js +118 -100
- package/dist/agents/PipelineAgent.js.map +1 -1
- package/dist/agents/ReactiveAgent.d.ts.map +1 -1
- package/dist/agents/ReactiveAgent.js +2 -0
- package/dist/agents/ReactiveAgent.js.map +1 -1
- package/dist/agents/RouterAgent.d.ts.map +1 -1
- package/dist/agents/RouterAgent.js +105 -61
- package/dist/agents/RouterAgent.js.map +1 -1
- package/dist/agents/SupervisorAgent.d.ts.map +1 -1
- package/dist/agents/SupervisorAgent.js +8 -4
- package/dist/agents/SupervisorAgent.js.map +1 -1
- package/dist/agents/budget.d.ts +6 -0
- package/dist/agents/budget.d.ts.map +1 -0
- package/dist/agents/budget.js +33 -0
- package/dist/agents/budget.js.map +1 -0
- package/dist/agents/explore.d.ts +20 -0
- package/dist/agents/explore.d.ts.map +1 -0
- package/dist/agents/explore.js +26 -0
- package/dist/agents/explore.js.map +1 -0
- package/dist/agents/file-definitions.d.ts +80 -0
- package/dist/agents/file-definitions.d.ts.map +1 -0
- package/dist/agents/file-definitions.js +179 -0
- package/dist/agents/file-definitions.js.map +1 -0
- package/dist/agents/index.d.ts +3 -0
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +2 -0
- package/dist/agents/index.js.map +1 -1
- package/dist/bridge/a2a/mapper.d.ts.map +1 -1
- package/dist/bridge/a2a/mapper.js +6 -0
- package/dist/bridge/a2a/mapper.js.map +1 -1
- package/dist/bridge/sse/mapper.d.ts.map +1 -1
- package/dist/bridge/sse/mapper.js +22 -0
- package/dist/bridge/sse/mapper.js.map +1 -1
- package/dist/bus/lock.d.ts.map +1 -1
- package/dist/bus/lock.js +1 -10
- package/dist/bus/lock.js.map +1 -1
- package/dist/compaction/consolidation.d.ts +31 -0
- package/dist/compaction/consolidation.d.ts.map +1 -0
- package/dist/compaction/consolidation.js +63 -0
- package/dist/compaction/consolidation.js.map +1 -0
- package/dist/compaction/factory.d.ts.map +1 -1
- package/dist/compaction/factory.js +3 -0
- package/dist/compaction/factory.js.map +1 -1
- package/dist/compaction/index.d.ts +6 -1
- package/dist/compaction/index.d.ts.map +1 -1
- package/dist/compaction/index.js +6 -0
- package/dist/compaction/index.js.map +1 -1
- package/dist/compaction/manager.d.ts +7 -0
- package/dist/compaction/manager.d.ts.map +1 -1
- package/dist/compaction/manager.js +31 -0
- package/dist/compaction/manager.js.map +1 -1
- package/dist/compaction/plan.d.ts +23 -0
- package/dist/compaction/plan.d.ts.map +1 -1
- package/dist/compaction/plan.js +41 -24
- package/dist/compaction/plan.js.map +1 -1
- package/dist/compaction/salience/bm25.d.ts +26 -0
- package/dist/compaction/salience/bm25.d.ts.map +1 -0
- package/dist/compaction/salience/bm25.js +56 -0
- package/dist/compaction/salience/bm25.js.map +1 -0
- package/dist/compaction/salience/goal.d.ts +21 -0
- package/dist/compaction/salience/goal.d.ts.map +1 -0
- package/dist/compaction/salience/goal.js +32 -0
- package/dist/compaction/salience/goal.js.map +1 -0
- package/dist/compaction/salience/index.d.ts +4 -0
- package/dist/compaction/salience/index.d.ts.map +1 -0
- package/dist/compaction/salience/index.js +4 -0
- package/dist/compaction/salience/index.js.map +1 -0
- package/dist/compaction/salience/minhash.d.ts +17 -0
- package/dist/compaction/salience/minhash.d.ts.map +1 -0
- package/dist/compaction/salience/minhash.js +54 -0
- package/dist/compaction/salience/minhash.js.map +1 -0
- package/dist/compaction/salience/score.d.ts +64 -0
- package/dist/compaction/salience/score.d.ts.map +1 -0
- package/dist/compaction/salience/score.js +256 -0
- package/dist/compaction/salience/score.js.map +1 -0
- package/dist/compaction/salience/tokenize.d.ts +20 -0
- package/dist/compaction/salience/tokenize.d.ts.map +1 -0
- package/dist/compaction/salience/tokenize.js +92 -0
- package/dist/compaction/salience/tokenize.js.map +1 -0
- package/dist/compaction/salience/working-set.d.ts +59 -0
- package/dist/compaction/salience/working-set.d.ts.map +1 -0
- package/dist/compaction/salience/working-set.js +137 -0
- package/dist/compaction/salience/working-set.js.map +1 -0
- package/dist/compaction/serializer.d.ts +2 -0
- package/dist/compaction/serializer.d.ts.map +1 -1
- package/dist/compaction/serializer.js +15 -0
- package/dist/compaction/serializer.js.map +1 -1
- package/dist/compaction/token-estimate.d.ts +13 -0
- package/dist/compaction/token-estimate.d.ts.map +1 -0
- package/dist/compaction/token-estimate.js +58 -0
- package/dist/compaction/token-estimate.js.map +1 -0
- package/dist/compaction/tool-result-editing.d.ts +10 -2
- package/dist/compaction/tool-result-editing.d.ts.map +1 -1
- package/dist/compaction/tool-result-editing.js +22 -24
- package/dist/compaction/tool-result-editing.js.map +1 -1
- package/dist/compaction/types.d.ts +22 -1
- package/dist/compaction/types.d.ts.map +1 -1
- package/dist/compaction/wire.d.ts +3 -1
- package/dist/compaction/wire.d.ts.map +1 -1
- package/dist/compaction/wire.js +2 -0
- package/dist/compaction/wire.js.map +1 -1
- package/dist/config/runtime.d.ts +58 -28
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/runtime.js +13 -1
- package/dist/config/runtime.js.map +1 -1
- package/dist/connector/builtins/http.d.ts.map +1 -1
- package/dist/connector/builtins/http.js +2 -8
- package/dist/connector/builtins/http.js.map +1 -1
- package/dist/connector/builtins/webhook.js +2 -2
- package/dist/connector/builtins/webhook.js.map +1 -1
- package/dist/connector/mcp/adapter.d.ts +2 -0
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +30 -0
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/connector/tools/adapter.js +2 -2
- package/dist/connector/tools/adapter.js.map +1 -1
- package/dist/connector/tools/definitions.js +2 -2
- package/dist/connector/tools/definitions.js.map +1 -1
- package/dist/constants/compaction/index.d.ts +1 -0
- package/dist/constants/compaction/index.d.ts.map +1 -1
- package/dist/constants/compaction/index.js +1 -0
- package/dist/constants/compaction/index.js.map +1 -1
- package/dist/constants/telemetry/index.d.ts +0 -1
- package/dist/constants/telemetry/index.d.ts.map +1 -1
- package/dist/constants/telemetry/index.js +0 -1
- package/dist/constants/telemetry/index.js.map +1 -1
- package/dist/contracts/a2a.d.ts +5 -5
- package/dist/contracts/api.d.ts +4 -2
- package/dist/contracts/api.d.ts.map +1 -1
- package/dist/contracts/schemas.d.ts +1 -15
- package/dist/contracts/schemas.d.ts.map +1 -1
- package/dist/contracts/schemas.js +5 -20
- package/dist/contracts/schemas.js.map +1 -1
- package/dist/invariants/index.d.ts +1 -1
- package/dist/manager/agent/lifecycle.d.ts +2 -18
- package/dist/manager/agent/lifecycle.d.ts.map +1 -1
- package/dist/manager/agent/lifecycle.js +373 -340
- package/dist/manager/agent/lifecycle.js.map +1 -1
- package/dist/manager/run/persistence.d.ts +3 -0
- package/dist/manager/run/persistence.d.ts.map +1 -1
- package/dist/manager/run/persistence.js +35 -5
- package/dist/manager/run/persistence.js.map +1 -1
- package/dist/plugin/index.d.ts +2 -0
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/index.js +1 -0
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/shell-hook.d.ts +128 -0
- package/dist/plugin/shell-hook.d.ts.map +1 -0
- package/dist/plugin/shell-hook.js +299 -0
- package/dist/plugin/shell-hook.js.map +1 -0
- package/dist/prompt/coding-agent-doctrine.d.ts +63 -0
- package/dist/prompt/coding-agent-doctrine.d.ts.map +1 -0
- package/dist/prompt/coding-agent-doctrine.js +100 -0
- package/dist/prompt/coding-agent-doctrine.js.map +1 -0
- package/dist/prompt/index.d.ts +2 -0
- package/dist/prompt/index.d.ts.map +1 -1
- package/dist/prompt/index.js +1 -0
- package/dist/prompt/index.js.map +1 -1
- package/dist/provider/errors.d.ts +1 -1
- package/dist/provider/errors.js +1 -1
- package/dist/provider/fallback.d.ts +2 -0
- package/dist/provider/fallback.d.ts.map +1 -1
- package/dist/provider/fallback.js +3 -1
- package/dist/provider/fallback.js.map +1 -1
- package/dist/provider/retry.d.ts +2 -0
- package/dist/provider/retry.d.ts.map +1 -1
- package/dist/provider/retry.js +3 -1
- package/dist/provider/retry.js.map +1 -1
- package/dist/provider/token-budget.d.ts +13 -0
- package/dist/provider/token-budget.d.ts.map +1 -0
- package/dist/provider/token-budget.js +150 -0
- package/dist/provider/token-budget.js.map +1 -0
- package/dist/public-runtime.d.ts +14 -14
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +15 -10
- package/dist/public-runtime.js.map +1 -1
- package/dist/public-tools.d.ts +2 -0
- package/dist/public-tools.d.ts.map +1 -1
- package/dist/public-tools.js +2 -0
- package/dist/public-tools.js.map +1 -1
- package/dist/public-types.d.ts +12 -2
- package/dist/public-types.d.ts.map +1 -1
- package/dist/registry/command/kernel-commands.d.ts.map +1 -1
- package/dist/registry/command/kernel-commands.js +18 -6
- package/dist/registry/command/kernel-commands.js.map +1 -1
- package/dist/registry/tool/execute.d.ts.map +1 -1
- package/dist/registry/tool/execute.js +4 -1
- package/dist/registry/tool/execute.js.map +1 -1
- package/dist/run/LimitChecker.js +1 -1
- package/dist/run/LimitChecker.js.map +1 -1
- package/dist/run/drain.js +1 -1
- package/dist/run/reporter.d.ts.map +1 -1
- package/dist/run/reporter.js +15 -0
- package/dist/run/reporter.js.map +1 -1
- package/dist/run/token-budget.d.ts +108 -0
- package/dist/run/token-budget.d.ts.map +1 -0
- package/dist/run/token-budget.js +591 -0
- package/dist/run/token-budget.js.map +1 -0
- package/dist/runtime/jobs/registry.d.ts +29 -0
- package/dist/runtime/jobs/registry.d.ts.map +1 -1
- package/dist/runtime/jobs/registry.js +98 -18
- package/dist/runtime/jobs/registry.js.map +1 -1
- package/dist/runtime/query/checkpoint.d.ts.map +1 -1
- package/dist/runtime/query/checkpoint.js +10 -3
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/context.d.ts +2 -26
- package/dist/runtime/query/context.d.ts.map +1 -1
- package/dist/runtime/query/context.js +1 -29
- package/dist/runtime/query/context.js.map +1 -1
- package/dist/runtime/query/executor.d.ts +13 -9
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +144 -55
- package/dist/runtime/query/executor.js.map +1 -1
- package/dist/runtime/query/guard.d.ts.map +1 -1
- package/dist/runtime/query/guard.js +8 -0
- package/dist/runtime/query/guard.js.map +1 -1
- package/dist/runtime/query/index.d.ts +42 -4
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +153 -52
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/index.d.ts +3 -3
- package/dist/runtime/query/iteration/index.d.ts.map +1 -1
- package/dist/runtime/query/iteration/index.js +47 -11
- 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 +98 -30
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/iteration/phases/context.d.ts +4 -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 +29 -7
- package/dist/runtime/query/iteration/phases/tool-review.js.map +1 -1
- package/dist/runtime/query/iteration/phases/working-memory.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/working-memory.js +25 -15
- package/dist/runtime/query/iteration/phases/working-memory.js.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
- package/dist/runtime/query/iteration/stream-turn.js +10 -5
- package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
- package/dist/runtime/query/plugin-hooks.d.ts +1 -1
- package/dist/runtime/query/plugin-hooks.d.ts.map +1 -1
- package/dist/runtime/query/plugin-hooks.js +20 -1
- package/dist/runtime/query/plugin-hooks.js.map +1 -1
- package/dist/runtime/query/prompt.d.ts.map +1 -1
- package/dist/runtime/query/prompt.js +14 -4
- package/dist/runtime/query/prompt.js.map +1 -1
- package/dist/runtime/query/repeat-call.d.ts +20 -2
- package/dist/runtime/query/repeat-call.d.ts.map +1 -1
- package/dist/runtime/query/repeat-call.js +35 -7
- package/dist/runtime/query/repeat-call.js.map +1 -1
- package/dist/runtime/query/result.d.ts.map +1 -1
- package/dist/runtime/query/result.js +9 -0
- package/dist/runtime/query/result.js.map +1 -1
- package/dist/runtime/query/review-policy.d.ts +142 -0
- package/dist/runtime/query/review-policy.d.ts.map +1 -0
- package/dist/runtime/query/review-policy.js +144 -0
- package/dist/runtime/query/review-policy.js.map +1 -0
- package/dist/runtime/query/run-state.d.ts.map +1 -1
- package/dist/runtime/query/run-state.js +4 -0
- package/dist/runtime/query/run-state.js.map +1 -1
- package/dist/runtime/query/steering.d.ts +4 -0
- package/dist/runtime/query/steering.d.ts.map +1 -1
- package/dist/runtime/query/steering.js +29 -0
- package/dist/runtime/query/steering.js.map +1 -1
- package/dist/runtime/query/token-budget.d.ts +7 -0
- package/dist/runtime/query/token-budget.d.ts.map +1 -0
- package/dist/runtime/query/token-budget.js +101 -0
- package/dist/runtime/query/token-budget.js.map +1 -0
- package/dist/runtime/query/tool-output-budget.d.ts +2 -0
- package/dist/runtime/query/tool-output-budget.d.ts.map +1 -1
- package/dist/runtime/query/tool-output-budget.js +29 -11
- package/dist/runtime/query/tool-output-budget.js.map +1 -1
- package/dist/runtime/query/tool-pause.d.ts.map +1 -1
- package/dist/runtime/query/tool-pause.js +4 -2
- package/dist/runtime/query/tool-pause.js.map +1 -1
- package/dist/runtime/query/tooling.d.ts +4 -0
- package/dist/runtime/query/tooling.d.ts.map +1 -1
- package/dist/runtime/query/tooling.js +4 -0
- package/dist/runtime/query/tooling.js.map +1 -1
- package/dist/sandbox/file-walk-program.d.ts +3 -0
- package/dist/sandbox/file-walk-program.d.ts.map +1 -0
- package/dist/sandbox/file-walk-program.js +94 -0
- package/dist/sandbox/file-walk-program.js.map +1 -0
- package/dist/sandbox/file-walk.d.ts +12 -0
- package/dist/sandbox/file-walk.d.ts.map +1 -0
- package/dist/sandbox/file-walk.js +429 -0
- package/dist/sandbox/file-walk.js.map +1 -0
- package/dist/sandbox/index.d.ts +2 -0
- package/dist/sandbox/index.d.ts.map +1 -1
- package/dist/sandbox/index.js +1 -0
- package/dist/sandbox/index.js.map +1 -1
- package/dist/sandbox/provider/local.d.ts +3 -1
- package/dist/sandbox/provider/local.d.ts.map +1 -1
- package/dist/sandbox/provider/local.js +121 -12
- package/dist/sandbox/provider/local.js.map +1 -1
- package/dist/scheduler/completion-inbox.d.ts +3 -2
- package/dist/scheduler/completion-inbox.d.ts.map +1 -1
- package/dist/scheduler/completion-inbox.js +29 -15
- package/dist/scheduler/completion-inbox.js.map +1 -1
- package/dist/scheduler/delegating.d.ts +1 -0
- package/dist/scheduler/delegating.d.ts.map +1 -1
- package/dist/scheduler/delegating.js +29 -12
- package/dist/scheduler/delegating.js.map +1 -1
- package/dist/scheduler/local.d.ts +1 -0
- package/dist/scheduler/local.d.ts.map +1 -1
- package/dist/scheduler/local.js +4 -7
- package/dist/scheduler/local.js.map +1 -1
- package/dist/session/index.d.ts +0 -1
- package/dist/session/index.d.ts.map +1 -1
- package/dist/session/index.js +0 -1
- package/dist/session/index.js.map +1 -1
- package/dist/session/workspace/path-builder.d.ts.map +1 -1
- package/dist/session/workspace/path-builder.js +5 -4
- package/dist/session/workspace/path-builder.js.map +1 -1
- package/dist/store/feedback/disk.d.ts.map +1 -1
- package/dist/store/feedback/disk.js +4 -6
- package/dist/store/feedback/disk.js.map +1 -1
- package/dist/store/index.d.ts +2 -0
- package/dist/store/index.d.ts.map +1 -1
- package/dist/store/index.js +1 -0
- package/dist/store/index.js.map +1 -1
- package/dist/store/memory/disk.d.ts.map +1 -1
- package/dist/store/memory/disk.js +3 -12
- package/dist/store/memory/disk.js.map +1 -1
- package/dist/store/run/checkpoint-disk.d.ts +3 -3
- package/dist/store/run/checkpoint-disk.d.ts.map +1 -1
- package/dist/store/run/checkpoint-disk.js +14 -26
- package/dist/store/run/checkpoint-disk.js.map +1 -1
- package/dist/store/run/claim-disk.js +1 -1
- package/dist/store/run/conformance.d.ts +1 -1
- package/dist/store/run/conformance.d.ts.map +1 -1
- package/dist/store/run/conformance.js +41 -33
- package/dist/store/run/conformance.js.map +1 -1
- package/dist/store/run/disk.d.ts.map +1 -1
- package/dist/store/run/disk.js +20 -4
- package/dist/store/run/disk.js.map +1 -1
- package/dist/store/run/token-budget-disk.d.ts +37 -0
- package/dist/store/run/token-budget-disk.d.ts.map +1 -0
- package/dist/store/run/token-budget-disk.js +208 -0
- package/dist/store/run/token-budget-disk.js.map +1 -0
- package/dist/store/session/disk.d.ts +4 -13
- package/dist/store/session/disk.d.ts.map +1 -1
- package/dist/store/session/disk.js +34 -31
- package/dist/store/session/disk.js.map +1 -1
- package/dist/store/session/memory.d.ts +2 -0
- package/dist/store/session/memory.d.ts.map +1 -1
- package/dist/store/session/memory.js +41 -2
- package/dist/store/session/memory.js.map +1 -1
- package/dist/store/task/disk.d.ts.map +1 -1
- package/dist/store/task/disk.js +7 -8
- package/dist/store/task/disk.js.map +1 -1
- package/dist/store/topic/memory.d.ts +2 -0
- package/dist/store/topic/memory.d.ts.map +1 -1
- package/dist/store/topic/memory.js +13 -1
- package/dist/store/topic/memory.js.map +1 -1
- package/dist/test-support/ids.d.ts +4 -19
- package/dist/test-support/ids.d.ts.map +1 -1
- package/dist/test-support/ids.js +51 -59
- package/dist/test-support/ids.js.map +1 -1
- package/dist/tools/advisory/index.d.ts.map +1 -1
- package/dist/tools/advisory/index.js +3 -1
- package/dist/tools/advisory/index.js.map +1 -1
- package/dist/tools/builtins/bash.d.ts +2 -0
- package/dist/tools/builtins/bash.d.ts.map +1 -1
- package/dist/tools/builtins/bash.js +224 -70
- package/dist/tools/builtins/bash.js.map +1 -1
- package/dist/tools/builtins/computer-use.d.ts +2 -2
- package/dist/tools/builtins/computer-use.d.ts.map +1 -1
- package/dist/tools/builtins/computer-use.js +4 -2
- package/dist/tools/builtins/computer-use.js.map +1 -1
- package/dist/tools/builtins/edit.js +2 -2
- package/dist/tools/builtins/edit.js.map +1 -1
- package/dist/tools/builtins/glob.d.ts +2 -1
- package/dist/tools/builtins/glob.d.ts.map +1 -1
- package/dist/tools/builtins/glob.js +95 -103
- package/dist/tools/builtins/glob.js.map +1 -1
- package/dist/tools/builtins/grep.d.ts.map +1 -1
- package/dist/tools/builtins/grep.js +155 -111
- package/dist/tools/builtins/grep.js.map +1 -1
- package/dist/tools/builtins/ls.js +4 -4
- package/dist/tools/builtins/ls.js.map +1 -1
- package/dist/tools/builtins/lsp.js +2 -2
- package/dist/tools/builtins/lsp.js.map +1 -1
- package/dist/tools/builtins/read-file.js +2 -2
- package/dist/tools/builtins/read-file.js.map +1 -1
- package/dist/tools/builtins/write-file.js +2 -2
- package/dist/tools/builtins/write-file.js.map +1 -1
- package/dist/tools/coordinator/ask-user-question.d.ts +33 -0
- package/dist/tools/coordinator/ask-user-question.d.ts.map +1 -0
- package/dist/tools/coordinator/ask-user-question.js +237 -0
- package/dist/tools/coordinator/ask-user-question.js.map +1 -0
- package/dist/tools/coordinator/index.d.ts +1 -2
- package/dist/tools/coordinator/index.d.ts.map +1 -1
- package/dist/tools/coordinator/index.js +4 -220
- package/dist/tools/coordinator/index.js.map +1 -1
- package/dist/tools/memory/read.d.ts.map +1 -1
- package/dist/tools/memory/read.js +2 -4
- package/dist/tools/memory/read.js.map +1 -1
- package/dist/tools/paths.d.ts +13 -0
- package/dist/tools/paths.d.ts.map +1 -1
- package/dist/tools/paths.js +53 -0
- package/dist/tools/paths.js.map +1 -1
- package/dist/tools/roster.d.ts +27 -0
- package/dist/tools/roster.d.ts.map +1 -0
- package/dist/tools/roster.js +42 -0
- package/dist/tools/roster.js.map +1 -0
- package/dist/types/agent/base.d.ts +5 -0
- package/dist/types/agent/base.d.ts.map +1 -1
- package/dist/types/agent/pipeline.d.ts +3 -0
- package/dist/types/agent/pipeline.d.ts.map +1 -1
- package/dist/types/agent/router.d.ts +2 -3
- package/dist/types/agent/router.d.ts.map +1 -1
- package/dist/types/agent/scheduler.d.ts +3 -0
- package/dist/types/agent/scheduler.d.ts.map +1 -1
- package/dist/types/agent/task.d.ts +5 -16
- package/dist/types/agent/task.d.ts.map +1 -1
- package/dist/types/agent/task.js.map +1 -1
- package/dist/types/common/index.d.ts.map +1 -1
- package/dist/types/common/index.js +3 -0
- package/dist/types/common/index.js.map +1 -1
- package/dist/types/computer-use/index.d.ts +8 -0
- package/dist/types/computer-use/index.d.ts.map +1 -1
- package/dist/types/computer-use/index.js.map +1 -1
- package/dist/types/hitl/index.d.ts +5 -0
- package/dist/types/hitl/index.d.ts.map +1 -1
- package/dist/types/hitl/index.js.map +1 -1
- package/dist/types/ids/brand.d.ts +5 -47
- package/dist/types/ids/brand.d.ts.map +1 -1
- package/dist/types/ids/brand.js +2 -39
- package/dist/types/ids/brand.js.map +1 -1
- package/dist/types/ids/index.d.ts +59 -69
- package/dist/types/ids/index.d.ts.map +1 -1
- package/dist/types/ids/index.js +12 -10
- package/dist/types/ids/index.js.map +1 -1
- package/dist/types/permission/index.d.ts +9 -0
- package/dist/types/permission/index.d.ts.map +1 -1
- package/dist/types/permission/index.js +9 -1
- package/dist/types/permission/index.js.map +1 -1
- package/dist/types/plugin/index.d.ts +45 -4
- package/dist/types/plugin/index.d.ts.map +1 -1
- package/dist/types/plugin/index.js +7 -0
- package/dist/types/plugin/index.js.map +1 -1
- package/dist/types/run/config.d.ts +3 -0
- package/dist/types/run/config.d.ts.map +1 -1
- package/dist/types/run/emergency.d.ts +5 -0
- package/dist/types/run/emergency.d.ts.map +1 -1
- package/dist/types/run/emergency.js.map +1 -1
- package/dist/types/run/entity.d.ts +6 -2
- package/dist/types/run/entity.d.ts.map +1 -1
- package/dist/types/run/events.d.ts +35 -0
- package/dist/types/run/events.d.ts.map +1 -1
- package/dist/types/run/events.js.map +1 -1
- package/dist/types/run/index.d.ts +1 -0
- package/dist/types/run/index.d.ts.map +1 -1
- package/dist/types/run/index.js +1 -0
- package/dist/types/run/index.js.map +1 -1
- package/dist/types/run/state.d.ts +16 -15
- package/dist/types/run/state.d.ts.map +1 -1
- package/dist/types/run/state.js +41 -22
- package/dist/types/run/state.js.map +1 -1
- package/dist/types/run/stop-reason.d.ts +3 -14
- package/dist/types/run/stop-reason.d.ts.map +1 -1
- package/dist/types/run/token-budget-store.d.ts +29 -0
- package/dist/types/run/token-budget-store.d.ts.map +1 -0
- package/dist/types/run/token-budget-store.js +25 -0
- package/dist/types/run/token-budget-store.js.map +1 -0
- package/dist/types/sandbox/index.d.ts +47 -2
- package/dist/types/sandbox/index.d.ts.map +1 -1
- package/dist/types/sandbox/index.js.map +1 -1
- package/dist/types/session/store.d.ts +8 -0
- package/dist/types/session/store.d.ts.map +1 -1
- package/dist/types/tool/index.d.ts +15 -0
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +1 -1
- package/dist/utils/frontmatter.js +1 -1
- package/dist/utils/id-format.d.ts +3 -0
- package/dist/utils/id-format.d.ts.map +1 -0
- package/dist/utils/id-format.js +9 -0
- package/dist/utils/id-format.js.map +1 -0
- package/dist/utils/id.d.ts +65 -32
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +168 -148
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/log/exception.js +1 -1
- package/dist/utils/log/exception.js.map +1 -1
- package/dist/utils/log/index.d.ts.map +1 -1
- package/dist/utils/log/index.js +1 -2
- package/dist/utils/log/index.js.map +1 -1
- package/dist/utils/log/templates.d.ts.map +1 -1
- package/dist/utils/log/templates.js +0 -1
- package/dist/utils/log/templates.js.map +1 -1
- package/package.json +6 -1
- package/src/agents/AGENTS.md +1 -1
- package/src/agents/PipelineAgent.ts +129 -109
- package/src/agents/ReactiveAgent.ts +2 -0
- package/src/agents/RouterAgent.ts +120 -73
- package/src/agents/SupervisorAgent.ts +12 -4
- package/src/agents/budget.ts +42 -0
- package/src/agents/explore.ts +29 -0
- package/src/agents/file-definitions.ts +237 -0
- package/src/agents/index.ts +15 -0
- package/src/bridge/a2a/mapper.ts +6 -0
- package/src/bridge/sse/mapper.ts +22 -0
- package/src/bus/lock.ts +1 -10
- package/src/compaction/consolidation.ts +79 -0
- package/src/compaction/factory.ts +3 -0
- package/src/compaction/index.ts +34 -4
- package/src/compaction/manager.ts +39 -1
- package/src/compaction/plan.ts +52 -21
- package/src/compaction/salience/bm25.ts +72 -0
- package/src/compaction/salience/goal.ts +44 -0
- package/src/compaction/salience/index.ts +19 -0
- package/src/compaction/salience/minhash.ts +53 -0
- package/src/compaction/salience/score.ts +305 -0
- package/src/compaction/salience/tokenize.ts +89 -0
- package/src/compaction/salience/working-set.ts +187 -0
- package/src/compaction/serializer.ts +16 -0
- package/src/compaction/token-estimate.ts +57 -0
- package/src/compaction/tool-result-editing.ts +28 -26
- package/src/compaction/types.ts +24 -1
- package/src/compaction/wire.ts +5 -1
- package/src/config/runtime.ts +13 -1
- package/src/connector/builtins/http.ts +2 -8
- package/src/connector/builtins/webhook.ts +2 -2
- package/src/connector/mcp/adapter.ts +32 -0
- package/src/connector/tools/adapter.ts +2 -2
- package/src/connector/tools/definitions.ts +2 -2
- package/src/constants/compaction/index.ts +1 -0
- package/src/constants/telemetry/index.ts +0 -1
- package/src/contracts/api.ts +5 -1
- package/src/contracts/schemas.ts +6 -20
- package/src/invariants/index.ts +1 -1
- package/src/manager/agent/lifecycle.ts +380 -352
- package/src/manager/run/persistence.ts +35 -5
- package/src/plugin/index.ts +19 -0
- package/src/plugin/shell-hook.ts +403 -0
- package/src/prompt/coding-agent-doctrine.ts +118 -0
- package/src/prompt/index.ts +8 -0
- package/src/provider/errors.ts +1 -1
- package/src/provider/fallback.ts +4 -1
- package/src/provider/retry.ts +4 -1
- package/src/provider/token-budget.ts +158 -0
- package/src/public-runtime.ts +56 -28
- package/src/public-tools.ts +5 -0
- package/src/public-types.ts +65 -0
- package/src/registry/command/kernel-commands.ts +16 -6
- package/src/registry/tool/execute.ts +4 -1
- package/src/run/LimitChecker.ts +1 -1
- package/src/run/drain.ts +1 -1
- package/src/run/reporter.ts +15 -0
- package/src/run/token-budget.ts +692 -0
- package/src/runtime/jobs/registry.ts +123 -17
- package/src/runtime/query/checkpoint.ts +10 -3
- package/src/runtime/query/context.ts +3 -57
- package/src/runtime/query/executor.ts +181 -71
- package/src/runtime/query/guard.ts +8 -0
- package/src/runtime/query/index.ts +209 -62
- package/src/runtime/query/iteration/index.ts +53 -15
- package/src/runtime/query/iteration/phases/compaction.ts +130 -31
- package/src/runtime/query/iteration/phases/context.ts +4 -0
- package/src/runtime/query/iteration/phases/tool-review.ts +39 -7
- package/src/runtime/query/iteration/phases/working-memory.ts +23 -14
- package/src/runtime/query/iteration/stream-turn.ts +9 -5
- package/src/runtime/query/plugin-hooks.ts +24 -2
- package/src/runtime/query/prompt.ts +21 -4
- package/src/runtime/query/repeat-call.ts +42 -7
- package/src/runtime/query/result.ts +9 -0
- package/src/runtime/query/review-policy.ts +231 -0
- package/src/runtime/query/run-state.ts +4 -0
- package/src/runtime/query/steering.ts +32 -0
- package/src/runtime/query/token-budget.ts +127 -0
- package/src/runtime/query/tool-output-budget.ts +33 -10
- package/src/runtime/query/tool-pause.ts +4 -2
- package/src/runtime/query/tooling.ts +8 -0
- package/src/sandbox/file-walk-program.ts +93 -0
- package/src/sandbox/file-walk.ts +463 -0
- package/src/sandbox/index.ts +2 -0
- package/src/sandbox/provider/local.ts +136 -13
- package/src/scheduler/completion-inbox.ts +29 -19
- package/src/scheduler/delegating.ts +35 -13
- package/src/scheduler/local.ts +5 -7
- package/src/session/index.ts +0 -1
- package/src/session/workspace/path-builder.ts +5 -4
- package/src/store/feedback/disk.ts +4 -6
- package/src/store/index.ts +2 -0
- package/src/store/memory/disk.ts +3 -11
- package/src/store/run/checkpoint-disk.ts +14 -27
- package/src/store/run/claim-disk.ts +1 -1
- package/src/store/run/conformance.ts +55 -39
- package/src/store/run/disk.ts +19 -4
- package/src/store/run/token-budget-disk.ts +247 -0
- package/src/store/session/disk.ts +36 -29
- package/src/store/session/memory.ts +38 -1
- package/src/store/task/disk.ts +7 -8
- package/src/store/topic/memory.ts +13 -1
- package/src/test-support/ids.ts +62 -59
- package/src/tools/advisory/index.ts +3 -1
- package/src/tools/builtins/bash.ts +241 -70
- package/src/tools/builtins/computer-use.ts +6 -2
- package/src/tools/builtins/edit.ts +2 -2
- package/src/tools/builtins/glob.ts +104 -122
- package/src/tools/builtins/grep.ts +166 -132
- package/src/tools/builtins/ls.ts +4 -4
- package/src/tools/builtins/lsp.ts +2 -2
- package/src/tools/builtins/read-file.ts +2 -2
- package/src/tools/builtins/write-file.ts +2 -2
- package/src/tools/coordinator/ask-user-question.ts +284 -0
- package/src/tools/coordinator/index.ts +5 -248
- package/src/tools/memory/read.ts +2 -4
- package/src/tools/paths.ts +64 -0
- package/src/tools/roster.ts +46 -0
- package/src/types/agent/base.ts +6 -0
- package/src/types/agent/pipeline.ts +3 -0
- package/src/types/agent/router.ts +2 -3
- package/src/types/agent/scheduler.ts +4 -0
- package/src/types/agent/task.ts +5 -18
- package/src/types/common/index.ts +3 -0
- package/src/types/computer-use/index.ts +8 -0
- package/src/types/hitl/index.ts +5 -0
- package/src/types/ids/brand.ts +5 -48
- package/src/types/ids/index.ts +66 -75
- package/src/types/permission/index.ts +11 -0
- package/src/types/plugin/index.ts +49 -1
- package/src/types/run/config.ts +3 -0
- package/src/types/run/emergency.ts +5 -0
- package/src/types/run/entity.ts +6 -2
- package/src/types/run/events.ts +37 -0
- package/src/types/run/index.ts +1 -0
- package/src/types/run/state.ts +58 -30
- package/src/types/run/stop-reason.ts +3 -14
- package/src/types/run/token-budget-store.ts +54 -0
- package/src/types/sandbox/index.ts +53 -0
- package/src/types/session/store.ts +8 -0
- package/src/types/tool/index.ts +15 -0
- package/src/utils/frontmatter.ts +1 -1
- package/src/utils/id-format.ts +9 -0
- package/src/utils/id.ts +222 -181
- package/src/utils/log/exception.ts +1 -1
- package/src/utils/log/index.ts +1 -2
- package/src/utils/log/templates.ts +0 -1
- package/dist/session/migration/errors.d.ts +0 -26
- package/dist/session/migration/errors.d.ts.map +0 -1
- package/dist/session/migration/errors.js +0 -22
- package/dist/session/migration/errors.js.map +0 -1
- package/dist/session/migration/filesystem.d.ts +0 -122
- package/dist/session/migration/filesystem.d.ts.map +0 -1
- package/dist/session/migration/filesystem.js +0 -379
- package/dist/session/migration/filesystem.js.map +0 -1
- package/dist/session/migration/id-prefix.d.ts +0 -113
- package/dist/session/migration/id-prefix.d.ts.map +0 -1
- package/dist/session/migration/id-prefix.js +0 -132
- package/dist/session/migration/id-prefix.js.map +0 -1
- package/dist/session/migration/index.d.ts +0 -12
- package/dist/session/migration/index.d.ts.map +0 -1
- package/dist/session/migration/index.js +0 -12
- package/dist/session/migration/index.js.map +0 -1
- package/dist/session/migration/marker.d.ts +0 -57
- package/dist/session/migration/marker.d.ts.map +0 -1
- package/dist/session/migration/marker.js +0 -123
- package/dist/session/migration/marker.js.map +0 -1
- package/src/session/migration/errors.ts +0 -23
- package/src/session/migration/filesystem.ts +0 -468
- package/src/session/migration/id-prefix.ts +0 -166
- package/src/session/migration/index.ts +0 -41
- package/src/session/migration/marker.ts +0 -142
package/dist/test-support/ids.js
CHANGED
|
@@ -1,70 +1,62 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
*
|
|
4
|
-
* A test that needs three hundred distinct ids is not testing prefix
|
|
5
|
-
* validation, and paying a `startsWith` per literal to say `ses_1` buys it
|
|
6
|
-
* nothing. These are the cheap landing zone for that: same call shape as the
|
|
7
|
-
* `as*Id` constructors in `utils/id.ts`, no check.
|
|
8
|
-
*
|
|
9
|
-
* **Deliberately NOT exported from the package barrel.** The whole value of
|
|
10
|
-
* the checked constructors is that a malformed id cannot reach a store key,
|
|
11
|
-
* and an unchecked one on the public surface is a supported way around that.
|
|
12
|
-
* `test-support/` is reachable from inside this repo and nowhere else, which
|
|
13
|
-
* is exactly the reach this needs.
|
|
14
|
-
*
|
|
15
|
-
* Two shapes rather than forty functions, because a fixture wants brevity:
|
|
16
|
-
* `fixtureId.run('a')` reads at the call site, and `unchecked<RunId>(s)`
|
|
17
|
-
* covers anything the table misses.
|
|
18
|
-
*/
|
|
1
|
+
/** Deterministic UUID fixtures. Deliberately absent from the package barrel. */
|
|
2
|
+
import { createHash } from 'node:crypto';
|
|
19
3
|
import { unsafeId } from '../types/ids/brand.js';
|
|
20
4
|
/** Casts without checking. The name is the warning. */
|
|
21
5
|
export function unchecked(value) {
|
|
22
6
|
return unsafeId(value);
|
|
23
7
|
}
|
|
8
|
+
/** Maps a readable fixture label to a stable, valid UUID without global state. */
|
|
9
|
+
export function fixtureUuid(label) {
|
|
10
|
+
const bytes = createHash('sha256').update(label).digest().subarray(0, 16);
|
|
11
|
+
bytes[6] = ((bytes[6] ?? 0) & 0x0f) | 0x40;
|
|
12
|
+
bytes[8] = ((bytes[8] ?? 0) & 0x3f) | 0x80;
|
|
13
|
+
const hex = bytes.toString('hex');
|
|
14
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
15
|
+
}
|
|
24
16
|
/**
|
|
25
|
-
* One entry per
|
|
17
|
+
* One entry per entity type, keyed by the bare concept rather than the
|
|
26
18
|
* type name — `fixtureId.run('a')`, not `fixtureId.RunId('a')`.
|
|
27
19
|
*/
|
|
28
20
|
export const fixtureId = {
|
|
29
|
-
run: (suffix) => unsafeId(`run_${suffix}`),
|
|
30
|
-
message: (suffix) => unsafeId(`msg_${suffix}`),
|
|
31
|
-
session: (suffix) => unsafeId(`ses_${suffix}`),
|
|
32
|
-
toolCall: (suffix) => unsafeId(`call_${suffix}`),
|
|
33
|
-
activity: (suffix) => unsafeId(`act_${suffix}`),
|
|
34
|
-
task: (suffix) => unsafeId(`task_${suffix}`),
|
|
35
|
-
plan: (suffix) => unsafeId(`plan_${suffix}`),
|
|
36
|
-
knowledgeBase: (suffix) => unsafeId(`kb_${suffix}`),
|
|
37
|
-
document: (suffix) => unsafeId(`doc_${suffix}`),
|
|
38
|
-
chunk: (suffix) => unsafeId(`chk_${suffix}`),
|
|
39
|
-
connector: (suffix) => unsafeId(`conn_${suffix}`),
|
|
40
|
-
connectorInstance: (suffix) => unsafeId(`ci_${suffix}`),
|
|
41
|
-
tenant: (suffix) => unsafeId(`tnt_${suffix}`),
|
|
42
|
-
credential: (suffix) => unsafeId(`cred_${suffix}`),
|
|
43
|
-
executionContext: (suffix) => unsafeId(`ectx_${suffix}`),
|
|
44
|
-
mCPServer: (suffix) => unsafeId(`mcp_${suffix}`),
|
|
45
|
-
mCPClient: (suffix) => unsafeId(`mcpc_${suffix}`),
|
|
46
|
-
mCPSession: (suffix) => unsafeId(`mcps_${suffix}`),
|
|
47
|
-
environment: (suffix) => unsafeId(`env_${suffix}`),
|
|
48
|
-
checkpoint: (suffix) => unsafeId(`cp_${suffix}`),
|
|
49
|
-
lock: (suffix) => unsafeId(`lock_${suffix}`),
|
|
50
|
-
advisory: (suffix) => unsafeId(`adv_${suffix}`),
|
|
51
|
-
advisoryCall: (suffix) => unsafeId(`advc_${suffix}`),
|
|
52
|
-
emergencySave: (suffix) => unsafeId(`esave_${suffix}`),
|
|
53
|
-
memory: (suffix) => unsafeId(`mem_${suffix}`),
|
|
54
|
-
plugin: (suffix) => unsafeId(`plg_${suffix}`),
|
|
55
|
-
sandbox: (suffix) => unsafeId(`sbx_${suffix}`),
|
|
56
|
-
auditEvent: (suffix) => unsafeId(`aud_${suffix}`),
|
|
57
|
-
user: (suffix) => unsafeId(`usr_${suffix}`),
|
|
58
|
-
agent: (suffix) => unsafeId(`agt_${suffix}`),
|
|
59
|
-
memoryStoreRef: (suffix) => unsafeId(`mms_${suffix}`),
|
|
60
|
-
vaultRef: (suffix) => unsafeId(`vlt_${suffix}`),
|
|
61
|
-
knowledgeBaseRef: (suffix) => unsafeId(`kbs_${suffix}`),
|
|
62
|
-
project: (suffix) => unsafeId(`prj_${suffix}`),
|
|
63
|
-
topic: (suffix) => unsafeId(`top_${suffix}`),
|
|
64
|
-
subSession: (suffix) => unsafeId(`sub_${suffix}`),
|
|
65
|
-
handoff: (suffix) => unsafeId(`hof_${suffix}`),
|
|
66
|
-
workspace: (suffix) => unsafeId(`wsp_${suffix}`),
|
|
67
|
-
summary: (suffix) => unsafeId(`sum_${suffix}`),
|
|
68
|
-
deliverable: (suffix) => unsafeId(`del_${suffix}`),
|
|
21
|
+
run: (suffix) => unsafeId(fixtureUuid(`run_${suffix}`)),
|
|
22
|
+
message: (suffix) => unsafeId(fixtureUuid(`msg_${suffix}`)),
|
|
23
|
+
session: (suffix) => unsafeId(fixtureUuid(`ses_${suffix}`)),
|
|
24
|
+
toolCall: (suffix) => unsafeId(fixtureUuid(`call_${suffix}`)),
|
|
25
|
+
activity: (suffix) => unsafeId(fixtureUuid(`act_${suffix}`)),
|
|
26
|
+
task: (suffix) => unsafeId(fixtureUuid(`task_${suffix}`)),
|
|
27
|
+
plan: (suffix) => unsafeId(fixtureUuid(`plan_${suffix}`)),
|
|
28
|
+
knowledgeBase: (suffix) => unsafeId(fixtureUuid(`kb_${suffix}`)),
|
|
29
|
+
document: (suffix) => unsafeId(fixtureUuid(`doc_${suffix}`)),
|
|
30
|
+
chunk: (suffix) => unsafeId(fixtureUuid(`chk_${suffix}`)),
|
|
31
|
+
connector: (suffix) => unsafeId(fixtureUuid(`conn_${suffix}`)),
|
|
32
|
+
connectorInstance: (suffix) => unsafeId(fixtureUuid(`ci_${suffix}`)),
|
|
33
|
+
tenant: (suffix) => unsafeId(fixtureUuid(`tnt_${suffix}`)),
|
|
34
|
+
credential: (suffix) => unsafeId(fixtureUuid(`cred_${suffix}`)),
|
|
35
|
+
executionContext: (suffix) => unsafeId(fixtureUuid(`ectx_${suffix}`)),
|
|
36
|
+
mCPServer: (suffix) => unsafeId(fixtureUuid(`mcp_${suffix}`)),
|
|
37
|
+
mCPClient: (suffix) => unsafeId(fixtureUuid(`mcpc_${suffix}`)),
|
|
38
|
+
mCPSession: (suffix) => unsafeId(fixtureUuid(`mcps_${suffix}`)),
|
|
39
|
+
environment: (suffix) => unsafeId(fixtureUuid(`env_${suffix}`)),
|
|
40
|
+
checkpoint: (suffix) => unsafeId(fixtureUuid(`cp_${suffix}`)),
|
|
41
|
+
lock: (suffix) => unsafeId(fixtureUuid(`lock_${suffix}`)),
|
|
42
|
+
advisory: (suffix) => unsafeId(fixtureUuid(`adv_${suffix}`)),
|
|
43
|
+
advisoryCall: (suffix) => unsafeId(fixtureUuid(`advc_${suffix}`)),
|
|
44
|
+
emergencySave: (suffix) => unsafeId(fixtureUuid(`esave_${suffix}`)),
|
|
45
|
+
memory: (suffix) => unsafeId(fixtureUuid(`mem_${suffix}`)),
|
|
46
|
+
plugin: (suffix) => unsafeId(fixtureUuid(`plg_${suffix}`)),
|
|
47
|
+
sandbox: (suffix) => unsafeId(fixtureUuid(`sbx_${suffix}`)),
|
|
48
|
+
auditEvent: (suffix) => unsafeId(fixtureUuid(`aud_${suffix}`)),
|
|
49
|
+
user: (suffix) => unsafeId(fixtureUuid(`usr_${suffix}`)),
|
|
50
|
+
agent: (suffix) => unsafeId(fixtureUuid(`agt_${suffix}`)),
|
|
51
|
+
memoryStoreRef: (suffix) => unsafeId(fixtureUuid(`mms_${suffix}`)),
|
|
52
|
+
vaultRef: (suffix) => unsafeId(fixtureUuid(`vlt_${suffix}`)),
|
|
53
|
+
knowledgeBaseRef: (suffix) => unsafeId(fixtureUuid(`kbs_${suffix}`)),
|
|
54
|
+
project: (suffix) => unsafeId(fixtureUuid(`prj_${suffix}`)),
|
|
55
|
+
topic: (suffix) => unsafeId(fixtureUuid(`top_${suffix}`)),
|
|
56
|
+
subSession: (suffix) => unsafeId(fixtureUuid(`sub_${suffix}`)),
|
|
57
|
+
handoff: (suffix) => unsafeId(fixtureUuid(`hof_${suffix}`)),
|
|
58
|
+
workspace: (suffix) => unsafeId(fixtureUuid(`wsp_${suffix}`)),
|
|
59
|
+
summary: (suffix) => unsafeId(fixtureUuid(`sum_${suffix}`)),
|
|
60
|
+
deliverable: (suffix) => unsafeId(fixtureUuid(`del_${suffix}`)),
|
|
69
61
|
};
|
|
70
62
|
//# sourceMappingURL=ids.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/test-support/ids.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/test-support/ids.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAEhF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAA;AA4ChD,uDAAuD;AACvD,MAAM,UAAU,SAAS,CAAmB,KAAa;IACxD,OAAO,QAAQ,CAAI,KAAK,CAAC,CAAA;AAC1B,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CAAC,KAAa;IACxC,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACzE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1C,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IACjC,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;AAC3G,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,GAAG,EAAE,CAAC,MAAc,EAAS,EAAE,CAAC,QAAQ,CAAQ,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC7E,OAAO,EAAE,CAAC,MAAc,EAAa,EAAE,CAAC,QAAQ,CAAY,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACzF,OAAO,EAAE,CAAC,MAAc,EAAa,EAAE,CAAC,QAAQ,CAAY,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACzF,QAAQ,EAAE,CAAC,MAAc,EAAc,EAAE,CAAC,QAAQ,CAAa,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IAC7F,QAAQ,EAAE,CAAC,MAAc,EAAc,EAAE,CAAC,QAAQ,CAAa,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC5F,IAAI,EAAE,CAAC,MAAc,EAAU,EAAE,CAAC,QAAQ,CAAS,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACjF,IAAI,EAAE,CAAC,MAAc,EAAU,EAAE,CAAC,QAAQ,CAAS,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACjF,aAAa,EAAE,CAAC,MAAc,EAAmB,EAAE,CAClD,QAAQ,CAAkB,WAAW,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;IACvD,QAAQ,EAAE,CAAC,MAAc,EAAc,EAAE,CAAC,QAAQ,CAAa,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC5F,KAAK,EAAE,CAAC,MAAc,EAAW,EAAE,CAAC,QAAQ,CAAU,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACnF,SAAS,EAAE,CAAC,MAAc,EAAe,EAAE,CAAC,QAAQ,CAAc,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IAChG,iBAAiB,EAAE,CAAC,MAAc,EAAuB,EAAE,CAC1D,QAAQ,CAAsB,WAAW,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,MAAc,EAAY,EAAE,CAAC,QAAQ,CAAW,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACtF,UAAU,EAAE,CAAC,MAAc,EAAgB,EAAE,CAC5C,QAAQ,CAAe,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACtD,gBAAgB,EAAE,CAAC,MAAc,EAAsB,EAAE,CACxD,QAAQ,CAAqB,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IAC5D,SAAS,EAAE,CAAC,MAAc,EAAe,EAAE,CAAC,QAAQ,CAAc,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC/F,SAAS,EAAE,CAAC,MAAc,EAAe,EAAE,CAAC,QAAQ,CAAc,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IAChG,UAAU,EAAE,CAAC,MAAc,EAAgB,EAAE,CAC5C,QAAQ,CAAe,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACtD,WAAW,EAAE,CAAC,MAAc,EAAiB,EAAE,CAC9C,QAAQ,CAAgB,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACtD,UAAU,EAAE,CAAC,MAAc,EAAgB,EAAE,CAAC,QAAQ,CAAe,WAAW,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC;IACjG,IAAI,EAAE,CAAC,MAAc,EAAU,EAAE,CAAC,QAAQ,CAAS,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACjF,QAAQ,EAAE,CAAC,MAAc,EAAc,EAAE,CAAC,QAAQ,CAAa,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC5F,YAAY,EAAE,CAAC,MAAc,EAAkB,EAAE,CAChD,QAAQ,CAAiB,WAAW,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACxD,aAAa,EAAE,CAAC,MAAc,EAAmB,EAAE,CAClD,QAAQ,CAAkB,WAAW,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,MAAc,EAAY,EAAE,CAAC,QAAQ,CAAW,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,EAAE,CAAC,MAAc,EAAY,EAAE,CAAC,QAAQ,CAAW,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,EAAE,CAAC,MAAc,EAAa,EAAE,CAAC,QAAQ,CAAY,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACzF,UAAU,EAAE,CAAC,MAAc,EAAgB,EAAE,CAC5C,QAAQ,CAAe,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACrD,IAAI,EAAE,CAAC,MAAc,EAAU,EAAE,CAAC,QAAQ,CAAS,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAChF,KAAK,EAAE,CAAC,MAAc,EAAW,EAAE,CAAC,QAAQ,CAAU,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACnF,cAAc,EAAE,CAAC,MAAc,EAAkB,EAAE,CAClD,QAAQ,CAAiB,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACvD,QAAQ,EAAE,CAAC,MAAc,EAAY,EAAE,CAAC,QAAQ,CAAW,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACxF,gBAAgB,EAAE,CAAC,MAAc,EAAoB,EAAE,CACtD,QAAQ,CAAmB,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACzD,OAAO,EAAE,CAAC,MAAc,EAAa,EAAE,CAAC,QAAQ,CAAY,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACzF,KAAK,EAAE,CAAC,MAAc,EAAW,EAAE,CAAC,QAAQ,CAAU,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACnF,UAAU,EAAE,CAAC,MAAc,EAAgB,EAAE,CAC5C,QAAQ,CAAe,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACrD,OAAO,EAAE,CAAC,MAAc,EAAa,EAAE,CAAC,QAAQ,CAAY,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACzF,SAAS,EAAE,CAAC,MAAc,EAAe,EAAE,CAAC,QAAQ,CAAc,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IAC/F,OAAO,EAAE,CAAC,MAAc,EAAa,EAAE,CAAC,QAAQ,CAAY,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;IACzF,WAAW,EAAE,CAAC,MAAc,EAAiB,EAAE,CAC9C,QAAQ,CAAgB,WAAW,CAAC,OAAO,MAAM,EAAE,CAAC,CAAC;CAC7C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/advisory/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG/D,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;CACrC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/advisory/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAG/D,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;CACrC;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,cAAc,EAAE,CAqJ/E"}
|
|
@@ -61,7 +61,9 @@ export function buildAdvisoryTools(opts) {
|
|
|
61
61
|
permissions: [],
|
|
62
62
|
readOnly: true,
|
|
63
63
|
destructive: false,
|
|
64
|
-
|
|
64
|
+
// Consultations debit one run account and one per-run advisory quota.
|
|
65
|
+
// Serial execution makes the next admission see the preceding receipt.
|
|
66
|
+
concurrencySafe: false,
|
|
65
67
|
async execute({ advisor_id, question, domain, urgency, include_context }) {
|
|
66
68
|
const budgetCheck = advisoryCtx.checkBudget();
|
|
67
69
|
if (!budgetCheck.allowed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/advisory/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/advisory/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
/** The refusal when a sandbox cannot host a detached process; exported so the test states the same words. */
|
|
2
|
+
export declare const SANDBOX_CANNOT_DETACH = "run_in_background is unavailable: this sandbox cannot start a detached process, and the job will not be run on the host to get around it. Run the command in the foreground, or raise `timeout` up to the tool maximum.";
|
|
1
3
|
export declare const BashTool: import("../../public-types.js").ToolDefinition<{
|
|
2
4
|
timeout: number;
|
|
3
5
|
command: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/bash.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bash.d.ts","sourceRoot":"","sources":["../../../src/tools/builtins/bash.ts"],"names":[],"mappings":"AAoRA,6GAA6G;AAC7G,eAAO,MAAM,qBAAqB,4NACwL,CAAA;AAE1N,eAAO,MAAM,QAAQ;;;;EAqOnB,CAAA"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { StringDecoder } from 'node:string_decoder';
|
|
3
3
|
import { z } from 'zod';
|
|
4
|
+
import { SANDBOX_KILL_GRACE_MS } from '../../constants/sandbox/index.js';
|
|
4
5
|
import { DANGEROUS_PATTERNS } from '../../constants/tools/index.js';
|
|
6
|
+
import { killTree } from '../../process/kill-tree.js';
|
|
7
|
+
import { subscribeToAbort } from '../../utils/abort.js';
|
|
5
8
|
import { defineTool } from '../defineTool.js';
|
|
6
9
|
import { scrubInheritedEnv } from '../env-scrub.js';
|
|
7
|
-
const execAsync = promisify(exec);
|
|
8
10
|
// Namzu owns its own bash timeout knob — `NAMZU_BASH_TIMEOUT_MS`.
|
|
9
11
|
// The Vandal fallback (`VANDAL_NAMZU_TIMEOUT_MS`) lived here as a
|
|
10
12
|
// historical bridge while Namzu was carved out of the Vandal repo,
|
|
@@ -49,30 +51,198 @@ const inputSchema = z.object({
|
|
|
49
51
|
.optional()
|
|
50
52
|
.describe('Start the command as a background job and return its id immediately, instead of waiting. The turn is not held open; read its output with the `job` tool. Use for watchers, dev servers and long builds. Do NOT write `cmd &` yourself — under the sandbox the shell that backgrounds it exits immediately and takes the job with it.'),
|
|
51
53
|
});
|
|
54
|
+
const MAX_SHELL_PROGRESS_CHARS = 160;
|
|
55
|
+
/** Keep a bounded tail even when a process never writes a newline. */
|
|
56
|
+
function appendProgressTail(previous, chunk, start, end) {
|
|
57
|
+
return (previous + chunk.slice(Math.max(start, end - MAX_SHELL_PROGRESS_CHARS), end)).slice(-MAX_SHELL_PROGRESS_CHARS);
|
|
58
|
+
}
|
|
59
|
+
/** Clipping a UTF-16 string must not display half of a surrogate pair. */
|
|
60
|
+
function progressLine(value) {
|
|
61
|
+
let line = value.trim();
|
|
62
|
+
const first = line.charCodeAt(0);
|
|
63
|
+
if (first >= 0xdc00 && first <= 0xdfff)
|
|
64
|
+
line = line.slice(1);
|
|
65
|
+
const last = line.charCodeAt(line.length - 1);
|
|
66
|
+
if (last >= 0xd800 && last <= 0xdbff)
|
|
67
|
+
line = line.slice(0, -1);
|
|
68
|
+
return line;
|
|
69
|
+
}
|
|
52
70
|
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* replaces it as the next arrives, so sending a whole chunk sends a wall
|
|
57
|
-
* of text into a slot that shows one line of it. A chunk usually ends
|
|
58
|
-
* mid-line and usually ends with a newline, so the last NON-EMPTY line is
|
|
59
|
-
* the most recent complete thing the command actually said.
|
|
60
|
-
*
|
|
61
|
-
* Progress is capped rather than truncated with an ellipsis: this is
|
|
62
|
-
* glanced at, and a marker in a line nobody reads to the end is noise.
|
|
71
|
+
* One latest line per stream, independent of transport chunk boundaries.
|
|
72
|
+
* Reports stay synchronous: the executor owns coalescing and backpressure.
|
|
73
|
+
* This projection adds neither an output log nor a queue of pending reports.
|
|
63
74
|
*/
|
|
64
|
-
function
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
75
|
+
function shellProgress(report) {
|
|
76
|
+
if (!report)
|
|
77
|
+
return undefined;
|
|
78
|
+
const partial = { stdout: '', stderr: '' };
|
|
79
|
+
let lastMessage = '';
|
|
80
|
+
return ({ stream, data }) => {
|
|
81
|
+
let line = partial[stream];
|
|
82
|
+
let latest = '';
|
|
83
|
+
let start = 0;
|
|
84
|
+
// Scan delimiters without allocating an array for arbitrarily chatty output.
|
|
85
|
+
for (const match of data.matchAll(/[\r\n]/g)) {
|
|
86
|
+
line = appendProgressTail(line, data, start, match.index);
|
|
87
|
+
latest = progressLine(line) || latest;
|
|
88
|
+
line = '';
|
|
89
|
+
start = match.index + 1;
|
|
90
|
+
}
|
|
91
|
+
line = appendProgressTail(line, data, start, data.length);
|
|
92
|
+
partial[stream] = line;
|
|
93
|
+
const message = progressLine(line) || latest;
|
|
94
|
+
if (!message || message === lastMessage)
|
|
95
|
+
return;
|
|
96
|
+
lastMessage = message;
|
|
97
|
+
try {
|
|
98
|
+
report(message);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
// A diagnostic observer cannot break the process output reader.
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Keep the shell's process group until inherited pipes close. Node's exec
|
|
107
|
+
* timeout/AbortSignal kills only the wrapper and closes its pipes immediately,
|
|
108
|
+
* leaving the command and its descendants running after the promise settles.
|
|
109
|
+
*/
|
|
110
|
+
function execHostShell(command, options) {
|
|
111
|
+
options.signal?.throwIfAborted();
|
|
112
|
+
return new Promise((resolve, reject) => {
|
|
113
|
+
const child = spawn(command, {
|
|
114
|
+
cwd: options.cwd,
|
|
115
|
+
env: options.env,
|
|
116
|
+
shell: true,
|
|
117
|
+
// killTree's negative PID must never target the caller's own group.
|
|
118
|
+
detached: process.platform !== 'win32',
|
|
119
|
+
});
|
|
120
|
+
const captures = {
|
|
121
|
+
stdout: {
|
|
122
|
+
chunks: [],
|
|
123
|
+
bytes: 0,
|
|
124
|
+
truncated: false,
|
|
125
|
+
decoder: new StringDecoder('utf8'),
|
|
126
|
+
},
|
|
127
|
+
stderr: {
|
|
128
|
+
chunks: [],
|
|
129
|
+
bytes: 0,
|
|
130
|
+
truncated: false,
|
|
131
|
+
decoder: new StringDecoder('utf8'),
|
|
132
|
+
},
|
|
133
|
+
};
|
|
134
|
+
let cause;
|
|
135
|
+
let failure;
|
|
136
|
+
let escalation;
|
|
137
|
+
let disposeAbort;
|
|
138
|
+
let closed = false;
|
|
139
|
+
const cancel = (origin) => {
|
|
140
|
+
if (closed || cause !== undefined)
|
|
141
|
+
return;
|
|
142
|
+
cause = origin;
|
|
143
|
+
escalation = setTimeout(() => {
|
|
144
|
+
escalation = undefined;
|
|
145
|
+
killTree(child, 'SIGKILL');
|
|
146
|
+
// A descendant can deliberately start a separate session. It is
|
|
147
|
+
// outside this group, but its inherited pipes must not hold the
|
|
148
|
+
// cancelled call forever. Keep what was captured during grace.
|
|
149
|
+
child.stdin?.destroy();
|
|
150
|
+
child.stdout?.destroy();
|
|
151
|
+
child.stderr?.destroy();
|
|
152
|
+
}, SANDBOX_KILL_GRACE_MS);
|
|
153
|
+
escalation.unref?.();
|
|
154
|
+
killTree(child, 'SIGTERM');
|
|
155
|
+
};
|
|
156
|
+
const capture = (stream, chunk) => {
|
|
157
|
+
const state = captures[stream];
|
|
158
|
+
const kept = Math.min(chunk.length, options.maxBuffer - state.bytes);
|
|
159
|
+
if (kept > 0) {
|
|
160
|
+
state.chunks.push(Buffer.from(chunk.subarray(0, kept)));
|
|
161
|
+
state.bytes += kept;
|
|
162
|
+
}
|
|
163
|
+
if (kept < chunk.length) {
|
|
164
|
+
state.truncated = true;
|
|
165
|
+
if (cause === undefined) {
|
|
166
|
+
failure = Object.assign(new RangeError(`${stream} maxBuffer length exceeded`), {
|
|
167
|
+
code: 'ERR_CHILD_PROCESS_STDIO_MAXBUFFER',
|
|
168
|
+
});
|
|
169
|
+
cancel('maxBuffer');
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
if (options.onOutput) {
|
|
173
|
+
const data = state.decoder.write(chunk);
|
|
174
|
+
if (data)
|
|
175
|
+
options.onOutput({ stream, data });
|
|
176
|
+
}
|
|
177
|
+
};
|
|
178
|
+
const onStdout = (chunk) => capture('stdout', chunk);
|
|
179
|
+
const onStderr = (chunk) => capture('stderr', chunk);
|
|
180
|
+
child.stdout?.on('data', onStdout);
|
|
181
|
+
child.stderr?.on('data', onStderr);
|
|
182
|
+
child.once('error', (error) => {
|
|
183
|
+
failure ??= error;
|
|
184
|
+
});
|
|
185
|
+
child.once('close', (code, signal) => {
|
|
186
|
+
closed = true;
|
|
187
|
+
disposeAbort?.();
|
|
188
|
+
clearTimeout(deadline);
|
|
189
|
+
if (escalation !== undefined) {
|
|
190
|
+
clearTimeout(escalation);
|
|
191
|
+
// Pipes closing can precede a descendant which closed its copies.
|
|
192
|
+
// Force the owned group now instead of retaining its PID in a timer.
|
|
193
|
+
killTree(child, 'SIGKILL');
|
|
194
|
+
}
|
|
195
|
+
child.stdout?.off('data', onStdout);
|
|
196
|
+
child.stderr?.off('data', onStderr);
|
|
197
|
+
for (const stream of ['stdout', 'stderr']) {
|
|
198
|
+
const data = captures[stream].decoder.end();
|
|
199
|
+
if (data)
|
|
200
|
+
options.onOutput?.({ stream, data });
|
|
201
|
+
}
|
|
202
|
+
const decodeCapture = (stream) => {
|
|
203
|
+
const state = captures[stream];
|
|
204
|
+
const bytes = Buffer.concat(state.chunks, state.bytes);
|
|
205
|
+
// Do not flush an incomplete UTF-8 character cut by our byte cap.
|
|
206
|
+
return state.truncated ? new StringDecoder('utf8').write(bytes) : bytes.toString('utf8');
|
|
207
|
+
};
|
|
208
|
+
const stdout = decodeCapture('stdout');
|
|
209
|
+
const stderr = decodeCapture('stderr');
|
|
210
|
+
if (!failure && cause === undefined && code === 0 && signal === null) {
|
|
211
|
+
resolve({ stdout, stderr });
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
const error = failure ??
|
|
215
|
+
(cause === 'caller'
|
|
216
|
+
? Object.assign(new Error('The operation was aborted', { cause: options.signal?.reason }), {
|
|
217
|
+
name: 'AbortError',
|
|
218
|
+
code: 'ABORT_ERR',
|
|
219
|
+
})
|
|
220
|
+
: new Error(`Command failed: ${command}\n${stderr}`));
|
|
221
|
+
reject(Object.assign(error, {
|
|
222
|
+
stdout,
|
|
223
|
+
stderr,
|
|
224
|
+
stdoutTruncated: captures.stdout.truncated,
|
|
225
|
+
stderrTruncated: captures.stderr.truncated,
|
|
226
|
+
code: failure?.code ?? (cause === 'caller' ? 'ABORT_ERR' : code),
|
|
227
|
+
killed: cause !== undefined,
|
|
228
|
+
signal,
|
|
229
|
+
timedOut: cause === 'timeout',
|
|
230
|
+
}));
|
|
231
|
+
});
|
|
232
|
+
const deadline = setTimeout(() => cancel('timeout'), options.timeout);
|
|
233
|
+
deadline.unref?.();
|
|
234
|
+
if (options.signal) {
|
|
235
|
+
disposeAbort = subscribeToAbort(options.signal, () => cancel('caller'));
|
|
236
|
+
if (options.signal.aborted)
|
|
237
|
+
cancel('caller');
|
|
238
|
+
}
|
|
239
|
+
});
|
|
72
240
|
}
|
|
73
241
|
function isDangerousCommand(command) {
|
|
74
242
|
return DANGEROUS_PATTERNS.some((pattern) => pattern.test(command));
|
|
75
243
|
}
|
|
244
|
+
/** The refusal when a sandbox cannot host a detached process; exported so the test states the same words. */
|
|
245
|
+
export const SANDBOX_CANNOT_DETACH = 'run_in_background is unavailable: this sandbox cannot start a detached process, and the job will not be run on the host to get around it. Run the command in the foreground, or raise `timeout` up to the tool maximum.';
|
|
76
246
|
export const BashTool = defineTool({
|
|
77
247
|
name: 'bash',
|
|
78
248
|
description: 'Executes a bash command and returns stdout/stderr output. Command timeout is configurable. The `command` parameter is required — never call this tool with empty arguments. For very long content (e.g. building a large file), prefer `write` for the opening and `edit` with insertLine: "end" for follow-up chunks over a heredoc to avoid hitting the output token limit mid-stream.',
|
|
@@ -101,20 +271,16 @@ export const BashTool = defineTool({
|
|
|
101
271
|
};
|
|
102
272
|
}
|
|
103
273
|
if (input.run_in_background) {
|
|
104
|
-
//
|
|
105
|
-
//
|
|
106
|
-
//
|
|
107
|
-
//
|
|
108
|
-
//
|
|
109
|
-
|
|
110
|
-
// composition. This explicit check also protects direct tool callers
|
|
111
|
-
// and says why the capability is absent instead of misdiagnosing the
|
|
112
|
-
// host as having configured no registry.
|
|
113
|
-
if (context.sandbox) {
|
|
274
|
+
// A sandboxed run gets a registry only when its sandbox can start a
|
|
275
|
+
// detached process inside the boundary (`Sandbox.spawnDetached`);
|
|
276
|
+
// the executor withholds it otherwise. This check is for direct
|
|
277
|
+
// tool callers, who could hand a host registry and a sandbox to the
|
|
278
|
+
// same context: the boolean is never an escape from the boundary.
|
|
279
|
+
if (context.sandbox && context.sandbox.spawnDetached === undefined) {
|
|
114
280
|
return {
|
|
115
281
|
success: false,
|
|
116
282
|
output: '',
|
|
117
|
-
error:
|
|
283
|
+
error: SANDBOX_CANNOT_DETACH,
|
|
118
284
|
};
|
|
119
285
|
}
|
|
120
286
|
// Refused, not degraded to `cmd &`. The fallback is not a lesser
|
|
@@ -169,6 +335,7 @@ export const BashTool = defineTool({
|
|
|
169
335
|
// sandbox can be added later as an explicit
|
|
170
336
|
// `SandboxExecOptions.workspaceRelativeCwd` field; the bash
|
|
171
337
|
// builtin doesn't have that requirement today.
|
|
338
|
+
const onOutput = shellProgress(context.report);
|
|
172
339
|
if (context.sandbox) {
|
|
173
340
|
const result = await context.sandbox.exec('/bin/sh', ['-c', input.command], {
|
|
174
341
|
timeout: input.timeout,
|
|
@@ -183,21 +350,8 @@ export const BashTool = defineTool({
|
|
|
183
350
|
// durable transcript — so this is a progress signal, not a
|
|
184
351
|
// second copy of the output. `result.stdout` remains the
|
|
185
352
|
// answer the model is given.
|
|
186
|
-
onOutput
|
|
187
|
-
? ({ data }) => {
|
|
188
|
-
const line = lastNonEmptyLine(data);
|
|
189
|
-
if (line)
|
|
190
|
-
context.report?.(line);
|
|
191
|
-
}
|
|
192
|
-
: undefined,
|
|
353
|
+
onOutput,
|
|
193
354
|
});
|
|
194
|
-
if (result.timedOut) {
|
|
195
|
-
return {
|
|
196
|
-
success: false,
|
|
197
|
-
output: '',
|
|
198
|
-
error: `Command timed out after ${input.timeout}ms`,
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
355
|
// The sandbox reports when IT clipped a stream. Dropping those
|
|
202
356
|
// flags meant the model saw a complete-looking result that had
|
|
203
357
|
// silently lost its tail — and the kernel's own convention is
|
|
@@ -210,39 +364,30 @@ export const BashTool = defineTool({
|
|
|
210
364
|
result.stdout ? `STDOUT:\n${result.stdout}` : '',
|
|
211
365
|
result.stderr ? `STDERR:\n${result.stderr}` : '',
|
|
212
366
|
clipped.length > 0
|
|
213
|
-
? `[${clipped.join(' and ')} was truncated by the sandbox output cap
|
|
367
|
+
? `[${clipped.join(' and ')} was truncated by the sandbox output cap. The omitted output is unavailable in this result. Use a saved artifact or a read-only observation; do not repeat a state-changing action to recover its output.]`
|
|
214
368
|
: '',
|
|
215
369
|
]
|
|
216
370
|
.filter(Boolean)
|
|
217
371
|
.join('\n\n');
|
|
218
372
|
return {
|
|
219
|
-
success: result.exitCode === 0,
|
|
373
|
+
success: !result.timedOut && result.exitCode === 0,
|
|
220
374
|
output: output || '(no output)',
|
|
221
375
|
data: {
|
|
222
376
|
exitCode: result.exitCode,
|
|
223
377
|
sandboxed: true,
|
|
378
|
+
timedOut: result.timedOut,
|
|
224
379
|
stdoutTruncated: result.stdoutTruncated ?? false,
|
|
225
380
|
stderrTruncated: result.stderrTruncated ?? false,
|
|
226
381
|
},
|
|
227
|
-
error: result.
|
|
382
|
+
error: result.timedOut
|
|
383
|
+
? `Command timed out after ${input.timeout}ms. Any captured output before the deadline is above.`
|
|
384
|
+
: result.exitCode !== 0
|
|
385
|
+
? `Command exited with code ${result.exitCode}`
|
|
386
|
+
: undefined,
|
|
228
387
|
};
|
|
229
388
|
}
|
|
230
|
-
//
|
|
231
|
-
// a
|
|
232
|
-
// and the executor's deadline could only ever DETACH from the tool
|
|
233
|
-
// rather than end the work it started.
|
|
234
|
-
// `exec` REJECTS on a non-zero exit, on its own timeout, and on a
|
|
235
|
-
// kill — and the rejection carries `stdout`, `stderr`, `code` and
|
|
236
|
-
// `killed`. Letting it propagate threw all of that away: the registry
|
|
237
|
-
// turned the throw into a structured failure, so the model was told a
|
|
238
|
-
// command failed and not one word about how.
|
|
239
|
-
//
|
|
240
|
-
// That is the common case, not an edge one. A failing test run and a
|
|
241
|
-
// failing build are the two things an agent runs bash for most, and
|
|
242
|
-
// both exit non-zero WITH the output that explains why. The sandbox
|
|
243
|
-
// branch above already reports all of it; this branch did not, so the
|
|
244
|
-
// same command told the model two different amounts depending on where
|
|
245
|
-
// it happened to run.
|
|
389
|
+
// The owned runner retains stdout/stderr on non-zero exit and timeout,
|
|
390
|
+
// so a failed command still returns the evidence explaining its failure.
|
|
246
391
|
// The inherited half is scrubbed; `context.env` is not. Inheritance is
|
|
247
392
|
// implicit — nobody decided this command should see `process.env` — while
|
|
248
393
|
// a `context.env` key is one a host wrote on purpose. See
|
|
@@ -250,12 +395,13 @@ export const BashTool = defineTool({
|
|
|
250
395
|
// the sandbox, and for what it therefore does not catch.
|
|
251
396
|
const inherited = scrubInheritedEnv();
|
|
252
397
|
try {
|
|
253
|
-
const { stdout, stderr } = await
|
|
398
|
+
const { stdout, stderr } = await execHostShell(input.command, {
|
|
254
399
|
cwd: context.workingDirectory,
|
|
255
400
|
timeout: input.timeout,
|
|
256
401
|
env: { ...inherited.env, ...context.env },
|
|
257
402
|
maxBuffer: DEFAULT_BASH_MAX_BUFFER_BYTES,
|
|
258
403
|
signal: context.abortSignal,
|
|
404
|
+
onOutput,
|
|
259
405
|
});
|
|
260
406
|
return {
|
|
261
407
|
success: true,
|
|
@@ -268,17 +414,23 @@ export const BashTool = defineTool({
|
|
|
268
414
|
// A caller-owned Stop is the caller's, not a command failure.
|
|
269
415
|
if (context.abortSignal?.aborted)
|
|
270
416
|
throw err;
|
|
271
|
-
//
|
|
272
|
-
//
|
|
273
|
-
|
|
274
|
-
const timedOut = failure.killed === true && failure.signal === 'SIGTERM';
|
|
417
|
+
// A maxBuffer stop or an ordinary signal is not a deadline. The
|
|
418
|
+
// runner latches the first cancellation cause before signalling.
|
|
419
|
+
const timedOut = failure.timedOut === true;
|
|
275
420
|
const exitCode = typeof failure.code === 'number' ? failure.code : undefined;
|
|
421
|
+
const clipped = [
|
|
422
|
+
failure.stdoutTruncated ? 'stdout' : '',
|
|
423
|
+
failure.stderrTruncated ? 'stderr' : '',
|
|
424
|
+
].filter(Boolean);
|
|
276
425
|
// Only on the failure path. A successful command did not need to know,
|
|
277
426
|
// and appending this to every result would make the common case noisy
|
|
278
427
|
// to buy nothing. A failing one is exactly where "authentication
|
|
279
428
|
// failed" has to be distinguishable from "the variable was withheld".
|
|
280
429
|
const output = [
|
|
281
430
|
formatShellOutput(failure.stdout, failure.stderr),
|
|
431
|
+
clipped.length > 0
|
|
432
|
+
? `[${clipped.join(' and ')} ${clipped.length === 1 ? 'was' : 'were'} truncated by the host output cap. The omitted output is unavailable in this result.]`
|
|
433
|
+
: '',
|
|
282
434
|
describeWithheldEnv(inherited.dropped),
|
|
283
435
|
]
|
|
284
436
|
.filter(Boolean)
|
|
@@ -289,6 +441,8 @@ export const BashTool = defineTool({
|
|
|
289
441
|
data: {
|
|
290
442
|
...(exitCode !== undefined ? { exitCode } : {}),
|
|
291
443
|
timedOut,
|
|
444
|
+
stdoutTruncated: failure.stdoutTruncated ?? false,
|
|
445
|
+
stderrTruncated: failure.stderrTruncated ?? false,
|
|
292
446
|
...(failure.signal ? { signal: failure.signal } : {}),
|
|
293
447
|
},
|
|
294
448
|
error: timedOut
|