muonroi-cli 1.8.4 → 1.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. package/LICENSE +17 -5
  2. package/dist/packages/agent-harness-core/src/driver.d.ts +27 -1
  3. package/dist/packages/agent-harness-core/src/driver.js +46 -0
  4. package/dist/packages/agent-harness-core/src/event-tee.d.ts +48 -0
  5. package/dist/packages/agent-harness-core/src/event-tee.js +77 -0
  6. package/dist/packages/agent-harness-core/src/mcp-server.d.ts +11 -0
  7. package/dist/packages/agent-harness-core/src/mcp-server.js +87 -15
  8. package/dist/packages/agent-harness-core/src/protocol.d.ts +66 -2
  9. package/dist/packages/agent-harness-core/src/protocol.js +15 -0
  10. package/dist/packages/agent-harness-core/src/visual-quality.d.ts +58 -0
  11. package/dist/packages/agent-harness-core/src/visual-quality.js +141 -0
  12. package/dist/packages/agent-harness-opentui/src/agent-mode.d.ts +6 -0
  13. package/dist/packages/agent-harness-opentui/src/agent-mode.js +14 -1
  14. package/dist/packages/agent-harness-opentui/src/input-bridge.d.ts +2 -10
  15. package/dist/packages/agent-harness-opentui/src/input-bridge.js +103 -16
  16. package/dist/packages/agent-harness-opentui/src/install.d.ts +8 -0
  17. package/dist/packages/agent-harness-opentui/src/install.js +10 -0
  18. package/dist/packages/agent-harness-opentui/src/semantic.js +12 -10
  19. package/dist/packages/agent-harness-opentui/src/visual-capture.d.ts +56 -0
  20. package/dist/packages/agent-harness-opentui/src/visual-capture.js +103 -0
  21. package/dist/src/agent-harness/mock-model.d.ts +28 -0
  22. package/dist/src/agent-harness/mock-model.js +63 -1
  23. package/dist/src/agent-harness/test-spawn.js +31 -0
  24. package/dist/src/cli/config/screen-providers.js +1 -1
  25. package/dist/src/cli/cost-forensics.d.ts +10 -0
  26. package/dist/src/cli/cost-forensics.js +18 -3
  27. package/dist/src/cli/keys-bundle.d.ts +1 -1
  28. package/dist/src/cli/keys-bundle.js +1 -1
  29. package/dist/src/cli/keys.d.ts +2 -2
  30. package/dist/src/cli/keys.js +19 -81
  31. package/dist/src/council/clarifier.d.ts +28 -2
  32. package/dist/src/council/clarifier.js +81 -15
  33. package/dist/src/council/context.js +49 -15
  34. package/dist/src/council/debate-checkpoint.d.ts +129 -0
  35. package/dist/src/council/debate-checkpoint.js +176 -0
  36. package/dist/src/council/debate-planner.js +51 -3
  37. package/dist/src/council/debate-summary.d.ts +25 -0
  38. package/dist/src/council/debate-summary.js +85 -0
  39. package/dist/src/council/debate.d.ts +169 -2
  40. package/dist/src/council/debate.js +1210 -134
  41. package/dist/src/council/index.d.ts +85 -1
  42. package/dist/src/council/index.js +634 -196
  43. package/dist/src/council/leader.d.ts +26 -0
  44. package/dist/src/council/leader.js +150 -9
  45. package/dist/src/council/llm.d.ts +32 -0
  46. package/dist/src/council/llm.js +231 -38
  47. package/dist/src/council/panel-select.d.ts +30 -0
  48. package/dist/src/council/panel-select.js +72 -0
  49. package/dist/src/council/planner.js +23 -0
  50. package/dist/src/council/preflight.d.ts +7 -0
  51. package/dist/src/council/preflight.js +14 -2
  52. package/dist/src/council/prompts.d.ts +30 -3
  53. package/dist/src/council/prompts.js +234 -64
  54. package/dist/src/council/stance-recall.d.ts +42 -0
  55. package/dist/src/council/stance-recall.js +57 -0
  56. package/dist/src/council/strip-think.d.ts +17 -0
  57. package/dist/src/council/strip-think.js +33 -0
  58. package/dist/src/council/types.d.ts +128 -0
  59. package/dist/src/ee/artifact-cache.d.ts +16 -0
  60. package/dist/src/ee/artifact-cache.js +32 -0
  61. package/dist/src/ee/auth.d.ts +1 -0
  62. package/dist/src/ee/auth.js +15 -2
  63. package/dist/src/ee/bridge.d.ts +10 -0
  64. package/dist/src/ee/bridge.js +58 -0
  65. package/dist/src/ee/client.js +81 -18
  66. package/dist/src/ee/export-transcripts.d.ts +1 -0
  67. package/dist/src/ee/export-transcripts.js +8 -10
  68. package/dist/src/ee/extract-session.js +29 -0
  69. package/dist/src/ee/extract-style.d.ts +58 -0
  70. package/dist/src/ee/extract-style.js +270 -0
  71. package/dist/src/ee/recall-ledger.d.ts +9 -0
  72. package/dist/src/ee/recall-ledger.js +3 -0
  73. package/dist/src/ee/scope.d.ts +1 -0
  74. package/dist/src/ee/scope.js +26 -1
  75. package/dist/src/ee/search.d.ts +7 -0
  76. package/dist/src/ee/search.js +24 -0
  77. package/dist/src/ee/transcript-emit.js +2 -0
  78. package/dist/src/ee/types.d.ts +22 -0
  79. package/dist/src/ee/who-am-i-brain.d.ts +35 -0
  80. package/dist/src/ee/who-am-i-brain.js +220 -0
  81. package/dist/src/ee/who-am-i.d.ts +10 -3
  82. package/dist/src/ee/who-am-i.js +12 -0
  83. package/dist/src/ee/workflow-event.d.ts +48 -0
  84. package/dist/src/ee/workflow-event.js +81 -0
  85. package/dist/src/flow/compaction/compress.d.ts +3 -3
  86. package/dist/src/flow/compaction/compress.js +45 -8
  87. package/dist/src/flow/compaction/extract.d.ts +4 -7
  88. package/dist/src/flow/compaction/extract.js +50 -10
  89. package/dist/src/flow/compaction/index.d.ts +13 -1
  90. package/dist/src/flow/compaction/index.js +70 -3
  91. package/dist/src/flow/compaction/input-guard.d.ts +24 -0
  92. package/dist/src/flow/compaction/input-guard.js +43 -0
  93. package/dist/src/flow/fold-planning.d.ts +36 -0
  94. package/dist/src/flow/fold-planning.js +83 -0
  95. package/dist/src/flow/hierarchy.d.ts +146 -0
  96. package/dist/src/flow/hierarchy.js +427 -0
  97. package/dist/src/flow/index.d.ts +1 -0
  98. package/dist/src/flow/index.js +2 -0
  99. package/dist/src/flow/run-artifacts.d.ts +102 -0
  100. package/dist/src/flow/run-artifacts.js +208 -0
  101. package/dist/src/generated/version.d.ts +1 -1
  102. package/dist/src/generated/version.js +1 -1
  103. package/dist/src/gsd/assessment-schema.d.ts +44 -0
  104. package/dist/src/gsd/assessment-schema.js +134 -0
  105. package/dist/src/gsd/capability-registry.d.ts +45 -0
  106. package/dist/src/gsd/capability-registry.js +337 -0
  107. package/dist/src/gsd/complexity-assessor.d.ts +39 -0
  108. package/dist/src/gsd/complexity-assessor.js +152 -0
  109. package/dist/src/gsd/config-bridge.d.ts +7 -0
  110. package/dist/src/gsd/config-bridge.js +114 -0
  111. package/dist/src/gsd/config-loader.d.ts +27 -0
  112. package/dist/src/gsd/config-loader.js +50 -0
  113. package/dist/src/gsd/council-context.d.ts +44 -0
  114. package/dist/src/gsd/council-context.js +114 -0
  115. package/dist/src/gsd/ee-closure.d.ts +28 -0
  116. package/dist/src/gsd/ee-closure.js +49 -0
  117. package/dist/src/gsd/flags.d.ts +55 -0
  118. package/dist/src/gsd/flags.js +83 -0
  119. package/dist/src/gsd/gsd-dispatch.d.ts +58 -0
  120. package/dist/src/gsd/gsd-dispatch.js +131 -0
  121. package/dist/src/gsd/gsd-runtime.d.ts +22 -0
  122. package/dist/src/gsd/gsd-runtime.js +37 -0
  123. package/dist/src/gsd/host-adapter.d.ts +11 -0
  124. package/dist/src/gsd/host-adapter.js +29 -0
  125. package/dist/src/gsd/index.d.ts +24 -1
  126. package/dist/src/gsd/index.js +27 -0
  127. package/dist/src/gsd/loop-host-contract.d.ts +21 -0
  128. package/dist/src/gsd/loop-host-contract.js +39 -0
  129. package/dist/src/gsd/loop-host.d.ts +69 -0
  130. package/dist/src/gsd/loop-host.js +245 -0
  131. package/dist/src/gsd/loop-resolver.d.ts +36 -0
  132. package/dist/src/gsd/loop-resolver.js +79 -0
  133. package/dist/src/gsd/model-tier.d.ts +13 -0
  134. package/dist/src/gsd/model-tier.js +45 -0
  135. package/dist/src/gsd/mutation-gate.d.ts +16 -0
  136. package/dist/src/gsd/mutation-gate.js +41 -0
  137. package/dist/src/gsd/native-roadmap.d.ts +89 -0
  138. package/dist/src/gsd/native-roadmap.js +343 -0
  139. package/dist/src/gsd/native-state.d.ts +47 -0
  140. package/dist/src/gsd/native-state.js +220 -0
  141. package/dist/src/gsd/paths.d.ts +23 -0
  142. package/dist/src/gsd/paths.js +66 -0
  143. package/dist/src/gsd/phase-dag.d.ts +12 -0
  144. package/dist/src/gsd/phase-dag.js +94 -0
  145. package/dist/src/gsd/phase-sync.d.ts +42 -0
  146. package/dist/src/gsd/phase-sync.js +321 -0
  147. package/dist/src/gsd/pil-gate-context.d.ts +13 -0
  148. package/dist/src/gsd/pil-gate-context.js +64 -0
  149. package/dist/src/gsd/pil-gate-critic.d.ts +19 -0
  150. package/dist/src/gsd/pil-gate-critic.js +74 -0
  151. package/dist/src/gsd/plan-council-prompts.d.ts +25 -0
  152. package/dist/src/gsd/plan-council-prompts.js +79 -0
  153. package/dist/src/gsd/plan-council.d.ts +44 -0
  154. package/dist/src/gsd/plan-council.js +251 -0
  155. package/dist/src/gsd/plan-gate-vocabulary.d.ts +40 -0
  156. package/dist/src/gsd/plan-gate-vocabulary.js +64 -0
  157. package/dist/src/gsd/product-workspace.d.ts +13 -0
  158. package/dist/src/gsd/product-workspace.js +124 -0
  159. package/dist/src/gsd/ship-bridge.d.ts +25 -0
  160. package/dist/src/gsd/ship-bridge.js +65 -0
  161. package/dist/src/gsd/state-document.d.ts +40 -0
  162. package/dist/src/gsd/state-document.js +163 -0
  163. package/dist/src/gsd/verdict-schema.d.ts +39 -0
  164. package/dist/src/gsd/verdict-schema.js +144 -0
  165. package/dist/src/gsd/verify-context.d.ts +22 -0
  166. package/dist/src/gsd/verify-context.js +27 -0
  167. package/dist/src/gsd/verify-council-prompts.d.ts +19 -0
  168. package/dist/src/gsd/verify-council-prompts.js +85 -0
  169. package/dist/src/gsd/verify-council.d.ts +25 -0
  170. package/dist/src/gsd/verify-council.js +119 -0
  171. package/dist/src/gsd/verify-gate-vocabulary.d.ts +25 -0
  172. package/dist/src/gsd/verify-gate-vocabulary.js +46 -0
  173. package/dist/src/gsd/workflow-engine.d.ts +60 -0
  174. package/dist/src/gsd/workflow-engine.js +207 -0
  175. package/dist/src/gsd/workflow-tools.d.ts +13 -0
  176. package/dist/src/gsd/workflow-tools.js +277 -0
  177. package/dist/src/hooks/index.js +1 -1
  178. package/dist/src/index.js +44 -11
  179. package/dist/src/maintain/pr-builder.js +23 -13
  180. package/dist/src/mcp/auto-setup.js +57 -32
  181. package/dist/src/mcp/client-pool.js +1 -1
  182. package/dist/src/mcp/ee-tools.js +1 -0
  183. package/dist/src/mcp/research-onboarding.js +8 -7
  184. package/dist/src/mcp/runtime.js +34 -2
  185. package/dist/src/models/catalog-client.d.ts +87 -0
  186. package/dist/src/models/catalog-client.js +105 -38
  187. package/dist/src/models/catalog.json +528 -265
  188. package/dist/src/models/registry.d.ts +22 -7
  189. package/dist/src/models/registry.js +73 -10
  190. package/dist/src/ops/doctor.js +1 -1
  191. package/dist/src/orchestrator/auto-commit.js +1 -1
  192. package/dist/src/orchestrator/batch-turn-runner.js +2 -2
  193. package/dist/src/orchestrator/cache-prefix.d.ts +67 -0
  194. package/dist/src/orchestrator/cache-prefix.js +83 -0
  195. package/dist/src/orchestrator/compact-request.d.ts +32 -0
  196. package/dist/src/orchestrator/compact-request.js +41 -0
  197. package/dist/src/orchestrator/compaction.d.ts +10 -0
  198. package/dist/src/orchestrator/compaction.js +27 -7
  199. package/dist/src/orchestrator/council-manager.d.ts +12 -3
  200. package/dist/src/orchestrator/council-manager.js +65 -24
  201. package/dist/src/orchestrator/cross-turn-dedup.d.ts +6 -0
  202. package/dist/src/orchestrator/cross-turn-dedup.js +22 -1
  203. package/dist/src/orchestrator/error-utils.d.ts +29 -0
  204. package/dist/src/orchestrator/error-utils.js +132 -24
  205. package/dist/src/orchestrator/grounding-check.js +39 -1
  206. package/dist/src/orchestrator/message-processor.js +242 -33
  207. package/dist/src/orchestrator/orchestrator.d.ts +39 -3
  208. package/dist/src/orchestrator/orchestrator.js +651 -102
  209. package/dist/src/orchestrator/preprocessor.js +1 -1
  210. package/dist/src/orchestrator/proactive-compact-detector.d.ts +26 -0
  211. package/dist/src/orchestrator/proactive-compact-detector.js +36 -0
  212. package/dist/src/orchestrator/prompts.js +17 -17
  213. package/dist/src/orchestrator/reactive-delegation.d.ts +39 -0
  214. package/dist/src/orchestrator/reactive-delegation.js +59 -0
  215. package/dist/src/orchestrator/retry-classifier.d.ts +2 -1
  216. package/dist/src/orchestrator/retry-classifier.js +46 -2
  217. package/dist/src/orchestrator/safety-intercept.d.ts +45 -0
  218. package/dist/src/orchestrator/safety-intercept.js +55 -0
  219. package/dist/src/orchestrator/scope-reminder.js +1 -1
  220. package/dist/src/orchestrator/session-experience.d.ts +2 -1
  221. package/dist/src/orchestrator/session-experience.js +2 -1
  222. package/dist/src/orchestrator/should-run-gate.d.ts +5 -0
  223. package/dist/src/orchestrator/should-run-gate.js +18 -0
  224. package/dist/src/orchestrator/stall-watchdog.d.ts +24 -3
  225. package/dist/src/orchestrator/stall-watchdog.js +47 -13
  226. package/dist/src/orchestrator/stream-runner.js +62 -29
  227. package/dist/src/orchestrator/sub-agent-cap.d.ts +13 -1
  228. package/dist/src/orchestrator/sub-agent-cap.js +16 -1
  229. package/dist/src/orchestrator/sub-agent-model-tier.d.ts +13 -1
  230. package/dist/src/orchestrator/sub-agent-model-tier.js +16 -2
  231. package/dist/src/orchestrator/subagent-compactor.d.ts +53 -1
  232. package/dist/src/orchestrator/subagent-compactor.js +126 -15
  233. package/dist/src/orchestrator/tool-engine.d.ts +22 -0
  234. package/dist/src/orchestrator/tool-engine.js +620 -56
  235. package/dist/src/orchestrator/tool-limit-auto-recover.d.ts +22 -0
  236. package/dist/src/orchestrator/tool-limit-auto-recover.js +30 -0
  237. package/dist/src/orchestrator/turn-runner-deps.d.ts +19 -0
  238. package/dist/src/orchestrator/turn-watchdog.d.ts +37 -0
  239. package/dist/src/orchestrator/turn-watchdog.js +55 -0
  240. package/dist/src/pil/agent-operating-contract.d.ts +1 -1
  241. package/dist/src/pil/agent-operating-contract.js +1 -1
  242. package/dist/src/pil/cheap-model-playbook.d.ts +1 -1
  243. package/dist/src/pil/cheap-model-playbook.js +5 -1
  244. package/dist/src/pil/cheap-model-workbooks.d.ts +1 -1
  245. package/dist/src/pil/cheap-model-workbooks.js +1 -1
  246. package/dist/src/pil/discovery-types.d.ts +1 -0
  247. package/dist/src/pil/discovery.js +16 -11
  248. package/dist/src/pil/layer1-intent.d.ts +18 -6
  249. package/dist/src/pil/layer1-intent.js +66 -757
  250. package/dist/src/pil/layer15-context-scan.js +15 -1
  251. package/dist/src/pil/layer3-ee-injection.js +23 -8
  252. package/dist/src/pil/layer4-gsd.js +69 -16
  253. package/dist/src/pil/layer5-context.js +7 -3
  254. package/dist/src/pil/layer6-output.d.ts +23 -0
  255. package/dist/src/pil/layer6-output.js +5 -1
  256. package/dist/src/pil/llm-classify.d.ts +33 -2
  257. package/dist/src/pil/llm-classify.js +123 -131
  258. package/dist/src/pil/native-capabilities-workbook.d.ts +1 -1
  259. package/dist/src/pil/native-capabilities-workbook.js +1 -0
  260. package/dist/src/pil/pipeline.js +34 -2
  261. package/dist/src/pil/response-tools.js +5 -3
  262. package/dist/src/pil/schema.d.ts +1 -0
  263. package/dist/src/pil/schema.js +2 -0
  264. package/dist/src/pil/types.d.ts +18 -0
  265. package/dist/src/playbook/directives.d.ts +4 -0
  266. package/dist/src/playbook/directives.js +17 -5
  267. package/dist/src/product-loop/backlog-builder.d.ts +14 -1
  268. package/dist/src/product-loop/backlog-builder.js +30 -6
  269. package/dist/src/product-loop/discovery-context-format.js +3 -1
  270. package/dist/src/product-loop/discovery-ecosystem.js +4 -1
  271. package/dist/src/product-loop/discovery-interview.js +32 -3
  272. package/dist/src/product-loop/discovery-schema.js +5 -1
  273. package/dist/src/product-loop/ideal-trace.d.ts +7 -0
  274. package/dist/src/product-loop/ideal-trace.js +64 -0
  275. package/dist/src/product-loop/index.d.ts +13 -1
  276. package/dist/src/product-loop/index.js +333 -52
  277. package/dist/src/product-loop/loop-driver.d.ts +7 -0
  278. package/dist/src/product-loop/loop-driver.js +310 -99
  279. package/dist/src/product-loop/phase-plan.d.ts +5 -0
  280. package/dist/src/product-loop/phase-plan.js +39 -2
  281. package/dist/src/product-loop/phase-runner.js +9 -1
  282. package/dist/src/product-loop/sprint-runner.d.ts +111 -0
  283. package/dist/src/product-loop/sprint-runner.js +559 -16
  284. package/dist/src/product-loop/types.d.ts +36 -5
  285. package/dist/src/providers/adapter.d.ts +1 -1
  286. package/dist/src/providers/adapter.js +3 -4
  287. package/dist/src/providers/auth/browser-flow.d.ts +1 -1
  288. package/dist/src/providers/auth/browser-flow.js +1 -1
  289. package/dist/src/providers/auth/openai-oauth.js +1 -1
  290. package/dist/src/providers/auth/registry.js +0 -34
  291. package/dist/src/providers/auth/token-store.js +4 -1
  292. package/dist/src/providers/auth/types.d.ts +1 -1
  293. package/dist/src/providers/auth/types.js +1 -1
  294. package/dist/src/providers/capabilities.d.ts +24 -5
  295. package/dist/src/providers/capabilities.js +42 -24
  296. package/dist/src/providers/endpoints.d.ts +2 -2
  297. package/dist/src/providers/endpoints.js +11 -10
  298. package/dist/src/providers/keychain.d.ts +1 -1
  299. package/dist/src/providers/keychain.js +7 -9
  300. package/dist/src/providers/mcp-vision-bridge.js +56 -146
  301. package/dist/src/providers/openai-compatible.js +8 -1
  302. package/dist/src/providers/pricing.d.ts +2 -2
  303. package/dist/src/providers/pricing.js +3 -13
  304. package/dist/src/providers/runtime.d.ts +27 -2
  305. package/dist/src/providers/runtime.js +78 -15
  306. package/dist/src/providers/strategies/base.strategy.d.ts +16 -0
  307. package/dist/src/providers/strategies/base.strategy.js +24 -1
  308. package/dist/src/providers/strategies/{siliconflow.strategy.d.ts → opencode-go.strategy.d.ts} +3 -3
  309. package/dist/src/providers/strategies/opencode-go.strategy.js +83 -0
  310. package/dist/src/providers/strategies/registry.js +4 -4
  311. package/dist/src/providers/strategies/thinking-mode.d.ts +109 -0
  312. package/dist/src/providers/strategies/thinking-mode.js +280 -1
  313. package/dist/src/providers/strategies/zai.strategy.d.ts +14 -0
  314. package/dist/src/providers/strategies/zai.strategy.js +44 -0
  315. package/dist/src/providers/types.d.ts +5 -6
  316. package/dist/src/providers/types.js +2 -2
  317. package/dist/src/providers/vision-backend.d.ts +47 -0
  318. package/dist/src/providers/vision-backend.js +258 -0
  319. package/dist/src/providers/vision-proxy.d.ts +22 -9
  320. package/dist/src/providers/vision-proxy.js +63 -132
  321. package/dist/src/providers/wire-debug.js +95 -0
  322. package/dist/src/router/decide.d.ts +13 -0
  323. package/dist/src/router/decide.js +138 -36
  324. package/dist/src/router/peak-hour.d.ts +38 -0
  325. package/dist/src/router/peak-hour.js +107 -0
  326. package/dist/src/router/step-router.js +3 -2
  327. package/dist/src/router/warm.js +4 -5
  328. package/dist/src/scaffold/continuation-prompt.d.ts +11 -0
  329. package/dist/src/scaffold/continuation-prompt.js +26 -0
  330. package/dist/src/scaffold/point-to-existing.d.ts +21 -0
  331. package/dist/src/scaffold/point-to-existing.js +25 -0
  332. package/dist/src/self-qa/agentic-loop.js +3 -3
  333. package/dist/src/{ui/state → state}/active-run.d.ts +19 -0
  334. package/dist/src/{ui/state → state}/active-run.js +21 -0
  335. package/dist/src/{ui/status-bar/store.d.ts → state/status-bar-store.d.ts} +4 -1
  336. package/dist/src/{ui/status-bar/store.js → state/status-bar-store.js} +12 -9
  337. package/dist/src/state/turn-trace.d.ts +43 -0
  338. package/dist/src/state/turn-trace.js +32 -0
  339. package/dist/src/storage/db.js +2 -1
  340. package/dist/src/storage/index.d.ts +1 -1
  341. package/dist/src/storage/index.js +1 -1
  342. package/dist/src/storage/interaction-log.d.ts +1 -1
  343. package/dist/src/storage/migrations.js +71 -1
  344. package/dist/src/storage/sessions.d.ts +28 -10
  345. package/dist/src/storage/sessions.js +78 -21
  346. package/dist/src/storage/transcript-view.js +1 -1
  347. package/dist/src/storage/transcript.d.ts +51 -0
  348. package/dist/src/storage/transcript.js +284 -13
  349. package/dist/src/tools/file.d.ts +15 -0
  350. package/dist/src/tools/file.js +32 -0
  351. package/dist/src/tools/native-tools.js +5 -0
  352. package/dist/src/tools/registry.d.ts +3 -0
  353. package/dist/src/tools/registry.js +460 -22
  354. package/dist/src/tools/research.d.ts +29 -0
  355. package/dist/src/tools/research.js +233 -0
  356. package/dist/src/types/index.d.ts +118 -3
  357. package/dist/src/ui/app.js +0 -0
  358. package/dist/src/ui/cards/product-status-card.js +1 -1
  359. package/dist/src/ui/components/bubble-body-guard.d.ts +27 -0
  360. package/dist/src/ui/components/bubble-body-guard.js +50 -0
  361. package/dist/src/ui/components/context-rail.d.ts +26 -0
  362. package/dist/src/ui/components/context-rail.js +33 -0
  363. package/dist/src/ui/components/council-conclusion-card.d.ts +73 -0
  364. package/dist/src/ui/components/council-conclusion-card.js +420 -0
  365. package/dist/src/ui/components/council-debate-pill.d.ts +36 -0
  366. package/dist/src/ui/components/council-debate-pill.js +34 -0
  367. package/dist/src/ui/components/council-info-card.js +2 -2
  368. package/dist/src/ui/components/council-leader-bubble.d.ts +10 -3
  369. package/dist/src/ui/components/council-leader-bubble.js +21 -11
  370. package/dist/src/ui/components/council-message-bubble.d.ts +15 -2
  371. package/dist/src/ui/components/council-message-bubble.js +16 -15
  372. package/dist/src/ui/components/council-phase-timeline.d.ts +9 -1
  373. package/dist/src/ui/components/council-phase-timeline.js +49 -15
  374. package/dist/src/ui/components/council-placeholder-bubble.d.ts +16 -9
  375. package/dist/src/ui/components/council-placeholder-bubble.js +32 -29
  376. package/dist/src/ui/components/council-question-card.js +12 -12
  377. package/dist/src/ui/components/council-rail-rounds.d.ts +26 -0
  378. package/dist/src/ui/components/council-rail-rounds.js +57 -0
  379. package/dist/src/ui/components/council-round-group.d.ts +38 -0
  380. package/dist/src/ui/components/council-round-group.js +88 -0
  381. package/dist/src/ui/components/council-status-list.d.ts +3 -1
  382. package/dist/src/ui/components/council-status-list.js +36 -24
  383. package/dist/src/ui/components/council-synthesis-banner.d.ts +7 -2
  384. package/dist/src/ui/components/council-synthesis-banner.js +20 -5
  385. package/dist/src/ui/components/halt-recovery-card.js +9 -5
  386. package/dist/src/ui/components/jump-to-latest-pill.d.ts +11 -0
  387. package/dist/src/ui/components/jump-to-latest-pill.js +14 -0
  388. package/dist/src/ui/components/prompt-box.js +18 -16
  389. package/dist/src/ui/components/session-tree-card.d.ts +14 -0
  390. package/dist/src/ui/components/session-tree-card.js +46 -0
  391. package/dist/src/ui/components/slash-inline-menu.d.ts +12 -0
  392. package/dist/src/ui/components/slash-inline-menu.js +26 -5
  393. package/dist/src/ui/components/task-list-panel.d.ts +14 -1
  394. package/dist/src/ui/components/task-list-panel.js +22 -2
  395. package/dist/src/ui/containers/modals-layer.d.ts +2 -1
  396. package/dist/src/ui/hooks/use-session-picker.d.ts +3 -3
  397. package/dist/src/ui/mcp-modal.js +2 -4
  398. package/dist/src/ui/modals/api-key-modal.js +1 -1
  399. package/dist/src/ui/modals/connect-modal.js +4 -3
  400. package/dist/src/ui/modals/session-picker-modal.d.ts +2 -2
  401. package/dist/src/ui/modals/session-picker-modal.js +3 -5
  402. package/dist/src/ui/picker-providers.d.ts +1 -1
  403. package/dist/src/ui/picker-providers.js +1 -1
  404. package/dist/src/ui/primitives/index.d.ts +1 -0
  405. package/dist/src/ui/primitives/index.js +2 -0
  406. package/dist/src/ui/primitives/semantic-primitives.d.ts +76 -0
  407. package/dist/src/ui/primitives/semantic-primitives.js +81 -0
  408. package/dist/src/ui/slash/compact.js +5 -7
  409. package/dist/src/ui/slash/cost.js +1 -1
  410. package/dist/src/ui/slash/council.js +19 -1
  411. package/dist/src/ui/slash/debug.d.ts +3 -31
  412. package/dist/src/ui/slash/debug.js +9 -20
  413. package/dist/src/ui/slash/ideal.d.ts +6 -2
  414. package/dist/src/ui/slash/ideal.js +97 -7
  415. package/dist/src/ui/slash/menu-items.d.ts +7 -0
  416. package/dist/src/ui/slash/menu-items.js +12 -18
  417. package/dist/src/ui/slash/registry.d.ts +2 -0
  418. package/dist/src/ui/slash/registry.js +4 -0
  419. package/dist/src/ui/status-bar/cache-hit.d.ts +6 -0
  420. package/dist/src/ui/status-bar/cache-hit.js +9 -0
  421. package/dist/src/ui/status-bar/index.d.ts +1 -1
  422. package/dist/src/ui/status-bar/index.js +7 -3
  423. package/dist/src/ui/status-bar/usd-meter.d.ts +5 -4
  424. package/dist/src/ui/status-bar/usd-meter.js +6 -4
  425. package/dist/src/ui/theme.d.ts +1 -0
  426. package/dist/src/ui/theme.js +2 -0
  427. package/dist/src/ui/types.d.ts +7 -0
  428. package/dist/src/ui/use-app-logic.js +0 -0
  429. package/dist/src/ui/utils/format.d.ts +14 -0
  430. package/dist/src/ui/utils/format.js +23 -3
  431. package/dist/src/usage/downgrade.js +2 -2
  432. package/dist/src/usage/product-ledger.js +2 -2
  433. package/dist/src/utils/install-manager.js +2 -1
  434. package/dist/src/utils/logger.js +2 -2
  435. package/dist/src/utils/permission-mode.js +5 -3
  436. package/dist/src/utils/redactor.js +1 -1
  437. package/dist/src/utils/settings.d.ts +153 -5
  438. package/dist/src/utils/settings.js +233 -29
  439. package/dist/src/utils/visible-retry.d.ts +11 -0
  440. package/dist/src/utils/visible-retry.js +10 -1
  441. package/dist/src/verify/entrypoint.d.ts +1 -1
  442. package/dist/src/verify/entrypoint.js +1 -1
  443. package/dist/src/verify/recipes.d.ts +13 -0
  444. package/dist/src/verify/recipes.js +15 -0
  445. package/package.json +135 -132
  446. package/dist/src/providers/auth/gcloud.d.ts +0 -28
  447. package/dist/src/providers/auth/gcloud.js +0 -102
  448. package/dist/src/providers/auth/gemini-oauth.d.ts +0 -82
  449. package/dist/src/providers/auth/gemini-oauth.js +0 -472
  450. package/dist/src/providers/gemini.d.ts +0 -11
  451. package/dist/src/providers/gemini.js +0 -45
  452. package/dist/src/providers/siliconflow-sse-repair.d.ts +0 -58
  453. package/dist/src/providers/siliconflow-sse-repair.js +0 -177
  454. package/dist/src/providers/strategies/google.strategy.d.ts +0 -22
  455. package/dist/src/providers/strategies/google.strategy.js +0 -174
  456. package/dist/src/providers/strategies/siliconflow.strategy.js +0 -29
  457. package/dist/src/ui/containers/chat-feed.d.ts +0 -40
  458. package/dist/src/ui/containers/chat-feed.js +0 -66
