muonroi-cli 1.8.1 → 1.8.3

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 (971) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +122 -122
  3. package/dist/src/cli/cost-forensics.js +12 -12
  4. package/dist/src/council/prompts.js +20 -20
  5. package/dist/src/generated/version.d.ts +1 -1
  6. package/dist/src/generated/version.js +1 -1
  7. package/dist/src/mcp/oauth-callback.js +2 -2
  8. package/dist/src/mcp/setup-guide-text.d.ts +1 -1
  9. package/dist/src/mcp/setup-guide-text.js +76 -74
  10. package/dist/src/ops/doctor.js +7 -7
  11. package/dist/src/orchestrator/orchestrator.js +22 -13
  12. package/dist/src/orchestrator/prompts.js +159 -159
  13. package/dist/src/pil/layer1-intent.js +37 -37
  14. package/dist/src/pil/layer2_5-ponytail.js +8 -8
  15. package/dist/src/product-loop/done-gate.js +3 -3
  16. package/dist/src/product-loop/loop-driver.js +18 -18
  17. package/dist/src/product-loop/progress-snapshot.js +4 -4
  18. package/dist/src/providers/mcp-vision-bridge.js +48 -48
  19. package/dist/src/reporter/index.js +1 -1
  20. package/dist/src/scaffold/bb-ecosystem-apply.js +47 -47
  21. package/dist/src/scaffold/bb-quality-gate.js +5 -5
  22. package/dist/src/scaffold/continuation-prompt.js +60 -60
  23. package/dist/src/scaffold/init-new.js +453 -453
  24. package/dist/src/self-qa/agentic-loop.js +19 -19
  25. package/dist/src/storage/interaction-log.js +5 -5
  26. package/dist/src/storage/migrations.js +125 -125
  27. package/dist/src/storage/session-experience-store.js +4 -4
  28. package/dist/src/storage/sessions.js +43 -43
  29. package/dist/src/storage/transcript.js +100 -100
  30. package/dist/src/storage/usage.js +14 -14
  31. package/dist/src/storage/workspaces.js +12 -12
  32. package/dist/src/ui/slash/council-inspect.js +4 -4
  33. package/dist/src/utils/clipboard-image.js +23 -23
  34. package/dist/src/utils/install-manager.d.ts +1 -0
  35. package/dist/src/utils/install-manager.js +29 -0
  36. package/dist/src/utils/side-question.js +2 -2
  37. package/dist/src/utils/skills.js +3 -3
  38. package/dist/src/utils/update-checker.js +12 -2
  39. package/package.json +8 -1
  40. package/dist/src/__test-helpers__/catalog-fixtures.d.ts +0 -22
  41. package/dist/src/__test-helpers__/catalog-fixtures.js +0 -55
  42. package/dist/src/__test-stubs__/ee-server.d.ts +0 -27
  43. package/dist/src/__test-stubs__/ee-server.js +0 -138
  44. package/dist/src/__test-stubs__/vitest-setup.d.ts +0 -1
  45. package/dist/src/__test-stubs__/vitest-setup.js +0 -38
  46. package/dist/src/__tests__/council/bubble-layout.test.d.ts +0 -1
  47. package/dist/src/__tests__/council/bubble-layout.test.js +0 -39
  48. package/dist/src/__tests__/council/code-block-truncate.test.d.ts +0 -1
  49. package/dist/src/__tests__/council/code-block-truncate.test.js +0 -45
  50. package/dist/src/__tests__/council/role-palette.test.d.ts +0 -1
  51. package/dist/src/__tests__/council/role-palette.test.js +0 -59
  52. package/dist/src/__tests__/first-run-wizard.test.d.ts +0 -1
  53. package/dist/src/__tests__/first-run-wizard.test.js +0 -9
  54. package/dist/src/agent-harness/__tests__/cli-flags.spec.d.ts +0 -1
  55. package/dist/src/agent-harness/__tests__/cli-flags.spec.js +0 -33
  56. package/dist/src/agent-harness/__tests__/driver.spec.d.ts +0 -1
  57. package/dist/src/agent-harness/__tests__/driver.spec.js +0 -141
  58. package/dist/src/agent-harness/__tests__/idle.spec.d.ts +0 -1
  59. package/dist/src/agent-harness/__tests__/idle.spec.js +0 -84
  60. package/dist/src/agent-harness/__tests__/mock-llm.spec.d.ts +0 -1
  61. package/dist/src/agent-harness/__tests__/mock-llm.spec.js +0 -91
  62. package/dist/src/agent-harness/__tests__/mock-model.spec.d.ts +0 -5
  63. package/dist/src/agent-harness/__tests__/mock-model.spec.js +0 -270
  64. package/dist/src/agent-harness/__tests__/predicate.spec.d.ts +0 -1
  65. package/dist/src/agent-harness/__tests__/predicate.spec.js +0 -27
  66. package/dist/src/agent-harness/__tests__/protocol.spec.d.ts +0 -1
  67. package/dist/src/agent-harness/__tests__/protocol.spec.js +0 -56
  68. package/dist/src/agent-harness/__tests__/schema.spec.d.ts +0 -1
  69. package/dist/src/agent-harness/__tests__/schema.spec.js +0 -76
  70. package/dist/src/agent-harness/__tests__/selector.spec.d.ts +0 -1
  71. package/dist/src/agent-harness/__tests__/selector.spec.js +0 -70
  72. package/dist/src/agent-harness/__tests__/sidechannel.spec.d.ts +0 -1
  73. package/dist/src/agent-harness/__tests__/sidechannel.spec.js +0 -29
  74. package/dist/src/agent-harness/__tests__/spec-helpers.spec.d.ts +0 -1
  75. package/dist/src/agent-harness/__tests__/spec-helpers.spec.js +0 -68
  76. package/dist/src/chat/__tests__/broadcast-bus.test.d.ts +0 -1
  77. package/dist/src/chat/__tests__/broadcast-bus.test.js +0 -81
  78. package/dist/src/chat/__tests__/channel-manager.test.d.ts +0 -1
  79. package/dist/src/chat/__tests__/channel-manager.test.js +0 -133
  80. package/dist/src/chat/__tests__/client.test.d.ts +0 -1
  81. package/dist/src/chat/__tests__/client.test.js +0 -109
  82. package/dist/src/chat/__tests__/discord-integration.test.d.ts +0 -1
  83. package/dist/src/chat/__tests__/discord-integration.test.js +0 -153
  84. package/dist/src/chat/__tests__/intent-prompt.test.d.ts +0 -1
  85. package/dist/src/chat/__tests__/intent-prompt.test.js +0 -80
  86. package/dist/src/chat/__tests__/verdict-resolver.test.d.ts +0 -1
  87. package/dist/src/chat/__tests__/verdict-resolver.test.js +0 -308
  88. package/dist/src/cli/__tests__/bw-vault.test.d.ts +0 -1
  89. package/dist/src/cli/__tests__/bw-vault.test.js +0 -87
  90. package/dist/src/cli/__tests__/keys-bundle.test.d.ts +0 -1
  91. package/dist/src/cli/__tests__/keys-bundle.test.js +0 -40
  92. package/dist/src/cli/__tests__/share-cmd.test.d.ts +0 -1
  93. package/dist/src/cli/__tests__/share-cmd.test.js +0 -175
  94. package/dist/src/cli/config/__tests__/model-picker.test.d.ts +0 -1
  95. package/dist/src/cli/config/__tests__/model-picker.test.js +0 -56
  96. package/dist/src/cli/config/__tests__/provider-fetch.test.d.ts +0 -1
  97. package/dist/src/cli/config/__tests__/provider-fetch.test.js +0 -38
  98. package/dist/src/cli/cost-forensics.test.d.ts +0 -1
  99. package/dist/src/cli/cost-forensics.test.js +0 -223
  100. package/dist/src/cli/experience-report.test.d.ts +0 -5
  101. package/dist/src/cli/experience-report.test.js +0 -63
  102. package/dist/src/cli/keys.test.d.ts +0 -1
  103. package/dist/src/cli/keys.test.js +0 -86
  104. package/dist/src/council/__tests__/abort-threading.test.d.ts +0 -1
  105. package/dist/src/council/__tests__/abort-threading.test.js +0 -193
  106. package/dist/src/council/__tests__/accounting.test.d.ts +0 -1
  107. package/dist/src/council/__tests__/accounting.test.js +0 -66
  108. package/dist/src/council/__tests__/audit-replay.test.d.ts +0 -1
  109. package/dist/src/council/__tests__/audit-replay.test.js +0 -241
  110. package/dist/src/council/__tests__/clarification-prompt.test.d.ts +0 -1
  111. package/dist/src/council/__tests__/clarification-prompt.test.js +0 -71
  112. package/dist/src/council/__tests__/clarifier-max-rounds.test.d.ts +0 -1
  113. package/dist/src/council/__tests__/clarifier-max-rounds.test.js +0 -46
  114. package/dist/src/council/__tests__/clarifier-options.test.d.ts +0 -1
  115. package/dist/src/council/__tests__/clarifier-options.test.js +0 -54
  116. package/dist/src/council/__tests__/clarifier-ready-gate.test.d.ts +0 -1
  117. package/dist/src/council/__tests__/clarifier-ready-gate.test.js +0 -265
  118. package/dist/src/council/__tests__/cost-aware.test.d.ts +0 -1
  119. package/dist/src/council/__tests__/cost-aware.test.js +0 -49
  120. package/dist/src/council/__tests__/council-turn-length-emit.test.d.ts +0 -1
  121. package/dist/src/council/__tests__/council-turn-length-emit.test.js +0 -130
  122. package/dist/src/council/__tests__/debate-planner-structured.test.d.ts +0 -1
  123. package/dist/src/council/__tests__/debate-planner-structured.test.js +0 -209
  124. package/dist/src/council/__tests__/debate-round-budget.test.d.ts +0 -1
  125. package/dist/src/council/__tests__/debate-round-budget.test.js +0 -45
  126. package/dist/src/council/__tests__/decisions-lock.test.d.ts +0 -6
  127. package/dist/src/council/__tests__/decisions-lock.test.js +0 -352
  128. package/dist/src/council/__tests__/evaluator-metrics.test.d.ts +0 -1
  129. package/dist/src/council/__tests__/evaluator-metrics.test.js +0 -463
  130. package/dist/src/council/__tests__/oauth-reachable.test.d.ts +0 -1
  131. package/dist/src/council/__tests__/oauth-reachable.test.js +0 -31
  132. package/dist/src/council/__tests__/parse-outcome-fallback.test.d.ts +0 -1
  133. package/dist/src/council/__tests__/parse-outcome-fallback.test.js +0 -114
  134. package/dist/src/council/__tests__/post-debate-recommendation.test.d.ts +0 -1
  135. package/dist/src/council/__tests__/post-debate-recommendation.test.js +0 -58
  136. package/dist/src/council/__tests__/research-tools.test.d.ts +0 -1
  137. package/dist/src/council/__tests__/research-tools.test.js +0 -214
  138. package/dist/src/council/__tests__/round-tools.test.d.ts +0 -1
  139. package/dist/src/council/__tests__/round-tools.test.js +0 -306
  140. package/dist/src/council/__tests__/tool-trace.test.d.ts +0 -1
  141. package/dist/src/council/__tests__/tool-trace.test.js +0 -131
  142. package/dist/src/council/__tests__/types-contract.test.d.ts +0 -9
  143. package/dist/src/council/__tests__/types-contract.test.js +0 -82
  144. package/dist/src/council/clarifier-question-cap.test.d.ts +0 -12
  145. package/dist/src/council/clarifier-question-cap.test.js +0 -73
  146. package/dist/src/daemon/scheduler.test.d.ts +0 -1
  147. package/dist/src/daemon/scheduler.test.js +0 -103
  148. package/dist/src/ee/__tests__/bb-design.test.d.ts +0 -14
  149. package/dist/src/ee/__tests__/bb-design.test.js +0 -180
  150. package/dist/src/ee/__tests__/ee-onboarding.test.d.ts +0 -1
  151. package/dist/src/ee/__tests__/ee-onboarding.test.js +0 -32
  152. package/dist/src/ee/__tests__/export-transcripts.test.d.ts +0 -11
  153. package/dist/src/ee/__tests__/export-transcripts.test.js +0 -200
  154. package/dist/src/ee/__tests__/pil-context-bridge.test.d.ts +0 -1
  155. package/dist/src/ee/__tests__/pil-context-bridge.test.js +0 -54
  156. package/dist/src/ee/__tests__/pipeline.integration.test.d.ts +0 -14
  157. package/dist/src/ee/__tests__/pipeline.integration.test.js +0 -151
  158. package/dist/src/ee/__tests__/recall-format.test.d.ts +0 -10
  159. package/dist/src/ee/__tests__/recall-format.test.js +0 -57
  160. package/dist/src/ee/__tests__/recall-ledger.test.d.ts +0 -1
  161. package/dist/src/ee/__tests__/recall-ledger.test.js +0 -45
  162. package/dist/src/ee/__tests__/render-sink-wiring.test.d.ts +0 -1
  163. package/dist/src/ee/__tests__/render-sink-wiring.test.js +0 -74
  164. package/dist/src/ee/artifact-cache.test.d.ts +0 -1
  165. package/dist/src/ee/artifact-cache.test.js +0 -69
  166. package/dist/src/ee/auth.test.d.ts +0 -1
  167. package/dist/src/ee/auth.test.js +0 -59
  168. package/dist/src/ee/bridge.test.d.ts +0 -1
  169. package/dist/src/ee/bridge.test.js +0 -230
  170. package/dist/src/ee/client.test.d.ts +0 -1
  171. package/dist/src/ee/client.test.js +0 -181
  172. package/dist/src/ee/extract-session.test.d.ts +0 -1
  173. package/dist/src/ee/extract-session.test.js +0 -192
  174. package/dist/src/ee/intercept.test.d.ts +0 -1
  175. package/dist/src/ee/intercept.test.js +0 -171
  176. package/dist/src/ee/judge.test.d.ts +0 -1
  177. package/dist/src/ee/judge.test.js +0 -190
  178. package/dist/src/ee/mistake-detector.test.d.ts +0 -1
  179. package/dist/src/ee/mistake-detector.test.js +0 -221
  180. package/dist/src/ee/offline-queue.test.d.ts +0 -1
  181. package/dist/src/ee/offline-queue.test.js +0 -246
  182. package/dist/src/ee/phase-outcome.test.d.ts +0 -1
  183. package/dist/src/ee/phase-outcome.test.js +0 -94
  184. package/dist/src/ee/phase-tracker.test.d.ts +0 -1
  185. package/dist/src/ee/phase-tracker.test.js +0 -142
  186. package/dist/src/ee/posttool.test.d.ts +0 -1
  187. package/dist/src/ee/posttool.test.js +0 -70
  188. package/dist/src/ee/prompt-stale.test.d.ts +0 -8
  189. package/dist/src/ee/prompt-stale.test.js +0 -76
  190. package/dist/src/ee/recall-mirror.test.d.ts +0 -1
  191. package/dist/src/ee/recall-mirror.test.js +0 -65
  192. package/dist/src/ee/render.test.d.ts +0 -1
  193. package/dist/src/ee/render.test.js +0 -63
  194. package/dist/src/ee/scope.test.d.ts +0 -1
  195. package/dist/src/ee/scope.test.js +0 -97
  196. package/dist/src/ee/search.test.d.ts +0 -1
  197. package/dist/src/ee/search.test.js +0 -23
  198. package/dist/src/ee/session-trajectory.test.d.ts +0 -1
  199. package/dist/src/ee/session-trajectory.test.js +0 -120
  200. package/dist/src/ee/touch.test.d.ts +0 -1
  201. package/dist/src/ee/touch.test.js +0 -62
  202. package/dist/src/ee/who-am-i.test.d.ts +0 -1
  203. package/dist/src/ee/who-am-i.test.js +0 -101
  204. package/dist/src/flow/__tests__/migration.test.d.ts +0 -1
  205. package/dist/src/flow/__tests__/migration.test.js +0 -105
  206. package/dist/src/flow/__tests__/parser.test.d.ts +0 -1
  207. package/dist/src/flow/__tests__/parser.test.js +0 -68
  208. package/dist/src/flow/__tests__/run-manager-product.test.d.ts +0 -1
  209. package/dist/src/flow/__tests__/run-manager-product.test.js +0 -49
  210. package/dist/src/flow/__tests__/run-manager.test.d.ts +0 -1
  211. package/dist/src/flow/__tests__/run-manager.test.js +0 -83
  212. package/dist/src/flow/__tests__/scaffold-checkpoint.test.d.ts +0 -1
  213. package/dist/src/flow/__tests__/scaffold-checkpoint.test.js +0 -93
  214. package/dist/src/flow/__tests__/scaffold.test.d.ts +0 -1
  215. package/dist/src/flow/__tests__/scaffold.test.js +0 -47
  216. package/dist/src/flow/__tests__/warning-persist.test.d.ts +0 -5
  217. package/dist/src/flow/__tests__/warning-persist.test.js +0 -96
  218. package/dist/src/flow/compaction/__tests__/compress.test.d.ts +0 -1
  219. package/dist/src/flow/compaction/__tests__/compress.test.js +0 -63
  220. package/dist/src/flow/compaction/__tests__/extract.test.d.ts +0 -1
  221. package/dist/src/flow/compaction/__tests__/extract.test.js +0 -66
  222. package/dist/src/flow/compaction/__tests__/preserve.test.d.ts +0 -1
  223. package/dist/src/flow/compaction/__tests__/preserve.test.js +0 -62
  224. package/dist/src/gsd/__tests__/gray-areas.test.d.ts +0 -1
  225. package/dist/src/gsd/__tests__/gray-areas.test.js +0 -29
  226. package/dist/src/gsd/__tests__/types.test.d.ts +0 -1
  227. package/dist/src/gsd/__tests__/types.test.js +0 -78
  228. package/dist/src/headless/__tests__/council-answers.test.d.ts +0 -1
  229. package/dist/src/headless/__tests__/council-answers.test.js +0 -251
  230. package/dist/src/headless/output.test.d.ts +0 -1
  231. package/dist/src/headless/output.test.js +0 -239
  232. package/dist/src/lsp/builtins.test.d.ts +0 -1
  233. package/dist/src/lsp/builtins.test.js +0 -112
  234. package/dist/src/lsp/client-normalize.test.d.ts +0 -12
  235. package/dist/src/lsp/client-normalize.test.js +0 -34
  236. package/dist/src/lsp/manager.test.d.ts +0 -1
  237. package/dist/src/lsp/manager.test.js +0 -194
  238. package/dist/src/lsp/npm-cache.test.d.ts +0 -1
  239. package/dist/src/lsp/npm-cache.test.js +0 -53
  240. package/dist/src/lsp/smoke.test.d.ts +0 -1
  241. package/dist/src/lsp/smoke.test.js +0 -56
  242. package/dist/src/maintain/__tests__/codebase-intel.test.d.ts +0 -5
  243. package/dist/src/maintain/__tests__/codebase-intel.test.js +0 -237
  244. package/dist/src/maintain/__tests__/gh-create-pr.test.d.ts +0 -11
  245. package/dist/src/maintain/__tests__/gh-create-pr.test.js +0 -160
  246. package/dist/src/maintain/__tests__/pr-builder.test.d.ts +0 -10
  247. package/dist/src/maintain/__tests__/pr-builder.test.js +0 -229
  248. package/dist/src/maintain/__tests__/repo-map.test.d.ts +0 -5
  249. package/dist/src/maintain/__tests__/repo-map.test.js +0 -90
  250. package/dist/src/maintain/__tests__/task-runner.test.d.ts +0 -11
  251. package/dist/src/maintain/__tests__/task-runner.test.js +0 -281
  252. package/dist/src/mcp/__tests__/auto-setup.test.d.ts +0 -1
  253. package/dist/src/mcp/__tests__/auto-setup.test.js +0 -155
  254. package/dist/src/mcp/__tests__/cap-tool-result.test.d.ts +0 -1
  255. package/dist/src/mcp/__tests__/cap-tool-result.test.js +0 -58
  256. package/dist/src/mcp/__tests__/client-pool.spec.d.ts +0 -1
  257. package/dist/src/mcp/__tests__/client-pool.spec.js +0 -169
  258. package/dist/src/mcp/__tests__/ee-tools.test.d.ts +0 -1
  259. package/dist/src/mcp/__tests__/ee-tools.test.js +0 -226
  260. package/dist/src/mcp/__tests__/forensics-tools.test.d.ts +0 -1
  261. package/dist/src/mcp/__tests__/forensics-tools.test.js +0 -54
  262. package/dist/src/mcp/__tests__/harness-driver-action-tools.spec.d.ts +0 -1
  263. package/dist/src/mcp/__tests__/harness-driver-action-tools.spec.js +0 -103
  264. package/dist/src/mcp/__tests__/harness-driver-async-tools.spec.d.ts +0 -1
  265. package/dist/src/mcp/__tests__/harness-driver-async-tools.spec.js +0 -112
  266. package/dist/src/mcp/__tests__/harness-driver-read-tools.spec.d.ts +0 -1
  267. package/dist/src/mcp/__tests__/harness-driver-read-tools.spec.js +0 -124
  268. package/dist/src/mcp/__tests__/harness-driver-security.spec.d.ts +0 -1
  269. package/dist/src/mcp/__tests__/harness-driver-security.spec.js +0 -61
  270. package/dist/src/mcp/__tests__/harness-driver.spec.d.ts +0 -1
  271. package/dist/src/mcp/__tests__/harness-driver.spec.js +0 -20
  272. package/dist/src/mcp/__tests__/lazy-schema.spec.d.ts +0 -1
  273. package/dist/src/mcp/__tests__/lazy-schema.spec.js +0 -152
  274. package/dist/src/mcp/__tests__/lsp-tools.test.d.ts +0 -1
  275. package/dist/src/mcp/__tests__/lsp-tools.test.js +0 -56
  276. package/dist/src/mcp/__tests__/mcp-keychain.test.d.ts +0 -1
  277. package/dist/src/mcp/__tests__/mcp-keychain.test.js +0 -40
  278. package/dist/src/mcp/__tests__/parallel-build.spec.d.ts +0 -1
  279. package/dist/src/mcp/__tests__/parallel-build.spec.js +0 -67
  280. package/dist/src/mcp/__tests__/research-onboarding.test.d.ts +0 -1
  281. package/dist/src/mcp/__tests__/research-onboarding.test.js +0 -148
  282. package/dist/src/mcp/__tests__/runtime-hydration.test.d.ts +0 -1
  283. package/dist/src/mcp/__tests__/runtime-hydration.test.js +0 -78
  284. package/dist/src/mcp/__tests__/runtime-output-cap.test.d.ts +0 -1
  285. package/dist/src/mcp/__tests__/runtime-output-cap.test.js +0 -42
  286. package/dist/src/mcp/__tests__/runtime-sanitize.test.d.ts +0 -1
  287. package/dist/src/mcp/__tests__/runtime-sanitize.test.js +0 -40
  288. package/dist/src/mcp/__tests__/self-verify-jobs.test.d.ts +0 -1
  289. package/dist/src/mcp/__tests__/self-verify-jobs.test.js +0 -92
  290. package/dist/src/mcp/__tests__/smart-filter.test.d.ts +0 -1
  291. package/dist/src/mcp/__tests__/smart-filter.test.js +0 -177
  292. package/dist/src/mcp/__tests__/tools-server.smoke.test.d.ts +0 -1
  293. package/dist/src/mcp/__tests__/tools-server.smoke.test.js +0 -42
  294. package/dist/src/mcp/parse-headers.test.d.ts +0 -1
  295. package/dist/src/mcp/parse-headers.test.js +0 -43
  296. package/dist/src/mcp/smoke.test.d.ts +0 -1
  297. package/dist/src/mcp/smoke.test.js +0 -159
  298. package/dist/src/models/__tests__/registry.test.d.ts +0 -1
  299. package/dist/src/models/__tests__/registry.test.js +0 -74
  300. package/dist/src/models/catalog-gemini.test.d.ts +0 -1
  301. package/dist/src/models/catalog-gemini.test.js +0 -48
  302. package/dist/src/models/catalog-url.test.d.ts +0 -1
  303. package/dist/src/models/catalog-url.test.js +0 -26
  304. package/dist/src/models/catalog-validation.test.d.ts +0 -1
  305. package/dist/src/models/catalog-validation.test.js +0 -63
  306. package/dist/src/ops/__tests__/doctor-council-mcp.test.d.ts +0 -1
  307. package/dist/src/ops/__tests__/doctor-council-mcp.test.js +0 -139
  308. package/dist/src/ops/__tests__/doctor-ee-health.test.d.ts +0 -1
  309. package/dist/src/ops/__tests__/doctor-ee-health.test.js +0 -134
  310. package/dist/src/ops/bug-report.test.d.ts +0 -1
  311. package/dist/src/ops/bug-report.test.js +0 -148
  312. package/dist/src/ops/doctor.test.d.ts +0 -1
  313. package/dist/src/ops/doctor.test.js +0 -97
  314. package/dist/src/orchestrator/__tests__/agent-base-url-switch.test.d.ts +0 -1
  315. package/dist/src/orchestrator/__tests__/agent-base-url-switch.test.js +0 -77
  316. package/dist/src/orchestrator/__tests__/auto-commit.test.d.ts +0 -1
  317. package/dist/src/orchestrator/__tests__/auto-commit.test.js +0 -142
  318. package/dist/src/orchestrator/__tests__/batch-turn-runner.test.d.ts +0 -1
  319. package/dist/src/orchestrator/__tests__/batch-turn-runner.test.js +0 -164
  320. package/dist/src/orchestrator/__tests__/council-manager.test.d.ts +0 -1
  321. package/dist/src/orchestrator/__tests__/council-manager.test.js +0 -148
  322. package/dist/src/orchestrator/__tests__/cross-turn-dedup.test.d.ts +0 -1
  323. package/dist/src/orchestrator/__tests__/cross-turn-dedup.test.js +0 -175
  324. package/dist/src/orchestrator/__tests__/current-call-id.test.d.ts +0 -16
  325. package/dist/src/orchestrator/__tests__/current-call-id.test.js +0 -138
  326. package/dist/src/orchestrator/__tests__/delegations.test.d.ts +0 -1
  327. package/dist/src/orchestrator/__tests__/delegations.test.js +0 -96
  328. package/dist/src/orchestrator/__tests__/error-forensics.test.d.ts +0 -1
  329. package/dist/src/orchestrator/__tests__/error-forensics.test.js +0 -93
  330. package/dist/src/orchestrator/__tests__/flow-resume.test.d.ts +0 -5
  331. package/dist/src/orchestrator/__tests__/flow-resume.test.js +0 -61
  332. package/dist/src/orchestrator/__tests__/humanize-api-error.test.d.ts +0 -1
  333. package/dist/src/orchestrator/__tests__/humanize-api-error.test.js +0 -68
  334. package/dist/src/orchestrator/__tests__/mcp-capability-block.test.d.ts +0 -1
  335. package/dist/src/orchestrator/__tests__/mcp-capability-block.test.js +0 -39
  336. package/dist/src/orchestrator/__tests__/message-processor.test.d.ts +0 -1
  337. package/dist/src/orchestrator/__tests__/message-processor.test.js +0 -189
  338. package/dist/src/orchestrator/__tests__/message-write-ahead.test.d.ts +0 -22
  339. package/dist/src/orchestrator/__tests__/message-write-ahead.test.js +0 -149
  340. package/dist/src/orchestrator/__tests__/project-stack.test.d.ts +0 -1
  341. package/dist/src/orchestrator/__tests__/project-stack.test.js +0 -65
  342. package/dist/src/orchestrator/__tests__/prompts.test.d.ts +0 -1
  343. package/dist/src/orchestrator/__tests__/prompts.test.js +0 -88
  344. package/dist/src/orchestrator/__tests__/read-path-budget.test.d.ts +0 -1
  345. package/dist/src/orchestrator/__tests__/read-path-budget.test.js +0 -156
  346. package/dist/src/orchestrator/__tests__/retry-classifier.test.d.ts +0 -1
  347. package/dist/src/orchestrator/__tests__/retry-classifier.test.js +0 -112
  348. package/dist/src/orchestrator/__tests__/retry-stream.test.d.ts +0 -1
  349. package/dist/src/orchestrator/__tests__/retry-stream.test.js +0 -151
  350. package/dist/src/orchestrator/__tests__/route-feedback.test.d.ts +0 -1
  351. package/dist/src/orchestrator/__tests__/route-feedback.test.js +0 -47
  352. package/dist/src/orchestrator/__tests__/stream-runner.test.d.ts +0 -1
  353. package/dist/src/orchestrator/__tests__/stream-runner.test.js +0 -202
  354. package/dist/src/orchestrator/__tests__/sub-agent-model-tier.test.d.ts +0 -1
  355. package/dist/src/orchestrator/__tests__/sub-agent-model-tier.test.js +0 -45
  356. package/dist/src/orchestrator/__tests__/sub-session-delegation.test.d.ts +0 -1
  357. package/dist/src/orchestrator/__tests__/sub-session-delegation.test.js +0 -507
  358. package/dist/src/orchestrator/__tests__/usage-events-shape.test.d.ts +0 -8
  359. package/dist/src/orchestrator/__tests__/usage-events-shape.test.js +0 -58
  360. package/dist/src/orchestrator/__tests__/usage-normalizer-c1.test.d.ts +0 -21
  361. package/dist/src/orchestrator/__tests__/usage-normalizer-c1.test.js +0 -155
  362. package/dist/src/orchestrator/__tests__/usage-shape-threading.test.d.ts +0 -1
  363. package/dist/src/orchestrator/__tests__/usage-shape-threading.test.js +0 -98
  364. package/dist/src/orchestrator/__tests__/write-ahead.test.d.ts +0 -20
  365. package/dist/src/orchestrator/__tests__/write-ahead.test.js +0 -134
  366. package/dist/src/orchestrator/abort.test.d.ts +0 -1
  367. package/dist/src/orchestrator/abort.test.js +0 -34
  368. package/dist/src/orchestrator/agent.test.d.ts +0 -1
  369. package/dist/src/orchestrator/agent.test.js +0 -178
  370. package/dist/src/orchestrator/cleanup.test.d.ts +0 -1
  371. package/dist/src/orchestrator/cleanup.test.js +0 -67
  372. package/dist/src/orchestrator/compaction.test.d.ts +0 -1
  373. package/dist/src/orchestrator/compaction.test.js +0 -187
  374. package/dist/src/orchestrator/delegations.test.d.ts +0 -1
  375. package/dist/src/orchestrator/delegations.test.js +0 -107
  376. package/dist/src/orchestrator/grounding-check.test.d.ts +0 -1
  377. package/dist/src/orchestrator/grounding-check.test.js +0 -94
  378. package/dist/src/orchestrator/interrupted-turn.test.d.ts +0 -1
  379. package/dist/src/orchestrator/interrupted-turn.test.js +0 -34
  380. package/dist/src/orchestrator/message-seq.test.d.ts +0 -1
  381. package/dist/src/orchestrator/message-seq.test.js +0 -24
  382. package/dist/src/orchestrator/pending-calls.test.d.ts +0 -1
  383. package/dist/src/orchestrator/pending-calls.test.js +0 -188
  384. package/dist/src/orchestrator/provider-options-shape.spec.d.ts +0 -1
  385. package/dist/src/orchestrator/provider-options-shape.spec.js +0 -63
  386. package/dist/src/orchestrator/reasoning.test.d.ts +0 -1
  387. package/dist/src/orchestrator/reasoning.test.js +0 -101
  388. package/dist/src/orchestrator/repetition-detector.test.d.ts +0 -1
  389. package/dist/src/orchestrator/repetition-detector.test.js +0 -103
  390. package/dist/src/orchestrator/sandbox.test.d.ts +0 -1
  391. package/dist/src/orchestrator/sandbox.test.js +0 -99
  392. package/dist/src/orchestrator/scope-ceiling.test.d.ts +0 -13
  393. package/dist/src/orchestrator/scope-ceiling.test.js +0 -181
  394. package/dist/src/orchestrator/scope-reminder.test.d.ts +0 -15
  395. package/dist/src/orchestrator/scope-reminder.test.js +0 -225
  396. package/dist/src/orchestrator/session-experience.test.d.ts +0 -6
  397. package/dist/src/orchestrator/session-experience.test.js +0 -72
  398. package/dist/src/orchestrator/stall-rescue.test.d.ts +0 -1
  399. package/dist/src/orchestrator/stall-rescue.test.js +0 -117
  400. package/dist/src/orchestrator/stall-watchdog.test.d.ts +0 -1
  401. package/dist/src/orchestrator/stall-watchdog.test.js +0 -153
  402. package/dist/src/orchestrator/steer-inbox.test.d.ts +0 -1
  403. package/dist/src/orchestrator/steer-inbox.test.js +0 -33
  404. package/dist/src/orchestrator/sub-agent-cap.test.d.ts +0 -1
  405. package/dist/src/orchestrator/sub-agent-cap.test.js +0 -208
  406. package/dist/src/orchestrator/subagent-compactor.spec.d.ts +0 -1
  407. package/dist/src/orchestrator/subagent-compactor.spec.js +0 -636
  408. package/dist/src/orchestrator/text-tool-call-detector.test.d.ts +0 -1
  409. package/dist/src/orchestrator/text-tool-call-detector.test.js +0 -147
  410. package/dist/src/orchestrator/token-counter.test.d.ts +0 -1
  411. package/dist/src/orchestrator/token-counter.test.js +0 -57
  412. package/dist/src/orchestrator/tool-args-hash.test.d.ts +0 -1
  413. package/dist/src/orchestrator/tool-args-hash.test.js +0 -105
  414. package/dist/src/orchestrator/tool-args-repair.test.d.ts +0 -1
  415. package/dist/src/orchestrator/tool-args-repair.test.js +0 -136
  416. package/dist/src/orchestrator/tool-loop-askcard.test.d.ts +0 -1
  417. package/dist/src/orchestrator/tool-loop-askcard.test.js +0 -71
  418. package/dist/src/orchestrator/tool-loop-cap.test.d.ts +0 -1
  419. package/dist/src/orchestrator/tool-loop-cap.test.js +0 -176
  420. package/dist/src/orchestrator/tool-repetition-detector.test.d.ts +0 -1
  421. package/dist/src/orchestrator/tool-repetition-detector.test.js +0 -101
  422. package/dist/src/pil/__tests__/budget.test.d.ts +0 -1
  423. package/dist/src/pil/__tests__/budget.test.js +0 -33
  424. package/dist/src/pil/__tests__/clarity-gate.test.d.ts +0 -1
  425. package/dist/src/pil/__tests__/clarity-gate.test.js +0 -37
  426. package/dist/src/pil/__tests__/config.test.d.ts +0 -1
  427. package/dist/src/pil/__tests__/config.test.js +0 -57
  428. package/dist/src/pil/__tests__/discovery-cache.test.d.ts +0 -1
  429. package/dist/src/pil/__tests__/discovery-cache.test.js +0 -38
  430. package/dist/src/pil/__tests__/discovery-types.test.d.ts +0 -1
  431. package/dist/src/pil/__tests__/discovery-types.test.js +0 -65
  432. package/dist/src/pil/__tests__/discovery.test.d.ts +0 -1
  433. package/dist/src/pil/__tests__/discovery.test.js +0 -178
  434. package/dist/src/pil/__tests__/dual-run.test.d.ts +0 -1
  435. package/dist/src/pil/__tests__/dual-run.test.js +0 -51
  436. package/dist/src/pil/__tests__/layer1-intent-trace.test.d.ts +0 -1
  437. package/dist/src/pil/__tests__/layer1-intent-trace.test.js +0 -138
  438. package/dist/src/pil/__tests__/layer1-intent.test.d.ts +0 -1
  439. package/dist/src/pil/__tests__/layer1-intent.test.js +0 -329
  440. package/dist/src/pil/__tests__/layer15-context-scan.test.d.ts +0 -1
  441. package/dist/src/pil/__tests__/layer15-context-scan.test.js +0 -64
  442. package/dist/src/pil/__tests__/layer16-clarity.test.d.ts +0 -1
  443. package/dist/src/pil/__tests__/layer16-clarity.test.js +0 -72
  444. package/dist/src/pil/__tests__/layer17-feasibility.test.d.ts +0 -1
  445. package/dist/src/pil/__tests__/layer17-feasibility.test.js +0 -36
  446. package/dist/src/pil/__tests__/layer18-acceptance.test.d.ts +0 -1
  447. package/dist/src/pil/__tests__/layer18-acceptance.test.js +0 -18
  448. package/dist/src/pil/__tests__/layer2-personality.test.d.ts +0 -1
  449. package/dist/src/pil/__tests__/layer2-personality.test.js +0 -57
  450. package/dist/src/pil/__tests__/layer2_5-ponytail.test.d.ts +0 -1
  451. package/dist/src/pil/__tests__/layer2_5-ponytail.test.js +0 -53
  452. package/dist/src/pil/__tests__/layer3-ee-injection.test.d.ts +0 -1
  453. package/dist/src/pil/__tests__/layer3-ee-injection.test.js +0 -221
  454. package/dist/src/pil/__tests__/layer3-injected-chunk.test.d.ts +0 -1
  455. package/dist/src/pil/__tests__/layer3-injected-chunk.test.js +0 -134
  456. package/dist/src/pil/__tests__/layer4-gsd.test.d.ts +0 -1
  457. package/dist/src/pil/__tests__/layer4-gsd.test.js +0 -191
  458. package/dist/src/pil/__tests__/layer5-context.test.d.ts +0 -1
  459. package/dist/src/pil/__tests__/layer5-context.test.js +0 -175
  460. package/dist/src/pil/__tests__/layer6-output.test.d.ts +0 -1
  461. package/dist/src/pil/__tests__/layer6-output.test.js +0 -465
  462. package/dist/src/pil/__tests__/llm-classify.test.d.ts +0 -1
  463. package/dist/src/pil/__tests__/llm-classify.test.js +0 -275
  464. package/dist/src/pil/__tests__/native-capabilities-workbook.test.d.ts +0 -1
  465. package/dist/src/pil/__tests__/native-capabilities-workbook.test.js +0 -40
  466. package/dist/src/pil/__tests__/ollama-classify.test.d.ts +0 -1
  467. package/dist/src/pil/__tests__/ollama-classify.test.js +0 -68
  468. package/dist/src/pil/__tests__/orchestrator-integration.test.d.ts +0 -10
  469. package/dist/src/pil/__tests__/orchestrator-integration.test.js +0 -100
  470. package/dist/src/pil/__tests__/pipeline.test.d.ts +0 -1
  471. package/dist/src/pil/__tests__/pipeline.test.js +0 -188
  472. package/dist/src/pil/__tests__/renderer-coverage.test.d.ts +0 -7
  473. package/dist/src/pil/__tests__/renderer-coverage.test.js +0 -42
  474. package/dist/src/pil/__tests__/response-tools.test.d.ts +0 -1
  475. package/dist/src/pil/__tests__/response-tools.test.js +0 -242
  476. package/dist/src/pil/__tests__/schema.test.d.ts +0 -1
  477. package/dist/src/pil/__tests__/schema.test.js +0 -202
  478. package/dist/src/pil/__tests__/scoreComplexity.test.d.ts +0 -1
  479. package/dist/src/pil/__tests__/scoreComplexity.test.js +0 -119
  480. package/dist/src/pil/__tests__/scoreSufficiency.test.d.ts +0 -8
  481. package/dist/src/pil/__tests__/scoreSufficiency.test.js +0 -89
  482. package/dist/src/pil/__tests__/store.test.d.ts +0 -1
  483. package/dist/src/pil/__tests__/store.test.js +0 -44
  484. package/dist/src/pil/__tests__/surface-compaction-artifacts.test.d.ts +0 -1
  485. package/dist/src/pil/__tests__/surface-compaction-artifacts.test.js +0 -112
  486. package/dist/src/pil/__tests__/task-tier-map.test.d.ts +0 -1
  487. package/dist/src/pil/__tests__/task-tier-map.test.js +0 -33
  488. package/dist/src/pil/agent-operating-contract.test.d.ts +0 -1
  489. package/dist/src/pil/agent-operating-contract.test.js +0 -80
  490. package/dist/src/pil/cheap-model-playbook.test.d.ts +0 -1
  491. package/dist/src/pil/cheap-model-playbook.test.js +0 -160
  492. package/dist/src/pil/cheap-model-workbooks.test.d.ts +0 -1
  493. package/dist/src/pil/cheap-model-workbooks.test.js +0 -129
  494. package/dist/src/pil/layer1-intent.test.d.ts +0 -1
  495. package/dist/src/pil/layer1-intent.test.js +0 -764
  496. package/dist/src/pil/layer1_5-complexity-size.test.d.ts +0 -10
  497. package/dist/src/pil/layer1_5-complexity-size.test.js +0 -248
  498. package/dist/src/pil/session-experience-injection.test.d.ts +0 -6
  499. package/dist/src/pil/session-experience-injection.test.js +0 -79
  500. package/dist/src/pil/session-state.test.d.ts +0 -1
  501. package/dist/src/pil/session-state.test.js +0 -73
  502. package/dist/src/playbook/__tests__/directives.test.d.ts +0 -1
  503. package/dist/src/playbook/__tests__/directives.test.js +0 -115
  504. package/dist/src/product-loop/__tests__/artifact-io.test.d.ts +0 -1
  505. package/dist/src/product-loop/__tests__/artifact-io.test.js +0 -83
  506. package/dist/src/product-loop/__tests__/assumption-ledger.test.d.ts +0 -1
  507. package/dist/src/product-loop/__tests__/assumption-ledger.test.js +0 -261
  508. package/dist/src/product-loop/__tests__/backlog-builder.test.d.ts +0 -10
  509. package/dist/src/product-loop/__tests__/backlog-builder.test.js +0 -175
  510. package/dist/src/product-loop/__tests__/backlog-store.test.d.ts +0 -4
  511. package/dist/src/product-loop/__tests__/backlog-store.test.js +0 -96
  512. package/dist/src/product-loop/__tests__/cb2-retry-bonus.test.d.ts +0 -13
  513. package/dist/src/product-loop/__tests__/cb2-retry-bonus.test.js +0 -158
  514. package/dist/src/product-loop/__tests__/circuit-breakers-coverage.test.d.ts +0 -1
  515. package/dist/src/product-loop/__tests__/circuit-breakers-coverage.test.js +0 -67
  516. package/dist/src/product-loop/__tests__/circuit-breakers.test.d.ts +0 -1
  517. package/dist/src/product-loop/__tests__/circuit-breakers.test.js +0 -79
  518. package/dist/src/product-loop/__tests__/complexity-routing.spec.d.ts +0 -11
  519. package/dist/src/product-loop/__tests__/complexity-routing.spec.js +0 -240
  520. package/dist/src/product-loop/__tests__/context-policy.test.d.ts +0 -1
  521. package/dist/src/product-loop/__tests__/context-policy.test.js +0 -266
  522. package/dist/src/product-loop/__tests__/cost-preview.test.d.ts +0 -1
  523. package/dist/src/product-loop/__tests__/cost-preview.test.js +0 -111
  524. package/dist/src/product-loop/__tests__/cost-scoper.test.d.ts +0 -1
  525. package/dist/src/product-loop/__tests__/cost-scoper.test.js +0 -50
  526. package/dist/src/product-loop/__tests__/cross-run-memory.test.d.ts +0 -1
  527. package/dist/src/product-loop/__tests__/cross-run-memory.test.js +0 -168
  528. package/dist/src/product-loop/__tests__/design-output.spec.d.ts +0 -1
  529. package/dist/src/product-loop/__tests__/design-output.spec.js +0 -36
  530. package/dist/src/product-loop/__tests__/discover.test.d.ts +0 -1
  531. package/dist/src/product-loop/__tests__/discover.test.js +0 -83
  532. package/dist/src/product-loop/__tests__/discovery-context-format.test.d.ts +0 -13
  533. package/dist/src/product-loop/__tests__/discovery-context-format.test.js +0 -100
  534. package/dist/src/product-loop/__tests__/discovery-council-runner.test.d.ts +0 -1
  535. package/dist/src/product-loop/__tests__/discovery-council-runner.test.js +0 -13
  536. package/dist/src/product-loop/__tests__/discovery-detection.test.d.ts +0 -1
  537. package/dist/src/product-loop/__tests__/discovery-detection.test.js +0 -151
  538. package/dist/src/product-loop/__tests__/discovery-ecosystem.test.d.ts +0 -8
  539. package/dist/src/product-loop/__tests__/discovery-ecosystem.test.js +0 -209
  540. package/dist/src/product-loop/__tests__/discovery-integration.test.d.ts +0 -1
  541. package/dist/src/product-loop/__tests__/discovery-integration.test.js +0 -126
  542. package/dist/src/product-loop/__tests__/discovery-interview.test.d.ts +0 -1
  543. package/dist/src/product-loop/__tests__/discovery-interview.test.js +0 -394
  544. package/dist/src/product-loop/__tests__/discovery-migrations.test.d.ts +0 -1
  545. package/dist/src/product-loop/__tests__/discovery-migrations.test.js +0 -69
  546. package/dist/src/product-loop/__tests__/discovery-persistence.test.d.ts +0 -1
  547. package/dist/src/product-loop/__tests__/discovery-persistence.test.js +0 -146
  548. package/dist/src/product-loop/__tests__/discovery-prompt-parser.test.d.ts +0 -1
  549. package/dist/src/product-loop/__tests__/discovery-prompt-parser.test.js +0 -65
  550. package/dist/src/product-loop/__tests__/discovery-prompt-specificity.test.d.ts +0 -1
  551. package/dist/src/product-loop/__tests__/discovery-prompt-specificity.test.js +0 -55
  552. package/dist/src/product-loop/__tests__/discovery-recommender-ecosystem.test.d.ts +0 -9
  553. package/dist/src/product-loop/__tests__/discovery-recommender-ecosystem.test.js +0 -178
  554. package/dist/src/product-loop/__tests__/discovery-recommender.test.d.ts +0 -1
  555. package/dist/src/product-loop/__tests__/discovery-recommender.test.js +0 -316
  556. package/dist/src/product-loop/__tests__/discovery-schema.test.d.ts +0 -1
  557. package/dist/src/product-loop/__tests__/discovery-schema.test.js +0 -77
  558. package/dist/src/product-loop/__tests__/done-gate-coverage.test.d.ts +0 -1
  559. package/dist/src/product-loop/__tests__/done-gate-coverage.test.js +0 -135
  560. package/dist/src/product-loop/__tests__/done-gate.test.d.ts +0 -1
  561. package/dist/src/product-loop/__tests__/done-gate.test.js +0 -122
  562. package/dist/src/product-loop/__tests__/ee-extract-wiring.test.d.ts +0 -8
  563. package/dist/src/product-loop/__tests__/ee-extract-wiring.test.js +0 -186
  564. package/dist/src/product-loop/__tests__/extract-to-ee.test.d.ts +0 -1
  565. package/dist/src/product-loop/__tests__/extract-to-ee.test.js +0 -161
  566. package/dist/src/product-loop/__tests__/feedback-routing.test.d.ts +0 -1
  567. package/dist/src/product-loop/__tests__/feedback-routing.test.js +0 -83
  568. package/dist/src/product-loop/__tests__/gather-selectable-alts.test.d.ts +0 -15
  569. package/dist/src/product-loop/__tests__/gather-selectable-alts.test.js +0 -143
  570. package/dist/src/product-loop/__tests__/hot-path.spec.d.ts +0 -11
  571. package/dist/src/product-loop/__tests__/hot-path.spec.js +0 -146
  572. package/dist/src/product-loop/__tests__/integration.test.d.ts +0 -7
  573. package/dist/src/product-loop/__tests__/integration.test.js +0 -301
  574. package/dist/src/product-loop/__tests__/loop-driver-audit.test.d.ts +0 -1
  575. package/dist/src/product-loop/__tests__/loop-driver-audit.test.js +0 -269
  576. package/dist/src/product-loop/__tests__/loop-driver.test.d.ts +0 -1
  577. package/dist/src/product-loop/__tests__/loop-driver.test.js +0 -225
  578. package/dist/src/product-loop/__tests__/maintenance-task-synthesis.test.d.ts +0 -8
  579. package/dist/src/product-loop/__tests__/maintenance-task-synthesis.test.js +0 -67
  580. package/dist/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.d.ts +0 -13
  581. package/dist/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.js +0 -268
  582. package/dist/src/product-loop/__tests__/phase-a2-backlog-build.test.d.ts +0 -8
  583. package/dist/src/product-loop/__tests__/phase-a2-backlog-build.test.js +0 -162
  584. package/dist/src/product-loop/__tests__/phase-budget.test.d.ts +0 -1
  585. package/dist/src/product-loop/__tests__/phase-budget.test.js +0 -149
  586. package/dist/src/product-loop/__tests__/phase-orchestrator-integration.test.d.ts +0 -1
  587. package/dist/src/product-loop/__tests__/phase-orchestrator-integration.test.js +0 -138
  588. package/dist/src/product-loop/__tests__/phase-plan.test.d.ts +0 -1
  589. package/dist/src/product-loop/__tests__/phase-plan.test.js +0 -208
  590. package/dist/src/product-loop/__tests__/phase-rituals.test.d.ts +0 -1
  591. package/dist/src/product-loop/__tests__/phase-rituals.test.js +0 -174
  592. package/dist/src/product-loop/__tests__/phase-runner.test.d.ts +0 -1
  593. package/dist/src/product-loop/__tests__/phase-runner.test.js +0 -414
  594. package/dist/src/product-loop/__tests__/phase-tracker-bridge.test.d.ts +0 -1
  595. package/dist/src/product-loop/__tests__/phase-tracker-bridge.test.js +0 -67
  596. package/dist/src/product-loop/__tests__/pick-backend-stack.test.d.ts +0 -11
  597. package/dist/src/product-loop/__tests__/pick-backend-stack.test.js +0 -95
  598. package/dist/src/product-loop/__tests__/product-identity.test.d.ts +0 -1
  599. package/dist/src/product-loop/__tests__/product-identity.test.js +0 -40
  600. package/dist/src/product-loop/__tests__/progress-snapshot.test.d.ts +0 -8
  601. package/dist/src/product-loop/__tests__/progress-snapshot.test.js +0 -152
  602. package/dist/src/product-loop/__tests__/reality-anchor.test.d.ts +0 -1
  603. package/dist/src/product-loop/__tests__/reality-anchor.test.js +0 -49
  604. package/dist/src/product-loop/__tests__/repo-audit.test.d.ts +0 -1
  605. package/dist/src/product-loop/__tests__/repo-audit.test.js +0 -97
  606. package/dist/src/product-loop/__tests__/repo-brief.test.d.ts +0 -9
  607. package/dist/src/product-loop/__tests__/repo-brief.test.js +0 -132
  608. package/dist/src/product-loop/__tests__/role-memory.test.d.ts +0 -1
  609. package/dist/src/product-loop/__tests__/role-memory.test.js +0 -56
  610. package/dist/src/product-loop/__tests__/role-registry.test.d.ts +0 -1
  611. package/dist/src/product-loop/__tests__/role-registry.test.js +0 -222
  612. package/dist/src/product-loop/__tests__/role-routing-ee.test.d.ts +0 -1
  613. package/dist/src/product-loop/__tests__/role-routing-ee.test.js +0 -79
  614. package/dist/src/product-loop/__tests__/route-decision-emit.test.d.ts +0 -10
  615. package/dist/src/product-loop/__tests__/route-decision-emit.test.js +0 -222
  616. package/dist/src/product-loop/__tests__/seed-questions.test.d.ts +0 -1
  617. package/dist/src/product-loop/__tests__/seed-questions.test.js +0 -30
  618. package/dist/src/product-loop/__tests__/ship-polish.test.d.ts +0 -1
  619. package/dist/src/product-loop/__tests__/ship-polish.test.js +0 -96
  620. package/dist/src/product-loop/__tests__/sprint-planner.test.d.ts +0 -6
  621. package/dist/src/product-loop/__tests__/sprint-planner.test.js +0 -140
  622. package/dist/src/product-loop/__tests__/sprint-runner-backlog.test.d.ts +0 -8
  623. package/dist/src/product-loop/__tests__/sprint-runner-backlog.test.js +0 -221
  624. package/dist/src/product-loop/__tests__/sprint-runner-emit.test.d.ts +0 -14
  625. package/dist/src/product-loop/__tests__/sprint-runner-emit.test.js +0 -279
  626. package/dist/src/product-loop/__tests__/sprint-runner-phase-chunks.test.d.ts +0 -14
  627. package/dist/src/product-loop/__tests__/sprint-runner-phase-chunks.test.js +0 -193
  628. package/dist/src/product-loop/__tests__/sprint-runner.test.d.ts +0 -1
  629. package/dist/src/product-loop/__tests__/sprint-runner.test.js +0 -432
  630. package/dist/src/product-loop/__tests__/sprint-self-verify.test.d.ts +0 -8
  631. package/dist/src/product-loop/__tests__/sprint-self-verify.test.js +0 -73
  632. package/dist/src/product-loop/__tests__/sprint-store.test.d.ts +0 -7
  633. package/dist/src/product-loop/__tests__/sprint-store.test.js +0 -84
  634. package/dist/src/product-loop/__tests__/stakeholder-acl.test.d.ts +0 -1
  635. package/dist/src/product-loop/__tests__/stakeholder-acl.test.js +0 -83
  636. package/dist/src/product-loop/__tests__/state-md-ee-injections.test.d.ts +0 -8
  637. package/dist/src/product-loop/__tests__/state-md-ee-injections.test.js +0 -182
  638. package/dist/src/product-loop/__tests__/sufficiency-routing.spec.d.ts +0 -12
  639. package/dist/src/product-loop/__tests__/sufficiency-routing.spec.js +0 -140
  640. package/dist/src/product-loop/__tests__/typed-artifacts.test.d.ts +0 -1
  641. package/dist/src/product-loop/__tests__/typed-artifacts.test.js +0 -222
  642. package/dist/src/product-loop/__tests__/types.test.d.ts +0 -1
  643. package/dist/src/product-loop/__tests__/types.test.js +0 -79
  644. package/dist/src/product-loop/__tests__/verify-failure-threshold.test.d.ts +0 -9
  645. package/dist/src/product-loop/__tests__/verify-failure-threshold.test.js +0 -146
  646. package/dist/src/product-loop/__tests__/verify-failure-tracking.test.d.ts +0 -4
  647. package/dist/src/product-loop/__tests__/verify-failure-tracking.test.js +0 -122
  648. package/dist/src/product-loop/__tests__/verify-result.test.d.ts +0 -1
  649. package/dist/src/product-loop/__tests__/verify-result.test.js +0 -53
  650. package/dist/src/providers/__tests__/adapter-oauth-wiring.test.d.ts +0 -8
  651. package/dist/src/providers/__tests__/adapter-oauth-wiring.test.js +0 -125
  652. package/dist/src/providers/__tests__/capabilities-cosmetic.test.d.ts +0 -1
  653. package/dist/src/providers/__tests__/capabilities-cosmetic.test.js +0 -109
  654. package/dist/src/providers/__tests__/capabilities-flags.test.d.ts +0 -1
  655. package/dist/src/providers/__tests__/capabilities-flags.test.js +0 -145
  656. package/dist/src/providers/__tests__/capabilities-provider-options.test.d.ts +0 -1
  657. package/dist/src/providers/__tests__/capabilities-provider-options.test.js +0 -201
  658. package/dist/src/providers/__tests__/capabilities-sanitize.test.d.ts +0 -1
  659. package/dist/src/providers/__tests__/capabilities-sanitize.test.js +0 -60
  660. package/dist/src/providers/__tests__/capabilities.test.d.ts +0 -1
  661. package/dist/src/providers/__tests__/capabilities.test.js +0 -41
  662. package/dist/src/providers/__tests__/provider-coverage.test.d.ts +0 -1
  663. package/dist/src/providers/__tests__/provider-coverage.test.js +0 -45
  664. package/dist/src/providers/__tests__/reasoning-roundtrip.test.d.ts +0 -1
  665. package/dist/src/providers/__tests__/reasoning-roundtrip.test.js +0 -216
  666. package/dist/src/providers/__tests__/runtime-integration.test.d.ts +0 -1
  667. package/dist/src/providers/__tests__/runtime-integration.test.js +0 -93
  668. package/dist/src/providers/__tests__/runtime.test.d.ts +0 -1
  669. package/dist/src/providers/__tests__/runtime.test.js +0 -80
  670. package/dist/src/providers/__tests__/siliconflow-sse-repair.test.d.ts +0 -1
  671. package/dist/src/providers/__tests__/siliconflow-sse-repair.test.js +0 -267
  672. package/dist/src/providers/__tests__/strategies-registry.test.d.ts +0 -8
  673. package/dist/src/providers/__tests__/strategies-registry.test.js +0 -49
  674. package/dist/src/providers/__tests__/strategies-resolve.test.d.ts +0 -12
  675. package/dist/src/providers/__tests__/strategies-resolve.test.js +0 -128
  676. package/dist/src/providers/__tests__/wire-debug.test.d.ts +0 -1
  677. package/dist/src/providers/__tests__/wire-debug.test.js +0 -39
  678. package/dist/src/providers/adapter.test.d.ts +0 -1
  679. package/dist/src/providers/adapter.test.js +0 -19
  680. package/dist/src/providers/auth/__tests__/browser-flow.test.d.ts +0 -8
  681. package/dist/src/providers/auth/__tests__/browser-flow.test.js +0 -186
  682. package/dist/src/providers/auth/__tests__/device-flow.test.d.ts +0 -6
  683. package/dist/src/providers/auth/__tests__/device-flow.test.js +0 -219
  684. package/dist/src/providers/auth/__tests__/gemini-oauth.test.d.ts +0 -4
  685. package/dist/src/providers/auth/__tests__/gemini-oauth.test.js +0 -306
  686. package/dist/src/providers/auth/__tests__/grok-oauth.test.d.ts +0 -8
  687. package/dist/src/providers/auth/__tests__/grok-oauth.test.js +0 -236
  688. package/dist/src/providers/auth/__tests__/openai-oauth.test.d.ts +0 -7
  689. package/dist/src/providers/auth/__tests__/openai-oauth.test.js +0 -309
  690. package/dist/src/providers/auth/__tests__/token-store.test.d.ts +0 -7
  691. package/dist/src/providers/auth/__tests__/token-store.test.js +0 -125
  692. package/dist/src/providers/errors.test.d.ts +0 -1
  693. package/dist/src/providers/errors.test.js +0 -66
  694. package/dist/src/providers/gemini.test.d.ts +0 -1
  695. package/dist/src/providers/gemini.test.js +0 -37
  696. package/dist/src/providers/keychain.test.d.ts +0 -1
  697. package/dist/src/providers/keychain.test.js +0 -84
  698. package/dist/src/providers/mcp-vision-bridge.test.d.ts +0 -1
  699. package/dist/src/providers/mcp-vision-bridge.test.js +0 -381
  700. package/dist/src/providers/ollama.test.d.ts +0 -1
  701. package/dist/src/providers/ollama.test.js +0 -37
  702. package/dist/src/providers/openai-compatible.test.d.ts +0 -1
  703. package/dist/src/providers/openai-compatible.test.js +0 -53
  704. package/dist/src/providers/openai.test.d.ts +0 -1
  705. package/dist/src/providers/openai.test.js +0 -53
  706. package/dist/src/providers/pricing.test.d.ts +0 -1
  707. package/dist/src/providers/pricing.test.js +0 -81
  708. package/dist/src/providers/prompt-cache-key.spec.d.ts +0 -5
  709. package/dist/src/providers/prompt-cache-key.spec.js +0 -24
  710. package/dist/src/providers/runtime-mock.spec.d.ts +0 -8
  711. package/dist/src/providers/runtime-mock.spec.js +0 -69
  712. package/dist/src/providers/vision-proxy.test.d.ts +0 -1
  713. package/dist/src/providers/vision-proxy.test.js +0 -212
  714. package/dist/src/reporter/__tests__/acl-check.test.d.ts +0 -6
  715. package/dist/src/reporter/__tests__/acl-check.test.js +0 -59
  716. package/dist/src/reporter/__tests__/auto-fire.test.d.ts +0 -10
  717. package/dist/src/reporter/__tests__/auto-fire.test.js +0 -140
  718. package/dist/src/reporter/__tests__/budget.test.d.ts +0 -7
  719. package/dist/src/reporter/__tests__/budget.test.js +0 -60
  720. package/dist/src/reporter/__tests__/handlers.test.d.ts +0 -7
  721. package/dist/src/reporter/__tests__/handlers.test.js +0 -163
  722. package/dist/src/reporter/__tests__/query-router.test.d.ts +0 -6
  723. package/dist/src/reporter/__tests__/query-router.test.js +0 -90
  724. package/dist/src/router/__tests__/step-router.test.d.ts +0 -4
  725. package/dist/src/router/__tests__/step-router.test.js +0 -131
  726. package/dist/src/router/classifier/index.test.d.ts +0 -1
  727. package/dist/src/router/classifier/index.test.js +0 -29
  728. package/dist/src/router/classifier/regex.test.d.ts +0 -1
  729. package/dist/src/router/classifier/regex.test.js +0 -44
  730. package/dist/src/router/classifier/tree-sitter.test.d.ts +0 -1
  731. package/dist/src/router/classifier/tree-sitter.test.js +0 -23
  732. package/dist/src/router/cold.test.d.ts +0 -1
  733. package/dist/src/router/cold.test.js +0 -56
  734. package/dist/src/router/decide.test.d.ts +0 -1
  735. package/dist/src/router/decide.test.js +0 -198
  736. package/dist/src/router/health.test.d.ts +0 -1
  737. package/dist/src/router/health.test.js +0 -52
  738. package/dist/src/router/provider-sentinel.test.d.ts +0 -1
  739. package/dist/src/router/provider-sentinel.test.js +0 -20
  740. package/dist/src/router/role-override.test.d.ts +0 -1
  741. package/dist/src/router/role-override.test.js +0 -26
  742. package/dist/src/router/warm.test.d.ts +0 -1
  743. package/dist/src/router/warm.test.js +0 -202
  744. package/dist/src/scaffold/__tests__/continuation-prompt.test.d.ts +0 -4
  745. package/dist/src/scaffold/__tests__/continuation-prompt.test.js +0 -79
  746. package/dist/src/scaffold/__tests__/continue-as-council.spec.d.ts +0 -10
  747. package/dist/src/scaffold/__tests__/continue-as-council.spec.js +0 -102
  748. package/dist/src/scaffold/__tests__/dotnet-assembly-name.test.d.ts +0 -1
  749. package/dist/src/scaffold/__tests__/dotnet-assembly-name.test.js +0 -27
  750. package/dist/src/scaffold/__tests__/fe-scaffold-contents.test.d.ts +0 -1
  751. package/dist/src/scaffold/__tests__/fe-scaffold-contents.test.js +0 -106
  752. package/dist/src/scaffold/__tests__/init-new.smoke.spec.d.ts +0 -15
  753. package/dist/src/scaffold/__tests__/init-new.smoke.spec.js +0 -81
  754. package/dist/src/scaffold/__tests__/init-new.spec.d.ts +0 -5
  755. package/dist/src/scaffold/__tests__/init-new.spec.js +0 -378
  756. package/dist/src/scaffold/__tests__/install-bb-templates.spec.d.ts +0 -1
  757. package/dist/src/scaffold/__tests__/install-bb-templates.spec.js +0 -77
  758. package/dist/src/scaffold/__tests__/point-to-existing.spec.d.ts +0 -7
  759. package/dist/src/scaffold/__tests__/point-to-existing.spec.js +0 -94
  760. package/dist/src/self-qa/__tests__/agentic-context.test.d.ts +0 -1
  761. package/dist/src/self-qa/__tests__/agentic-context.test.js +0 -98
  762. package/dist/src/self-qa/__tests__/agentic-loop.test.d.ts +0 -1
  763. package/dist/src/self-qa/__tests__/agentic-loop.test.js +0 -62
  764. package/dist/src/self-qa/__tests__/delta-encoder.test.d.ts +0 -1
  765. package/dist/src/self-qa/__tests__/delta-encoder.test.js +0 -97
  766. package/dist/src/self-qa/__tests__/judge.test.d.ts +0 -1
  767. package/dist/src/self-qa/__tests__/judge.test.js +0 -131
  768. package/dist/src/self-qa/__tests__/scenario-planner.test.d.ts +0 -1
  769. package/dist/src/self-qa/__tests__/scenario-planner.test.js +0 -79
  770. package/dist/src/self-qa/__tests__/spec-emitter.test.d.ts +0 -1
  771. package/dist/src/self-qa/__tests__/spec-emitter.test.js +0 -62
  772. package/dist/src/storage/__tests__/hierarchical-session.test.d.ts +0 -1
  773. package/dist/src/storage/__tests__/hierarchical-session.test.js +0 -161
  774. package/dist/src/storage/__tests__/migrations.test.d.ts +0 -12
  775. package/dist/src/storage/__tests__/migrations.test.js +0 -357
  776. package/dist/src/storage/__tests__/sweep-stale-pending.test.d.ts +0 -10
  777. package/dist/src/storage/__tests__/sweep-stale-pending.test.js +0 -97
  778. package/dist/src/storage/__tests__/ui-interaction-log.test.d.ts +0 -7
  779. package/dist/src/storage/__tests__/ui-interaction-log.test.js +0 -127
  780. package/dist/src/storage/atomic-io.test.d.ts +0 -1
  781. package/dist/src/storage/atomic-io.test.js +0 -74
  782. package/dist/src/storage/config.test.d.ts +0 -1
  783. package/dist/src/storage/config.test.js +0 -29
  784. package/dist/src/storage/session-experience-store.test.d.ts +0 -5
  785. package/dist/src/storage/session-experience-store.test.js +0 -86
  786. package/dist/src/storage/tool-results.test.d.ts +0 -1
  787. package/dist/src/storage/tool-results.test.js +0 -48
  788. package/dist/src/storage/transcript-response-entry.test.d.ts +0 -1
  789. package/dist/src/storage/transcript-response-entry.test.js +0 -111
  790. package/dist/src/storage/transcript.test.d.ts +0 -1
  791. package/dist/src/storage/transcript.test.js +0 -22
  792. package/dist/src/storage/usage-cap.test.d.ts +0 -1
  793. package/dist/src/storage/usage-cap.test.js +0 -51
  794. package/dist/src/tools/__tests__/native-tools.test.d.ts +0 -1
  795. package/dist/src/tools/__tests__/native-tools.test.js +0 -59
  796. package/dist/src/tools/__tests__/vision-gate.test.d.ts +0 -1
  797. package/dist/src/tools/__tests__/vision-gate.test.js +0 -56
  798. package/dist/src/tools/bash-output-cache.test.d.ts +0 -1
  799. package/dist/src/tools/bash-output-cache.test.js +0 -89
  800. package/dist/src/tools/bash-output-integration.test.d.ts +0 -10
  801. package/dist/src/tools/bash-output-integration.test.js +0 -30
  802. package/dist/src/tools/bash.test.d.ts +0 -1
  803. package/dist/src/tools/bash.test.js +0 -90
  804. package/dist/src/tools/computer.test.d.ts +0 -1
  805. package/dist/src/tools/computer.test.js +0 -142
  806. package/dist/src/tools/file-tracker.test.d.ts +0 -1
  807. package/dist/src/tools/file-tracker.test.js +0 -77
  808. package/dist/src/tools/file.test.d.ts +0 -1
  809. package/dist/src/tools/file.test.js +0 -106
  810. package/dist/src/tools/git-safety.test.d.ts +0 -1
  811. package/dist/src/tools/git-safety.test.js +0 -155
  812. package/dist/src/tools/registry-bash-empty-command.test.d.ts +0 -13
  813. package/dist/src/tools/registry-bash-empty-command.test.js +0 -57
  814. package/dist/src/tools/registry-bash-footer.test.d.ts +0 -7
  815. package/dist/src/tools/registry-bash-footer.test.js +0 -82
  816. package/dist/src/tools/registry-ee-query.test.d.ts +0 -11
  817. package/dist/src/tools/registry-ee-query.test.js +0 -71
  818. package/dist/src/tools/registry-git-safety.test.d.ts +0 -7
  819. package/dist/src/tools/registry-git-safety.test.js +0 -103
  820. package/dist/src/tools/registry-session-repeat.test.d.ts +0 -12
  821. package/dist/src/tools/registry-session-repeat.test.js +0 -87
  822. package/dist/src/tools/registry.test.d.ts +0 -1
  823. package/dist/src/tools/registry.test.js +0 -34
  824. package/dist/src/tools/schedule.test.d.ts +0 -1
  825. package/dist/src/tools/schedule.test.js +0 -118
  826. package/dist/src/tools/todo-write-snapshot.test.d.ts +0 -1
  827. package/dist/src/tools/todo-write-snapshot.test.js +0 -43
  828. package/dist/src/ui/__tests__/markdown-render.test.d.ts +0 -1
  829. package/dist/src/ui/__tests__/markdown-render.test.js +0 -65
  830. package/dist/src/ui/__tests__/picker-providers.test.d.ts +0 -1
  831. package/dist/src/ui/__tests__/picker-providers.test.js +0 -31
  832. package/dist/src/ui/cards/__tests__/product-status-card.test.d.ts +0 -1
  833. package/dist/src/ui/cards/__tests__/product-status-card.test.js +0 -27
  834. package/dist/src/ui/components/__tests__/council-leader-bubble.test.d.ts +0 -1
  835. package/dist/src/ui/components/__tests__/council-leader-bubble.test.js +0 -14
  836. package/dist/src/ui/components/__tests__/council-message-bubble.test.d.ts +0 -1
  837. package/dist/src/ui/components/__tests__/council-message-bubble.test.js +0 -74
  838. package/dist/src/ui/components/__tests__/council-phase-timeline.test.d.ts +0 -1
  839. package/dist/src/ui/components/__tests__/council-phase-timeline.test.js +0 -51
  840. package/dist/src/ui/components/__tests__/council-placeholder-bubble.test.d.ts +0 -1
  841. package/dist/src/ui/components/__tests__/council-placeholder-bubble.test.js +0 -14
  842. package/dist/src/ui/components/__tests__/council-question-card.test.d.ts +0 -1
  843. package/dist/src/ui/components/__tests__/council-question-card.test.js +0 -121
  844. package/dist/src/ui/components/__tests__/council-synthesis-banner.test.d.ts +0 -1
  845. package/dist/src/ui/components/__tests__/council-synthesis-banner.test.js +0 -11
  846. package/dist/src/ui/components/__tests__/task-list-panel.test.d.ts +0 -1
  847. package/dist/src/ui/components/__tests__/task-list-panel.test.js +0 -31
  848. package/dist/src/ui/components/__tests__/use-pair-quote-buffer.test.d.ts +0 -1
  849. package/dist/src/ui/components/__tests__/use-pair-quote-buffer.test.js +0 -37
  850. package/dist/src/ui/slash/__tests__/clear.test.d.ts +0 -1
  851. package/dist/src/ui/slash/__tests__/clear.test.js +0 -58
  852. package/dist/src/ui/slash/__tests__/compact.test.d.ts +0 -1
  853. package/dist/src/ui/slash/__tests__/compact.test.js +0 -43
  854. package/dist/src/ui/slash/__tests__/cost.test.d.ts +0 -1
  855. package/dist/src/ui/slash/__tests__/cost.test.js +0 -54
  856. package/dist/src/ui/slash/__tests__/discuss.test.d.ts +0 -1
  857. package/dist/src/ui/slash/__tests__/discuss.test.js +0 -83
  858. package/dist/src/ui/slash/__tests__/execute.test.d.ts +0 -1
  859. package/dist/src/ui/slash/__tests__/execute.test.js +0 -71
  860. package/dist/src/ui/slash/__tests__/expand.test.d.ts +0 -1
  861. package/dist/src/ui/slash/__tests__/expand.test.js +0 -67
  862. package/dist/src/ui/slash/__tests__/ideal.test.d.ts +0 -1
  863. package/dist/src/ui/slash/__tests__/ideal.test.js +0 -158
  864. package/dist/src/ui/slash/__tests__/menu-parity.test.d.ts +0 -17
  865. package/dist/src/ui/slash/__tests__/menu-parity.test.js +0 -43
  866. package/dist/src/ui/slash/__tests__/optimize.test.d.ts +0 -1
  867. package/dist/src/ui/slash/__tests__/optimize.test.js +0 -130
  868. package/dist/src/ui/slash/__tests__/pin.test.d.ts +0 -1
  869. package/dist/src/ui/slash/__tests__/pin.test.js +0 -38
  870. package/dist/src/ui/slash/__tests__/plan.test.d.ts +0 -1
  871. package/dist/src/ui/slash/__tests__/plan.test.js +0 -82
  872. package/dist/src/ui/slash/__tests__/ponytail.test.d.ts +0 -1
  873. package/dist/src/ui/slash/__tests__/ponytail.test.js +0 -37
  874. package/dist/src/ui/slash/__tests__/status-render.test.d.ts +0 -7
  875. package/dist/src/ui/slash/__tests__/status-render.test.js +0 -77
  876. package/dist/src/ui/slash/route.test.d.ts +0 -1
  877. package/dist/src/ui/slash/route.test.js +0 -70
  878. package/dist/src/ui/status-bar/index.test.d.ts +0 -1
  879. package/dist/src/ui/status-bar/index.test.js +0 -139
  880. package/dist/src/ui/status-bar/store.test.d.ts +0 -1
  881. package/dist/src/ui/status-bar/store.test.js +0 -116
  882. package/dist/src/ui/status-bar/tier-badge.test.d.ts +0 -1
  883. package/dist/src/ui/status-bar/tier-badge.test.js +0 -34
  884. package/dist/src/ui/status-bar/usd-meter.test.d.ts +0 -1
  885. package/dist/src/ui/status-bar/usd-meter.test.js +0 -32
  886. package/dist/src/ui/utils/__tests__/format.test.d.ts +0 -1
  887. package/dist/src/ui/utils/__tests__/format.test.js +0 -50
  888. package/dist/src/ui/utils/__tests__/tools.test.d.ts +0 -1
  889. package/dist/src/ui/utils/__tests__/tools.test.js +0 -48
  890. package/dist/src/ui/utils/relaunch.test.d.ts +0 -1
  891. package/dist/src/ui/utils/relaunch.test.js +0 -133
  892. package/dist/src/ui/utils/text.test.d.ts +0 -1
  893. package/dist/src/ui/utils/text.test.js +0 -47
  894. package/dist/src/usage/__tests__/product-ledger.test.d.ts +0 -1
  895. package/dist/src/usage/__tests__/product-ledger.test.js +0 -60
  896. package/dist/src/usage/downgrade.test.d.ts +0 -1
  897. package/dist/src/usage/downgrade.test.js +0 -70
  898. package/dist/src/usage/estimator.test.d.ts +0 -1
  899. package/dist/src/usage/estimator.test.js +0 -38
  900. package/dist/src/usage/ledger.test.d.ts +0 -1
  901. package/dist/src/usage/ledger.test.js +0 -171
  902. package/dist/src/usage/midstream.test.d.ts +0 -1
  903. package/dist/src/usage/midstream.test.js +0 -47
  904. package/dist/src/usage/thresholds.test.d.ts +0 -1
  905. package/dist/src/usage/thresholds.test.js +0 -77
  906. package/dist/src/utils/__tests__/auto-council-settings.test.d.ts +0 -1
  907. package/dist/src/utils/__tests__/auto-council-settings.test.js +0 -41
  908. package/dist/src/utils/__tests__/compaction-caps.test.d.ts +0 -21
  909. package/dist/src/utils/__tests__/compaction-caps.test.js +0 -187
  910. package/dist/src/utils/__tests__/ee-logger.test.d.ts +0 -11
  911. package/dist/src/utils/__tests__/ee-logger.test.js +0 -165
  912. package/dist/src/utils/__tests__/file-lock.test.d.ts +0 -1
  913. package/dist/src/utils/__tests__/file-lock.test.js +0 -66
  914. package/dist/src/utils/__tests__/footprint-gitignore.test.d.ts +0 -1
  915. package/dist/src/utils/__tests__/footprint-gitignore.test.js +0 -50
  916. package/dist/src/utils/__tests__/llm-deadline-abort.test.d.ts +0 -1
  917. package/dist/src/utils/__tests__/llm-deadline-abort.test.js +0 -33
  918. package/dist/src/utils/__tests__/llm-deadline.test.d.ts +0 -1
  919. package/dist/src/utils/__tests__/llm-deadline.test.js +0 -68
  920. package/dist/src/utils/__tests__/logger.test.d.ts +0 -1
  921. package/dist/src/utils/__tests__/logger.test.js +0 -115
  922. package/dist/src/utils/__tests__/rate-limit.test.d.ts +0 -1
  923. package/dist/src/utils/__tests__/rate-limit.test.js +0 -38
  924. package/dist/src/utils/__tests__/settings-agent-first.test.d.ts +0 -1
  925. package/dist/src/utils/__tests__/settings-agent-first.test.js +0 -48
  926. package/dist/src/utils/__tests__/settings-disabled-models.test.d.ts +0 -7
  927. package/dist/src/utils/__tests__/settings-disabled-models.test.js +0 -99
  928. package/dist/src/utils/__tests__/settings-web-research.test.d.ts +0 -1
  929. package/dist/src/utils/__tests__/settings-web-research.test.js +0 -46
  930. package/dist/src/utils/__tests__/slugify.test.d.ts +0 -1
  931. package/dist/src/utils/__tests__/slugify.test.js +0 -37
  932. package/dist/src/utils/__tests__/visible-retry.test.d.ts +0 -1
  933. package/dist/src/utils/__tests__/visible-retry.test.js +0 -143
  934. package/dist/src/utils/install-manager.test.d.ts +0 -1
  935. package/dist/src/utils/install-manager.test.js +0 -169
  936. package/dist/src/utils/instructions.test.d.ts +0 -1
  937. package/dist/src/utils/instructions.test.js +0 -93
  938. package/dist/src/utils/open-url.test.d.ts +0 -1
  939. package/dist/src/utils/open-url.test.js +0 -86
  940. package/dist/src/utils/permission-mode.test.d.ts +0 -1
  941. package/dist/src/utils/permission-mode.test.js +0 -188
  942. package/dist/src/utils/redactor.test.d.ts +0 -1
  943. package/dist/src/utils/redactor.test.js +0 -84
  944. package/dist/src/utils/settings.test.d.ts +0 -1
  945. package/dist/src/utils/settings.test.js +0 -212
  946. package/dist/src/utils/shell.test.d.ts +0 -1
  947. package/dist/src/utils/shell.test.js +0 -97
  948. package/dist/src/utils/skills.test.d.ts +0 -1
  949. package/dist/src/utils/skills.test.js +0 -45
  950. package/dist/src/utils/subagent-display.test.d.ts +0 -1
  951. package/dist/src/utils/subagent-display.test.js +0 -21
  952. package/dist/src/utils/subagents-settings.test.d.ts +0 -1
  953. package/dist/src/utils/subagents-settings.test.js +0 -64
  954. package/dist/src/utils/telegram-audio-settings.test.d.ts +0 -1
  955. package/dist/src/utils/telegram-audio-settings.test.js +0 -39
  956. package/dist/src/utils/update-checker.test.d.ts +0 -1
  957. package/dist/src/utils/update-checker.test.js +0 -142
  958. package/dist/src/verify/__tests__/coverage-parsers.test.d.ts +0 -1
  959. package/dist/src/verify/__tests__/coverage-parsers.test.js +0 -69
  960. package/dist/src/verify/__tests__/dotnet-recipe.test.d.ts +0 -10
  961. package/dist/src/verify/__tests__/dotnet-recipe.test.js +0 -70
  962. package/dist/src/verify/checkpoint.test.d.ts +0 -1
  963. package/dist/src/verify/checkpoint.test.js +0 -160
  964. package/dist/src/verify/entrypoint.test.d.ts +0 -1
  965. package/dist/src/verify/entrypoint.test.js +0 -233
  966. package/dist/src/verify/environment.test.d.ts +0 -1
  967. package/dist/src/verify/environment.test.js +0 -94
  968. package/dist/src/verify/orchestrator.test.d.ts +0 -1
  969. package/dist/src/verify/orchestrator.test.js +0 -126
  970. package/dist/src/verify/runtime-prep.test.d.ts +0 -1
  971. package/dist/src/verify/runtime-prep.test.js +0 -38
