@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
|
@@ -57,11 +57,25 @@ export interface BackgroundJobOutput {
|
|
|
57
57
|
readonly exitCode?: number
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
/** A job's process, when something other than the registry starts it. */
|
|
61
|
+
export interface JobProcess {
|
|
62
|
+
readonly child: ReturnType<typeof spawn>
|
|
63
|
+
/** How to stop it, when the registry's process-group kill would not reach everything. */
|
|
64
|
+
kill?(signal: NodeJS.Signals): void
|
|
65
|
+
}
|
|
66
|
+
|
|
60
67
|
export interface StartJobParams {
|
|
61
68
|
readonly owner: string
|
|
62
69
|
readonly command: string
|
|
63
70
|
readonly workingDirectory: string
|
|
64
71
|
readonly env?: Readonly<Record<string, string>>
|
|
72
|
+
/**
|
|
73
|
+
* Start the process yourself — a sandbox does, so the job runs inside
|
|
74
|
+
* its boundary. Absent, the registry runs `/bin/sh -c command` on the
|
|
75
|
+
* host. The process must be the leader of its own group and must not
|
|
76
|
+
* expect stdin.
|
|
77
|
+
*/
|
|
78
|
+
readonly spawn?: () => JobProcess
|
|
65
79
|
}
|
|
66
80
|
|
|
67
81
|
export interface BackgroundJobRegistryConfig {
|
|
@@ -106,6 +120,8 @@ export class UnknownBackgroundJobError extends Error {
|
|
|
106
120
|
interface JobEntry {
|
|
107
121
|
record: BackgroundJob
|
|
108
122
|
child: ReturnType<typeof spawn>
|
|
123
|
+
/** The spawner's own kill, when it gave one. */
|
|
124
|
+
killProcess?: (signal: NodeJS.Signals) => void
|
|
109
125
|
/** Retained tail. */
|
|
110
126
|
buffer: string
|
|
111
127
|
/** Bytes produced in total, including the ones the cap dropped. */
|
|
@@ -113,9 +129,46 @@ interface JobEntry {
|
|
|
113
129
|
exit: Promise<void>
|
|
114
130
|
}
|
|
115
131
|
|
|
132
|
+
/** Whether any process of the group led by `pid` is still alive. */
|
|
133
|
+
function groupAlive(pid: number | undefined): boolean {
|
|
134
|
+
if (pid === undefined || process.platform === 'win32') return false
|
|
135
|
+
try {
|
|
136
|
+
process.kill(-pid, 0)
|
|
137
|
+
return true
|
|
138
|
+
} catch {
|
|
139
|
+
return false
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
const GROUP_POLL_MS = 250
|
|
144
|
+
|
|
116
145
|
export class BackgroundJobRegistry {
|
|
117
146
|
private readonly jobs = new Map<string, JobEntry>()
|
|
118
147
|
private counter = 0
|
|
148
|
+
private readonly exitListeners = new Set<(job: BackgroundJob) => void>()
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Be told when a job ends, whoever owns it. A job outlives the call that
|
|
152
|
+
* started it, so the one thing the model could not do was learn that it
|
|
153
|
+
* had finished without polling; a run subscribes here and turns the exit
|
|
154
|
+
* into a notice on its next tool result. Returns the unsubscribe.
|
|
155
|
+
*/
|
|
156
|
+
onExit(listener: (job: BackgroundJob) => void): () => void {
|
|
157
|
+
this.exitListeners.add(listener)
|
|
158
|
+
return () => {
|
|
159
|
+
this.exitListeners.delete(listener)
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
private announceExit(job: BackgroundJob): void {
|
|
164
|
+
for (const listener of this.exitListeners) {
|
|
165
|
+
try {
|
|
166
|
+
listener(job)
|
|
167
|
+
} catch {
|
|
168
|
+
// A listener that throws is its owner's problem, not the job's.
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
119
172
|
|
|
120
173
|
constructor(private readonly config: BackgroundJobRegistryConfig = {}) {}
|
|
121
174
|
|
|
@@ -151,15 +204,20 @@ export class BackgroundJobRegistry {
|
|
|
151
204
|
// started it, which makes the leak longer-lived, not smaller.
|
|
152
205
|
const inherited = scrubInheritedEnv()
|
|
153
206
|
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
207
|
+
const started = params.spawn
|
|
208
|
+
? params.spawn()
|
|
209
|
+
: {
|
|
210
|
+
child: spawn('/bin/sh', ['-c', params.command], {
|
|
211
|
+
cwd: params.workingDirectory,
|
|
212
|
+
env: { ...inherited.env, ...params.env },
|
|
213
|
+
// Leader of its own process group, which is what `killTree` needs
|
|
214
|
+
// to reach the command and everything it forks rather than only the
|
|
215
|
+
// wrapping shell. See `process/kill-tree.ts`.
|
|
216
|
+
detached: process.platform !== 'win32',
|
|
217
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
218
|
+
}),
|
|
219
|
+
}
|
|
220
|
+
const child = started.child
|
|
163
221
|
// Started, not adopted: this process stays the parent for the job's
|
|
164
222
|
// whole life. `unref` would let Node exit with the job still running,
|
|
165
223
|
// which is the orphan this registry exists to prevent.
|
|
@@ -175,10 +233,11 @@ export class BackgroundJobRegistry {
|
|
|
175
233
|
startedAt: Date.now(),
|
|
176
234
|
},
|
|
177
235
|
child,
|
|
236
|
+
...(started.kill ? { killProcess: started.kill.bind(started) } : {}),
|
|
178
237
|
buffer: '',
|
|
179
238
|
produced: 0,
|
|
180
239
|
exit: new Promise<void>((resolve) => {
|
|
181
|
-
|
|
240
|
+
const finalize = (code: number | null, signal: NodeJS.Signals | null): void => {
|
|
182
241
|
entry.record = {
|
|
183
242
|
...entry.record,
|
|
184
243
|
// A job killed by this registry says `killed`, not
|
|
@@ -190,10 +249,33 @@ export class BackgroundJobRegistry {
|
|
|
190
249
|
...(signal ? { signal } : {}),
|
|
191
250
|
}
|
|
192
251
|
resolve()
|
|
252
|
+
this.announceExit(entry.record)
|
|
253
|
+
}
|
|
254
|
+
child.once('close', (code, signal) => {
|
|
255
|
+
// The job is the process GROUP, not the shell. A command that
|
|
256
|
+
// backgrounds its real work (`server &`) exits the shell at
|
|
257
|
+
// once and leaves the server as the group's survivor; calling
|
|
258
|
+
// that "exited" told the model the job was over while the
|
|
259
|
+
// port was still held, and nothing stopped the survivor at
|
|
260
|
+
// session end because the job was no longer running. So a
|
|
261
|
+
// job whose shell has ended stays running while its group is
|
|
262
|
+
// alive, and ends — with the shell's exit code — when the
|
|
263
|
+
// group is empty.
|
|
264
|
+
if (entry.record.status !== 'killed' && groupAlive(child.pid)) {
|
|
265
|
+
const poll = setInterval(() => {
|
|
266
|
+
if (groupAlive(child.pid)) return
|
|
267
|
+
clearInterval(poll)
|
|
268
|
+
finalize(code, signal)
|
|
269
|
+
}, GROUP_POLL_MS)
|
|
270
|
+
poll.unref()
|
|
271
|
+
return
|
|
272
|
+
}
|
|
273
|
+
finalize(code, signal)
|
|
193
274
|
})
|
|
194
275
|
child.once('error', () => {
|
|
195
276
|
entry.record = { ...entry.record, status: 'exited', exitedAt: Date.now() }
|
|
196
277
|
resolve()
|
|
278
|
+
this.announceExit(entry.record)
|
|
197
279
|
})
|
|
198
280
|
}),
|
|
199
281
|
}
|
|
@@ -266,8 +348,10 @@ export class BackgroundJobRegistry {
|
|
|
266
348
|
// tell a kill from an ordinary exit. Set it after and the race decides
|
|
267
349
|
// which of two different answers a reader gets.
|
|
268
350
|
entry.record = { ...entry.record, status: 'killed' }
|
|
269
|
-
|
|
270
|
-
|
|
351
|
+
const signal = (sig: NodeJS.Signals) =>
|
|
352
|
+
entry.killProcess ? entry.killProcess(sig) : killTree(entry.child, sig)
|
|
353
|
+
signal('SIGTERM')
|
|
354
|
+
const grace = setTimeout(() => signal('SIGKILL'), SANDBOX_KILL_GRACE_MS)
|
|
271
355
|
// Unreffed: a job that exits on SIGTERM must not hold the process open
|
|
272
356
|
// for the remaining grace period doing nothing.
|
|
273
357
|
grace.unref?.()
|
|
@@ -317,7 +401,16 @@ export class BackgroundJobRegistry {
|
|
|
317
401
|
export function bindOwner(
|
|
318
402
|
registry: BackgroundJobRegistry,
|
|
319
403
|
owner: string,
|
|
320
|
-
defaults: {
|
|
404
|
+
defaults: {
|
|
405
|
+
readonly workingDirectory?: string
|
|
406
|
+
readonly env?: Record<string, string>
|
|
407
|
+
/** See `StartJobParams.spawn`; given the resolved command, directory and env. */
|
|
408
|
+
readonly spawn?: (params: {
|
|
409
|
+
readonly command: string
|
|
410
|
+
readonly workingDirectory: string
|
|
411
|
+
readonly env?: Record<string, string>
|
|
412
|
+
}) => JobProcess
|
|
413
|
+
} = {},
|
|
321
414
|
) {
|
|
322
415
|
const mine = (id: string): BackgroundJob => {
|
|
323
416
|
const job = registry.get(id)
|
|
@@ -325,13 +418,26 @@ export function bindOwner(
|
|
|
325
418
|
return job
|
|
326
419
|
}
|
|
327
420
|
return {
|
|
328
|
-
start: (params: { command: string; workingDirectory?: string }) =>
|
|
329
|
-
|
|
421
|
+
start: (params: { command: string; workingDirectory?: string }) => {
|
|
422
|
+
const workingDirectory = params.workingDirectory ?? defaults.workingDirectory ?? process.cwd()
|
|
423
|
+
const spawnHost = defaults.spawn
|
|
424
|
+
return registry.start({
|
|
330
425
|
owner,
|
|
331
426
|
command: params.command,
|
|
332
|
-
workingDirectory
|
|
427
|
+
workingDirectory,
|
|
333
428
|
...(defaults.env ? { env: defaults.env } : {}),
|
|
334
|
-
|
|
429
|
+
...(spawnHost
|
|
430
|
+
? {
|
|
431
|
+
spawn: () =>
|
|
432
|
+
spawnHost({
|
|
433
|
+
command: params.command,
|
|
434
|
+
workingDirectory,
|
|
435
|
+
...(defaults.env ? { env: defaults.env } : {}),
|
|
436
|
+
}),
|
|
437
|
+
}
|
|
438
|
+
: {}),
|
|
439
|
+
})
|
|
440
|
+
},
|
|
335
441
|
get: (id: string) => mine(id),
|
|
336
442
|
read: (id: string, opts?: { fromOffset?: number }) => {
|
|
337
443
|
mine(id)
|
|
@@ -20,7 +20,7 @@ import type { EmergencySaveData } from '../../types/run/emergency.js'
|
|
|
20
20
|
import type { CheckpointListEntry } from '../../types/run/replay.js'
|
|
21
21
|
import { ZERO_COST } from '../../utils/cost.js'
|
|
22
22
|
import { buildToolResultHashes } from '../../utils/hash.js'
|
|
23
|
-
import { asCheckpointId, generateCheckpointId } from '../../utils/id.js'
|
|
23
|
+
import { asCheckpointId, asEmergencySaveId, generateCheckpointId } from '../../utils/id.js'
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* Projection from a full checkpoint payload to the public listing entry.
|
|
@@ -72,9 +72,11 @@ export function toCheckpointListEntry(cp: IterationCheckpoint): CheckpointListEn
|
|
|
72
72
|
* See ses_005-deterministic-replay design §2 + §5.2.
|
|
73
73
|
*/
|
|
74
74
|
export function projectEmergencyToCheckpoint(dump: EmergencySaveData): IterationCheckpoint {
|
|
75
|
-
const
|
|
75
|
+
const emergencyId = asEmergencySaveId(dump.id)
|
|
76
|
+
// The checkpoint is another view of the same snapshot and retains its key.
|
|
77
|
+
const checkpointId = asCheckpointId(emergencyId)
|
|
76
78
|
return {
|
|
77
|
-
id:
|
|
79
|
+
id: checkpointId,
|
|
78
80
|
runId: dump.runId,
|
|
79
81
|
// The dump records the run's start, so this projection carries the
|
|
80
82
|
// same stamp an ordinary checkpoint of that run would — a run whose
|
|
@@ -85,6 +87,8 @@ export function projectEmergencyToCheckpoint(dump: EmergencySaveData): Iteration
|
|
|
85
87
|
iteration: dump.currentIteration,
|
|
86
88
|
messages: dump.messages,
|
|
87
89
|
tokenUsage: dump.tokenUsage,
|
|
90
|
+
budgetBinding: dump.budgetBinding,
|
|
91
|
+
budgetAccountId: dump.budgetAccountId,
|
|
88
92
|
costInfo: { ...ZERO_COST, unpricedTokens: dump.tokenUsage.totalTokens },
|
|
89
93
|
guardState: {
|
|
90
94
|
iterationCount: dump.currentIteration,
|
|
@@ -264,6 +268,8 @@ export class CheckpointManager {
|
|
|
264
268
|
iteration,
|
|
265
269
|
messages: [...runMgr.messages],
|
|
266
270
|
tokenUsage: { ...runMgr.tokenUsage },
|
|
271
|
+
budgetBinding: runMgr.budget?.binding,
|
|
272
|
+
budgetAccountId: runMgr.budget?.accountId,
|
|
267
273
|
costInfo: { ...runMgr.costInfo },
|
|
268
274
|
guardState: {
|
|
269
275
|
iterationCount: runMgr.currentIteration,
|
|
@@ -275,6 +281,7 @@ export class CheckpointManager {
|
|
|
275
281
|
traceContext: this.traceSource?.(),
|
|
276
282
|
}
|
|
277
283
|
|
|
284
|
+
await runMgr.budget?.flush()
|
|
278
285
|
await this.store.writeCheckpoint(this.scope, checkpoint, this.claimFence)
|
|
279
286
|
this.lastCreatedId = checkpoint.id
|
|
280
287
|
return checkpoint
|
|
@@ -2,12 +2,7 @@ import { join } from 'node:path'
|
|
|
2
2
|
import { GENAI, NAMZU } from '../../constants/telemetry/index.js'
|
|
3
3
|
import { PlanManager } from '../../manager/plan/lifecycle.js'
|
|
4
4
|
import { RunPersistence } from '../../manager/run/persistence.js'
|
|
5
|
-
import {
|
|
6
|
-
DefaultFilesystemMigrator,
|
|
7
|
-
type FilesystemMigrationResult,
|
|
8
|
-
type FilesystemMigrator,
|
|
9
|
-
NOOP_FILESYSTEM_MIGRATION_SINK,
|
|
10
|
-
} from '../../session/migration/index.js'
|
|
5
|
+
import type { TokenBudget } from '../../run/token-budget.js'
|
|
11
6
|
import { DefaultPathBuilder, type PathBuilder } from '../../session/workspace/path-builder.js'
|
|
12
7
|
import { ActivityStore } from '../../store/activity/memory.js'
|
|
13
8
|
import { type ActivityTrackingConfig, resolveActivityTracking } from '../../types/activity/index.js'
|
|
@@ -33,20 +28,9 @@ import { type Logger, resolveLogger } from '../../utils/logger.js'
|
|
|
33
28
|
* `pathBuilder` is optional; when absent a {@link DefaultPathBuilder} is
|
|
34
29
|
* constructed against `{workingDirectory}/.namzu`.
|
|
35
30
|
*
|
|
36
|
-
* `filesystemMigrator` is optional, but note what `build` actually does
|
|
37
|
-
* with it: nothing. Migration is not part of `build` — it runs once per
|
|
38
|
-
* process via {@link RunContextFactory.ensureMigrated}, kept out of `build`
|
|
39
|
-
* entirely so the static method stays synchronous for existing callers;
|
|
40
|
-
* `query()` calls `ensureMigrated` itself, with its own migrator, before it
|
|
41
|
-
* ever calls `build`. This field predates that split, and no code path
|
|
42
|
-
* threads it to `ensureMigrated` on `build`'s behalf. Its sibling
|
|
43
|
-
* `migrationSink` had the identical shape — declared, never read anywhere
|
|
44
|
-
* in the workspace — and NZ-BOOT-04 removed it
|
|
45
|
-
* (`docs/conventions/declared-but-undriven.md`) rather than invent a caller
|
|
46
|
-
* for a field nothing needed; `filesystemMigrator` is the same defect, left
|
|
47
|
-
* for a follow-up rather than folded into that change.
|
|
48
31
|
*/
|
|
49
32
|
export interface RunContextConfig {
|
|
33
|
+
budget?: TokenBudget
|
|
50
34
|
/**
|
|
51
35
|
* The mode this conversation was left in, when the run config names none.
|
|
52
36
|
*
|
|
@@ -93,13 +77,6 @@ export interface RunContextConfig {
|
|
|
93
77
|
checkpointStore?: CheckpointStore
|
|
94
78
|
runStore?: RunStore
|
|
95
79
|
|
|
96
|
-
/**
|
|
97
|
-
* Optional injected migrator — tests pass a stub; production code relies
|
|
98
|
-
* on the {@link DefaultFilesystemMigrator}. See session-hierarchy.md
|
|
99
|
-
* §13.4.1.
|
|
100
|
-
*/
|
|
101
|
-
filesystemMigrator?: FilesystemMigrator
|
|
102
|
-
|
|
103
80
|
runId?: RunId
|
|
104
81
|
|
|
105
82
|
parentRunId?: RunId
|
|
@@ -138,39 +115,7 @@ export interface RunContext {
|
|
|
138
115
|
trackingConfig: ActivityTrackingConfig
|
|
139
116
|
}
|
|
140
117
|
|
|
141
|
-
/**
|
|
142
|
-
* Module-level first-call guard for the boot-time filesystem migration
|
|
143
|
-
* (session-hierarchy.md §13.4.1). Keyed on the root directory so a single
|
|
144
|
-
* process that spans multiple `.namzu` roots (unusual but legal) migrates
|
|
145
|
-
* each one once. Subsequent calls short-circuit via the cached promise —
|
|
146
|
-
* never re-reading the on-disk marker per call.
|
|
147
|
-
*/
|
|
148
|
-
const migrationPromises = new Map<string, Promise<FilesystemMigrationResult>>()
|
|
149
|
-
|
|
150
118
|
export class RunContextFactory {
|
|
151
|
-
/**
|
|
152
|
-
* Run the boot-time filesystem migration for `rootDir` at most once per
|
|
153
|
-
* process. Safe to `await` from any async entry point; concurrent callers
|
|
154
|
-
* for the same root share a single migration promise (no duplicate work,
|
|
155
|
-
* no race with the on-disk `.tmp` lock).
|
|
156
|
-
*/
|
|
157
|
-
static ensureMigrated(
|
|
158
|
-
rootDir: string,
|
|
159
|
-
migrator: FilesystemMigrator = new DefaultFilesystemMigrator(NOOP_FILESYSTEM_MIGRATION_SINK),
|
|
160
|
-
): Promise<FilesystemMigrationResult> {
|
|
161
|
-
const cached = migrationPromises.get(rootDir)
|
|
162
|
-
if (cached) return cached
|
|
163
|
-
const promise = migrator.migrate(rootDir)
|
|
164
|
-
migrationPromises.set(rootDir, promise)
|
|
165
|
-
// Crash-safety: if the migration rejects, drop the cached promise so
|
|
166
|
-
// the next caller gets a fresh attempt. Successful results stay cached
|
|
167
|
-
// (idempotency — further calls short-circuit without re-running).
|
|
168
|
-
promise.catch(() => {
|
|
169
|
-
migrationPromises.delete(rootDir)
|
|
170
|
-
})
|
|
171
|
-
return promise
|
|
172
|
-
}
|
|
173
|
-
|
|
174
119
|
/**
|
|
175
120
|
* The run's one correlated logger, built once and handed to every
|
|
176
121
|
* consumer that used to construct its own. Split out of `build` because
|
|
@@ -271,6 +216,7 @@ export class RunContextFactory {
|
|
|
271
216
|
|
|
272
217
|
const runMgr = new RunPersistence({
|
|
273
218
|
runId,
|
|
219
|
+
budget: config.budget,
|
|
274
220
|
agentId: config.agentId,
|
|
275
221
|
agentName: config.agentName,
|
|
276
222
|
runConfig: config.runConfig,
|