@@ -0,0 +1,208 @@
1
+ /**
2
+ * First-class run artifacts for the Product Ideal Loop.
3
+ *
4
+ * Sprint-2 MVP (Part A core, run-centric — hierarchy deferred per REV-3 Kill B):
5
+ * promotes the debate research summary and the prior-run context out of buried
6
+ * `delegations.md` sections into dedicated `research.md` / `context.md` files,
7
+ * gives the Resume Digest structured, parseable content (the empty digest was
8
+ * the root cause of "resume blindness"), and persists per-sprint outcome JSON so
9
+ * `/ideal review` and cross-run memory can render real history.
10
+ *
11
+ * All artifacts live under `.muonroi-flow/runs/<runId>/`. Writes are atomic.
12
+ * Reads are tolerant: a missing file returns null, never throws.
13
+ */
14
+ import { promises as fs } from "node:fs";
15
+ import * as path from "node:path";
16
+ import { atomicWriteJSON, atomicWriteText } from "../storage/atomic-io.js";
17
+ const DIGEST_FIELD = {
18
+ stage: "Stage",
19
+ lastCompleted: "Last completed",
20
+ nextAction: "Next action",
21
+ sprintN: "Sprint",
22
+ score: "Score",
23
+ verify: "Verify",
24
+ updatedAt: "Updated",
25
+ };
26
+ /**
27
+ * Render a ResumeDigest as markdown for the `## Resume Digest` section body.
28
+ * Deterministic field order so diffs stay minimal.
29
+ */
30
+ export function renderResumeDigest(d) {
31
+ const lines = [];
32
+ lines.push(`- ${DIGEST_FIELD.stage}: ${d.stage}`);
33
+ if (d.lastCompleted)
34
+ lines.push(`- ${DIGEST_FIELD.lastCompleted}: ${d.lastCompleted}`);
35
+ lines.push(`- ${DIGEST_FIELD.nextAction}: ${d.nextAction}`);
36
+ if (typeof d.sprintN === "number")
37
+ lines.push(`- ${DIGEST_FIELD.sprintN}: ${d.sprintN}`);
38
+ if (typeof d.score === "number")
39
+ lines.push(`- ${DIGEST_FIELD.score}: ${d.score.toFixed(2)}`);
40
+ if (d.verify)
41
+ lines.push(`- ${DIGEST_FIELD.verify}: ${d.verify}`);
42
+ if (d.updatedAt)
43
+ lines.push(`- ${DIGEST_FIELD.updatedAt}: ${d.updatedAt}`);
44
+ if (d.openQuestions && d.openQuestions.length > 0) {
45
+ lines.push("");
46
+ lines.push("### Open questions");
47
+ for (const q of d.openQuestions)
48
+ lines.push(`- ${q}`);
49
+ }
50
+ if (d.eeSnapshot?.trim()) {
51
+ lines.push("");
52
+ lines.push("### Experience snapshot");
53
+ lines.push(d.eeSnapshot.trim());
54
+ }
55
+ return lines.join("\n");
56
+ }
57
+ /**
58
+ * Parse a `## Resume Digest` section body back into a ResumeDigest. Tolerant:
59
+ * returns null when the body has no recognizable `Stage:` line (e.g. the old
60
+ * empty digest or a legacy one-line string).
61
+ */
62
+ export function parseResumeDigest(body) {
63
+ if (!body?.trim())
64
+ return null;
65
+ const lines = body.split("\n");
66
+ const kv = new Map();
67
+ const openQuestions = [];
68
+ let section = "root";
69
+ const eeLines = [];
70
+ for (const raw of lines) {
71
+ const line = raw.trim();
72
+ if (/^###\s+open questions/i.test(line)) {
73
+ section = "questions";
74
+ continue;
75
+ }
76
+ if (/^###\s+experience snapshot/i.test(line)) {
77
+ section = "ee";
78
+ continue;
79
+ }
80
+ if (section === "ee") {
81
+ eeLines.push(raw);
82
+ continue;
83
+ }
84
+ const m = line.match(/^-\s+([^:]+):\s*(.*)$/);
85
+ if (m && section === "root") {
86
+ kv.set(m[1].trim().toLowerCase(), m[2].trim());
87
+ continue;
88
+ }
89
+ if (section === "questions") {
90
+ const q = line.match(/^-\s+(.*)$/);
91
+ if (q?.[1]?.trim())
92
+ openQuestions.push(q[1].trim());
93
+ }
94
+ }
95
+ const stage = kv.get("stage");
96
+ if (!stage)
97
+ return null;
98
+ const num = (v) => {
99
+ if (v === undefined)
100
+ return undefined;
101
+ const n = Number.parseFloat(v);
102
+ return Number.isFinite(n) ? n : undefined;
103
+ };
104
+ return {
105
+ stage,
106
+ lastCompleted: kv.get("last completed") || undefined,
107
+ nextAction: kv.get("next action") ?? "",
108
+ sprintN: num(kv.get("sprint")),
109
+ score: num(kv.get("score")),
110
+ verify: kv.get("verify") || undefined,
111
+ openQuestions: openQuestions.length > 0 ? openQuestions : undefined,
112
+ eeSnapshot: eeLines.join("\n").trim() || undefined,
113
+ updatedAt: kv.get("updated") || undefined,
114
+ };
115
+ }
116
+ function runDirOf(flowDir, runId) {
117
+ return path.join(flowDir, "runs", runId);
118
+ }
119
+ /**
120
+ * Write `research.md` — the first-class home for the debate output. Previously
121
+ * this lived only in `delegations.md` sections; callers still write those for
122
+ * back-compat, but `research.md` is now the canonical, reviewable surface.
123
+ */
124
+ export async function writeResearchDoc(flowDir, runId, doc) {
125
+ const parts = ["# Research\n"];
126
+ if (doc.eeSeed?.trim()) {
127
+ parts.push("## Experience seed (EE recall)\n");
128
+ parts.push(`${doc.eeSeed.trim()}\n`);
129
+ }
130
+ if (doc.webResearch) {
131
+ const line = doc.webResearch.confidence === "native"
132
+ ? `native — web-capable model${doc.webResearch.model ? ` (${doc.webResearch.model})` : ""}`
133
+ : "degraded — no native web model reachable; online facts via add-in fallback";
134
+ parts.push(`## Research Confidence: ${line}\n`);
135
+ }
136
+ parts.push("## Debate summary\n");
137
+ parts.push(`${doc.summary?.trim() || "(no summary produced)"}\n`);
138
+ if (doc.findings?.trim()) {
139
+ parts.push("## Findings\n");
140
+ parts.push(`${doc.findings.trim()}\n`);
141
+ }
142
+ await atomicWriteText(path.join(runDirOf(flowDir, runId), "research.md"), parts.join("\n"));
143
+ }
144
+ /**
145
+ * Write `context.md` — the prior-run digest + project context carried into a
146
+ * run. Prior context was previously computed then discarded (loop-driver noted
147
+ * it was dropped from the system prompt); persisting it here makes it a
148
+ * reviewable, resumable surface without re-bloating the live prompt.
149
+ */
150
+ export async function writeContextDoc(flowDir, runId, content) {
151
+ const body = content?.trim() ? content.trim() : "(no prior context)";
152
+ await atomicWriteText(path.join(runDirOf(flowDir, runId), "context.md"), `# Context\n\n${body}\n`);
153
+ }
154
+ /** Read a whole-file run doc (research.md / context.md). Null when absent. */
155
+ export async function readRunDoc(flowDir, runId, filename) {
156
+ try {
157
+ return await fs.readFile(path.join(runDirOf(flowDir, runId), filename), "utf8");
158
+ }
159
+ catch (err) {
160
+ if (err.code === "ENOENT")
161
+ return null;
162
+ throw err;
163
+ }
164
+ }
165
+ /** Absolute path to a run's `sprints/` directory. */
166
+ export function sprintsDir(flowDir, runId) {
167
+ return path.join(runDirOf(flowDir, runId), "sprints");
168
+ }
169
+ /** Persist a per-sprint outcome record as `sprints/<n>-outcome.json`. */
170
+ export async function writeSprintOutcome(flowDir, runId, outcome) {
171
+ const dir = sprintsDir(flowDir, runId);
172
+ await fs.mkdir(dir, { recursive: true });
173
+ await atomicWriteJSON(path.join(dir, `${outcome.sprintN}-outcome.json`), outcome);
174
+ }
175
+ /** Persist a per-sprint verify report as `sprints/<n>-verify.md`. */
176
+ export async function writeSprintVerify(flowDir, runId, sprintN, markdown) {
177
+ const dir = sprintsDir(flowDir, runId);
178
+ await fs.mkdir(dir, { recursive: true });
179
+ await atomicWriteText(path.join(dir, `${sprintN}-verify.md`), markdown);
180
+ }
181
+ /** Read all sprint outcomes for a run, sorted by sprint number ascending. */
182
+ export async function readSprintOutcomes(flowDir, runId) {
183
+ const dir = sprintsDir(flowDir, runId);
184
+ let files;
185
+ try {
186
+ files = await fs.readdir(dir);
187
+ }
188
+ catch (err) {
189
+ if (err.code === "ENOENT")
190
+ return [];
191
+ throw err;
192
+ }
193
+ const outcomes = [];
194
+ for (const f of files) {
195
+ if (!/^\d+-outcome\.json$/.test(f))
196
+ continue;
197
+ try {
198
+ const raw = await fs.readFile(path.join(dir, f), "utf8");
199
+ outcomes.push(JSON.parse(raw));
200
+ }
201
+ catch {
202
+ /* skip malformed outcome files — never throw on a corrupt artifact */
203
+ }
204
+ }
205
+ outcomes.sort((a, b) => a.sprintN - b.sprintN);
206
+ return outcomes;
207
+ }
208
+ //# sourceMappingURL=run-artifacts.js.map
@@ -1,2 +1,2 @@
1
- export declare const PACKAGE_VERSION = "1.8.4";
1
+ export declare const PACKAGE_VERSION = "1.8.5";
2
2
  export declare const PACKAGE_DESCRIPTION = "BYOK AI coding agent with multi-model council debate, role-based routing, and auto-compact.";