@@ -1,194 +0,0 @@
1
- import { mkdir, mkdtemp, rm, writeFile } from "fs/promises";
2
- import os from "os";
3
- import path from "path";
4
- import { afterEach, describe, expect, it, vi } from "vitest";
5
- import { createWorkspaceLspManager } from "./manager.js";
6
- const BASE_SETTINGS = {
7
- enabled: true,
8
- tool: true,
9
- autoInstall: false,
10
- startupTimeoutMs: 5_000,
11
- requestTimeoutMs: 5_000,
12
- diagnosticsDebounceMs: 0,
13
- builtins: {
14
- typescript: {
15
- enabled: false,
16
- },
17
- },
18
- servers: [
19
- {
20
- id: "fake-ts",
21
- command: "fake-lsp",
22
- extensions: [".ts"],
23
- languageIds: {
24
- ".ts": "typescript",
25
- },
26
- rootMarkers: [".git"],
27
- },
28
- ],
29
- };
30
- const tempDirs = [];
31
- afterEach(async () => {
32
- await Promise.all(tempDirs.splice(0).map((dir) => rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 50 })));
33
- });
34
- describe("createWorkspaceLspManager", () => {
35
- it("routes queries through the matching LSP client", async () => {
36
- const root = await createTempWorkspace();
37
- const filePath = path.join(root, "src", "demo.ts");
38
- await mkdir(path.dirname(filePath), { recursive: true });
39
- await writeFile(filePath, "const demo = 1;\n");
40
- const sendRequest = vi.fn(async (method, params) => {
41
- expect(method).toBe("textDocument/definition");
42
- expect(params).toMatchObject({
43
- position: {
44
- line: 4,
45
- character: 2,
46
- },
47
- });
48
- return [{ uri: "file:///demo.ts", range: { start: { line: 1, character: 0 }, end: { line: 1, character: 4 } } }];
49
- });
50
- const client = createFakeClient({ sendRequest });
51
- const manager = createWorkspaceLspManager(root, BASE_SETTINGS, {
52
- createClient: async () => client,
53
- });
54
- const result = await manager.query({
55
- operation: "goToDefinition",
56
- filePath,
57
- line: 5,
58
- character: 3,
59
- });
60
- expect(result.success).toBe(true);
61
- expect(result.output).toContain("file:///demo.ts");
62
- expect(client.openOrChangeFile).toHaveBeenCalledWith(filePath, "typescript", "const demo = 1;\n");
63
- expect(client.waitForDiagnostics).toHaveBeenCalledWith(filePath, undefined);
64
- await manager.close();
65
- expect(client.stop).toHaveBeenCalled();
66
- });
67
- it("returns diagnostics after syncing a saved file", async () => {
68
- const root = await createTempWorkspace();
69
- const filePath = path.join(root, "demo.ts");
70
- const diagnostics = [
71
- {
72
- filePath,
73
- serverId: "fake-ts",
74
- diagnostics: [
75
- {
76
- message: "Type error",
77
- severity: 1,
78
- range: {
79
- start: { line: 0, character: 0 },
80
- end: { line: 0, character: 4 },
81
- },
82
- },
83
- ],
84
- },
85
- ];
86
- const client = createFakeClient({
87
- diagnostics: diagnostics[0].diagnostics,
88
- });
89
- const manager = createWorkspaceLspManager(root, BASE_SETTINGS, {
90
- createClient: async () => client,
91
- });
92
- const result = await manager.syncFile(filePath, "const broken = true;\n", true, true);
93
- expect(result).toEqual(diagnostics);
94
- expect(client.saveFile).toHaveBeenCalledWith(filePath);
95
- expect(client.waitForDiagnostics).toHaveBeenCalledWith(filePath, undefined);
96
- await manager.close();
97
- });
98
- it("times out a hanging request without dropping the client", async () => {
99
- const root = await createTempWorkspace();
100
- const filePath = path.join(root, "src", "demo.ts");
101
- await mkdir(path.dirname(filePath), { recursive: true });
102
- await writeFile(filePath, "const demo = 1;\n");
103
- // sendRequest never resolves — simulates a server still loading its workspace.
104
- const client = createFakeClient({ sendRequest: () => new Promise(() => { }) });
105
- const manager = createWorkspaceLspManager(root, { ...BASE_SETTINGS, requestTimeoutMs: 50 }, {
106
- createClient: async () => client,
107
- });
108
- const result = await manager.query({
109
- operation: "documentSymbol",
110
- filePath,
111
- });
112
- // Degrades gracefully instead of hanging forever.
113
- expect(result.success).toBe(true);
114
- expect(result.output).toContain("No results found");
115
- // Client is retained (not dropped) so a retry hits the warmed-up server.
116
- await manager.close();
117
- expect(client.stop).toHaveBeenCalled();
118
- });
119
- it("reports when no matching server exists", async () => {
120
- const root = await createTempWorkspace();
121
- const filePath = path.join(root, "demo.rb");
122
- await writeFile(filePath, "puts 'hello'\n");
123
- const manager = createWorkspaceLspManager(root, { ...BASE_SETTINGS, servers: [] });
124
- const result = await manager.query({
125
- operation: "hover",
126
- filePath,
127
- line: 1,
128
- character: 1,
129
- });
130
- expect(result.success).toBe(false);
131
- expect(result.output).toContain("No LSP server available");
132
- await manager.close();
133
- });
134
- it("handles missing files gracefully and avoids touchFile on workspaceSymbol", async () => {
135
- const root = await createTempWorkspace();
136
- const filePath = path.join(root, "nonexistent.ts");
137
- const sendRequest = vi.fn(async (method, params) => {
138
- expect(method).toBe("workspace/symbol");
139
- expect(params).toEqual({ query: "my-query" });
140
- return [
141
- {
142
- name: "MySymbol",
143
- kind: 1,
144
- location: {
145
- uri: "file:///demo.ts",
146
- range: { start: { line: 0, character: 0 }, end: { line: 0, character: 8 } },
147
- },
148
- },
149
- ];
150
- });
151
- const client = createFakeClient({ sendRequest });
152
- const manager = createWorkspaceLspManager(root, BASE_SETTINGS, {
153
- createClient: async () => client,
154
- });
155
- const result = await manager.query({
156
- operation: "workspaceSymbol",
157
- filePath,
158
- query: "my-query",
159
- });
160
- expect(result.success).toBe(true);
161
- expect(result.output).toContain("MySymbol");
162
- expect(client.openOrChangeFile).not.toHaveBeenCalled();
163
- const resultDef = await manager.query({
164
- operation: "goToDefinition",
165
- filePath,
166
- line: 1,
167
- character: 1,
168
- });
169
- expect(resultDef.success).toBe(true);
170
- expect(resultDef.output).toContain("No results found");
171
- await manager.close();
172
- });
173
- });
174
- async function createTempWorkspace() {
175
- const root = await mkdtemp(path.join(os.tmpdir(), "muonroi-lsp-manager-"));
176
- tempDirs.push(root);
177
- await mkdir(path.join(root, ".git"), { recursive: true });
178
- return root;
179
- }
180
- function createFakeClient(input) {
181
- const diagnostics = input.diagnostics ?? [];
182
- return {
183
- serverId: "fake-ts",
184
- root: "/tmp",
185
- openOrChangeFile: vi.fn(async () => { }),
186
- saveFile: vi.fn(async () => { }),
187
- closeFile: vi.fn(async () => { }),
188
- sendRequest: (async (method, params) => (input.sendRequest ? await input.sendRequest(method, params) : [])),
189
- waitForDiagnostics: vi.fn(async () => diagnostics),
190
- getDiagnostics: vi.fn(() => diagnostics),
191
- stop: vi.fn(async () => { }),
192
- };
193
- }
194
- //# sourceMappingURL=manager.test.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,53 +0,0 @@
1
- import { mkdir, rm, writeFile } from "fs/promises";
2
- import os from "os";
3
- import path from "path";
4
- import { afterEach, describe, expect, it } from "vitest";
5
- import { lspNpmWhich } from "./npm-cache.js";
6
- const tempDirs = [];
7
- afterEach(async () => {
8
- await Promise.all(tempDirs.splice(0).map((dir) => rm(dir, { recursive: true, force: true, maxRetries: 10, retryDelay: 50 })));
9
- });
10
- describe("lspNpmWhich", () => {
11
- it("resolves a single binary from a pre-populated cache", async () => {
12
- const dir = await createFakePackageCache("fake-server", { "fake-server": "lib/cli.js" });
13
- const result = await lspNpmWhich("fake-server");
14
- expect(result).toBe(path.join(dir, "node_modules", ".bin", "fake-server"));
15
- });
16
- it("resolves the correct binary from a multi-binary package", async () => {
17
- const dir = await createFakePackageCache("multi-bin", {
18
- "multi-bin": "lib/main.js",
19
- "multi-bin-helper": "lib/helper.js",
20
- });
21
- const result = await lspNpmWhich("multi-bin");
22
- expect(result).toBe(path.join(dir, "node_modules", ".bin", "multi-bin"));
23
- });
24
- it("returns null when the package cannot be installed", async () => {
25
- const result = await lspNpmWhich("@nonexistent-scope/totally-fake-package-that-does-not-exist-12345");
26
- expect(result).toBeNull();
27
- });
28
- });
29
- async function createFakePackageCache(pkg, binEntries) {
30
- const cacheRoot = path.join(os.homedir(), ".muonroi-cli", "cache", "lsp", pkg);
31
- tempDirs.push(cacheRoot);
32
- const binDir = path.join(cacheRoot, "node_modules", ".bin");
33
- const pkgDir = path.join(cacheRoot, "node_modules", pkg);
34
- await mkdir(binDir, { recursive: true });
35
- await mkdir(pkgDir, { recursive: true });
36
- for (const [name, target] of Object.entries(binEntries)) {
37
- const targetPath = path.join(pkgDir, target);
38
- await mkdir(path.dirname(targetPath), { recursive: true });
39
- await writeFile(targetPath, "#!/usr/bin/env node\n", { mode: 0o755 });
40
- const linkPath = path.join(binDir, name);
41
- const { symlink } = await import("fs/promises");
42
- await symlink(path.relative(binDir, targetPath), linkPath).catch(() => {
43
- // Fallback: write a stub file if symlinks fail (Windows)
44
- return writeFile(linkPath, `#!/bin/sh\nnode "${targetPath}" "$@"\n`, { mode: 0o755 });
45
- });
46
- }
47
- await writeFile(path.join(pkgDir, "package.json"), JSON.stringify({
48
- name: pkg,
49
- bin: Object.keys(binEntries).length === 1 ? Object.values(binEntries)[0] : binEntries,
50
- }));
51
- return cacheRoot;
52
- }
53
- //# sourceMappingURL=npm-cache.test.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,56 +0,0 @@
1
- import { execSync } from "child_process";
2
- import { mkdirSync, rmSync, writeFileSync } from "fs";
3
- import os from "os";
4
- import path from "path";
5
- import { afterAll, beforeAll, describe, expect, it } from "vitest";
6
- import { createLspClientSession } from "./client.js";
7
- let tsServerAvailable = false;
8
- let tmpDir = "";
9
- beforeAll(() => {
10
- // Check if typescript-language-server AND typescript are both available
11
- try {
12
- execSync("bunx typescript-language-server --version", { timeout: 5000, stdio: "pipe" });
13
- execSync("bunx tsc --version", { timeout: 5000, stdio: "pipe" });
14
- tsServerAvailable = true;
15
- }
16
- catch {
17
- tsServerAvailable = false;
18
- }
19
- // Create temp directory with a minimal TypeScript project
20
- tmpDir = path.join(os.tmpdir(), `lsp-smoke-${Date.now()}`);
21
- mkdirSync(tmpDir, { recursive: true });
22
- writeFileSync(path.join(tmpDir, "tsconfig.json"), JSON.stringify({ compilerOptions: { strict: true } }, null, 2), "utf8");
23
- writeFileSync(path.join(tmpDir, "test.ts"), "const x: number = 1;\n", "utf8");
24
- });
25
- afterAll(() => {
26
- try {
27
- rmSync(tmpDir, { recursive: true, force: true, maxRetries: 10, retryDelay: 50 });
28
- }
29
- catch {
30
- // Best-effort cleanup
31
- }
32
- });
33
- describe("LSP smoke test — createLspClientSession", () => {
34
- it.skipIf(!tsServerAvailable || !!process.env.CI)("initializes LSP session with typescript-language-server", { timeout: 30000 }, async () => {
35
- const session = await createLspClientSession({
36
- serverId: "ts-smoke",
37
- root: tmpDir,
38
- launch: { command: "bunx", args: ["typescript-language-server", "--stdio"] },
39
- startupTimeoutMs: 15000,
40
- diagnosticsDebounceMs: 500,
41
- });
42
- expect(session.serverId).toBe("ts-smoke");
43
- await session.openOrChangeFile(path.join(tmpDir, "test.ts"), "typescript", "const x: number = 1;");
44
- await session.stop();
45
- });
46
- it("createLspClientSession rejects for non-existent command", { timeout: 10000 }, async () => {
47
- await expect(createLspClientSession({
48
- serverId: "bad",
49
- root: os.tmpdir(),
50
- launch: { command: "nonexistent-lsp-binary-xyz" },
51
- startupTimeoutMs: 2000,
52
- diagnosticsDebounceMs: 500,
53
- })).rejects.toThrow();
54
- });
55
- });
56
- //# sourceMappingURL=smoke.test.js.map
@@ -1,5 +0,0 @@
1
- /**
2
- * codebase-intel.test.ts — Unit tests for gatherCodebaseIntel + helpers.
3
- * Uses tmpdir for all fs operations — never touches the real workspace.
4
- */
5
- export {};
@@ -1,237 +0,0 @@
1
- /**
2
- * codebase-intel.test.ts — Unit tests for gatherCodebaseIntel + helpers.
3
- * Uses tmpdir for all fs operations — never touches the real workspace.
4
- */
5
- import { promises as fs } from "node:fs";
6
- import * as os from "node:os";
7
- import * as path from "node:path";
8
- import { afterEach, beforeEach, describe, expect, it } from "vitest";
9
- import { extractKeywords, gatherCodebaseIntel } from "../codebase-intel.js";
10
- let tmpDir;
11
- beforeEach(async () => {
12
- tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "muonroi-codebase-intel-test-"));
13
- });
14
- afterEach(async () => {
15
- await fs.rm(tmpDir, { recursive: true, force: true, maxRetries: 10, retryDelay: 50 });
16
- });
17
- // ---------------------------------------------------------------------------
18
- // extractKeywords
19
- // ---------------------------------------------------------------------------
20
- describe("extractKeywords", () => {
21
- it("strips English stopwords", () => {
22
- const kws = extractKeywords("fix the login redirect bug in the auth module");
23
- expect(kws).not.toContain("the");
24
- expect(kws).not.toContain("in");
25
- expect(kws).toContain("login");
26
- expect(kws).toContain("redirect");
27
- expect(kws).toContain("auth");
28
- expect(kws).toContain("module");
29
- });
30
- it("strips Vietnamese stopwords", () => {
31
- const kws = extractKeywords("sửa lỗi không redirect đúng trong module đăng nhập");
32
- expect(kws).not.toContain("không");
33
- expect(kws).not.toContain("trong");
34
- // meaningful words should survive
35
- expect(kws.length).toBeGreaterThan(0);
36
- });
37
- it("drops tokens shorter than 3 chars", () => {
38
- const kws = extractKeywords("fix ui db api bug");
39
- expect(kws).not.toContain("ui");
40
- expect(kws).not.toContain("db");
41
- // api is 3 chars — exactly at the threshold, should be kept
42
- expect(kws).toContain("api"); // length exactly 3 — not dropped
43
- // "fix" is 3 chars — kept (threshold is < 3, so 3 is allowed)
44
- expect(kws).toContain("fix");
45
- });
46
- it("drops pure numbers", () => {
47
- const kws = extractKeywords("issue 12345 on line 99 fix");
48
- expect(kws).not.toContain("12345");
49
- expect(kws).not.toContain("99");
50
- });
51
- it("deduplicates tokens", () => {
52
- const kws = extractKeywords("login login login redirect login");
53
- const loginCount = kws.filter((k) => k === "login").length;
54
- expect(loginCount).toBe(1);
55
- });
56
- it("caps at 10 keywords", () => {
57
- // 15 distinct meaningful words
58
- const text = "authentication redirect session cookie token header payload signature expiry validation middleware interceptor pipeline router controller";
59
- const kws = extractKeywords(text);
60
- expect(kws.length).toBeLessThanOrEqual(10);
61
- });
62
- it("sorts by length descending for determinism (longer first)", () => {
63
- const kws = extractKeywords("authentication redirect session");
64
- // "authentication" is longest — should come first
65
- expect(kws[0]).toBe("authentication");
66
- });
67
- });
68
- // ---------------------------------------------------------------------------
69
- // gatherCodebaseIntel — candidate ranking
70
- // ---------------------------------------------------------------------------
71
- describe("gatherCodebaseIntel — candidate ranking", () => {
72
- it("prefers filename match over body match", async () => {
73
- // File whose name matches the keyword
74
- await fs.mkdir(path.join(tmpDir, "src"), { recursive: true });
75
- await fs.writeFile(path.join(tmpDir, "src", "auth.ts"), `export function noop() {}`, // no keyword in body
76
- "utf8");
77
- // File with keyword only in body (not in name)
78
- await fs.writeFile(path.join(tmpDir, "src", "utils.ts"), `// auth logic here\nexport function auth() {}\n// auth auth auth auth auth auth auth`, // many body hits
79
- "utf8");
80
- const intel = await gatherCodebaseIntel({
81
- cwd: tmpDir,
82
- task: { title: "fix auth bug", description: "the auth module is broken", kind: "bug" },
83
- });
84
- const paths = intel.candidateFiles.map((c) => c.path);
85
- expect(paths[0]).toContain("auth.ts"); // filename match wins
86
- });
87
- it("includes path-based match when keyword appears in directory name", async () => {
88
- await fs.mkdir(path.join(tmpDir, "src", "auth"), { recursive: true });
89
- await fs.writeFile(path.join(tmpDir, "src", "auth", "handler.ts"), `export function handle() {}`, "utf8");
90
- const intel = await gatherCodebaseIntel({
91
- cwd: tmpDir,
92
- task: { title: "fix auth handler", description: "fix auth", kind: "bug" },
93
- });
94
- const paths = intel.candidateFiles.map((c) => c.path);
95
- expect(paths.some((p) => p.includes("auth/handler.ts") || p.includes("auth\\handler.ts"))).toBe(true);
96
- });
97
- it("matchScore is between 0 and 1", async () => {
98
- await fs.mkdir(path.join(tmpDir, "src"), { recursive: true });
99
- await fs.writeFile(path.join(tmpDir, "src", "login.ts"), `// login handler\nexport function login() {}`, "utf8");
100
- const intel = await gatherCodebaseIntel({
101
- cwd: tmpDir,
102
- task: { title: "fix login redirect", description: "login page redirects incorrectly", kind: "bug" },
103
- });
104
- for (const cf of intel.candidateFiles) {
105
- expect(cf.matchScore).toBeGreaterThanOrEqual(0);
106
- expect(cf.matchScore).toBeLessThanOrEqual(1);
107
- }
108
- });
109
- it("returns empty candidateFiles when keywords produce no matches", async () => {
110
- // Only a file with totally unrelated content
111
- await fs.mkdir(path.join(tmpDir, "src"), { recursive: true });
112
- await fs.writeFile(path.join(tmpDir, "src", "xyz.ts"), "export const x = 1;", "utf8");
113
- const intel = await gatherCodebaseIntel({
114
- cwd: tmpDir,
115
- task: { title: "qwertyuiop zzz yyy xxx", description: "asdfghjkl", kind: "chore" },
116
- });
117
- expect(intel.candidateFiles.length).toBe(0);
118
- });
119
- });
120
- // ---------------------------------------------------------------------------
121
- // Impact radius
122
- // ---------------------------------------------------------------------------
123
- describe("gatherCodebaseIntel — impact radius", () => {
124
- it("finds JS/TS files that import a candidate", async () => {
125
- await fs.mkdir(path.join(tmpDir, "src"), { recursive: true });
126
- // Candidate file — keyword in name so it scores highest
127
- await fs.writeFile(path.join(tmpDir, "src", "auth.ts"), "export function auth() {}", "utf8");
128
- // Importer — neutral name, body only contains the import path (which has "auth")
129
- // Use maxCandidates:1 so only auth.ts is a candidate and bootstrapper.ts
130
- // is therefore eligible for impact radius detection.
131
- await fs.writeFile(path.join(tmpDir, "src", "bootstrapper.ts"), `import { auth } ${"from"} './auth';\nexport const boot = auth;`, "utf8");
132
- const intel = await gatherCodebaseIntel({
133
- cwd: tmpDir,
134
- task: { title: "fix auth bug", description: "auth module broken", kind: "bug" },
135
- maxCandidates: 1, // only auth.ts is a candidate; bootstrapper.ts goes to impact radius
136
- });
137
- // bootstrapper.ts imports auth.ts via from './auth' — should appear in impact radius
138
- expect(intel.impactRadius.some((f) => f.includes("bootstrapper"))).toBe(true);
139
- // The candidate itself must not be listed in impactRadius
140
- expect(intel.impactRadius.every((f) => !f.includes("auth.ts"))).toBe(true);
141
- });
142
- it("finds C# files that 'using' a candidate", async () => {
143
- await fs.mkdir(path.join(tmpDir, "src"), { recursive: true });
144
- // Candidate — keyword in name
145
- await fs.writeFile(path.join(tmpDir, "src", "AuthService.cs"), "public class AuthService {}", "utf8");
146
- // Importer — neutral name that won't match any task keyword
147
- // Note: must NOT contain "authservice" in its body beyond the using statement
148
- // to avoid becoming a candidate itself. The using statement alone scores low
149
- // but the file name "Bootstrapper" has no keyword overlap so it won't rank
150
- // as a candidate (maxCandidates=1 to ensure only AuthService is candidate).
151
- await fs.writeFile(path.join(tmpDir, "src", "Bootstrapper.cs"), `using MyApp.AuthService;\npublic class Bootstrapper {}`, "utf8");
152
- const intel = await gatherCodebaseIntel({
153
- cwd: tmpDir,
154
- task: { title: "fix AuthService bug", description: "AuthService crashes on null input", kind: "bug" },
155
- maxCandidates: 1, // ensure only AuthService.cs is a candidate
156
- });
157
- expect(intel.impactRadius.some((f) => f.includes("Bootstrapper"))).toBe(true);
158
- });
159
- });
160
- // ---------------------------------------------------------------------------
161
- // Regression tests
162
- // ---------------------------------------------------------------------------
163
- describe("gatherCodebaseIntel — regression tests", () => {
164
- it("picks up .test.ts files that reference candidate basenames", async () => {
165
- await fs.mkdir(path.join(tmpDir, "src"), { recursive: true });
166
- await fs.mkdir(path.join(tmpDir, "tests"), { recursive: true });
167
- await fs.writeFile(path.join(tmpDir, "src", "auth.ts"), "export function auth() {}", "utf8");
168
- await fs.writeFile(path.join(tmpDir, "tests", "auth.test.ts"), `import { auth } ${"from"} '../src/auth';\nit('works', () => auth());`, "utf8");
169
- const intel = await gatherCodebaseIntel({
170
- cwd: tmpDir,
171
- task: { title: "fix auth", description: "auth is broken", kind: "bug" },
172
- });
173
- expect(intel.regressionTests.some((f) => f.includes("auth.test.ts"))).toBe(true);
174
- });
175
- it("picks up .spec.ts files", async () => {
176
- await fs.mkdir(path.join(tmpDir, "src"), { recursive: true });
177
- await fs.mkdir(path.join(tmpDir, "__tests__"), { recursive: true });
178
- await fs.writeFile(path.join(tmpDir, "src", "session.ts"), "export function session() {}", "utf8");
179
- await fs.writeFile(path.join(tmpDir, "__tests__", "session.spec.ts"), `describe('session', () => { it('ok', () => session()) });`, "utf8");
180
- const intel = await gatherCodebaseIntel({
181
- cwd: tmpDir,
182
- task: { title: "fix session expiry", description: "session does not expire correctly", kind: "bug" },
183
- });
184
- expect(intel.regressionTests.some((f) => f.includes("session.spec.ts"))).toBe(true);
185
- });
186
- });
187
- // ---------------------------------------------------------------------------
188
- // Framework detection
189
- // ---------------------------------------------------------------------------
190
- describe("gatherCodebaseIntel — framework detection", () => {
191
- it("detects next + node from package.json with next dependency", async () => {
192
- await fs.writeFile(path.join(tmpDir, "package.json"), JSON.stringify({ dependencies: { next: "14.0.0", react: "18.0.0" } }), "utf8");
193
- const intel = await gatherCodebaseIntel({
194
- cwd: tmpDir,
195
- task: { title: "fix page", description: "page load fails", kind: "bug" },
196
- });
197
- expect(intel.detectedFrameworks).toContain("next");
198
- expect(intel.detectedFrameworks).toContain("node");
199
- expect(intel.detectedFrameworks).toContain("react");
200
- });
201
- it("detects dotnet from .csproj file", async () => {
202
- await fs.writeFile(path.join(tmpDir, "MyApp.csproj"), '<Project Sdk="Microsoft.NET.Sdk" />', "utf8");
203
- const intel = await gatherCodebaseIntel({
204
- cwd: tmpDir,
205
- task: { title: "fix null ref", description: "null reference exception in service", kind: "bug" },
206
- });
207
- expect(intel.detectedFrameworks).toContain("dotnet");
208
- });
209
- it("detects python from requirements.txt", async () => {
210
- await fs.writeFile(path.join(tmpDir, "requirements.txt"), "fastapi\nuvicorn\n", "utf8");
211
- const intel = await gatherCodebaseIntel({
212
- cwd: tmpDir,
213
- task: { title: "fix endpoint", description: "api endpoint returns 500", kind: "bug" },
214
- });
215
- expect(intel.detectedFrameworks).toContain("python");
216
- });
217
- it("detects rust from Cargo.toml", async () => {
218
- await fs.writeFile(path.join(tmpDir, "Cargo.toml"), '[package]\nname = "myapp"\n', "utf8");
219
- const intel = await gatherCodebaseIntel({
220
- cwd: tmpDir,
221
- task: { title: "fix panic", description: "unwrap panic in main", kind: "bug" },
222
- });
223
- expect(intel.detectedFrameworks).toContain("rust");
224
- });
225
- it("returns sorted framework list", async () => {
226
- await fs.writeFile(path.join(tmpDir, "package.json"), JSON.stringify({ dependencies: { next: "14.0.0" } }), "utf8");
227
- await fs.writeFile(path.join(tmpDir, "requirements.txt"), "flask\n", "utf8");
228
- const intel = await gatherCodebaseIntel({
229
- cwd: tmpDir,
230
- task: { title: "fix something", description: "something is broken", kind: "bug" },
231
- });
232
- // Result should be sorted
233
- const sorted = [...intel.detectedFrameworks].sort();
234
- expect(intel.detectedFrameworks).toEqual(sorted);
235
- });
236
- });
237
- //# sourceMappingURL=codebase-intel.test.js.map
@@ -1,11 +0,0 @@
1
- /**
2
- * gh-create-pr.test.ts — P16 unit tests.
3
- *
4
- * Covers:
5
- * 1. ok=true with URL parsed from gh stdout.
6
- * 2. gh not installed → ok=false with clear reason.
7
- * 3. gh not authed → ok=false with auth error message.
8
- * 4. git push fails → ok=false with push error.
9
- * 5. branch name with invalid chars → ok=false immediately (no git/gh calls).
10
- */
11
- export {};