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.
Files changed (562) 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-filter.js +11 -0
  5. package/dist/packages/agent-harness-core/src/event-redact.js +7 -0
  6. package/dist/packages/agent-harness-core/src/event-tee.d.ts +64 -0
  7. package/dist/packages/agent-harness-core/src/event-tee.js +104 -0
  8. package/dist/packages/agent-harness-core/src/mcp-server.d.ts +25 -0
  9. package/dist/packages/agent-harness-core/src/mcp-server.js +169 -21
  10. package/dist/packages/agent-harness-core/src/predicate.d.ts +1 -1
  11. package/dist/packages/agent-harness-core/src/protocol.d.ts +90 -4
  12. package/dist/packages/agent-harness-core/src/protocol.js +15 -0
  13. package/dist/packages/agent-harness-core/src/visual-quality.d.ts +58 -0
  14. package/dist/packages/agent-harness-core/src/visual-quality.js +141 -0
  15. package/dist/packages/agent-harness-opentui/src/agent-mode.d.ts +6 -0
  16. package/dist/packages/agent-harness-opentui/src/agent-mode.js +14 -1
  17. package/dist/packages/agent-harness-opentui/src/input-bridge.d.ts +2 -10
  18. package/dist/packages/agent-harness-opentui/src/input-bridge.js +103 -16
  19. package/dist/packages/agent-harness-opentui/src/install.d.ts +8 -0
  20. package/dist/packages/agent-harness-opentui/src/install.js +10 -0
  21. package/dist/packages/agent-harness-opentui/src/semantic.js +12 -10
  22. package/dist/packages/agent-harness-opentui/src/visual-capture.d.ts +56 -0
  23. package/dist/packages/agent-harness-opentui/src/visual-capture.js +103 -0
  24. package/dist/src/agent-harness/mock-model.d.ts +38 -0
  25. package/dist/src/agent-harness/mock-model.js +69 -3
  26. package/dist/src/agent-harness/test-spawn.js +31 -0
  27. package/dist/src/chat/chat-keychain.d.ts +7 -12
  28. package/dist/src/chat/chat-keychain.js +19 -86
  29. package/dist/src/cli/config/screen-providers.js +1 -1
  30. package/dist/src/cli/cost-forensics.d.ts +10 -0
  31. package/dist/src/cli/cost-forensics.js +18 -3
  32. package/dist/src/cli/keys-bundle.d.ts +1 -1
  33. package/dist/src/cli/keys-bundle.js +1 -1
  34. package/dist/src/cli/keys.d.ts +10 -47
  35. package/dist/src/cli/keys.js +31 -399
  36. package/dist/src/council/clarifier.d.ts +31 -3
  37. package/dist/src/council/clarifier.js +220 -32
  38. package/dist/src/council/context.js +49 -15
  39. package/dist/src/council/debate-checkpoint.d.ts +129 -0
  40. package/dist/src/council/debate-checkpoint.js +176 -0
  41. package/dist/src/council/debate-planner.js +54 -5
  42. package/dist/src/council/debate-summary.d.ts +25 -0
  43. package/dist/src/council/debate-summary.js +85 -0
  44. package/dist/src/council/debate.d.ts +169 -2
  45. package/dist/src/council/debate.js +1265 -135
  46. package/dist/src/council/index.d.ts +108 -1
  47. package/dist/src/council/index.js +670 -197
  48. package/dist/src/council/leader.d.ts +26 -0
  49. package/dist/src/council/leader.js +150 -9
  50. package/dist/src/council/llm.d.ts +94 -0
  51. package/dist/src/council/llm.js +348 -55
  52. package/dist/src/council/panel-select.d.ts +30 -0
  53. package/dist/src/council/panel-select.js +82 -0
  54. package/dist/src/council/planner.js +40 -0
  55. package/dist/src/council/preflight.d.ts +17 -0
  56. package/dist/src/council/preflight.js +50 -2
  57. package/dist/src/council/prompts.d.ts +39 -4
  58. package/dist/src/council/prompts.js +256 -69
  59. package/dist/src/council/stance-recall.d.ts +42 -0
  60. package/dist/src/council/stance-recall.js +57 -0
  61. package/dist/src/council/strip-think.d.ts +17 -0
  62. package/dist/src/council/strip-think.js +33 -0
  63. package/dist/src/council/types.d.ts +138 -0
  64. package/dist/src/ee/artifact-cache.d.ts +16 -0
  65. package/dist/src/ee/artifact-cache.js +32 -0
  66. package/dist/src/ee/auth.d.ts +20 -0
  67. package/dist/src/ee/auth.js +54 -2
  68. package/dist/src/ee/bridge.d.ts +10 -0
  69. package/dist/src/ee/bridge.js +58 -0
  70. package/dist/src/ee/client.js +109 -21
  71. package/dist/src/ee/ee-onboarding.js +6 -26
  72. package/dist/src/ee/export-transcripts.d.ts +1 -0
  73. package/dist/src/ee/export-transcripts.js +8 -10
  74. package/dist/src/ee/extract-session.js +29 -0
  75. package/dist/src/ee/extract-style.d.ts +58 -0
  76. package/dist/src/ee/extract-style.js +270 -0
  77. package/dist/src/ee/recall-ledger.d.ts +9 -0
  78. package/dist/src/ee/recall-ledger.js +3 -0
  79. package/dist/src/ee/scope.d.ts +1 -0
  80. package/dist/src/ee/scope.js +26 -1
  81. package/dist/src/ee/search.d.ts +7 -0
  82. package/dist/src/ee/search.js +24 -0
  83. package/dist/src/ee/transcript-emit.js +2 -0
  84. package/dist/src/ee/types.d.ts +22 -0
  85. package/dist/src/ee/who-am-i-brain.d.ts +35 -0
  86. package/dist/src/ee/who-am-i-brain.js +220 -0
  87. package/dist/src/ee/who-am-i.d.ts +10 -3
  88. package/dist/src/ee/who-am-i.js +12 -0
  89. package/dist/src/ee/workflow-event.d.ts +48 -0
  90. package/dist/src/ee/workflow-event.js +81 -0
  91. package/dist/src/flow/compaction/compress.d.ts +3 -3
  92. package/dist/src/flow/compaction/compress.js +58 -8
  93. package/dist/src/flow/compaction/extract.d.ts +4 -7
  94. package/dist/src/flow/compaction/extract.js +50 -10
  95. package/dist/src/flow/compaction/index.d.ts +14 -1
  96. package/dist/src/flow/compaction/index.js +96 -3
  97. package/dist/src/flow/compaction/input-guard.d.ts +24 -0
  98. package/dist/src/flow/compaction/input-guard.js +43 -0
  99. package/dist/src/flow/compaction/progress.d.ts +35 -0
  100. package/dist/src/flow/compaction/progress.js +35 -0
  101. package/dist/src/flow/fold-planning.d.ts +36 -0
  102. package/dist/src/flow/fold-planning.js +83 -0
  103. package/dist/src/flow/hierarchy.d.ts +146 -0
  104. package/dist/src/flow/hierarchy.js +427 -0
  105. package/dist/src/flow/index.d.ts +1 -0
  106. package/dist/src/flow/index.js +2 -0
  107. package/dist/src/flow/run-artifacts.d.ts +102 -0
  108. package/dist/src/flow/run-artifacts.js +208 -0
  109. package/dist/src/generated/version.d.ts +1 -1
  110. package/dist/src/generated/version.js +1 -1
  111. package/dist/src/gsd/assessment-schema.d.ts +44 -0
  112. package/dist/src/gsd/assessment-schema.js +134 -0
  113. package/dist/src/gsd/capability-registry.d.ts +45 -0
  114. package/dist/src/gsd/capability-registry.js +337 -0
  115. package/dist/src/gsd/complexity-assessor.d.ts +39 -0
  116. package/dist/src/gsd/complexity-assessor.js +152 -0
  117. package/dist/src/gsd/config-bridge.d.ts +7 -0
  118. package/dist/src/gsd/config-bridge.js +114 -0
  119. package/dist/src/gsd/config-loader.d.ts +27 -0
  120. package/dist/src/gsd/config-loader.js +50 -0
  121. package/dist/src/gsd/council-context.d.ts +44 -0
  122. package/dist/src/gsd/council-context.js +114 -0
  123. package/dist/src/gsd/ee-closure.d.ts +28 -0
  124. package/dist/src/gsd/ee-closure.js +49 -0
  125. package/dist/src/gsd/flags.d.ts +66 -0
  126. package/dist/src/gsd/flags.js +102 -0
  127. package/dist/src/gsd/gsd-dispatch.d.ts +58 -0
  128. package/dist/src/gsd/gsd-dispatch.js +131 -0
  129. package/dist/src/gsd/gsd-runtime.d.ts +22 -0
  130. package/dist/src/gsd/gsd-runtime.js +37 -0
  131. package/dist/src/gsd/host-adapter.d.ts +11 -0
  132. package/dist/src/gsd/host-adapter.js +29 -0
  133. package/dist/src/gsd/index.d.ts +24 -1
  134. package/dist/src/gsd/index.js +27 -0
  135. package/dist/src/gsd/loop-host-contract.d.ts +21 -0
  136. package/dist/src/gsd/loop-host-contract.js +39 -0
  137. package/dist/src/gsd/loop-host.d.ts +69 -0
  138. package/dist/src/gsd/loop-host.js +245 -0
  139. package/dist/src/gsd/loop-resolver.d.ts +36 -0
  140. package/dist/src/gsd/loop-resolver.js +79 -0
  141. package/dist/src/gsd/model-tier.d.ts +13 -0
  142. package/dist/src/gsd/model-tier.js +45 -0
  143. package/dist/src/gsd/mutation-gate.d.ts +16 -0
  144. package/dist/src/gsd/mutation-gate.js +41 -0
  145. package/dist/src/gsd/native-roadmap.d.ts +89 -0
  146. package/dist/src/gsd/native-roadmap.js +343 -0
  147. package/dist/src/gsd/native-state.d.ts +47 -0
  148. package/dist/src/gsd/native-state.js +220 -0
  149. package/dist/src/gsd/paths.d.ts +23 -0
  150. package/dist/src/gsd/paths.js +66 -0
  151. package/dist/src/gsd/phase-dag.d.ts +12 -0
  152. package/dist/src/gsd/phase-dag.js +94 -0
  153. package/dist/src/gsd/phase-sync.d.ts +42 -0
  154. package/dist/src/gsd/phase-sync.js +321 -0
  155. package/dist/src/gsd/pil-gate-context.d.ts +13 -0
  156. package/dist/src/gsd/pil-gate-context.js +64 -0
  157. package/dist/src/gsd/pil-gate-critic.d.ts +19 -0
  158. package/dist/src/gsd/pil-gate-critic.js +74 -0
  159. package/dist/src/gsd/plan-council-prompts.d.ts +25 -0
  160. package/dist/src/gsd/plan-council-prompts.js +79 -0
  161. package/dist/src/gsd/plan-council.d.ts +44 -0
  162. package/dist/src/gsd/plan-council.js +283 -0
  163. package/dist/src/gsd/plan-gate-vocabulary.d.ts +40 -0
  164. package/dist/src/gsd/plan-gate-vocabulary.js +64 -0
  165. package/dist/src/gsd/product-workspace.d.ts +13 -0
  166. package/dist/src/gsd/product-workspace.js +124 -0
  167. package/dist/src/gsd/ship-bridge.d.ts +25 -0
  168. package/dist/src/gsd/ship-bridge.js +65 -0
  169. package/dist/src/gsd/state-document.d.ts +40 -0
  170. package/dist/src/gsd/state-document.js +163 -0
  171. package/dist/src/gsd/verdict-schema.d.ts +39 -0
  172. package/dist/src/gsd/verdict-schema.js +144 -0
  173. package/dist/src/gsd/verify-context.d.ts +22 -0
  174. package/dist/src/gsd/verify-context.js +27 -0
  175. package/dist/src/gsd/verify-council-prompts.d.ts +19 -0
  176. package/dist/src/gsd/verify-council-prompts.js +85 -0
  177. package/dist/src/gsd/verify-council.d.ts +25 -0
  178. package/dist/src/gsd/verify-council.js +119 -0
  179. package/dist/src/gsd/verify-gate-vocabulary.d.ts +25 -0
  180. package/dist/src/gsd/verify-gate-vocabulary.js +46 -0
  181. package/dist/src/gsd/workflow-engine.d.ts +60 -0
  182. package/dist/src/gsd/workflow-engine.js +207 -0
  183. package/dist/src/gsd/workflow-tools.d.ts +13 -0
  184. package/dist/src/gsd/workflow-tools.js +277 -0
  185. package/dist/src/headless/council-answers.js +4 -0
  186. package/dist/src/hooks/index.js +1 -1
  187. package/dist/src/index.js +172 -270
  188. package/dist/src/lsp/builtins.js +3 -1
  189. package/dist/src/lsp/manager.d.ts +5 -1
  190. package/dist/src/lsp/manager.js +249 -3
  191. package/dist/src/lsp/npm-cache.d.ts +11 -1
  192. package/dist/src/lsp/npm-cache.js +17 -1
  193. package/dist/src/lsp/runtime.d.ts +6 -1
  194. package/dist/src/lsp/runtime.js +17 -1
  195. package/dist/src/lsp/types.d.ts +83 -1
  196. package/dist/src/lsp/types.js +10 -0
  197. package/dist/src/maintain/pr-builder.js +23 -13
  198. package/dist/src/mcp/auto-setup.js +57 -32
  199. package/dist/src/mcp/client-pool.js +44 -16
  200. package/dist/src/mcp/lsp-tools.d.ts +5 -1
  201. package/dist/src/mcp/lsp-tools.js +93 -2
  202. package/dist/src/mcp/mcp-keychain.d.ts +3 -5
  203. package/dist/src/mcp/mcp-keychain.js +9 -49
  204. package/dist/src/mcp/research-onboarding.js +8 -7
  205. package/dist/src/mcp/runtime.js +34 -2
  206. package/dist/src/mcp/setup-guide-text.d.ts +1 -1
  207. package/dist/src/mcp/setup-guide-text.js +22 -2
  208. package/dist/src/mcp/tools-server.d.ts +10 -0
  209. package/dist/src/mcp/tools-server.js +10 -2
  210. package/dist/src/models/catalog-client.d.ts +87 -0
  211. package/dist/src/models/catalog-client.js +105 -38
  212. package/dist/src/models/catalog.json +528 -265
  213. package/dist/src/models/registry.d.ts +22 -7
  214. package/dist/src/models/registry.js +73 -10
  215. package/dist/src/ops/doctor.js +1 -1
  216. package/dist/src/orchestrator/ask-user.d.ts +61 -0
  217. package/dist/src/orchestrator/ask-user.js +65 -0
  218. package/dist/src/orchestrator/auto-commit.js +1 -1
  219. package/dist/src/orchestrator/batch-turn-runner.js +2 -2
  220. package/dist/src/orchestrator/cache-prefix.d.ts +67 -0
  221. package/dist/src/orchestrator/cache-prefix.js +83 -0
  222. package/dist/src/orchestrator/compact-request.d.ts +32 -0
  223. package/dist/src/orchestrator/compact-request.js +41 -0
  224. package/dist/src/orchestrator/compaction.d.ts +12 -3
  225. package/dist/src/orchestrator/compaction.js +35 -15
  226. package/dist/src/orchestrator/council-manager.d.ts +12 -3
  227. package/dist/src/orchestrator/council-manager.js +74 -32
  228. package/dist/src/orchestrator/council-request.d.ts +49 -0
  229. package/dist/src/orchestrator/council-request.js +62 -0
  230. package/dist/src/orchestrator/cross-turn-dedup.d.ts +6 -0
  231. package/dist/src/orchestrator/cross-turn-dedup.js +22 -1
  232. package/dist/src/orchestrator/error-utils.d.ts +29 -0
  233. package/dist/src/orchestrator/error-utils.js +132 -24
  234. package/dist/src/orchestrator/grounding-check.js +39 -1
  235. package/dist/src/orchestrator/interactive-pause.d.ts +26 -0
  236. package/dist/src/orchestrator/interactive-pause.js +36 -0
  237. package/dist/src/orchestrator/message-processor.d.ts +4 -0
  238. package/dist/src/orchestrator/message-processor.js +268 -41
  239. package/dist/src/orchestrator/orchestrator.d.ts +64 -3
  240. package/dist/src/orchestrator/orchestrator.js +823 -120
  241. package/dist/src/orchestrator/preprocessor.js +3 -3
  242. package/dist/src/orchestrator/proactive-compact-detector.d.ts +26 -0
  243. package/dist/src/orchestrator/proactive-compact-detector.js +36 -0
  244. package/dist/src/orchestrator/prompts.js +17 -17
  245. package/dist/src/orchestrator/reactive-delegation.d.ts +39 -0
  246. package/dist/src/orchestrator/reactive-delegation.js +59 -0
  247. package/dist/src/orchestrator/retry-classifier.d.ts +2 -1
  248. package/dist/src/orchestrator/retry-classifier.js +46 -2
  249. package/dist/src/orchestrator/safety-askcard.d.ts +1 -1
  250. package/dist/src/orchestrator/safety-askcard.js +5 -2
  251. package/dist/src/orchestrator/safety-intercept.d.ts +50 -0
  252. package/dist/src/orchestrator/safety-intercept.js +62 -0
  253. package/dist/src/orchestrator/scope-reminder.js +1 -1
  254. package/dist/src/orchestrator/session-experience.d.ts +2 -1
  255. package/dist/src/orchestrator/session-experience.js +2 -1
  256. package/dist/src/orchestrator/should-run-gate.d.ts +5 -0
  257. package/dist/src/orchestrator/should-run-gate.js +18 -0
  258. package/dist/src/orchestrator/stall-watchdog.d.ts +31 -3
  259. package/dist/src/orchestrator/stall-watchdog.js +65 -10
  260. package/dist/src/orchestrator/stream-runner.d.ts +13 -3
  261. package/dist/src/orchestrator/stream-runner.js +115 -49
  262. package/dist/src/orchestrator/sub-agent-cap.d.ts +13 -1
  263. package/dist/src/orchestrator/sub-agent-cap.js +16 -1
  264. package/dist/src/orchestrator/sub-agent-model-tier.d.ts +13 -1
  265. package/dist/src/orchestrator/sub-agent-model-tier.js +16 -2
  266. package/dist/src/orchestrator/subagent-compactor.d.ts +53 -1
  267. package/dist/src/orchestrator/subagent-compactor.js +126 -15
  268. package/dist/src/orchestrator/tool-engine.d.ts +41 -0
  269. package/dist/src/orchestrator/tool-engine.js +846 -66
  270. package/dist/src/orchestrator/tool-limit-auto-recover.d.ts +22 -0
  271. package/dist/src/orchestrator/tool-limit-auto-recover.js +30 -0
  272. package/dist/src/orchestrator/turn-runner-deps.d.ts +19 -0
  273. package/dist/src/orchestrator/turn-watchdog.d.ts +44 -0
  274. package/dist/src/orchestrator/turn-watchdog.js +84 -0
  275. package/dist/src/pil/agent-operating-contract.d.ts +1 -1
  276. package/dist/src/pil/agent-operating-contract.js +6 -4
  277. package/dist/src/pil/cheap-model-playbook.d.ts +1 -1
  278. package/dist/src/pil/cheap-model-playbook.js +5 -1
  279. package/dist/src/pil/cheap-model-workbooks.d.ts +1 -1
  280. package/dist/src/pil/cheap-model-workbooks.js +1 -1
  281. package/dist/src/pil/discovery-types.d.ts +1 -0
  282. package/dist/src/pil/discovery.d.ts +1 -1
  283. package/dist/src/pil/discovery.js +18 -13
  284. package/dist/src/pil/layer1-intent.d.ts +18 -6
  285. package/dist/src/pil/layer1-intent.js +66 -757
  286. package/dist/src/pil/layer15-context-scan.js +15 -1
  287. package/dist/src/pil/layer1_5-complexity-size.d.ts +7 -0
  288. package/dist/src/pil/layer1_5-complexity-size.js +31 -5
  289. package/dist/src/pil/layer3-ee-injection.js +23 -8
  290. package/dist/src/pil/layer4-gsd.js +69 -16
  291. package/dist/src/pil/layer5-context.js +7 -3
  292. package/dist/src/pil/layer6-output.d.ts +23 -0
  293. package/dist/src/pil/layer6-output.js +5 -1
  294. package/dist/src/pil/llm-classify.d.ts +111 -5
  295. package/dist/src/pil/llm-classify.js +421 -189
  296. package/dist/src/pil/native-capabilities-workbook.d.ts +1 -1
  297. package/dist/src/pil/native-capabilities-workbook.js +8 -0
  298. package/dist/src/pil/pipeline.js +36 -2
  299. package/dist/src/pil/repo-grounding-probe.d.ts +15 -0
  300. package/dist/src/pil/repo-grounding-probe.js +136 -0
  301. package/dist/src/pil/repo-structure-hints.d.ts +7 -0
  302. package/dist/src/pil/repo-structure-hints.js +45 -0
  303. package/dist/src/pil/response-tools.js +5 -3
  304. package/dist/src/pil/schema.d.ts +1 -0
  305. package/dist/src/pil/schema.js +2 -0
  306. package/dist/src/pil/types.d.ts +18 -0
  307. package/dist/src/playbook/directives.d.ts +4 -0
  308. package/dist/src/playbook/directives.js +17 -5
  309. package/dist/src/product-loop/artifact-io.js +4 -0
  310. package/dist/src/product-loop/backlog-builder.d.ts +14 -1
  311. package/dist/src/product-loop/backlog-builder.js +30 -6
  312. package/dist/src/product-loop/criteria-seed.d.ts +51 -0
  313. package/dist/src/product-loop/criteria-seed.js +200 -0
  314. package/dist/src/product-loop/discovery-context-format.js +3 -1
  315. package/dist/src/product-loop/discovery-ecosystem.js +4 -1
  316. package/dist/src/product-loop/discovery-interview.d.ts +9 -0
  317. package/dist/src/product-loop/discovery-interview.js +60 -12
  318. package/dist/src/product-loop/discovery-recommender.js +2 -1
  319. package/dist/src/product-loop/discovery-schema.js +19 -2
  320. package/dist/src/product-loop/discovery-triage.d.ts +23 -0
  321. package/dist/src/product-loop/discovery-triage.js +109 -0
  322. package/dist/src/product-loop/gather.js +150 -2
  323. package/dist/src/product-loop/ideal-trace.d.ts +7 -0
  324. package/dist/src/product-loop/ideal-trace.js +64 -0
  325. package/dist/src/product-loop/index.d.ts +13 -1
  326. package/dist/src/product-loop/index.js +340 -52
  327. package/dist/src/product-loop/loop-driver.d.ts +7 -0
  328. package/dist/src/product-loop/loop-driver.js +330 -106
  329. package/dist/src/product-loop/phase-plan.d.ts +21 -0
  330. package/dist/src/product-loop/phase-plan.js +81 -6
  331. package/dist/src/product-loop/phase-rituals.d.ts +3 -0
  332. package/dist/src/product-loop/phase-rituals.js +8 -3
  333. package/dist/src/product-loop/phase-runner.js +39 -12
  334. package/dist/src/product-loop/plan-adherence-review.d.ts +26 -0
  335. package/dist/src/product-loop/plan-adherence-review.js +144 -0
  336. package/dist/src/product-loop/sprint-runner.d.ts +173 -0
  337. package/dist/src/product-loop/sprint-runner.js +863 -19
  338. package/dist/src/product-loop/types.d.ts +61 -5
  339. package/dist/src/providers/adapter.d.ts +1 -1
  340. package/dist/src/providers/adapter.js +3 -4
  341. package/dist/src/providers/anthropic.d.ts +9 -8
  342. package/dist/src/providers/anthropic.js +13 -47
  343. package/dist/src/providers/auth/browser-flow.d.ts +1 -1
  344. package/dist/src/providers/auth/browser-flow.js +1 -1
  345. package/dist/src/providers/auth/grok-oauth.d.ts +1 -0
  346. package/dist/src/providers/auth/grok-oauth.js +30 -5
  347. package/dist/src/providers/auth/openai-oauth.d.ts +1 -0
  348. package/dist/src/providers/auth/openai-oauth.js +15 -1
  349. package/dist/src/providers/auth/registry.js +0 -34
  350. package/dist/src/providers/auth/token-store.d.ts +9 -9
  351. package/dist/src/providers/auth/token-store.js +8 -67
  352. package/dist/src/providers/auth/types.d.ts +9 -1
  353. package/dist/src/providers/auth/types.js +1 -1
  354. package/dist/src/providers/capabilities.d.ts +24 -5
  355. package/dist/src/providers/capabilities.js +42 -24
  356. package/dist/src/providers/endpoints.d.ts +2 -2
  357. package/dist/src/providers/endpoints.js +11 -10
  358. package/dist/src/providers/env-store.d.ts +17 -0
  359. package/dist/src/providers/env-store.js +228 -0
  360. package/dist/src/providers/keychain.d.ts +22 -18
  361. package/dist/src/providers/keychain.js +127 -140
  362. package/dist/src/providers/mcp-vision-bridge.js +56 -146
  363. package/dist/src/providers/openai-compatible.js +8 -1
  364. package/dist/src/providers/pricing.d.ts +2 -2
  365. package/dist/src/providers/pricing.js +3 -13
  366. package/dist/src/providers/runtime.d.ts +43 -3
  367. package/dist/src/providers/runtime.js +88 -14
  368. package/dist/src/providers/strategies/base.strategy.d.ts +16 -0
  369. package/dist/src/providers/strategies/base.strategy.js +24 -1
  370. package/dist/src/providers/strategies/{siliconflow.strategy.d.ts → opencode-go.strategy.d.ts} +3 -3
  371. package/dist/src/providers/strategies/opencode-go.strategy.js +83 -0
  372. package/dist/src/providers/strategies/registry.js +4 -4
  373. package/dist/src/providers/strategies/thinking-mode.d.ts +109 -0
  374. package/dist/src/providers/strategies/thinking-mode.js +288 -1
  375. package/dist/src/providers/strategies/xai.strategy.js +27 -0
  376. package/dist/src/providers/strategies/zai.strategy.d.ts +14 -0
  377. package/dist/src/providers/strategies/zai.strategy.js +44 -0
  378. package/dist/src/providers/types.d.ts +5 -6
  379. package/dist/src/providers/types.js +2 -2
  380. package/dist/src/providers/vision-backend.d.ts +47 -0
  381. package/dist/src/providers/vision-backend.js +258 -0
  382. package/dist/src/providers/vision-proxy.d.ts +22 -9
  383. package/dist/src/providers/vision-proxy.js +63 -132
  384. package/dist/src/providers/warm.d.ts +65 -0
  385. package/dist/src/providers/warm.js +145 -0
  386. package/dist/src/providers/wire-debug.js +95 -0
  387. package/dist/src/router/decide.d.ts +13 -0
  388. package/dist/src/router/decide.js +138 -36
  389. package/dist/src/router/peak-hour.d.ts +38 -0
  390. package/dist/src/router/peak-hour.js +107 -0
  391. package/dist/src/router/step-router.js +3 -2
  392. package/dist/src/router/warm.js +4 -5
  393. package/dist/src/scaffold/continuation-prompt.d.ts +11 -0
  394. package/dist/src/scaffold/continuation-prompt.js +26 -0
  395. package/dist/src/scaffold/point-to-existing.d.ts +21 -0
  396. package/dist/src/scaffold/point-to-existing.js +25 -0
  397. package/dist/src/self-qa/agentic-loop.js +6 -5
  398. package/dist/src/{ui/state → state}/active-run.d.ts +19 -0
  399. package/dist/src/{ui/state → state}/active-run.js +21 -0
  400. package/dist/src/{ui/status-bar/store.d.ts → state/status-bar-store.d.ts} +4 -1
  401. package/dist/src/{ui/status-bar/store.js → state/status-bar-store.js} +12 -9
  402. package/dist/src/state/turn-trace.d.ts +43 -0
  403. package/dist/src/state/turn-trace.js +32 -0
  404. package/dist/src/storage/db.js +2 -1
  405. package/dist/src/storage/index.d.ts +1 -1
  406. package/dist/src/storage/index.js +1 -1
  407. package/dist/src/storage/interaction-log.d.ts +1 -1
  408. package/dist/src/storage/migrations.js +71 -1
  409. package/dist/src/storage/sessions.d.ts +28 -10
  410. package/dist/src/storage/sessions.js +78 -21
  411. package/dist/src/storage/transcript-view.js +1 -1
  412. package/dist/src/storage/transcript.d.ts +51 -0
  413. package/dist/src/storage/transcript.js +340 -15
  414. package/dist/src/tools/file.d.ts +15 -0
  415. package/dist/src/tools/file.js +32 -0
  416. package/dist/src/tools/git-safety.d.ts +19 -0
  417. package/dist/src/tools/git-safety.js +168 -0
  418. package/dist/src/tools/native-tools.d.ts +1 -1
  419. package/dist/src/tools/native-tools.js +81 -1
  420. package/dist/src/tools/registry.d.ts +20 -0
  421. package/dist/src/tools/registry.js +576 -23
  422. package/dist/src/tools/research.d.ts +29 -0
  423. package/dist/src/tools/research.js +233 -0
  424. package/dist/src/types/index.d.ts +147 -4
  425. package/dist/src/ui/app.js +0 -0
  426. package/dist/src/ui/cards/product-status-card.js +1 -1
  427. package/dist/src/ui/components/agent-rail-activities.d.ts +26 -0
  428. package/dist/src/ui/components/agent-rail-activities.js +47 -0
  429. package/dist/src/ui/components/bubble-body-guard.d.ts +27 -0
  430. package/dist/src/ui/components/bubble-body-guard.js +50 -0
  431. package/dist/src/ui/components/compact-progress-card.d.ts +24 -0
  432. package/dist/src/ui/components/compact-progress-card.js +42 -0
  433. package/dist/src/ui/components/context-rail.d.ts +26 -0
  434. package/dist/src/ui/components/context-rail.js +33 -0
  435. package/dist/src/ui/components/council-conclusion-card.d.ts +73 -0
  436. package/dist/src/ui/components/council-conclusion-card.js +420 -0
  437. package/dist/src/ui/components/council-debate-pill.d.ts +36 -0
  438. package/dist/src/ui/components/council-debate-pill.js +34 -0
  439. package/dist/src/ui/components/council-info-card.js +2 -2
  440. package/dist/src/ui/components/council-leader-bubble.d.ts +10 -3
  441. package/dist/src/ui/components/council-leader-bubble.js +21 -11
  442. package/dist/src/ui/components/council-message-bubble.d.ts +15 -2
  443. package/dist/src/ui/components/council-message-bubble.js +16 -15
  444. package/dist/src/ui/components/council-phase-timeline.d.ts +9 -1
  445. package/dist/src/ui/components/council-phase-timeline.js +66 -17
  446. package/dist/src/ui/components/council-placeholder-bubble.d.ts +16 -9
  447. package/dist/src/ui/components/council-placeholder-bubble.js +32 -29
  448. package/dist/src/ui/components/council-question-card.js +13 -12
  449. package/dist/src/ui/components/council-rail-rounds.d.ts +26 -0
  450. package/dist/src/ui/components/council-rail-rounds.js +57 -0
  451. package/dist/src/ui/components/council-round-group.d.ts +38 -0
  452. package/dist/src/ui/components/council-round-group.js +88 -0
  453. package/dist/src/ui/components/council-status-list.d.ts +3 -1
  454. package/dist/src/ui/components/council-status-list.js +36 -24
  455. package/dist/src/ui/components/council-synthesis-banner.d.ts +7 -2
  456. package/dist/src/ui/components/council-synthesis-banner.js +20 -5
  457. package/dist/src/ui/components/halt-recovery-card.js +9 -5
  458. package/dist/src/ui/components/jump-to-latest-pill.d.ts +11 -0
  459. package/dist/src/ui/components/jump-to-latest-pill.js +14 -0
  460. package/dist/src/ui/components/message-view.d.ts +15 -0
  461. package/dist/src/ui/components/message-view.js +50 -1
  462. package/dist/src/ui/components/prompt-box.js +18 -16
  463. package/dist/src/ui/components/session-tree-card.d.ts +14 -0
  464. package/dist/src/ui/components/session-tree-card.js +46 -0
  465. package/dist/src/ui/components/slash-inline-menu.d.ts +12 -0
  466. package/dist/src/ui/components/slash-inline-menu.js +26 -5
  467. package/dist/src/ui/components/task-list-panel.d.ts +14 -1
  468. package/dist/src/ui/components/task-list-panel.js +22 -2
  469. package/dist/src/ui/components/tool-group.d.ts +15 -3
  470. package/dist/src/ui/components/tool-group.js +69 -11
  471. package/dist/src/ui/containers/modals-layer.d.ts +4 -2
  472. package/dist/src/ui/containers/modals-layer.js +2 -2
  473. package/dist/src/ui/council-harness-event.d.ts +57 -0
  474. package/dist/src/ui/council-harness-event.js +46 -0
  475. package/dist/src/ui/heartbeat-debug.d.ts +29 -0
  476. package/dist/src/ui/heartbeat-debug.js +45 -0
  477. package/dist/src/ui/hooks/use-session-picker.d.ts +3 -3
  478. package/dist/src/ui/mcp-modal.js +2 -4
  479. package/dist/src/ui/modals/api-key-modal.js +1 -1
  480. package/dist/src/ui/modals/connect-modal.js +4 -3
  481. package/dist/src/ui/modals/model-picker-modal.d.ts +8 -18
  482. package/dist/src/ui/modals/model-picker-modal.js +8 -10
  483. package/dist/src/ui/modals/session-picker-modal.d.ts +2 -2
  484. package/dist/src/ui/modals/session-picker-modal.js +3 -5
  485. package/dist/src/ui/picker-providers.d.ts +1 -1
  486. package/dist/src/ui/picker-providers.js +1 -1
  487. package/dist/src/ui/primitives/index.d.ts +1 -0
  488. package/dist/src/ui/primitives/index.js +2 -0
  489. package/dist/src/ui/primitives/semantic-primitives.d.ts +76 -0
  490. package/dist/src/ui/primitives/semantic-primitives.js +81 -0
  491. package/dist/src/ui/slash/compact.js +5 -7
  492. package/dist/src/ui/slash/cost.js +1 -1
  493. package/dist/src/ui/slash/council.js +19 -1
  494. package/dist/src/ui/slash/debug.d.ts +3 -31
  495. package/dist/src/ui/slash/debug.js +9 -20
  496. package/dist/src/ui/slash/ee.js +81 -0
  497. package/dist/src/ui/slash/ideal.d.ts +6 -2
  498. package/dist/src/ui/slash/ideal.js +97 -7
  499. package/dist/src/ui/slash/menu-items.d.ts +7 -0
  500. package/dist/src/ui/slash/menu-items.js +23 -20
  501. package/dist/src/ui/slash/registry.d.ts +2 -0
  502. package/dist/src/ui/slash/registry.js +4 -0
  503. package/dist/src/ui/status-bar/cache-hit.d.ts +6 -0
  504. package/dist/src/ui/status-bar/cache-hit.js +9 -0
  505. package/dist/src/ui/status-bar/index.d.ts +1 -1
  506. package/dist/src/ui/status-bar/index.js +7 -3
  507. package/dist/src/ui/status-bar/usd-meter.d.ts +5 -4
  508. package/dist/src/ui/status-bar/usd-meter.js +6 -4
  509. package/dist/src/ui/theme.d.ts +1 -0
  510. package/dist/src/ui/theme.js +2 -0
  511. package/dist/src/ui/types.d.ts +7 -0
  512. package/dist/src/ui/use-app-logic.js +0 -0
  513. package/dist/src/ui/utils/agent-activities.d.ts +39 -0
  514. package/dist/src/ui/utils/agent-activities.js +96 -0
  515. package/dist/src/ui/utils/format.d.ts +14 -0
  516. package/dist/src/ui/utils/format.js +23 -3
  517. package/dist/src/ui/utils/group-tool-entries.d.ts +26 -0
  518. package/dist/src/ui/utils/group-tool-entries.js +111 -0
  519. package/dist/src/ui/utils/tool-summary.d.ts +21 -0
  520. package/dist/src/ui/utils/tool-summary.js +91 -0
  521. package/dist/src/usage/downgrade.js +2 -2
  522. package/dist/src/usage/product-ledger.js +2 -2
  523. package/dist/src/utils/event-loop-monitor.d.ts +85 -0
  524. package/dist/src/utils/event-loop-monitor.js +107 -0
  525. package/dist/src/utils/install-manager.js +2 -1
  526. package/dist/src/utils/llm-deadline.d.ts +14 -0
  527. package/dist/src/utils/llm-deadline.js +19 -0
  528. package/dist/src/utils/logger.js +2 -2
  529. package/dist/src/utils/loop-profiler.d.ts +102 -0
  530. package/dist/src/utils/loop-profiler.js +202 -0
  531. package/dist/src/utils/permission-mode.js +5 -3
  532. package/dist/src/utils/redactor.js +1 -1
  533. package/dist/src/utils/settings.d.ts +180 -5
  534. package/dist/src/utils/settings.js +271 -31
  535. package/dist/src/utils/side-question.d.ts +1 -2
  536. package/dist/src/utils/side-question.js +2 -2
  537. package/dist/src/utils/visible-retry.d.ts +11 -0
  538. package/dist/src/utils/visible-retry.js +10 -1
  539. package/dist/src/verify/entrypoint.d.ts +1 -1
  540. package/dist/src/verify/entrypoint.js +52 -17
  541. package/dist/src/verify/orchestrator.d.ts +1 -1
  542. package/dist/src/verify/orchestrator.js +20 -3
  543. package/dist/src/verify/recipes.d.ts +13 -0
  544. package/dist/src/verify/recipes.js +15 -0
  545. package/package.json +134 -132
  546. package/dist/src/cli/bw-vault.d.ts +0 -55
  547. package/dist/src/cli/bw-vault.js +0 -133
  548. package/dist/src/mcp/ee-tools.d.ts +0 -46
  549. package/dist/src/mcp/ee-tools.js +0 -193
  550. package/dist/src/providers/auth/gcloud.d.ts +0 -28
  551. package/dist/src/providers/auth/gcloud.js +0 -102
  552. package/dist/src/providers/auth/gemini-oauth.d.ts +0 -82
  553. package/dist/src/providers/auth/gemini-oauth.js +0 -472
  554. package/dist/src/providers/gemini.d.ts +0 -11
  555. package/dist/src/providers/gemini.js +0 -45
  556. package/dist/src/providers/siliconflow-sse-repair.d.ts +0 -58
  557. package/dist/src/providers/siliconflow-sse-repair.js +0 -177
  558. package/dist/src/providers/strategies/google.strategy.d.ts +0 -22
  559. package/dist/src/providers/strategies/google.strategy.js +0 -174
  560. package/dist/src/providers/strategies/siliconflow.strategy.js +0 -29
  561. package/dist/src/ui/containers/chat-feed.d.ts +0 -40
  562. package/dist/src/ui/containers/chat-feed.js +0 -66
