muonroi-cli 1.4.0 → 1.5.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 (2000) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +122 -122
  3. package/dist/packages/agent-harness-core/src/predicate.d.ts +1 -1
  4. package/dist/src/agent-harness/__tests__/mock-model.spec.js +48 -1
  5. package/dist/src/agent-harness/mock-model.d.ts +11 -0
  6. package/dist/src/agent-harness/mock-model.js +21 -0
  7. package/dist/src/cli/cost-forensics.js +12 -12
  8. package/dist/src/council/__tests__/clarification-prompt.test.js +51 -0
  9. package/dist/src/council/__tests__/clarifier-ready-gate.test.js +32 -0
  10. package/dist/src/council/__tests__/decisions-lock.test.js +17 -1
  11. package/dist/src/council/__tests__/oauth-reachable.test.d.ts +1 -0
  12. package/dist/src/council/__tests__/oauth-reachable.test.js +31 -0
  13. package/dist/src/council/__tests__/parse-outcome-fallback.test.js +11 -0
  14. package/dist/src/council/clarifier.js +9 -1
  15. package/dist/src/council/debate.js +5 -1
  16. package/dist/src/council/decisions-lock.js +3 -3
  17. package/dist/src/council/index.js +12 -5
  18. package/dist/src/council/leader.d.ts +0 -17
  19. package/dist/src/council/leader.js +22 -15
  20. package/dist/src/council/planner.js +1 -1
  21. package/dist/src/council/prompts.js +63 -57
  22. package/dist/src/council/types.d.ts +7 -0
  23. package/dist/src/ee/__tests__/ee-onboarding.test.d.ts +1 -0
  24. package/dist/src/ee/__tests__/ee-onboarding.test.js +32 -0
  25. package/dist/src/ee/auth.d.ts +9 -0
  26. package/dist/src/ee/auth.js +19 -0
  27. package/dist/src/ee/ee-onboarding.d.ts +5 -0
  28. package/dist/src/ee/ee-onboarding.js +76 -0
  29. package/dist/src/generated/version.d.ts +1 -1
  30. package/dist/src/generated/version.js +1 -1
  31. package/dist/src/headless/output.js +6 -4
  32. package/dist/src/headless/output.test.js +4 -3
  33. package/dist/src/index.js +20 -1
  34. package/dist/src/mcp/__tests__/auto-setup.test.js +74 -0
  35. package/dist/src/mcp/__tests__/client-pool.spec.d.ts +1 -0
  36. package/dist/src/mcp/__tests__/client-pool.spec.js +98 -0
  37. package/dist/src/mcp/__tests__/parallel-build.spec.d.ts +1 -0
  38. package/dist/src/mcp/__tests__/parallel-build.spec.js +67 -0
  39. package/dist/src/mcp/__tests__/smart-filter.test.js +56 -0
  40. package/dist/src/mcp/auto-setup.js +56 -2
  41. package/dist/src/mcp/client-pool.d.ts +46 -0
  42. package/dist/src/mcp/client-pool.js +212 -0
  43. package/dist/src/mcp/oauth-callback.js +2 -2
  44. package/dist/src/mcp/parse-headers.test.js +14 -14
  45. package/dist/src/mcp/runtime.d.ts +28 -0
  46. package/dist/src/mcp/runtime.js +117 -51
  47. package/dist/src/mcp/self-verify-runner.d.ts +14 -0
  48. package/dist/src/mcp/self-verify-runner.js +38 -0
  49. package/dist/src/mcp/setup-guide-text.d.ts +9 -0
  50. package/dist/src/mcp/setup-guide-text.js +84 -0
  51. package/dist/src/mcp/smart-filter.js +49 -0
  52. package/dist/src/mcp/smoke.test.js +43 -43
  53. package/dist/src/mcp/tools-server.d.ts +7 -0
  54. package/dist/src/mcp/tools-server.js +19 -22
  55. package/dist/src/models/catalog.json +349 -349
  56. package/dist/src/ops/__tests__/doctor-ee-health.test.js +21 -0
  57. package/dist/src/ops/doctor.d.ts +3 -2
  58. package/dist/src/ops/doctor.js +47 -11
  59. package/dist/src/ops/doctor.test.js +4 -3
  60. package/dist/src/orchestrator/__tests__/mcp-capability-block.test.d.ts +1 -0
  61. package/dist/src/orchestrator/__tests__/mcp-capability-block.test.js +39 -0
  62. package/dist/src/orchestrator/__tests__/project-stack.test.d.ts +1 -0
  63. package/dist/src/orchestrator/__tests__/project-stack.test.js +65 -0
  64. package/dist/src/orchestrator/batch-turn-runner.js +7 -11
  65. package/dist/src/orchestrator/message-processor.js +57 -27
  66. package/dist/src/orchestrator/orchestrator.js +26 -0
  67. package/dist/src/orchestrator/prompts.d.ts +51 -0
  68. package/dist/src/orchestrator/prompts.js +257 -134
  69. package/dist/src/orchestrator/scope-ceiling.js +6 -1
  70. package/dist/src/orchestrator/stream-runner.js +20 -15
  71. package/dist/src/orchestrator/text-tool-call-detector.test.js +13 -13
  72. package/dist/src/pil/__tests__/clarity-gate.test.js +24 -215
  73. package/dist/src/pil/__tests__/config.test.js +1 -17
  74. package/dist/src/pil/__tests__/discovery.test.js +144 -11
  75. package/dist/src/pil/__tests__/layer1-intent-trace.test.js +7 -2
  76. package/dist/src/pil/__tests__/layer1-intent.test.js +3 -0
  77. package/dist/src/pil/__tests__/layer16-clarity.test.js +32 -116
  78. package/dist/src/pil/__tests__/layer4-gsd.test.js +37 -0
  79. package/dist/src/pil/__tests__/layer6-output.test.js +137 -18
  80. package/dist/src/pil/__tests__/llm-classify.test.js +49 -2
  81. package/dist/src/pil/agent-operating-contract.d.ts +1 -1
  82. package/dist/src/pil/agent-operating-contract.js +2 -0
  83. package/dist/src/pil/agent-operating-contract.test.js +7 -2
  84. package/dist/src/pil/cheap-model-playbook.js +35 -35
  85. package/dist/src/pil/cheap-model-workbooks.js +16 -13
  86. package/dist/src/pil/clarity-gate.d.ts +21 -19
  87. package/dist/src/pil/clarity-gate.js +26 -153
  88. package/dist/src/pil/config.d.ts +9 -1
  89. package/dist/src/pil/config.js +15 -4
  90. package/dist/src/pil/discovery.js +211 -136
  91. package/dist/src/pil/layer1-intent.d.ts +12 -0
  92. package/dist/src/pil/layer1-intent.js +283 -38
  93. package/dist/src/pil/layer1-intent.test.js +210 -4
  94. package/dist/src/pil/layer16-clarity.d.ts +25 -11
  95. package/dist/src/pil/layer16-clarity.js +19 -306
  96. package/dist/src/pil/layer4-gsd.js +18 -6
  97. package/dist/src/pil/layer6-output.d.ts +2 -0
  98. package/dist/src/pil/layer6-output.js +137 -22
  99. package/dist/src/pil/llm-classify.d.ts +26 -0
  100. package/dist/src/pil/llm-classify.js +34 -5
  101. package/dist/src/pil/native-capabilities-workbook.d.ts +1 -1
  102. package/dist/src/pil/native-capabilities-workbook.js +82 -76
  103. package/dist/src/pil/schema.d.ts +8 -0
  104. package/dist/src/pil/schema.js +12 -1
  105. package/dist/src/pil/task-tier-map.js +4 -0
  106. package/dist/src/pil/types.d.ts +11 -1
  107. package/dist/src/product-loop/done-gate.js +3 -3
  108. package/dist/src/product-loop/loop-driver.js +18 -18
  109. package/dist/src/product-loop/progress-snapshot.js +4 -4
  110. package/dist/src/providers/auth/gemini-oauth.js +6 -15
  111. package/dist/src/providers/auth/grok-oauth.js +6 -15
  112. package/dist/src/providers/auth/openai-oauth.js +6 -15
  113. package/dist/src/providers/mcp-vision-bridge.js +48 -48
  114. package/dist/src/reporter/index.js +1 -1
  115. package/dist/src/scaffold/bb-ecosystem-apply.js +47 -47
  116. package/dist/src/scaffold/bb-quality-gate.js +5 -5
  117. package/dist/src/scaffold/continuation-prompt.js +60 -60
  118. package/dist/src/scaffold/init-new.js +453 -453
  119. package/dist/src/self-qa/__tests__/scenario-planner.test.js +3 -3
  120. package/dist/src/self-qa/agentic-loop.js +24 -19
  121. package/dist/src/self-qa/spec-emitter.js +26 -23
  122. package/dist/src/storage/__tests__/migrations.test.js +2 -2
  123. package/dist/src/storage/interaction-log.js +5 -5
  124. package/dist/src/storage/migrations.js +122 -122
  125. package/dist/src/storage/sessions.js +42 -42
  126. package/dist/src/storage/transcript.js +91 -84
  127. package/dist/src/storage/usage.js +14 -14
  128. package/dist/src/storage/workspaces.js +12 -12
  129. package/dist/src/tools/__tests__/native-tools.test.d.ts +1 -0
  130. package/dist/src/tools/__tests__/native-tools.test.js +53 -0
  131. package/dist/src/tools/git-safety.d.ts +61 -0
  132. package/dist/src/tools/git-safety.js +141 -0
  133. package/dist/src/tools/git-safety.test.d.ts +1 -0
  134. package/dist/src/tools/git-safety.test.js +111 -0
  135. package/dist/src/tools/native-tools.d.ts +31 -0
  136. package/dist/src/tools/native-tools.js +273 -0
  137. package/dist/src/tools/registry-git-safety.test.d.ts +7 -0
  138. package/dist/src/tools/registry-git-safety.test.js +92 -0
  139. package/dist/src/tools/registry.js +39 -4
  140. package/dist/src/ui/__tests__/markdown-render.test.d.ts +1 -0
  141. package/dist/src/ui/__tests__/markdown-render.test.js +48 -0
  142. package/dist/src/ui/app.js +0 -0
  143. package/dist/src/ui/components/message-view.js +4 -1
  144. package/dist/src/ui/components/structured-response-view.js +7 -3
  145. package/dist/src/ui/components/tool-group.js +7 -1
  146. package/dist/src/ui/markdown-render.d.ts +41 -0
  147. package/dist/src/ui/markdown-render.js +223 -0
  148. package/dist/src/ui/markdown.d.ts +10 -0
  149. package/dist/src/ui/markdown.js +12 -35
  150. package/dist/src/ui/slash/council-inspect.js +4 -4
  151. package/dist/src/ui/slash/export.js +4 -4
  152. package/dist/src/ui/utils/text.d.ts +8 -0
  153. package/dist/src/ui/utils/text.js +16 -0
  154. package/dist/src/ui/utils/text.test.d.ts +1 -0
  155. package/dist/src/ui/utils/text.test.js +23 -0
  156. package/dist/src/usage/ledger.js +48 -15
  157. package/dist/src/utils/__tests__/footprint-gitignore.test.d.ts +1 -0
  158. package/dist/src/utils/__tests__/footprint-gitignore.test.js +50 -0
  159. package/dist/src/utils/clipboard-image.js +23 -23
  160. package/dist/src/utils/open-url.d.ts +56 -0
  161. package/dist/src/utils/open-url.js +58 -0
  162. package/dist/src/utils/open-url.test.d.ts +1 -0
  163. package/dist/src/utils/open-url.test.js +86 -0
  164. package/dist/src/utils/settings.d.ts +12 -0
  165. package/dist/src/utils/settings.js +48 -0
  166. package/dist/src/utils/side-question.js +2 -2
  167. package/dist/src/utils/skills.js +3 -3
  168. package/dist/src/verify/__tests__/coverage-parsers.test.js +30 -30
  169. package/dist/src/verify/environment.js +2 -1
  170. package/package.json +3 -2
  171. package/dist/muonroi-cli-standalone.exe +0 -0
  172. package/dist/packages/agent-harness-core/src/driver.js.map +0 -1
  173. package/dist/packages/agent-harness-core/src/event-filter.js.map +0 -1
  174. package/dist/packages/agent-harness-core/src/event-redact.js.map +0 -1
  175. package/dist/packages/agent-harness-core/src/idle.js.map +0 -1
  176. package/dist/packages/agent-harness-core/src/index.js.map +0 -1
  177. package/dist/packages/agent-harness-core/src/mcp-server.js.map +0 -1
  178. package/dist/packages/agent-harness-core/src/mock-llm.js.map +0 -1
  179. package/dist/packages/agent-harness-core/src/predicate.js.map +0 -1
  180. package/dist/packages/agent-harness-core/src/protocol.js.map +0 -1
  181. package/dist/packages/agent-harness-core/src/registry.js.map +0 -1
  182. package/dist/packages/agent-harness-core/src/selector.js.map +0 -1
  183. package/dist/packages/agent-harness-core/src/spec-helpers.js.map +0 -1
  184. package/dist/packages/agent-harness-core/src/transports/sidechannel.js.map +0 -1
  185. package/dist/packages/agent-harness-core/src/transports/ws.js.map +0 -1
  186. package/dist/packages/agent-harness-opentui/src/agent-mode.js.map +0 -1
  187. package/dist/packages/agent-harness-opentui/src/index.js.map +0 -1
  188. package/dist/packages/agent-harness-opentui/src/input-bridge.js.map +0 -1
  189. package/dist/packages/agent-harness-opentui/src/install.js.map +0 -1
  190. package/dist/packages/agent-harness-opentui/src/reconciler-hook.js.map +0 -1
  191. package/dist/packages/agent-harness-opentui/src/semantic.js.map +0 -1
  192. package/dist/src/__test-helpers__/catalog-fixtures.js.map +0 -1
  193. package/dist/src/__test-stubs__/ee-server.js.map +0 -1
  194. package/dist/src/__test-stubs__/vitest-setup.js.map +0 -1
  195. package/dist/src/__tests__/council/bubble-layout.test.js.map +0 -1
  196. package/dist/src/__tests__/council/code-block-truncate.test.js.map +0 -1
  197. package/dist/src/__tests__/council/role-palette.test.js.map +0 -1
  198. package/dist/src/__tests__/first-run-wizard.test.js.map +0 -1
  199. package/dist/src/agent-harness/__tests__/cli-flags.spec.js.map +0 -1
  200. package/dist/src/agent-harness/__tests__/driver.spec.js.map +0 -1
  201. package/dist/src/agent-harness/__tests__/idle.spec.js.map +0 -1
  202. package/dist/src/agent-harness/__tests__/mock-llm.spec.js.map +0 -1
  203. package/dist/src/agent-harness/__tests__/mock-model.spec.js.map +0 -1
  204. package/dist/src/agent-harness/__tests__/predicate.spec.js.map +0 -1
  205. package/dist/src/agent-harness/__tests__/protocol.spec.js.map +0 -1
  206. package/dist/src/agent-harness/__tests__/schema.spec.js.map +0 -1
  207. package/dist/src/agent-harness/__tests__/selector.spec.js.map +0 -1
  208. package/dist/src/agent-harness/__tests__/sidechannel.spec.js.map +0 -1
  209. package/dist/src/agent-harness/__tests__/spec-helpers.spec.js.map +0 -1
  210. package/dist/src/agent-harness/index.js.map +0 -1
  211. package/dist/src/agent-harness/mock-model.js.map +0 -1
  212. package/dist/src/agent-harness/test-spawn.js.map +0 -1
  213. package/dist/src/billing/index.js.map +0 -1
  214. package/dist/src/chat/__tests__/broadcast-bus.test.js.map +0 -1
  215. package/dist/src/chat/__tests__/channel-manager.test.js.map +0 -1
  216. package/dist/src/chat/__tests__/client.test.js.map +0 -1
  217. package/dist/src/chat/__tests__/discord-integration.test.js.map +0 -1
  218. package/dist/src/chat/__tests__/intent-prompt.test.js.map +0 -1
  219. package/dist/src/chat/__tests__/verdict-resolver.test.js.map +0 -1
  220. package/dist/src/chat/broadcast-bus.js.map +0 -1
  221. package/dist/src/chat/channel-manager.js.map +0 -1
  222. package/dist/src/chat/chat-keychain.js.map +0 -1
  223. package/dist/src/chat/factory.js.map +0 -1
  224. package/dist/src/chat/intent-prompt.js.map +0 -1
  225. package/dist/src/chat/providers/discord/client.js.map +0 -1
  226. package/dist/src/chat/types.js.map +0 -1
  227. package/dist/src/chat/verdict-constants.js.map +0 -1
  228. package/dist/src/chat/verdict-resolver.js.map +0 -1
  229. package/dist/src/cli/__tests__/bw-vault.test.js.map +0 -1
  230. package/dist/src/cli/__tests__/keys-bundle.test.js.map +0 -1
  231. package/dist/src/cli/__tests__/share-cmd.test.js.map +0 -1
  232. package/dist/src/cli/bw-vault.js.map +0 -1
  233. package/dist/src/cli/config/__tests__/model-picker.test.js.map +0 -1
  234. package/dist/src/cli/config/__tests__/provider-fetch.test.js.map +0 -1
  235. package/dist/src/cli/config/index.js.map +0 -1
  236. package/dist/src/cli/config/model-picker.js.map +0 -1
  237. package/dist/src/cli/config/provider-fetch.js.map +0 -1
  238. package/dist/src/cli/config/screen-council.js.map +0 -1
  239. package/dist/src/cli/config/screen-models.js.map +0 -1
  240. package/dist/src/cli/config/screen-providers.js.map +0 -1
  241. package/dist/src/cli/config/tui.js.map +0 -1
  242. package/dist/src/cli/cost-forensics.js.map +0 -1
  243. package/dist/src/cli/cost-forensics.test.js.map +0 -1
  244. package/dist/src/cli/keys-bundle.js.map +0 -1
  245. package/dist/src/cli/keys.js.map +0 -1
  246. package/dist/src/cli/keys.test.js.map +0 -1
  247. package/dist/src/cli/pil-report.js.map +0 -1
  248. package/dist/src/cli/reporter-cmd.js.map +0 -1
  249. package/dist/src/cli/share-cmd.js.map +0 -1
  250. package/dist/src/cli/usage-report.js.map +0 -1
  251. package/dist/src/cloud/index.js.map +0 -1
  252. package/dist/src/council/__tests__/accounting.test.js.map +0 -1
  253. package/dist/src/council/__tests__/audit-replay.test.js.map +0 -1
  254. package/dist/src/council/__tests__/clarifier-max-rounds.test.js.map +0 -1
  255. package/dist/src/council/__tests__/clarifier-options.test.js.map +0 -1
  256. package/dist/src/council/__tests__/clarifier-ready-gate.test.js.map +0 -1
  257. package/dist/src/council/__tests__/cost-aware.test.js.map +0 -1
  258. package/dist/src/council/__tests__/debate-planner-structured.test.js.map +0 -1
  259. package/dist/src/council/__tests__/decisions-lock.test.js.map +0 -1
  260. package/dist/src/council/__tests__/evaluator-metrics.test.js.map +0 -1
  261. package/dist/src/council/__tests__/parse-outcome-fallback.test.js.map +0 -1
  262. package/dist/src/council/__tests__/research-tools.test.js.map +0 -1
  263. package/dist/src/council/__tests__/round-tools.test.js.map +0 -1
  264. package/dist/src/council/__tests__/tool-trace.test.js.map +0 -1
  265. package/dist/src/council/__tests__/types-contract.test.js.map +0 -1
  266. package/dist/src/council/clarifier.js.map +0 -1
  267. package/dist/src/council/context.js.map +0 -1
  268. package/dist/src/council/debate-planner.js.map +0 -1
  269. package/dist/src/council/debate.js.map +0 -1
  270. package/dist/src/council/decisions-lock.js.map +0 -1
  271. package/dist/src/council/executor.js.map +0 -1
  272. package/dist/src/council/index.js.map +0 -1
  273. package/dist/src/council/leader.js.map +0 -1
  274. package/dist/src/council/llm.js.map +0 -1
  275. package/dist/src/council/phase-events.js.map +0 -1
  276. package/dist/src/council/planner.js.map +0 -1
  277. package/dist/src/council/preflight.js.map +0 -1
  278. package/dist/src/council/prompts.js.map +0 -1
  279. package/dist/src/council/types.js.map +0 -1
  280. package/dist/src/daemon/scheduler.js.map +0 -1
  281. package/dist/src/daemon/scheduler.test.js.map +0 -1
  282. package/dist/src/ee/__tests__/bb-design.test.js.map +0 -1
  283. package/dist/src/ee/__tests__/export-transcripts.test.js.map +0 -1
  284. package/dist/src/ee/__tests__/pil-context-bridge.test.js.map +0 -1
  285. package/dist/src/ee/__tests__/pipeline.integration.test.js.map +0 -1
  286. package/dist/src/ee/__tests__/recall-format.test.js.map +0 -1
  287. package/dist/src/ee/__tests__/recall-ledger.test.js.map +0 -1
  288. package/dist/src/ee/__tests__/render-sink-wiring.test.js.map +0 -1
  289. package/dist/src/ee/auth.js.map +0 -1
  290. package/dist/src/ee/auth.test.js.map +0 -1
  291. package/dist/src/ee/bb-design.js.map +0 -1
  292. package/dist/src/ee/bb-retrieval.js.map +0 -1
  293. package/dist/src/ee/bridge.js.map +0 -1
  294. package/dist/src/ee/bridge.test.js.map +0 -1
  295. package/dist/src/ee/client-mode.js.map +0 -1
  296. package/dist/src/ee/client.js.map +0 -1
  297. package/dist/src/ee/client.test.js.map +0 -1
  298. package/dist/src/ee/council-bridge.js.map +0 -1
  299. package/dist/src/ee/embedding-cache.js.map +0 -1
  300. package/dist/src/ee/export-transcripts.js.map +0 -1
  301. package/dist/src/ee/extract-session.js.map +0 -1
  302. package/dist/src/ee/extract-session.test.js.map +0 -1
  303. package/dist/src/ee/health.js.map +0 -1
  304. package/dist/src/ee/index.js.map +0 -1
  305. package/dist/src/ee/intercept.js.map +0 -1
  306. package/dist/src/ee/intercept.test.js.map +0 -1
  307. package/dist/src/ee/judge.js.map +0 -1
  308. package/dist/src/ee/judge.test.js.map +0 -1
  309. package/dist/src/ee/mistake-detector.js.map +0 -1
  310. package/dist/src/ee/mistake-detector.test.js.map +0 -1
  311. package/dist/src/ee/offline-queue.js.map +0 -1
  312. package/dist/src/ee/offline-queue.test.js.map +0 -1
  313. package/dist/src/ee/phase-outcome.js.map +0 -1
  314. package/dist/src/ee/phase-outcome.test.js.map +0 -1
  315. package/dist/src/ee/phase-tracker.js.map +0 -1
  316. package/dist/src/ee/phase-tracker.test.js.map +0 -1
  317. package/dist/src/ee/posttool.js.map +0 -1
  318. package/dist/src/ee/posttool.test.js.map +0 -1
  319. package/dist/src/ee/prompt-stale.js.map +0 -1
  320. package/dist/src/ee/prompt-stale.test.js.map +0 -1
  321. package/dist/src/ee/recall-ledger.js.map +0 -1
  322. package/dist/src/ee/recall-mirror.test.js.map +0 -1
  323. package/dist/src/ee/render.js.map +0 -1
  324. package/dist/src/ee/render.test.js.map +0 -1
  325. package/dist/src/ee/scope.js.map +0 -1
  326. package/dist/src/ee/scope.test.js.map +0 -1
  327. package/dist/src/ee/search.js.map +0 -1
  328. package/dist/src/ee/session-trajectory.js.map +0 -1
  329. package/dist/src/ee/session-trajectory.test.js.map +0 -1
  330. package/dist/src/ee/tenant.js.map +0 -1
  331. package/dist/src/ee/touch.test.js.map +0 -1
  332. package/dist/src/ee/transcript-emit.js.map +0 -1
  333. package/dist/src/ee/types.js.map +0 -1
  334. package/dist/src/flow/__tests__/migration.test.js.map +0 -1
  335. package/dist/src/flow/__tests__/parser.test.js.map +0 -1
  336. package/dist/src/flow/__tests__/run-manager-product.test.js.map +0 -1
  337. package/dist/src/flow/__tests__/run-manager.test.js.map +0 -1
  338. package/dist/src/flow/__tests__/scaffold-checkpoint.test.js.map +0 -1
  339. package/dist/src/flow/__tests__/scaffold.test.js.map +0 -1
  340. package/dist/src/flow/__tests__/warning-persist.test.js.map +0 -1
  341. package/dist/src/flow/artifact-io.js.map +0 -1
  342. package/dist/src/flow/compaction/__tests__/compress.test.js.map +0 -1
  343. package/dist/src/flow/compaction/__tests__/extract.test.js.map +0 -1
  344. package/dist/src/flow/compaction/__tests__/preserve.test.js.map +0 -1
  345. package/dist/src/flow/compaction/compress.js.map +0 -1
  346. package/dist/src/flow/compaction/extract.js.map +0 -1
  347. package/dist/src/flow/compaction/index.js.map +0 -1
  348. package/dist/src/flow/compaction/preserve.js.map +0 -1
  349. package/dist/src/flow/index.js.map +0 -1
  350. package/dist/src/flow/migration.js.map +0 -1
  351. package/dist/src/flow/parser.js.map +0 -1
  352. package/dist/src/flow/run-manager.js.map +0 -1
  353. package/dist/src/flow/scaffold-checkpoint.js.map +0 -1
  354. package/dist/src/flow/scaffold.js.map +0 -1
  355. package/dist/src/flow/warning-persist.js.map +0 -1
  356. package/dist/src/generated/version.js.map +0 -1
  357. package/dist/src/gsd/__tests__/complexity.test.js.map +0 -1
  358. package/dist/src/gsd/__tests__/directives.test.js.map +0 -1
  359. package/dist/src/gsd/__tests__/gray-areas.test.js.map +0 -1
  360. package/dist/src/gsd/__tests__/types.test.js.map +0 -1
  361. package/dist/src/gsd/complexity.js.map +0 -1
  362. package/dist/src/gsd/directives.js.map +0 -1
  363. package/dist/src/gsd/gray-areas.js.map +0 -1
  364. package/dist/src/gsd/index.js.map +0 -1
  365. package/dist/src/gsd/types.js.map +0 -1
  366. package/dist/src/headless/__tests__/council-answers.test.js.map +0 -1
  367. package/dist/src/headless/council-answers.js.map +0 -1
  368. package/dist/src/headless/output.js.map +0 -1
  369. package/dist/src/headless/output.test.js.map +0 -1
  370. package/dist/src/hooks/config.js.map +0 -1
  371. package/dist/src/hooks/index.js.map +0 -1
  372. package/dist/src/hooks/types.js.map +0 -1
  373. package/dist/src/index.js.map +0 -1
  374. package/dist/src/lsp/builtins.js.map +0 -1
  375. package/dist/src/lsp/builtins.test.js.map +0 -1
  376. package/dist/src/lsp/client.js.map +0 -1
  377. package/dist/src/lsp/manager.js.map +0 -1
  378. package/dist/src/lsp/manager.test.js.map +0 -1
  379. package/dist/src/lsp/npm-cache.js.map +0 -1
  380. package/dist/src/lsp/npm-cache.test.js.map +0 -1
  381. package/dist/src/lsp/runtime.js.map +0 -1
  382. package/dist/src/lsp/smoke.test.js.map +0 -1
  383. package/dist/src/lsp/types.js.map +0 -1
  384. package/dist/src/maintain/__tests__/codebase-intel.test.js.map +0 -1
  385. package/dist/src/maintain/__tests__/gh-create-pr.test.js.map +0 -1
  386. package/dist/src/maintain/__tests__/pr-builder.test.js.map +0 -1
  387. package/dist/src/maintain/__tests__/repo-map.test.js.map +0 -1
  388. package/dist/src/maintain/__tests__/task-runner.test.js.map +0 -1
  389. package/dist/src/maintain/codebase-intel.js.map +0 -1
  390. package/dist/src/maintain/gh-create-pr.js.map +0 -1
  391. package/dist/src/maintain/index.js.map +0 -1
  392. package/dist/src/maintain/pr-builder.js.map +0 -1
  393. package/dist/src/maintain/repo-map.js.map +0 -1
  394. package/dist/src/maintain/task-runner.js.map +0 -1
  395. package/dist/src/maintain/types.js.map +0 -1
  396. package/dist/src/mcp/__tests__/auto-setup.test.js.map +0 -1
  397. package/dist/src/mcp/__tests__/cap-tool-result.test.js.map +0 -1
  398. package/dist/src/mcp/__tests__/ee-tools.test.js.map +0 -1
  399. package/dist/src/mcp/__tests__/forensics-tools.test.js.map +0 -1
  400. package/dist/src/mcp/__tests__/harness-driver-action-tools.spec.js.map +0 -1
  401. package/dist/src/mcp/__tests__/harness-driver-async-tools.spec.js.map +0 -1
  402. package/dist/src/mcp/__tests__/harness-driver-read-tools.spec.js.map +0 -1
  403. package/dist/src/mcp/__tests__/harness-driver-security.spec.js.map +0 -1
  404. package/dist/src/mcp/__tests__/harness-driver.spec.js.map +0 -1
  405. package/dist/src/mcp/__tests__/lazy-schema.spec.js.map +0 -1
  406. package/dist/src/mcp/__tests__/lsp-tools.test.js.map +0 -1
  407. package/dist/src/mcp/__tests__/mcp-keychain.test.js.map +0 -1
  408. package/dist/src/mcp/__tests__/research-onboarding.test.js.map +0 -1
  409. package/dist/src/mcp/__tests__/runtime-hydration.test.js.map +0 -1
  410. package/dist/src/mcp/__tests__/runtime-output-cap.test.js.map +0 -1
  411. package/dist/src/mcp/__tests__/runtime-sanitize.test.js.map +0 -1
  412. package/dist/src/mcp/__tests__/self-verify-jobs.test.js.map +0 -1
  413. package/dist/src/mcp/__tests__/smart-filter.test.js.map +0 -1
  414. package/dist/src/mcp/__tests__/tools-server.smoke.test.js.map +0 -1
  415. package/dist/src/mcp/auto-setup.js.map +0 -1
  416. package/dist/src/mcp/cap-tool-result.js.map +0 -1
  417. package/dist/src/mcp/catalog.js.map +0 -1
  418. package/dist/src/mcp/ee-tools.js.map +0 -1
  419. package/dist/src/mcp/forensics-tools.js.map +0 -1
  420. package/dist/src/mcp/lsp-tools.js.map +0 -1
  421. package/dist/src/mcp/mcp-keychain.js.map +0 -1
  422. package/dist/src/mcp/oauth-callback.js.map +0 -1
  423. package/dist/src/mcp/oauth-provider.js.map +0 -1
  424. package/dist/src/mcp/opentui-spawn.js.map +0 -1
  425. package/dist/src/mcp/parse-headers.js.map +0 -1
  426. package/dist/src/mcp/parse-headers.test.js.map +0 -1
  427. package/dist/src/mcp/research-onboarding.js.map +0 -1
  428. package/dist/src/mcp/runtime.js.map +0 -1
  429. package/dist/src/mcp/self-verify-jobs.js.map +0 -1
  430. package/dist/src/mcp/smart-filter.js.map +0 -1
  431. package/dist/src/mcp/smoke.test.js.map +0 -1
  432. package/dist/src/mcp/tools-server.js.map +0 -1
  433. package/dist/src/mcp/validate.js.map +0 -1
  434. package/dist/src/models/__tests__/registry.test.js.map +0 -1
  435. package/dist/src/models/catalog-client.js.map +0 -1
  436. package/dist/src/models/catalog-gemini.test.js.map +0 -1
  437. package/dist/src/models/catalog-url.test.js.map +0 -1
  438. package/dist/src/models/catalog-validation.test.js.map +0 -1
  439. package/dist/src/models/classify-tier.js.map +0 -1
  440. package/dist/src/models/index.js.map +0 -1
  441. package/dist/src/models/registry.js.map +0 -1
  442. package/dist/src/ops/__tests__/doctor-council-mcp.test.js.map +0 -1
  443. package/dist/src/ops/__tests__/doctor-ee-health.test.js.map +0 -1
  444. package/dist/src/ops/bug-report.js.map +0 -1
  445. package/dist/src/ops/bug-report.test.js.map +0 -1
  446. package/dist/src/ops/doctor.js.map +0 -1
  447. package/dist/src/ops/doctor.test.js.map +0 -1
  448. package/dist/src/orchestrator/__tests__/agent-base-url-switch.test.js.map +0 -1
  449. package/dist/src/orchestrator/__tests__/batch-turn-runner.test.js.map +0 -1
  450. package/dist/src/orchestrator/__tests__/council-manager.test.js.map +0 -1
  451. package/dist/src/orchestrator/__tests__/cross-turn-dedup.test.js.map +0 -1
  452. package/dist/src/orchestrator/__tests__/current-call-id.test.js.map +0 -1
  453. package/dist/src/orchestrator/__tests__/error-forensics.test.js.map +0 -1
  454. package/dist/src/orchestrator/__tests__/flow-resume.test.js.map +0 -1
  455. package/dist/src/orchestrator/__tests__/humanize-api-error.test.js.map +0 -1
  456. package/dist/src/orchestrator/__tests__/message-processor.test.js.map +0 -1
  457. package/dist/src/orchestrator/__tests__/message-write-ahead.test.js.map +0 -1
  458. package/dist/src/orchestrator/__tests__/read-path-budget.test.js.map +0 -1
  459. package/dist/src/orchestrator/__tests__/retry-classifier.test.js.map +0 -1
  460. package/dist/src/orchestrator/__tests__/retry-stream.test.js.map +0 -1
  461. package/dist/src/orchestrator/__tests__/route-feedback.test.js.map +0 -1
  462. package/dist/src/orchestrator/__tests__/stream-runner.test.js.map +0 -1
  463. package/dist/src/orchestrator/__tests__/sub-agent-model-tier.test.js.map +0 -1
  464. package/dist/src/orchestrator/__tests__/usage-events-shape.test.js.map +0 -1
  465. package/dist/src/orchestrator/__tests__/usage-normalizer-c1.test.js.map +0 -1
  466. package/dist/src/orchestrator/__tests__/usage-shape-threading.test.js.map +0 -1
  467. package/dist/src/orchestrator/__tests__/write-ahead.test.js.map +0 -1
  468. package/dist/src/orchestrator/abort.js.map +0 -1
  469. package/dist/src/orchestrator/abort.test.js.map +0 -1
  470. package/dist/src/orchestrator/agent-options.js.map +0 -1
  471. package/dist/src/orchestrator/agent.test.js.map +0 -1
  472. package/dist/src/orchestrator/batch-turn-runner.js.map +0 -1
  473. package/dist/src/orchestrator/batch-utils.js.map +0 -1
  474. package/dist/src/orchestrator/cleanup.test.js.map +0 -1
  475. package/dist/src/orchestrator/compaction.js.map +0 -1
  476. package/dist/src/orchestrator/compaction.test.js.map +0 -1
  477. package/dist/src/orchestrator/council-manager.js.map +0 -1
  478. package/dist/src/orchestrator/cross-turn-dedup.js.map +0 -1
  479. package/dist/src/orchestrator/delegations.js.map +0 -1
  480. package/dist/src/orchestrator/delegations.test.js.map +0 -1
  481. package/dist/src/orchestrator/error-utils.js.map +0 -1
  482. package/dist/src/orchestrator/flow-resume.js.map +0 -1
  483. package/dist/src/orchestrator/grounding-check.js.map +0 -1
  484. package/dist/src/orchestrator/grounding-check.test.js.map +0 -1
  485. package/dist/src/orchestrator/interrupted-turn.js.map +0 -1
  486. package/dist/src/orchestrator/interrupted-turn.test.js.map +0 -1
  487. package/dist/src/orchestrator/message-processor.js.map +0 -1
  488. package/dist/src/orchestrator/message-seq.js.map +0 -1
  489. package/dist/src/orchestrator/message-seq.test.js.map +0 -1
  490. package/dist/src/orchestrator/orchestrator.js.map +0 -1
  491. package/dist/src/orchestrator/pending-calls.js.map +0 -1
  492. package/dist/src/orchestrator/pending-calls.test.js.map +0 -1
  493. package/dist/src/orchestrator/prompts.js.map +0 -1
  494. package/dist/src/orchestrator/provider-options-shape.js.map +0 -1
  495. package/dist/src/orchestrator/provider-options-shape.spec.js.map +0 -1
  496. package/dist/src/orchestrator/read-path-budget.js.map +0 -1
  497. package/dist/src/orchestrator/reasoning.js.map +0 -1
  498. package/dist/src/orchestrator/reasoning.test.js.map +0 -1
  499. package/dist/src/orchestrator/repair-tool-call.js.map +0 -1
  500. package/dist/src/orchestrator/repetition-detector.js.map +0 -1
  501. package/dist/src/orchestrator/repetition-detector.test.js.map +0 -1
  502. package/dist/src/orchestrator/retry-classifier.js.map +0 -1
  503. package/dist/src/orchestrator/retry-stream.js.map +0 -1
  504. package/dist/src/orchestrator/sandbox.test.js.map +0 -1
  505. package/dist/src/orchestrator/scope-ceiling.js.map +0 -1
  506. package/dist/src/orchestrator/scope-ceiling.test.js.map +0 -1
  507. package/dist/src/orchestrator/scope-reminder.js.map +0 -1
  508. package/dist/src/orchestrator/scope-reminder.test.js.map +0 -1
  509. package/dist/src/orchestrator/stall-rescue.js.map +0 -1
  510. package/dist/src/orchestrator/stall-rescue.test.js.map +0 -1
  511. package/dist/src/orchestrator/stall-watchdog.js.map +0 -1
  512. package/dist/src/orchestrator/stall-watchdog.test.js.map +0 -1
  513. package/dist/src/orchestrator/stream-runner.js.map +0 -1
  514. package/dist/src/orchestrator/sub-agent-cap.js.map +0 -1
  515. package/dist/src/orchestrator/sub-agent-cap.test.js.map +0 -1
  516. package/dist/src/orchestrator/sub-agent-model-tier.js.map +0 -1
  517. package/dist/src/orchestrator/subagent-compactor.js.map +0 -1
  518. package/dist/src/orchestrator/subagent-compactor.spec.js.map +0 -1
  519. package/dist/src/orchestrator/text-tool-call-detector.js.map +0 -1
  520. package/dist/src/orchestrator/text-tool-call-detector.test.js.map +0 -1
  521. package/dist/src/orchestrator/token-counter.js.map +0 -1
  522. package/dist/src/orchestrator/token-counter.test.js.map +0 -1
  523. package/dist/src/orchestrator/tool-args-hash.js.map +0 -1
  524. package/dist/src/orchestrator/tool-args-hash.test.js.map +0 -1
  525. package/dist/src/orchestrator/tool-args-repair.js.map +0 -1
  526. package/dist/src/orchestrator/tool-args-repair.test.js.map +0 -1
  527. package/dist/src/orchestrator/tool-loop-cap.js.map +0 -1
  528. package/dist/src/orchestrator/tool-loop-cap.test.js.map +0 -1
  529. package/dist/src/orchestrator/tool-repetition-detector.js.map +0 -1
  530. package/dist/src/orchestrator/tool-repetition-detector.test.js.map +0 -1
  531. package/dist/src/orchestrator/tool-utils.js.map +0 -1
  532. package/dist/src/orchestrator/turn-runner-deps.js.map +0 -1
  533. package/dist/src/pil/__tests__/budget.test.js.map +0 -1
  534. package/dist/src/pil/__tests__/clarity-gate.test.js.map +0 -1
  535. package/dist/src/pil/__tests__/config.test.js.map +0 -1
  536. package/dist/src/pil/__tests__/discovery-cache.test.js.map +0 -1
  537. package/dist/src/pil/__tests__/discovery-types.test.js.map +0 -1
  538. package/dist/src/pil/__tests__/discovery.test.js.map +0 -1
  539. package/dist/src/pil/__tests__/dual-run.test.js.map +0 -1
  540. package/dist/src/pil/__tests__/layer1-intent-trace.test.js.map +0 -1
  541. package/dist/src/pil/__tests__/layer1-intent.test.js.map +0 -1
  542. package/dist/src/pil/__tests__/layer15-context-scan.test.js.map +0 -1
  543. package/dist/src/pil/__tests__/layer16-clarity.test.js.map +0 -1
  544. package/dist/src/pil/__tests__/layer17-feasibility.test.js.map +0 -1
  545. package/dist/src/pil/__tests__/layer18-acceptance.test.js.map +0 -1
  546. package/dist/src/pil/__tests__/layer2-personality.test.js.map +0 -1
  547. package/dist/src/pil/__tests__/layer3-ee-injection.test.js.map +0 -1
  548. package/dist/src/pil/__tests__/layer3-injected-chunk.test.js.map +0 -1
  549. package/dist/src/pil/__tests__/layer4-gsd.test.js.map +0 -1
  550. package/dist/src/pil/__tests__/layer5-context.test.js.map +0 -1
  551. package/dist/src/pil/__tests__/layer6-output.test.js.map +0 -1
  552. package/dist/src/pil/__tests__/llm-classify.test.js.map +0 -1
  553. package/dist/src/pil/__tests__/native-capabilities-workbook.test.js.map +0 -1
  554. package/dist/src/pil/__tests__/ollama-classify.test.js.map +0 -1
  555. package/dist/src/pil/__tests__/orchestrator-integration.test.js.map +0 -1
  556. package/dist/src/pil/__tests__/pipeline.test.js.map +0 -1
  557. package/dist/src/pil/__tests__/renderer-coverage.test.js.map +0 -1
  558. package/dist/src/pil/__tests__/response-tools.test.js.map +0 -1
  559. package/dist/src/pil/__tests__/schema.test.js.map +0 -1
  560. package/dist/src/pil/__tests__/scoreComplexity.test.js.map +0 -1
  561. package/dist/src/pil/__tests__/scoreSufficiency.test.js.map +0 -1
  562. package/dist/src/pil/__tests__/store.test.js.map +0 -1
  563. package/dist/src/pil/__tests__/task-tier-map.test.js.map +0 -1
  564. package/dist/src/pil/agent-operating-contract.js.map +0 -1
  565. package/dist/src/pil/agent-operating-contract.test.js.map +0 -1
  566. package/dist/src/pil/budget-log.js.map +0 -1
  567. package/dist/src/pil/budget.js.map +0 -1
  568. package/dist/src/pil/cheap-model-playbook.js.map +0 -1
  569. package/dist/src/pil/cheap-model-playbook.test.js.map +0 -1
  570. package/dist/src/pil/cheap-model-workbooks.js.map +0 -1
  571. package/dist/src/pil/cheap-model-workbooks.test.js.map +0 -1
  572. package/dist/src/pil/clarity-gate.js.map +0 -1
  573. package/dist/src/pil/config.js.map +0 -1
  574. package/dist/src/pil/discovery-cache.js.map +0 -1
  575. package/dist/src/pil/discovery-types.js.map +0 -1
  576. package/dist/src/pil/discovery.js.map +0 -1
  577. package/dist/src/pil/index.js.map +0 -1
  578. package/dist/src/pil/layer1-intent.js.map +0 -1
  579. package/dist/src/pil/layer1-intent.test.js.map +0 -1
  580. package/dist/src/pil/layer15-context-scan.js.map +0 -1
  581. package/dist/src/pil/layer16-clarity.js.map +0 -1
  582. package/dist/src/pil/layer16-clarity.test.js +0 -31
  583. package/dist/src/pil/layer16-clarity.test.js.map +0 -1
  584. package/dist/src/pil/layer17-feasibility.js.map +0 -1
  585. package/dist/src/pil/layer18-acceptance.js.map +0 -1
  586. package/dist/src/pil/layer1_5-complexity-size.js.map +0 -1
  587. package/dist/src/pil/layer1_5-complexity-size.test.js.map +0 -1
  588. package/dist/src/pil/layer2-personality.js.map +0 -1
  589. package/dist/src/pil/layer3-ee-injection.js.map +0 -1
  590. package/dist/src/pil/layer4-gsd.js.map +0 -1
  591. package/dist/src/pil/layer5-context.js.map +0 -1
  592. package/dist/src/pil/layer6-output.js.map +0 -1
  593. package/dist/src/pil/llm-classify.js.map +0 -1
  594. package/dist/src/pil/native-capabilities-workbook.js.map +0 -1
  595. package/dist/src/pil/ollama-classify.js.map +0 -1
  596. package/dist/src/pil/pipeline.js.map +0 -1
  597. package/dist/src/pil/response-tools.js.map +0 -1
  598. package/dist/src/pil/schema.js.map +0 -1
  599. package/dist/src/pil/session-state.js.map +0 -1
  600. package/dist/src/pil/session-state.test.js.map +0 -1
  601. package/dist/src/pil/store.js.map +0 -1
  602. package/dist/src/pil/task-tier-map.js.map +0 -1
  603. package/dist/src/pil/timeout.js.map +0 -1
  604. package/dist/src/pil/types.js.map +0 -1
  605. package/dist/src/product-loop/__tests__/artifact-io.test.js.map +0 -1
  606. package/dist/src/product-loop/__tests__/assumption-ledger.test.js.map +0 -1
  607. package/dist/src/product-loop/__tests__/backlog-builder.test.js.map +0 -1
  608. package/dist/src/product-loop/__tests__/backlog-store.test.js.map +0 -1
  609. package/dist/src/product-loop/__tests__/cb2-retry-bonus.test.js.map +0 -1
  610. package/dist/src/product-loop/__tests__/circuit-breakers-coverage.test.js.map +0 -1
  611. package/dist/src/product-loop/__tests__/circuit-breakers.test.js.map +0 -1
  612. package/dist/src/product-loop/__tests__/complexity-routing.spec.js.map +0 -1
  613. package/dist/src/product-loop/__tests__/context-policy.test.js.map +0 -1
  614. package/dist/src/product-loop/__tests__/cost-preview.test.js.map +0 -1
  615. package/dist/src/product-loop/__tests__/cost-scoper.test.js.map +0 -1
  616. package/dist/src/product-loop/__tests__/cross-run-memory.test.js.map +0 -1
  617. package/dist/src/product-loop/__tests__/design-output.spec.js.map +0 -1
  618. package/dist/src/product-loop/__tests__/discover.test.js.map +0 -1
  619. package/dist/src/product-loop/__tests__/discovery-context-format.test.js.map +0 -1
  620. package/dist/src/product-loop/__tests__/discovery-council-runner.test.js.map +0 -1
  621. package/dist/src/product-loop/__tests__/discovery-detection.test.js.map +0 -1
  622. package/dist/src/product-loop/__tests__/discovery-ecosystem.test.js.map +0 -1
  623. package/dist/src/product-loop/__tests__/discovery-integration.test.js.map +0 -1
  624. package/dist/src/product-loop/__tests__/discovery-interview.test.js.map +0 -1
  625. package/dist/src/product-loop/__tests__/discovery-migrations.test.js.map +0 -1
  626. package/dist/src/product-loop/__tests__/discovery-persistence.test.js.map +0 -1
  627. package/dist/src/product-loop/__tests__/discovery-prompt-parser.test.js.map +0 -1
  628. package/dist/src/product-loop/__tests__/discovery-prompt-specificity.test.js.map +0 -1
  629. package/dist/src/product-loop/__tests__/discovery-recommender-ecosystem.test.js.map +0 -1
  630. package/dist/src/product-loop/__tests__/discovery-recommender.test.js.map +0 -1
  631. package/dist/src/product-loop/__tests__/discovery-schema.test.js.map +0 -1
  632. package/dist/src/product-loop/__tests__/done-gate-coverage.test.js.map +0 -1
  633. package/dist/src/product-loop/__tests__/done-gate.test.js.map +0 -1
  634. package/dist/src/product-loop/__tests__/ee-extract-wiring.test.js.map +0 -1
  635. package/dist/src/product-loop/__tests__/extract-to-ee.test.js.map +0 -1
  636. package/dist/src/product-loop/__tests__/feedback-routing.test.js.map +0 -1
  637. package/dist/src/product-loop/__tests__/gather-selectable-alts.test.js.map +0 -1
  638. package/dist/src/product-loop/__tests__/hot-path.spec.js.map +0 -1
  639. package/dist/src/product-loop/__tests__/integration.test.js.map +0 -1
  640. package/dist/src/product-loop/__tests__/loop-driver-audit.test.js.map +0 -1
  641. package/dist/src/product-loop/__tests__/loop-driver.test.js.map +0 -1
  642. package/dist/src/product-loop/__tests__/maintenance-task-synthesis.test.js.map +0 -1
  643. package/dist/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.js.map +0 -1
  644. package/dist/src/product-loop/__tests__/phase-a2-backlog-build.test.js.map +0 -1
  645. package/dist/src/product-loop/__tests__/phase-budget.test.js.map +0 -1
  646. package/dist/src/product-loop/__tests__/phase-orchestrator-integration.test.js.map +0 -1
  647. package/dist/src/product-loop/__tests__/phase-plan.test.js.map +0 -1
  648. package/dist/src/product-loop/__tests__/phase-rituals.test.js.map +0 -1
  649. package/dist/src/product-loop/__tests__/phase-runner.test.js.map +0 -1
  650. package/dist/src/product-loop/__tests__/phase-tracker-bridge.test.js.map +0 -1
  651. package/dist/src/product-loop/__tests__/pick-backend-stack.test.js.map +0 -1
  652. package/dist/src/product-loop/__tests__/product-identity.test.js.map +0 -1
  653. package/dist/src/product-loop/__tests__/progress-snapshot.test.js.map +0 -1
  654. package/dist/src/product-loop/__tests__/reality-anchor.test.js.map +0 -1
  655. package/dist/src/product-loop/__tests__/repo-audit.test.js.map +0 -1
  656. package/dist/src/product-loop/__tests__/repo-brief.test.js.map +0 -1
  657. package/dist/src/product-loop/__tests__/role-memory.test.js.map +0 -1
  658. package/dist/src/product-loop/__tests__/role-registry.test.js.map +0 -1
  659. package/dist/src/product-loop/__tests__/role-routing-ee.test.js.map +0 -1
  660. package/dist/src/product-loop/__tests__/route-decision-emit.test.js.map +0 -1
  661. package/dist/src/product-loop/__tests__/seed-questions.test.js.map +0 -1
  662. package/dist/src/product-loop/__tests__/ship-polish.test.js.map +0 -1
  663. package/dist/src/product-loop/__tests__/sprint-planner.test.js.map +0 -1
  664. package/dist/src/product-loop/__tests__/sprint-runner-backlog.test.js.map +0 -1
  665. package/dist/src/product-loop/__tests__/sprint-runner-emit.test.js.map +0 -1
  666. package/dist/src/product-loop/__tests__/sprint-runner-phase-chunks.test.js.map +0 -1
  667. package/dist/src/product-loop/__tests__/sprint-runner.test.js.map +0 -1
  668. package/dist/src/product-loop/__tests__/sprint-self-verify.test.js.map +0 -1
  669. package/dist/src/product-loop/__tests__/sprint-store.test.js.map +0 -1
  670. package/dist/src/product-loop/__tests__/stakeholder-acl.test.js.map +0 -1
  671. package/dist/src/product-loop/__tests__/state-md-ee-injections.test.js.map +0 -1
  672. package/dist/src/product-loop/__tests__/sufficiency-routing.spec.js.map +0 -1
  673. package/dist/src/product-loop/__tests__/typed-artifacts.test.js.map +0 -1
  674. package/dist/src/product-loop/__tests__/types.test.js.map +0 -1
  675. package/dist/src/product-loop/__tests__/verify-failure-threshold.test.js.map +0 -1
  676. package/dist/src/product-loop/__tests__/verify-failure-tracking.test.js.map +0 -1
  677. package/dist/src/product-loop/__tests__/verify-result.test.js.map +0 -1
  678. package/dist/src/product-loop/artifact-io.js.map +0 -1
  679. package/dist/src/product-loop/assumption-ledger.js.map +0 -1
  680. package/dist/src/product-loop/backlog-builder.js.map +0 -1
  681. package/dist/src/product-loop/backlog-store.js.map +0 -1
  682. package/dist/src/product-loop/circuit-breakers.js.map +0 -1
  683. package/dist/src/product-loop/context-policy.js.map +0 -1
  684. package/dist/src/product-loop/cost-preview.js.map +0 -1
  685. package/dist/src/product-loop/cost-scoper.js.map +0 -1
  686. package/dist/src/product-loop/cross-run-memory.js.map +0 -1
  687. package/dist/src/product-loop/design-output.js.map +0 -1
  688. package/dist/src/product-loop/discover.js.map +0 -1
  689. package/dist/src/product-loop/discovery-context-format.js.map +0 -1
  690. package/dist/src/product-loop/discovery-council-runner.js.map +0 -1
  691. package/dist/src/product-loop/discovery-detection.js.map +0 -1
  692. package/dist/src/product-loop/discovery-ecosystem.js.map +0 -1
  693. package/dist/src/product-loop/discovery-interview.js.map +0 -1
  694. package/dist/src/product-loop/discovery-migrations.js.map +0 -1
  695. package/dist/src/product-loop/discovery-persistence.js.map +0 -1
  696. package/dist/src/product-loop/discovery-prompt-parser.js.map +0 -1
  697. package/dist/src/product-loop/discovery-recommender.js.map +0 -1
  698. package/dist/src/product-loop/discovery-schema.js.map +0 -1
  699. package/dist/src/product-loop/done-gate.js.map +0 -1
  700. package/dist/src/product-loop/feedback-routing.js.map +0 -1
  701. package/dist/src/product-loop/gather.js.map +0 -1
  702. package/dist/src/product-loop/index.js.map +0 -1
  703. package/dist/src/product-loop/loop-driver.js.map +0 -1
  704. package/dist/src/product-loop/phase-budget.js.map +0 -1
  705. package/dist/src/product-loop/phase-plan.js.map +0 -1
  706. package/dist/src/product-loop/phase-rituals.js.map +0 -1
  707. package/dist/src/product-loop/phase-runner.js.map +0 -1
  708. package/dist/src/product-loop/phase-tracker-bridge.js.map +0 -1
  709. package/dist/src/product-loop/product-identity.js.map +0 -1
  710. package/dist/src/product-loop/progress-snapshot.js.map +0 -1
  711. package/dist/src/product-loop/reality-anchor.js.map +0 -1
  712. package/dist/src/product-loop/repo-audit.js.map +0 -1
  713. package/dist/src/product-loop/repo-brief.js.map +0 -1
  714. package/dist/src/product-loop/role-memory.js.map +0 -1
  715. package/dist/src/product-loop/role-registry.js.map +0 -1
  716. package/dist/src/product-loop/seed-questions.js.map +0 -1
  717. package/dist/src/product-loop/ship-polish.js.map +0 -1
  718. package/dist/src/product-loop/sprint-planner.js.map +0 -1
  719. package/dist/src/product-loop/sprint-runner.js.map +0 -1
  720. package/dist/src/product-loop/sprint-self-verify.js.map +0 -1
  721. package/dist/src/product-loop/sprint-store.js.map +0 -1
  722. package/dist/src/product-loop/stakeholder-acl.js.map +0 -1
  723. package/dist/src/product-loop/typed-artifacts.js.map +0 -1
  724. package/dist/src/product-loop/types.js.map +0 -1
  725. package/dist/src/product-loop/verify-failure-tracking.js.map +0 -1
  726. package/dist/src/product-loop/verify-result.js.map +0 -1
  727. package/dist/src/providers/__test-utils__/load-fixture.js.map +0 -1
  728. package/dist/src/providers/__tests__/adapter-oauth-wiring.test.js.map +0 -1
  729. package/dist/src/providers/__tests__/capabilities-cosmetic.test.js.map +0 -1
  730. package/dist/src/providers/__tests__/capabilities-flags.test.js.map +0 -1
  731. package/dist/src/providers/__tests__/capabilities-provider-options.test.js.map +0 -1
  732. package/dist/src/providers/__tests__/capabilities-sanitize.test.js.map +0 -1
  733. package/dist/src/providers/__tests__/capabilities.test.js.map +0 -1
  734. package/dist/src/providers/__tests__/provider-coverage.test.js.map +0 -1
  735. package/dist/src/providers/__tests__/reasoning-roundtrip.test.js.map +0 -1
  736. package/dist/src/providers/__tests__/runtime-integration.test.js.map +0 -1
  737. package/dist/src/providers/__tests__/runtime.test.js.map +0 -1
  738. package/dist/src/providers/__tests__/siliconflow-sse-repair.test.js.map +0 -1
  739. package/dist/src/providers/__tests__/strategies-registry.test.js.map +0 -1
  740. package/dist/src/providers/__tests__/strategies-resolve.test.js.map +0 -1
  741. package/dist/src/providers/__tests__/wire-debug.test.js.map +0 -1
  742. package/dist/src/providers/adapter.js.map +0 -1
  743. package/dist/src/providers/adapter.test.js.map +0 -1
  744. package/dist/src/providers/anthropic.js.map +0 -1
  745. package/dist/src/providers/auth/__tests__/browser-flow.test.js.map +0 -1
  746. package/dist/src/providers/auth/__tests__/device-flow.test.js.map +0 -1
  747. package/dist/src/providers/auth/__tests__/gemini-oauth.test.js.map +0 -1
  748. package/dist/src/providers/auth/__tests__/grok-oauth.test.js.map +0 -1
  749. package/dist/src/providers/auth/__tests__/openai-oauth.test.js.map +0 -1
  750. package/dist/src/providers/auth/__tests__/token-store.test.js.map +0 -1
  751. package/dist/src/providers/auth/browser-flow.js.map +0 -1
  752. package/dist/src/providers/auth/device-flow.js.map +0 -1
  753. package/dist/src/providers/auth/gemini-oauth.js.map +0 -1
  754. package/dist/src/providers/auth/grok-oauth.js.map +0 -1
  755. package/dist/src/providers/auth/openai-oauth.js.map +0 -1
  756. package/dist/src/providers/auth/registry.js.map +0 -1
  757. package/dist/src/providers/auth/token-store.js.map +0 -1
  758. package/dist/src/providers/auth/types.js.map +0 -1
  759. package/dist/src/providers/capabilities.js.map +0 -1
  760. package/dist/src/providers/endpoints.js.map +0 -1
  761. package/dist/src/providers/errors.js.map +0 -1
  762. package/dist/src/providers/errors.test.js.map +0 -1
  763. package/dist/src/providers/gemini.js.map +0 -1
  764. package/dist/src/providers/gemini.test.js.map +0 -1
  765. package/dist/src/providers/index.js.map +0 -1
  766. package/dist/src/providers/keychain.js.map +0 -1
  767. package/dist/src/providers/keychain.test.js.map +0 -1
  768. package/dist/src/providers/mcp-vision-bridge.js.map +0 -1
  769. package/dist/src/providers/mcp-vision-bridge.test.js.map +0 -1
  770. package/dist/src/providers/ollama.js.map +0 -1
  771. package/dist/src/providers/ollama.test.js.map +0 -1
  772. package/dist/src/providers/openai-compatible.js.map +0 -1
  773. package/dist/src/providers/openai-compatible.test.js.map +0 -1
  774. package/dist/src/providers/openai.js.map +0 -1
  775. package/dist/src/providers/openai.test.js.map +0 -1
  776. package/dist/src/providers/patch-zod-schema.js.map +0 -1
  777. package/dist/src/providers/pricing.js.map +0 -1
  778. package/dist/src/providers/pricing.test.js.map +0 -1
  779. package/dist/src/providers/prompt-cache-key.spec.js.map +0 -1
  780. package/dist/src/providers/runtime-mock.spec.js.map +0 -1
  781. package/dist/src/providers/runtime.js.map +0 -1
  782. package/dist/src/providers/siliconflow-sse-repair.js.map +0 -1
  783. package/dist/src/providers/strategies/anthropic.strategy.js.map +0 -1
  784. package/dist/src/providers/strategies/base.strategy.js.map +0 -1
  785. package/dist/src/providers/strategies/deepseek.strategy.js.map +0 -1
  786. package/dist/src/providers/strategies/google.strategy.js.map +0 -1
  787. package/dist/src/providers/strategies/ollama.strategy.js.map +0 -1
  788. package/dist/src/providers/strategies/openai.strategy.js.map +0 -1
  789. package/dist/src/providers/strategies/registry.js.map +0 -1
  790. package/dist/src/providers/strategies/siliconflow.strategy.js.map +0 -1
  791. package/dist/src/providers/strategies/xai.strategy.js.map +0 -1
  792. package/dist/src/providers/stream-loop.js.map +0 -1
  793. package/dist/src/providers/types.js.map +0 -1
  794. package/dist/src/providers/vision-proxy.js.map +0 -1
  795. package/dist/src/providers/vision-proxy.test.js.map +0 -1
  796. package/dist/src/providers/wire-debug.js.map +0 -1
  797. package/dist/src/reporter/__tests__/acl-check.test.js.map +0 -1
  798. package/dist/src/reporter/__tests__/auto-fire.test.js.map +0 -1
  799. package/dist/src/reporter/__tests__/budget.test.js.map +0 -1
  800. package/dist/src/reporter/__tests__/handlers.test.js.map +0 -1
  801. package/dist/src/reporter/__tests__/query-router.test.js.map +0 -1
  802. package/dist/src/reporter/acl-check.js.map +0 -1
  803. package/dist/src/reporter/auto-fire.js.map +0 -1
  804. package/dist/src/reporter/budget.js.map +0 -1
  805. package/dist/src/reporter/handlers.js.map +0 -1
  806. package/dist/src/reporter/index.js.map +0 -1
  807. package/dist/src/reporter/query-router.js.map +0 -1
  808. package/dist/src/router/__tests__/step-router.test.js.map +0 -1
  809. package/dist/src/router/classifier/grammars.js.map +0 -1
  810. package/dist/src/router/classifier/index.js.map +0 -1
  811. package/dist/src/router/classifier/index.test.js.map +0 -1
  812. package/dist/src/router/classifier/regex.js.map +0 -1
  813. package/dist/src/router/classifier/regex.test.js.map +0 -1
  814. package/dist/src/router/classifier/tree-sitter.js.map +0 -1
  815. package/dist/src/router/classifier/tree-sitter.test.js.map +0 -1
  816. package/dist/src/router/cold.js.map +0 -1
  817. package/dist/src/router/cold.test.js.map +0 -1
  818. package/dist/src/router/decide.js.map +0 -1
  819. package/dist/src/router/decide.test.js.map +0 -1
  820. package/dist/src/router/health.js.map +0 -1
  821. package/dist/src/router/health.test.js.map +0 -1
  822. package/dist/src/router/provider-sentinel.js.map +0 -1
  823. package/dist/src/router/provider-sentinel.test.js.map +0 -1
  824. package/dist/src/router/role-override.test.js.map +0 -1
  825. package/dist/src/router/step-router.js.map +0 -1
  826. package/dist/src/router/store.js.map +0 -1
  827. package/dist/src/router/types.js.map +0 -1
  828. package/dist/src/router/warm.js.map +0 -1
  829. package/dist/src/router/warm.test.js.map +0 -1
  830. package/dist/src/scaffold/__tests__/continuation-prompt.test.js.map +0 -1
  831. package/dist/src/scaffold/__tests__/continue-as-council.spec.js.map +0 -1
  832. package/dist/src/scaffold/__tests__/dotnet-assembly-name.test.js.map +0 -1
  833. package/dist/src/scaffold/__tests__/fe-scaffold-contents.test.js.map +0 -1
  834. package/dist/src/scaffold/__tests__/init-new.smoke.spec.js.map +0 -1
  835. package/dist/src/scaffold/__tests__/init-new.spec.js.map +0 -1
  836. package/dist/src/scaffold/__tests__/install-bb-templates.spec.js.map +0 -1
  837. package/dist/src/scaffold/__tests__/point-to-existing.spec.js.map +0 -1
  838. package/dist/src/scaffold/bb-ecosystem-apply.js.map +0 -1
  839. package/dist/src/scaffold/bb-quality-gate.js.map +0 -1
  840. package/dist/src/scaffold/continuation-prompt.js.map +0 -1
  841. package/dist/src/scaffold/continue-as-council.js.map +0 -1
  842. package/dist/src/scaffold/init-new.js.map +0 -1
  843. package/dist/src/scaffold/point-to-existing.js.map +0 -1
  844. package/dist/src/scaffold/resume-from-gate-failures.js.map +0 -1
  845. package/dist/src/self-qa/__tests__/agentic-context.test.js.map +0 -1
  846. package/dist/src/self-qa/__tests__/agentic-loop.test.js.map +0 -1
  847. package/dist/src/self-qa/__tests__/delta-encoder.test.js.map +0 -1
  848. package/dist/src/self-qa/__tests__/judge.test.js.map +0 -1
  849. package/dist/src/self-qa/__tests__/scenario-planner.test.js.map +0 -1
  850. package/dist/src/self-qa/__tests__/spec-emitter.test.js.map +0 -1
  851. package/dist/src/self-qa/agentic-context.js.map +0 -1
  852. package/dist/src/self-qa/agentic-loop.js.map +0 -1
  853. package/dist/src/self-qa/delta-encoder.js.map +0 -1
  854. package/dist/src/self-qa/index.js.map +0 -1
  855. package/dist/src/self-qa/judge.js.map +0 -1
  856. package/dist/src/self-qa/orchestrator.js.map +0 -1
  857. package/dist/src/self-qa/scenario-planner.js.map +0 -1
  858. package/dist/src/self-qa/spec-emitter.js.map +0 -1
  859. package/dist/src/self-qa/types.js.map +0 -1
  860. package/dist/src/storage/__tests__/migrations.test.js.map +0 -1
  861. package/dist/src/storage/__tests__/sweep-stale-pending.test.js.map +0 -1
  862. package/dist/src/storage/__tests__/ui-interaction-log.test.js.map +0 -1
  863. package/dist/src/storage/atomic-io.js.map +0 -1
  864. package/dist/src/storage/atomic-io.test.js.map +0 -1
  865. package/dist/src/storage/config.js.map +0 -1
  866. package/dist/src/storage/config.test.js.map +0 -1
  867. package/dist/src/storage/db.js.map +0 -1
  868. package/dist/src/storage/index.js.map +0 -1
  869. package/dist/src/storage/interaction-log.js.map +0 -1
  870. package/dist/src/storage/migrations.js.map +0 -1
  871. package/dist/src/storage/session-dir.js.map +0 -1
  872. package/dist/src/storage/sessions.js.map +0 -1
  873. package/dist/src/storage/tool-results.js.map +0 -1
  874. package/dist/src/storage/transcript-response-entry.test.js.map +0 -1
  875. package/dist/src/storage/transcript-view.js.map +0 -1
  876. package/dist/src/storage/transcript.js.map +0 -1
  877. package/dist/src/storage/transcript.test.js.map +0 -1
  878. package/dist/src/storage/ui-interaction-log.js.map +0 -1
  879. package/dist/src/storage/usage-cap.js.map +0 -1
  880. package/dist/src/storage/usage-cap.test.js.map +0 -1
  881. package/dist/src/storage/usage.js.map +0 -1
  882. package/dist/src/storage/workspaces.js.map +0 -1
  883. package/dist/src/tools/__tests__/vision-gate.test.js.map +0 -1
  884. package/dist/src/tools/bash-output-cache.js.map +0 -1
  885. package/dist/src/tools/bash-output-cache.test.js.map +0 -1
  886. package/dist/src/tools/bash-output-integration.test.js.map +0 -1
  887. package/dist/src/tools/bash.js.map +0 -1
  888. package/dist/src/tools/bash.test.js.map +0 -1
  889. package/dist/src/tools/computer.js.map +0 -1
  890. package/dist/src/tools/computer.test.js.map +0 -1
  891. package/dist/src/tools/file-tracker.js.map +0 -1
  892. package/dist/src/tools/file-tracker.test.js.map +0 -1
  893. package/dist/src/tools/file.js.map +0 -1
  894. package/dist/src/tools/file.test.js.map +0 -1
  895. package/dist/src/tools/grep.js.map +0 -1
  896. package/dist/src/tools/registry-bash-empty-command.test.js.map +0 -1
  897. package/dist/src/tools/registry-bash-footer.test.js.map +0 -1
  898. package/dist/src/tools/registry-ee-query.test.js.map +0 -1
  899. package/dist/src/tools/registry-session-repeat.test.js.map +0 -1
  900. package/dist/src/tools/registry.js.map +0 -1
  901. package/dist/src/tools/registry.test.js.map +0 -1
  902. package/dist/src/tools/schedule.js.map +0 -1
  903. package/dist/src/tools/schedule.test.js.map +0 -1
  904. package/dist/src/tools/todo-write-snapshot.js.map +0 -1
  905. package/dist/src/tools/todo-write-snapshot.test.js.map +0 -1
  906. package/dist/src/tools/vision-gate.js.map +0 -1
  907. package/dist/src/types/index.js.map +0 -1
  908. package/dist/src/ui/__tests__/picker-providers.test.js.map +0 -1
  909. package/dist/src/ui/agents-modal.js.map +0 -1
  910. package/dist/src/ui/app.js.map +0 -1
  911. package/dist/src/ui/cards/__tests__/product-status-card.test.js.map +0 -1
  912. package/dist/src/ui/cards/product-status-card.js.map +0 -1
  913. package/dist/src/ui/components/SuggestionOverlay.js.map +0 -1
  914. package/dist/src/ui/components/Toast.js.map +0 -1
  915. package/dist/src/ui/components/__tests__/council-leader-bubble.test.js.map +0 -1
  916. package/dist/src/ui/components/__tests__/council-message-bubble.test.js.map +0 -1
  917. package/dist/src/ui/components/__tests__/council-phase-timeline.test.js.map +0 -1
  918. package/dist/src/ui/components/__tests__/council-placeholder-bubble.test.js.map +0 -1
  919. package/dist/src/ui/components/__tests__/council-question-card.test.js.map +0 -1
  920. package/dist/src/ui/components/__tests__/council-synthesis-banner.test.js.map +0 -1
  921. package/dist/src/ui/components/__tests__/task-list-panel.test.js.map +0 -1
  922. package/dist/src/ui/components/__tests__/use-pair-quote-buffer.test.js.map +0 -1
  923. package/dist/src/ui/components/btw-overlay.js.map +0 -1
  924. package/dist/src/ui/components/bubble-layout.js.map +0 -1
  925. package/dist/src/ui/components/code-block-truncate.js.map +0 -1
  926. package/dist/src/ui/components/copy-flash-banner.js.map +0 -1
  927. package/dist/src/ui/components/council-info-card.js.map +0 -1
  928. package/dist/src/ui/components/council-leader-bubble.js.map +0 -1
  929. package/dist/src/ui/components/council-message-bubble.js.map +0 -1
  930. package/dist/src/ui/components/council-phase-timeline.js.map +0 -1
  931. package/dist/src/ui/components/council-placeholder-bubble.js.map +0 -1
  932. package/dist/src/ui/components/council-question-card.js.map +0 -1
  933. package/dist/src/ui/components/council-status-list.js.map +0 -1
  934. package/dist/src/ui/components/council-synthesis-banner.js.map +0 -1
  935. package/dist/src/ui/components/diff-view.js.map +0 -1
  936. package/dist/src/ui/components/halt-recovery-card.js.map +0 -1
  937. package/dist/src/ui/components/hero-logo.js.map +0 -1
  938. package/dist/src/ui/components/init-new-form-card.js.map +0 -1
  939. package/dist/src/ui/components/lsp-views.js.map +0 -1
  940. package/dist/src/ui/components/media-views.js.map +0 -1
  941. package/dist/src/ui/components/message-view.js.map +0 -1
  942. package/dist/src/ui/components/point-to-existing-form-card.js.map +0 -1
  943. package/dist/src/ui/components/prompt-box.js.map +0 -1
  944. package/dist/src/ui/components/role-palette.js.map +0 -1
  945. package/dist/src/ui/components/session-header.js.map +0 -1
  946. package/dist/src/ui/components/slash-inline-menu.js.map +0 -1
  947. package/dist/src/ui/components/structured-response-view.js.map +0 -1
  948. package/dist/src/ui/components/task-list-panel.js.map +0 -1
  949. package/dist/src/ui/components/tool-group.js.map +0 -1
  950. package/dist/src/ui/components/tool-result-views.js.map +0 -1
  951. package/dist/src/ui/components/use-pair-quote-buffer.js.map +0 -1
  952. package/dist/src/ui/constants.js.map +0 -1
  953. package/dist/src/ui/hooks/use-agent-editor.js.map +0 -1
  954. package/dist/src/ui/hooks/use-mcp-editor.js.map +0 -1
  955. package/dist/src/ui/hooks/use-model-picker.js.map +0 -1
  956. package/dist/src/ui/hooks/useTypeahead.js.map +0 -1
  957. package/dist/src/ui/markdown.js.map +0 -1
  958. package/dist/src/ui/mcp-modal-types.js.map +0 -1
  959. package/dist/src/ui/mcp-modal.js.map +0 -1
  960. package/dist/src/ui/modals/api-key-modal.js.map +0 -1
  961. package/dist/src/ui/modals/connect-modal.js.map +0 -1
  962. package/dist/src/ui/modals/model-picker-modal.js.map +0 -1
  963. package/dist/src/ui/modals/sandbox-picker-modal.js.map +0 -1
  964. package/dist/src/ui/modals/update-modal.js.map +0 -1
  965. package/dist/src/ui/modals/wallet-picker-modal.js.map +0 -1
  966. package/dist/src/ui/picker-providers.js.map +0 -1
  967. package/dist/src/ui/plan.js.map +0 -1
  968. package/dist/src/ui/schedule-modal.js.map +0 -1
  969. package/dist/src/ui/slash/__tests__/clear.test.js.map +0 -1
  970. package/dist/src/ui/slash/__tests__/compact.test.js.map +0 -1
  971. package/dist/src/ui/slash/__tests__/cost.test.js.map +0 -1
  972. package/dist/src/ui/slash/__tests__/discuss.test.js.map +0 -1
  973. package/dist/src/ui/slash/__tests__/execute.test.js.map +0 -1
  974. package/dist/src/ui/slash/__tests__/expand.test.js.map +0 -1
  975. package/dist/src/ui/slash/__tests__/ideal.test.js.map +0 -1
  976. package/dist/src/ui/slash/__tests__/menu-parity.test.js.map +0 -1
  977. package/dist/src/ui/slash/__tests__/optimize.test.js.map +0 -1
  978. package/dist/src/ui/slash/__tests__/pin.test.js.map +0 -1
  979. package/dist/src/ui/slash/__tests__/plan.test.js.map +0 -1
  980. package/dist/src/ui/slash/__tests__/status-render.test.js.map +0 -1
  981. package/dist/src/ui/slash/clear.js.map +0 -1
  982. package/dist/src/ui/slash/compact.js.map +0 -1
  983. package/dist/src/ui/slash/cost.js.map +0 -1
  984. package/dist/src/ui/slash/council-inspect.js.map +0 -1
  985. package/dist/src/ui/slash/council.js.map +0 -1
  986. package/dist/src/ui/slash/debug.js.map +0 -1
  987. package/dist/src/ui/slash/discuss.js.map +0 -1
  988. package/dist/src/ui/slash/ee.js.map +0 -1
  989. package/dist/src/ui/slash/execute.js.map +0 -1
  990. package/dist/src/ui/slash/expand.js.map +0 -1
  991. package/dist/src/ui/slash/export.js.map +0 -1
  992. package/dist/src/ui/slash/ideal.js.map +0 -1
  993. package/dist/src/ui/slash/menu-items.js.map +0 -1
  994. package/dist/src/ui/slash/optimize.js.map +0 -1
  995. package/dist/src/ui/slash/pin.js.map +0 -1
  996. package/dist/src/ui/slash/plan.js.map +0 -1
  997. package/dist/src/ui/slash/registry.js.map +0 -1
  998. package/dist/src/ui/slash/route.js.map +0 -1
  999. package/dist/src/ui/slash/route.test.js.map +0 -1
  1000. package/dist/src/ui/slash/status.js.map +0 -1
  1001. package/dist/src/ui/state/active-run.js.map +0 -1
  1002. package/dist/src/ui/status-bar/index.js.map +0 -1
  1003. package/dist/src/ui/status-bar/index.test.js.map +0 -1
  1004. package/dist/src/ui/status-bar/store.js.map +0 -1
  1005. package/dist/src/ui/status-bar/store.test.js.map +0 -1
  1006. package/dist/src/ui/status-bar/tier-badge.js.map +0 -1
  1007. package/dist/src/ui/status-bar/tier-badge.test.js.map +0 -1
  1008. package/dist/src/ui/status-bar/usd-meter.js.map +0 -1
  1009. package/dist/src/ui/status-bar/usd-meter.test.js.map +0 -1
  1010. package/dist/src/ui/syntax-highlight.js.map +0 -1
  1011. package/dist/src/ui/terminal-selection-text.js.map +0 -1
  1012. package/dist/src/ui/theme.js.map +0 -1
  1013. package/dist/src/ui/types.js.map +0 -1
  1014. package/dist/src/ui/utils/__tests__/format.test.js.map +0 -1
  1015. package/dist/src/ui/utils/__tests__/tools.test.js.map +0 -1
  1016. package/dist/src/ui/utils/color.js.map +0 -1
  1017. package/dist/src/ui/utils/format.js.map +0 -1
  1018. package/dist/src/ui/utils/modal.js.map +0 -1
  1019. package/dist/src/ui/utils/text.js.map +0 -1
  1020. package/dist/src/ui/utils/tools.js.map +0 -1
  1021. package/dist/src/usage/__tests__/product-ledger.test.js.map +0 -1
  1022. package/dist/src/usage/cost-log.js.map +0 -1
  1023. package/dist/src/usage/decision-log.js.map +0 -1
  1024. package/dist/src/usage/downgrade.js.map +0 -1
  1025. package/dist/src/usage/downgrade.test.js.map +0 -1
  1026. package/dist/src/usage/estimator.js.map +0 -1
  1027. package/dist/src/usage/estimator.test.js.map +0 -1
  1028. package/dist/src/usage/ledger.js.map +0 -1
  1029. package/dist/src/usage/ledger.test.js.map +0 -1
  1030. package/dist/src/usage/midstream.js.map +0 -1
  1031. package/dist/src/usage/midstream.test.js.map +0 -1
  1032. package/dist/src/usage/product-ledger.js.map +0 -1
  1033. package/dist/src/usage/thresholds.js.map +0 -1
  1034. package/dist/src/usage/thresholds.test.js.map +0 -1
  1035. package/dist/src/usage/types.js.map +0 -1
  1036. package/dist/src/utils/__tests__/auto-council-settings.test.js.map +0 -1
  1037. package/dist/src/utils/__tests__/ee-logger.test.js.map +0 -1
  1038. package/dist/src/utils/__tests__/file-lock.test.js.map +0 -1
  1039. package/dist/src/utils/__tests__/llm-deadline.test.js.map +0 -1
  1040. package/dist/src/utils/__tests__/rate-limit.test.js.map +0 -1
  1041. package/dist/src/utils/__tests__/settings-disabled-models.test.js.map +0 -1
  1042. package/dist/src/utils/__tests__/settings-web-research.test.js.map +0 -1
  1043. package/dist/src/utils/__tests__/slugify.test.js.map +0 -1
  1044. package/dist/src/utils/__tests__/visible-retry.test.js.map +0 -1
  1045. package/dist/src/utils/at-mentions.js.map +0 -1
  1046. package/dist/src/utils/clipboard-image.js.map +0 -1
  1047. package/dist/src/utils/ee-logger.js.map +0 -1
  1048. package/dist/src/utils/file-index.js.map +0 -1
  1049. package/dist/src/utils/file-lock.js.map +0 -1
  1050. package/dist/src/utils/git-root.js.map +0 -1
  1051. package/dist/src/utils/host-clipboard.js.map +0 -1
  1052. package/dist/src/utils/install-manager.js.map +0 -1
  1053. package/dist/src/utils/install-manager.test.js.map +0 -1
  1054. package/dist/src/utils/instructions.js.map +0 -1
  1055. package/dist/src/utils/instructions.test.js.map +0 -1
  1056. package/dist/src/utils/llm-deadline.js.map +0 -1
  1057. package/dist/src/utils/permission-mode.js.map +0 -1
  1058. package/dist/src/utils/permission-mode.test.js.map +0 -1
  1059. package/dist/src/utils/rate-limit.js.map +0 -1
  1060. package/dist/src/utils/redactor.js.map +0 -1
  1061. package/dist/src/utils/redactor.test.js.map +0 -1
  1062. package/dist/src/utils/settings.js.map +0 -1
  1063. package/dist/src/utils/settings.test.js.map +0 -1
  1064. package/dist/src/utils/shell.js.map +0 -1
  1065. package/dist/src/utils/shell.test.js.map +0 -1
  1066. package/dist/src/utils/side-question.js.map +0 -1
  1067. package/dist/src/utils/skills.js.map +0 -1
  1068. package/dist/src/utils/skills.test.js.map +0 -1
  1069. package/dist/src/utils/slugify.js.map +0 -1
  1070. package/dist/src/utils/subagent-display.js.map +0 -1
  1071. package/dist/src/utils/subagent-display.test.js.map +0 -1
  1072. package/dist/src/utils/subagents-settings.test.js.map +0 -1
  1073. package/dist/src/utils/telegram-audio-settings.test.js.map +0 -1
  1074. package/dist/src/utils/update-checker.js.map +0 -1
  1075. package/dist/src/utils/update-checker.test.js.map +0 -1
  1076. package/dist/src/utils/visible-retry.js.map +0 -1
  1077. package/dist/src/verify/__tests__/coverage-parsers.test.js.map +0 -1
  1078. package/dist/src/verify/__tests__/dotnet-recipe.test.js.map +0 -1
  1079. package/dist/src/verify/checkpoint.js.map +0 -1
  1080. package/dist/src/verify/checkpoint.test.js.map +0 -1
  1081. package/dist/src/verify/coverage-parsers.js.map +0 -1
  1082. package/dist/src/verify/entrypoint.js.map +0 -1
  1083. package/dist/src/verify/entrypoint.test.js.map +0 -1
  1084. package/dist/src/verify/environment.js.map +0 -1
  1085. package/dist/src/verify/environment.test.js.map +0 -1
  1086. package/dist/src/verify/evidence.js.map +0 -1
  1087. package/dist/src/verify/orchestrator.js.map +0 -1
  1088. package/dist/src/verify/orchestrator.test.js.map +0 -1
  1089. package/dist/src/verify/recipes.js.map +0 -1
  1090. package/dist/src/verify/retry.js.map +0 -1
  1091. package/dist/src/verify/runtime-prep.test.js.map +0 -1
  1092. package/src/__test-helpers__/catalog-fixtures.ts +0 -57
  1093. package/src/__test-stubs__/ee-server.ts +0 -173
  1094. package/src/__test-stubs__/vitest-setup.ts +0 -36
  1095. package/src/__tests__/council/bubble-layout.test.ts +0 -45
  1096. package/src/__tests__/council/code-block-truncate.test.ts +0 -50
  1097. package/src/__tests__/council/role-palette.test.ts +0 -66
  1098. package/src/__tests__/first-run-wizard.test.ts +0 -9
  1099. package/src/agent-harness/__tests__/cli-flags.spec.ts +0 -35
  1100. package/src/agent-harness/__tests__/driver.spec.ts +0 -154
  1101. package/src/agent-harness/__tests__/idle.spec.ts +0 -90
  1102. package/src/agent-harness/__tests__/mock-llm.spec.ts +0 -126
  1103. package/src/agent-harness/__tests__/mock-model.spec.ts +0 -195
  1104. package/src/agent-harness/__tests__/predicate.spec.ts +0 -33
  1105. package/src/agent-harness/__tests__/protocol.spec.ts +0 -62
  1106. package/src/agent-harness/__tests__/schema.spec.ts +0 -81
  1107. package/src/agent-harness/__tests__/selector.spec.ts +0 -82
  1108. package/src/agent-harness/__tests__/sidechannel.spec.ts +0 -40
  1109. package/src/agent-harness/__tests__/spec-helpers.spec.ts +0 -76
  1110. package/src/agent-harness/index.ts +0 -24
  1111. package/src/agent-harness/mock-model.ts +0 -445
  1112. package/src/agent-harness/test-spawn.ts +0 -221
  1113. package/src/billing/index.ts +0 -5
  1114. package/src/bun-sqlite.d.ts +0 -15
  1115. package/src/chat/__tests__/broadcast-bus.test.ts +0 -90
  1116. package/src/chat/__tests__/channel-manager.test.ts +0 -149
  1117. package/src/chat/__tests__/client.test.ts +0 -118
  1118. package/src/chat/__tests__/discord-integration.test.ts +0 -162
  1119. package/src/chat/__tests__/intent-prompt.test.ts +0 -92
  1120. package/src/chat/__tests__/verdict-resolver.test.ts +0 -336
  1121. package/src/chat/broadcast-bus.ts +0 -53
  1122. package/src/chat/channel-manager.ts +0 -146
  1123. package/src/chat/chat-keychain.ts +0 -137
  1124. package/src/chat/factory.ts +0 -37
  1125. package/src/chat/intent-prompt.ts +0 -72
  1126. package/src/chat/providers/discord/client.ts +0 -91
  1127. package/src/chat/types.ts +0 -42
  1128. package/src/chat/verdict-constants.ts +0 -26
  1129. package/src/chat/verdict-resolver.ts +0 -231
  1130. package/src/cli/__tests__/bw-vault.test.ts +0 -97
  1131. package/src/cli/__tests__/keys-bundle.test.ts +0 -46
  1132. package/src/cli/__tests__/share-cmd.test.ts +0 -197
  1133. package/src/cli/bw-vault.ts +0 -184
  1134. package/src/cli/config/__tests__/model-picker.test.ts +0 -59
  1135. package/src/cli/config/__tests__/provider-fetch.test.ts +0 -38
  1136. package/src/cli/config/index.ts +0 -112
  1137. package/src/cli/config/model-picker.ts +0 -193
  1138. package/src/cli/config/provider-fetch.ts +0 -75
  1139. package/src/cli/config/screen-council.ts +0 -245
  1140. package/src/cli/config/screen-models.ts +0 -104
  1141. package/src/cli/config/screen-providers.ts +0 -197
  1142. package/src/cli/config/tui.ts +0 -153
  1143. package/src/cli/cost-forensics.test.ts +0 -273
  1144. package/src/cli/cost-forensics.ts +0 -337
  1145. package/src/cli/keys-bundle.ts +0 -91
  1146. package/src/cli/keys.test.ts +0 -104
  1147. package/src/cli/keys.ts +0 -816
  1148. package/src/cli/pil-report.ts +0 -202
  1149. package/src/cli/reporter-cmd.ts +0 -154
  1150. package/src/cli/share-cmd.ts +0 -132
  1151. package/src/cli/usage-report.ts +0 -398
  1152. package/src/cloud/index.ts +0 -5
  1153. package/src/council/__tests__/accounting.test.ts +0 -72
  1154. package/src/council/__tests__/audit-replay.test.ts +0 -344
  1155. package/src/council/__tests__/clarifier-max-rounds.test.ts +0 -90
  1156. package/src/council/__tests__/clarifier-options.test.ts +0 -63
  1157. package/src/council/__tests__/clarifier-ready-gate.test.ts +0 -268
  1158. package/src/council/__tests__/cost-aware.test.ts +0 -60
  1159. package/src/council/__tests__/debate-planner-structured.test.ts +0 -236
  1160. package/src/council/__tests__/decisions-lock.test.ts +0 -404
  1161. package/src/council/__tests__/evaluator-metrics.test.ts +0 -513
  1162. package/src/council/__tests__/parse-outcome-fallback.test.ts +0 -125
  1163. package/src/council/__tests__/research-tools.test.ts +0 -239
  1164. package/src/council/__tests__/round-tools.test.ts +0 -334
  1165. package/src/council/__tests__/tool-trace.test.ts +0 -152
  1166. package/src/council/__tests__/types-contract.test.ts +0 -88
  1167. package/src/council/clarifier.ts +0 -507
  1168. package/src/council/context.ts +0 -249
  1169. package/src/council/debate-planner.ts +0 -303
  1170. package/src/council/debate.ts +0 -1179
  1171. package/src/council/decisions-lock.ts +0 -312
  1172. package/src/council/executor.ts +0 -27
  1173. package/src/council/index.ts +0 -956
  1174. package/src/council/leader.ts +0 -281
  1175. package/src/council/llm.ts +0 -939
  1176. package/src/council/phase-events.ts +0 -64
  1177. package/src/council/planner.ts +0 -303
  1178. package/src/council/preflight.ts +0 -86
  1179. package/src/council/prompts.ts +0 -698
  1180. package/src/council/types.ts +0 -304
  1181. package/src/daemon/scheduler.test.ts +0 -128
  1182. package/src/daemon/scheduler.ts +0 -152
  1183. package/src/ee/.gitkeep +0 -0
  1184. package/src/ee/__tests__/bb-design.test.ts +0 -223
  1185. package/src/ee/__tests__/export-transcripts.test.ts +0 -222
  1186. package/src/ee/__tests__/pil-context-bridge.test.ts +0 -59
  1187. package/src/ee/__tests__/pipeline.integration.test.ts +0 -193
  1188. package/src/ee/__tests__/recall-format.test.ts +0 -66
  1189. package/src/ee/__tests__/recall-ledger.test.ts +0 -55
  1190. package/src/ee/__tests__/render-sink-wiring.test.ts +0 -89
  1191. package/src/ee/auth.test.ts +0 -76
  1192. package/src/ee/auth.ts +0 -80
  1193. package/src/ee/bb-design.ts +0 -284
  1194. package/src/ee/bb-retrieval.ts +0 -467
  1195. package/src/ee/bridge.test.ts +0 -283
  1196. package/src/ee/bridge.ts +0 -443
  1197. package/src/ee/client-mode.ts +0 -161
  1198. package/src/ee/client.test.ts +0 -201
  1199. package/src/ee/client.ts +0 -683
  1200. package/src/ee/council-bridge.ts +0 -89
  1201. package/src/ee/embedding-cache.ts +0 -42
  1202. package/src/ee/export-transcripts.ts +0 -160
  1203. package/src/ee/extract-session.test.ts +0 -231
  1204. package/src/ee/extract-session.ts +0 -71
  1205. package/src/ee/health.ts +0 -83
  1206. package/src/ee/index.ts +0 -33
  1207. package/src/ee/intercept.test.ts +0 -197
  1208. package/src/ee/intercept.ts +0 -168
  1209. package/src/ee/judge.test.ts +0 -213
  1210. package/src/ee/judge.ts +0 -126
  1211. package/src/ee/mistake-detector.test.ts +0 -252
  1212. package/src/ee/mistake-detector.ts +0 -297
  1213. package/src/ee/offline-queue.test.ts +0 -302
  1214. package/src/ee/offline-queue.ts +0 -205
  1215. package/src/ee/phase-outcome.test.ts +0 -107
  1216. package/src/ee/phase-outcome.ts +0 -165
  1217. package/src/ee/phase-tracker.test.ts +0 -175
  1218. package/src/ee/phase-tracker.ts +0 -180
  1219. package/src/ee/posttool.test.ts +0 -81
  1220. package/src/ee/posttool.ts +0 -16
  1221. package/src/ee/prompt-stale.test.ts +0 -92
  1222. package/src/ee/prompt-stale.ts +0 -39
  1223. package/src/ee/recall-ledger.ts +0 -71
  1224. package/src/ee/recall-mirror.test.ts +0 -74
  1225. package/src/ee/render.test.ts +0 -74
  1226. package/src/ee/render.ts +0 -68
  1227. package/src/ee/scope.test.ts +0 -112
  1228. package/src/ee/scope.ts +0 -93
  1229. package/src/ee/search.ts +0 -259
  1230. package/src/ee/session-trajectory.test.ts +0 -139
  1231. package/src/ee/session-trajectory.ts +0 -226
  1232. package/src/ee/tenant.ts +0 -14
  1233. package/src/ee/touch.test.ts +0 -73
  1234. package/src/ee/transcript-emit.ts +0 -174
  1235. package/src/ee/types.ts +0 -432
  1236. package/src/flow/.gitkeep +0 -0
  1237. package/src/flow/__tests__/migration.test.ts +0 -133
  1238. package/src/flow/__tests__/parser.test.ts +0 -77
  1239. package/src/flow/__tests__/run-manager-product.test.ts +0 -59
  1240. package/src/flow/__tests__/run-manager.test.ts +0 -95
  1241. package/src/flow/__tests__/scaffold-checkpoint.test.ts +0 -113
  1242. package/src/flow/__tests__/scaffold.test.ts +0 -57
  1243. package/src/flow/__tests__/warning-persist.test.ts +0 -112
  1244. package/src/flow/artifact-io.ts +0 -41
  1245. package/src/flow/compaction/__tests__/compress.test.ts +0 -69
  1246. package/src/flow/compaction/__tests__/extract.test.ts +0 -74
  1247. package/src/flow/compaction/__tests__/preserve.test.ts +0 -69
  1248. package/src/flow/compaction/compress.ts +0 -67
  1249. package/src/flow/compaction/extract.ts +0 -60
  1250. package/src/flow/compaction/index.ts +0 -86
  1251. package/src/flow/compaction/preserve.ts +0 -48
  1252. package/src/flow/index.ts +0 -18
  1253. package/src/flow/migration.ts +0 -139
  1254. package/src/flow/parser.ts +0 -78
  1255. package/src/flow/run-manager.ts +0 -162
  1256. package/src/flow/scaffold-checkpoint.ts +0 -132
  1257. package/src/flow/scaffold.ts +0 -52
  1258. package/src/flow/warning-persist.ts +0 -84
  1259. package/src/generated/version.ts +0 -5
  1260. package/src/gsd/.gitkeep +0 -0
  1261. package/src/gsd/__tests__/complexity.test.ts +0 -0
  1262. package/src/gsd/__tests__/directives.test.ts +0 -88
  1263. package/src/gsd/__tests__/gray-areas.test.ts +0 -33
  1264. package/src/gsd/__tests__/types.test.ts +0 -91
  1265. package/src/gsd/complexity.ts +0 -124
  1266. package/src/gsd/directives.ts +0 -141
  1267. package/src/gsd/gray-areas.ts +0 -144
  1268. package/src/gsd/index.ts +0 -1
  1269. package/src/gsd/types.ts +0 -63
  1270. package/src/headless/__tests__/council-answers.test.ts +0 -300
  1271. package/src/headless/council-answers.ts +0 -152
  1272. package/src/headless/output.test.ts +0 -201
  1273. package/src/headless/output.ts +0 -312
  1274. package/src/hooks/config.ts +0 -41
  1275. package/src/hooks/index.ts +0 -569
  1276. package/src/hooks/types.ts +0 -263
  1277. package/src/index.ts +0 -1762
  1278. package/src/lsp/builtins.test.ts +0 -129
  1279. package/src/lsp/builtins.ts +0 -453
  1280. package/src/lsp/client.ts +0 -342
  1281. package/src/lsp/manager.test.ts +0 -198
  1282. package/src/lsp/manager.ts +0 -343
  1283. package/src/lsp/npm-cache.test.ts +0 -70
  1284. package/src/lsp/npm-cache.ts +0 -111
  1285. package/src/lsp/runtime.ts +0 -70
  1286. package/src/lsp/smoke.test.ts +0 -74
  1287. package/src/lsp/types.ts +0 -119
  1288. package/src/maintain/__tests__/codebase-intel.test.ts +0 -320
  1289. package/src/maintain/__tests__/gh-create-pr.test.ts +0 -195
  1290. package/src/maintain/__tests__/pr-builder.test.ts +0 -282
  1291. package/src/maintain/__tests__/repo-map.test.ts +0 -128
  1292. package/src/maintain/__tests__/task-runner.test.ts +0 -347
  1293. package/src/maintain/codebase-intel.ts +0 -595
  1294. package/src/maintain/gh-create-pr.ts +0 -148
  1295. package/src/maintain/index.ts +0 -14
  1296. package/src/maintain/pr-builder.ts +0 -373
  1297. package/src/maintain/repo-map.ts +0 -205
  1298. package/src/maintain/task-runner.ts +0 -481
  1299. package/src/maintain/types.ts +0 -49
  1300. package/src/mcp/__tests__/auto-setup.test.ts +0 -88
  1301. package/src/mcp/__tests__/cap-tool-result.test.ts +0 -65
  1302. package/src/mcp/__tests__/ee-tools.test.ts +0 -248
  1303. package/src/mcp/__tests__/forensics-tools.test.ts +0 -66
  1304. package/src/mcp/__tests__/harness-driver-action-tools.spec.ts +0 -116
  1305. package/src/mcp/__tests__/harness-driver-async-tools.spec.ts +0 -129
  1306. package/src/mcp/__tests__/harness-driver-read-tools.spec.ts +0 -140
  1307. package/src/mcp/__tests__/harness-driver-security.spec.ts +0 -69
  1308. package/src/mcp/__tests__/harness-driver.spec.ts +0 -21
  1309. package/src/mcp/__tests__/lazy-schema.spec.ts +0 -173
  1310. package/src/mcp/__tests__/lsp-tools.test.ts +0 -72
  1311. package/src/mcp/__tests__/mcp-keychain.test.ts +0 -46
  1312. package/src/mcp/__tests__/research-onboarding.test.ts +0 -163
  1313. package/src/mcp/__tests__/runtime-hydration.test.ts +0 -86
  1314. package/src/mcp/__tests__/runtime-output-cap.test.ts +0 -49
  1315. package/src/mcp/__tests__/runtime-sanitize.test.ts +0 -44
  1316. package/src/mcp/__tests__/self-verify-jobs.test.ts +0 -102
  1317. package/src/mcp/__tests__/smart-filter.test.ts +0 -139
  1318. package/src/mcp/__tests__/tools-server.smoke.test.ts +0 -41
  1319. package/src/mcp/auto-setup.ts +0 -99
  1320. package/src/mcp/cap-tool-result.ts +0 -68
  1321. package/src/mcp/catalog.ts +0 -155
  1322. package/src/mcp/ee-tools.ts +0 -204
  1323. package/src/mcp/forensics-tools.ts +0 -65
  1324. package/src/mcp/lsp-tools.ts +0 -78
  1325. package/src/mcp/mcp-keychain.ts +0 -85
  1326. package/src/mcp/oauth-callback.ts +0 -75
  1327. package/src/mcp/oauth-provider.ts +0 -128
  1328. package/src/mcp/opentui-spawn.ts +0 -64
  1329. package/src/mcp/parse-headers.test.ts +0 -54
  1330. package/src/mcp/parse-headers.ts +0 -35
  1331. package/src/mcp/research-onboarding.ts +0 -143
  1332. package/src/mcp/runtime.ts +0 -182
  1333. package/src/mcp/self-verify-jobs.ts +0 -137
  1334. package/src/mcp/smart-filter.ts +0 -138
  1335. package/src/mcp/smoke.test.ts +0 -170
  1336. package/src/mcp/tools-server.ts +0 -174
  1337. package/src/mcp/validate.ts +0 -48
  1338. package/src/models/__tests__/registry.test.ts +0 -95
  1339. package/src/models/catalog-client.ts +0 -234
  1340. package/src/models/catalog-gemini.test.ts +0 -52
  1341. package/src/models/catalog-url.test.ts +0 -27
  1342. package/src/models/catalog-validation.test.ts +0 -74
  1343. package/src/models/catalog.README.md +0 -136
  1344. package/src/models/catalog.json +0 -349
  1345. package/src/models/classify-tier.ts +0 -48
  1346. package/src/models/index.ts +0 -9
  1347. package/src/models/registry.ts +0 -87
  1348. package/src/ops/__tests__/doctor-council-mcp.test.ts +0 -161
  1349. package/src/ops/__tests__/doctor-ee-health.test.ts +0 -129
  1350. package/src/ops/bug-report.test.ts +0 -172
  1351. package/src/ops/bug-report.ts +0 -80
  1352. package/src/ops/doctor.test.ts +0 -108
  1353. package/src/ops/doctor.ts +0 -366
  1354. package/src/orchestrator/__tests__/agent-base-url-switch.test.ts +0 -87
  1355. package/src/orchestrator/__tests__/batch-turn-runner.test.ts +0 -186
  1356. package/src/orchestrator/__tests__/council-manager.test.ts +0 -171
  1357. package/src/orchestrator/__tests__/cross-turn-dedup.test.ts +0 -201
  1358. package/src/orchestrator/__tests__/current-call-id.test.ts +0 -160
  1359. package/src/orchestrator/__tests__/error-forensics.test.ts +0 -99
  1360. package/src/orchestrator/__tests__/flow-resume.test.ts +0 -71
  1361. package/src/orchestrator/__tests__/humanize-api-error.test.ts +0 -74
  1362. package/src/orchestrator/__tests__/message-processor.test.ts +0 -201
  1363. package/src/orchestrator/__tests__/message-write-ahead.test.ts +0 -170
  1364. package/src/orchestrator/__tests__/read-path-budget.test.ts +0 -170
  1365. package/src/orchestrator/__tests__/retry-classifier.test.ts +0 -131
  1366. package/src/orchestrator/__tests__/retry-stream.test.ts +0 -186
  1367. package/src/orchestrator/__tests__/route-feedback.test.ts +0 -55
  1368. package/src/orchestrator/__tests__/stream-runner.test.ts +0 -201
  1369. package/src/orchestrator/__tests__/sub-agent-model-tier.test.ts +0 -53
  1370. package/src/orchestrator/__tests__/usage-events-shape.test.ts +0 -80
  1371. package/src/orchestrator/__tests__/usage-normalizer-c1.test.ts +0 -172
  1372. package/src/orchestrator/__tests__/usage-shape-threading.test.ts +0 -111
  1373. package/src/orchestrator/__tests__/write-ahead.test.ts +0 -162
  1374. package/src/orchestrator/abort.test.ts +0 -37
  1375. package/src/orchestrator/abort.ts +0 -51
  1376. package/src/orchestrator/agent-options.ts +0 -167
  1377. package/src/orchestrator/agent.test.ts +0 -191
  1378. package/src/orchestrator/batch-turn-runner.ts +0 -425
  1379. package/src/orchestrator/batch-utils.ts +0 -340
  1380. package/src/orchestrator/cleanup.test.ts +0 -86
  1381. package/src/orchestrator/compaction.test.ts +0 -200
  1382. package/src/orchestrator/compaction.ts +0 -626
  1383. package/src/orchestrator/council-manager.ts +0 -572
  1384. package/src/orchestrator/cross-turn-dedup.ts +0 -208
  1385. package/src/orchestrator/delegations.test.ts +0 -145
  1386. package/src/orchestrator/delegations.ts +0 -370
  1387. package/src/orchestrator/error-utils.ts +0 -165
  1388. package/src/orchestrator/flow-resume.ts +0 -54
  1389. package/src/orchestrator/grounding-check.test.ts +0 -111
  1390. package/src/orchestrator/grounding-check.ts +0 -138
  1391. package/src/orchestrator/interrupted-turn.test.ts +0 -39
  1392. package/src/orchestrator/interrupted-turn.ts +0 -27
  1393. package/src/orchestrator/message-processor.ts +0 -3364
  1394. package/src/orchestrator/message-seq.test.ts +0 -29
  1395. package/src/orchestrator/message-seq.ts +0 -19
  1396. package/src/orchestrator/orchestrator.ts +0 -2752
  1397. package/src/orchestrator/pending-calls.test.ts +0 -226
  1398. package/src/orchestrator/pending-calls.ts +0 -240
  1399. package/src/orchestrator/prompts.ts +0 -579
  1400. package/src/orchestrator/provider-options-shape.spec.ts +0 -67
  1401. package/src/orchestrator/provider-options-shape.ts +0 -70
  1402. package/src/orchestrator/read-path-budget.ts +0 -205
  1403. package/src/orchestrator/reasoning.test.ts +0 -114
  1404. package/src/orchestrator/reasoning.ts +0 -116
  1405. package/src/orchestrator/repair-tool-call.ts +0 -54
  1406. package/src/orchestrator/repetition-detector.test.ts +0 -127
  1407. package/src/orchestrator/repetition-detector.ts +0 -140
  1408. package/src/orchestrator/retry-classifier.ts +0 -140
  1409. package/src/orchestrator/retry-stream.ts +0 -159
  1410. package/src/orchestrator/sandbox.test.ts +0 -117
  1411. package/src/orchestrator/scope-ceiling.test.ts +0 -215
  1412. package/src/orchestrator/scope-ceiling.ts +0 -234
  1413. package/src/orchestrator/scope-reminder.test.ts +0 -232
  1414. package/src/orchestrator/scope-reminder.ts +0 -230
  1415. package/src/orchestrator/stall-rescue.test.ts +0 -100
  1416. package/src/orchestrator/stall-rescue.ts +0 -95
  1417. package/src/orchestrator/stall-watchdog.test.ts +0 -83
  1418. package/src/orchestrator/stall-watchdog.ts +0 -87
  1419. package/src/orchestrator/stream-runner.ts +0 -939
  1420. package/src/orchestrator/sub-agent-cap.test.ts +0 -227
  1421. package/src/orchestrator/sub-agent-cap.ts +0 -240
  1422. package/src/orchestrator/sub-agent-model-tier.ts +0 -58
  1423. package/src/orchestrator/subagent-compactor.spec.ts +0 -332
  1424. package/src/orchestrator/subagent-compactor.ts +0 -456
  1425. package/src/orchestrator/text-tool-call-detector.test.ts +0 -99
  1426. package/src/orchestrator/text-tool-call-detector.ts +0 -200
  1427. package/src/orchestrator/token-counter.test.ts +0 -69
  1428. package/src/orchestrator/token-counter.ts +0 -81
  1429. package/src/orchestrator/tool-args-hash.test.ts +0 -121
  1430. package/src/orchestrator/tool-args-hash.ts +0 -221
  1431. package/src/orchestrator/tool-args-repair.test.ts +0 -156
  1432. package/src/orchestrator/tool-args-repair.ts +0 -227
  1433. package/src/orchestrator/tool-loop-cap.test.ts +0 -193
  1434. package/src/orchestrator/tool-loop-cap.ts +0 -174
  1435. package/src/orchestrator/tool-repetition-detector.test.ts +0 -119
  1436. package/src/orchestrator/tool-repetition-detector.ts +0 -0
  1437. package/src/orchestrator/tool-utils.ts +0 -214
  1438. package/src/orchestrator/turn-runner-deps.ts +0 -85
  1439. package/src/pil/__tests__/budget.test.ts +0 -39
  1440. package/src/pil/__tests__/clarity-gate.test.ts +0 -299
  1441. package/src/pil/__tests__/config.test.ts +0 -78
  1442. package/src/pil/__tests__/discovery-cache.test.ts +0 -45
  1443. package/src/pil/__tests__/discovery-types.test.ts +0 -68
  1444. package/src/pil/__tests__/discovery.test.ts +0 -141
  1445. package/src/pil/__tests__/dual-run.test.ts +0 -53
  1446. package/src/pil/__tests__/layer1-intent-trace.test.ts +0 -142
  1447. package/src/pil/__tests__/layer1-intent.test.ts +0 -365
  1448. package/src/pil/__tests__/layer15-context-scan.test.ts +0 -76
  1449. package/src/pil/__tests__/layer16-clarity.test.ts +0 -184
  1450. package/src/pil/__tests__/layer17-feasibility.test.ts +0 -42
  1451. package/src/pil/__tests__/layer18-acceptance.test.ts +0 -116
  1452. package/src/pil/__tests__/layer2-personality.test.ts +0 -63
  1453. package/src/pil/__tests__/layer3-ee-injection.test.ts +0 -189
  1454. package/src/pil/__tests__/layer3-injected-chunk.test.ts +0 -122
  1455. package/src/pil/__tests__/layer4-gsd.test.ts +0 -109
  1456. package/src/pil/__tests__/layer5-context.test.ts +0 -157
  1457. package/src/pil/__tests__/layer6-output.test.ts +0 -362
  1458. package/src/pil/__tests__/llm-classify.test.ts +0 -140
  1459. package/src/pil/__tests__/native-capabilities-workbook.test.ts +0 -45
  1460. package/src/pil/__tests__/ollama-classify.test.ts +0 -81
  1461. package/src/pil/__tests__/orchestrator-integration.test.ts +0 -107
  1462. package/src/pil/__tests__/pipeline.test.ts +0 -191
  1463. package/src/pil/__tests__/renderer-coverage.test.ts +0 -46
  1464. package/src/pil/__tests__/response-tools.test.ts +0 -239
  1465. package/src/pil/__tests__/schema.test.ts +0 -233
  1466. package/src/pil/__tests__/scoreComplexity.test.ts +0 -134
  1467. package/src/pil/__tests__/scoreSufficiency.test.ts +0 -104
  1468. package/src/pil/__tests__/store.test.ts +0 -49
  1469. package/src/pil/__tests__/task-tier-map.test.ts +0 -41
  1470. package/src/pil/agent-operating-contract.test.ts +0 -84
  1471. package/src/pil/agent-operating-contract.ts +0 -70
  1472. package/src/pil/budget-log.ts +0 -86
  1473. package/src/pil/budget.ts +0 -18
  1474. package/src/pil/cheap-model-playbook.test.ts +0 -191
  1475. package/src/pil/cheap-model-playbook.ts +0 -153
  1476. package/src/pil/cheap-model-workbooks.test.ts +0 -154
  1477. package/src/pil/cheap-model-workbooks.ts +0 -109
  1478. package/src/pil/clarity-gate.ts +0 -188
  1479. package/src/pil/config.ts +0 -25
  1480. package/src/pil/discovery-cache.ts +0 -20
  1481. package/src/pil/discovery-types.ts +0 -97
  1482. package/src/pil/discovery.ts +0 -397
  1483. package/src/pil/index.ts +0 -24
  1484. package/src/pil/layer1-intent.test.ts +0 -520
  1485. package/src/pil/layer1-intent.ts +0 -1236
  1486. package/src/pil/layer15-context-scan.ts +0 -159
  1487. package/src/pil/layer16-clarity.test.ts +0 -35
  1488. package/src/pil/layer16-clarity.ts +0 -417
  1489. package/src/pil/layer17-feasibility.ts +0 -40
  1490. package/src/pil/layer18-acceptance.ts +0 -98
  1491. package/src/pil/layer1_5-complexity-size.test.ts +0 -279
  1492. package/src/pil/layer1_5-complexity-size.ts +0 -175
  1493. package/src/pil/layer2-personality.ts +0 -46
  1494. package/src/pil/layer3-ee-injection.ts +0 -406
  1495. package/src/pil/layer4-gsd.ts +0 -124
  1496. package/src/pil/layer5-context.ts +0 -171
  1497. package/src/pil/layer6-output.ts +0 -364
  1498. package/src/pil/llm-classify.ts +0 -199
  1499. package/src/pil/native-capabilities-workbook.ts +0 -124
  1500. package/src/pil/ollama-classify.ts +0 -49
  1501. package/src/pil/pipeline.ts +0 -313
  1502. package/src/pil/response-tools.ts +0 -187
  1503. package/src/pil/schema.ts +0 -111
  1504. package/src/pil/session-state.test.ts +0 -88
  1505. package/src/pil/session-state.ts +0 -157
  1506. package/src/pil/store.ts +0 -29
  1507. package/src/pil/task-tier-map.ts +0 -97
  1508. package/src/pil/timeout.ts +0 -10
  1509. package/src/pil/types.ts +0 -168
  1510. package/src/product-loop/__tests__/artifact-io.test.ts +0 -97
  1511. package/src/product-loop/__tests__/assumption-ledger.test.ts +0 -292
  1512. package/src/product-loop/__tests__/backlog-builder.test.ts +0 -200
  1513. package/src/product-loop/__tests__/backlog-store.test.ts +0 -119
  1514. package/src/product-loop/__tests__/cb2-retry-bonus.test.ts +0 -182
  1515. package/src/product-loop/__tests__/circuit-breakers-coverage.test.ts +0 -82
  1516. package/src/product-loop/__tests__/circuit-breakers.test.ts +0 -90
  1517. package/src/product-loop/__tests__/complexity-routing.spec.ts +0 -315
  1518. package/src/product-loop/__tests__/context-policy.test.ts +0 -280
  1519. package/src/product-loop/__tests__/cost-preview.test.ts +0 -118
  1520. package/src/product-loop/__tests__/cost-scoper.test.ts +0 -76
  1521. package/src/product-loop/__tests__/cross-run-memory.test.ts +0 -195
  1522. package/src/product-loop/__tests__/design-output.spec.ts +0 -39
  1523. package/src/product-loop/__tests__/discover.test.ts +0 -98
  1524. package/src/product-loop/__tests__/discovery-context-format.test.ts +0 -111
  1525. package/src/product-loop/__tests__/discovery-council-runner.test.ts +0 -13
  1526. package/src/product-loop/__tests__/discovery-detection.test.ts +0 -180
  1527. package/src/product-loop/__tests__/discovery-ecosystem.test.ts +0 -246
  1528. package/src/product-loop/__tests__/discovery-integration.test.ts +0 -133
  1529. package/src/product-loop/__tests__/discovery-interview.test.ts +0 -305
  1530. package/src/product-loop/__tests__/discovery-migrations.test.ts +0 -75
  1531. package/src/product-loop/__tests__/discovery-persistence.test.ts +0 -171
  1532. package/src/product-loop/__tests__/discovery-prompt-parser.test.ts +0 -77
  1533. package/src/product-loop/__tests__/discovery-prompt-specificity.test.ts +0 -65
  1534. package/src/product-loop/__tests__/discovery-recommender-ecosystem.test.ts +0 -192
  1535. package/src/product-loop/__tests__/discovery-recommender.test.ts +0 -382
  1536. package/src/product-loop/__tests__/discovery-schema.test.ts +0 -102
  1537. package/src/product-loop/__tests__/done-gate-coverage.test.ts +0 -151
  1538. package/src/product-loop/__tests__/done-gate.test.ts +0 -140
  1539. package/src/product-loop/__tests__/ee-extract-wiring.test.ts +0 -222
  1540. package/src/product-loop/__tests__/extract-to-ee.test.ts +0 -205
  1541. package/src/product-loop/__tests__/feedback-routing.test.ts +0 -93
  1542. package/src/product-loop/__tests__/gather-selectable-alts.test.ts +0 -119
  1543. package/src/product-loop/__tests__/hot-path.spec.ts +0 -177
  1544. package/src/product-loop/__tests__/integration.test.ts +0 -350
  1545. package/src/product-loop/__tests__/loop-driver-audit.test.ts +0 -327
  1546. package/src/product-loop/__tests__/loop-driver.test.ts +0 -253
  1547. package/src/product-loop/__tests__/maintenance-task-synthesis.test.ts +0 -78
  1548. package/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.ts +0 -315
  1549. package/src/product-loop/__tests__/phase-a2-backlog-build.test.ts +0 -189
  1550. package/src/product-loop/__tests__/phase-budget.test.ts +0 -172
  1551. package/src/product-loop/__tests__/phase-orchestrator-integration.test.ts +0 -143
  1552. package/src/product-loop/__tests__/phase-plan.test.ts +0 -241
  1553. package/src/product-loop/__tests__/phase-rituals.test.ts +0 -205
  1554. package/src/product-loop/__tests__/phase-runner.test.ts +0 -454
  1555. package/src/product-loop/__tests__/phase-tracker-bridge.test.ts +0 -85
  1556. package/src/product-loop/__tests__/pick-backend-stack.test.ts +0 -117
  1557. package/src/product-loop/__tests__/product-identity.test.ts +0 -47
  1558. package/src/product-loop/__tests__/progress-snapshot.test.ts +0 -180
  1559. package/src/product-loop/__tests__/reality-anchor.test.ts +0 -58
  1560. package/src/product-loop/__tests__/repo-audit.test.ts +0 -103
  1561. package/src/product-loop/__tests__/repo-brief.test.ts +0 -155
  1562. package/src/product-loop/__tests__/role-memory.test.ts +0 -70
  1563. package/src/product-loop/__tests__/role-registry.test.ts +0 -235
  1564. package/src/product-loop/__tests__/role-routing-ee.test.ts +0 -90
  1565. package/src/product-loop/__tests__/route-decision-emit.test.ts +0 -258
  1566. package/src/product-loop/__tests__/seed-questions.test.ts +0 -33
  1567. package/src/product-loop/__tests__/ship-polish.test.ts +0 -109
  1568. package/src/product-loop/__tests__/sprint-planner.test.ts +0 -166
  1569. package/src/product-loop/__tests__/sprint-runner-backlog.test.ts +0 -248
  1570. package/src/product-loop/__tests__/sprint-runner-emit.test.ts +0 -324
  1571. package/src/product-loop/__tests__/sprint-runner-phase-chunks.test.ts +0 -220
  1572. package/src/product-loop/__tests__/sprint-runner.test.ts +0 -501
  1573. package/src/product-loop/__tests__/sprint-self-verify.test.ts +0 -77
  1574. package/src/product-loop/__tests__/sprint-store.test.ts +0 -98
  1575. package/src/product-loop/__tests__/stakeholder-acl.test.ts +0 -94
  1576. package/src/product-loop/__tests__/state-md-ee-injections.test.ts +0 -229
  1577. package/src/product-loop/__tests__/sufficiency-routing.spec.ts +0 -183
  1578. package/src/product-loop/__tests__/typed-artifacts.test.ts +0 -259
  1579. package/src/product-loop/__tests__/types.test.ts +0 -103
  1580. package/src/product-loop/__tests__/verify-failure-threshold.test.ts +0 -178
  1581. package/src/product-loop/__tests__/verify-failure-tracking.test.ts +0 -154
  1582. package/src/product-loop/__tests__/verify-result.test.ts +0 -60
  1583. package/src/product-loop/artifact-io.ts +0 -239
  1584. package/src/product-loop/assumption-ledger.ts +0 -270
  1585. package/src/product-loop/backlog-builder.ts +0 -253
  1586. package/src/product-loop/backlog-store.ts +0 -62
  1587. package/src/product-loop/circuit-breakers.ts +0 -76
  1588. package/src/product-loop/context-policy.ts +0 -180
  1589. package/src/product-loop/cost-preview.ts +0 -139
  1590. package/src/product-loop/cost-scoper.ts +0 -49
  1591. package/src/product-loop/cross-run-memory.ts +0 -450
  1592. package/src/product-loop/design-output.ts +0 -24
  1593. package/src/product-loop/discover.ts +0 -159
  1594. package/src/product-loop/discovery-context-format.ts +0 -56
  1595. package/src/product-loop/discovery-council-runner.ts +0 -78
  1596. package/src/product-loop/discovery-detection.ts +0 -161
  1597. package/src/product-loop/discovery-ecosystem.ts +0 -239
  1598. package/src/product-loop/discovery-interview.ts +0 -288
  1599. package/src/product-loop/discovery-migrations.ts +0 -40
  1600. package/src/product-loop/discovery-persistence.ts +0 -219
  1601. package/src/product-loop/discovery-prompt-parser.ts +0 -80
  1602. package/src/product-loop/discovery-recommender.ts +0 -514
  1603. package/src/product-loop/discovery-schema.ts +0 -143
  1604. package/src/product-loop/done-gate.ts +0 -224
  1605. package/src/product-loop/feedback-routing.ts +0 -82
  1606. package/src/product-loop/gather.ts +0 -386
  1607. package/src/product-loop/index.ts +0 -1855
  1608. package/src/product-loop/loop-driver.ts +0 -900
  1609. package/src/product-loop/phase-budget.ts +0 -182
  1610. package/src/product-loop/phase-plan.ts +0 -158
  1611. package/src/product-loop/phase-rituals.ts +0 -158
  1612. package/src/product-loop/phase-runner.ts +0 -455
  1613. package/src/product-loop/phase-tracker-bridge.ts +0 -60
  1614. package/src/product-loop/product-identity.ts +0 -11
  1615. package/src/product-loop/progress-snapshot.ts +0 -216
  1616. package/src/product-loop/reality-anchor.ts +0 -45
  1617. package/src/product-loop/repo-audit.ts +0 -314
  1618. package/src/product-loop/repo-brief.ts +0 -235
  1619. package/src/product-loop/role-memory.ts +0 -72
  1620. package/src/product-loop/role-registry.ts +0 -175
  1621. package/src/product-loop/seed-questions.ts +0 -51
  1622. package/src/product-loop/ship-polish.ts +0 -164
  1623. package/src/product-loop/sprint-planner.ts +0 -241
  1624. package/src/product-loop/sprint-runner.ts +0 -801
  1625. package/src/product-loop/sprint-self-verify.ts +0 -189
  1626. package/src/product-loop/sprint-store.ts +0 -96
  1627. package/src/product-loop/stakeholder-acl.ts +0 -82
  1628. package/src/product-loop/typed-artifacts.ts +0 -332
  1629. package/src/product-loop/types.ts +0 -570
  1630. package/src/product-loop/verify-failure-tracking.ts +0 -225
  1631. package/src/product-loop/verify-result.ts +0 -39
  1632. package/src/providers/.gitkeep +0 -0
  1633. package/src/providers/__test-utils__/load-fixture.ts +0 -36
  1634. package/src/providers/__tests__/adapter-oauth-wiring.test.ts +0 -147
  1635. package/src/providers/__tests__/capabilities-cosmetic.test.ts +0 -119
  1636. package/src/providers/__tests__/capabilities-flags.test.ts +0 -166
  1637. package/src/providers/__tests__/capabilities-provider-options.test.ts +0 -232
  1638. package/src/providers/__tests__/capabilities-sanitize.test.ts +0 -66
  1639. package/src/providers/__tests__/capabilities.test.ts +0 -44
  1640. package/src/providers/__tests__/provider-coverage.test.ts +0 -48
  1641. package/src/providers/__tests__/reasoning-roundtrip.test.ts +0 -150
  1642. package/src/providers/__tests__/runtime-integration.test.ts +0 -106
  1643. package/src/providers/__tests__/runtime.test.ts +0 -94
  1644. package/src/providers/__tests__/siliconflow-sse-repair.test.ts +0 -300
  1645. package/src/providers/__tests__/strategies-registry.test.ts +0 -55
  1646. package/src/providers/__tests__/strategies-resolve.test.ts +0 -137
  1647. package/src/providers/__tests__/wire-debug.test.ts +0 -42
  1648. package/src/providers/adapter.test.ts +0 -21
  1649. package/src/providers/adapter.ts +0 -156
  1650. package/src/providers/anthropic.ts +0 -174
  1651. package/src/providers/auth/__tests__/browser-flow.test.ts +0 -230
  1652. package/src/providers/auth/__tests__/device-flow.test.ts +0 -263
  1653. package/src/providers/auth/__tests__/gemini-oauth.test.ts +0 -387
  1654. package/src/providers/auth/__tests__/grok-oauth.test.ts +0 -283
  1655. package/src/providers/auth/__tests__/openai-oauth.test.ts +0 -378
  1656. package/src/providers/auth/__tests__/token-store.test.ts +0 -152
  1657. package/src/providers/auth/browser-flow.ts +0 -140
  1658. package/src/providers/auth/device-flow.ts +0 -221
  1659. package/src/providers/auth/gemini-oauth.ts +0 -351
  1660. package/src/providers/auth/grok-oauth.ts +0 -406
  1661. package/src/providers/auth/openai-oauth.ts +0 -455
  1662. package/src/providers/auth/registry.ts +0 -138
  1663. package/src/providers/auth/token-store.ts +0 -154
  1664. package/src/providers/auth/types.ts +0 -111
  1665. package/src/providers/capabilities.ts +0 -355
  1666. package/src/providers/endpoints.ts +0 -68
  1667. package/src/providers/errors.test.ts +0 -76
  1668. package/src/providers/errors.ts +0 -46
  1669. package/src/providers/gemini.test.ts +0 -46
  1670. package/src/providers/gemini.ts +0 -42
  1671. package/src/providers/index.ts +0 -28
  1672. package/src/providers/keychain.test.ts +0 -100
  1673. package/src/providers/keychain.ts +0 -278
  1674. package/src/providers/mcp-vision-bridge.test.ts +0 -513
  1675. package/src/providers/mcp-vision-bridge.ts +0 -1020
  1676. package/src/providers/ollama.test.ts +0 -46
  1677. package/src/providers/ollama.ts +0 -36
  1678. package/src/providers/openai-compatible.test.ts +0 -63
  1679. package/src/providers/openai-compatible.ts +0 -62
  1680. package/src/providers/openai.test.ts +0 -65
  1681. package/src/providers/openai.ts +0 -56
  1682. package/src/providers/patch-zod-schema.ts +0 -126
  1683. package/src/providers/pricing.test.ts +0 -97
  1684. package/src/providers/pricing.ts +0 -128
  1685. package/src/providers/prompt-cache-key.spec.ts +0 -28
  1686. package/src/providers/runtime-mock.spec.ts +0 -86
  1687. package/src/providers/runtime.ts +0 -311
  1688. package/src/providers/siliconflow-sse-repair.ts +0 -201
  1689. package/src/providers/strategies/anthropic.strategy.ts +0 -25
  1690. package/src/providers/strategies/base.strategy.ts +0 -76
  1691. package/src/providers/strategies/deepseek.strategy.ts +0 -55
  1692. package/src/providers/strategies/google.strategy.ts +0 -28
  1693. package/src/providers/strategies/ollama.strategy.ts +0 -22
  1694. package/src/providers/strategies/openai.strategy.ts +0 -55
  1695. package/src/providers/strategies/registry.ts +0 -43
  1696. package/src/providers/strategies/siliconflow.strategy.ts +0 -28
  1697. package/src/providers/strategies/xai.strategy.ts +0 -33
  1698. package/src/providers/stream-loop.ts +0 -83
  1699. package/src/providers/types.ts +0 -145
  1700. package/src/providers/vision-proxy.test.ts +0 -252
  1701. package/src/providers/vision-proxy.ts +0 -317
  1702. package/src/providers/wire-debug.ts +0 -163
  1703. package/src/reporter/__tests__/acl-check.test.ts +0 -71
  1704. package/src/reporter/__tests__/auto-fire.test.ts +0 -161
  1705. package/src/reporter/__tests__/budget.test.ts +0 -74
  1706. package/src/reporter/__tests__/handlers.test.ts +0 -192
  1707. package/src/reporter/__tests__/query-router.test.ts +0 -115
  1708. package/src/reporter/acl-check.ts +0 -54
  1709. package/src/reporter/auto-fire.ts +0 -168
  1710. package/src/reporter/budget.ts +0 -59
  1711. package/src/reporter/handlers.ts +0 -212
  1712. package/src/reporter/index.ts +0 -210
  1713. package/src/reporter/query-router.ts +0 -51
  1714. package/src/router/.gitkeep +0 -0
  1715. package/src/router/__tests__/step-router.test.ts +0 -150
  1716. package/src/router/classifier/grammars.ts +0 -17
  1717. package/src/router/classifier/index.test.ts +0 -33
  1718. package/src/router/classifier/index.ts +0 -21
  1719. package/src/router/classifier/regex.test.ts +0 -51
  1720. package/src/router/classifier/regex.ts +0 -160
  1721. package/src/router/classifier/tree-sitter.test.ts +0 -26
  1722. package/src/router/classifier/tree-sitter.ts +0 -87
  1723. package/src/router/cold.test.ts +0 -62
  1724. package/src/router/cold.ts +0 -27
  1725. package/src/router/decide.test.ts +0 -209
  1726. package/src/router/decide.ts +0 -509
  1727. package/src/router/health.test.ts +0 -59
  1728. package/src/router/health.ts +0 -49
  1729. package/src/router/provider-sentinel.test.ts +0 -22
  1730. package/src/router/provider-sentinel.ts +0 -20
  1731. package/src/router/role-override.test.ts +0 -37
  1732. package/src/router/step-router.ts +0 -194
  1733. package/src/router/store.ts +0 -47
  1734. package/src/router/types.ts +0 -20
  1735. package/src/router/warm.test.ts +0 -234
  1736. package/src/router/warm.ts +0 -93
  1737. package/src/scaffold/__tests__/continuation-prompt.test.ts +0 -93
  1738. package/src/scaffold/__tests__/continue-as-council.spec.ts +0 -122
  1739. package/src/scaffold/__tests__/dotnet-assembly-name.test.ts +0 -28
  1740. package/src/scaffold/__tests__/fe-scaffold-contents.test.ts +0 -127
  1741. package/src/scaffold/__tests__/init-new.smoke.spec.ts +0 -99
  1742. package/src/scaffold/__tests__/init-new.spec.ts +0 -450
  1743. package/src/scaffold/__tests__/install-bb-templates.spec.ts +0 -86
  1744. package/src/scaffold/__tests__/point-to-existing.spec.ts +0 -114
  1745. package/src/scaffold/bb-ecosystem-apply.ts +0 -457
  1746. package/src/scaffold/bb-quality-gate.ts +0 -287
  1747. package/src/scaffold/continuation-prompt.ts +0 -80
  1748. package/src/scaffold/continue-as-council.ts +0 -99
  1749. package/src/scaffold/init-new.ts +0 -1691
  1750. package/src/scaffold/point-to-existing.ts +0 -83
  1751. package/src/scaffold/resume-from-gate-failures.ts +0 -167
  1752. package/src/self-qa/__tests__/agentic-context.test.ts +0 -104
  1753. package/src/self-qa/__tests__/agentic-loop.test.ts +0 -70
  1754. package/src/self-qa/__tests__/delta-encoder.test.ts +0 -113
  1755. package/src/self-qa/__tests__/judge.test.ts +0 -152
  1756. package/src/self-qa/__tests__/scenario-planner.test.ts +0 -87
  1757. package/src/self-qa/__tests__/spec-emitter.test.ts +0 -67
  1758. package/src/self-qa/agentic-context.ts +0 -211
  1759. package/src/self-qa/agentic-loop.ts +0 -590
  1760. package/src/self-qa/delta-encoder.ts +0 -149
  1761. package/src/self-qa/index.ts +0 -117
  1762. package/src/self-qa/judge.ts +0 -248
  1763. package/src/self-qa/orchestrator.ts +0 -269
  1764. package/src/self-qa/scenario-planner.ts +0 -289
  1765. package/src/self-qa/spec-emitter.ts +0 -152
  1766. package/src/self-qa/types.ts +0 -98
  1767. package/src/storage/__tests__/migrations.test.ts +0 -395
  1768. package/src/storage/__tests__/sweep-stale-pending.test.ts +0 -112
  1769. package/src/storage/__tests__/ui-interaction-log.test.ts +0 -136
  1770. package/src/storage/atomic-io.test.ts +0 -92
  1771. package/src/storage/atomic-io.ts +0 -160
  1772. package/src/storage/config.test.ts +0 -33
  1773. package/src/storage/config.ts +0 -53
  1774. package/src/storage/db.ts +0 -184
  1775. package/src/storage/index.ts +0 -26
  1776. package/src/storage/interaction-log.ts +0 -126
  1777. package/src/storage/migrations.ts +0 -205
  1778. package/src/storage/session-dir.ts +0 -37
  1779. package/src/storage/sessions.ts +0 -225
  1780. package/src/storage/tool-results.ts +0 -56
  1781. package/src/storage/transcript-response-entry.test.ts +0 -115
  1782. package/src/storage/transcript-view.ts +0 -45
  1783. package/src/storage/transcript.test.ts +0 -24
  1784. package/src/storage/transcript.ts +0 -637
  1785. package/src/storage/ui-interaction-log.ts +0 -170
  1786. package/src/storage/usage-cap.test.ts +0 -59
  1787. package/src/storage/usage-cap.ts +0 -81
  1788. package/src/storage/usage.ts +0 -117
  1789. package/src/storage/workspaces.ts +0 -84
  1790. package/src/tools/__tests__/vision-gate.test.ts +0 -66
  1791. package/src/tools/bash-output-cache.test.ts +0 -113
  1792. package/src/tools/bash-output-cache.ts +0 -156
  1793. package/src/tools/bash-output-integration.test.ts +0 -33
  1794. package/src/tools/bash.test.ts +0 -447
  1795. package/src/tools/bash.ts +0 -769
  1796. package/src/tools/computer.test.ts +0 -187
  1797. package/src/tools/computer.ts +0 -632
  1798. package/src/tools/file-tracker.test.ts +0 -101
  1799. package/src/tools/file-tracker.ts +0 -70
  1800. package/src/tools/file.test.ts +0 -151
  1801. package/src/tools/file.ts +0 -203
  1802. package/src/tools/grep.ts +0 -187
  1803. package/src/tools/registry-bash-empty-command.test.ts +0 -64
  1804. package/src/tools/registry-bash-footer.test.ts +0 -95
  1805. package/src/tools/registry-ee-query.test.ts +0 -57
  1806. package/src/tools/registry-session-repeat.test.ts +0 -105
  1807. package/src/tools/registry.test.ts +0 -38
  1808. package/src/tools/registry.ts +0 -704
  1809. package/src/tools/schedule.test.ts +0 -143
  1810. package/src/tools/schedule.ts +0 -610
  1811. package/src/tools/todo-write-snapshot.test.ts +0 -53
  1812. package/src/tools/todo-write-snapshot.ts +0 -63
  1813. package/src/tools/vision-gate.ts +0 -74
  1814. package/src/types/index.ts +0 -550
  1815. package/src/ui/__tests__/picker-providers.test.ts +0 -37
  1816. package/src/ui/agents-modal.tsx +0 -293
  1817. package/src/ui/app.tsx +0 -7084
  1818. package/src/ui/cards/__tests__/product-status-card.test.ts +0 -30
  1819. package/src/ui/cards/product-status-card.tsx +0 -117
  1820. package/src/ui/components/SuggestionOverlay.tsx +0 -38
  1821. package/src/ui/components/Toast.tsx +0 -100
  1822. package/src/ui/components/__tests__/council-leader-bubble.test.ts +0 -16
  1823. package/src/ui/components/__tests__/council-message-bubble.test.ts +0 -85
  1824. package/src/ui/components/__tests__/council-phase-timeline.test.ts +0 -57
  1825. package/src/ui/components/__tests__/council-placeholder-bubble.test.ts +0 -16
  1826. package/src/ui/components/__tests__/council-question-card.test.ts +0 -133
  1827. package/src/ui/components/__tests__/council-synthesis-banner.test.ts +0 -12
  1828. package/src/ui/components/__tests__/task-list-panel.test.ts +0 -37
  1829. package/src/ui/components/__tests__/use-pair-quote-buffer.test.ts +0 -41
  1830. package/src/ui/components/btw-overlay.tsx +0 -66
  1831. package/src/ui/components/bubble-layout.ts +0 -66
  1832. package/src/ui/components/code-block-truncate.ts +0 -24
  1833. package/src/ui/components/copy-flash-banner.tsx +0 -31
  1834. package/src/ui/components/council-info-card.tsx +0 -44
  1835. package/src/ui/components/council-leader-bubble.tsx +0 -40
  1836. package/src/ui/components/council-message-bubble.tsx +0 -110
  1837. package/src/ui/components/council-phase-timeline.tsx +0 -112
  1838. package/src/ui/components/council-placeholder-bubble.tsx +0 -64
  1839. package/src/ui/components/council-question-card.tsx +0 -256
  1840. package/src/ui/components/council-status-list.tsx +0 -111
  1841. package/src/ui/components/council-synthesis-banner.tsx +0 -36
  1842. package/src/ui/components/diff-view.tsx +0 -225
  1843. package/src/ui/components/halt-recovery-card.tsx +0 -84
  1844. package/src/ui/components/hero-logo.tsx +0 -62
  1845. package/src/ui/components/init-new-form-card.tsx +0 -470
  1846. package/src/ui/components/lsp-views.tsx +0 -104
  1847. package/src/ui/components/media-views.tsx +0 -66
  1848. package/src/ui/components/message-view.tsx +0 -442
  1849. package/src/ui/components/point-to-existing-form-card.tsx +0 -136
  1850. package/src/ui/components/prompt-box.tsx +0 -306
  1851. package/src/ui/components/role-palette.ts +0 -62
  1852. package/src/ui/components/session-header.tsx +0 -68
  1853. package/src/ui/components/slash-inline-menu.tsx +0 -63
  1854. package/src/ui/components/structured-response-view.tsx +0 -191
  1855. package/src/ui/components/task-list-panel.tsx +0 -127
  1856. package/src/ui/components/tool-group.tsx +0 -129
  1857. package/src/ui/components/tool-result-views.tsx +0 -258
  1858. package/src/ui/components/use-pair-quote-buffer.ts +0 -23
  1859. package/src/ui/constants.ts +0 -242
  1860. package/src/ui/hooks/use-agent-editor.ts +0 -61
  1861. package/src/ui/hooks/use-mcp-editor.ts +0 -39
  1862. package/src/ui/hooks/use-model-picker.ts +0 -50
  1863. package/src/ui/hooks/useTypeahead.ts +0 -160
  1864. package/src/ui/markdown.tsx +0 -49
  1865. package/src/ui/mcp-modal-types.ts +0 -33
  1866. package/src/ui/mcp-modal.tsx +0 -484
  1867. package/src/ui/modals/api-key-modal.tsx +0 -99
  1868. package/src/ui/modals/connect-modal.tsx +0 -259
  1869. package/src/ui/modals/model-picker-modal.tsx +0 -347
  1870. package/src/ui/modals/sandbox-picker-modal.tsx +0 -99
  1871. package/src/ui/modals/update-modal.tsx +0 -67
  1872. package/src/ui/modals/wallet-picker-modal.tsx +0 -186
  1873. package/src/ui/picker-providers.ts +0 -41
  1874. package/src/ui/plan.tsx +0 -346
  1875. package/src/ui/schedule-modal.tsx +0 -138
  1876. package/src/ui/slash/__tests__/clear.test.ts +0 -86
  1877. package/src/ui/slash/__tests__/compact.test.ts +0 -56
  1878. package/src/ui/slash/__tests__/cost.test.ts +0 -62
  1879. package/src/ui/slash/__tests__/discuss.test.ts +0 -101
  1880. package/src/ui/slash/__tests__/execute.test.ts +0 -86
  1881. package/src/ui/slash/__tests__/expand.test.ts +0 -86
  1882. package/src/ui/slash/__tests__/ideal.test.ts +0 -182
  1883. package/src/ui/slash/__tests__/menu-parity.test.ts +0 -44
  1884. package/src/ui/slash/__tests__/optimize.test.ts +0 -155
  1885. package/src/ui/slash/__tests__/pin.test.ts +0 -47
  1886. package/src/ui/slash/__tests__/plan.test.ts +0 -98
  1887. package/src/ui/slash/__tests__/status-render.test.ts +0 -82
  1888. package/src/ui/slash/clear.ts +0 -89
  1889. package/src/ui/slash/compact.ts +0 -46
  1890. package/src/ui/slash/cost.ts +0 -63
  1891. package/src/ui/slash/council-inspect.ts +0 -188
  1892. package/src/ui/slash/council.ts +0 -30
  1893. package/src/ui/slash/debug.ts +0 -153
  1894. package/src/ui/slash/discuss.ts +0 -71
  1895. package/src/ui/slash/ee.ts +0 -304
  1896. package/src/ui/slash/execute.ts +0 -44
  1897. package/src/ui/slash/expand.ts +0 -51
  1898. package/src/ui/slash/export.ts +0 -309
  1899. package/src/ui/slash/ideal.ts +0 -292
  1900. package/src/ui/slash/menu-items.ts +0 -107
  1901. package/src/ui/slash/optimize.ts +0 -47
  1902. package/src/ui/slash/pin.ts +0 -41
  1903. package/src/ui/slash/plan.ts +0 -62
  1904. package/src/ui/slash/registry.ts +0 -47
  1905. package/src/ui/slash/route.test.ts +0 -82
  1906. package/src/ui/slash/route.ts +0 -43
  1907. package/src/ui/slash/status.ts +0 -36
  1908. package/src/ui/state/active-run.ts +0 -56
  1909. package/src/ui/status-bar/index.test.tsx +0 -154
  1910. package/src/ui/status-bar/index.tsx +0 -126
  1911. package/src/ui/status-bar/store.test.ts +0 -131
  1912. package/src/ui/status-bar/store.ts +0 -332
  1913. package/src/ui/status-bar/tier-badge.test.tsx +0 -38
  1914. package/src/ui/status-bar/tier-badge.tsx +0 -29
  1915. package/src/ui/status-bar/usd-meter.test.tsx +0 -37
  1916. package/src/ui/status-bar/usd-meter.tsx +0 -22
  1917. package/src/ui/syntax-highlight.ts +0 -627
  1918. package/src/ui/terminal-selection-text.ts +0 -72
  1919. package/src/ui/theme.ts +0 -95
  1920. package/src/ui/types.ts +0 -83
  1921. package/src/ui/utils/__tests__/format.test.ts +0 -71
  1922. package/src/ui/utils/__tests__/tools.test.ts +0 -57
  1923. package/src/ui/utils/color.ts +0 -19
  1924. package/src/ui/utils/format.ts +0 -133
  1925. package/src/ui/utils/modal.ts +0 -9
  1926. package/src/ui/utils/text.ts +0 -32
  1927. package/src/ui/utils/tools.ts +0 -137
  1928. package/src/usage/.gitkeep +0 -0
  1929. package/src/usage/__tests__/product-ledger.test.ts +0 -86
  1930. package/src/usage/cost-log.ts +0 -158
  1931. package/src/usage/decision-log.ts +0 -86
  1932. package/src/usage/downgrade.test.ts +0 -86
  1933. package/src/usage/downgrade.ts +0 -88
  1934. package/src/usage/estimator.test.ts +0 -43
  1935. package/src/usage/estimator.ts +0 -58
  1936. package/src/usage/ledger.test.ts +0 -200
  1937. package/src/usage/ledger.ts +0 -253
  1938. package/src/usage/midstream.test.ts +0 -55
  1939. package/src/usage/midstream.ts +0 -51
  1940. package/src/usage/product-ledger.ts +0 -119
  1941. package/src/usage/thresholds.test.ts +0 -83
  1942. package/src/usage/thresholds.ts +0 -74
  1943. package/src/usage/types.ts +0 -41
  1944. package/src/utils/__tests__/auto-council-settings.test.ts +0 -46
  1945. package/src/utils/__tests__/ee-logger.test.ts +0 -197
  1946. package/src/utils/__tests__/file-lock.test.ts +0 -74
  1947. package/src/utils/__tests__/llm-deadline.test.ts +0 -64
  1948. package/src/utils/__tests__/rate-limit.test.ts +0 -42
  1949. package/src/utils/__tests__/settings-disabled-models.test.ts +0 -113
  1950. package/src/utils/__tests__/settings-web-research.test.ts +0 -45
  1951. package/src/utils/__tests__/slugify.test.ts +0 -45
  1952. package/src/utils/__tests__/visible-retry.test.ts +0 -195
  1953. package/src/utils/at-mentions.ts +0 -120
  1954. package/src/utils/clipboard-image.ts +0 -139
  1955. package/src/utils/ee-logger.ts +0 -163
  1956. package/src/utils/file-index.ts +0 -152
  1957. package/src/utils/file-lock.ts +0 -66
  1958. package/src/utils/git-root.ts +0 -17
  1959. package/src/utils/host-clipboard.ts +0 -68
  1960. package/src/utils/install-manager.test.ts +0 -167
  1961. package/src/utils/install-manager.ts +0 -429
  1962. package/src/utils/instructions.test.ts +0 -112
  1963. package/src/utils/instructions.ts +0 -149
  1964. package/src/utils/llm-deadline.ts +0 -80
  1965. package/src/utils/permission-mode.test.ts +0 -121
  1966. package/src/utils/permission-mode.ts +0 -94
  1967. package/src/utils/rate-limit.ts +0 -21
  1968. package/src/utils/redactor.test.ts +0 -100
  1969. package/src/utils/redactor.ts +0 -223
  1970. package/src/utils/settings.test.ts +0 -181
  1971. package/src/utils/settings.ts +0 -1163
  1972. package/src/utils/shell.test.ts +0 -102
  1973. package/src/utils/shell.ts +0 -204
  1974. package/src/utils/side-question.ts +0 -39
  1975. package/src/utils/skills.test.ts +0 -58
  1976. package/src/utils/skills.ts +0 -207
  1977. package/src/utils/slugify.ts +0 -9
  1978. package/src/utils/subagent-display.test.ts +0 -23
  1979. package/src/utils/subagent-display.ts +0 -11
  1980. package/src/utils/subagents-settings.test.ts +0 -84
  1981. package/src/utils/telegram-audio-settings.test.ts +0 -44
  1982. package/src/utils/update-checker.test.ts +0 -182
  1983. package/src/utils/update-checker.ts +0 -33
  1984. package/src/utils/visible-retry.ts +0 -56
  1985. package/src/verify/__tests__/coverage-parsers.test.ts +0 -86
  1986. package/src/verify/__tests__/dotnet-recipe.test.ts +0 -88
  1987. package/src/verify/checkpoint.test.ts +0 -186
  1988. package/src/verify/checkpoint.ts +0 -239
  1989. package/src/verify/coverage-parsers.ts +0 -76
  1990. package/src/verify/entrypoint.test.ts +0 -293
  1991. package/src/verify/entrypoint.ts +0 -495
  1992. package/src/verify/environment.test.ts +0 -119
  1993. package/src/verify/environment.ts +0 -115
  1994. package/src/verify/evidence.ts +0 -104
  1995. package/src/verify/orchestrator.test.ts +0 -159
  1996. package/src/verify/orchestrator.ts +0 -129
  1997. package/src/verify/recipes.ts +0 -592
  1998. package/src/verify/retry.ts +0 -62
  1999. package/src/verify/runtime-prep.test.ts +0 -47
  2000. /package/dist/src/{pil/layer16-clarity.test.d.ts → council/__tests__/clarification-prompt.test.d.ts} +0 -0
