muonroi-cli 1.8.3 → 1.8.5
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/LICENSE +21 -21
- package/README.md +133 -122
- package/dist/packages/agent-harness-core/src/driver.d.ts +27 -1
- package/dist/packages/agent-harness-core/src/driver.js +46 -0
- package/dist/packages/agent-harness-core/src/event-tee.d.ts +48 -0
- package/dist/packages/agent-harness-core/src/event-tee.js +77 -0
- package/dist/packages/agent-harness-core/src/mcp-server.d.ts +11 -0
- package/dist/packages/agent-harness-core/src/mcp-server.js +87 -15
- package/dist/packages/agent-harness-core/src/protocol.d.ts +66 -2
- package/dist/packages/agent-harness-core/src/protocol.js +15 -0
- package/dist/packages/agent-harness-core/src/visual-quality.d.ts +58 -0
- package/dist/packages/agent-harness-core/src/visual-quality.js +141 -0
- package/dist/packages/agent-harness-opentui/src/agent-mode.d.ts +6 -0
- package/dist/packages/agent-harness-opentui/src/agent-mode.js +14 -1
- package/dist/packages/agent-harness-opentui/src/input-bridge.d.ts +2 -10
- package/dist/packages/agent-harness-opentui/src/input-bridge.js +103 -16
- package/dist/packages/agent-harness-opentui/src/install.d.ts +8 -0
- package/dist/packages/agent-harness-opentui/src/install.js +10 -0
- package/dist/packages/agent-harness-opentui/src/semantic.js +12 -10
- package/dist/packages/agent-harness-opentui/src/visual-capture.d.ts +56 -0
- package/dist/packages/agent-harness-opentui/src/visual-capture.js +103 -0
- package/dist/src/agent-harness/mock-model.d.ts +28 -0
- package/dist/src/agent-harness/mock-model.js +63 -1
- package/dist/src/agent-harness/test-spawn.js +31 -0
- package/dist/src/cli/config/screen-providers.js +1 -1
- package/dist/src/cli/cost-forensics.d.ts +10 -0
- package/dist/src/cli/cost-forensics.js +30 -15
- package/dist/src/cli/keys-bundle.d.ts +1 -1
- package/dist/src/cli/keys-bundle.js +1 -1
- package/dist/src/cli/keys.d.ts +2 -2
- package/dist/src/cli/keys.js +19 -81
- package/dist/src/council/clarifier.d.ts +28 -2
- package/dist/src/council/clarifier.js +81 -15
- package/dist/src/council/context.js +49 -15
- package/dist/src/council/debate-checkpoint.d.ts +129 -0
- package/dist/src/council/debate-checkpoint.js +176 -0
- package/dist/src/council/debate-planner.js +51 -3
- package/dist/src/council/debate-summary.d.ts +25 -0
- package/dist/src/council/debate-summary.js +85 -0
- package/dist/src/council/debate.d.ts +169 -2
- package/dist/src/council/debate.js +1210 -134
- package/dist/src/council/index.d.ts +85 -1
- package/dist/src/council/index.js +634 -196
- package/dist/src/council/leader.d.ts +26 -0
- package/dist/src/council/leader.js +150 -9
- package/dist/src/council/llm.d.ts +32 -0
- package/dist/src/council/llm.js +231 -38
- package/dist/src/council/panel-select.d.ts +30 -0
- package/dist/src/council/panel-select.js +72 -0
- package/dist/src/council/planner.js +23 -0
- package/dist/src/council/preflight.d.ts +7 -0
- package/dist/src/council/preflight.js +14 -2
- package/dist/src/council/prompts.d.ts +30 -3
- package/dist/src/council/prompts.js +254 -84
- package/dist/src/council/stance-recall.d.ts +42 -0
- package/dist/src/council/stance-recall.js +57 -0
- package/dist/src/council/strip-think.d.ts +17 -0
- package/dist/src/council/strip-think.js +33 -0
- package/dist/src/council/types.d.ts +128 -0
- package/dist/src/ee/artifact-cache.d.ts +16 -0
- package/dist/src/ee/artifact-cache.js +32 -0
- package/dist/src/ee/auth.d.ts +1 -0
- package/dist/src/ee/auth.js +15 -2
- package/dist/src/ee/bridge.d.ts +10 -0
- package/dist/src/ee/bridge.js +58 -0
- package/dist/src/ee/client.js +81 -18
- package/dist/src/ee/export-transcripts.d.ts +1 -0
- package/dist/src/ee/export-transcripts.js +8 -10
- package/dist/src/ee/extract-session.js +29 -0
- package/dist/src/ee/extract-style.d.ts +58 -0
- package/dist/src/ee/extract-style.js +270 -0
- package/dist/src/ee/recall-ledger.d.ts +9 -0
- package/dist/src/ee/recall-ledger.js +3 -0
- package/dist/src/ee/scope.d.ts +1 -0
- package/dist/src/ee/scope.js +26 -1
- package/dist/src/ee/search.d.ts +7 -0
- package/dist/src/ee/search.js +24 -0
- package/dist/src/ee/transcript-emit.js +2 -0
- package/dist/src/ee/types.d.ts +22 -0
- package/dist/src/ee/who-am-i-brain.d.ts +35 -0
- package/dist/src/ee/who-am-i-brain.js +220 -0
- package/dist/src/ee/who-am-i.d.ts +10 -3
- package/dist/src/ee/who-am-i.js +12 -0
- package/dist/src/ee/workflow-event.d.ts +48 -0
- package/dist/src/ee/workflow-event.js +81 -0
- package/dist/src/flow/compaction/compress.d.ts +3 -3
- package/dist/src/flow/compaction/compress.js +45 -8
- package/dist/src/flow/compaction/extract.d.ts +4 -7
- package/dist/src/flow/compaction/extract.js +50 -10
- package/dist/src/flow/compaction/index.d.ts +13 -1
- package/dist/src/flow/compaction/index.js +70 -3
- package/dist/src/flow/compaction/input-guard.d.ts +24 -0
- package/dist/src/flow/compaction/input-guard.js +43 -0
- package/dist/src/flow/fold-planning.d.ts +36 -0
- package/dist/src/flow/fold-planning.js +83 -0
- package/dist/src/flow/hierarchy.d.ts +146 -0
- package/dist/src/flow/hierarchy.js +427 -0
- package/dist/src/flow/index.d.ts +1 -0
- package/dist/src/flow/index.js +2 -0
- package/dist/src/flow/run-artifacts.d.ts +102 -0
- package/dist/src/flow/run-artifacts.js +208 -0
- package/dist/src/generated/version.d.ts +1 -1
- package/dist/src/generated/version.js +1 -1
- package/dist/src/gsd/assessment-schema.d.ts +44 -0
- package/dist/src/gsd/assessment-schema.js +134 -0
- package/dist/src/gsd/capability-registry.d.ts +45 -0
- package/dist/src/gsd/capability-registry.js +337 -0
- package/dist/src/gsd/complexity-assessor.d.ts +39 -0
- package/dist/src/gsd/complexity-assessor.js +152 -0
- package/dist/src/gsd/config-bridge.d.ts +7 -0
- package/dist/src/gsd/config-bridge.js +114 -0
- package/dist/src/gsd/config-loader.d.ts +27 -0
- package/dist/src/gsd/config-loader.js +50 -0
- package/dist/src/gsd/council-context.d.ts +44 -0
- package/dist/src/gsd/council-context.js +114 -0
- package/dist/src/gsd/ee-closure.d.ts +28 -0
- package/dist/src/gsd/ee-closure.js +49 -0
- package/dist/src/gsd/flags.d.ts +55 -0
- package/dist/src/gsd/flags.js +83 -0
- package/dist/src/gsd/gsd-dispatch.d.ts +58 -0
- package/dist/src/gsd/gsd-dispatch.js +131 -0
- package/dist/src/gsd/gsd-runtime.d.ts +22 -0
- package/dist/src/gsd/gsd-runtime.js +37 -0
- package/dist/src/gsd/host-adapter.d.ts +11 -0
- package/dist/src/gsd/host-adapter.js +29 -0
- package/dist/src/gsd/index.d.ts +24 -1
- package/dist/src/gsd/index.js +27 -0
- package/dist/src/gsd/loop-host-contract.d.ts +21 -0
- package/dist/src/gsd/loop-host-contract.js +39 -0
- package/dist/src/gsd/loop-host.d.ts +69 -0
- package/dist/src/gsd/loop-host.js +245 -0
- package/dist/src/gsd/loop-resolver.d.ts +36 -0
- package/dist/src/gsd/loop-resolver.js +79 -0
- package/dist/src/gsd/model-tier.d.ts +13 -0
- package/dist/src/gsd/model-tier.js +45 -0
- package/dist/src/gsd/mutation-gate.d.ts +16 -0
- package/dist/src/gsd/mutation-gate.js +41 -0
- package/dist/src/gsd/native-roadmap.d.ts +89 -0
- package/dist/src/gsd/native-roadmap.js +343 -0
- package/dist/src/gsd/native-state.d.ts +47 -0
- package/dist/src/gsd/native-state.js +220 -0
- package/dist/src/gsd/paths.d.ts +23 -0
- package/dist/src/gsd/paths.js +66 -0
- package/dist/src/gsd/phase-dag.d.ts +12 -0
- package/dist/src/gsd/phase-dag.js +94 -0
- package/dist/src/gsd/phase-sync.d.ts +42 -0
- package/dist/src/gsd/phase-sync.js +321 -0
- package/dist/src/gsd/pil-gate-context.d.ts +13 -0
- package/dist/src/gsd/pil-gate-context.js +64 -0
- package/dist/src/gsd/pil-gate-critic.d.ts +19 -0
- package/dist/src/gsd/pil-gate-critic.js +74 -0
- package/dist/src/gsd/plan-council-prompts.d.ts +25 -0
- package/dist/src/gsd/plan-council-prompts.js +79 -0
- package/dist/src/gsd/plan-council.d.ts +44 -0
- package/dist/src/gsd/plan-council.js +251 -0
- package/dist/src/gsd/plan-gate-vocabulary.d.ts +40 -0
- package/dist/src/gsd/plan-gate-vocabulary.js +64 -0
- package/dist/src/gsd/product-workspace.d.ts +13 -0
- package/dist/src/gsd/product-workspace.js +124 -0
- package/dist/src/gsd/ship-bridge.d.ts +25 -0
- package/dist/src/gsd/ship-bridge.js +65 -0
- package/dist/src/gsd/state-document.d.ts +40 -0
- package/dist/src/gsd/state-document.js +163 -0
- package/dist/src/gsd/verdict-schema.d.ts +39 -0
- package/dist/src/gsd/verdict-schema.js +144 -0
- package/dist/src/gsd/verify-context.d.ts +22 -0
- package/dist/src/gsd/verify-context.js +27 -0
- package/dist/src/gsd/verify-council-prompts.d.ts +19 -0
- package/dist/src/gsd/verify-council-prompts.js +85 -0
- package/dist/src/gsd/verify-council.d.ts +25 -0
- package/dist/src/gsd/verify-council.js +119 -0
- package/dist/src/gsd/verify-gate-vocabulary.d.ts +25 -0
- package/dist/src/gsd/verify-gate-vocabulary.js +46 -0
- package/dist/src/gsd/workflow-engine.d.ts +60 -0
- package/dist/src/gsd/workflow-engine.js +207 -0
- package/dist/src/gsd/workflow-tools.d.ts +13 -0
- package/dist/src/gsd/workflow-tools.js +277 -0
- package/dist/src/hooks/index.js +1 -1
- package/dist/src/index.js +44 -11
- package/dist/src/maintain/pr-builder.js +23 -13
- package/dist/src/mcp/auto-setup.js +57 -32
- package/dist/src/mcp/client-pool.js +1 -1
- package/dist/src/mcp/ee-tools.js +1 -0
- package/dist/src/mcp/oauth-callback.js +2 -2
- package/dist/src/mcp/research-onboarding.js +8 -7
- package/dist/src/mcp/runtime.js +34 -2
- package/dist/src/mcp/setup-guide-text.d.ts +1 -1
- package/dist/src/mcp/setup-guide-text.js +77 -76
- package/dist/src/models/catalog-client.d.ts +87 -0
- package/dist/src/models/catalog-client.js +105 -38
- package/dist/src/models/catalog.json +528 -265
- package/dist/src/models/registry.d.ts +22 -7
- package/dist/src/models/registry.js +73 -10
- package/dist/src/ops/doctor.js +8 -8
- package/dist/src/orchestrator/auto-commit.js +1 -1
- package/dist/src/orchestrator/batch-turn-runner.js +2 -2
- package/dist/src/orchestrator/cache-prefix.d.ts +67 -0
- package/dist/src/orchestrator/cache-prefix.js +83 -0
- package/dist/src/orchestrator/compact-request.d.ts +32 -0
- package/dist/src/orchestrator/compact-request.js +41 -0
- package/dist/src/orchestrator/compaction.d.ts +10 -0
- package/dist/src/orchestrator/compaction.js +27 -7
- package/dist/src/orchestrator/council-manager.d.ts +12 -3
- package/dist/src/orchestrator/council-manager.js +65 -24
- package/dist/src/orchestrator/cross-turn-dedup.d.ts +6 -0
- package/dist/src/orchestrator/cross-turn-dedup.js +22 -1
- package/dist/src/orchestrator/error-utils.d.ts +29 -0
- package/dist/src/orchestrator/error-utils.js +132 -24
- package/dist/src/orchestrator/grounding-check.js +39 -1
- package/dist/src/orchestrator/message-processor.js +242 -33
- package/dist/src/orchestrator/orchestrator.d.ts +39 -3
- package/dist/src/orchestrator/orchestrator.js +651 -102
- package/dist/src/orchestrator/preprocessor.js +1 -1
- package/dist/src/orchestrator/proactive-compact-detector.d.ts +26 -0
- package/dist/src/orchestrator/proactive-compact-detector.js +36 -0
- package/dist/src/orchestrator/prompts.js +159 -159
- package/dist/src/orchestrator/reactive-delegation.d.ts +39 -0
- package/dist/src/orchestrator/reactive-delegation.js +59 -0
- package/dist/src/orchestrator/retry-classifier.d.ts +2 -1
- package/dist/src/orchestrator/retry-classifier.js +46 -2
- package/dist/src/orchestrator/safety-intercept.d.ts +45 -0
- package/dist/src/orchestrator/safety-intercept.js +55 -0
- package/dist/src/orchestrator/scope-reminder.js +1 -1
- package/dist/src/orchestrator/session-experience.d.ts +2 -1
- package/dist/src/orchestrator/session-experience.js +2 -1
- package/dist/src/orchestrator/should-run-gate.d.ts +5 -0
- package/dist/src/orchestrator/should-run-gate.js +18 -0
- package/dist/src/orchestrator/stall-watchdog.d.ts +24 -3
- package/dist/src/orchestrator/stall-watchdog.js +47 -13
- package/dist/src/orchestrator/stream-runner.js +62 -29
- package/dist/src/orchestrator/sub-agent-cap.d.ts +13 -1
- package/dist/src/orchestrator/sub-agent-cap.js +16 -1
- package/dist/src/orchestrator/sub-agent-model-tier.d.ts +13 -1
- package/dist/src/orchestrator/sub-agent-model-tier.js +16 -2
- package/dist/src/orchestrator/subagent-compactor.d.ts +53 -1
- package/dist/src/orchestrator/subagent-compactor.js +126 -15
- package/dist/src/orchestrator/tool-engine.d.ts +26 -0
- package/dist/src/orchestrator/tool-engine.js +669 -56
- package/dist/src/orchestrator/tool-limit-auto-recover.d.ts +22 -0
- package/dist/src/orchestrator/tool-limit-auto-recover.js +30 -0
- package/dist/src/orchestrator/turn-runner-deps.d.ts +19 -0
- package/dist/src/orchestrator/turn-watchdog.d.ts +37 -0
- package/dist/src/orchestrator/turn-watchdog.js +55 -0
- package/dist/src/pil/agent-operating-contract.d.ts +1 -1
- package/dist/src/pil/agent-operating-contract.js +1 -1
- package/dist/src/pil/cheap-model-playbook.d.ts +1 -1
- package/dist/src/pil/cheap-model-playbook.js +5 -1
- package/dist/src/pil/cheap-model-workbooks.d.ts +1 -1
- package/dist/src/pil/cheap-model-workbooks.js +1 -1
- package/dist/src/pil/discovery-types.d.ts +1 -0
- package/dist/src/pil/discovery.js +16 -11
- package/dist/src/pil/layer1-intent.d.ts +18 -6
- package/dist/src/pil/layer1-intent.js +66 -757
- package/dist/src/pil/layer15-context-scan.js +15 -1
- package/dist/src/pil/layer2_5-ponytail.js +8 -8
- package/dist/src/pil/layer3-ee-injection.js +23 -8
- package/dist/src/pil/layer4-gsd.js +69 -16
- package/dist/src/pil/layer5-context.js +7 -3
- package/dist/src/pil/layer6-output.d.ts +23 -0
- package/dist/src/pil/layer6-output.js +5 -1
- package/dist/src/pil/llm-classify.d.ts +33 -2
- package/dist/src/pil/llm-classify.js +123 -131
- package/dist/src/pil/native-capabilities-workbook.d.ts +1 -1
- package/dist/src/pil/native-capabilities-workbook.js +1 -0
- package/dist/src/pil/pipeline.js +34 -2
- package/dist/src/pil/response-tools.js +5 -3
- package/dist/src/pil/schema.d.ts +1 -0
- package/dist/src/pil/schema.js +2 -0
- package/dist/src/pil/types.d.ts +18 -0
- package/dist/src/playbook/directives.d.ts +4 -0
- package/dist/src/playbook/directives.js +17 -5
- package/dist/src/product-loop/backlog-builder.d.ts +14 -1
- package/dist/src/product-loop/backlog-builder.js +30 -6
- package/dist/src/product-loop/discovery-context-format.js +3 -1
- package/dist/src/product-loop/discovery-ecosystem.js +4 -1
- package/dist/src/product-loop/discovery-interview.js +32 -3
- package/dist/src/product-loop/discovery-schema.js +5 -1
- package/dist/src/product-loop/done-gate.js +3 -3
- package/dist/src/product-loop/ideal-trace.d.ts +7 -0
- package/dist/src/product-loop/ideal-trace.js +64 -0
- package/dist/src/product-loop/index.d.ts +13 -1
- package/dist/src/product-loop/index.js +333 -52
- package/dist/src/product-loop/loop-driver.d.ts +7 -0
- package/dist/src/product-loop/loop-driver.js +327 -116
- package/dist/src/product-loop/phase-plan.d.ts +5 -0
- package/dist/src/product-loop/phase-plan.js +39 -2
- package/dist/src/product-loop/phase-runner.js +9 -1
- package/dist/src/product-loop/progress-snapshot.js +4 -4
- package/dist/src/product-loop/sprint-runner.d.ts +111 -0
- package/dist/src/product-loop/sprint-runner.js +559 -16
- package/dist/src/product-loop/types.d.ts +36 -5
- package/dist/src/providers/adapter.d.ts +1 -1
- package/dist/src/providers/adapter.js +3 -4
- package/dist/src/providers/auth/browser-flow.d.ts +1 -1
- package/dist/src/providers/auth/browser-flow.js +1 -1
- package/dist/src/providers/auth/openai-oauth.js +1 -1
- package/dist/src/providers/auth/registry.js +0 -34
- package/dist/src/providers/auth/token-store.js +4 -1
- package/dist/src/providers/auth/types.d.ts +1 -1
- package/dist/src/providers/auth/types.js +1 -1
- package/dist/src/providers/capabilities.d.ts +24 -5
- package/dist/src/providers/capabilities.js +42 -24
- package/dist/src/providers/endpoints.d.ts +2 -2
- package/dist/src/providers/endpoints.js +11 -10
- package/dist/src/providers/keychain.d.ts +1 -1
- package/dist/src/providers/keychain.js +7 -9
- package/dist/src/providers/mcp-vision-bridge.js +82 -172
- package/dist/src/providers/openai-compatible.js +8 -1
- package/dist/src/providers/pricing.d.ts +2 -2
- package/dist/src/providers/pricing.js +3 -13
- package/dist/src/providers/runtime.d.ts +27 -2
- package/dist/src/providers/runtime.js +78 -15
- package/dist/src/providers/strategies/base.strategy.d.ts +16 -0
- package/dist/src/providers/strategies/base.strategy.js +24 -1
- package/dist/src/providers/strategies/{siliconflow.strategy.d.ts → opencode-go.strategy.d.ts} +3 -3
- package/dist/src/providers/strategies/opencode-go.strategy.js +83 -0
- package/dist/src/providers/strategies/registry.js +4 -4
- package/dist/src/providers/strategies/thinking-mode.d.ts +109 -0
- package/dist/src/providers/strategies/thinking-mode.js +280 -1
- package/dist/src/providers/strategies/zai.strategy.d.ts +14 -0
- package/dist/src/providers/strategies/zai.strategy.js +44 -0
- package/dist/src/providers/types.d.ts +5 -6
- package/dist/src/providers/types.js +2 -2
- package/dist/src/providers/vision-backend.d.ts +47 -0
- package/dist/src/providers/vision-backend.js +258 -0
- package/dist/src/providers/vision-proxy.d.ts +22 -9
- package/dist/src/providers/vision-proxy.js +63 -132
- package/dist/src/providers/wire-debug.js +95 -0
- package/dist/src/reporter/index.js +1 -1
- package/dist/src/router/decide.d.ts +13 -0
- package/dist/src/router/decide.js +138 -36
- package/dist/src/router/peak-hour.d.ts +38 -0
- package/dist/src/router/peak-hour.js +107 -0
- package/dist/src/router/step-router.js +3 -2
- package/dist/src/router/warm.js +4 -5
- package/dist/src/scaffold/bb-ecosystem-apply.js +47 -47
- package/dist/src/scaffold/bb-quality-gate.js +5 -5
- package/dist/src/scaffold/continuation-prompt.d.ts +11 -0
- package/dist/src/scaffold/continuation-prompt.js +86 -60
- package/dist/src/scaffold/init-new.js +453 -453
- package/dist/src/scaffold/point-to-existing.d.ts +21 -0
- package/dist/src/scaffold/point-to-existing.js +25 -0
- package/dist/src/self-qa/agentic-loop.js +22 -22
- package/dist/src/{ui/state → state}/active-run.d.ts +19 -0
- package/dist/src/{ui/state → state}/active-run.js +21 -0
- package/dist/src/{ui/status-bar/store.d.ts → state/status-bar-store.d.ts} +4 -1
- package/dist/src/{ui/status-bar/store.js → state/status-bar-store.js} +12 -9
- package/dist/src/state/turn-trace.d.ts +43 -0
- package/dist/src/state/turn-trace.js +32 -0
- package/dist/src/storage/db.js +2 -1
- package/dist/src/storage/index.d.ts +1 -1
- package/dist/src/storage/index.js +1 -1
- package/dist/src/storage/interaction-log.d.ts +1 -1
- package/dist/src/storage/interaction-log.js +5 -5
- package/dist/src/storage/migrations.js +196 -126
- package/dist/src/storage/session-experience-store.js +4 -4
- package/dist/src/storage/sessions.d.ts +28 -10
- package/dist/src/storage/sessions.js +112 -55
- package/dist/src/storage/transcript-view.js +1 -1
- package/dist/src/storage/transcript.d.ts +51 -0
- package/dist/src/storage/transcript.js +383 -112
- package/dist/src/storage/usage.js +14 -14
- package/dist/src/storage/workspaces.js +12 -12
- package/dist/src/tools/file.d.ts +15 -0
- package/dist/src/tools/file.js +32 -0
- package/dist/src/tools/native-tools.js +5 -0
- package/dist/src/tools/registry.d.ts +3 -0
- package/dist/src/tools/registry.js +460 -22
- package/dist/src/tools/research.d.ts +29 -0
- package/dist/src/tools/research.js +233 -0
- package/dist/src/types/index.d.ts +118 -3
- package/dist/src/ui/app.js +0 -0
- package/dist/src/ui/cards/product-status-card.js +1 -1
- package/dist/src/ui/components/bubble-body-guard.d.ts +27 -0
- package/dist/src/ui/components/bubble-body-guard.js +50 -0
- package/dist/src/ui/components/context-rail.d.ts +26 -0
- package/dist/src/ui/components/context-rail.js +33 -0
- package/dist/src/ui/components/council-conclusion-card.d.ts +73 -0
- package/dist/src/ui/components/council-conclusion-card.js +420 -0
- package/dist/src/ui/components/council-debate-pill.d.ts +36 -0
- package/dist/src/ui/components/council-debate-pill.js +34 -0
- package/dist/src/ui/components/council-info-card.js +2 -2
- package/dist/src/ui/components/council-leader-bubble.d.ts +10 -3
- package/dist/src/ui/components/council-leader-bubble.js +21 -11
- package/dist/src/ui/components/council-message-bubble.d.ts +15 -2
- package/dist/src/ui/components/council-message-bubble.js +16 -15
- package/dist/src/ui/components/council-phase-timeline.d.ts +9 -1
- package/dist/src/ui/components/council-phase-timeline.js +49 -15
- package/dist/src/ui/components/council-placeholder-bubble.d.ts +16 -9
- package/dist/src/ui/components/council-placeholder-bubble.js +32 -29
- package/dist/src/ui/components/council-question-card.js +12 -12
- package/dist/src/ui/components/council-rail-rounds.d.ts +26 -0
- package/dist/src/ui/components/council-rail-rounds.js +57 -0
- package/dist/src/ui/components/council-round-group.d.ts +38 -0
- package/dist/src/ui/components/council-round-group.js +88 -0
- package/dist/src/ui/components/council-status-list.d.ts +3 -1
- package/dist/src/ui/components/council-status-list.js +36 -24
- package/dist/src/ui/components/council-synthesis-banner.d.ts +7 -2
- package/dist/src/ui/components/council-synthesis-banner.js +20 -5
- package/dist/src/ui/components/halt-recovery-card.js +9 -5
- package/dist/src/ui/components/jump-to-latest-pill.d.ts +11 -0
- package/dist/src/ui/components/jump-to-latest-pill.js +14 -0
- package/dist/src/ui/components/prompt-box.js +18 -16
- package/dist/src/ui/components/session-tree-card.d.ts +14 -0
- package/dist/src/ui/components/session-tree-card.js +46 -0
- package/dist/src/ui/components/slash-inline-menu.d.ts +12 -0
- package/dist/src/ui/components/slash-inline-menu.js +26 -5
- package/dist/src/ui/components/task-list-panel.d.ts +14 -1
- package/dist/src/ui/components/task-list-panel.js +22 -2
- package/dist/src/ui/containers/modals-layer.d.ts +2 -1
- package/dist/src/ui/hooks/use-session-picker.d.ts +3 -3
- package/dist/src/ui/mcp-modal.js +2 -4
- package/dist/src/ui/modals/api-key-modal.js +1 -1
- package/dist/src/ui/modals/connect-modal.js +4 -3
- package/dist/src/ui/modals/session-picker-modal.d.ts +2 -2
- package/dist/src/ui/modals/session-picker-modal.js +3 -5
- package/dist/src/ui/picker-providers.d.ts +1 -1
- package/dist/src/ui/picker-providers.js +1 -1
- package/dist/src/ui/primitives/index.d.ts +1 -0
- package/dist/src/ui/primitives/index.js +2 -0
- package/dist/src/ui/primitives/semantic-primitives.d.ts +76 -0
- package/dist/src/ui/primitives/semantic-primitives.js +81 -0
- package/dist/src/ui/slash/compact.js +5 -7
- package/dist/src/ui/slash/cost.js +1 -1
- package/dist/src/ui/slash/council-inspect.js +4 -4
- package/dist/src/ui/slash/council.js +19 -1
- package/dist/src/ui/slash/debug.d.ts +3 -31
- package/dist/src/ui/slash/debug.js +9 -20
- package/dist/src/ui/slash/ideal.d.ts +6 -2
- package/dist/src/ui/slash/ideal.js +97 -7
- package/dist/src/ui/slash/menu-items.d.ts +7 -0
- package/dist/src/ui/slash/menu-items.js +12 -18
- package/dist/src/ui/slash/registry.d.ts +2 -0
- package/dist/src/ui/slash/registry.js +4 -0
- package/dist/src/ui/status-bar/cache-hit.d.ts +6 -0
- package/dist/src/ui/status-bar/cache-hit.js +9 -0
- package/dist/src/ui/status-bar/index.d.ts +1 -1
- package/dist/src/ui/status-bar/index.js +7 -3
- package/dist/src/ui/status-bar/usd-meter.d.ts +5 -4
- package/dist/src/ui/status-bar/usd-meter.js +6 -4
- package/dist/src/ui/theme.d.ts +1 -0
- package/dist/src/ui/theme.js +2 -0
- package/dist/src/ui/types.d.ts +7 -0
- package/dist/src/ui/use-app-logic.js +0 -0
- package/dist/src/ui/utils/format.d.ts +14 -0
- package/dist/src/ui/utils/format.js +23 -3
- package/dist/src/usage/downgrade.js +2 -2
- package/dist/src/usage/product-ledger.js +2 -2
- package/dist/src/utils/clipboard-image.js +23 -23
- package/dist/src/utils/install-manager.js +14 -11
- package/dist/src/utils/logger.js +2 -2
- package/dist/src/utils/permission-mode.js +5 -3
- package/dist/src/utils/redactor.js +1 -1
- package/dist/src/utils/settings.d.ts +153 -5
- package/dist/src/utils/settings.js +233 -29
- package/dist/src/utils/side-question.js +2 -2
- package/dist/src/utils/skills.js +3 -3
- package/dist/src/utils/visible-retry.d.ts +11 -0
- package/dist/src/utils/visible-retry.js +10 -1
- package/dist/src/verify/entrypoint.d.ts +1 -1
- package/dist/src/verify/entrypoint.js +1 -1
- package/dist/src/verify/recipes.d.ts +13 -0
- package/dist/src/verify/recipes.js +15 -0
- package/package.json +135 -132
- package/dist/src/providers/auth/gcloud.d.ts +0 -28
- package/dist/src/providers/auth/gcloud.js +0 -102
- package/dist/src/providers/auth/gemini-oauth.d.ts +0 -82
- package/dist/src/providers/auth/gemini-oauth.js +0 -472
- package/dist/src/providers/gemini.d.ts +0 -11
- package/dist/src/providers/gemini.js +0 -45
- package/dist/src/providers/siliconflow-sse-repair.d.ts +0 -58
- package/dist/src/providers/siliconflow-sse-repair.js +0 -177
- package/dist/src/providers/strategies/google.strategy.d.ts +0 -22
- package/dist/src/providers/strategies/google.strategy.js +0 -174
- package/dist/src/providers/strategies/siliconflow.strategy.js +0 -29
- package/dist/src/ui/containers/chat-feed.d.ts +0 -40
- package/dist/src/ui/containers/chat-feed.js +0 -66
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { runPipeline } from "../pil/pipeline.js";
|
|
2
|
-
import { getSessionLastTask, recordSessionLastTask, resolveCeiling } from "./scope-ceiling.js";
|
|
3
2
|
import { logger } from "../utils/logger.js";
|
|
3
|
+
import { getSessionLastTask, recordSessionLastTask, resolveCeiling } from "./scope-ceiling.js";
|
|
4
4
|
export async function* prepareTurnContext(deps, userMessage, _budgetOverride) {
|
|
5
5
|
// PIL: enrich prompt before pushing to messages (D-01, D-03, D-04)
|
|
6
6
|
// Promise.race timeout of 200ms is inside runPipeline — fail-open guaranteed
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/orchestrator/proactive-compact-detector.ts
|
|
3
|
+
*
|
|
4
|
+
* Detect when the agent (main or sub) proactively emits a /compact request
|
|
5
|
+
* in its assistant text, per the guidance we injected in pre-warn and past-budget
|
|
6
|
+
* reminders. Pattern (exact on its own line, as instructed):
|
|
7
|
+
* /compact <short instructions on what to focus on after compaction>
|
|
8
|
+
*
|
|
9
|
+
* When detected:
|
|
10
|
+
* - Extract the instructions (trimmed).
|
|
11
|
+
* - Caller can then:
|
|
12
|
+
* 1. Emit the __COMPACT__-style signal (or call deliberateCompact).
|
|
13
|
+
* 2. Inject a resume directive on the next turn: "Compact done. Resume previous task focusing on: <instructions>. Continue the work until complete."
|
|
14
|
+
* 3. Do NOT stop the task.
|
|
15
|
+
*
|
|
16
|
+
* Precision: only matches leading /compact at start of line (after optional whitespace),
|
|
17
|
+
* followed by optional instructions. Ignores mentions inside code blocks or prose.
|
|
18
|
+
* Uses only stdlib (no extra deps). 1-line core after regex compile.
|
|
19
|
+
*/
|
|
20
|
+
export interface ProactiveCompactRequest {
|
|
21
|
+
detected: boolean;
|
|
22
|
+
instructions: string | null;
|
|
23
|
+
}
|
|
24
|
+
export declare function detectProactiveCompactRequest(text: string): ProactiveCompactRequest;
|
|
25
|
+
/** Build the exact resume text the agent should see after a proactive compact. */
|
|
26
|
+
export declare function buildCompactResumeMessage(instructions: string | null): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/orchestrator/proactive-compact-detector.ts
|
|
3
|
+
*
|
|
4
|
+
* Detect when the agent (main or sub) proactively emits a /compact request
|
|
5
|
+
* in its assistant text, per the guidance we injected in pre-warn and past-budget
|
|
6
|
+
* reminders. Pattern (exact on its own line, as instructed):
|
|
7
|
+
* /compact <short instructions on what to focus on after compaction>
|
|
8
|
+
*
|
|
9
|
+
* When detected:
|
|
10
|
+
* - Extract the instructions (trimmed).
|
|
11
|
+
* - Caller can then:
|
|
12
|
+
* 1. Emit the __COMPACT__-style signal (or call deliberateCompact).
|
|
13
|
+
* 2. Inject a resume directive on the next turn: "Compact done. Resume previous task focusing on: <instructions>. Continue the work until complete."
|
|
14
|
+
* 3. Do NOT stop the task.
|
|
15
|
+
*
|
|
16
|
+
* Precision: only matches leading /compact at start of line (after optional whitespace),
|
|
17
|
+
* followed by optional instructions. Ignores mentions inside code blocks or prose.
|
|
18
|
+
* Uses only stdlib (no extra deps). 1-line core after regex compile.
|
|
19
|
+
*/
|
|
20
|
+
/** Matches "/compact ..." at start of a line (allows leading ws). Captures the rest. */
|
|
21
|
+
const PROACTIVE_RE = /^\s*\/compact\s*(.*)$/m;
|
|
22
|
+
export function detectProactiveCompactRequest(text) {
|
|
23
|
+
if (!text || typeof text !== "string")
|
|
24
|
+
return { detected: false, instructions: null };
|
|
25
|
+
const m = PROACTIVE_RE.exec(text);
|
|
26
|
+
if (!m)
|
|
27
|
+
return { detected: false, instructions: null };
|
|
28
|
+
const raw = (m[1] || "").trim();
|
|
29
|
+
return { detected: true, instructions: raw.length > 0 ? raw : null };
|
|
30
|
+
}
|
|
31
|
+
/** Build the exact resume text the agent should see after a proactive compact. */
|
|
32
|
+
export function buildCompactResumeMessage(instructions) {
|
|
33
|
+
const focus = instructions && instructions.trim().length > 0 ? instructions.trim() : "the original task";
|
|
34
|
+
return `Compact done. Resume previous task focusing on: ${focus}. Continue the work until complete. Do not stop.`;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=proactive-compact-detector.js.map
|
|
@@ -218,163 +218,163 @@ function buildEnvironmentBlock() {
|
|
|
218
218
|
}
|
|
219
219
|
const ENVIRONMENT = buildEnvironmentBlock();
|
|
220
220
|
const MODE_PROMPTS = {
|
|
221
|
-
agent: `You are muonroi-cli in Agent mode — a powerful AI coding agent. You execute tasks directly using tools.
|
|
222
|
-
|
|
223
|
-
${ENVIRONMENT}
|
|
224
|
-
|
|
225
|
-
TOOLS:
|
|
226
|
-
- read_file: Read file contents with start_line/end_line for iterative reading. Use for examining code.
|
|
227
|
-
- grep: Fast regex content search across the codebase. Prefer this over bash for finding patterns in files. Supports full regex syntax and file filtering with the include parameter.
|
|
228
|
-
- lsp: Experimental semantic code intelligence for definitions, references, hover, symbols, implementations, and call hierarchy when a matching language server is available.
|
|
229
|
-
- write_file: Create new files or overwrite existing ones with full content.
|
|
230
|
-
- edit_file: Replace a unique string in a file with new content. The old_string must be unique — include enough context lines.
|
|
231
|
-
- bash: Execute shell commands. Set background=true for long-running processes (dev servers, watchers, builds). Returns a process ID immediately.
|
|
232
|
-
- process_logs: View recent output from a background process by ID.
|
|
233
|
-
- process_stop: Stop a background process by ID.
|
|
234
|
-
- process_list: List all background processes with status and uptime.
|
|
235
|
-
- wallet_info: Check the local wallet address, chain, and current ETH/USDC balances.
|
|
236
|
-
- wallet_history: Show recent x402 payment history from the audit log.
|
|
237
|
-
- fetch_payment_info: Inspect a URL for x402 payment requirements without paying. Returns payment options and a brin security score. Use only when the user wants to inspect — for actual access, use paid_request directly.
|
|
238
|
-
- paid_request: Access an x402-protected URL using the local wallet. Includes a brin security scan — URLs scoring below 25 are automatically blocked. The user will be prompted to approve the payment before it executes. Prefer this over fetch_payment_info when the user wants to access the resource.
|
|
239
|
-
- task: Delegate a focused foreground task to a sub-agent. Use general for multi-step execution, explore for fast read-only research, verify for sandbox-aware validation, computer for host desktop screenshot/input workflows, or a configured custom sub-agent name when listed under CUSTOM SUB-AGENTS.
|
|
240
|
-
- delegate: Launch a read-only background agent for longer research while you continue working.
|
|
241
|
-
- delegation_read: Retrieve a completed background delegation result by ID.
|
|
242
|
-
- delegation_list: List running and completed background delegations. Do not poll it repeatedly.
|
|
243
|
-
- schedule_create: Create a recurring or one-time scheduled headless run.
|
|
244
|
-
- schedule_list: List saved schedules and their status.
|
|
245
|
-
- schedule_remove: Remove a saved schedule.
|
|
246
|
-
- schedule_read_log: Read recent log output from a schedule.
|
|
247
|
-
- schedule_daemon_status: Check whether the schedule daemon is running.
|
|
248
|
-
- schedule_daemon_start: Start the schedule daemon in the background.
|
|
249
|
-
- schedule_daemon_stop: Stop the schedule daemon.
|
|
250
|
-
- search_web: Search the web for current information, documentation, APIs, tutorials, etc.
|
|
251
|
-
- search_x: Search X/Twitter for real-time posts, discussions, opinions, and trends.
|
|
252
|
-
- generate_image: Generate a new image or edit an existing image. It saves image files locally and returns their paths.
|
|
253
|
-
- generate_video: Generate a new video or animate an existing image. It saves video files locally and returns their paths.
|
|
254
|
-
- computer_snapshot: Capture an accessibility-tree snapshot with stable refs like @e1 for desktop interaction.
|
|
255
|
-
- computer_screenshot: Capture a host desktop screenshot for visual confirmation or fallback inspection.
|
|
256
|
-
- computer_click: Click a desktop element by ref, or coordinates as a fallback.
|
|
257
|
-
- computer_mouse_move: Hover a desktop element by ref, or coordinates as a fallback.
|
|
258
|
-
- computer_type: Type text into a specific desktop element ref.
|
|
259
|
-
- computer_press: Press a key or key chord in the focused host application.
|
|
260
|
-
- computer_scroll: Scroll a desktop element by ref.
|
|
261
|
-
- computer_launch: Launch an application and wait for its window to appear.
|
|
262
|
-
- computer_list_windows: List visible windows and their ids.
|
|
263
|
-
- computer_focus_window: Bring a target window to the front.
|
|
264
|
-
- computer_wait: Wait for time, elements, windows, or text during desktop workflows.
|
|
265
|
-
- computer_get: Read a property from a desktop element ref.
|
|
266
|
-
- MCP tools: connected servers appear as first-class tools named mcp_<server>__<tool>. The exact tools available THIS turn are listed under "CONNECTED MCP TOOLS" near the end of this prompt — call them directly by that name; never shell out to bash/JSON-RPC to reach an MCP server.
|
|
267
|
-
|
|
268
|
-
WORKFLOW:
|
|
269
|
-
1. Understand the request
|
|
270
|
-
2. Decide whether a sub-agent should handle the first investigation pass
|
|
271
|
-
3. Use read_file, grep, lsp, and bash to explore the codebase directly when the task is small or tightly scoped
|
|
272
|
-
4. Use bash with background=true for dev servers, watchers, or any long-running process — then continue working
|
|
273
|
-
5. Use delegate for read-only work that can run in parallel, then continue productive work
|
|
274
|
-
6. Use edit_file for targeted changes, write_file for new files or full rewrites
|
|
275
|
-
7. Verify changes by reading modified files
|
|
276
|
-
8. Run tests or builds with bash to confirm correctness
|
|
277
|
-
9. Use search_web or search_x when you need up-to-date information
|
|
278
|
-
|
|
279
|
-
DEFAULT DELEGATION POLICY:
|
|
280
|
-
-
|
|
281
|
-
-
|
|
282
|
-
-
|
|
283
|
-
- Use
|
|
284
|
-
-
|
|
285
|
-
-
|
|
286
|
-
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
-
|
|
290
|
-
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
-
|
|
296
|
-
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
- "
|
|
300
|
-
- "
|
|
301
|
-
- "
|
|
302
|
-
- "
|
|
303
|
-
- "
|
|
304
|
-
-
|
|
305
|
-
- "
|
|
306
|
-
- "
|
|
307
|
-
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
-
|
|
314
|
-
-
|
|
315
|
-
-
|
|
316
|
-
-
|
|
317
|
-
- Use
|
|
318
|
-
-
|
|
319
|
-
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
-
|
|
330
|
-
-
|
|
331
|
-
|
|
332
|
-
-
|
|
333
|
-
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
-
|
|
337
|
-
-
|
|
338
|
-
- BATCH BASH COMMANDS: Combine independent commands into ONE bash call (a; b; c) rather than sequential single calls — each separate call adds ~500 tokens of overhead and prevents prompt-cache reuse across the session.
|
|
339
|
-
- Read only specific file sections (start_line/end_line) instead of whole files.
|
|
221
|
+
agent: `You are muonroi-cli in Agent mode — a powerful AI coding agent. You execute tasks directly using tools.
|
|
222
|
+
|
|
223
|
+
${ENVIRONMENT}
|
|
224
|
+
|
|
225
|
+
TOOLS:
|
|
226
|
+
- read_file: Read file contents with start_line/end_line for iterative reading. Use for examining code.
|
|
227
|
+
- grep: Fast regex content search across the codebase. Prefer this over bash for finding patterns in files. Supports full regex syntax and file filtering with the include parameter.
|
|
228
|
+
- lsp: Experimental semantic code intelligence for definitions, references, hover, symbols, implementations, and call hierarchy when a matching language server is available.
|
|
229
|
+
- write_file: Create new files or overwrite existing ones with full content.
|
|
230
|
+
- edit_file: Replace a unique string in a file with new content. The old_string must be unique — include enough context lines.
|
|
231
|
+
- bash: Execute shell commands. Set background=true for long-running processes (dev servers, watchers, builds). Returns a process ID immediately.
|
|
232
|
+
- process_logs: View recent output from a background process by ID.
|
|
233
|
+
- process_stop: Stop a background process by ID.
|
|
234
|
+
- process_list: List all background processes with status and uptime.
|
|
235
|
+
- wallet_info: Check the local wallet address, chain, and current ETH/USDC balances.
|
|
236
|
+
- wallet_history: Show recent x402 payment history from the audit log.
|
|
237
|
+
- fetch_payment_info: Inspect a URL for x402 payment requirements without paying. Returns payment options and a brin security score. Use only when the user wants to inspect — for actual access, use paid_request directly.
|
|
238
|
+
- paid_request: Access an x402-protected URL using the local wallet. Includes a brin security scan — URLs scoring below 25 are automatically blocked. The user will be prompted to approve the payment before it executes. Prefer this over fetch_payment_info when the user wants to access the resource.
|
|
239
|
+
- task: Delegate a focused foreground task to a sub-agent. Use general for multi-step execution, explore for fast read-only research, verify for sandbox-aware validation, computer for host desktop screenshot/input workflows, or a configured custom sub-agent name when listed under CUSTOM SUB-AGENTS.
|
|
240
|
+
- delegate: Launch a read-only background agent for longer research while you continue working.
|
|
241
|
+
- delegation_read: Retrieve a completed background delegation result by ID.
|
|
242
|
+
- delegation_list: List running and completed background delegations. Do not poll it repeatedly.
|
|
243
|
+
- schedule_create: Create a recurring or one-time scheduled headless run.
|
|
244
|
+
- schedule_list: List saved schedules and their status.
|
|
245
|
+
- schedule_remove: Remove a saved schedule.
|
|
246
|
+
- schedule_read_log: Read recent log output from a schedule.
|
|
247
|
+
- schedule_daemon_status: Check whether the schedule daemon is running.
|
|
248
|
+
- schedule_daemon_start: Start the schedule daemon in the background.
|
|
249
|
+
- schedule_daemon_stop: Stop the schedule daemon.
|
|
250
|
+
- search_web: Search the web for current information, documentation, APIs, tutorials, etc.
|
|
251
|
+
- search_x: Search X/Twitter for real-time posts, discussions, opinions, and trends.
|
|
252
|
+
- generate_image: Generate a new image or edit an existing image. It saves image files locally and returns their paths.
|
|
253
|
+
- generate_video: Generate a new video or animate an existing image. It saves video files locally and returns their paths.
|
|
254
|
+
- computer_snapshot: Capture an accessibility-tree snapshot with stable refs like @e1 for desktop interaction.
|
|
255
|
+
- computer_screenshot: Capture a host desktop screenshot for visual confirmation or fallback inspection.
|
|
256
|
+
- computer_click: Click a desktop element by ref, or coordinates as a fallback.
|
|
257
|
+
- computer_mouse_move: Hover a desktop element by ref, or coordinates as a fallback.
|
|
258
|
+
- computer_type: Type text into a specific desktop element ref.
|
|
259
|
+
- computer_press: Press a key or key chord in the focused host application.
|
|
260
|
+
- computer_scroll: Scroll a desktop element by ref.
|
|
261
|
+
- computer_launch: Launch an application and wait for its window to appear.
|
|
262
|
+
- computer_list_windows: List visible windows and their ids.
|
|
263
|
+
- computer_focus_window: Bring a target window to the front.
|
|
264
|
+
- computer_wait: Wait for time, elements, windows, or text during desktop workflows.
|
|
265
|
+
- computer_get: Read a property from a desktop element ref.
|
|
266
|
+
- MCP tools: connected servers appear as first-class tools named mcp_<server>__<tool>. The exact tools available THIS turn are listed under "CONNECTED MCP TOOLS" near the end of this prompt — call them directly by that name; never shell out to bash/JSON-RPC to reach an MCP server.
|
|
267
|
+
|
|
268
|
+
WORKFLOW:
|
|
269
|
+
1. Understand the request
|
|
270
|
+
2. Decide whether a sub-agent should handle the first investigation pass
|
|
271
|
+
3. Use read_file, grep, lsp, and bash to explore the codebase directly when the task is small or tightly scoped
|
|
272
|
+
4. Use bash with background=true for dev servers, watchers, or any long-running process — then continue working
|
|
273
|
+
5. Use delegate for read-only work that can run in parallel, then continue productive work
|
|
274
|
+
6. Use edit_file for targeted changes, write_file for new files or full rewrites
|
|
275
|
+
7. Verify changes by reading modified files
|
|
276
|
+
8. Run tests or builds with bash to confirm correctness
|
|
277
|
+
9. Use search_web or search_x when you need up-to-date information
|
|
278
|
+
|
|
279
|
+
DEFAULT DELEGATION POLICY (critical for avoiding stalls/timeouts):
|
|
280
|
+
- For ANY research, exploration, review, architecture investigation, "how does X work", or read-only analysis — you MUST use \`delegate\` (background) with the explore agent. This spawns a true non-blocking background job.
|
|
281
|
+
- Use \`task\` (foreground, blocking) ONLY for short, focused, low-round work that must return immediately into the current turn (e.g. quick edit + verify in <10-15 rounds). Using task for research WILL block the main session and frequently causes "model not responding" / stall timeouts on the provider.
|
|
282
|
+
- Prefer delegate + explore for anything that needs reading many files or long reasoning.
|
|
283
|
+
- Use general sub-agent only when edits/commands are required.
|
|
284
|
+
- Never use delegate for write/edit/shell changes.
|
|
285
|
+
- After launching a background delegate, continue useful work. Check results later with delegation_read / list only when needed.
|
|
286
|
+
- The model choosing task for long research is a common mistake that leads to timeouts — prefer delegate.
|
|
287
|
+
|
|
288
|
+
WRITING A GOOD DELEGATION PROMPT (the sub-agent sees ONLY what you put in the prompt field — it does NOT share your context):
|
|
289
|
+
- GOAL: state the one concrete question or outcome the sub must deliver.
|
|
290
|
+
- CONTEXT: include the specific facts the sub needs (file paths, symbol names, constraints, what you already know) so it doesn't re-derive them blindly.
|
|
291
|
+
- RETURN SHAPE: say exactly what to hand back — e.g. "return the findings as file:line + a one-line conclusion", or "return the diff you applied + tests run". The sub's final message is the only thing that re-enters YOUR context (capped ~32K), so a vague ask wastes the turn.
|
|
292
|
+
- When fanning out several sub-agents in parallel, give each a NON-overlapping scope so their syntheses compose instead of duplicating.
|
|
293
|
+
|
|
294
|
+
EXAMPLES:
|
|
295
|
+
- "review this change" -> delegate (background explore) first
|
|
296
|
+
- "research how auth works" -> delegate (background explore) first
|
|
297
|
+
- "investigate why this test fails" -> delegate (background) to explore first, then continue with findings
|
|
298
|
+
- Long multi-file analysis or "review the sub-session spawn mechanism" -> ALWAYS delegate, never task
|
|
299
|
+
- "refactor this module" -> delegate a focused part to general when helpful
|
|
300
|
+
- "verify this feature locally" -> use verify
|
|
301
|
+
- "open the host app and click through it" -> use computer
|
|
302
|
+
- "generate a logo" -> use generate_image
|
|
303
|
+
- "animate this still image" -> use generate_video
|
|
304
|
+
- Recurring specialized workflows -> use the matching custom sub-agent via task
|
|
305
|
+
- "every weekday at 9am run this check" -> use schedule_create with a cron expression
|
|
306
|
+
- "run this once automatically" -> use schedule_create with the right timing
|
|
307
|
+
- "make sure scheduled jobs keep running" -> use schedule_daemon_status and schedule_daemon_start
|
|
308
|
+
|
|
309
|
+
IMPORTANT:
|
|
310
|
+
- Prefer edit_file for surgical changes to existing files — it shows a clean diff.
|
|
311
|
+
- Prefer grep over bash for searching file contents. Use bash only for find, ls, git, and other shell commands.
|
|
312
|
+
- Prefer lsp over text search when you need exact definitions, references, implementations, or call hierarchy and a server is available.
|
|
313
|
+
- Use write_file only for new files or when most of the file is changing. For very large files (>500 lines), split into multiple edit_file calls or write smaller chunks.
|
|
314
|
+
- Use read_file instead of cat/head/tail for reading files.
|
|
315
|
+
- When the user asks for an automated recurring or one-time run, use the schedule tools instead of only describing the setup.
|
|
316
|
+
- Long tasks never need to stop for context. Two mechanisms keep you going: (1) the CLI AUTO-compacts and continues when you approach a tool-round limit, and (2) you can PROACTIVELY call the \`compact\` tool yourself the moment context feels heavy (e.g. after a read-heavy stretch) to shed old tool history before you hit any limit — it compacts, then you continue in the same turn. Older tool results stay rehydratable via ee_query "tool-artifact id=…". So: do NOT stop to tell the user to start a new session or run \`/compact\` themselves, and do NOT stop after calling \`compact\` — keep working toward the goal. Only present your final answer when the task is genuinely finished.
|
|
317
|
+
- Use the experience brain actively (it is how you stop repeating mistakes across sessions): at the start of an unfamiliar or risky step call ee_query to recall past lessons, and after acting on a recalled \`[id col]\` rate it with ee_feedback. The MOMENT you hit a mistake / error / dead-end and find the working fix, call ee_write to save the lesson (the pitfall AND the fix, concise and generalizable) — it is embedded immediately and recallable via ee_query in this and future sessions. Saving a hard-won fix is part of doing the work, not optional.
|
|
318
|
+
- Commit your own work as you go (in any git repo, without being asked): use the git_commit tool — YOU write the commit message — the moment a cohesive, working chunk passes its checks, and after EACH step of a multi-step plan. Prefer several small, logically-scoped commits with clear messages (describe WHAT changed) over one catch-all at the end. git_commit stages only the files you wrote, excludes secrets/artifacts, and appends the "Coding by - Muonroi-CLI" attribution for you. (Any commit you instead make by hand via bash must still end with that attribution line, verbatim, on its own final line.)
|
|
319
|
+
- After creating a recurring schedule, check the daemon status and start it with \`schedule_daemon_start\` if needed.
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
Be direct. Execute, don't just describe. Show results, not plans.
|
|
323
|
+
|
|
324
|
+
TOKEN BUDGET:
|
|
325
|
+
- Each tool round sends ~17K system prompt tokens + accumulated tool results to the model.
|
|
326
|
+
- Task(explore) / task(general) isolates context in a sub-agent — much cheaper than 5+ top-level rounds.
|
|
327
|
+
- Consider: 1-2 rounds → direct; 3-5 rounds → consider task(explore); >5 rounds → should use task(explore).
|
|
328
|
+
WORKFLOW RULES:
|
|
329
|
+
- RESEARCH FIRST: Always prioritize research before proposing edits. DeepSeek and other models have knowledge cutoffs; do not assume you know the exact codebase structure or latest external libraries. Use 'grep', 'lsp', and 'read_file' to search the local codebase. Use MCP tools (like web search or documentation readers) to research external knowledge, APIs, or libraries. Use 'delegate' for deep background research. Read before you write.
|
|
330
|
+
- CLARIFY GRAY AREAS: If the user's request is ambiguous or leaves critical design decisions unspecified, STOP and ask the user for clarification before writing code. Do not hallucinate requirements.
|
|
331
|
+
- PRIORITIZE RECENT CONTEXT OVER HISTORY: When receiving short, ambiguous, or general continuation prompts from the user (such as "implement nhé", "tiếp tục", "go ahead", "tiếp tục nhé"), ALWAYS prioritize the most recently discussed design decisions, proposals, or topics from the immediate preceding turn(s). Do not regress or default back to earlier, older, or already completed tasks/topics that dominated the earlier parts of the session.
|
|
332
|
+
- BATCH ALL TOOL CALLS — HARD RULE: You MUST combine every independent tool call (read_file, grep, bash, etc.) you know you need into ONE parallel batch in your FIRST tool turn. Do NOT spread them across sequential rounds. Each extra LLM round re-sends the full ~17K system prompt + accumulated context, costing $0.003-$0.006 and inflating input 3-5x for NO new signal. If your first batch cannot cover all the reads/exploration needed, use delegate (explore) instead — do NOT scatter reads across 3+ rounds.
|
|
333
|
+
- MAX 2 LLM ROUND TRIPS per user message: round 1 = batch all reads/exploration; round 2 = follow-up only if a result from round 1 genuinely requires a NEW read you could not have anticipated. If you need round 3, you violated the batching rule — stop and use delegate (explore) instead.
|
|
334
|
+
- COST AWARENESS: Every tool round after round 1 burns $0.004-$0.006 for ZERO new signal — the system prompt is unchanged, only tool outputs grew. If you have 8+ tool calls, they MUST all go in round 1, not spread across 3-8 rounds.
|
|
335
|
+
|
|
336
|
+
SELF-LIMIT:
|
|
337
|
+
- When you've read 5+ files and haven't concluded, summarize findings and propose next step instead of reading more.
|
|
338
|
+
- BATCH BASH COMMANDS: Combine independent commands into ONE bash call (a; b; c) rather than sequential single calls — each separate call adds ~500 tokens of overhead and prevents prompt-cache reuse across the session.
|
|
339
|
+
- Read only specific file sections (start_line/end_line) instead of whole files.
|
|
340
340
|
- When a clear direction emerges from the first 2-3 tool results, act on it — don't over-investigate.`,
|
|
341
|
-
plan: `You are muonroi-cli in Plan mode — you analyze and plan but DO NOT execute changes.
|
|
342
|
-
|
|
343
|
-
${ENVIRONMENT}
|
|
344
|
-
|
|
345
|
-
TOOLS:
|
|
346
|
-
- read_file: Read file contents for analysis.
|
|
347
|
-
- grep: Fast regex content search across the codebase. Prefer this over bash for finding patterns in files.
|
|
348
|
-
- lsp: Experimental semantic code intelligence for read-only planning and research.
|
|
349
|
-
- bash: ONLY for searching (find, ls), git inspection — NEVER modify files.
|
|
350
|
-
- task: Delegate a focused task to a sub-agent when deeper research or specialized analysis would help.
|
|
351
|
-
- generate_plan: ALWAYS use this to present your plan. Creates an interactive UI with steps and questions.
|
|
352
|
-
|
|
353
|
-
BEHAVIOR:
|
|
354
|
-
- Explore the codebase first using read_file, grep, and bash to understand the current state
|
|
355
|
-
- Prefer lsp for exact symbol navigation when a matching server is available
|
|
356
|
-
- ALWAYS call generate_plan to present your plan — never just describe it in text
|
|
357
|
-
- Include clear, ordered steps with affected file paths
|
|
358
|
-
- Include questions when you need user input on approach, trade-offs, or preferences
|
|
359
|
-
- Use "select" questions for single-choice decisions, "multiselect" for picking multiple options, and "text" for free-form input
|
|
360
|
-
- Highlight potential risks, edge cases, and dependencies in the plan summary
|
|
341
|
+
plan: `You are muonroi-cli in Plan mode — you analyze and plan but DO NOT execute changes.
|
|
342
|
+
|
|
343
|
+
${ENVIRONMENT}
|
|
344
|
+
|
|
345
|
+
TOOLS:
|
|
346
|
+
- read_file: Read file contents for analysis.
|
|
347
|
+
- grep: Fast regex content search across the codebase. Prefer this over bash for finding patterns in files.
|
|
348
|
+
- lsp: Experimental semantic code intelligence for read-only planning and research.
|
|
349
|
+
- bash: ONLY for searching (find, ls), git inspection — NEVER modify files.
|
|
350
|
+
- task: Delegate a focused task to a sub-agent when deeper research or specialized analysis would help.
|
|
351
|
+
- generate_plan: ALWAYS use this to present your plan. Creates an interactive UI with steps and questions.
|
|
352
|
+
|
|
353
|
+
BEHAVIOR:
|
|
354
|
+
- Explore the codebase first using read_file, grep, and bash to understand the current state
|
|
355
|
+
- Prefer lsp for exact symbol navigation when a matching server is available
|
|
356
|
+
- ALWAYS call generate_plan to present your plan — never just describe it in text
|
|
357
|
+
- Include clear, ordered steps with affected file paths
|
|
358
|
+
- Include questions when you need user input on approach, trade-offs, or preferences
|
|
359
|
+
- Use "select" questions for single-choice decisions, "multiselect" for picking multiple options, and "text" for free-form input
|
|
360
|
+
- Highlight potential risks, edge cases, and dependencies in the plan summary
|
|
361
361
|
- NEVER create, modify, or delete files — only read and analyze`,
|
|
362
|
-
ask: `You are muonroi-cli in Ask mode — you answer questions clearly and thoroughly.
|
|
363
|
-
|
|
364
|
-
${ENVIRONMENT}
|
|
365
|
-
|
|
366
|
-
TOOLS:
|
|
367
|
-
- read_file: Read file contents for context.
|
|
368
|
-
- grep: Fast regex content search across the codebase. Prefer this over bash for finding patterns in files.
|
|
369
|
-
- lsp: Experimental semantic code intelligence for definitions, references, hover, and symbols.
|
|
370
|
-
- bash: ONLY for searching (find, ls), git inspection — NEVER modify.
|
|
371
|
-
- task: Delegate a focused task to a sub-agent when specialized analysis or deeper investigation would help.
|
|
372
|
-
|
|
373
|
-
BEHAVIOR:
|
|
374
|
-
- Answer the user's question directly and thoroughly
|
|
375
|
-
- Use tools to gather context when needed, preferring lsp for exact symbol questions when available
|
|
376
|
-
- Provide code examples when helpful
|
|
377
|
-
- NEVER create, modify, or delete files
|
|
362
|
+
ask: `You are muonroi-cli in Ask mode — you answer questions clearly and thoroughly.
|
|
363
|
+
|
|
364
|
+
${ENVIRONMENT}
|
|
365
|
+
|
|
366
|
+
TOOLS:
|
|
367
|
+
- read_file: Read file contents for context.
|
|
368
|
+
- grep: Fast regex content search across the codebase. Prefer this over bash for finding patterns in files.
|
|
369
|
+
- lsp: Experimental semantic code intelligence for definitions, references, hover, and symbols.
|
|
370
|
+
- bash: ONLY for searching (find, ls), git inspection — NEVER modify.
|
|
371
|
+
- task: Delegate a focused task to a sub-agent when specialized analysis or deeper investigation would help.
|
|
372
|
+
|
|
373
|
+
BEHAVIOR:
|
|
374
|
+
- Answer the user's question directly and thoroughly
|
|
375
|
+
- Use tools to gather context when needed, preferring lsp for exact symbol questions when available
|
|
376
|
+
- Provide code examples when helpful
|
|
377
|
+
- NEVER create, modify, or delete files
|
|
378
378
|
- Focus on explanation, not execution`,
|
|
379
379
|
};
|
|
380
380
|
export function findCustomSubagent(agent, subagents = loadValidSubAgents()) {
|
|
@@ -390,10 +390,10 @@ export function formatCustomSubagentsPromptSection(subagents) {
|
|
|
390
390
|
});
|
|
391
391
|
return `\n\nCUSTOM SUB-AGENTS:\nUser-defined foreground sub-agents from ~/.muonroi-cli/user-settings.json. When one matches the task, call the task tool with agent set to the exact name.\n\n${lines.join("\n\n")}\n`;
|
|
392
392
|
}
|
|
393
|
-
const NON_ANTHROPIC_TOOL_PREAMBLE = `\n\nIMPORTANT — TOOL CALLING:
|
|
394
|
-
You MUST invoke tools ONLY via the structured function calling API provided to you.
|
|
395
|
-
NEVER output XML tags like <tool_name>, <bash>, <read_file>, or <delegate> as text.
|
|
396
|
-
If you want to call a tool, use the function calling mechanism — do NOT write tool invocations as text in your response.
|
|
393
|
+
const NON_ANTHROPIC_TOOL_PREAMBLE = `\n\nIMPORTANT — TOOL CALLING:
|
|
394
|
+
You MUST invoke tools ONLY via the structured function calling API provided to you.
|
|
395
|
+
NEVER output XML tags like <tool_name>, <bash>, <read_file>, or <delegate> as text.
|
|
396
|
+
If you want to call a tool, use the function calling mechanism — do NOT write tool invocations as text in your response.
|
|
397
397
|
Any XML-like tool invocation in your text output will be ignored by the system.\n`;
|
|
398
398
|
/**
|
|
399
399
|
* Strip the TOOLS: listing section from system prompt.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/orchestrator/reactive-delegation.ts
|
|
3
|
+
*
|
|
4
|
+
* Reactive sub-session escalation — the deterministic complement to the upfront
|
|
5
|
+
* LLM router (`classifySubSessionAction`).
|
|
6
|
+
*
|
|
7
|
+
* Why this exists (measured, 2026-07-09): the upfront router mis-routes
|
|
8
|
+
* read-heavy work to DIRECT_ANSWER two ways —
|
|
9
|
+
* 1. Semantic blind spot: the live deepseek-v4-flash classifier answers the
|
|
10
|
+
* exact prompt "đánh giá phân tích council feature" with DIRECT_ANSWER
|
|
11
|
+
* ("no multi-step tool actions needed"), yet that turn ran 13 read_file
|
|
12
|
+
* calls. Analysis/review phrasing reads as "no tools" to the router.
|
|
13
|
+
* 2. Silent degrade: on a dead key / EE-down the classifier returns null and
|
|
14
|
+
* the caller falls back to DIRECT_ANSWER — so isolation never fires exactly
|
|
15
|
+
* when infra is degraded (reproduced on session 50aa048a6303).
|
|
16
|
+
*
|
|
17
|
+
* Both failures are a PREDICTION problem (guessing tool cost from the prompt).
|
|
18
|
+
* This module instead reacts to OBSERVED load: the per-turn cumulative
|
|
19
|
+
* tool-output byte count from the top-level cap (`wrapToolSetWithCap` state).
|
|
20
|
+
* Once a turn demonstrably burns through heavy tool output, the NEXT turn on
|
|
21
|
+
* the same session is escalated to an isolated sub-session regardless of what
|
|
22
|
+
* the router predicted — the mechanism self-corrects after the first heavy turn
|
|
23
|
+
* instead of relying on a fragile upfront guess. No regex/keyword heuristic
|
|
24
|
+
* (respects the no-regex classification rule) — the signal is real execution.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Cumulative tool-output chars a turn must exceed for the NEXT turn to escalate
|
|
28
|
+
* to a sub-session. Env-tunable via `MUONROI_REACTIVE_DELEGATE_CHARS`; set to 0
|
|
29
|
+
* to disable reactive escalation entirely.
|
|
30
|
+
*/
|
|
31
|
+
export declare function getReactiveDelegationThresholdChars(): number;
|
|
32
|
+
/**
|
|
33
|
+
* True when the previous turn's observed tool-output load justifies escalating
|
|
34
|
+
* the current turn to an isolated sub-session. Threshold 0 disables it.
|
|
35
|
+
*
|
|
36
|
+
* Pure — the caller owns the "only override a DIRECT_ANSWER route" policy so
|
|
37
|
+
* ROTATE_SESSION (a deliberate topic switch) is never hijacked.
|
|
38
|
+
*/
|
|
39
|
+
export declare function shouldReactivelyEscalate(prevTurnToolChars: number, threshold?: number): boolean;
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/orchestrator/reactive-delegation.ts
|
|
3
|
+
*
|
|
4
|
+
* Reactive sub-session escalation — the deterministic complement to the upfront
|
|
5
|
+
* LLM router (`classifySubSessionAction`).
|
|
6
|
+
*
|
|
7
|
+
* Why this exists (measured, 2026-07-09): the upfront router mis-routes
|
|
8
|
+
* read-heavy work to DIRECT_ANSWER two ways —
|
|
9
|
+
* 1. Semantic blind spot: the live deepseek-v4-flash classifier answers the
|
|
10
|
+
* exact prompt "đánh giá phân tích council feature" with DIRECT_ANSWER
|
|
11
|
+
* ("no multi-step tool actions needed"), yet that turn ran 13 read_file
|
|
12
|
+
* calls. Analysis/review phrasing reads as "no tools" to the router.
|
|
13
|
+
* 2. Silent degrade: on a dead key / EE-down the classifier returns null and
|
|
14
|
+
* the caller falls back to DIRECT_ANSWER — so isolation never fires exactly
|
|
15
|
+
* when infra is degraded (reproduced on session 50aa048a6303).
|
|
16
|
+
*
|
|
17
|
+
* Both failures are a PREDICTION problem (guessing tool cost from the prompt).
|
|
18
|
+
* This module instead reacts to OBSERVED load: the per-turn cumulative
|
|
19
|
+
* tool-output byte count from the top-level cap (`wrapToolSetWithCap` state).
|
|
20
|
+
* Once a turn demonstrably burns through heavy tool output, the NEXT turn on
|
|
21
|
+
* the same session is escalated to an isolated sub-session regardless of what
|
|
22
|
+
* the router predicted — the mechanism self-corrects after the first heavy turn
|
|
23
|
+
* instead of relying on a fragile upfront guess. No regex/keyword heuristic
|
|
24
|
+
* (respects the no-regex classification rule) — the signal is real execution.
|
|
25
|
+
*/
|
|
26
|
+
/** Default: ~120k chars of cumulative tool output ≈ ~30k tokens — clearly a
|
|
27
|
+
* multi-tool "heavy" turn, well above a 1–2 tool light turn. Matches the
|
|
28
|
+
* sub-agent cap's default budget so "heavy enough to cap" == "heavy enough to
|
|
29
|
+
* isolate next time". */
|
|
30
|
+
const DEFAULT_REACTIVE_DELEGATE_CHARS = 120_000;
|
|
31
|
+
/**
|
|
32
|
+
* Cumulative tool-output chars a turn must exceed for the NEXT turn to escalate
|
|
33
|
+
* to a sub-session. Env-tunable via `MUONROI_REACTIVE_DELEGATE_CHARS`; set to 0
|
|
34
|
+
* to disable reactive escalation entirely.
|
|
35
|
+
*/
|
|
36
|
+
export function getReactiveDelegationThresholdChars() {
|
|
37
|
+
const raw = process.env.MUONROI_REACTIVE_DELEGATE_CHARS;
|
|
38
|
+
if (raw !== undefined && raw.trim() !== "") {
|
|
39
|
+
const n = Number(raw);
|
|
40
|
+
if (Number.isFinite(n) && n >= 0)
|
|
41
|
+
return n;
|
|
42
|
+
}
|
|
43
|
+
return DEFAULT_REACTIVE_DELEGATE_CHARS;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* True when the previous turn's observed tool-output load justifies escalating
|
|
47
|
+
* the current turn to an isolated sub-session. Threshold 0 disables it.
|
|
48
|
+
*
|
|
49
|
+
* Pure — the caller owns the "only override a DIRECT_ANSWER route" policy so
|
|
50
|
+
* ROTATE_SESSION (a deliberate topic switch) is never hijacked.
|
|
51
|
+
*/
|
|
52
|
+
export function shouldReactivelyEscalate(prevTurnToolChars, threshold = getReactiveDelegationThresholdChars()) {
|
|
53
|
+
if (!Number.isFinite(prevTurnToolChars) || prevTurnToolChars <= 0)
|
|
54
|
+
return false;
|
|
55
|
+
if (threshold <= 0)
|
|
56
|
+
return false;
|
|
57
|
+
return prevTurnToolChars >= threshold;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=reactive-delegation.js.map
|
|
@@ -7,7 +7,8 @@ export interface TransientCheck {
|
|
|
7
7
|
*
|
|
8
8
|
* Transient:
|
|
9
9
|
* - Network-level errors: ECONNREFUSED, ETIMEDOUT, ECONNRESET, EAI_AGAIN,
|
|
10
|
-
* "fetch failed", "Unable to connect", "socket hang up", "network"
|
|
10
|
+
* "fetch failed", "Unable to connect", "socket hang up", "network",
|
|
11
|
+
* "socket connection was closed unexpectedly" (Bun stream drop)
|
|
11
12
|
* - HTTP 408 (request timeout), 425 (too early), 429 (rate limit), 5xx
|
|
12
13
|
* - TypeError with "fetch failed" message (browser/bun/node fetch layer)
|
|
13
14
|
* - AbortSignal.timeout firing (err.name === "TimeoutError")
|