@cleocode/core 2026.9.8 → 2026.9.10

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 (569) hide show
  1. package/dist/audit/reconstruct.d.ts +13 -43
  2. package/dist/audit/reconstruct.d.ts.map +1 -1
  3. package/dist/audit/reconstruct.js +295 -290
  4. package/dist/audit/reconstruct.js.map +1 -1
  5. package/dist/bootstrap.d.ts.map +1 -1
  6. package/dist/bootstrap.js +8 -2
  7. package/dist/bootstrap.js.map +1 -1
  8. package/dist/compliance/protocol-rules.d.ts.map +1 -1
  9. package/dist/compliance/protocol-rules.js +3 -1
  10. package/dist/compliance/protocol-rules.js.map +1 -1
  11. package/dist/dispatch/mutate-projection.d.ts.map +1 -1
  12. package/dist/dispatch/mutate-projection.js +12 -0
  13. package/dist/dispatch/mutate-projection.js.map +1 -1
  14. package/dist/dispatch/mvi-projection.d.ts +29 -6
  15. package/dist/dispatch/mvi-projection.d.ts.map +1 -1
  16. package/dist/dispatch/mvi-projection.js +109 -139
  17. package/dist/dispatch/mvi-projection.js.map +1 -1
  18. package/dist/docs/docs-read-model.d.ts +3 -2
  19. package/dist/docs/docs-read-model.d.ts.map +1 -1
  20. package/dist/docs/docs-read-model.js +4 -3
  21. package/dist/docs/docs-read-model.js.map +1 -1
  22. package/dist/docs/export-document.js +5129 -2297
  23. package/dist/docs/export-document.js.map +3 -3
  24. package/dist/docs/projection.d.ts +67 -0
  25. package/dist/docs/projection.d.ts.map +1 -0
  26. package/dist/docs/projection.js +370 -0
  27. package/dist/docs/projection.js.map +1 -0
  28. package/dist/doctor/acceptance-drift.d.ts +6 -2
  29. package/dist/doctor/acceptance-drift.d.ts.map +1 -1
  30. package/dist/doctor/acceptance-drift.js +43 -5
  31. package/dist/doctor/acceptance-drift.js.map +1 -1
  32. package/dist/doctor/knowledge-summary.d.ts +41 -0
  33. package/dist/doctor/knowledge-summary.d.ts.map +1 -0
  34. package/dist/doctor/knowledge-summary.js +81 -0
  35. package/dist/doctor/knowledge-summary.js.map +1 -0
  36. package/dist/doctor/knowledge.d.ts +192 -0
  37. package/dist/doctor/knowledge.d.ts.map +1 -0
  38. package/dist/doctor/knowledge.js +1864 -0
  39. package/dist/doctor/knowledge.js.map +1 -0
  40. package/dist/git/work-tree.d.ts +169 -0
  41. package/dist/git/work-tree.d.ts.map +1 -0
  42. package/dist/git/work-tree.js +341 -0
  43. package/dist/git/work-tree.js.map +1 -0
  44. package/dist/hooks/handlers/task-hooks.d.ts +8 -5
  45. package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
  46. package/dist/hooks/handlers/task-hooks.js +15 -60
  47. package/dist/hooks/handlers/task-hooks.js.map +1 -1
  48. package/dist/identity/cleo-identity.d.ts +13 -0
  49. package/dist/identity/cleo-identity.d.ts.map +1 -1
  50. package/dist/identity/cleo-identity.js +20 -6
  51. package/dist/identity/cleo-identity.js.map +1 -1
  52. package/dist/injection.d.ts.map +1 -1
  53. package/dist/injection.js +29 -13
  54. package/dist/injection.js.map +1 -1
  55. package/dist/internal.d.ts +3 -0
  56. package/dist/internal.d.ts.map +1 -1
  57. package/dist/internal.js +4 -0
  58. package/dist/internal.js.map +1 -1
  59. package/dist/lifecycle/verification/satisfies-validator.d.ts.map +1 -1
  60. package/dist/lifecycle/verification/satisfies-validator.js +124 -120
  61. package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
  62. package/dist/llm/plugin-facade.js +4047 -1726
  63. package/dist/llm/plugin-facade.js.map +3 -3
  64. package/dist/memory/brain-backfill.d.ts +27 -12
  65. package/dist/memory/brain-backfill.d.ts.map +1 -1
  66. package/dist/memory/brain-backfill.js +325 -134
  67. package/dist/memory/brain-backfill.js.map +1 -1
  68. package/dist/memory/brain-doctor.d.ts +21 -0
  69. package/dist/memory/brain-doctor.d.ts.map +1 -1
  70. package/dist/memory/brain-doctor.js +111 -53
  71. package/dist/memory/brain-doctor.js.map +1 -1
  72. package/dist/memory/brain-links.d.ts.map +1 -1
  73. package/dist/memory/brain-links.js +31 -4
  74. package/dist/memory/brain-links.js.map +1 -1
  75. package/dist/memory/brain-reasoning.d.ts.map +1 -1
  76. package/dist/memory/brain-reasoning.js +28 -2
  77. package/dist/memory/brain-reasoning.js.map +1 -1
  78. package/dist/memory/brain-reconciler.d.ts +14 -19
  79. package/dist/memory/brain-reconciler.d.ts.map +1 -1
  80. package/dist/memory/brain-reconciler.js +70 -97
  81. package/dist/memory/brain-reconciler.js.map +1 -1
  82. package/dist/memory/brain-search.d.ts +2 -0
  83. package/dist/memory/brain-search.d.ts.map +1 -1
  84. package/dist/memory/brain-search.js +59 -29
  85. package/dist/memory/brain-search.js.map +1 -1
  86. package/dist/memory/brain-similarity.d.ts.map +1 -1
  87. package/dist/memory/brain-similarity.js +5 -4
  88. package/dist/memory/brain-similarity.js.map +1 -1
  89. package/dist/memory/brain-stub-prune.d.ts +31 -9
  90. package/dist/memory/brain-stub-prune.d.ts.map +1 -1
  91. package/dist/memory/brain-stub-prune.js +65 -18
  92. package/dist/memory/brain-stub-prune.js.map +1 -1
  93. package/dist/memory/brain-writer-handlers.d.ts +10 -1
  94. package/dist/memory/brain-writer-handlers.d.ts.map +1 -1
  95. package/dist/memory/brain-writer-handlers.js +23 -3
  96. package/dist/memory/brain-writer-handlers.js.map +1 -1
  97. package/dist/memory/brain-writer-thread.d.ts +11 -1
  98. package/dist/memory/brain-writer-thread.d.ts.map +1 -1
  99. package/dist/memory/brain-writer-thread.js +87 -20
  100. package/dist/memory/brain-writer-thread.js.map +1 -1
  101. package/dist/memory/brain-writer-worker.js +8 -1
  102. package/dist/memory/brain-writer-worker.js.map +1 -1
  103. package/dist/memory/decision-cross-link.d.ts +39 -0
  104. package/dist/memory/decision-cross-link.d.ts.map +1 -1
  105. package/dist/memory/decision-cross-link.js +316 -0
  106. package/dist/memory/decision-cross-link.js.map +1 -1
  107. package/dist/memory/decisions.d.ts +4 -1
  108. package/dist/memory/decisions.d.ts.map +1 -1
  109. package/dist/memory/decisions.js +7 -24
  110. package/dist/memory/decisions.js.map +1 -1
  111. package/dist/memory/dispatch-trace.d.ts +12 -5
  112. package/dist/memory/dispatch-trace.d.ts.map +1 -1
  113. package/dist/memory/dispatch-trace.js +17 -7
  114. package/dist/memory/dispatch-trace.js.map +1 -1
  115. package/dist/memory/eligibility.d.ts +51 -0
  116. package/dist/memory/eligibility.d.ts.map +1 -0
  117. package/dist/memory/eligibility.js +77 -0
  118. package/dist/memory/eligibility.js.map +1 -0
  119. package/dist/memory/engine-compat.d.ts +2 -0
  120. package/dist/memory/engine-compat.d.ts.map +1 -1
  121. package/dist/memory/engine-compat.js +10 -0
  122. package/dist/memory/engine-compat.js.map +1 -1
  123. package/dist/memory/extraction-gate.d.ts +21 -7
  124. package/dist/memory/extraction-gate.d.ts.map +1 -1
  125. package/dist/memory/extraction-gate.js +178 -216
  126. package/dist/memory/extraction-gate.js.map +1 -1
  127. package/dist/memory/graph-auto-populate.d.ts +38 -5
  128. package/dist/memory/graph-auto-populate.d.ts.map +1 -1
  129. package/dist/memory/graph-auto-populate.js +182 -60
  130. package/dist/memory/graph-auto-populate.js.map +1 -1
  131. package/dist/memory/graph-memory-bridge.d.ts +14 -1
  132. package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
  133. package/dist/memory/graph-memory-bridge.js +66 -28
  134. package/dist/memory/graph-memory-bridge.js.map +1 -1
  135. package/dist/memory/index.d.ts +1 -19
  136. package/dist/memory/index.d.ts.map +1 -1
  137. package/dist/memory/index.js +1 -50
  138. package/dist/memory/index.js.map +1 -1
  139. package/dist/memory/learnings.d.ts.map +1 -1
  140. package/dist/memory/learnings.js +2 -23
  141. package/dist/memory/learnings.js.map +1 -1
  142. package/dist/memory/manifest-filter.d.ts +21 -0
  143. package/dist/memory/manifest-filter.d.ts.map +1 -0
  144. package/dist/memory/manifest-filter.js +51 -0
  145. package/dist/memory/manifest-filter.js.map +1 -0
  146. package/dist/memory/manifest-ingestion.d.ts +28 -30
  147. package/dist/memory/manifest-ingestion.d.ts.map +1 -1
  148. package/dist/memory/manifest-ingestion.js +104 -235
  149. package/dist/memory/manifest-ingestion.js.map +1 -1
  150. package/dist/memory/observer-reflector.d.ts +2 -0
  151. package/dist/memory/observer-reflector.d.ts.map +1 -1
  152. package/dist/memory/observer-reflector.js +6 -49
  153. package/dist/memory/observer-reflector.js.map +1 -1
  154. package/dist/memory/patterns.d.ts +10 -0
  155. package/dist/memory/patterns.d.ts.map +1 -1
  156. package/dist/memory/patterns.js +25 -33
  157. package/dist/memory/patterns.js.map +1 -1
  158. package/dist/memory/pipeline-manifest-sqlite.d.ts +72 -9
  159. package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
  160. package/dist/memory/pipeline-manifest-sqlite.js +508 -412
  161. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
  162. package/dist/memory/retrieval/build-retrieval-bundle.d.ts.map +1 -1
  163. package/dist/memory/retrieval/build-retrieval-bundle.js +16 -15
  164. package/dist/memory/retrieval/build-retrieval-bundle.js.map +1 -1
  165. package/dist/memory/retrieval/fetch.d.ts +7 -0
  166. package/dist/memory/retrieval/fetch.d.ts.map +1 -1
  167. package/dist/memory/retrieval/fetch.js +14 -11
  168. package/dist/memory/retrieval/fetch.js.map +1 -1
  169. package/dist/memory/retrieval/observe.d.ts +7 -1
  170. package/dist/memory/retrieval/observe.d.ts.map +1 -1
  171. package/dist/memory/retrieval/observe.js +58 -4
  172. package/dist/memory/retrieval/observe.js.map +1 -1
  173. package/dist/memory/retrieval/search.d.ts +14 -1
  174. package/dist/memory/retrieval/search.d.ts.map +1 -1
  175. package/dist/memory/retrieval/search.js +133 -69
  176. package/dist/memory/retrieval/search.js.map +1 -1
  177. package/dist/memory/retrieval/telemetry.d.ts +31 -0
  178. package/dist/memory/retrieval/telemetry.d.ts.map +1 -0
  179. package/dist/memory/retrieval/telemetry.js +53 -0
  180. package/dist/memory/retrieval/telemetry.js.map +1 -0
  181. package/dist/nexus/analyze-orchestrator.d.ts +41 -9
  182. package/dist/nexus/analyze-orchestrator.d.ts.map +1 -1
  183. package/dist/nexus/analyze-orchestrator.js +257 -58
  184. package/dist/nexus/analyze-orchestrator.js.map +1 -1
  185. package/dist/nexus/api-contracts.d.ts +2 -6
  186. package/dist/nexus/api-contracts.d.ts.map +1 -1
  187. package/dist/nexus/api-contracts.js +11 -2
  188. package/dist/nexus/api-contracts.js.map +1 -1
  189. package/dist/nexus/context.d.ts.map +1 -1
  190. package/dist/nexus/context.js +14 -37
  191. package/dist/nexus/context.js.map +1 -1
  192. package/dist/nexus/diff.d.ts.map +1 -1
  193. package/dist/nexus/diff.js +2 -1
  194. package/dist/nexus/diff.js.map +1 -1
  195. package/dist/nexus/identity.d.ts +29 -3
  196. package/dist/nexus/identity.d.ts.map +1 -1
  197. package/dist/nexus/identity.js +63 -12
  198. package/dist/nexus/identity.js.map +1 -1
  199. package/dist/nexus/impact.d.ts +21 -19
  200. package/dist/nexus/impact.d.ts.map +1 -1
  201. package/dist/nexus/impact.js +96 -192
  202. package/dist/nexus/impact.js.map +1 -1
  203. package/dist/nexus/knowledge.d.ts +80 -0
  204. package/dist/nexus/knowledge.d.ts.map +1 -0
  205. package/dist/nexus/knowledge.js +786 -0
  206. package/dist/nexus/knowledge.js.map +1 -0
  207. package/dist/nexus/living-brain.d.ts +8 -5
  208. package/dist/nexus/living-brain.d.ts.map +1 -1
  209. package/dist/nexus/living-brain.js +252 -188
  210. package/dist/nexus/living-brain.js.map +1 -1
  211. package/dist/nexus/registry.d.ts +11 -2
  212. package/dist/nexus/registry.d.ts.map +1 -1
  213. package/dist/nexus/registry.js +144 -128
  214. package/dist/nexus/registry.js.map +1 -1
  215. package/dist/nexus/source-roots.d.ts +16 -0
  216. package/dist/nexus/source-roots.d.ts.map +1 -0
  217. package/dist/nexus/source-roots.js +174 -0
  218. package/dist/nexus/source-roots.js.map +1 -0
  219. package/dist/nexus/task-evidence.d.ts +22 -0
  220. package/dist/nexus/task-evidence.d.ts.map +1 -0
  221. package/dist/nexus/task-evidence.js +210 -0
  222. package/dist/nexus/task-evidence.js.map +1 -0
  223. package/dist/nexus/tasks-bridge.d.ts +14 -7
  224. package/dist/nexus/tasks-bridge.d.ts.map +1 -1
  225. package/dist/nexus/tasks-bridge.js +81 -40
  226. package/dist/nexus/tasks-bridge.js.map +1 -1
  227. package/dist/orchestrate/lifecycle-ops.d.ts.map +1 -1
  228. package/dist/orchestrate/lifecycle-ops.js +170 -120
  229. package/dist/orchestrate/lifecycle-ops.js.map +1 -1
  230. package/dist/orchestrate/query-ops.d.ts +6 -7
  231. package/dist/orchestrate/query-ops.d.ts.map +1 -1
  232. package/dist/orchestrate/query-ops.js +509 -532
  233. package/dist/orchestrate/query-ops.js.map +1 -1
  234. package/dist/orchestration/bootstrap.d.ts +15 -1
  235. package/dist/orchestration/bootstrap.d.ts.map +1 -1
  236. package/dist/orchestration/bootstrap.js +21 -10
  237. package/dist/orchestration/bootstrap.js.map +1 -1
  238. package/dist/orchestration/index.d.ts +35 -3
  239. package/dist/orchestration/index.d.ts.map +1 -1
  240. package/dist/orchestration/index.js +64 -35
  241. package/dist/orchestration/index.js.map +1 -1
  242. package/dist/orchestration/lead-rollup.d.ts +24 -1
  243. package/dist/orchestration/lead-rollup.d.ts.map +1 -1
  244. package/dist/orchestration/lead-rollup.js +31 -11
  245. package/dist/orchestration/lead-rollup.js.map +1 -1
  246. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  247. package/dist/orchestration/spawn-prompt.js +25 -45
  248. package/dist/orchestration/spawn-prompt.js.map +1 -1
  249. package/dist/orchestration/unblock.d.ts +15 -1
  250. package/dist/orchestration/unblock.d.ts.map +1 -1
  251. package/dist/orchestration/unblock.js +23 -12
  252. package/dist/orchestration/unblock.js.map +1 -1
  253. package/dist/orchestration/validate-spawn.d.ts.map +1 -1
  254. package/dist/orchestration/validate-spawn.js +3 -3
  255. package/dist/orchestration/validate-spawn.js.map +1 -1
  256. package/dist/orchestration/waves.d.ts +29 -13
  257. package/dist/orchestration/waves.d.ts.map +1 -1
  258. package/dist/orchestration/waves.js +43 -55
  259. package/dist/orchestration/waves.js.map +1 -1
  260. package/dist/paths.d.ts +17 -163
  261. package/dist/paths.d.ts.map +1 -1
  262. package/dist/paths.js +145 -496
  263. package/dist/paths.js.map +1 -1
  264. package/dist/project-info.d.ts +2 -11
  265. package/dist/project-info.d.ts.map +1 -1
  266. package/dist/project-info.js +3 -31
  267. package/dist/project-info.js.map +1 -1
  268. package/dist/project-scope.d.ts +239 -0
  269. package/dist/project-scope.d.ts.map +1 -0
  270. package/dist/project-scope.js +473 -0
  271. package/dist/project-scope.js.map +1 -0
  272. package/dist/release/pr-evidence.d.ts +23 -4
  273. package/dist/release/pr-evidence.d.ts.map +1 -1
  274. package/dist/release/pr-evidence.js +65 -9
  275. package/dist/release/pr-evidence.js.map +1 -1
  276. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  277. package/dist/render/nexus/graph/index.js +4 -2
  278. package/dist/render/nexus/graph/index.js.map +1 -1
  279. package/dist/render/orchestration/audit-reconstruct.d.ts +11 -0
  280. package/dist/render/orchestration/audit-reconstruct.d.ts.map +1 -1
  281. package/dist/render/orchestration/audit-reconstruct.js +21 -6
  282. package/dist/render/orchestration/audit-reconstruct.js.map +1 -1
  283. package/dist/render/tasks/show.js +2 -1
  284. package/dist/render/tasks/show.js.map +1 -1
  285. package/dist/resources/spawn-wrapper.d.ts +82 -14
  286. package/dist/resources/spawn-wrapper.d.ts.map +1 -1
  287. package/dist/resources/spawn-wrapper.js +585 -27
  288. package/dist/resources/spawn-wrapper.js.map +1 -1
  289. package/dist/selfimprove/fix-gen.js +4055 -1734
  290. package/dist/selfimprove/fix-gen.js.map +3 -3
  291. package/dist/sequence/index.d.ts.map +1 -1
  292. package/dist/sequence/index.js +76 -68
  293. package/dist/sequence/index.js.map +1 -1
  294. package/dist/session/canon-lint.d.ts +24 -3
  295. package/dist/session/canon-lint.d.ts.map +1 -1
  296. package/dist/session/canon-lint.js +72 -31
  297. package/dist/session/canon-lint.js.map +1 -1
  298. package/dist/session/engine-ops.d.ts +1 -4
  299. package/dist/session/engine-ops.d.ts.map +1 -1
  300. package/dist/session/engine-ops.js +42 -6
  301. package/dist/session/engine-ops.js.map +1 -1
  302. package/dist/sessions/briefing.d.ts +11 -1
  303. package/dist/sessions/briefing.d.ts.map +1 -1
  304. package/dist/sessions/briefing.js +76 -8
  305. package/dist/sessions/briefing.js.map +1 -1
  306. package/dist/sessions/handoff.d.ts +3 -1
  307. package/dist/sessions/handoff.d.ts.map +1 -1
  308. package/dist/sessions/handoff.js +2 -0
  309. package/dist/sessions/handoff.js.map +1 -1
  310. package/dist/shutdown-deadline.d.ts +24 -33
  311. package/dist/shutdown-deadline.d.ts.map +1 -1
  312. package/dist/shutdown-deadline.js +71 -14
  313. package/dist/shutdown-deadline.js.map +1 -1
  314. package/dist/shutdown.d.ts +21 -10
  315. package/dist/shutdown.d.ts.map +1 -1
  316. package/dist/shutdown.js +89 -42
  317. package/dist/shutdown.js.map +1 -1
  318. package/dist/skills/index.d.ts +1 -1
  319. package/dist/skills/index.d.ts.map +1 -1
  320. package/dist/skills/index.js +1 -1
  321. package/dist/skills/index.js.map +1 -1
  322. package/dist/skills/orchestrator/validator.d.ts +87 -20
  323. package/dist/skills/orchestrator/validator.d.ts.map +1 -1
  324. package/dist/skills/orchestrator/validator.js +330 -241
  325. package/dist/skills/orchestrator/validator.js.map +1 -1
  326. package/dist/store/agent-resolver.d.ts.map +1 -1
  327. package/dist/store/agent-resolver.js +16 -9
  328. package/dist/store/agent-resolver.js.map +1 -1
  329. package/dist/store/attachment-store.d.ts +4 -1
  330. package/dist/store/attachment-store.d.ts.map +1 -1
  331. package/dist/store/attachment-store.js +20 -3
  332. package/dist/store/attachment-store.js.map +1 -1
  333. package/dist/store/background-jobs.d.ts +426 -105
  334. package/dist/store/background-jobs.d.ts.map +1 -1
  335. package/dist/store/background-jobs.js +1208 -252
  336. package/dist/store/background-jobs.js.map +1 -1
  337. package/dist/store/background-ops.d.ts +145 -8
  338. package/dist/store/background-ops.d.ts.map +1 -1
  339. package/dist/store/background-ops.js +459 -15
  340. package/dist/store/background-ops.js.map +1 -1
  341. package/dist/store/backup-inspect.d.ts +48 -4
  342. package/dist/store/backup-inspect.d.ts.map +1 -1
  343. package/dist/store/backup-inspect.js +384 -4
  344. package/dist/store/backup-inspect.js.map +1 -1
  345. package/dist/store/converters.d.ts.map +1 -1
  346. package/dist/store/converters.js +19 -2
  347. package/dist/store/converters.js.map +1 -1
  348. package/dist/store/data-accessor.d.ts +9 -1
  349. package/dist/store/data-accessor.d.ts.map +1 -1
  350. package/dist/store/data-accessor.js +22 -5
  351. package/dist/store/data-accessor.js.map +1 -1
  352. package/dist/store/data-safety-central.d.ts.map +1 -1
  353. package/dist/store/data-safety-central.js +272 -232
  354. package/dist/store/data-safety-central.js.map +1 -1
  355. package/dist/store/db-helpers.d.ts +19 -3
  356. package/dist/store/db-helpers.d.ts.map +1 -1
  357. package/dist/store/db-helpers.js +42 -58
  358. package/dist/store/db-helpers.js.map +1 -1
  359. package/dist/store/dual-scope-db.d.ts +63 -4
  360. package/dist/store/dual-scope-db.d.ts.map +1 -1
  361. package/dist/store/dual-scope-db.js +166 -19
  362. package/dist/store/dual-scope-db.js.map +1 -1
  363. package/dist/store/exodus/archive.d.ts +21 -7
  364. package/dist/store/exodus/archive.d.ts.map +1 -1
  365. package/dist/store/exodus/archive.js +60 -18
  366. package/dist/store/exodus/archive.js.map +1 -1
  367. package/dist/store/exodus/migrate.d.ts.map +1 -1
  368. package/dist/store/exodus/migrate.js +27 -23
  369. package/dist/store/exodus/migrate.js.map +1 -1
  370. package/dist/store/exodus/on-open.d.ts +16 -27
  371. package/dist/store/exodus/on-open.d.ts.map +1 -1
  372. package/dist/store/exodus/on-open.js +121 -169
  373. package/dist/store/exodus/on-open.js.map +1 -1
  374. package/dist/store/exodus/recovery.d.ts +90 -0
  375. package/dist/store/exodus/recovery.d.ts.map +1 -0
  376. package/dist/store/exodus/recovery.js +434 -0
  377. package/dist/store/exodus/recovery.js.map +1 -0
  378. package/dist/store/exodus/types.d.ts +15 -0
  379. package/dist/store/exodus/types.d.ts.map +1 -1
  380. package/dist/store/memory-accessor.d.ts +52 -3
  381. package/dist/store/memory-accessor.d.ts.map +1 -1
  382. package/dist/store/memory-accessor.js +122 -7
  383. package/dist/store/memory-accessor.js.map +1 -1
  384. package/dist/store/nexus-sqlite.d.ts +24 -6
  385. package/dist/store/nexus-sqlite.d.ts.map +1 -1
  386. package/dist/store/nexus-sqlite.js +39 -20
  387. package/dist/store/nexus-sqlite.js.map +1 -1
  388. package/dist/store/ports/domain-binding.d.ts.map +1 -1
  389. package/dist/store/ports/domain-binding.js +27 -5
  390. package/dist/store/ports/domain-binding.js.map +1 -1
  391. package/dist/store/schema/background-jobs.d.ts +181 -2
  392. package/dist/store/schema/background-jobs.d.ts.map +1 -1
  393. package/dist/store/schema/background-jobs.js +27 -3
  394. package/dist/store/schema/background-jobs.js.map +1 -1
  395. package/dist/store/schema/cleo-global/skills.d.ts +2 -2
  396. package/dist/store/schema/cleo-project/lifecycle.d.ts +2 -2
  397. package/dist/store/schema/cleo-project/runtime.d.ts +1 -1
  398. package/dist/store/schema/cleo-project/tasks-core.d.ts +1 -1
  399. package/dist/store/schema/lifecycle.d.ts +2 -2
  400. package/dist/store/schema/skills-schema.d.ts +2 -2
  401. package/dist/store/schema/tasks.d.ts +1 -1
  402. package/dist/store/session-store.d.ts +3 -1
  403. package/dist/store/session-store.d.ts.map +1 -1
  404. package/dist/store/session-store.js +252 -207
  405. package/dist/store/session-store.js.map +1 -1
  406. package/dist/store/sqlite-data-accessor.d.ts +39 -4
  407. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  408. package/dist/store/sqlite-data-accessor.js +689 -527
  409. package/dist/store/sqlite-data-accessor.js.map +1 -1
  410. package/dist/store/tasks-sqlite.d.ts +3 -1
  411. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  412. package/dist/store/tasks-sqlite.js +309 -279
  413. package/dist/store/tasks-sqlite.js.map +1 -1
  414. package/dist/store/validation-schemas.d.ts +8 -8
  415. package/dist/store/writer-lease.d.ts +80 -8
  416. package/dist/store/writer-lease.d.ts.map +1 -1
  417. package/dist/store/writer-lease.js +503 -134
  418. package/dist/store/writer-lease.js.map +1 -1
  419. package/dist/system/audit.d.ts +2 -1
  420. package/dist/system/audit.d.ts.map +1 -1
  421. package/dist/system/audit.js +118 -71
  422. package/dist/system/audit.js.map +1 -1
  423. package/dist/system/backup.d.ts.map +1 -1
  424. package/dist/system/backup.js +5 -5
  425. package/dist/system/backup.js.map +1 -1
  426. package/dist/system/inject-generate.js +1 -1
  427. package/dist/task-work/index.d.ts +3 -0
  428. package/dist/task-work/index.d.ts.map +1 -1
  429. package/dist/task-work/index.js +34 -37
  430. package/dist/task-work/index.js.map +1 -1
  431. package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
  432. package/dist/tasks/ac-coverage-gate.js +4 -0
  433. package/dist/tasks/ac-coverage-gate.js.map +1 -1
  434. package/dist/tasks/ac-immutability.d.ts +7 -4
  435. package/dist/tasks/ac-immutability.d.ts.map +1 -1
  436. package/dist/tasks/ac-immutability.js +19 -17
  437. package/dist/tasks/ac-immutability.js.map +1 -1
  438. package/dist/tasks/ac-table.d.ts +5 -5
  439. package/dist/tasks/ac-table.d.ts.map +1 -1
  440. package/dist/tasks/ac-table.js +26 -12
  441. package/dist/tasks/ac-table.js.map +1 -1
  442. package/dist/tasks/acceptance-input.d.ts +52 -0
  443. package/dist/tasks/acceptance-input.d.ts.map +1 -0
  444. package/dist/tasks/acceptance-input.js +259 -0
  445. package/dist/tasks/acceptance-input.js.map +1 -0
  446. package/dist/tasks/add.d.ts +67 -29
  447. package/dist/tasks/add.d.ts.map +1 -1
  448. package/dist/tasks/add.js +255 -97
  449. package/dist/tasks/add.js.map +1 -1
  450. package/dist/tasks/complete.d.ts +16 -1
  451. package/dist/tasks/complete.d.ts.map +1 -1
  452. package/dist/tasks/complete.js +152 -55
  453. package/dist/tasks/complete.js.map +1 -1
  454. package/dist/tasks/decompose.d.ts +103 -0
  455. package/dist/tasks/decompose.d.ts.map +1 -0
  456. package/dist/tasks/decompose.js +224 -0
  457. package/dist/tasks/decompose.js.map +1 -0
  458. package/dist/tasks/delete.d.ts +5 -8
  459. package/dist/tasks/delete.d.ts.map +1 -1
  460. package/dist/tasks/delete.js +4 -3
  461. package/dist/tasks/delete.js.map +1 -1
  462. package/dist/tasks/dependency-check.d.ts +59 -0
  463. package/dist/tasks/dependency-check.d.ts.map +1 -1
  464. package/dist/tasks/dependency-check.js +73 -0
  465. package/dist/tasks/dependency-check.js.map +1 -1
  466. package/dist/tasks/deps-ready.d.ts +13 -1
  467. package/dist/tasks/deps-ready.d.ts.map +1 -1
  468. package/dist/tasks/deps-ready.js +16 -5
  469. package/dist/tasks/deps-ready.js.map +1 -1
  470. package/dist/tasks/engine-converters.d.ts +7 -0
  471. package/dist/tasks/engine-converters.d.ts.map +1 -1
  472. package/dist/tasks/engine-converters.js +8 -1
  473. package/dist/tasks/engine-converters.js.map +1 -1
  474. package/dist/tasks/evidence.d.ts +88 -27
  475. package/dist/tasks/evidence.d.ts.map +1 -1
  476. package/dist/tasks/evidence.js +344 -43
  477. package/dist/tasks/evidence.js.map +1 -1
  478. package/dist/tasks/find.d.ts +16 -12
  479. package/dist/tasks/find.d.ts.map +1 -1
  480. package/dist/tasks/find.js +107 -93
  481. package/dist/tasks/find.js.map +1 -1
  482. package/dist/tasks/gate-preview.d.ts +73 -0
  483. package/dist/tasks/gate-preview.d.ts.map +1 -0
  484. package/dist/tasks/gate-preview.js +119 -0
  485. package/dist/tasks/gate-preview.js.map +1 -0
  486. package/dist/tasks/gate-runner.d.ts +88 -14
  487. package/dist/tasks/gate-runner.d.ts.map +1 -1
  488. package/dist/tasks/gate-runner.js +719 -250
  489. package/dist/tasks/gate-runner.js.map +1 -1
  490. package/dist/tasks/hierarchy-policy.d.ts +8 -0
  491. package/dist/tasks/hierarchy-policy.d.ts.map +1 -1
  492. package/dist/tasks/hierarchy-policy.js +9 -2
  493. package/dist/tasks/hierarchy-policy.js.map +1 -1
  494. package/dist/tasks/hierarchy.d.ts +67 -1
  495. package/dist/tasks/hierarchy.d.ts.map +1 -1
  496. package/dist/tasks/hierarchy.js +81 -1
  497. package/dist/tasks/hierarchy.js.map +1 -1
  498. package/dist/tasks/index.d.ts +3 -0
  499. package/dist/tasks/index.d.ts.map +1 -1
  500. package/dist/tasks/index.js +3 -0
  501. package/dist/tasks/index.js.map +1 -1
  502. package/dist/tasks/infer-add-params.d.ts +1 -20
  503. package/dist/tasks/infer-add-params.d.ts.map +1 -1
  504. package/dist/tasks/infer-add-params.js +2 -203
  505. package/dist/tasks/infer-add-params.js.map +1 -1
  506. package/dist/tasks/list.d.ts +7 -2
  507. package/dist/tasks/list.d.ts.map +1 -1
  508. package/dist/tasks/list.js +24 -36
  509. package/dist/tasks/list.js.map +1 -1
  510. package/dist/tasks/ops.d.ts +6 -61
  511. package/dist/tasks/ops.d.ts.map +1 -1
  512. package/dist/tasks/ops.js +5 -53
  513. package/dist/tasks/ops.js.map +1 -1
  514. package/dist/tasks/plan.d.ts +15 -1
  515. package/dist/tasks/plan.d.ts.map +1 -1
  516. package/dist/tasks/plan.js +23 -25
  517. package/dist/tasks/plan.js.map +1 -1
  518. package/dist/tasks/population.d.ts +46 -0
  519. package/dist/tasks/population.d.ts.map +1 -0
  520. package/dist/tasks/population.js +88 -0
  521. package/dist/tasks/population.js.map +1 -0
  522. package/dist/tasks/reconcile-scope.d.ts +157 -0
  523. package/dist/tasks/reconcile-scope.d.ts.map +1 -0
  524. package/dist/tasks/reconcile-scope.js +242 -0
  525. package/dist/tasks/reconcile-scope.js.map +1 -0
  526. package/dist/tasks/req.d.ts +51 -12
  527. package/dist/tasks/req.d.ts.map +1 -1
  528. package/dist/tasks/req.js +125 -69
  529. package/dist/tasks/req.js.map +1 -1
  530. package/dist/tasks/session-scope.d.ts +6 -31
  531. package/dist/tasks/session-scope.d.ts.map +1 -1
  532. package/dist/tasks/session-scope.js +3 -17
  533. package/dist/tasks/session-scope.js.map +1 -1
  534. package/dist/tasks/severity-attestation.d.ts +39 -10
  535. package/dist/tasks/severity-attestation.d.ts.map +1 -1
  536. package/dist/tasks/severity-attestation.js +75 -36
  537. package/dist/tasks/severity-attestation.js.map +1 -1
  538. package/dist/tasks/task-next.d.ts +5 -0
  539. package/dist/tasks/task-next.d.ts.map +1 -1
  540. package/dist/tasks/task-next.js +10 -9
  541. package/dist/tasks/task-next.js.map +1 -1
  542. package/dist/tasks/task-reparent.d.ts.map +1 -1
  543. package/dist/tasks/task-reparent.js +3 -13
  544. package/dist/tasks/task-reparent.js.map +1 -1
  545. package/dist/tasks/update.d.ts +20 -43
  546. package/dist/tasks/update.d.ts.map +1 -1
  547. package/dist/tasks/update.js +64 -49
  548. package/dist/tasks/update.js.map +1 -1
  549. package/dist/validation/engine-ops.d.ts +17 -1
  550. package/dist/validation/engine-ops.d.ts.map +1 -1
  551. package/dist/validation/engine-ops.js +149 -11
  552. package/dist/validation/engine-ops.js.map +1 -1
  553. package/dist/workgraph/reparent-preflight.d.ts +1 -1
  554. package/dist/workgraph/reparent-preflight.d.ts.map +1 -1
  555. package/dist/workgraph/reparent-preflight.js +6 -1
  556. package/dist/workgraph/reparent-preflight.js.map +1 -1
  557. package/dist/workgraph/scaffold-apply.d.ts.map +1 -1
  558. package/dist/workgraph/scaffold-apply.js +81 -76
  559. package/dist/workgraph/scaffold-apply.js.map +1 -1
  560. package/dist/workgraph/structure-validation.d.ts +1 -1
  561. package/dist/workgraph/structure-validation.d.ts.map +1 -1
  562. package/dist/workgraph/structure-validation.js +6 -1
  563. package/dist/workgraph/structure-validation.js.map +1 -1
  564. package/migrations/drizzle-tasks/20260919180000_t12263-job-ownership-fences/migration.sql +34 -0
  565. package/migrations/drizzle-tasks/20260919184500_t12265-durable-pending-proposals/migration.sql +4 -0
  566. package/package.json +18 -13
  567. package/schemas/config.schema.json +2 -2
  568. package/schemas/project-context.schema.json +12 -0
  569. package/templates/CLEO-INJECTION.md +114 -101
