muonroi-cli 1.8.1 → 1.8.4

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 (946) hide show
  1. package/LICENSE +5 -17
  2. package/README.md +20 -9
  3. package/dist/src/generated/version.d.ts +1 -1
  4. package/dist/src/generated/version.js +1 -1
  5. package/dist/src/mcp/setup-guide-text.d.ts +1 -1
  6. package/dist/src/mcp/setup-guide-text.js +8 -5
  7. package/dist/src/orchestrator/orchestrator.js +22 -13
  8. package/dist/src/orchestrator/tool-engine.d.ts +4 -0
  9. package/dist/src/orchestrator/tool-engine.js +49 -0
  10. package/dist/src/ui/use-app-logic.js +0 -0
  11. package/dist/src/utils/install-manager.d.ts +1 -0
  12. package/dist/src/utils/install-manager.js +41 -10
  13. package/dist/src/utils/update-checker.js +12 -2
  14. package/package.json +9 -2
  15. package/dist/src/__test-helpers__/catalog-fixtures.d.ts +0 -22
  16. package/dist/src/__test-helpers__/catalog-fixtures.js +0 -55
  17. package/dist/src/__test-stubs__/ee-server.d.ts +0 -27
  18. package/dist/src/__test-stubs__/ee-server.js +0 -138
  19. package/dist/src/__test-stubs__/vitest-setup.d.ts +0 -1
  20. package/dist/src/__test-stubs__/vitest-setup.js +0 -38
  21. package/dist/src/__tests__/council/bubble-layout.test.d.ts +0 -1
  22. package/dist/src/__tests__/council/bubble-layout.test.js +0 -39
  23. package/dist/src/__tests__/council/code-block-truncate.test.d.ts +0 -1
  24. package/dist/src/__tests__/council/code-block-truncate.test.js +0 -45
  25. package/dist/src/__tests__/council/role-palette.test.d.ts +0 -1
  26. package/dist/src/__tests__/council/role-palette.test.js +0 -59
  27. package/dist/src/__tests__/first-run-wizard.test.d.ts +0 -1
  28. package/dist/src/__tests__/first-run-wizard.test.js +0 -9
  29. package/dist/src/agent-harness/__tests__/cli-flags.spec.d.ts +0 -1
  30. package/dist/src/agent-harness/__tests__/cli-flags.spec.js +0 -33
  31. package/dist/src/agent-harness/__tests__/driver.spec.d.ts +0 -1
  32. package/dist/src/agent-harness/__tests__/driver.spec.js +0 -141
  33. package/dist/src/agent-harness/__tests__/idle.spec.d.ts +0 -1
  34. package/dist/src/agent-harness/__tests__/idle.spec.js +0 -84
  35. package/dist/src/agent-harness/__tests__/mock-llm.spec.d.ts +0 -1
  36. package/dist/src/agent-harness/__tests__/mock-llm.spec.js +0 -91
  37. package/dist/src/agent-harness/__tests__/mock-model.spec.d.ts +0 -5
  38. package/dist/src/agent-harness/__tests__/mock-model.spec.js +0 -270
  39. package/dist/src/agent-harness/__tests__/predicate.spec.d.ts +0 -1
  40. package/dist/src/agent-harness/__tests__/predicate.spec.js +0 -27
  41. package/dist/src/agent-harness/__tests__/protocol.spec.d.ts +0 -1
  42. package/dist/src/agent-harness/__tests__/protocol.spec.js +0 -56
  43. package/dist/src/agent-harness/__tests__/schema.spec.d.ts +0 -1
  44. package/dist/src/agent-harness/__tests__/schema.spec.js +0 -76
  45. package/dist/src/agent-harness/__tests__/selector.spec.d.ts +0 -1
  46. package/dist/src/agent-harness/__tests__/selector.spec.js +0 -70
  47. package/dist/src/agent-harness/__tests__/sidechannel.spec.d.ts +0 -1
  48. package/dist/src/agent-harness/__tests__/sidechannel.spec.js +0 -29
  49. package/dist/src/agent-harness/__tests__/spec-helpers.spec.d.ts +0 -1
  50. package/dist/src/agent-harness/__tests__/spec-helpers.spec.js +0 -68
  51. package/dist/src/chat/__tests__/broadcast-bus.test.d.ts +0 -1
  52. package/dist/src/chat/__tests__/broadcast-bus.test.js +0 -81
  53. package/dist/src/chat/__tests__/channel-manager.test.d.ts +0 -1
  54. package/dist/src/chat/__tests__/channel-manager.test.js +0 -133
  55. package/dist/src/chat/__tests__/client.test.d.ts +0 -1
  56. package/dist/src/chat/__tests__/client.test.js +0 -109
  57. package/dist/src/chat/__tests__/discord-integration.test.d.ts +0 -1
  58. package/dist/src/chat/__tests__/discord-integration.test.js +0 -153
  59. package/dist/src/chat/__tests__/intent-prompt.test.d.ts +0 -1
  60. package/dist/src/chat/__tests__/intent-prompt.test.js +0 -80
  61. package/dist/src/chat/__tests__/verdict-resolver.test.d.ts +0 -1
  62. package/dist/src/chat/__tests__/verdict-resolver.test.js +0 -308
  63. package/dist/src/cli/__tests__/bw-vault.test.d.ts +0 -1
  64. package/dist/src/cli/__tests__/bw-vault.test.js +0 -87
  65. package/dist/src/cli/__tests__/keys-bundle.test.d.ts +0 -1
  66. package/dist/src/cli/__tests__/keys-bundle.test.js +0 -40
  67. package/dist/src/cli/__tests__/share-cmd.test.d.ts +0 -1
  68. package/dist/src/cli/__tests__/share-cmd.test.js +0 -175
  69. package/dist/src/cli/config/__tests__/model-picker.test.d.ts +0 -1
  70. package/dist/src/cli/config/__tests__/model-picker.test.js +0 -56
  71. package/dist/src/cli/config/__tests__/provider-fetch.test.d.ts +0 -1
  72. package/dist/src/cli/config/__tests__/provider-fetch.test.js +0 -38
  73. package/dist/src/cli/cost-forensics.test.d.ts +0 -1
  74. package/dist/src/cli/cost-forensics.test.js +0 -223
  75. package/dist/src/cli/experience-report.test.d.ts +0 -5
  76. package/dist/src/cli/experience-report.test.js +0 -63
  77. package/dist/src/cli/keys.test.d.ts +0 -1
  78. package/dist/src/cli/keys.test.js +0 -86
  79. package/dist/src/council/__tests__/abort-threading.test.d.ts +0 -1
  80. package/dist/src/council/__tests__/abort-threading.test.js +0 -193
  81. package/dist/src/council/__tests__/accounting.test.d.ts +0 -1
  82. package/dist/src/council/__tests__/accounting.test.js +0 -66
  83. package/dist/src/council/__tests__/audit-replay.test.d.ts +0 -1
  84. package/dist/src/council/__tests__/audit-replay.test.js +0 -241
  85. package/dist/src/council/__tests__/clarification-prompt.test.d.ts +0 -1
  86. package/dist/src/council/__tests__/clarification-prompt.test.js +0 -71
  87. package/dist/src/council/__tests__/clarifier-max-rounds.test.d.ts +0 -1
  88. package/dist/src/council/__tests__/clarifier-max-rounds.test.js +0 -46
  89. package/dist/src/council/__tests__/clarifier-options.test.d.ts +0 -1
  90. package/dist/src/council/__tests__/clarifier-options.test.js +0 -54
  91. package/dist/src/council/__tests__/clarifier-ready-gate.test.d.ts +0 -1
  92. package/dist/src/council/__tests__/clarifier-ready-gate.test.js +0 -265
  93. package/dist/src/council/__tests__/cost-aware.test.d.ts +0 -1
  94. package/dist/src/council/__tests__/cost-aware.test.js +0 -49
  95. package/dist/src/council/__tests__/council-turn-length-emit.test.d.ts +0 -1
  96. package/dist/src/council/__tests__/council-turn-length-emit.test.js +0 -130
  97. package/dist/src/council/__tests__/debate-planner-structured.test.d.ts +0 -1
  98. package/dist/src/council/__tests__/debate-planner-structured.test.js +0 -209
  99. package/dist/src/council/__tests__/debate-round-budget.test.d.ts +0 -1
  100. package/dist/src/council/__tests__/debate-round-budget.test.js +0 -45
  101. package/dist/src/council/__tests__/decisions-lock.test.d.ts +0 -6
  102. package/dist/src/council/__tests__/decisions-lock.test.js +0 -352
  103. package/dist/src/council/__tests__/evaluator-metrics.test.d.ts +0 -1
  104. package/dist/src/council/__tests__/evaluator-metrics.test.js +0 -463
  105. package/dist/src/council/__tests__/oauth-reachable.test.d.ts +0 -1
  106. package/dist/src/council/__tests__/oauth-reachable.test.js +0 -31
  107. package/dist/src/council/__tests__/parse-outcome-fallback.test.d.ts +0 -1
  108. package/dist/src/council/__tests__/parse-outcome-fallback.test.js +0 -114
  109. package/dist/src/council/__tests__/post-debate-recommendation.test.d.ts +0 -1
  110. package/dist/src/council/__tests__/post-debate-recommendation.test.js +0 -58
  111. package/dist/src/council/__tests__/research-tools.test.d.ts +0 -1
  112. package/dist/src/council/__tests__/research-tools.test.js +0 -214
  113. package/dist/src/council/__tests__/round-tools.test.d.ts +0 -1
  114. package/dist/src/council/__tests__/round-tools.test.js +0 -306
  115. package/dist/src/council/__tests__/tool-trace.test.d.ts +0 -1
  116. package/dist/src/council/__tests__/tool-trace.test.js +0 -131
  117. package/dist/src/council/__tests__/types-contract.test.d.ts +0 -9
  118. package/dist/src/council/__tests__/types-contract.test.js +0 -82
  119. package/dist/src/council/clarifier-question-cap.test.d.ts +0 -12
  120. package/dist/src/council/clarifier-question-cap.test.js +0 -73
  121. package/dist/src/daemon/scheduler.test.d.ts +0 -1
  122. package/dist/src/daemon/scheduler.test.js +0 -103
  123. package/dist/src/ee/__tests__/bb-design.test.d.ts +0 -14
  124. package/dist/src/ee/__tests__/bb-design.test.js +0 -180
  125. package/dist/src/ee/__tests__/ee-onboarding.test.d.ts +0 -1
  126. package/dist/src/ee/__tests__/ee-onboarding.test.js +0 -32
  127. package/dist/src/ee/__tests__/export-transcripts.test.d.ts +0 -11
  128. package/dist/src/ee/__tests__/export-transcripts.test.js +0 -200
  129. package/dist/src/ee/__tests__/pil-context-bridge.test.d.ts +0 -1
  130. package/dist/src/ee/__tests__/pil-context-bridge.test.js +0 -54
  131. package/dist/src/ee/__tests__/pipeline.integration.test.d.ts +0 -14
  132. package/dist/src/ee/__tests__/pipeline.integration.test.js +0 -151
  133. package/dist/src/ee/__tests__/recall-format.test.d.ts +0 -10
  134. package/dist/src/ee/__tests__/recall-format.test.js +0 -57
  135. package/dist/src/ee/__tests__/recall-ledger.test.d.ts +0 -1
  136. package/dist/src/ee/__tests__/recall-ledger.test.js +0 -45
  137. package/dist/src/ee/__tests__/render-sink-wiring.test.d.ts +0 -1
  138. package/dist/src/ee/__tests__/render-sink-wiring.test.js +0 -74
  139. package/dist/src/ee/artifact-cache.test.d.ts +0 -1
  140. package/dist/src/ee/artifact-cache.test.js +0 -69
  141. package/dist/src/ee/auth.test.d.ts +0 -1
  142. package/dist/src/ee/auth.test.js +0 -59
  143. package/dist/src/ee/bridge.test.d.ts +0 -1
  144. package/dist/src/ee/bridge.test.js +0 -230
  145. package/dist/src/ee/client.test.d.ts +0 -1
  146. package/dist/src/ee/client.test.js +0 -181
  147. package/dist/src/ee/extract-session.test.d.ts +0 -1
  148. package/dist/src/ee/extract-session.test.js +0 -192
  149. package/dist/src/ee/intercept.test.d.ts +0 -1
  150. package/dist/src/ee/intercept.test.js +0 -171
  151. package/dist/src/ee/judge.test.d.ts +0 -1
  152. package/dist/src/ee/judge.test.js +0 -190
  153. package/dist/src/ee/mistake-detector.test.d.ts +0 -1
  154. package/dist/src/ee/mistake-detector.test.js +0 -221
  155. package/dist/src/ee/offline-queue.test.d.ts +0 -1
  156. package/dist/src/ee/offline-queue.test.js +0 -246
  157. package/dist/src/ee/phase-outcome.test.d.ts +0 -1
  158. package/dist/src/ee/phase-outcome.test.js +0 -94
  159. package/dist/src/ee/phase-tracker.test.d.ts +0 -1
  160. package/dist/src/ee/phase-tracker.test.js +0 -142
  161. package/dist/src/ee/posttool.test.d.ts +0 -1
  162. package/dist/src/ee/posttool.test.js +0 -70
  163. package/dist/src/ee/prompt-stale.test.d.ts +0 -8
  164. package/dist/src/ee/prompt-stale.test.js +0 -76
  165. package/dist/src/ee/recall-mirror.test.d.ts +0 -1
  166. package/dist/src/ee/recall-mirror.test.js +0 -65
  167. package/dist/src/ee/render.test.d.ts +0 -1
  168. package/dist/src/ee/render.test.js +0 -63
  169. package/dist/src/ee/scope.test.d.ts +0 -1
  170. package/dist/src/ee/scope.test.js +0 -97
  171. package/dist/src/ee/search.test.d.ts +0 -1
  172. package/dist/src/ee/search.test.js +0 -23
  173. package/dist/src/ee/session-trajectory.test.d.ts +0 -1
  174. package/dist/src/ee/session-trajectory.test.js +0 -120
  175. package/dist/src/ee/touch.test.d.ts +0 -1
  176. package/dist/src/ee/touch.test.js +0 -62
  177. package/dist/src/ee/who-am-i.test.d.ts +0 -1
  178. package/dist/src/ee/who-am-i.test.js +0 -101
  179. package/dist/src/flow/__tests__/migration.test.d.ts +0 -1
  180. package/dist/src/flow/__tests__/migration.test.js +0 -105
  181. package/dist/src/flow/__tests__/parser.test.d.ts +0 -1
  182. package/dist/src/flow/__tests__/parser.test.js +0 -68
  183. package/dist/src/flow/__tests__/run-manager-product.test.d.ts +0 -1
  184. package/dist/src/flow/__tests__/run-manager-product.test.js +0 -49
  185. package/dist/src/flow/__tests__/run-manager.test.d.ts +0 -1
  186. package/dist/src/flow/__tests__/run-manager.test.js +0 -83
  187. package/dist/src/flow/__tests__/scaffold-checkpoint.test.d.ts +0 -1
  188. package/dist/src/flow/__tests__/scaffold-checkpoint.test.js +0 -93
  189. package/dist/src/flow/__tests__/scaffold.test.d.ts +0 -1
  190. package/dist/src/flow/__tests__/scaffold.test.js +0 -47
  191. package/dist/src/flow/__tests__/warning-persist.test.d.ts +0 -5
  192. package/dist/src/flow/__tests__/warning-persist.test.js +0 -96
  193. package/dist/src/flow/compaction/__tests__/compress.test.d.ts +0 -1
  194. package/dist/src/flow/compaction/__tests__/compress.test.js +0 -63
  195. package/dist/src/flow/compaction/__tests__/extract.test.d.ts +0 -1
  196. package/dist/src/flow/compaction/__tests__/extract.test.js +0 -66
  197. package/dist/src/flow/compaction/__tests__/preserve.test.d.ts +0 -1
  198. package/dist/src/flow/compaction/__tests__/preserve.test.js +0 -62
  199. package/dist/src/gsd/__tests__/gray-areas.test.d.ts +0 -1
  200. package/dist/src/gsd/__tests__/gray-areas.test.js +0 -29
  201. package/dist/src/gsd/__tests__/types.test.d.ts +0 -1
  202. package/dist/src/gsd/__tests__/types.test.js +0 -78
  203. package/dist/src/headless/__tests__/council-answers.test.d.ts +0 -1
  204. package/dist/src/headless/__tests__/council-answers.test.js +0 -251
  205. package/dist/src/headless/output.test.d.ts +0 -1
  206. package/dist/src/headless/output.test.js +0 -239
  207. package/dist/src/lsp/builtins.test.d.ts +0 -1
  208. package/dist/src/lsp/builtins.test.js +0 -112
  209. package/dist/src/lsp/client-normalize.test.d.ts +0 -12
  210. package/dist/src/lsp/client-normalize.test.js +0 -34
  211. package/dist/src/lsp/manager.test.d.ts +0 -1
  212. package/dist/src/lsp/manager.test.js +0 -194
  213. package/dist/src/lsp/npm-cache.test.d.ts +0 -1
  214. package/dist/src/lsp/npm-cache.test.js +0 -53
  215. package/dist/src/lsp/smoke.test.d.ts +0 -1
  216. package/dist/src/lsp/smoke.test.js +0 -56
  217. package/dist/src/maintain/__tests__/codebase-intel.test.d.ts +0 -5
  218. package/dist/src/maintain/__tests__/codebase-intel.test.js +0 -237
  219. package/dist/src/maintain/__tests__/gh-create-pr.test.d.ts +0 -11
  220. package/dist/src/maintain/__tests__/gh-create-pr.test.js +0 -160
  221. package/dist/src/maintain/__tests__/pr-builder.test.d.ts +0 -10
  222. package/dist/src/maintain/__tests__/pr-builder.test.js +0 -229
  223. package/dist/src/maintain/__tests__/repo-map.test.d.ts +0 -5
  224. package/dist/src/maintain/__tests__/repo-map.test.js +0 -90
  225. package/dist/src/maintain/__tests__/task-runner.test.d.ts +0 -11
  226. package/dist/src/maintain/__tests__/task-runner.test.js +0 -281
  227. package/dist/src/mcp/__tests__/auto-setup.test.d.ts +0 -1
  228. package/dist/src/mcp/__tests__/auto-setup.test.js +0 -155
  229. package/dist/src/mcp/__tests__/cap-tool-result.test.d.ts +0 -1
  230. package/dist/src/mcp/__tests__/cap-tool-result.test.js +0 -58
  231. package/dist/src/mcp/__tests__/client-pool.spec.d.ts +0 -1
  232. package/dist/src/mcp/__tests__/client-pool.spec.js +0 -169
  233. package/dist/src/mcp/__tests__/ee-tools.test.d.ts +0 -1
  234. package/dist/src/mcp/__tests__/ee-tools.test.js +0 -226
  235. package/dist/src/mcp/__tests__/forensics-tools.test.d.ts +0 -1
  236. package/dist/src/mcp/__tests__/forensics-tools.test.js +0 -54
  237. package/dist/src/mcp/__tests__/harness-driver-action-tools.spec.d.ts +0 -1
  238. package/dist/src/mcp/__tests__/harness-driver-action-tools.spec.js +0 -103
  239. package/dist/src/mcp/__tests__/harness-driver-async-tools.spec.d.ts +0 -1
  240. package/dist/src/mcp/__tests__/harness-driver-async-tools.spec.js +0 -112
  241. package/dist/src/mcp/__tests__/harness-driver-read-tools.spec.d.ts +0 -1
  242. package/dist/src/mcp/__tests__/harness-driver-read-tools.spec.js +0 -124
  243. package/dist/src/mcp/__tests__/harness-driver-security.spec.d.ts +0 -1
  244. package/dist/src/mcp/__tests__/harness-driver-security.spec.js +0 -61
  245. package/dist/src/mcp/__tests__/harness-driver.spec.d.ts +0 -1
  246. package/dist/src/mcp/__tests__/harness-driver.spec.js +0 -20
  247. package/dist/src/mcp/__tests__/lazy-schema.spec.d.ts +0 -1
  248. package/dist/src/mcp/__tests__/lazy-schema.spec.js +0 -152
  249. package/dist/src/mcp/__tests__/lsp-tools.test.d.ts +0 -1
  250. package/dist/src/mcp/__tests__/lsp-tools.test.js +0 -56
  251. package/dist/src/mcp/__tests__/mcp-keychain.test.d.ts +0 -1
  252. package/dist/src/mcp/__tests__/mcp-keychain.test.js +0 -40
  253. package/dist/src/mcp/__tests__/parallel-build.spec.d.ts +0 -1
  254. package/dist/src/mcp/__tests__/parallel-build.spec.js +0 -67
  255. package/dist/src/mcp/__tests__/research-onboarding.test.d.ts +0 -1
  256. package/dist/src/mcp/__tests__/research-onboarding.test.js +0 -148
  257. package/dist/src/mcp/__tests__/runtime-hydration.test.d.ts +0 -1
  258. package/dist/src/mcp/__tests__/runtime-hydration.test.js +0 -78
  259. package/dist/src/mcp/__tests__/runtime-output-cap.test.d.ts +0 -1
  260. package/dist/src/mcp/__tests__/runtime-output-cap.test.js +0 -42
  261. package/dist/src/mcp/__tests__/runtime-sanitize.test.d.ts +0 -1
  262. package/dist/src/mcp/__tests__/runtime-sanitize.test.js +0 -40
  263. package/dist/src/mcp/__tests__/self-verify-jobs.test.d.ts +0 -1
  264. package/dist/src/mcp/__tests__/self-verify-jobs.test.js +0 -92
  265. package/dist/src/mcp/__tests__/smart-filter.test.d.ts +0 -1
  266. package/dist/src/mcp/__tests__/smart-filter.test.js +0 -177
  267. package/dist/src/mcp/__tests__/tools-server.smoke.test.d.ts +0 -1
  268. package/dist/src/mcp/__tests__/tools-server.smoke.test.js +0 -42
  269. package/dist/src/mcp/parse-headers.test.d.ts +0 -1
  270. package/dist/src/mcp/parse-headers.test.js +0 -43
  271. package/dist/src/mcp/smoke.test.d.ts +0 -1
  272. package/dist/src/mcp/smoke.test.js +0 -159
  273. package/dist/src/models/__tests__/registry.test.d.ts +0 -1
  274. package/dist/src/models/__tests__/registry.test.js +0 -74
  275. package/dist/src/models/catalog-gemini.test.d.ts +0 -1
  276. package/dist/src/models/catalog-gemini.test.js +0 -48
  277. package/dist/src/models/catalog-url.test.d.ts +0 -1
  278. package/dist/src/models/catalog-url.test.js +0 -26
  279. package/dist/src/models/catalog-validation.test.d.ts +0 -1
  280. package/dist/src/models/catalog-validation.test.js +0 -63
  281. package/dist/src/ops/__tests__/doctor-council-mcp.test.d.ts +0 -1
  282. package/dist/src/ops/__tests__/doctor-council-mcp.test.js +0 -139
  283. package/dist/src/ops/__tests__/doctor-ee-health.test.d.ts +0 -1
  284. package/dist/src/ops/__tests__/doctor-ee-health.test.js +0 -134
  285. package/dist/src/ops/bug-report.test.d.ts +0 -1
  286. package/dist/src/ops/bug-report.test.js +0 -148
  287. package/dist/src/ops/doctor.test.d.ts +0 -1
  288. package/dist/src/ops/doctor.test.js +0 -97
  289. package/dist/src/orchestrator/__tests__/agent-base-url-switch.test.d.ts +0 -1
  290. package/dist/src/orchestrator/__tests__/agent-base-url-switch.test.js +0 -77
  291. package/dist/src/orchestrator/__tests__/auto-commit.test.d.ts +0 -1
  292. package/dist/src/orchestrator/__tests__/auto-commit.test.js +0 -142
  293. package/dist/src/orchestrator/__tests__/batch-turn-runner.test.d.ts +0 -1
  294. package/dist/src/orchestrator/__tests__/batch-turn-runner.test.js +0 -164
  295. package/dist/src/orchestrator/__tests__/council-manager.test.d.ts +0 -1
  296. package/dist/src/orchestrator/__tests__/council-manager.test.js +0 -148
  297. package/dist/src/orchestrator/__tests__/cross-turn-dedup.test.d.ts +0 -1
  298. package/dist/src/orchestrator/__tests__/cross-turn-dedup.test.js +0 -175
  299. package/dist/src/orchestrator/__tests__/current-call-id.test.d.ts +0 -16
  300. package/dist/src/orchestrator/__tests__/current-call-id.test.js +0 -138
  301. package/dist/src/orchestrator/__tests__/delegations.test.d.ts +0 -1
  302. package/dist/src/orchestrator/__tests__/delegations.test.js +0 -96
  303. package/dist/src/orchestrator/__tests__/error-forensics.test.d.ts +0 -1
  304. package/dist/src/orchestrator/__tests__/error-forensics.test.js +0 -93
  305. package/dist/src/orchestrator/__tests__/flow-resume.test.d.ts +0 -5
  306. package/dist/src/orchestrator/__tests__/flow-resume.test.js +0 -61
  307. package/dist/src/orchestrator/__tests__/humanize-api-error.test.d.ts +0 -1
  308. package/dist/src/orchestrator/__tests__/humanize-api-error.test.js +0 -68
  309. package/dist/src/orchestrator/__tests__/mcp-capability-block.test.d.ts +0 -1
  310. package/dist/src/orchestrator/__tests__/mcp-capability-block.test.js +0 -39
  311. package/dist/src/orchestrator/__tests__/message-processor.test.d.ts +0 -1
  312. package/dist/src/orchestrator/__tests__/message-processor.test.js +0 -189
  313. package/dist/src/orchestrator/__tests__/message-write-ahead.test.d.ts +0 -22
  314. package/dist/src/orchestrator/__tests__/message-write-ahead.test.js +0 -149
  315. package/dist/src/orchestrator/__tests__/project-stack.test.d.ts +0 -1
  316. package/dist/src/orchestrator/__tests__/project-stack.test.js +0 -65
  317. package/dist/src/orchestrator/__tests__/prompts.test.d.ts +0 -1
  318. package/dist/src/orchestrator/__tests__/prompts.test.js +0 -88
  319. package/dist/src/orchestrator/__tests__/read-path-budget.test.d.ts +0 -1
  320. package/dist/src/orchestrator/__tests__/read-path-budget.test.js +0 -156
  321. package/dist/src/orchestrator/__tests__/retry-classifier.test.d.ts +0 -1
  322. package/dist/src/orchestrator/__tests__/retry-classifier.test.js +0 -112
  323. package/dist/src/orchestrator/__tests__/retry-stream.test.d.ts +0 -1
  324. package/dist/src/orchestrator/__tests__/retry-stream.test.js +0 -151
  325. package/dist/src/orchestrator/__tests__/route-feedback.test.d.ts +0 -1
  326. package/dist/src/orchestrator/__tests__/route-feedback.test.js +0 -47
  327. package/dist/src/orchestrator/__tests__/stream-runner.test.d.ts +0 -1
  328. package/dist/src/orchestrator/__tests__/stream-runner.test.js +0 -202
  329. package/dist/src/orchestrator/__tests__/sub-agent-model-tier.test.d.ts +0 -1
  330. package/dist/src/orchestrator/__tests__/sub-agent-model-tier.test.js +0 -45
  331. package/dist/src/orchestrator/__tests__/sub-session-delegation.test.d.ts +0 -1
  332. package/dist/src/orchestrator/__tests__/sub-session-delegation.test.js +0 -507
  333. package/dist/src/orchestrator/__tests__/usage-events-shape.test.d.ts +0 -8
  334. package/dist/src/orchestrator/__tests__/usage-events-shape.test.js +0 -58
  335. package/dist/src/orchestrator/__tests__/usage-normalizer-c1.test.d.ts +0 -21
  336. package/dist/src/orchestrator/__tests__/usage-normalizer-c1.test.js +0 -155
  337. package/dist/src/orchestrator/__tests__/usage-shape-threading.test.d.ts +0 -1
  338. package/dist/src/orchestrator/__tests__/usage-shape-threading.test.js +0 -98
  339. package/dist/src/orchestrator/__tests__/write-ahead.test.d.ts +0 -20
  340. package/dist/src/orchestrator/__tests__/write-ahead.test.js +0 -134
  341. package/dist/src/orchestrator/abort.test.d.ts +0 -1
  342. package/dist/src/orchestrator/abort.test.js +0 -34
  343. package/dist/src/orchestrator/agent.test.d.ts +0 -1
  344. package/dist/src/orchestrator/agent.test.js +0 -178
  345. package/dist/src/orchestrator/cleanup.test.d.ts +0 -1
  346. package/dist/src/orchestrator/cleanup.test.js +0 -67
  347. package/dist/src/orchestrator/compaction.test.d.ts +0 -1
  348. package/dist/src/orchestrator/compaction.test.js +0 -187
  349. package/dist/src/orchestrator/delegations.test.d.ts +0 -1
  350. package/dist/src/orchestrator/delegations.test.js +0 -107
  351. package/dist/src/orchestrator/grounding-check.test.d.ts +0 -1
  352. package/dist/src/orchestrator/grounding-check.test.js +0 -94
  353. package/dist/src/orchestrator/interrupted-turn.test.d.ts +0 -1
  354. package/dist/src/orchestrator/interrupted-turn.test.js +0 -34
  355. package/dist/src/orchestrator/message-seq.test.d.ts +0 -1
  356. package/dist/src/orchestrator/message-seq.test.js +0 -24
  357. package/dist/src/orchestrator/pending-calls.test.d.ts +0 -1
  358. package/dist/src/orchestrator/pending-calls.test.js +0 -188
  359. package/dist/src/orchestrator/provider-options-shape.spec.d.ts +0 -1
  360. package/dist/src/orchestrator/provider-options-shape.spec.js +0 -63
  361. package/dist/src/orchestrator/reasoning.test.d.ts +0 -1
  362. package/dist/src/orchestrator/reasoning.test.js +0 -101
  363. package/dist/src/orchestrator/repetition-detector.test.d.ts +0 -1
  364. package/dist/src/orchestrator/repetition-detector.test.js +0 -103
  365. package/dist/src/orchestrator/sandbox.test.d.ts +0 -1
  366. package/dist/src/orchestrator/sandbox.test.js +0 -99
  367. package/dist/src/orchestrator/scope-ceiling.test.d.ts +0 -13
  368. package/dist/src/orchestrator/scope-ceiling.test.js +0 -181
  369. package/dist/src/orchestrator/scope-reminder.test.d.ts +0 -15
  370. package/dist/src/orchestrator/scope-reminder.test.js +0 -225
  371. package/dist/src/orchestrator/session-experience.test.d.ts +0 -6
  372. package/dist/src/orchestrator/session-experience.test.js +0 -72
  373. package/dist/src/orchestrator/stall-rescue.test.d.ts +0 -1
  374. package/dist/src/orchestrator/stall-rescue.test.js +0 -117
  375. package/dist/src/orchestrator/stall-watchdog.test.d.ts +0 -1
  376. package/dist/src/orchestrator/stall-watchdog.test.js +0 -153
  377. package/dist/src/orchestrator/steer-inbox.test.d.ts +0 -1
  378. package/dist/src/orchestrator/steer-inbox.test.js +0 -33
  379. package/dist/src/orchestrator/sub-agent-cap.test.d.ts +0 -1
  380. package/dist/src/orchestrator/sub-agent-cap.test.js +0 -208
  381. package/dist/src/orchestrator/subagent-compactor.spec.d.ts +0 -1
  382. package/dist/src/orchestrator/subagent-compactor.spec.js +0 -636
  383. package/dist/src/orchestrator/text-tool-call-detector.test.d.ts +0 -1
  384. package/dist/src/orchestrator/text-tool-call-detector.test.js +0 -147
  385. package/dist/src/orchestrator/token-counter.test.d.ts +0 -1
  386. package/dist/src/orchestrator/token-counter.test.js +0 -57
  387. package/dist/src/orchestrator/tool-args-hash.test.d.ts +0 -1
  388. package/dist/src/orchestrator/tool-args-hash.test.js +0 -105
  389. package/dist/src/orchestrator/tool-args-repair.test.d.ts +0 -1
  390. package/dist/src/orchestrator/tool-args-repair.test.js +0 -136
  391. package/dist/src/orchestrator/tool-loop-askcard.test.d.ts +0 -1
  392. package/dist/src/orchestrator/tool-loop-askcard.test.js +0 -71
  393. package/dist/src/orchestrator/tool-loop-cap.test.d.ts +0 -1
  394. package/dist/src/orchestrator/tool-loop-cap.test.js +0 -176
  395. package/dist/src/orchestrator/tool-repetition-detector.test.d.ts +0 -1
  396. package/dist/src/orchestrator/tool-repetition-detector.test.js +0 -101
  397. package/dist/src/pil/__tests__/budget.test.d.ts +0 -1
  398. package/dist/src/pil/__tests__/budget.test.js +0 -33
  399. package/dist/src/pil/__tests__/clarity-gate.test.d.ts +0 -1
  400. package/dist/src/pil/__tests__/clarity-gate.test.js +0 -37
  401. package/dist/src/pil/__tests__/config.test.d.ts +0 -1
  402. package/dist/src/pil/__tests__/config.test.js +0 -57
  403. package/dist/src/pil/__tests__/discovery-cache.test.d.ts +0 -1
  404. package/dist/src/pil/__tests__/discovery-cache.test.js +0 -38
  405. package/dist/src/pil/__tests__/discovery-types.test.d.ts +0 -1
  406. package/dist/src/pil/__tests__/discovery-types.test.js +0 -65
  407. package/dist/src/pil/__tests__/discovery.test.d.ts +0 -1
  408. package/dist/src/pil/__tests__/discovery.test.js +0 -178
  409. package/dist/src/pil/__tests__/dual-run.test.d.ts +0 -1
  410. package/dist/src/pil/__tests__/dual-run.test.js +0 -51
  411. package/dist/src/pil/__tests__/layer1-intent-trace.test.d.ts +0 -1
  412. package/dist/src/pil/__tests__/layer1-intent-trace.test.js +0 -138
  413. package/dist/src/pil/__tests__/layer1-intent.test.d.ts +0 -1
  414. package/dist/src/pil/__tests__/layer1-intent.test.js +0 -329
  415. package/dist/src/pil/__tests__/layer15-context-scan.test.d.ts +0 -1
  416. package/dist/src/pil/__tests__/layer15-context-scan.test.js +0 -64
  417. package/dist/src/pil/__tests__/layer16-clarity.test.d.ts +0 -1
  418. package/dist/src/pil/__tests__/layer16-clarity.test.js +0 -72
  419. package/dist/src/pil/__tests__/layer17-feasibility.test.d.ts +0 -1
  420. package/dist/src/pil/__tests__/layer17-feasibility.test.js +0 -36
  421. package/dist/src/pil/__tests__/layer18-acceptance.test.d.ts +0 -1
  422. package/dist/src/pil/__tests__/layer18-acceptance.test.js +0 -18
  423. package/dist/src/pil/__tests__/layer2-personality.test.d.ts +0 -1
  424. package/dist/src/pil/__tests__/layer2-personality.test.js +0 -57
  425. package/dist/src/pil/__tests__/layer2_5-ponytail.test.d.ts +0 -1
  426. package/dist/src/pil/__tests__/layer2_5-ponytail.test.js +0 -53
  427. package/dist/src/pil/__tests__/layer3-ee-injection.test.d.ts +0 -1
  428. package/dist/src/pil/__tests__/layer3-ee-injection.test.js +0 -221
  429. package/dist/src/pil/__tests__/layer3-injected-chunk.test.d.ts +0 -1
  430. package/dist/src/pil/__tests__/layer3-injected-chunk.test.js +0 -134
  431. package/dist/src/pil/__tests__/layer4-gsd.test.d.ts +0 -1
  432. package/dist/src/pil/__tests__/layer4-gsd.test.js +0 -191
  433. package/dist/src/pil/__tests__/layer5-context.test.d.ts +0 -1
  434. package/dist/src/pil/__tests__/layer5-context.test.js +0 -175
  435. package/dist/src/pil/__tests__/layer6-output.test.d.ts +0 -1
  436. package/dist/src/pil/__tests__/layer6-output.test.js +0 -465
  437. package/dist/src/pil/__tests__/llm-classify.test.d.ts +0 -1
  438. package/dist/src/pil/__tests__/llm-classify.test.js +0 -275
  439. package/dist/src/pil/__tests__/native-capabilities-workbook.test.d.ts +0 -1
  440. package/dist/src/pil/__tests__/native-capabilities-workbook.test.js +0 -40
  441. package/dist/src/pil/__tests__/ollama-classify.test.d.ts +0 -1
  442. package/dist/src/pil/__tests__/ollama-classify.test.js +0 -68
  443. package/dist/src/pil/__tests__/orchestrator-integration.test.d.ts +0 -10
  444. package/dist/src/pil/__tests__/orchestrator-integration.test.js +0 -100
  445. package/dist/src/pil/__tests__/pipeline.test.d.ts +0 -1
  446. package/dist/src/pil/__tests__/pipeline.test.js +0 -188
  447. package/dist/src/pil/__tests__/renderer-coverage.test.d.ts +0 -7
  448. package/dist/src/pil/__tests__/renderer-coverage.test.js +0 -42
  449. package/dist/src/pil/__tests__/response-tools.test.d.ts +0 -1
  450. package/dist/src/pil/__tests__/response-tools.test.js +0 -242
  451. package/dist/src/pil/__tests__/schema.test.d.ts +0 -1
  452. package/dist/src/pil/__tests__/schema.test.js +0 -202
  453. package/dist/src/pil/__tests__/scoreComplexity.test.d.ts +0 -1
  454. package/dist/src/pil/__tests__/scoreComplexity.test.js +0 -119
  455. package/dist/src/pil/__tests__/scoreSufficiency.test.d.ts +0 -8
  456. package/dist/src/pil/__tests__/scoreSufficiency.test.js +0 -89
  457. package/dist/src/pil/__tests__/store.test.d.ts +0 -1
  458. package/dist/src/pil/__tests__/store.test.js +0 -44
  459. package/dist/src/pil/__tests__/surface-compaction-artifacts.test.d.ts +0 -1
  460. package/dist/src/pil/__tests__/surface-compaction-artifacts.test.js +0 -112
  461. package/dist/src/pil/__tests__/task-tier-map.test.d.ts +0 -1
  462. package/dist/src/pil/__tests__/task-tier-map.test.js +0 -33
  463. package/dist/src/pil/agent-operating-contract.test.d.ts +0 -1
  464. package/dist/src/pil/agent-operating-contract.test.js +0 -80
  465. package/dist/src/pil/cheap-model-playbook.test.d.ts +0 -1
  466. package/dist/src/pil/cheap-model-playbook.test.js +0 -160
  467. package/dist/src/pil/cheap-model-workbooks.test.d.ts +0 -1
  468. package/dist/src/pil/cheap-model-workbooks.test.js +0 -129
  469. package/dist/src/pil/layer1-intent.test.d.ts +0 -1
  470. package/dist/src/pil/layer1-intent.test.js +0 -764
  471. package/dist/src/pil/layer1_5-complexity-size.test.d.ts +0 -10
  472. package/dist/src/pil/layer1_5-complexity-size.test.js +0 -248
  473. package/dist/src/pil/session-experience-injection.test.d.ts +0 -6
  474. package/dist/src/pil/session-experience-injection.test.js +0 -79
  475. package/dist/src/pil/session-state.test.d.ts +0 -1
  476. package/dist/src/pil/session-state.test.js +0 -73
  477. package/dist/src/playbook/__tests__/directives.test.d.ts +0 -1
  478. package/dist/src/playbook/__tests__/directives.test.js +0 -115
  479. package/dist/src/product-loop/__tests__/artifact-io.test.d.ts +0 -1
  480. package/dist/src/product-loop/__tests__/artifact-io.test.js +0 -83
  481. package/dist/src/product-loop/__tests__/assumption-ledger.test.d.ts +0 -1
  482. package/dist/src/product-loop/__tests__/assumption-ledger.test.js +0 -261
  483. package/dist/src/product-loop/__tests__/backlog-builder.test.d.ts +0 -10
  484. package/dist/src/product-loop/__tests__/backlog-builder.test.js +0 -175
  485. package/dist/src/product-loop/__tests__/backlog-store.test.d.ts +0 -4
  486. package/dist/src/product-loop/__tests__/backlog-store.test.js +0 -96
  487. package/dist/src/product-loop/__tests__/cb2-retry-bonus.test.d.ts +0 -13
  488. package/dist/src/product-loop/__tests__/cb2-retry-bonus.test.js +0 -158
  489. package/dist/src/product-loop/__tests__/circuit-breakers-coverage.test.d.ts +0 -1
  490. package/dist/src/product-loop/__tests__/circuit-breakers-coverage.test.js +0 -67
  491. package/dist/src/product-loop/__tests__/circuit-breakers.test.d.ts +0 -1
  492. package/dist/src/product-loop/__tests__/circuit-breakers.test.js +0 -79
  493. package/dist/src/product-loop/__tests__/complexity-routing.spec.d.ts +0 -11
  494. package/dist/src/product-loop/__tests__/complexity-routing.spec.js +0 -240
  495. package/dist/src/product-loop/__tests__/context-policy.test.d.ts +0 -1
  496. package/dist/src/product-loop/__tests__/context-policy.test.js +0 -266
  497. package/dist/src/product-loop/__tests__/cost-preview.test.d.ts +0 -1
  498. package/dist/src/product-loop/__tests__/cost-preview.test.js +0 -111
  499. package/dist/src/product-loop/__tests__/cost-scoper.test.d.ts +0 -1
  500. package/dist/src/product-loop/__tests__/cost-scoper.test.js +0 -50
  501. package/dist/src/product-loop/__tests__/cross-run-memory.test.d.ts +0 -1
  502. package/dist/src/product-loop/__tests__/cross-run-memory.test.js +0 -168
  503. package/dist/src/product-loop/__tests__/design-output.spec.d.ts +0 -1
  504. package/dist/src/product-loop/__tests__/design-output.spec.js +0 -36
  505. package/dist/src/product-loop/__tests__/discover.test.d.ts +0 -1
  506. package/dist/src/product-loop/__tests__/discover.test.js +0 -83
  507. package/dist/src/product-loop/__tests__/discovery-context-format.test.d.ts +0 -13
  508. package/dist/src/product-loop/__tests__/discovery-context-format.test.js +0 -100
  509. package/dist/src/product-loop/__tests__/discovery-council-runner.test.d.ts +0 -1
  510. package/dist/src/product-loop/__tests__/discovery-council-runner.test.js +0 -13
  511. package/dist/src/product-loop/__tests__/discovery-detection.test.d.ts +0 -1
  512. package/dist/src/product-loop/__tests__/discovery-detection.test.js +0 -151
  513. package/dist/src/product-loop/__tests__/discovery-ecosystem.test.d.ts +0 -8
  514. package/dist/src/product-loop/__tests__/discovery-ecosystem.test.js +0 -209
  515. package/dist/src/product-loop/__tests__/discovery-integration.test.d.ts +0 -1
  516. package/dist/src/product-loop/__tests__/discovery-integration.test.js +0 -126
  517. package/dist/src/product-loop/__tests__/discovery-interview.test.d.ts +0 -1
  518. package/dist/src/product-loop/__tests__/discovery-interview.test.js +0 -394
  519. package/dist/src/product-loop/__tests__/discovery-migrations.test.d.ts +0 -1
  520. package/dist/src/product-loop/__tests__/discovery-migrations.test.js +0 -69
  521. package/dist/src/product-loop/__tests__/discovery-persistence.test.d.ts +0 -1
  522. package/dist/src/product-loop/__tests__/discovery-persistence.test.js +0 -146
  523. package/dist/src/product-loop/__tests__/discovery-prompt-parser.test.d.ts +0 -1
  524. package/dist/src/product-loop/__tests__/discovery-prompt-parser.test.js +0 -65
  525. package/dist/src/product-loop/__tests__/discovery-prompt-specificity.test.d.ts +0 -1
  526. package/dist/src/product-loop/__tests__/discovery-prompt-specificity.test.js +0 -55
  527. package/dist/src/product-loop/__tests__/discovery-recommender-ecosystem.test.d.ts +0 -9
  528. package/dist/src/product-loop/__tests__/discovery-recommender-ecosystem.test.js +0 -178
  529. package/dist/src/product-loop/__tests__/discovery-recommender.test.d.ts +0 -1
  530. package/dist/src/product-loop/__tests__/discovery-recommender.test.js +0 -316
  531. package/dist/src/product-loop/__tests__/discovery-schema.test.d.ts +0 -1
  532. package/dist/src/product-loop/__tests__/discovery-schema.test.js +0 -77
  533. package/dist/src/product-loop/__tests__/done-gate-coverage.test.d.ts +0 -1
  534. package/dist/src/product-loop/__tests__/done-gate-coverage.test.js +0 -135
  535. package/dist/src/product-loop/__tests__/done-gate.test.d.ts +0 -1
  536. package/dist/src/product-loop/__tests__/done-gate.test.js +0 -122
  537. package/dist/src/product-loop/__tests__/ee-extract-wiring.test.d.ts +0 -8
  538. package/dist/src/product-loop/__tests__/ee-extract-wiring.test.js +0 -186
  539. package/dist/src/product-loop/__tests__/extract-to-ee.test.d.ts +0 -1
  540. package/dist/src/product-loop/__tests__/extract-to-ee.test.js +0 -161
  541. package/dist/src/product-loop/__tests__/feedback-routing.test.d.ts +0 -1
  542. package/dist/src/product-loop/__tests__/feedback-routing.test.js +0 -83
  543. package/dist/src/product-loop/__tests__/gather-selectable-alts.test.d.ts +0 -15
  544. package/dist/src/product-loop/__tests__/gather-selectable-alts.test.js +0 -143
  545. package/dist/src/product-loop/__tests__/hot-path.spec.d.ts +0 -11
  546. package/dist/src/product-loop/__tests__/hot-path.spec.js +0 -146
  547. package/dist/src/product-loop/__tests__/integration.test.d.ts +0 -7
  548. package/dist/src/product-loop/__tests__/integration.test.js +0 -301
  549. package/dist/src/product-loop/__tests__/loop-driver-audit.test.d.ts +0 -1
  550. package/dist/src/product-loop/__tests__/loop-driver-audit.test.js +0 -269
  551. package/dist/src/product-loop/__tests__/loop-driver.test.d.ts +0 -1
  552. package/dist/src/product-loop/__tests__/loop-driver.test.js +0 -225
  553. package/dist/src/product-loop/__tests__/maintenance-task-synthesis.test.d.ts +0 -8
  554. package/dist/src/product-loop/__tests__/maintenance-task-synthesis.test.js +0 -67
  555. package/dist/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.d.ts +0 -13
  556. package/dist/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.js +0 -268
  557. package/dist/src/product-loop/__tests__/phase-a2-backlog-build.test.d.ts +0 -8
  558. package/dist/src/product-loop/__tests__/phase-a2-backlog-build.test.js +0 -162
  559. package/dist/src/product-loop/__tests__/phase-budget.test.d.ts +0 -1
  560. package/dist/src/product-loop/__tests__/phase-budget.test.js +0 -149
  561. package/dist/src/product-loop/__tests__/phase-orchestrator-integration.test.d.ts +0 -1
  562. package/dist/src/product-loop/__tests__/phase-orchestrator-integration.test.js +0 -138
  563. package/dist/src/product-loop/__tests__/phase-plan.test.d.ts +0 -1
  564. package/dist/src/product-loop/__tests__/phase-plan.test.js +0 -208
  565. package/dist/src/product-loop/__tests__/phase-rituals.test.d.ts +0 -1
  566. package/dist/src/product-loop/__tests__/phase-rituals.test.js +0 -174
  567. package/dist/src/product-loop/__tests__/phase-runner.test.d.ts +0 -1
  568. package/dist/src/product-loop/__tests__/phase-runner.test.js +0 -414
  569. package/dist/src/product-loop/__tests__/phase-tracker-bridge.test.d.ts +0 -1
  570. package/dist/src/product-loop/__tests__/phase-tracker-bridge.test.js +0 -67
  571. package/dist/src/product-loop/__tests__/pick-backend-stack.test.d.ts +0 -11
  572. package/dist/src/product-loop/__tests__/pick-backend-stack.test.js +0 -95
  573. package/dist/src/product-loop/__tests__/product-identity.test.d.ts +0 -1
  574. package/dist/src/product-loop/__tests__/product-identity.test.js +0 -40
  575. package/dist/src/product-loop/__tests__/progress-snapshot.test.d.ts +0 -8
  576. package/dist/src/product-loop/__tests__/progress-snapshot.test.js +0 -152
  577. package/dist/src/product-loop/__tests__/reality-anchor.test.d.ts +0 -1
  578. package/dist/src/product-loop/__tests__/reality-anchor.test.js +0 -49
  579. package/dist/src/product-loop/__tests__/repo-audit.test.d.ts +0 -1
  580. package/dist/src/product-loop/__tests__/repo-audit.test.js +0 -97
  581. package/dist/src/product-loop/__tests__/repo-brief.test.d.ts +0 -9
  582. package/dist/src/product-loop/__tests__/repo-brief.test.js +0 -132
  583. package/dist/src/product-loop/__tests__/role-memory.test.d.ts +0 -1
  584. package/dist/src/product-loop/__tests__/role-memory.test.js +0 -56
  585. package/dist/src/product-loop/__tests__/role-registry.test.d.ts +0 -1
  586. package/dist/src/product-loop/__tests__/role-registry.test.js +0 -222
  587. package/dist/src/product-loop/__tests__/role-routing-ee.test.d.ts +0 -1
  588. package/dist/src/product-loop/__tests__/role-routing-ee.test.js +0 -79
  589. package/dist/src/product-loop/__tests__/route-decision-emit.test.d.ts +0 -10
  590. package/dist/src/product-loop/__tests__/route-decision-emit.test.js +0 -222
  591. package/dist/src/product-loop/__tests__/seed-questions.test.d.ts +0 -1
  592. package/dist/src/product-loop/__tests__/seed-questions.test.js +0 -30
  593. package/dist/src/product-loop/__tests__/ship-polish.test.d.ts +0 -1
  594. package/dist/src/product-loop/__tests__/ship-polish.test.js +0 -96
  595. package/dist/src/product-loop/__tests__/sprint-planner.test.d.ts +0 -6
  596. package/dist/src/product-loop/__tests__/sprint-planner.test.js +0 -140
  597. package/dist/src/product-loop/__tests__/sprint-runner-backlog.test.d.ts +0 -8
  598. package/dist/src/product-loop/__tests__/sprint-runner-backlog.test.js +0 -221
  599. package/dist/src/product-loop/__tests__/sprint-runner-emit.test.d.ts +0 -14
  600. package/dist/src/product-loop/__tests__/sprint-runner-emit.test.js +0 -279
  601. package/dist/src/product-loop/__tests__/sprint-runner-phase-chunks.test.d.ts +0 -14
  602. package/dist/src/product-loop/__tests__/sprint-runner-phase-chunks.test.js +0 -193
  603. package/dist/src/product-loop/__tests__/sprint-runner.test.d.ts +0 -1
  604. package/dist/src/product-loop/__tests__/sprint-runner.test.js +0 -432
  605. package/dist/src/product-loop/__tests__/sprint-self-verify.test.d.ts +0 -8
  606. package/dist/src/product-loop/__tests__/sprint-self-verify.test.js +0 -73
  607. package/dist/src/product-loop/__tests__/sprint-store.test.d.ts +0 -7
  608. package/dist/src/product-loop/__tests__/sprint-store.test.js +0 -84
  609. package/dist/src/product-loop/__tests__/stakeholder-acl.test.d.ts +0 -1
  610. package/dist/src/product-loop/__tests__/stakeholder-acl.test.js +0 -83
  611. package/dist/src/product-loop/__tests__/state-md-ee-injections.test.d.ts +0 -8
  612. package/dist/src/product-loop/__tests__/state-md-ee-injections.test.js +0 -182
  613. package/dist/src/product-loop/__tests__/sufficiency-routing.spec.d.ts +0 -12
  614. package/dist/src/product-loop/__tests__/sufficiency-routing.spec.js +0 -140
  615. package/dist/src/product-loop/__tests__/typed-artifacts.test.d.ts +0 -1
  616. package/dist/src/product-loop/__tests__/typed-artifacts.test.js +0 -222
  617. package/dist/src/product-loop/__tests__/types.test.d.ts +0 -1
  618. package/dist/src/product-loop/__tests__/types.test.js +0 -79
  619. package/dist/src/product-loop/__tests__/verify-failure-threshold.test.d.ts +0 -9
  620. package/dist/src/product-loop/__tests__/verify-failure-threshold.test.js +0 -146
  621. package/dist/src/product-loop/__tests__/verify-failure-tracking.test.d.ts +0 -4
  622. package/dist/src/product-loop/__tests__/verify-failure-tracking.test.js +0 -122
  623. package/dist/src/product-loop/__tests__/verify-result.test.d.ts +0 -1
  624. package/dist/src/product-loop/__tests__/verify-result.test.js +0 -53
  625. package/dist/src/providers/__tests__/adapter-oauth-wiring.test.d.ts +0 -8
  626. package/dist/src/providers/__tests__/adapter-oauth-wiring.test.js +0 -125
  627. package/dist/src/providers/__tests__/capabilities-cosmetic.test.d.ts +0 -1
  628. package/dist/src/providers/__tests__/capabilities-cosmetic.test.js +0 -109
  629. package/dist/src/providers/__tests__/capabilities-flags.test.d.ts +0 -1
  630. package/dist/src/providers/__tests__/capabilities-flags.test.js +0 -145
  631. package/dist/src/providers/__tests__/capabilities-provider-options.test.d.ts +0 -1
  632. package/dist/src/providers/__tests__/capabilities-provider-options.test.js +0 -201
  633. package/dist/src/providers/__tests__/capabilities-sanitize.test.d.ts +0 -1
  634. package/dist/src/providers/__tests__/capabilities-sanitize.test.js +0 -60
  635. package/dist/src/providers/__tests__/capabilities.test.d.ts +0 -1
  636. package/dist/src/providers/__tests__/capabilities.test.js +0 -41
  637. package/dist/src/providers/__tests__/provider-coverage.test.d.ts +0 -1
  638. package/dist/src/providers/__tests__/provider-coverage.test.js +0 -45
  639. package/dist/src/providers/__tests__/reasoning-roundtrip.test.d.ts +0 -1
  640. package/dist/src/providers/__tests__/reasoning-roundtrip.test.js +0 -216
  641. package/dist/src/providers/__tests__/runtime-integration.test.d.ts +0 -1
  642. package/dist/src/providers/__tests__/runtime-integration.test.js +0 -93
  643. package/dist/src/providers/__tests__/runtime.test.d.ts +0 -1
  644. package/dist/src/providers/__tests__/runtime.test.js +0 -80
  645. package/dist/src/providers/__tests__/siliconflow-sse-repair.test.d.ts +0 -1
  646. package/dist/src/providers/__tests__/siliconflow-sse-repair.test.js +0 -267
  647. package/dist/src/providers/__tests__/strategies-registry.test.d.ts +0 -8
  648. package/dist/src/providers/__tests__/strategies-registry.test.js +0 -49
  649. package/dist/src/providers/__tests__/strategies-resolve.test.d.ts +0 -12
  650. package/dist/src/providers/__tests__/strategies-resolve.test.js +0 -128
  651. package/dist/src/providers/__tests__/wire-debug.test.d.ts +0 -1
  652. package/dist/src/providers/__tests__/wire-debug.test.js +0 -39
  653. package/dist/src/providers/adapter.test.d.ts +0 -1
  654. package/dist/src/providers/adapter.test.js +0 -19
  655. package/dist/src/providers/auth/__tests__/browser-flow.test.d.ts +0 -8
  656. package/dist/src/providers/auth/__tests__/browser-flow.test.js +0 -186
  657. package/dist/src/providers/auth/__tests__/device-flow.test.d.ts +0 -6
  658. package/dist/src/providers/auth/__tests__/device-flow.test.js +0 -219
  659. package/dist/src/providers/auth/__tests__/gemini-oauth.test.d.ts +0 -4
  660. package/dist/src/providers/auth/__tests__/gemini-oauth.test.js +0 -306
  661. package/dist/src/providers/auth/__tests__/grok-oauth.test.d.ts +0 -8
  662. package/dist/src/providers/auth/__tests__/grok-oauth.test.js +0 -236
  663. package/dist/src/providers/auth/__tests__/openai-oauth.test.d.ts +0 -7
  664. package/dist/src/providers/auth/__tests__/openai-oauth.test.js +0 -309
  665. package/dist/src/providers/auth/__tests__/token-store.test.d.ts +0 -7
  666. package/dist/src/providers/auth/__tests__/token-store.test.js +0 -125
  667. package/dist/src/providers/errors.test.d.ts +0 -1
  668. package/dist/src/providers/errors.test.js +0 -66
  669. package/dist/src/providers/gemini.test.d.ts +0 -1
  670. package/dist/src/providers/gemini.test.js +0 -37
  671. package/dist/src/providers/keychain.test.d.ts +0 -1
  672. package/dist/src/providers/keychain.test.js +0 -84
  673. package/dist/src/providers/mcp-vision-bridge.test.d.ts +0 -1
  674. package/dist/src/providers/mcp-vision-bridge.test.js +0 -381
  675. package/dist/src/providers/ollama.test.d.ts +0 -1
  676. package/dist/src/providers/ollama.test.js +0 -37
  677. package/dist/src/providers/openai-compatible.test.d.ts +0 -1
  678. package/dist/src/providers/openai-compatible.test.js +0 -53
  679. package/dist/src/providers/openai.test.d.ts +0 -1
  680. package/dist/src/providers/openai.test.js +0 -53
  681. package/dist/src/providers/pricing.test.d.ts +0 -1
  682. package/dist/src/providers/pricing.test.js +0 -81
  683. package/dist/src/providers/prompt-cache-key.spec.d.ts +0 -5
  684. package/dist/src/providers/prompt-cache-key.spec.js +0 -24
  685. package/dist/src/providers/runtime-mock.spec.d.ts +0 -8
  686. package/dist/src/providers/runtime-mock.spec.js +0 -69
  687. package/dist/src/providers/vision-proxy.test.d.ts +0 -1
  688. package/dist/src/providers/vision-proxy.test.js +0 -212
  689. package/dist/src/reporter/__tests__/acl-check.test.d.ts +0 -6
  690. package/dist/src/reporter/__tests__/acl-check.test.js +0 -59
  691. package/dist/src/reporter/__tests__/auto-fire.test.d.ts +0 -10
  692. package/dist/src/reporter/__tests__/auto-fire.test.js +0 -140
  693. package/dist/src/reporter/__tests__/budget.test.d.ts +0 -7
  694. package/dist/src/reporter/__tests__/budget.test.js +0 -60
  695. package/dist/src/reporter/__tests__/handlers.test.d.ts +0 -7
  696. package/dist/src/reporter/__tests__/handlers.test.js +0 -163
  697. package/dist/src/reporter/__tests__/query-router.test.d.ts +0 -6
  698. package/dist/src/reporter/__tests__/query-router.test.js +0 -90
  699. package/dist/src/router/__tests__/step-router.test.d.ts +0 -4
  700. package/dist/src/router/__tests__/step-router.test.js +0 -131
  701. package/dist/src/router/classifier/index.test.d.ts +0 -1
  702. package/dist/src/router/classifier/index.test.js +0 -29
  703. package/dist/src/router/classifier/regex.test.d.ts +0 -1
  704. package/dist/src/router/classifier/regex.test.js +0 -44
  705. package/dist/src/router/classifier/tree-sitter.test.d.ts +0 -1
  706. package/dist/src/router/classifier/tree-sitter.test.js +0 -23
  707. package/dist/src/router/cold.test.d.ts +0 -1
  708. package/dist/src/router/cold.test.js +0 -56
  709. package/dist/src/router/decide.test.d.ts +0 -1
  710. package/dist/src/router/decide.test.js +0 -198
  711. package/dist/src/router/health.test.d.ts +0 -1
  712. package/dist/src/router/health.test.js +0 -52
  713. package/dist/src/router/provider-sentinel.test.d.ts +0 -1
  714. package/dist/src/router/provider-sentinel.test.js +0 -20
  715. package/dist/src/router/role-override.test.d.ts +0 -1
  716. package/dist/src/router/role-override.test.js +0 -26
  717. package/dist/src/router/warm.test.d.ts +0 -1
  718. package/dist/src/router/warm.test.js +0 -202
  719. package/dist/src/scaffold/__tests__/continuation-prompt.test.d.ts +0 -4
  720. package/dist/src/scaffold/__tests__/continuation-prompt.test.js +0 -79
  721. package/dist/src/scaffold/__tests__/continue-as-council.spec.d.ts +0 -10
  722. package/dist/src/scaffold/__tests__/continue-as-council.spec.js +0 -102
  723. package/dist/src/scaffold/__tests__/dotnet-assembly-name.test.d.ts +0 -1
  724. package/dist/src/scaffold/__tests__/dotnet-assembly-name.test.js +0 -27
  725. package/dist/src/scaffold/__tests__/fe-scaffold-contents.test.d.ts +0 -1
  726. package/dist/src/scaffold/__tests__/fe-scaffold-contents.test.js +0 -106
  727. package/dist/src/scaffold/__tests__/init-new.smoke.spec.d.ts +0 -15
  728. package/dist/src/scaffold/__tests__/init-new.smoke.spec.js +0 -81
  729. package/dist/src/scaffold/__tests__/init-new.spec.d.ts +0 -5
  730. package/dist/src/scaffold/__tests__/init-new.spec.js +0 -378
  731. package/dist/src/scaffold/__tests__/install-bb-templates.spec.d.ts +0 -1
  732. package/dist/src/scaffold/__tests__/install-bb-templates.spec.js +0 -77
  733. package/dist/src/scaffold/__tests__/point-to-existing.spec.d.ts +0 -7
  734. package/dist/src/scaffold/__tests__/point-to-existing.spec.js +0 -94
  735. package/dist/src/self-qa/__tests__/agentic-context.test.d.ts +0 -1
  736. package/dist/src/self-qa/__tests__/agentic-context.test.js +0 -98
  737. package/dist/src/self-qa/__tests__/agentic-loop.test.d.ts +0 -1
  738. package/dist/src/self-qa/__tests__/agentic-loop.test.js +0 -62
  739. package/dist/src/self-qa/__tests__/delta-encoder.test.d.ts +0 -1
  740. package/dist/src/self-qa/__tests__/delta-encoder.test.js +0 -97
  741. package/dist/src/self-qa/__tests__/judge.test.d.ts +0 -1
  742. package/dist/src/self-qa/__tests__/judge.test.js +0 -131
  743. package/dist/src/self-qa/__tests__/scenario-planner.test.d.ts +0 -1
  744. package/dist/src/self-qa/__tests__/scenario-planner.test.js +0 -79
  745. package/dist/src/self-qa/__tests__/spec-emitter.test.d.ts +0 -1
  746. package/dist/src/self-qa/__tests__/spec-emitter.test.js +0 -62
  747. package/dist/src/storage/__tests__/hierarchical-session.test.d.ts +0 -1
  748. package/dist/src/storage/__tests__/hierarchical-session.test.js +0 -161
  749. package/dist/src/storage/__tests__/migrations.test.d.ts +0 -12
  750. package/dist/src/storage/__tests__/migrations.test.js +0 -357
  751. package/dist/src/storage/__tests__/sweep-stale-pending.test.d.ts +0 -10
  752. package/dist/src/storage/__tests__/sweep-stale-pending.test.js +0 -97
  753. package/dist/src/storage/__tests__/ui-interaction-log.test.d.ts +0 -7
  754. package/dist/src/storage/__tests__/ui-interaction-log.test.js +0 -127
  755. package/dist/src/storage/atomic-io.test.d.ts +0 -1
  756. package/dist/src/storage/atomic-io.test.js +0 -74
  757. package/dist/src/storage/config.test.d.ts +0 -1
  758. package/dist/src/storage/config.test.js +0 -29
  759. package/dist/src/storage/session-experience-store.test.d.ts +0 -5
  760. package/dist/src/storage/session-experience-store.test.js +0 -86
  761. package/dist/src/storage/tool-results.test.d.ts +0 -1
  762. package/dist/src/storage/tool-results.test.js +0 -48
  763. package/dist/src/storage/transcript-response-entry.test.d.ts +0 -1
  764. package/dist/src/storage/transcript-response-entry.test.js +0 -111
  765. package/dist/src/storage/transcript.test.d.ts +0 -1
  766. package/dist/src/storage/transcript.test.js +0 -22
  767. package/dist/src/storage/usage-cap.test.d.ts +0 -1
  768. package/dist/src/storage/usage-cap.test.js +0 -51
  769. package/dist/src/tools/__tests__/native-tools.test.d.ts +0 -1
  770. package/dist/src/tools/__tests__/native-tools.test.js +0 -59
  771. package/dist/src/tools/__tests__/vision-gate.test.d.ts +0 -1
  772. package/dist/src/tools/__tests__/vision-gate.test.js +0 -56
  773. package/dist/src/tools/bash-output-cache.test.d.ts +0 -1
  774. package/dist/src/tools/bash-output-cache.test.js +0 -89
  775. package/dist/src/tools/bash-output-integration.test.d.ts +0 -10
  776. package/dist/src/tools/bash-output-integration.test.js +0 -30
  777. package/dist/src/tools/bash.test.d.ts +0 -1
  778. package/dist/src/tools/bash.test.js +0 -90
  779. package/dist/src/tools/computer.test.d.ts +0 -1
  780. package/dist/src/tools/computer.test.js +0 -142
  781. package/dist/src/tools/file-tracker.test.d.ts +0 -1
  782. package/dist/src/tools/file-tracker.test.js +0 -77
  783. package/dist/src/tools/file.test.d.ts +0 -1
  784. package/dist/src/tools/file.test.js +0 -106
  785. package/dist/src/tools/git-safety.test.d.ts +0 -1
  786. package/dist/src/tools/git-safety.test.js +0 -155
  787. package/dist/src/tools/registry-bash-empty-command.test.d.ts +0 -13
  788. package/dist/src/tools/registry-bash-empty-command.test.js +0 -57
  789. package/dist/src/tools/registry-bash-footer.test.d.ts +0 -7
  790. package/dist/src/tools/registry-bash-footer.test.js +0 -82
  791. package/dist/src/tools/registry-ee-query.test.d.ts +0 -11
  792. package/dist/src/tools/registry-ee-query.test.js +0 -71
  793. package/dist/src/tools/registry-git-safety.test.d.ts +0 -7
  794. package/dist/src/tools/registry-git-safety.test.js +0 -103
  795. package/dist/src/tools/registry-session-repeat.test.d.ts +0 -12
  796. package/dist/src/tools/registry-session-repeat.test.js +0 -87
  797. package/dist/src/tools/registry.test.d.ts +0 -1
  798. package/dist/src/tools/registry.test.js +0 -34
  799. package/dist/src/tools/schedule.test.d.ts +0 -1
  800. package/dist/src/tools/schedule.test.js +0 -118
  801. package/dist/src/tools/todo-write-snapshot.test.d.ts +0 -1
  802. package/dist/src/tools/todo-write-snapshot.test.js +0 -43
  803. package/dist/src/ui/__tests__/markdown-render.test.d.ts +0 -1
  804. package/dist/src/ui/__tests__/markdown-render.test.js +0 -65
  805. package/dist/src/ui/__tests__/picker-providers.test.d.ts +0 -1
  806. package/dist/src/ui/__tests__/picker-providers.test.js +0 -31
  807. package/dist/src/ui/cards/__tests__/product-status-card.test.d.ts +0 -1
  808. package/dist/src/ui/cards/__tests__/product-status-card.test.js +0 -27
  809. package/dist/src/ui/components/__tests__/council-leader-bubble.test.d.ts +0 -1
  810. package/dist/src/ui/components/__tests__/council-leader-bubble.test.js +0 -14
  811. package/dist/src/ui/components/__tests__/council-message-bubble.test.d.ts +0 -1
  812. package/dist/src/ui/components/__tests__/council-message-bubble.test.js +0 -74
  813. package/dist/src/ui/components/__tests__/council-phase-timeline.test.d.ts +0 -1
  814. package/dist/src/ui/components/__tests__/council-phase-timeline.test.js +0 -51
  815. package/dist/src/ui/components/__tests__/council-placeholder-bubble.test.d.ts +0 -1
  816. package/dist/src/ui/components/__tests__/council-placeholder-bubble.test.js +0 -14
  817. package/dist/src/ui/components/__tests__/council-question-card.test.d.ts +0 -1
  818. package/dist/src/ui/components/__tests__/council-question-card.test.js +0 -121
  819. package/dist/src/ui/components/__tests__/council-synthesis-banner.test.d.ts +0 -1
  820. package/dist/src/ui/components/__tests__/council-synthesis-banner.test.js +0 -11
  821. package/dist/src/ui/components/__tests__/task-list-panel.test.d.ts +0 -1
  822. package/dist/src/ui/components/__tests__/task-list-panel.test.js +0 -31
  823. package/dist/src/ui/components/__tests__/use-pair-quote-buffer.test.d.ts +0 -1
  824. package/dist/src/ui/components/__tests__/use-pair-quote-buffer.test.js +0 -37
  825. package/dist/src/ui/slash/__tests__/clear.test.d.ts +0 -1
  826. package/dist/src/ui/slash/__tests__/clear.test.js +0 -58
  827. package/dist/src/ui/slash/__tests__/compact.test.d.ts +0 -1
  828. package/dist/src/ui/slash/__tests__/compact.test.js +0 -43
  829. package/dist/src/ui/slash/__tests__/cost.test.d.ts +0 -1
  830. package/dist/src/ui/slash/__tests__/cost.test.js +0 -54
  831. package/dist/src/ui/slash/__tests__/discuss.test.d.ts +0 -1
  832. package/dist/src/ui/slash/__tests__/discuss.test.js +0 -83
  833. package/dist/src/ui/slash/__tests__/execute.test.d.ts +0 -1
  834. package/dist/src/ui/slash/__tests__/execute.test.js +0 -71
  835. package/dist/src/ui/slash/__tests__/expand.test.d.ts +0 -1
  836. package/dist/src/ui/slash/__tests__/expand.test.js +0 -67
  837. package/dist/src/ui/slash/__tests__/ideal.test.d.ts +0 -1
  838. package/dist/src/ui/slash/__tests__/ideal.test.js +0 -158
  839. package/dist/src/ui/slash/__tests__/menu-parity.test.d.ts +0 -17
  840. package/dist/src/ui/slash/__tests__/menu-parity.test.js +0 -43
  841. package/dist/src/ui/slash/__tests__/optimize.test.d.ts +0 -1
  842. package/dist/src/ui/slash/__tests__/optimize.test.js +0 -130
  843. package/dist/src/ui/slash/__tests__/pin.test.d.ts +0 -1
  844. package/dist/src/ui/slash/__tests__/pin.test.js +0 -38
  845. package/dist/src/ui/slash/__tests__/plan.test.d.ts +0 -1
  846. package/dist/src/ui/slash/__tests__/plan.test.js +0 -82
  847. package/dist/src/ui/slash/__tests__/ponytail.test.d.ts +0 -1
  848. package/dist/src/ui/slash/__tests__/ponytail.test.js +0 -37
  849. package/dist/src/ui/slash/__tests__/status-render.test.d.ts +0 -7
  850. package/dist/src/ui/slash/__tests__/status-render.test.js +0 -77
  851. package/dist/src/ui/slash/route.test.d.ts +0 -1
  852. package/dist/src/ui/slash/route.test.js +0 -70
  853. package/dist/src/ui/status-bar/index.test.d.ts +0 -1
  854. package/dist/src/ui/status-bar/index.test.js +0 -139
  855. package/dist/src/ui/status-bar/store.test.d.ts +0 -1
  856. package/dist/src/ui/status-bar/store.test.js +0 -116
  857. package/dist/src/ui/status-bar/tier-badge.test.d.ts +0 -1
  858. package/dist/src/ui/status-bar/tier-badge.test.js +0 -34
  859. package/dist/src/ui/status-bar/usd-meter.test.d.ts +0 -1
  860. package/dist/src/ui/status-bar/usd-meter.test.js +0 -32
  861. package/dist/src/ui/utils/__tests__/format.test.d.ts +0 -1
  862. package/dist/src/ui/utils/__tests__/format.test.js +0 -50
  863. package/dist/src/ui/utils/__tests__/tools.test.d.ts +0 -1
  864. package/dist/src/ui/utils/__tests__/tools.test.js +0 -48
  865. package/dist/src/ui/utils/relaunch.test.d.ts +0 -1
  866. package/dist/src/ui/utils/relaunch.test.js +0 -133
  867. package/dist/src/ui/utils/text.test.d.ts +0 -1
  868. package/dist/src/ui/utils/text.test.js +0 -47
  869. package/dist/src/usage/__tests__/product-ledger.test.d.ts +0 -1
  870. package/dist/src/usage/__tests__/product-ledger.test.js +0 -60
  871. package/dist/src/usage/downgrade.test.d.ts +0 -1
  872. package/dist/src/usage/downgrade.test.js +0 -70
  873. package/dist/src/usage/estimator.test.d.ts +0 -1
  874. package/dist/src/usage/estimator.test.js +0 -38
  875. package/dist/src/usage/ledger.test.d.ts +0 -1
  876. package/dist/src/usage/ledger.test.js +0 -171
  877. package/dist/src/usage/midstream.test.d.ts +0 -1
  878. package/dist/src/usage/midstream.test.js +0 -47
  879. package/dist/src/usage/thresholds.test.d.ts +0 -1
  880. package/dist/src/usage/thresholds.test.js +0 -77
  881. package/dist/src/utils/__tests__/auto-council-settings.test.d.ts +0 -1
  882. package/dist/src/utils/__tests__/auto-council-settings.test.js +0 -41
  883. package/dist/src/utils/__tests__/compaction-caps.test.d.ts +0 -21
  884. package/dist/src/utils/__tests__/compaction-caps.test.js +0 -187
  885. package/dist/src/utils/__tests__/ee-logger.test.d.ts +0 -11
  886. package/dist/src/utils/__tests__/ee-logger.test.js +0 -165
  887. package/dist/src/utils/__tests__/file-lock.test.d.ts +0 -1
  888. package/dist/src/utils/__tests__/file-lock.test.js +0 -66
  889. package/dist/src/utils/__tests__/footprint-gitignore.test.d.ts +0 -1
  890. package/dist/src/utils/__tests__/footprint-gitignore.test.js +0 -50
  891. package/dist/src/utils/__tests__/llm-deadline-abort.test.d.ts +0 -1
  892. package/dist/src/utils/__tests__/llm-deadline-abort.test.js +0 -33
  893. package/dist/src/utils/__tests__/llm-deadline.test.d.ts +0 -1
  894. package/dist/src/utils/__tests__/llm-deadline.test.js +0 -68
  895. package/dist/src/utils/__tests__/logger.test.d.ts +0 -1
  896. package/dist/src/utils/__tests__/logger.test.js +0 -115
  897. package/dist/src/utils/__tests__/rate-limit.test.d.ts +0 -1
  898. package/dist/src/utils/__tests__/rate-limit.test.js +0 -38
  899. package/dist/src/utils/__tests__/settings-agent-first.test.d.ts +0 -1
  900. package/dist/src/utils/__tests__/settings-agent-first.test.js +0 -48
  901. package/dist/src/utils/__tests__/settings-disabled-models.test.d.ts +0 -7
  902. package/dist/src/utils/__tests__/settings-disabled-models.test.js +0 -99
  903. package/dist/src/utils/__tests__/settings-web-research.test.d.ts +0 -1
  904. package/dist/src/utils/__tests__/settings-web-research.test.js +0 -46
  905. package/dist/src/utils/__tests__/slugify.test.d.ts +0 -1
  906. package/dist/src/utils/__tests__/slugify.test.js +0 -37
  907. package/dist/src/utils/__tests__/visible-retry.test.d.ts +0 -1
  908. package/dist/src/utils/__tests__/visible-retry.test.js +0 -143
  909. package/dist/src/utils/install-manager.test.d.ts +0 -1
  910. package/dist/src/utils/install-manager.test.js +0 -169
  911. package/dist/src/utils/instructions.test.d.ts +0 -1
  912. package/dist/src/utils/instructions.test.js +0 -93
  913. package/dist/src/utils/open-url.test.d.ts +0 -1
  914. package/dist/src/utils/open-url.test.js +0 -86
  915. package/dist/src/utils/permission-mode.test.d.ts +0 -1
  916. package/dist/src/utils/permission-mode.test.js +0 -188
  917. package/dist/src/utils/redactor.test.d.ts +0 -1
  918. package/dist/src/utils/redactor.test.js +0 -84
  919. package/dist/src/utils/settings.test.d.ts +0 -1
  920. package/dist/src/utils/settings.test.js +0 -212
  921. package/dist/src/utils/shell.test.d.ts +0 -1
  922. package/dist/src/utils/shell.test.js +0 -97
  923. package/dist/src/utils/skills.test.d.ts +0 -1
  924. package/dist/src/utils/skills.test.js +0 -45
  925. package/dist/src/utils/subagent-display.test.d.ts +0 -1
  926. package/dist/src/utils/subagent-display.test.js +0 -21
  927. package/dist/src/utils/subagents-settings.test.d.ts +0 -1
  928. package/dist/src/utils/subagents-settings.test.js +0 -64
  929. package/dist/src/utils/telegram-audio-settings.test.d.ts +0 -1
  930. package/dist/src/utils/telegram-audio-settings.test.js +0 -39
  931. package/dist/src/utils/update-checker.test.d.ts +0 -1
  932. package/dist/src/utils/update-checker.test.js +0 -142
  933. package/dist/src/verify/__tests__/coverage-parsers.test.d.ts +0 -1
  934. package/dist/src/verify/__tests__/coverage-parsers.test.js +0 -69
  935. package/dist/src/verify/__tests__/dotnet-recipe.test.d.ts +0 -10
  936. package/dist/src/verify/__tests__/dotnet-recipe.test.js +0 -70
  937. package/dist/src/verify/checkpoint.test.d.ts +0 -1
  938. package/dist/src/verify/checkpoint.test.js +0 -160
  939. package/dist/src/verify/entrypoint.test.d.ts +0 -1
  940. package/dist/src/verify/entrypoint.test.js +0 -233
  941. package/dist/src/verify/environment.test.d.ts +0 -1
  942. package/dist/src/verify/environment.test.js +0 -94
  943. package/dist/src/verify/orchestrator.test.d.ts +0 -1
  944. package/dist/src/verify/orchestrator.test.js +0 -126
  945. package/dist/src/verify/runtime-prep.test.d.ts +0 -1
  946. package/dist/src/verify/runtime-prep.test.js +0 -38