@@ -1,5 +1,5 @@
1
1
  // AUTO-GENERATED by scripts/sync-version.cjs. DO NOT EDIT BY HAND.
2
2
  // Sourced from package.json at build time so it survives bun --compile bundling.
3
- export const PACKAGE_VERSION = "1.8.4";
3
+ export const PACKAGE_VERSION = "1.8.5";
4
4
  export const PACKAGE_DESCRIPTION = "BYOK AI coding agent with multi-model council debate, role-based routing, and auto-compact.";
5
5
  //# sourceMappingURL=version.js.map
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Complexity-assessment verdict protocol for the GSD native complexity
3
+ * assessor pipeline.
4
+ *
5
+ * Mirrors `verdict-schema.ts` (plan-council verdict protocol): the decision
6
+ * is owned by the model and emitted as structured JSON; our code only
7
+ * parses + validates. `verdict-schema.ts` does not export its fence/brace
8
+ * helpers, so this module stays self-contained with the same algorithm
9
+ * under the `complexity-verdict` label (see task-3 brief DRY note).
10
+ *
11
+ * Extraction strategy (in priority order):
12
+ * 1. Last fenced block labeled ```complexity-verdict``` (preferred shape).
13
+ * 2. Last fenced block labeled ```json``` that validates.
14
+ * 3. Last fenced block (any / no label) that validates.
15
+ * 4. Last brace-balanced {...} substring that validates.
16
+ * 5. null — caller decides conservative fallback.
17
+ */
18
+ import { z } from "zod";
19
+ export declare const ComplexityVerdictSchema: z.ZodObject<{
20
+ depth: z.ZodEnum<{
21
+ quick: "quick";
22
+ standard: "standard";
23
+ heavy: "heavy";
24
+ }>;
25
+ autoCouncil: z.ZodCatch<z.ZodBoolean>;
26
+ rationale: z.ZodCatch<z.ZodString>;
27
+ quality: z.ZodCatch<z.ZodOptional<z.ZodObject<{
28
+ verdict: z.ZodEnum<{
29
+ enriched: "enriched";
30
+ adequate: "adequate";
31
+ "needs-user": "needs-user";
32
+ }>;
33
+ missing: z.ZodDefault<z.ZodArray<z.ZodString>>;
34
+ noiseRisk: z.ZodDefault<z.ZodEnum<{
35
+ low: "low";
36
+ high: "high";
37
+ med: "med";
38
+ }>>;
39
+ }, z.core.$strip>>>;
40
+ enrichedPrompt: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$strip>;
42
+ export type ComplexityVerdict = z.infer<typeof ComplexityVerdictSchema>;
43
+ export declare function extractComplexityVerdict(raw: string): ComplexityVerdict | null;
44
+ export declare const ASSESSMENT_OUTPUT_CONTRACT: string;
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Complexity-assessment verdict protocol for the GSD native complexity
3
+ * assessor pipeline.
4
+ *
5
+ * Mirrors `verdict-schema.ts` (plan-council verdict protocol): the decision
6
+ * is owned by the model and emitted as structured JSON; our code only
7
+ * parses + validates. `verdict-schema.ts` does not export its fence/brace
8
+ * helpers, so this module stays self-contained with the same algorithm
9
+ * under the `complexity-verdict` label (see task-3 brief DRY note).
10
+ *
11
+ * Extraction strategy (in priority order):
12
+ * 1. Last fenced block labeled ```complexity-verdict``` (preferred shape).
13
+ * 2. Last fenced block labeled ```json``` that validates.
14
+ * 3. Last fenced block (any / no label) that validates.
15
+ * 4. Last brace-balanced {...} substring that validates.
16
+ * 5. null — caller decides conservative fallback.
17
+ */
18
+ import { z } from "zod";
19
+ export const ComplexityVerdictSchema = z.object({
20
+ depth: z.enum(["quick", "standard", "heavy"]),
21
+ autoCouncil: z.boolean().catch(false),
22
+ rationale: z.string().catch(""),
23
+ quality: z
24
+ .object({
25
+ verdict: z.enum(["adequate", "enriched", "needs-user"]),
26
+ missing: z.array(z.string()).default([]),
27
+ noiseRisk: z.enum(["low", "med", "high"]).default("low"),
28
+ })
29
+ .optional()
30
+ .catch(undefined),
31
+ enrichedPrompt: z.string().optional(),
32
+ });
33
+ // Extraction mirrors verdict-schema.ts: prefer the LAST fenced `complexity-verdict`
34
+ // block, then json, then bare {...}. Model emits reasoning first, verdict last.
35
+ const FENCE_RE = /```([a-zA-Z0-9_+-]+)?\s*\n([\s\S]*?)\n?```/g;
36
+ function tryParse(s) {
37
+ try {
38
+ const r = ComplexityVerdictSchema.safeParse(JSON.parse(s.trim()));
39
+ return r.success ? r.data : null;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ export function extractComplexityVerdict(raw) {
46
+ if (!raw?.trim())
47
+ return null;
48
+ const fences = [];
49
+ for (const m of raw.matchAll(FENCE_RE))
50
+ fences.push({ label: (m[1] ?? "").toLowerCase(), body: m[2] ?? "" });
51
+ const buckets = [
52
+ fences.filter((f) => f.label === "complexity-verdict"),
53
+ fences.filter((f) => f.label === "json"),
54
+ fences.filter((f) => f.label !== "complexity-verdict" && f.label !== "json"),
55
+ ];
56
+ for (const bucket of buckets) {
57
+ for (let i = bucket.length - 1; i >= 0; i -= 1) {
58
+ const v = tryParse(bucket[i].body);
59
+ if (v)
60
+ return v;
61
+ }
62
+ }
63
+ // Bare {...} right-to-left, string-aware (skip braces inside quoted values —
64
+ // free-form `rationale` text may contain literal `{`/`}`).
65
+ const bare = findBareObjects(raw);
66
+ for (let i = bare.length - 1; i >= 0; i -= 1) {
67
+ const v = tryParse(bare[i]);
68
+ if (v)
69
+ return v;
70
+ }
71
+ return null;
72
+ }
73
+ /** Top-level {...} substrings via string-aware brace-balanced scan, in document order. */
74
+ function findBareObjects(raw) {
75
+ const out = [];
76
+ let i = 0;
77
+ while (i < raw.length) {
78
+ if (raw[i] !== "{") {
79
+ i += 1;
80
+ continue;
81
+ }
82
+ let depth = 0;
83
+ let inStr = false;
84
+ let esc = false;
85
+ let j = i;
86
+ for (; j < raw.length; j += 1) {
87
+ const ch = raw[j];
88
+ if (inStr) {
89
+ if (esc)
90
+ esc = false;
91
+ else if (ch === "\\")
92
+ esc = true;
93
+ else if (ch === '"')
94
+ inStr = false;
95
+ }
96
+ else if (ch === '"') {
97
+ inStr = true;
98
+ }
99
+ else if (ch === "{") {
100
+ depth += 1;
101
+ }
102
+ else if (ch === "}") {
103
+ depth -= 1;
104
+ if (depth === 0) {
105
+ out.push(raw.slice(i, j + 1));
106
+ break;
107
+ }
108
+ }
109
+ }
110
+ i = j >= raw.length ? j : j + 1;
111
+ }
112
+ return out;
113
+ }
114
+ export const ASSESSMENT_OUTPUT_CONTRACT = [
115
+ "",
116
+ "Emit your final decision as a fenced block in EXACTLY this shape — no prose inside the fence:",
117
+ "```complexity-verdict",
118
+ '{"depth":"quick|standard|heavy","autoCouncil":true|false,"rationale":"one short sentence","quality":{"verdict":"adequate|enriched|needs-user","missing":["intent"|"target"|"scope"|"acceptance"],"noiseRisk":"low|med|high"},"enrichedPrompt":"the enriched brief, or empty string when adequate"}',
119
+ "```",
120
+ '- "quick" = trivial single-shot (typo, rename, read-and-explain). No plan/review needed.',
121
+ '- "standard" = ordinary feature/bugfix. Short plan → review → implement → verify.',
122
+ '- "heavy" = architectural / multi-file / wide / ambiguous. Full discuss → plan → plan-review → verify.',
123
+ "- autoCouncil = true only when the task benefits from multi-perspective debate before implementation.",
124
+ "",
125
+ 'Prompt-quality rubric — a prompt is "adequate" when these BLOCKERS are present or confidently derivable WITHOUT padding: (1) Intent/Outcome, (2) Target/Locus, (3) Scope boundary, (4) Acceptance.',
126
+ "Enrichment rules (SIGNAL over noise):",
127
+ '- Every added line MUST change what the coding agent does; if it does not, omit it. Over-enrichment is a FAILURE — set noiseRisk="high" and cut.',
128
+ '- NEVER assert a file path as fact. Any area reference is an UNVERIFIED HINT: write "likely area: <dir> (confirm via grep before anchoring)". You cannot see the codebase.',
129
+ '- verdict="adequate" -> enrichedPrompt="" (use the raw prompt).',
130
+ '- verdict="enriched" -> a brief that fills derivable gaps + hedged hints only.',
131
+ '- verdict="needs-user" -> a blocker is NOT derivable from context; keep the brief minimal and list the open question(s) under "OPEN QUESTIONS:".',
132
+ "Keep enrichedPrompt under 1500 characters.",
133
+ ].join("\n");
134
+ //# sourceMappingURL=assessment-schema.js.map
@@ -0,0 +1,45 @@
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
+ export interface LoopHook {
9
+ capId: string;
10
+ kind: "step" | "contribution" | "gate";
11
+ point?: string;
12
+ ref?: Record<string, unknown>;
13
+ fragment?: {
14
+ path?: string;
15
+ inline?: string;
16
+ };
17
+ when?: string;
18
+ onError?: string;
19
+ produces?: string[];
20
+ consumes?: string[];
21
+ into?: string;
22
+ check?: unknown;
23
+ blocking?: boolean;
24
+ configValues?: Record<string, unknown>;
25
+ }
26
+ export interface LoopPointEntry {
27
+ steps: LoopHook[];
28
+ contributions: LoopHook[];
29
+ gates: LoopHook[];
30
+ }
31
+ export interface CapabilityRegistry {
32
+ byLoopPoint: Record<string, LoopPointEntry>;
33
+ }
34
+ export declare const REGISTRY: CapabilityRegistry;
35
+ /**
36
+ * debate:error — stubbed per Test-First Registry Specialist's strengthening.
37
+ * Handler is unwired in sprint 1. Drop recovery deferred to sprint 2.
38
+ * The fixture is assertable so the registry contract test catches both
39
+ * wrong-model dispatch AND missing error channel.
40
+ */
41
+ export declare const debateErrorStub: {
42
+ kind: "debate:error";
43
+ onError: "halt";
44
+ blocking: true;
45
+ };