muonroi-cli 1.8.4 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +17 -5
- 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-filter.js +11 -0
- package/dist/packages/agent-harness-core/src/event-redact.js +7 -0
- package/dist/packages/agent-harness-core/src/event-tee.d.ts +64 -0
- package/dist/packages/agent-harness-core/src/event-tee.js +104 -0
- package/dist/packages/agent-harness-core/src/mcp-server.d.ts +25 -0
- package/dist/packages/agent-harness-core/src/mcp-server.js +169 -21
- package/dist/packages/agent-harness-core/src/predicate.d.ts +1 -1
- package/dist/packages/agent-harness-core/src/protocol.d.ts +90 -4
- 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 +38 -0
- package/dist/src/agent-harness/mock-model.js +69 -3
- package/dist/src/agent-harness/test-spawn.js +31 -0
- package/dist/src/chat/chat-keychain.d.ts +7 -12
- package/dist/src/chat/chat-keychain.js +19 -86
- 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 +18 -3
- 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 +10 -47
- package/dist/src/cli/keys.js +31 -399
- package/dist/src/council/clarifier.d.ts +31 -3
- package/dist/src/council/clarifier.js +220 -32
- 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 +54 -5
- 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 +1265 -135
- package/dist/src/council/index.d.ts +108 -1
- package/dist/src/council/index.js +670 -197
- package/dist/src/council/leader.d.ts +26 -0
- package/dist/src/council/leader.js +150 -9
- package/dist/src/council/llm.d.ts +94 -0
- package/dist/src/council/llm.js +348 -55
- package/dist/src/council/panel-select.d.ts +30 -0
- package/dist/src/council/panel-select.js +82 -0
- package/dist/src/council/planner.js +40 -0
- package/dist/src/council/preflight.d.ts +17 -0
- package/dist/src/council/preflight.js +50 -2
- package/dist/src/council/prompts.d.ts +39 -4
- package/dist/src/council/prompts.js +256 -69
- 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 +138 -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 +20 -0
- package/dist/src/ee/auth.js +54 -2
- package/dist/src/ee/bridge.d.ts +10 -0
- package/dist/src/ee/bridge.js +58 -0
- package/dist/src/ee/client.js +109 -21
- package/dist/src/ee/ee-onboarding.js +6 -26
- 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 +58 -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 +14 -1
- package/dist/src/flow/compaction/index.js +96 -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/compaction/progress.d.ts +35 -0
- package/dist/src/flow/compaction/progress.js +35 -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 +66 -0
- package/dist/src/gsd/flags.js +102 -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 +283 -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/headless/council-answers.js +4 -0
- package/dist/src/hooks/index.js +1 -1
- package/dist/src/index.js +172 -270
- package/dist/src/lsp/builtins.js +3 -1
- package/dist/src/lsp/manager.d.ts +5 -1
- package/dist/src/lsp/manager.js +249 -3
- package/dist/src/lsp/npm-cache.d.ts +11 -1
- package/dist/src/lsp/npm-cache.js +17 -1
- package/dist/src/lsp/runtime.d.ts +6 -1
- package/dist/src/lsp/runtime.js +17 -1
- package/dist/src/lsp/types.d.ts +83 -1
- package/dist/src/lsp/types.js +10 -0
- 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 +44 -16
- package/dist/src/mcp/lsp-tools.d.ts +5 -1
- package/dist/src/mcp/lsp-tools.js +93 -2
- package/dist/src/mcp/mcp-keychain.d.ts +3 -5
- package/dist/src/mcp/mcp-keychain.js +9 -49
- 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 +22 -2
- package/dist/src/mcp/tools-server.d.ts +10 -0
- package/dist/src/mcp/tools-server.js +10 -2
- 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 +1 -1
- package/dist/src/orchestrator/ask-user.d.ts +61 -0
- package/dist/src/orchestrator/ask-user.js +65 -0
- 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 +12 -3
- package/dist/src/orchestrator/compaction.js +35 -15
- package/dist/src/orchestrator/council-manager.d.ts +12 -3
- package/dist/src/orchestrator/council-manager.js +74 -32
- package/dist/src/orchestrator/council-request.d.ts +49 -0
- package/dist/src/orchestrator/council-request.js +62 -0
- 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/interactive-pause.d.ts +26 -0
- package/dist/src/orchestrator/interactive-pause.js +36 -0
- package/dist/src/orchestrator/message-processor.d.ts +4 -0
- package/dist/src/orchestrator/message-processor.js +268 -41
- package/dist/src/orchestrator/orchestrator.d.ts +64 -3
- package/dist/src/orchestrator/orchestrator.js +823 -120
- package/dist/src/orchestrator/preprocessor.js +3 -3
- 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 +17 -17
- 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-askcard.d.ts +1 -1
- package/dist/src/orchestrator/safety-askcard.js +5 -2
- package/dist/src/orchestrator/safety-intercept.d.ts +50 -0
- package/dist/src/orchestrator/safety-intercept.js +62 -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 +31 -3
- package/dist/src/orchestrator/stall-watchdog.js +65 -10
- package/dist/src/orchestrator/stream-runner.d.ts +13 -3
- package/dist/src/orchestrator/stream-runner.js +115 -49
- 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 +41 -0
- package/dist/src/orchestrator/tool-engine.js +846 -66
- 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 +44 -0
- package/dist/src/orchestrator/turn-watchdog.js +84 -0
- package/dist/src/pil/agent-operating-contract.d.ts +1 -1
- package/dist/src/pil/agent-operating-contract.js +6 -4
- 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.d.ts +1 -1
- package/dist/src/pil/discovery.js +18 -13
- 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/layer1_5-complexity-size.d.ts +7 -0
- package/dist/src/pil/layer1_5-complexity-size.js +31 -5
- 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 +111 -5
- package/dist/src/pil/llm-classify.js +421 -189
- package/dist/src/pil/native-capabilities-workbook.d.ts +1 -1
- package/dist/src/pil/native-capabilities-workbook.js +8 -0
- package/dist/src/pil/pipeline.js +36 -2
- package/dist/src/pil/repo-grounding-probe.d.ts +15 -0
- package/dist/src/pil/repo-grounding-probe.js +136 -0
- package/dist/src/pil/repo-structure-hints.d.ts +7 -0
- package/dist/src/pil/repo-structure-hints.js +45 -0
- 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/artifact-io.js +4 -0
- 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/criteria-seed.d.ts +51 -0
- package/dist/src/product-loop/criteria-seed.js +200 -0
- 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.d.ts +9 -0
- package/dist/src/product-loop/discovery-interview.js +60 -12
- package/dist/src/product-loop/discovery-recommender.js +2 -1
- package/dist/src/product-loop/discovery-schema.js +19 -2
- package/dist/src/product-loop/discovery-triage.d.ts +23 -0
- package/dist/src/product-loop/discovery-triage.js +109 -0
- package/dist/src/product-loop/gather.js +150 -2
- 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 +340 -52
- package/dist/src/product-loop/loop-driver.d.ts +7 -0
- package/dist/src/product-loop/loop-driver.js +330 -106
- package/dist/src/product-loop/phase-plan.d.ts +21 -0
- package/dist/src/product-loop/phase-plan.js +81 -6
- package/dist/src/product-loop/phase-rituals.d.ts +3 -0
- package/dist/src/product-loop/phase-rituals.js +8 -3
- package/dist/src/product-loop/phase-runner.js +39 -12
- package/dist/src/product-loop/plan-adherence-review.d.ts +26 -0
- package/dist/src/product-loop/plan-adherence-review.js +144 -0
- package/dist/src/product-loop/sprint-runner.d.ts +173 -0
- package/dist/src/product-loop/sprint-runner.js +863 -19
- package/dist/src/product-loop/types.d.ts +61 -5
- package/dist/src/providers/adapter.d.ts +1 -1
- package/dist/src/providers/adapter.js +3 -4
- package/dist/src/providers/anthropic.d.ts +9 -8
- package/dist/src/providers/anthropic.js +13 -47
- 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/grok-oauth.d.ts +1 -0
- package/dist/src/providers/auth/grok-oauth.js +30 -5
- package/dist/src/providers/auth/openai-oauth.d.ts +1 -0
- package/dist/src/providers/auth/openai-oauth.js +15 -1
- package/dist/src/providers/auth/registry.js +0 -34
- package/dist/src/providers/auth/token-store.d.ts +9 -9
- package/dist/src/providers/auth/token-store.js +8 -67
- package/dist/src/providers/auth/types.d.ts +9 -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/env-store.d.ts +17 -0
- package/dist/src/providers/env-store.js +228 -0
- package/dist/src/providers/keychain.d.ts +22 -18
- package/dist/src/providers/keychain.js +127 -140
- package/dist/src/providers/mcp-vision-bridge.js +56 -146
- 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 +43 -3
- package/dist/src/providers/runtime.js +88 -14
- 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 +288 -1
- package/dist/src/providers/strategies/xai.strategy.js +27 -0
- 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/warm.d.ts +65 -0
- package/dist/src/providers/warm.js +145 -0
- package/dist/src/providers/wire-debug.js +95 -0
- 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/continuation-prompt.d.ts +11 -0
- package/dist/src/scaffold/continuation-prompt.js +26 -0
- 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 +6 -5
- 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/migrations.js +71 -1
- package/dist/src/storage/sessions.d.ts +28 -10
- package/dist/src/storage/sessions.js +78 -21
- package/dist/src/storage/transcript-view.js +1 -1
- package/dist/src/storage/transcript.d.ts +51 -0
- package/dist/src/storage/transcript.js +340 -15
- package/dist/src/tools/file.d.ts +15 -0
- package/dist/src/tools/file.js +32 -0
- package/dist/src/tools/git-safety.d.ts +19 -0
- package/dist/src/tools/git-safety.js +168 -0
- package/dist/src/tools/native-tools.d.ts +1 -1
- package/dist/src/tools/native-tools.js +81 -1
- package/dist/src/tools/registry.d.ts +20 -0
- package/dist/src/tools/registry.js +576 -23
- package/dist/src/tools/research.d.ts +29 -0
- package/dist/src/tools/research.js +233 -0
- package/dist/src/types/index.d.ts +147 -4
- package/dist/src/ui/app.js +0 -0
- package/dist/src/ui/cards/product-status-card.js +1 -1
- package/dist/src/ui/components/agent-rail-activities.d.ts +26 -0
- package/dist/src/ui/components/agent-rail-activities.js +47 -0
- 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/compact-progress-card.d.ts +24 -0
- package/dist/src/ui/components/compact-progress-card.js +42 -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 +66 -17
- 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 +13 -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/message-view.d.ts +15 -0
- package/dist/src/ui/components/message-view.js +50 -1
- 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/components/tool-group.d.ts +15 -3
- package/dist/src/ui/components/tool-group.js +69 -11
- package/dist/src/ui/containers/modals-layer.d.ts +4 -2
- package/dist/src/ui/containers/modals-layer.js +2 -2
- package/dist/src/ui/council-harness-event.d.ts +57 -0
- package/dist/src/ui/council-harness-event.js +46 -0
- package/dist/src/ui/heartbeat-debug.d.ts +29 -0
- package/dist/src/ui/heartbeat-debug.js +45 -0
- 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/model-picker-modal.d.ts +8 -18
- package/dist/src/ui/modals/model-picker-modal.js +8 -10
- 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.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/ee.js +81 -0
- 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 +23 -20
- 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/agent-activities.d.ts +39 -0
- package/dist/src/ui/utils/agent-activities.js +96 -0
- package/dist/src/ui/utils/format.d.ts +14 -0
- package/dist/src/ui/utils/format.js +23 -3
- package/dist/src/ui/utils/group-tool-entries.d.ts +26 -0
- package/dist/src/ui/utils/group-tool-entries.js +111 -0
- package/dist/src/ui/utils/tool-summary.d.ts +21 -0
- package/dist/src/ui/utils/tool-summary.js +91 -0
- package/dist/src/usage/downgrade.js +2 -2
- package/dist/src/usage/product-ledger.js +2 -2
- package/dist/src/utils/event-loop-monitor.d.ts +85 -0
- package/dist/src/utils/event-loop-monitor.js +107 -0
- package/dist/src/utils/install-manager.js +2 -1
- package/dist/src/utils/llm-deadline.d.ts +14 -0
- package/dist/src/utils/llm-deadline.js +19 -0
- package/dist/src/utils/logger.js +2 -2
- package/dist/src/utils/loop-profiler.d.ts +102 -0
- package/dist/src/utils/loop-profiler.js +202 -0
- package/dist/src/utils/permission-mode.js +5 -3
- package/dist/src/utils/redactor.js +1 -1
- package/dist/src/utils/settings.d.ts +180 -5
- package/dist/src/utils/settings.js +271 -31
- package/dist/src/utils/side-question.d.ts +1 -2
- package/dist/src/utils/side-question.js +2 -2
- 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 +52 -17
- package/dist/src/verify/orchestrator.d.ts +1 -1
- package/dist/src/verify/orchestrator.js +20 -3
- package/dist/src/verify/recipes.d.ts +13 -0
- package/dist/src/verify/recipes.js +15 -0
- package/package.json +134 -132
- package/dist/src/cli/bw-vault.d.ts +0 -55
- package/dist/src/cli/bw-vault.js +0 -133
- package/dist/src/mcp/ee-tools.d.ts +0 -46
- package/dist/src/mcp/ee-tools.js +0 -193
- 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
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* src/council/panel-select.ts
|
|
3
|
+
*
|
|
4
|
+
* U3 — task-aware debate panel selection. Instead of a fixed capability roster
|
|
5
|
+
* (resolveParticipants picks by tier, blind to the prompt), the leader reads the
|
|
6
|
+
* task and CHOOSES which reachable models should debate it. Fail-open: any parse
|
|
7
|
+
* / provider failure returns null and the caller keeps the default roster. The
|
|
8
|
+
* internal implement/verify/research routing slots are assigned here purely for
|
|
9
|
+
* downstream compatibility — they are never surfaced to the user (the UI shows
|
|
10
|
+
* the task-adaptive persona / model, per U1.1).
|
|
11
|
+
*/
|
|
12
|
+
import { tracedGenerate } from "./llm.js";
|
|
13
|
+
const ALL_ROLES = ["implement", "verify", "research"];
|
|
14
|
+
const SELECT_SYSTEM = "You are the council leader assembling a debate panel for a specific task. From the AVAILABLE MODELS, " +
|
|
15
|
+
"pick the 2-4 that will produce the most rigorous, diverse debate for THIS task — prefer provider and " +
|
|
16
|
+
"tier diversity, and match model strengths to what the task actually needs (e.g. a decision/analysis task " +
|
|
17
|
+
"wants strong reasoners; a build task wants a coding-capable model plus a critical reviewer). " +
|
|
18
|
+
'Return ONLY JSON: {"members":[{"model":"<exact id from the list>","why":"<short reason>"}]}. ' +
|
|
19
|
+
"Use exact model ids from the list; never invent an id.";
|
|
20
|
+
/**
|
|
21
|
+
* Ask the leader to select a task-appropriate debate panel from `pool`.
|
|
22
|
+
* Returns a roster (models mapped onto internal routing roles) or null when the
|
|
23
|
+
* leader is unavailable / returns an unusable selection — the caller then keeps
|
|
24
|
+
* its default roster.
|
|
25
|
+
*/
|
|
26
|
+
export async function* selectTaskAwarePanel(opts) {
|
|
27
|
+
const { topic, pool, leaderModelId, llm } = opts;
|
|
28
|
+
if (pool.length < 2)
|
|
29
|
+
return null;
|
|
30
|
+
const poolList = pool
|
|
31
|
+
.map((c) => `- ${c.model}${c.tier ? ` [${c.tier}]` : ""}${c.provider ? ` (${c.provider})` : ""}: ${c.description.slice(0, 120)}`)
|
|
32
|
+
.join("\n");
|
|
33
|
+
const prompt = `## Task\n${topic}\n\n## Available models\n${poolList}\n\nSelect the 2-4 models best suited to debate this task.`;
|
|
34
|
+
let raw;
|
|
35
|
+
try {
|
|
36
|
+
raw = yield* tracedGenerate(llm, {
|
|
37
|
+
phase: "panel_select",
|
|
38
|
+
label: "Leader selecting debate panel",
|
|
39
|
+
modelId: leaderModelId,
|
|
40
|
+
system: SELECT_SYSTEM,
|
|
41
|
+
prompt,
|
|
42
|
+
maxTokens: 512,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (err) {
|
|
46
|
+
// Fail-open: caller keeps its default roster. Log so a provider outage on
|
|
47
|
+
// the leader model is diagnosable instead of silently degrading panel
|
|
48
|
+
// selection to the prompt-blind roster. (No-Silent-Catch.)
|
|
49
|
+
console.error(`[council/panel-select] leader panel selection call failed, keeping default roster: ${err instanceof Error ? err.message : String(err)}`, { leaderModelId, poolSize: pool.length });
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
const match = raw.match(/\{[\s\S]*\}/);
|
|
53
|
+
if (!match) {
|
|
54
|
+
console.error("[council/panel-select] leader returned no JSON object, keeping default roster", {
|
|
55
|
+
leaderModelId,
|
|
56
|
+
rawHead: raw.slice(0, 200),
|
|
57
|
+
});
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
let parsed;
|
|
61
|
+
try {
|
|
62
|
+
parsed = JSON.parse(match[0]);
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
console.error(`[council/panel-select] leader selection JSON parse failed, keeping default roster: ${err instanceof Error ? err.message : String(err)}`, { leaderModelId, rawHead: match[0].slice(0, 200) });
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const valid = new Set(pool.map((c) => c.model));
|
|
69
|
+
const picked = [];
|
|
70
|
+
for (const m of parsed.members ?? []) {
|
|
71
|
+
const id = typeof m?.model === "string" ? m.model.trim() : "";
|
|
72
|
+
if (id && valid.has(id) && !picked.includes(id))
|
|
73
|
+
picked.push(id);
|
|
74
|
+
if (picked.length >= 4)
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
if (picked.length < 2)
|
|
78
|
+
return null;
|
|
79
|
+
// Roles are internal cost-tier routing slots (hidden from UI); assign cyclically.
|
|
80
|
+
return picked.map((model, i) => ({ role: ALL_ROLES[i % ALL_ROLES.length], model }));
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=panel-select.js.map
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { getCouncilLanguage } from "../utils/settings.js";
|
|
1
2
|
import { tracedGenerate } from "./llm.js";
|
|
2
3
|
import { phaseDone, phaseError, phaseStart } from "./phase-events.js";
|
|
4
|
+
import { emitPreflightHarnessEvent } from "./preflight.js";
|
|
3
5
|
import { buildSynthesisPrompt } from "./prompts.js";
|
|
4
6
|
export async function* runPlanning(debateState, spec, participants, leaderModelId, respondToPreflight, llm, debatePlan,
|
|
5
7
|
// CQ-18: PIL outputStyle from runCouncil
|
|
@@ -33,6 +35,9 @@ planEmphasis) {
|
|
|
33
35
|
outputStyle: outputStyle ?? undefined,
|
|
34
36
|
refineContext,
|
|
35
37
|
planEmphasis,
|
|
38
|
+
// Feature B — synthesis output language follows the resolved council
|
|
39
|
+
// debate language (auto → detect from the brief; pinned → that locale).
|
|
40
|
+
language: getCouncilLanguage(),
|
|
36
41
|
};
|
|
37
42
|
const first = buildSynthesisPrompt(baseArgs);
|
|
38
43
|
synthesisText = yield* tracedGenerate(llm, {
|
|
@@ -141,6 +146,15 @@ planEmphasis) {
|
|
|
141
146
|
yield { type: "content", content: `- [${step.priority}] ${step.description}\n` };
|
|
142
147
|
}
|
|
143
148
|
const preflightId = crypto.randomUUID();
|
|
149
|
+
emitPreflightHarnessEvent({
|
|
150
|
+
t: "event",
|
|
151
|
+
kind: "askcard-open",
|
|
152
|
+
questionId: preflightId,
|
|
153
|
+
question: `Approve action plan for: ${spec.problemStatement}`,
|
|
154
|
+
phase: "plan-confirm",
|
|
155
|
+
optionCount: 2,
|
|
156
|
+
defaultIndex: 0,
|
|
157
|
+
});
|
|
144
158
|
yield {
|
|
145
159
|
type: "council_preflight",
|
|
146
160
|
content: "Review the action plan above. Approve to proceed with execution, or reject.",
|
|
@@ -155,6 +169,13 @@ planEmphasis) {
|
|
|
155
169
|
},
|
|
156
170
|
};
|
|
157
171
|
const approved = await respondToPreflight(preflightId);
|
|
172
|
+
emitPreflightHarnessEvent({
|
|
173
|
+
t: "event",
|
|
174
|
+
kind: "askcard-answered",
|
|
175
|
+
questionId: preflightId,
|
|
176
|
+
answerKind: "choice",
|
|
177
|
+
answerText: approved ? "approve" : "reject",
|
|
178
|
+
});
|
|
158
179
|
yield phaseDone({
|
|
159
180
|
phaseId: "phase:action-plan",
|
|
160
181
|
kind: "action_plan",
|
|
@@ -233,10 +254,29 @@ function parseOutcome(synthesisText, debatePlan) {
|
|
|
233
254
|
sections[s.key] = parsed[s.key];
|
|
234
255
|
}
|
|
235
256
|
}
|
|
257
|
+
// Model-first post-debate options. Keep only entries whose action is in
|
|
258
|
+
// the wired vocabulary; drop malformed items so a hallucinated action id
|
|
259
|
+
// can't reach the handler switch. Empty → index.ts uses its fallback set.
|
|
260
|
+
const VALID_ACTIONS = new Set(["ask_followup", "generate_plan", "implement", "save_exit", "continue_session"]);
|
|
261
|
+
const nextActions = Array.isArray(parsed.nextActions)
|
|
262
|
+
? parsed.nextActions
|
|
263
|
+
.filter((a) => !!a &&
|
|
264
|
+
typeof a === "object" &&
|
|
265
|
+
typeof a.action === "string" &&
|
|
266
|
+
VALID_ACTIONS.has(a.action) &&
|
|
267
|
+
typeof a.label === "string" &&
|
|
268
|
+
a.label.trim().length > 0)
|
|
269
|
+
.map((a) => ({
|
|
270
|
+
action: a.action,
|
|
271
|
+
label: a.label.trim(),
|
|
272
|
+
reason: typeof a.reason === "string" ? a.reason.trim() : undefined,
|
|
273
|
+
}))
|
|
274
|
+
: undefined;
|
|
236
275
|
return {
|
|
237
276
|
type,
|
|
238
277
|
summary,
|
|
239
278
|
sections: Object.keys(sections).length > 0 ? sections : undefined,
|
|
279
|
+
nextActions: nextActions && nextActions.length > 0 ? nextActions : undefined,
|
|
240
280
|
// Legacy fields — synthesizer may still emit them when shape calls for them.
|
|
241
281
|
agreed: Array.isArray(parsed.agreed) ? parsed.agreed : undefined,
|
|
242
282
|
tradeoffs: Array.isArray(parsed.tradeoffs) ? parsed.tradeoffs : undefined,
|
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
import type { StreamChunk } from "../types/index.js";
|
|
2
2
|
import type { ClarifiedSpec, PreflightResponder } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Emit a harness LiveEvent for a preflight/plan-confirm approval gate.
|
|
5
|
+
*
|
|
6
|
+
* These gates are surfaced as `council_preflight` StreamChunks (a UI render path),
|
|
7
|
+
* NOT as LiveEvents — so a monitor on MUONROI_HARNESS_EVENT_LOG is structurally
|
|
8
|
+
* blind to them, unlike the clarify gate which flows through askcard-open. Emitting
|
|
9
|
+
* askcard-open/answered here lets a wake-at-milestone monitor react to the
|
|
10
|
+
* human-approval pause. Observe-only: never throws, no-op when no agent runtime.
|
|
11
|
+
*/
|
|
12
|
+
export declare function emitPreflightHarnessEvent(event: Record<string, unknown>): void;
|
|
3
13
|
export interface RunPreflightOptions {
|
|
4
14
|
repoEmpty?: boolean;
|
|
5
15
|
researchOverridable?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* ROI: when the clarifier judged the spec ready (high confidence, no gaps),
|
|
18
|
+
* the approve card is a rubber-stamp. Show the Discussion Brief for
|
|
19
|
+
* transparency but auto-approve without blocking on a gate. Default false —
|
|
20
|
+
* an unready/low-confidence spec still surfaces the approve card.
|
|
21
|
+
*/
|
|
22
|
+
autoApprove?: boolean;
|
|
6
23
|
}
|
|
7
24
|
export declare function runPreflight(spec: ClarifiedSpec, participants: Array<{
|
|
8
25
|
role: string;
|
|
@@ -1,4 +1,24 @@
|
|
|
1
1
|
import { phaseDone, phaseStart } from "./phase-events.js";
|
|
2
|
+
/**
|
|
3
|
+
* Emit a harness LiveEvent for a preflight/plan-confirm approval gate.
|
|
4
|
+
*
|
|
5
|
+
* These gates are surfaced as `council_preflight` StreamChunks (a UI render path),
|
|
6
|
+
* NOT as LiveEvents — so a monitor on MUONROI_HARNESS_EVENT_LOG is structurally
|
|
7
|
+
* blind to them, unlike the clarify gate which flows through askcard-open. Emitting
|
|
8
|
+
* askcard-open/answered here lets a wake-at-milestone monitor react to the
|
|
9
|
+
* human-approval pause. Observe-only: never throws, no-op when no agent runtime.
|
|
10
|
+
*/
|
|
11
|
+
export function emitPreflightHarnessEvent(event) {
|
|
12
|
+
try {
|
|
13
|
+
const ar = globalThis.__muonroiAgentRuntime;
|
|
14
|
+
if (!ar || typeof ar.emitEvent !== "function")
|
|
15
|
+
return;
|
|
16
|
+
ar.emitEvent(event);
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
/* observe-only */
|
|
20
|
+
}
|
|
21
|
+
}
|
|
2
22
|
export async function* runPreflight(spec, participants, researchNeeded, respondToPreflight, options) {
|
|
3
23
|
const preflightId = crypto.randomUUID();
|
|
4
24
|
const startedAt = Date.now();
|
|
@@ -31,13 +51,34 @@ export async function* runPreflight(spec, participants, researchNeeded, respondT
|
|
|
31
51
|
},
|
|
32
52
|
{ heading: "Scope", body: spec.scope || "Not specified" },
|
|
33
53
|
{
|
|
34
|
-
heading: "
|
|
35
|
-
body: participants.map((p) => `- ${p.
|
|
54
|
+
heading: "Panel",
|
|
55
|
+
body: participants.map((p) => `- ${p.model}`).join("\n"),
|
|
36
56
|
},
|
|
37
57
|
{ heading: "Research phase", body: `${researchMode}${researchNote}` },
|
|
38
58
|
],
|
|
39
59
|
},
|
|
40
60
|
};
|
|
61
|
+
// ROI: skip the approve gate when the spec is already judged ready — show the
|
|
62
|
+
// brief above for transparency but don't block on a rubber-stamp.
|
|
63
|
+
if (options?.autoApprove === true) {
|
|
64
|
+
yield phaseDone({
|
|
65
|
+
phaseId: "phase:preflight",
|
|
66
|
+
kind: "preflight",
|
|
67
|
+
label: "Pre-flight review",
|
|
68
|
+
startedAt,
|
|
69
|
+
detail: "auto-approved (spec ready)",
|
|
70
|
+
});
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
emitPreflightHarnessEvent({
|
|
74
|
+
t: "event",
|
|
75
|
+
kind: "askcard-open",
|
|
76
|
+
questionId: preflightId,
|
|
77
|
+
question: `Approve discussion plan for: ${spec.problemStatement}`,
|
|
78
|
+
phase: "preflight",
|
|
79
|
+
optionCount: 2,
|
|
80
|
+
defaultIndex: 0,
|
|
81
|
+
});
|
|
41
82
|
yield {
|
|
42
83
|
type: "council_preflight",
|
|
43
84
|
content: "Review the discussion brief above. Approve to start debate, or reject to revise.",
|
|
@@ -54,6 +95,13 @@ export async function* runPreflight(spec, participants, researchNeeded, respondT
|
|
|
54
95
|
},
|
|
55
96
|
};
|
|
56
97
|
const approved = await respondToPreflight(preflightId);
|
|
98
|
+
emitPreflightHarnessEvent({
|
|
99
|
+
t: "event",
|
|
100
|
+
kind: "askcard-answered",
|
|
101
|
+
questionId: preflightId,
|
|
102
|
+
answerKind: "choice",
|
|
103
|
+
answerText: approved ? "approve" : "reject",
|
|
104
|
+
});
|
|
57
105
|
yield phaseDone({
|
|
58
106
|
phaseId: "phase:preflight",
|
|
59
107
|
kind: "preflight",
|
|
@@ -2,7 +2,15 @@ import type { ClarifiedSpec, DebatePlan, DebateStance, OutputShape } from "./typ
|
|
|
2
2
|
export declare function buildClarificationPrompt(topic: string, conversationContext: string, previousQA?: Array<{
|
|
3
3
|
question: string;
|
|
4
4
|
answer: string;
|
|
5
|
-
}
|
|
5
|
+
}>,
|
|
6
|
+
/**
|
|
7
|
+
* Interview language, already resolved by the caller (runClarification): a
|
|
8
|
+
* concrete language name ("vietnamese", "english", a pinned locale) or "auto".
|
|
9
|
+
* Feeds the shared `buildLanguageRule` so the cards follow the SAME language
|
|
10
|
+
* policy as the debate — the user's conversation language, not English-by-
|
|
11
|
+
* default. Defaults to "auto" so existing no-arg callers keep auto-detection.
|
|
12
|
+
*/
|
|
13
|
+
lang?: string): {
|
|
6
14
|
system: string;
|
|
7
15
|
prompt: string;
|
|
8
16
|
};
|
|
@@ -37,6 +45,20 @@ export declare function buildReadinessJudgePrompt(topic: string, qa: Array<{
|
|
|
37
45
|
system: string;
|
|
38
46
|
prompt: string;
|
|
39
47
|
};
|
|
48
|
+
export declare function buildLanguageRule(lang?: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Feature B — synthesis-specific language rule. The synthesis prompt already
|
|
51
|
+
* localizes its user-facing output to the user's language; this only adjusts (a)
|
|
52
|
+
* the now-possibly-inaccurate "debate above is entirely in English" preamble and
|
|
53
|
+
* (b) the language-selection instruction when the user PINNED a specific locale.
|
|
54
|
+
*
|
|
55
|
+
* undefined / "english" → the historical block, byte-identical (debate was
|
|
56
|
+
* English-only, output detected from the Problem Statement).
|
|
57
|
+
* "auto" → same "detect from the Problem Statement" output behavior, but the
|
|
58
|
+
* preamble no longer falsely claims the debate ran in English.
|
|
59
|
+
* pinned locale → force all prose into that language instead of detecting it.
|
|
60
|
+
*/
|
|
61
|
+
export declare function buildSynthesisLanguageRule(lang?: string): string;
|
|
40
62
|
export declare function buildOpeningPrompt(ctx: {
|
|
41
63
|
speakerRole: string;
|
|
42
64
|
partnerRole: string;
|
|
@@ -45,6 +67,8 @@ export declare function buildOpeningPrompt(ctx: {
|
|
|
45
67
|
spec: ClarifiedSpec;
|
|
46
68
|
outputShape?: OutputShape;
|
|
47
69
|
conversationContext?: string;
|
|
70
|
+
/** Feature B — resolved council debate language (undefined → English). */
|
|
71
|
+
language?: string;
|
|
48
72
|
}): {
|
|
49
73
|
system: string;
|
|
50
74
|
prompt: string;
|
|
@@ -57,6 +81,8 @@ export declare function buildResponsePrompt(ctx: {
|
|
|
57
81
|
speakerPosition: string;
|
|
58
82
|
partnerPosition: string;
|
|
59
83
|
spec: ClarifiedSpec;
|
|
84
|
+
/** Feature B — resolved council debate language (undefined → English). */
|
|
85
|
+
language?: string;
|
|
60
86
|
}): {
|
|
61
87
|
system: string;
|
|
62
88
|
prompt: string;
|
|
@@ -72,6 +98,8 @@ export declare function buildFollowupPrompt(ctx: {
|
|
|
72
98
|
round: number;
|
|
73
99
|
runningSummary?: string;
|
|
74
100
|
spec: ClarifiedSpec;
|
|
101
|
+
/** Feature B — resolved council debate language (undefined → English). */
|
|
102
|
+
language?: string;
|
|
75
103
|
}): {
|
|
76
104
|
system: string;
|
|
77
105
|
prompt: string;
|
|
@@ -80,11 +108,15 @@ export declare function buildLeaderEvaluationPrompt(ctx: {
|
|
|
80
108
|
spec: ClarifiedSpec;
|
|
81
109
|
exchangeLogs: string;
|
|
82
110
|
round: number;
|
|
111
|
+
/** Feature B — resolved council debate language (undefined → English). */
|
|
112
|
+
language?: string;
|
|
83
113
|
}): {
|
|
84
114
|
system: string;
|
|
85
115
|
prompt: string;
|
|
86
116
|
};
|
|
87
|
-
export declare function buildRoundSummaryPrompt(allExchanges: string, topic: string, round: number
|
|
117
|
+
export declare function buildRoundSummaryPrompt(allExchanges: string, topic: string, round: number,
|
|
118
|
+
/** Feature B — resolved council debate language (undefined → English). */
|
|
119
|
+
language?: string): {
|
|
88
120
|
system: string;
|
|
89
121
|
prompt: string;
|
|
90
122
|
};
|
|
@@ -106,6 +138,8 @@ export declare function buildSynthesisPrompt(ctx: {
|
|
|
106
138
|
outputStyle?: string | null;
|
|
107
139
|
refineContext?: string;
|
|
108
140
|
planEmphasis?: boolean;
|
|
141
|
+
/** Feature B — resolved council debate language (undefined → English). */
|
|
142
|
+
language?: string;
|
|
109
143
|
}): {
|
|
110
144
|
system: string;
|
|
111
145
|
prompt: string;
|
|
@@ -113,8 +147,9 @@ export declare function buildSynthesisPrompt(ctx: {
|
|
|
113
147
|
/**
|
|
114
148
|
* Builds the system prompt for the research role.
|
|
115
149
|
*
|
|
116
|
-
* When `hasUrl` is true, injects a mandatory instruction to
|
|
117
|
-
* or
|
|
150
|
+
* When `hasUrl` is true, injects a mandatory instruction to use fetch_url (preferred
|
|
151
|
+
* for content) or a browser tool (playwright/chrome when screenshots or heavy JS interaction
|
|
152
|
+
* are required) before reporting Frontend Findings (CQ-04).
|
|
118
153
|
*
|
|
119
154
|
* Output format enforces 3 labelled sections with citation requirements (CQ-05).
|
|
120
155
|
*/
|