@cleocode/core 2026.9.23 → 2026.9.25

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 (865) hide show
  1. package/dist/admin/import-tasks.d.ts.map +1 -1
  2. package/dist/admin/import-tasks.js +35 -6
  3. package/dist/admin/import-tasks.js.map +1 -1
  4. package/dist/admin/import.d.ts.map +1 -1
  5. package/dist/admin/import.js +25 -6
  6. package/dist/admin/import.js.map +1 -1
  7. package/dist/audit-prune.d.ts +32 -0
  8. package/dist/audit-prune.d.ts.map +1 -1
  9. package/dist/audit-prune.js +37 -3
  10. package/dist/audit-prune.js.map +1 -1
  11. package/dist/build-provenance.json +2 -2
  12. package/dist/cloud/crypto.d.ts +1 -2
  13. package/dist/cloud/crypto.d.ts.map +1 -1
  14. package/dist/cloud/crypto.js +1 -11
  15. package/dist/cloud/crypto.js.map +1 -1
  16. package/dist/cloud/http.d.ts +8 -0
  17. package/dist/cloud/http.d.ts.map +1 -1
  18. package/dist/cloud/http.js +8 -1
  19. package/dist/cloud/http.js.map +1 -1
  20. package/dist/cloud/index.d.ts +6 -1
  21. package/dist/cloud/index.d.ts.map +1 -1
  22. package/dist/cloud/index.js +6 -1
  23. package/dist/cloud/index.js.map +1 -1
  24. package/dist/cloud/nexus-auth.d.ts +169 -0
  25. package/dist/cloud/nexus-auth.d.ts.map +1 -0
  26. package/dist/cloud/nexus-auth.js +372 -0
  27. package/dist/cloud/nexus-auth.js.map +1 -0
  28. package/dist/cloud/nexus-credentials.d.ts +188 -0
  29. package/dist/cloud/nexus-credentials.d.ts.map +1 -0
  30. package/dist/cloud/nexus-credentials.js +323 -0
  31. package/dist/cloud/nexus-credentials.js.map +1 -0
  32. package/dist/cloud/nexus-link.d.ts +85 -0
  33. package/dist/cloud/nexus-link.d.ts.map +1 -0
  34. package/dist/cloud/nexus-link.js +226 -0
  35. package/dist/cloud/nexus-link.js.map +1 -0
  36. package/dist/cloud/presence.d.ts +88 -0
  37. package/dist/cloud/presence.d.ts.map +1 -0
  38. package/dist/cloud/presence.js +137 -0
  39. package/dist/cloud/presence.js.map +1 -0
  40. package/dist/cloud/projects.d.ts +3 -1
  41. package/dist/cloud/projects.d.ts.map +1 -1
  42. package/dist/cloud/projects.js +4 -2
  43. package/dist/cloud/projects.js.map +1 -1
  44. package/dist/cloud/uuidv7.d.ts +9 -0
  45. package/dist/cloud/uuidv7.d.ts.map +1 -0
  46. package/dist/cloud/uuidv7.js +19 -0
  47. package/dist/cloud/uuidv7.js.map +1 -0
  48. package/dist/crypto/credentials.d.ts +14 -4
  49. package/dist/crypto/credentials.d.ts.map +1 -1
  50. package/dist/crypto/credentials.js +15 -1
  51. package/dist/crypto/credentials.js.map +1 -1
  52. package/dist/decide/bench/dataset.d.ts +125 -0
  53. package/dist/decide/bench/dataset.d.ts.map +1 -0
  54. package/dist/decide/bench/dataset.js +457 -0
  55. package/dist/decide/bench/dataset.js.map +1 -0
  56. package/dist/decide/bench/index.d.ts +23 -0
  57. package/dist/decide/bench/index.d.ts.map +1 -0
  58. package/dist/decide/bench/index.js +23 -0
  59. package/dist/decide/bench/index.js.map +1 -0
  60. package/dist/decide/bench/metrics.d.ts +55 -0
  61. package/dist/decide/bench/metrics.d.ts.map +1 -0
  62. package/dist/decide/bench/metrics.js +100 -0
  63. package/dist/decide/bench/metrics.js.map +1 -0
  64. package/dist/decide/bench/operation.d.ts +119 -0
  65. package/dist/decide/bench/operation.d.ts.map +1 -0
  66. package/dist/decide/bench/operation.js +171 -0
  67. package/dist/decide/bench/operation.js.map +1 -0
  68. package/dist/decide/bench/profiles.d.ts +102 -0
  69. package/dist/decide/bench/profiles.d.ts.map +1 -0
  70. package/dist/decide/bench/profiles.js +175 -0
  71. package/dist/decide/bench/profiles.js.map +1 -0
  72. package/dist/decide/bench/questions.d.ts +40 -0
  73. package/dist/decide/bench/questions.d.ts.map +1 -0
  74. package/dist/decide/bench/questions.js +107 -0
  75. package/dist/decide/bench/questions.js.map +1 -0
  76. package/dist/decide/bench/report.d.ts +21 -0
  77. package/dist/decide/bench/report.d.ts.map +1 -0
  78. package/dist/decide/bench/report.js +125 -0
  79. package/dist/decide/bench/report.js.map +1 -0
  80. package/dist/decide/bench/runner.d.ts +208 -0
  81. package/dist/decide/bench/runner.d.ts.map +1 -0
  82. package/dist/decide/bench/runner.js +336 -0
  83. package/dist/decide/bench/runner.js.map +1 -0
  84. package/dist/decide/bench/source.d.ts +21 -0
  85. package/dist/decide/bench/source.d.ts.map +1 -0
  86. package/dist/decide/bench/source.js +67 -0
  87. package/dist/decide/bench/source.js.map +1 -0
  88. package/dist/decide/bench/spot-check.d.ts +117 -0
  89. package/dist/decide/bench/spot-check.d.ts.map +1 -0
  90. package/dist/decide/bench/spot-check.js +221 -0
  91. package/dist/decide/bench/spot-check.js.map +1 -0
  92. package/dist/decide/bench/stats.d.ts +57 -0
  93. package/dist/decide/bench/stats.d.ts.map +1 -0
  94. package/dist/decide/bench/stats.js +82 -0
  95. package/dist/decide/bench/stats.js.map +1 -0
  96. package/dist/decide/bench/types.d.ts +216 -0
  97. package/dist/decide/bench/types.d.ts.map +1 -0
  98. package/dist/decide/bench/types.js +104 -0
  99. package/dist/decide/bench/types.js.map +1 -0
  100. package/dist/decide/client.d.ts +35 -1
  101. package/dist/decide/client.d.ts.map +1 -1
  102. package/dist/decide/client.js +135 -35
  103. package/dist/decide/client.js.map +1 -1
  104. package/dist/decide/credentials.d.ts +177 -17
  105. package/dist/decide/credentials.d.ts.map +1 -1
  106. package/dist/decide/credentials.js +505 -41
  107. package/dist/decide/credentials.js.map +1 -1
  108. package/dist/decide/index.d.ts +8 -8
  109. package/dist/decide/index.d.ts.map +1 -1
  110. package/dist/decide/index.js +8 -8
  111. package/dist/decide/index.js.map +1 -1
  112. package/dist/decide/jev-wire.d.ts +55 -19
  113. package/dist/decide/jev-wire.d.ts.map +1 -1
  114. package/dist/decide/jev-wire.js +116 -37
  115. package/dist/decide/jev-wire.js.map +1 -1
  116. package/dist/decide/operations.d.ts +63 -12
  117. package/dist/decide/operations.d.ts.map +1 -1
  118. package/dist/decide/operations.js +116 -58
  119. package/dist/decide/operations.js.map +1 -1
  120. package/dist/decide/provider-state.d.ts +85 -12
  121. package/dist/decide/provider-state.d.ts.map +1 -1
  122. package/dist/decide/provider-state.js +154 -21
  123. package/dist/decide/provider-state.js.map +1 -1
  124. package/dist/decide/provider.d.ts +5 -0
  125. package/dist/decide/provider.d.ts.map +1 -1
  126. package/dist/decide/provider.js.map +1 -1
  127. package/dist/decide/providers.d.ts +15 -2
  128. package/dist/decide/providers.d.ts.map +1 -1
  129. package/dist/decide/providers.js +22 -6
  130. package/dist/decide/providers.js.map +1 -1
  131. package/dist/decide/sites/registry.d.ts +22 -0
  132. package/dist/decide/sites/registry.d.ts.map +1 -1
  133. package/dist/decide/sites/registry.js +23 -0
  134. package/dist/decide/sites/registry.js.map +1 -1
  135. package/dist/decide/wizard.d.ts +12 -4
  136. package/dist/decide/wizard.d.ts.map +1 -1
  137. package/dist/decide/wizard.js +79 -26
  138. package/dist/decide/wizard.js.map +1 -1
  139. package/dist/dispatch/mvi-projection.d.ts +15 -2
  140. package/dist/dispatch/mvi-projection.d.ts.map +1 -1
  141. package/dist/dispatch/mvi-projection.js +73 -12
  142. package/dist/dispatch/mvi-projection.js.map +1 -1
  143. package/dist/docs/adr-allocator.d.ts +2 -2
  144. package/dist/docs/adr-allocator.d.ts.map +1 -1
  145. package/dist/docs/adr-allocator.js +17 -4
  146. package/dist/docs/adr-allocator.js.map +1 -1
  147. package/dist/docs/blob-consolidation.js +1 -1
  148. package/dist/docs/blob-consolidation.js.map +1 -1
  149. package/dist/docs/display-alias.d.ts +1 -1
  150. package/dist/docs/display-alias.d.ts.map +1 -1
  151. package/dist/docs/display-alias.js +7 -4
  152. package/dist/docs/display-alias.js.map +1 -1
  153. package/dist/docs/docs-inconsistency-detector.js +1 -1
  154. package/dist/docs/docs-inconsistency-detector.js.map +1 -1
  155. package/dist/docs/docs-update.d.ts.map +1 -1
  156. package/dist/docs/docs-update.js +6 -1
  157. package/dist/docs/docs-update.js.map +1 -1
  158. package/dist/docs/export-document.js +18058 -14538
  159. package/dist/docs/export-document.js.map +3 -3
  160. package/dist/docs/numbering.js +1 -1
  161. package/dist/docs/numbering.js.map +1 -1
  162. package/dist/docs/supersede.d.ts.map +1 -1
  163. package/dist/docs/supersede.js +6 -3
  164. package/dist/docs/supersede.js.map +1 -1
  165. package/dist/docs/version-ssot.js +1 -1
  166. package/dist/docs/version-ssot.js.map +1 -1
  167. package/dist/doctor/db-substrate.d.ts.map +1 -1
  168. package/dist/doctor/db-substrate.js +39 -24
  169. package/dist/doctor/db-substrate.js.map +1 -1
  170. package/dist/doctor/knowledge-summary.d.ts +10 -3
  171. package/dist/doctor/knowledge-summary.d.ts.map +1 -1
  172. package/dist/doctor/knowledge-summary.js +10 -3
  173. package/dist/doctor/knowledge-summary.js.map +1 -1
  174. package/dist/doctor/orphan-ac-bindings.d.ts +64 -0
  175. package/dist/doctor/orphan-ac-bindings.d.ts.map +1 -0
  176. package/dist/doctor/orphan-ac-bindings.js +59 -0
  177. package/dist/doctor/orphan-ac-bindings.js.map +1 -0
  178. package/dist/doctor/project-identity.d.ts +128 -37
  179. package/dist/doctor/project-identity.d.ts.map +1 -1
  180. package/dist/doctor/project-identity.js +476 -63
  181. package/dist/doctor/project-identity.js.map +1 -1
  182. package/dist/doctor/projects.d.ts.map +1 -1
  183. package/dist/doctor/projects.js +43 -29
  184. package/dist/doctor/projects.js.map +1 -1
  185. package/dist/doctor/row-identity.d.ts +31 -0
  186. package/dist/doctor/row-identity.d.ts.map +1 -0
  187. package/dist/doctor/row-identity.js +93 -0
  188. package/dist/doctor/row-identity.js.map +1 -0
  189. package/dist/doctor/twin-collapse.d.ts +108 -2
  190. package/dist/doctor/twin-collapse.d.ts.map +1 -1
  191. package/dist/doctor/twin-collapse.js +309 -7
  192. package/dist/doctor/twin-collapse.js.map +1 -1
  193. package/dist/error-catalog.js +2 -2
  194. package/dist/error-catalog.js.map +1 -1
  195. package/dist/error-registry.js +1 -1
  196. package/dist/error-registry.js.map +1 -1
  197. package/dist/gateway-client/generated/types.gen.d.ts +22 -2
  198. package/dist/gateway-client/generated/types.gen.d.ts.map +1 -1
  199. package/dist/index.d.ts +1 -1
  200. package/dist/index.d.ts.map +1 -1
  201. package/dist/index.js +1 -1
  202. package/dist/index.js.map +1 -1
  203. package/dist/init.d.ts.map +1 -1
  204. package/dist/init.js +20 -11
  205. package/dist/init.js.map +1 -1
  206. package/dist/inject/index.d.ts.map +1 -1
  207. package/dist/inject/index.js +2 -3
  208. package/dist/inject/index.js.map +1 -1
  209. package/dist/internal.d.ts +5 -4
  210. package/dist/internal.d.ts.map +1 -1
  211. package/dist/internal.js +6 -4
  212. package/dist/internal.js.map +1 -1
  213. package/dist/lifecycle/verification/satisfies-validator.d.ts.map +1 -1
  214. package/dist/lifecycle/verification/satisfies-validator.js +10 -0
  215. package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
  216. package/dist/llm/credential-remove-entry.d.ts +59 -0
  217. package/dist/llm/credential-remove-entry.d.ts.map +1 -0
  218. package/dist/llm/credential-remove-entry.js +101 -0
  219. package/dist/llm/credential-remove-entry.js.map +1 -0
  220. package/dist/llm/oauth/device-code.d.ts +26 -6
  221. package/dist/llm/oauth/device-code.d.ts.map +1 -1
  222. package/dist/llm/oauth/device-code.js +44 -12
  223. package/dist/llm/oauth/device-code.js.map +1 -1
  224. package/dist/llm/plugin-facade.js +18202 -14682
  225. package/dist/llm/plugin-facade.js.map +3 -3
  226. package/dist/memory/attention.d.ts.map +1 -1
  227. package/dist/memory/attention.js +5 -3
  228. package/dist/memory/attention.js.map +1 -1
  229. package/dist/memory/decisions.d.ts +48 -3
  230. package/dist/memory/decisions.d.ts.map +1 -1
  231. package/dist/memory/decisions.js +98 -14
  232. package/dist/memory/decisions.js.map +1 -1
  233. package/dist/memory/index.d.ts.map +1 -1
  234. package/dist/memory/index.js +19 -10
  235. package/dist/memory/index.js.map +1 -1
  236. package/dist/memory/learnings.d.ts +6 -6
  237. package/dist/memory/manifest-identity.d.ts +171 -0
  238. package/dist/memory/manifest-identity.d.ts.map +1 -0
  239. package/dist/memory/manifest-identity.js +345 -0
  240. package/dist/memory/manifest-identity.js.map +1 -0
  241. package/dist/memory/mental-model-queue.d.ts +14 -4
  242. package/dist/memory/mental-model-queue.d.ts.map +1 -1
  243. package/dist/memory/mental-model-queue.js +64 -35
  244. package/dist/memory/mental-model-queue.js.map +1 -1
  245. package/dist/memory/patterns.d.ts +4 -4
  246. package/dist/memory/pipeline-manifest-sqlite.d.ts +47 -5
  247. package/dist/memory/pipeline-manifest-sqlite.d.ts.map +1 -1
  248. package/dist/memory/pipeline-manifest-sqlite.js +130 -14
  249. package/dist/memory/pipeline-manifest-sqlite.js.map +1 -1
  250. package/dist/memory/retrieval/observe.d.ts.map +1 -1
  251. package/dist/memory/retrieval/observe.js +2 -0
  252. package/dist/memory/retrieval/observe.js.map +1 -1
  253. package/dist/memory/transcript-scanner.js +1 -1
  254. package/dist/migration/manual/T10165-backfill-adr-index.d.ts.map +1 -1
  255. package/dist/migration/manual/T10165-backfill-adr-index.js +5 -1
  256. package/dist/migration/manual/T10165-backfill-adr-index.js.map +1 -1
  257. package/dist/nexus/deps.d.ts.map +1 -1
  258. package/dist/nexus/deps.js +7 -14
  259. package/dist/nexus/deps.js.map +1 -1
  260. package/dist/nexus/discover.d.ts.map +1 -1
  261. package/dist/nexus/discover.js +6 -9
  262. package/dist/nexus/discover.js.map +1 -1
  263. package/dist/nexus/fleet-status.d.ts +83 -0
  264. package/dist/nexus/fleet-status.d.ts.map +1 -0
  265. package/dist/nexus/fleet-status.js +414 -0
  266. package/dist/nexus/fleet-status.js.map +1 -0
  267. package/dist/nexus/git-state.d.ts +15 -0
  268. package/dist/nexus/git-state.d.ts.map +1 -1
  269. package/dist/nexus/git-state.js +77 -3
  270. package/dist/nexus/git-state.js.map +1 -1
  271. package/dist/nexus/identity.d.ts.map +1 -1
  272. package/dist/nexus/identity.js +4 -0
  273. package/dist/nexus/identity.js.map +1 -1
  274. package/dist/nexus/index.d.ts +4 -1
  275. package/dist/nexus/index.d.ts.map +1 -1
  276. package/dist/nexus/index.js +7 -1
  277. package/dist/nexus/index.js.map +1 -1
  278. package/dist/nexus/migrate-json-to-sqlite.d.ts +3 -2
  279. package/dist/nexus/migrate-json-to-sqlite.d.ts.map +1 -1
  280. package/dist/nexus/migrate-json-to-sqlite.js +9 -17
  281. package/dist/nexus/migrate-json-to-sqlite.js.map +1 -1
  282. package/dist/nexus/ops.d.ts +1 -0
  283. package/dist/nexus/ops.d.ts.map +1 -1
  284. package/dist/nexus/project-activity.d.ts +104 -0
  285. package/dist/nexus/project-activity.d.ts.map +1 -0
  286. package/dist/nexus/project-activity.js +150 -0
  287. package/dist/nexus/project-activity.js.map +1 -0
  288. package/dist/nexus/projects-clean.d.ts.map +1 -1
  289. package/dist/nexus/projects-clean.js +22 -11
  290. package/dist/nexus/projects-clean.js.map +1 -1
  291. package/dist/nexus/projects-scan.d.ts.map +1 -1
  292. package/dist/nexus/projects-scan.js +8 -13
  293. package/dist/nexus/projects-scan.js.map +1 -1
  294. package/dist/nexus/query.d.ts +2 -2
  295. package/dist/nexus/query.d.ts.map +1 -1
  296. package/dist/nexus/query.js +8 -31
  297. package/dist/nexus/query.js.map +1 -1
  298. package/dist/nexus/registry-errors.d.ts +61 -0
  299. package/dist/nexus/registry-errors.d.ts.map +1 -0
  300. package/dist/nexus/registry-errors.js +85 -0
  301. package/dist/nexus/registry-errors.js.map +1 -0
  302. package/dist/nexus/registry-roots.d.ts +5 -2
  303. package/dist/nexus/registry-roots.d.ts.map +1 -1
  304. package/dist/nexus/registry-roots.js +8 -10
  305. package/dist/nexus/registry-roots.js.map +1 -1
  306. package/dist/nexus/registry.d.ts +48 -5
  307. package/dist/nexus/registry.d.ts.map +1 -1
  308. package/dist/nexus/registry.js +151 -85
  309. package/dist/nexus/registry.js.map +1 -1
  310. package/dist/orchestrate/pivot.d.ts +4 -0
  311. package/dist/orchestrate/pivot.d.ts.map +1 -1
  312. package/dist/orchestrate/pivot.js +75 -12
  313. package/dist/orchestrate/pivot.js.map +1 -1
  314. package/dist/orchestrate/query-ops.d.ts.map +1 -1
  315. package/dist/orchestrate/query-ops.js +29 -27
  316. package/dist/orchestrate/query-ops.js.map +1 -1
  317. package/dist/orchestrate/spawn-ops.d.ts.map +1 -1
  318. package/dist/orchestrate/spawn-ops.js +29 -3
  319. package/dist/orchestrate/spawn-ops.js.map +1 -1
  320. package/dist/orchestrate/worktree-complete.d.ts.map +1 -1
  321. package/dist/orchestrate/worktree-complete.js +40 -2
  322. package/dist/orchestrate/worktree-complete.js.map +1 -1
  323. package/dist/orchestration/bootstrap.d.ts.map +1 -1
  324. package/dist/orchestration/bootstrap.js +20 -14
  325. package/dist/orchestration/bootstrap.js.map +1 -1
  326. package/dist/orchestration/index.d.ts +15 -1
  327. package/dist/orchestration/index.d.ts.map +1 -1
  328. package/dist/orchestration/index.js +25 -6
  329. package/dist/orchestration/index.js.map +1 -1
  330. package/dist/orchestration/lead-rollup.d.ts +7 -1
  331. package/dist/orchestration/lead-rollup.d.ts.map +1 -1
  332. package/dist/orchestration/lead-rollup.js +6 -3
  333. package/dist/orchestration/lead-rollup.js.map +1 -1
  334. package/dist/orchestration/spawn-prompt.d.ts +26 -0
  335. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  336. package/dist/orchestration/spawn-prompt.js +63 -92
  337. package/dist/orchestration/spawn-prompt.js.map +1 -1
  338. package/dist/orchestration/waves.d.ts +21 -10
  339. package/dist/orchestration/waves.d.ts.map +1 -1
  340. package/dist/orchestration/waves.js +38 -35
  341. package/dist/orchestration/waves.js.map +1 -1
  342. package/dist/paths.d.ts +9 -2
  343. package/dist/paths.d.ts.map +1 -1
  344. package/dist/paths.js +30 -13
  345. package/dist/paths.js.map +1 -1
  346. package/dist/phases/index.d.ts +1 -1
  347. package/dist/phases/index.d.ts.map +1 -1
  348. package/dist/phases/index.js +3 -4
  349. package/dist/phases/index.js.map +1 -1
  350. package/dist/project-info.d.ts +40 -3
  351. package/dist/project-info.d.ts.map +1 -1
  352. package/dist/project-info.js +74 -6
  353. package/dist/project-info.js.map +1 -1
  354. package/dist/project-lifecycle.d.ts +28 -7
  355. package/dist/project-lifecycle.d.ts.map +1 -1
  356. package/dist/project-lifecycle.js +114 -47
  357. package/dist/project-lifecycle.js.map +1 -1
  358. package/dist/project-scope.d.ts +70 -3
  359. package/dist/project-scope.d.ts.map +1 -1
  360. package/dist/project-scope.js +154 -15
  361. package/dist/project-scope.js.map +1 -1
  362. package/dist/release/ci-evidence.d.ts +190 -0
  363. package/dist/release/ci-evidence.d.ts.map +1 -1
  364. package/dist/release/ci-evidence.js +436 -4
  365. package/dist/release/ci-evidence.js.map +1 -1
  366. package/dist/release/open.d.ts +12 -2
  367. package/dist/release/open.d.ts.map +1 -1
  368. package/dist/release/open.js +32 -3
  369. package/dist/release/open.js.map +1 -1
  370. package/dist/release/preflight-skip.d.ts +73 -0
  371. package/dist/release/preflight-skip.d.ts.map +1 -0
  372. package/dist/release/preflight-skip.js +254 -0
  373. package/dist/release/preflight-skip.js.map +1 -0
  374. package/dist/render/decide/index.d.ts +51 -0
  375. package/dist/render/decide/index.d.ts.map +1 -0
  376. package/dist/render/decide/index.js +289 -0
  377. package/dist/render/decide/index.js.map +1 -0
  378. package/dist/render/index.d.ts +1 -0
  379. package/dist/render/index.d.ts.map +1 -1
  380. package/dist/render/index.js +1 -0
  381. package/dist/render/index.js.map +1 -1
  382. package/dist/render/nexus/graph/index.d.ts +5 -0
  383. package/dist/render/nexus/graph/index.d.ts.map +1 -1
  384. package/dist/render/nexus/graph/index.js +53 -0
  385. package/dist/render/nexus/graph/index.js.map +1 -1
  386. package/dist/scaffold/ensure-config.d.ts +14 -6
  387. package/dist/scaffold/ensure-config.d.ts.map +1 -1
  388. package/dist/scaffold/ensure-config.js +39 -17
  389. package/dist/scaffold/ensure-config.js.map +1 -1
  390. package/dist/scaffold/project-identity.d.ts +115 -23
  391. package/dist/scaffold/project-identity.d.ts.map +1 -1
  392. package/dist/scaffold/project-identity.js +196 -44
  393. package/dist/scaffold/project-identity.js.map +1 -1
  394. package/dist/sdk/validator-ac-pull.d.ts.map +1 -1
  395. package/dist/sdk/validator-ac-pull.js +2 -1
  396. package/dist/sdk/validator-ac-pull.js.map +1 -1
  397. package/dist/selfimprove/fix-gen.js +18221 -14701
  398. package/dist/selfimprove/fix-gen.js.map +3 -3
  399. package/dist/sentient/cross-project-hygiene.d.ts +17 -6
  400. package/dist/sentient/cross-project-hygiene.d.ts.map +1 -1
  401. package/dist/sentient/cross-project-hygiene.js +22 -11
  402. package/dist/sentient/cross-project-hygiene.js.map +1 -1
  403. package/dist/sentient/propose-tick.d.ts.map +1 -1
  404. package/dist/sentient/propose-tick.js +2 -3
  405. package/dist/sentient/propose-tick.js.map +1 -1
  406. package/dist/sentient/stage-drift-tick.d.ts.map +1 -1
  407. package/dist/sentient/stage-drift-tick.js +2 -3
  408. package/dist/sentient/stage-drift-tick.js.map +1 -1
  409. package/dist/session/engine-ops.d.ts +13 -4
  410. package/dist/session/engine-ops.d.ts.map +1 -1
  411. package/dist/session/engine-ops.js +38 -45
  412. package/dist/session/engine-ops.js.map +1 -1
  413. package/dist/sessions/briefing.d.ts +7 -3
  414. package/dist/sessions/briefing.d.ts.map +1 -1
  415. package/dist/sessions/briefing.js +10 -10
  416. package/dist/sessions/briefing.js.map +1 -1
  417. package/dist/sessions/drift-watchdog.d.ts.map +1 -1
  418. package/dist/sessions/drift-watchdog.js +11 -19
  419. package/dist/sessions/drift-watchdog.js.map +1 -1
  420. package/dist/sessions/focus-state-store.d.ts +103 -26
  421. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  422. package/dist/sessions/focus-state-store.js +166 -37
  423. package/dist/sessions/focus-state-store.js.map +1 -1
  424. package/dist/sessions/handoff.d.ts.map +1 -1
  425. package/dist/sessions/handoff.js +9 -18
  426. package/dist/sessions/handoff.js.map +1 -1
  427. package/dist/sessions/index.d.ts +4 -2
  428. package/dist/sessions/index.d.ts.map +1 -1
  429. package/dist/sessions/index.js +35 -6
  430. package/dist/sessions/index.js.map +1 -1
  431. package/dist/sessions/session-drift.d.ts.map +1 -1
  432. package/dist/sessions/session-drift.js +4 -2
  433. package/dist/sessions/session-drift.js.map +1 -1
  434. package/dist/sessions/session-view.d.ts +8 -1
  435. package/dist/sessions/session-view.d.ts.map +1 -1
  436. package/dist/sessions/session-view.js +9 -2
  437. package/dist/sessions/session-view.js.map +1 -1
  438. package/dist/setup/config-json-merge.d.ts.map +1 -1
  439. package/dist/setup/config-json-merge.js +1 -0
  440. package/dist/setup/config-json-merge.js.map +1 -1
  441. package/dist/setup/index.d.ts +4 -2
  442. package/dist/setup/index.d.ts.map +1 -1
  443. package/dist/setup/index.js +6 -2
  444. package/dist/setup/index.js.map +1 -1
  445. package/dist/setup/sections/nexus-account.d.ts +32 -0
  446. package/dist/setup/sections/nexus-account.d.ts.map +1 -0
  447. package/dist/setup/sections/nexus-account.js +64 -0
  448. package/dist/setup/sections/nexus-account.js.map +1 -0
  449. package/dist/setup/wizard.d.ts +1 -1
  450. package/dist/setup/wizard.d.ts.map +1 -1
  451. package/dist/setup/wizard.js.map +1 -1
  452. package/dist/skills/manifests/research.js +2 -0
  453. package/dist/skills/manifests/research.js.map +1 -1
  454. package/dist/skills/orchestrator/startup.d.ts.map +1 -1
  455. package/dist/skills/orchestrator/startup.js +18 -31
  456. package/dist/skills/orchestrator/startup.js.map +1 -1
  457. package/dist/skills/orchestrator/validator.d.ts.map +1 -1
  458. package/dist/skills/orchestrator/validator.js +9 -2
  459. package/dist/skills/orchestrator/validator.js.map +1 -1
  460. package/dist/skills/validation.d.ts +4 -1
  461. package/dist/skills/validation.d.ts.map +1 -1
  462. package/dist/skills/validation.js +11 -3
  463. package/dist/skills/validation.js.map +1 -1
  464. package/dist/snapshot/index.d.ts.map +1 -1
  465. package/dist/snapshot/index.js +60 -53
  466. package/dist/snapshot/index.js.map +1 -1
  467. package/dist/spawn/agent-identity.d.ts +33 -1
  468. package/dist/spawn/agent-identity.d.ts.map +1 -1
  469. package/dist/spawn/agent-identity.js +53 -1
  470. package/dist/spawn/agent-identity.js.map +1 -1
  471. package/dist/spawn/branch-lock.d.ts +111 -7
  472. package/dist/spawn/branch-lock.d.ts.map +1 -1
  473. package/dist/spawn/branch-lock.js +296 -8
  474. package/dist/spawn/branch-lock.js.map +1 -1
  475. package/dist/spawn/index.d.ts +1 -1
  476. package/dist/spawn/index.d.ts.map +1 -1
  477. package/dist/spawn/index.js +1 -1
  478. package/dist/spawn/index.js.map +1 -1
  479. package/dist/stats/index.d.ts.map +1 -1
  480. package/dist/stats/index.js +3 -4
  481. package/dist/stats/index.js.map +1 -1
  482. package/dist/status/index.d.ts +12 -3
  483. package/dist/status/index.d.ts.map +1 -1
  484. package/dist/status/index.js +47 -5
  485. package/dist/status/index.js.map +1 -1
  486. package/dist/store/ac-binding-prune.d.ts +144 -0
  487. package/dist/store/ac-binding-prune.d.ts.map +1 -0
  488. package/dist/store/ac-binding-prune.js +293 -0
  489. package/dist/store/ac-binding-prune.js.map +1 -0
  490. package/dist/store/agent-registry-store.d.ts.map +1 -1
  491. package/dist/store/agent-registry-store.js +3 -2
  492. package/dist/store/agent-registry-store.js.map +1 -1
  493. package/dist/store/attachment-repair.d.ts.map +1 -1
  494. package/dist/store/attachment-repair.js +42 -3
  495. package/dist/store/attachment-repair.js.map +1 -1
  496. package/dist/store/attachment-store.d.ts.map +1 -1
  497. package/dist/store/attachment-store.js +30 -46
  498. package/dist/store/attachment-store.js.map +1 -1
  499. package/dist/store/backup-recover-brain.d.ts +4 -0
  500. package/dist/store/backup-recover-brain.d.ts.map +1 -1
  501. package/dist/store/backup-recover-brain.js +2 -0
  502. package/dist/store/backup-recover-brain.js.map +1 -1
  503. package/dist/store/backup-recover.d.ts +9 -0
  504. package/dist/store/backup-recover.d.ts.map +1 -1
  505. package/dist/store/backup-recover.js +28 -1
  506. package/dist/store/backup-recover.js.map +1 -1
  507. package/dist/store/backup-sidecar.d.ts +115 -2
  508. package/dist/store/backup-sidecar.d.ts.map +1 -1
  509. package/dist/store/backup-sidecar.js +263 -3
  510. package/dist/store/backup-sidecar.js.map +1 -1
  511. package/dist/store/blob-keep.d.ts +135 -0
  512. package/dist/store/blob-keep.d.ts.map +1 -0
  513. package/dist/store/blob-keep.js +283 -0
  514. package/dist/store/blob-keep.js.map +1 -0
  515. package/dist/store/conduit-sqlite.d.ts.map +1 -1
  516. package/dist/store/conduit-sqlite.js +3 -2
  517. package/dist/store/conduit-sqlite.js.map +1 -1
  518. package/dist/store/converters.d.ts.map +1 -1
  519. package/dist/store/converters.js +11 -0
  520. package/dist/store/converters.js.map +1 -1
  521. package/dist/store/credential-transfer.d.ts +37 -5
  522. package/dist/store/credential-transfer.d.ts.map +1 -1
  523. package/dist/store/credential-transfer.js +76 -18
  524. package/dist/store/credential-transfer.js.map +1 -1
  525. package/dist/store/data-accessor.d.ts +1 -1
  526. package/dist/store/data-accessor.d.ts.map +1 -1
  527. package/dist/store/data-accessor.js.map +1 -1
  528. package/dist/store/db-helpers.d.ts +35 -11
  529. package/dist/store/db-helpers.d.ts.map +1 -1
  530. package/dist/store/db-helpers.js +107 -38
  531. package/dist/store/db-helpers.js.map +1 -1
  532. package/dist/store/display-id-alias.d.ts +529 -0
  533. package/dist/store/display-id-alias.d.ts.map +1 -0
  534. package/dist/store/display-id-alias.js +1063 -0
  535. package/dist/store/display-id-alias.js.map +1 -0
  536. package/dist/store/dual-scope-db.d.ts.map +1 -1
  537. package/dist/store/dual-scope-db.js +21 -0
  538. package/dist/store/dual-scope-db.js.map +1 -1
  539. package/dist/store/exodus/on-open.d.ts.map +1 -1
  540. package/dist/store/exodus/on-open.js +35 -0
  541. package/dist/store/exodus/on-open.js.map +1 -1
  542. package/dist/store/exodus/reconcile.d.ts.map +1 -1
  543. package/dist/store/exodus/reconcile.js +7 -2
  544. package/dist/store/exodus/reconcile.js.map +1 -1
  545. package/dist/store/exodus/recovery.d.ts.map +1 -1
  546. package/dist/store/exodus/recovery.js +20 -1
  547. package/dist/store/exodus/recovery.js.map +1 -1
  548. package/dist/store/exodus/runtime-targets.d.ts +3 -3
  549. package/dist/store/exodus/runtime-targets.js +3 -3
  550. package/dist/store/import-remap.d.ts +12 -1
  551. package/dist/store/import-remap.d.ts.map +1 -1
  552. package/dist/store/import-remap.js +14 -0
  553. package/dist/store/import-remap.js.map +1 -1
  554. package/dist/store/legacy-tasks-lineage.d.ts +3 -1
  555. package/dist/store/legacy-tasks-lineage.d.ts.map +1 -1
  556. package/dist/store/legacy-tasks-lineage.js +22 -3
  557. package/dist/store/legacy-tasks-lineage.js.map +1 -1
  558. package/dist/store/memory-accessor.js +1 -1
  559. package/dist/store/memory-accessor.js.map +1 -1
  560. package/dist/store/migration-manager.d.ts +61 -0
  561. package/dist/store/migration-manager.d.ts.map +1 -1
  562. package/dist/store/migration-manager.js +102 -4
  563. package/dist/store/migration-manager.js.map +1 -1
  564. package/dist/store/nexus-validation-schemas.d.ts +64 -0
  565. package/dist/store/nexus-validation-schemas.d.ts.map +1 -1
  566. package/dist/store/portable-bundle-import.d.ts +8 -0
  567. package/dist/store/portable-bundle-import.d.ts.map +1 -1
  568. package/dist/store/portable-bundle-import.js +10 -0
  569. package/dist/store/portable-bundle-import.js.map +1 -1
  570. package/dist/store/portable-bundle-scan.d.ts.map +1 -1
  571. package/dist/store/portable-bundle-scan.js +1 -0
  572. package/dist/store/portable-bundle-scan.js.map +1 -1
  573. package/dist/store/portable-bundle.d.ts.map +1 -1
  574. package/dist/store/portable-bundle.js +15 -14
  575. package/dist/store/portable-bundle.js.map +1 -1
  576. package/dist/store/pre-repair-snapshot.d.ts +4 -1
  577. package/dist/store/pre-repair-snapshot.d.ts.map +1 -1
  578. package/dist/store/pre-repair-snapshot.js +5 -1
  579. package/dist/store/pre-repair-snapshot.js.map +1 -1
  580. package/dist/store/regenerators.d.ts +4 -2
  581. package/dist/store/regenerators.d.ts.map +1 -1
  582. package/dist/store/regenerators.js +7 -3
  583. package/dist/store/regenerators.js.map +1 -1
  584. package/dist/store/repair-malformed-dbs.d.ts +4 -0
  585. package/dist/store/repair-malformed-dbs.d.ts.map +1 -1
  586. package/dist/store/repair-malformed-dbs.js +3 -0
  587. package/dist/store/repair-malformed-dbs.js.map +1 -1
  588. package/dist/store/row-identity-flag.d.ts +26 -0
  589. package/dist/store/row-identity-flag.d.ts.map +1 -0
  590. package/dist/store/row-identity-flag.js +31 -0
  591. package/dist/store/row-identity-flag.js.map +1 -0
  592. package/dist/store/row-identity-registry.d.ts +61 -0
  593. package/dist/store/row-identity-registry.d.ts.map +1 -0
  594. package/dist/store/row-identity-registry.js +198 -0
  595. package/dist/store/row-identity-registry.js.map +1 -0
  596. package/dist/store/row-identity.d.ts +390 -0
  597. package/dist/store/row-identity.d.ts.map +1 -0
  598. package/dist/store/row-identity.js +1240 -0
  599. package/dist/store/row-identity.js.map +1 -0
  600. package/dist/store/safety-data-accessor.d.ts +10 -3
  601. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  602. package/dist/store/safety-data-accessor.js +15 -4
  603. package/dist/store/safety-data-accessor.js.map +1 -1
  604. package/dist/store/schema/attachments.d.ts +1 -1
  605. package/dist/store/schema/audit.d.ts +4 -4
  606. package/dist/store/schema/background-jobs.d.ts +1 -1
  607. package/dist/store/schema/cleo-global/nexus.d.ts +49 -1
  608. package/dist/store/schema/cleo-global/nexus.d.ts.map +1 -1
  609. package/dist/store/schema/cleo-global/nexus.js +17 -0
  610. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  611. package/dist/store/schema/cleo-global/skills.d.ts +2 -2
  612. package/dist/store/schema/cleo-project/audit.d.ts +4 -4
  613. package/dist/store/schema/cleo-project/docs.d.ts +17 -1
  614. package/dist/store/schema/cleo-project/docs.d.ts.map +1 -1
  615. package/dist/store/schema/cleo-project/docs.js +10 -0
  616. package/dist/store/schema/cleo-project/docs.js.map +1 -1
  617. package/dist/store/schema/cleo-project/lifecycle.d.ts +4 -4
  618. package/dist/store/schema/cleo-project/nexus-graph.d.ts +3 -3
  619. package/dist/store/schema/cleo-project/provenance-commits.d.ts +2 -2
  620. package/dist/store/schema/cleo-project/provenance-rest.d.ts +3 -3
  621. package/dist/store/schema/cleo-project/runtime.d.ts +3 -3
  622. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts +87 -1
  623. package/dist/store/schema/cleo-project/tasks-core-batch2.d.ts.map +1 -1
  624. package/dist/store/schema/cleo-project/tasks-core-batch2.js +35 -0
  625. package/dist/store/schema/cleo-project/tasks-core-batch2.js.map +1 -1
  626. package/dist/store/schema/cleo-project/tasks-core.d.ts +263 -7
  627. package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
  628. package/dist/store/schema/cleo-project/tasks-core.js +77 -2
  629. package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
  630. package/dist/store/schema/cleo-shared/brain.d.ts +7 -7
  631. package/dist/store/schema/lifecycle.d.ts +4 -4
  632. package/dist/store/schema/manifest.d.ts +1 -1
  633. package/dist/store/schema/memory-schema.d.ts +6 -6
  634. package/dist/store/schema/nexus-schema.d.ts +51 -3
  635. package/dist/store/schema/nexus-schema.d.ts.map +1 -1
  636. package/dist/store/schema/nexus-schema.js +28 -7
  637. package/dist/store/schema/nexus-schema.js.map +1 -1
  638. package/dist/store/schema/provenance/releases.d.ts +1 -1
  639. package/dist/store/schema/skills-schema.d.ts +2 -2
  640. package/dist/store/schema/tasks.d.ts +6 -6
  641. package/dist/store/session-store.d.ts +65 -0
  642. package/dist/store/session-store.d.ts.map +1 -1
  643. package/dist/store/session-store.js +108 -7
  644. package/dist/store/session-store.js.map +1 -1
  645. package/dist/store/split-brain-import.d.ts +2 -14
  646. package/dist/store/split-brain-import.d.ts.map +1 -1
  647. package/dist/store/split-brain-import.js +4 -19
  648. package/dist/store/split-brain-import.js.map +1 -1
  649. package/dist/store/sqlite-data-accessor.d.ts +279 -2
  650. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  651. package/dist/store/sqlite-data-accessor.js +789 -91
  652. package/dist/store/sqlite-data-accessor.js.map +1 -1
  653. package/dist/store/sqlite.d.ts +15 -3
  654. package/dist/store/sqlite.d.ts.map +1 -1
  655. package/dist/store/sqlite.js +52 -20
  656. package/dist/store/sqlite.js.map +1 -1
  657. package/dist/store/store-write-guard.d.ts +9 -3
  658. package/dist/store/store-write-guard.d.ts.map +1 -1
  659. package/dist/store/store-write-guard.js +25 -4
  660. package/dist/store/store-write-guard.js.map +1 -1
  661. package/dist/store/sync/clock-store.d.ts +67 -0
  662. package/dist/store/sync/clock-store.d.ts.map +1 -0
  663. package/dist/store/sync/clock-store.js +117 -0
  664. package/dist/store/sync/clock-store.js.map +1 -0
  665. package/dist/store/sync/flags.d.ts +51 -0
  666. package/dist/store/sync/flags.d.ts.map +1 -0
  667. package/dist/store/sync/flags.js +81 -0
  668. package/dist/store/sync/flags.js.map +1 -0
  669. package/dist/store/sync/hlc.d.ts +115 -0
  670. package/dist/store/sync/hlc.d.ts.map +1 -0
  671. package/dist/store/sync/hlc.js +172 -0
  672. package/dist/store/sync/hlc.js.map +1 -0
  673. package/dist/store/sync/index.d.ts +20 -0
  674. package/dist/store/sync/index.d.ts.map +1 -0
  675. package/dist/store/sync/index.js +20 -0
  676. package/dist/store/sync/index.js.map +1 -0
  677. package/dist/store/sync/replica-registry.d.ts +85 -0
  678. package/dist/store/sync/replica-registry.d.ts.map +1 -0
  679. package/dist/store/sync/replica-registry.js +147 -0
  680. package/dist/store/sync/replica-registry.js.map +1 -0
  681. package/dist/store/sync/replica.d.ts +181 -0
  682. package/dist/store/sync/replica.d.ts.map +1 -0
  683. package/dist/store/sync/replica.js +305 -0
  684. package/dist/store/sync/replica.js.map +1 -0
  685. package/dist/store/sync/schema.d.ts +68 -0
  686. package/dist/store/sync/schema.d.ts.map +1 -0
  687. package/dist/store/sync/schema.js +130 -0
  688. package/dist/store/sync/schema.js.map +1 -0
  689. package/dist/store/sync/skew-hold.d.ts +71 -0
  690. package/dist/store/sync/skew-hold.d.ts.map +1 -0
  691. package/dist/store/sync/skew-hold.js +89 -0
  692. package/dist/store/sync/skew-hold.js.map +1 -0
  693. package/dist/store/table-classification.d.ts +11 -9
  694. package/dist/store/table-classification.d.ts.map +1 -1
  695. package/dist/store/table-classification.js +127 -33
  696. package/dist/store/table-classification.js.map +1 -1
  697. package/dist/store/task-claim.d.ts +144 -0
  698. package/dist/store/task-claim.d.ts.map +1 -0
  699. package/dist/store/task-claim.js +195 -0
  700. package/dist/store/task-claim.js.map +1 -0
  701. package/dist/store/task-version.d.ts +43 -5
  702. package/dist/store/task-version.d.ts.map +1 -1
  703. package/dist/store/task-version.js +113 -17
  704. package/dist/store/task-version.js.map +1 -1
  705. package/dist/store/tasks-schema.d.ts +2 -0
  706. package/dist/store/tasks-schema.d.ts.map +1 -1
  707. package/dist/store/tasks-schema.js +1 -0
  708. package/dist/store/tasks-schema.js.map +1 -1
  709. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  710. package/dist/store/tasks-sqlite.js +10 -2
  711. package/dist/store/tasks-sqlite.js.map +1 -1
  712. package/dist/store/twin-collapse.d.ts +450 -22
  713. package/dist/store/twin-collapse.d.ts.map +1 -1
  714. package/dist/store/twin-collapse.js +1552 -49
  715. package/dist/store/twin-collapse.js.map +1 -1
  716. package/dist/store/umbrella-data-accessor.d.ts +10 -3
  717. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  718. package/dist/store/umbrella-data-accessor.js +14 -4
  719. package/dist/store/umbrella-data-accessor.js.map +1 -1
  720. package/dist/store/validation-schemas.d.ts +402 -50
  721. package/dist/store/validation-schemas.d.ts.map +1 -1
  722. package/dist/store/with-retry.d.ts +36 -0
  723. package/dist/store/with-retry.d.ts.map +1 -1
  724. package/dist/store/with-retry.js +51 -0
  725. package/dist/store/with-retry.js.map +1 -1
  726. package/dist/store/worktree-build-guard.d.ts +13 -4
  727. package/dist/store/worktree-build-guard.d.ts.map +1 -1
  728. package/dist/store/worktree-build-guard.js +21 -10
  729. package/dist/store/worktree-build-guard.js.map +1 -1
  730. package/dist/store/worktree-isolation-guard.d.ts +121 -10
  731. package/dist/store/worktree-isolation-guard.d.ts.map +1 -1
  732. package/dist/store/worktree-isolation-guard.js +155 -34
  733. package/dist/store/worktree-isolation-guard.js.map +1 -1
  734. package/dist/system/backup.d.ts +7 -0
  735. package/dist/system/backup.d.ts.map +1 -1
  736. package/dist/system/backup.js +5 -0
  737. package/dist/system/backup.js.map +1 -1
  738. package/dist/system/health.d.ts.map +1 -1
  739. package/dist/system/health.js +6 -1
  740. package/dist/system/health.js.map +1 -1
  741. package/dist/system/inject-generate.d.ts.map +1 -1
  742. package/dist/system/inject-generate.js +23 -10
  743. package/dist/system/inject-generate.js.map +1 -1
  744. package/dist/system/project-health.d.ts +17 -2
  745. package/dist/system/project-health.d.ts.map +1 -1
  746. package/dist/system/project-health.js +19 -6
  747. package/dist/system/project-health.js.map +1 -1
  748. package/dist/task-tools/index.d.ts +1 -1
  749. package/dist/task-tools/index.d.ts.map +1 -1
  750. package/dist/task-tools/index.js +1 -1
  751. package/dist/task-tools/index.js.map +1 -1
  752. package/dist/task-tools/score-task-priority.d.ts +38 -0
  753. package/dist/task-tools/score-task-priority.d.ts.map +1 -1
  754. package/dist/task-tools/score-task-priority.js +51 -0
  755. package/dist/task-tools/score-task-priority.js.map +1 -1
  756. package/dist/task-work/claims.d.ts +215 -0
  757. package/dist/task-work/claims.d.ts.map +1 -0
  758. package/dist/task-work/claims.js +272 -0
  759. package/dist/task-work/claims.js.map +1 -0
  760. package/dist/task-work/index.d.ts +47 -3
  761. package/dist/task-work/index.d.ts.map +1 -1
  762. package/dist/task-work/index.js +74 -41
  763. package/dist/task-work/index.js.map +1 -1
  764. package/dist/tasks/ac-coverage-gate.d.ts.map +1 -1
  765. package/dist/tasks/ac-coverage-gate.js +3 -0
  766. package/dist/tasks/ac-coverage-gate.js.map +1 -1
  767. package/dist/tasks/ac-table.d.ts +35 -7
  768. package/dist/tasks/ac-table.d.ts.map +1 -1
  769. package/dist/tasks/ac-table.js +119 -14
  770. package/dist/tasks/ac-table.js.map +1 -1
  771. package/dist/tasks/add.d.ts.map +1 -1
  772. package/dist/tasks/add.js +51 -4
  773. package/dist/tasks/add.js.map +1 -1
  774. package/dist/tasks/analyze.d.ts.map +1 -1
  775. package/dist/tasks/analyze.js +3 -4
  776. package/dist/tasks/analyze.js.map +1 -1
  777. package/dist/tasks/backfill-child-projections.js +47 -6
  778. package/dist/tasks/backfill-child-projections.js.map +1 -1
  779. package/dist/tasks/change-set.d.ts +5 -0
  780. package/dist/tasks/change-set.d.ts.map +1 -1
  781. package/dist/tasks/change-set.js +59 -3
  782. package/dist/tasks/change-set.js.map +1 -1
  783. package/dist/tasks/complete.d.ts +16 -0
  784. package/dist/tasks/complete.d.ts.map +1 -1
  785. package/dist/tasks/complete.js +33 -8
  786. package/dist/tasks/complete.js.map +1 -1
  787. package/dist/tasks/completion-evaluation.d.ts.map +1 -1
  788. package/dist/tasks/completion-evaluation.js +3 -0
  789. package/dist/tasks/completion-evaluation.js.map +1 -1
  790. package/dist/tasks/component-pr.d.ts +162 -1
  791. package/dist/tasks/component-pr.d.ts.map +1 -1
  792. package/dist/tasks/component-pr.js +560 -59
  793. package/dist/tasks/component-pr.js.map +1 -1
  794. package/dist/tasks/done-record.d.ts +14 -1
  795. package/dist/tasks/done-record.d.ts.map +1 -1
  796. package/dist/tasks/done-record.js +37 -0
  797. package/dist/tasks/done-record.js.map +1 -1
  798. package/dist/tasks/duplicate-detector.d.ts +20 -1
  799. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  800. package/dist/tasks/duplicate-detector.js +10 -2
  801. package/dist/tasks/duplicate-detector.js.map +1 -1
  802. package/dist/tasks/engine-wrap-ops.d.ts +19 -10
  803. package/dist/tasks/engine-wrap-ops.d.ts.map +1 -1
  804. package/dist/tasks/engine-wrap-ops.js +38 -10
  805. package/dist/tasks/engine-wrap-ops.js.map +1 -1
  806. package/dist/tasks/evidence.d.ts.map +1 -1
  807. package/dist/tasks/evidence.js +14 -3
  808. package/dist/tasks/evidence.js.map +1 -1
  809. package/dist/tasks/graph-ops.d.ts +9 -2
  810. package/dist/tasks/graph-ops.d.ts.map +1 -1
  811. package/dist/tasks/graph-ops.js +24 -32
  812. package/dist/tasks/graph-ops.js.map +1 -1
  813. package/dist/tasks/plan.d.ts.map +1 -1
  814. package/dist/tasks/plan.js +16 -60
  815. package/dist/tasks/plan.js.map +1 -1
  816. package/dist/tasks/task-context.d.ts.map +1 -1
  817. package/dist/tasks/task-context.js +13 -0
  818. package/dist/tasks/task-context.js.map +1 -1
  819. package/dist/tasks/task-import.d.ts.map +1 -1
  820. package/dist/tasks/task-import.js +21 -12
  821. package/dist/tasks/task-import.js.map +1 -1
  822. package/dist/tasks/task-next.d.ts +25 -2
  823. package/dist/tasks/task-next.d.ts.map +1 -1
  824. package/dist/tasks/task-next.js +32 -13
  825. package/dist/tasks/task-next.js.map +1 -1
  826. package/dist/tasks/update.d.ts.map +1 -1
  827. package/dist/tasks/update.js +7 -5
  828. package/dist/tasks/update.js.map +1 -1
  829. package/dist/upgrade.d.ts +1 -1
  830. package/dist/upgrade.d.ts.map +1 -1
  831. package/dist/upgrade.js +48 -9
  832. package/dist/upgrade.js.map +1 -1
  833. package/dist/validation/compliance.d.ts +5 -1
  834. package/dist/validation/compliance.d.ts.map +1 -1
  835. package/dist/validation/compliance.js +24 -3
  836. package/dist/validation/compliance.js.map +1 -1
  837. package/dist/validation/doctor/checks.d.ts +20 -6
  838. package/dist/validation/doctor/checks.d.ts.map +1 -1
  839. package/dist/validation/doctor/checks.js +51 -8
  840. package/dist/validation/doctor/checks.js.map +1 -1
  841. package/dist/validation/index.d.ts +1 -1
  842. package/dist/validation/index.d.ts.map +1 -1
  843. package/dist/validation/index.js +1 -1
  844. package/dist/validation/index.js.map +1 -1
  845. package/dist/validation/protocol-common.d.ts +47 -2
  846. package/dist/validation/protocol-common.d.ts.map +1 -1
  847. package/dist/validation/protocol-common.js +86 -21
  848. package/dist/validation/protocol-common.js.map +1 -1
  849. package/dist/validation/validate-ops.d.ts.map +1 -1
  850. package/dist/validation/validate-ops.js +2 -3
  851. package/dist/validation/validate-ops.js.map +1 -1
  852. package/migrations/README.md +12 -0
  853. package/migrations/drizzle-cleo-global/20260929010000_t12512-registry-probed-opened/migration.sql +35 -0
  854. package/migrations/drizzle-cleo-global/20260929020000_t12721-git-state-head-committed-at/migration.sql +25 -0
  855. package/migrations/drizzle-cleo-project/20260928120000_t12341-row-uids/migration.sql +169 -0
  856. package/migrations/drizzle-cleo-project/20260929000000_t12535-docs-attachments-union-shape/migration.sql +21 -0
  857. package/migrations/drizzle-cleo-project/20260929120000_t12502-task-claim-leases/migration.sql +77 -0
  858. package/migrations/drizzle-cleo-project/20260929130000_t12736-claim-lease-iso-repair/migration.sql +37 -0
  859. package/migrations/sync-journal/20260929140000_t12342-sync-clock/migration.sql +42 -0
  860. package/package.json +23 -13
  861. package/schemas/project-info.schema.json +10 -4
  862. package/templates/CLEO-INJECTION.md +1 -1
  863. package/templates/CLEO-REFERENCE.md +7 -3
  864. package/templates/cleo-gitignore +11 -0
  865. package/templates/workflows/release-prepare.yml.tmpl +156 -10
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Leased agent claims on tasks — lease arithmetic and the typed refusal (T12502).
3
+ *
4
+ * A claim is four columns on `tasks_tasks` (`claimed_by_session`,
5
+ * `claimed_by_agent`, `claimed_at`, `lease_expires_at`), separate from the
6
+ * human `assignee`. It is written ONLY through the T12503 field chokepoint
7
+ * (`updateTaskFields`) with a `TaskClaimGuard`, which turns the claim into a
8
+ * compare-and-set in the UPDATE's WHERE clause (see
9
+ * `sqlite-data-accessor.ts#claimPredicate`). This module holds what the
10
+ * chokepoint and its callers share:
11
+ *
12
+ * - the lease TTL ({@link taskClaimLeaseMs}) and expiry
13
+ * ({@link leaseExpiresAtFrom});
14
+ * - the row → {@link TaskClaim} mapping ({@link claimFromColumns});
15
+ * - the `E_TASK_CLAIMED` error ({@link taskClaimedError}), which names the
16
+ * holder, the lease expiry and the one explicit, audited override.
17
+ *
18
+ * Lifecycle: taken by `cleo start` / `cleo claim` / spawn; renewed by the
19
+ * holder session's mutations (dispatch heartbeat) or `cleo claim --renew`;
20
+ * released by `cleo stop`, `cleo unclaim`, and — via SQL triggers — by the
21
+ * task reaching done / cancelled / archived and by the holder session ending
22
+ * or being deleted. An expired lease is never taken silently: `--take-over`.
23
+ *
24
+ * @task T12502
25
+ * @epic T12497
26
+ */
27
+ import { type TaskClaim, type TaskClaimMode } from '@cleocode/contracts';
28
+ import { CleoError } from '../errors.js';
29
+ /** Default claim lease: 30 minutes, renewed by the holder's activity. */
30
+ export declare const DEFAULT_TASK_CLAIM_LEASE_MS: number;
31
+ /**
32
+ * Environment override for the lease length, in whole minutes. Values that
33
+ * are not positive integers are ignored.
34
+ */
35
+ export declare const TASK_CLAIM_LEASE_ENV = "CLEO_CLAIM_LEASE_MINUTES";
36
+ /**
37
+ * Resolve the claim lease length in milliseconds.
38
+ *
39
+ * @returns `CLEO_CLAIM_LEASE_MINUTES` in ms when set to a positive integer,
40
+ * else {@link DEFAULT_TASK_CLAIM_LEASE_MS}.
41
+ * @example
42
+ * ```ts
43
+ * const expires = leaseExpiresAtFrom(now, taskClaimLeaseMs());
44
+ * ```
45
+ */
46
+ export declare function taskClaimLeaseMs(): number;
47
+ /**
48
+ * Compute a lease expiry.
49
+ *
50
+ * @param now - ISO-8601 UTC instant the lease starts or is renewed.
51
+ * @param leaseMs - Lease length in milliseconds.
52
+ * @returns The ISO-8601 UTC expiry instant.
53
+ * @example
54
+ * ```ts
55
+ * leaseExpiresAtFrom('2026-09-29T00:00:00.000Z', 60_000); // '2026-09-29T00:01:00.000Z'
56
+ * ```
57
+ */
58
+ export declare function leaseExpiresAtFrom(now: string, leaseMs: number): string;
59
+ /** The claim columns as stored on a task row. */
60
+ export interface TaskClaimColumns {
61
+ /** `claimed_by_session`. */
62
+ claimedBySession: string | null;
63
+ /** `claimed_by_agent`. */
64
+ claimedByAgent: string | null;
65
+ /** `claimed_at`. */
66
+ claimedAt: string | null;
67
+ /** `lease_expires_at`. */
68
+ leaseExpiresAt: string | null;
69
+ }
70
+ /**
71
+ * Map stored claim columns to a {@link TaskClaim}.
72
+ *
73
+ * @param row - The claim columns of a task row.
74
+ * @returns The lease, or `undefined` when the task is unclaimed.
75
+ * @example
76
+ * ```ts
77
+ * const claim = claimFromColumns(row); // undefined for an unclaimed task
78
+ * ```
79
+ */
80
+ export declare function claimFromColumns(row: TaskClaimColumns): TaskClaim | undefined;
81
+ /**
82
+ * The claim columns for a loaded task's lease (all `null` when unclaimed).
83
+ *
84
+ * @param claim - The lease on a task, if any.
85
+ * @returns The four claim columns.
86
+ * @example
87
+ * ```ts
88
+ * claimColumnsOf(task.claim).claimedBySession;
89
+ * ```
90
+ */
91
+ export declare function claimColumnsOf(claim: TaskClaim | undefined): TaskClaimColumns;
92
+ /**
93
+ * Whether a lease has lapsed at `now`. A lease with no recorded expiry
94
+ * counts as lapsed (it can never be renewed into validity by its holder
95
+ * anyway, and must not block forever).
96
+ *
97
+ * @param claim - The stored lease.
98
+ * @param now - ISO-8601 UTC instant to compare against.
99
+ * @returns `true` when `leaseExpiresAt <= now`.
100
+ * @example
101
+ * ```ts
102
+ * isClaimExpired(holder, new Date().toISOString());
103
+ * ```
104
+ */
105
+ export declare function isClaimExpired(claim: TaskClaim, now: string): boolean;
106
+ /**
107
+ * Whether a claim write in `mode` by `sessionId` may replace the stored lease.
108
+ * This is the JavaScript mirror of the SQL predicate; the chokepoint uses the
109
+ * SQL form for the write and this form only to explain a refusal.
110
+ *
111
+ * @param stored - The lease on the row, or `undefined` when unclaimed.
112
+ * @param mode - The claim mode.
113
+ * @param sessionId - The caller's session (`null` when unbound).
114
+ * @param now - ISO-8601 UTC instant for the expiry comparison.
115
+ * @param allowedHolders - Sessions whose lease `acquire` / `take-over` may take
116
+ * even while live: the spawn hand-off source and the caller's spawn-edge
117
+ * parent and children (`tasks_sessions.parent_session_id`).
118
+ * @returns `true` when the write is allowed.
119
+ * @example
120
+ * ```ts
121
+ * claimAllows(stored, 'acquire', 'ses_a', now); // false when ses_b holds it
122
+ * ```
123
+ */
124
+ export declare function claimAllows(stored: TaskClaim | undefined, mode: TaskClaimMode, sessionId: string | null, now: string, allowedHolders?: readonly string[]): boolean;
125
+ /**
126
+ * Build the `E_TASK_CLAIMED` refusal.
127
+ *
128
+ * @param taskId - The claimed task.
129
+ * @param holder - The lease stored on the task.
130
+ * @param requester - The refused caller.
131
+ * @param now - ISO-8601 UTC instant used for the expiry comparison.
132
+ * @param verb - The refused command, for the fix hint (`start`, `claim`, …).
133
+ * @returns A {@link CleoError} with `ExitCode.TASK_CLAIMED` (LAFS
134
+ * `E_TASK_CLAIMED`) and {@link TaskClaimedDetails} as `details`.
135
+ * @example
136
+ * ```ts
137
+ * throw taskClaimedError('T1', holder, { sessionId: 'ses_b', agentId: null }, now);
138
+ * ```
139
+ */
140
+ export declare function taskClaimedError(taskId: string, holder: TaskClaim, requester: {
141
+ sessionId: string | null;
142
+ agentId: string | null;
143
+ }, now: string, verb?: string): CleoError;
144
+ //# sourceMappingURL=task-claim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-claim.d.ts","sourceRoot":"","sources":["../../src/store/task-claim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAEL,KAAK,SAAS,EAEd,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAE1D;;;GAGG;AACH,eAAO,MAAM,oBAAoB,6BAA6B,CAAC;AAE/D;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAOzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,iDAAiD;AACjD,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,0BAA0B;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0BAA0B;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,gBAAgB,GAAG,SAAS,GAAG,SAAS,CAQ7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,gBAAgB,CAO7E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAErE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,WAAW,CACzB,MAAM,EAAE,SAAS,GAAG,SAAS,EAC7B,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,GAAG,EAAE,MAAM,EACX,cAAc,GAAE,SAAS,MAAM,EAAO,GACrC,OAAO,CAST;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE;IAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAC/D,GAAG,EAAE,MAAM,EACX,IAAI,SAAU,GACb,SAAS,CAwBX"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Leased agent claims on tasks — lease arithmetic and the typed refusal (T12502).
3
+ *
4
+ * A claim is four columns on `tasks_tasks` (`claimed_by_session`,
5
+ * `claimed_by_agent`, `claimed_at`, `lease_expires_at`), separate from the
6
+ * human `assignee`. It is written ONLY through the T12503 field chokepoint
7
+ * (`updateTaskFields`) with a `TaskClaimGuard`, which turns the claim into a
8
+ * compare-and-set in the UPDATE's WHERE clause (see
9
+ * `sqlite-data-accessor.ts#claimPredicate`). This module holds what the
10
+ * chokepoint and its callers share:
11
+ *
12
+ * - the lease TTL ({@link taskClaimLeaseMs}) and expiry
13
+ * ({@link leaseExpiresAtFrom});
14
+ * - the row → {@link TaskClaim} mapping ({@link claimFromColumns});
15
+ * - the `E_TASK_CLAIMED` error ({@link taskClaimedError}), which names the
16
+ * holder, the lease expiry and the one explicit, audited override.
17
+ *
18
+ * Lifecycle: taken by `cleo start` / `cleo claim` / spawn; renewed by the
19
+ * holder session's mutations (dispatch heartbeat) or `cleo claim --renew`;
20
+ * released by `cleo stop`, `cleo unclaim`, and — via SQL triggers — by the
21
+ * task reaching done / cancelled / archived and by the holder session ending
22
+ * or being deleted. An expired lease is never taken silently: `--take-over`.
23
+ *
24
+ * @task T12502
25
+ * @epic T12497
26
+ */
27
+ import { ExitCode, } from '@cleocode/contracts';
28
+ import { CleoError } from '../errors.js';
29
+ /** Default claim lease: 30 minutes, renewed by the holder's activity. */
30
+ export const DEFAULT_TASK_CLAIM_LEASE_MS = 30 * 60 * 1000;
31
+ /**
32
+ * Environment override for the lease length, in whole minutes. Values that
33
+ * are not positive integers are ignored.
34
+ */
35
+ export const TASK_CLAIM_LEASE_ENV = 'CLEO_CLAIM_LEASE_MINUTES';
36
+ /**
37
+ * Resolve the claim lease length in milliseconds.
38
+ *
39
+ * @returns `CLEO_CLAIM_LEASE_MINUTES` in ms when set to a positive integer,
40
+ * else {@link DEFAULT_TASK_CLAIM_LEASE_MS}.
41
+ * @example
42
+ * ```ts
43
+ * const expires = leaseExpiresAtFrom(now, taskClaimLeaseMs());
44
+ * ```
45
+ */
46
+ export function taskClaimLeaseMs() {
47
+ const raw = process.env[TASK_CLAIM_LEASE_ENV];
48
+ if (raw && /^\d+$/.test(raw)) {
49
+ const minutes = Number(raw);
50
+ if (minutes > 0)
51
+ return minutes * 60 * 1000;
52
+ }
53
+ return DEFAULT_TASK_CLAIM_LEASE_MS;
54
+ }
55
+ /**
56
+ * Compute a lease expiry.
57
+ *
58
+ * @param now - ISO-8601 UTC instant the lease starts or is renewed.
59
+ * @param leaseMs - Lease length in milliseconds.
60
+ * @returns The ISO-8601 UTC expiry instant.
61
+ * @example
62
+ * ```ts
63
+ * leaseExpiresAtFrom('2026-09-29T00:00:00.000Z', 60_000); // '2026-09-29T00:01:00.000Z'
64
+ * ```
65
+ */
66
+ export function leaseExpiresAtFrom(now, leaseMs) {
67
+ return new Date(Date.parse(now) + leaseMs).toISOString();
68
+ }
69
+ /**
70
+ * Map stored claim columns to a {@link TaskClaim}.
71
+ *
72
+ * @param row - The claim columns of a task row.
73
+ * @returns The lease, or `undefined` when the task is unclaimed.
74
+ * @example
75
+ * ```ts
76
+ * const claim = claimFromColumns(row); // undefined for an unclaimed task
77
+ * ```
78
+ */
79
+ export function claimFromColumns(row) {
80
+ if (!row.claimedBySession)
81
+ return undefined;
82
+ return {
83
+ sessionId: row.claimedBySession,
84
+ agentId: row.claimedByAgent,
85
+ claimedAt: row.claimedAt ?? '',
86
+ leaseExpiresAt: row.leaseExpiresAt ?? '',
87
+ };
88
+ }
89
+ /**
90
+ * The claim columns for a loaded task's lease (all `null` when unclaimed).
91
+ *
92
+ * @param claim - The lease on a task, if any.
93
+ * @returns The four claim columns.
94
+ * @example
95
+ * ```ts
96
+ * claimColumnsOf(task.claim).claimedBySession;
97
+ * ```
98
+ */
99
+ export function claimColumnsOf(claim) {
100
+ return {
101
+ claimedBySession: claim?.sessionId ?? null,
102
+ claimedByAgent: claim?.agentId ?? null,
103
+ claimedAt: claim?.claimedAt ?? null,
104
+ leaseExpiresAt: claim?.leaseExpiresAt ?? null,
105
+ };
106
+ }
107
+ /**
108
+ * Whether a lease has lapsed at `now`. A lease with no recorded expiry
109
+ * counts as lapsed (it can never be renewed into validity by its holder
110
+ * anyway, and must not block forever).
111
+ *
112
+ * @param claim - The stored lease.
113
+ * @param now - ISO-8601 UTC instant to compare against.
114
+ * @returns `true` when `leaseExpiresAt <= now`.
115
+ * @example
116
+ * ```ts
117
+ * isClaimExpired(holder, new Date().toISOString());
118
+ * ```
119
+ */
120
+ export function isClaimExpired(claim, now) {
121
+ return claim.leaseExpiresAt === '' || claim.leaseExpiresAt <= now;
122
+ }
123
+ /**
124
+ * Whether a claim write in `mode` by `sessionId` may replace the stored lease.
125
+ * This is the JavaScript mirror of the SQL predicate; the chokepoint uses the
126
+ * SQL form for the write and this form only to explain a refusal.
127
+ *
128
+ * @param stored - The lease on the row, or `undefined` when unclaimed.
129
+ * @param mode - The claim mode.
130
+ * @param sessionId - The caller's session (`null` when unbound).
131
+ * @param now - ISO-8601 UTC instant for the expiry comparison.
132
+ * @param allowedHolders - Sessions whose lease `acquire` / `take-over` may take
133
+ * even while live: the spawn hand-off source and the caller's spawn-edge
134
+ * parent and children (`tasks_sessions.parent_session_id`).
135
+ * @returns `true` when the write is allowed.
136
+ * @example
137
+ * ```ts
138
+ * claimAllows(stored, 'acquire', 'ses_a', now); // false when ses_b holds it
139
+ * ```
140
+ */
141
+ export function claimAllows(stored, mode, sessionId, now, allowedHolders = []) {
142
+ if (mode === 'force')
143
+ return true;
144
+ if (mode === 'renew' || mode === 'release') {
145
+ return stored !== undefined && sessionId !== null && stored.sessionId === sessionId;
146
+ }
147
+ if (!stored)
148
+ return true;
149
+ if (sessionId !== null && stored.sessionId === sessionId)
150
+ return true;
151
+ if (allowedHolders.includes(stored.sessionId))
152
+ return true;
153
+ return mode === 'take-over' && isClaimExpired(stored, now);
154
+ }
155
+ /**
156
+ * Build the `E_TASK_CLAIMED` refusal.
157
+ *
158
+ * @param taskId - The claimed task.
159
+ * @param holder - The lease stored on the task.
160
+ * @param requester - The refused caller.
161
+ * @param now - ISO-8601 UTC instant used for the expiry comparison.
162
+ * @param verb - The refused command, for the fix hint (`start`, `claim`, …).
163
+ * @returns A {@link CleoError} with `ExitCode.TASK_CLAIMED` (LAFS
164
+ * `E_TASK_CLAIMED`) and {@link TaskClaimedDetails} as `details`.
165
+ * @example
166
+ * ```ts
167
+ * throw taskClaimedError('T1', holder, { sessionId: 'ses_b', agentId: null }, now);
168
+ * ```
169
+ */
170
+ export function taskClaimedError(taskId, holder, requester, now, verb = 'start') {
171
+ const expired = isClaimExpired(holder, now);
172
+ const override = expired ? '--take-over' : '--force-claim';
173
+ const details = {
174
+ field: 'claimedBySession',
175
+ taskId,
176
+ holder,
177
+ expired,
178
+ requester,
179
+ override,
180
+ };
181
+ const who = holder.agentId
182
+ ? `session ${holder.sessionId} (agent ${holder.agentId})`
183
+ : `session ${holder.sessionId}`;
184
+ const lease = expired
185
+ ? `its lease expired at ${holder.leaseExpiresAt}`
186
+ : `lease expires ${holder.leaseExpiresAt}`;
187
+ const fix = expired
188
+ ? `The holder stopped renewing its lease. Take the task over explicitly (audited): cleo ${verb} ${taskId} --take-over`
189
+ : `Pick another task (cleo next), wait for the lease to expire at ${holder.leaseExpiresAt}, or override the live lease (audited): cleo ${verb} ${taskId} --force-claim`;
190
+ return new CleoError(ExitCode.TASK_CLAIMED, `Task ${taskId} is claimed by ${who}; ${lease}.`, {
191
+ fix,
192
+ details: { ...details },
193
+ });
194
+ }
195
+ //# sourceMappingURL=task-claim.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-claim.js","sourceRoot":"","sources":["../../src/store/task-claim.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,13 @@
11
11
  * leave the row at a version a stale reader already holds (no ABA).
