@cleocode/core 2026.3.74 → 2026.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/agent-schema.d.ts.map +1 -1
  3. package/dist/agents/retry.js +26 -21
  4. package/dist/agents/retry.js.map +1 -1
  5. package/dist/cant/approval.d.ts +110 -0
  6. package/dist/cant/approval.d.ts.map +1 -0
  7. package/dist/cant/approval.js +185 -0
  8. package/dist/cant/approval.js.map +1 -0
  9. package/dist/cant/context-builder.d.ts +79 -0
  10. package/dist/cant/context-builder.d.ts.map +1 -0
  11. package/dist/cant/context-builder.js +117 -0
  12. package/dist/cant/context-builder.js.map +1 -0
  13. package/dist/cant/discretion.d.ts +95 -0
  14. package/dist/cant/discretion.d.ts.map +1 -0
  15. package/dist/cant/discretion.js +116 -0
  16. package/dist/cant/discretion.js.map +1 -0
  17. package/dist/cant/index.d.ts +25 -0
  18. package/dist/cant/index.d.ts.map +1 -0
  19. package/dist/cant/index.js +23 -0
  20. package/dist/cant/index.js.map +1 -0
  21. package/dist/cant/parallel-runner.d.ts +38 -0
  22. package/dist/cant/parallel-runner.d.ts.map +1 -0
  23. package/dist/cant/parallel-runner.js +173 -0
  24. package/dist/cant/parallel-runner.js.map +1 -0
  25. package/dist/cant/types.d.ts +127 -0
  26. package/dist/cant/types.d.ts.map +1 -0
  27. package/dist/cant/types.js +11 -0
  28. package/dist/cant/types.js.map +1 -0
  29. package/dist/cant/workflow-executor.d.ts +105 -0
  30. package/dist/cant/workflow-executor.d.ts.map +1 -0
  31. package/dist/cant/workflow-executor.js +440 -0
  32. package/dist/cant/workflow-executor.js.map +1 -0
  33. package/dist/cleo.js +21 -1
  34. package/dist/cleo.js.map +1 -1
  35. package/dist/code/index.d.ts +10 -0
  36. package/dist/code/index.d.ts.map +1 -0
  37. package/dist/code/outline.d.ts +51 -0
  38. package/dist/code/outline.d.ts.map +1 -0
  39. package/dist/code/parser.d.ts +30 -0
  40. package/dist/code/parser.d.ts.map +1 -0
  41. package/dist/code/search.d.ts +42 -0
  42. package/dist/code/search.d.ts.map +1 -0
  43. package/dist/code/unfold.d.ts +44 -0
  44. package/dist/code/unfold.d.ts.map +1 -0
  45. package/dist/conduit/conduit-client.d.ts +35 -0
  46. package/dist/conduit/conduit-client.d.ts.map +1 -0
  47. package/dist/conduit/conduit-client.js +94 -0
  48. package/dist/conduit/conduit-client.js.map +1 -0
  49. package/dist/conduit/factory.d.ts +15 -0
  50. package/dist/conduit/factory.d.ts.map +1 -0
  51. package/dist/conduit/factory.js +35 -0
  52. package/dist/conduit/factory.js.map +1 -0
  53. package/dist/conduit/http-transport.d.ts +44 -0
  54. package/dist/conduit/http-transport.d.ts.map +1 -0
  55. package/dist/conduit/http-transport.js +165 -0
  56. package/dist/conduit/http-transport.js.map +1 -0
  57. package/dist/conduit/index.d.ts +15 -0
  58. package/dist/conduit/index.d.ts.map +1 -0
  59. package/dist/conduit/index.js +12 -0
  60. package/dist/conduit/index.js.map +1 -0
  61. package/dist/conduit/local-transport.d.ts +91 -0
  62. package/dist/conduit/local-transport.d.ts.map +1 -0
  63. package/dist/conduit/sse-transport.d.ts +68 -0
  64. package/dist/conduit/sse-transport.d.ts.map +1 -0
  65. package/dist/config.js +4 -3
  66. package/dist/config.js.map +1 -1
  67. package/dist/crypto/credentials.d.ts +40 -0
  68. package/dist/crypto/credentials.d.ts.map +1 -0
  69. package/dist/crypto/credentials.js +144 -0
  70. package/dist/crypto/credentials.js.map +1 -0
  71. package/dist/engine-result.d.ts +1 -1
  72. package/dist/engine-result.d.ts.map +1 -1
  73. package/dist/error-catalog.d.ts +1 -1
  74. package/dist/error-catalog.d.ts.map +1 -1
  75. package/dist/error-registry.d.ts +1 -1
  76. package/dist/error-registry.d.ts.map +1 -1
  77. package/dist/errors.d.ts +1 -1
  78. package/dist/errors.d.ts.map +1 -1
  79. package/dist/hooks/handlers/agent-hooks.d.ts.map +1 -1
  80. package/dist/hooks/handlers/agent-hooks.js +106 -0
  81. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  82. package/dist/hooks/handlers/context-hooks.d.ts.map +1 -1
  83. package/dist/hooks/handlers/context-hooks.js +111 -0
  84. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  85. package/dist/hooks/handlers/error-hooks.d.ts +14 -5
  86. package/dist/hooks/handlers/error-hooks.d.ts.map +1 -1
  87. package/dist/hooks/handlers/error-hooks.js +15 -6
  88. package/dist/hooks/handlers/error-hooks.js.map +1 -1
  89. package/dist/hooks/handlers/file-hooks.d.ts.map +1 -1
  90. package/dist/hooks/handlers/file-hooks.js +35 -11
  91. package/dist/hooks/handlers/file-hooks.js.map +1 -1
  92. package/dist/hooks/handlers/handler-helpers.d.ts +41 -0
  93. package/dist/hooks/handlers/handler-helpers.d.ts.map +1 -0
  94. package/dist/hooks/handlers/handler-helpers.js +61 -0
  95. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  96. package/dist/hooks/handlers/index.js +10 -1
  97. package/dist/hooks/handlers/index.js.map +1 -1
  98. package/dist/hooks/handlers/mcp-hooks.d.ts.map +1 -1
  99. package/dist/hooks/handlers/mcp-hooks.js +88 -21
  100. package/dist/hooks/handlers/mcp-hooks.js.map +1 -1
  101. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  102. package/dist/hooks/handlers/session-hooks.js +5 -10
  103. package/dist/hooks/handlers/session-hooks.js.map +1 -1
  104. package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
  105. package/dist/hooks/handlers/task-hooks.js +5 -10
  106. package/dist/hooks/handlers/task-hooks.js.map +1 -1
  107. package/dist/hooks/handlers/work-capture-hooks.d.ts.map +1 -1
  108. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  109. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  110. package/dist/hooks/payload-schemas.js +83 -26
  111. package/dist/hooks/payload-schemas.js.map +1 -1
  112. package/dist/hooks/provider-hooks.js +37 -5
  113. package/dist/hooks/provider-hooks.js.map +1 -1
  114. package/dist/hooks/registry.js +76 -23
  115. package/dist/hooks/registry.js.map +1 -1
  116. package/dist/hooks/types.js +17 -13
  117. package/dist/hooks/types.js.map +1 -1
  118. package/dist/index.d.ts +4 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +6452 -3371
  121. package/dist/index.js.map +4 -4
  122. package/dist/init.d.ts.map +1 -1
  123. package/dist/init.js +12 -0
  124. package/dist/init.js.map +1 -1
  125. package/dist/internal.d.ts +11 -1
  126. package/dist/internal.d.ts.map +1 -1
  127. package/dist/internal.js +10 -0
  128. package/dist/internal.js.map +1 -1
  129. package/dist/lib/index.d.ts +1 -0
  130. package/dist/lib/index.d.ts.map +1 -1
  131. package/dist/lib/tree-sitter-languages.d.ts +29 -0
  132. package/dist/lib/tree-sitter-languages.d.ts.map +1 -0
  133. package/dist/memory/brain-links.d.ts.map +1 -1
  134. package/dist/memory/brain-maintenance.d.ts +13 -0
  135. package/dist/memory/brain-maintenance.d.ts.map +1 -1
  136. package/dist/memory/brain-retrieval.d.ts +3 -0
  137. package/dist/memory/brain-retrieval.d.ts.map +1 -1
  138. package/dist/memory/brain-retrieval.js +5 -0
  139. package/dist/memory/brain-retrieval.js.map +1 -1
  140. package/dist/memory/decisions.d.ts.map +1 -1
  141. package/dist/mvi-helpers.d.ts +52 -0
  142. package/dist/mvi-helpers.d.ts.map +1 -0
  143. package/dist/mvi-helpers.js +74 -0
  144. package/dist/mvi-helpers.js.map +1 -0
  145. package/dist/nexus/index.js +2 -0
  146. package/dist/nexus/index.js.map +1 -1
  147. package/dist/nexus/workspace.d.ts.map +1 -1
  148. package/dist/nexus/workspace.js +355 -0
  149. package/dist/nexus/workspace.js.map +1 -0
  150. package/dist/orchestration/hierarchy.d.ts +32 -0
  151. package/dist/orchestration/hierarchy.d.ts.map +1 -0
  152. package/dist/orchestration/index.d.ts +1 -0
  153. package/dist/orchestration/index.d.ts.map +1 -1
  154. package/dist/output.d.ts +2 -2
  155. package/dist/output.d.ts.map +1 -1
  156. package/dist/output.js +40 -8
  157. package/dist/output.js.map +1 -1
  158. package/dist/pagination.d.ts +1 -1
  159. package/dist/pagination.d.ts.map +1 -1
  160. package/dist/sessions/find.d.ts +3 -0
  161. package/dist/sessions/find.d.ts.map +1 -1
  162. package/dist/sessions/find.js +3 -1
  163. package/dist/sessions/find.js.map +1 -1
  164. package/dist/sessions/index.d.ts.map +1 -1
  165. package/dist/sessions/index.js +11 -4
  166. package/dist/sessions/index.js.map +1 -1
  167. package/dist/sessions/snapshot.js +213 -0
  168. package/dist/sessions/snapshot.js.map +1 -0
  169. package/dist/store/agent-registry-accessor.d.ts +31 -0
  170. package/dist/store/agent-registry-accessor.d.ts.map +1 -0
  171. package/dist/store/agent-registry-accessor.js +169 -0
  172. package/dist/store/agent-registry-accessor.js.map +1 -0
  173. package/dist/store/converters.d.ts.map +1 -1
  174. package/dist/store/converters.js +2 -0
  175. package/dist/store/converters.js.map +1 -1
  176. package/dist/store/cross-db-cleanup.d.ts +34 -0
  177. package/dist/store/cross-db-cleanup.d.ts.map +1 -1
  178. package/dist/store/db-helpers.d.ts.map +1 -1
  179. package/dist/store/db-helpers.js +1 -0
  180. package/dist/store/db-helpers.js.map +1 -1
  181. package/dist/store/json.js +2 -2
  182. package/dist/store/safety-data-accessor.d.ts +7 -0
  183. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  184. package/dist/store/safety-data-accessor.js +14 -0
  185. package/dist/store/safety-data-accessor.js.map +1 -1
  186. package/dist/store/signaldock-sqlite.d.ts +48 -0
  187. package/dist/store/signaldock-sqlite.d.ts.map +1 -0
  188. package/dist/store/signaldock-sqlite.js +178 -0
  189. package/dist/store/signaldock-sqlite.js.map +1 -0
  190. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  191. package/dist/store/sqlite-data-accessor.js +50 -0
  192. package/dist/store/sqlite-data-accessor.js.map +1 -1
  193. package/dist/store/sqlite.d.ts.map +1 -1
  194. package/dist/store/sqlite.js +30 -1
  195. package/dist/store/sqlite.js.map +1 -1
  196. package/dist/store/task-store.d.ts.map +1 -1
  197. package/dist/store/task-store.js +2 -0
  198. package/dist/store/task-store.js.map +1 -1
  199. package/dist/store/tasks-schema.d.ts +16 -0
  200. package/dist/store/tasks-schema.d.ts.map +1 -1
  201. package/dist/store/tasks-schema.js +33 -0
  202. package/dist/store/tasks-schema.js.map +1 -1
  203. package/dist/store/validation-schemas.d.ts +32 -0
  204. package/dist/store/validation-schemas.d.ts.map +1 -1
  205. package/dist/system/health.d.ts +1 -1
  206. package/dist/system/health.d.ts.map +1 -1
  207. package/dist/system/health.js +35 -0
  208. package/dist/system/health.js.map +1 -1
  209. package/dist/task-work/index.d.ts.map +1 -1
  210. package/dist/task-work/index.js +8 -4
  211. package/dist/task-work/index.js.map +1 -1
  212. package/dist/tasks/complete.js +5 -2
  213. package/dist/tasks/complete.js.map +1 -1
  214. package/dist/tasks/find.d.ts +3 -0
  215. package/dist/tasks/find.d.ts.map +1 -1
  216. package/dist/tasks/find.js +7 -1
  217. package/dist/tasks/find.js.map +1 -1
  218. package/dist/tasks/list.d.ts +5 -2
  219. package/dist/tasks/list.d.ts.map +1 -1
  220. package/dist/tasks/list.js +9 -2
  221. package/dist/tasks/list.js.map +1 -1
  222. package/dist/tasks/show.d.ts +3 -0
  223. package/dist/tasks/show.d.ts.map +1 -1
  224. package/dist/tasks/show.js +2 -0
  225. package/dist/tasks/show.js.map +1 -1
  226. package/dist/upgrade.d.ts.map +1 -1
  227. package/dist/upgrade.js +15 -0
  228. package/dist/upgrade.js.map +1 -1
  229. package/migrations/drizzle-tasks/20260324000000_assignee-column/migration.sql +6 -0
  230. package/migrations/drizzle-tasks/20260324000000_assignee-column/snapshot.json +9 -0
  231. package/migrations/drizzle-tasks/20260327000000_agent-credentials/migration.sql +23 -0
  232. package/package.json +17 -7
  233. package/src/__tests__/cli-parity.test.js +11 -1
  234. package/src/__tests__/cli-parity.test.js.map +1 -1
  235. package/src/__tests__/cli-parity.test.ts +17 -1
  236. package/src/__tests__/human-output.test.js +11 -1
  237. package/src/__tests__/human-output.test.js.map +1 -1
  238. package/src/__tests__/human-output.test.ts +18 -1
  239. package/src/__tests__/injection-chain.test.js +3 -2
  240. package/src/__tests__/injection-chain.test.js.map +1 -1
  241. package/src/__tests__/injection-mvi-tiers.test.d.ts +2 -2
  242. package/src/__tests__/injection-mvi-tiers.test.js +15 -15
  243. package/src/__tests__/injection-mvi-tiers.test.js.map +1 -1
  244. package/src/__tests__/lafs-conformance.test.d.ts +1 -1
  245. package/src/__tests__/lafs-conformance.test.js +2 -2
  246. package/src/__tests__/sharing.test.js +19 -0
  247. package/src/__tests__/sharing.test.js.map +1 -1
  248. package/src/agents/__tests__/agent-registry.test.d.ts +12 -0
  249. package/src/agents/__tests__/agent-registry.test.d.ts.map +1 -0
  250. package/src/agents/__tests__/agent-registry.test.js +262 -0
  251. package/src/agents/__tests__/agent-registry.test.js.map +1 -0
  252. package/src/agents/__tests__/execution-learning.test.d.ts +14 -0
  253. package/src/agents/__tests__/execution-learning.test.d.ts.map +1 -0
  254. package/src/agents/__tests__/execution-learning.test.js +533 -0
  255. package/src/agents/__tests__/execution-learning.test.js.map +1 -0
  256. package/src/agents/__tests__/health-monitor.test.d.ts +10 -0
  257. package/src/agents/__tests__/health-monitor.test.d.ts.map +1 -0
  258. package/src/agents/__tests__/health-monitor.test.js +259 -0
  259. package/src/agents/__tests__/health-monitor.test.js.map +1 -0
  260. package/src/agents/__tests__/registry.test.js +27 -2
  261. package/src/agents/__tests__/registry.test.js.map +1 -1
  262. package/src/agents/agent-schema.ts +2 -5
  263. package/src/cant/__tests__/cant-agent-parse.test.ts +94 -0
  264. package/src/cant/approval.ts +218 -0
  265. package/src/cant/context-builder.ts +135 -0
  266. package/src/cant/discretion.ts +149 -0
  267. package/src/cant/index.ts +58 -0
  268. package/src/cant/parallel-runner.ts +205 -0
  269. package/src/cant/types.ts +158 -0
  270. package/src/cant/workflow-executor.ts +618 -0
  271. package/src/code/index.ts +10 -0
  272. package/src/code/outline.ts +214 -0
  273. package/src/code/parser.ts +299 -0
  274. package/src/code/search.ts +173 -0
  275. package/src/code/unfold.ts +204 -0
  276. package/src/conduit/__tests__/dual-api-e2e.test.ts +212 -0
  277. package/src/conduit/__tests__/local-credential-flow.test.ts +230 -0
  278. package/src/conduit/__tests__/local-transport.test.ts +320 -0
  279. package/src/conduit/__tests__/sse-transport.test.ts +344 -0
  280. package/src/conduit/conduit-client.ts +123 -0
  281. package/src/conduit/factory.ts +49 -0
  282. package/src/conduit/http-transport.ts +201 -0
  283. package/src/conduit/index.ts +15 -0
  284. package/src/conduit/local-transport.ts +309 -0
  285. package/src/conduit/sse-transport.ts +382 -0
  286. package/src/crypto/credentials.ts +166 -0
  287. package/src/engine-result.ts +1 -1
  288. package/src/error-catalog.ts +1 -1
  289. package/src/error-registry.ts +1 -1
  290. package/src/errors.ts +1 -1
  291. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts +13 -0
  292. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +1 -0
  293. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +501 -0
  294. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +1 -0
  295. package/src/hooks/handlers/agent-hooks.ts +1 -30
  296. package/src/hooks/handlers/context-hooks.ts +1 -30
  297. package/src/hooks/handlers/error-hooks.ts +14 -5
  298. package/src/hooks/handlers/file-hooks.ts +1 -6
  299. package/src/hooks/handlers/handler-helpers.ts +62 -0
  300. package/src/hooks/handlers/mcp-hooks.ts +2 -14
  301. package/src/hooks/handlers/session-hooks.ts +1 -6
  302. package/src/hooks/handlers/task-hooks.ts +1 -6
  303. package/src/hooks/handlers/work-capture-hooks.ts +1 -10
  304. package/src/index.ts +12 -1
  305. package/src/init.ts +12 -0
  306. package/src/intelligence/__tests__/adaptive-validation.test.d.ts +11 -0
  307. package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +1 -0
  308. package/src/intelligence/__tests__/adaptive-validation.test.js +517 -0
  309. package/src/intelligence/__tests__/adaptive-validation.test.js.map +1 -0
  310. package/src/intelligence/__tests__/impact.test.d.ts +1 -0
  311. package/src/intelligence/__tests__/impact.test.d.ts.map +1 -1
  312. package/src/intelligence/__tests__/impact.test.js +132 -1
  313. package/src/intelligence/__tests__/impact.test.js.map +1 -1
  314. package/src/internal.ts +22 -0
  315. package/src/lib/__tests__/retry.test.d.ts +7 -0
  316. package/src/lib/__tests__/retry.test.d.ts.map +1 -0
  317. package/src/lib/__tests__/retry.test.js +225 -0
  318. package/src/lib/__tests__/retry.test.js.map +1 -0
  319. package/src/lib/index.ts +8 -0
  320. package/src/lib/tree-sitter-languages.ts +88 -0
  321. package/src/lifecycle/__tests__/chain-store.test.js +6 -0
  322. package/src/lifecycle/__tests__/chain-store.test.js.map +1 -1
  323. package/src/lifecycle/__tests__/tessera-engine.test.js +52 -0
  324. package/src/lifecycle/__tests__/tessera-engine.test.js.map +1 -1
  325. package/src/memory/__tests__/brain-automation.test.d.ts +11 -0
  326. package/src/memory/__tests__/brain-automation.test.d.ts.map +1 -0
  327. package/src/memory/__tests__/brain-automation.test.js +730 -0
  328. package/src/memory/__tests__/brain-automation.test.js.map +1 -0
  329. package/src/memory/__tests__/brain-links.test.ts +14 -0
  330. package/src/memory/__tests__/brain-retrieval.test.ts +10 -0
  331. package/src/memory/__tests__/session-memory.test.ts +17 -0
  332. package/src/memory/brain-links.ts +17 -0
  333. package/src/memory/brain-maintenance.ts +33 -1
  334. package/src/memory/brain-retrieval.ts +27 -2
  335. package/src/memory/decisions.ts +18 -2
  336. package/src/mvi-helpers.ts +81 -0
  337. package/src/nexus/workspace.ts +19 -7
  338. package/src/orchestration/hierarchy.ts +202 -0
  339. package/src/orchestration/index.ts +1 -0
  340. package/src/output.ts +43 -10
  341. package/src/pagination.ts +1 -1
  342. package/src/sessions/__tests__/session-edge-cases.test.js +20 -1
  343. package/src/sessions/__tests__/session-edge-cases.test.js.map +1 -1
  344. package/src/sessions/__tests__/session-find.test.js +1 -1
  345. package/src/sessions/__tests__/session-find.test.js.map +1 -1
  346. package/src/sessions/__tests__/session-find.test.ts +1 -1
  347. package/src/sessions/find.ts +6 -1
  348. package/src/sessions/index.ts +9 -0
  349. package/src/store/__tests__/migration-safety.test.js +3 -0
  350. package/src/store/__tests__/migration-safety.test.js.map +1 -1
  351. package/src/store/__tests__/session-store.test.js +128 -1
  352. package/src/store/__tests__/session-store.test.js.map +1 -1
  353. package/src/store/__tests__/task-store.test.js +18 -1
  354. package/src/store/__tests__/task-store.test.js.map +1 -1
  355. package/src/store/__tests__/test-db-helper.d.ts.map +1 -1
  356. package/src/store/__tests__/test-db-helper.js +12 -0
  357. package/src/store/__tests__/test-db-helper.js.map +1 -1
  358. package/src/store/agent-registry-accessor.ts +375 -0
  359. package/src/store/converters.ts +2 -0
  360. package/src/store/cross-db-cleanup.ts +175 -1
  361. package/src/store/db-helpers.ts +1 -0
  362. package/src/store/safety-data-accessor.ts +23 -0
  363. package/src/store/signaldock-sqlite.ts +429 -0
  364. package/src/store/sqlite-data-accessor.ts +72 -0
  365. package/src/store/sqlite.ts +4 -1
  366. package/src/store/task-store.ts +9 -1
  367. package/src/store/tasks-schema.ts +7 -0
  368. package/src/system/__tests__/health.test.ts +2 -2
  369. package/src/system/health.ts +54 -2
  370. package/src/task-work/index.ts +5 -0
  371. package/src/tasks/__tests__/add.test.js +19 -1
  372. package/src/tasks/__tests__/add.test.js.map +1 -1
  373. package/src/tasks/__tests__/assignee.test.d.ts +14 -0
  374. package/src/tasks/__tests__/assignee.test.d.ts.map +1 -0
  375. package/src/tasks/__tests__/assignee.test.js +125 -0
  376. package/src/tasks/__tests__/assignee.test.js.map +1 -0
  377. package/src/tasks/__tests__/assignee.test.ts +162 -0
  378. package/src/tasks/__tests__/complete-unblocks.test.js +13 -1
  379. package/src/tasks/__tests__/complete-unblocks.test.js.map +1 -1
  380. package/src/tasks/__tests__/complete.test.js +28 -7
  381. package/src/tasks/__tests__/complete.test.js.map +1 -1
  382. package/src/tasks/__tests__/epic-enforcement.test.d.ts +15 -0
  383. package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +1 -0
  384. package/src/tasks/__tests__/epic-enforcement.test.js +669 -0
  385. package/src/tasks/__tests__/epic-enforcement.test.js.map +1 -0
  386. package/src/tasks/__tests__/hierarchy-policy.test.js +5 -0
  387. package/src/tasks/__tests__/hierarchy-policy.test.js.map +1 -1
  388. package/src/tasks/__tests__/minimal-test.test.d.ts +2 -0
  389. package/src/tasks/__tests__/minimal-test.test.d.ts.map +1 -0
  390. package/src/tasks/__tests__/minimal-test.test.js +25 -0
  391. package/src/tasks/__tests__/minimal-test.test.js.map +1 -0
  392. package/src/tasks/__tests__/pipeline-stage.test.d.ts +14 -0
  393. package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +1 -0
  394. package/src/tasks/__tests__/pipeline-stage.test.js +277 -0
  395. package/src/tasks/__tests__/pipeline-stage.test.js.map +1 -0
  396. package/src/tasks/__tests__/update.test.js +43 -6
  397. package/src/tasks/__tests__/update.test.js.map +1 -1
  398. package/src/tasks/find.ts +11 -1
  399. package/src/tasks/list.ts +14 -3
  400. package/src/tasks/show.ts +6 -0
  401. package/src/upgrade.ts +16 -0
  402. package/dist/tasks/reparent.d.ts +0 -38
  403. package/dist/tasks/reparent.d.ts.map +0 -1
  404. package/dist/ui/injection-legacy.d.ts +0 -26
  405. package/dist/ui/injection-legacy.d.ts.map +0 -1
  406. package/dist/ui/injection-legacy.js +0 -42
  407. package/dist/ui/injection-legacy.js.map +0 -1
  408. package/src/signaldock/__tests__/claude-code-transport.test.d.ts +0 -7
  409. package/src/signaldock/__tests__/claude-code-transport.test.d.ts.map +0 -1
  410. package/src/signaldock/__tests__/claude-code-transport.test.js +0 -147
  411. package/src/signaldock/__tests__/claude-code-transport.test.js.map +0 -1
  412. package/src/signaldock/__tests__/claude-code-transport.test.ts +0 -180
  413. package/src/signaldock/__tests__/factory.test.d.ts +0 -7
  414. package/src/signaldock/__tests__/factory.test.d.ts.map +0 -1
  415. package/src/signaldock/__tests__/factory.test.js +0 -55
  416. package/src/signaldock/__tests__/factory.test.js.map +0 -1
  417. package/src/signaldock/__tests__/factory.test.ts +0 -61
  418. package/src/signaldock/__tests__/signaldock-transport.test.d.ts +0 -9
  419. package/src/signaldock/__tests__/signaldock-transport.test.d.ts.map +0 -1
  420. package/src/signaldock/__tests__/signaldock-transport.test.js +0 -321
  421. package/src/signaldock/__tests__/signaldock-transport.test.js.map +0 -1
  422. package/src/signaldock/__tests__/signaldock-transport.test.ts +0 -421
  423. package/src/signaldock/claude-code-transport.ts +0 -137
  424. package/src/signaldock/factory.ts +0 -39
  425. package/src/signaldock/index.ts +0 -28
  426. package/src/signaldock/signaldock-transport.ts +0 -194
  427. package/src/signaldock/transport.ts +0 -78
  428. package/src/signaldock/types.ts +0 -100
