@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
package/src/tools/paths.ts
CHANGED
|
@@ -35,6 +35,70 @@ export function resolveWithin(root: string, candidate: string | undefined): stri
|
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
/** True when `candidate` resolves inside `root`. */
|
|
38
|
+
/**
|
|
39
|
+
* The directories a tool may reach: the working directory first, then any
|
|
40
|
+
* the host added for the session (`/add-dir`). Relative paths resolve
|
|
41
|
+
* against the first; an absolute path is accepted inside any.
|
|
42
|
+
*/
|
|
43
|
+
export function toolRoots(context: {
|
|
44
|
+
readonly workingDirectory: string
|
|
45
|
+
readonly additionalDirectories?: readonly string[]
|
|
46
|
+
}): readonly string[] {
|
|
47
|
+
return [context.workingDirectory, ...(context.additionalDirectories ?? [])]
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function describeRoots(roots: readonly string[]): string {
|
|
51
|
+
return roots.length === 1
|
|
52
|
+
? `inside ${resolve(roots[0] as string)}`
|
|
53
|
+
: `inside ${resolve(roots[0] as string)} or the added directories ${roots
|
|
54
|
+
.slice(1)
|
|
55
|
+
.map((r) => resolve(r))
|
|
56
|
+
.join(', ')}`
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/** `resolveWithin` over several roots. See `toolRoots` for the order. */
|
|
60
|
+
export function resolveWithinAny(roots: readonly string[], candidate: string | undefined): string {
|
|
61
|
+
const [first, ...rest] = roots
|
|
62
|
+
if (first === undefined) throw new Error('No root to resolve within.')
|
|
63
|
+
if (rest.length === 0) return resolveWithin(first, candidate)
|
|
64
|
+
const resolved =
|
|
65
|
+
candidate === undefined || candidate === ''
|
|
66
|
+
? resolve(first)
|
|
67
|
+
: resolve(resolve(first), candidate)
|
|
68
|
+
for (const root of roots) {
|
|
69
|
+
if (isWithin(root, resolved)) return resolveWithin(root, resolved)
|
|
70
|
+
}
|
|
71
|
+
throw new Error(
|
|
72
|
+
`Path escapes the working directory: ${candidate}. Tools may only reach ${describeRoots(roots)}.`,
|
|
73
|
+
)
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** `resolveWithinReal` over several roots: the first that contains the path, links followed. */
|
|
77
|
+
export async function resolveWithinAnyReal(
|
|
78
|
+
roots: readonly string[],
|
|
79
|
+
candidate: string | undefined,
|
|
80
|
+
): Promise<string> {
|
|
81
|
+
const [first, ...rest] = roots
|
|
82
|
+
if (first === undefined) throw new Error('No root to resolve within.')
|
|
83
|
+
if (rest.length === 0) return resolveWithinReal(first, candidate)
|
|
84
|
+
const resolved =
|
|
85
|
+
candidate === undefined || candidate === ''
|
|
86
|
+
? resolve(first)
|
|
87
|
+
: resolve(resolve(first), candidate)
|
|
88
|
+
let firstError: unknown
|
|
89
|
+
for (const root of roots) {
|
|
90
|
+
try {
|
|
91
|
+
return await resolveWithinReal(root, resolved)
|
|
92
|
+
} catch (err) {
|
|
93
|
+
firstError ??= err
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
throw new Error(
|
|
97
|
+
`Path escapes the working directory: ${candidate}. Tools may only reach ${describeRoots(roots)}.`,
|
|
98
|
+
{ cause: firstError },
|
|
99
|
+
)
|
|
100
|
+
}
|
|
101
|
+
|
|
38
102
|
export function isWithin(root: string, candidate: string): boolean {
|
|
39
103
|
try {
|
|
40
104
|
resolveWithin(root, candidate)
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Narrower rosters from a wider one.
|
|
3
|
+
*
|
|
4
|
+
* A delegate that can only look, or a file-defined agent with an allowlist,
|
|
5
|
+
* needs a registry that is the parent's minus something — and every host
|
|
6
|
+
* that builds delegates wrote the same two loops. They live here so the
|
|
7
|
+
* predicate for "read-only" is the one the authorization gate and the
|
|
8
|
+
* prompt exemption already use (`isTrustedReadOnly`), not a third reading
|
|
9
|
+
* of the same flag.
|
|
10
|
+
*
|
|
11
|
+
* Both filters INTERSECT: a name in an allowlist that the source does not
|
|
12
|
+
* carry is simply not there. A filter can never widen.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import { ToolRegistry } from '../registry/tool/execute.js'
|
|
16
|
+
import type { ToolRegistryContract } from '../types/tool/index.js'
|
|
17
|
+
import { isTrustedReadOnly } from './trusted-read-only.js'
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* The tools that declare themselves read-only and are trusted to say so.
|
|
21
|
+
*
|
|
22
|
+
* Decided by `isTrustedReadOnly` with no input, which is each tool's own
|
|
23
|
+
* declaration: a new read-only builtin joins the roster without this file
|
|
24
|
+
* learning its name, and a connected server's tool that merely CLAIMS to be
|
|
25
|
+
* read-only stays out unless its provenance is trusted.
|
|
26
|
+
*/
|
|
27
|
+
export function filterReadOnlyTools(source: ToolRegistryContract): ToolRegistry {
|
|
28
|
+
const filtered = new ToolRegistry()
|
|
29
|
+
for (const tool of source.getAll()) {
|
|
30
|
+
if (isTrustedReadOnly(tool, undefined)) filtered.register(tool)
|
|
31
|
+
}
|
|
32
|
+
return filtered
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** The tools whose names are listed. Names the source does not carry are ignored. */
|
|
36
|
+
export function filterToolsNamed(
|
|
37
|
+
source: ToolRegistryContract,
|
|
38
|
+
names: Iterable<string>,
|
|
39
|
+
): ToolRegistry {
|
|
40
|
+
const allowed = new Set(names)
|
|
41
|
+
const filtered = new ToolRegistry()
|
|
42
|
+
for (const tool of source.getAll()) {
|
|
43
|
+
if (allowed.has(tool.name)) filtered.register(tool)
|
|
44
|
+
}
|
|
45
|
+
return filtered
|
|
46
|
+
}
|
package/src/types/agent/base.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TokenBudget } from '../../run/token-budget.js'
|
|
1
2
|
import type { ProjectInstructionContext } from '../../runtime/query/project-instructions.js'
|
|
2
3
|
import type { PathBuilder } from '../../session/workspace/path-builder.js'
|
|
3
4
|
import type { Logger } from '../../utils/logger.js'
|
|
@@ -19,6 +20,8 @@ export type AgentContextLevel = 'full' | 'standard' | 'minimal'
|
|
|
19
20
|
export interface BaseAgentConfig {
|
|
20
21
|
model: string
|
|
21
22
|
tokenBudget: number
|
|
23
|
+
/** Aggregate authority inherited by descendants; supplied independently of the numeric local cap. */
|
|
24
|
+
budget?: TokenBudget
|
|
22
25
|
timeoutMs: number
|
|
23
26
|
/** See {@link import('../run/config.js').AgentRunConfig.streamIdleTimeoutMs}. */
|
|
24
27
|
streamIdleTimeoutMs?: number
|
|
@@ -271,6 +274,9 @@ export interface AgentInput {
|
|
|
271
274
|
}
|
|
272
275
|
|
|
273
276
|
export interface BaseAgentResult {
|
|
277
|
+
/** Aggregate tree accounting, separate from this invocation's own usage. */
|
|
278
|
+
budget?: ReturnType<TokenBudget['summary']>
|
|
279
|
+
|
|
274
280
|
runId: RunId
|
|
275
281
|
status: RunExecutionStatus
|
|
276
282
|
stopReason?: StopReason
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import type { TokenBudget } from '../../run/token-budget.js'
|
|
1
2
|
import type { RunId } from '../ids/index.js'
|
|
2
3
|
import type { LLMProvider } from '../provider/index.js'
|
|
3
4
|
import type { BaseAgentConfig, BaseAgentResult } from './base.js'
|
|
4
5
|
|
|
5
6
|
export interface StepContext {
|
|
7
|
+
/** Shared authority; reserve a child scope before invoking another agent. */
|
|
8
|
+
budget: TokenBudget
|
|
6
9
|
runId: RunId
|
|
7
10
|
stepIndex: number
|
|
8
11
|
totalSteps: number
|
|
@@ -15,9 +15,8 @@ export interface RoutingDecision {
|
|
|
15
15
|
*
|
|
16
16
|
* Routing runs before the delegate's run exists, so it has no
|
|
17
17
|
* `RunPersistence` to accumulate into. Reporting it here lets the
|
|
18
|
-
* router
|
|
19
|
-
*
|
|
20
|
-
* run by one model call.
|
|
18
|
+
* router report its own model usage. The separate budget summary includes
|
|
19
|
+
* both routing and every delegated descendant.
|
|
21
20
|
*/
|
|
22
21
|
usage?: TokenUsage
|
|
23
22
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TokenBudget } from '../../run/token-budget.js'
|
|
1
2
|
import type { TaskId } from '../ids/index.js'
|
|
2
3
|
import type { AgentPersona } from '../persona/index.js'
|
|
3
4
|
import type { CancelCause } from '../run/cancel-cause.js'
|
|
@@ -101,6 +102,9 @@ export interface CreateTaskOptions {
|
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
export interface TaskScheduler {
|
|
105
|
+
/** Authority under which this scheduler reserves and meters child execution. */
|
|
106
|
+
readonly budget?: TokenBudget
|
|
107
|
+
|
|
104
108
|
createTask(options: CreateTaskOptions): Promise<TaskHandle>
|
|
105
109
|
|
|
106
110
|
waitForTask(taskId: TaskId): Promise<TaskHandle>
|
package/src/types/agent/task.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TokenBudget } from '../../run/token-budget.js'
|
|
1
2
|
import type { ActorRef } from '../../types/session/actor.js'
|
|
2
3
|
import type { WorkspaceBackendKind } from '../../types/workspace/ref.js'
|
|
3
4
|
import type { ResumeHandler } from '../hitl/index.js'
|
|
@@ -37,7 +38,8 @@ export interface AgentTaskContext {
|
|
|
37
38
|
|
|
38
39
|
depth: number
|
|
39
40
|
|
|
40
|
-
|
|
41
|
+
/** Shared authority for this parent and every delegated descendant. */
|
|
42
|
+
budget: TokenBudget
|
|
41
43
|
|
|
42
44
|
factoryOptions?: AgentFactoryOptions
|
|
43
45
|
|
|
@@ -112,11 +114,8 @@ export interface AgentTaskContext {
|
|
|
112
114
|
parentActor: ActorRef
|
|
113
115
|
}
|
|
114
116
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
remaining: number
|
|
119
|
-
}
|
|
117
|
+
/** Budget authority shared by an agent task and its descendants. */
|
|
118
|
+
export type AgentTaskBudget = TokenBudget
|
|
120
119
|
|
|
121
120
|
export interface AgentTask {
|
|
122
121
|
taskId: TaskId
|
|
@@ -127,18 +126,6 @@ export interface AgentTask {
|
|
|
127
126
|
state: AgentTaskState
|
|
128
127
|
result?: BaseAgentResult
|
|
129
128
|
|
|
130
|
-
/**
|
|
131
|
-
* Tokens reserved from the shared pool when this child was spawned.
|
|
132
|
-
*
|
|
133
|
-
* A RESERVATION, not a spend: it is subtracted up front so siblings
|
|
134
|
-
* cannot each be promised the same headroom, and the unused part is
|
|
135
|
-
* returned when the child settles. Without the return, a pool shrank
|
|
136
|
-
* by the full allocation every spawn regardless of what the child
|
|
137
|
-
* actually used, so a long session ran out of budget while almost none
|
|
138
|
-
* of it had been spent.
|
|
139
|
-
*/
|
|
140
|
-
budgetReservation?: number
|
|
141
|
-
|
|
142
129
|
pendingMessages: Message[]
|
|
143
130
|
createdAt: number
|
|
144
131
|
completedAt?: number
|
|
@@ -85,6 +85,9 @@ export function mergeTokenUsage(current: TokenUsage, next: TokenUsage): TokenUsa
|
|
|
85
85
|
totalTokens: Math.max(current.totalTokens, next.totalTokens, promptTokens + completionTokens),
|
|
86
86
|
cachedTokens: Math.max(current.cachedTokens, next.cachedTokens),
|
|
87
87
|
cacheWriteTokens: Math.max(current.cacheWriteTokens, next.cacheWriteTokens),
|
|
88
|
+
...(current.reasoningTokens !== undefined || next.reasoningTokens !== undefined
|
|
89
|
+
? { reasoningTokens: Math.max(current.reasoningTokens ?? 0, next.reasoningTokens ?? 0) }
|
|
90
|
+
: {}),
|
|
88
91
|
}
|
|
89
92
|
}
|
|
90
93
|
|
|
@@ -30,6 +30,14 @@ export interface ComputerUseCapabilities {
|
|
|
30
30
|
readonly keyboard: boolean
|
|
31
31
|
readonly cursorPosition: boolean
|
|
32
32
|
readonly clipboard: boolean
|
|
33
|
+
/**
|
|
34
|
+
* Why every flag above is false, when a host loaded but the desktop did
|
|
35
|
+
* not answer — a WSL process with PowerShell and no interactive Windows
|
|
36
|
+
* session, an ssh session with no display. Present, the tool stays
|
|
37
|
+
* mounted and says this in its description and in every refusal, so the
|
|
38
|
+
* model reads the reason once and does not try again.
|
|
39
|
+
*/
|
|
40
|
+
readonly unavailableReason?: string
|
|
33
41
|
}
|
|
34
42
|
|
|
35
43
|
// ---------------------------------------------------------------------------
|
package/src/types/hitl/index.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { CostInfo, TokenUsage } from '../common/index.js'
|
|
|
4
4
|
import type { CheckpointId, PlanId, RunId } from '../ids/index.js'
|
|
5
5
|
import type { Message } from '../message/index.js'
|
|
6
6
|
import type { PlanStatus } from '../plan/index.js'
|
|
7
|
+
import type { TokenBudgetBinding } from '../run/token-budget-store.js'
|
|
7
8
|
|
|
8
9
|
export type { CheckpointId }
|
|
9
10
|
|
|
@@ -203,6 +204,10 @@ export interface PendingDecision {
|
|
|
203
204
|
}
|
|
204
205
|
|
|
205
206
|
export interface IterationCheckpoint {
|
|
207
|
+
/** Reference to the canonical tree ledger; a checkpoint never resets it. */
|
|
208
|
+
readonly budgetBinding?: TokenBudgetBinding
|
|
209
|
+
/** Also present for non-durable accounts; those require the live authority on resume. */
|
|
210
|
+
readonly budgetAccountId?: string
|
|
206
211
|
id: CheckpointId
|
|
207
212
|
runId: RunId
|
|
208
213
|
iteration: number
|
package/src/types/ids/brand.ts
CHANGED
|
@@ -1,57 +1,14 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Nominal-brand machinery for the id types — declared here, not yet applied.
|
|
3
|
-
*
|
|
4
|
-
* Today every id in `./index.ts` is a bare template-literal type, and
|
|
5
|
-
* TypeScript's assignability rule for those means
|
|
6
|
-
* `const x: RunId = 'run_totally-made-up'` compiles with no cast and no
|
|
7
|
-
* factory call. The result is indistinguishable at the type level from an id
|
|
8
|
-
* `generateRunId()` actually minted, so the compiler cannot tell a real id
|
|
9
|
-
* from a plausible-looking string.
|
|
10
|
-
*
|
|
11
|
-
* Applying this brand is a separate change, on purpose: flipping the
|
|
12
|
-
* declarations turns every existing bare literal into an error at once, and
|
|
13
|
-
* that is a `major` with a migration in front of it. This file ships the
|
|
14
|
-
* machinery and the runtime constructors that use it so the two can land
|
|
15
|
-
* independently — the constructors are useful on their own, since there is
|
|
16
|
-
* no runtime prefix validation in the tree at all today.
|
|
17
|
-
*
|
|
18
|
-
* **The prefix stays in the type, and that is the one place this diverges
|
|
19
|
-
* from a plain `Branded<B>`.** A brand alone would render as `RunId` in
|
|
20
|
-
* hovers and errors and tell a reader nothing about the shape. Keeping
|
|
21
|
-
* `` `${Prefix}_${string}` `` in the intersection means an editor hover still
|
|
22
|
-
* shows `run_${string}`, which is most of what makes these ids readable in
|
|
23
|
-
* a log line.
|
|
24
|
-
*/
|
|
25
|
-
|
|
1
|
+
/** Nominal identity is independent of the identifier's serialized spelling. */
|
|
26
2
|
declare const ID_BRAND: unique symbol
|
|
27
3
|
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
*
|
|
31
|
-
* `B` is a string tag rather than the type's own name by convention — two
|
|
32
|
-
* ids with the same prefix but different meanings must not be mutually
|
|
33
|
-
* assignable, and only the tag can separate them.
|
|
34
|
-
*/
|
|
35
|
-
export type Id<Prefix extends string, B extends string> = `${Prefix}_${string}` & {
|
|
4
|
+
/** An opaque string whose tag prevents mixing different entity types. */
|
|
5
|
+
export type Id<B extends string> = string & {
|
|
36
6
|
readonly [ID_BRAND]: B
|
|
37
7
|
}
|
|
38
8
|
|
|
39
9
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* A brand cannot be constructed by writing it — `{ [ID_BRAND]: 'RunId' }` is
|
|
43
|
-
* not something a caller can type, since the symbol is not exported. So
|
|
44
|
-
* every id has to come from somewhere, and there are exactly three places:
|
|
45
|
-
* `generate*Id()` mints one, `as*Id()` checks a string into one, and this.
|
|
46
|
-
*
|
|
47
|
-
* Named `unsafeId` rather than `toId` because the name is the warning, and
|
|
48
|
-
* kept HERE rather than in `utils/id.ts` because this file has no imports —
|
|
49
|
-
* `types/ids/index.ts` needs it for `UNKNOWN_TENANT_ID` and cannot import
|
|
50
|
-
* from `utils/id.ts` without closing a cycle.
|
|
51
|
-
*
|
|
52
|
-
* Not exported from the package barrel. A consumer that needs an id from a
|
|
53
|
-
* string wants the checked constructor; one that wants to skip the check is
|
|
54
|
-
* asking for the thing the brand exists to prevent.
|
|
10
|
+
* Internal escape hatch for factories and checked constructors. Not exported
|
|
11
|
+
* from the package barrel; consumers validate external strings with `as*Id`.
|
|
55
12
|
*/
|
|
56
13
|
export function unsafeId<T extends string>(value: string): T {
|
|
57
14
|
return value as unknown as T
|
package/src/types/ids/index.ts
CHANGED
|
@@ -1,25 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Id } from './brand.js'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* Entity ids are opaque branded strings. Factories mint UUIDs; checked
|
|
5
|
+
* constructors reject every other spelling, including earlier type prefixes.
|
|
6
|
+
* A RunId cannot be assigned to a SessionId even though their wire shapes
|
|
7
|
+
* are identical. Persisted records and typed fields establish the kind,
|
|
8
|
+
* not the spelling of the id.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* because TypeScript's assertion rule only asks that the two types be
|
|
13
|
-
* comparable and a string is comparable to a branded string. The brand makes
|
|
14
|
-
* a rule against `as <IdType>` enforceable — it does not replace one. See
|
|
15
|
-
* `__tests__/an-id-is-not-a-string.test.ts`, which pins both halves.
|
|
10
|
+
* Brands do not validate a type assertion. Use the checked constructors
|
|
11
|
+
* for values received from JSON, flags, URLs, or other untyped boundaries.
|
|
16
12
|
*/
|
|
17
|
-
export type RunId = Id<'
|
|
18
|
-
export type MessageId = Id<'
|
|
19
|
-
export type SessionId = Id<'
|
|
13
|
+
export type RunId = Id<'RunId'>
|
|
14
|
+
export type MessageId = Id<'MessageId'>
|
|
15
|
+
export type SessionId = Id<'SessionId'>
|
|
20
16
|
/** Identifies one durable completion goal across its revisions. */
|
|
21
|
-
export type GoalId = Id<'
|
|
22
|
-
export type ToolCallId = Id<'
|
|
17
|
+
export type GoalId = Id<'GoalId'>
|
|
18
|
+
export type ToolCallId = Id<'ToolCallId'>
|
|
23
19
|
/**
|
|
24
20
|
* Provider-issued tool-use identifier surfaced on the streaming event bus.
|
|
25
21
|
* Providers emit different prefixes (`toolu_*`, `call_*`,
|
|
@@ -30,38 +26,38 @@ export type ToolCallId = Id<'call', 'ToolCallId'>
|
|
|
30
26
|
* persisted assistant messages and replay records.
|
|
31
27
|
*/
|
|
32
28
|
export type ToolUseId = string
|
|
33
|
-
export type ActivityId = Id<'
|
|
34
|
-
export type TaskId = Id<'
|
|
35
|
-
export type PlanId = Id<'
|
|
36
|
-
export type KnowledgeBaseId = Id<'
|
|
37
|
-
export type DocumentId = Id<'
|
|
38
|
-
export type ChunkId = Id<'
|
|
39
|
-
export type ConnectorId = Id<'
|
|
40
|
-
export type ConnectorInstanceId = Id<'
|
|
41
|
-
export type TenantId = Id<'
|
|
42
|
-
export type CredentialId = Id<'
|
|
43
|
-
export type ExecutionContextId = Id<'
|
|
44
|
-
export type MCPServerId = Id<'
|
|
45
|
-
export type MCPClientId = Id<'
|
|
46
|
-
export type MCPSessionId = Id<'
|
|
47
|
-
export type EnvironmentId = Id<'
|
|
48
|
-
export type CheckpointId = Id<'
|
|
49
|
-
export type LockId = Id<'
|
|
50
|
-
export type AdvisoryId = Id<'
|
|
51
|
-
export type AdvisoryCallId = Id<'
|
|
52
|
-
export type EmergencySaveId = Id<'
|
|
53
|
-
export type MemoryId = Id<'
|
|
54
|
-
export type PluginId = Id<'
|
|
55
|
-
export type SandboxId = Id<'
|
|
29
|
+
export type ActivityId = Id<'ActivityId'>
|
|
30
|
+
export type TaskId = Id<'TaskId'>
|
|
31
|
+
export type PlanId = Id<'PlanId'>
|
|
32
|
+
export type KnowledgeBaseId = Id<'KnowledgeBaseId'>
|
|
33
|
+
export type DocumentId = Id<'DocumentId'>
|
|
34
|
+
export type ChunkId = Id<'ChunkId'>
|
|
35
|
+
export type ConnectorId = Id<'ConnectorId'>
|
|
36
|
+
export type ConnectorInstanceId = Id<'ConnectorInstanceId'>
|
|
37
|
+
export type TenantId = Id<'TenantId'>
|
|
38
|
+
export type CredentialId = Id<'CredentialId'>
|
|
39
|
+
export type ExecutionContextId = Id<'ExecutionContextId'>
|
|
40
|
+
export type MCPServerId = Id<'MCPServerId'>
|
|
41
|
+
export type MCPClientId = Id<'MCPClientId'>
|
|
42
|
+
export type MCPSessionId = Id<'MCPSessionId'>
|
|
43
|
+
export type EnvironmentId = Id<'EnvironmentId'>
|
|
44
|
+
export type CheckpointId = Id<'CheckpointId'>
|
|
45
|
+
export type LockId = Id<'LockId'>
|
|
46
|
+
export type AdvisoryId = Id<'AdvisoryId'>
|
|
47
|
+
export type AdvisoryCallId = Id<'AdvisoryCallId'>
|
|
48
|
+
export type EmergencySaveId = Id<'EmergencySaveId'>
|
|
49
|
+
export type MemoryId = Id<'MemoryId'>
|
|
50
|
+
export type PluginId = Id<'PluginId'>
|
|
51
|
+
export type SandboxId = Id<'SandboxId'>
|
|
56
52
|
/** LOG-14: the audit trail's own record id — distinct from `RunEvent.seq`. */
|
|
57
|
-
export type AuditEventId = Id<'
|
|
53
|
+
export type AuditEventId = Id<'AuditEventId'>
|
|
58
54
|
|
|
59
55
|
// Actor identifiers (Session Hierarchy §4.3).
|
|
60
56
|
//
|
|
61
57
|
// This block used to say "branded so actor refs cannot be constructed from
|
|
62
58
|
// bare strings" while the compiler enforced nothing. NZ-SURF-11 made that
|
|
63
59
|
// true for `UserId`: `const a: UserId = 'usr_made-up'` is now an error.
|
|
64
|
-
export type UserId = Id<'
|
|
60
|
+
export type UserId = Id<'UserId'>
|
|
65
61
|
|
|
66
62
|
/**
|
|
67
63
|
* @deprecated An agent is identified by its REGISTRY KEY, and this type
|
|
@@ -77,47 +73,42 @@ export type UserId = Id<'usr', 'UserId'>
|
|
|
77
73
|
*
|
|
78
74
|
* Kept for one release rather than deleted, per the deprecate-before-remove
|
|
79
75
|
* rule: a consumer that annotated its own variable `AgentId` still compiles
|
|
80
|
-
* and gets a warning. `asAgentId` is deprecated for the same reason
|
|
81
|
-
*
|
|
76
|
+
* and gets a warning. `asAgentId` is deprecated for the same reason: registry
|
|
77
|
+
* keys have no entity-id spelling contract.
|
|
82
78
|
*/
|
|
83
|
-
export type AgentId = Id<'
|
|
79
|
+
export type AgentId = Id<'AgentId'>
|
|
84
80
|
|
|
85
81
|
// Shared-store placeholder refs (Session Hierarchy §4.2 / §3.2). Full shapes
|
|
86
82
|
// land in later phases; kept here as opaque branded IDs so ProjectConfig can
|
|
87
83
|
// reference them today.
|
|
88
|
-
export type MemoryStoreRef = Id<'
|
|
89
|
-
export type VaultRef = Id<'
|
|
90
|
-
export type KnowledgeBaseRef = Id<'
|
|
84
|
+
export type MemoryStoreRef = Id<'MemoryStoreRef'>
|
|
85
|
+
export type VaultRef = Id<'VaultRef'>
|
|
86
|
+
export type KnowledgeBaseRef = Id<'KnowledgeBaseRef'>
|
|
91
87
|
|
|
92
|
-
// Session hierarchy
|
|
93
|
-
|
|
94
|
-
// `types/session/ids.ts` barrel re-exports these for co-location ergonomics.
|
|
95
|
-
export type ProjectId = Id<'prj', 'ProjectId'>
|
|
88
|
+
// Session hierarchy identities; types/session/ids.ts re-exports these.
|
|
89
|
+
export type ProjectId = Id<'ProjectId'>
|
|
96
90
|
/**
|
|
97
|
-
*
|
|
98
|
-
* (both `thd_${string}`) to its own prefix. `thd_` from here on means only
|
|
99
|
-
* the pre-0.2.0 top-level container (`session/migration/id-prefix.ts`,
|
|
100
|
-
* `session/migration/filesystem.ts`) -- a meaning `ThreadId` never carried;
|
|
101
|
-
* it was purely the deprecated name for THIS type. Deleted rather than
|
|
102
|
-
* repurposed to mean the legacy container instead: a name whose meaning
|
|
103
|
-
* silently changes under unmigrated callers is worse than a name that is
|
|
104
|
-
* gone (Convention #0, no silent long-lived compat).
|
|
91
|
+
* A topic is distinct from its project; each carries its own opaque UUID.
|
|
105
92
|
*/
|
|
106
|
-
export type TopicId = Id<'
|
|
107
|
-
export type SubSessionId = Id<'
|
|
108
|
-
export type HandoffId = Id<'
|
|
109
|
-
export type WorkspaceId = Id<'
|
|
110
|
-
export type SummaryId = Id<'
|
|
111
|
-
export type DeliverableId = Id<'
|
|
93
|
+
export type TopicId = Id<'TopicId'>
|
|
94
|
+
export type SubSessionId = Id<'SubSessionId'>
|
|
95
|
+
export type HandoffId = Id<'HandoffId'>
|
|
96
|
+
export type WorkspaceId = Id<'WorkspaceId'>
|
|
97
|
+
export type SummaryId = Id<'SummaryId'>
|
|
98
|
+
export type DeliverableId = Id<'DeliverableId'>
|
|
112
99
|
|
|
113
100
|
/**
|
|
114
|
-
*
|
|
115
|
-
*
|
|
116
|
-
* should either tag these records on first access or reject them until a
|
|
117
|
-
* real tenant is assigned — the kernel surfaces the sentinel but does not
|
|
118
|
-
* prescribe policy (Convention #17).
|
|
101
|
+
* @deprecated All prefixed IDs are rejected by InvalidIdError. This error
|
|
102
|
+
* remains exported for callers that referenced the earlier exception type.
|
|
119
103
|
*/
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
104
|
+
export class RetiredIdPrefixError extends Error {
|
|
105
|
+
constructor(
|
|
106
|
+
readonly value: string,
|
|
107
|
+
readonly expectedPrefix: string,
|
|
108
|
+
) {
|
|
109
|
+
super(
|
|
110
|
+
`Retired id prefix: ${JSON.stringify(value)} is not a ${JSON.stringify(expectedPrefix)} id. Records written by namzu before 0.2 are not read by this version; open them with a 0.x namzu that migrates them, or start fresh.`,
|
|
111
|
+
)
|
|
112
|
+
this.name = 'RetiredIdPrefixError'
|
|
113
|
+
}
|
|
114
|
+
}
|
|
@@ -1 +1,12 @@
|
|
|
1
1
|
export type PermissionMode = 'plan' | 'auto'
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* What the model is told when a mutating call is refused under plan mode.
|
|
5
|
+
*
|
|
6
|
+
* Here rather than beside the review policy because two doors say it: the
|
|
7
|
+
* review-time policy (`createReviewPolicy({ mode: 'plan' })`) and the
|
|
8
|
+
* execution-time floor in the tool registry. One text, so the model gets
|
|
9
|
+
* the same instruction whichever door it hit.
|
|
10
|
+
*/
|
|
11
|
+
export const PLAN_MODE_REFUSAL =
|
|
12
|
+
'Refused: plan mode is read-only. Explore with the reading tools, then present the plan as your reply — what you would change, in which files, and in what order. The user will switch out of plan mode to have it carried out.'
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
MAX_TOOLS_PER_PLUGIN,
|
|
9
9
|
PLUGIN_NAME_MAX_LENGTH,
|
|
10
10
|
} from '../../constants/plugin/index.js'
|
|
11
|
-
import type { PluginId, RunId } from '../ids/index.js'
|
|
11
|
+
import type { PluginId, RunId, SessionId } from '../ids/index.js'
|
|
12
12
|
import type { Message, ToolResultContent } from '../message/index.js'
|
|
13
13
|
import type { CancelCause } from '../run/cancel-cause.js'
|
|
14
14
|
import type { ToolResult } from '../tool/index.js'
|
|
@@ -84,6 +84,20 @@ export function assertPluginContributionType(type: PluginContributionType): void
|
|
|
84
84
|
// ---------------------------------------------------------------------------
|
|
85
85
|
|
|
86
86
|
export type PluginHookEvent =
|
|
87
|
+
/**
|
|
88
|
+
* The operator's prompt, before the model sees it. Carries `prompt`.
|
|
89
|
+
* The one event that can BLOCK a run (`skip`) and the one that can add
|
|
90
|
+
* to what the model is told (`annotate`).
|
|
91
|
+
*/
|
|
92
|
+
| 'user_prompt_submit'
|
|
93
|
+
/** A host's session opened or closed. Carries `sessionId`; `runId` is minted for the session's own hooks. */
|
|
94
|
+
| 'session_start'
|
|
95
|
+
| 'session_end'
|
|
96
|
+
/** A compaction pass is about to run / has run. Carries `compaction`. */
|
|
97
|
+
| 'pre_compact'
|
|
98
|
+
| 'post_compact'
|
|
99
|
+
/** A delegated run ended. Fired after its own `run_end`; carries `parentRunId`. */
|
|
100
|
+
| 'subagent_stop'
|
|
87
101
|
| 'run_start'
|
|
88
102
|
| 'run_end'
|
|
89
103
|
| 'run_interrupt'
|
|
@@ -96,6 +110,12 @@ export type PluginHookEvent =
|
|
|
96
110
|
|
|
97
111
|
export function assertPluginHookEvent(event: PluginHookEvent): void {
|
|
98
112
|
switch (event) {
|
|
113
|
+
case 'user_prompt_submit':
|
|
114
|
+
case 'session_start':
|
|
115
|
+
case 'session_end':
|
|
116
|
+
case 'pre_compact':
|
|
117
|
+
case 'post_compact':
|
|
118
|
+
case 'subagent_stop':
|
|
99
119
|
case 'run_start':
|
|
100
120
|
case 'run_end':
|
|
101
121
|
case 'run_interrupt':
|
|
@@ -142,10 +162,28 @@ export interface PluginModelResponse {
|
|
|
142
162
|
}
|
|
143
163
|
}
|
|
144
164
|
|
|
165
|
+
/** What a compaction hook is shown about the pass. */
|
|
166
|
+
export interface PluginCompactionInfo {
|
|
167
|
+
/** `threshold`: the estimate crossed the line. `overflow`: the provider rejected the prompt. */
|
|
168
|
+
readonly reason: 'threshold' | 'overflow'
|
|
169
|
+
readonly tokensBefore: number
|
|
170
|
+
/** Present on `post_compact`. */
|
|
171
|
+
readonly tokensAfter?: number
|
|
172
|
+
readonly contextWindowTokens: number
|
|
173
|
+
}
|
|
174
|
+
|
|
145
175
|
export interface PluginHookContext {
|
|
146
176
|
readonly runId: RunId
|
|
147
177
|
readonly pluginId: PluginId
|
|
148
178
|
readonly event: PluginHookEvent
|
|
179
|
+
/** The host's session, on `session_*` and `user_prompt_submit`. */
|
|
180
|
+
readonly sessionId?: SessionId
|
|
181
|
+
/** The run that delegated, on `subagent_stop`. */
|
|
182
|
+
readonly parentRunId?: RunId
|
|
183
|
+
/** The operator's prompt, on `user_prompt_submit`. */
|
|
184
|
+
readonly prompt?: string
|
|
185
|
+
/** The pass, on `pre_compact` and `post_compact`. */
|
|
186
|
+
readonly compaction?: PluginCompactionInfo
|
|
149
187
|
readonly toolName?: string
|
|
150
188
|
readonly toolInput?: unknown
|
|
151
189
|
readonly toolResult?: ToolResult
|
|
@@ -204,6 +242,15 @@ export interface PluginHookContext {
|
|
|
204
242
|
|
|
205
243
|
export type PluginHookResult =
|
|
206
244
|
| { action: 'continue' }
|
|
245
|
+
/**
|
|
246
|
+
* Add to what the model is told, without changing anything else.
|
|
247
|
+
*
|
|
248
|
+
* The answer a `user_prompt_submit` hook gives when it has context the
|
|
249
|
+
* model should have — the branch, the time, a ticket — and no opinion
|
|
250
|
+
* on the prompt. Accepted on that event only: a tool hook that returns
|
|
251
|
+
* it is rejected, because a tool result is not a place for context.
|
|
252
|
+
*/
|
|
253
|
+
| { action: 'annotate'; text: string }
|
|
207
254
|
| { action: 'skip'; reason: string }
|
|
208
255
|
| { action: 'modify'; input: unknown }
|
|
209
256
|
| { action: 'error'; message: string }
|
|
@@ -238,6 +285,7 @@ export function assertPluginHookResult(result: PluginHookResult): asserts result
|
|
|
238
285
|
const action = result.action
|
|
239
286
|
switch (action) {
|
|
240
287
|
case 'continue':
|
|
288
|
+
case 'annotate':
|
|
241
289
|
case 'skip':
|
|
242
290
|
case 'modify':
|
|
243
291
|
case 'error':
|
package/src/types/run/config.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TokenBudget } from '../../run/token-budget.js'
|
|
1
2
|
import type { ModelPricing } from '../../utils/cost.js'
|
|
2
3
|
import type { Logger } from '../../utils/logger.js'
|
|
3
4
|
import type { RunId, SessionId, TenantId } from '../ids/index.js'
|
|
@@ -152,6 +153,8 @@ export interface AgentRunConfig {
|
|
|
152
153
|
* Convention #17).
|
|
153
154
|
*/
|
|
154
155
|
export interface RunPersistenceConfig {
|
|
156
|
+
/** Shared account for this invocation and its delegated descendants. */
|
|
157
|
+
budget?: TokenBudget
|
|
155
158
|
runId: RunId
|
|
156
159
|
agentId: string
|
|
157
160
|
agentName: string
|