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
@@ -0,0 +1,337 @@
1
+ /**
2
+ * capability-registry.ts — Native vendored byLoopPoint data from gsd-core
3
+ *
4
+ * ADR-894 §5 — role-partitioned Capability Registry.
5
+ * Contains the byLoopPoint data used by the loop resolver.
6
+ * This is the frozen first-party registry used as the fallback default.
7
+ */
8
+ const byLoopPoint = {
9
+ "discuss:pre": {
10
+ steps: [],
11
+ contributions: [
12
+ {
13
+ capId: "mempalace",
14
+ kind: "contribution",
15
+ point: "discuss:pre",
16
+ into: "orchestrator",
17
+ fragment: {
18
+ path: "fragments/recall-discuss.md",
19
+ inline: `<!--\n MemPalace capability — contribution fragment.\n Rendered into the discuss:pre orchestrator prompt when \`mempalace.recall_on_discuss\` is true.\n Contributes DATA (recall instructions), not control flow. onError: skip — never blocks discussion.\n-->\n### Memory recall (MemPalace)\n\n...contribution content elided for brevity...`,
20
+ },
21
+ produces: [],
22
+ consumes: [],
23
+ when: "mempalace.enabled",
24
+ onError: "skip",
25
+ },
26
+ ],
27
+ gates: [],
28
+ },
29
+ "discuss:post": {
30
+ steps: [
31
+ {
32
+ capId: "mempalace",
33
+ kind: "step",
34
+ point: "discuss:post",
35
+ ref: { skill: "mempalace-capture" },
36
+ produces: [],
37
+ consumes: ["CONTEXT.md"],
38
+ when: "mempalace.enabled",
39
+ onError: "skip",
40
+ },
41
+ ],
42
+ contributions: [],
43
+ gates: [],
44
+ },
45
+ "plan:pre": {
46
+ steps: [
47
+ {
48
+ capId: "ai-integration",
49
+ kind: "step",
50
+ point: "plan:pre",
51
+ ref: { skill: "ai-integration-phase" },
52
+ produces: ["AI-SPEC.md"],
53
+ consumes: ["CONTEXT.md"],
54
+ when: "workflow.ai_integration_phase",
55
+ onError: "skip",
56
+ },
57
+ {
58
+ capId: "intel",
59
+ kind: "step",
60
+ point: "plan:pre",
61
+ ref: { command: "intel api-surface" },
62
+ produces: [".planning/intel/API-SURFACE.md"],
63
+ consumes: [],
64
+ when: "intel.enabled",
65
+ onError: "skip",
66
+ },
67
+ {
68
+ capId: "mempalace",
69
+ kind: "step",
70
+ point: "plan:pre",
71
+ ref: { skill: "mempalace-recall" },
72
+ produces: ["MEMORY-RECALL.md"],
73
+ consumes: ["CONTEXT.md"],
74
+ when: "mempalace.enabled",
75
+ onError: "skip",
76
+ },
77
+ {
78
+ capId: "research",
79
+ kind: "step",
80
+ point: "plan:pre",
81
+ ref: { agent: "gsd-phase-researcher" },
82
+ produces: ["RESEARCH.md"],
83
+ consumes: ["CONTEXT.md"],
84
+ when: "workflow.research",
85
+ onError: "skip",
86
+ },
87
+ {
88
+ capId: "ui",
89
+ kind: "step",
90
+ point: "plan:pre",
91
+ ref: { skill: "ui-phase" },
92
+ produces: ["UI-SPEC.md"],
93
+ consumes: ["CONTEXT.md"],
94
+ when: "workflow.ui_phase",
95
+ onError: "skip",
96
+ },
97
+ {
98
+ capId: "pattern-mapper",
99
+ kind: "step",
100
+ point: "plan:pre",
101
+ ref: { agent: "gsd-pattern-mapper" },
102
+ produces: ["PATTERNS.md"],
103
+ consumes: ["RESEARCH.md"],
104
+ when: "workflow.pattern_mapper",
105
+ onError: "skip",
106
+ },
107
+ {
108
+ capId: "schema-gate",
109
+ kind: "step",
110
+ point: "plan:pre",
111
+ ref: { skill: "schema-gate" },
112
+ produces: [],
113
+ consumes: ["CONTEXT.md"],
114
+ when: "workflow.schema_gate",
115
+ onError: "halt",
116
+ },
117
+ ],
118
+ contributions: [
119
+ {
120
+ capId: "assumption-delta",
121
+ kind: "contribution",
122
+ point: "plan:pre",
123
+ into: "planner",
124
+ fragment: { path: "fragments/plan-pre.md" },
125
+ produces: [],
126
+ consumes: ["CONTEXT.md"],
127
+ when: "workflow.assumption_delta",
128
+ onError: "skip",
129
+ },
130
+ ],
131
+ gates: [],
132
+ },
133
+ "plan:post": {
134
+ steps: [
135
+ {
136
+ capId: "nyquist",
137
+ kind: "step",
138
+ point: "plan:post",
139
+ ref: { skill: "validate-phase" },
140
+ produces: ["VALIDATION.md"],
141
+ consumes: ["PLAN.md"],
142
+ when: "workflow.nyquist_validation",
143
+ onError: "halt",
144
+ },
145
+ ],
146
+ contributions: [],
147
+ gates: [],
148
+ },
149
+ "execute:pre": {
150
+ steps: [],
151
+ contributions: [],
152
+ gates: [],
153
+ },
154
+ "execute:wave:pre": {
155
+ steps: [],
156
+ contributions: [],
157
+ gates: [],
158
+ },
159
+ "execute:wave:post": {
160
+ steps: [],
161
+ contributions: [
162
+ {
163
+ capId: "mempalace",
164
+ kind: "contribution",
165
+ point: "execute:wave:post",
166
+ into: "verifier",
167
+ fragment: { path: "fragments/capture-problems.md" },
168
+ produces: [],
169
+ consumes: [],
170
+ when: "mempalace.enabled",
171
+ onError: "skip",
172
+ },
173
+ ],
174
+ gates: [
175
+ {
176
+ capId: "drift",
177
+ kind: "gate",
178
+ point: "execute:wave:post",
179
+ check: { query: "verify.schema-drift" },
180
+ when: "workflow.schema_drift_gate",
181
+ blocking: true,
182
+ onError: "skip",
183
+ },
184
+ {
185
+ capId: "drift",
186
+ kind: "gate",
187
+ point: "execute:wave:post",
188
+ check: { query: "verify.codebase-drift" },
189
+ when: "workflow.schema_drift_gate",
190
+ blocking: false,
191
+ onError: "skip",
192
+ },
193
+ {
194
+ capId: "ui",
195
+ kind: "gate",
196
+ point: "execute:wave:post",
197
+ check: { query: "ui.safety-gate" },
198
+ when: "workflow.ui_safety_gate",
199
+ blocking: true,
200
+ onError: "halt",
201
+ },
202
+ ],
203
+ },
204
+ "execute:post": {
205
+ steps: [
206
+ {
207
+ capId: "code-review",
208
+ kind: "step",
209
+ point: "execute:post",
210
+ ref: { skill: "code-review" },
211
+ produces: ["REVIEW.md"],
212
+ consumes: ["SUMMARY.md"],
213
+ when: "workflow.code_review",
214
+ onError: "skip",
215
+ },
216
+ ],
217
+ contributions: [],
218
+ gates: [
219
+ {
220
+ capId: "tdd",
221
+ kind: "gate",
222
+ point: "execute:post",
223
+ check: { query: "tdd.review-checkpoint" },
224
+ when: "workflow.tdd_mode",
225
+ blocking: false,
226
+ onError: "skip",
227
+ },
228
+ ],
229
+ },
230
+ "verify:pre": {
231
+ steps: [],
232
+ contributions: [],
233
+ gates: [],
234
+ },
235
+ "verify:post": {
236
+ steps: [
237
+ {
238
+ capId: "mempalace",
239
+ kind: "step",
240
+ point: "verify:post",
241
+ ref: { skill: "mempalace-capture" },
242
+ produces: [],
243
+ consumes: ["SUMMARY.md"],
244
+ when: "mempalace.enabled",
245
+ onError: "skip",
246
+ },
247
+ {
248
+ capId: "nyquist",
249
+ kind: "step",
250
+ point: "verify:post",
251
+ ref: { skill: "validate-phase" },
252
+ produces: ["VALIDATION.md"],
253
+ consumes: ["SUMMARY.md"],
254
+ when: "workflow.nyquist_validation",
255
+ onError: "halt",
256
+ },
257
+ {
258
+ capId: "security",
259
+ kind: "step",
260
+ point: "verify:post",
261
+ ref: { skill: "secure-phase" },
262
+ produces: ["SECURITY.md"],
263
+ consumes: ["SUMMARY.md"],
264
+ when: "workflow.security_enforcement",
265
+ onError: "halt",
266
+ },
267
+ {
268
+ capId: "ui",
269
+ kind: "step",
270
+ point: "verify:post",
271
+ ref: { skill: "ui-review" },
272
+ produces: ["UI-REVIEW.md"],
273
+ consumes: ["UI-SPEC.md"],
274
+ when: "workflow.ui_review",
275
+ onError: "skip",
276
+ },
277
+ ],
278
+ contributions: [],
279
+ gates: [],
280
+ },
281
+ "ship:pre": {
282
+ steps: [],
283
+ contributions: [],
284
+ gates: [
285
+ {
286
+ capId: "security",
287
+ kind: "gate",
288
+ point: "ship:pre",
289
+ check: {
290
+ predicate: {
291
+ kind: "artifact-frontmatter-equals",
292
+ artifact: "SECURITY.md",
293
+ field: "threats_open",
294
+ equals: 0,
295
+ },
296
+ },
297
+ when: "workflow.security_enforcement",
298
+ blocking: true,
299
+ onError: "halt",
300
+ },
301
+ ],
302
+ },
303
+ "ship:post": {
304
+ steps: [
305
+ {
306
+ capId: "mempalace",
307
+ kind: "step",
308
+ point: "ship:post",
309
+ ref: { agent: "gsd-mempalace-curator" },
310
+ produces: [],
311
+ consumes: ["UAT.md"],
312
+ when: "mempalace.enabled",
313
+ onError: "skip",
314
+ },
315
+ ],
316
+ contributions: [],
317
+ gates: [],
318
+ },
319
+ };
320
+ export const REGISTRY = {
321
+ byLoopPoint,
322
+ };
323
+ /**
324
+ * debate:error — stubbed per Test-First Registry Specialist's strengthening.
325
+ * Handler is unwired in sprint 1. Drop recovery deferred to sprint 2.
326
+ * The fixture is assertable so the registry contract test catches both
327
+ * wrong-model dispatch AND missing error channel.
328
+ */
329
+ export const debateErrorStub = {
330
+ kind: "debate:error",
331
+ onError: "halt",
332
+ blocking: true,
333
+ };
334
+ Object.freeze(debateErrorStub);
335
+ Object.freeze(REGISTRY);
336
+ Object.freeze(REGISTRY.byLoopPoint);
337
+ //# sourceMappingURL=capability-registry.js.map
@@ -0,0 +1,39 @@
1
+ export interface AssessInput {
2
+ cwd: string;
3
+ raw: string;
4
+ priorDepth: "quick" | "standard" | "heavy";
5
+ confidence: number;
6
+ conversationDigest?: string;
7
+ eeContext?: string;
8
+ bundle?: import("./pil-gate-context.js").GateContextBundle;
9
+ sessionModelId: string;
10
+ runAssessor?: (prompt: string) => Promise<string>;
11
+ }
12
+ export interface AssessResult {
13
+ depth: "quick" | "standard" | "heavy";
14
+ autoCouncil: boolean;
15
+ rationale: string;
16
+ assessed: boolean;
17
+ source: "assessor" | "prefilter-skip" | "parse-failed-fallback";
18
+ assessmentPath?: string;
19
+ quality?: {
20
+ verdict: "adequate" | "enriched" | "needs-user";
21
+ missing: string[];
22
+ noiseRisk: "low" | "med" | "high";
23
+ };
24
+ enrichedPrompt: string;
25
+ }
26
+ /**
27
+ * Run the leader-tier assessor only when the fast layer1 call is uncertain or
28
+ * the task is non-trivial. `hasPriorContext` = there is a recent-conversation
29
+ * digest (a continuation turn); such turns raise the skip bar so a
30
+ * context-dependent follow-up mis-scored as `quick` still gets the
31
+ * context-aware leader check rather than silently skipping it.
32
+ */
33
+ export declare function shouldAssess(priorDepth: string, confidence: number, hasPriorContext?: boolean): boolean;
34
+ /**
35
+ * Enrich the native depth decision. Pre-filter short-circuits trivial turns (no LLM cost);
36
+ * otherwise a leader-tier call reasons over the task + context and returns a structured
37
+ * verdict that OVERRIDES pilCtx.modelDepthTier. Never throws — degrades to priorDepth.
38
+ */
39
+ export declare function assessComplexity(input: AssessInput): Promise<AssessResult>;
@@ -0,0 +1,152 @@
1
+ import { writeFileSync } from "node:fs";
2
+ import { resolvePlanCouncilLeader } from "../council/leader.js";
3
+ import { ASSESSMENT_OUTPUT_CONTRACT, extractComplexityVerdict } from "./assessment-schema.js";
4
+ import { ensurePlanningWorkspace } from "./config-bridge.js";
5
+ import { planningArtifact } from "./paths.js";
6
+ const CONFIDENCE_FLOOR = 0.7;
7
+ /**
8
+ * Continuation turns get a HIGHER confidence bar before a `quick` verdict is
9
+ * trusted enough to skip the leader check. A terse follow-up ("làm tiếp", "từ
10
+ * các phần đó ...") can point at heavy prior work yet read as trivially simple
11
+ * in isolation, so the fast classifier's `quick` is less reliable here even
12
+ * with the recent-conversation digest now fed to it (defense in depth). Default
13
+ * 0.85; env MUONROI_GSD_CONTINUATION_CONF_FLOOR overrides (clamped to
14
+ * [CONFIDENCE_FLOOR, 1]). Set it to CONFIDENCE_FLOOR to disable the extra bar.
15
+ */
16
+ function continuationConfidenceFloor() {
17
+ const raw = Number.parseFloat(process.env.MUONROI_GSD_CONTINUATION_CONF_FLOOR ?? "");
18
+ if (!Number.isFinite(raw))
19
+ return 0.85;
20
+ return Math.min(1, Math.max(CONFIDENCE_FLOOR, raw));
21
+ }
22
+ /**
23
+ * Run the leader-tier assessor only when the fast layer1 call is uncertain or
24
+ * the task is non-trivial. `hasPriorContext` = there is a recent-conversation
25
+ * digest (a continuation turn); such turns raise the skip bar so a
26
+ * context-dependent follow-up mis-scored as `quick` still gets the
27
+ * context-aware leader check rather than silently skipping it.
28
+ */
29
+ export function shouldAssess(priorDepth, confidence, hasPriorContext = false) {
30
+ if (priorDepth === "standard" || priorDepth === "heavy")
31
+ return true;
32
+ const floor = hasPriorContext ? continuationConfidenceFloor() : CONFIDENCE_FLOOR;
33
+ return confidence < floor; // low-confidence quick → double-check
34
+ }
35
+ function buildAssessorPrompt(input) {
36
+ const digest = input.bundle?.conversationDigest || input.conversationDigest || "";
37
+ const ee = input.bundle?.eeContext || input.eeContext || "";
38
+ const plan = input.bundle?.priorPlan || "";
39
+ return [
40
+ "You are the complexity assessor — the highest-tier router for an autonomous coding agent.",
41
+ "Judge how much rigor this task needs, whether it warrants multi-perspective debate, and enrich an under-specified prompt.",
42
+ "Be decisive: over-tiering wastes time, under-tiering ships unreviewed risk, over-enriching adds noise.",
43
+ "",
44
+ `Fast classifier's first-pass depth: ${input.priorDepth} (confidence ${input.confidence.toFixed(2)}).`,
45
+ digest ? `\nRecent conversation:\n${digest}` : "",
46
+ ee ? `\nPrior experience (EE recall):\n${ee}` : "",
47
+ plan ? `\nPrior plan (this task):\n${plan}` : "",
48
+ "",
49
+ "### Task",
50
+ input.raw,
51
+ ASSESSMENT_OUTPUT_CONTRACT,
52
+ ].join("\n");
53
+ }
54
+ function writeAssessment(cwd, r, leaderModelId) {
55
+ ensurePlanningWorkspace(cwd, leaderModelId);
56
+ const path = planningArtifact(cwd, "ASSESSMENT.md");
57
+ writeFileSync(path, [
58
+ "# ASSESSMENT",
59
+ "",
60
+ `depth: ${r.depth}`,
61
+ `autoCouncil: ${r.autoCouncil}`,
62
+ `leader: \`${leaderModelId}\``,
63
+ "",
64
+ "## Rationale",
65
+ "",
66
+ r.rationale || "(none)",
67
+ ].join("\n"), "utf8");
68
+ return path;
69
+ }
70
+ /**
71
+ * Enrich the native depth decision. Pre-filter short-circuits trivial turns (no LLM cost);
72
+ * otherwise a leader-tier call reasons over the task + context and returns a structured
73
+ * verdict that OVERRIDES pilCtx.modelDepthTier. Never throws — degrades to priorDepth.
74
+ */
75
+ export async function assessComplexity(input) {
76
+ const hasPriorContext = !!(input.bundle?.conversationDigest || input.conversationDigest || "").trim();
77
+ if (!shouldAssess(input.priorDepth, input.confidence, hasPriorContext)) {
78
+ return {
79
+ depth: input.priorDepth,
80
+ autoCouncil: false,
81
+ rationale: "",
82
+ assessed: false,
83
+ source: "prefilter-skip",
84
+ enrichedPrompt: "",
85
+ };
86
+ }
87
+ if (!input.runAssessor) {
88
+ // No runner (offline/test path without a fixture) — keep priorDepth, do not fabricate.
89
+ return {
90
+ depth: input.priorDepth,
91
+ autoCouncil: false,
92
+ rationale: "",
93
+ assessed: false,
94
+ source: "prefilter-skip",
95
+ enrichedPrompt: "",
96
+ };
97
+ }
98
+ let raw = "";
99
+ try {
100
+ raw = await input.runAssessor(buildAssessorPrompt(input));
101
+ }
102
+ catch (err) {
103
+ console.error(`[gsd] complexity assessor call failed, keeping priorDepth: ${err.message}`);
104
+ return {
105
+ depth: input.priorDepth,
106
+ autoCouncil: false,
107
+ rationale: "",
108
+ assessed: false,
109
+ source: "parse-failed-fallback",
110
+ enrichedPrompt: "",
111
+ };
112
+ }
113
+ const verdict = extractComplexityVerdict(raw);
114
+ if (!verdict) {
115
+ console.error("[gsd] complexity assessor emitted no structured verdict — keeping priorDepth");
116
+ return {
117
+ depth: input.priorDepth,
118
+ autoCouncil: false,
119
+ rationale: "",
120
+ assessed: false,
121
+ source: "parse-failed-fallback",
122
+ enrichedPrompt: "",
123
+ };
124
+ }
125
+ try {
126
+ const leader = await resolvePlanCouncilLeader(input.sessionModelId);
127
+ const path = writeAssessment(input.cwd, verdict, leader.modelId);
128
+ const brief = (verdict.enrichedPrompt ?? "").slice(0, 1500);
129
+ return {
130
+ depth: verdict.depth,
131
+ autoCouncil: verdict.autoCouncil,
132
+ rationale: verdict.rationale,
133
+ assessed: true,
134
+ source: "assessor",
135
+ assessmentPath: path,
136
+ quality: verdict.quality,
137
+ enrichedPrompt: brief,
138
+ };
139
+ }
140
+ catch (err) {
141
+ console.error(`[gsd] complexity assessor finalize failed, keeping priorDepth: ${err.message}`);
142
+ return {
143
+ depth: input.priorDepth,
144
+ autoCouncil: false,
145
+ rationale: "",
146
+ assessed: false,
147
+ source: "parse-failed-fallback",
148
+ enrichedPrompt: "",
149
+ };
150
+ }
151
+ }
152
+ //# sourceMappingURL=complexity-assessor.js.map
@@ -0,0 +1,7 @@
1
+ export interface PlanningConfig {
2
+ models: Record<string, string>;
3
+ commit_docs?: boolean;
4
+ }
5
+ export declare function buildPlanningConfig(sessionModelId: string): PlanningConfig;
6
+ export declare function ensurePlanningWorkspace(cwd: string, sessionModelId: string): string;
7
+ export declare function readPlanningConfig(cwd: string): PlanningConfig | null;
@@ -0,0 +1,114 @@
1
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { getModelByTier, getModelInfo } from "../models/registry.js";
3
+ import { detectProviderForModel } from "../providers/runtime.js";
4
+ import { getRoleModels } from "../utils/settings.js";
5
+ import { resolveGsdPremiumModel } from "./model-tier.js";
6
+ import { planningArtifact, planningRoot } from "./paths.js";
7
+ const ROLE_TO_GSD_KEY = {
8
+ leader: "leader",
9
+ implement: "executor",
10
+ verify: "verifier",
11
+ research: "researcher",
12
+ };
13
+ function resolveModelIdForRole(role, sessionModelId) {
14
+ const configured = getRoleModels()[role];
15
+ if (configured) {
16
+ try {
17
+ detectProviderForModel(configured);
18
+ if (getModelInfo(configured))
19
+ return configured;
20
+ }
21
+ catch {
22
+ /* fall through */
23
+ }
24
+ }
25
+ let providerId;
26
+ try {
27
+ providerId = detectProviderForModel(sessionModelId);
28
+ }
29
+ catch {
30
+ if (role === "leader")
31
+ return sessionModelId;
32
+ return undefined;
33
+ }
34
+ if (role === "leader" || role === "verify" || role === "research") {
35
+ try {
36
+ return resolveGsdPremiumModel(sessionModelId);
37
+ }
38
+ catch {
39
+ if (role === "leader")
40
+ return sessionModelId;
41
+ return undefined;
42
+ }
43
+ }
44
+ if (role === "implement") {
45
+ return getModelByTier("balanced", providerId)?.id ?? resolveGsdPremiumModel(sessionModelId);
46
+ }
47
+ return undefined;
48
+ }
49
+ export function buildPlanningConfig(sessionModelId) {
50
+ const models = {};
51
+ for (const [role, gsdKey] of Object.entries(ROLE_TO_GSD_KEY)) {
52
+ const id = resolveModelIdForRole(role, sessionModelId);
53
+ if (id)
54
+ models[gsdKey] = id;
55
+ }
56
+ return {
57
+ models,
58
+ commit_docs: false,
59
+ };
60
+ }
61
+ /** gsd-core compatible STATE.md (templates/state.md) with muonroi task-level extensions. */
62
+ const DEFAULT_STATE_MD = `---
63
+ gsd_state_version: '1.0'
64
+ status: planning
65
+ progress:
66
+ total_phases: 0
67
+ completed_phases: 0
68
+ total_plans: 0
69
+ completed_plans: 0
70
+ percent: 0
71
+ ---
72
+
73
+ # Project State
74
+
75
+ ## Current Position
76
+
77
+ Phase: discuss of 0 (task)
78
+ Plan: 0 of 0
79
+ Status: Ready to plan
80
+ Last activity: — native host bootstrap
81
+
82
+ | Field | Value |
83
+ | --- | --- |
84
+ | Phase | discuss |
85
+ | Depth | standard |
86
+ | Plan Verified | no |
87
+ | Workflow Kind | task |
88
+ `;
89
+ export function ensurePlanningWorkspace(cwd, sessionModelId) {
90
+ const root = planningRoot(cwd);
91
+ mkdirSync(root, { recursive: true });
92
+ const configPath = planningArtifact(cwd, "config.json");
93
+ if (!existsSync(configPath)) {
94
+ writeFileSync(configPath, `${JSON.stringify(buildPlanningConfig(sessionModelId), null, 2)}\n`, "utf8");
95
+ }
96
+ const statePath = planningArtifact(cwd, "STATE.md");
97
+ if (!existsSync(statePath)) {
98
+ writeFileSync(statePath, DEFAULT_STATE_MD, "utf8");
99
+ }
100
+ return root;
101
+ }
102
+ export function readPlanningConfig(cwd) {
103
+ const configPath = planningArtifact(cwd, "config.json");
104
+ if (!existsSync(configPath))
105
+ return null;
106
+ try {
107
+ return JSON.parse(readFileSync(configPath, "utf8"));
108
+ }
109
+ catch (err) {
110
+ console.error(`[gsd] failed to parse ${configPath}: ${err.message}`);
111
+ return null;
112
+ }
113
+ }
114
+ //# sourceMappingURL=config-bridge.js.map
@@ -0,0 +1,27 @@
1
+ /**
2
+ * config-loader.ts — Native replacement for gsd-core/bin/lib/config-loader.cjs
3
+ *
4
+ * Simplified config loading for the muonroi-cli native GSD workflow.
5
+ * Reads .planning/config.json from the project directory and returns
6
+ * a normalized config object.
7
+ */
8
+ export interface PlanningConfig {
9
+ model_profile?: string;
10
+ planning?: Record<string, unknown>;
11
+ [key: string]: unknown;
12
+ }
13
+ /**
14
+ * Load the GSD planning config from .planning/config.json in the given cwd.
15
+ * Returns an empty object when no config is present.
16
+ */
17
+ export declare function loadConfig(cwd: string): PlanningConfig;
18
+ /** Resolve a dotted config key against a config object (e.g. "workflow.research"). */
19
+ export declare function resolveConfigKey(dotKey: string, config: Record<string, unknown>): {
20
+ found: boolean;
21
+ value: unknown;
22
+ };
23
+ /**
24
+ * Simple activation value resolver.
25
+ * If the when key is `true` → active. Absent/falsy → inactive.
26
+ */
27
+ export declare function resolveActivationValue(when: string, config: Record<string, unknown>): boolean;