@@ -20,3 +20,16 @@ export declare function normalizeVerifyAppKind(value: string): VerifyAppKind;
20
20
  export declare function normalizeVerifyRecipe(value: unknown): VerifyRecipe | null;
21
21
  export declare function inferVerifySmokeUrl(settings?: SandboxSettings): string | null;
22
22
  export declare function inferVerifyProjectProfile(cwd: string, baseSettings?: SandboxSettings, recipeOverride?: VerifyRecipe | null): VerifyProjectProfile;
23
+ /**
24
+ * Decides whether a deterministically-inferred recipe is trustworthy enough to
25
+ * hand to the sprint-1 verify gate INSTEAD of a null (which trips CB-3's
26
+ * "Recovery options" halt). It is trusted ONLY when the profiler recognized the
27
+ * ecosystem (`appKind !== "unknown"`) AND found at least one real test command —
28
+ * i.e. there is something concrete to verify against.
29
+ *
30
+ * This is the exact boundary `Orchestrator.detectVerifyRecipe` applies to its
31
+ * `inferVerifyProjectProfile(cwd)` fallback. Exported so the gate seam is
32
+ * covered by one unit test over the REAL predicate rather than a copy that can
33
+ * silently drift from production.
34
+ */
35
+ export declare function shouldTrustDeterministicRecipe(recipe: Pick<VerifyRecipe, "appKind" | "testCommands">): boolean;
@@ -525,4 +525,19 @@ export function inferVerifyProjectProfile(cwd, baseSettings = {}, recipeOverride
525
525
  recipe: recipeWithRuntime,
526
526
  };
