muonroi-cli 1.8.4 → 1.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. package/LICENSE +17 -5
  2. package/dist/packages/agent-harness-core/src/driver.d.ts +27 -1
  3. package/dist/packages/agent-harness-core/src/driver.js +46 -0
  4. package/dist/packages/agent-harness-core/src/event-tee.d.ts +48 -0
  5. package/dist/packages/agent-harness-core/src/event-tee.js +77 -0
  6. package/dist/packages/agent-harness-core/src/mcp-server.d.ts +11 -0
  7. package/dist/packages/agent-harness-core/src/mcp-server.js +87 -15
  8. package/dist/packages/agent-harness-core/src/protocol.d.ts +66 -2
  9. package/dist/packages/agent-harness-core/src/protocol.js +15 -0
  10. package/dist/packages/agent-harness-core/src/visual-quality.d.ts +58 -0
  11. package/dist/packages/agent-harness-core/src/visual-quality.js +141 -0
  12. package/dist/packages/agent-harness-opentui/src/agent-mode.d.ts +6 -0
  13. package/dist/packages/agent-harness-opentui/src/agent-mode.js +14 -1
  14. package/dist/packages/agent-harness-opentui/src/input-bridge.d.ts +2 -10
  15. package/dist/packages/agent-harness-opentui/src/input-bridge.js +103 -16
  16. package/dist/packages/agent-harness-opentui/src/install.d.ts +8 -0
  17. package/dist/packages/agent-harness-opentui/src/install.js +10 -0
  18. package/dist/packages/agent-harness-opentui/src/semantic.js +12 -10
  19. package/dist/packages/agent-harness-opentui/src/visual-capture.d.ts +56 -0
  20. package/dist/packages/agent-harness-opentui/src/visual-capture.js +103 -0
  21. package/dist/src/agent-harness/mock-model.d.ts +28 -0
  22. package/dist/src/agent-harness/mock-model.js +63 -1
  23. package/dist/src/agent-harness/test-spawn.js +31 -0
  24. package/dist/src/cli/config/screen-providers.js +1 -1
  25. package/dist/src/cli/cost-forensics.d.ts +10 -0
  26. package/dist/src/cli/cost-forensics.js +18 -3
  27. package/dist/src/cli/keys-bundle.d.ts +1 -1
  28. package/dist/src/cli/keys-bundle.js +1 -1
  29. package/dist/src/cli/keys.d.ts +2 -2
  30. package/dist/src/cli/keys.js +19 -81
  31. package/dist/src/council/clarifier.d.ts +28 -2
  32. package/dist/src/council/clarifier.js +81 -15
  33. package/dist/src/council/context.js +49 -15
  34. package/dist/src/council/debate-checkpoint.d.ts +129 -0
  35. package/dist/src/council/debate-checkpoint.js +176 -0
  36. package/dist/src/council/debate-planner.js +51 -3
  37. package/dist/src/council/debate-summary.d.ts +25 -0
  38. package/dist/src/council/debate-summary.js +85 -0
  39. package/dist/src/council/debate.d.ts +169 -2
  40. package/dist/src/council/debate.js +1210 -134
  41. package/dist/src/council/index.d.ts +85 -1
  42. package/dist/src/council/index.js +634 -196
  43. package/dist/src/council/leader.d.ts +26 -0
  44. package/dist/src/council/leader.js +150 -9
  45. package/dist/src/council/llm.d.ts +32 -0
  46. package/dist/src/council/llm.js +231 -38
  47. package/dist/src/council/panel-select.d.ts +30 -0
  48. package/dist/src/council/panel-select.js +72 -0
  49. package/dist/src/council/planner.js +23 -0
  50. package/dist/src/council/preflight.d.ts +7 -0
  51. package/dist/src/council/preflight.js +14 -2
  52. package/dist/src/council/prompts.d.ts +30 -3
  53. package/dist/src/council/prompts.js +234 -64
  54. package/dist/src/council/stance-recall.d.ts +42 -0
  55. package/dist/src/council/stance-recall.js +57 -0
  56. package/dist/src/council/strip-think.d.ts +17 -0
  57. package/dist/src/council/strip-think.js +33 -0
  58. package/dist/src/council/types.d.ts +128 -0
  59. package/dist/src/ee/artifact-cache.d.ts +16 -0
  60. package/dist/src/ee/artifact-cache.js +32 -0
  61. package/dist/src/ee/auth.d.ts +1 -0
  62. package/dist/src/ee/auth.js +15 -2
  63. package/dist/src/ee/bridge.d.ts +10 -0
  64. package/dist/src/ee/bridge.js +58 -0
  65. package/dist/src/ee/client.js +81 -18
  66. package/dist/src/ee/export-transcripts.d.ts +1 -0
  67. package/dist/src/ee/export-transcripts.js +8 -10
  68. package/dist/src/ee/extract-session.js +29 -0
  69. package/dist/src/ee/extract-style.d.ts +58 -0
  70. package/dist/src/ee/extract-style.js +270 -0
  71. package/dist/src/ee/recall-ledger.d.ts +9 -0
  72. package/dist/src/ee/recall-ledger.js +3 -0
  73. package/dist/src/ee/scope.d.ts +1 -0
  74. package/dist/src/ee/scope.js +26 -1
  75. package/dist/src/ee/search.d.ts +7 -0
  76. package/dist/src/ee/search.js +24 -0
  77. package/dist/src/ee/transcript-emit.js +2 -0
  78. package/dist/src/ee/types.d.ts +22 -0
  79. package/dist/src/ee/who-am-i-brain.d.ts +35 -0
  80. package/dist/src/ee/who-am-i-brain.js +220 -0
  81. package/dist/src/ee/who-am-i.d.ts +10 -3
  82. package/dist/src/ee/who-am-i.js +12 -0
  83. package/dist/src/ee/workflow-event.d.ts +48 -0
  84. package/dist/src/ee/workflow-event.js +81 -0
  85. package/dist/src/flow/compaction/compress.d.ts +3 -3
  86. package/dist/src/flow/compaction/compress.js +45 -8
  87. package/dist/src/flow/compaction/extract.d.ts +4 -7
  88. package/dist/src/flow/compaction/extract.js +50 -10
  89. package/dist/src/flow/compaction/index.d.ts +13 -1
  90. package/dist/src/flow/compaction/index.js +70 -3
  91. package/dist/src/flow/compaction/input-guard.d.ts +24 -0
  92. package/dist/src/flow/compaction/input-guard.js +43 -0
  93. package/dist/src/flow/fold-planning.d.ts +36 -0
  94. package/dist/src/flow/fold-planning.js +83 -0
  95. package/dist/src/flow/hierarchy.d.ts +146 -0
  96. package/dist/src/flow/hierarchy.js +427 -0
  97. package/dist/src/flow/index.d.ts +1 -0
  98. package/dist/src/flow/index.js +2 -0
  99. package/dist/src/flow/run-artifacts.d.ts +102 -0
  100. package/dist/src/flow/run-artifacts.js +208 -0
  101. package/dist/src/generated/version.d.ts +1 -1
  102. package/dist/src/generated/version.js +1 -1
  103. package/dist/src/gsd/assessment-schema.d.ts +44 -0
  104. package/dist/src/gsd/assessment-schema.js +134 -0
  105. package/dist/src/gsd/capability-registry.d.ts +45 -0
  106. package/dist/src/gsd/capability-registry.js +337 -0
  107. package/dist/src/gsd/complexity-assessor.d.ts +39 -0
  108. package/dist/src/gsd/complexity-assessor.js +152 -0
  109. package/dist/src/gsd/config-bridge.d.ts +7 -0
  110. package/dist/src/gsd/config-bridge.js +114 -0
  111. package/dist/src/gsd/config-loader.d.ts +27 -0
  112. package/dist/src/gsd/config-loader.js +50 -0
  113. package/dist/src/gsd/council-context.d.ts +44 -0
  114. package/dist/src/gsd/council-context.js +114 -0
  115. package/dist/src/gsd/ee-closure.d.ts +28 -0
  116. package/dist/src/gsd/ee-closure.js +49 -0
  117. package/dist/src/gsd/flags.d.ts +55 -0
  118. package/dist/src/gsd/flags.js +83 -0
  119. package/dist/src/gsd/gsd-dispatch.d.ts +58 -0
  120. package/dist/src/gsd/gsd-dispatch.js +131 -0
  121. package/dist/src/gsd/gsd-runtime.d.ts +22 -0
  122. package/dist/src/gsd/gsd-runtime.js +37 -0
  123. package/dist/src/gsd/host-adapter.d.ts +11 -0
  124. package/dist/src/gsd/host-adapter.js +29 -0
  125. package/dist/src/gsd/index.d.ts +24 -1
  126. package/dist/src/gsd/index.js +27 -0
  127. package/dist/src/gsd/loop-host-contract.d.ts +21 -0
  128. package/dist/src/gsd/loop-host-contract.js +39 -0
  129. package/dist/src/gsd/loop-host.d.ts +69 -0
  130. package/dist/src/gsd/loop-host.js +245 -0
  131. package/dist/src/gsd/loop-resolver.d.ts +36 -0
  132. package/dist/src/gsd/loop-resolver.js +79 -0
  133. package/dist/src/gsd/model-tier.d.ts +13 -0
  134. package/dist/src/gsd/model-tier.js +45 -0
  135. package/dist/src/gsd/mutation-gate.d.ts +16 -0
  136. package/dist/src/gsd/mutation-gate.js +41 -0
  137. package/dist/src/gsd/native-roadmap.d.ts +89 -0
  138. package/dist/src/gsd/native-roadmap.js +343 -0
  139. package/dist/src/gsd/native-state.d.ts +47 -0
  140. package/dist/src/gsd/native-state.js +220 -0
  141. package/dist/src/gsd/paths.d.ts +23 -0
  142. package/dist/src/gsd/paths.js +66 -0
  143. package/dist/src/gsd/phase-dag.d.ts +12 -0
  144. package/dist/src/gsd/phase-dag.js +94 -0
  145. package/dist/src/gsd/phase-sync.d.ts +42 -0
  146. package/dist/src/gsd/phase-sync.js +321 -0
  147. package/dist/src/gsd/pil-gate-context.d.ts +13 -0
  148. package/dist/src/gsd/pil-gate-context.js +64 -0
  149. package/dist/src/gsd/pil-gate-critic.d.ts +19 -0
  150. package/dist/src/gsd/pil-gate-critic.js +74 -0
  151. package/dist/src/gsd/plan-council-prompts.d.ts +25 -0
  152. package/dist/src/gsd/plan-council-prompts.js +79 -0
  153. package/dist/src/gsd/plan-council.d.ts +44 -0
  154. package/dist/src/gsd/plan-council.js +251 -0
  155. package/dist/src/gsd/plan-gate-vocabulary.d.ts +40 -0
  156. package/dist/src/gsd/plan-gate-vocabulary.js +64 -0
  157. package/dist/src/gsd/product-workspace.d.ts +13 -0
  158. package/dist/src/gsd/product-workspace.js +124 -0
  159. package/dist/src/gsd/ship-bridge.d.ts +25 -0
  160. package/dist/src/gsd/ship-bridge.js +65 -0
  161. package/dist/src/gsd/state-document.d.ts +40 -0
  162. package/dist/src/gsd/state-document.js +163 -0
  163. package/dist/src/gsd/verdict-schema.d.ts +39 -0
  164. package/dist/src/gsd/verdict-schema.js +144 -0
  165. package/dist/src/gsd/verify-context.d.ts +22 -0
  166. package/dist/src/gsd/verify-context.js +27 -0
  167. package/dist/src/gsd/verify-council-prompts.d.ts +19 -0
  168. package/dist/src/gsd/verify-council-prompts.js +85 -0
  169. package/dist/src/gsd/verify-council.d.ts +25 -0
  170. package/dist/src/gsd/verify-council.js +119 -0
  171. package/dist/src/gsd/verify-gate-vocabulary.d.ts +25 -0
  172. package/dist/src/gsd/verify-gate-vocabulary.js +46 -0
  173. package/dist/src/gsd/workflow-engine.d.ts +60 -0
  174. package/dist/src/gsd/workflow-engine.js +207 -0
  175. package/dist/src/gsd/workflow-tools.d.ts +13 -0
  176. package/dist/src/gsd/workflow-tools.js +277 -0
  177. package/dist/src/hooks/index.js +1 -1
  178. package/dist/src/index.js +44 -11
  179. package/dist/src/maintain/pr-builder.js +23 -13
  180. package/dist/src/mcp/auto-setup.js +57 -32
  181. package/dist/src/mcp/client-pool.js +1 -1
  182. package/dist/src/mcp/ee-tools.js +1 -0
  183. package/dist/src/mcp/research-onboarding.js +8 -7
  184. package/dist/src/mcp/runtime.js +34 -2
  185. package/dist/src/models/catalog-client.d.ts +87 -0
  186. package/dist/src/models/catalog-client.js +105 -38
  187. package/dist/src/models/catalog.json +528 -265
  188. package/dist/src/models/registry.d.ts +22 -7
  189. package/dist/src/models/registry.js +73 -10
  190. package/dist/src/ops/doctor.js +1 -1
  191. package/dist/src/orchestrator/auto-commit.js +1 -1
  192. package/dist/src/orchestrator/batch-turn-runner.js +2 -2
  193. package/dist/src/orchestrator/cache-prefix.d.ts +67 -0
  194. package/dist/src/orchestrator/cache-prefix.js +83 -0
  195. package/dist/src/orchestrator/compact-request.d.ts +32 -0
  196. package/dist/src/orchestrator/compact-request.js +41 -0
  197. package/dist/src/orchestrator/compaction.d.ts +10 -0
  198. package/dist/src/orchestrator/compaction.js +27 -7
  199. package/dist/src/orchestrator/council-manager.d.ts +12 -3
  200. package/dist/src/orchestrator/council-manager.js +65 -24
  201. package/dist/src/orchestrator/cross-turn-dedup.d.ts +6 -0
  202. package/dist/src/orchestrator/cross-turn-dedup.js +22 -1
  203. package/dist/src/orchestrator/error-utils.d.ts +29 -0
  204. package/dist/src/orchestrator/error-utils.js +132 -24
  205. package/dist/src/orchestrator/grounding-check.js +39 -1
  206. package/dist/src/orchestrator/message-processor.js +242 -33
  207. package/dist/src/orchestrator/orchestrator.d.ts +39 -3
  208. package/dist/src/orchestrator/orchestrator.js +651 -102
  209. package/dist/src/orchestrator/preprocessor.js +1 -1
  210. package/dist/src/orchestrator/proactive-compact-detector.d.ts +26 -0
  211. package/dist/src/orchestrator/proactive-compact-detector.js +36 -0
  212. package/dist/src/orchestrator/prompts.js +17 -17
  213. package/dist/src/orchestrator/reactive-delegation.d.ts +39 -0
  214. package/dist/src/orchestrator/reactive-delegation.js +59 -0
  215. package/dist/src/orchestrator/retry-classifier.d.ts +2 -1
  216. package/dist/src/orchestrator/retry-classifier.js +46 -2
  217. package/dist/src/orchestrator/safety-intercept.d.ts +45 -0
  218. package/dist/src/orchestrator/safety-intercept.js +55 -0
  219. package/dist/src/orchestrator/scope-reminder.js +1 -1
  220. package/dist/src/orchestrator/session-experience.d.ts +2 -1
  221. package/dist/src/orchestrator/session-experience.js +2 -1
  222. package/dist/src/orchestrator/should-run-gate.d.ts +5 -0
  223. package/dist/src/orchestrator/should-run-gate.js +18 -0
  224. package/dist/src/orchestrator/stall-watchdog.d.ts +24 -3
  225. package/dist/src/orchestrator/stall-watchdog.js +47 -13
  226. package/dist/src/orchestrator/stream-runner.js +62 -29
  227. package/dist/src/orchestrator/sub-agent-cap.d.ts +13 -1
  228. package/dist/src/orchestrator/sub-agent-cap.js +16 -1
  229. package/dist/src/orchestrator/sub-agent-model-tier.d.ts +13 -1
  230. package/dist/src/orchestrator/sub-agent-model-tier.js +16 -2
  231. package/dist/src/orchestrator/subagent-compactor.d.ts +53 -1
  232. package/dist/src/orchestrator/subagent-compactor.js +126 -15
  233. package/dist/src/orchestrator/tool-engine.d.ts +22 -0
  234. package/dist/src/orchestrator/tool-engine.js +620 -56
  235. package/dist/src/orchestrator/tool-limit-auto-recover.d.ts +22 -0
  236. package/dist/src/orchestrator/tool-limit-auto-recover.js +30 -0
  237. package/dist/src/orchestrator/turn-runner-deps.d.ts +19 -0
  238. package/dist/src/orchestrator/turn-watchdog.d.ts +37 -0
  239. package/dist/src/orchestrator/turn-watchdog.js +55 -0
  240. package/dist/src/pil/agent-operating-contract.d.ts +1 -1
  241. package/dist/src/pil/agent-operating-contract.js +1 -1
  242. package/dist/src/pil/cheap-model-playbook.d.ts +1 -1
  243. package/dist/src/pil/cheap-model-playbook.js +5 -1
  244. package/dist/src/pil/cheap-model-workbooks.d.ts +1 -1
  245. package/dist/src/pil/cheap-model-workbooks.js +1 -1
  246. package/dist/src/pil/discovery-types.d.ts +1 -0
  247. package/dist/src/pil/discovery.js +16 -11
  248. package/dist/src/pil/layer1-intent.d.ts +18 -6
  249. package/dist/src/pil/layer1-intent.js +66 -757
  250. package/dist/src/pil/layer15-context-scan.js +15 -1
  251. package/dist/src/pil/layer3-ee-injection.js +23 -8
  252. package/dist/src/pil/layer4-gsd.js +69 -16
  253. package/dist/src/pil/layer5-context.js +7 -3
  254. package/dist/src/pil/layer6-output.d.ts +23 -0
  255. package/dist/src/pil/layer6-output.js +5 -1
  256. package/dist/src/pil/llm-classify.d.ts +33 -2
  257. package/dist/src/pil/llm-classify.js +123 -131
  258. package/dist/src/pil/native-capabilities-workbook.d.ts +1 -1
  259. package/dist/src/pil/native-capabilities-workbook.js +1 -0
  260. package/dist/src/pil/pipeline.js +34 -2
  261. package/dist/src/pil/response-tools.js +5 -3
  262. package/dist/src/pil/schema.d.ts +1 -0
  263. package/dist/src/pil/schema.js +2 -0
  264. package/dist/src/pil/types.d.ts +18 -0
  265. package/dist/src/playbook/directives.d.ts +4 -0
  266. package/dist/src/playbook/directives.js +17 -5
  267. package/dist/src/product-loop/backlog-builder.d.ts +14 -1
  268. package/dist/src/product-loop/backlog-builder.js +30 -6
  269. package/dist/src/product-loop/discovery-context-format.js +3 -1
  270. package/dist/src/product-loop/discovery-ecosystem.js +4 -1
  271. package/dist/src/product-loop/discovery-interview.js +32 -3
  272. package/dist/src/product-loop/discovery-schema.js +5 -1
  273. package/dist/src/product-loop/ideal-trace.d.ts +7 -0
  274. package/dist/src/product-loop/ideal-trace.js +64 -0
  275. package/dist/src/product-loop/index.d.ts +13 -1
  276. package/dist/src/product-loop/index.js +333 -52
  277. package/dist/src/product-loop/loop-driver.d.ts +7 -0
  278. package/dist/src/product-loop/loop-driver.js +310 -99
  279. package/dist/src/product-loop/phase-plan.d.ts +5 -0
  280. package/dist/src/product-loop/phase-plan.js +39 -2
  281. package/dist/src/product-loop/phase-runner.js +9 -1
  282. package/dist/src/product-loop/sprint-runner.d.ts +111 -0
  283. package/dist/src/product-loop/sprint-runner.js +559 -16
  284. package/dist/src/product-loop/types.d.ts +36 -5
  285. package/dist/src/providers/adapter.d.ts +1 -1
  286. package/dist/src/providers/adapter.js +3 -4
  287. package/dist/src/providers/auth/browser-flow.d.ts +1 -1
  288. package/dist/src/providers/auth/browser-flow.js +1 -1
  289. package/dist/src/providers/auth/openai-oauth.js +1 -1
  290. package/dist/src/providers/auth/registry.js +0 -34
  291. package/dist/src/providers/auth/token-store.js +4 -1
  292. package/dist/src/providers/auth/types.d.ts +1 -1
  293. package/dist/src/providers/auth/types.js +1 -1
  294. package/dist/src/providers/capabilities.d.ts +24 -5
  295. package/dist/src/providers/capabilities.js +42 -24
  296. package/dist/src/providers/endpoints.d.ts +2 -2
  297. package/dist/src/providers/endpoints.js +11 -10
  298. package/dist/src/providers/keychain.d.ts +1 -1
  299. package/dist/src/providers/keychain.js +7 -9
  300. package/dist/src/providers/mcp-vision-bridge.js +56 -146
  301. package/dist/src/providers/openai-compatible.js +8 -1
  302. package/dist/src/providers/pricing.d.ts +2 -2
  303. package/dist/src/providers/pricing.js +3 -13
  304. package/dist/src/providers/runtime.d.ts +27 -2
  305. package/dist/src/providers/runtime.js +78 -15
  306. package/dist/src/providers/strategies/base.strategy.d.ts +16 -0
  307. package/dist/src/providers/strategies/base.strategy.js +24 -1
  308. package/dist/src/providers/strategies/{siliconflow.strategy.d.ts → opencode-go.strategy.d.ts} +3 -3
  309. package/dist/src/providers/strategies/opencode-go.strategy.js +83 -0
  310. package/dist/src/providers/strategies/registry.js +4 -4
  311. package/dist/src/providers/strategies/thinking-mode.d.ts +109 -0
  312. package/dist/src/providers/strategies/thinking-mode.js +280 -1
  313. package/dist/src/providers/strategies/zai.strategy.d.ts +14 -0
  314. package/dist/src/providers/strategies/zai.strategy.js +44 -0
  315. package/dist/src/providers/types.d.ts +5 -6
  316. package/dist/src/providers/types.js +2 -2
  317. package/dist/src/providers/vision-backend.d.ts +47 -0
  318. package/dist/src/providers/vision-backend.js +258 -0
  319. package/dist/src/providers/vision-proxy.d.ts +22 -9
  320. package/dist/src/providers/vision-proxy.js +63 -132
  321. package/dist/src/providers/wire-debug.js +95 -0
  322. package/dist/src/router/decide.d.ts +13 -0
  323. package/dist/src/router/decide.js +138 -36
  324. package/dist/src/router/peak-hour.d.ts +38 -0
  325. package/dist/src/router/peak-hour.js +107 -0
  326. package/dist/src/router/step-router.js +3 -2
  327. package/dist/src/router/warm.js +4 -5
  328. package/dist/src/scaffold/continuation-prompt.d.ts +11 -0
  329. package/dist/src/scaffold/continuation-prompt.js +26 -0
  330. package/dist/src/scaffold/point-to-existing.d.ts +21 -0
  331. package/dist/src/scaffold/point-to-existing.js +25 -0
  332. package/dist/src/self-qa/agentic-loop.js +3 -3
  333. package/dist/src/{ui/state → state}/active-run.d.ts +19 -0
  334. package/dist/src/{ui/state → state}/active-run.js +21 -0
  335. package/dist/src/{ui/status-bar/store.d.ts → state/status-bar-store.d.ts} +4 -1
  336. package/dist/src/{ui/status-bar/store.js → state/status-bar-store.js} +12 -9
  337. package/dist/src/state/turn-trace.d.ts +43 -0
  338. package/dist/src/state/turn-trace.js +32 -0
  339. package/dist/src/storage/db.js +2 -1
  340. package/dist/src/storage/index.d.ts +1 -1
  341. package/dist/src/storage/index.js +1 -1
  342. package/dist/src/storage/interaction-log.d.ts +1 -1
  343. package/dist/src/storage/migrations.js +71 -1
  344. package/dist/src/storage/sessions.d.ts +28 -10
  345. package/dist/src/storage/sessions.js +78 -21
  346. package/dist/src/storage/transcript-view.js +1 -1
  347. package/dist/src/storage/transcript.d.ts +51 -0
  348. package/dist/src/storage/transcript.js +284 -13
  349. package/dist/src/tools/file.d.ts +15 -0
  350. package/dist/src/tools/file.js +32 -0
  351. package/dist/src/tools/native-tools.js +5 -0
  352. package/dist/src/tools/registry.d.ts +3 -0
  353. package/dist/src/tools/registry.js +460 -22
  354. package/dist/src/tools/research.d.ts +29 -0
  355. package/dist/src/tools/research.js +233 -0
  356. package/dist/src/types/index.d.ts +118 -3
  357. package/dist/src/ui/app.js +0 -0
  358. package/dist/src/ui/cards/product-status-card.js +1 -1
  359. package/dist/src/ui/components/bubble-body-guard.d.ts +27 -0
  360. package/dist/src/ui/components/bubble-body-guard.js +50 -0
  361. package/dist/src/ui/components/context-rail.d.ts +26 -0
  362. package/dist/src/ui/components/context-rail.js +33 -0
  363. package/dist/src/ui/components/council-conclusion-card.d.ts +73 -0
  364. package/dist/src/ui/components/council-conclusion-card.js +420 -0
  365. package/dist/src/ui/components/council-debate-pill.d.ts +36 -0
  366. package/dist/src/ui/components/council-debate-pill.js +34 -0
  367. package/dist/src/ui/components/council-info-card.js +2 -2
  368. package/dist/src/ui/components/council-leader-bubble.d.ts +10 -3
  369. package/dist/src/ui/components/council-leader-bubble.js +21 -11
  370. package/dist/src/ui/components/council-message-bubble.d.ts +15 -2
  371. package/dist/src/ui/components/council-message-bubble.js +16 -15
  372. package/dist/src/ui/components/council-phase-timeline.d.ts +9 -1
  373. package/dist/src/ui/components/council-phase-timeline.js +49 -15
  374. package/dist/src/ui/components/council-placeholder-bubble.d.ts +16 -9
  375. package/dist/src/ui/components/council-placeholder-bubble.js +32 -29
  376. package/dist/src/ui/components/council-question-card.js +12 -12
  377. package/dist/src/ui/components/council-rail-rounds.d.ts +26 -0
  378. package/dist/src/ui/components/council-rail-rounds.js +57 -0
  379. package/dist/src/ui/components/council-round-group.d.ts +38 -0
  380. package/dist/src/ui/components/council-round-group.js +88 -0
  381. package/dist/src/ui/components/council-status-list.d.ts +3 -1
  382. package/dist/src/ui/components/council-status-list.js +36 -24
  383. package/dist/src/ui/components/council-synthesis-banner.d.ts +7 -2
  384. package/dist/src/ui/components/council-synthesis-banner.js +20 -5
  385. package/dist/src/ui/components/halt-recovery-card.js +9 -5
  386. package/dist/src/ui/components/jump-to-latest-pill.d.ts +11 -0
  387. package/dist/src/ui/components/jump-to-latest-pill.js +14 -0
  388. package/dist/src/ui/components/prompt-box.js +18 -16
  389. package/dist/src/ui/components/session-tree-card.d.ts +14 -0
  390. package/dist/src/ui/components/session-tree-card.js +46 -0
  391. package/dist/src/ui/components/slash-inline-menu.d.ts +12 -0
  392. package/dist/src/ui/components/slash-inline-menu.js +26 -5
  393. package/dist/src/ui/components/task-list-panel.d.ts +14 -1
  394. package/dist/src/ui/components/task-list-panel.js +22 -2
  395. package/dist/src/ui/containers/modals-layer.d.ts +2 -1
  396. package/dist/src/ui/hooks/use-session-picker.d.ts +3 -3
  397. package/dist/src/ui/mcp-modal.js +2 -4
  398. package/dist/src/ui/modals/api-key-modal.js +1 -1
  399. package/dist/src/ui/modals/connect-modal.js +4 -3
  400. package/dist/src/ui/modals/session-picker-modal.d.ts +2 -2
  401. package/dist/src/ui/modals/session-picker-modal.js +3 -5
  402. package/dist/src/ui/picker-providers.d.ts +1 -1
  403. package/dist/src/ui/picker-providers.js +1 -1
  404. package/dist/src/ui/primitives/index.d.ts +1 -0
  405. package/dist/src/ui/primitives/index.js +2 -0
  406. package/dist/src/ui/primitives/semantic-primitives.d.ts +76 -0
  407. package/dist/src/ui/primitives/semantic-primitives.js +81 -0
  408. package/dist/src/ui/slash/compact.js +5 -7
  409. package/dist/src/ui/slash/cost.js +1 -1
  410. package/dist/src/ui/slash/council.js +19 -1
  411. package/dist/src/ui/slash/debug.d.ts +3 -31
  412. package/dist/src/ui/slash/debug.js +9 -20
  413. package/dist/src/ui/slash/ideal.d.ts +6 -2
  414. package/dist/src/ui/slash/ideal.js +97 -7
  415. package/dist/src/ui/slash/menu-items.d.ts +7 -0
  416. package/dist/src/ui/slash/menu-items.js +12 -18
  417. package/dist/src/ui/slash/registry.d.ts +2 -0
  418. package/dist/src/ui/slash/registry.js +4 -0
  419. package/dist/src/ui/status-bar/cache-hit.d.ts +6 -0
  420. package/dist/src/ui/status-bar/cache-hit.js +9 -0
  421. package/dist/src/ui/status-bar/index.d.ts +1 -1
  422. package/dist/src/ui/status-bar/index.js +7 -3
  423. package/dist/src/ui/status-bar/usd-meter.d.ts +5 -4
  424. package/dist/src/ui/status-bar/usd-meter.js +6 -4
  425. package/dist/src/ui/theme.d.ts +1 -0
  426. package/dist/src/ui/theme.js +2 -0
  427. package/dist/src/ui/types.d.ts +7 -0
  428. package/dist/src/ui/use-app-logic.js +0 -0
  429. package/dist/src/ui/utils/format.d.ts +14 -0
  430. package/dist/src/ui/utils/format.js +23 -3
  431. package/dist/src/usage/downgrade.js +2 -2
  432. package/dist/src/usage/product-ledger.js +2 -2
  433. package/dist/src/utils/install-manager.js +2 -1
  434. package/dist/src/utils/logger.js +2 -2
  435. package/dist/src/utils/permission-mode.js +5 -3
  436. package/dist/src/utils/redactor.js +1 -1
  437. package/dist/src/utils/settings.d.ts +153 -5
  438. package/dist/src/utils/settings.js +233 -29
  439. package/dist/src/utils/visible-retry.d.ts +11 -0
  440. package/dist/src/utils/visible-retry.js +10 -1
  441. package/dist/src/verify/entrypoint.d.ts +1 -1
  442. package/dist/src/verify/entrypoint.js +1 -1
  443. package/dist/src/verify/recipes.d.ts +13 -0
  444. package/dist/src/verify/recipes.js +15 -0
  445. package/package.json +135 -132
  446. package/dist/src/providers/auth/gcloud.d.ts +0 -28
  447. package/dist/src/providers/auth/gcloud.js +0 -102
  448. package/dist/src/providers/auth/gemini-oauth.d.ts +0 -82
  449. package/dist/src/providers/auth/gemini-oauth.js +0 -472
  450. package/dist/src/providers/gemini.d.ts +0 -11
  451. package/dist/src/providers/gemini.js +0 -45
  452. package/dist/src/providers/siliconflow-sse-repair.d.ts +0 -58
  453. package/dist/src/providers/siliconflow-sse-repair.js +0 -177
  454. package/dist/src/providers/strategies/google.strategy.d.ts +0 -22
  455. package/dist/src/providers/strategies/google.strategy.js +0 -174
  456. package/dist/src/providers/strategies/siliconflow.strategy.js +0 -29
  457. package/dist/src/ui/containers/chat-feed.d.ts +0 -40
  458. package/dist/src/ui/containers/chat-feed.js +0 -66
