@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
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A shell command as a plugin hook.
|
|
3
|
+
*
|
|
4
|
+
* The lifecycle manager carries a hook system — `pre_tool_use`,
|
|
5
|
+
* `post_tool_use`, `run_start`, `run_end` and the rest — and `registerHook`
|
|
6
|
+
* lets a host attach a handler without a plugin on disk. What every host then
|
|
7
|
+
* writes for itself is the same adapter: run a command, hand it the event,
|
|
8
|
+
* read its exit code. This file is that adapter, once, so an operator
|
|
9
|
+
* application, an ACP server and an embedder all offer the same contract and
|
|
10
|
+
* an operator's hook script works under all three.
|
|
11
|
+
*
|
|
12
|
+
* ## The contract
|
|
13
|
+
*
|
|
14
|
+
* The command runs with `sh -c` in `cwd`. It receives one JSON object on
|
|
15
|
+
* stdin — `event`, `cwd`, `run_id`, and for tool events `tool_name`,
|
|
16
|
+
* `tool_input` and (after the call) `tool_result` — and the same facts as
|
|
17
|
+
* `NAMZU_HOOK_EVENT`, `NAMZU_RUN_ID`, `NAMZU_TOOL_NAME` and, when the input
|
|
18
|
+
* names a file, `NAMZU_TOOL_PATH`. Its exit code is its answer:
|
|
19
|
+
*
|
|
20
|
+
* - `0` — carry on.
|
|
21
|
+
* - `2` — **block.** Before a tool (`pre_tool_use`) the call is skipped and the
|
|
22
|
+
* model is told why, with the hook's stderr as the reason. On any other
|
|
23
|
+
* event a 2 is reported and the run carries on: there is nothing left to
|
|
24
|
+
* block once the tool has run or the run has started.
|
|
25
|
+
* - anything else — the hook's own failure. Reported through the logger,
|
|
26
|
+
* never blocking. A formatter that crashed must not stop the agent editing,
|
|
27
|
+
* and a script missing its interpreter (127) must not read as "forbidden".
|
|
28
|
+
*
|
|
29
|
+
* `2` rather than any non-zero, because a verdict and a failure are different
|
|
30
|
+
* facts and one exit code cannot carry both.
|
|
31
|
+
*
|
|
32
|
+
* ## What a hook cannot do here
|
|
33
|
+
*
|
|
34
|
+
* Modify a tool's input or replace its result. The hook protocol allows both
|
|
35
|
+
* (`modify`, `replace`); this adapter exposes neither, because a shell command
|
|
36
|
+
* that rewrites what the model asked for deserves its own design and audit,
|
|
37
|
+
* not a JSON field on stdout nobody reviewed.
|
|
38
|
+
*
|
|
39
|
+
* ## Bounds
|
|
40
|
+
*
|
|
41
|
+
* Each hook has a deadline (`timeoutMs`, default 30 s, capped at ten minutes)
|
|
42
|
+
* and its output is captured to a bound. A hook that times out is reported
|
|
43
|
+
* and does not block: one that could not answer in time has not answered no.
|
|
44
|
+
*/
|
|
45
|
+
import { spawn } from 'node:child_process';
|
|
46
|
+
import { asPluginId } from '../utils/id.js';
|
|
47
|
+
import { NOOP_LOGGER } from '../utils/log/create-logger.js';
|
|
48
|
+
export const SHELL_HOOK_EVENTS = [
|
|
49
|
+
'user_prompt_submit',
|
|
50
|
+
'session_start',
|
|
51
|
+
'session_end',
|
|
52
|
+
'pre_tool_use',
|
|
53
|
+
'post_tool_use',
|
|
54
|
+
'pre_compact',
|
|
55
|
+
'post_compact',
|
|
56
|
+
'subagent_stop',
|
|
57
|
+
'run_start',
|
|
58
|
+
'run_end',
|
|
59
|
+
];
|
|
60
|
+
/** The plugin id host shell hooks register under when the host names none. */
|
|
61
|
+
export const SHELL_HOOKS_PLUGIN_ID = asPluginId('6d6f6bec-9d54-485b-90ca-52edbac1009d');
|
|
62
|
+
export const DEFAULT_SHELL_HOOK_TIMEOUT_MS = 30_000;
|
|
63
|
+
export const MAX_SHELL_HOOK_TIMEOUT_MS = 10 * 60_000;
|
|
64
|
+
/** Captured output bound per stream. */
|
|
65
|
+
const MAX_CAPTURE_BYTES = 64 * 1024;
|
|
66
|
+
/**
|
|
67
|
+
* `matcher` against a tool name: `*`, or a `|`-separated list of names, each
|
|
68
|
+
* of which may end in `*`. Case-sensitive, because tool names are. A matcher
|
|
69
|
+
* on an event with no tool (`run_start`) matches nothing unless it is `*`.
|
|
70
|
+
*/
|
|
71
|
+
export function shellHookMatches(matcher, toolName) {
|
|
72
|
+
if (matcher === undefined || matcher.trim() === '' || matcher.trim() === '*')
|
|
73
|
+
return true;
|
|
74
|
+
if (toolName === undefined)
|
|
75
|
+
return false;
|
|
76
|
+
return matcher.split('|').some((part) => {
|
|
77
|
+
const candidate = part.trim();
|
|
78
|
+
if (candidate.length === 0)
|
|
79
|
+
return false;
|
|
80
|
+
return candidate.endsWith('*')
|
|
81
|
+
? toolName.startsWith(candidate.slice(0, -1))
|
|
82
|
+
: toolName === candidate;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/** Run one hook command to completion, bounded by its deadline and capture. */
|
|
86
|
+
export function runShellHook(entry, input, signal) {
|
|
87
|
+
const timeoutMs = Math.min(MAX_SHELL_HOOK_TIMEOUT_MS, Math.max(1, entry.timeoutMs ?? DEFAULT_SHELL_HOOK_TIMEOUT_MS));
|
|
88
|
+
const payload = JSON.stringify({
|
|
89
|
+
event: input.event,
|
|
90
|
+
cwd: input.cwd,
|
|
91
|
+
run_id: input.runId,
|
|
92
|
+
...(input.sessionId !== undefined ? { session_id: input.sessionId } : {}),
|
|
93
|
+
...(input.parentRunId !== undefined ? { parent_run_id: input.parentRunId } : {}),
|
|
94
|
+
...(input.prompt !== undefined ? { prompt: input.prompt } : {}),
|
|
95
|
+
...(input.compaction !== undefined ? { compaction: input.compaction } : {}),
|
|
96
|
+
...(input.toolName !== undefined ? { tool_name: input.toolName } : {}),
|
|
97
|
+
...(input.toolInput !== undefined ? { tool_input: input.toolInput } : {}),
|
|
98
|
+
...(input.toolResult !== undefined ? { tool_result: input.toolResult } : {}),
|
|
99
|
+
});
|
|
100
|
+
const toolPath = pathOf(input.toolInput);
|
|
101
|
+
return new Promise((resolve) => {
|
|
102
|
+
let child;
|
|
103
|
+
try {
|
|
104
|
+
child = spawn('sh', ['-c', entry.command], {
|
|
105
|
+
cwd: input.cwd,
|
|
106
|
+
env: {
|
|
107
|
+
...process.env,
|
|
108
|
+
NAMZU_HOOK_EVENT: input.event,
|
|
109
|
+
NAMZU_RUN_ID: input.runId,
|
|
110
|
+
...(input.sessionId !== undefined ? { NAMZU_SESSION_ID: input.sessionId } : {}),
|
|
111
|
+
...(input.toolName !== undefined ? { NAMZU_TOOL_NAME: input.toolName } : {}),
|
|
112
|
+
...(toolPath !== undefined ? { NAMZU_TOOL_PATH: toolPath } : {}),
|
|
113
|
+
},
|
|
114
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
115
|
+
// Its own process group, so the deadline can kill everything the
|
|
116
|
+
// command started. `sh -c 'sleep 5'` is one process under a shell
|
|
117
|
+
// that execs its last command and two under one that forks it;
|
|
118
|
+
// killing only the shell in the second case leaves `sleep` holding
|
|
119
|
+
// the stdout pipe, and the outcome cannot settle until it exits on
|
|
120
|
+
// its own — the hook's deadline becomes the grandchild's.
|
|
121
|
+
detached: process.platform !== 'win32',
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
resolve({
|
|
126
|
+
exitCode: null,
|
|
127
|
+
timedOut: false,
|
|
128
|
+
stdout: '',
|
|
129
|
+
stderr: '',
|
|
130
|
+
spawnError: error instanceof Error ? error.message : String(error),
|
|
131
|
+
});
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
let stdout = '';
|
|
135
|
+
let stderr = '';
|
|
136
|
+
let timedOut = false;
|
|
137
|
+
let settled = false;
|
|
138
|
+
const capture = (current, chunk) => current.length >= MAX_CAPTURE_BYTES
|
|
139
|
+
? current
|
|
140
|
+
: (current + chunk.toString('utf8')).slice(0, MAX_CAPTURE_BYTES);
|
|
141
|
+
child.stdout?.on('data', (chunk) => {
|
|
142
|
+
stdout = capture(stdout, chunk);
|
|
143
|
+
});
|
|
144
|
+
child.stderr?.on('data', (chunk) => {
|
|
145
|
+
stderr = capture(stderr, chunk);
|
|
146
|
+
});
|
|
147
|
+
const finish = (outcome) => {
|
|
148
|
+
if (settled)
|
|
149
|
+
return;
|
|
150
|
+
settled = true;
|
|
151
|
+
clearTimeout(timer);
|
|
152
|
+
signal?.removeEventListener('abort', onAbort);
|
|
153
|
+
resolve(outcome);
|
|
154
|
+
};
|
|
155
|
+
const killTree = () => {
|
|
156
|
+
if (child.pid !== undefined && process.platform !== 'win32') {
|
|
157
|
+
try {
|
|
158
|
+
process.kill(-child.pid, 'SIGKILL');
|
|
159
|
+
return;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// The group is already gone, or this platform has no groups;
|
|
163
|
+
// the child alone is the best that can be done.
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
child.kill('SIGKILL');
|
|
167
|
+
};
|
|
168
|
+
const timer = setTimeout(() => {
|
|
169
|
+
timedOut = true;
|
|
170
|
+
killTree();
|
|
171
|
+
}, timeoutMs);
|
|
172
|
+
const onAbort = () => killTree();
|
|
173
|
+
signal?.addEventListener('abort', onAbort, { once: true });
|
|
174
|
+
child.on('error', (error) => {
|
|
175
|
+
finish({ exitCode: null, timedOut, stdout, stderr, spawnError: error.message });
|
|
176
|
+
});
|
|
177
|
+
child.on('close', (code) => {
|
|
178
|
+
finish({ exitCode: code, timedOut, stdout, stderr });
|
|
179
|
+
});
|
|
180
|
+
child.on('exit', () => {
|
|
181
|
+
// After a kill, a survivor that still holds the pipes must not hold
|
|
182
|
+
// the outcome: drop our ends so `close` follows `exit` promptly.
|
|
183
|
+
if (timedOut || signal?.aborted) {
|
|
184
|
+
child.stdout?.destroy();
|
|
185
|
+
child.stderr?.destroy();
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
child.stdin?.on('error', () => {
|
|
189
|
+
// A hook that never reads stdin closes it; that is not a failure.
|
|
190
|
+
});
|
|
191
|
+
child.stdin?.end(payload);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
function pathOf(toolInput) {
|
|
195
|
+
if (toolInput === null || typeof toolInput !== 'object')
|
|
196
|
+
return undefined;
|
|
197
|
+
const record = toolInput;
|
|
198
|
+
for (const key of ['path', 'file_path', 'filePath']) {
|
|
199
|
+
const value = record[key];
|
|
200
|
+
if (typeof value === 'string' && value.length > 0)
|
|
201
|
+
return value;
|
|
202
|
+
}
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* The verdict, from the outcome and the event. Pure apart from the logger,
|
|
207
|
+
* so the mapping — the part that decides what the model is told — is
|
|
208
|
+
* testable without a process.
|
|
209
|
+
*/
|
|
210
|
+
export function shellHookVerdict(event, entry, outcome, log = NOOP_LOGGER) {
|
|
211
|
+
const attrs = { 'namzu.hook.event': event, 'namzu.hook.command': entry.command };
|
|
212
|
+
if (outcome.spawnError !== undefined) {
|
|
213
|
+
log.warn('hook could not start', { ...attrs, 'namzu.hook.error': outcome.spawnError });
|
|
214
|
+
return { action: 'continue' };
|
|
215
|
+
}
|
|
216
|
+
if (outcome.timedOut) {
|
|
217
|
+
log.warn('hook timed out', attrs);
|
|
218
|
+
return { action: 'continue' };
|
|
219
|
+
}
|
|
220
|
+
if (outcome.exitCode === 0) {
|
|
221
|
+
// On the prompt event, what the hook printed is context for the
|
|
222
|
+
// model — the branch, the time, a ticket. Everywhere else stdout is
|
|
223
|
+
// the operator's to read and the model's business not at all.
|
|
224
|
+
const text = outcome.stdout.trim();
|
|
225
|
+
if (event === 'user_prompt_submit' && text.length > 0)
|
|
226
|
+
return { action: 'annotate', text };
|
|
227
|
+
return { action: 'continue' };
|
|
228
|
+
}
|
|
229
|
+
if (outcome.exitCode === 2) {
|
|
230
|
+
const reason = outcome.stderr.trim() || outcome.stdout.trim() || `blocked by hook \`${entry.command}\``;
|
|
231
|
+
if (event === 'pre_tool_use' || event === 'user_prompt_submit')
|
|
232
|
+
return { action: 'skip', reason };
|
|
233
|
+
log.warn('hook returned 2 on an event it cannot block', {
|
|
234
|
+
...attrs,
|
|
235
|
+
'namzu.hook.reason': reason,
|
|
236
|
+
});
|
|
237
|
+
return { action: 'continue' };
|
|
238
|
+
}
|
|
239
|
+
log.warn('hook failed', {
|
|
240
|
+
...attrs,
|
|
241
|
+
'namzu.hook.exit': outcome.exitCode ?? -1,
|
|
242
|
+
'namzu.hook.stderr': outcome.stderr.trim().slice(0, 500),
|
|
243
|
+
});
|
|
244
|
+
return { action: 'continue' };
|
|
245
|
+
}
|
|
246
|
+
/** One entry as a hook definition the lifecycle manager accepts. */
|
|
247
|
+
export function createShellHook(event, entry, options) {
|
|
248
|
+
const log = options.log ?? NOOP_LOGGER;
|
|
249
|
+
return {
|
|
250
|
+
event,
|
|
251
|
+
handler: async (context) => {
|
|
252
|
+
if (!shellHookMatches(entry.matcher, context.toolName))
|
|
253
|
+
return { action: 'continue' };
|
|
254
|
+
const outcome = await runShellHook(entry, {
|
|
255
|
+
event,
|
|
256
|
+
cwd: options.cwd,
|
|
257
|
+
runId: String(context.runId),
|
|
258
|
+
...(context.sessionId !== undefined ? { sessionId: String(context.sessionId) } : {}),
|
|
259
|
+
...(context.parentRunId !== undefined
|
|
260
|
+
? { parentRunId: String(context.parentRunId) }
|
|
261
|
+
: {}),
|
|
262
|
+
...(context.prompt !== undefined ? { prompt: context.prompt } : {}),
|
|
263
|
+
...(context.compaction !== undefined ? { compaction: context.compaction } : {}),
|
|
264
|
+
...(context.toolName !== undefined ? { toolName: context.toolName } : {}),
|
|
265
|
+
...(context.toolInput !== undefined ? { toolInput: context.toolInput } : {}),
|
|
266
|
+
...(context.toolResult !== undefined
|
|
267
|
+
? {
|
|
268
|
+
toolResult: {
|
|
269
|
+
success: context.toolResult.success,
|
|
270
|
+
output: context.toolResult.output,
|
|
271
|
+
...(context.toolResult.error !== undefined
|
|
272
|
+
? { error: context.toolResult.error }
|
|
273
|
+
: {}),
|
|
274
|
+
},
|
|
275
|
+
}
|
|
276
|
+
: {}),
|
|
277
|
+
}, context.signal);
|
|
278
|
+
return shellHookVerdict(event, entry, outcome, log);
|
|
279
|
+
},
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Register every entry on the manager, in file order within an event. The
|
|
284
|
+
* manager runs `post_*` hooks in reverse, as it does for plugins, so a
|
|
285
|
+
* formatter registered last runs first after a write. Returns how many were
|
|
286
|
+
* attached.
|
|
287
|
+
*/
|
|
288
|
+
export function attachShellHooks(manager, hooks, options) {
|
|
289
|
+
const pluginId = options.pluginId ?? SHELL_HOOKS_PLUGIN_ID;
|
|
290
|
+
let count = 0;
|
|
291
|
+
for (const event of SHELL_HOOK_EVENTS) {
|
|
292
|
+
for (const entry of hooks[event] ?? []) {
|
|
293
|
+
manager.registerHook(pluginId, createShellHook(event, entry, options));
|
|
294
|
+
count += 1;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
return count;
|
|
298
|
+
}
|
|
299
|
+
//# sourceMappingURL=shell-hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shell-hook.js","sourceRoot":"","sources":["../../src/plugin/shell-hook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a coding agent works, as text the model reads.
|
|
3
|
+
*
|
|
4
|
+
* A system prompt built from the kernel says WHO the agent is and what tools
|
|
5
|
+
* it has. Nothing said HOW it should work: whether to act or ask, how much of
|
|
6
|
+
* a request to deliver, what to do when a test fails, when a shell command is
|
|
7
|
+
* the wrong tool, what is off-limits in git without a person saying so. Every
|
|
8
|
+
* one of those was left to the underlying model's defaults, and the defaults
|
|
9
|
+
* differ per provider — so the same session felt like a different agent
|
|
10
|
+
* depending on which model was behind it, and an operator experienced the gap
|
|
11
|
+
* as "it narrates instead of doing", "it stopped halfway", "it asked me three
|
|
12
|
+
* things it could have decided".
|
|
13
|
+
*
|
|
14
|
+
* This lived in the operator application first. It moved here because none of
|
|
15
|
+
* it is about that application: every rule names a builtin tool of this kernel
|
|
16
|
+
* (`read`, `edit`, `bash`, `task_create`, `Agent`) or a behaviour any coding
|
|
17
|
+
* agent built on it wants, and a second host would otherwise copy the text and
|
|
18
|
+
* let the two drift.
|
|
19
|
+
*
|
|
20
|
+
* Two texts, not one, and the split is by TOOL SET rather than by topic.
|
|
21
|
+
* `CODING_AGENT_WORKING_DOCTRINE` names only the builtins and is meant for the
|
|
22
|
+
* parent and for every delegated sub-agent, because a delegated task edits the
|
|
23
|
+
* same repository under the same rules. `CODING_AGENT_DELEGATION_DOCTRINE`
|
|
24
|
+
* names `task_create` and `Agent`, which a sub-agent does not have, and so is
|
|
25
|
+
* for the parent only. An adversarial review caught a draft ordering children
|
|
26
|
+
* to plan with a tool they could not call; a rule about a tool the reader does
|
|
27
|
+
* not have is not guidance, it is an instruction to fail.
|
|
28
|
+
*
|
|
29
|
+
* Each rule names a behaviour, not a value; a rule about one repository
|
|
30
|
+
* belongs in that repository's instructions file, which the model receives
|
|
31
|
+
* separately. A host that wants its own identity block puts it in
|
|
32
|
+
* `systemPrompt`; the contribution below lands after it.
|
|
33
|
+
*/
|
|
34
|
+
import type { PromptContribution } from './contributions.js';
|
|
35
|
+
export declare const CODING_AGENT_WORKING_DOCTRINE = "## How you work\n\n### Delivering work\n- Act when you have enough information. Do not re-derive facts already established, and do not re-open a decision the user has already made.\n- The requested scope is the deliverable. Do not quietly narrow it, widen it, or turn it into something adjacent. Read ambiguity the way a careful colleague would; make the routine judgment calls yourself and check in only when different readings would produce materially different work.\n- Finish the whole task, not just the easy parts. If one part is blocked \u2014 a tool or capability you do not have, an input that is missing \u2014 say so plainly, do not improvise a result for it, finish every other part in full, and say explicitly what you left out and why. Scaling the work down is the user's call.\n- If you find a real problem with the task as stated, say so in a sentence or two, then keep going under a stated assumption. Reserve blocking questions for cases where proceeding under any assumption would be unsafe or would make the work useless if wrong.\n- If the user repeats or reaffirms a request after you raised a concern, that is their decision: say so and do the full request.\n\n### Reporting\n- Report outcomes faithfully. If tests fail, say so and show the output. If you skipped a step, say it was skipped. When something is done and verified, state it plainly without hedging.\n- Never present a green run on a subset as a green run. Name what was actually executed.\n- Reference code as `path:line` so the user can jump to it.\n- Correct an earlier statement only when the error would change the user's code, conclusions or decisions; state it once, plainly, and continue. No apologies, no tally of past mistakes.\n\n### Reading and editing code\n- Read a file before you edit it, and read enough of the surrounding code to match its comment density, naming and idiom. Code that reads like the file it lives in is the goal; code that reads like a different author is a defect.\n- Prefer the dedicated tools over shell equivalents: `read` over `cat`, the `grep` tool over running `grep` or `rg` through bash, `glob` over `find` or `ls -R`, `edit` over `sed -i`. To change an existing file use `edit`; use `write` only to create a file or when the user asked for a whole-file rewrite. The dedicated tools are bounded, previewable and permission-aware; a shell command is none of those.\n- Independent tool calls go in one response. Reading three files, or running a grep and a glob, does not need three turns. Tools that mutate the workspace \u2014 `bash`, `edit`, `write` \u2014 are applied one after another even when you emit them together; read-only tools run in parallel.\n- After a change, run the checks that would catch a mistake in it \u2014 the package's tests, typecheck, lint \u2014 before you report it done. A change you did not verify is a change you are guessing about.\n- Never leave the working tree in a state you have not described. If you created scratch files, say where; if you touched files outside the request, say which.\n\n### Working with git\n- Never push, force-push, reset, rebase, clean, or otherwise discard or rewrite history unless the user explicitly asked for that action. Approval for one push does not extend to the next.\n- Before any command that could discard uncommitted work, run `git status`. If there are changes there that you did not make, stop and ask rather than stashing, committing or discarding somebody else's work.\n- Commit only when the user asks, on the branch that is checked out. Do not create or switch branches unless the user asks or the project's instructions require it.\n- After a broad `git add`, review what was staged before committing; a file whose name looks harmless can still carry a secret.\n\n### Keeping the user informed\n- Before a batch of tool calls, say in one short line what you are about to do and why. When you have been working for a while without saying anything, say in a few words where you are, then continue. One line, not a paragraph; the tool rows on screen already show the details.\n- Keep the final reply short and specific: what changed, what was verified, what is left. Do not restate the transcript.";
|
|
36
|
+
/**
|
|
37
|
+
* Parent-only: rules about `task_create` / `task_update` and `Agent`, which a
|
|
38
|
+
* delegated sub-agent does not have. See the module comment for the split.
|
|
39
|
+
*/
|
|
40
|
+
export declare const CODING_AGENT_DELEGATION_DOCTRINE = "### Planning and delegating\n- For work that is genuinely multi-step \u2014 several files, several distinct stages, anything you would write a checklist for \u2014 open a task list with `task_create` and keep it current with `task_update`, marking each step done when it is done rather than at the end. Do not open one for a single inspect-edit-test cycle; the list is for the user to follow, and a list of one item tells them nothing.\n- When the `Agent` tool is available, delegate genuinely independent work through it and give each delegation a short, specific description; the user watches those descriptions, not the prompts. Each sub-agent starts with no context, so the prompt must carry everything it needs.\n- Delegate lookups \u2014 where something is defined, which files reference it, how a module works \u2014 with `subagent_type: \"explore\"`: it has reading and searching tools only and never interrupts the user for permission. Reserve the default sub-agent for work that changes files or runs commands.";
|
|
41
|
+
/**
|
|
42
|
+
* For a session whose permission layer refuses every mutation. Says what that
|
|
43
|
+
* layer will enforce anyway, so the model plans instead of discovering the
|
|
44
|
+
* boundary one refused call at a time.
|
|
45
|
+
*/
|
|
46
|
+
export declare const PLAN_MODE_DOCTRINE = "## Plan mode\n\nYou are in plan mode. Read, search and think; do not change anything. `read`, `grep`, `glob` and the other read-only tools work as usual, and you may keep a task list. Any `edit`, `write` or shell command that changes state will be refused, so do not attempt one.\n\nWhen you have understood the task, reply with the plan: what you would change, in which files, in what order, and what you would verify. Be concrete \u2014 name files and functions \u2014 and short enough to read in one screen. Then stop and wait; the user will leave plan mode to have the plan carried out, and that switch is their approval.";
|
|
47
|
+
export declare const CODING_AGENT_DOCTRINE_CONTRIBUTION_ID = "namzu.coding-agent-doctrine";
|
|
48
|
+
export interface CodingAgentDoctrineOptions {
|
|
49
|
+
/**
|
|
50
|
+
* Include the parent-only delegation rules. Default `true`; a host
|
|
51
|
+
* building the prompt of a delegated sub-agent, which has no `Agent` or
|
|
52
|
+
* `task_create`, passes `false`.
|
|
53
|
+
*/
|
|
54
|
+
delegation?: boolean;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* The doctrine as a `static` contribution: it depends on nothing that changes
|
|
58
|
+
* inside a run, so it belongs in the cached prefix. Register it on the
|
|
59
|
+
* `PromptContributionRegistry` handed to `query`; it renders after
|
|
60
|
+
* `systemPrompt` and the skills section.
|
|
61
|
+
*/
|
|
62
|
+
export declare function codingAgentDoctrineContribution(options?: CodingAgentDoctrineOptions): PromptContribution;
|
|
63
|
+
//# sourceMappingURL=coding-agent-doctrine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coding-agent-doctrine.d.ts","sourceRoot":"","sources":["../../src/prompt/coding-agent-doctrine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,eAAO,MAAM,6BAA6B,mnIA8B+E,CAAA;AAEzH;;;GAGG;AACH,eAAO,MAAM,gCAAgC,igCAGwP,CAAA;AAErS;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,snBAI8S,CAAA;AAE7U,eAAO,MAAM,qCAAqC,gCAAgC,CAAA;AAElF,MAAM,WAAW,0BAA0B;IAC1C;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACpB;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC9C,OAAO,GAAE,0BAA+B,GACtC,kBAAkB,CAUpB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How a coding agent works, as text the model reads.
|
|
3
|
+
*
|
|
4
|
+
* A system prompt built from the kernel says WHO the agent is and what tools
|
|
5
|
+
* it has. Nothing said HOW it should work: whether to act or ask, how much of
|
|
6
|
+
* a request to deliver, what to do when a test fails, when a shell command is
|
|
7
|
+
* the wrong tool, what is off-limits in git without a person saying so. Every
|
|
8
|
+
* one of those was left to the underlying model's defaults, and the defaults
|
|
9
|
+
* differ per provider — so the same session felt like a different agent
|
|
10
|
+
* depending on which model was behind it, and an operator experienced the gap
|
|
11
|
+
* as "it narrates instead of doing", "it stopped halfway", "it asked me three
|
|
12
|
+
* things it could have decided".
|
|
13
|
+
*
|
|
14
|
+
* This lived in the operator application first. It moved here because none of
|
|
15
|
+
* it is about that application: every rule names a builtin tool of this kernel
|
|
16
|
+
* (`read`, `edit`, `bash`, `task_create`, `Agent`) or a behaviour any coding
|
|
17
|
+
* agent built on it wants, and a second host would otherwise copy the text and
|
|
18
|
+
* let the two drift.
|
|
19
|
+
*
|
|
20
|
+
* Two texts, not one, and the split is by TOOL SET rather than by topic.
|
|
21
|
+
* `CODING_AGENT_WORKING_DOCTRINE` names only the builtins and is meant for the
|
|
22
|
+
* parent and for every delegated sub-agent, because a delegated task edits the
|
|
23
|
+
* same repository under the same rules. `CODING_AGENT_DELEGATION_DOCTRINE`
|
|
24
|
+
* names `task_create` and `Agent`, which a sub-agent does not have, and so is
|
|
25
|
+
* for the parent only. An adversarial review caught a draft ordering children
|
|
26
|
+
* to plan with a tool they could not call; a rule about a tool the reader does
|
|
27
|
+
* not have is not guidance, it is an instruction to fail.
|
|
28
|
+
*
|
|
29
|
+
* Each rule names a behaviour, not a value; a rule about one repository
|
|
30
|
+
* belongs in that repository's instructions file, which the model receives
|
|
31
|
+
* separately. A host that wants its own identity block puts it in
|
|
32
|
+
* `systemPrompt`; the contribution below lands after it.
|
|
33
|
+
*/
|
|
34
|
+
export const CODING_AGENT_WORKING_DOCTRINE = `## How you work
|
|
35
|
+
|
|
36
|
+
### Delivering work
|
|
37
|
+
- Act when you have enough information. Do not re-derive facts already established, and do not re-open a decision the user has already made.
|
|
38
|
+
- The requested scope is the deliverable. Do not quietly narrow it, widen it, or turn it into something adjacent. Read ambiguity the way a careful colleague would; make the routine judgment calls yourself and check in only when different readings would produce materially different work.
|
|
39
|
+
- Finish the whole task, not just the easy parts. If one part is blocked — a tool or capability you do not have, an input that is missing — say so plainly, do not improvise a result for it, finish every other part in full, and say explicitly what you left out and why. Scaling the work down is the user's call.
|
|
40
|
+
- If you find a real problem with the task as stated, say so in a sentence or two, then keep going under a stated assumption. Reserve blocking questions for cases where proceeding under any assumption would be unsafe or would make the work useless if wrong.
|
|
41
|
+
- If the user repeats or reaffirms a request after you raised a concern, that is their decision: say so and do the full request.
|
|
42
|
+
|
|
43
|
+
### Reporting
|
|
44
|
+
- Report outcomes faithfully. If tests fail, say so and show the output. If you skipped a step, say it was skipped. When something is done and verified, state it plainly without hedging.
|
|
45
|
+
- Never present a green run on a subset as a green run. Name what was actually executed.
|
|
46
|
+
- Reference code as \`path:line\` so the user can jump to it.
|
|
47
|
+
- Correct an earlier statement only when the error would change the user's code, conclusions or decisions; state it once, plainly, and continue. No apologies, no tally of past mistakes.
|
|
48
|
+
|
|
49
|
+
### Reading and editing code
|
|
50
|
+
- Read a file before you edit it, and read enough of the surrounding code to match its comment density, naming and idiom. Code that reads like the file it lives in is the goal; code that reads like a different author is a defect.
|
|
51
|
+
- Prefer the dedicated tools over shell equivalents: \`read\` over \`cat\`, the \`grep\` tool over running \`grep\` or \`rg\` through bash, \`glob\` over \`find\` or \`ls -R\`, \`edit\` over \`sed -i\`. To change an existing file use \`edit\`; use \`write\` only to create a file or when the user asked for a whole-file rewrite. The dedicated tools are bounded, previewable and permission-aware; a shell command is none of those.
|
|
52
|
+
- Independent tool calls go in one response. Reading three files, or running a grep and a glob, does not need three turns. Tools that mutate the workspace — \`bash\`, \`edit\`, \`write\` — are applied one after another even when you emit them together; read-only tools run in parallel.
|
|
53
|
+
- After a change, run the checks that would catch a mistake in it — the package's tests, typecheck, lint — before you report it done. A change you did not verify is a change you are guessing about.
|
|
54
|
+
- Never leave the working tree in a state you have not described. If you created scratch files, say where; if you touched files outside the request, say which.
|
|
55
|
+
|
|
56
|
+
### Working with git
|
|
57
|
+
- Never push, force-push, reset, rebase, clean, or otherwise discard or rewrite history unless the user explicitly asked for that action. Approval for one push does not extend to the next.
|
|
58
|
+
- Before any command that could discard uncommitted work, run \`git status\`. If there are changes there that you did not make, stop and ask rather than stashing, committing or discarding somebody else's work.
|
|
59
|
+
- Commit only when the user asks, on the branch that is checked out. Do not create or switch branches unless the user asks or the project's instructions require it.
|
|
60
|
+
- After a broad \`git add\`, review what was staged before committing; a file whose name looks harmless can still carry a secret.
|
|
61
|
+
|
|
62
|
+
### Keeping the user informed
|
|
63
|
+
- Before a batch of tool calls, say in one short line what you are about to do and why. When you have been working for a while without saying anything, say in a few words where you are, then continue. One line, not a paragraph; the tool rows on screen already show the details.
|
|
64
|
+
- Keep the final reply short and specific: what changed, what was verified, what is left. Do not restate the transcript.`;
|
|
65
|
+
/**
|
|
66
|
+
* Parent-only: rules about `task_create` / `task_update` and `Agent`, which a
|
|
67
|
+
* delegated sub-agent does not have. See the module comment for the split.
|
|
68
|
+
*/
|
|
69
|
+
export const CODING_AGENT_DELEGATION_DOCTRINE = `### Planning and delegating
|
|
70
|
+
- For work that is genuinely multi-step — several files, several distinct stages, anything you would write a checklist for — open a task list with \`task_create\` and keep it current with \`task_update\`, marking each step done when it is done rather than at the end. Do not open one for a single inspect-edit-test cycle; the list is for the user to follow, and a list of one item tells them nothing.
|
|
71
|
+
- When the \`Agent\` tool is available, delegate genuinely independent work through it and give each delegation a short, specific description; the user watches those descriptions, not the prompts. Each sub-agent starts with no context, so the prompt must carry everything it needs.
|
|
72
|
+
- Delegate lookups — where something is defined, which files reference it, how a module works — with \`subagent_type: "explore"\`: it has reading and searching tools only and never interrupts the user for permission. Reserve the default sub-agent for work that changes files or runs commands.`;
|
|
73
|
+
/**
|
|
74
|
+
* For a session whose permission layer refuses every mutation. Says what that
|
|
75
|
+
* layer will enforce anyway, so the model plans instead of discovering the
|
|
76
|
+
* boundary one refused call at a time.
|
|
77
|
+
*/
|
|
78
|
+
export const PLAN_MODE_DOCTRINE = `## Plan mode
|
|
79
|
+
|
|
80
|
+
You are in plan mode. Read, search and think; do not change anything. \`read\`, \`grep\`, \`glob\` and the other read-only tools work as usual, and you may keep a task list. Any \`edit\`, \`write\` or shell command that changes state will be refused, so do not attempt one.
|
|
81
|
+
|
|
82
|
+
When you have understood the task, reply with the plan: what you would change, in which files, in what order, and what you would verify. Be concrete — name files and functions — and short enough to read in one screen. Then stop and wait; the user will leave plan mode to have the plan carried out, and that switch is their approval.`;
|
|
83
|
+
export const CODING_AGENT_DOCTRINE_CONTRIBUTION_ID = 'namzu.coding-agent-doctrine';
|
|
84
|
+
/**
|
|
85
|
+
* The doctrine as a `static` contribution: it depends on nothing that changes
|
|
86
|
+
* inside a run, so it belongs in the cached prefix. Register it on the
|
|
87
|
+
* `PromptContributionRegistry` handed to `query`; it renders after
|
|
88
|
+
* `systemPrompt` and the skills section.
|
|
89
|
+
*/
|
|
90
|
+
export function codingAgentDoctrineContribution(options = {}) {
|
|
91
|
+
const text = options.delegation === false
|
|
92
|
+
? CODING_AGENT_WORKING_DOCTRINE
|
|
93
|
+
: `${CODING_AGENT_WORKING_DOCTRINE}\n\n${CODING_AGENT_DELEGATION_DOCTRINE}`;
|
|
94
|
+
return {
|
|
95
|
+
id: CODING_AGENT_DOCTRINE_CONTRIBUTION_ID,
|
|
96
|
+
placement: 'static',
|
|
97
|
+
render: () => text,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=coding-agent-doctrine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coding-agent-doctrine.js","sourceRoot":"","sources":["../../src/prompt/coding-agent-doctrine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAIH,MAAM,CAAC,MAAM,6BAA6B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yHA8B4E,CAAA;AAEzH;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG;;;qSAGqP,CAAA;AAErS;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;6UAI2S,CAAA;AAE7U,MAAM,CAAC,MAAM,qCAAqC,GAAG,6BAA6B,CAAA;AAWlF;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAC9C,UAAsC,EAAE;IAExC,MAAM,IAAI,GACT,OAAO,CAAC,UAAU,KAAK,KAAK;QAC3B,CAAC,CAAC,6BAA6B;QAC/B,CAAC,CAAC,GAAG,6BAA6B,OAAO,gCAAgC,EAAE,CAAA;IAC7E,OAAO;QACN,EAAE,EAAE,qCAAqC;QACzC,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI;KAClB,CAAA;AACF,CAAC"}
|
package/dist/prompt/index.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
1
|
export { PromptContributionCollisionError, PromptContributionRegistry, SKILLS_CONTRIBUTION_ID, skillsContribution, } from './contributions.js';
|
|
2
2
|
export type { PromptContribution, PromptContributionContext, PromptPlacement, } from './contributions.js';
|
|
3
|
+
export { CODING_AGENT_DELEGATION_DOCTRINE, CODING_AGENT_DOCTRINE_CONTRIBUTION_ID, CODING_AGENT_WORKING_DOCTRINE, PLAN_MODE_DOCTRINE, codingAgentDoctrineContribution, } from './coding-agent-doctrine.js';
|
|
4
|
+
export type { CodingAgentDoctrineOptions } from './coding-agent-doctrine.js';
|
|
3
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACX,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,GACf,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAIA,OAAO,EACN,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,oBAAoB,CAAA;AAC3B,YAAY,EACX,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,GACf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACN,gCAAgC,EAChC,qCAAqC,EACrC,6BAA6B,EAC7B,kBAAkB,EAClB,+BAA+B,GAC/B,MAAM,4BAA4B,CAAA;AACnC,YAAY,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA"}
|
package/dist/prompt/index.js
CHANGED
|
@@ -3,4 +3,5 @@
|
|
|
3
3
|
// needed the model to know something had to argue for a branch or splice
|
|
4
4
|
// into `systemPrompt` and lose whatever was there.
|
|
5
5
|
export { PromptContributionCollisionError, PromptContributionRegistry, SKILLS_CONTRIBUTION_ID, skillsContribution, } from './contributions.js';
|
|
6
|
+
export { CODING_AGENT_DELEGATION_DOCTRINE, CODING_AGENT_DOCTRINE_CONTRIBUTION_ID, CODING_AGENT_WORKING_DOCTRINE, PLAN_MODE_DOCTRINE, codingAgentDoctrineContribution, } from './coding-agent-doctrine.js';
|
|
6
7
|
//# sourceMappingURL=index.js.map
|
package/dist/prompt/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,yEAAyE;AACzE,mDAAmD;AACnD,OAAO,EACN,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompt/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,yEAAyE;AACzE,mDAAmD;AACnD,OAAO,EACN,gCAAgC,EAChC,0BAA0B,EAC1B,sBAAsB,EACtB,kBAAkB,GAClB,MAAM,oBAAoB,CAAA;AAM3B,OAAO,EACN,gCAAgC,EAChC,qCAAqC,EACrC,6BAA6B,EAC7B,kBAAkB,EAClB,+BAA+B,GAC/B,MAAM,4BAA4B,CAAA"}
|
|
@@ -143,7 +143,7 @@ export declare function classifyProviderHttpStatus(status: number, body?: string
|
|
|
143
143
|
* isolation — that is what would catch a driver that stops going through
|
|
144
144
|
* `providerVendorError`/`providerHttpError` and attaches one directly.
|
|
145
145
|
* `packages/sdk/src/provider/__tests__/errors.test.ts` pins the same thing
|
|
146
|
-
* against this shared function directly. See
|
|
146
|
+
* against this shared function directly. See "index".
|
|
147
147
|
*
|
|
148
148
|
* `name` is checked too, because AWS models its failures as distinct classes
|
|
149
149
|
* (`ThrottlingException`, `ValidationException`, `AccessDeniedException`) rather
|
package/dist/provider/errors.js
CHANGED
|
@@ -394,7 +394,7 @@ function vendorRetryAfter(err) {
|
|
|
394
394
|
* isolation — that is what would catch a driver that stops going through
|
|
395
395
|
* `providerVendorError`/`providerHttpError` and attaches one directly.
|
|
396
396
|
* `packages/sdk/src/provider/__tests__/errors.test.ts` pins the same thing
|
|
397
|
-
* against this shared function directly. See
|
|
397
|
+
* against this shared function directly. See "index".
|
|
398
398
|
*
|
|
399
399
|
* `name` is checked too, because AWS models its failures as distinct classes
|
|
400
400
|
* (`ThrottlingException`, `ValidationException`, `AccessDeniedException`) rather
|
|
@@ -55,6 +55,8 @@ export interface ServingMember {
|
|
|
55
55
|
readonly model?: string;
|
|
56
56
|
}
|
|
57
57
|
export interface WithProviderFallbackOptions {
|
|
58
|
+
/** Additional live admission policy before selecting another provider. */
|
|
59
|
+
readonly canFallback?: () => boolean;
|
|
58
60
|
readonly log?: Logger;
|
|
59
61
|
/**
|
|
60
62
|
* Called once per swap, with the member that serves from here on.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/provider/fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAEX,WAAW,EAIX,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAA;CAC7C;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,OAAO,GAAE,2BAAgC,GACvC,WAAW,
|
|
1
|
+
{"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../../src/provider/fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAIH,OAAO,KAAK,EAEX,WAAW,EAIX,MAAM,4BAA4B,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAEhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,wFAAwF;IACxF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC3C,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAA;IACpC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmDG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,aAAa,KAAK,IAAI,CAAA;CAC7C;AAsKD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,oBAAoB,CACnC,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,OAAO,GAAE,2BAAgC,GACvC,WAAW,CAwLb"}
|
|
@@ -56,7 +56,7 @@ import { classifyProviderError, isAbortError } from '../types/provider/errors.js
|
|
|
56
56
|
* classifier maps a `content_policy_violation` structural code onto it, and
|
|
57
57
|
* `ProviderError` is a public type a third-party driver constructs directly.
|
|
58
58
|
* Named rather than omitted for that reason; see
|
|
59
|
-
*
|
|
59
|
+
* "a check that cannot fail" for why an unnameable one
|
|
60
60
|
* would have been left out.
|
|
61
61
|
*/
|
|
62
62
|
const REQUEST_FAULT_CODES = new Set([
|
|
@@ -287,6 +287,8 @@ export function withProviderFallback(members, options = {}) {
|
|
|
287
287
|
// guards the same way and for the same reason.
|
|
288
288
|
if (isAbortError(err) || params.signal?.aborted)
|
|
289
289
|
throw err;
|
|
290
|
+
if (options.canFallback?.() === false)
|
|
291
|
+
throw err;
|
|
290
292
|
const next = cursor + 1;
|
|
291
293
|
const to = members[next];
|
|
292
294
|
if (produced || !to || !shouldFallOver(err, member.provider.id)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/provider/fallback.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"fallback.js","sourceRoot":"","sources":["../../src/provider/fallback.ts"],"names":[],"mappings":"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"}
|
package/dist/provider/retry.d.ts
CHANGED
|
@@ -30,6 +30,8 @@ export interface ProviderRetryConfig extends BackoffPolicy {
|
|
|
30
30
|
}
|
|
31
31
|
export declare const DEFAULT_PROVIDER_RETRY: ProviderRetryConfig;
|
|
32
32
|
export interface WithProviderRetryOptions {
|
|
33
|
+
/** Additional live admission policy, checked before scheduling a retry. */
|
|
34
|
+
readonly canRetry?: () => boolean;
|
|
33
35
|
readonly config?: Partial<ProviderRetryConfig>;
|
|
34
36
|
readonly log?: Logger;
|
|
35
37
|
/** Seam for deterministic tests. */
|