@@ -0,0 +1,517 @@
1
+ /**
2
+ * Unit tests for the Adaptive Validation module.
3
+ *
4
+ * Tests gate focus suggestions, confidence scoring, and prediction storage.
5
+ * All external dependencies are mocked.
6
+ *
7
+ * @task T035
8
+ * @epic T029
9
+ */
10
+ import { beforeEach, describe, expect, it, vi } from 'vitest';
11
+ import { predictAndStore, scoreVerificationConfidence, storePrediction, suggestGateFocus, } from '../adaptive-validation.js';
12
+ // ============================================================================
13
+ // Helpers
14
+ // ============================================================================
15
+ function makeTask(overrides) {
16
+ return {
17
+ status: 'pending',
18
+ priority: 'medium',
19
+ description: `Description for ${overrides.id}`,
20
+ createdAt: new Date().toISOString(),
21
+ labels: [],
22
+ depends: [],
23
+ ...overrides,
24
+ };
25
+ }
26
+ function makeVerification(overrides = {}) {
27
+ return {
28
+ passed: false,
29
+ round: 1,
30
+ gates: {},
31
+ lastAgent: null,
32
+ lastUpdated: null,
33
+ failureLog: [],
34
+ ...overrides,
35
+ };
36
+ }
37
+ function makePattern(overrides = {}) {
38
+ return {
39
+ id: `P-${Math.random().toString(36).slice(2, 10)}`,
40
+ type: 'failure',
41
+ pattern: 'test pattern',
42
+ context: 'test context',
43
+ frequency: 2,
44
+ successRate: 0.3,
45
+ impact: 'medium',
46
+ antiPattern: null,
47
+ mitigation: null,
48
+ examplesJson: '[]',
49
+ extractedAt: new Date().toISOString(),
50
+ updatedAt: null,
51
+ ...overrides,
52
+ };
53
+ }
54
+ function mockTaskAccessor(tasks) {
55
+ return {
56
+ loadSingleTask: vi
57
+ .fn()
58
+ .mockImplementation((id) => Promise.resolve(tasks.find((t) => t.id === id) ?? null)),
59
+ queryTasks: vi.fn().mockResolvedValue({ tasks, total: tasks.length }),
60
+ countChildren: vi.fn().mockResolvedValue(0),
61
+ close: vi.fn().mockResolvedValue(undefined),
62
+ };
63
+ }
64
+ function mockBrainAccessor(patterns = [], observations = [], learnings = []) {
65
+ return {
66
+ findPatterns: vi.fn().mockImplementation((params) => {
67
+ let filtered = patterns;
68
+ if (params?.type) {
69
+ filtered = filtered.filter((p) => p.type === params.type);
70
+ }
71
+ if (params?.limit) {
72
+ filtered = filtered.slice(0, params.limit);
73
+ }
74
+ return Promise.resolve(filtered);
75
+ }),
76
+ findLearnings: vi.fn().mockResolvedValue(learnings),
77
+ findObservations: vi.fn().mockResolvedValue(observations),
78
+ addObservation: vi.fn().mockImplementation((row) => Promise.resolve(row)),
79
+ addLearning: vi.fn().mockImplementation((row) => Promise.resolve(row)),
80
+ getObservation: vi.fn().mockResolvedValue(null),
81
+ };
82
+ }
83
+ // ============================================================================
84
+ // Tests: suggestGateFocus
85
+ // ============================================================================
86
+ beforeEach(() => {
87
+ vi.clearAllMocks();
88
+ });
89
+ describe('suggestGateFocus', () => {
90
+ it('returns empty gate focus for not-found task', async () => {
91
+ const taskAccessor = mockTaskAccessor([]);
92
+ const brainAccessor = mockBrainAccessor();
93
+ const result = await suggestGateFocus('T999', taskAccessor, brainAccessor);
94
+ expect(result.taskId).toBe('T999');
95
+ expect(result.gateFocus).toHaveLength(0);
96
+ expect(result.tips[0]).toContain('not found');
97
+ });
98
+ it('returns gate recommendations for a simple task', async () => {
99
+ const task = makeTask({ id: 'T001', title: 'Simple feature', size: 'small' });
100
+ const taskAccessor = mockTaskAccessor([task]);
101
+ const brainAccessor = mockBrainAccessor();
102
+ const result = await suggestGateFocus('T001', taskAccessor, brainAccessor);
103
+ expect(result.taskId).toBe('T001');
104
+ expect(result.gateFocus.length).toBeGreaterThan(0);
105
+ expect(result.overallConfidence).toBeGreaterThanOrEqual(0);
106
+ expect(result.overallConfidence).toBeLessThanOrEqual(1);
107
+ });
108
+ it('skips already-passed gates', async () => {
109
+ const task = makeTask({
110
+ id: 'T001',
111
+ title: 'Partial task',
112
+ verification: makeVerification({
113
+ gates: { implemented: true, testsPassed: true },
114
+ }),
115
+ });
116
+ const taskAccessor = mockTaskAccessor([task]);
117
+ const brainAccessor = mockBrainAccessor();
118
+ const result = await suggestGateFocus('T001', taskAccessor, brainAccessor);
119
+ const gateNames = result.gateFocus.map((r) => r.gate);
120
+ expect(gateNames).not.toContain('implemented');
121
+ expect(gateNames).not.toContain('testsPassed');
122
+ });
123
+ it('marks security gate as high priority for security-labeled tasks', async () => {
124
+ const task = makeTask({
125
+ id: 'T001',
126
+ title: 'Auth overhaul',
127
+ labels: ['auth', 'security'],
128
+ size: 'large',
129
+ });
130
+ const taskAccessor = mockTaskAccessor([task]);
131
+ const brainAccessor = mockBrainAccessor();
132
+ const result = await suggestGateFocus('T001', taskAccessor, brainAccessor);
133
+ const securityGate = result.gateFocus.find((r) => r.gate === 'securityPassed');
134
+ expect(securityGate).toBeDefined();
135
+ expect(securityGate.priority).toBe('high');
136
+ });
137
+ it('incorporates historical failure patterns into gate risk', async () => {
138
+ const task = makeTask({ id: 'T001', title: 'Deploy service', labels: ['deploy'] });
139
+ const failurePatterns = [
140
+ makePattern({
141
+ type: 'failure',
142
+ pattern: 'testsPassed gate often fails during deploy tasks',
143
+ context: 'deploy testing failure',
144
+ successRate: 0.1,
145
+ }),
146
+ ];
147
+ const taskAccessor = mockTaskAccessor([task]);
148
+ const brainAccessor = mockBrainAccessor(failurePatterns);
149
+ const result = await suggestGateFocus('T001', taskAccessor, brainAccessor);
150
+ const testsGate = result.gateFocus.find((r) => r.gate === 'testsPassed');
151
+ expect(testsGate).toBeDefined();
152
+ // Historical failure data should push this gate to high priority
153
+ expect(testsGate.priority).toBe('high');
154
+ });
155
+ it('includes mitigation from historical patterns in rationale', async () => {
156
+ const task = makeTask({ id: 'T001', title: 'Migration task', labels: ['migration'] });
157
+ const failurePatterns = [
158
+ makePattern({
159
+ type: 'failure',
160
+ pattern: 'qaPassed fails on migration tasks',
161
+ context: 'migration qa failure',
162
+ successRate: 0.2,
163
+ mitigation: 'Always test rollback before qa sign-off',
164
+ }),
165
+ ];
166
+ const taskAccessor = mockTaskAccessor([task]);
167
+ const brainAccessor = mockBrainAccessor(failurePatterns);
168
+ const result = await suggestGateFocus('T001', taskAccessor, brainAccessor);
169
+ const qaGate = result.gateFocus.find((r) => r.gate === 'qaPassed');
170
+ expect(qaGate).toBeDefined();
171
+ expect(qaGate.rationale).toContain('rollback');
172
+ });
173
+ it('orders gates by priority (high before medium before low)', async () => {
174
+ const task = makeTask({
175
+ id: 'T001',
176
+ title: 'Auth service',
177
+ labels: ['auth', 'security'],
178
+ size: 'large',
179
+ priority: 'critical',
180
+ });
181
+ const taskAccessor = mockTaskAccessor([task]);
182
+ const brainAccessor = mockBrainAccessor();
183
+ const result = await suggestGateFocus('T001', taskAccessor, brainAccessor);
184
+ const priorityValues = { high: 0, medium: 1, low: 2 };
185
+ for (let i = 1; i < result.gateFocus.length; i++) {
186
+ const prevPriority = priorityValues[result.gateFocus[i - 1].priority];
187
+ const currPriority = priorityValues[result.gateFocus[i].priority];
188
+ expect(prevPriority).toBeLessThanOrEqual(currPriority);
189
+ }
190
+ });
191
+ it('generates tips about missing acceptance criteria', async () => {
192
+ const task = makeTask({ id: 'T001', title: 'Feature', acceptance: [] });
193
+ const taskAccessor = mockTaskAccessor([task]);
194
+ const brainAccessor = mockBrainAccessor();
195
+ const result = await suggestGateFocus('T001', taskAccessor, brainAccessor);
196
+ expect(result.tips.some((t) => t.toLowerCase().includes('acceptance'))).toBe(true);
197
+ });
198
+ it('mentions previously-failed gates in tips', async () => {
199
+ const task = makeTask({
200
+ id: 'T001',
201
+ title: 'Retry task',
202
+ verification: makeVerification({
203
+ round: 2,
204
+ gates: { testsPassed: false },
205
+ }),
206
+ });
207
+ const taskAccessor = mockTaskAccessor([task]);
208
+ const brainAccessor = mockBrainAccessor();
209
+ const result = await suggestGateFocus('T001', taskAccessor, brainAccessor);
210
+ expect(result.tips.some((t) => t.includes('previous'))).toBe(true);
211
+ });
212
+ });
213
+ // ============================================================================
214
+ // Tests: scoreVerificationConfidence
215
+ // ============================================================================
216
+ describe('scoreVerificationConfidence', () => {
217
+ it('returns confidence 0 when all tracked gates failed', async () => {
218
+ const task = makeTask({ id: 'T001', title: 'Failing task' });
219
+ const taskAccessor = mockTaskAccessor([task]);
220
+ const brainAccessor = mockBrainAccessor();
221
+ const verification = makeVerification({
222
+ passed: false,
223
+ round: 5,
224
+ gates: {
225
+ implemented: false,
226
+ testsPassed: false,
227
+ qaPassed: false,
228
+ },
229
+ failureLog: [
230
+ { round: 1, agent: 'qa', reason: 'fails', timestamp: new Date().toISOString() },
231
+ { round: 2, agent: 'qa', reason: 'still fails', timestamp: new Date().toISOString() },
232
+ { round: 3, agent: 'qa', reason: 'again', timestamp: new Date().toISOString() },
233
+ ],
234
+ });
235
+ const result = await scoreVerificationConfidence('T001', verification, taskAccessor, brainAccessor, { dryRun: true });
236
+ expect(result.confidenceScore).toBeLessThan(0.3);
237
+ expect(result.passed).toBe(false);
238
+ expect(result.gatesFailed).toContain('implemented');
239
+ expect(result.observationId).toBeUndefined();
240
+ });
241
+ it('returns high confidence for first-round all-pass', async () => {
242
+ const task = makeTask({ id: 'T001', title: 'Green task' });
243
+ const taskAccessor = mockTaskAccessor([task]);
244
+ const brainAccessor = mockBrainAccessor();
245
+ const verification = makeVerification({
246
+ passed: true,
247
+ round: 1,
248
+ gates: {
249
+ implemented: true,
250
+ testsPassed: true,
251
+ qaPassed: true,
252
+ },
253
+ failureLog: [],
254
+ });
255
+ const result = await scoreVerificationConfidence('T001', verification, taskAccessor, brainAccessor, { dryRun: true });
256
+ expect(result.confidenceScore).toBeGreaterThan(0.7);
257
+ expect(result.passed).toBe(true);
258
+ expect(result.gatesPassed).toContain('implemented');
259
+ expect(result.gatesPassed).toContain('testsPassed');
260
+ expect(result.gatesPassed).toContain('qaPassed');
261
+ });
262
+ it('correctly classifies gatesPassed and gatesFailed', async () => {
263
+ const task = makeTask({ id: 'T001', title: 'Mixed task' });
264
+ const taskAccessor = mockTaskAccessor([task]);
265
+ const brainAccessor = mockBrainAccessor();
266
+ const verification = makeVerification({
267
+ passed: false,
268
+ round: 1,
269
+ gates: {
270
+ implemented: true,
271
+ testsPassed: false,
272
+ qaPassed: null,
273
+ cleanupDone: true,
274
+ },
275
+ });
276
+ const result = await scoreVerificationConfidence('T001', verification, taskAccessor, brainAccessor, { dryRun: true });
277
+ expect(result.gatesPassed).toContain('implemented');
278
+ expect(result.gatesPassed).toContain('cleanupDone');
279
+ expect(result.gatesFailed).toContain('testsPassed');
280
+ expect(result.gatesFailed).toContain('qaPassed');
281
+ });
282
+ it('persists observation when not dry-run', async () => {
283
+ const task = makeTask({ id: 'T001', title: 'Persist task' });
284
+ const taskAccessor = mockTaskAccessor([task]);
285
+ const brainAccessor = mockBrainAccessor();
286
+ const verification = makeVerification({
287
+ passed: true,
288
+ round: 1,
289
+ gates: { implemented: true, testsPassed: true },
290
+ });
291
+ const result = await scoreVerificationConfidence('T001', verification, taskAccessor, brainAccessor);
292
+ expect(brainAccessor.addObservation).toHaveBeenCalledTimes(1);
293
+ expect(result.observationId).toBeDefined();
294
+ expect(result.observationId).toMatch(/^O-vconf-/);
295
+ });
296
+ it('extracts learning for high-confidence first-round pass', async () => {
297
+ const task = makeTask({ id: 'T001', title: 'Clean task', size: 'small' });
298
+ const taskAccessor = mockTaskAccessor([task]);
299
+ const brainAccessor = mockBrainAccessor();
300
+ const verification = makeVerification({
301
+ passed: true,
302
+ round: 1,
303
+ gates: {
304
+ implemented: true,
305
+ testsPassed: true,
306
+ qaPassed: true,
307
+ cleanupDone: true,
308
+ documented: true,
309
+ },
310
+ failureLog: [],
311
+ });
312
+ const result = await scoreVerificationConfidence('T001', verification, taskAccessor, brainAccessor);
313
+ expect(brainAccessor.addLearning).toHaveBeenCalledTimes(1);
314
+ expect(result.learningId).toBeDefined();
315
+ expect(result.learningId).toMatch(/^L-vconf-/);
316
+ });
317
+ it('extracts actionable learning when multiple gates fail', async () => {
318
+ const task = makeTask({ id: 'T001', title: 'Troubled task', labels: ['auth'] });
319
+ const taskAccessor = mockTaskAccessor([task]);
320
+ const brainAccessor = mockBrainAccessor();
321
+ const verification = makeVerification({
322
+ passed: false,
323
+ round: 2,
324
+ gates: { testsPassed: false, qaPassed: false, securityPassed: false },
325
+ failureLog: [
326
+ { round: 1, agent: 'qa', reason: 'coverage', timestamp: new Date().toISOString() },
327
+ { round: 1, agent: 'security', reason: 'vuln', timestamp: new Date().toISOString() },
328
+ ],
329
+ });
330
+ const result = await scoreVerificationConfidence('T001', verification, taskAccessor, brainAccessor);
331
+ // Should extract learning: >= 2 gates failed
332
+ expect(brainAccessor.addLearning).toHaveBeenCalledTimes(1);
333
+ const learningCall = brainAccessor.addLearning.mock.calls[0][0];
334
+ expect(learningCall.actionable).toBe(true);
335
+ expect(learningCall.insight).toContain('testsPassed');
336
+ expect(result.learningId).toBeDefined();
337
+ });
338
+ it('does not extract learning for moderate mid-round outcomes', async () => {
339
+ const task = makeTask({ id: 'T001', title: 'Average task' });
340
+ const taskAccessor = mockTaskAccessor([task]);
341
+ const brainAccessor = mockBrainAccessor();
342
+ const verification = makeVerification({
343
+ passed: true,
344
+ round: 3,
345
+ gates: { implemented: true, testsPassed: true },
346
+ failureLog: [{ round: 1, agent: 'qa', reason: 'minor', timestamp: new Date().toISOString() }],
347
+ });
348
+ const result = await scoreVerificationConfidence('T001', verification, taskAccessor, brainAccessor);
349
+ // Round 3 pass with moderate confidence — not notable enough
350
+ expect(result.learningId).toBeUndefined();
351
+ });
352
+ });
353
+ // ============================================================================
354
+ // Tests: storePrediction
355
+ // ============================================================================
356
+ describe('storePrediction', () => {
357
+ it('returns undefined on dry run', async () => {
358
+ const brainAccessor = mockBrainAccessor();
359
+ const observationId = await storePrediction({
360
+ taskId: 'T001',
361
+ stage: 'implementation',
362
+ passLikelihood: 0.8,
363
+ blockers: [],
364
+ suggestions: ['Review docs'],
365
+ }, brainAccessor, { dryRun: true });
366
+ expect(observationId).toBeUndefined();
367
+ expect(brainAccessor.addObservation).not.toHaveBeenCalled();
368
+ });
369
+ it('persists prediction observation to brain', async () => {
370
+ const brainAccessor = mockBrainAccessor();
371
+ const observationId = await storePrediction({
372
+ taskId: 'T001',
373
+ stage: 'specification',
374
+ passLikelihood: 0.6,
375
+ blockers: ['Missing AC'],
376
+ suggestions: [],
377
+ }, brainAccessor, { project: 'test-project', sessionId: 'S-001' });
378
+ expect(observationId).toMatch(/^O-pred-/);
379
+ expect(brainAccessor.addObservation).toHaveBeenCalledTimes(1);
380
+ const obs = brainAccessor.addObservation.mock.calls[0][0];
381
+ expect(obs.title).toContain('T001');
382
+ expect(obs.title).toContain('specification');
383
+ expect(obs.narrative).toContain('Missing AC');
384
+ expect(obs.project).toBe('test-project');
385
+ expect(obs.sourceSessionId).toBe('S-001');
386
+ });
387
+ it('includes pass likelihood in subtitle', async () => {
388
+ const brainAccessor = mockBrainAccessor();
389
+ await storePrediction({
390
+ taskId: 'T002',
391
+ stage: 'verification',
392
+ passLikelihood: 0.75,
393
+ blockers: [],
394
+ suggestions: [],
395
+ }, brainAccessor);
396
+ const obs = brainAccessor.addObservation.mock.calls[0][0];
397
+ expect(obs.subtitle).toContain('75%');
398
+ });
399
+ });
400
+ // ============================================================================
401
+ // Tests: predictAndStore
402
+ // ============================================================================
403
+ describe('predictAndStore', () => {
404
+ it('returns prediction with observationId when not dry-run', async () => {
405
+ const task = makeTask({ id: 'T001', title: 'Feature task', status: 'active' });
406
+ const taskAccessor = mockTaskAccessor([task]);
407
+ const brainAccessor = mockBrainAccessor();
408
+ const result = await predictAndStore('T001', 'implementation', taskAccessor, brainAccessor);
409
+ expect(result.taskId).toBe('T001');
410
+ expect(result.stage).toBe('implementation');
411
+ expect(result.passLikelihood).toBeGreaterThanOrEqual(0);
412
+ expect(result.passLikelihood).toBeLessThanOrEqual(1);
413
+ expect(result.observationId).toMatch(/^O-pred-/);
414
+ expect(brainAccessor.addObservation).toHaveBeenCalledTimes(1);
415
+ });
416
+ it('skips storage on dry run', async () => {
417
+ const task = makeTask({ id: 'T001', title: 'Feature task', status: 'active' });
418
+ const taskAccessor = mockTaskAccessor([task]);
419
+ const brainAccessor = mockBrainAccessor();
420
+ const result = await predictAndStore('T001', 'specification', taskAccessor, brainAccessor, {
421
+ dryRun: true,
422
+ });
423
+ expect(result.observationId).toBeUndefined();
424
+ expect(brainAccessor.addObservation).not.toHaveBeenCalled();
425
+ });
426
+ it('handles task not found gracefully', async () => {
427
+ const taskAccessor = mockTaskAccessor([]);
428
+ const brainAccessor = mockBrainAccessor();
429
+ const result = await predictAndStore('T999', 'verification', taskAccessor, brainAccessor, {
430
+ dryRun: true,
431
+ });
432
+ expect(result.taskId).toBe('T999');
433
+ expect(result.passLikelihood).toBe(0);
434
+ expect(result.blockers[0]).toContain('not found');
435
+ expect(result.observationId).toBeUndefined();
436
+ });
437
+ });
438
+ // ============================================================================
439
+ // Tests: confidence score computation boundary cases
440
+ // ============================================================================
441
+ describe('confidence score boundary cases', () => {
442
+ it('confidence approaches 1.0 for ideal verification', async () => {
443
+ const task = makeTask({ id: 'T001', title: 'Ideal' });
444
+ const taskAccessor = mockTaskAccessor([task]);
445
+ const brainAccessor = mockBrainAccessor();
446
+ const allGatesPassed = {
447
+ implemented: true,
448
+ testsPassed: true,
449
+ qaPassed: true,
450
+ cleanupDone: true,
451
+ securityPassed: true,
452
+ documented: true,
453
+ };
454
+ const verification = makeVerification({
455
+ passed: true,
456
+ round: 1,
457
+ gates: allGatesPassed,
458
+ failureLog: [],
459
+ });
460
+ const result = await scoreVerificationConfidence('T001', verification, taskAccessor, brainAccessor, { dryRun: true });
461
+ // 6/6 gates passed (0.6) + no failures (0.2) + round 1 (0.2) = 1.0
462
+ expect(result.confidenceScore).toBe(1.0);
463
+ });
464
+ it('confidence is lower for multi-round verification even with pass', async () => {
465
+ const task = makeTask({ id: 'T001', title: 'Multi-round' });
466
+ const taskAccessor = mockTaskAccessor([task]);
467
+ const brainAccessor = mockBrainAccessor();
468
+ const singleRound = makeVerification({
469
+ passed: true,
470
+ round: 1,
471
+ gates: { implemented: true, testsPassed: true },
472
+ failureLog: [],
473
+ });
474
+ const multiRound = makeVerification({
475
+ passed: true,
476
+ round: 3,
477
+ gates: { implemented: true, testsPassed: true },
478
+ failureLog: [{ round: 1, agent: 'qa', reason: 'issue', timestamp: new Date().toISOString() }],
479
+ });
480
+ const [s1, m1] = await Promise.all([
481
+ scoreVerificationConfidence('T001', singleRound, taskAccessor, brainAccessor, {
482
+ dryRun: true,
483
+ }),
484
+ scoreVerificationConfidence('T001', multiRound, taskAccessor, brainAccessor, {
485
+ dryRun: true,
486
+ }),
487
+ ]);
488
+ expect(s1.confidenceScore).toBeGreaterThan(m1.confidenceScore);
489
+ });
490
+ it('confidence is clamped between 0 and 1', async () => {
491
+ const task = makeTask({ id: 'T001', title: 'Extreme' });
492
+ const taskAccessor = mockTaskAccessor([task]);
493
+ const brainAccessor = mockBrainAccessor();
494
+ const worstCase = makeVerification({
495
+ passed: false,
496
+ round: 10,
497
+ gates: {
498
+ implemented: false,
499
+ testsPassed: false,
500
+ qaPassed: false,
501
+ cleanupDone: false,
502
+ securityPassed: false,
503
+ documented: false,
504
+ },
505
+ failureLog: Array.from({ length: 10 }, (_, i) => ({
506
+ round: i + 1,
507
+ agent: 'qa',
508
+ reason: `failure ${i}`,
509
+ timestamp: new Date().toISOString(),
510
+ })),
511
+ });
512
+ const result = await scoreVerificationConfidence('T001', worstCase, taskAccessor, brainAccessor, { dryRun: true });
513
+ expect(result.confidenceScore).toBeGreaterThanOrEqual(0);
514
+ expect(result.confidenceScore).toBeLessThanOrEqual(1);
515
+ });
516
+ });
517
+ //# sourceMappingURL=adaptive-validation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adaptive-validation.test.js","sourceRoot":"","sources":["adaptive-validation.test.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@
8
8
  * - Blast radius calculation
9
9
  * - Critical path detection
10
10
  * - Edge cases (orphan tasks, circular refs, no deps)
11
+ * - predictImpact: free-text change description matching (T043)
11
12
  *
12
13
  * @module intelligence
13
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"impact.test.d.ts","sourceRoot":"","sources":["impact.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
1
+ {"version":3,"file":"impact.test.d.ts","sourceRoot":"","sources":["impact.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}