@namzu/sdk 34.2.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 +133 -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 +95 -46
- 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 +15 -0
- package/dist/types/tool/index.d.ts.map +1 -1
- package/dist/types/tool/index.js.map +1 -1
- package/dist/utils/frontmatter.d.ts +1 -1
- package/dist/utils/frontmatter.js +1 -1
- package/dist/utils/id-format.d.ts +3 -0
- package/dist/utils/id-format.d.ts.map +1 -0
- package/dist/utils/id-format.js +9 -0
- package/dist/utils/id-format.js.map +1 -0
- package/dist/utils/id.d.ts +65 -32
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +168 -148
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/log/exception.js +1 -1
- package/dist/utils/log/exception.js.map +1 -1
- package/dist/utils/log/index.d.ts.map +1 -1
- package/dist/utils/log/index.js +1 -2
- package/dist/utils/log/index.js.map +1 -1
- package/dist/utils/log/templates.d.ts.map +1 -1
- package/dist/utils/log/templates.js +0 -1
- package/dist/utils/log/templates.js.map +1 -1
- package/package.json +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 +128 -58
- 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 +15 -0
- package/src/utils/frontmatter.ts +1 -1
- package/src/utils/id-format.ts +9 -0
- package/src/utils/id.ts +222 -181
- package/src/utils/log/exception.ts +1 -1
- package/src/utils/log/index.ts +1 -2
- package/src/utils/log/templates.ts +0 -1
- package/dist/session/migration/errors.d.ts +0 -26
- package/dist/session/migration/errors.d.ts.map +0 -1
- package/dist/session/migration/errors.js +0 -22
- package/dist/session/migration/errors.js.map +0 -1
- package/dist/session/migration/filesystem.d.ts +0 -122
- package/dist/session/migration/filesystem.d.ts.map +0 -1
- package/dist/session/migration/filesystem.js +0 -379
- package/dist/session/migration/filesystem.js.map +0 -1
- package/dist/session/migration/id-prefix.d.ts +0 -113
- package/dist/session/migration/id-prefix.d.ts.map +0 -1
- package/dist/session/migration/id-prefix.js +0 -132
- package/dist/session/migration/id-prefix.js.map +0 -1
- package/dist/session/migration/index.d.ts +0 -12
- package/dist/session/migration/index.d.ts.map +0 -1
- package/dist/session/migration/index.js +0 -12
- package/dist/session/migration/index.js.map +0 -1
- package/dist/session/migration/marker.d.ts +0 -57
- package/dist/session/migration/marker.d.ts.map +0 -1
- package/dist/session/migration/marker.js +0 -123
- package/dist/session/migration/marker.js.map +0 -1
- package/src/session/migration/errors.ts +0 -23
- package/src/session/migration/filesystem.ts +0 -468
- package/src/session/migration/id-prefix.ts +0 -166
- package/src/session/migration/index.ts +0 -41
- package/src/session/migration/marker.ts +0 -142
|
@@ -2,8 +2,13 @@ import { z } from 'zod'
|
|
|
2
2
|
import type { TokenUsage } from '../common/index.js'
|
|
3
3
|
import type { EmergencySaveId, RunId } from '../ids/index.js'
|
|
4
4
|
import type { Message } from '../message/index.js'
|
|
5
|
+
import type { TokenBudgetBinding } from './token-budget-store.js'
|
|
5
6
|
|
|
6
7
|
export interface EmergencySaveData {
|
|
8
|
+
/** Reference to the canonical tree ledger; a checkpoint never resets it. */
|
|
9
|
+
readonly budgetBinding?: TokenBudgetBinding
|
|
10
|
+
/** Also present for non-durable accounts; those require the live authority on resume. */
|
|
11
|
+
readonly budgetAccountId?: string
|
|
7
12
|
id: EmergencySaveId
|
|
8
13
|
runId: RunId
|
|
9
14
|
messages: Message[]
|
package/src/types/run/entity.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TokenBudgetSummary } from '../../run/token-budget.js'
|
|
1
2
|
import type { CostInfo, RunExecutionStatus, TokenUsage } from '../common/index.js'
|
|
2
3
|
import type { RunId } from '../ids/index.js'
|
|
3
4
|
import type { Message } from '../message/index.js'
|
|
@@ -6,6 +7,7 @@ import type { AgentRunConfig } from './config.js'
|
|
|
6
7
|
import type { ReplayAttribution } from './replay.js'
|
|
7
8
|
import type { StepResult } from './step.js'
|
|
8
9
|
import type { StopReason } from './stop-reason.js'
|
|
10
|
+
import type { TokenBudgetBinding } from './token-budget-store.js'
|
|
9
11
|
|
|
10
12
|
export interface RunStateMetadata {
|
|
11
13
|
agentId: string
|
|
@@ -60,15 +62,17 @@ export interface RunStateMetadata {
|
|
|
60
62
|
*
|
|
61
63
|
* The wire counterpart is `WireRun` under `contracts/api.ts` — the two stay
|
|
62
64
|
* decoupled so the HTTP field shape can evolve independently from this
|
|
63
|
-
* persistence record.
|
|
64
|
-
* reference.
|
|
65
|
+
* persistence record.
|
|
65
66
|
*/
|
|
66
67
|
export interface Run {
|
|
67
68
|
id: RunId
|
|
68
69
|
status: RunExecutionStatus
|
|
69
70
|
metadata: RunStateMetadata
|
|
70
71
|
messages: Message[]
|
|
72
|
+
/** Usage of this invocation only; descendant spend is in budget. */
|
|
71
73
|
tokenUsage: TokenUsage
|
|
74
|
+
budget?: TokenBudgetSummary
|
|
75
|
+
budgetBinding?: TokenBudgetBinding
|
|
72
76
|
costInfo: CostInfo
|
|
73
77
|
currentIteration: number
|
|
74
78
|
startedAt: number
|
package/src/types/run/events.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TokenBudgetSummary } from '../../run/token-budget.js'
|
|
1
2
|
import type { ActivityStatus, ActivityType } from '../activity/index.js'
|
|
2
3
|
import type { BaseAgentResult } from '../agent/base.js'
|
|
3
4
|
import type { CostInfo, PlatformError, TokenUsage } from '../common/index.js'
|
|
@@ -245,6 +246,8 @@ type CoreRunEvent =
|
|
|
245
246
|
iteration: number
|
|
246
247
|
/** How many `tool_result` bodies were emptied. */
|
|
247
248
|
clearedCount: number
|
|
249
|
+
/** Assistant narrations cut to their first sentence by the salience pass, when it ran. */
|
|
250
|
+
stubbedCount?: number
|
|
248
251
|
/** Characters removed, summed across those results. */
|
|
249
252
|
charsReclaimed: number
|
|
250
253
|
/** `charsReclaimed` as tokens, by the same estimate the trigger uses. */
|
|
@@ -502,6 +505,7 @@ type CoreRunEvent =
|
|
|
502
505
|
}
|
|
503
506
|
| {
|
|
504
507
|
type: 'run_paused'
|
|
508
|
+
budget?: TokenBudgetSummary
|
|
505
509
|
runId: RunId
|
|
506
510
|
checkpointId: CheckpointId
|
|
507
511
|
reason: string
|
|
@@ -550,8 +554,38 @@ type CoreRunEvent =
|
|
|
550
554
|
* `stopReason` is what separates them, and it is on the event because the
|
|
551
555
|
* alternative is asking every consumer to hold the `Run` as well.
|
|
552
556
|
*/
|
|
557
|
+
/**
|
|
558
|
+
* What the run learned was written to the host's memory store: its
|
|
559
|
+
* decisions, discoveries and failures as one entry a later run can
|
|
560
|
+
* search for. Emitted only when a host asked (`consolidateInto`) and
|
|
561
|
+
* the run had something to say.
|
|
562
|
+
*/
|
|
563
|
+
/**
|
|
564
|
+
* A background job this run (or the owner it runs under) started has
|
|
565
|
+
* ended. The model learns it from a notice on its next tool result;
|
|
566
|
+
* the host learns it from this, whether or not a turn is running.
|
|
567
|
+
*/
|
|
568
|
+
| {
|
|
569
|
+
type: 'background_job_exited'
|
|
570
|
+
runId: RunId
|
|
571
|
+
jobId: string
|
|
572
|
+
command: string
|
|
573
|
+
status: 'exited' | 'killed'
|
|
574
|
+
exitCode?: number
|
|
575
|
+
signal?: string
|
|
576
|
+
}
|
|
577
|
+
| {
|
|
578
|
+
type: 'memory_consolidated'
|
|
579
|
+
runId: RunId
|
|
580
|
+
memoryId: string
|
|
581
|
+
title: string
|
|
582
|
+
decisions: number
|
|
583
|
+
discoveries: number
|
|
584
|
+
failures: number
|
|
585
|
+
}
|
|
553
586
|
| {
|
|
554
587
|
type: 'run_completed'
|
|
588
|
+
budget?: TokenBudgetSummary
|
|
555
589
|
runId: RunId
|
|
556
590
|
result: string
|
|
557
591
|
stopReason?: StopReason
|
|
@@ -581,6 +615,7 @@ type CoreRunEvent =
|
|
|
581
615
|
*/
|
|
582
616
|
| {
|
|
583
617
|
type: 'run_failed'
|
|
618
|
+
budget?: TokenBudgetSummary
|
|
584
619
|
runId: RunId
|
|
585
620
|
error: string
|
|
586
621
|
failure?: PlatformError
|
|
@@ -638,6 +673,8 @@ type CoreRunEvent =
|
|
|
638
673
|
}
|
|
639
674
|
| {
|
|
640
675
|
type: 'token_usage_updated'
|
|
676
|
+
/** Aggregate tree spend, distinct from this run's own usage. */
|
|
677
|
+
budget?: TokenBudgetSummary
|
|
641
678
|
runId: RunId
|
|
642
679
|
usage: TokenUsage
|
|
643
680
|
cost: CostInfo
|
package/src/types/run/index.ts
CHANGED
package/src/types/run/state.ts
CHANGED
|
@@ -1,9 +1,19 @@
|
|
|
1
|
+
import {
|
|
2
|
+
asCheckpointId,
|
|
3
|
+
asProjectId,
|
|
4
|
+
asRunId,
|
|
5
|
+
asSessionId,
|
|
6
|
+
asTenantId,
|
|
7
|
+
asTopicId,
|
|
8
|
+
} from '../../utils/id.js'
|
|
1
9
|
import type { CostInfo, RunExecutionStatus, TokenUsage } from '../common/index.js'
|
|
2
10
|
import type { CheckpointId, PendingDecision } from '../hitl/index.js'
|
|
3
11
|
import type { RunId, SessionId, TenantId } from '../ids/index.js'
|
|
4
12
|
import type { Message } from '../message/index.js'
|
|
5
13
|
import type { ProjectId, TopicId } from '../session/ids.js'
|
|
6
14
|
import type { StopReason } from './stop-reason.js'
|
|
15
|
+
import { validateTokenBudgetBinding } from './token-budget-store.js'
|
|
16
|
+
import type { TokenBudgetBinding } from './token-budget-store.js'
|
|
7
17
|
|
|
8
18
|
/**
|
|
9
19
|
* Everything needed to pick a run back up in a DIFFERENT process.
|
|
@@ -24,17 +34,17 @@ import type { StopReason } from './stop-reason.js'
|
|
|
24
34
|
* host's job on the way back in, which is exactly why they are absent.
|
|
25
35
|
*/
|
|
26
36
|
export interface RunState {
|
|
37
|
+
/** Reference to the canonical tree ledger; a checkpoint never resets it. */
|
|
38
|
+
readonly budgetBinding?: TokenBudgetBinding
|
|
39
|
+
/** Also present for non-durable accounts; those require the live authority on resume. */
|
|
40
|
+
readonly budgetAccountId?: string
|
|
27
41
|
/**
|
|
28
|
-
* Schema version.
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
* by {@link parseRunState}; any other unrecognized version is refused
|
|
33
|
-
* with a clear failure rather than a partial restore, because silently
|
|
34
|
-
* dropping fields this build does not know about is the outcome worth
|
|
35
|
-
* failing loudly to avoid.
|
|
42
|
+
* Schema version. Versions 1–3 are coerced forward by {@link parseRunState}.
|
|
43
|
+
* Version 4 carries aggregate token authority references; earlier readers
|
|
44
|
+
* must refuse it rather than silently discarding that authority on resume.
|
|
45
|
+
* Other unrecognized versions are refused instead of partially restored.
|
|
36
46
|
*/
|
|
37
|
-
readonly version:
|
|
47
|
+
readonly version: 4
|
|
38
48
|
|
|
39
49
|
readonly runId: RunId
|
|
40
50
|
readonly sessionId: SessionId
|
|
@@ -92,7 +102,7 @@ export class RunStateVersionError extends Error {
|
|
|
92
102
|
}
|
|
93
103
|
}
|
|
94
104
|
|
|
95
|
-
export const RUN_STATE_VERSION =
|
|
105
|
+
export const RUN_STATE_VERSION = 4 as const
|
|
96
106
|
|
|
97
107
|
/** The shape `RunState` had before NZ-TOPIC-03: `threadId`, not `topicId`. */
|
|
98
108
|
const RUN_STATE_LEGACY_VERSION = 1
|
|
@@ -104,17 +114,27 @@ const RUN_STATE_LEGACY_VERSION = 1
|
|
|
104
114
|
*/
|
|
105
115
|
const RUN_STATE_PRE_PREFIX_VERSION = 2
|
|
106
116
|
|
|
107
|
-
/**
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
117
|
+
/** Before checkpoints referred to a canonical aggregate token ledger. */
|
|
118
|
+
const RUN_STATE_PRE_BUDGET_VERSION = 3
|
|
119
|
+
|
|
120
|
+
/** Require UUIDs on every supplied identity field without rewriting records. */
|
|
121
|
+
function requireEntityIds(record: Record<string, unknown>): Record<string, unknown> {
|
|
122
|
+
if (record.budgetBinding !== undefined) validateTokenBudgetBinding(record.budgetBinding)
|
|
123
|
+
if (record.budgetAccountId !== undefined) asRunId(record.budgetAccountId as string)
|
|
124
|
+
const validators = {
|
|
125
|
+
runId: asRunId,
|
|
126
|
+
parentRunId: asRunId,
|
|
127
|
+
sessionId: asSessionId,
|
|
128
|
+
projectId: asProjectId,
|
|
129
|
+
tenantId: asTenantId,
|
|
130
|
+
topicId: asTopicId,
|
|
131
|
+
checkpointId: asCheckpointId,
|
|
132
|
+
}
|
|
133
|
+
for (const [field, validate] of Object.entries(validators)) {
|
|
134
|
+
const value = record[field]
|
|
135
|
+
if (value !== undefined) validate(value as string)
|
|
136
|
+
}
|
|
137
|
+
return record
|
|
118
138
|
}
|
|
119
139
|
|
|
120
140
|
/**
|
|
@@ -125,15 +145,15 @@ function rewriteLegacyTopicIdPrefix(record: Record<string, unknown>): Record<str
|
|
|
125
145
|
* and read by another, possibly weeks later and possibly after an SDK
|
|
126
146
|
* upgrade; a silent partial restore there produces a run that looks healthy
|
|
127
147
|
* and has lost its budgets. Failing loudly is the only honest option — for
|
|
128
|
-
* every version this build does not otherwise recognize. Versions 1
|
|
129
|
-
* are the exceptions:
|
|
148
|
+
* every version this build does not otherwise recognize. Versions 1 through 3
|
|
149
|
+
* are the exceptions: they are coerced forward rather than refused, the
|
|
130
150
|
* same shape-tolerant rename `store/schema.ts`'s migrations use for the
|
|
131
151
|
* on-disk session record, because a host that parks a run across either
|
|
132
152
|
* release boundary would otherwise have every in-flight snapshot refused
|
|
133
153
|
* on the way back in. `threadId` is renamed only when present (v1), and
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
154
|
+
* topic IDs are validated without changing their value. Retired `thd_`
|
|
155
|
+
* values are refused; opaque UUIDs
|
|
156
|
+
* are preserved. An absent topic field is not added.
|
|
137
157
|
* Nothing here re-persists the coerced snapshot — a host that calls
|
|
138
158
|
* `parseRunState` and then serializes the result back out upgrades the
|
|
139
159
|
* record on THAT write, same as `store/schema.ts`'s "migrate on read,
|
|
@@ -151,6 +171,14 @@ export function parseRunState(json: string | unknown): RunState {
|
|
|
151
171
|
}
|
|
152
172
|
const record = raw as Record<string, unknown>
|
|
153
173
|
const version = record.version
|
|
174
|
+
if (
|
|
175
|
+
(version === RUN_STATE_LEGACY_VERSION ||
|
|
176
|
+
version === RUN_STATE_PRE_PREFIX_VERSION ||
|
|
177
|
+
version === RUN_STATE_PRE_BUDGET_VERSION) &&
|
|
178
|
+
(record.budgetBinding !== undefined || record.budgetAccountId !== undefined)
|
|
179
|
+
) {
|
|
180
|
+
throw new RunStateVersionError(version, RUN_STATE_VERSION)
|
|
181
|
+
}
|
|
154
182
|
|
|
155
183
|
if (version === RUN_STATE_LEGACY_VERSION) {
|
|
156
184
|
const { threadId, ...rest } = record
|
|
@@ -159,14 +187,14 @@ export function parseRunState(json: string | unknown): RunState {
|
|
|
159
187
|
...(threadId !== undefined ? { topicId: threadId } : {}),
|
|
160
188
|
}
|
|
161
189
|
return {
|
|
162
|
-
...
|
|
190
|
+
...requireEntityIds(withTopicId),
|
|
163
191
|
version: RUN_STATE_VERSION,
|
|
164
192
|
} as RunState
|
|
165
193
|
}
|
|
166
194
|
|
|
167
|
-
if (version === RUN_STATE_PRE_PREFIX_VERSION) {
|
|
195
|
+
if (version === RUN_STATE_PRE_PREFIX_VERSION || version === RUN_STATE_PRE_BUDGET_VERSION) {
|
|
168
196
|
return {
|
|
169
|
-
...
|
|
197
|
+
...requireEntityIds(record),
|
|
170
198
|
version: RUN_STATE_VERSION,
|
|
171
199
|
} as RunState
|
|
172
200
|
}
|
|
@@ -174,5 +202,5 @@ export function parseRunState(json: string | unknown): RunState {
|
|
|
174
202
|
if (version !== RUN_STATE_VERSION) {
|
|
175
203
|
throw new RunStateVersionError(version, RUN_STATE_VERSION)
|
|
176
204
|
}
|
|
177
|
-
return
|
|
205
|
+
return requireEntityIds(record) as unknown as RunState
|
|
178
206
|
}
|
|
@@ -17,19 +17,8 @@ export type StopReason =
|
|
|
17
17
|
* declaring one, arriving at a model the price catalogue has no row for.
|
|
18
18
|
* `costInfo.unpricedTokens` says how much of the run it covers.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* Every hard stop is followed by one more model call — `requestFinalResponse`
|
|
23
|
-
* asks for a closing summary, and the guard does not run again before or
|
|
24
|
-
* after it. That is pre-existing and true of `cost_limit` and
|
|
25
|
-
* `token_budget` alike, and it is stated here rather than left to be
|
|
26
|
-
* discovered because for THIS reason it cannot be otherwise: the model that
|
|
27
|
-
* triggered the stop is by definition one with no rate, so the closing
|
|
28
|
-
* call's cost is unmeasurable by construction. Bounding it would mean
|
|
29
|
-
* refusing to close the run at all, which loses the work.
|
|
30
|
-
*
|
|
31
|
-
* Its tokens are counted, so `costInfo.unpricedTokens` includes them and
|
|
32
|
-
* the run reports honestly what it could not price.
|
|
20
|
+
* A hard stop issues no further model request. Completed messages and
|
|
21
|
+
* tool results remain in the run even when no closing prose was produced.
|
|
33
22
|
*/
|
|
34
23
|
| 'cost_unmeasurable'
|
|
35
24
|
| 'timeout'
|
|
@@ -71,7 +60,7 @@ export type StopReason =
|
|
|
71
60
|
*
|
|
72
61
|
* The union of the finish reasons providers report, normalised into a
|
|
73
62
|
* provider-agnostic vocabulary. `forced_finalize` is a Namzu-specific value
|
|
74
|
-
* emitted by the orchestrator when
|
|
63
|
+
* emitted by the orchestrator when budget warnings request a final response
|
|
75
64
|
* without a model-issued stop reason.
|
|
76
65
|
*/
|
|
77
66
|
export type MessageStopReason =
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { TokenBudgetSnapshot } from '../../run/token-budget.js'
|
|
2
|
+
import { entityIdPattern } from '../../utils/id-format.js'
|
|
3
|
+
import { asProjectId, asRunId, asSessionId, asTenantId } from '../../utils/id.js'
|
|
4
|
+
import type { ProjectId, RunId, SessionId, TenantId } from '../ids/index.js'
|
|
5
|
+
|
|
6
|
+
/** The root run owns the ledger, including every descendant account. */
|
|
7
|
+
export interface TokenBudgetScope {
|
|
8
|
+
readonly tenantId: TenantId
|
|
9
|
+
readonly projectId: ProjectId
|
|
10
|
+
readonly sessionId: SessionId
|
|
11
|
+
readonly runId: RunId
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/** JSON-safe checkpoint reference; the latest ledger remains authoritative. */
|
|
15
|
+
export interface TokenBudgetBinding {
|
|
16
|
+
readonly scope: TokenBudgetScope
|
|
17
|
+
readonly accountId: string
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Durable storage for one canonical token ledger per root run.
|
|
22
|
+
*
|
|
23
|
+
* A root and all its descendants share one writer. Save must atomically
|
|
24
|
+
* replace a complete record; a missing record is null and corrupt records
|
|
25
|
+
* throw. This interface provides no compare-and-swap or distributed lease.
|
|
26
|
+
* Hosts must ensure exclusive root ownership when resuming in another process.
|
|
27
|
+
*/
|
|
28
|
+
export interface TokenBudgetStore {
|
|
29
|
+
load(scope: TokenBudgetScope): Promise<TokenBudgetSnapshot | null>
|
|
30
|
+
save(scope: TokenBudgetScope, snapshot: TokenBudgetSnapshot): Promise<void>
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Validate an untrusted checkpoint reference without inventing missing identity. */
|
|
34
|
+
export function validateTokenBudgetBinding(value: unknown): TokenBudgetBinding {
|
|
35
|
+
if (typeof value !== 'object' || value === null || Array.isArray(value)) {
|
|
36
|
+
throw new Error('Invalid token budget binding')
|
|
37
|
+
}
|
|
38
|
+
const binding = value as Partial<TokenBudgetBinding>
|
|
39
|
+
if (typeof binding.accountId !== 'string' || !entityIdPattern().test(binding.accountId)) {
|
|
40
|
+
throw new Error('Invalid token budget account identity')
|
|
41
|
+
}
|
|
42
|
+
if (typeof binding.scope !== 'object' || binding.scope === null) {
|
|
43
|
+
throw new Error('Token budget binding is missing its root scope')
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
accountId: binding.accountId,
|
|
47
|
+
scope: {
|
|
48
|
+
tenantId: asTenantId(binding.scope.tenantId),
|
|
49
|
+
projectId: asProjectId(binding.scope.projectId),
|
|
50
|
+
sessionId: asSessionId(binding.scope.sessionId),
|
|
51
|
+
runId: asRunId(binding.scope.runId),
|
|
52
|
+
},
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -206,6 +206,19 @@ export interface SandboxNetworkPolicy {
|
|
|
206
206
|
readonly allowedHosts: readonly string[]
|
|
207
207
|
}
|
|
208
208
|
|
|
209
|
+
/** A process the sandbox started and does not wait for; see `Sandbox.spawnDetached`. */
|
|
210
|
+
export interface SandboxDetachedProcess {
|
|
211
|
+
/** The wrapper process. Its stdout and stderr are pipes the caller reads; stdin is closed. */
|
|
212
|
+
readonly child: import('node:child_process').ChildProcess
|
|
213
|
+
/** Signal everything the sandbox started for this process, inside the boundary and out. */
|
|
214
|
+
kill(signal: NodeJS.Signals): void
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export interface SandboxSpawnOptions {
|
|
218
|
+
readonly cwd?: string
|
|
219
|
+
readonly env?: Record<string, string>
|
|
220
|
+
}
|
|
221
|
+
|
|
209
222
|
export interface Sandbox {
|
|
210
223
|
readonly id: SandboxId
|
|
211
224
|
readonly status: SandboxStatus
|
|
@@ -213,6 +226,19 @@ export interface Sandbox {
|
|
|
213
226
|
readonly environment: SandboxEnvironment
|
|
214
227
|
exec(command: string, args?: string[], opts?: SandboxExecOptions): Promise<SandboxExecResult>
|
|
215
228
|
|
|
229
|
+
/**
|
|
230
|
+
* Start a process inside the boundary and hand it back running, for a
|
|
231
|
+
* host that keeps long-lived processes — a background job registry.
|
|
232
|
+
* The same confinement as `exec`; the difference is who waits. A
|
|
233
|
+
* provider without this cannot host background jobs, and the tools
|
|
234
|
+
* say so rather than running the job on the host.
|
|
235
|
+
*/
|
|
236
|
+
spawnDetached?(
|
|
237
|
+
command: string,
|
|
238
|
+
args?: readonly string[],
|
|
239
|
+
opts?: SandboxSpawnOptions,
|
|
240
|
+
): SandboxDetachedProcess
|
|
241
|
+
|
|
216
242
|
/**
|
|
217
243
|
* Narrow or widen what this sandbox can reach, while it is running.
|
|
218
244
|
*
|
|
@@ -467,6 +493,12 @@ export interface SandboxCreateConfig {
|
|
|
467
493
|
*/
|
|
468
494
|
readonly signal?: AbortSignal
|
|
469
495
|
readonly workingDirectory?: string
|
|
496
|
+
/**
|
|
497
|
+
* Directories bound into the sandbox read-write besides the working
|
|
498
|
+
* directory, absolute on the host. Only meaningful with
|
|
499
|
+
* `workingDirectory`; an ephemeral root has nothing to add to.
|
|
500
|
+
*/
|
|
501
|
+
readonly additionalDirectories?: readonly string[]
|
|
470
502
|
readonly env?: Record<string, string>
|
|
471
503
|
readonly timeoutMs?: number
|
|
472
504
|
readonly memoryLimitMb?: number
|
|
@@ -34,6 +34,14 @@ import type { ProjectId, SubSessionId, SummaryId, TopicId } from '../session/ids
|
|
|
34
34
|
* tracks both.
|
|
35
35
|
*/
|
|
36
36
|
export interface CreateSessionParams {
|
|
37
|
+
/**
|
|
38
|
+
* The id the session is created under. A host that needs to know a
|
|
39
|
+
* conversation's id before the conversation is written — to name a
|
|
40
|
+
* log, to label a hook, to show it — mints one with `generateSessionId`
|
|
41
|
+
* and passes it here; the store refuses an id it already holds. Absent,
|
|
42
|
+
* the store mints one.
|
|
43
|
+
*/
|
|
44
|
+
id?: SessionId
|
|
37
45
|
topicId: TopicId
|
|
38
46
|
projectId: ProjectId
|
|
39
47
|
/**
|
package/src/types/tool/index.ts
CHANGED
|
@@ -223,6 +223,13 @@ export interface ToolDispatchOptions {
|
|
|
223
223
|
export interface ToolContext {
|
|
224
224
|
runId: RunId
|
|
225
225
|
workingDirectory: string
|
|
226
|
+
/**
|
|
227
|
+
* Directories besides the working directory the file tools may reach,
|
|
228
|
+
* absolute. A host adds one for a session (`/add-dir`); a sandboxed run
|
|
229
|
+
* binds each. Relative paths still resolve against the working
|
|
230
|
+
* directory; an absolute path inside any of these is accepted.
|
|
231
|
+
*/
|
|
232
|
+
additionalDirectories?: readonly string[]
|
|
226
233
|
abortSignal: AbortSignal
|
|
227
234
|
env: Record<string, string>
|
|
228
235
|
log: (level: 'info' | 'warn' | 'error', message: string) => void
|
|
@@ -490,6 +497,14 @@ export interface ToolResult {
|
|
|
490
497
|
* what it sets here.
|
|
491
498
|
*/
|
|
492
499
|
retryable?: boolean
|
|
500
|
+
/**
|
|
501
|
+
* Facts this result pins into the run's working memory, by key. The
|
|
502
|
+
* kernel keeps them in the working-memory slot — in front of the model
|
|
503
|
+
* every iteration, across compaction — and a later pin under the same
|
|
504
|
+
* key replaces the earlier one. For what a tool knows and the model
|
|
505
|
+
* must not lose: what its controls do, where things are, what failed.
|
|
506
|
+
*/
|
|
507
|
+
workingState?: readonly import('../../compaction/types.js').WorkingStatePin[]
|
|
493
508
|
}
|
|
494
509
|
|
|
495
510
|
export interface ToolDefinition<TInput = unknown> extends ToolPresentation<TInput> {
|
package/src/utils/frontmatter.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* metadata**, so the same file was a hard error in one code path and a skill
|
|
9
9
|
* named after its own directory with "(no description)" in the other. Refuse
|
|
10
10
|
* versus degrade, on one file shape, is the divergence this module exists to
|
|
11
|
-
* end — see
|
|
11
|
+
* end — see "refuse do not degrade".
|
|
12
12
|
*
|
|
13
13
|
* **Deliberately not a YAML parser.** It is a flat key/value splitter with one
|
|
14
14
|
* level of nesting, and it refuses the constructs in {@link UNSUPPORTED_YAML}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
const HEX = '[0-9a-fA-F]'
|
|
2
|
+
const UUID = `${HEX}{8}-${HEX}{4}-[1-8]${HEX}{3}-[89abAB]${HEX}{3}-${HEX}{12}`
|
|
3
|
+
|
|
4
|
+
/** Internal shared spelling rule for runtime checks and JSON-schema-compatible schemas. */
|
|
5
|
+
export function entityIdPattern(): RegExp {
|
|
6
|
+
// JavaScript's $ also matches before a final newline. The final lookahead
|
|
7
|
+
// requires the actual end so no accepted id can carry a control character.
|
|
8
|
+
return new RegExp(String.raw`^${UUID}$(?![\s\S])`)
|
|
9
|
+
}
|