527
527
  }
528
+ /**
529
+ * Decides whether a deterministically-inferred recipe is trustworthy enough to
530
+ * hand to the sprint-1 verify gate INSTEAD of a null (which trips CB-3's
531
+ * "Recovery options" halt). It is trusted ONLY when the profiler recognized the
532
+ * ecosystem (`appKind !== "unknown"`) AND found at least one real test command —
533
+ * i.e. there is something concrete to verify against.
534
+ *
535
+ * This is the exact boundary `Orchestrator.detectVerifyRecipe` applies to its
536
+ * `inferVerifyProjectProfile(cwd)` fallback. Exported so the gate seam is
537
+ * covered by one unit test over the REAL predicate rather than a copy that can
538
+ * silently drift from production.
539
+ */
540
+ export function shouldTrustDeterministicRecipe(recipe) {
541
+ return recipe.appKind !== "unknown" && recipe.testCommands.length > 0;
542
+ }
528
543
  //# sourceMappingURL=recipes.js.map
package/package.json CHANGED
@@ -1,132 +1,134 @@
1
- {
2
- "name": "muonroi-cli",
3
- "workspaces": [
4
- "packages/*"
5
- ],
6
- "version": "1.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.9.0",
7
+ "description": "BYOK AI coding agent with multi-model council debate, role-based routing, and auto-compact.",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/muonroi/muonroi-cli.git"
11
+ },
12
+ "homepage": "https://github.com/muonroi/muonroi-cli#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/muonroi/muonroi-cli/issues"
15
+ },
16
+ "type": "module",
17
+ "main": "dist/src/index.js",
18
+ "exports": {
19
+ ".": {
20
+ "import": "./dist/src/index.js",
21
+ "types": "./dist/src/index.d.ts"
22
+ }
23
+ },
24
+ "bin": {
25
+ "muonroi-cli": "dist/src/index.js",
26
+ "mu": "dist/src/index.js"
27
+ },
28
+ "scripts": {
29
+ "dev": "node scripts/sync-version.cjs && bun run src/index.ts",
30
+ "build": "node scripts/sync-version.cjs && tsc && node scripts/fix-extensions.cjs && node -e \"require('fs').cpSync('src/models/catalog.json', 'dist/src/models/catalog.json', { recursive: true })\"",
31
+ "build:binary": "bun build --compile --outfile ./dist/muonroi-cli-standalone ./src/index.ts",
32
+ "start": "bun run dist/index.js",
33
+ "typecheck": "tsc --noEmit",
34
+ "ci:local": "rm -rf /tmp/flow /tmp/gsd-* /tmp/muonroi-* /tmp/sprint-runner-* 2>/dev/null; bun install --frozen-lockfile && bun --filter @muonroi/agent-harness-core build && bunx tsc --noEmit && bunx vitest run && DBUS_SESSION_BUS_ADDRESS=unix:path=/dev/null GNOME_KEYRING_CONTROL= bunx vitest -c vitest.harness.config.ts run tests/harness/",
35
+ "test": "bunx vitest run",
36
+ "test:watch": "bunx vitest",
37
+ "test:harness": "bunx vitest -c vitest.harness.config.ts run tests/harness/",
38
+ "test:core": "bunx vitest run packages/agent-harness-core/__tests__/",
39
+ "test:harness-react": "bunx vitest -c packages/agent-harness-react/vitest.config.ts run",
40
+ "test:harness-angular": "bunx vitest -c vitest.harness-angular.config.ts run tests/harness-angular/",
41
+ "test:angular": "bunx vitest -c packages/agent-harness-angular/vitest.config.ts run",
42
+ "build:core": "cd packages/agent-harness-core && bun run build",
43
+ "lint": "biome check src/",
44
+ "format": "biome format src/",
45
+ "format:fix": "biome format --write src/",
46
+ "lint:fix": "biome check --fix src/",
47
+ "lint:semantic": "bun scripts/check-semantic-wrap.ts",
48
+ "lint:semantic:strict": "bun scripts/check-semantic-wrap.ts --strict",
49
+ "lint:harness-skips": "bun run scripts/check-harness-skips.ts",
50
+ "lint:harness-skips:strict": "bun run scripts/check-harness-skips.ts --strict",
51
+ "pre-commit": "lint-staged",
52
+ "prepare": "husky",
53
+ "postinstall": "node scripts/postinstall.cjs || exit 0",
54
+ "ee:ingest-bb": "bun run scripts/ingest-bb-to-ee.mts",
55
+ "clean:meta": "git clean -fdX -- .scratch chat-export-*.txt .ee-ingest-state.json .brain-*.tmp 2>/dev/null || echo 'clean:meta: no matching untracked ignored files or git unavailable'"
56
+ },
57
+ "lint-staged": {
58
+ "*.{ts,tsx,js,mjs,cjs,json}": "biome check --write --no-errors-on-unmatched --max-diagnostics=200"
59
+ },
60
+ "files": [
61
+ "dist/",
62
+ "!dist/**/*.exe",
63
+ "!dist/**/*.map",
64
+ "!dist/**/__tests__/**",
65
+ "!dist/**/__test-helpers__/**",
66
+ "!dist/**/__test-stubs__/**",
67
+ "!dist/**/*.test.js",
68
+ "!dist/**/*.test.d.ts",
69
+ "!dist/**/*.spec.js",
70
+ "!dist/**/*.spec.d.ts",
71
+ "scripts/postinstall.cjs"
72
+ ],
73
+ "keywords": [
74
+ "cli",
75
+ "agent",
76
+ "ai",
77
+ "coding",
78
+ "terminal",
79
+ "opentui"
80
+ ],
81
+ "author": "muonroi",
82
+ "license": "MIT",
83
+ "dependencies": {
84
+ "@ai-sdk/anthropic": "3.0.72",
85
+ "@ai-sdk/mcp": "1.0.37",
86
+ "@ai-sdk/openai": "3.0.54",
87
+ "@ai-sdk/openai-compatible": "2.0.42",
88
+ "@ai-sdk/provider": "3.0.9",
89
+ "@ai-sdk/provider-utils": "4.0.24",
90
+ "@modelcontextprotocol/sdk": "1.29.0",
91
+ "@npmcli/arborist": "^9.4.3",
92
+ "@opentui/core": "0.1.107",
93
+ "@opentui/react": "0.1.107",
94
+ "@qdrant/js-client-rest": "1.17.0",
95
+ "ai": "6.0.169",
96
+ "better-sqlite3": "^12.10.0",
97
+ "commander": "^12.1.0",
98
+ "diff": "^8.0.3",
99
+ "fast-xml-parser": "^4.4.1",
100
+ "gpt-tokenizer": "^3.4.0",
101
+ "ollama-ai-provider-v2": "1.5.5",
102
+ "proper-lockfile": "^4.1.2",
103
+ "react": "19.2.5",
104
+ "ripgrep": "^0.3.1",
105
+ "semver": "^7.7.4",
106
+ "tree-sitter-python": "^0.25.0",
107
+ "tree-sitter-typescript": "^0.23.2",
108
+ "turndown": "^7.2.4",
109
+ "vscode-jsonrpc": "8.2.1",
110
+ "vscode-languageserver-types": "3.17.5",
111
+ "web-tree-sitter": "0.26.8",
112
+ "zod": "^4.3.6"
113
+ },
114
+ "devDependencies": {
115
+ "@biomejs/biome": "2.4.13",
116
+ "@types/better-sqlite3": "^7.6.13",
117
+ "@types/diff": "^8.0.0",
118
+ "@types/node": "^22.19.15",
119
+ "@types/npmcli__arborist": "^6.3.3",
120
+ "@types/proper-lockfile": "^4.1.4",
121
+ "@types/react": "^19.2.14",
122
+ "@types/semver": "^7.7.1",
123
+ "@types/turndown": "^5.0.6",
124
+ "ajv": "^8.20.0",
125
+ "husky": "9.1.7",
126
+ "lint-staged": "16.4.0",
127
+ "typescript": "5.9.3",
128
+ "vitest": "4.1.5"
129
+ },
130
+ "engines": {
131
+ "node": ">=20.0.0"
132
+ },
133
+ "preferGlobal": true
134
+ }
@@ -1,55 +0,0 @@
1
- import { type SpawnSyncReturns } from "node:child_process";
2
- /**
3
- * Thin wrapper around the Bitwarden CLI for writing secrets into the user's
4
- * vault. Mirrors the assumptions of `runKeysImportBw`: the secret lives in the
5
- * `notes` field of a Secure Note item named `<prefix><id>`.
6
- *
7
- * Auth contract: caller must have `bw` in PATH and `BW_SESSION` exported.
8
- * On any error the returned object has `ok: false` so callers can degrade
9
- * gracefully (e.g. fall back to writing only the OS keychain).
10
- */
11
- export interface BwWriteResult {
12
- ok: boolean;
13
- action?: "created" | "updated";
14
- error?: string;
15
- }
16
- type Runner = (cmd: string, args: string[], input?: string) => SpawnSyncReturns<string>;
17
- /**
18
- * Write `notes` into a vault item named `name`. Creates a Secure Note if
19
- * absent; updates the notes field if present. Calls `bw sync` after a write
20
- * so subsequent `bw get` calls see the new value.
21
- */
22
- export declare function writeBwSecureNote(name: string, notes: string, options?: {
23
- runner?: Runner;
24
- }): Promise<BwWriteResult>;
25
- export interface BwUnlockResult {
26
- ok: boolean;
27
- session?: string;
28
- error?: string;
29
- }
30
- /**
31
- * Unlock the BW vault with a master password and return the session token
32
- * in-memory only. Caller passes the returned session to subsequent calls;
33
- * we never write to BW_SESSION env or persist it to disk.
34
- */
35
- export declare function unlockWithPassword(password: string, options?: {
36
- runner?: Runner;
37
- }): Promise<BwUnlockResult>;
38
- export interface BwListedNote {
39
- name: string;
40
- notes: string;
41
- }
42
- /**
43
- * List Secure Notes whose name starts with `prefix`. Used by the in-TUI
44
- * sync flow to discover which providers have keys stored in the vault.
45
- */
46
- export declare function listSecureNotesByPrefix(session: string, prefix: string, options?: {
47
- runner?: Runner;
48
- }): Promise<{
49
- ok: true;
50
- items: BwListedNote[];
51
- } | {
52
- ok: false;
53
- error: string;
54
- }>;
55
- export {};
@@ -1,133 +0,0 @@
1
- import { spawnSync } from "node:child_process";
2
- const defaultRunner = (cmd, args, input) => spawnSync(cmd, args, { encoding: "utf8", input });
3
- function ensureUnlocked(session, run) {
4
- const status = run("bw", ["status", "--session", session]);
5
- if (status.status !== 0) {
6
- return { ok: false, error: `bw status failed: ${status.stderr || status.stdout}` };
7
- }
8
- let parsed;
9
- try {
10
- parsed = JSON.parse(status.stdout);
11
- }
12
- catch {
13
- parsed = {};
14
- }
15
- if (parsed.status !== "unlocked") {
16
- return { ok: false, error: `Bitwarden vault is not unlocked (status: ${parsed.status ?? "unknown"})` };
17
- }
18
- return { ok: true };
19
- }
20
- function findExistingItem(name, session, run) {
21
- const list = run("bw", ["list", "items", "--search", name, "--session", session]);
22
- if (list.status !== 0)
23
- return null;
24
- let items;
25
- try {
26
- items = JSON.parse(list.stdout);
27
- }
28
- catch {
29
- return null;
30
- }
31
- return items.find((it) => it.name === name) ?? null;
32
- }
33
- /**
34
- * Write `notes` into a vault item named `name`. Creates a Secure Note if
35
- * absent; updates the notes field if present. Calls `bw sync` after a write
36
- * so subsequent `bw get` calls see the new value.
37
- */
38
- export async function writeBwSecureNote(name, notes, options = {}) {
39
- const run = options.runner ?? defaultRunner;
40
- const which = run("bw", ["--version"]);
41
- if (which.status !== 0) {
42
- return { ok: false, error: "Bitwarden CLI ('bw') not found in PATH. Install: https://bitwarden.com/help/cli/" };
43
- }
44
- const session = process.env.BW_SESSION;
45
- if (!session) {
46
- return { ok: false, error: "BW_SESSION not set. Run: export BW_SESSION=$(bw unlock --raw)" };
47
- }
48
- const unlock = ensureUnlocked(session, run);
49
- if (!unlock.ok)
50
- return { ok: false, error: unlock.error };
51
- const existing = findExistingItem(name, session, run);
52
- if (existing) {
53
- const updated = { ...existing, notes };
54
- const encoded = run("bw", ["encode"], JSON.stringify(updated));
55
- if (encoded.status !== 0) {
56
- return { ok: false, error: `bw encode failed: ${encoded.stderr || encoded.stdout}` };
57
- }
58
- const edit = run("bw", ["edit", "item", existing.id, encoded.stdout.trim(), "--session", session]);
59
- if (edit.status !== 0) {
60
- return { ok: false, error: `bw edit failed: ${edit.stderr || edit.stdout}` };
61
- }
62
- run("bw", ["sync", "--session", session]);
63
- return { ok: true, action: "updated" };
64
- }
65
- // Create a new Secure Note. Type 2 = secure note; secureNote.type 0 = generic.
66
- const item = {
67
- type: 2,
68
- name,
69
- notes,
70
- secureNote: { type: 0 },
71
- };
72
- const encoded = run("bw", ["encode"], JSON.stringify(item));
73
- if (encoded.status !== 0) {
74
- return { ok: false, error: `bw encode failed: ${encoded.stderr || encoded.stdout}` };
75
- }
76
- const create = run("bw", ["create", "item", encoded.stdout.trim(), "--session", session]);
77
- if (create.status !== 0) {
78
- return { ok: false, error: `bw create failed: ${create.stderr || create.stdout}` };
79
- }
80
- run("bw", ["sync", "--session", session]);
81
- return { ok: true, action: "created" };
82
- }
83
- /**
84
- * Unlock the BW vault with a master password and return the session token
85
- * in-memory only. Caller passes the returned session to subsequent calls;
86
- * we never write to BW_SESSION env or persist it to disk.
87
- */
88
- export async function unlockWithPassword(password, options = {}) {
89
- const run = options.runner ?? defaultRunner;
90
- const which = run("bw", ["--version"]);
91
- if (which.status !== 0) {
92
- return { ok: false, error: "Bitwarden CLI ('bw') not found in PATH. Install: https://bitwarden.com/help/cli/" };
93
- }
94
- // `bw unlock --raw` reads the password from stdin and prints the session
95
- // token to stdout. Exit code != 0 on wrong password.
96
- const res = run("bw", ["unlock", "--raw", "--passwordenv", "BW_PASSWORD_PIPE"]);
97
- // Fallback to stdin if --passwordenv isn't supported by this bw version.
98
- if (res.status !== 0) {
99
- const r2 = spawnSync("bw", ["unlock", "--raw"], { encoding: "utf8", input: `${password}\n` });
100
- if (r2.status !== 0) {
101
- const msg = (r2.stderr || r2.stdout || "").trim();
102
- return { ok: false, error: `bw unlock failed: ${msg || "wrong master password?"}` };
103
- }
104
- return { ok: true, session: r2.stdout.trim() };
105
- }
106
- return { ok: true, session: res.stdout.trim() };
107
- }
108
- /**
109
- * List Secure Notes whose name starts with `prefix`. Used by the in-TUI
110
- * sync flow to discover which providers have keys stored in the vault.
111
- */
112
- export async function listSecureNotesByPrefix(session, prefix, options = {}) {
113
- const run = options.runner ?? defaultRunner;
114
- const unlock = ensureUnlocked(session, run);
115
- if (!unlock.ok)
116
- return { ok: false, error: unlock.error };
117
- const list = run("bw", ["list", "items", "--search", prefix, "--session", session]);
118
- if (list.status !== 0) {
119
- return { ok: false, error: `bw list failed: ${list.stderr || list.stdout}` };
120
- }
121
- let items;
122
- try {
123
- items = JSON.parse(list.stdout);
124
- }
125
- catch {
126
- return { ok: false, error: "bw list returned non-JSON output" };
127
- }
128
- const matched = items
129
- .filter((it) => it.type === 2 && it.name.startsWith(prefix) && typeof it.notes === "string")
130
- .map((it) => ({ name: it.name, notes: it.notes }));
131
- return { ok: true, items: matched };
132
- }
133
- //# sourceMappingURL=bw-vault.js.map
@@ -1,46 +0,0 @@
1
- /**
2
- * src/mcp/ee-tools.ts
3
- *
4
- * EE (Experience Engine) MCP tools: ee_query (semantic recall) + ee_health +
5
- * ee_feedback (rate a recalled entry). Read-mostly; ee_feedback POSTs a verdict.
6
- *
7
- * Anti-mù: ee_query supports explicit "recent task checkpoint" / "Progress DONE" queries
8
- * so the agent (or sub-agent) can deliberately confirm finished subtasks after compactions.
9
- * collections: prefer "experience-behavioral" for compaction checkpoints (see layer3).
10
- *
11
- * Feedback gate: ee_query stamps every returned `[id col]` into a session-scoped
12
- * pending ledger (recall-ledger.ts). Subsequent ee_query calls surface (soft) or
13
- * refuse on (hard) accumulated unrated debt, so useful recalls actually get a
14
- * verdict via ee_feedback — the signal the brain needs to keep the good entries
15
- * and prune the rest. Mode via EXPERIENCE_RECALL_FEEDBACK_GATE = off|soft|hard
16
- * (default soft); hard-mode threshold via EXPERIENCE_RECALL_FEEDBACK_THRESHOLD.
17
- *
18
- * Dependencies are injected (deps) so unit tests never touch the network/singleton.
19
- */
20
- import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
21
- import { type RecallLedger } from "../ee/recall-ledger.js";
22
- import { type FeedbackResult, type FeedbackVerdict, type NoiseReason } from "../ee/search.js";
23
- import type { EERecallResponse } from "../ee/types.js";
24
- export interface EEToolDeps {
25
- recall?: (query: string, opts: {
26
- project?: string;
27
- }) => Promise<EERecallResponse | null>;
28
- health?: () => Promise<{
29
- ok: boolean;
30
- status: number;
31
- }>;
32
- feedback?: (pointId: string, collection: string, verdict: FeedbackVerdict, reason?: NoiseReason) => Promise<FeedbackResult>;
33
- write?: (lesson: string, opts: {
34
- collection?: string;
35
- title?: string;
36
- projectSlug?: string;
37
- confidence?: number;
38
- }) => Promise<{
39
- ok: boolean;
40
- id?: string;
41
- error?: string;
42
- }>;
43
- /** Session pending-recall ledger. Defaults to the process singleton. */
44
- ledger?: RecallLedger;
45
- }
46
- export declare function registerEETools(server: McpServer, deps?: EEToolDeps): void;