@@ -1,314 +1,319 @@
1
1
  /**
2
- * Audit lineage reconstruction — SDK primitive.
3
- *
4
- * Promotes git-log + release-tag lineage reconstruction to a first-class
5
- * SDK verb. Git IS the immutable hash-chained ledger; this module mines it
6
- * to produce a structured {@link ReconstructResult} consumed by T1216 audit tasks.
7
- *
8
- * No `.jsonl` sidecar is emitted — git's DAG is the source of truth (per
9
- * FP peer note, T1322 council verdict 2026-04-24).
10
- *
11
- * Security: all git subprocess calls use `execFileSync` with strict `argv`
12
- * arrays — no shell interpolation or user-controlled string concatenation
13
- * in the command string.
14
- *
15
- * @task T1322
16
- * @epic T1216
2
+ * Bounded reconstruction from the local Git ledger, with explicit coverage.
3
+ * Task proximity remains a heuristic, never authoritative containment.
4
+ * @packageDocumentation
17
5
  */
18
- import { execFileSync } from 'node:child_process';
6
+ import { resolve } from 'node:path';
7
+ import { setImmediate } from 'node:timers/promises';
19
8
  import { resolveOrCwd } from '../paths.js';
20
- // ---------------------------------------------------------------------------
21
- // Internal helpers
22
- // ---------------------------------------------------------------------------
9
+ import { worktreeScope } from '../project-scope.js';
10
+ import { extractTaskIds } from '../release/invariants/archive-reason-invariant.js';
11
+ import { captureWrapped } from '../resources/spawn-wrapper.js';
23
12
  /**
24
- * Run a git command with strict argv (no shell interpolation).
25
- *
26
- * @param cwd - Working directory for the git process.
27
- * @param args - Argument list passed directly to git (not via shell).
28
- * @returns stdout as a trimmed UTF-8 string, or `""` on error.
13
+ * Reconstruct exact task references and containing tags from bounded local Git reads.
14
+ * @param taskId - Exact uppercase task token (for example T994), never a grep substring.
15
+ * @param repoRoot - Explicit repository root, otherwise the captured caller scope or cwd.
16
+ * @param options - Optional limits which cannot extend an inherited execution deadline.
17
+ * @returns Existing lineage fields plus mandatory assessment coverage on every new result.
18
+ * @remarks Reads commit messages and parents once, then propagates ancestry in topological
19
+ * order. Git failures, truncated output, shallow history and cancellation are explicit.
20
+ * No remote fetch or writes occur. Numeric child inference is retained for compatibility
21
+ * and is not proof of task ownership. CPU stages yield cooperatively; this is not preemption.
22
+ * @example
23
+ * ```ts
24
+ * const lineage = await reconstructLineage('T994', '/project', {});
25
+ * if (lineage.assessment?.coverage !== 'current') return;
26
+ * ```
29
27
  */
