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
|
@@ -7,6 +7,68 @@ export declare function getCatalogUrl(): string;
|
|
|
7
7
|
* and a 401 from a key-protected catalog simply triggers the static fallback.
|
|
8
8
|
*/
|
|
9
9
|
export declare function getCatalogHeaders(): Record<string, string>;
|
|
10
|
+
/** One peak window within a provider's local timezone (end_hour exclusive). */
|
|
11
|
+
export interface CatalogPeakHourWindow {
|
|
12
|
+
start_hour: number;
|
|
13
|
+
end_hour: number;
|
|
14
|
+
}
|
|
15
|
+
/** Peak-hour rule for a provider — sourced from vendor docs via catalog API. */
|
|
16
|
+
export interface CatalogProviderPeakHour {
|
|
17
|
+
source_url: string;
|
|
18
|
+
source_verified_at?: string;
|
|
19
|
+
timezone: string;
|
|
20
|
+
/** Single window — used when `windows` is absent (e.g. Z.ai 14–18). */
|
|
21
|
+
start_hour?: number;
|
|
22
|
+
end_hour?: number;
|
|
23
|
+
/** Multiple peak windows (e.g. DeepSeek official: 09–12 and 14–18 UTC+8). */
|
|
24
|
+
windows?: CatalogPeakHourWindow[];
|
|
25
|
+
sensitive_model_ids: string[];
|
|
26
|
+
fallback_model_id: string;
|
|
27
|
+
switch_fallback_providers?: string[];
|
|
28
|
+
peak_quota_multiplier?: number;
|
|
29
|
+
off_peak_quota_multiplier?: number;
|
|
30
|
+
policy_basis?: "official" | "heuristic";
|
|
31
|
+
policy_note?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface CatalogProviderPolicy {
|
|
34
|
+
peak_hour?: CatalogProviderPeakHour;
|
|
35
|
+
}
|
|
36
|
+
/** Default council debate slot — one role mapped to a provider + model. */
|
|
37
|
+
export interface CatalogCouncilParticipant {
|
|
38
|
+
role: "implement" | "verify" | "research";
|
|
39
|
+
provider: string;
|
|
40
|
+
tier?: "fast" | "balanced" | "premium";
|
|
41
|
+
model_id?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface CatalogCouncilRouting {
|
|
44
|
+
/** Default true — spread implement/verify/research across providers when user has no roleModels. */
|
|
45
|
+
prefer_multi_provider?: boolean;
|
|
46
|
+
participants?: CatalogCouncilParticipant[];
|
|
47
|
+
}
|
|
48
|
+
/** One vision-backend slot for the text-only model proxy layer. */
|
|
49
|
+
export interface CatalogVisionProxySlot {
|
|
50
|
+
provider: string;
|
|
51
|
+
model_id: string;
|
|
52
|
+
}
|
|
53
|
+
export interface CatalogVisionProxyRouting {
|
|
54
|
+
default?: CatalogVisionProxySlot;
|
|
55
|
+
ocr?: CatalogVisionProxySlot;
|
|
56
|
+
design?: CatalogVisionProxySlot;
|
|
57
|
+
fallback_chain?: CatalogVisionProxySlot[];
|
|
58
|
+
}
|
|
59
|
+
export interface CatalogRouting {
|
|
60
|
+
switch_provider_order?: string[];
|
|
61
|
+
council?: CatalogCouncilRouting;
|
|
62
|
+
vision_proxy?: CatalogVisionProxyRouting;
|
|
63
|
+
}
|
|
64
|
+
export interface CatalogDocument {
|
|
65
|
+
version: string;
|
|
66
|
+
updated_at: string;
|
|
67
|
+
description?: string;
|
|
68
|
+
models: CatalogModel[];
|
|
69
|
+
routing?: CatalogRouting;
|
|
70
|
+
provider_policies?: Record<string, CatalogProviderPolicy>;
|
|
71
|
+
}
|
|
10
72
|
export interface CatalogModel {
|
|
11
73
|
id: string;
|
|
12
74
|
name: string;
|
|
@@ -21,16 +83,39 @@ export interface CatalogModel {
|
|
|
21
83
|
reasoning: boolean;
|
|
22
84
|
thinking_type?: string | null;
|
|
23
85
|
supports_effort?: boolean;
|
|
86
|
+
/** Provider pins temperature to this exact value (e.g. Moonshot/Kimi = 1). */
|
|
87
|
+
fixed_temperature?: number | null;
|
|
24
88
|
description: string;
|
|
25
89
|
aliases?: string[];
|
|
26
90
|
default_reasoning_effort?: string | null;
|
|
27
91
|
supports_vision?: boolean;
|
|
92
|
+
/** When false, model is selectable via -m but skipped by tier routing. */
|
|
93
|
+
tier_routing?: boolean;
|
|
94
|
+
/** Additional tiers for automatic routing (primary tier remains `tier`). */
|
|
95
|
+
routing_tiers?: string[];
|
|
96
|
+
roles?: string[];
|
|
97
|
+
/**
|
|
98
|
+
* Part E — model has NATIVE online web research (its own web_search / browsing
|
|
99
|
+
* / Live Search), not just codebase read. Source of truth for whether the
|
|
100
|
+
* council research phase can trust this model for online facts. Per-model
|
|
101
|
+
* (audited), NOT per-provider. Absent → treated as false (safe: forces the
|
|
102
|
+
* add-in fallback + a degraded-confidence log). Never inferred from provider.
|
|
103
|
+
*/
|
|
104
|
+
native_web_research?: boolean;
|
|
105
|
+
/**
|
|
106
|
+
* Optional mechanism hint for HOW native web research is activated:
|
|
107
|
+
* "live-search" (xAI) | "web-tool" | "browsing" (OpenAI Responses web_search)
|
|
108
|
+
* | null. Advisory only — `native_web_research` is the gate.
|
|
109
|
+
*/
|
|
110
|
+
web_research_kind?: string | null;
|
|
28
111
|
}
|
|
29
112
|
/**
|
|
30
113
|
* Best-effort validation for the REMOTE catalog: a transient bad response must
|
|
31
114
|
* never break the CLI, so an invalid payload returns null and the caller falls
|
|
32
115
|
* through to the trusted bundled catalog.
|
|
33
116
|
*/
|
|
117
|
+
export declare function safeValidateCatalogDocument(raw: unknown): CatalogDocument | null;
|
|
118
|
+
/** @deprecated Use safeValidateCatalogDocument — kept for callers that only need models. */
|
|
34
119
|
export declare function safeValidateCatalog(raw: unknown): CatalogModel[] | null;
|
|
35
120
|
/**
|
|
36
121
|
* Strict validation for a STATIC (bundled) catalog that is present on disk: a
|
|
@@ -38,6 +123,8 @@ export declare function safeValidateCatalog(raw: unknown): CatalogModel[] | null
|
|
|
38
123
|
* throw loudly with the validation issues rather than silently skipping it
|
|
39
124
|
* (which would mask the defect as a confusing "cannot find catalog" later).
|
|
40
125
|
*/
|
|
126
|
+
export declare function validateStaticCatalogDocument(raw: unknown, source: string): CatalogDocument;
|
|
41
127
|
export declare function validateStaticCatalog(raw: unknown, source: string): CatalogModel[];
|
|
128
|
+
export declare function fetchCatalogDocument(): Promise<CatalogDocument>;
|
|
42
129
|
export declare function fetchCatalog(): Promise<CatalogModel[]>;
|
|
43
130
|
export declare function catalogModelToModelInfo(m: CatalogModel): ModelInfo;
|
|
@@ -26,11 +26,6 @@ export function getCatalogHeaders() {
|
|
|
26
26
|
}
|
|
27
27
|
const CACHE_TTL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
28
28
|
// ─── Schema validation (catalog drift / corruption guard) ───────────────────
|
|
29
|
-
// The catalog is the single source of truth for model + provider routing. A
|
|
30
|
-
// silently-malformed catalog (truncated remote response, drifted bundled file,
|
|
31
|
-
// hand-edit dropping a required price field) would otherwise poison every
|
|
32
|
-
// tier→model resolution downstream. Validate the SHAPE we actually depend on;
|
|
33
|
-
// unknown future fields are ignored (forward-compatible), not rejected.
|
|
34
29
|
const CatalogModelSchema = z
|
|
35
30
|
.object({
|
|
36
31
|
id: z.string().min(1),
|
|
@@ -46,25 +41,99 @@ const CatalogModelSchema = z
|
|
|
46
41
|
reasoning: z.boolean(),
|
|
47
42
|
thinking_type: z.string().nullable().optional(),
|
|
48
43
|
supports_effort: z.boolean().optional(),
|
|
44
|
+
fixed_temperature: z.number().nullable().optional(),
|
|
49
45
|
description: z.string(),
|
|
50
46
|
aliases: z.array(z.string()).optional(),
|
|
51
47
|
default_reasoning_effort: z.string().nullable().optional(),
|
|
52
48
|
supports_vision: z.boolean().optional(),
|
|
49
|
+
tier_routing: z.boolean().optional(),
|
|
50
|
+
routing_tiers: z.array(z.string()).optional(),
|
|
51
|
+
roles: z.array(z.string()).optional(),
|
|
52
|
+
native_web_research: z.boolean().optional(),
|
|
53
|
+
web_research_kind: z.string().nullable().optional(),
|
|
53
54
|
})
|
|
54
55
|
.loose();
|
|
55
|
-
const
|
|
56
|
+
const CatalogPeakHourWindowSchema = z.object({
|
|
57
|
+
start_hour: z.number().int().min(0).max(23),
|
|
58
|
+
end_hour: z.number().int().min(1).max(24),
|
|
59
|
+
});
|
|
60
|
+
const CatalogProviderPeakHourSchema = z
|
|
61
|
+
.object({
|
|
62
|
+
source_url: z.string().min(1),
|
|
63
|
+
source_verified_at: z.string().optional(),
|
|
64
|
+
timezone: z.string().min(1),
|
|
65
|
+
start_hour: z.number().int().min(0).max(23).optional(),
|
|
66
|
+
end_hour: z.number().int().min(1).max(24).optional(),
|
|
67
|
+
windows: z.array(CatalogPeakHourWindowSchema).min(1).optional(),
|
|
68
|
+
sensitive_model_ids: z.array(z.string().min(1)).min(1),
|
|
69
|
+
fallback_model_id: z.string().min(1),
|
|
70
|
+
switch_fallback_providers: z.array(z.string().min(1)).optional(),
|
|
71
|
+
peak_quota_multiplier: z.number().optional(),
|
|
72
|
+
off_peak_quota_multiplier: z.number().optional(),
|
|
73
|
+
policy_basis: z.enum(["official", "heuristic"]).optional(),
|
|
74
|
+
policy_note: z.string().optional(),
|
|
75
|
+
})
|
|
76
|
+
.refine((d) => (d.windows?.length ?? 0) > 0 || (d.start_hour != null && d.end_hour != null), {
|
|
77
|
+
message: "peak_hour requires windows or start_hour+end_hour",
|
|
78
|
+
})
|
|
79
|
+
.loose();
|
|
80
|
+
const CatalogResponseSchema = z
|
|
81
|
+
.object({
|
|
56
82
|
version: z.string(),
|
|
57
83
|
updated_at: z.string(),
|
|
84
|
+
description: z.string().optional(),
|
|
58
85
|
models: z.array(CatalogModelSchema).min(1),
|
|
59
|
-
|
|
86
|
+
routing: z
|
|
87
|
+
.object({
|
|
88
|
+
switch_provider_order: z.array(z.string().min(1)).optional(),
|
|
89
|
+
council: z
|
|
90
|
+
.object({
|
|
91
|
+
prefer_multi_provider: z.boolean().optional(),
|
|
92
|
+
participants: z
|
|
93
|
+
.array(z
|
|
94
|
+
.object({
|
|
95
|
+
role: z.enum(["implement", "verify", "research"]),
|
|
96
|
+
provider: z.string().min(1),
|
|
97
|
+
tier: z.enum(["fast", "balanced", "premium"]).optional(),
|
|
98
|
+
model_id: z.string().min(1).optional(),
|
|
99
|
+
})
|
|
100
|
+
.loose())
|
|
101
|
+
.optional(),
|
|
102
|
+
})
|
|
103
|
+
.optional(),
|
|
104
|
+
vision_proxy: z
|
|
105
|
+
.object({
|
|
106
|
+
default: z.object({ provider: z.string().min(1), model_id: z.string().min(1) }).optional(),
|
|
107
|
+
ocr: z.object({ provider: z.string().min(1), model_id: z.string().min(1) }).optional(),
|
|
108
|
+
design: z.object({ provider: z.string().min(1), model_id: z.string().min(1) }).optional(),
|
|
109
|
+
fallback_chain: z.array(z.object({ provider: z.string().min(1), model_id: z.string().min(1) })).optional(),
|
|
110
|
+
})
|
|
111
|
+
.optional(),
|
|
112
|
+
})
|
|
113
|
+
.optional(),
|
|
114
|
+
provider_policies: z
|
|
115
|
+
.record(z.string(), z
|
|
116
|
+
.object({
|
|
117
|
+
peak_hour: CatalogProviderPeakHourSchema.optional(),
|
|
118
|
+
})
|
|
119
|
+
.loose())
|
|
120
|
+
.optional(),
|
|
121
|
+
})
|
|
122
|
+
.loose();
|
|
60
123
|
/**
|
|
61
124
|
* Best-effort validation for the REMOTE catalog: a transient bad response must
|
|
62
125
|
* never break the CLI, so an invalid payload returns null and the caller falls
|
|
63
126
|
* through to the trusted bundled catalog.
|
|
64
127
|
*/
|
|
65
|
-
export function
|
|
128
|
+
export function safeValidateCatalogDocument(raw) {
|
|
66
129
|
const parsed = CatalogResponseSchema.safeParse(raw);
|
|
67
|
-
|
|
130
|
+
if (!parsed.success)
|
|
131
|
+
return null;
|
|
132
|
+
return parsed.data;
|
|
133
|
+
}
|
|
134
|
+
/** @deprecated Use safeValidateCatalogDocument — kept for callers that only need models. */
|
|
135
|
+
export function safeValidateCatalog(raw) {
|
|
136
|
+
return safeValidateCatalogDocument(raw)?.models ?? null;
|
|
68
137
|
}
|
|
69
138
|
/**
|
|
70
139
|
* Strict validation for a STATIC (bundled) catalog that is present on disk: a
|
|
@@ -72,7 +141,7 @@ export function safeValidateCatalog(raw) {
|
|
|
72
141
|
* throw loudly with the validation issues rather than silently skipping it
|
|
73
142
|
* (which would mask the defect as a confusing "cannot find catalog" later).
|
|
74
143
|
*/
|
|
75
|
-
export function
|
|
144
|
+
export function validateStaticCatalogDocument(raw, source) {
|
|
76
145
|
const parsed = CatalogResponseSchema.safeParse(raw);
|
|
77
146
|
if (!parsed.success) {
|
|
78
147
|
const issues = parsed.error.issues
|
|
@@ -81,9 +150,12 @@ export function validateStaticCatalog(raw, source) {
|
|
|
81
150
|
.join("; ");
|
|
82
151
|
throw new Error(`Malformed catalog at ${source}: ${issues}`);
|
|
83
152
|
}
|
|
84
|
-
return parsed.data
|
|
153
|
+
return parsed.data;
|
|
85
154
|
}
|
|
86
|
-
|
|
155
|
+
export function validateStaticCatalog(raw, source) {
|
|
156
|
+
return validateStaticCatalogDocument(raw, source).models;
|
|
157
|
+
}
|
|
158
|
+
let cachedDocument = null;
|
|
87
159
|
let cacheTimestamp = 0;
|
|
88
160
|
/**
|
|
89
161
|
* Try to load catalog.json from a given directory using createRequire.
|
|
@@ -112,12 +184,10 @@ function tryLoadCatalogViaFS(filePath) {
|
|
|
112
184
|
}
|
|
113
185
|
return null;
|
|
114
186
|
}
|
|
115
|
-
export async function
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
return cachedModels;
|
|
187
|
+
export async function fetchCatalogDocument() {
|
|
188
|
+
if (cachedDocument && Date.now() - cacheTimestamp < CACHE_TTL_MS) {
|
|
189
|
+
return cachedDocument;
|
|
119
190
|
}
|
|
120
|
-
// Try CP endpoint with 3s timeout
|
|
121
191
|
try {
|
|
122
192
|
const controller = new AbortController();
|
|
123
193
|
const timeout = setTimeout(() => controller.abort(), 3000);
|
|
@@ -125,48 +195,40 @@ export async function fetchCatalog() {
|
|
|
125
195
|
clearTimeout(timeout);
|
|
126
196
|
if (res.ok) {
|
|
127
197
|
const data = await res.json();
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
if (models) {
|
|
132
|
-
cachedModels = models;
|
|
198
|
+
const doc = safeValidateCatalogDocument(data);
|
|
199
|
+
if (doc) {
|
|
200
|
+
cachedDocument = doc;
|
|
133
201
|
cacheTimestamp = Date.now();
|
|
134
|
-
return
|
|
202
|
+
return cachedDocument;
|
|
135
203
|
}
|
|
136
204
|
}
|
|
137
205
|
}
|
|
138
206
|
catch {
|
|
139
|
-
//
|
|
207
|
+
// remote unreachable — fall through to static
|
|
140
208
|
}
|
|
141
|
-
// Fallback: try multiple paths to find static catalog.json
|
|
142
|
-
// Priority order: dist/models/ -> src/models/
|
|
143
209
|
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
144
|
-
const searchPaths = [
|
|
145
|
-
// 1. Same directory as the built JS (dist/models/)
|
|
146
|
-
moduleDir,
|
|
147
|
-
// 2. src/models/ (for bun run dev from source)
|
|
148
|
-
path.resolve(moduleDir, "../src/models"),
|
|
149
|
-
];
|
|
210
|
+
const searchPaths = [moduleDir, path.resolve(moduleDir, "../src/models")];
|
|
150
211
|
for (const dir of searchPaths) {
|
|
151
|
-
// Try createRequire first (works in both bundled and module contexts)
|
|
152
212
|
const viaRequire = tryLoadCatalogViaRequire(dir);
|
|
153
213
|
if (viaRequire) {
|
|
154
|
-
|
|
214
|
+
cachedDocument = validateStaticCatalogDocument(viaRequire, path.join(dir, "catalog.json"));
|
|
155
215
|
cacheTimestamp = Date.now();
|
|
156
|
-
return
|
|
216
|
+
return cachedDocument;
|
|
157
217
|
}
|
|
158
|
-
// Try direct file read (more reliable in edge cases)
|
|
159
218
|
const filePath = path.join(dir, "catalog.json");
|
|
160
219
|
const viaFS = tryLoadCatalogViaFS(filePath);
|
|
161
220
|
if (viaFS) {
|
|
162
|
-
|
|
221
|
+
cachedDocument = validateStaticCatalogDocument(viaFS, filePath);
|
|
163
222
|
cacheTimestamp = Date.now();
|
|
164
|
-
return
|
|
223
|
+
return cachedDocument;
|
|
165
224
|
}
|
|
166
225
|
}
|
|
167
226
|
throw new Error("Cannot find catalog.json. The package may be installed incorrectly. " +
|
|
168
227
|
"Try reinstalling or setting MUONROI_API_KEY if you haven't already.");
|
|
169
228
|
}
|
|
229
|
+
export async function fetchCatalog() {
|
|
230
|
+
return (await fetchCatalogDocument()).models;
|
|
231
|
+
}
|
|
170
232
|
export function catalogModelToModelInfo(m) {
|
|
171
233
|
return {
|
|
172
234
|
id: m.id,
|
|
@@ -182,9 +244,14 @@ export function catalogModelToModelInfo(m) {
|
|
|
182
244
|
provider: m.provider,
|
|
183
245
|
aliases: m.aliases,
|
|
184
246
|
supportsReasoningEffort: m.supports_effort ?? false,
|
|
247
|
+
fixedTemperature: m.fixed_temperature ?? undefined,
|
|
185
248
|
defaultReasoningEffort: m.default_reasoning_effort ?? undefined,
|
|
186
249
|
thinkingType: m.thinking_type,
|
|
187
250
|
supportsVision: m.supports_vision ?? true,
|
|
251
|
+
tierRouting: m.tier_routing ?? true,
|
|
252
|
+
routingTiers: m.routing_tiers,
|
|
253
|
+
roles: m.roles,
|
|
254
|
+
nativeWebResearch: m.native_web_research ?? false,
|
|
188
255
|
};
|
|
189
256
|
}
|
|
190
257
|
//# sourceMappingURL=catalog-client.js.map
|