@namzu/sdk 34.1.0 → 35.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 +150 -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 +102 -0
- package/dist/provider/token-budget.js.map +1 -0
- package/dist/public-runtime.d.ts +12 -12
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +14 -9
- 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 +12 -9
- package/dist/runtime/query/executor.d.ts.map +1 -1
- package/dist/runtime/query/executor.js +107 -47
- 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 +35 -4
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +152 -52
- 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 +16 -5
- 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 +2 -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/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/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/provider/local.d.ts +3 -1
- package/dist/sandbox/provider/local.d.ts.map +1 -1
- package/dist/sandbox/provider/local.js +112 -12
- package/dist/sandbox/provider/local.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 +9 -11
- 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.js +3 -3
- package/dist/tools/builtins/glob.js.map +1 -1
- package/dist/tools/builtins/grep.js +2 -2
- package/dist/tools/builtins/grep.js.map +1 -1
- package/dist/tools/builtins/ls.js +2 -2
- 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 +27 -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 +27 -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 +1 -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 +114 -0
- package/src/public-runtime.ts +54 -27
- 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 +140 -59
- package/src/runtime/query/guard.ts +8 -0
- package/src/runtime/query/index.ts +201 -62
- package/src/runtime/query/iteration/index.ts +24 -6
- package/src/runtime/query/iteration/phases/compaction.ts +130 -31
- package/src/runtime/query/iteration/phases/context.ts +2 -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/plugin-hooks.ts +24 -2
- 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/provider/local.ts +123 -13
- 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 +11 -12
- package/src/tools/builtins/computer-use.ts +6 -2
- package/src/tools/builtins/edit.ts +2 -2
- package/src/tools/builtins/glob.ts +3 -3
- package/src/tools/builtins/grep.ts +2 -2
- package/src/tools/builtins/ls.ts +2 -2
- 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 +32 -0
- package/src/types/session/store.ts +8 -0
- package/src/types/tool/index.ts +28 -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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { join } from 'node:path'
|
|
1
2
|
import type { Span } from '@opentelemetry/api'
|
|
2
3
|
import type { AuthorizationGate } from '../../authorization/gate.js'
|
|
3
4
|
import { extractFromToolCall, extractFromToolResult } from '../../compaction/extractor.js'
|
|
@@ -47,10 +48,11 @@ import { toErrorMessage } from '../../utils/error.js'
|
|
|
47
48
|
import { generateToolCallId } from '../../utils/id.js'
|
|
48
49
|
import type { Logger } from '../../utils/logger.js'
|
|
49
50
|
import { compressShellOutput } from '../../utils/shell-compress.js'
|
|
50
|
-
import { type BackgroundJobRegistry, bindOwner } from '../jobs/registry.js'
|
|
51
|
+
import { type BackgroundJobRegistry, type JobProcess, bindOwner } from '../jobs/registry.js'
|
|
51
52
|
import type { ToolResultObservation } from './project-instructions.js'
|
|
52
53
|
import {
|
|
53
54
|
DEFAULT_MAX_TOOL_OUTPUT_CHARS,
|
|
55
|
+
type ToolOutputBudgetResult,
|
|
54
56
|
applyToolOutputBudget,
|
|
55
57
|
describeDroppedContent,
|
|
56
58
|
measureContentBytes,
|
|
@@ -290,6 +292,8 @@ export interface ToolExecutorConfig {
|
|
|
290
292
|
tools: ToolRegistryContract
|
|
291
293
|
runId: RunId
|
|
292
294
|
workingDirectory: string
|
|
295
|
+
/** See `ToolContext.additionalDirectories`. */
|
|
296
|
+
additionalDirectories?: readonly string[]
|
|
293
297
|
/**
|
|
294
298
|
* Read LIVE, not frozen at run start.
|
|
295
299
|
*
|
|
@@ -319,6 +323,13 @@ export interface ToolExecutorConfig {
|
|
|
319
323
|
* that fallback is a lie rather than a lesser version.
|
|
320
324
|
*/
|
|
321
325
|
backgroundJobs?: BackgroundJobRegistry
|
|
326
|
+
/**
|
|
327
|
+
* Which owner the run's jobs are bound to. The run id by default, which
|
|
328
|
+
* scopes them to the run; a host that wants jobs to outlive a turn (a
|
|
329
|
+
* dev server started in one, read in the next) binds them to its
|
|
330
|
+
* session and stops them itself when the session ends.
|
|
331
|
+
*/
|
|
332
|
+
backgroundJobOwner?: string
|
|
322
333
|
|
|
323
334
|
/**
|
|
324
335
|
* Where the `skill` tool reads from.
|
|
@@ -749,6 +760,14 @@ export class ToolExecutor {
|
|
|
749
760
|
observations.push(observation)
|
|
750
761
|
}
|
|
751
762
|
const baseContext = this.buildToolContext(recordObservation)
|
|
763
|
+
// A model response is the ownership boundary for concurrent siblings.
|
|
764
|
+
// Scope the first call id to its durable run: custom providers are not
|
|
765
|
+
// required to make call ids globally unique, so the raw id alone could
|
|
766
|
+
// collide with a later run retained by a host-side activity monitor.
|
|
767
|
+
const firstToolUseId = toolCalls[0]?.id
|
|
768
|
+
const toolBatchId = firstToolUseId
|
|
769
|
+
? JSON.stringify([String(baseContext.runId), firstToolUseId])
|
|
770
|
+
: undefined
|
|
752
771
|
|
|
753
772
|
// Respect each tool's `concurrencySafe` flag. Read-only tools
|
|
754
773
|
// (ls/grep/glob/…) run in parallel; tools that mutate shared state
|
|
@@ -807,6 +826,7 @@ export class ToolExecutor {
|
|
|
807
826
|
const ctx: ToolContext = {
|
|
808
827
|
...baseContext,
|
|
809
828
|
toolUseId: toolCall.id,
|
|
829
|
+
...(toolBatchId ? { toolBatchId } : {}),
|
|
810
830
|
source: { kind: 'direct' },
|
|
811
831
|
// Overridden per call, so a nested dispatch can name the call
|
|
812
832
|
// that made it. The base context has no `toolUseId`, and a
|
|
@@ -1029,8 +1049,10 @@ export class ToolExecutor {
|
|
|
1029
1049
|
return { success: false, output: '', error: reason }
|
|
1030
1050
|
}
|
|
1031
1051
|
|
|
1052
|
+
const { toolBatchId: directBatch, ...contextWithoutDirectBatch } = context
|
|
1053
|
+
void directBatch
|
|
1032
1054
|
const childContext: ToolContext = {
|
|
1033
|
-
...
|
|
1055
|
+
...contextWithoutDirectBatch,
|
|
1034
1056
|
abortSignal: signal,
|
|
1035
1057
|
toolUseId: nestedId,
|
|
1036
1058
|
source,
|
|
@@ -1164,6 +1186,9 @@ export class ToolExecutor {
|
|
|
1164
1186
|
const context: ToolContext = {
|
|
1165
1187
|
runId: this.config.runId,
|
|
1166
1188
|
workingDirectory: this.config.workingDirectory,
|
|
1189
|
+
...(this.config.additionalDirectories?.length
|
|
1190
|
+
? { additionalDirectories: this.config.additionalDirectories }
|
|
1191
|
+
: {}),
|
|
1167
1192
|
abortSignal: this.config.abortSignal,
|
|
1168
1193
|
env: this.config.env,
|
|
1169
1194
|
log: (level, message) => this.log[level](message),
|
|
@@ -1208,12 +1233,38 @@ export class ToolExecutor {
|
|
|
1208
1233
|
// that its foreground work would use. A sandbox-aware persistent
|
|
1209
1234
|
// process capability needs its own execution seam; until one exists,
|
|
1210
1235
|
// the safe composition is to withhold this host capability entirely.
|
|
1211
|
-
|
|
1236
|
+
//
|
|
1237
|
+
// That seam now exists: a sandbox that can `spawnDetached` starts
|
|
1238
|
+
// the job inside its boundary, and the registry only keeps it. A
|
|
1239
|
+
// sandbox without it still withholds the capability.
|
|
1240
|
+
...(this.config.backgroundJobs &&
|
|
1241
|
+
(!this.config.sandbox || this.config.sandbox.spawnDetached !== undefined)
|
|
1212
1242
|
? {
|
|
1213
|
-
backgroundJobs: bindOwner(
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1243
|
+
backgroundJobs: bindOwner(
|
|
1244
|
+
this.config.backgroundJobs,
|
|
1245
|
+
this.config.backgroundJobOwner ?? this.config.runId,
|
|
1246
|
+
{
|
|
1247
|
+
workingDirectory: this.config.workingDirectory,
|
|
1248
|
+
env: this.config.env,
|
|
1249
|
+
...(this.config.sandbox?.spawnDetached
|
|
1250
|
+
? {
|
|
1251
|
+
spawn: (job: {
|
|
1252
|
+
readonly command: string
|
|
1253
|
+
readonly workingDirectory: string
|
|
1254
|
+
readonly env?: Record<string, string>
|
|
1255
|
+
}): JobProcess =>
|
|
1256
|
+
(this.config.sandbox as Sandbox).spawnDetached?.(
|
|
1257
|
+
'/bin/sh',
|
|
1258
|
+
['-c', job.command],
|
|
1259
|
+
{
|
|
1260
|
+
cwd: job.workingDirectory,
|
|
1261
|
+
...(job.env ? { env: job.env } : {}),
|
|
1262
|
+
},
|
|
1263
|
+
) as JobProcess,
|
|
1264
|
+
}
|
|
1265
|
+
: {}),
|
|
1266
|
+
},
|
|
1267
|
+
),
|
|
1217
1268
|
}
|
|
1218
1269
|
: {}),
|
|
1219
1270
|
...(this.parentSpan ? { parentSpan: this.parentSpan } : {}),
|
|
@@ -1499,23 +1550,23 @@ export class ToolExecutor {
|
|
|
1499
1550
|
const postOverride = post.override
|
|
1500
1551
|
let output =
|
|
1501
1552
|
postOverride?.output ?? (result.success ? this.maybeCompress(toolName, rawOutput) : rawOutput)
|
|
1502
|
-
|
|
1553
|
+
let selectedContent = postOverride?.isError
|
|
1503
1554
|
? undefined
|
|
1504
1555
|
: (postOverride?.content ?? result.content)
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
const dropped = describeDroppedContent(selectedContent)
|
|
1517
|
-
if (dropped) output = `${output}\n\n${dropped}`
|
|
1556
|
+
if (postOverride && !postOverride.isError && postOverride.content === undefined) {
|
|
1557
|
+
// A text redaction must reach both text channels. Only the image or
|
|
1558
|
+
// document blocks survive implicitly; explicit replacement content
|
|
1559
|
+
// remains the hook's complete model-visible decision.
|
|
1560
|
+
if (typeof selectedContent === 'string') selectedContent = postOverride.output
|
|
1561
|
+
else if (selectedContent) {
|
|
1562
|
+
selectedContent = [
|
|
1563
|
+
{ type: 'text', text: postOverride.output },
|
|
1564
|
+
...selectedContent.filter((block) => block.type !== 'text'),
|
|
1565
|
+
]
|
|
1566
|
+
}
|
|
1518
1567
|
}
|
|
1568
|
+
const maxToolOutputChars = this.config.maxToolOutputChars ?? DEFAULT_MAX_TOOL_OUTPUT_CHARS
|
|
1569
|
+
const sourceOutput = output
|
|
1519
1570
|
|
|
1520
1571
|
// Compression is opportunistic and shell-only; the budget is the
|
|
1521
1572
|
// hard bound that applies to every final tool result, including a
|
|
@@ -1542,6 +1593,10 @@ export class ToolExecutor {
|
|
|
1542
1593
|
})
|
|
1543
1594
|
}
|
|
1544
1595
|
output = budgeted.output
|
|
1596
|
+
const modelContent =
|
|
1597
|
+
selectedContent === undefined
|
|
1598
|
+
? undefined
|
|
1599
|
+
: this.budgetContent(selectedContent, toolName, toolCall.id, { sourceOutput, budgeted })
|
|
1545
1600
|
|
|
1546
1601
|
// A failed call, or an override that says the call failed. A `replace`
|
|
1547
1602
|
// says the opposite, and reading it as a failure is what made redaction
|
|
@@ -1551,6 +1606,9 @@ export class ToolExecutor {
|
|
|
1551
1606
|
|
|
1552
1607
|
if (this.workingStateManager) {
|
|
1553
1608
|
extractFromToolResult(this.workingStateManager, toolName, output, effectiveIsError)
|
|
1609
|
+
for (const pin of result.workingState ?? []) {
|
|
1610
|
+
this.workingStateManager.pin(pin.key, pin.text, toolName)
|
|
1611
|
+
}
|
|
1554
1612
|
}
|
|
1555
1613
|
|
|
1556
1614
|
if (result.success) {
|
|
@@ -1604,11 +1662,6 @@ export class ToolExecutor {
|
|
|
1604
1662
|
result,
|
|
1605
1663
|
})
|
|
1606
1664
|
|
|
1607
|
-
const resolveContent = (): { content?: ToolResultContent } => {
|
|
1608
|
-
if (budgeted.truncated || selectedContent === undefined) return {}
|
|
1609
|
-
return { content: this.budgetContent(selectedContent, toolName) }
|
|
1610
|
-
}
|
|
1611
|
-
|
|
1612
1665
|
return {
|
|
1613
1666
|
toolCallId: toolCall.id,
|
|
1614
1667
|
toolName,
|
|
@@ -1618,13 +1671,12 @@ export class ToolExecutor {
|
|
|
1618
1671
|
//
|
|
1619
1672
|
// An ERROR override drops it: the payload is no longer the tool's,
|
|
1620
1673
|
// and shipping an image beside a failure message describes something
|
|
1621
|
-
// the model was just told did not happen.
|
|
1622
|
-
// for the same reason.
|
|
1674
|
+
// the model was just told did not happen.
|
|
1623
1675
|
//
|
|
1624
1676
|
// A REPLACE keeps it, because the common case is redacting text from
|
|
1625
1677
|
// a result whose image is unaffected — and a hook that needs it gone
|
|
1626
1678
|
// says so with `content`, which wins over both.
|
|
1627
|
-
...
|
|
1679
|
+
...(modelContent !== undefined ? { content: modelContent } : {}),
|
|
1628
1680
|
}
|
|
1629
1681
|
}
|
|
1630
1682
|
|
|
@@ -2097,6 +2149,7 @@ export class ToolExecutor {
|
|
|
2097
2149
|
output: `Error: ${result.message}`,
|
|
2098
2150
|
}
|
|
2099
2151
|
case 'retry':
|
|
2152
|
+
case 'annotate':
|
|
2100
2153
|
// There is no result to replace yet. Rejecting loudly beats
|
|
2101
2154
|
// silently ignoring it: a hook author who returned this here
|
|
2102
2155
|
// meant to redact something and would otherwise watch the secret
|
|
@@ -2357,6 +2410,7 @@ export class ToolExecutor {
|
|
|
2357
2410
|
continue
|
|
2358
2411
|
case 'skip':
|
|
2359
2412
|
case 'modify':
|
|
2413
|
+
case 'annotate':
|
|
2360
2414
|
throw new Error(
|
|
2361
2415
|
`Plugin hook post_tool_use returned unsupported action '${result.action}' for tool ${toolName}`,
|
|
2362
2416
|
)
|
|
@@ -2482,42 +2536,69 @@ export class ToolExecutor {
|
|
|
2482
2536
|
}
|
|
2483
2537
|
|
|
2484
2538
|
/**
|
|
2485
|
-
*
|
|
2486
|
-
*
|
|
2487
|
-
*
|
|
2488
|
-
* smaller image, it is a corrupt one, and a driver handed it would
|
|
2489
|
-
* either fail the request or show the model noise. The text half stays
|
|
2490
|
-
* untouched, so the result still says what happened — and the
|
|
2491
|
-
* replacement names what was withheld and how big it was, which is what
|
|
2492
|
-
* lets the agent ask for a smaller region instead of retrying the same
|
|
2493
|
-
* call.
|
|
2539
|
+
* The host preview and model text may differ; each gets its own text
|
|
2540
|
+
* budget. Rich bytes are measured separately and withheld whole when
|
|
2541
|
+
* over their cap, with a notice inside the model text's same hard bound.
|
|
2494
2542
|
*/
|
|
2495
2543
|
private budgetContent(
|
|
2496
|
-
content:
|
|
2544
|
+
content: ToolResultContent,
|
|
2497
2545
|
toolName: string,
|
|
2498
|
-
|
|
2546
|
+
toolUseId: string,
|
|
2547
|
+
host: { sourceOutput: string; budgeted: ToolOutputBudgetResult },
|
|
2548
|
+
): ToolResultContent {
|
|
2499
2549
|
const cap = this.config.maxToolContentBytes ?? 0
|
|
2500
|
-
if (cap <= 0) return content
|
|
2501
|
-
|
|
2502
2550
|
const size = measureContentBytes(content)
|
|
2503
|
-
|
|
2504
|
-
|
|
2505
|
-
|
|
2506
|
-
|
|
2507
|
-
|
|
2508
|
-
|
|
2509
|
-
'
|
|
2510
|
-
|
|
2511
|
-
|
|
2512
|
-
|
|
2551
|
+
const richWithheld = cap > 0 && size > cap
|
|
2552
|
+
const text =
|
|
2553
|
+
typeof content === 'string'
|
|
2554
|
+
? content
|
|
2555
|
+
: content.flatMap((block) => (block.type === 'text' ? [block.text] : [])).join('\n')
|
|
2556
|
+
const notice = richWithheld
|
|
2557
|
+
? `[rich content withheld: ${size} base64 chars exceeds this run's ${cap} cap] ${describeDroppedContent(content) ?? ''}`
|
|
2558
|
+
: undefined
|
|
2559
|
+
if (richWithheld) {
|
|
2560
|
+
this.log.warn('Tool result content exceeded the rich-content budget', {
|
|
2561
|
+
[NAMZU.RUN_ID]: this.config.runId,
|
|
2562
|
+
[GENAI.TOOL_NAME]: toolName,
|
|
2563
|
+
'namzu.runtime.content_bytes': size,
|
|
2564
|
+
'namzu.runtime.cap': cap,
|
|
2565
|
+
})
|
|
2566
|
+
}
|
|
2567
|
+
const budgeted =
|
|
2568
|
+
text === host.sourceOutput && !notice
|
|
2569
|
+
? host.budgeted
|
|
2570
|
+
: applyToolOutputBudget({
|
|
2571
|
+
toolName,
|
|
2572
|
+
toolUseId,
|
|
2573
|
+
output: text,
|
|
2574
|
+
maxChars: this.config.maxToolOutputChars ?? DEFAULT_MAX_TOOL_OUTPUT_CHARS,
|
|
2575
|
+
...(notice ? { notice } : {}),
|
|
2576
|
+
// A tool may return different host and model text. They must
|
|
2577
|
+
// never compete for the same exclusive spill filename.
|
|
2578
|
+
spillDir: this.config.toolOutputDir
|
|
2579
|
+
? join(this.config.toolOutputDir, 'content')
|
|
2580
|
+
: undefined,
|
|
2581
|
+
onError: (message) =>
|
|
2582
|
+
this.log.warn('Failed to spill oversized model tool content', {
|
|
2583
|
+
[NAMZU.RUN_ID]: this.config.runId,
|
|
2584
|
+
[GENAI.TOOL_NAME]: toolName,
|
|
2585
|
+
'exception.message': message,
|
|
2586
|
+
}),
|
|
2587
|
+
})
|
|
2588
|
+
if (budgeted.truncated && budgeted !== host.budgeted) {
|
|
2589
|
+
this.log.warn('Model tool text exceeded the model-visible budget', {
|
|
2590
|
+
[NAMZU.RUN_ID]: this.config.runId,
|
|
2591
|
+
[GENAI.TOOL_NAME]: toolName,
|
|
2592
|
+
'namzu.runtime.original_length': budgeted.originalLength,
|
|
2593
|
+
'namzu.runtime.spill_path': budgeted.spillPath,
|
|
2594
|
+
})
|
|
2595
|
+
}
|
|
2596
|
+
if (!budgeted.truncated && !richWithheld) return content
|
|
2597
|
+
if (typeof content === 'string') return budgeted.output
|
|
2513
2598
|
return [
|
|
2514
|
-
{
|
|
2515
|
-
|
|
2516
|
-
|
|
2517
|
-
described ? ` — ${described}` : ''
|
|
2518
|
-
}]`,
|
|
2519
|
-
},
|
|
2520
|
-
] as import('../../types/message/index.js').ToolResultContent
|
|
2599
|
+
...(budgeted.output ? [{ type: 'text' as const, text: budgeted.output }] : []),
|
|
2600
|
+
...(richWithheld ? [] : content.filter((block) => block.type !== 'text')),
|
|
2601
|
+
]
|
|
2521
2602
|
}
|
|
2522
2603
|
|
|
2523
2604
|
private maybeCompress(toolName: string, output: string): string {
|
|
@@ -110,6 +110,14 @@ export class GuardCoordinator {
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
const limitResult = checkLimitsDetailed(this.limitConfig, limitState)
|
|
113
|
+
if (!abortSignal.aborted && runMgr.budget && runMgr.budget.remaining <= 0) {
|
|
114
|
+
return {
|
|
115
|
+
shouldStop: true,
|
|
116
|
+
forceFinalize: false,
|
|
117
|
+
stopReason: 'token_budget',
|
|
118
|
+
isCancelled: false,
|
|
119
|
+
}
|
|
120
|
+
}
|
|
113
121
|
|
|
114
122
|
if (limitResult.type === 'hard_stop') {
|
|
115
123
|
return {
|