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
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C3 — ONE PROBE PER FACT PER RUN, and one idempotent setup step per run.
|
|
3
|
+
*
|
|
4
|
+
* THE MEASURED DEFECT. Run A asked the same three facts twice inside a single
|
|
5
|
+
* turn: proxy-log line 3 is ONE combined probe (`python3 --version; node --version;
|
|
6
|
+
* npm --version`) and lines 4–6 are the same three probes issued INDIVIDUALLY — 4
|
|
7
|
+
* shell invocations for 3 facts. The same run then issued
|
|
8
|
+
* `python3 -m venv backend/.venv` at line 222 and again at line 232, and both
|
|
9
|
+
* `/tmp/test/.venv` and `/tmp/test/backend/.venv` exist on disk. Every repeat
|
|
10
|
+
* costs a round trip, a tool slot in the context window, and a step of the model's
|
|
11
|
+
* attention on a question it has already had answered.
|
|
12
|
+
*
|
|
13
|
+
* WHY THE HARNESS MUST FIX IT. The model cannot remember what it already ran
|
|
14
|
+
* across a long thread — that is what a context window is for, and prompts get
|
|
15
|
+
* trimmed. The harness CAN: it is the thing that ran the command and holds its
|
|
16
|
+
* output. So the discipline lives here, in the tool layer, not in a prompt.
|
|
17
|
+
*
|
|
18
|
+
* ─── WHAT MAY BE MEMOIZED (deliberately narrow) ─────────────────────────────
|
|
19
|
+
*
|
|
20
|
+
* Two classes, both decided from the command text alone:
|
|
21
|
+
*
|
|
22
|
+
* 1. **PURE PROBES** — version/identity questions whose answer cannot change
|
|
23
|
+
* during a run: `node --version`, `python3 --version`, `which uv`, `pwd`,
|
|
24
|
+
* `uname -a`. Re-asking these is always waste.
|
|
25
|
+
* 2. **IDEMPOTENT SETUP** — commands whose second execution does nothing new
|
|
26
|
+
* and has no external side effect: `python3 -m venv <dir>`, `mkdir -p <dir>`,
|
|
27
|
+
* `touch <file>`. These are the measured repeats.
|
|
28
|
+
*
|
|
29
|
+
* Deliberately NOT memoized, and each for a reason:
|
|
30
|
+
* - anything with a pipe, a redirect, a substitution, a subshell or a glob
|
|
31
|
+
* (`splitCommandChain` refuses to decompose those, so they are never split
|
|
32
|
+
* into facts that could be wrongly reused);
|
|
33
|
+
* - `npm/pip install` — repeating is harmless, SKIPPING is not: a second run
|
|
34
|
+
* after an edit to `package.json` is exactly when a re-install is needed, and
|
|
35
|
+
* the tool cannot see the difference. A saved round trip is not worth a stale
|
|
36
|
+
* dependency tree;
|
|
37
|
+
* - `git add`/`cp`/`mv`/`rm` — arguably idempotent, but they interact with files
|
|
38
|
+
* created in between, so the second call is not the same question;
|
|
39
|
+
* - anything classified `confirm`/`deny` by the command gate. Memoization suits
|
|
40
|
+
* facts, not actions; an action the user authorized stays explicit.
|
|
41
|
+
*
|
|
42
|
+
* FAILURES ARE NEVER MEMOIZED. A command that exited non-zero is retryable by
|
|
43
|
+
* definition (the model may have fixed the cause), so only a successful result is
|
|
44
|
+
* remembered.
|
|
45
|
+
*
|
|
46
|
+
* The memo is PER RUN and in-memory: `RunCommandMemo` hangs off the tool context,
|
|
47
|
+
* which lives exactly as long as the run does. Nothing is written to disk, so a
|
|
48
|
+
* fresh run re-probes everything — a workspace that changed between turns must be
|
|
49
|
+
* seen with fresh eyes.
|
|
50
|
+
*/
|
|
51
|
+
/** The pure-probe / idempotent-setup classification for one command part. */
|
|
52
|
+
export type CommandMemoKind = 'probe' | 'idempotent';
|
|
53
|
+
/**
|
|
54
|
+
* Split a command chain into its parts, or `null` when the command must not be
|
|
55
|
+
* decomposed.
|
|
56
|
+
*
|
|
57
|
+
* Refuses anything whose parts are not independent: a pipe (including `||`), a
|
|
58
|
+
* redirect, a command substitution, a subshell or a glob means the parts feed
|
|
59
|
+
* each other or depend on files, so treating them as separate facts would be
|
|
60
|
+
* wrong. Refusing is always safe — the command simply runs as before.
|
|
61
|
+
*/
|
|
62
|
+
export declare function splitCommandChain(command: string): string[] | null;
|
|
63
|
+
/** How a single command part may be memoized, or `null` for "never memoize". */
|
|
64
|
+
export declare function commandMemoKind(part: string): CommandMemoKind | null;
|
|
65
|
+
/** What a memoized command's result was, and which command produced it. */
|
|
66
|
+
export interface CommandMemoEntry {
|
|
67
|
+
/** The command (as normalized) whose output answers the key. */
|
|
68
|
+
command: string;
|
|
69
|
+
output: string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The per-run memo. Held on the tool context, so its lifetime IS the run's.
|
|
73
|
+
*
|
|
74
|
+
* Two indexes, because the same fact can be asked as part of a chain or on its
|
|
75
|
+
* own: `commands` answers "this exact command again", and `parts` answers "this
|
|
76
|
+
* fact was already established by SOME command this run" (the measured shape:
|
|
77
|
+
* one combined probe, then the three facts individually). Keys are scoped by the
|
|
78
|
+
* directory the command ran in — see {@link scoped}.
|
|
79
|
+
*/
|
|
80
|
+
export interface RunCommandMemo {
|
|
81
|
+
commands: Map<string, CommandMemoEntry>;
|
|
82
|
+
parts: Map<string, string>;
|
|
83
|
+
}
|
|
84
|
+
/** A fresh memo for a run. */
|
|
85
|
+
export declare function createRunCommandMemo(): RunCommandMemo;
|
|
86
|
+
/** The key a whole command is remembered under, or `null` when it must not be. */
|
|
87
|
+
export declare function memoKeyFor(command: string): string | null;
|
|
88
|
+
/**
|
|
89
|
+
* The result this run already has for `command`, or `null`.
|
|
90
|
+
*
|
|
91
|
+
* A hit requires EVERY part of the incoming command to be covered by the SAME
|
|
92
|
+
* earlier command — otherwise the earlier output cannot honestly answer the whole
|
|
93
|
+
* question, and the command runs (its own output is then stored for every part).
|
|
94
|
+
*/
|
|
95
|
+
export declare function lookupMemo(memo: RunCommandMemo | undefined, command: string, where?: string): {
|
|
96
|
+
entry: CommandMemoEntry;
|
|
97
|
+
parts: string[];
|
|
98
|
+
} | null;
|
|
99
|
+
/**
|
|
100
|
+
* Remember a SUCCESSFUL command's output for its whole key and every part.
|
|
101
|
+
*
|
|
102
|
+
* `where` is the directory the command ran in (the run's `cwd`); it scopes both
|
|
103
|
+
* keys, so a fact learned in one directory can never answer a question asked in
|
|
104
|
+
* another after the run changed directory.
|
|
105
|
+
*/
|
|
106
|
+
export declare function storeMemo(memo: RunCommandMemo | undefined, command: string, output: string, where?: string): void;
|
|
107
|
+
/**
|
|
108
|
+
* The line returned instead of re-running. It NAMES what was already answered and
|
|
109
|
+
* reproduces the earlier output, so the model gets the fact it asked for (without
|
|
110
|
+
* a round trip) and can see that it did not just run.
|
|
111
|
+
*/
|
|
112
|
+
export declare function memoNotice(command: string, hit: {
|
|
113
|
+
entry: CommandMemoEntry;
|
|
114
|
+
parts: string[];
|
|
115
|
+
}): string;
|
|
116
|
+
//# sourceMappingURL=command-memo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-memo.d.ts","sourceRoot":"","sources":["../../src/tools/command-memo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAEH,6EAA6E;AAC7E,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,YAAY,CAAC;AAuBrD;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CASlE;AAED,gFAAgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAoBpE;AAED,2EAA2E;AAC3E,MAAM,WAAW,gBAAgB;IAC/B,gEAAgE;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAeD;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACxC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAED,8BAA8B;AAC9B,wBAAgB,oBAAoB,IAAI,cAAc,CAErD;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWzD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CACxB,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,OAAO,EAAE,MAAM,EACf,KAAK,SAAK,GACT;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAerD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,IAAI,EAAE,cAAc,GAAG,SAAS,EAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,KAAK,SAAK,GACT,IAAI,CAQN;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE;IAAE,KAAK,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,MAAM,CAMrG"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* C3 — ONE PROBE PER FACT PER RUN, and one idempotent setup step per run.
|
|
3
|
+
*
|
|
4
|
+
* THE MEASURED DEFECT. Run A asked the same three facts twice inside a single
|
|
5
|
+
* turn: proxy-log line 3 is ONE combined probe (`python3 --version; node --version;
|
|
6
|
+
* npm --version`) and lines 4–6 are the same three probes issued INDIVIDUALLY — 4
|
|
7
|
+
* shell invocations for 3 facts. The same run then issued
|
|
8
|
+
* `python3 -m venv backend/.venv` at line 222 and again at line 232, and both
|
|
9
|
+
* `/tmp/test/.venv` and `/tmp/test/backend/.venv` exist on disk. Every repeat
|
|
10
|
+
* costs a round trip, a tool slot in the context window, and a step of the model's
|
|
11
|
+
* attention on a question it has already had answered.
|
|
12
|
+
*
|
|
13
|
+
* WHY THE HARNESS MUST FIX IT. The model cannot remember what it already ran
|
|
14
|
+
* across a long thread — that is what a context window is for, and prompts get
|
|
15
|
+
* trimmed. The harness CAN: it is the thing that ran the command and holds its
|
|
16
|
+
* output. So the discipline lives here, in the tool layer, not in a prompt.
|
|
17
|
+
*
|
|
18
|
+
* ─── WHAT MAY BE MEMOIZED (deliberately narrow) ─────────────────────────────
|
|
19
|
+
*
|
|
20
|
+
* Two classes, both decided from the command text alone:
|
|
21
|
+
*
|
|
22
|
+
* 1. **PURE PROBES** — version/identity questions whose answer cannot change
|
|
23
|
+
* during a run: `node --version`, `python3 --version`, `which uv`, `pwd`,
|
|
24
|
+
* `uname -a`. Re-asking these is always waste.
|
|
25
|
+
* 2. **IDEMPOTENT SETUP** — commands whose second execution does nothing new
|
|
26
|
+
* and has no external side effect: `python3 -m venv <dir>`, `mkdir -p <dir>`,
|
|
27
|
+
* `touch <file>`. These are the measured repeats.
|
|
28
|
+
*
|
|
29
|
+
* Deliberately NOT memoized, and each for a reason:
|
|
30
|
+
* - anything with a pipe, a redirect, a substitution, a subshell or a glob
|
|
31
|
+
* (`splitCommandChain` refuses to decompose those, so they are never split
|
|
32
|
+
* into facts that could be wrongly reused);
|
|
33
|
+
* - `npm/pip install` — repeating is harmless, SKIPPING is not: a second run
|
|
34
|
+
* after an edit to `package.json` is exactly when a re-install is needed, and
|
|
35
|
+
* the tool cannot see the difference. A saved round trip is not worth a stale
|
|
36
|
+
* dependency tree;
|
|
37
|
+
* - `git add`/`cp`/`mv`/`rm` — arguably idempotent, but they interact with files
|
|
38
|
+
* created in between, so the second call is not the same question;
|
|
39
|
+
* - anything classified `confirm`/`deny` by the command gate. Memoization suits
|
|
40
|
+
* facts, not actions; an action the user authorized stays explicit.
|
|
41
|
+
*
|
|
42
|
+
* FAILURES ARE NEVER MEMOIZED. A command that exited non-zero is retryable by
|
|
43
|
+
* definition (the model may have fixed the cause), so only a successful result is
|
|
44
|
+
* remembered.
|
|
45
|
+
*
|
|
46
|
+
* The memo is PER RUN and in-memory: `RunCommandMemo` hangs off the tool context,
|
|
47
|
+
* which lives exactly as long as the run does. Nothing is written to disk, so a
|
|
48
|
+
* fresh run re-probes everything — a workspace that changed between turns must be
|
|
49
|
+
* seen with fresh eyes.
|
|
50
|
+
*/
|
|
51
|
+
/** Tools whose `--version` is a fact about this run's environment, not a state. */
|
|
52
|
+
const PROBE_TOOLS = [
|
|
53
|
+
'node', 'npm', 'npx', 'pnpm', 'yarn', 'bun', 'deno',
|
|
54
|
+
'python', 'python3', 'pip', 'pip3', 'uv', 'poetry', 'conda',
|
|
55
|
+
'git', 'java', 'javac', 'mvn', 'gradle',
|
|
56
|
+
'go', 'rustc', 'cargo', 'ruby', 'gem', 'php', 'dotnet', 'swift',
|
|
57
|
+
'docker', 'podman', 'kubectl', 'terraform',
|
|
58
|
+
'gcc', 'g++', 'clang', 'make', 'cmake', 'ffmpeg', 'ollama', 'sqlite3',
|
|
59
|
+
];
|
|
60
|
+
/** Whole commands that answer a fact about the machine and never change in a run. */
|
|
61
|
+
const PROBE_COMMANDS = new Set(['pwd', 'uname -a', 'uname -m', 'whoami', 'arch', 'nproc', 'hostname']);
|
|
62
|
+
/** Lower-case, trimmed, inner whitespace collapsed. `"X"`/`'X'` quoting removed. */
|
|
63
|
+
function normalize(part) {
|
|
64
|
+
return part
|
|
65
|
+
.trim()
|
|
66
|
+
.replace(/^(["'])(.*)\1$/, '$2')
|
|
67
|
+
.replace(/\s+/g, ' ');
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Split a command chain into its parts, or `null` when the command must not be
|
|
71
|
+
* decomposed.
|
|
72
|
+
*
|
|
73
|
+
* Refuses anything whose parts are not independent: a pipe (including `||`), a
|
|
74
|
+
* redirect, a command substitution, a subshell or a glob means the parts feed
|
|
75
|
+
* each other or depend on files, so treating them as separate facts would be
|
|
76
|
+
* wrong. Refusing is always safe — the command simply runs as before.
|
|
77
|
+
*/
|
|
78
|
+
export function splitCommandChain(command) {
|
|
79
|
+
const raw = command.trim();
|
|
80
|
+
if (!raw)
|
|
81
|
+
return null;
|
|
82
|
+
if (/[|><`$(){}*?[\]~]/.test(raw))
|
|
83
|
+
return null;
|
|
84
|
+
const parts = raw
|
|
85
|
+
.split(/\s*(?:;|&&)\s*|\n/)
|
|
86
|
+
.map(normalize)
|
|
87
|
+
.filter(Boolean);
|
|
88
|
+
return parts.length > 0 ? parts : null;
|
|
89
|
+
}
|
|
90
|
+
/** How a single command part may be memoized, or `null` for "never memoize". */
|
|
91
|
+
export function commandMemoKind(part) {
|
|
92
|
+
const cmd = normalize(part);
|
|
93
|
+
if (!cmd)
|
|
94
|
+
return null;
|
|
95
|
+
if (PROBE_COMMANDS.has(cmd))
|
|
96
|
+
return 'probe';
|
|
97
|
+
// `<tool> --version` / `-v` / `-V`, with an optional `sudo`-free path prefix.
|
|
98
|
+
const version = /^([a-z0-9_.+-]+)\s+(?:--version|-v|-V)$/i.exec(cmd);
|
|
99
|
+
if (version && PROBE_TOOLS.includes(version[1].toLowerCase()))
|
|
100
|
+
return 'probe';
|
|
101
|
+
// `which X` / `command -v X` — an identity question about the machine.
|
|
102
|
+
const which = /^(?:which|command -v|type)\s+([a-z0-9_.+-]+)$/i.exec(cmd);
|
|
103
|
+
if (which)
|
|
104
|
+
return 'probe';
|
|
105
|
+
// Idempotent setup. `mkdir -p` is the recursive form on purpose: a bare
|
|
106
|
+
// `mkdir` FAILS on the second call, so memoizing it would change an error the
|
|
107
|
+
// model may be relying on into a silent success.
|
|
108
|
+
if (/^(?:python3?|py)\s+-m\s+venv\s+\S+$/.test(cmd))
|
|
109
|
+
return 'idempotent';
|
|
110
|
+
if (/^mkdir\s+-p\s+\S+$/.test(cmd))
|
|
111
|
+
return 'idempotent';
|
|
112
|
+
if (/^touch\s+\S+$/.test(cmd))
|
|
113
|
+
return 'idempotent';
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* A key scoped to the directory the command ran in.
|
|
118
|
+
*
|
|
119
|
+
* The scope matters because the run's working directory can CHANGE mid-run:
|
|
120
|
+
* `clone_repo` sets `ctx.cwd` to the freshly cloned tree. A fact learned in one
|
|
121
|
+
* directory is not a fact about another (`pwd` most obviously, and
|
|
122
|
+
* `python3 -m venv .venv` would answer for the wrong project), so the scope is
|
|
123
|
+
* part of every key that is read or written.
|
|
124
|
+
*/
|
|
125
|
+
function scoped(where, key) {
|
|
126
|
+
return where ? `${where}::${key}` : key;
|
|
127
|
+
}
|
|
128
|
+
/** A fresh memo for a run. */
|
|
129
|
+
export function createRunCommandMemo() {
|
|
130
|
+
return { commands: new Map(), parts: new Map() };
|
|
131
|
+
}
|
|
132
|
+
/** The key a whole command is remembered under, or `null` when it must not be. */
|
|
133
|
+
export function memoKeyFor(command) {
|
|
134
|
+
const key = normalize(command);
|
|
135
|
+
if (!key)
|
|
136
|
+
return null;
|
|
137
|
+
const parts = splitCommandChain(key);
|
|
138
|
+
if (!parts) {
|
|
139
|
+
// Not decomposable: memoizable only when the whole thing is a single
|
|
140
|
+
// classified command (e.g. `python3 -m venv .venv`).
|
|
141
|
+
return commandMemoKind(key) ? `whole:${key}` : null;
|
|
142
|
+
}
|
|
143
|
+
if (!parts.every((p) => commandMemoKind(p) !== null))
|
|
144
|
+
return null;
|
|
145
|
+
return `whole:${parts.join('; ')}`;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* The result this run already has for `command`, or `null`.
|
|
149
|
+
*
|
|
150
|
+
* A hit requires EVERY part of the incoming command to be covered by the SAME
|
|
151
|
+
* earlier command — otherwise the earlier output cannot honestly answer the whole
|
|
152
|
+
* question, and the command runs (its own output is then stored for every part).
|
|
153
|
+
*/
|
|
154
|
+
export function lookupMemo(memo, command, where = '') {
|
|
155
|
+
if (!memo)
|
|
156
|
+
return null;
|
|
157
|
+
const key = normalize(command);
|
|
158
|
+
if (!key)
|
|
159
|
+
return null;
|
|
160
|
+
const exact = memo.commands.get(scoped(where, `whole:${key}`));
|
|
161
|
+
if (exact)
|
|
162
|
+
return { entry: exact, parts: splitCommandChain(key) ?? [key] };
|
|
163
|
+
const parts = splitCommandChain(key) ?? [key];
|
|
164
|
+
const covered = parts.map((p) => memo.parts.get(scoped(where, `part:${p}`)));
|
|
165
|
+
if (covered.some((c) => c === undefined))
|
|
166
|
+
return null;
|
|
167
|
+
const commands = new Set(covered);
|
|
168
|
+
if (commands.size !== 1)
|
|
169
|
+
return null;
|
|
170
|
+
const entry = memo.commands.get(commands.values().next().value);
|
|
171
|
+
return entry ? { entry, parts } : null;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Remember a SUCCESSFUL command's output for its whole key and every part.
|
|
175
|
+
*
|
|
176
|
+
* `where` is the directory the command ran in (the run's `cwd`); it scopes both
|
|
177
|
+
* keys, so a fact learned in one directory can never answer a question asked in
|
|
178
|
+
* another after the run changed directory.
|
|
179
|
+
*/
|
|
180
|
+
export function storeMemo(memo, command, output, where = '') {
|
|
181
|
+
if (!memo)
|
|
182
|
+
return;
|
|
183
|
+
const key = memoKeyFor(command);
|
|
184
|
+
if (!key)
|
|
185
|
+
return;
|
|
186
|
+
const parts = splitCommandChain(normalize(command)) ?? [normalize(command)];
|
|
187
|
+
const entry = { command: normalize(command), output };
|
|
188
|
+
memo.commands.set(scoped(where, key), entry);
|
|
189
|
+
for (const p of parts)
|
|
190
|
+
memo.parts.set(scoped(where, `part:${p}`), scoped(where, key));
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* The line returned instead of re-running. It NAMES what was already answered and
|
|
194
|
+
* reproduces the earlier output, so the model gets the fact it asked for (without
|
|
195
|
+
* a round trip) and can see that it did not just run.
|
|
196
|
+
*/
|
|
197
|
+
export function memoNotice(command, hit) {
|
|
198
|
+
const what = hit.parts.length > 1 ? `${hit.parts.length} facts` : `\`${hit.parts[0]}\``;
|
|
199
|
+
return (`↺ run_terminal: not re-run — ${what} already answered in THIS run by \`${hit.entry.command}\`. ` +
|
|
200
|
+
`Do not ask the same question twice; use the output below.\n\n${hit.entry.output}`);
|
|
201
|
+
}
|
|
202
|
+
//# sourceMappingURL=command-memo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-memo.js","sourceRoot":"","sources":["../../src/tools/command-memo.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AAKH,mFAAmF;AACnF,MAAM,WAAW,GAAG;IAClB,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IACnD,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO;IAC3D,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ;IACvC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO;IAC/D,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW;IAC1C,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS;CAC7D,CAAC;AAEX,qFAAqF;AACrF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;AAEvG,oFAAoF;AACpF,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI;SACR,IAAI,EAAE;SACN,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;SAC/B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC3B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/C,MAAM,KAAK,GAAG,GAAG;SACd,KAAK,CAAC,mBAAmB,CAAC;SAC1B,GAAG,CAAC,SAAS,CAAC;SACd,MAAM,CAAC,OAAO,CAAC,CAAC;IACnB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IAE5C,8EAA8E;IAC9E,MAAM,OAAO,GAAG,0CAA0C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrE,IAAI,OAAO,IAAK,WAAiC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IAErG,uEAAuE;IACvE,MAAM,KAAK,GAAG,gDAAgD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,IAAI,KAAK;QAAE,OAAO,OAAO,CAAC;IAE1B,wEAAwE;IACxE,8EAA8E;IAC9E,iDAAiD;IACjD,IAAI,qCAAqC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACzE,IAAI,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACxD,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC;IACnD,OAAO,IAAI,CAAC;AACd,CAAC;AASD;;;;;;;;GAQG;AACH,SAAS,MAAM,CAAC,KAAa,EAAE,GAAW;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1C,CAAC;AAgBD,8BAA8B;AAC9B,MAAM,UAAU,oBAAoB;IAClC,OAAO,EAAE,QAAQ,EAAE,IAAI,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;AACnD,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,UAAU,CAAC,OAAe;IACxC,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,qEAAqE;QACrE,qDAAqD;QACrD,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACtD,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,SAAS,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACrC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CACxB,IAAgC,EAChC,OAAe,EACf,KAAK,GAAG,EAAE;IAEV,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IAE3E,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAmB,CAAC,CAAC;IAC9C,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,KAAe,CAAC,CAAC;IAC1E,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACvB,IAAgC,EAChC,OAAe,EACf,MAAc,EACd,KAAK,GAAG,EAAE;IAEV,IAAI,CAAC,IAAI;QAAE,OAAO;IAClB,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,GAAG;QAAE,OAAO;IACjB,MAAM,KAAK,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;IAC5E,MAAM,KAAK,GAAqB,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACxE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AACxF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,GAAiD;IAC3F,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACxF,OAAO,CACL,gCAAgC,IAAI,sCAAsC,GAAG,CAAC,KAAK,CAAC,OAAO,MAAM;QACjG,gEAAgE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CACnF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-tool.d.ts","sourceRoot":"","sources":["../../src/tools/git-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"git-tool.d.ts","sourceRoot":"","sources":["../../src/tools/git-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AASjD,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,kBAAkB;IAClB,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACtD,gDAAgD;IAChD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,oEAAoE;IACpE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,6DAA6D;AAC7D,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;CACjB;AA4ED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBzF;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAE7D;AA8GD,wBAAsB,UAAU,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CA+GrF"}
|
package/dist/tools/git-tool.js
CHANGED
|
@@ -46,6 +46,8 @@
|
|
|
46
46
|
*/
|
|
47
47
|
import { execFileSync, spawnSync } from 'node:child_process';
|
|
48
48
|
import { decideStateChange, requestRequestsCommit, requestRequestsPush, } from '../learning/autonomy-policy.js';
|
|
49
|
+
import { sessionGrantCovers } from '../learning/session-grant.js';
|
|
50
|
+
import { grantCategoryOfTool } from './capability-registry.js';
|
|
49
51
|
/**
|
|
50
52
|
* Action names that map to denied git commands — parity with run_terminal.
|
|
51
53
|
*
|
|
@@ -183,10 +185,15 @@ async function pushAction(args, ctx) {
|
|
|
183
185
|
}
|
|
184
186
|
// ── The gate ────────────────────────────────────────────────────────────
|
|
185
187
|
const namedByRequest = requestRequestsPush(ctx.authorizationRequest ?? '');
|
|
186
|
-
|
|
188
|
+
// The user may also have granted off-machine actions for this session — an
|
|
189
|
+
// explicit go-ahead that covers a push the request did not name.
|
|
190
|
+
const gitGrant = grantCategoryOfTool('git');
|
|
191
|
+
const grantCovers = !namedByRequest && gitGrant !== null && sessionGrantCovers(ctx.planStore, gitGrant);
|
|
192
|
+
if (!args.confirm && !namedByRequest && !grantCovers) {
|
|
187
193
|
// `external` is what makes the ask unconditional here — even a request that
|
|
188
194
|
// authorized writes cannot authorize this, because it was not the user who
|
|
189
195
|
// decided the work should leave this machine.
|
|
196
|
+
ctx.pendingConfirmation = { tool: 'git', command: `git push ${remote} ${branch}`, category: 'external' };
|
|
190
197
|
const verdict = decideStateChange({
|
|
191
198
|
tool: 'git push',
|
|
192
199
|
action: `pushing ${branch} to '${remote}'`,
|
|
@@ -210,6 +217,9 @@ async function pushAction(args, ctx) {
|
|
|
210
217
|
tagsNote = tags.ok ? '; pushed tags' : `; but pushing tags failed: ${tags.out}`;
|
|
211
218
|
}
|
|
212
219
|
const reported = !args.confirm;
|
|
220
|
+
const reason = namedByRequest
|
|
221
|
+
? 'the request itself names the push'
|
|
222
|
+
: 'allowed for this session by the user';
|
|
213
223
|
if (reported) {
|
|
214
224
|
// Reported, never silent — same contract as the commit path's autonomous
|
|
215
225
|
// write: the user must be able to see where their work just went.
|
|
@@ -217,13 +227,13 @@ async function pushAction(args, ctx) {
|
|
|
217
227
|
tool: 'git push',
|
|
218
228
|
remote,
|
|
219
229
|
branch,
|
|
220
|
-
reason
|
|
230
|
+
reason,
|
|
221
231
|
}, 'tool-loop');
|
|
222
232
|
}
|
|
223
233
|
const result = `✅ Pushed ${branch} → ${remote}${tagsNote}:\n${pushed.out.slice(0, 800)}`;
|
|
224
234
|
if (!reported)
|
|
225
235
|
return result;
|
|
226
|
-
return (`${result}\n💡 Pushed without asking:
|
|
236
|
+
return (`${result}\n💡 Pushed without asking: ${reason}. ` +
|
|
227
237
|
'State the push in your answer so the user can see where the work went.');
|
|
228
238
|
}
|
|
229
239
|
export async function runGitTool(args, ctx) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-tool.js","sourceRoot":"","sources":["../../src/tools/git-tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"git-tool.js","sourceRoot":"","sources":["../../src/tools/git-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness directives — how the loop SPEAKS to the model about a gate it hit.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS. Every gate that nudges the turn — "declare a plan first",
|
|
5
|
+
* "files changed and nothing observed the result", "you announced an action but
|
|
6
|
+
* did nothing" — used to be pushed into the thread as a `user` message. A chat
|
|
7
|
+
* model is trained to ANSWER a user turn, so the model replied to the harness:
|
|
8
|
+
* it narrated the interruption back at the user ("the earlier grep was blocked
|
|
9
|
+
* as state-changing…") instead of silently acting on it. On a surface that also
|
|
10
|
+
* shows those gate events, that narration is what reads as an "agent vs model"
|
|
11
|
+
* struggle — a second voice the user can hear, when there is only one.
|
|
12
|
+
*
|
|
13
|
+
* WHAT THIS IS. A single delivery channel for harness-authored instructions:
|
|
14
|
+
*
|
|
15
|
+
* - they are `system`-role, not `user`-role, so they read as a directive the
|
|
16
|
+
* model acts on rather than a conversation partner it answers;
|
|
17
|
+
* - they are prefixed with a fixed `[harness]` marker, so a model — and a
|
|
18
|
+
* reader of the trace — can tell the loop's own voice from the user's;
|
|
19
|
+
* - they are DEDUPED by gate within a turn, so the same instruction cannot be
|
|
20
|
+
* re-injected and read as nagging.
|
|
21
|
+
*
|
|
22
|
+
* The gate text itself is unchanged; only who is seen to be speaking changes.
|
|
23
|
+
*/
|
|
24
|
+
import type { ToolMessage } from '../inference/interface.js';
|
|
25
|
+
/** The fixed marker that precedes every harness-authored directive. */
|
|
26
|
+
export declare const HARNESS_MARKER = "[harness]";
|
|
27
|
+
/** One harness directive, as it is placed on the wire. */
|
|
28
|
+
export declare function harnessDirective(content: string): ToolMessage;
|
|
29
|
+
export interface HarnessDirectiveSink {
|
|
30
|
+
/**
|
|
31
|
+
* Push a directive ONCE per turn. Returns false when this gate has already
|
|
32
|
+
* spoken this turn (nothing is pushed), so a repeated nudge cannot nag.
|
|
33
|
+
*/
|
|
34
|
+
push(thread: ToolMessage[], gate: string, content: string): boolean;
|
|
35
|
+
/** Has this gate already delivered a directive this turn? */
|
|
36
|
+
has(gate: string): boolean;
|
|
37
|
+
/** The gates that have spoken, in order — for the turn report / tests. */
|
|
38
|
+
deliveredGates(): string[];
|
|
39
|
+
}
|
|
40
|
+
/** A fresh per-turn sink (one turn = one sink; dedupe is scoped to it). */
|
|
41
|
+
export declare function createHarnessDirectiveSink(): HarnessDirectiveSink;
|
|
42
|
+
//# sourceMappingURL=harness-directive.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-directive.d.ts","sourceRoot":"","sources":["../../src/tools/harness-directive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE7D,uEAAuE;AACvE,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C,0DAA0D;AAC1D,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAE7D;AAED,MAAM,WAAW,oBAAoB;IACnC;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACpE,6DAA6D;IAC7D,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,0EAA0E;IAC1E,cAAc,IAAI,MAAM,EAAE,CAAC;CAC5B;AAED,2EAA2E;AAC3E,wBAAgB,0BAA0B,IAAI,oBAAoB,CAYjE"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Harness directives — how the loop SPEAKS to the model about a gate it hit.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS. Every gate that nudges the turn — "declare a plan first",
|
|
5
|
+
* "files changed and nothing observed the result", "you announced an action but
|
|
6
|
+
* did nothing" — used to be pushed into the thread as a `user` message. A chat
|
|
7
|
+
* model is trained to ANSWER a user turn, so the model replied to the harness:
|
|
8
|
+
* it narrated the interruption back at the user ("the earlier grep was blocked
|
|
9
|
+
* as state-changing…") instead of silently acting on it. On a surface that also
|
|
10
|
+
* shows those gate events, that narration is what reads as an "agent vs model"
|
|
11
|
+
* struggle — a second voice the user can hear, when there is only one.
|
|
12
|
+
*
|
|
13
|
+
* WHAT THIS IS. A single delivery channel for harness-authored instructions:
|
|
14
|
+
*
|
|
15
|
+
* - they are `system`-role, not `user`-role, so they read as a directive the
|
|
16
|
+
* model acts on rather than a conversation partner it answers;
|
|
17
|
+
* - they are prefixed with a fixed `[harness]` marker, so a model — and a
|
|
18
|
+
* reader of the trace — can tell the loop's own voice from the user's;
|
|
19
|
+
* - they are DEDUPED by gate within a turn, so the same instruction cannot be
|
|
20
|
+
* re-injected and read as nagging.
|
|
21
|
+
*
|
|
22
|
+
* The gate text itself is unchanged; only who is seen to be speaking changes.
|
|
23
|
+
*/
|
|
24
|
+
/** The fixed marker that precedes every harness-authored directive. */
|
|
25
|
+
export const HARNESS_MARKER = '[harness]';
|
|
26
|
+
/** One harness directive, as it is placed on the wire. */
|
|
27
|
+
export function harnessDirective(content) {
|
|
28
|
+
return { role: 'system', content: `${HARNESS_MARKER} ${content}` };
|
|
29
|
+
}
|
|
30
|
+
/** A fresh per-turn sink (one turn = one sink; dedupe is scoped to it). */
|
|
31
|
+
export function createHarnessDirectiveSink() {
|
|
32
|
+
const delivered = new Set();
|
|
33
|
+
return {
|
|
34
|
+
push(thread, gate, content) {
|
|
35
|
+
if (delivered.has(gate))
|
|
36
|
+
return false;
|
|
37
|
+
delivered.add(gate);
|
|
38
|
+
thread.push(harnessDirective(content));
|
|
39
|
+
return true;
|
|
40
|
+
},
|
|
41
|
+
has: (gate) => delivered.has(gate),
|
|
42
|
+
deliveredGates: () => [...delivered],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=harness-directive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness-directive.js","sourceRoot":"","sources":["../../src/tools/harness-directive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C,0DAA0D;AAC1D,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,cAAc,IAAI,OAAO,EAAE,EAAE,CAAC;AACrE,CAAC;AAcD,2EAA2E;AAC3E,MAAM,UAAU,0BAA0B;IACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,OAAO;QACL,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO;YACxB,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,OAAO,KAAK,CAAC;YACtC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;KACrC,CAAC;AACJ,CAAC"}
|