30
- function runGit(cwd, args) {
31
- try {
32
- const output = execFileSync('git', [...args], {
33
- cwd,
34
- encoding: 'utf-8',
35
- stdio: ['pipe', 'pipe', 'pipe'],
36
- maxBuffer: 8 * 1024 * 1024, // 8 MiB — generous for large repos
37
- });
38
- return output.trim();
28
+ export async function reconstructLineage(taskId, repoRoot, options = {}) {
29
+ const inherited = worktreeScope.getStore();
30
+ const root = resolve(resolveOrCwd(repoRoot ?? inherited?.worktreeRoot));
31
+ const startedAt = Date.now();
32
+ const caller = inherited?.execution;
33
+ const deadlineAt = Math.min(caller?.deadlineAt ?? Infinity, options.execution?.deadlineAt ?? (caller ? Infinity : startedAt + 2000));
34
+ const signals = [caller?.signal, options.execution?.signal].filter((signal) => signal !== undefined);
35
+ const signal = signals.length ? AbortSignal.any(signals) : undefined;
36
+ const execution = { deadlineAt, signal };
37
+ const env = {
38
+ ...process.env,
39
+ GIT_TERMINAL_PROMPT: '0',
40
+ GIT_OPTIONAL_LOCKS: '0',
41
+ };
42
+ // Explicit cwd owns this read, even when the caller was launched by another repository's hook.
43
+ for (const name of [
44
+ 'GIT_DIR',
45
+ 'GIT_WORK_TREE',
46
+ 'GIT_COMMON_DIR',
47
+ 'GIT_INDEX_FILE',
48
+ 'GIT_OBJECT_DIRECTORY',
49
+ 'GIT_ALTERNATE_OBJECT_DIRECTORIES',
50
+ 'GIT_NAMESPACE',
51
+ 'GIT_SHALLOW_FILE',
52
+ ])
53
+ delete env[name];
54
+ let remainingBytes = Math.min(options.maxOutputBytes ?? 8 * 1024 * 1024, caller?.resources.maxBytes ?? Infinity);
55
+ const assessment = {
56
+ repositoryRoot: root,
57
+ deadlineAt,
58
+ coverage: 'failed',
59
+ shallow: null,
60
+ observedCommits: 0,
61
+ historyComplete: false,
62
+ tagsComplete: false,
63
+ commands: [],
64
+ diagnostics: [],
65
+ limitations: [
66
+ 'Only locally reachable refs are assessed; no remote history is fetched.',
67
+ 'Numeric proximity and co-mentioned IDs suggest candidates, not authoritative child tasks.',
68
+ 'Refs may change during assessment; the reads are not an atomic repository snapshot.',
69
+ ],
70
+ };
71
+ const result = {
72
+ taskId,
73
+ directCommits: [],
74
+ childIdRange: null,
75
+ childCommits: {},
76
+ releaseTags: [],
77
+ releaseCommitShas: [],
78
+ firstSeenAt: null,
79
+ lastSeenAt: null,
80
+ inferredChildren: [],
81
+ assessment,
82
+ };
83
+ const fail = (code, stage, message) => {
84
+ assessment.diagnostics.push({ code, stage, message });
85
+ };
86
+ const active = (stage) => {
87
+ if (signal?.aborted) {
88
+ fail('E_OPERATION_CANCELLED', stage, 'Original caller cancellation forbids further assessment.');
89
+ return false;
90
+ }
91
+ if (Date.now() >= deadlineAt) {
92
+ fail('E_OPERATION_DEADLINE', stage, 'Original execution deadline has elapsed.');
93
+ return false;
94
+ }
95
+ try {
96
+ caller?.assertActive();
97
+ }
98
+ catch (error) {
99
+ fail('E_OPERATION_INACTIVE', stage, error instanceof Error ? error.message : String(error));
100
+ return false;
101
+ }
102
+ return true;
103
+ };
104
+ const git = async (stage, args) => {
105
+ if (!active(stage))
106
+ return null;
107
+ if (remainingBytes <= 0) {
108
+ fail('E_OUTPUT_LIMIT', stage, 'Aggregate Git output byte budget exhausted.');
109
+ return null;
110
+ }
111
+ try {
112
+ const { stdout, ...receipt } = await captureWrapped('git', args, {
113
+ cwd: root,
114
+ env,
115
+ execution,
116
+ maxOutputBytes: remainingBytes,
117
+ });
118
+ assessment.commands.push({ ...receipt, args });
119
+ const bytes = Buffer.byteLength(stdout) + Buffer.byteLength(receipt.stderr);
120
+ remainingBytes -= bytes;
121
+ caller?.consume({ bytes });
122
+ if (!receipt.started ||
123
+ receipt.exitCode !== 0 ||
124
+ receipt.error ||
125
+ receipt.stopped ||
126
+ receipt.signal ||
127
+ receipt.outputTruncated ||
128
+ !receipt.targetCloseObserved ||
129
+ receipt.cleanupErrors.length) {
130
+ fail('E_GIT_READ_FAILED', stage, receipt.error ??
131
+ receipt.stopped ??
132
+ (receipt.stderr || `Git target did not complete cleanly (exit ${receipt.exitCode}).`));
133
+ return null;
134
+ }
135
+ if (!active(stage))
136
+ return null;
137
+ return stdout;
138
+ }
139
+ catch (error) {
140
+ fail('E_GIT_READ_FAILED', stage, error instanceof Error ? error.message : String(error));
141
+ return null;
142
+ }
143
+ };
144
+ if (!/^T\d+$/.test(taskId) ||
145
+ !Number.isSafeInteger(deadlineAt) ||
146
+ !Number.isSafeInteger(remainingBytes) ||
147
+ remainingBytes < 0) {
148
+ fail('E_INVALID_INPUT', 'input', 'Task token, deadline and byte limit must be valid.');
149
+ return result;
39
150
  }
40
- catch {
41
- return '';
151
+ if (caller && resolve(caller.identity.projectRoot) !== root) {
152
+ fail('E_PROJECT_SCOPE_MISMATCH', 'input', 'Explicit repository differs from inherited operation ownership.');
153
+ return result;
42
154
  }
43
- }
44
- /**
45
- * Parse raw `--pretty=format:"%H\x1f%s\x1f%an\x1f%ai"` git log output into
46
- * an array of {@link CommitEntry} records.
47
- *
48
- * Uses the ASCII unit-separator (0x1F) as the field delimiter to avoid
49
- * collisions with commit subject text.
50
- *
51
- * @param raw - Raw stdout from git log with the expected format string.
52
- */
53
- function parseGitLog(raw) {
54
- if (!raw)
55
- return [];
56
- const results = [];
57
- for (const line of raw.split('\n')) {
58
- const trimmed = line.trim();
59
- if (!trimmed)
60
- continue;
61
- const parts = trimmed.split('\x1f');
62
- if (parts.length < 4)
63
- continue;
64
- const [sha, subject, author, authorDate] = parts;
65
- if (!sha || sha.length < 7)
66
- continue;
67
- results.push({ sha, subject, author, authorDate });
155
+ const shallow = await git('repository', ['rev-parse', '--is-shallow-repository']);
156
+ if (shallow === null)
157
+ return result;
158
+ if (!['true', 'false'].includes(shallow.trim())) {
159
+ fail('E_GIT_PROTOCOL', 'repository', 'Git did not return a shallow-history verdict.');
160
+ return result;
68
161
  }
69
- return results;
70
- }
71
- /**
72
- * Run `git log --all --grep=<pattern>` with the standard pretty format and
73
- * return parsed commit entries.
74
- *
75
- * The `--fixed-strings` flag prevents the pattern from being interpreted as
76
- * a POSIX extended regex, which keeps the semantics predictable.
77
- *
78
- * @param repoRoot - Absolute path to the git repository.
79
- * @param pattern - Literal string to grep for in commit messages.
80
- */
81
- function gitLogGrep(repoRoot, pattern) {
82
- const raw = runGit(repoRoot, [
162
+ assessment.shallow = shallow.trim() === 'true';
163
+ if (assessment.shallow)
164
+ fail('E_SHALLOW_HISTORY', 'repository', 'Shallow history cannot establish complete lineage.');
165
+ const history = await git('history', [
83
166
  'log',
84
167
  '--all',
85
- '--fixed-strings',
86
- `--grep=${pattern}`,
87
- '--pretty=format:%H\x1f%s\x1f%an\x1f%ai',
168
+ '--topo-order',
169
+ '--no-show-signature',
170
+ '--no-color',
171
+ '--format=%H%x00%P%x00%an%x00%aI%x00%s%x00%B%x00',
88
172
  ]);
89
- return parseGitLog(raw);
90
- }
91
- /**
92
- * Collect all release tags that contain a given commit SHA.
93
- *
94
- * Uses `git tag --contains <sha>` which lists all tags reachable from
95
- * the commit, not just the nearest one.
96
- *
97
- * @param repoRoot - Absolute path to the git repository.
98
- * @param sha - Full commit SHA to query.
99
- */
100
- function tagsContaining(repoRoot, sha) {
101
- const raw = runGit(repoRoot, ['tag', '--contains', sha]);
102
- if (!raw)
103
- return [];
104
- return raw
105
- .split('\n')
106
- .map((t) => t.trim())
107
- .filter((t) => t.length > 0);
108
- }
109
- /**
110
- * Resolve a tag name to its target commit SHA using `git rev-parse <tag>^{}`.
111
- *
112
- * The `^{}` dereferences annotated tags to the underlying commit object.
113
- *
114
- * @param repoRoot - Absolute path to the git repository.
115
- * @param tag - Tag name to resolve.
116
- */
117
- function resolveTagCommit(repoRoot, tag) {
118
- return runGit(repoRoot, ['rev-parse', `${tag}^{}`]);
119
- }
120
- /**
121
- * Fetch the commit subject for a given SHA.
122
- *
123
- * @param repoRoot - Absolute path to the git repository.
124
- * @param sha - Full commit SHA.
125
- */
126
- function commitSubject(repoRoot, sha) {
127
- return runGit(repoRoot, ['log', '-1', '--pretty=format:%s', sha]);
128
- }
129
- /**
130
- * Infer the numeric child ID range for a parent task ID.
131
- *
132
- * Strategy (in order of priority):
133
- * 1. Mine commit messages for adjacent task-ID mentions (e.g. T994, T995, …)
134
- * from the parent's direct-commit subjects — zero git calls.
135
- * 2. Adjacency heuristic: issue ONE `git log --all` with an extended-regex
136
- * pattern covering the ±20 window around the parent ID, then extract all
137
- * matching task IDs from the output. This replaces 40 sequential git-log
138
- * calls with a single pass.
139
- *
140
- * Returns `null` when no children can be inferred.
141
- *
142
- * @param repoRoot - Absolute path to the git repository.
143
- * @param parentNumeric - Numeric portion of the parent task ID (e.g. 991 for T991).
144
- * @param directCommits - The parent's own direct commits (used to extract sibling mentions).
145
- */
146
- function inferChildRange(repoRoot, parentNumeric, directCommits) {
147
- const foundIds = new Set();
148
- // Step 1: Mine sibling mentions from direct-commit subjects (no git calls).
149
- const combinedText = directCommits.map((c) => c.subject).join('\n');
150
- const taskPattern = /\bT(\d+)\b/g;
151
- let match;
152
- // biome-ignore lint/suspicious/noAssignInExpressions: idiomatic regex loop
153
- while ((match = taskPattern.exec(combinedText)) !== null) {
154
- const n = parseInt(match[1] ?? '0', 10);
155
- // Accept IDs within ±50 of the parent as likely sibling cluster members
156
- if (n !== parentNumeric && Math.abs(n - parentNumeric) <= 50) {
157
- foundIds.add(n);
173
+ if (history === null)
174
+ return result;
175
+ // Git messages cannot contain NUL. Newlines between records are not field delimiters.
176
+ const fields = history.split('\0');
177
+ if (fields.pop()?.trim() !== '' || fields.length % 6 !== 0) {
178
+ fail('E_GIT_PROTOCOL', 'history', 'Malformed or incomplete commit fields.');
179
+ return result;
180
+ }
181
+ const commits = [];
182
+ const parents = new Map();
183
+ const refs = new Map();
184
+ for (let i = 0; i < fields.length; i += 6) {
185
+ if (i % 1536 === 0) {
186
+ await setImmediate();
187
+ if (!active('history-parse'))
188
+ return result;
158
189
  }
190
+ const sha = fields[i].trim();
191
+ const parentIds = fields[i + 1].split(' ').filter(Boolean);
192
+ if (!/^[a-f0-9]{40,64}$/.test(sha) || parentIds.some((id) => !/^[a-f0-9]{40,64}$/.test(id))) {
193
+ fail('E_GIT_PROTOCOL', 'history', 'Malformed commit or parent identity.');
194
+ return result;
195
+ }
196
+ try {
197
+ caller?.consume({ items: 1 });
198
+ }
199
+ catch (error) {
200
+ fail('E_OPERATION_RESOURCE_LIMIT', 'history-parse', error instanceof Error ? error.message : String(error));
201
+ return result;
202
+ }
203
+ commits.push({
204
+ sha,
205
+ author: fields[i + 2],
206
+ authorDate: fields[i + 3],
207
+ subject: fields[i + 4],
208
+ });
209
+ parents.set(sha, parentIds);
210
+ refs.set(sha, extractTaskIds(fields[i + 5]));
159
211
  }
160
- // Step 2: Single-pass adjacency probe using ONE git log call with an ERE
161
- // pattern that matches any T<n> in the ±20 window.
162
- // Build an alternation of the 40 candidate IDs, avoiding shell interpolation
163
- // by passing the pattern directly to git as an argument.
164
- const lo = Math.max(1, parentNumeric - 20);
165
- const hi = parentNumeric + 20;
166
- const candidates = [];
167
- for (let n = lo; n <= hi; n++) {
168
- if (n !== parentNumeric)
169
- candidates.push(n);
212
+ assessment.observedCommits = commits.length;
213
+ assessment.historyComplete = true;
214
+ assessment.coverage = 'partial';
215
+ result.directCommits = commits.filter((commit) => refs.get(commit.sha).includes(taskId));
216
+ const numericId = Number(taskId.slice(1));
217
+ const candidates = new Set();
218
+ const directShas = new Set(result.directCommits.map((commit) => commit.sha));
219
+ for (let i = 0; i < commits.length; i++) {
220
+ if (i % 256 === 0) {
221
+ await setImmediate();
222
+ if (!active('task-matching'))
223
+ return result;
224
+ }
225
+ const commit = commits[i];
226
+ const radius = directShas.has(commit.sha) ? 50 : 20;
227
+ for (const id of refs.get(commit.sha)) {
228
+ if (id !== taskId && Math.abs(Number(id.slice(1)) - numericId) <= radius)
229
+ candidates.add(id);
230
+ }
170
231
  }
171
- // ERE alternation: \b(T971|T972|...|T1011)\b — git --regexp-ignore-case is
172
- // NOT used so the pattern is case-sensitive (task IDs are always upper-case T).
173
- const alternation = candidates.map((n) => `T${n}`).join('|');
174
- const raw = runGit(repoRoot, [
175
- 'log',
176
- '--all',
177
- '--extended-regexp',
178
- `--grep=\\b(${alternation})\\b`,
179
- '--pretty=format:%s',
180
- ]);
181
- if (raw) {
182
- const linePattern = /\bT(\d+)\b/g;
183
- let lineMatch;
184
- // biome-ignore lint/suspicious/noAssignInExpressions: idiomatic regex loop
185
- while ((lineMatch = linePattern.exec(raw)) !== null) {
186
- const n = parseInt(lineMatch[1] ?? '0', 10);
187
- if (n !== parentNumeric && Math.abs(n - parentNumeric) <= 20) {
188
- foundIds.add(n);
232
+ result.inferredChildren = [...candidates].sort((a, b) => Number(a.slice(1)) - Number(b.slice(1)));
233
+ if (result.inferredChildren.length)
234
+ result.childIdRange = {
235
+ min: result.inferredChildren[0],
236
+ max: result.inferredChildren.at(-1),
237
+ };
238
+ const work = new Set(directShas);
239
+ for (const id of result.inferredChildren)
240
+ result.childCommits[id] = [];
241
+ for (let index = 0; index < commits.length; index++) {
242
+ if (index % 256 === 0) {
243
+ await setImmediate();
244
+ if (!active('child-matching'))
245
+ return result;
246
+ }
247
+ const commit = commits[index];
248
+ for (const id of refs.get(commit.sha)) {
249
+ if (candidates.has(id)) {
250
+ result.childCommits[id].push(commit);
251
+ work.add(commit.sha);
189
252
  }
190
253
  }
191
- }
192
- if (foundIds.size === 0)
193
- return null;
194
- const sorted = [...foundIds].sort((a, b) => a - b);
195
- const minId = sorted[0];
196
- const maxId = sorted[sorted.length - 1];
197
- return {
198
- min: `T${minId}`,
199
- max: `T${maxId}`,
200
- ids: sorted.map((n) => `T${n}`),
201
- };
202
- }
203
- /**
204
- * Compute the earliest ISO-8601 date across a flat list of commit entries.
205
- *
206
- * @param commits - Commit entries to examine.
207
- */
208
- function earliestDate(commits) {
209
- if (commits.length === 0)
210
- return null;
211
- return commits.reduce((acc, c) => (c.authorDate < acc ? c.authorDate : acc), commits[0].authorDate);
212
- }
213
- /**
214
- * Compute the latest ISO-8601 date across a flat list of commit entries.
215
- *
216
- * @param commits - Commit entries to examine.
217
- */
218
- function latestDate(commits) {
219
- if (commits.length === 0)
220
- return null;
221
- return commits.reduce((acc, c) => (c.authorDate > acc ? c.authorDate : acc), commits[0].authorDate);
222
- }
223
- // ---------------------------------------------------------------------------
224
- // Public API
225
- // ---------------------------------------------------------------------------
226
- /**
227
- * Reconstruct the git-backed lineage for a task and its inferred children.
228
- *
229
- * This is the first-class SDK verb for audit lineage reconstruction (T1322).
230
- * It queries git directly and returns a fully-typed {@link ReconstructResult}
231
- * that T1216 audit tasks consume for their 4-outcome verdict.
232
- *
233
- * **Algorithm**:
234
- * 1. Find direct commits whose message references `taskId`.
235
- * 2. Infer child ID range from commit-message mining and numeric adjacency.
236
- * 3. Find child commits for each inferred child ID.
237
- * 4. Collect all release tags containing any direct or child commit.
238
- * 5. Compute first/last timestamps across the full commit set.
239
- *
240
- * @param taskId - The task ID to reconstruct (e.g. `"T991"`).
241
- * @param repoRoot - Absolute path to the git repository. Defaults to `process.cwd()`.
242
- * @returns A fully-typed {@link ReconstructResult} with all git-derived lineage data.
243
- *
244
- * @example
245
- * ```ts
246
- * import { reconstructLineage } from '@cleocode/core/audit/reconstruct.js';
247
- *
248
- * const result = await reconstructLineage('T991');
249
- * console.log(result.releaseTags.map(t => t.tag));
250
- * // → ['v2026.4.98', 'v2026.4.99', ...]
251
- * ```
252
- *
253
- * @task T1322
254
- * @epic T1216
255
- */
256
- export async function reconstructLineage(taskId, repoRoot) {
257
- repoRoot = resolveOrCwd(repoRoot);
258
- // 1. Direct commits — messages that reference the exact task ID
259
- const directCommits = gitLogGrep(repoRoot, taskId);
260
- // 2. Infer child ID range
261
- const numericMatch = taskId.match(/^T(\d+)$/i);
262
- const parentNumeric = numericMatch ? parseInt(numericMatch[1] ?? '0', 10) : 0;
263
- const rangeResult = parentNumeric > 0 ? inferChildRange(repoRoot, parentNumeric, directCommits) : null;
264
- const childIdRange = rangeResult
265
- ? { min: rangeResult.min, max: rangeResult.max }
266
- : null;
267
- const inferredChildren = rangeResult ? rangeResult.ids : [];
268
- // 3. Child commits — one git-log query per inferred child ID
269
- const childCommits = {};
270
- for (const childId of inferredChildren) {
271
- const hits = gitLogGrep(repoRoot, childId);
272
- if (hits.length > 0) {
273
- childCommits[childId] = hits;
254
+ if (work.has(commit.sha)) {
255
+ if (result.firstSeenAt === null || commit.authorDate < result.firstSeenAt)
256
+ result.firstSeenAt = commit.authorDate;
257
+ if (result.lastSeenAt === null || commit.authorDate > result.lastSeenAt)
258
+ result.lastSeenAt = commit.authorDate;
274
259
  }
275
260
  }
276
- // 4. Release tags — collect all tags containing any direct or child commit SHA
277
- const allCommitShas = new Set(directCommits.map((c) => c.sha));
278
- for (const commits of Object.values(childCommits)) {
279
- for (const c of commits) {
280
- allCommitShas.add(c.sha);
261
+ // Reverse topological traversal visits parents before their descendants, including merges.
262
+ const containsWork = new Set();
263
+ for (let i = commits.length - 1; i >= 0; i--) {
264
+ if (i % 256 === 0) {
265
+ await setImmediate();
266
+ if (!active('ancestry'))
267
+ return result;
281
268
  }
269
+ const sha = commits[i].sha;
270
+ const ancestors = parents.get(sha);
271
+ if (ancestors.some((parent) => !parents.has(parent)))
272
+ fail('E_MISSING_PARENT', 'ancestry', `Commit ${sha} references unavailable history.`);
273
+ if (work.has(sha) || ancestors.some((parent) => containsWork.has(parent)))
274
+ containsWork.add(sha);
282
275
  }
283
- const tagSet = new Set();
284
- for (const sha of allCommitShas) {
285
- for (const tag of tagsContaining(repoRoot, sha)) {
286
- tagSet.add(tag);
276
+ const tags = await git('tags', [
277
+ 'for-each-ref',
278
+ '--sort=refname',
279
+ '--format=%(refname:strip=2)%00%(objecttype)%00%(objectname)%00%(*objecttype)%00%(*objectname)',
280
+ 'refs/tags',
281
+ ]);
282
+ if (tags === null)
283
+ return result;
284
+ const bySha = new Map(commits.map((commit) => [commit.sha, commit]));
285
+ let validTags = true;
286
+ const tagLines = tags.split('\n').filter(Boolean);
287
+ for (let index = 0; index < tagLines.length; index++) {
288
+ if (index % 256 === 0)
289
+ await setImmediate();
290
+ if (!active('tag-matching'))
291
+ return result;
292
+ const line = tagLines[index];
293
+ const parts = line.split('\0');
294
+ const [tag, type, object, peeledType, peeled] = parts;
295
+ const target = type === 'commit' ? object : peeledType === 'commit' ? peeled : undefined;
296
+ if (parts.length !== 5 || !tag || !object || (target && !bySha.has(target))) {
297
+ fail('E_GIT_PROTOCOL', 'tags', `Tag ${tag ?? '(unknown)'} has missing or inconsistent commit evidence.`);
298
+ validTags = false;
299
+ continue;
287
300
  }
301
+ if (type === 'tag' && peeledType === 'tag') {
302
+ fail('E_UNSUPPORTED_TAG_CHAIN', 'tags', `Nested tag ${tag} requires further authenticated peeling.`);
303
+ validTags = false;
304
+ continue;
305
+ }
306
+ if (target && containsWork.has(target))
307
+ result.releaseTags.push({
308
+ tag,
309
+ commitSha: target,
310
+ subject: bySha.get(target).subject,
311
+ });
288
312
  }
289
- const releaseTags = [...tagSet]
290
- .sort()
291
- .map((tag) => {
292
- const commitSha = resolveTagCommit(repoRoot, tag);
293
- const subject = commitSha ? commitSubject(repoRoot, commitSha) : '';
294
- return { tag, commitSha, subject };
295
- })
296
- .filter((entry) => entry.commitSha.length > 0);
297
- const releaseCommitShas = releaseTags.map((t) => t.commitSha);
298
- // 5. Timing bounds
299
- const allWorkCommits = [...directCommits, ...Object.values(childCommits).flat()];
300
- const firstSeenAt = earliestDate(allWorkCommits);
301
- const lastSeenAt = latestDate(allWorkCommits);
302
- return {
303
- taskId,
304
- directCommits,
305
- childIdRange,
306
- childCommits,
307
- releaseTags,
308
- releaseCommitShas,
309
- firstSeenAt,
310
- lastSeenAt,
311
- inferredChildren,
312
- };
313
+ result.releaseCommitShas = [...new Set(result.releaseTags.map((tag) => tag.commitSha))];
314
+ assessment.tagsComplete = validTags;
315
+ if (active('complete') && !assessment.diagnostics.length)
316
+ assessment.coverage = 'current';
317
+ return result;
313
318
  }
314
319
  //# sourceMappingURL=reconstruct.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reconstruct.js","sourceRoot":"","sources":["../../src/audit/reconstruct.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconstruct.js","sourceRoot":"","sources":["../../src/audit/reconstruct.ts"],"names":[],"mappings":"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"}