package/package.json CHANGED
@@ -1,132 +1,135 @@
1
- {
2
- "name": "muonroi-cli",
3
- "workspaces": [
4
- "packages/*"
5
- ],
6
- "version": "1.8.4",
7
- "description": "BYOK AI coding agent with multi-model council debate, role-based routing, and auto-compact.",
8
- "repository": {
9
- "type": "git",
10
- "url": "git+https://github.com/muonroi/muonroi-cli.git"
11
- },
12
- "homepage": "https://github.com/muonroi/muonroi-cli#readme",
13
- "bugs": {
14
- "url": "https://github.com/muonroi/muonroi-cli/issues"
15
- },
16
- "type": "module",
17
- "main": "dist/src/index.js",
18
- "exports": {
19
- ".": {
20
- "import": "./dist/src/index.js",
21
- "types": "./dist/src/index.d.ts"
22
- }
23
- },
24
- "bin": {
25
- "muonroi-cli": "dist/src/index.js",
26
- "mu": "dist/src/index.js"
27
- },
28
- "scripts": {
29
- "dev": "node scripts/sync-version.cjs && bun run src/index.ts",
30
- "build": "node scripts/sync-version.cjs && tsc && node scripts/fix-extensions.cjs && node -e \"require('fs').cpSync('src/models/catalog.json', 'dist/src/models/catalog.json', { recursive: true })\"",
31
- "build:binary": "bun build --compile --outfile ./dist/muonroi-cli-standalone ./src/index.ts",
32
- "start": "bun run dist/index.js",
33
- "typecheck": "tsc --noEmit",
34
- "test": "bunx vitest run",
35
- "test:watch": "bunx vitest",
36
- "test:harness": "bunx vitest -c vitest.harness.config.ts run tests/harness/",
37
- "test:core": "bunx vitest run packages/agent-harness-core/__tests__/",
38
- "test:harness-react": "bunx vitest -c packages/agent-harness-react/vitest.config.ts run",
39
- "test:harness-angular": "bunx vitest -c vitest.harness-angular.config.ts run tests/harness-angular/",
40
- "test:angular": "bunx vitest -c packages/agent-harness-angular/vitest.config.ts run",
41
- "build:core": "cd packages/agent-harness-core && bun run build",
42
- "lint": "biome check src/",
43
- "format": "biome format src/",
44
- "format:fix": "biome format --write src/",
45
- "lint:fix": "biome check --fix src/",
46
- "lint:semantic": "bun scripts/check-semantic-wrap.ts",
47
- "lint:harness-skips": "bun run scripts/check-harness-skips.ts",
48
- "lint:harness-skips:strict": "bun run scripts/check-harness-skips.ts --strict",
49
- "pre-commit": "lint-staged",
50
- "prepare": "husky",
51
- "postinstall": "node scripts/postinstall.cjs || exit 0",
52
- "ee:ingest-bb": "bun run scripts/ingest-bb-to-ee.mts",
53
- "clean:meta": "git clean -fdX -- .scratch chat-export-*.txt .ee-ingest-state.json .brain-*.tmp 2>/dev/null || echo 'clean:meta: no matching untracked ignored files or git unavailable'"
54
- },
55
- "lint-staged": {
56
- "*.{ts,tsx,js,mjs,cjs,json}": "biome check --write --no-errors-on-unmatched --max-diagnostics=200"
57
- },
58
- "files": [
59
- "dist/",
60
- "!dist/**/*.exe",
61
- "!dist/**/*.map",
62
- "!dist/**/__tests__/**",
63
- "!dist/**/__test-helpers__/**",
64
- "!dist/**/__test-stubs__/**",
65
- "!dist/**/*.test.js",
66
- "!dist/**/*.test.d.ts",
67
- "!dist/**/*.spec.js",
68
- "!dist/**/*.spec.d.ts",
69
- "scripts/postinstall.cjs"
70
- ],
71
- "keywords": [
72
- "cli",
73
- "agent",
74
- "ai",
75
- "coding",
76
- "terminal",
77
- "opentui"
78
- ],
79
- "author": "muonroi",
80
- "license": "UNLICENSED",
81
- "dependencies": {
82
- "@ai-sdk/anthropic": "3.0.72",
83
- "@ai-sdk/google": "3.0.65",
84
- "@ai-sdk/mcp": "1.0.37",
85
- "@ai-sdk/openai": "3.0.54",
86
- "@ai-sdk/openai-compatible": "2.0.42",
87
- "@ai-sdk/provider": "3.0.9",
88
- "@ai-sdk/provider-utils": "4.0.24",
89
- "@modelcontextprotocol/sdk": "1.29.0",
90
- "@npmcli/arborist": "^9.4.3",
91
- "@opentui/core": "0.1.107",
92
- "@opentui/react": "0.1.107",
93
- "@qdrant/js-client-rest": "1.17.0",
94
- "ai": "6.0.169",
95
- "better-sqlite3": "^12.10.0",
96
- "commander": "^12.1.0",
97
- "diff": "^8.0.3",
98
- "fast-xml-parser": "^4.4.1",
99
- "gpt-tokenizer": "^3.4.0",
100
- "keytar": "7.9.0",
101
- "ollama-ai-provider-v2": "1.5.5",
102
- "proper-lockfile": "^4.1.2",
103
- "react": "19.2.5",
104
- "ripgrep": "^0.3.1",
105
- "semver": "^7.7.4",
106
- "tree-sitter-python": "^0.25.0",
107
- "tree-sitter-typescript": "^0.23.2",
108
- "vscode-jsonrpc": "8.2.1",
109
- "vscode-languageserver-types": "3.17.5",
110
- "web-tree-sitter": "0.26.8",
111
- "zod": "^4.3.6"
112
- },
113
- "devDependencies": {
114
- "@biomejs/biome": "2.4.13",
115
- "@types/better-sqlite3": "^7.6.13",
116
- "@types/diff": "^8.0.0",
117
- "@types/node": "^22.19.15",
118
- "@types/npmcli__arborist": "^6.3.3",
119
- "@types/proper-lockfile": "^4.1.4",
120
- "@types/react": "^19.2.14",
121
- "@types/semver": "^7.7.1",
122
- "ajv": "^8.20.0",
123
- "husky": "9.1.7",
124
- "lint-staged": "16.4.0",
125
- "typescript": "5.9.3",
126
- "vitest": "4.1.5"
127
- },
128
- "engines": {
129
- "node": ">=20.0.0"
130
- },
131
- "preferGlobal": true
132
- }
1
+ {
2
+ "name": "muonroi-cli",
3
+ "workspaces": [
4
+ "packages/*"
5
+ ],
6
+ "version": "1.8.5",
7
+ "description": "BYOK AI coding agent with multi-model council debate, role-based routing, and auto-compact.",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/muonroi/muonroi-cli.git"
11
+ },
12
+ "homepage": "https://github.com/muonroi/muonroi-cli#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/muonroi/muonroi-cli/issues"
15
+ },
16
+ "type": "module",
17
+ "main": "dist/src/index.js",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/src/index.js",
21
+ "types": "./dist/src/index.d.ts"
22
+ }
23
+ },
24
+ "bin": {
25
+ "muonroi-cli": "dist/src/index.js",
26
+ "mu": "dist/src/index.js"
27
+ },
28
+ "scripts": {
29
+ "dev": "node scripts/sync-version.cjs && bun run src/index.ts",
30
+ "build": "node scripts/sync-version.cjs && tsc && node scripts/fix-extensions.cjs && node -e \"require('fs').cpSync('src/models/catalog.json', 'dist/src/models/catalog.json', { recursive: true })\"",
31
+ "build:binary": "bun build --compile --outfile ./dist/muonroi-cli-standalone ./src/index.ts",
32
+ "start": "bun run dist/index.js",
33
+ "typecheck": "tsc --noEmit",
34
+ "ci:local": "rm -rf /tmp/flow /tmp/gsd-* /tmp/muonroi-* /tmp/sprint-runner-* 2>/dev/null; bun install --frozen-lockfile && bun --filter @muonroi/agent-harness-core build && bunx tsc --noEmit && bunx vitest run && DBUS_SESSION_BUS_ADDRESS=unix:path=/dev/null GNOME_KEYRING_CONTROL= bunx vitest -c vitest.harness.config.ts run tests/harness/",
35
+ "test": "bunx vitest run",
36
+ "test:watch": "bunx vitest",
37
+ "test:harness": "bunx vitest -c vitest.harness.config.ts run tests/harness/",
38
+ "test:core": "bunx vitest run packages/agent-harness-core/__tests__/",
39
+ "test:harness-react": "bunx vitest -c packages/agent-harness-react/vitest.config.ts run",
40
+ "test:harness-angular": "bunx vitest -c vitest.harness-angular.config.ts run tests/harness-angular/",
41
+ "test:angular": "bunx vitest -c packages/agent-harness-angular/vitest.config.ts run",
42
+ "build:core": "cd packages/agent-harness-core && bun run build",
43
+ "lint": "biome check src/",
44
+ "format": "biome format src/",
45
+ "format:fix": "biome format --write src/",
46
+ "lint:fix": "biome check --fix src/",
47
+ "lint:semantic": "bun scripts/check-semantic-wrap.ts",
48
+ "lint:semantic:strict": "bun scripts/check-semantic-wrap.ts --strict",
49
+ "lint:harness-skips": "bun run scripts/check-harness-skips.ts",
50
+ "lint:harness-skips:strict": "bun run scripts/check-harness-skips.ts --strict",
51
+ "pre-commit": "lint-staged",
52
+ "prepare": "husky",
53
+ "postinstall": "node scripts/postinstall.cjs || exit 0",
54
+ "ee:ingest-bb": "bun run scripts/ingest-bb-to-ee.mts",
55
+ "clean:meta": "git clean -fdX -- .scratch chat-export-*.txt .ee-ingest-state.json .brain-*.tmp 2>/dev/null || echo 'clean:meta: no matching untracked ignored files or git unavailable'"
56
+ },
57
+ "lint-staged": {
58
+ "*.{ts,tsx,js,mjs,cjs,json}": "biome check --write --no-errors-on-unmatched --max-diagnostics=200"
59
+ },
60
+ "files": [
61
+ "dist/",
62
+ "!dist/**/*.exe",
63
+ "!dist/**/*.map",
64
+ "!dist/**/__tests__/**",
65
+ "!dist/**/__test-helpers__/**",
66
+ "!dist/**/__test-stubs__/**",
67
+ "!dist/**/*.test.js",
68
+ "!dist/**/*.test.d.ts",
69
+ "!dist/**/*.spec.js",
70
+ "!dist/**/*.spec.d.ts",
71
+ "scripts/postinstall.cjs"
72
+ ],
73
+ "keywords": [
74
+ "cli",
75
+ "agent",
76
+ "ai",
77
+ "coding",
78
+ "terminal",
79
+ "opentui"
80
+ ],
81
+ "author": "muonroi",
82
+ "license": "MIT",
83
+ "dependencies": {
84
+ "@ai-sdk/anthropic": "3.0.72",
85
+ "@ai-sdk/mcp": "1.0.37",
86
+ "@ai-sdk/openai": "3.0.54",
87
+ "@ai-sdk/openai-compatible": "2.0.42",
88
+ "@ai-sdk/provider": "3.0.9",
89
+ "@ai-sdk/provider-utils": "4.0.24",
90
+ "@modelcontextprotocol/sdk": "1.29.0",
91
+ "@npmcli/arborist": "^9.4.3",
92
+ "@opentui/core": "0.1.107",
93
+ "@opentui/react": "0.1.107",
94
+ "@qdrant/js-client-rest": "1.17.0",
95
+ "ai": "6.0.169",
96
+ "better-sqlite3": "^12.10.0",
97
+ "commander": "^12.1.0",
98
+ "diff": "^8.0.3",
99
+ "fast-xml-parser": "^4.4.1",
100
+ "gpt-tokenizer": "^3.4.0",
101
+ "keytar": "7.9.0",
102
+ "ollama-ai-provider-v2": "1.5.5",
103
+ "proper-lockfile": "^4.1.2",
104
+ "react": "19.2.5",
105
+ "ripgrep": "^0.3.1",
106
+ "semver": "^7.7.4",
107
+ "tree-sitter-python": "^0.25.0",
108
+ "tree-sitter-typescript": "^0.23.2",
109
+ "turndown": "^7.2.4",
110
+ "vscode-jsonrpc": "8.2.1",
111
+ "vscode-languageserver-types": "3.17.5",
112
+ "web-tree-sitter": "0.26.8",
113
+ "zod": "^4.3.6"
114
+ },
115
+ "devDependencies": {
116
+ "@biomejs/biome": "2.4.13",
117
+ "@types/better-sqlite3": "^7.6.13",
118
+ "@types/diff": "^8.0.0",
119
+ "@types/node": "^22.19.15",
120
+ "@types/npmcli__arborist": "^6.3.3",
121
+ "@types/proper-lockfile": "^4.1.4",
122
+ "@types/react": "^19.2.14",
123
+ "@types/semver": "^7.7.1",
124
+ "@types/turndown": "^5.0.6",
125
+ "ajv": "^8.20.0",
126
+ "husky": "9.1.7",
127
+ "lint-staged": "16.4.0",
128
+ "typescript": "5.9.3",
129
+ "vitest": "4.1.5"
130
+ },
131
+ "engines": {
132
+ "node": ">=20.0.0"
133
+ },
134
+ "preferGlobal": true
135
+ }
@@ -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>;