agent-nuvira 3.3.13 → 3.3.14
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/README.md +67 -1
- package/dist/agents/agents/planner.d.ts.map +1 -1
- package/dist/agents/agents/planner.js +9 -0
- package/dist/agents/agents/planner.js.map +1 -1
- package/dist/agents/orchestrator.d.ts +31 -0
- package/dist/agents/orchestrator.d.ts.map +1 -1
- package/dist/agents/orchestrator.js +74 -126
- package/dist/agents/orchestrator.js.map +1 -1
- package/dist/cli/chat.d.ts +89 -0
- package/dist/cli/chat.d.ts.map +1 -1
- package/dist/cli/chat.js +765 -33
- package/dist/cli/chat.js.map +1 -1
- package/dist/cli/cli-program.d.ts.map +1 -1
- package/dist/cli/cli-program.js +12 -0
- package/dist/cli/cli-program.js.map +1 -1
- package/dist/cli/config.d.ts +12 -0
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +86 -0
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/decisions.d.ts +28 -0
- package/dist/cli/decisions.d.ts.map +1 -0
- package/dist/cli/decisions.js +140 -0
- package/dist/cli/decisions.js.map +1 -0
- package/dist/cli/doctor.d.ts +6 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +46 -0
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/failover-runner.d.ts.map +1 -1
- package/dist/cli/failover-runner.js +19 -1
- package/dist/cli/failover-runner.js.map +1 -1
- package/dist/cli/feedback.d.ts.map +1 -1
- package/dist/cli/feedback.js +5 -1
- package/dist/cli/feedback.js.map +1 -1
- package/dist/cli/hooks.d.ts +30 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +224 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/knowledge.d.ts +9 -1
- package/dist/cli/knowledge.d.ts.map +1 -1
- package/dist/cli/knowledge.js +93 -2
- package/dist/cli/knowledge.js.map +1 -1
- package/dist/cli/loop-executor.d.ts.map +1 -1
- package/dist/cli/loop-executor.js +47 -12
- package/dist/cli/loop-executor.js.map +1 -1
- package/dist/cli/model.d.ts +20 -0
- package/dist/cli/model.d.ts.map +1 -1
- package/dist/cli/model.js +294 -14
- package/dist/cli/model.js.map +1 -1
- package/dist/cli/rate.d.ts +78 -0
- package/dist/cli/rate.d.ts.map +1 -0
- package/dist/cli/rate.js +294 -0
- package/dist/cli/rate.js.map +1 -0
- package/dist/config/process-env.d.ts.map +1 -1
- package/dist/config/process-env.js +10 -0
- package/dist/config/process-env.js.map +1 -1
- package/dist/enterprise/vault.d.ts.map +1 -1
- package/dist/enterprise/vault.js +5 -21
- package/dist/enterprise/vault.js.map +1 -1
- package/dist/gateway/hook-contract.d.ts +33 -0
- package/dist/gateway/hook-contract.d.ts.map +1 -1
- package/dist/gateway/hook-contract.js +97 -0
- package/dist/gateway/hook-contract.js.map +1 -1
- package/dist/inference/gemini-adapter.d.ts.map +1 -1
- package/dist/inference/gemini-adapter.js +4 -0
- package/dist/inference/gemini-adapter.js.map +1 -1
- package/dist/inference/interface.d.ts +37 -0
- package/dist/inference/interface.d.ts.map +1 -1
- package/dist/inference/native-tools.d.ts +16 -1
- package/dist/inference/native-tools.d.ts.map +1 -1
- package/dist/inference/native-tools.js +34 -10
- package/dist/inference/native-tools.js.map +1 -1
- package/dist/inference/route-resolver.d.ts +30 -0
- package/dist/inference/route-resolver.d.ts.map +1 -1
- package/dist/inference/route-resolver.js +158 -1
- package/dist/inference/route-resolver.js.map +1 -1
- package/dist/inference/tools.d.ts +16 -1
- package/dist/inference/tools.d.ts.map +1 -1
- package/dist/inference/tools.js +51 -18
- package/dist/inference/tools.js.map +1 -1
- package/dist/learning/acceptance-model.d.ts +247 -0
- package/dist/learning/acceptance-model.d.ts.map +1 -0
- package/dist/learning/acceptance-model.js +708 -0
- package/dist/learning/acceptance-model.js.map +1 -0
- package/dist/learning/auto-router.d.ts +68 -24
- package/dist/learning/auto-router.d.ts.map +1 -1
- package/dist/learning/auto-router.js +301 -96
- package/dist/learning/auto-router.js.map +1 -1
- package/dist/learning/autonomy-policy.d.ts +12 -16
- package/dist/learning/autonomy-policy.d.ts.map +1 -1
- package/dist/learning/autonomy-policy.js +50 -48
- package/dist/learning/autonomy-policy.js.map +1 -1
- package/dist/learning/behavioural-labels.d.ts +86 -0
- package/dist/learning/behavioural-labels.d.ts.map +1 -0
- package/dist/learning/behavioural-labels.js +166 -0
- package/dist/learning/behavioural-labels.js.map +1 -0
- package/dist/learning/capability-evidence.d.ts +167 -0
- package/dist/learning/capability-evidence.d.ts.map +1 -0
- package/dist/learning/capability-evidence.js +210 -0
- package/dist/learning/capability-evidence.js.map +1 -0
- package/dist/learning/capability-readiness.d.ts +64 -0
- package/dist/learning/capability-readiness.d.ts.map +1 -0
- package/dist/learning/capability-readiness.js +74 -0
- package/dist/learning/capability-readiness.js.map +1 -0
- package/dist/learning/capability-types.d.ts +169 -0
- package/dist/learning/capability-types.d.ts.map +1 -0
- package/dist/learning/capability-types.js +20 -0
- package/dist/learning/capability-types.js.map +1 -0
- package/dist/learning/catalog-feed.d.ts +89 -0
- package/dist/learning/catalog-feed.d.ts.map +1 -0
- package/dist/learning/catalog-feed.js +211 -0
- package/dist/learning/catalog-feed.js.map +1 -0
- package/dist/learning/cli-intent-effects.d.ts +60 -0
- package/dist/learning/cli-intent-effects.d.ts.map +1 -0
- package/dist/learning/cli-intent-effects.js +153 -0
- package/dist/learning/cli-intent-effects.js.map +1 -0
- package/dist/learning/command-adaptation.d.ts +41 -0
- package/dist/learning/command-adaptation.d.ts.map +1 -0
- package/dist/learning/command-adaptation.js +122 -0
- package/dist/learning/command-adaptation.js.map +1 -0
- package/dist/learning/consent-picture.d.ts +42 -0
- package/dist/learning/consent-picture.d.ts.map +1 -0
- package/dist/learning/consent-picture.js +53 -0
- package/dist/learning/consent-picture.js.map +1 -0
- package/dist/learning/context-budget.d.ts +37 -6
- package/dist/learning/context-budget.d.ts.map +1 -1
- package/dist/learning/context-budget.js +38 -9
- package/dist/learning/context-budget.js.map +1 -1
- package/dist/learning/decision-log.d.ts +114 -0
- package/dist/learning/decision-log.d.ts.map +1 -0
- package/dist/learning/decision-log.js +296 -0
- package/dist/learning/decision-log.js.map +1 -0
- package/dist/learning/deliverable-class.d.ts.map +1 -1
- package/dist/learning/deliverable-class.js +19 -0
- package/dist/learning/deliverable-class.js.map +1 -1
- package/dist/learning/deliverable-corpus.d.ts +117 -0
- package/dist/learning/deliverable-corpus.d.ts.map +1 -0
- package/dist/learning/deliverable-corpus.js +176 -0
- package/dist/learning/deliverable-corpus.js.map +1 -0
- package/dist/learning/error-repair.d.ts +22 -1
- package/dist/learning/error-repair.d.ts.map +1 -1
- package/dist/learning/error-repair.js +37 -0
- package/dist/learning/error-repair.js.map +1 -1
- package/dist/learning/exhaustion-report.d.ts +136 -0
- package/dist/learning/exhaustion-report.d.ts.map +1 -0
- package/dist/learning/exhaustion-report.js +239 -0
- package/dist/learning/exhaustion-report.js.map +1 -0
- package/dist/learning/failure-bookkeeping.d.ts +16 -0
- package/dist/learning/failure-bookkeeping.d.ts.map +1 -1
- package/dist/learning/failure-bookkeeping.js +51 -5
- package/dist/learning/failure-bookkeeping.js.map +1 -1
- package/dist/learning/gate-friction.d.ts +39 -0
- package/dist/learning/gate-friction.d.ts.map +1 -0
- package/dist/learning/gate-friction.js +91 -0
- package/dist/learning/gate-friction.js.map +1 -0
- package/dist/learning/harness-narration.d.ts +34 -0
- package/dist/learning/harness-narration.d.ts.map +1 -0
- package/dist/learning/harness-narration.js +58 -0
- package/dist/learning/harness-narration.js.map +1 -0
- package/dist/learning/hub-skill-catalog.d.ts.map +1 -1
- package/dist/learning/hub-skill-catalog.js +1 -2
- package/dist/learning/hub-skill-catalog.js.map +1 -1
- package/dist/learning/hybrid-router.d.ts +65 -0
- package/dist/learning/hybrid-router.d.ts.map +1 -1
- package/dist/learning/hybrid-router.js +186 -0
- package/dist/learning/hybrid-router.js.map +1 -1
- package/dist/learning/knowledge-base.d.ts +229 -3
- package/dist/learning/knowledge-base.d.ts.map +1 -1
- package/dist/learning/knowledge-base.js +593 -24
- package/dist/learning/knowledge-base.js.map +1 -1
- package/dist/learning/knowledge-eval.d.ts +171 -0
- package/dist/learning/knowledge-eval.d.ts.map +1 -0
- package/dist/learning/knowledge-eval.js +196 -0
- package/dist/learning/knowledge-eval.js.map +1 -0
- package/dist/learning/knowledge-turn.d.ts +92 -0
- package/dist/learning/knowledge-turn.d.ts.map +1 -0
- package/dist/learning/knowledge-turn.js +190 -0
- package/dist/learning/knowledge-turn.js.map +1 -0
- package/dist/learning/learned-commands.d.ts +64 -0
- package/dist/learning/learned-commands.d.ts.map +1 -0
- package/dist/learning/learned-commands.js +108 -0
- package/dist/learning/learned-commands.js.map +1 -0
- package/dist/learning/lexical-search.d.ts +50 -0
- package/dist/learning/lexical-search.d.ts.map +1 -0
- package/dist/learning/lexical-search.js +111 -0
- package/dist/learning/lexical-search.js.map +1 -0
- package/dist/learning/machine-facts.d.ts +71 -0
- package/dist/learning/machine-facts.d.ts.map +1 -0
- package/dist/learning/machine-facts.js +164 -0
- package/dist/learning/machine-facts.js.map +1 -0
- package/dist/learning/markdown-outline.d.ts +73 -0
- package/dist/learning/markdown-outline.d.ts.map +1 -0
- package/dist/learning/markdown-outline.js +136 -0
- package/dist/learning/markdown-outline.js.map +1 -0
- package/dist/learning/model-first-router.d.ts +33 -1
- package/dist/learning/model-first-router.d.ts.map +1 -1
- package/dist/learning/model-first-router.js +123 -9
- package/dist/learning/model-first-router.js.map +1 -1
- package/dist/learning/model-identity.d.ts +80 -0
- package/dist/learning/model-identity.d.ts.map +1 -0
- package/dist/learning/model-identity.js +115 -0
- package/dist/learning/model-identity.js.map +1 -0
- package/dist/learning/model-registry.d.ts +141 -2
- package/dist/learning/model-registry.d.ts.map +1 -1
- package/dist/learning/model-registry.js +324 -38
- package/dist/learning/model-registry.js.map +1 -1
- package/dist/learning/model-scoring.d.ts.map +1 -1
- package/dist/learning/model-scoring.js +8 -1
- package/dist/learning/model-scoring.js.map +1 -1
- package/dist/learning/model-selection.d.ts.map +1 -1
- package/dist/learning/model-selection.js +41 -0
- package/dist/learning/model-selection.js.map +1 -1
- package/dist/learning/outcome-observation.d.ts +49 -0
- package/dist/learning/outcome-observation.d.ts.map +1 -0
- package/dist/learning/outcome-observation.js +95 -0
- package/dist/learning/outcome-observation.js.map +1 -0
- package/dist/learning/pair-entitlement.d.ts +184 -0
- package/dist/learning/pair-entitlement.d.ts.map +1 -0
- package/dist/learning/pair-entitlement.js +214 -0
- package/dist/learning/pair-entitlement.js.map +1 -0
- package/dist/learning/provider-fallback.d.ts +23 -1
- package/dist/learning/provider-fallback.d.ts.map +1 -1
- package/dist/learning/provider-fallback.js +24 -0
- package/dist/learning/provider-fallback.js.map +1 -1
- package/dist/learning/reasoning-trace.d.ts +65 -1
- package/dist/learning/reasoning-trace.d.ts.map +1 -1
- package/dist/learning/reasoning-trace.js +123 -1
- package/dist/learning/reasoning-trace.js.map +1 -1
- package/dist/learning/requirement-probe.d.ts +55 -0
- package/dist/learning/requirement-probe.d.ts.map +1 -0
- package/dist/learning/requirement-probe.js +77 -0
- package/dist/learning/requirement-probe.js.map +1 -0
- package/dist/learning/resilient-call.d.ts +20 -1
- package/dist/learning/resilient-call.d.ts.map +1 -1
- package/dist/learning/resilient-call.js +42 -4
- package/dist/learning/resilient-call.js.map +1 -1
- package/dist/learning/response-usability.d.ts +85 -0
- package/dist/learning/response-usability.d.ts.map +1 -0
- package/dist/learning/response-usability.js +135 -0
- package/dist/learning/response-usability.js.map +1 -0
- package/dist/learning/router-bandit.d.ts +132 -0
- package/dist/learning/router-bandit.d.ts.map +1 -1
- package/dist/learning/router-bandit.js +253 -0
- package/dist/learning/router-bandit.js.map +1 -1
- package/dist/learning/routing-history.d.ts +41 -2
- package/dist/learning/routing-history.d.ts.map +1 -1
- package/dist/learning/routing-history.js.map +1 -1
- package/dist/learning/run-trace.d.ts +21 -0
- package/dist/learning/run-trace.d.ts.map +1 -1
- package/dist/learning/run-trace.js +38 -0
- package/dist/learning/run-trace.js.map +1 -1
- package/dist/learning/session-grant.d.ts +75 -0
- package/dist/learning/session-grant.d.ts.map +1 -0
- package/dist/learning/session-grant.js +112 -0
- package/dist/learning/session-grant.js.map +1 -0
- package/dist/learning/task-model-continuity.d.ts +73 -0
- package/dist/learning/task-model-continuity.d.ts.map +1 -0
- package/dist/learning/task-model-continuity.js +87 -0
- package/dist/learning/task-model-continuity.js.map +1 -0
- package/dist/learning/turn-feedback.d.ts +93 -0
- package/dist/learning/turn-feedback.d.ts.map +1 -0
- package/dist/learning/turn-feedback.js +127 -0
- package/dist/learning/turn-feedback.js.map +1 -0
- package/dist/learning/turn-report.d.ts +104 -2
- package/dist/learning/turn-report.d.ts.map +1 -1
- package/dist/learning/turn-report.js +161 -6
- package/dist/learning/turn-report.js.map +1 -1
- package/dist/learning/verdict-routing.d.ts +51 -0
- package/dist/learning/verdict-routing.d.ts.map +1 -0
- package/dist/learning/verdict-routing.js +122 -0
- package/dist/learning/verdict-routing.js.map +1 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +5 -0
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/manager.d.ts +10 -0
- package/dist/mcp/manager.d.ts.map +1 -1
- package/dist/mcp/manager.js +20 -0
- package/dist/mcp/manager.js.map +1 -1
- package/dist/mcp/mcp-discovery.d.ts +34 -0
- package/dist/mcp/mcp-discovery.d.ts.map +1 -0
- package/dist/mcp/mcp-discovery.js +71 -0
- package/dist/mcp/mcp-discovery.js.map +1 -0
- package/dist/mcp/mcp-schema-cache.d.ts +17 -0
- package/dist/mcp/mcp-schema-cache.d.ts.map +1 -1
- package/dist/mcp/mcp-schema-cache.js +47 -3
- package/dist/mcp/mcp-schema-cache.js.map +1 -1
- package/dist/mcp/types.d.ts +28 -0
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +4 -0
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/capability-registry.d.ts +150 -0
- package/dist/tools/capability-registry.d.ts.map +1 -0
- package/dist/tools/capability-registry.js +400 -0
- package/dist/tools/capability-registry.js.map +1 -0
- package/dist/tools/child-agent-runtime.d.ts.map +1 -1
- package/dist/tools/child-agent-runtime.js +19 -5
- package/dist/tools/child-agent-runtime.js.map +1 -1
- package/dist/tools/coding-tools.d.ts +17 -5
- package/dist/tools/coding-tools.d.ts.map +1 -1
- package/dist/tools/coding-tools.js +80 -11
- package/dist/tools/coding-tools.js.map +1 -1
- package/dist/tools/command-memo.d.ts +116 -0
- package/dist/tools/command-memo.d.ts.map +1 -0
- package/dist/tools/command-memo.js +202 -0
- package/dist/tools/command-memo.js.map +1 -0
- package/dist/tools/git-tool.d.ts.map +1 -1
- package/dist/tools/git-tool.js +13 -3
- package/dist/tools/git-tool.js.map +1 -1
- package/dist/tools/harness-directive.d.ts +42 -0
- package/dist/tools/harness-directive.d.ts.map +1 -0
- package/dist/tools/harness-directive.js +45 -0
- package/dist/tools/harness-directive.js.map +1 -0
- package/dist/tools/loop-skill-hint.d.ts +74 -174
- package/dist/tools/loop-skill-hint.d.ts.map +1 -1
- package/dist/tools/loop-skill-hint.js +110 -536
- package/dist/tools/loop-skill-hint.js.map +1 -1
- package/dist/tools/mcp-client-tool.d.ts +2 -0
- package/dist/tools/mcp-client-tool.d.ts.map +1 -1
- package/dist/tools/mcp-client-tool.js +3 -0
- package/dist/tools/mcp-client-tool.js.map +1 -1
- package/dist/tools/modality/shared.d.ts +1 -4
- package/dist/tools/modality/shared.d.ts.map +1 -1
- package/dist/tools/modality/shared.js +7 -22
- package/dist/tools/modality/shared.js.map +1 -1
- package/dist/tools/plan-store.d.ts +20 -2
- package/dist/tools/plan-store.d.ts.map +1 -1
- package/dist/tools/plan-store.js +51 -7
- package/dist/tools/plan-store.js.map +1 -1
- package/dist/tools/registry.d.ts +76 -3
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +486 -26
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/remediation-ladder.d.ts.map +1 -1
- package/dist/tools/remediation-ladder.js +8 -0
- package/dist/tools/remediation-ladder.js.map +1 -1
- package/dist/tools/run-cli.d.ts.map +1 -1
- package/dist/tools/run-cli.js +29 -4
- package/dist/tools/run-cli.js.map +1 -1
- package/dist/tools/run-terminal.d.ts +11 -0
- package/dist/tools/run-terminal.d.ts.map +1 -1
- package/dist/tools/run-terminal.js +265 -10
- package/dist/tools/run-terminal.js.map +1 -1
- package/dist/tools/tool-loop.d.ts +321 -13
- package/dist/tools/tool-loop.d.ts.map +1 -1
- package/dist/tools/tool-loop.js +867 -66
- package/dist/tools/tool-loop.js.map +1 -1
- package/dist/utils/atomic-store.d.ts +53 -0
- package/dist/utils/atomic-store.d.ts.map +1 -0
- package/dist/utils/atomic-store.js +178 -0
- package/dist/utils/atomic-store.js.map +1 -0
- package/dist/utils/binary-probe.d.ts +25 -0
- package/dist/utils/binary-probe.d.ts.map +1 -0
- package/dist/utils/binary-probe.js +48 -0
- package/dist/utils/binary-probe.js.map +1 -0
- package/dist/utils/workspace-path.d.ts +50 -0
- package/dist/utils/workspace-path.d.ts.map +1 -0
- package/dist/utils/workspace-path.js +86 -0
- package/dist/utils/workspace-path.js.map +1 -0
- package/dist/web-dashboard/chat-console.d.ts +24 -0
- package/dist/web-dashboard/chat-console.d.ts.map +1 -1
- package/dist/web-dashboard/chat-console.js +38 -0
- package/dist/web-dashboard/chat-console.js.map +1 -1
- package/dist/web-dashboard/project-context.d.ts +27 -2
- package/dist/web-dashboard/project-context.d.ts.map +1 -1
- package/dist/web-dashboard/project-context.js +32 -2
- package/dist/web-dashboard/project-context.js.map +1 -1
- package/dist/web-dashboard/server.d.ts +11 -0
- package/dist/web-dashboard/server.d.ts.map +1 -1
- package/dist/web-dashboard/server.js +362 -11
- package/dist/web-dashboard/server.js.map +1 -1
- package/dist/web-dashboard/src/types.d.ts +170 -1
- package/dist/web-dashboard/src/types.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.d.ts +11 -2
- package/dist/web-dashboard/workspace-guard.d.ts.map +1 -1
- package/dist/web-dashboard/workspace-guard.js +24 -12
- package/dist/web-dashboard/workspace-guard.js.map +1 -1
- package/dist/web-dashboard/workspace-resolution.d.ts +87 -0
- package/dist/web-dashboard/workspace-resolution.d.ts.map +1 -0
- package/dist/web-dashboard/workspace-resolution.js +105 -0
- package/dist/web-dashboard/workspace-resolution.js.map +1 -0
- package/package.json +1 -1
- package/src/web-dashboard/public/assets/index-zjbdJnO-.js +210 -0
- package/src/web-dashboard/public/assets/index-zjbdJnO-.js.map +1 -0
- package/src/web-dashboard/public/index.html +1 -1
- package/src/web-dashboard/public/assets/index-DhiuR4S2.js +0 -210
- package/src/web-dashboard/public/assets/index-DhiuR4S2.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remediation-ladder.d.ts","sourceRoot":"","sources":["../../src/tools/remediation-ladder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAKH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,eAAe,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AA8L1D;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,WAAW,GAAG,IAAI,CAapB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEzF;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"remediation-ladder.d.ts","sourceRoot":"","sources":["../../src/tools/remediation-ladder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAKH,MAAM,WAAW,WAAW;IAC1B,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,8CAA8C;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,GAAG,EAAE,MAAM,EAAE,CAAC;IACd;;;OAGG;IACH,KAAK,EAAE,eAAe,GAAG,QAAQ,CAAC;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,4EAA4E;AAC5E,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AA8L1D;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,GAAG,CAAC,EAAE,MAAM,EACZ,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,WAAW,GAAG,IAAI,CAapB;AAED,4EAA4E;AAC5E,wBAAgB,2BAA2B,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEzF;AAED,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,WAAW,GAAG,eAAe,CAiDzE;AAED,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAO/D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAQxD"}
|
|
@@ -242,6 +242,14 @@ export function applyRemediationAutoFixes(r) {
|
|
|
242
242
|
for (const action of r.autoFix ?? []) {
|
|
243
243
|
try {
|
|
244
244
|
if (action.kind === 'chmod-exec') {
|
|
245
|
+
// Windows has no POSIX execute bit — `chmod` there can only toggle the
|
|
246
|
+
// read-only attribute. Running it would report a fix that did not happen
|
|
247
|
+
// (and could never become idempotent), so say plainly that it does not
|
|
248
|
+
// apply instead of claiming success.
|
|
249
|
+
if (process.platform === 'win32') {
|
|
250
|
+
skipped.push(`chmod +x ${action.path} (not applicable on Windows — no POSIX execute bit)`);
|
|
251
|
+
continue;
|
|
252
|
+
}
|
|
245
253
|
if (!existsSync(action.path)) {
|
|
246
254
|
skipped.push(`chmod +x ${action.path} (file not found)`);
|
|
247
255
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remediation-ladder.js","sourceRoot":"","sources":["../../src/tools/remediation-ladder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"remediation-ladder.js","sourceRoot":"","sources":["../../src/tools/remediation-ladder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"run-cli.d.ts","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAyBjD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAKvD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBtD;AAwBD;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA4KjF"}
|
package/dist/tools/run-cli.js
CHANGED
|
@@ -33,8 +33,10 @@ import { fileURLToPath } from 'node:url';
|
|
|
33
33
|
import { recordArtifact } from './artifact-append.js';
|
|
34
34
|
import { envBuff, resolveNuviraHome } from '../config/paths.js';
|
|
35
35
|
import { resolveAsk } from '../commands/intent-router.js';
|
|
36
|
-
import { decideCliIntentConfirmation
|
|
36
|
+
import { decideCliIntentConfirmation } from '../learning/autonomy-policy.js';
|
|
37
|
+
import { cliIntentGateFacts } from '../learning/cli-intent-effects.js';
|
|
37
38
|
import { envelopeCoversAction } from '../learning/intent-envelope.js';
|
|
39
|
+
import { sessionGrantCovers } from '../learning/session-grant.js';
|
|
38
40
|
import { maskSenderId } from '../utils/mask.js';
|
|
39
41
|
/** Cap on how much CLI output is fed back to the model. */
|
|
40
42
|
const MAX_OUTPUT_CHARS = 6000;
|
|
@@ -163,14 +165,37 @@ export async function runCliTool(args, ctx) {
|
|
|
163
165
|
// widen what may run: irreversible intents keep the gate they had, and this
|
|
164
166
|
// only lets an approved plan carry out system work without a round trip per
|
|
165
167
|
// command.
|
|
168
|
+
// ONE declaration answers every question below — what it does to the world,
|
|
169
|
+
// whether re-running undoes it, and which grant may cover it. See
|
|
170
|
+
// `learning/cli-intent-effects.ts`; the three hand-maintained sets this used to
|
|
171
|
+
// consult are retired.
|
|
172
|
+
const gatedIntent = cliIntentGateFacts(top.intent);
|
|
166
173
|
const envVerdict = envelopeCoversAction(ctx.envelope, {
|
|
167
174
|
tool: 'run_cli',
|
|
168
|
-
changeClass:
|
|
175
|
+
changeClass: gatedIntent.recoverable ? 'local-state' : 'destructive',
|
|
169
176
|
});
|
|
170
|
-
|
|
171
|
-
|
|
177
|
+
// A grant may only cover an intent the policy itself classifies as recoverable
|
|
178
|
+
// or off-machine — NEVER an irreversible local one (`history.clear`,
|
|
179
|
+
// `memory.prune`), which keeps its gate whatever the user granted.
|
|
180
|
+
const grantCovers = (gatedIntent.external || gatedIntent.recoverable) &&
|
|
181
|
+
gatedIntent.grantCategory !== undefined &&
|
|
182
|
+
sessionGrantCovers(ctx.planStore, gatedIntent.grantCategory);
|
|
183
|
+
const verdict = envVerdict.covered || grantCovers
|
|
184
|
+
? {
|
|
185
|
+
action: 'proceed',
|
|
186
|
+
reason: envVerdict.covered ? envVerdict.reason : 'allowed for this session by the user',
|
|
187
|
+
}
|
|
172
188
|
: decideCliIntentConfirmation({ intent: top.intent, namedByRequest });
|
|
173
189
|
if (verdict.action !== 'proceed') {
|
|
190
|
+
ctx.pendingConfirmation = {
|
|
191
|
+
tool: 'run_cli',
|
|
192
|
+
command,
|
|
193
|
+
// Offer a session grant ONLY where one could actually help; an
|
|
194
|
+
// irreversible local intent declares no category, so no grant is offered.
|
|
195
|
+
...((gatedIntent.external || gatedIntent.recoverable) && gatedIntent.grantCategory
|
|
196
|
+
? { category: gatedIntent.grantCategory }
|
|
197
|
+
: {}),
|
|
198
|
+
};
|
|
174
199
|
return (`Error: run_cli: "${top.intent}" changes running services/state and needs explicit confirmation ` +
|
|
175
200
|
`(${verdict.reason}). ` +
|
|
176
201
|
`Call ask_user with choices yes/no confirming this exact command, then re-call ` +
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAc,IAAI,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,2BAA2B,EAAE,
|
|
1
|
+
{"version":3,"file":"run-cli.js","sourceRoot":"","sources":["../../src/tools/run-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,10 @@
|
|
|
31
31
|
* (maskSenderId — phone numbers never echo back in full).
|
|
32
32
|
*/
|
|
33
33
|
import type { ToolContext } from './registry.js';
|
|
34
|
+
/** Test/DI seam: forget every recorded failure streak. */
|
|
35
|
+
export declare function resetTerminalFailureStreaks(): void;
|
|
36
|
+
/** The guidance a timed-out command gets instead of a bare "timed out". */
|
|
37
|
+
export declare function timeoutGuidance(command: string, timeoutMs: number, repeated: boolean): string;
|
|
34
38
|
/**
|
|
35
39
|
* Does this command ADD a dependency (rather than install what is declared)?
|
|
36
40
|
*
|
|
@@ -53,6 +57,13 @@ export interface RunTerminalArgs {
|
|
|
53
57
|
command: string;
|
|
54
58
|
confirm?: boolean;
|
|
55
59
|
timeout_ms?: number;
|
|
60
|
+
/**
|
|
61
|
+
* What this command is FOR (e.g. "install java"). When the command SUCCEEDS,
|
|
62
|
+
* it is remembered for this verb on this OS (a learned command, source
|
|
63
|
+
* 'observed'), so a later `tool_search resolve` offers it. Optional: absent
|
|
64
|
+
* means nothing is learned — the harness cannot name a verb the model did not.
|
|
65
|
+
*/
|
|
66
|
+
verb?: string;
|
|
56
67
|
}
|
|
57
68
|
export declare function runTerminalTool(args: RunTerminalArgs, ctx: ToolContext): Promise<string>;
|
|
58
69
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-terminal.d.ts","sourceRoot":"","sources":["../../src/tools/run-terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"run-terminal.d.ts","sourceRoot":"","sources":["../../src/tools/run-terminal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAWH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAmDjD,0DAA0D;AAC1D,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AA+BD,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAW7F;AAoND;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAuBvD;AAOD;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAetE;AAED,KAAK,YAAY,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAkElD,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,CAe7D;AAED,iFAAiF;AAEjF,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,eAAe,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAsR9F"}
|
|
@@ -36,14 +36,95 @@ import { applyRemediationAutoFixes, diagnoseFailure, formatAutoApply, formatReme
|
|
|
36
36
|
import { maskSenderId } from '../utils/mask.js';
|
|
37
37
|
import { decideStateChange } from '../learning/autonomy-policy.js';
|
|
38
38
|
import { envelopeCoversAction } from '../learning/intent-envelope.js';
|
|
39
|
+
import { sessionGrantCovers } from '../learning/session-grant.js';
|
|
40
|
+
import { grantCategoryForEffect } from './capability-registry.js';
|
|
39
41
|
import { applyProjectEnvironment, guardCommandEnvironment } from '../utils/project-env.js';
|
|
40
42
|
import { formatEffectVerdict, isBuildCommand, verifyBuildEffect } from '../utils/effect-verification.js';
|
|
43
|
+
import { lookupMemo, memoNotice, storeMemo } from './command-memo.js';
|
|
41
44
|
/** Cap on how much terminal output is fed back to the model. */
|
|
42
45
|
const MAX_OUTPUT_CHARS = 6000;
|
|
43
46
|
/** Default timeout for a terminal command (tests/builds are slow). */
|
|
44
47
|
const DEFAULT_TIMEOUT_MS = 120_000;
|
|
48
|
+
/**
|
|
49
|
+
* P7 (fix_model_routing) — the default when a PERSON is watching.
|
|
50
|
+
*
|
|
51
|
+
* The live failure: three back-to-back 120-second `run_terminal` timeouts in one
|
|
52
|
+
* turn (4 minutes of a 5-minute run) while the dashboard console showed nothing,
|
|
53
|
+
* and then the agent gave up. Two minutes of silence in front of a person is not
|
|
54
|
+
* patience, it is a bug. Sixty seconds still covers a real test/build on this
|
|
55
|
+
* class of project, and an explicit `timeout_ms` (up to MAX_TIMEOUT_MS) still
|
|
56
|
+
* buys the model as much time as the work genuinely needs.
|
|
57
|
+
*/
|
|
58
|
+
const INTERACTIVE_DEFAULT_TIMEOUT_MS = 60_000;
|
|
45
59
|
/** Hard ceiling — the tool loop bounds the whole turn anyway. */
|
|
46
60
|
const MAX_TIMEOUT_MS = 300_000;
|
|
61
|
+
/**
|
|
62
|
+
* P7 — how many times the SAME command (at the SAME timeout) may fail before the
|
|
63
|
+
* next call is refused.
|
|
64
|
+
*
|
|
65
|
+
* Two, measured from the live run: it ran a near-identical command three times
|
|
66
|
+
* (120s, 13s, 120s) and learned nothing from any of them — so the third blind
|
|
67
|
+
* repeat is exactly what must not happen. A flaky command still gets one retry
|
|
68
|
+
* (transient failures are real: a held lock, a dead port, a cold cache). After
|
|
69
|
+
* the second identical failure the refusal is returned in milliseconds with what
|
|
70
|
+
* to do instead, rather than spending another 60–120 seconds to learn nothing.
|
|
71
|
+
*
|
|
72
|
+
* The streak key (see the call site) includes the EFFECTIVE TIMEOUT, so the
|
|
73
|
+
* remedy this very tool advertises on a timeout — "re-call with an explicit
|
|
74
|
+
* `timeout_ms`" — is a genuinely different attempt and is never blocked here.
|
|
75
|
+
*/
|
|
76
|
+
const IDENTICAL_FAILURE_CAP = 2;
|
|
77
|
+
/** Failures older than this do not count toward the cap — the world may have changed. */
|
|
78
|
+
const FAILURE_STREAK_WINDOW_MS = 10 * 60_000;
|
|
79
|
+
/** Bound on the streak table (a long session must not accumulate). */
|
|
80
|
+
const FAILURE_STREAK_MAX_ENTRIES = 50;
|
|
81
|
+
/** `key → {count, lastAt}` for the identical-command guard. */
|
|
82
|
+
const commandFailureStreaks = new Map();
|
|
83
|
+
/** Test/DI seam: forget every recorded failure streak. */
|
|
84
|
+
export function resetTerminalFailureStreaks() {
|
|
85
|
+
commandFailureStreaks.clear();
|
|
86
|
+
}
|
|
87
|
+
/** Record a failure for this exact command in this directory; report the streak. */
|
|
88
|
+
function recordCommandFailure(key, now) {
|
|
89
|
+
const prev = commandFailureStreaks.get(key);
|
|
90
|
+
const withinWindow = prev && now - prev.lastAt <= FAILURE_STREAK_WINDOW_MS;
|
|
91
|
+
const count = (withinWindow ? prev.count : 0) + 1;
|
|
92
|
+
commandFailureStreaks.set(key, { count, lastAt: now });
|
|
93
|
+
if (commandFailureStreaks.size > FAILURE_STREAK_MAX_ENTRIES) {
|
|
94
|
+
for (const [k, v] of commandFailureStreaks) {
|
|
95
|
+
if (commandFailureStreaks.size <= FAILURE_STREAK_MAX_ENTRIES)
|
|
96
|
+
break;
|
|
97
|
+
if (now - v.lastAt > FAILURE_STREAK_WINDOW_MS)
|
|
98
|
+
commandFailureStreaks.delete(k);
|
|
99
|
+
}
|
|
100
|
+
// Still too big (all recent) — drop the oldest half by insertion order.
|
|
101
|
+
if (commandFailureStreaks.size > FAILURE_STREAK_MAX_ENTRIES) {
|
|
102
|
+
const drop = Math.ceil(commandFailureStreaks.size / 2);
|
|
103
|
+
let i = 0;
|
|
104
|
+
for (const k of commandFailureStreaks.keys()) {
|
|
105
|
+
if (i++ >= drop)
|
|
106
|
+
break;
|
|
107
|
+
commandFailureStreaks.delete(k);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
return count;
|
|
112
|
+
}
|
|
113
|
+
/** A command that just SUCCEEDED has nothing to retry — clear its streak. */
|
|
114
|
+
function clearCommandFailure(key) {
|
|
115
|
+
commandFailureStreaks.delete(key);
|
|
116
|
+
}
|
|
117
|
+
/** The guidance a timed-out command gets instead of a bare "timed out". */
|
|
118
|
+
export function timeoutGuidance(command, timeoutMs, repeated) {
|
|
119
|
+
const seconds = Math.round(timeoutMs / 1000);
|
|
120
|
+
return (`\n\n⏱ TIMEOUT — that command was killed after ${seconds}s without finishing. A timeout does NOT mean the project is broken; ` +
|
|
121
|
+
`it means this command is too slow or is waiting for something that will not come. ` +
|
|
122
|
+
`Do NOT re-run the identical command${repeated ? ' — it has already timed out here' : ''}. Instead: ` +
|
|
123
|
+
`(a) narrow it (a single test file, \`--reporter=dot\`, \`-x\`, one target rather than the whole suite), ` +
|
|
124
|
+
`(b) make it non-interactive (it may be waiting on a prompt or a server), or ` +
|
|
125
|
+
`(c) if the work is genuinely long, re-call with an explicit \`timeout_ms\` up to ${MAX_TIMEOUT_MS} (${Math.round(MAX_TIMEOUT_MS / 1000)}s). ` +
|
|
126
|
+
`Tell the user what was slow rather than repeating \`${maskSenderId(command)}\` as-is.`);
|
|
127
|
+
}
|
|
47
128
|
/** ─── Command classification (deny-first) ───────────────────────────────── */
|
|
48
129
|
/**
|
|
49
130
|
* Absolute denials — scanned against the WHOLE command string (so `$(...)`
|
|
@@ -94,11 +175,53 @@ const VERIFY_PREFIXES = [
|
|
|
94
175
|
'git status', 'git diff', 'git log', 'git show', 'git branch', 'git rev-parse',
|
|
95
176
|
// Basic read-only shell.
|
|
96
177
|
'ls', 'cat', 'head', 'tail', 'grep', 'rg', 'find', 'pwd', 'echo', 'wc', 'printf', 'which',
|
|
178
|
+
'test', '[',
|
|
97
179
|
// Read-only path helpers. Listed because a verify command routinely embeds
|
|
98
180
|
// them in a substitution (`npx vitest run tests/$(basename x).test.ts`) and the
|
|
99
181
|
// segment splitter cannot tell a helper from a real command.
|
|
100
182
|
'basename', 'dirname', 'realpath',
|
|
183
|
+
// Text processors. `awk` READS by default — inspecting a file's headers is a
|
|
184
|
+
// read-only check the loop reaches for constantly. Its WRITE form is rejected
|
|
185
|
+
// separately (`isTextProcessorWrite`), so `awk '{print}'` verifies while
|
|
186
|
+
// `awk '{print > "f"}'` keeps the confirm gate. A command that cannot mutate
|
|
187
|
+
// state must never generate a prompt (see the misfire below).
|
|
188
|
+
'awk',
|
|
101
189
|
];
|
|
190
|
+
/** Text processors that READ by default but can WRITE when told to. */
|
|
191
|
+
const TEXT_PROCESSOR_PREFIXES = new Set(['awk']);
|
|
192
|
+
/**
|
|
193
|
+
* Shell GRAMMAR keywords — the structure of a compound command, not a command.
|
|
194
|
+
*
|
|
195
|
+
* WHY THIS EXISTS (2026-10-08). A live chat turn
|
|
196
|
+
* (`trace-1791390325578-4968th`) inspected its own output with a pure read-only
|
|
197
|
+
* chain:
|
|
198
|
+
* grep -n '^#' NOTES.md && echo --- && wc -w NOTES.md &&
|
|
199
|
+
* for i in Introduction Design Operations; do printf "%s: " "$i"; done; echo
|
|
200
|
+
* Every command in it reads a file, but the `for`/`do`/`done` segments were not
|
|
201
|
+
* on the verify allowlist, so the WHOLE chain scored `confirm`, the gate refused
|
|
202
|
+
* it as "state-changing", and the model burned a step declaring "the command
|
|
203
|
+
* guard misfired on a read-only check" and reading the file a second way.
|
|
204
|
+
*
|
|
205
|
+
* A loop is judged by its BODY: the structural segments contribute nothing, and
|
|
206
|
+
* a body-prefixing keyword (`do printf …`) is stripped so the real command is
|
|
207
|
+
* classified. `for f in *; do rm -rf $f; done` still scores confirm (`rm`), so
|
|
208
|
+
* the autonomy is bounded by what the body actually runs.
|
|
209
|
+
*/
|
|
210
|
+
const SHELL_STRUCTURAL_KEYWORDS = new Set(['for', 'done', 'fi', 'esac', 'case', '{', '}', '!', 'time', 'function']);
|
|
211
|
+
/** Keywords that PREFIX the real command within their own segment. */
|
|
212
|
+
const SHELL_BODY_KEYWORDS = new Set(['do', 'then', 'else', 'elif', 'while', 'until', 'if']);
|
|
213
|
+
/**
|
|
214
|
+
* Does a text processor's segment WRITE? Over-rejects on purpose: a `>` in an
|
|
215
|
+
* `awk` program may be a comparison inside quotes, but reading it as a write
|
|
216
|
+
* only costs a confirmation, while missing a real `print > "file"` would let a
|
|
217
|
+
* state change run unprompted (the safe direction is confirm).
|
|
218
|
+
*/
|
|
219
|
+
function isTextProcessorWrite(segment) {
|
|
220
|
+
return (/(?:^|\s)(?:-i\S*|--in-place)\b/.test(segment) ||
|
|
221
|
+
/>>?/.test(segment) ||
|
|
222
|
+
/\b(?:system|close)\s*\(/.test(segment) ||
|
|
223
|
+
/\bprintf?\s+>/.test(segment));
|
|
224
|
+
}
|
|
102
225
|
/**
|
|
103
226
|
* Read-only PROBES — `<cmd> --version` / `--help`, and package-metadata reads.
|
|
104
227
|
*
|
|
@@ -285,16 +408,30 @@ function splitSegments(lower) {
|
|
|
285
408
|
}
|
|
286
409
|
/** Classify ONE segment by its leading tokens. */
|
|
287
410
|
function classifySegment(segment) {
|
|
288
|
-
|
|
411
|
+
// `verify` is the LOWEST severity, so returning it is how a segment stays
|
|
412
|
+
// NEUTRAL: it cannot raise the chain's worst class.
|
|
413
|
+
const head = leadingTokens(segment, 1)[0] ?? '';
|
|
414
|
+
if (SHELL_STRUCTURAL_KEYWORDS.has(head))
|
|
415
|
+
return 'verify';
|
|
416
|
+
let body = segment;
|
|
417
|
+
if (SHELL_BODY_KEYWORDS.has(head)) {
|
|
418
|
+
body = segment.slice(head.length).trim();
|
|
419
|
+
if (!body)
|
|
420
|
+
return 'verify';
|
|
421
|
+
}
|
|
422
|
+
const toks = leadingTokens(body, 3);
|
|
289
423
|
for (const prefix of VERIFY_PREFIXES) {
|
|
290
424
|
const pt = prefix.split(' ');
|
|
291
425
|
if (pt.length <= toks.length && toks.slice(0, pt.length).join(' ') === prefix) {
|
|
426
|
+
// A text processor may WRITE; only its read form is verify.
|
|
427
|
+
if (TEXT_PROCESSOR_PREFIXES.has(prefix) && isTextProcessorWrite(body))
|
|
428
|
+
return 'confirm';
|
|
292
429
|
return 'verify';
|
|
293
430
|
}
|
|
294
431
|
}
|
|
295
432
|
// Read-only probes (`<cmd> --version` / `--help`) and metadata reads — they
|
|
296
433
|
// cannot change state, so they never need confirmation (see the constants).
|
|
297
|
-
if (READ_ONLY_PROBE_RE.test(
|
|
434
|
+
if (READ_ONLY_PROBE_RE.test(body))
|
|
298
435
|
return 'verify';
|
|
299
436
|
for (const prefix of READ_ONLY_INFO_PREFIXES) {
|
|
300
437
|
const pt = prefix.split(' ');
|
|
@@ -348,6 +485,33 @@ export async function runTerminalTool(args, ctx) {
|
|
|
348
485
|
return (`Error: run_terminal: command DENIED — "${command}" is outside what the agent may run. ` +
|
|
349
486
|
`Tell the user, and suggest the safe alternative (or that they run it themselves).`);
|
|
350
487
|
}
|
|
488
|
+
// ── C3: ONE PROBE PER FACT PER RUN ────────────────────────────────────────
|
|
489
|
+
// The measured defect (see src/tools/command-memo.ts): a single run asked the
|
|
490
|
+
// same three facts twice — a combined probe and then the three individually —
|
|
491
|
+
// and created `backend/.venv` twice. The model cannot remember what it already
|
|
492
|
+
// ran; the harness can, because it ran it. So before spending a round trip,
|
|
493
|
+
// ask the memo.
|
|
494
|
+
//
|
|
495
|
+
// The consult sits after the DENY check (a denied command never ran, so it can
|
|
496
|
+
// never be in the memo) and BEFORE every other gate, and that ordering is the
|
|
497
|
+
// point: the memo only holds commands that ALREADY ran successfully in THIS
|
|
498
|
+
// run, under these same gates and this same context — so there is nothing left
|
|
499
|
+
// for the confirm gate to decide. The one thing this must never do is let a
|
|
500
|
+
// memo hit stand in for a command that would have been refused: it cannot, for
|
|
501
|
+
// the reason just given. Failures are never stored (a non-zero exit is
|
|
502
|
+
// retryable by definition), so a repaired project is never told "already done".
|
|
503
|
+
// Scoped to the directory the run is in: `clone_repo` changes `ctx.cwd`
|
|
504
|
+
// mid-run, and a fact learned in one tree is not a fact about another.
|
|
505
|
+
const memoWhere = ctx.cwd || process.cwd();
|
|
506
|
+
const memoHit = lookupMemo(ctx.commandMemo, command, memoWhere);
|
|
507
|
+
if (memoHit) {
|
|
508
|
+
ctx.emit?.('terminal:memoized', {
|
|
509
|
+
command,
|
|
510
|
+
answeredBy: memoHit.entry.command,
|
|
511
|
+
parts: memoHit.parts,
|
|
512
|
+
}, 'tool-loop');
|
|
513
|
+
return memoNotice(command, memoHit);
|
|
514
|
+
}
|
|
351
515
|
// ── Project interpreter canonicalization + pre-run environment guard ──────
|
|
352
516
|
// The live Aukat_check failure: a build ran against an interpreter that did
|
|
353
517
|
// NOT have the project's own dependencies (PyQt6), produced a broken bundle,
|
|
@@ -385,8 +549,20 @@ export async function runTerminalTool(args, ctx) {
|
|
|
385
549
|
tool: 'run_terminal',
|
|
386
550
|
changeClass: recoverable ? 'local-state' : 'external',
|
|
387
551
|
});
|
|
388
|
-
|
|
389
|
-
|
|
552
|
+
// The SESSION grant is consulted next, and WHICH category it is depends on
|
|
553
|
+
// the command: a recoverable workspace command needs `terminal`, while an
|
|
554
|
+
// off-machine one (network fetch, global/system install like winget) needs
|
|
555
|
+
// the user to have explicitly granted `external`. The absolute DENY patterns
|
|
556
|
+
// ran ABOVE, so nothing here can unlock sudo / rm -rf / / git push.
|
|
557
|
+
const grantCategory = grantCategoryForEffect(recoverable ? 'local-state' : 'external');
|
|
558
|
+
const grantCovers = grantCategory !== null && sessionGrantCovers(ctx.planStore, grantCategory);
|
|
559
|
+
const verdict = envVerdict.covered || grantCovers
|
|
560
|
+
? {
|
|
561
|
+
action: 'proceed',
|
|
562
|
+
reason: envVerdict.covered
|
|
563
|
+
? envVerdict.reason
|
|
564
|
+
: 'allowed for this session by the user',
|
|
565
|
+
}
|
|
390
566
|
: decideStateChange({
|
|
391
567
|
tool: 'run_terminal',
|
|
392
568
|
action: `running "${command}"`,
|
|
@@ -396,8 +572,13 @@ export async function runTerminalTool(args, ctx) {
|
|
|
396
572
|
});
|
|
397
573
|
if (verdict.action !== 'proceed') {
|
|
398
574
|
// Mark the pending confirmation so ask_user does NOT suppress the very
|
|
399
|
-
// question this refusal asks for (see ToolContext.pendingConfirmation)
|
|
400
|
-
|
|
575
|
+
// question this refusal asks for (see ToolContext.pendingConfirmation),
|
|
576
|
+
// and so the ask can offer the matching session grant.
|
|
577
|
+
ctx.pendingConfirmation = {
|
|
578
|
+
tool: 'run_terminal',
|
|
579
|
+
command,
|
|
580
|
+
...(grantCategory ? { category: grantCategory } : {}),
|
|
581
|
+
};
|
|
401
582
|
return (`Error: run_terminal: "${command}" changes state and needs explicit confirmation ` +
|
|
402
583
|
`(${verdict.reason}). Call ask_user (yes/no, one-line reason), then re-call run_terminal ` +
|
|
403
584
|
`with the SAME command plus confirm:true only if the user agreed.`);
|
|
@@ -411,9 +592,45 @@ export async function runTerminalTool(args, ctx) {
|
|
|
411
592
|
authorization: ctx.writesAuthorized?.reason,
|
|
412
593
|
}, 'tool-loop');
|
|
413
594
|
}
|
|
414
|
-
|
|
595
|
+
// P7 — the DEFAULT timeout follows the room: a person watching a chat gets a
|
|
596
|
+
// shorter one (see INTERACTIVE_DEFAULT_TIMEOUT_MS). An explicit `timeout_ms`
|
|
597
|
+
// always wins, so a genuinely long build still gets its time.
|
|
598
|
+
const defaultTimeoutMs = ctx.interactive ? INTERACTIVE_DEFAULT_TIMEOUT_MS : DEFAULT_TIMEOUT_MS;
|
|
599
|
+
const timeoutMs = Math.min(MAX_TIMEOUT_MS, Math.max(1000, Math.floor(args.timeout_ms ?? defaultTimeoutMs)));
|
|
600
|
+
// P7 — the IDENTICAL-COMMAND guard. A command that has already failed twice at
|
|
601
|
+
// this timeout in this directory will fail a third time the same way; the live
|
|
602
|
+
// run spent two 120-second timeouts proving that. Refusing costs milliseconds
|
|
603
|
+
// and says what to change instead of quietly spending another two minutes of
|
|
604
|
+
// the user's time. Bounded, self-expiring, and reset by a success.
|
|
605
|
+
//
|
|
606
|
+
// The effective timeout is part of the key on purpose: the guidance a timeout
|
|
607
|
+
// carries tells the model to re-call with a longer `timeout_ms` when the work
|
|
608
|
+
// is genuinely long, and that advice must not be refused by this guard.
|
|
609
|
+
const streakKey = `${ctx.cwd ?? process.cwd()}|${command}|${timeoutMs}`;
|
|
610
|
+
const priorStreak = commandFailureStreaks.get(streakKey);
|
|
611
|
+
if (priorStreak &&
|
|
612
|
+
Date.now() - priorStreak.lastAt <= FAILURE_STREAK_WINDOW_MS &&
|
|
613
|
+
priorStreak.count >= IDENTICAL_FAILURE_CAP) {
|
|
614
|
+
return (`Error: run_terminal: \`${maskSenderId(command)}\` has already failed ${priorStreak.count} times at this timeout ` +
|
|
615
|
+
`and would fail the same way again — refusing to spend another run on it. Change the command before calling ` +
|
|
616
|
+
`run_terminal again: fix the underlying cause, narrow the scope, raise \`timeout_ms\` if the work is simply long, ` +
|
|
617
|
+
`or run a different check entirely.`);
|
|
618
|
+
}
|
|
415
619
|
const startedAt = Date.now();
|
|
416
620
|
const output = await execCommand(command, ctx.cwd, timeoutMs, runEnv);
|
|
621
|
+
// P7 — a TIMEOUT is its own, specific signal: the command was killed, so
|
|
622
|
+
// "it timed out" is not "the project is broken", and the ONE thing the model
|
|
623
|
+
// must not do is re-run the identical command. The guidance says what to do
|
|
624
|
+
// instead (narrow it, make it non-interactive, or pass a longer timeout_ms).
|
|
625
|
+
const timedOut = /run_terminal: `[^`]*` ⏱ timed out after \d+ms/.test(output);
|
|
626
|
+
const failureStreak = timedOut
|
|
627
|
+
? recordCommandFailure(streakKey, Date.now())
|
|
628
|
+
: output.startsWith('Error:')
|
|
629
|
+
? recordCommandFailure(streakKey, Date.now())
|
|
630
|
+
: 0;
|
|
631
|
+
if (!timedOut && !output.startsWith('Error:'))
|
|
632
|
+
clearCommandFailure(streakKey);
|
|
633
|
+
const outputWithNotes = timedOut ? output + timeoutGuidance(command, timeoutMs, failureStreak > 1) : output;
|
|
417
634
|
// A4 — a KNOWN toolchain failure gets its known fix appended, so the model
|
|
418
635
|
// repairs instead of re-trying the identical command. Advisory only: the note
|
|
419
636
|
// names the bounded, project-local step; it never mutates the workspace.
|
|
@@ -454,15 +671,53 @@ export async function runTerminalTool(args, ctx) {
|
|
|
454
671
|
if (verdict.status === 'verified')
|
|
455
672
|
effectNote = `\n${formatEffectVerdict(verdict)}`;
|
|
456
673
|
}
|
|
674
|
+
// Long-tail OS adaptation: a command that failed because an executable is not
|
|
675
|
+
// on THIS machine is not a dead end — the model should choose a command for the
|
|
676
|
+
// machine it is on. Keyed on the shell's OWN signal (exit 127 / 9009), so this
|
|
677
|
+
// is a fact the shell reports, not a phrase match. Advisory only.
|
|
678
|
+
let missingNote = '';
|
|
679
|
+
if (output.startsWith('Error:')) {
|
|
680
|
+
const { isMissingBinaryFailure, buildMissingBinaryNote } = await import('../learning/command-adaptation.js');
|
|
681
|
+
if (isMissingBinaryFailure(output))
|
|
682
|
+
missingNote = buildMissingBinaryNote(command);
|
|
683
|
+
}
|
|
684
|
+
// The grown table: a SUCCESSFUL command the model LABELLED with a verb is
|
|
685
|
+
// remembered for this machine (observed), so the same OS-specific command is
|
|
686
|
+
// not re-derived. Only with a verb and only on success — a failure is not a
|
|
687
|
+
// fact worth remembering, and a verbless command cannot be keyed. Best-effort.
|
|
688
|
+
if (args.verb && !timedOut && !output.startsWith('Error:')) {
|
|
689
|
+
try {
|
|
690
|
+
const { recordLearnedCommand } = await import('../learning/learned-commands.js');
|
|
691
|
+
const { leadingBinary } = await import('../learning/command-adaptation.js');
|
|
692
|
+
const bin = leadingBinary(command);
|
|
693
|
+
recordLearnedCommand({
|
|
694
|
+
verb: args.verb,
|
|
695
|
+
command,
|
|
696
|
+
...(bin ? { binary: bin } : {}),
|
|
697
|
+
source: 'observed',
|
|
698
|
+
});
|
|
699
|
+
}
|
|
700
|
+
catch {
|
|
701
|
+
// Best-effort — learning must never break the run it learned from.
|
|
702
|
+
}
|
|
703
|
+
}
|
|
704
|
+
// C3 — remember what a SUCCESSFUL run answered (whole command + every fact it
|
|
705
|
+
// established), so the same question in the same run is answered from the
|
|
706
|
+
// output above instead of a second spawn. A timeout is a failure like any
|
|
707
|
+
// other, and `Error:`-prefixed output is a refusal or a crash — neither is a
|
|
708
|
+
// fact worth remembering.
|
|
709
|
+
if (!timedOut && !output.startsWith('Error:'))
|
|
710
|
+
storeMemo(ctx.commandMemo, command, output, memoWhere);
|
|
457
711
|
if (!decidedAutonomously)
|
|
458
|
-
return
|
|
712
|
+
return outputWithNotes + effectNote + envNote + remediationNote + autoApplyNote + missingNote;
|
|
459
713
|
// Reported, never silent — a judgment call the user cannot see is
|
|
460
714
|
// indistinguishable from a bug.
|
|
461
|
-
return (`${
|
|
715
|
+
return (`${outputWithNotes}${effectNote}\n💡 Ran without asking: ${autonomyReason}. State what you ran in your answer — ` +
|
|
462
716
|
'do not ask for permission to do work the user already asked for.' +
|
|
463
717
|
envNote +
|
|
464
718
|
remediationNote +
|
|
465
|
-
autoApplyNote
|
|
719
|
+
autoApplyNote +
|
|
720
|
+
missingNote);
|
|
466
721
|
}
|
|
467
722
|
/** Spawn the command (shell-interpreted — pipes, &&, substitutions work). */
|
|
468
723
|
function execCommand(command, cwd, timeoutMs, envOverride) {
|