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
package/dist/src/mcp/ee-tools.js
DELETED
|
@@ -1,193 +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 { z } from "zod";
|
|
21
|
-
import { sessionRecallLedger } from "../ee/recall-ledger.js";
|
|
22
|
-
import { formatRecallForAgent, healthEE, recallEE, } from "../ee/search.js";
|
|
23
|
-
function ok(data) {
|
|
24
|
-
return { content: [{ type: "text", text: JSON.stringify(data) }] };
|
|
25
|
-
}
|
|
26
|
-
function okText(text) {
|
|
27
|
-
return { content: [{ type: "text", text }] };
|
|
28
|
-
}
|
|
29
|
-
function fail(error, message) {
|
|
30
|
-
return {
|
|
31
|
-
content: [{ type: "text", text: JSON.stringify({ error, message }) }],
|
|
32
|
-
isError: true,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
/** Resolve the feedback-gate policy from env at call time (so tests can vary it). */
|
|
36
|
-
function resolveGate() {
|
|
37
|
-
const raw = String(process.env.EXPERIENCE_RECALL_FEEDBACK_GATE ?? "soft")
|
|
38
|
-
.trim()
|
|
39
|
-
.toLowerCase();
|
|
40
|
-
const mode = raw === "off" || raw === "hard" ? raw : "soft";
|
|
41
|
-
const parsed = Number.parseInt(process.env.EXPERIENCE_RECALL_FEEDBACK_THRESHOLD ?? "", 10);
|
|
42
|
-
const threshold = Number.isFinite(parsed) && parsed > 0 ? parsed : 3;
|
|
43
|
-
return { mode, threshold };
|
|
44
|
-
}
|
|
45
|
-
/** One readable block naming the still-unrated recalls + how to clear them. */
|
|
46
|
-
function formatPendingBlock(pending, hard, max = 8) {
|
|
47
|
-
const shown = pending.slice(0, max);
|
|
48
|
-
const lines = shown.map((p) => ` - [${p.id} ${p.collection ?? "?"}] (from recall: "${p.query}")`);
|
|
49
|
-
const more = pending.length > max ? `\n …and ${pending.length - max} more` : "";
|
|
50
|
-
const head = hard
|
|
51
|
-
? `⚠️ FEEDBACK GATE — ${pending.length} earlier recall(s) are still unrated. Rate them with ` +
|
|
52
|
-
`ee_feedback(id, collection, verdict) before pulling new recalls:`
|
|
53
|
-
: `⚠️ ${pending.length} earlier recall(s) still unrated — call ` +
|
|
54
|
-
`ee_feedback(id, collection, verdict=followed|ignored|noise) so the brain keeps what helped and prunes the rest:`;
|
|
55
|
-
return `${head}\n${lines.join("\n")}${more}`;
|
|
56
|
-
}
|
|
57
|
-
export function registerEETools(server, deps = {}) {
|
|
58
|
-
// Default to the shared EE recall/health/feedback helpers (src/ee/search.ts) so
|
|
59
|
-
// the MCP tools and the in-CLI builtin tools resolve auth/baseUrl the same way.
|
|
60
|
-
// Tests inject `deps` to avoid the network and a fresh `ledger` to stay isolated.
|
|
61
|
-
const recall = deps.recall ?? ((q, o) => recallEE(q, o));
|
|
62
|
-
const health = deps.health ?? (() => healthEE());
|
|
63
|
-
const ledger = deps.ledger ?? sessionRecallLedger;
|
|
64
|
-
server.registerTool("ee_query", {
|
|
65
|
-
description: "Active recall over the Experience Engine brain — prior decisions, gotchas, learned warnings/recipes, and " +
|
|
66
|
-
"task checkpoints for this codebase — via the recallMode pipeline (same path as exp-recall.js). " +
|
|
67
|
-
"CALL THIS PROACTIVELY, before acting: when starting work in an unfamiliar area, when unsure how something " +
|
|
68
|
-
"is done in this stack, before a risky or hard-to-reverse step, or to recall finished work after a " +
|
|
69
|
-
"compaction (e.g. query='recent compaction checkpoint Progress DONE for <subtask>'). A deliberate query " +
|
|
70
|
-
"here is cheaper than re-deriving or repeating a past mistake. Returns a formatted index whose entries " +
|
|
71
|
-
"carry `[id col]` handles — after you act on a recall, rate each entry you used or judged with the " +
|
|
72
|
-
"ee_feedback tool (followed/ignored/noise) so the brain keeps what helped and prunes the rest; unrated " +
|
|
73
|
-
"recalls are surfaced back to you on the next ee_query. Optional project scopes the recall. Returns a " +
|
|
74
|
-
"compact ranked index (cosine-ranked, strongest first), capped at maxChars (default 6000, range " +
|
|
75
|
-
"500-20000) and truncated from the tail; raise maxChars to see more. Returns ee_unavailable if EE is " +
|
|
76
|
-
"down (then proceed without it).",
|
|
77
|
-
inputSchema: {
|
|
78
|
-
query: z.string().min(1).max(1000),
|
|
79
|
-
project: z.string().max(200).optional(),
|
|
80
|
-
maxChars: z.number().int().min(500).max(20_000).optional(),
|
|
81
|
-
},
|
|
82
|
-
}, async ({ query, project, maxChars }) => {
|
|
83
|
-
const gate = resolveGate();
|
|
84
|
-
const pendingBefore = gate.mode === "off" ? [] : ledger.pending();
|
|
85
|
-
// Hard gate: refuse a NEW recall while unrated debt is at/over threshold —
|
|
86
|
-
// do not even spend the brain call. Below threshold, fall through to soft.
|
|
87
|
-
if (gate.mode === "hard" && pendingBefore.length >= gate.threshold) {
|
|
88
|
-
return fail("feedback_required", formatPendingBlock(pendingBefore, true));
|
|
89
|
-
}
|
|
90
|
-
try {
|
|
91
|
-
const resp = await recall(query, { project });
|
|
92
|
-
if (resp === null) {
|
|
93
|
-
return fail("ee_unavailable", "EE recall returned no response (server down, timeout, or circuit open)");
|
|
94
|
-
}
|
|
95
|
-
// Stamp the new entries as pending debt (unless the gate is off).
|
|
96
|
-
if (gate.mode !== "off")
|
|
97
|
-
ledger.record(resp.entries, query);
|
|
98
|
-
// Return the compact `[id col]` index (capped) rather than JSON.stringify
|
|
99
|
-
// of the whole response — the wide-net recall text (~30k) otherwise blows
|
|
100
|
-
// the MCP per-result token cap and spills to a file. See formatRecallForAgent.
|
|
101
|
-
const index = formatRecallForAgent(resp, { query, maxChars });
|
|
102
|
-
if (gate.mode !== "off" && pendingBefore.length > 0) {
|
|
103
|
-
return okText(`${formatPendingBlock(pendingBefore, false)}\n\n${index}`);
|
|
104
|
-
}
|
|
105
|
-
return okText(index);
|
|
106
|
-
}
|
|
107
|
-
catch (e) {
|
|
108
|
-
return fail("ee_unavailable", e instanceof Error ? e.message : String(e));
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
server.registerTool("ee_feedback", {
|
|
112
|
-
description: "Rate an Experience Engine recall entry so the brain keeps what helped and prunes the rest. Call after " +
|
|
113
|
-
"acting on an ee_query result — once per `[id col]` you used or judged. verdict: 'followed' (you changed " +
|
|
114
|
-
"your approach because of it), 'ignored' (topical but did not apply this time), 'noise' (wrong by category — " +
|
|
115
|
-
"REQUIRES reason: wrong_repo | wrong_language | wrong_task | stale_rule). id may be a short prefix; the " +
|
|
116
|
-
"server resolves it. Clears the entry from this session's pending-feedback gate.",
|
|
117
|
-
inputSchema: {
|
|
118
|
-
id: z.string().min(1).max(200),
|
|
119
|
-
collection: z.string().min(1).max(200),
|
|
120
|
-
verdict: z.enum(["followed", "ignored", "noise"]),
|
|
121
|
-
reason: z.enum(["wrong_repo", "wrong_language", "wrong_task", "stale_rule"]).optional(),
|
|
122
|
-
},
|
|
123
|
-
}, async ({ id, collection, verdict, reason }) => {
|
|
124
|
-
if (verdict === "noise" && !reason) {
|
|
125
|
-
return fail("reason_required", "verdict 'noise' requires reason: wrong_repo | wrong_language | wrong_task | stale_rule");
|
|
126
|
-
}
|
|
127
|
-
const feedback = deps.feedback ?? ((pid, col, v, r) => import("../ee/search.js").then((m) => m.feedbackEE(pid, col, v, r)));
|
|
128
|
-
try {
|
|
129
|
-
const result = await feedback(id, collection, verdict, reason);
|
|
130
|
-
if (!result.ok) {
|
|
131
|
-
return fail("feedback_failed", result.error ?? "feedback POST failed");
|
|
132
|
-
}
|
|
133
|
-
// Clear by the server-resolved full id AND the (possibly short) id the
|
|
134
|
-
// agent passed, so a prefix-based call still settles the ledger debt.
|
|
135
|
-
const clearedId = result.resolvedId ?? id;
|
|
136
|
-
ledger.clear(clearedId);
|
|
137
|
-
ledger.clear(id);
|
|
138
|
-
return ok({
|
|
139
|
-
ok: true,
|
|
140
|
-
id: clearedId,
|
|
141
|
-
verdict: result.verdict,
|
|
142
|
-
...(result.reason ? { reason: result.reason } : {}),
|
|
143
|
-
pendingRemaining: ledger.pendingCount(),
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
catch (e) {
|
|
147
|
-
return fail("feedback_failed", e instanceof Error ? e.message : String(e));
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
server.registerTool("ee_health", { description: "Check Experience Engine server reachability.", inputSchema: {} }, async () => {
|
|
151
|
-
try {
|
|
152
|
-
return ok(await health());
|
|
153
|
-
}
|
|
154
|
-
catch (e) {
|
|
155
|
-
return fail("ee_unavailable", e instanceof Error ? e.message : String(e));
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
server.registerTool("ee_write", {
|
|
159
|
-
description: "Save a NEW lesson to the Experience Engine brain so you and future sessions recall it. Call the MOMENT you " +
|
|
160
|
-
"hit a mistake / error / dead-end and find the working fix: record the pitfall AND the fix in one concise, " +
|
|
161
|
-
"generalizable lesson (1-3 sentences — what to do or avoid next time, NOT a play-by-play of this turn). The " +
|
|
162
|
-
"lesson is embedded immediately (via /api/import-memory: dense + sparse) and becomes recallable via ee_query " +
|
|
163
|
-
"in this and future sessions. Use ee_query first if unsure a lesson already exists. collection defaults to " +
|
|
164
|
-
"experience-behavioral (use experience-principles only for a broad, project-independent principle); project " +
|
|
165
|
-
"scopes the lesson.",
|
|
166
|
-
inputSchema: {
|
|
167
|
-
lesson: z.string().min(12).max(4000),
|
|
168
|
-
title: z.string().max(200).optional(),
|
|
169
|
-
collection: z.enum(["experience-behavioral", "experience-principles"]).optional(),
|
|
170
|
-
project: z.string().max(200).optional(),
|
|
171
|
-
},
|
|
172
|
-
}, async ({ lesson, title, collection, project }) => {
|
|
173
|
-
const trimmed = lesson.trim();
|
|
174
|
-
const text = trimmed.length > 1500 ? `${trimmed.slice(0, 1497)}...` : trimmed;
|
|
175
|
-
const targetCollection = collection ?? "experience-behavioral";
|
|
176
|
-
const write = deps.write ?? ((l, o) => import("../ee/search.js").then((m) => m.writeExperienceEE(l, o)));
|
|
177
|
-
try {
|
|
178
|
-
const result = await write(text, {
|
|
179
|
-
collection: targetCollection,
|
|
180
|
-
title,
|
|
181
|
-
projectSlug: project,
|
|
182
|
-
confidence: 0.65,
|
|
183
|
-
});
|
|
184
|
-
if (!result.ok)
|
|
185
|
-
return fail("write_failed", result.error ?? "import-memory POST failed");
|
|
186
|
-
return ok({ ok: true, id: result.id, collection: targetCollection, recallable: "now via ee_query" });
|
|
187
|
-
}
|
|
188
|
-
catch (e) {
|
|
189
|
-
return fail("write_failed", e instanceof Error ? e.message : String(e));
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
//# sourceMappingURL=ee-tools.js.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/providers/auth/gcloud.ts
|
|
3
|
-
*
|
|
4
|
-
* Reads and refreshes tokens from Google Cloud SDK credentials
|
|
5
|
-
* (~/.config/gcloud/application_default_credentials.json).
|
|
6
|
-
*
|
|
7
|
-
* The gcloud ADC token uses GCP's official OAuth client with cloud-platform
|
|
8
|
-
* scopes, which IS accepted by generativelanguage.googleapis.com (unlike the
|
|
9
|
-
* Agy OAuth token whose scope is restricted to cloudcode-pa).
|
|
10
|
-
*
|
|
11
|
-
* Usage:
|
|
12
|
-
* 1. User runs `gcloud auth application-default login` once.
|
|
13
|
-
* 2. This file reads the resulting credentials file, extracts the token,
|
|
14
|
-
* and returns it as an OAuthTokens-compatible object.
|
|
15
|
-
* 3. The token auto-refreshes when expired (using the refresh_token inside
|
|
16
|
-
* the credentials file).
|
|
17
|
-
*/
|
|
18
|
-
import type { OAuthTokens } from "./types.js";
|
|
19
|
-
/**
|
|
20
|
-
* Try to load a token from gcloud ADC.
|
|
21
|
-
* Returns null if gcloud is not installed or no credentials exist.
|
|
22
|
-
*/
|
|
23
|
-
export declare function loadGcloudToken(): Promise<OAuthTokens | null>;
|
|
24
|
-
/**
|
|
25
|
-
* Obtain auth headers from a gcloud-derived OAuthTokens.
|
|
26
|
-
* Compatible with ProviderOAuth.authHeaders() signature.
|
|
27
|
-
*/
|
|
28
|
-
export declare function gcloudAuthHeaders(tokens: OAuthTokens): Record<string, string>;
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/providers/auth/gcloud.ts
|
|
3
|
-
*
|
|
4
|
-
* Reads and refreshes tokens from Google Cloud SDK credentials
|
|
5
|
-
* (~/.config/gcloud/application_default_credentials.json).
|
|
6
|
-
*
|
|
7
|
-
* The gcloud ADC token uses GCP's official OAuth client with cloud-platform
|
|
8
|
-
* scopes, which IS accepted by generativelanguage.googleapis.com (unlike the
|
|
9
|
-
* Agy OAuth token whose scope is restricted to cloudcode-pa).
|
|
10
|
-
*
|
|
11
|
-
* Usage:
|
|
12
|
-
* 1. User runs `gcloud auth application-default login` once.
|
|
13
|
-
* 2. This file reads the resulting credentials file, extracts the token,
|
|
14
|
-
* and returns it as an OAuthTokens-compatible object.
|
|
15
|
-
* 3. The token auto-refreshes when expired (using the refresh_token inside
|
|
16
|
-
* the credentials file).
|
|
17
|
-
*/
|
|
18
|
-
import { readFile } from "node:fs/promises";
|
|
19
|
-
import { homedir } from "node:os";
|
|
20
|
-
import { join } from "node:path";
|
|
21
|
-
import { OAuthRefreshError } from "./types.js";
|
|
22
|
-
// ---------------------------------------------------------------------------
|
|
23
|
-
// Paths
|
|
24
|
-
// ---------------------------------------------------------------------------
|
|
25
|
-
const GCLOUD_ADC_PATH = join(homedir(), ".config", "gcloud", "application_default_credentials.json");
|
|
26
|
-
// ---------------------------------------------------------------------------
|
|
27
|
-
// Loader
|
|
28
|
-
// ---------------------------------------------------------------------------
|
|
29
|
-
/**
|
|
30
|
-
* Load gcloud Application Default Credentials file.
|
|
31
|
-
*/
|
|
32
|
-
async function loadADC() {
|
|
33
|
-
try {
|
|
34
|
-
const raw = await readFile(GCLOUD_ADC_PATH, "utf8");
|
|
35
|
-
const creds = JSON.parse(raw);
|
|
36
|
-
if (creds.type !== "authorized_user") {
|
|
37
|
-
// service-account keys have a different shape; skip
|
|
38
|
-
return null;
|
|
39
|
-
}
|
|
40
|
-
return creds;
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return null;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
// ---------------------------------------------------------------------------
|
|
47
|
-
// Token exchange
|
|
48
|
-
// ---------------------------------------------------------------------------
|
|
49
|
-
/**
|
|
50
|
-
* Exchange a gcloud refresh_token for a fresh access_token.
|
|
51
|
-
* Google's OAuth token endpoint accepts gcloud ADC credentials.
|
|
52
|
-
*/
|
|
53
|
-
async function exchangeRefreshToken(clientId, clientSecret, refreshToken) {
|
|
54
|
-
const body = new URLSearchParams({
|
|
55
|
-
client_id: clientId,
|
|
56
|
-
client_secret: clientSecret,
|
|
57
|
-
refresh_token: refreshToken,
|
|
58
|
-
grant_type: "refresh_token",
|
|
59
|
-
});
|
|
60
|
-
let res;
|
|
61
|
-
try {
|
|
62
|
-
res = await fetch("https://oauth2.googleapis.com/token", {
|
|
63
|
-
method: "POST",
|
|
64
|
-
headers: { "Content-Type": "application/x-www-form-urlencoded" },
|
|
65
|
-
body,
|
|
66
|
-
});
|
|
67
|
-
}
|
|
68
|
-
catch (err) {
|
|
69
|
-
throw new OAuthRefreshError("google", `gcloud ADC refresh network error: ${err.message}`);
|
|
70
|
-
}
|
|
71
|
-
if (!res.ok) {
|
|
72
|
-
const text = await res.text().catch(() => "");
|
|
73
|
-
throw new OAuthRefreshError("google", `gcloud ADC refresh failed (${res.status}): ${text}`);
|
|
74
|
-
}
|
|
75
|
-
const data = (await res.json());
|
|
76
|
-
return {
|
|
77
|
-
accessToken: data.access_token,
|
|
78
|
-
refreshToken,
|
|
79
|
-
expiresAt: Date.now() + data.expires_in * 1000,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
// ---------------------------------------------------------------------------
|
|
83
|
-
// Public API
|
|
84
|
-
// ---------------------------------------------------------------------------
|
|
85
|
-
/**
|
|
86
|
-
* Try to load a token from gcloud ADC.
|
|
87
|
-
* Returns null if gcloud is not installed or no credentials exist.
|
|
88
|
-
*/
|
|
89
|
-
export async function loadGcloudToken() {
|
|
90
|
-
const creds = await loadADC();
|
|
91
|
-
if (!creds)
|
|
92
|
-
return null;
|
|
93
|
-
return exchangeRefreshToken(creds.client_id, creds.client_secret, creds.refresh_token);
|
|
94
|
-
}
|
|
95
|
-
/**
|
|
96
|
-
* Obtain auth headers from a gcloud-derived OAuthTokens.
|
|
97
|
-
* Compatible with ProviderOAuth.authHeaders() signature.
|
|
98
|
-
*/
|
|
99
|
-
export function gcloudAuthHeaders(tokens) {
|
|
100
|
-
return { Authorization: `Bearer ${tokens.accessToken}` };
|
|
101
|
-
}
|
|
102
|
-
//# sourceMappingURL=gcloud.js.map
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/providers/auth/gemini-oauth.ts
|
|
3
|
-
*
|
|
4
|
-
* Agy (Antigravity) Google OAuth implementation.
|
|
5
|
-
* Replaces the old abandoned public gemini-cli OAuth client.
|
|
6
|
-
*
|
|
7
|
-
* Uses client credentials extracted from the local agy.exe binary
|
|
8
|
-
* (registered for agy's "oauth-personal" / Code Assist flow).
|
|
9
|
-
*
|
|
10
|
-
* Agy stores tokens in ~/.gemini/oauth_creds.json (legacy path).
|
|
11
|
-
* We auto-import so existing agy logins continue to work.
|
|
12
|
-
*
|
|
13
|
-
* Override with MUONROI_GOOGLE_* env vars if needed.
|
|
14
|
-
*
|
|
15
|
-
* Note: Even though the provider ID is "google" (for model routing),
|
|
16
|
-
* the OAuth registration and naming is now Agy.
|
|
17
|
-
*/
|
|
18
|
-
import type { OAuthCallbackServer } from "../../mcp/oauth-callback.js";
|
|
19
|
-
import type { FetchFn } from "./device-flow.js";
|
|
20
|
-
import type { OAuthTokens, ProviderOAuth } from "./types.js";
|
|
21
|
-
export type CallbackServerFn = (opts: {
|
|
22
|
-
onCode: (code: string, state: string) => void;
|
|
23
|
-
timeoutMs?: number;
|
|
24
|
-
host?: string;
|
|
25
|
-
}) => Promise<OAuthCallbackServer>;
|
|
26
|
-
export type OpenBrowserFn = (url: string) => void;
|
|
27
|
-
export declare class AgyOAuthProvider implements ProviderOAuth {
|
|
28
|
-
readonly providerId: "google";
|
|
29
|
-
private clientId;
|
|
30
|
-
private clientSecret;
|
|
31
|
-
private readonly fetchFn;
|
|
32
|
-
private readonly callbackServerFn;
|
|
33
|
-
private readonly openBrowserFn;
|
|
34
|
-
private readonly mutex;
|
|
35
|
-
constructor(opts?: {
|
|
36
|
-
clientId?: string;
|
|
37
|
-
clientSecret?: string;
|
|
38
|
-
fetchFn?: FetchFn;
|
|
39
|
-
callbackServerFn?: CallbackServerFn;
|
|
40
|
-
openBrowserFn?: OpenBrowserFn;
|
|
41
|
-
});
|
|
42
|
-
login(opts?: {
|
|
43
|
-
onUserCode?: (code: string, url: string) => void;
|
|
44
|
-
}): Promise<OAuthTokens>;
|
|
45
|
-
refresh(tokens: OAuthTokens): Promise<OAuthTokens>;
|
|
46
|
-
revoke(tokens: OAuthTokens): Promise<void>;
|
|
47
|
-
authHeaders(tokens: OAuthTokens): Record<string, string>;
|
|
48
|
-
private _fetchUserEmail;
|
|
49
|
-
}
|
|
50
|
-
/** Back-compat for tests that still reference the old class name. */
|
|
51
|
-
export { AgyOAuthProvider as GeminiOAuthProvider };
|
|
52
|
-
/** Default Agy OAuth provider singleton (uses agy's Google client registration). */
|
|
53
|
-
export declare const agyOAuth: AgyOAuthProvider;
|
|
54
|
-
/** Back-compat alias (some code still references the old name). */
|
|
55
|
-
export declare const geminiOAuth: AgyOAuthProvider;
|
|
56
|
-
/**
|
|
57
|
-
* Load stored OAuth tokens for the Google provider using Agy's registration.
|
|
58
|
-
* - Auto-imports from ~/.gemini/oauth_creds.json (agy storage).
|
|
59
|
-
* - Refreshes using the agy client/secret when near expiry.
|
|
60
|
-
*/
|
|
61
|
-
export declare function loadAgyTokensWithRefresh(oauthProvider?: AgyOAuthProvider): Promise<OAuthTokens | null>;
|
|
62
|
-
/** Back-compat alias for older call sites. */
|
|
63
|
-
export declare const loadGeminiTokensWithRefresh: typeof loadAgyTokensWithRefresh;
|
|
64
|
-
/**
|
|
65
|
-
* Load a custom OAuth token using user-provided GCP OAuth client credentials.
|
|
66
|
-
* Users register their own OAuth client in GCP Console → use these credentials
|
|
67
|
-
* to obtain tokens with the `generativelanguage` scope (not restricted to
|
|
68
|
-
* cloudcode-pa like the Agy client).
|
|
69
|
-
*
|
|
70
|
-
* Settings sources (in priority order):
|
|
71
|
-
* 1. settings.json → providers → google → oauthClientId / oauthClientSecret
|
|
72
|
-
* 2. MUONROI_GOOGLE_CLIENT_ID / MUONROI_GOOGLE_CLIENT_SECRET env vars
|
|
73
|
-
*
|
|
74
|
-
* Returns null when no custom client is configured.
|
|
75
|
-
*/
|
|
76
|
-
export declare function loadCustomOAuthTokens(): Promise<OAuthTokens | null>;
|
|
77
|
-
/**
|
|
78
|
-
* Perform a full OAuth login with a custom client (Approach C).
|
|
79
|
-
* Users run `keys login google` with their own GCP OAuth client configured
|
|
80
|
-
* in settings → this opens the browser with the right scopes.
|
|
81
|
-
*/
|
|
82
|
-
export declare function loginWithCustomClient(): Promise<OAuthTokens | null>;
|