@@ -1,1691 +0,0 @@
1
- /**
2
- * init-new.ts — Scaffolds a new muonroi project with:
3
- * - <name>/server/ scaffolded via `dotnet new <bbTemplate.shortName>` (BE)
4
- * - <name>/client/ scaffolded with React or Angular + SemanticProvider wiring
5
- *
6
- * Phase 6 additions:
7
- * - detectDotnet(): spawnSync("dotnet", ["--version"]) check (task 6.1)
8
- * - detectBBTemplates(): parse `dotnet new list` for 3 template shortNames (task 6.2)
9
- * - installBBTemplates(): dotnet new install <pkgs> with NuGet-unreachable fallback (task 6.2)
10
- * - bbTemplate / eePackages on InitNewOptions (task 6.2b)
11
- * - dotnet-new scaffold path with Directory.Packages.props injection (task 6.3)
12
- * - OSS-only package filter, --commercial opt-in (task 6.4)
13
- * - EE-INTENT.md generation (task 6.5)
14
- *
15
- * Designed for testability: callers inject fs+exec via opts.fs to avoid
16
- * real I/O in unit tests. Only the smoke test uses real filesystem operations.
17
- */
18
-
19
- import { exec as nodeExec, spawnSync } from "node:child_process";
20
- import { existsSync, readdirSync, readFileSync } from "node:fs";
21
- import { mkdir as fsMkdir, writeFile as fsWriteFile } from "node:fs/promises";
22
- import * as path from "node:path";
23
- import { promisify } from "node:util";
24
-
25
- const execAsync = promisify(nodeExec);
26
-
27
- // ---------------------------------------------------------------------------
28
- // BB detection helper
29
- // ---------------------------------------------------------------------------
30
-
31
- /**
32
- * Detect whether a directory is a muonroi-building-block project.
33
- * Heuristic: presence of Directory.Build.props + *.sln + any src/Muonroi.* directory.
34
- * Returns "muonroi-building-block" when matched, undefined otherwise.
35
- */
36
- export function detectBBFramework(
37
- dirPath: string,
38
- fsOps?: { exists: (p: string) => boolean },
39
- ): "muonroi-building-block" | undefined {
40
- const checkExists = fsOps?.exists ?? ((p: string) => existsSync(p));
41
- const hasBuildProps = checkExists(path.join(dirPath, "Directory.Build.props"));
42
- if (!hasBuildProps) return undefined;
43
-
44
- // Check for any *.sln file in root
45
- const hasSlnFile = (() => {
46
- try {
47
- return readdirSync(dirPath).some((f) => f.endsWith(".sln"));
48
- } catch {
49
- return false;
50
- }
51
- })();
52
- if (!hasSlnFile) return undefined;
53
-
54
- // Check for src/Muonroi.* directory
55
- const srcPath = path.join(dirPath, "src");
56
- const hasMuonroiSrc = (() => {
57
- try {
58
- return readdirSync(srcPath).some((f) => f.startsWith("Muonroi."));
59
- } catch {
60
- return false;
61
- }
62
- })();
63
- if (!hasMuonroiSrc) return undefined;
64
-
65
- return "muonroi-building-block";
66
- }
67
-
68
- // ---------------------------------------------------------------------------
69
- // Dotnet detection helpers (task 6.1 + 6.2)
70
- // ---------------------------------------------------------------------------
71
-
72
- export interface BBTemplateInfo {
73
- shortName: string;
74
- nugetId: string;
75
- version: string;
76
- }
77
-
78
- /**
79
- * Known BB template package descriptors with pinned versions.
80
- * Update these constants when bumping to a newer published nupkg version on NuGet.org.
81
- * `userSettings.bbTemplateVersions` can override at runtime.
82
- *
83
- * `minSdkMajor` is the minimum dotnet SDK major version that ships a runtime
84
- * matching the template's embedded `<TargetFramework>`. Verified from NuGet
85
- * nuspec target frameworks 2026-05-19:
86
- * - Muonroi.BaseTemplate@1.0.0-alpha.3 → group targetFramework="net9.0"
87
- * - Muonroi.Modular.Template@1.10.0 → net8 LTS line (no nuspec TFM)
88
- * - Muonroi.Microservices.Template@1.10.0 → net8 LTS line (no nuspec TFM)
89
- * SDK 10 is forward-compatible with net8/9 targets, so users on SDK 10 can
90
- * install + scaffold all three; the floor is what blocks SDK 7 / 6.
91
- */
92
- export const BB_TEMPLATE_PACKAGES: ReadonlyArray<Omit<BBTemplateInfo, "shortName"> & { minSdkMajor: number }> = [
93
- { nugetId: "Muonroi.BaseTemplate", version: "1.0.0-alpha.3", minSdkMajor: 9 },
94
- { nugetId: "Muonroi.Modular.Template", version: "1.10.0", minSdkMajor: 8 },
95
- { nugetId: "Muonroi.Microservices.Template", version: "1.10.0", minSdkMajor: 8 },
96
- ];
97
-
98
- /** Parse "10.0.201" / "8.0.404" → 10 / 8. Returns null on garbage input. */
99
- export function parseDotnetMajor(version: string | null): number | null {
100
- if (!version) return null;
101
- const m = version.match(/^(\d+)\./);
102
- if (!m) return null;
103
- const n = Number.parseInt(m[1], 10);
104
- return Number.isFinite(n) ? n : null;
105
- }
106
-
107
- /** Look up the min SDK major for a given nugetId. Returns null if unknown. */
108
- export function getMinSdkMajor(nugetId: string): number | null {
109
- return BB_TEMPLATE_PACKAGES.find((p) => p.nugetId === nugetId)?.minSdkMajor ?? null;
110
- }
111
-
112
- /**
113
- * Maps NuGet package id → actual `dotnet new` shortName as registered by the
114
- * published template.json. Verified empirically against NuGet 2026-05-16:
115
- * Muonroi.BaseTemplate@1.0.0-alpha.3 → mr-base-sln
116
- * Muonroi.Modular.Template@1.10.0 → mr-mod-sln
117
- * Muonroi.Microservices.Template@1.10.0 → mr-micro-sln
118
- *
119
- * Note: each package also registers ancillary templates (e.g. tenant-service,
120
- * tenant-site-module). The CLI only consumes the *-sln entry points; the
121
- * ancillary templates are out-of-scope for /ideal scaffold.
122
- */
123
- const NUGET_TO_SHORTNAME: Record<string, string> = {
124
- "Muonroi.BaseTemplate": "mr-base-sln",
125
- "Muonroi.Modular.Template": "mr-mod-sln",
126
- "Muonroi.Microservices.Template": "mr-micro-sln",
127
- };
128
-
129
- /**
130
- * Reverse lookup: dotnet shortName → NuGet package id.
131
- * Used by `src/ee/bb-design.ts` to map an EE recipe's shortName back to
132
- * the canonical nugetId for `dotnet new install`.
133
- */
134
- export const SHORTNAME_TO_NUGET: Record<string, string> = Object.fromEntries(
135
- Object.entries(NUGET_TO_SHORTNAME).map(([k, v]) => [v, k]),
136
- );
137
-
138
- /**
139
- * Windows shells resolve `dotnet` to `dotnet.exe` via PATHEXT lookup, which
140
- * spawnSync only does when `shell: true` is passed. Without it, the
141
- * "command not found" branch fires even though `dotnet --version` works
142
- * fine in a terminal. POSIX shells don't need this flag.
143
- */
144
- const NEEDS_SHELL = process.platform === "win32";
145
-
146
- /**
147
- * Common dotnet install locations checked as a fallback when `dotnet --version`
148
- * via PATH fails. Some users have dotnet installed system-wide but the TUI
149
- * inherits a PATH from a shell where the install dir wasn't added (e.g. a
150
- * bare cmd.exe launched without the system profile loaded).
151
- */
152
- const fsExistsSync = existsSync;
153
-
154
- /**
155
- * Walks `root` recursively (depth-limited) to find the most likely "primary"
156
- * .csproj file — the one a user would target for `dotnet add package`.
157
- *
158
- * Empirically verified against published BB templates 2026-05-19 by manually
159
- * scaffolding into /tmp/muonroi-scaffold-test-851:
160
- * mr-micro-sln (Muonroi.Microservices.Template@1.10.0) →
161
- * - src/Gateways/<App>.Gateway/<App>.Gateway.csproj (Sdk="Web")
162
- * - src/Services/<App>.Catalog/<App>.Catalog.csproj (Sdk="Web")
163
- * - src/Services/<App>.Core/<App>.Core.csproj
164
- * - src/Services/<App>.Data/<App>.Data.csproj
165
- * mr-mod-sln (Muonroi.Modular.Template@1.10.0) →
166
- * - src/Host/<App>.Host/<App>.Host.csproj (Sdk="Web")
167
- * - src/Modules/Catalog/<App>.Modules.Catalog.csproj
168
- * - src/Modules/Identity/<App>.Modules.Identity.csproj
169
- * - src/Shared/<App>.Kernel/<App>.Kernel.csproj
170
- * - src/Shared/<App>.Shared/<App>.Shared.csproj
171
- *
172
- * Heuristic priority (highest first):
173
- * 1. Skip noise dirs (bin, obj, .git, node_modules, .vs, .vscode)
174
- * 2. Exclude test projects (.Tests / .Test / .Specs suffix)
175
- * 3. Prefer Web SDK csproj (Sdk="Microsoft.NET.Sdk.Web" inside <Project>)
176
- * 4. Within Web SDK group, prefer paths containing /Gateway/ or /Host/
177
- * (entry-project convention)
178
- * 5. Tie-break by shallowest depth, then alphabetical
179
- *
180
- * Returns absolute path or null if no csproj found under root.
181
- */
182
- export interface FindCsprojFs {
183
- readdir: (p: string) => Array<{ name: string; isDir: boolean; isFile: boolean }>;
184
- readFile: (p: string) => string;
185
- }
186
-
187
- const defaultFindCsprojFs: FindCsprojFs = {
188
- readdir: (p: string) =>
189
- readdirSync(p, { withFileTypes: true, encoding: "utf8" }).map((e) => ({
190
- name: String(e.name),
191
- isDir: e.isDirectory(),
192
- isFile: e.isFile(),
193
- })),
194
- readFile: (p: string) => readFileSync(p, "utf8"),
195
- };
196
-
197
- export function findPrimaryCsproj(
198
- root: string,
199
- maxDepth = 6,
200
- fsAdapter: FindCsprojFs = defaultFindCsprojFs,
201
- ): string | null {
202
- const skipDirs = new Set(["bin", "obj", ".git", "node_modules", ".vs", ".vscode"]);
203
- const candidates: Array<{
204
- absPath: string;
205
- depth: number;
206
- isTest: boolean;
207
- isWebSdk: boolean;
208
- isEntry: boolean;
209
- }> = [];
210
-
211
- function walk(dir: string, depth: number): void {
212
- if (depth > maxDepth) return;
213
- let entries: ReturnType<FindCsprojFs["readdir"]>;
214
- try {
215
- entries = fsAdapter.readdir(dir);
216
- } catch {
217
- return;
218
- }
219
- for (const e of entries) {
220
- if (e.isDir) {
221
- if (skipDirs.has(e.name)) continue;
222
- walk(path.join(dir, e.name), depth + 1);
223
- } else if (e.isFile && e.name.endsWith(".csproj")) {
224
- const stem = e.name.slice(0, -".csproj".length);
225
- const isTest = /\.(Tests?|Specs)$/i.test(stem);
226
- const absPath = path.join(dir, e.name);
227
- let isWebSdk = false;
228
- try {
229
- isWebSdk = /Sdk="Microsoft\.NET\.Sdk\.Web"/.test(fsAdapter.readFile(absPath));
230
- } catch {
231
- /* unreadable — leave as non-web */
232
- }
233
- const isEntry = /[/\\](Gateway|Host)s?[/\\]/i.test(absPath);
234
- candidates.push({ absPath, depth, isTest, isWebSdk, isEntry });
235
- }
236
- }
237
- }
238
- walk(root, 0);
239
-
240
- if (candidates.length === 0) return null;
241
- candidates.sort((a, b) => {
242
- if (a.isTest !== b.isTest) return a.isTest ? 1 : -1;
243
- if (a.isWebSdk !== b.isWebSdk) return a.isWebSdk ? -1 : 1;
244
- if (a.isEntry !== b.isEntry) return a.isEntry ? -1 : 1;
245
- if (a.depth !== b.depth) return a.depth - b.depth;
246
- return a.absPath.localeCompare(b.absPath);
247
- });
248
- return candidates[0]?.absPath ?? null;
249
- }
250
-
251
- function getDotnetFallbackPaths(): string[] {
252
- if (process.platform !== "win32") return ["/usr/local/share/dotnet/dotnet", "/usr/share/dotnet/dotnet"];
253
- const home = process.env.USERPROFILE ?? process.env.HOME ?? "";
254
- return [
255
- "C:\\Program Files\\dotnet\\dotnet.exe",
256
- "C:\\Program Files (x86)\\dotnet\\dotnet.exe",
257
- ...(home ? [path.join(home, ".dotnet", "dotnet.exe")] : []),
258
- ];
259
- }
260
-
261
- /**
262
- * Last-resolved absolute path to dotnet, when PATH-based lookup failed and we
263
- * had to fall back. Set by detectDotnet on success-via-fallback so callers
264
- * (installBBTemplates, `dotnet new`, `dotnet add package`, etc.) can re-use
265
- * the same binary instead of re-discovering on every spawn.
266
- */
267
- let _resolvedDotnetPath: string | null = null;
268
-
269
- /** Diagnostic — last spawn attempt result, for surfacing in errors. */
270
- let _lastDotnetDetectDiagnostic: string = "";
271
-
272
- /**
273
- * Task 6.1 — Detect dotnet SDK availability via spawnSync.
274
- * Returns the dotnet version string, or null if not found.
275
- *
276
- * Strategy:
277
- * 1. Try `dotnet --version` via PATH (with shell:true on Windows).
278
- * 2. If that fails, walk common install locations and call them directly
279
- * by absolute path. If any one returns version, remember it for reuse.
280
- * 3. On total failure, populate _lastDotnetDetectDiagnostic so the
281
- * "SDK not found" error can show the user *why* (status, stderr).
282
- */
283
- export function detectDotnet(): string | null {
284
- _resolvedDotnetPath = null;
285
- let pathDiag = "";
286
- try {
287
- const result = spawnSync("dotnet", ["--version"], {
288
- encoding: "utf8",
289
- timeout: 5000,
290
- shell: NEEDS_SHELL,
291
- });
292
- if (result.status === 0 && result.stdout) {
293
- return result.stdout.trim();
294
- }
295
- pathDiag =
296
- `PATH lookup: status=${result.status} ` +
297
- `stderr=${(result.stderr ?? "").trim().slice(0, 120) || "(empty)"} ` +
298
- `error=${result.error?.message ?? "(none)"}`;
299
- } catch (err) {
300
- pathDiag = `PATH lookup threw: ${err instanceof Error ? err.message : String(err)}`;
301
- }
302
-
303
- // Fallback — try absolute paths
304
- const fallbackTries: string[] = [];
305
- for (const candidate of getDotnetFallbackPaths()) {
306
- if (!fsExistsSync(candidate)) {
307
- fallbackTries.push(`${candidate}: not present`);
308
- continue;
309
- }
310
- try {
311
- const result = spawnSync(candidate, ["--version"], {
312
- encoding: "utf8",
313
- timeout: 5000,
314
- shell: false,
315
- });
316
- if (result.status === 0 && result.stdout) {
317
- _resolvedDotnetPath = candidate;
318
- _lastDotnetDetectDiagnostic = `${pathDiag} | fallback: ${candidate} ok`;
319
- return result.stdout.trim();
320
- }
321
- fallbackTries.push(`${candidate}: status=${result.status}`);
322
- } catch (err) {
323
- fallbackTries.push(`${candidate}: threw ${err instanceof Error ? err.message : String(err)}`);
324
- }
325
- }
326
-
327
- _lastDotnetDetectDiagnostic = `${pathDiag} | fallbacks: ${fallbackTries.join("; ")}`;
328
- return null;
329
- }
330
-
331
- /** Returns the absolute dotnet path discovered via fallback, or "dotnet" for normal PATH use. */
332
- export function getDotnetCommand(): string {
333
- return _resolvedDotnetPath ?? "dotnet";
334
- }
335
-
336
- /**
337
- * Whether to wrap spawnSync in a shell. We need shell:true on Windows ONLY when
338
- * relying on PATHEXT resolution of the literal "dotnet". When we have an
339
- * absolute resolved path (e.g. "C:\\Program Files\\dotnet\\dotnet.exe"), shell:true
340
- * triggers a quoting bug — cmd.exe splits the path at the first space and
341
- * fails with "'C:\\Program' is not recognized". Use shell:false in that case.
342
- */
343
- function dotnetSpawnShell(): boolean {
344
- return NEEDS_SHELL && _resolvedDotnetPath === null;
345
- }
346
-
347
- /** Test-only / diagnostic accessor. */
348
- export function getDotnetDiagnostic(): string {
349
- return _lastDotnetDetectDiagnostic;
350
- }
351
-
352
- /**
353
- * HEAD-check the NuGet flatcontainer index for a package id. Manually verified
354
- * 2026-05-19 against Muonroi.Ui.Engine.Mvc (404) vs Muonroi.AspNetCore (200):
355
- * each HEAD returns in 250-400ms vs the 5-10s timeout `dotnet add package`
356
- * suffers when a 404 is discovered mid-resolution.
357
- *
358
- * On any error (DNS, abort, offline) → returns true so the dotnet command
359
- * runs and reports the real error. Pre-validation is an optimization, not a
360
- * gate.
361
- */
362
- export async function isPackageOnNuGet(pkgId: string, timeoutMs = 3000): Promise<boolean> {
363
- const ctl = new AbortController();
364
- const timer = setTimeout(() => ctl.abort(), timeoutMs);
365
- try {
366
- const url = `https://api.nuget.org/v3-flatcontainer/${pkgId.toLowerCase()}/index.json`;
367
- const res = await fetch(url, { method: "HEAD", signal: ctl.signal });
368
- return res.ok;
369
- } catch {
370
- return true;
371
- } finally {
372
- clearTimeout(timer);
373
- }
374
- }
375
-
376
- /**
377
- * Task 6.2 — Detect which BB templates are installed by parsing `dotnet new list`.
378
- * Returns map of nugetId → shortName for installed templates.
379
- */
380
- export function detectInstalledBBTemplates(): Map<string, string> {
381
- const result = spawnSync(getDotnetCommand(), ["new", "list"], {
382
- encoding: "utf8",
383
- timeout: 15000,
384
- shell: dotnetSpawnShell(),
385
- });
386
- const installed = new Map<string, string>();
387
- if (result.status !== 0 || !result.stdout) return installed;
388
-
389
- const lines = result.stdout.split("\n");
390
- for (const [nugetId, expectedShort] of Object.entries(NUGET_TO_SHORTNAME)) {
391
- // Match by known shortName or NuGet id in the output
392
- const found = lines.some(
393
- (l) => l.toLowerCase().includes(expectedShort.toLowerCase()) || l.toLowerCase().includes(nugetId.toLowerCase()),
394
- );
395
- if (found) {
396
- installed.set(nugetId, expectedShort);
397
- }
398
- }
399
- return installed;
400
- }
401
-
402
- /**
403
- * Task 6.2 — Install BB dotnet templates from NuGet with pinned versions.
404
- * Returns true if install succeeded, false if NuGet unreachable.
405
- *
406
- * When `nugetIds` is provided, installs ONLY those packages (selective install
407
- * triggered by EE-driven BB design — Plan 23-01b). When omitted, installs all
408
- * `BB_TEMPLATE_PACKAGES` (back-compat for legacy callers and tests).
409
- *
410
- * Each package is installed individually as `Pkg@version` (canonical separator
411
- * since dotnet 8; `::` is deprecated in dotnet 9+) so a single failure (e.g.
412
- * one version yanked) does not abort the whole batch.
413
- *
414
- * Exit code 106 ("template package already installed") is treated as success —
415
- * the package being available is what we need, regardless of whether this call
416
- * installed it or it was already there.
417
- */
418
- export function installBBTemplates(nugetIds?: string[]): boolean {
419
- const targets =
420
- nugetIds && nugetIds.length > 0
421
- ? BB_TEMPLATE_PACKAGES.filter((p) => nugetIds.includes(p.nugetId))
422
- : BB_TEMPLATE_PACKAGES;
423
- let allOk = true;
424
- for (const pkg of targets) {
425
- const ref = pkg.version === "latest" ? pkg.nugetId : `${pkg.nugetId}@${pkg.version}`;
426
- const result = spawnSync(getDotnetCommand(), ["new", "install", ref], {
427
- encoding: "utf8",
428
- timeout: 60000,
429
- shell: dotnetSpawnShell(),
430
- });
431
- // Plan 23-fix: `dotnet new install` can print warnings about stale template
432
- // paths (e.g. `Failed to scan D:\Personal\Project\Foo`) and STILL succeed,
433
- // yet exit non-zero on some SDK builds. Treat any of the following as success:
434
- // - status === 0
435
- // - status === 106 (legacy "already installed" code)
436
- // - stdout contains "is already installed"
437
- // - stdout contains "Success:" (canonical success marker emitted before
438
- // the per-template summary table — present even when scan warnings fire)
439
- const stdout = result.stdout ?? "";
440
- const success =
441
- result.status === 0 ||
442
- result.status === 106 ||
443
- stdout.includes("is already installed") ||
444
- stdout.includes("Success:");
445
- if (!success) {
446
- process.stderr.write(`[init-new] dotnet new install failed (${ref}): ${result.stderr ?? "unknown error"}\n`);
447
- allOk = false;
448
- }
449
- }
450
- return allOk;
451
- }
452
-
453
- // ---------------------------------------------------------------------------
454
- // Public types
455
- // ---------------------------------------------------------------------------
456
-
457
- export interface InitNewOptions {
458
- /** Target directory name; created at projectsRoot (or cwd). */
459
- projectName: string;
460
- /** "react" | "angular" | "none" */
461
- feStack: "react" | "angular" | "none";
462
- /** Where to write the project. Defaults to process.cwd(). */
463
- projectsRoot?: string;
464
- /**
465
- * Task 6.2b / Plan 23-01b — BB template selection.
466
- * When absent → FE-only project (BE scaffold skipped entirely).
467
- * When provided → `dotnet new <shortName>` runs against the chosen template;
468
- * the template is auto-installed from NuGet if not already present.
469
- */
470
- bbTemplate?: BBTemplateInfo;
471
- /**
472
- * Task 6.2b — EE-recommended packages to inject into Directory.Packages.props.
473
- * OSS-only by default; commercial packages require explicit --commercial flag.
474
- */
475
- eePackages?: string[];
476
- /**
477
- * Task 6.4 — Allow commercial BB packages in the scaffold.
478
- * Defaults to false (OSS-only).
479
- */
480
- commercial?: boolean;
481
- /** Optional override: inject filesystem operations for testability. */
482
- fs?: {
483
- mkdir: (p: string) => Promise<void>;
484
- writeFile: (p: string, content: string) => Promise<void>;
485
- exec: (cmd: string, cwd: string) => Promise<{ stdout: string; stderr: string }>;
486
- exists: (p: string) => boolean;
487
- };
488
- /**
489
- * Diagnostic log callback. When provided, replaces direct `process.stderr.write`
490
- * which would bleed into the OpenTUI render buffer and corrupt the screen.
491
- * Called once per warning/non-fatal error. Receives a single line (no trailing newline).
492
- */
493
- onLog?: (line: string) => void;
494
- /**
495
- * Per-package progress callback during the `dotnet add package` loop. Lets the
496
- * TUI update its "running" step with the current package index/name instead of
497
- * appearing frozen for ~15s while 9 sequential NuGet lookups happen.
498
- */
499
- onPackageProgress?: (info: {
500
- index: number;
501
- total: number;
502
- pkgId: string;
503
- status: "start" | "ok" | "fail";
504
- error?: string;
505
- }) => void;
506
- /**
507
- * Plan 23-fix — Template-missing hook. Called BEFORE auto-installing a missing
508
- * BB template. Lets the TUI ask the user: install automatically, wait for
509
- * manual install + retry detection, or cancel. When omitted, auto-install
510
- * fires immediately (legacy behaviour).
511
- *
512
- * Return values:
513
- * "install" — run `dotnet new install <pkg>@<version>` then re-check
514
- * "wait-manual" — pause; caller re-checks `detectInstalledBBTemplates()`
515
- * and re-invokes the hook until it returns "install" or
516
- * "cancel". The hook implementation owns the wait loop.
517
- * "cancel" — abort scaffold; throw a clear "template not installed" error.
518
- */
519
- onTemplateMissing?: (info: {
520
- shortName: string;
521
- nugetId: string;
522
- version: string;
523
- }) => Promise<"install" | "wait-manual" | "cancel">;
524
- /** Plan 23-fix — Progress callback during `dotnet new install`. */
525
- onTemplateInstallProgress?: (info: { status: "start" | "ok" | "fail"; message?: string }) => void;
526
- }
527
-
528
- export interface InitNewResult {
529
- projectDir: string;
530
- /** Relative paths of files written (relative to projectDir). */
531
- files: string[];
532
- /** Whether the dotnet-template path ran successfully (false for FE-only projects). */
533
- usedDotnetTemplate?: boolean;
534
- /** Non-fatal warnings collected during scaffold (template install, package add, restore errors). */
535
- warnings?: string[];
536
- }
537
-
538
- // ---------------------------------------------------------------------------
539
- // Validation helpers
540
- // ---------------------------------------------------------------------------
541
-
542
- const VALID_NAME_RE = /^[a-z0-9]([a-z0-9-]*[a-z0-9])?$/i;
543
-
544
- function validateProjectName(name: string): void {
545
- if (!name || name.trim().length === 0) {
546
- throw new Error("Project name cannot be empty.");
547
- }
548
- if (name.includes("..") || name.includes("/") || name.includes("\\")) {
549
- throw new Error(`Project name "${name}" contains path traversal characters. Use a simple name like "my-app".`);
550
- }
551
- if (!VALID_NAME_RE.test(name)) {
552
- throw new Error(`Project name "${name}" is invalid. Use kebab-case alphanumeric only (e.g. "my-app", "project1").`);
553
- }
554
- }
555
-
556
- /**
557
- * Convert a kebab-case (or snake_case) project name to a .NET-style
558
- * PascalCase assembly/namespace prefix. Used for `dotnet new -n` so the
559
- * generated .csproj, .sln, and `namespace` declarations follow .NET
560
- * conventions, while the outer workspace folder + package.json keep the
561
- * user's kebab name.
562
- *
563
- * Example: "todo-app" → "TodoApp", "my_cool-svc" → "MyCoolSvc"
564
- */
565
- export function toDotNetAssemblyName(kebab: string): string {
566
- return kebab
567
- .split(/[-_]/)
568
- .filter(Boolean)
569
- .map((part) => part[0]!.toUpperCase() + part.slice(1).toLowerCase())
570
- .join("");
571
- }
572
-
573
- // ---------------------------------------------------------------------------
574
- // File templates
575
- // ---------------------------------------------------------------------------
576
-
577
- function rootPackageJson(projectName: string, hasClient: boolean): string {
578
- const workspaces = hasClient ? '["server", "client"]' : '["server"]';
579
- return JSON.stringify(
580
- {
581
- name: projectName,
582
- version: "0.1.0",
583
- private: true,
584
- workspaces: JSON.parse(workspaces),
585
- scripts: {
586
- dev: "bun run --filter='*' dev",
587
- build: "bun run --filter='*' build",
588
- test: "bun run --filter='*' test",
589
- },
590
- },
591
- null,
592
- 2,
593
- );
594
- }
595
-
596
- function reactClientPackageJson(projectName: string): string {
597
- return JSON.stringify(
598
- {
599
- name: `${projectName}-client`,
600
- version: "0.1.0",
601
- private: true,
602
- scripts: {
603
- dev: "vite",
604
- build: "vite build",
605
- test: "vitest run",
606
- },
607
- dependencies: {
608
- react: "^18.3.0",
609
- "react-dom": "^18.3.0",
610
- "@muonroi/agent-harness-react": "^0.1.0",
611
- },
612
- devDependencies: {
613
- "@types/react": "^18.3.0",
614
- "@types/react-dom": "^18.3.0",
615
- "@vitejs/plugin-react": "^4.3.0",
616
- vite: "^5.4.0",
617
- vitest: "^2.0.0",
618
- },
619
- },
620
- null,
621
- 2,
622
- );
623
- }
624
-
625
- function reactViteConfig(): string {
626
- return `import { defineConfig } from "vite";
627
- import react from "@vitejs/plugin-react";
628
-
629
- export default defineConfig({
630
- plugins: [react()],
631
- define: {
632
- __MUONROI_HARNESS__: JSON.stringify(process.env.NODE_ENV !== "production"),
633
- },
634
- });
635
- `;
636
- }
637
-
638
- function reactIndexHtml(projectName: string): string {
639
- return `<!doctype html>
640
- <html lang="en">
641
- <head>
642
- <meta charset="UTF-8" />
643
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
644
- <title>${projectName}</title>
645
- </head>
646
- <body>
647
- <div id="root"></div>
648
- <script type="module" src="/src/main.tsx"></script>
649
- </body>
650
- </html>
651
- `;
652
- }
653
-
654
- function reactMainTsx(): string {
655
- return `import { StrictMode } from "react";
656
- import { createRoot } from "react-dom/client";
657
- import { SemanticProvider, Semantic } from "@muonroi/agent-harness-react";
658
- import { createSemanticRegistry } from "@muonroi/agent-harness-core/registry";
659
- import { ErrorBoundary } ${"from"} "./components/ErrorBoundary";
660
- ${"import"} "./styles/app.css";
661
-
662
- const registry = createSemanticRegistry();
663
-
664
- createRoot(document.getElementById("root")!).render(
665
- <StrictMode>
666
- <SemanticProvider registry={registry}>
667
- <ErrorBoundary>
668
- <Semantic id="root" role="region" name="App root">
669
- {/* Your application components go here */}
670
- <h1>Hello from ${"{projectName}"}</h1>
671
- </Semantic>
672
- </ErrorBoundary>
673
- </SemanticProvider>
674
- </StrictMode>,
675
- );
676
- `;
677
- }
678
-
679
- function reactTsConfig(): string {
680
- return JSON.stringify(
681
- {
682
- compilerOptions: {
683
- target: "ES2022",
684
- useDefineForClassFields: true,
685
- lib: ["ES2022", "DOM", "DOM.Iterable"],
686
- module: "ESNext",
687
- skipLibCheck: true,
688
- moduleResolution: "bundler",
689
- allowImportingTsExtensions: true,
690
- resolveJsonModule: true,
691
- isolatedModules: true,
692
- noEmit: true,
693
- jsx: "react-jsx",
694
- strict: true,
695
- noUnusedLocals: true,
696
- noUnusedParameters: true,
697
- noFallthroughCasesInSwitch: true,
698
- types: ["vite/client"],
699
- },
700
- include: ["src"],
701
- },
702
- null,
703
- 2,
704
- );
705
- }
706
-
707
- function reactEnvExample(): string {
708
- return `# Copy to .env.local and edit. NEVER commit .env.local.
709
- VITE_API_BASE=http://localhost:5000
710
- `;
711
- }
712
-
713
- function reactGitignore(): string {
714
- return `node_modules/
715
- dist/
716
- .env
717
- .env.local
718
- .env.*.local
719
- *.log
720
- .vite/
721
- coverage/
722
- `;
723
- }
724
-
725
- function reactReadme(projectName: string): string {
726
- return `# ${projectName} — client
727
-
728
- React + Vite + TypeScript (strict) frontend wired to the agent harness via
729
- \`@muonroi/agent-harness-react\`.
730
-
731
- ## Setup
732
-
733
- \`\`\`bash
734
- bun install
735
- cp .env.example .env.local # then edit VITE_API_BASE
736
- bun run dev
737
- \`\`\`
738
-
739
- ## Layout
740
-
741
- - \`src/api/\` — typed HTTP client + DTO types (mirror server contracts)
742
- - \`src/components/\` — reusable UI (ErrorBoundary, Toast)
743
- - \`src/styles/\` — tokens + global reset
744
- - \`src/main.tsx\` — bootstrap (do NOT remove SemanticProvider)
745
-
746
- ## Conventions
747
-
748
- - Every async view has loading / empty / error states.
749
- - No inline \`style={{...}}\` — use CSS modules or tokens from \`styles/app.css\`.
750
- - API base lives in \`import.meta.env.VITE_API_BASE\`. Never hardcode URLs.
751
- - Wrap user-visible regions with \`<Semantic id role name>\` so harness specs can target them.
752
- `;
753
- }
754
-
755
- function reactApiClient(): string {
756
- return `/**
757
- * Typed HTTP client. Reads API base from \`VITE_API_BASE\` env var.
758
- * Never hardcode URLs in components — import this client.
759
- */
760
-
761
- const API_BASE: string = import.meta.env.VITE_API_BASE ?? "";
762
-
763
- if (!API_BASE) {
764
- // Surfaces during dev if VITE_API_BASE is missing from .env.local.
765
- console.warn("[api] VITE_API_BASE is empty — set it in .env.local");
766
- }
767
-
768
- export class ApiError extends Error {
769
- constructor(public readonly status: number, public readonly body: unknown, message: string) {
770
- super(message);
771
- this.name = "ApiError";
772
- }
773
- }
774
-
775
- interface RequestOptions {
776
- method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
777
- body?: unknown;
778
- signal?: AbortSignal;
779
- token?: string | null;
780
- }
781
-
782
- export async function apiFetch<T>(path: string, opts: RequestOptions = {}): Promise<T> {
783
- const headers: Record<string, string> = { "Content-Type": "application/json" };
784
- const token = opts.token ?? (typeof localStorage !== "undefined" ? localStorage.getItem("access_token") : null);
785
- if (token) headers.Authorization = \`Bearer \${token}\`;
786
-
787
- const res = await fetch(\`\${API_BASE}\${path}\`, {
788
- method: opts.method ?? "GET",
789
- headers,
790
- body: opts.body ? JSON.stringify(opts.body) : undefined,
791
- signal: opts.signal,
792
- });
793
-
794
- let body: unknown = null;
795
- const text = await res.text();
796
- if (text) {
797
- try {
798
- body = JSON.parse(text);
799
- } catch {
800
- body = text;
801
- }
802
- }
803
-
804
- if (!res.ok) {
805
- throw new ApiError(res.status, body, \`HTTP \${res.status} on \${opts.method ?? "GET"} \${path}\`);
806
- }
807
- return body as T;
808
- }
809
- `;
810
- }
811
-
812
- function reactApiTypes(): string {
813
- return `/**
814
- * API request/response DTOs. Mirror server-side contracts here so the
815
- * compiler catches contract drift early. Replace the placeholder once
816
- * you generate domain types.
817
- */
818
- export interface Envelope<T> {
819
- result: T;
820
- error?: string | null;
821
- }
822
-
823
- // EXAMPLE — delete or replace with your real DTOs.
824
- // export interface TodoDto {
825
- // id: string;
826
- // title: string;
827
- // isCompleted: boolean;
828
- // createdAt: string;
829
- // }
830
- export {};
831
- `;
832
- }
833
-
834
- function reactErrorBoundary(): string {
835
- return `import { Component, type ErrorInfo, type ReactNode } from "react";
836
-
837
- interface Props {
838
- children: ReactNode;
839
- fallback?: (error: Error) => ReactNode;
840
- }
841
-
842
- interface State {
843
- error: Error | null;
844
- }
845
-
846
- /**
847
- * Root-level error boundary. Catches uncaught render/effect errors and
848
- * shows a fallback instead of an unmounted blank page. Logs to console
849
- * for dev; replace the logger with your telemetry sink in prod.
850
- */
851
- export class ErrorBoundary extends Component<Props, State> {
852
- state: State = { error: null };
853
-
854
- static getDerivedStateFromError(error: Error): State {
855
- return { error };
856
- }
857
-
858
- componentDidCatch(error: Error, info: ErrorInfo): void {
859
- console.error("[ErrorBoundary]", error, info);
860
- }
861
-
862
- render(): ReactNode {
863
- if (this.state.error) {
864
- if (this.props.fallback) return this.props.fallback(this.state.error);
865
- return (
866
- <div role="alert" style={{ padding: "1rem", color: "var(--color-error, #b91c1c)" }}>
867
- <h2>Something went wrong</h2>
868
- <pre style={{ whiteSpace: "pre-wrap" }}>{this.state.error.message}</pre>
869
- </div>
870
- );
871
- }
872
- return this.props.children;
873
- }
874
- }
875
- `;
876
- }
877
-
878
- function reactAppCss(): string {
879
- return `:root {
880
- --color-bg: #ffffff;
881
- --color-fg: #111827;
882
- --color-muted: #6b7280;
883
- --color-primary: #2563eb;
884
- --color-primary-hover: #1d4ed8;
885
- --color-border: #e5e7eb;
886
- --color-error: #b91c1c;
887
- --color-success: #15803d;
888
- --space-1: 0.25rem;
889
- --space-2: 0.5rem;
890
- --space-3: 0.75rem;
891
- --space-4: 1rem;
892
- --space-6: 1.5rem;
893
- --space-8: 2rem;
894
- --radius: 0.5rem;
895
- --font-stack: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
896
- }
897
-
898
- @media (prefers-color-scheme: dark) {
899
- :root {
900
- --color-bg: #0b1220;
901
- --color-fg: #f3f4f6;
902
- --color-muted: #9ca3af;
903
- --color-border: #1f2937;
904
- }
905
- }
906
-
907
- * { box-sizing: border-box; }
908
- html, body, #root { height: 100%; }
909
- body {
910
- margin: 0;
911
- background: var(--color-bg);
912
- color: var(--color-fg);
913
- font-family: var(--font-stack);
914
- line-height: 1.5;
915
- }
916
- button { font: inherit; cursor: pointer; }
917
- input, textarea, select { font: inherit; }
918
- a { color: var(--color-primary); }
919
- `;
920
- }
921
-
922
- function angularClientPackageJson(projectName: string): string {
923
- return JSON.stringify(
924
- {
925
- name: `${projectName}-client`,
926
- version: "0.1.0",
927
- private: true,
928
- scripts: {
929
- dev: "ng serve",
930
- build: "ng build",
931
- test: "ng test --watch=false",
932
- },
933
- dependencies: {
934
- "@angular/core": "^18.0.0",
935
- "@angular/common": "^18.0.0",
936
- "@angular/platform-browser": "^18.0.0",
937
- "@muonroi/agent-harness-angular": "^0.1.0",
938
- },
939
- devDependencies: {
940
- "@angular/cli": "^18.0.0",
941
- "@angular/compiler-cli": "^18.0.0",
942
- typescript: "^5.4.0",
943
- },
944
- },
945
- null,
946
- 2,
947
- );
948
- }
949
-
950
- function angularMainTs(): string {
951
- return `import { bootstrapApplication } from "@angular/platform-browser";
952
- import { ErrorHandler } from "@angular/core";
953
- import { provideHttpClient } from "@angular/common/http";
954
- import { AppComponent } } ${"from"} "./app/app.component";
955
- ${"import"} { AppErrorHandler } ${"from"} "./app/error-handler";
956
- ${"import"} "./styles.css";
957
-
958
- bootstrapApplication(AppComponent, {
959
- providers: [
960
- provideHttpClient(),
961
- { provide: ErrorHandler, useClass: AppErrorHandler },
962
- ],
963
- }).catch((err) => console.error(err));
964
- `;
965
- }
966
-
967
- function angularAppComponentTs(projectName: string): string {
968
- return `import { Component } from "@angular/core";
969
- import { SemanticDirective } from "@muonroi/agent-harness-angular";
970
-
971
- @Component({
972
- selector: "app-root",
973
- standalone: true,
974
- imports: [SemanticDirective],
975
- template: \`
976
- <div muonroiSemantic id="root" role="region" name="App root">
977
- <!-- Your application components go here -->
978
- <h1>Hello from ${projectName}</h1>
979
- </div>
980
- \`,
981
- })
982
- export class AppComponent {}
983
- `;
984
- }
985
-
986
- function angularTsConfig(): string {
987
- return JSON.stringify(
988
- {
989
- compilerOptions: {
990
- target: "ES2022",
991
- module: "ES2022",
992
- lib: ["ES2022", "dom"],
993
- strict: true,
994
- noImplicitOverride: true,
995
- noPropertyAccessFromIndexSignature: true,
996
- noImplicitReturns: true,
997
- noFallthroughCasesInSwitch: true,
998
- experimentalDecorators: true,
999
- emitDecoratorMetadata: false,
1000
- moduleResolution: "bundler",
1001
- },
1002
- },
1003
- null,
1004
- 2,
1005
- );
1006
- }
1007
-
1008
- function angularEnvironmentTs(): string {
1009
- return `/**
1010
- * Build-time environment config. Angular CLI swaps this file with
1011
- * \`environment.prod.ts\` when building for production via fileReplacements
1012
- * in angular.json. Never hardcode API URLs in components — import this.
1013
- */
1014
- export const environment = {
1015
- production: false,
1016
- apiBase: "http://localhost:5000",
1017
- };
1018
- `;
1019
- }
1020
-
1021
- function angularEnvironmentProdTs(): string {
1022
- return `export const environment = {
1023
- production: true,
1024
- // Replaced at build time; set via your deploy pipeline.
1025
- apiBase: "",
1026
- };
1027
- `;
1028
- }
1029
-
1030
- function angularApiServiceTs(): string {
1031
- return `import { Injectable, inject } from "@angular/core";
1032
- import { HttpClient, HttpErrorResponse, HttpHeaders } from "@angular/common/http";
1033
- import { Observable, catchError, throwError } from "rxjs";
1034
- ${"import"} { environment } ${"from"} "../environments/environment";
1035
-
1036
- /**
1037
- * Typed HTTP client wrapper. Reads API base from environment.apiBase.
1038
- * Components must call methods on this service, never inject HttpClient
1039
- * directly, so URL configuration stays centralized.
1040
- */
1041
- export class ApiError extends Error {
1042
- constructor(public readonly status: number, public readonly body: unknown, message: string) {
1043
- super(message);
1044
- this.name = "ApiError";
1045
- }
1046
- }
1047
-
1048
- @Injectable({ providedIn: "root" })
1049
- export class ApiService {
1050
- private readonly http = inject(HttpClient);
1051
-
1052
- private headers(): HttpHeaders {
1053
- let h = new HttpHeaders({ "Content-Type": "application/json" });
1054
- const token =
1055
- typeof localStorage !== "undefined" ? localStorage.getItem("access_token") : null;
1056
- if (token) h = h.set("Authorization", \`Bearer \${token}\`);
1057
- return h;
1058
- }
1059
-
1060
- private wrap<T>(obs: Observable<T>): Observable<T> {
1061
- return obs.pipe(
1062
- catchError((err: HttpErrorResponse) =>
1063
- throwError(() => new ApiError(err.status, err.error, err.message)),
1064
- ),
1065
- );
1066
- }
1067
-
1068
- get<T>(path: string): Observable<T> {
1069
- return this.wrap(this.http.get<T>(\`\${environment.apiBase}\${path}\`, { headers: this.headers() }));
1070
- }
1071
-
1072
- post<T>(path: string, body: unknown): Observable<T> {
1073
- return this.wrap(
1074
- this.http.post<T>(\`\${environment.apiBase}\${path}\`, body, { headers: this.headers() }),
1075
- );
1076
- }
1077
-
1078
- put<T>(path: string, body: unknown): Observable<T> {
1079
- return this.wrap(
1080
- this.http.put<T>(\`\${environment.apiBase}\${path}\`, body, { headers: this.headers() }),
1081
- );
1082
- }
1083
-
1084
- delete<T>(path: string): Observable<T> {
1085
- return this.wrap(
1086
- this.http.delete<T>(\`\${environment.apiBase}\${path}\`, { headers: this.headers() }),
1087
- );
1088
- }
1089
- }
1090
- `;
1091
- }
1092
-
1093
- function angularErrorHandlerTs(): string {
1094
- return `import { ErrorHandler, Injectable } from "@angular/core";
1095
-
1096
- /**
1097
- * Root error handler. Replace the console sink with your telemetry
1098
- * provider in prod. Angular wires this via providers: [{ provide:
1099
- * ErrorHandler, useClass: AppErrorHandler }].
1100
- */
1101
- @Injectable({ providedIn: "root" })
1102
- export class AppErrorHandler implements ErrorHandler {
1103
- handleError(error: unknown): void {
1104
- console.error("[AppErrorHandler]", error);
1105
- }
1106
- }
1107
- `;
1108
- }
1109
-
1110
- function angularStylesCss(): string {
1111
- return `:root {
1112
- --color-bg: #ffffff;
1113
- --color-fg: #111827;
1114
- --color-muted: #6b7280;
1115
- --color-primary: #2563eb;
1116
- --color-primary-hover: #1d4ed8;
1117
- --color-border: #e5e7eb;
1118
- --color-error: #b91c1c;
1119
- --color-success: #15803d;
1120
- --space-1: 0.25rem;
1121
- --space-2: 0.5rem;
1122
- --space-3: 0.75rem;
1123
- --space-4: 1rem;
1124
- --space-6: 1.5rem;
1125
- --space-8: 2rem;
1126
- --radius: 0.5rem;
1127
- --font-stack: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
1128
- }
1129
-
1130
- @media (prefers-color-scheme: dark) {
1131
- :root {
1132
- --color-bg: #0b1220;
1133
- --color-fg: #f3f4f6;
1134
- --color-muted: #9ca3af;
1135
- --color-border: #1f2937;
1136
- }
1137
- }
1138
-
1139
- * { box-sizing: border-box; }
1140
- html, body { height: 100%; margin: 0; }
1141
- body {
1142
- background: var(--color-bg);
1143
- color: var(--color-fg);
1144
- font-family: var(--font-stack);
1145
- line-height: 1.5;
1146
- }
1147
- button { font: inherit; cursor: pointer; }
1148
- input, textarea, select { font: inherit; }
1149
- a { color: var(--color-primary); }
1150
- `;
1151
- }
1152
-
1153
- function angularGitignore(): string {
1154
- return `node_modules/
1155
- dist/
1156
- .angular/
1157
- .env
1158
- .env.local
1159
- *.log
1160
- coverage/
1161
- `;
1162
- }
1163
-
1164
- function angularReadme(projectName: string): string {
1165
- return `# ${projectName} — client
1166
-
1167
- Angular (standalone components) + agent harness via \`@muonroi/agent-harness-angular\`.
1168
-
1169
- ## Setup
1170
-
1171
- \`\`\`bash
1172
- bun install
1173
- bun run dev
1174
- \`\`\`
1175
-
1176
- Edit \`src/environments/environment.ts\` to point \`apiBase\` at your backend.
1177
-
1178
- ## Layout
1179
-
1180
- - \`src/api/\` — \`ApiService\` (typed HTTP) + DTO types
1181
- - \`src/environments/\` — env config (dev + prod). \`apiBase\` is the only URL knob.
1182
- - \`src/app/\` — components. Do NOT remove \`muonroiSemantic\` attributes.
1183
-
1184
- ## Conventions
1185
-
1186
- - Every async view has loading / empty / error states.
1187
- - API URLs come from \`environment.apiBase\`. Never hardcode.
1188
- - Wrap user-visible regions with \`[muonroiSemantic]\` so harness specs can target them.
1189
- - AppErrorHandler is wired via providers — extend it instead of console.error.
1190
- `;
1191
- }
1192
-
1193
- function angularApiTypes(): string {
1194
- return `/**
1195
- * API request/response DTOs. Mirror server-side contracts here so the
1196
- * compiler catches contract drift early.
1197
- */
1198
- export interface Envelope<T> {
1199
- result: T;
1200
- error?: string | null;
1201
- }
1202
- export {};
1203
- `;
1204
- }
1205
-
1206
- // ---------------------------------------------------------------------------
1207
- // Main scaffolder
1208
- // ---------------------------------------------------------------------------
1209
-
1210
- export async function initNewProject(opts: InitNewOptions): Promise<InitNewResult> {
1211
- const { projectName, feStack, projectsRoot } = opts;
1212
-
1213
- // 1. Validate project name.
1214
- validateProjectName(projectName);
1215
-
1216
- // 2. Resolve project directory.
1217
- const root = projectsRoot ?? process.cwd();
1218
- const projectDir = path.join(root, projectName);
1219
-
1220
- // Inject or use real fs/exec.
1221
- const fsOps = opts.fs ?? {
1222
- mkdir: (p: string) => fsMkdir(p, { recursive: true }),
1223
- writeFile: (p: string, content: string) => fsWriteFile(p, content, "utf-8"),
1224
- exec: (cmd: string, cwd: string) => execAsync(cmd, { cwd }),
1225
- exists: (p: string) => existsSync(p),
1226
- };
1227
-
1228
- // 3. Refuse if projectDir already exists.
1229
- if (fsOps.exists(projectDir)) {
1230
- throw new Error(`Project directory already exists: ${projectDir}`);
1231
- }
1232
-
1233
- const hasClient = feStack !== "none";
1234
- const filesWritten: string[] = [];
1235
- const warnings: string[] = [];
1236
- const logWarn = (line: string): void => {
1237
- warnings.push(line);
1238
- opts.onLog?.(line);
1239
- };
1240
-
1241
- // Helper to write and track. Ensures parent dir exists so nested paths
1242
- // (client/src/api/, client/src/components/, client/src/styles/,
1243
- // client/src/environments/) don't ENOENT when the step-4 mkdir list misses
1244
- // them. fsOps.mkdir defaults to recursive; idempotent on existing dirs.
1245
- async function write(relPath: string, content: string) {
1246
- const full = path.join(projectDir, relPath);
1247
- await fsOps.mkdir(path.dirname(full));
1248
- await fsOps.writeFile(full, content);
1249
- filesWritten.push(relPath);
1250
- }
1251
-
1252
- // 4. Create project directories.
1253
- await fsOps.mkdir(projectDir);
1254
- await fsOps.mkdir(path.join(projectDir, "server"));
1255
- if (hasClient) {
1256
- await fsOps.mkdir(path.join(projectDir, "client"));
1257
- await fsOps.mkdir(path.join(projectDir, "client", "src"));
1258
- if (feStack === "angular") {
1259
- await fsOps.mkdir(path.join(projectDir, "client", "src", "app"));
1260
- }
1261
- }
1262
-
1263
- // 5. Write root package.json.
1264
- await write("package.json", rootPackageJson(projectName, hasClient));
1265
-
1266
- // 6. Task 6.3 / Plan 23-01b — Scaffold BE source via `dotnet new <bbTemplate>`.
1267
- // Auto-installs the BB template from NuGet when not already present
1268
- // (selective: only the chosen template, via `installBBTemplates([nugetId])`).
1269
- // After scaffold + restore, runs `dotnet add package <id>` for each
1270
- // EE-recommended package so .csproj <PackageReference> entries are added
1271
- // by the SDK (Directory.Packages.props still pins versions when present).
1272
- // The legacy git-clone fallback has been retired (Plan 23-01b).
1273
- const serverDir = path.join(projectDir, "server");
1274
- let usedDotnetTemplate = false;
1275
-
1276
- if (opts.bbTemplate) {
1277
- const dotnetVersion = detectDotnet();
1278
- if (!dotnetVersion) {
1279
- const diag = getDotnetDiagnostic();
1280
- throw new Error(
1281
- `Scaffold failed: .NET SDK not found on PATH.\n` +
1282
- `→ Install .NET SDK 8.0 or 9.0 from https://dotnet.microsoft.com/download\n` +
1283
- ` (BB template ${opts.bbTemplate.shortName} requires SDK ${getMinSdkMajor(opts.bbTemplate.nugetId) ?? 8}+)\n` +
1284
- (diag ? ` diagnostic: ${diag}` : ""),
1285
- );
1286
- }
1287
- // Plan 23-XX — SDK version compatibility pre-flight.
1288
- const sdkMajor = parseDotnetMajor(dotnetVersion);
1289
- const required = getMinSdkMajor(opts.bbTemplate.nugetId);
1290
- if (sdkMajor !== null && required !== null && sdkMajor < required) {
1291
- throw new Error(
1292
- `Scaffold failed: .NET SDK ${dotnetVersion} is too old.\n` +
1293
- `→ Template ${opts.bbTemplate.shortName} (${opts.bbTemplate.nugetId}@${opts.bbTemplate.version}) requires SDK ${required}.0+ runtime.\n` +
1294
- ` Install SDK ${required}.0 from https://dotnet.microsoft.com/download/dotnet/${required}.0\n` +
1295
- ` Alternatively, pick a different template via the manual menu (Esc → select another template).`,
1296
- );
1297
- }
1298
- // Plan 23-01b — auto-install the chosen BB template from NuGet if missing.
1299
- // Plan 23-fix — when `onTemplateMissing` hook is provided, prompt the user
1300
- // before running `dotnet new install`. Hook can also signal that the user
1301
- // will install manually (we re-poll detection) or cancel outright.
1302
- {
1303
- let installed = detectInstalledBBTemplates();
1304
- if (!installed.has(opts.bbTemplate.nugetId)) {
1305
- let decision: "install" | "wait-manual" | "cancel" = "install";
1306
- if (opts.onTemplateMissing) {
1307
- decision = await opts.onTemplateMissing({
1308
- shortName: opts.bbTemplate.shortName,
1309
- nugetId: opts.bbTemplate.nugetId,
1310
- version: opts.bbTemplate.version,
1311
- });
1312
- }
1313
- if (decision === "cancel") {
1314
- throw new Error(
1315
- `Scaffold cancelled: template ${opts.bbTemplate.nugetId}@${opts.bbTemplate.version} is not installed.\n` +
1316
- `→ Install manually then retry:\n` +
1317
- ` dotnet new install ${opts.bbTemplate.nugetId}@${opts.bbTemplate.version}`,
1318
- );
1319
- }
1320
- if (decision === "wait-manual") {
1321
- // The UI is responsible for re-invoking init-new once the user
1322
- // signals install complete. Re-check detection one more time in case
1323
- // the hook implementation already waited; if still missing, bail out
1324
- // with the manual-install hint.
1325
- installed = detectInstalledBBTemplates();
1326
- if (!installed.has(opts.bbTemplate.nugetId)) {
1327
- throw new Error(
1328
- `Scaffold paused: template ${opts.bbTemplate.nugetId}@${opts.bbTemplate.version} still not installed after manual wait.\n` +
1329
- `→ Run:\n` +
1330
- ` dotnet new install ${opts.bbTemplate.nugetId}@${opts.bbTemplate.version}\n` +
1331
- ` then press Retry.`,
1332
- );
1333
- }
1334
- } else {
1335
- // decision === "install" — run auto-install.
1336
- opts.onTemplateInstallProgress?.({
1337
- status: "start",
1338
- message: `dotnet new install ${opts.bbTemplate.nugetId}@${opts.bbTemplate.version}`,
1339
- });
1340
- const ok = installBBTemplates([opts.bbTemplate.nugetId]);
1341
- if (!ok) {
1342
- opts.onTemplateInstallProgress?.({ status: "fail", message: "dotnet new install returned an error" });
1343
- logWarn(`[init-new] failed to install ${opts.bbTemplate.nugetId} from NuGet`);
1344
- // fall through to throw below (no clone fallback)
1345
- } else {
1346
- opts.onTemplateInstallProgress?.({ status: "ok" });
1347
- // Re-check after install. Some `dotnet new install` runs print
1348
- // warnings and return non-zero even though the template registered
1349
- // successfully — `installBBTemplates` would have reported false but
1350
- // the post-install detection is the source of truth.
1351
- installed = detectInstalledBBTemplates();
1352
- if (installed.has(opts.bbTemplate.nugetId)) {
1353
- logWarn(`[init-new] template ${opts.bbTemplate.nugetId} now installed (post-install detection)`);
1354
- }
1355
- }
1356
- }
1357
- }
1358
-
1359
- try {
1360
- // Task 6.3 — run: dotnet new <shortName> -n <name> -o <target>/server
1361
- // NOTE: do NOT pass --no-restore here. BB custom templates (e.g.
1362
- // mr-micro-sln) reject unknown flags with
1363
- // '--no-restore' is not a valid option
1364
- // breaking the scaffold. We do an explicit `dotnet restore` below
1365
- // anyway, so the template's auto-restore is harmless duplication.
1366
- const dotnetCmd = getDotnetCommand() === "dotnet" ? "dotnet" : JSON.stringify(getDotnetCommand());
1367
- // .NET assembly + namespace name must be PascalCase. Outer folder /
1368
- // package.json keep the kebab project name. C# cannot have dashes in
1369
- // namespaces, so a kebab here produces snake_case namespaces (bug).
1370
- const dotnetAssemblyName = toDotNetAssemblyName(projectName);
1371
- await fsOps.exec(
1372
- `${dotnetCmd} new ${opts.bbTemplate.shortName} -n ${dotnetAssemblyName} -o ${JSON.stringify(serverDir)}`,
1373
- root,
1374
- );
1375
-
1376
- // Task 6.3 — inject EE-recommended packages into Directory.Packages.props
1377
- // (pins versions; `dotnet add package` below adds the <PackageReference>
1378
- // entries to the .csproj without overriding those pins).
1379
- const propsPath = path.join(serverDir, "Directory.Packages.props");
1380
- if (opts.eePackages && opts.eePackages.length > 0 && fsOps.exists(propsPath)) {
1381
- await injectPackagesProps(propsPath, opts.eePackages, opts.commercial ?? false, fsOps);
1382
- filesWritten.push("server/Directory.Packages.props");
1383
- }
1384
-
1385
- // Task 6.3 — verify with dotnet restore --nologo
1386
- const restoreResult = await fsOps
1387
- .exec(`${dotnetCmd} restore --nologo`, serverDir)
1388
- .catch((e: unknown) => ({ stdout: "", stderr: String(e) }));
1389
- if (restoreResult.stderr?.includes("error")) {
1390
- logWarn(`[init-new] dotnet restore reported errors; continuing best-effort`);
1391
- } else {
1392
- usedDotnetTemplate = true;
1393
- }
1394
-
1395
- // Plan 23-01b — add each EE-recommended package via `dotnet add package`.
1396
- // BB solution templates (mr-micro-sln, mr-modular-sln) create nested
1397
- // structures under server/ — no .csproj sits directly in serverDir, so
1398
- // `dotnet add package` from serverDir fails with "Could not find any
1399
- // project". Discover the primary csproj first; skip the loop with a
1400
- // single warning if none is found instead of spamming N failures.
1401
- const targetCsproj = findPrimaryCsproj(serverDir);
1402
- if (!targetCsproj && (opts.eePackages?.length ?? 0) > 0) {
1403
- logWarn(
1404
- `[init-new] no .csproj found under ${serverDir} — skipping ${opts.eePackages?.length ?? 0} dotnet add package call(s). ` +
1405
- `Packages were still pinned in Directory.Packages.props if present.`,
1406
- );
1407
- }
1408
- // Single-package failures are logged but do NOT abort the scaffold.
1409
- if (targetCsproj) {
1410
- // Pre-validate against NuGet flatcontainer. Some EE-recommended
1411
- // packages (e.g. Muonroi.Ui.Engine.Mvc as of 2026-05-19) exist
1412
- // locally in source repos but haven't been published. A HEAD
1413
- // request takes <500ms vs a 5-10s timeout if dotnet add discovers
1414
- // the 404 itself. Verified manually: response time ~250-400ms,
1415
- // reliable 404 detection.
1416
- const pkgList = opts.eePackages ?? [];
1417
- const validatedList: string[] = [];
1418
- for (const pkgId of pkgList) {
1419
- const available = await isPackageOnNuGet(pkgId);
1420
- if (available) {
1421
- validatedList.push(pkgId);
1422
- } else {
1423
- logWarn(
1424
- `[init-new] package ${pkgId} not found on nuget.org — skipping (publish or use local nupkg source to include)`,
1425
- );
1426
- }
1427
- }
1428
- for (let i = 0; i < validatedList.length; i++) {
1429
- const pkgId = validatedList[i]!;
1430
- opts.onPackageProgress?.({ index: i + 1, total: validatedList.length, pkgId, status: "start" });
1431
- try {
1432
- // `--prerelease` is required because Muonroi.* packages currently
1433
- // ship only alpha versions on NuGet (manually verified 2026-05-19
1434
- // against Muonroi.AspNetCore@1.0.0-alpha.14, Muonroi.Governance@
1435
- // 1.0.0-alpha.14). Without the flag, dotnet errors:
1436
- // "There are no stable versions available, 1.0.0-alpha.14 is
1437
- // the best available. Consider adding the --prerelease option"
1438
- await fsOps.exec(
1439
- `${dotnetCmd} add ${JSON.stringify(targetCsproj)} package ${pkgId} --prerelease`,
1440
- serverDir,
1441
- );
1442
- filesWritten.push(path.relative(root, targetCsproj));
1443
- opts.onPackageProgress?.({ index: i + 1, total: validatedList.length, pkgId, status: "ok" });
1444
- } catch (e) {
1445
- const msg = e instanceof Error ? e.message : String(e);
1446
- logWarn(`[init-new] dotnet add package ${pkgId} failed: ${msg}`);
1447
- opts.onPackageProgress?.({
1448
- index: i + 1,
1449
- total: validatedList.length,
1450
- pkgId,
1451
- status: "fail",
1452
- error: msg,
1453
- });
1454
- }
1455
- }
1456
- }
1457
-
1458
- // Task 6.5 — Emit EE-INTENT.md
1459
- const eePackageList = opts.eePackages ?? [];
1460
- // Compute coverage: partial if any package not in eePackages list
1461
- const coverage = eePackageList.length > 0 ? "full" : "partial";
1462
- await write(
1463
- "server/EE-INTENT.md",
1464
- buildEEIntentMd({
1465
- projectName,
1466
- template: opts.bbTemplate,
1467
- eePackages: eePackageList,
1468
- coverage,
1469
- }),
1470
- );
1471
- } catch (err) {
1472
- logWarn(
1473
- `[init-new] dotnet new ${opts.bbTemplate.shortName} failed: ${err instanceof Error ? err.message : String(err)}`,
1474
- );
1475
- usedDotnetTemplate = false;
1476
- }
1477
- }
1478
- }
1479
-
1480
- if (!usedDotnetTemplate) {
1481
- if (opts.bbTemplate) {
1482
- const dotnetVersion = detectDotnet() ?? "(not detected)";
1483
- const sdkMajor = parseDotnetMajor(dotnetVersion);
1484
- const required = getMinSdkMajor(opts.bbTemplate.nugetId);
1485
- const installed = detectInstalledBBTemplates();
1486
- const templateInstalled = installed.has(opts.bbTemplate.nugetId);
1487
- const sdkTooOld = sdkMajor !== null && required !== null && sdkMajor < required;
1488
- // Plan 23-fix — distinguish the three real failure modes instead of
1489
- // unconditionally claiming the SDK is too old. The original bug surfaced
1490
- // on a machine running SDK 9.0.313 against a template requiring 9.0:
1491
- // the message said "requires SDK 9.0+; you have 9.0.313" which is
1492
- // self-contradictory.
1493
- let hint: string;
1494
- if (sdkTooOld) {
1495
- hint =
1496
- `→ Template ${opts.bbTemplate.shortName} requires .NET SDK ${required}.0+; you have ${dotnetVersion}.\n` +
1497
- ` Install SDK ${required}.0 from https://dotnet.microsoft.com/download/dotnet/${required}.0`;
1498
- } else if (!templateInstalled) {
1499
- hint =
1500
- `→ Template ${opts.bbTemplate.shortName} (${opts.bbTemplate.nugetId}@${opts.bbTemplate.version}) is not installed.\n` +
1501
- ` Install it manually then press Retry:\n` +
1502
- ` dotnet new install ${opts.bbTemplate.nugetId}@${opts.bbTemplate.version}\n` +
1503
- ` Verify NuGet feeds with: dotnet nuget list source`;
1504
- } else {
1505
- // Template is installed and SDK is new enough — the `dotnet new`
1506
- // invocation itself failed for another reason. Most common causes:
1507
- // restore conflict, locked output dir, project name collision.
1508
- hint =
1509
- `→ Template ${opts.bbTemplate.shortName} is installed but \`dotnet new\` failed.\n` +
1510
- ` Common causes: existing files in target dir, restore conflict, or assembly-name collision.\n` +
1511
- ` Run manually to see the underlying error:\n` +
1512
- ` dotnet new ${opts.bbTemplate.shortName} -n <Name> -o <dir>`;
1513
- }
1514
- throw new Error(`Scaffold failed: dotnet template ${opts.bbTemplate.shortName} could not be applied.\n${hint}`);
1515
- }
1516
- // No bbTemplate provided → FE-only project, skip BE scaffold entirely.
1517
- }
1518
-
1519
- // 7. Scaffold FE client.
1520
- if (feStack === "react") {
1521
- await write("client/package.json", reactClientPackageJson(projectName));
1522
- await write("client/vite.config.ts", reactViteConfig());
1523
- await write("client/tsconfig.json", reactTsConfig());
1524
- await write("client/.env.example", reactEnvExample());
1525
- await write("client/.gitignore", reactGitignore());
1526
- await write("client/README.md", reactReadme(projectName));
1527
- await write("client/index.html", reactIndexHtml(projectName));
1528
- await write("client/src/main.tsx", reactMainTsx());
1529
- await write("client/src/api/client.ts", reactApiClient());
1530
- await write("client/src/api/types.ts", reactApiTypes());
1531
- await write("client/src/components/ErrorBoundary.tsx", reactErrorBoundary());
1532
- await write("client/src/styles/app.css", reactAppCss());
1533
- } else if (feStack === "angular") {
1534
- await write("client/package.json", angularClientPackageJson(projectName));
1535
- await write("client/tsconfig.json", angularTsConfig());
1536
- await write("client/.gitignore", angularGitignore());
1537
- await write("client/README.md", angularReadme(projectName));
1538
- await write("client/src/styles.css", angularStylesCss());
1539
- await write("client/src/environments/environment.ts", angularEnvironmentTs());
1540
- await write("client/src/environments/environment.prod.ts", angularEnvironmentProdTs());
1541
- await write("client/src/api/api.service.ts", angularApiServiceTs());
1542
- await write("client/src/api/types.ts", angularApiTypes());
1543
- await write("client/src/app/error-handler.ts", angularErrorHandlerTs());
1544
- await write("client/src/main.ts", angularMainTs());
1545
- await write("client/src/app/app.component.ts", angularAppComponentTs(projectName));
1546
- }
1547
-
1548
- return { projectDir, files: filesWritten, usedDotnetTemplate, warnings: warnings.length > 0 ? warnings : undefined };
1549
- }
1550
-
1551
- // ---------------------------------------------------------------------------
1552
- // Task 6.3 — Directory.Packages.props injection helper
1553
- // Task 6.4 — OSS-only filter (commercial packages excluded unless flag set)
1554
- // ---------------------------------------------------------------------------
1555
-
1556
- /** Commercial BB package ids — excluded unless opts.commercial is true. */
1557
- const COMMERCIAL_PACKAGE_PREFIXES = [
1558
- "Muonroi.RuleEngine.CEP",
1559
- "Muonroi.Governance.Commercial",
1560
- "Muonroi.Infrastructure.Commercial",
1561
- ];
1562
-
1563
- function isCommercialPackage(pkgId: string): boolean {
1564
- return COMMERCIAL_PACKAGE_PREFIXES.some((prefix) => pkgId.startsWith(prefix));
1565
- }
1566
-
1567
- async function injectPackagesProps(
1568
- propsPath: string,
1569
- eePackages: string[],
1570
- commercial: boolean,
1571
- fsOps: {
1572
- writeFile: (p: string, content: string) => Promise<void>;
1573
- exists: (p: string) => boolean;
1574
- },
1575
- ): Promise<void> {
1576
- // Task 6.4 — filter out commercial packages unless flag is set
1577
- const filteredPackages = eePackages.filter((pkg) => commercial || !isCommercialPackage(pkg));
1578
- if (filteredPackages.length === 0) return;
1579
-
1580
- // Read current props content
1581
- let propsContent: string;
1582
- try {
1583
- const { readFileSync } = await import("node:fs");
1584
- propsContent = readFileSync(propsPath, "utf-8");
1585
- } catch {
1586
- propsContent = buildMinimalPackagesProps();
1587
- }
1588
-
1589
- // Use fast-xml-parser for safe XML round-trip (task 6.2c / 6.11)
1590
- // Dynamically import so tests can stub it
1591
- let updatedContent = propsContent;
1592
- try {
1593
- const { XMLParser, XMLBuilder } = await import("fast-xml-parser");
1594
- const parser = new XMLParser({
1595
- ignoreAttributes: false,
1596
- attributeNamePrefix: "@_",
1597
- isArray: (name) => name === "PackageVersion",
1598
- });
1599
- const builder = new XMLBuilder({
1600
- ignoreAttributes: false,
1601
- attributeNamePrefix: "@_",
1602
- format: true,
1603
- indentBy: " ",
1604
- });
1605
-
1606
- const parsed = parser.parse(propsContent) as {
1607
- Project?: {
1608
- PropertyGroup?: unknown;
1609
- ItemGroup?: {
1610
- PackageVersion?: Array<{ "@_Include": string; "@_Version": string }>;
1611
- };
1612
- };
1613
- };
1614
-
1615
- const project = parsed.Project ?? {};
1616
- const itemGroup = project.ItemGroup ?? {};
1617
- const existing: Array<{ "@_Include": string; "@_Version": string }> = itemGroup.PackageVersion ?? [];
1618
- const existingIds = new Set(existing.map((pv) => pv["@_Include"]));
1619
-
1620
- // Add missing EE-recommended packages
1621
- for (const pkg of filteredPackages) {
1622
- if (!existingIds.has(pkg)) {
1623
- existing.push({ "@_Include": pkg, "@_Version": "*" });
1624
- }
1625
- }
1626
- itemGroup.PackageVersion = existing;
1627
- project.ItemGroup = itemGroup;
1628
- parsed.Project = project;
1629
- updatedContent = builder.build(parsed) as string;
1630
- } catch {
1631
- // fast-xml-parser not available or parse failed — append raw entries as comment
1632
- const rawEntries = filteredPackages.map((pkg) => ` <PackageVersion Include="${pkg}" Version="*" />`).join("\n");
1633
- updatedContent = propsContent.replace(
1634
- "</Project>",
1635
- ` <!-- muonroi-cli:injected:ee-packages -->\n${rawEntries}\n <!-- /muonroi-cli:injected:ee-packages -->\n</Project>`,
1636
- );
1637
- }
1638
-
1639
- await fsOps.writeFile(propsPath, updatedContent);
1640
- }
1641
-
1642
- function buildMinimalPackagesProps(): string {
1643
- return `<Project>
1644
- <PropertyGroup>
1645
- <ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
1646
- </PropertyGroup>
1647
- <ItemGroup>
1648
- </ItemGroup>
1649
- </Project>`;
1650
- }
1651
-
1652
- // ---------------------------------------------------------------------------
1653
- // Task 6.5 — EE-INTENT.md builder
1654
- // ---------------------------------------------------------------------------
1655
-
1656
- interface EEIntentMdOpts {
1657
- projectName: string;
1658
- template: BBTemplateInfo;
1659
- eePackages: string[];
1660
- coverage: "full" | "partial";
1661
- }
1662
-
1663
- function buildEEIntentMd(opts: EEIntentMdOpts): string {
1664
- const date = new Date().toISOString().slice(0, 10);
1665
- const packageList = opts.eePackages.length > 0 ? opts.eePackages.map((p) => `- ${p}`).join("\n") : "_(none)_";
1666
- return `# EE-INTENT.md
1667
-
1668
- Generated by muonroi-cli on ${date}.
1669
-
1670
- ## Project
1671
- **Name:** ${opts.projectName}
1672
-
1673
- ## Template
1674
- **Package:** ${opts.template.nugetId}
1675
- **Short name:** ${opts.template.shortName}
1676
- **Version:** ${opts.template.version}
1677
-
1678
- ## EE-Recommended Packages
1679
- ${packageList}
1680
-
1681
- ## Coverage
1682
- **Status:** ${opts.coverage}
1683
- ${opts.coverage === "partial" ? "\n> Some recommended packages have weak EE coverage (< 0.70). Code-gen applied generic wiring only for low-coverage packages. Run `bun run ee:ingest-bb` to improve coverage.\n" : ""}
1684
-
1685
- ## Resume
1686
- To re-apply or fix scaffold issues interactively:
1687
- \`\`\`
1688
- /ideal --resume .
1689
- \`\`\`
1690
- `;
1691
- }