12
12
  * 2. The comparison ({@link assertTaskVersion}) runs after `BEGIN IMMEDIATE`
13
13
  * holds the database write lock, so no other process can commit between
14
- * the check and the write.
14
+ * the check and the write. The field-level chokepoint
15
+ * (`updateTaskFields`) additionally puts the version in the UPDATE's
16
+ * WHERE clause, so a guarded write is a single compare-and-set statement.
17
+ *
18
+ * A conflict is raised by {@link taskConflictError}: `E_CONFLICT` with the
19
+ * current version, the fields that differ from the caller's read, the stored
20
+ * values to merge against, and a `--if-match` retry hint.
15
21
  *
16
22
  * `withWriteRetry` only absorbs `SQLITE_BUSY`; it cannot detect a lost update.
17
23
  * These helpers are what turn a stale read-modify-write into a typed
@@ -20,6 +26,8 @@
20
26
  * @task T12503
21
27
  * @epic T12497
22
28
  */
29
+ import { type Task, type TaskConflictChange } from '@cleocode/contracts';
30
+ import { CleoError } from '../errors.js';
23
31
  /** The minimal row shape that carries a task version. */
24
32
  export interface TaskVersionSource {
25
33
  /** Last-update timestamp (ISO 8601), or null/undefined for a never-updated row. */
@@ -51,6 +59,36 @@ export declare function taskVersion(row: TaskVersionSource | null | undefined):
51
59
  * ```
52
60
  */
53
61
  export declare function nextTaskVersion(current: TaskVersionSource | null | undefined, now?: string): string;
62
+ /**
63
+ * List the fields whose stored value differs from the caller's read.
64
+ *
65
+ * The version field (`updatedAt`) is never listed; an absent field and an
66
+ * explicit `null` compare equal.
67
+ *
68
+ * @param baseline - The task as the caller read it.
69
+ * @param current - The task as stored now.
70
+ * @returns One entry per differing field, sorted by field name.
71
+ * @example
72
+ * ```ts
73
+ * diffTaskFields(before, after); // [{ field: 'labels', was: '["a"]', now: '["a","b"]' }]
74
+ * ```
75
+ */
76
+ export declare function diffTaskFields(baseline: Task, current: Task): TaskConflictChange[];
77
+ /**
78
+ * Build the `E_CONFLICT` error for a stale task write.
79
+ *
80
+ * @param taskId - Task being written.
81
+ * @param expectedUpdatedAt - The version the caller expected.
82
+ * @param current - The row as stored now; a full task adds the merge summary.
83
+ * @param baseline - The task as the caller read it, when the write path has it.
84
+ * @returns A {@link CleoError} with `ExitCode.VERSION_CONFLICT` (LAFS
85
+ * `E_CONFLICT`), a fix hint, and {@link TaskConflictDetails} as `details`.
86
+ * @example
87
+ * ```ts
88
+ * throw taskConflictError('T1', expected, await accessor.loadSingleTask('T1'), baseline);
89
+ * ```
90
+ */
91
+ export declare function taskConflictError(taskId: string, expectedUpdatedAt: string, current: Task | TaskVersionSource | null, baseline?: Task): CleoError;
54
92
  /**
55
93
  * Throw `E_CONFLICT` when the caller's expected version no longer matches.
56
94
  *
@@ -60,13 +98,13 @@ export declare function nextTaskVersion(current: TaskVersionSource | null | unde
60
98
  * @param taskId - Task being written.
61
99
  * @param current - The row as read inside the write transaction.
62
100
  * @param expectedUpdatedAt - The version the caller read, if it supplied one.
101
+ * @param baseline - The task as the caller read it; enables the changed-field summary.
63
102
  * @throws {CleoError} `ExitCode.VERSION_CONFLICT` (LAFS `E_CONFLICT`) with
64
- * `details.expected` = the caller's version and `details.actual` = the
65
- * current version.
103
+ * {@link TaskConflictDetails} as `details`.
66
104
  * @example
67
105
  * ```ts
68
- * assertTaskVersion('T1', current, guard?.expectedUpdatedAt);
106
+ * assertTaskVersion('T1', current, guard?.expectedUpdatedAt, guard?.baseline);
69
107
  * ```
70
108
  */
71
- export declare function assertTaskVersion(taskId: string, current: TaskVersionSource, expectedUpdatedAt: string | undefined): void;
109
+ export declare function assertTaskVersion(taskId: string, current: Task | TaskVersionSource, expectedUpdatedAt: string | undefined, baseline?: Task): void;
72
110
  //# sourceMappingURL=task-version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-version.d.ts","sourceRoot":"","sources":["../../src/store/task-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAKH,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC7C,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAOR;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,EAC1B,iBAAiB,EAAE,MAAM,GAAG,SAAS,GACpC,IAAI,CAiBN"}
1
+ {"version":3,"file":"task-version.d.ts","sourceRoot":"","sources":["../../src/store/task-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAGH,OAAO,EAEL,KAAK,IAAI,EACT,KAAK,kBAAkB,EAExB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,yDAAyD;AACzD,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EAC7C,GAAG,CAAC,EAAE,MAAM,GACX,MAAM,CAOR;AA6BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,GAAG,kBAAkB,EAAE,CAclF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,IAAI,GAAG,iBAAiB,GAAG,IAAI,EACxC,QAAQ,CAAC,EAAE,IAAI,GACd,SAAS,CAkCX;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,IAAI,GAAG,iBAAiB,EACjC,iBAAiB,EAAE,MAAM,GAAG,SAAS,EACrC,QAAQ,CAAC,EAAE,IAAI,GACd,IAAI,CAIN"}
@@ -11,7 +11,13 @@
11
11
  * leave the row at a version a stale reader already holds (no ABA).
12
12
  * 2. The comparison ({@link assertTaskVersion}) runs after `BEGIN IMMEDIATE`
13
13
  * holds the database write lock, so no other process can commit between
14
- * the check and the write.
14
+ * the check and the write. The field-level chokepoint
15
+ * (`updateTaskFields`) additionally puts the version in the UPDATE's
16
+ * WHERE clause, so a guarded write is a single compare-and-set statement.
17
+ *
18
+ * A conflict is raised by {@link taskConflictError}: `E_CONFLICT` with the
19
+ * current version, the fields that differ from the caller's read, the stored
20
+ * values to merge against, and a `--if-match` retry hint.
15
21
  *
16
22
  * `withWriteRetry` only absorbs `SQLITE_BUSY`; it cannot detect a lost update.
17
23
  * These helpers are what turn a stale read-modify-write into a typed
@@ -20,7 +26,8 @@
20
26
  * @task T12503
21
27
  * @epic T12497
22
28
  */
23
- import { ExitCode } from '@cleocode/contracts';
29
+ import { isDeepStrictEqual } from 'node:util';
30
+ import { ExitCode, } from '@cleocode/contracts';
24
31
  import { CleoError } from '../errors.js';
25
32
  /**
26
33
  * Return the version of a task row: `updatedAt`, else `createdAt`, else `''`.
@@ -57,6 +64,104 @@ export function nextTaskVersion(current, now) {
57
64
  return candidate;
58
65
  return new Date(stored + 1).toISOString();
59
66
  }
67
+ /** Longest JSON summary of one field value carried on a conflict error. */
68
+ const CONFLICT_VALUE_MAX = 200;
69
+ /** Most entries of `current.labels` / `current.depends` carried on a conflict error. */
70
+ const CONFLICT_LIST_MAX = 50;
71
+ /** Cut a string to {@link CONFLICT_VALUE_MAX} characters, marking the cut. */
72
+ function truncate(text) {
73
+ return text.length <= CONFLICT_VALUE_MAX ? text : `${text.slice(0, CONFLICT_VALUE_MAX - 1)}…`;
74
+ }
75
+ /** Fields never reported as "changed": the version itself. */
76
+ const CONFLICT_IGNORED_FIELDS = new Set(['updatedAt']);
77
+ /** JSON of a field value for a conflict summary, truncated; `null` when absent. */
78
+ function summarizeValue(value) {
79
+ if (value === undefined || value === null)
80
+ return null;
81
+ const json = JSON.stringify(value);
82
+ if (json === undefined)
83
+ return null;
84
+ return truncate(json);
85
+ }
86
+ /** Narrow a version source to a full task row. */
87
+ function isFullTask(row) {
88
+ return 'id' in row && 'title' in row && 'status' in row;
89
+ }
90
+ /**
91
+ * List the fields whose stored value differs from the caller's read.
92
+ *
93
+ * The version field (`updatedAt`) is never listed; an absent field and an
94
+ * explicit `null` compare equal.
95
+ *
96
+ * @param baseline - The task as the caller read it.
97
+ * @param current - The task as stored now.
98
+ * @returns One entry per differing field, sorted by field name.
99
+ * @example
100
+ * ```ts
101
+ * diffTaskFields(before, after); // [{ field: 'labels', was: '["a"]', now: '["a","b"]' }]
102
+ * ```
103
+ */
104
+ export function diffTaskFields(baseline, current) {
105
+ // Values are heterogeneous task fields that are only compared and JSON-encoded.
106
+ const was = new Map(Object.entries(baseline));
107
+ const now = new Map(Object.entries(current));
108
+ const fields = [...new Set([...was.keys(), ...now.keys()])].sort();
109
+ const changes = [];
110
+ for (const field of fields) {
111
+ if (CONFLICT_IGNORED_FIELDS.has(field))
112
+ continue;
113
+ const before = was.get(field) ?? null;
114
+ const after = now.get(field) ?? null;
115
+ if (isDeepStrictEqual(before, after))
116
+ continue;
117
+ changes.push({ field, was: summarizeValue(before), now: summarizeValue(after) });
118
+ }
119
+ return changes;
120
+ }
121
+ /**
122
+ * Build the `E_CONFLICT` error for a stale task write.
123
+ *
124
+ * @param taskId - Task being written.
125
+ * @param expectedUpdatedAt - The version the caller expected.
126
+ * @param current - The row as stored now; a full task adds the merge summary.
127
+ * @param baseline - The task as the caller read it, when the write path has it.
128
+ * @returns A {@link CleoError} with `ExitCode.VERSION_CONFLICT` (LAFS
129
+ * `E_CONFLICT`), a fix hint, and {@link TaskConflictDetails} as `details`.
130
+ * @example
131
+ * ```ts
132
+ * throw taskConflictError('T1', expected, await accessor.loadSingleTask('T1'), baseline);
133
+ * ```
134
+ */
135
+ export function taskConflictError(taskId, expectedUpdatedAt, current, baseline) {
136
+ const currentVersion = taskVersion(current);
137
+ const full = current !== null && isFullTask(current) ? current : null;
138
+ const changes = full && baseline ? diffTaskFields(baseline, full) : [];
139
+ const details = {
140
+ field: 'updatedAt',
141
+ expected: expectedUpdatedAt,
142
+ actual: currentVersion,
143
+ currentVersion,
144
+ changedFields: changes.map((change) => change.field),
145
+ changes,
146
+ current: full
147
+ ? {
148
+ title: truncate(full.title),
149
+ status: full.status,
150
+ priority: full.priority,
151
+ labels: (full.labels ?? []).slice(0, CONFLICT_LIST_MAX),
152
+ labelsTotal: full.labels?.length ?? 0,
153
+ depends: (full.depends ?? []).slice(0, CONFLICT_LIST_MAX),
154
+ dependsTotal: full.depends?.length ?? 0,
155
+ parentId: full.parentId ?? null,
156
+ }
157
+ : null,
158
+ };
159
+ const changed = details.changedFields.length > 0 ? ` Changed: ${details.changedFields.join(', ')}.` : '';
160
+ return new CleoError(ExitCode.VERSION_CONFLICT, `Task ${taskId} changed since it was read (expected version ${expectedUpdatedAt}, current ${currentVersion}).${changed}`, {
161
+ fix: `Re-read the task (cleo show ${taskId}), merge your change onto it, then retry with --if-match ${currentVersion}`,
162
+ details: { ...details },
163
+ });
164
+ }
60
165
  /**
61
166
  * Throw `E_CONFLICT` when the caller's expected version no longer matches.
62
167
  *
@@ -66,28 +171,19 @@ export function nextTaskVersion(current, now) {
66
171
  * @param taskId - Task being written.
67
172
  * @param current - The row as read inside the write transaction.
68
173
  * @param expectedUpdatedAt - The version the caller read, if it supplied one.
174
+ * @param baseline - The task as the caller read it; enables the changed-field summary.
69
175
  * @throws {CleoError} `ExitCode.VERSION_CONFLICT` (LAFS `E_CONFLICT`) with
70
- * `details.expected` = the caller's version and `details.actual` = the
71
- * current version.
176
+ * {@link TaskConflictDetails} as `details`.
72
177
  * @example
73
178
  * ```ts
74
- * assertTaskVersion('T1', current, guard?.expectedUpdatedAt);
179
+ * assertTaskVersion('T1', current, guard?.expectedUpdatedAt, guard?.baseline);
75
180
  * ```
76
181
  */
77
- export function assertTaskVersion(taskId, current, expectedUpdatedAt) {
182
+ export function assertTaskVersion(taskId, current, expectedUpdatedAt, baseline) {
78
183
  if (expectedUpdatedAt === undefined)
79
184
  return;
80
- const currentVersion = taskVersion(current);
81
- if (currentVersion === expectedUpdatedAt)
185
+ if (taskVersion(current) === expectedUpdatedAt)
82
186
  return;
83
- throw new CleoError(ExitCode.VERSION_CONFLICT, `Task ${taskId} changed since it was read (expected version ${expectedUpdatedAt}, current ${currentVersion})`, {
84
- fix: `Re-read the task (cleo show ${taskId}) and retry with --expected-updated-at ${currentVersion}`,
85
- details: {
86
- field: 'updatedAt',
87
- expected: expectedUpdatedAt,
88
- actual: currentVersion,
89
- currentVersion,
90
- },
91
- });
187
+ throw taskConflictError(taskId, expectedUpdatedAt, current, baseline);
92
188
  }
93
189
  //# sourceMappingURL=task-version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"task-version.js","sourceRoot":"","sources":["../../src/store/task-version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAUzC;;;;;;;;;GASG;AACH,MAAM,UAAU,WAAW,CAAC,GAAyC;IACnE,OAAO,GAAG,EAAE,SAAS,IAAI,GAAG,EAAE,SAAS,IAAI,EAAE,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,eAAe,CAC7B,OAA6C,EAC7C,GAAY;IAEZ,MAAM,SAAS,GAAG,GAAG,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,MAAM;QAAE,OAAO,SAAS,CAAC;IAC3D,OAAO,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAc,EACd,OAA0B,EAC1B,iBAAqC;IAErC,IAAI,iBAAiB,KAAK,SAAS;QAAE,OAAO;IAC5C,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,cAAc,KAAK,iBAAiB;QAAE,OAAO;IACjD,MAAM,IAAI,SAAS,CACjB,QAAQ,CAAC,gBAAgB,EACzB,QAAQ,MAAM,gDAAgD,iBAAiB,aAAa,cAAc,GAAG,EAC7G;QACE,GAAG,EAAE,+BAA+B,MAAM,0CAA0C,cAAc,EAAE;QACpG,OAAO,EAAE;YACP,KAAK,EAAE,WAAW;YAClB,QAAQ,EAAE,iBAAiB;YAC3B,MAAM,EAAE,cAAc;YACtB,cAAc;SACf;KACF,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"task-version.js","sourceRoot":"","sources":["../../src/store/task-version.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export { AGENT_INSTANCE_STATUSES, AGENT_TYPES, agentErrorLog, agentInstances, }
17
17
  export type { NewWarpChainInstanceRow, NewWarpChainRow, WarpChainInstanceRow, WarpChainRow, } from './schema/chain-schema.js';
18
18
  export { warpChainInstances, warpChains } from './schema/chain-schema.js';
19
19
  export { tasksSchemaMeta as schemaMeta } from './schema/cleo-project/audit.js';
20
+ export type { DocsAttachmentRefRow as AttachmentRefRow, DocsAttachmentRow as AttachmentRow, NewDocsAttachmentRefRow as NewAttachmentRefRow, NewDocsAttachmentRow as NewAttachmentRow, } from './schema/cleo-project/docs.js';
21
+ export { docsAttachmentRefs as attachmentRefs, docsAttachments as attachments, } from './schema/cleo-project/docs.js';
20
22
  export type { NewTasksLifecycleEvidenceRow as NewLifecycleEvidenceRow, NewTasksLifecycleGateResultRow as NewLifecycleGateResultRow, NewTasksLifecyclePipelineRow as NewLifecyclePipelineRow, NewTasksLifecycleStageRow as NewLifecycleStageRow, NewTasksLifecycleTransitionRow as NewLifecycleTransitionRow, TasksLifecycleEvidenceRow as LifecycleEvidenceRow, TasksLifecycleGateResultRow as LifecycleGateResultRow, TasksLifecyclePipelineRow as LifecyclePipelineRow, TasksLifecycleStageRow as LifecycleStageRow, TasksLifecycleTransitionRow as LifecycleTransitionRow, } from './schema/cleo-project/lifecycle.js';
21
23
  export { tasksLifecycleEvidence as lifecycleEvidence, tasksLifecycleGateResults as lifecycleGateResults, tasksLifecyclePipelines as lifecyclePipelines, tasksLifecycleStages as lifecycleStages, tasksLifecycleTransitions as lifecycleTransitions, } from './schema/cleo-project/lifecycle.js';
22
24
  export { tasksCommitFiles as commitFiles, tasksCommits as commits, tasksTaskCommits as taskCommits, } from './schema/cleo-project/provenance-commits.js';
@@ -1 +1 @@
1
- {"version":3,"file":"tasks-schema.d.ts","sourceRoot":"","sources":["../../src/store/tasks-schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tasks-schema.d.ts","sourceRoot":"","sources":["../../src/store/tasks-schema.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@ export { warpChainInstances, warpChains } from './schema/chain-schema.js';
29
29
  // twin (key-aware, atomic) at every open, before any read: the initial
30
30
  // collapse, then whatever an older build wrote to the bare table since.
31
31
  export { tasksSchemaMeta as schemaMeta } from './schema/cleo-project/audit.js';
32
+ export { docsAttachmentRefs as attachmentRefs, docsAttachments as attachments, } from './schema/cleo-project/docs.js';
32
33
  // COMPLETE-CUTOVER (T12017 · gh#1107) — lifecycle domain → PREFIXED tables.
33
34
  //
34
35
  // Completes the satellite-rebind deferred at the top of this file. The bare