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
|
@@ -20,3 +20,16 @@ export declare function normalizeVerifyAppKind(value: string): VerifyAppKind;
|
|
|
20
20
|
export declare function normalizeVerifyRecipe(value: unknown): VerifyRecipe | null;
|
|
21
21
|
export declare function inferVerifySmokeUrl(settings?: SandboxSettings): string | null;
|
|
22
22
|
export declare function inferVerifyProjectProfile(cwd: string, baseSettings?: SandboxSettings, recipeOverride?: VerifyRecipe | null): VerifyProjectProfile;
|
|
23
|
+
/**
|
|
24
|
+
* Decides whether a deterministically-inferred recipe is trustworthy enough to
|
|
25
|
+
* hand to the sprint-1 verify gate INSTEAD of a null (which trips CB-3's
|
|
26
|
+
* "Recovery options" halt). It is trusted ONLY when the profiler recognized the
|
|
27
|
+
* ecosystem (`appKind !== "unknown"`) AND found at least one real test command —
|
|
28
|
+
* i.e. there is something concrete to verify against.
|
|
29
|
+
*
|
|
30
|
+
* This is the exact boundary `Orchestrator.detectVerifyRecipe` applies to its
|
|
31
|
+
* `inferVerifyProjectProfile(cwd)` fallback. Exported so the gate seam is
|
|
32
|
+
* covered by one unit test over the REAL predicate rather than a copy that can
|
|
33
|
+
* silently drift from production.
|
|
34
|
+
*/
|
|
35
|
+
export declare function shouldTrustDeterministicRecipe(recipe: Pick<VerifyRecipe, "appKind" | "testCommands">): boolean;
|
|
@@ -525,4 +525,19 @@ export function inferVerifyProjectProfile(cwd, baseSettings = {}, recipeOverride
|
|
|
525
525
|
recipe: recipeWithRuntime,
|
|
526
526
|
};
|
|
527
527
|
}
|
|
528
|
+
/**
|
|
529
|
+
* Decides whether a deterministically-inferred recipe is trustworthy enough to
|
|
530
|
+
* hand to the sprint-1 verify gate INSTEAD of a null (which trips CB-3's
|
|
531
|
+
* "Recovery options" halt). It is trusted ONLY when the profiler recognized the
|
|
532
|
+
* ecosystem (`appKind !== "unknown"`) AND found at least one real test command —
|
|
533
|
+
* i.e. there is something concrete to verify against.
|
|
534
|
+
*
|
|
535
|
+
* This is the exact boundary `Orchestrator.detectVerifyRecipe` applies to its
|
|
536
|
+
* `inferVerifyProjectProfile(cwd)` fallback. Exported so the gate seam is
|
|
537
|
+
* covered by one unit test over the REAL predicate rather than a copy that can
|
|
538
|
+
* silently drift from production.
|
|
539
|
+
*/
|
|
540
|
+
export function shouldTrustDeterministicRecipe(recipe) {
|
|
541
|
+
return recipe.appKind !== "unknown" && recipe.testCommands.length > 0;
|
|
542
|
+
}
|
|
528
543
|
//# sourceMappingURL=recipes.js.map
|
package/package.json
CHANGED
|
@@ -1,132 +1,134 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "muonroi-cli",
|
|
3
|
-
"workspaces": [
|
|
4
|
-
"packages/*"
|
|
5
|
-
],
|
|
6
|
-
"version": "1.
|
|
7
|
-
"description": "BYOK AI coding agent with multi-model council debate, role-based routing, and auto-compact.",
|
|
8
|
-
"repository": {
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "git+https://github.com/muonroi/muonroi-cli.git"
|
|
11
|
-
},
|
|
12
|
-
"homepage": "https://github.com/muonroi/muonroi-cli#readme",
|
|
13
|
-
"bugs": {
|
|
14
|
-
"url": "https://github.com/muonroi/muonroi-cli/issues"
|
|
15
|
-
},
|
|
16
|
-
"type": "module",
|
|
17
|
-
"main": "dist/src/index.js",
|
|
18
|
-
"exports": {
|
|
19
|
-
".": {
|
|
20
|
-
"import": "./dist/src/index.js",
|
|
21
|
-
"types": "./dist/src/index.d.ts"
|
|
22
|
-
}
|
|
23
|
-
},
|
|
24
|
-
"bin": {
|
|
25
|
-
"muonroi-cli": "dist/src/index.js",
|
|
26
|
-
"mu": "dist/src/index.js"
|
|
27
|
-
},
|
|
28
|
-
"scripts": {
|
|
29
|
-
"dev": "node scripts/sync-version.cjs && bun run src/index.ts",
|
|
30
|
-
"build": "node scripts/sync-version.cjs && tsc && node scripts/fix-extensions.cjs && node -e \"require('fs').cpSync('src/models/catalog.json', 'dist/src/models/catalog.json', { recursive: true })\"",
|
|
31
|
-
"build:binary": "bun build --compile --outfile ./dist/muonroi-cli-standalone ./src/index.ts",
|
|
32
|
-
"start": "bun run dist/index.js",
|
|
33
|
-
"typecheck": "tsc --noEmit",
|
|
34
|
-
"
|
|
35
|
-
"test
|
|
36
|
-
"test:
|
|
37
|
-
"test:
|
|
38
|
-
"test:
|
|
39
|
-
"test:harness-
|
|
40
|
-
"test:angular": "bunx vitest -c
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"format
|
|
45
|
-
"
|
|
46
|
-
"lint:
|
|
47
|
-
"lint:
|
|
48
|
-
"lint:
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
"
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
"!dist
|
|
63
|
-
"!dist
|
|
64
|
-
"!dist/**/
|
|
65
|
-
"!dist
|
|
66
|
-
"!dist
|
|
67
|
-
"!dist/**/*.
|
|
68
|
-
"!dist/**/*.
|
|
69
|
-
"
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
"
|
|
75
|
-
"
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
"
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
"@ai-sdk/
|
|
85
|
-
"@ai-sdk/
|
|
86
|
-
"@ai-sdk/openai
|
|
87
|
-
"@ai-sdk/
|
|
88
|
-
"@ai-sdk/provider
|
|
89
|
-
"@
|
|
90
|
-
"@
|
|
91
|
-
"@
|
|
92
|
-
"@opentui/
|
|
93
|
-
"@
|
|
94
|
-
"
|
|
95
|
-
"
|
|
96
|
-
"
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"
|
|
100
|
-
"
|
|
101
|
-
"ollama-ai-provider-v2": "1.5.5",
|
|
102
|
-
"proper-lockfile": "^4.1.2",
|
|
103
|
-
"react": "19.2.5",
|
|
104
|
-
"ripgrep": "^0.3.1",
|
|
105
|
-
"semver": "^7.7.4",
|
|
106
|
-
"tree-sitter-python": "^0.25.0",
|
|
107
|
-
"tree-sitter-typescript": "^0.23.2",
|
|
108
|
-
"
|
|
109
|
-
"vscode-
|
|
110
|
-
"
|
|
111
|
-
"
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
"@
|
|
116
|
-
"@types/
|
|
117
|
-
"@types/
|
|
118
|
-
"@types/
|
|
119
|
-
"@types/
|
|
120
|
-
"@types/
|
|
121
|
-
"@types/
|
|
122
|
-
"
|
|
123
|
-
"
|
|
124
|
-
"
|
|
125
|
-
"
|
|
126
|
-
"
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "muonroi-cli",
|
|
3
|
+
"workspaces": [
|
|
4
|
+
"packages/*"
|
|
5
|
+
],
|
|
6
|
+
"version": "1.9.0",
|
|
7
|
+
"description": "BYOK AI coding agent with multi-model council debate, role-based routing, and auto-compact.",
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/muonroi/muonroi-cli.git"
|
|
11
|
+
},
|
|
12
|
+
"homepage": "https://github.com/muonroi/muonroi-cli#readme",
|
|
13
|
+
"bugs": {
|
|
14
|
+
"url": "https://github.com/muonroi/muonroi-cli/issues"
|
|
15
|
+
},
|
|
16
|
+
"type": "module",
|
|
17
|
+
"main": "dist/src/index.js",
|
|
18
|
+
"exports": {
|
|
19
|
+
".": {
|
|
20
|
+
"import": "./dist/src/index.js",
|
|
21
|
+
"types": "./dist/src/index.d.ts"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"bin": {
|
|
25
|
+
"muonroi-cli": "dist/src/index.js",
|
|
26
|
+
"mu": "dist/src/index.js"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"dev": "node scripts/sync-version.cjs && bun run src/index.ts",
|
|
30
|
+
"build": "node scripts/sync-version.cjs && tsc && node scripts/fix-extensions.cjs && node -e \"require('fs').cpSync('src/models/catalog.json', 'dist/src/models/catalog.json', { recursive: true })\"",
|
|
31
|
+
"build:binary": "bun build --compile --outfile ./dist/muonroi-cli-standalone ./src/index.ts",
|
|
32
|
+
"start": "bun run dist/index.js",
|
|
33
|
+
"typecheck": "tsc --noEmit",
|
|
34
|
+
"ci:local": "rm -rf /tmp/flow /tmp/gsd-* /tmp/muonroi-* /tmp/sprint-runner-* 2>/dev/null; bun install --frozen-lockfile && bun --filter @muonroi/agent-harness-core build && bunx tsc --noEmit && bunx vitest run && DBUS_SESSION_BUS_ADDRESS=unix:path=/dev/null GNOME_KEYRING_CONTROL= bunx vitest -c vitest.harness.config.ts run tests/harness/",
|
|
35
|
+
"test": "bunx vitest run",
|
|
36
|
+
"test:watch": "bunx vitest",
|
|
37
|
+
"test:harness": "bunx vitest -c vitest.harness.config.ts run tests/harness/",
|
|
38
|
+
"test:core": "bunx vitest run packages/agent-harness-core/__tests__/",
|
|
39
|
+
"test:harness-react": "bunx vitest -c packages/agent-harness-react/vitest.config.ts run",
|
|
40
|
+
"test:harness-angular": "bunx vitest -c vitest.harness-angular.config.ts run tests/harness-angular/",
|
|
41
|
+
"test:angular": "bunx vitest -c packages/agent-harness-angular/vitest.config.ts run",
|
|
42
|
+
"build:core": "cd packages/agent-harness-core && bun run build",
|
|
43
|
+
"lint": "biome check src/",
|
|
44
|
+
"format": "biome format src/",
|
|
45
|
+
"format:fix": "biome format --write src/",
|
|
46
|
+
"lint:fix": "biome check --fix src/",
|
|
47
|
+
"lint:semantic": "bun scripts/check-semantic-wrap.ts",
|
|
48
|
+
"lint:semantic:strict": "bun scripts/check-semantic-wrap.ts --strict",
|
|
49
|
+
"lint:harness-skips": "bun run scripts/check-harness-skips.ts",
|
|
50
|
+
"lint:harness-skips:strict": "bun run scripts/check-harness-skips.ts --strict",
|
|
51
|
+
"pre-commit": "lint-staged",
|
|
52
|
+
"prepare": "husky",
|
|
53
|
+
"postinstall": "node scripts/postinstall.cjs || exit 0",
|
|
54
|
+
"ee:ingest-bb": "bun run scripts/ingest-bb-to-ee.mts",
|
|
55
|
+
"clean:meta": "git clean -fdX -- .scratch chat-export-*.txt .ee-ingest-state.json .brain-*.tmp 2>/dev/null || echo 'clean:meta: no matching untracked ignored files or git unavailable'"
|
|
56
|
+
},
|
|
57
|
+
"lint-staged": {
|
|
58
|
+
"*.{ts,tsx,js,mjs,cjs,json}": "biome check --write --no-errors-on-unmatched --max-diagnostics=200"
|
|
59
|
+
},
|
|
60
|
+
"files": [
|
|
61
|
+
"dist/",
|
|
62
|
+
"!dist/**/*.exe",
|
|
63
|
+
"!dist/**/*.map",
|
|
64
|
+
"!dist/**/__tests__/**",
|
|
65
|
+
"!dist/**/__test-helpers__/**",
|
|
66
|
+
"!dist/**/__test-stubs__/**",
|
|
67
|
+
"!dist/**/*.test.js",
|
|
68
|
+
"!dist/**/*.test.d.ts",
|
|
69
|
+
"!dist/**/*.spec.js",
|
|
70
|
+
"!dist/**/*.spec.d.ts",
|
|
71
|
+
"scripts/postinstall.cjs"
|
|
72
|
+
],
|
|
73
|
+
"keywords": [
|
|
74
|
+
"cli",
|
|
75
|
+
"agent",
|
|
76
|
+
"ai",
|
|
77
|
+
"coding",
|
|
78
|
+
"terminal",
|
|
79
|
+
"opentui"
|
|
80
|
+
],
|
|
81
|
+
"author": "muonroi",
|
|
82
|
+
"license": "MIT",
|
|
83
|
+
"dependencies": {
|
|
84
|
+
"@ai-sdk/anthropic": "3.0.72",
|
|
85
|
+
"@ai-sdk/mcp": "1.0.37",
|
|
86
|
+
"@ai-sdk/openai": "3.0.54",
|
|
87
|
+
"@ai-sdk/openai-compatible": "2.0.42",
|
|
88
|
+
"@ai-sdk/provider": "3.0.9",
|
|
89
|
+
"@ai-sdk/provider-utils": "4.0.24",
|
|
90
|
+
"@modelcontextprotocol/sdk": "1.29.0",
|
|
91
|
+
"@npmcli/arborist": "^9.4.3",
|
|
92
|
+
"@opentui/core": "0.1.107",
|
|
93
|
+
"@opentui/react": "0.1.107",
|
|
94
|
+
"@qdrant/js-client-rest": "1.17.0",
|
|
95
|
+
"ai": "6.0.169",
|
|
96
|
+
"better-sqlite3": "^12.10.0",
|
|
97
|
+
"commander": "^12.1.0",
|
|
98
|
+
"diff": "^8.0.3",
|
|
99
|
+
"fast-xml-parser": "^4.4.1",
|
|
100
|
+
"gpt-tokenizer": "^3.4.0",
|
|
101
|
+
"ollama-ai-provider-v2": "1.5.5",
|
|
102
|
+
"proper-lockfile": "^4.1.2",
|
|
103
|
+
"react": "19.2.5",
|
|
104
|
+
"ripgrep": "^0.3.1",
|
|
105
|
+
"semver": "^7.7.4",
|
|
106
|
+
"tree-sitter-python": "^0.25.0",
|
|
107
|
+
"tree-sitter-typescript": "^0.23.2",
|
|
108
|
+
"turndown": "^7.2.4",
|
|
109
|
+
"vscode-jsonrpc": "8.2.1",
|
|
110
|
+
"vscode-languageserver-types": "3.17.5",
|
|
111
|
+
"web-tree-sitter": "0.26.8",
|
|
112
|
+
"zod": "^4.3.6"
|
|
113
|
+
},
|
|
114
|
+
"devDependencies": {
|
|
115
|
+
"@biomejs/biome": "2.4.13",
|
|
116
|
+
"@types/better-sqlite3": "^7.6.13",
|
|
117
|
+
"@types/diff": "^8.0.0",
|
|
118
|
+
"@types/node": "^22.19.15",
|
|
119
|
+
"@types/npmcli__arborist": "^6.3.3",
|
|
120
|
+
"@types/proper-lockfile": "^4.1.4",
|
|
121
|
+
"@types/react": "^19.2.14",
|
|
122
|
+
"@types/semver": "^7.7.1",
|
|
123
|
+
"@types/turndown": "^5.0.6",
|
|
124
|
+
"ajv": "^8.20.0",
|
|
125
|
+
"husky": "9.1.7",
|
|
126
|
+
"lint-staged": "16.4.0",
|
|
127
|
+
"typescript": "5.9.3",
|
|
128
|
+
"vitest": "4.1.5"
|
|
129
|
+
},
|
|
130
|
+
"engines": {
|
|
131
|
+
"node": ">=20.0.0"
|
|
132
|
+
},
|
|
133
|
+
"preferGlobal": true
|
|
134
|
+
}
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { type SpawnSyncReturns } from "node:child_process";
|
|
2
|
-
/**
|
|
3
|
-
* Thin wrapper around the Bitwarden CLI for writing secrets into the user's
|
|
4
|
-
* vault. Mirrors the assumptions of `runKeysImportBw`: the secret lives in the
|
|
5
|
-
* `notes` field of a Secure Note item named `<prefix><id>`.
|
|
6
|
-
*
|
|
7
|
-
* Auth contract: caller must have `bw` in PATH and `BW_SESSION` exported.
|
|
8
|
-
* On any error the returned object has `ok: false` so callers can degrade
|
|
9
|
-
* gracefully (e.g. fall back to writing only the OS keychain).
|
|
10
|
-
*/
|
|
11
|
-
export interface BwWriteResult {
|
|
12
|
-
ok: boolean;
|
|
13
|
-
action?: "created" | "updated";
|
|
14
|
-
error?: string;
|
|
15
|
-
}
|
|
16
|
-
type Runner = (cmd: string, args: string[], input?: string) => SpawnSyncReturns<string>;
|
|
17
|
-
/**
|
|
18
|
-
* Write `notes` into a vault item named `name`. Creates a Secure Note if
|
|
19
|
-
* absent; updates the notes field if present. Calls `bw sync` after a write
|
|
20
|
-
* so subsequent `bw get` calls see the new value.
|
|
21
|
-
*/
|
|
22
|
-
export declare function writeBwSecureNote(name: string, notes: string, options?: {
|
|
23
|
-
runner?: Runner;
|
|
24
|
-
}): Promise<BwWriteResult>;
|
|
25
|
-
export interface BwUnlockResult {
|
|
26
|
-
ok: boolean;
|
|
27
|
-
session?: string;
|
|
28
|
-
error?: string;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Unlock the BW vault with a master password and return the session token
|
|
32
|
-
* in-memory only. Caller passes the returned session to subsequent calls;
|
|
33
|
-
* we never write to BW_SESSION env or persist it to disk.
|
|
34
|
-
*/
|
|
35
|
-
export declare function unlockWithPassword(password: string, options?: {
|
|
36
|
-
runner?: Runner;
|
|
37
|
-
}): Promise<BwUnlockResult>;
|
|
38
|
-
export interface BwListedNote {
|
|
39
|
-
name: string;
|
|
40
|
-
notes: string;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* List Secure Notes whose name starts with `prefix`. Used by the in-TUI
|
|
44
|
-
* sync flow to discover which providers have keys stored in the vault.
|
|
45
|
-
*/
|
|
46
|
-
export declare function listSecureNotesByPrefix(session: string, prefix: string, options?: {
|
|
47
|
-
runner?: Runner;
|
|
48
|
-
}): Promise<{
|
|
49
|
-
ok: true;
|
|
50
|
-
items: BwListedNote[];
|
|
51
|
-
} | {
|
|
52
|
-
ok: false;
|
|
53
|
-
error: string;
|
|
54
|
-
}>;
|
|
55
|
-
export {};
|
package/dist/src/cli/bw-vault.js
DELETED
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
import { spawnSync } from "node:child_process";
|
|
2
|
-
const defaultRunner = (cmd, args, input) => spawnSync(cmd, args, { encoding: "utf8", input });
|
|
3
|
-
function ensureUnlocked(session, run) {
|
|
4
|
-
const status = run("bw", ["status", "--session", session]);
|
|
5
|
-
if (status.status !== 0) {
|
|
6
|
-
return { ok: false, error: `bw status failed: ${status.stderr || status.stdout}` };
|
|
7
|
-
}
|
|
8
|
-
let parsed;
|
|
9
|
-
try {
|
|
10
|
-
parsed = JSON.parse(status.stdout);
|
|
11
|
-
}
|
|
12
|
-
catch {
|
|
13
|
-
parsed = {};
|
|
14
|
-
}
|
|
15
|
-
if (parsed.status !== "unlocked") {
|
|
16
|
-
return { ok: false, error: `Bitwarden vault is not unlocked (status: ${parsed.status ?? "unknown"})` };
|
|
17
|
-
}
|
|
18
|
-
return { ok: true };
|
|
19
|
-
}
|
|
20
|
-
function findExistingItem(name, session, run) {
|
|
21
|
-
const list = run("bw", ["list", "items", "--search", name, "--session", session]);
|
|
22
|
-
if (list.status !== 0)
|
|
23
|
-
return null;
|
|
24
|
-
let items;
|
|
25
|
-
try {
|
|
26
|
-
items = JSON.parse(list.stdout);
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
return null;
|
|
30
|
-
}
|
|
31
|
-
return items.find((it) => it.name === name) ?? null;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Write `notes` into a vault item named `name`. Creates a Secure Note if
|
|
35
|
-
* absent; updates the notes field if present. Calls `bw sync` after a write
|
|
36
|
-
* so subsequent `bw get` calls see the new value.
|
|
37
|
-
*/
|
|
38
|
-
export async function writeBwSecureNote(name, notes, options = {}) {
|
|
39
|
-
const run = options.runner ?? defaultRunner;
|
|
40
|
-
const which = run("bw", ["--version"]);
|
|
41
|
-
if (which.status !== 0) {
|
|
42
|
-
return { ok: false, error: "Bitwarden CLI ('bw') not found in PATH. Install: https://bitwarden.com/help/cli/" };
|
|
43
|
-
}
|
|
44
|
-
const session = process.env.BW_SESSION;
|
|
45
|
-
if (!session) {
|
|
46
|
-
return { ok: false, error: "BW_SESSION not set. Run: export BW_SESSION=$(bw unlock --raw)" };
|
|
47
|
-
}
|
|
48
|
-
const unlock = ensureUnlocked(session, run);
|
|
49
|
-
if (!unlock.ok)
|
|
50
|
-
return { ok: false, error: unlock.error };
|
|
51
|
-
const existing = findExistingItem(name, session, run);
|
|
52
|
-
if (existing) {
|
|
53
|
-
const updated = { ...existing, notes };
|
|
54
|
-
const encoded = run("bw", ["encode"], JSON.stringify(updated));
|
|
55
|
-
if (encoded.status !== 0) {
|
|
56
|
-
return { ok: false, error: `bw encode failed: ${encoded.stderr || encoded.stdout}` };
|
|
57
|
-
}
|
|
58
|
-
const edit = run("bw", ["edit", "item", existing.id, encoded.stdout.trim(), "--session", session]);
|
|
59
|
-
if (edit.status !== 0) {
|
|
60
|
-
return { ok: false, error: `bw edit failed: ${edit.stderr || edit.stdout}` };
|
|
61
|
-
}
|
|
62
|
-
run("bw", ["sync", "--session", session]);
|
|
63
|
-
return { ok: true, action: "updated" };
|
|
64
|
-
}
|
|
65
|
-
// Create a new Secure Note. Type 2 = secure note; secureNote.type 0 = generic.
|
|
66
|
-
const item = {
|
|
67
|
-
type: 2,
|
|
68
|
-
name,
|
|
69
|
-
notes,
|
|
70
|
-
secureNote: { type: 0 },
|
|
71
|
-
};
|
|
72
|
-
const encoded = run("bw", ["encode"], JSON.stringify(item));
|
|
73
|
-
if (encoded.status !== 0) {
|
|
74
|
-
return { ok: false, error: `bw encode failed: ${encoded.stderr || encoded.stdout}` };
|
|
75
|
-
}
|
|
76
|
-
const create = run("bw", ["create", "item", encoded.stdout.trim(), "--session", session]);
|
|
77
|
-
if (create.status !== 0) {
|
|
78
|
-
return { ok: false, error: `bw create failed: ${create.stderr || create.stdout}` };
|
|
79
|
-
}
|
|
80
|
-
run("bw", ["sync", "--session", session]);
|
|
81
|
-
return { ok: true, action: "created" };
|
|
82
|
-
}
|
|
83
|
-
/**
|
|
84
|
-
* Unlock the BW vault with a master password and return the session token
|
|
85
|
-
* in-memory only. Caller passes the returned session to subsequent calls;
|
|
86
|
-
* we never write to BW_SESSION env or persist it to disk.
|
|
87
|
-
*/
|
|
88
|
-
export async function unlockWithPassword(password, options = {}) {
|
|
89
|
-
const run = options.runner ?? defaultRunner;
|
|
90
|
-
const which = run("bw", ["--version"]);
|
|
91
|
-
if (which.status !== 0) {
|
|
92
|
-
return { ok: false, error: "Bitwarden CLI ('bw') not found in PATH. Install: https://bitwarden.com/help/cli/" };
|
|
93
|
-
}
|
|
94
|
-
// `bw unlock --raw` reads the password from stdin and prints the session
|
|
95
|
-
// token to stdout. Exit code != 0 on wrong password.
|
|
96
|
-
const res = run("bw", ["unlock", "--raw", "--passwordenv", "BW_PASSWORD_PIPE"]);
|
|
97
|
-
// Fallback to stdin if --passwordenv isn't supported by this bw version.
|
|
98
|
-
if (res.status !== 0) {
|
|
99
|
-
const r2 = spawnSync("bw", ["unlock", "--raw"], { encoding: "utf8", input: `${password}\n` });
|
|
100
|
-
if (r2.status !== 0) {
|
|
101
|
-
const msg = (r2.stderr || r2.stdout || "").trim();
|
|
102
|
-
return { ok: false, error: `bw unlock failed: ${msg || "wrong master password?"}` };
|
|
103
|
-
}
|
|
104
|
-
return { ok: true, session: r2.stdout.trim() };
|
|
105
|
-
}
|
|
106
|
-
return { ok: true, session: res.stdout.trim() };
|
|
107
|
-
}
|
|
108
|
-
/**
|
|
109
|
-
* List Secure Notes whose name starts with `prefix`. Used by the in-TUI
|
|
110
|
-
* sync flow to discover which providers have keys stored in the vault.
|
|
111
|
-
*/
|
|
112
|
-
export async function listSecureNotesByPrefix(session, prefix, options = {}) {
|
|
113
|
-
const run = options.runner ?? defaultRunner;
|
|
114
|
-
const unlock = ensureUnlocked(session, run);
|
|
115
|
-
if (!unlock.ok)
|
|
116
|
-
return { ok: false, error: unlock.error };
|
|
117
|
-
const list = run("bw", ["list", "items", "--search", prefix, "--session", session]);
|
|
118
|
-
if (list.status !== 0) {
|
|
119
|
-
return { ok: false, error: `bw list failed: ${list.stderr || list.stdout}` };
|
|
120
|
-
}
|
|
121
|
-
let items;
|
|
122
|
-
try {
|
|
123
|
-
items = JSON.parse(list.stdout);
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
return { ok: false, error: "bw list returned non-JSON output" };
|
|
127
|
-
}
|
|
128
|
-
const matched = items
|
|
129
|
-
.filter((it) => it.type === 2 && it.name.startsWith(prefix) && typeof it.notes === "string")
|
|
130
|
-
.map((it) => ({ name: it.name, notes: it.notes }));
|
|
131
|
-
return { ok: true, items: matched };
|
|
132
|
-
}
|
|
133
|
-
//# sourceMappingURL=bw-vault.js.map
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/mcp/ee-tools.ts
|
|
3
|
-
*
|
|
4
|
-
* EE (Experience Engine) MCP tools: ee_query (semantic recall) + ee_health +
|
|
5
|
-
* ee_feedback (rate a recalled entry). Read-mostly; ee_feedback POSTs a verdict.
|
|
6
|
-
*
|
|
7
|
-
* Anti-mù: ee_query supports explicit "recent task checkpoint" / "Progress DONE" queries
|
|
8
|
-
* so the agent (or sub-agent) can deliberately confirm finished subtasks after compactions.
|
|
9
|
-
* collections: prefer "experience-behavioral" for compaction checkpoints (see layer3).
|
|
10
|
-
*
|
|
11
|
-
* Feedback gate: ee_query stamps every returned `[id col]` into a session-scoped
|
|
12
|
-
* pending ledger (recall-ledger.ts). Subsequent ee_query calls surface (soft) or
|
|
13
|
-
* refuse on (hard) accumulated unrated debt, so useful recalls actually get a
|
|
14
|
-
* verdict via ee_feedback — the signal the brain needs to keep the good entries
|
|
15
|
-
* and prune the rest. Mode via EXPERIENCE_RECALL_FEEDBACK_GATE = off|soft|hard
|
|
16
|
-
* (default soft); hard-mode threshold via EXPERIENCE_RECALL_FEEDBACK_THRESHOLD.
|
|
17
|
-
*
|
|
18
|
-
* Dependencies are injected (deps) so unit tests never touch the network/singleton.
|
|
19
|
-
*/
|
|
20
|
-
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
21
|
-
import { type RecallLedger } from "../ee/recall-ledger.js";
|
|
22
|
-
import { type FeedbackResult, type FeedbackVerdict, type NoiseReason } from "../ee/search.js";
|
|
23
|
-
import type { EERecallResponse } from "../ee/types.js";
|
|
24
|
-
export interface EEToolDeps {
|
|
25
|
-
recall?: (query: string, opts: {
|
|
26
|
-
project?: string;
|
|
27
|
-
}) => Promise<EERecallResponse | null>;
|
|
28
|
-
health?: () => Promise<{
|
|
29
|
-
ok: boolean;
|
|
30
|
-
status: number;
|
|
31
|
-
}>;
|
|
32
|
-
feedback?: (pointId: string, collection: string, verdict: FeedbackVerdict, reason?: NoiseReason) => Promise<FeedbackResult>;
|
|
33
|
-
write?: (lesson: string, opts: {
|
|
34
|
-
collection?: string;
|
|
35
|
-
title?: string;
|
|
36
|
-
projectSlug?: string;
|
|
37
|
-
confidence?: number;
|
|
38
|
-
}) => Promise<{
|
|
39
|
-
ok: boolean;
|
|
40
|
-
id?: string;
|
|
41
|
-
error?: string;
|
|
42
|
-
}>;
|
|
43
|
-
/** Session pending-recall ledger. Defaults to the process singleton. */
|
|
44
|
-
ledger?: RecallLedger;
|
|
45
|
-
}
|
|
46
|
-
export declare function registerEETools(server: McpServer, deps?: EEToolDeps): void;
|