@@ -1,175 +0,0 @@
1
- import { afterEach, describe, expect, it } from "vitest";
2
- import { CrossTurnDedup, isCrossTurnDedupEnabled, wrapToolSetWithDedup } from "../cross-turn-dedup.js";
3
- describe("CrossTurnDedup", () => {
4
- describe("maybeDedup", () => {
5
- it("returns null for the first occurrence and a stub for the second", () => {
6
- const dedup = new CrossTurnDedup();
7
- dedup.beginTurn();
8
- const payload = "x".repeat(2_000);
9
- // First call: passes through.
10
- const first = dedup.maybeDedup("read_file", payload);
11
- expect(first).toBeNull();
12
- // Second user turn — bump counter.
13
- dedup.beginTurn();
14
- const second = dedup.maybeDedup("read_file", payload);
15
- expect(second).not.toBeNull();
16
- expect(second).toContain("[dup of");
17
- expect(second).toContain("read_file");
18
- expect(second).toContain("turn 1");
19
- });
20
- it("distinct large tool outputs do not collide on sha256-16", () => {
21
- // Two large strings differing only in last char must produce different
22
- // stubs (i.e. no false-positive dedup hit). Regression coverage for the
23
- // sha1-12 → sha256-16 upgrade — at 48 bits the birthday bound made this
24
- // theoretically plausible; at 64 bits it's astronomically unlikely.
25
- const dedup = new CrossTurnDedup({ minChars: 100 });
26
- dedup.beginTurn();
27
- const a = "A".repeat(2_000);
28
- const b = `${"A".repeat(1_999)}B`;
29
- expect(dedup.maybeDedup("read_file", a)).toBeNull();
30
- // Distinct content must NOT hit the cache.
31
- expect(dedup.maybeDedup("read_file", b)).toBeNull();
32
- // Two distinct payloads → two distinct cache entries (verified via
33
- // cache size since the marker no longer embeds the hash post-G3).
34
- expect(dedup.getStats().size).toBe(2);
35
- // Re-emitting either payload now triggers a dedup hit.
36
- const stubA = dedup.maybeDedup("read_file", a);
37
- const stubB = dedup.maybeDedup("read_file", b);
38
- expect(stubA).not.toBeNull();
39
- expect(stubB).not.toBeNull();
40
- expect(dedup.getStats().hits).toBe(2);
41
- });
42
- it("does not dedup different outputs", () => {
43
- const dedup = new CrossTurnDedup();
44
- dedup.beginTurn();
45
- const a = "a".repeat(1_000);
46
- const b = "b".repeat(1_000);
47
- expect(dedup.maybeDedup("read_file", a)).toBeNull();
48
- expect(dedup.maybeDedup("read_file", b)).toBeNull();
49
- // Re-run yields a hit for a, miss for c.
50
- expect(dedup.maybeDedup("read_file", a)).not.toBeNull();
51
- const c = "c".repeat(1_000);
52
- expect(dedup.maybeDedup("read_file", c)).toBeNull();
53
- });
54
- it("skips outputs below the min-chars threshold", () => {
55
- const dedup = new CrossTurnDedup({ minChars: 500 });
56
- dedup.beginTurn();
57
- const small = "y".repeat(100);
58
- expect(dedup.maybeDedup("bash", small)).toBeNull();
59
- expect(dedup.maybeDedup("bash", small)).toBeNull();
60
- expect(dedup.getStats().inserts).toBe(0);
61
- expect(dedup.getStats().hits).toBe(0);
62
- });
63
- it("evicts oldest entry after exceeding maxEntries", () => {
64
- const dedup = new CrossTurnDedup({ maxEntries: 3, minChars: 10 });
65
- dedup.beginTurn();
66
- // Insert 4 distinct payloads — first should be evicted.
67
- const payloads = ["A", "B", "C", "D"].map((c) => c.repeat(50));
68
- for (const p of payloads)
69
- expect(dedup.maybeDedup("read_file", p)).toBeNull();
70
- expect(dedup.getStats().size).toBe(3);
71
- // First payload should no longer be cached (evicted) — re-running it
72
- // returns null, not a stub.
73
- expect(dedup.maybeDedup("read_file", payloads[0])).toBeNull();
74
- // Latest payload should still be cached — re-running returns a stub.
75
- expect(dedup.maybeDedup("read_file", payloads[3])).not.toBeNull();
76
- });
77
- it("no-ops when constructed with enabled=false", () => {
78
- const dedup = new CrossTurnDedup({ enabled: false });
79
- dedup.beginTurn();
80
- const payload = "z".repeat(2_000);
81
- expect(dedup.maybeDedup("read_file", payload)).toBeNull();
82
- expect(dedup.maybeDedup("read_file", payload)).toBeNull();
83
- expect(dedup.getStats().inserts).toBe(0);
84
- expect(dedup.getStats().hits).toBe(0);
85
- });
86
- });
87
- describe("isCrossTurnDedupEnabled", () => {
88
- const original = process.env.MUONROI_CROSS_TURN_DEDUP;
89
- afterEach(() => {
90
- if (original === undefined)
91
- delete process.env.MUONROI_CROSS_TURN_DEDUP;
92
- else
93
- process.env.MUONROI_CROSS_TURN_DEDUP = original;
94
- });
95
- it("defaults to enabled", () => {
96
- delete process.env.MUONROI_CROSS_TURN_DEDUP;
97
- expect(isCrossTurnDedupEnabled()).toBe(true);
98
- });
99
- it("respects MUONROI_CROSS_TURN_DEDUP=0", () => {
100
- process.env.MUONROI_CROSS_TURN_DEDUP = "0";
101
- expect(isCrossTurnDedupEnabled()).toBe(false);
102
- });
103
- it("respects MUONROI_CROSS_TURN_DEDUP=false", () => {
104
- process.env.MUONROI_CROSS_TURN_DEDUP = "false";
105
- expect(isCrossTurnDedupEnabled()).toBe(false);
106
- });
107
- });
108
- describe("wrapToolSetWithDedup", () => {
109
- function makeTool(returnValue) {
110
- return {
111
- description: "test tool",
112
- inputSchema: { type: "object", properties: {} },
113
- execute: async () => returnValue,
114
- // biome-ignore lint: minimal AI ToolSet shape used by the wrapper only
115
- };
116
- }
117
- it("returns the same tool set when dedup is null", () => {
118
- const tools = { read_file: makeTool("payload") };
119
- expect(wrapToolSetWithDedup(tools, null)).toBe(tools);
120
- });
121
- it("dedups string outputs across calls", async () => {
122
- const dedup = new CrossTurnDedup({ minChars: 10 });
123
- dedup.beginTurn();
124
- const payload = "p".repeat(1_000);
125
- const tools = { read_file: makeTool(payload) };
126
- const wrapped = wrapToolSetWithDedup(tools, dedup);
127
- const exec = wrapped.read_file.execute;
128
- const first = await exec({});
129
- expect(first).toBe(payload);
130
- const second = (await exec({}));
131
- expect(second).not.toBe(payload);
132
- expect(second).toContain("[dup of");
133
- });
134
- it("dedups the .output field on object-shaped results", async () => {
135
- const dedup = new CrossTurnDedup({ minChars: 10 });
136
- dedup.beginTurn();
137
- const payload = "q".repeat(1_000);
138
- const tools = { read_file: makeTool({ success: true, output: payload }) };
139
- const wrapped = wrapToolSetWithDedup(tools, dedup);
140
- const exec = wrapped.read_file.execute;
141
- const first = (await exec({}));
142
- expect(first.output).toBe(payload);
143
- const second = (await exec({}));
144
- expect(second.output).toContain("[dup of");
145
- });
146
- it("dedups MCP content-array text parts across calls", async () => {
147
- // MCP results are { type: "content", value: [{type:"text", text}] } — a
148
- // shape the dedup previously ignored, so re-fetching the same MCP payload
149
- // (e.g. the same docs page) re-billed full content every turn.
150
- const dedup = new CrossTurnDedup({ minChars: 10 });
151
- dedup.beginTurn();
152
- const payload = "r".repeat(1_000);
153
- const tools = {
154
- mcp_docs__fetch: makeTool({ type: "content", value: [{ type: "text", text: payload }] }),
155
- };
156
- const wrapped = wrapToolSetWithDedup(tools, dedup);
157
- const exec = wrapped.mcp_docs__fetch.execute;
158
- const first = (await exec({}));
159
- expect(first.value[0].text).toBe(payload);
160
- const second = (await exec({}));
161
- expect(second.value[0].text).toContain("[dup of");
162
- });
163
- it("leaves non-text MCP content parts (images) untouched", async () => {
164
- const dedup = new CrossTurnDedup({ minChars: 10 });
165
- dedup.beginTurn();
166
- const image = { type: "image", data: "BASE64", mediaType: "image/png" };
167
- const tools = { mcp_x__shot: makeTool({ type: "content", value: [image] }) };
168
- const wrapped = wrapToolSetWithDedup(tools, dedup);
169
- const exec = wrapped.mcp_x__shot.execute;
170
- const out = (await exec({}));
171
- expect(out.value[0]).toEqual(image);
172
- });
173
- });
174
- });
175
- //# sourceMappingURL=cross-turn-dedup.test.js.map
@@ -1,16 +0,0 @@
1
- /**
2
- * current-call-id.test.ts — Phase 6.9a unit tests.
3
- *
4
- * Verifies the _currentCallId state machine semantics for llm-token / llm-done
5
- * correlationId pairing. Instead of instantiating the full Agent class (which
6
- * has >20 private deps + AI SDK), this test validates the INVARIANTS that must
7
- * hold true in the emitted events:
8
- *
9
- * 1. correlationId on llm-done is a valid non-empty UUID.
10
- * 2. Two consecutive llm-done emits have DIFFERENT correlationIds.
11
- * 3. llm-token events emitted between start and done share the same correlationId.
12
- *
13
- * These invariants are tested by simulating the emit sequence directly —
14
- * the same logic the orchestrator executes at runtime.
15
- */
16
- export {};
@@ -1,138 +0,0 @@
1
- /**
2
- * current-call-id.test.ts — Phase 6.9a unit tests.
3
- *
4
- * Verifies the _currentCallId state machine semantics for llm-token / llm-done
5
- * correlationId pairing. Instead of instantiating the full Agent class (which
6
- * has >20 private deps + AI SDK), this test validates the INVARIANTS that must
7
- * hold true in the emitted events:
8
- *
9
- * 1. correlationId on llm-done is a valid non-empty UUID.
10
- * 2. Two consecutive llm-done emits have DIFFERENT correlationIds.
11
- * 3. llm-token events emitted between start and done share the same correlationId.
12
- *
13
- * These invariants are tested by simulating the emit sequence directly —
14
- * the same logic the orchestrator executes at runtime.
15
- */
16
- import { describe, expect, it } from "vitest";
17
- // ---------------------------------------------------------------------------
18
- // Simulate the _currentCallId state machine in isolation.
19
- // This mirrors exactly what the orchestrator does:
20
- // 1. _currentCallId = crypto.randomUUID() (before streamText)
21
- // 2. emitEvent({ kind: "llm-token", correlationId: _currentCallId, ... }) (per token)
22
- // 3. emitEvent({ kind: "llm-done", correlationId: _currentCallId, ... }) (onFinish)
23
- // 4. _currentCallId = "" (clear after done)
24
- // ---------------------------------------------------------------------------
25
- function UUID_PATTERN() {
26
- return /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
27
- }
28
- /** Minimal simulation of one streamText call lifecycle. */
29
- function simulateStreamTextCall(emitEvent, tokenCount = 3) {
30
- // Step 1: assign fresh correlation ID (mirrors orchestrator line 1332 / 3873)
31
- let currentCallId = crypto.randomUUID();
32
- const callId = currentCallId; // capture for verification
33
- // Step 2: emit llm-token per delta (mirrors orchestrator lines 1384–1408)
34
- for (let i = 0; i < tokenCount; i++) {
35
- try {
36
- emitEvent({ t: "event", kind: "llm-token", correlationId: currentCallId, delta: `tok${i}`, tokenIndex: i });
37
- }
38
- catch {
39
- /* best-effort */
40
- }
41
- }
42
- // Step 3: onFinish — emit llm-done then clear (mirrors orchestrator lines 1360–1374 / 3920–3930)
43
- try {
44
- emitEvent({
45
- t: "event",
46
- kind: "llm-done",
47
- correlationId: currentCallId,
48
- totalChars: tokenCount * 4,
49
- finishReason: "stop",
50
- });
51
- }
52
- catch {
53
- /* best-effort */
54
- }
55
- currentCallId = ""; // cleared after done
56
- // After clear, callId is "" — use the captured pre-clear value for return
57
- void currentCallId; // verify it was cleared
58
- return callId;
59
- }
60
- // ---------------------------------------------------------------------------
61
- // Tests
62
- // ---------------------------------------------------------------------------
63
- describe("_currentCallId state machine — invariant 1: correlationId is a valid UUID", () => {
64
- it("llm-done correlationId is a valid UUID v4", () => {
65
- const emitted = [];
66
- simulateStreamTextCall((e) => emitted.push(e));
67
- const done = emitted.find((e) => e.kind === "llm-done");
68
- expect(done).toBeDefined();
69
- expect(typeof done.correlationId).toBe("string");
70
- expect(done.correlationId).toMatch(UUID_PATTERN());
71
- expect(done.correlationId).not.toBe("");
72
- });
73
- it("llm-token correlationId is a valid UUID v4", () => {
74
- const emitted = [];
75
- simulateStreamTextCall((e) => emitted.push(e), 2);
76
- const tokens = emitted.filter((e) => e.kind === "llm-token");
77
- expect(tokens.length).toBe(2);
78
- for (const t of tokens) {
79
- expect(t.correlationId).toMatch(UUID_PATTERN());
80
- }
81
- });
82
- });
83
- describe("_currentCallId state machine — invariant 2: different correlationId per call", () => {
84
- it("two consecutive calls produce different correlationIds", () => {
85
- const emitted = [];
86
- const id1 = simulateStreamTextCall((e) => emitted.push(e));
87
- const id2 = simulateStreamTextCall((e) => emitted.push(e));
88
- expect(id1).not.toBe(id2);
89
- expect(id1).toMatch(UUID_PATTERN());
90
- expect(id2).toMatch(UUID_PATTERN());
91
- });
92
- it("correlationId is unique across 10 sequential calls", () => {
93
- const ids = new Set();
94
- for (let i = 0; i < 10; i++) {
95
- const id = simulateStreamTextCall(() => { });
96
- ids.add(id);
97
- }
98
- expect(ids.size).toBe(10); // all unique
99
- });
100
- });
101
- describe("_currentCallId state machine — invariant 3: tokens share correlationId with their done", () => {
102
- it("all llm-token events share the same correlationId as llm-done", () => {
103
- const emitted = [];
104
- simulateStreamTextCall((e) => emitted.push(e), 5);
105
- const done = emitted.find((e) => e.kind === "llm-done");
106
- const tokens = emitted.filter((e) => e.kind === "llm-token");
107
- expect(done).toBeDefined();
108
- expect(tokens.length).toBe(5);
109
- for (const t of tokens) {
110
- expect(t.correlationId).toBe(done.correlationId);
111
- }
112
- });
113
- it("tokens from call1 do NOT share correlationId with call2", () => {
114
- const call1 = [];
115
- const call2 = [];
116
- simulateStreamTextCall((e) => call1.push(e), 3);
117
- simulateStreamTextCall((e) => call2.push(e), 3);
118
- const call1Id = call1.find((e) => e.kind === "llm-done").correlationId;
119
- const call2Id = call2.find((e) => e.kind === "llm-done").correlationId;
120
- expect(call1Id).not.toBe(call2Id);
121
- for (const t of call1.filter((e) => e.kind === "llm-token")) {
122
- expect(t.correlationId).toBe(call1Id);
123
- }
124
- for (const t of call2.filter((e) => e.kind === "llm-token")) {
125
- expect(t.correlationId).toBe(call2Id);
126
- }
127
- });
128
- });
129
- describe("_currentCallId state machine — cleared to empty after done", () => {
130
- it("callId captured before done is non-empty; cleared value after done would be empty", () => {
131
- // The orchestrator sets currentCallId = "" after emitting llm-done.
132
- // We verify the captured callId (before clear) is non-empty and UUID-shaped.
133
- const callId = simulateStreamTextCall(() => { });
134
- expect(callId).toMatch(UUID_PATTERN()); // was non-empty UUID before clear
135
- expect(callId).not.toBe(""); // was not already empty
136
- });
137
- });
138
- //# sourceMappingURL=current-call-id.test.js.map
@@ -1 +0,0 @@
1
- export {};
@@ -1,96 +0,0 @@
1
- import { createHash } from "crypto";
2
- import { promises as fs } from "fs";
3
- import os from "os";
4
- import path from "path";
5
- import { describe, expect, it } from "vitest";
6
- import { DelegationManager } from "../delegations.js";
7
- function getProjectId(cwd) {
8
- const base = path
9
- .basename(cwd)
10
- .replace(/[^a-zA-Z0-9._-]+/g, "-")
11
- .replace(/^-+|-+$/g, "") || "project";
12
- const hash = createHash("sha1").update(cwd).digest("hex").slice(0, 10);
13
- return `${base}-${hash}`;
14
- }
15
- async function getDelegationsDir(cwd) {
16
- const projectId = getProjectId(cwd);
17
- return path.join(os.homedir(), ".muonroi-cli", "delegations", projectId);
18
- }
19
- describe("DelegationManager.kill", () => {
20
- it("terminates a running delegation and updates its status to error", async () => {
21
- const tempCwd = path.join(os.tmpdir(), "muonroi-test-" + Math.random().toString(36).slice(2));
22
- const manager = new DelegationManager(() => tempCwd);
23
- const dir = await getDelegationsDir(tempCwd);
24
- await fs.mkdir(dir, { recursive: true });
25
- const id = "test-amber-panda";
26
- const jobPath = path.join(dir, `${id}.json`);
27
- const outputPath = path.join(dir, `${id}.md`);
28
- // Create a mock running delegation
29
- const record = {
30
- id,
31
- agent: "explore",
32
- description: "test delegation",
33
- prompt: "noop",
34
- cwd: tempCwd,
35
- model: "grok-4",
36
- sandboxMode: "off",
37
- maxToolRounds: 10,
38
- maxTokens: 4000,
39
- status: "running",
40
- startedAt: new Date().toISOString(),
41
- outputPath,
42
- pid: 99999, // dummy PID
43
- };
44
- await fs.writeFile(jobPath, JSON.stringify(record, null, 2), "utf8");
45
- // Call cancel
46
- const result = await manager.kill(id);
47
- expect(result.success).toBe(true);
48
- expect(result.output).toContain(`Delegation "${id}" (PID: 99999) has been terminated.`);
49
- // Verify the record was updated
50
- const updatedRaw = await fs.readFile(jobPath, "utf8");
51
- const updated = JSON.parse(updatedRaw);
52
- expect(updated.status).toBe("error");
53
- expect(updated.error).toBe("Cancelled by user.");
54
- // Cleanup
55
- await fs.rm(jobPath, { force: true });
56
- await fs.rm(outputPath, { force: true });
57
- await fs.rm(dir, { recursive: true, force: true });
58
- });
59
- it("returns failure if the delegation ID is not found", async () => {
60
- const tempCwd = path.join(os.tmpdir(), "muonroi-test-" + Math.random().toString(36).slice(2));
61
- const manager = new DelegationManager(() => tempCwd);
62
- const result = await manager.kill("non-existent-id");
63
- expect(result.success).toBe(false);
64
- expect(result.output).toContain('Delegation "non-existent-id" not found.');
65
- });
66
- it("returns failure if the delegation is already finished", async () => {
67
- const tempCwd = path.join(os.tmpdir(), "muonroi-test-" + Math.random().toString(36).slice(2));
68
- const manager = new DelegationManager(() => tempCwd);
69
- const dir = await getDelegationsDir(tempCwd);
70
- await fs.mkdir(dir, { recursive: true });
71
- const id = "test-steady-owl";
72
- const jobPath = path.join(dir, `${id}.json`);
73
- const record = {
74
- id,
75
- agent: "explore",
76
- description: "test delegation",
77
- prompt: "noop",
78
- cwd: tempCwd,
79
- model: "grok-4",
80
- sandboxMode: "off",
81
- maxToolRounds: 10,
82
- maxTokens: 4000,
83
- status: "complete",
84
- startedAt: new Date().toISOString(),
85
- outputPath: path.join(dir, `${id}.md`),
86
- };
87
- await fs.writeFile(jobPath, JSON.stringify(record, null, 2), "utf8");
88
- const result = await manager.kill(id);
89
- expect(result.success).toBe(false);
90
- expect(result.output).toContain(`Delegation "${id}" is not running (status: complete).`);
91
- // Cleanup
92
- await fs.rm(jobPath, { force: true });
93
- await fs.rm(dir, { recursive: true, force: true });
94
- });
95
- });
96
- //# sourceMappingURL=delegations.test.js.map
@@ -1,93 +0,0 @@
1
- /**
2
- * Forensics envelope for opaque provider 4xx errors.
3
- *
4
- * Background: 16 occurrences in interaction_logs of
5
- * "The parameter is invalid. Please check again."
6
- * (siliconflow / DeepSeek-V4-Flash, 2026-05-13 → 2026-05-14) were logged with
7
- * ONLY the friendly message. With nothing else captured — no status code,
8
- * no response body, no request param names — the cause is unrecoverable
9
- * without a repro. summarizeApiErrorForLog closes that gap.
10
- *
11
- * Test goals:
12
- * 1. Wire-shape we WANT to persist (statusCode, urlHost, body trunc, param keys).
13
- * 2. NEVER persist request param VALUES (might contain secrets / PII).
14
- * 3. Cap response body so a 1MB error response can't bloat interaction_logs.
15
- * 4. Identity null on non-APICallError so the helper is safe to call
16
- * unconditionally from the log site.
17
- */
18
- import { APICallError } from "@ai-sdk/provider";
19
- import { describe, expect, it } from "vitest";
20
- import { summarizeApiErrorForLog } from "../error-utils.js";
21
- describe("summarizeApiErrorForLog", () => {
22
- it("captures the wire envelope for an APICallError without leaking param values", () => {
23
- const err = new APICallError({
24
- message: "The parameter is invalid. Please check again.",
25
- url: "https://api.siliconflow.com/v1/chat/completions",
26
- requestBodyValues: {
27
- model: "deepseek-ai/DeepSeek-V4-Flash",
28
- messages: [{ role: "user", content: "secret prompt" }],
29
- temperature: 0.7,
30
- tools: [{ type: "function", function: { name: "read_file" } }],
31
- },
32
- statusCode: 400,
33
- responseBody: '{"error":{"message":"The parameter is invalid. Please check again.","code":20015}}',
34
- isRetryable: false,
35
- });
36
- const out = summarizeApiErrorForLog(err);
37
- expect(out).not.toBeNull();
38
- expect(out.statusCode).toBe(400);
39
- expect(out.urlHost).toBe("api.siliconflow.com");
40
- expect(out.responseBodyTrunc).toBe('{"error":{"message":"The parameter is invalid. Please check again.","code":20015}}');
41
- // Keys ONLY — values must never reach the log.
42
- expect(out.requestParamKeys).toEqual(["messages", "model", "temperature", "tools"]);
43
- // Confirm no value leak by stringifying the whole envelope.
44
- const serialized = JSON.stringify(out);
45
- expect(serialized).not.toContain("secret prompt");
46
- expect(serialized).not.toContain("DeepSeek-V4-Flash");
47
- expect(serialized).not.toContain("read_file");
48
- expect(out.isRetryable).toBe(false);
49
- });
50
- it("truncates response body over 1000 chars to keep interaction_logs bounded", () => {
51
- const giantBody = `${"x".repeat(2_000)}`;
52
- const err = new APICallError({
53
- message: "rate limit",
54
- url: "https://api.example.com/x",
55
- requestBodyValues: {},
56
- statusCode: 429,
57
- responseBody: giantBody,
58
- });
59
- const out = summarizeApiErrorForLog(err);
60
- expect(out).not.toBeNull();
61
- expect(out.responseBodyTrunc.length).toBeLessThanOrEqual(1020);
62
- expect(out.responseBodyTrunc.endsWith("…[truncated]")).toBe(true);
63
- });
64
- it("returns null for non-APICallError so the helper is safe to call unconditionally", () => {
65
- expect(summarizeApiErrorForLog(new Error("plain"))).toBeNull();
66
- expect(summarizeApiErrorForLog("string error")).toBeNull();
67
- expect(summarizeApiErrorForLog(undefined)).toBeNull();
68
- });
69
- it("handles malformed URL without throwing — urlHost becomes undefined", () => {
70
- const err = new APICallError({
71
- message: "bad",
72
- url: "not a url",
73
- requestBodyValues: {},
74
- statusCode: 500,
75
- });
76
- const out = summarizeApiErrorForLog(err);
77
- expect(out).not.toBeNull();
78
- expect(out.urlHost).toBeUndefined();
79
- expect(out.statusCode).toBe(500);
80
- });
81
- it("handles non-object requestBodyValues without crashing — requestParamKeys becomes undefined", () => {
82
- const err = new APICallError({
83
- message: "x",
84
- url: "https://api.example.com/x",
85
- requestBodyValues: "raw json string", // pathological case
86
- statusCode: 400,
87
- });
88
- const out = summarizeApiErrorForLog(err);
89
- expect(out).not.toBeNull();
90
- expect(out.requestParamKeys).toBeUndefined();
91
- });
92
- });
93
- //# sourceMappingURL=error-forensics.test.js.map
@@ -1,5 +0,0 @@
1
- /**
2
- * Tests for flow-resume.ts — loadFlowResumeDigest reads .muonroi-flow/
3
- * state before chat transcript on cold start.
4
- */
5
- export {};
@@ -1,61 +0,0 @@
1
- /**
2
- * Tests for flow-resume.ts — loadFlowResumeDigest reads .muonroi-flow/
3
- * state before chat transcript on cold start.
4
- */
5
- import { mkdtemp, rm } from "node:fs/promises";
6
- import { tmpdir } from "node:os";
7
- import * as path from "node:path";
8
- import { afterEach, describe, expect, it } from "vitest";
9
- import { parseSections } from "../../flow/parser.js";
10
- import { createRun, setActiveRunId, updateRunFile } from "../../flow/run-manager.js";
11
- import { ensureFlowDir } from "../../flow/scaffold.js";
12
- import { loadFlowResumeDigest } from "../flow-resume.js";
13
- let tempDirs = [];
14
- async function makeTempDir(prefix) {
15
- const dir = await mkdtemp(path.join(tmpdir(), prefix));
16
- tempDirs.push(dir);
17
- return dir;
18
- }
19
- afterEach(async () => {
20
- for (const d of tempDirs) {
21
- await rm(d, { recursive: true, force: true, maxRetries: 10, retryDelay: 50 }).catch(() => { });
22
- }
23
- tempDirs = [];
24
- });
25
- describe("loadFlowResumeDigest", () => {
26
- it("returns Resume Digest content from active run state.md", async () => {
27
- const cwd = await makeTempDir("resume-digest-");
28
- const flowDir = await ensureFlowDir(cwd);
29
- const run = await createRun(flowDir);
30
- await setActiveRunId(flowDir, run.id);
31
- // Write Resume Digest content
32
- const stateMap = parseSections("");
33
- stateMap.sections.set("Resume Digest", "Working on feature X. File: src/foo.ts modified.");
34
- stateMap.sections.set("Experience Snapshot", "");
35
- await updateRunFile(flowDir, run.id, "state.md", stateMap);
36
- const digest = await loadFlowResumeDigest(cwd);
37
- expect(digest).toBe("Working on feature X. File: src/foo.ts modified.");
38
- });
39
- it("returns null when .muonroi-flow/ does not exist", async () => {
40
- const cwd = await makeTempDir("no-flow-");
41
- const digest = await loadFlowResumeDigest(cwd);
42
- expect(digest).toBeNull();
43
- });
44
- it("returns null when no active run is set", async () => {
45
- const cwd = await makeTempDir("no-active-");
46
- await ensureFlowDir(cwd);
47
- // Don't set active run
48
- const digest = await loadFlowResumeDigest(cwd);
49
- expect(digest).toBeNull();
50
- });
51
- it("returns null when active run has empty Resume Digest", async () => {
52
- const cwd = await makeTempDir("empty-digest-");
53
- const flowDir = await ensureFlowDir(cwd);
54
- const run = await createRun(flowDir);
55
- await setActiveRunId(flowDir, run.id);
56
- // createRun initializes state.md with empty Resume Digest — don't write content
57
- const digest = await loadFlowResumeDigest(cwd);
58
- expect(digest).toBeNull();
59
- });
60
- });
61
- //# sourceMappingURL=flow-resume.test.js.map
@@ -1,68 +0,0 @@
1
- /**
2
- * P0 #2 — surface the ROUTED model/provider on account/auth/rate errors so a
3
- * cryptic provider 402 ("Insufficient Balance") tells the user WHICH model it
4
- * actually ran (e.g. a project-pinned deepseek model overriding their default)
5
- * and how to fix it, instead of leaving them guessing.
6
- */
7
- import { APICallError } from "@ai-sdk/provider";
8
- import { describe, expect, it } from "vitest";
9
- import { humanizeApiError } from "../error-utils.js";
10
- function apiErr(statusCode, responseBody) {
11
- return new APICallError({
12
- message: "provider error",
13
- url: "https://api.deepseek.com/chat/completions",
14
- requestBodyValues: { model: "deepseek-v4-flash" },
15
- statusCode,
16
- responseBody,
17
- isRetryable: false,
18
- });
19
- }
20
- describe("humanizeApiError — routing context (P0 #2)", () => {
21
- it("adds routed model + provider + a balance hint on 402", () => {
22
- const err = apiErr(402, '{"error":{"message":"Insufficient Balance"}}');
23
- const msg = humanizeApiError(err, { modelId: "deepseek-v4-flash", providerId: "deepseek" });
24
- expect(msg).toContain("Insufficient Balance");
25
- expect(msg).toContain("deepseek-v4-flash");
26
- expect(msg).toContain("deepseek");
27
- expect(msg).toMatch(/-m /); // suggests switching model
28
- expect(msg).toMatch(/balance|credit/i);
29
- });
30
- it("points to keys login on 401/403", () => {
31
- const msg = humanizeApiError(apiErr(401, '{"error":{"message":"bad key"}}'), {
32
- modelId: "gpt-5.4-mini",
33
- providerId: "openai",
34
- });
35
- expect(msg).toContain("gpt-5.4-mini");
36
- expect(msg).toMatch(/keys login/);
37
- });
38
- it("mentions rate limit + switch on 429", () => {
39
- const msg = humanizeApiError(apiErr(429, '{"error":{"message":"slow down"}}'), {
40
- modelId: "deepseek-v4-flash",
41
- providerId: "deepseek",
42
- });
43
- expect(msg).toMatch(/rate.?limit/i);
44
- expect(msg).toMatch(/-m /);
45
- });
46
- it("does NOT add a routing suffix on server-side 500 (not the user's routing)", () => {
47
- const msg = humanizeApiError(apiErr(500, '{"error":{"message":"boom"}}'), {
48
- modelId: "deepseek-v4-flash",
49
- providerId: "deepseek",
50
- });
51
- expect(msg).not.toContain("routed to");
52
- expect(msg).not.toContain("deepseek-v4-flash");
53
- });
54
- it("is unchanged when no context is supplied (backward compatible)", () => {
55
- const err = apiErr(402, '{"error":{"message":"Insufficient Balance"}}');
56
- const withoutCtx = humanizeApiError(err);
57
- expect(withoutCtx).toBe("Insufficient Balance");
58
- expect(withoutCtx).not.toContain("routed to");
59
- });
60
- it("flags balance even when status is unparsed but the body says so", () => {
61
- // Some gateways surface the balance error without a clean statusCode.
62
- const err = new Error("Insufficient Balance");
63
- const msg = humanizeApiError(err, { modelId: "deepseek-v4-flash", providerId: "deepseek" });
64
- expect(msg).toContain("deepseek-v4-flash");
65
- expect(msg).toMatch(/balance|credit/i);
66
- });
67
- });
68
- //# sourceMappingURL=humanize-api-error.test.js.map