@cleocode/core 2026.10.3 → 2026.10.5-rc.ci.672

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 (1373) hide show
  1. package/dist/bootstrap.d.ts.map +1 -1
  2. package/dist/bootstrap.js +7 -37
  3. package/dist/bootstrap.js.map +1 -1
  4. package/dist/build-provenance.json +2 -2
  5. package/dist/caamp/adapter.d.ts.map +1 -1
  6. package/dist/caamp/adapter.js +5 -2
  7. package/dist/caamp/adapter.js.map +1 -1
  8. package/dist/changesets/parse-frontmatter.d.ts +1 -1
  9. package/dist/changesets/parse-frontmatter.d.ts.map +1 -1
  10. package/dist/changesets/parse-frontmatter.js +2 -1
  11. package/dist/changesets/parse-frontmatter.js.map +1 -1
  12. package/dist/changesets/parser.d.ts +1 -1
  13. package/dist/changesets/parser.d.ts.map +1 -1
  14. package/dist/changesets/parser.js +2 -1
  15. package/dist/changesets/parser.js.map +1 -1
  16. package/dist/changesets/writer.d.ts +8 -1
  17. package/dist/changesets/writer.d.ts.map +1 -1
  18. package/dist/changesets/writer.js +56 -5
  19. package/dist/changesets/writer.js.map +1 -1
  20. package/dist/cloud/keys.d.ts +9 -0
  21. package/dist/cloud/keys.d.ts.map +1 -1
  22. package/dist/cloud/keys.js +11 -0
  23. package/dist/cloud/keys.js.map +1 -1
  24. package/dist/cloud/nexus-attach.d.ts +17 -0
  25. package/dist/cloud/nexus-attach.d.ts.map +1 -1
  26. package/dist/cloud/nexus-attach.js +30 -9
  27. package/dist/cloud/nexus-attach.js.map +1 -1
  28. package/dist/cloud/nexus-auth.d.ts +7 -1
  29. package/dist/cloud/nexus-auth.d.ts.map +1 -1
  30. package/dist/cloud/nexus-auth.js +7 -1
  31. package/dist/cloud/nexus-auth.js.map +1 -1
  32. package/dist/cloud/nexus-cloud-activity.d.ts.map +1 -1
  33. package/dist/cloud/nexus-cloud-activity.js +2 -1
  34. package/dist/cloud/nexus-cloud-activity.js.map +1 -1
  35. package/dist/cloud/nexus-cloud-conflicts.d.ts +48 -0
  36. package/dist/cloud/nexus-cloud-conflicts.d.ts.map +1 -0
  37. package/dist/cloud/nexus-cloud-conflicts.js +68 -0
  38. package/dist/cloud/nexus-cloud-conflicts.js.map +1 -0
  39. package/dist/cloud/nexus-cloud-status.d.ts +42 -6
  40. package/dist/cloud/nexus-cloud-status.d.ts.map +1 -1
  41. package/dist/cloud/nexus-cloud-status.js +233 -19
  42. package/dist/cloud/nexus-cloud-status.js.map +1 -1
  43. package/dist/cloud/nexus-cloud.d.ts +18 -1
  44. package/dist/cloud/nexus-cloud.d.ts.map +1 -1
  45. package/dist/cloud/nexus-cloud.js +56 -2
  46. package/dist/cloud/nexus-cloud.js.map +1 -1
  47. package/dist/cloud/nexus-credentials.d.ts +1 -1
  48. package/dist/cloud/nexus-credentials.d.ts.map +1 -1
  49. package/dist/cloud/nexus-credentials.js +1 -1
  50. package/dist/cloud/nexus-credentials.js.map +1 -1
  51. package/dist/cloud/nexus-enrol.d.ts +10 -1
  52. package/dist/cloud/nexus-enrol.d.ts.map +1 -1
  53. package/dist/cloud/nexus-enrol.js +47 -3
  54. package/dist/cloud/nexus-enrol.js.map +1 -1
  55. package/dist/cloud/nexus-first-run.d.ts +146 -0
  56. package/dist/cloud/nexus-first-run.d.ts.map +1 -0
  57. package/dist/cloud/nexus-first-run.js +358 -0
  58. package/dist/cloud/nexus-first-run.js.map +1 -0
  59. package/dist/cloud/nexus-link.d.ts +35 -4
  60. package/dist/cloud/nexus-link.d.ts.map +1 -1
  61. package/dist/cloud/nexus-link.js +172 -7
  62. package/dist/cloud/nexus-link.js.map +1 -1
  63. package/dist/cloud/nexus-presence-refresh.d.ts +65 -0
  64. package/dist/cloud/nexus-presence-refresh.d.ts.map +1 -0
  65. package/dist/cloud/nexus-presence-refresh.js +122 -0
  66. package/dist/cloud/nexus-presence-refresh.js.map +1 -0
  67. package/dist/cloud/nexus-project-history.d.ts +54 -0
  68. package/dist/cloud/nexus-project-history.d.ts.map +1 -0
  69. package/dist/cloud/nexus-project-history.js +108 -0
  70. package/dist/cloud/nexus-project-history.js.map +1 -0
  71. package/dist/cloud/nexus-project-names.d.ts +173 -0
  72. package/dist/cloud/nexus-project-names.d.ts.map +1 -0
  73. package/dist/cloud/nexus-project-names.js +314 -0
  74. package/dist/cloud/nexus-project-names.js.map +1 -0
  75. package/dist/cloud/nexus-vault-keys.d.ts +33 -2
  76. package/dist/cloud/nexus-vault-keys.d.ts.map +1 -1
  77. package/dist/cloud/nexus-vault-keys.js +144 -18
  78. package/dist/cloud/nexus-vault-keys.js.map +1 -1
  79. package/dist/cloud/nexus-vault.d.ts +7 -3
  80. package/dist/cloud/nexus-vault.d.ts.map +1 -1
  81. package/dist/cloud/nexus-vault.js +176 -29
  82. package/dist/cloud/nexus-vault.js.map +1 -1
  83. package/dist/cloud/presence.d.ts +1 -1
  84. package/dist/cloud/presence.d.ts.map +1 -1
  85. package/dist/cloud/presence.js +1 -1
  86. package/dist/cloud/presence.js.map +1 -1
  87. package/dist/cloud/projects.d.ts +7 -4
  88. package/dist/cloud/projects.d.ts.map +1 -1
  89. package/dist/cloud/projects.js +10 -1
  90. package/dist/cloud/projects.js.map +1 -1
  91. package/dist/cloud/signing.d.ts +14 -0
  92. package/dist/cloud/signing.d.ts.map +1 -1
  93. package/dist/cloud/signing.js +9 -0
  94. package/dist/cloud/signing.js.map +1 -1
  95. package/dist/conduit/cloud-endpoint.d.ts +96 -0
  96. package/dist/conduit/cloud-endpoint.d.ts.map +1 -0
  97. package/dist/conduit/cloud-endpoint.js +191 -0
  98. package/dist/conduit/cloud-endpoint.js.map +1 -0
  99. package/dist/conduit/conduit-client.d.ts.map +1 -1
  100. package/dist/conduit/conduit-client.js +2 -1
  101. package/dist/conduit/conduit-client.js.map +1 -1
  102. package/dist/conduit/factory.d.ts +4 -0
  103. package/dist/conduit/factory.d.ts.map +1 -1
  104. package/dist/conduit/factory.js +7 -1
  105. package/dist/conduit/factory.js.map +1 -1
  106. package/dist/conduit/http-transport.d.ts +12 -7
  107. package/dist/conduit/http-transport.d.ts.map +1 -1
  108. package/dist/conduit/http-transport.js +18 -11
  109. package/dist/conduit/http-transport.js.map +1 -1
  110. package/dist/conduit/index.d.ts +3 -1
  111. package/dist/conduit/index.d.ts.map +1 -1
  112. package/dist/conduit/index.js +3 -1
  113. package/dist/conduit/index.js.map +1 -1
  114. package/dist/conduit/sse-transport.d.ts +5 -1
  115. package/dist/conduit/sse-transport.d.ts.map +1 -1
  116. package/dist/conduit/sse-transport.js +10 -2
  117. package/dist/conduit/sse-transport.js.map +1 -1
  118. package/dist/config/registry.js +1 -1
  119. package/dist/config/registry.js.map +1 -1
  120. package/dist/core-paths.d.ts +13 -0
  121. package/dist/core-paths.d.ts.map +1 -0
  122. package/dist/core-paths.js +13 -0
  123. package/dist/core-paths.js.map +1 -0
  124. package/dist/decide/bench/source.js +1 -1
  125. package/dist/decide/bench/source.js.map +1 -1
  126. package/dist/decide/client.d.ts +1 -1
  127. package/dist/decide/client.d.ts.map +1 -1
  128. package/dist/decide/client.js +1 -1
  129. package/dist/decide/client.js.map +1 -1
  130. package/dist/decide/credentials.d.ts +1 -1
  131. package/dist/decide/credentials.d.ts.map +1 -1
  132. package/dist/decide/credentials.js +1 -1
  133. package/dist/decide/credentials.js.map +1 -1
  134. package/dist/decide/jev-wire.d.ts +1 -1
  135. package/dist/decide/jev-wire.d.ts.map +1 -1
  136. package/dist/decide/jev-wire.js +1 -1
  137. package/dist/decide/jev-wire.js.map +1 -1
  138. package/dist/decide/operations.d.ts +1 -1
  139. package/dist/decide/operations.d.ts.map +1 -1
  140. package/dist/decide/operations.js +1 -1
  141. package/dist/decide/operations.js.map +1 -1
  142. package/dist/decide/providers.d.ts +1 -1
  143. package/dist/decide/providers.d.ts.map +1 -1
  144. package/dist/decide/providers.js +1 -1
  145. package/dist/decide/providers.js.map +1 -1
  146. package/dist/decide/wizard.d.ts.map +1 -1
  147. package/dist/decide/wizard.js +1 -1
  148. package/dist/decide/wizard.js.map +1 -1
  149. package/dist/dispatch/config-domain-handler.d.ts +1 -1
  150. package/dist/dispatch/config-domain-handler.d.ts.map +1 -1
  151. package/dist/dispatch/config-domain-handler.js +1 -1
  152. package/dist/dispatch/config-domain-handler.js.map +1 -1
  153. package/dist/dispatch/contracts/derive-output-contract.d.ts +1 -1
  154. package/dist/dispatch/contracts/derive-output-contract.d.ts.map +1 -1
  155. package/dist/dispatch/contracts/derive-output-contract.js +2 -1
  156. package/dist/dispatch/contracts/derive-output-contract.js.map +1 -1
  157. package/dist/dispatch/contracts/ensures-schema.d.ts +1 -1
  158. package/dist/dispatch/contracts/ensures-schema.d.ts.map +1 -1
  159. package/dist/dispatch/contracts/ensures-schema.js +1 -1
  160. package/dist/dispatch/contracts/ensures-schema.js.map +1 -1
  161. package/dist/dispatch/contracts/input-contracts.d.ts +1 -1
  162. package/dist/dispatch/contracts/input-contracts.d.ts.map +1 -1
  163. package/dist/dispatch/contracts/input-contracts.js +3 -1
  164. package/dist/dispatch/contracts/input-contracts.js.map +1 -1
  165. package/dist/dispatch/contracts/output-contracts.d.ts +2 -1
  166. package/dist/dispatch/contracts/output-contracts.d.ts.map +1 -1
  167. package/dist/dispatch/contracts/output-contracts.js +1 -1
  168. package/dist/dispatch/contracts/output-contracts.js.map +1 -1
  169. package/dist/dispatch/describe-operation.d.ts +1 -1
  170. package/dist/dispatch/describe-operation.d.ts.map +1 -1
  171. package/dist/dispatch/describe-operation.js +1 -1
  172. package/dist/dispatch/describe-operation.js.map +1 -1
  173. package/dist/dispatch/mvi-projection.d.ts +1 -1
  174. package/dist/dispatch/mvi-projection.d.ts.map +1 -1
  175. package/dist/dispatch/mvi-projection.js +1 -1
  176. package/dist/dispatch/mvi-projection.js.map +1 -1
  177. package/dist/docs/display-alias.js +1 -1
  178. package/dist/docs/display-alias.js.map +1 -1
  179. package/dist/docs/docs-update.d.ts +1 -1
  180. package/dist/docs/docs-update.d.ts.map +1 -1
  181. package/dist/docs/docs-update.js +2 -1
  182. package/dist/docs/docs-update.js.map +1 -1
  183. package/dist/docs/export-document.js +14 -58410
  184. package/dist/docs/export-document.js.map +3 -3
  185. package/dist/docs/publish-pr.js +1 -1
  186. package/dist/docs/publish-pr.js.map +1 -1
  187. package/dist/docs/supersede.js +1 -1
  188. package/dist/docs/supersede.js.map +1 -1
  189. package/dist/docs/validate-body.d.ts +1 -1
  190. package/dist/docs/validate-body.d.ts.map +1 -1
  191. package/dist/docs/validate-body.js +1 -1
  192. package/dist/docs/validate-body.js.map +1 -1
  193. package/dist/docs/writer-registry.js +1 -1
  194. package/dist/docs/writer-registry.js.map +1 -1
  195. package/dist/doctor/acceptance-drift.js +1 -1
  196. package/dist/doctor/acceptance-drift.js.map +1 -1
  197. package/dist/doctor/db-substrate.d.ts +7 -10
  198. package/dist/doctor/db-substrate.d.ts.map +1 -1
  199. package/dist/doctor/db-substrate.js +11 -15
  200. package/dist/doctor/db-substrate.js.map +1 -1
  201. package/dist/doctor/invariant-audit.js +1 -1
  202. package/dist/doctor/invariant-audit.js.map +1 -1
  203. package/dist/doctor/malformed-task-ids.js +1 -1
  204. package/dist/doctor/malformed-task-ids.js.map +1 -1
  205. package/dist/doctor/migrations.d.ts +18 -0
  206. package/dist/doctor/migrations.d.ts.map +1 -1
  207. package/dist/doctor/migrations.js +54 -2
  208. package/dist/doctor/migrations.js.map +1 -1
  209. package/dist/doctor/row-identity-refill.d.ts +43 -0
  210. package/dist/doctor/row-identity-refill.d.ts.map +1 -0
  211. package/dist/doctor/row-identity-refill.js +186 -0
  212. package/dist/doctor/row-identity-refill.js.map +1 -0
  213. package/dist/doctor/superseded-store.d.ts.map +1 -1
  214. package/dist/doctor/superseded-store.js +51 -2
  215. package/dist/doctor/superseded-store.js.map +1 -1
  216. package/dist/doctor/sync-repair.d.ts +39 -0
  217. package/dist/doctor/sync-repair.d.ts.map +1 -0
  218. package/dist/doctor/sync-repair.js +71 -0
  219. package/dist/doctor/sync-repair.js.map +1 -0
  220. package/dist/doctor/sync-triggers.d.ts +63 -4
  221. package/dist/doctor/sync-triggers.d.ts.map +1 -1
  222. package/dist/doctor/sync-triggers.js +352 -9
  223. package/dist/doctor/sync-triggers.js.map +1 -1
  224. package/dist/doctor/twin-collapse.js +1 -1
  225. package/dist/doctor/twin-collapse.js.map +1 -1
  226. package/dist/engine/engine-ops.d.ts.map +1 -1
  227. package/dist/engine/engine-ops.js +7 -1
  228. package/dist/engine/engine-ops.js.map +1 -1
  229. package/dist/engine-result.d.ts +1 -1
  230. package/dist/engine-result.d.ts.map +1 -1
  231. package/dist/engine-result.js +1 -1
  232. package/dist/engine-result.js.map +1 -1
  233. package/dist/error-catalog.js +1 -1
  234. package/dist/error-catalog.js.map +1 -1
  235. package/dist/error-registry.d.ts +1 -1
  236. package/dist/error-registry.d.ts.map +1 -1
  237. package/dist/error-registry.js +1 -1
  238. package/dist/error-registry.js.map +1 -1
  239. package/dist/errors-to-engine.d.ts +20 -0
  240. package/dist/errors-to-engine.d.ts.map +1 -1
  241. package/dist/errors-to-engine.js +37 -0
  242. package/dist/errors-to-engine.js.map +1 -1
  243. package/dist/errors.d.ts +1 -1
  244. package/dist/errors.d.ts.map +1 -1
  245. package/dist/errors.js +1 -1
  246. package/dist/errors.js.map +1 -1
  247. package/dist/gc/janitor.d.ts +23 -4
  248. package/dist/gc/janitor.d.ts.map +1 -1
  249. package/dist/gc/janitor.js +71 -11
  250. package/dist/gc/janitor.js.map +1 -1
  251. package/dist/goal/continuation.d.ts +1 -1
  252. package/dist/goal/continuation.d.ts.map +1 -1
  253. package/dist/goal/continuation.js +1 -1
  254. package/dist/goal/continuation.js.map +1 -1
  255. package/dist/goal/judge.d.ts.map +1 -1
  256. package/dist/goal/judge.js +2 -1
  257. package/dist/goal/judge.js.map +1 -1
  258. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  259. package/dist/hooks/handlers/session-hooks.js +1 -1
  260. package/dist/hooks/handlers/session-hooks.js.map +1 -1
  261. package/dist/init/engine-ops.js +1 -1
  262. package/dist/init/engine-ops.js.map +1 -1
  263. package/dist/init.d.ts.map +1 -1
  264. package/dist/init.js +22 -37
  265. package/dist/init.js.map +1 -1
  266. package/dist/inject/index.js +1 -1
  267. package/dist/inject/index.js.map +1 -1
  268. package/dist/injection.d.ts.map +1 -1
  269. package/dist/injection.js +13 -0
  270. package/dist/injection.js.map +1 -1
  271. package/dist/internal.d.ts +4 -3
  272. package/dist/internal.d.ts.map +1 -1
  273. package/dist/internal.js +7 -4
  274. package/dist/internal.js.map +1 -1
  275. package/dist/issue/create.js +1 -1
  276. package/dist/issue/create.js.map +1 -1
  277. package/dist/json-schema-validator.js +1 -1
  278. package/dist/json-schema-validator.js.map +1 -1
  279. package/dist/lifecycle/index.d.ts +2 -23
  280. package/dist/lifecycle/index.d.ts.map +1 -1
  281. package/dist/lifecycle/index.js +5 -112
  282. package/dist/lifecycle/index.js.map +1 -1
  283. package/dist/lifecycle/kind-requirements.d.ts +1 -1
  284. package/dist/lifecycle/kind-requirements.d.ts.map +1 -1
  285. package/dist/lifecycle/kind-requirements.js +1 -1
  286. package/dist/lifecycle/kind-requirements.js.map +1 -1
  287. package/dist/lifecycle/pipeline.js +1 -1
  288. package/dist/lifecycle/pipeline.js.map +1 -1
  289. package/dist/lifecycle/resume.js +2 -2
  290. package/dist/lifecycle/resume.js.map +1 -1
  291. package/dist/lifecycle/state-machine.js +1 -1
  292. package/dist/lifecycle/state-machine.js.map +1 -1
  293. package/dist/lifecycle/status.d.ts +46 -0
  294. package/dist/lifecycle/status.d.ts.map +1 -0
  295. package/dist/lifecycle/status.js +147 -0
  296. package/dist/lifecycle/status.js.map +1 -0
  297. package/dist/lifecycle/verification/satisfies-validator.js +1 -1
  298. package/dist/lifecycle/verification/satisfies-validator.js.map +1 -1
  299. package/dist/llm/catalog-seeder.d.ts +1 -1
  300. package/dist/llm/catalog-seeder.d.ts.map +1 -1
  301. package/dist/llm/catalog-seeder.js +1 -1
  302. package/dist/llm/catalog-seeder.js.map +1 -1
  303. package/dist/llm/cli-ops.d.ts +1 -2
  304. package/dist/llm/cli-ops.d.ts.map +1 -1
  305. package/dist/llm/cli-ops.js +2 -1
  306. package/dist/llm/cli-ops.js.map +1 -1
  307. package/dist/llm/conversation.d.ts.map +1 -1
  308. package/dist/llm/conversation.js +15 -4
  309. package/dist/llm/conversation.js.map +1 -1
  310. package/dist/llm/credential-seeders/claude-code-seeder.js +1 -1
  311. package/dist/llm/credential-seeders/claude-code-seeder.js.map +1 -1
  312. package/dist/llm/credential-seeders/cleo-pkce-seeder.js +1 -1
  313. package/dist/llm/credential-seeders/cleo-pkce-seeder.js.map +1 -1
  314. package/dist/llm/credential-writeback.js +1 -1
  315. package/dist/llm/credential-writeback.js.map +1 -1
  316. package/dist/llm/entity-ops.d.ts +1 -1
  317. package/dist/llm/entity-ops.d.ts.map +1 -1
  318. package/dist/llm/entity-ops.js +2 -1
  319. package/dist/llm/entity-ops.js.map +1 -1
  320. package/dist/llm/llm-queue-admit.d.ts +1 -1
  321. package/dist/llm/llm-queue-admit.d.ts.map +1 -1
  322. package/dist/llm/llm-queue-admit.js +2 -1
  323. package/dist/llm/llm-queue-admit.js.map +1 -1
  324. package/dist/llm/onboarding/login-engine.js +1 -1
  325. package/dist/llm/onboarding/login-engine.js.map +1 -1
  326. package/dist/llm/pi/pi-errors.d.ts +1 -1
  327. package/dist/llm/pi/pi-errors.d.ts.map +1 -1
  328. package/dist/llm/pi/pi-errors.js +1 -1
  329. package/dist/llm/pi/pi-errors.js.map +1 -1
  330. package/dist/llm/plugin-facade.d.ts.map +1 -1
  331. package/dist/llm/plugin-facade.js +14 -93651
  332. package/dist/llm/plugin-facade.js.map +3 -3
  333. package/dist/llm/system-key.d.ts +1 -1
  334. package/dist/llm/system-key.d.ts.map +1 -1
  335. package/dist/llm/system-key.js +1 -1
  336. package/dist/llm/system-key.js.map +1 -1
  337. package/dist/llm/system-of-use-registry.d.ts +1 -1
  338. package/dist/llm/system-of-use-registry.d.ts.map +1 -1
  339. package/dist/llm/system-of-use-registry.js +1 -1
  340. package/dist/llm/system-of-use-registry.js.map +1 -1
  341. package/dist/llm/system-resolver.js +1 -1
  342. package/dist/llm/system-resolver.js.map +1 -1
  343. package/dist/llm/transports/bedrock.d.ts +1 -0
  344. package/dist/llm/transports/bedrock.d.ts.map +1 -1
  345. package/dist/llm/transports/bedrock.js +30 -12
  346. package/dist/llm/transports/bedrock.js.map +1 -1
  347. package/dist/memory/brain-host.d.ts +71 -0
  348. package/dist/memory/brain-host.d.ts.map +1 -0
  349. package/dist/memory/brain-host.js +84 -0
  350. package/dist/memory/brain-host.js.map +1 -0
  351. package/dist/memory/brain-writer-handlers.d.ts.map +1 -1
  352. package/dist/memory/brain-writer-handlers.js +24 -7
  353. package/dist/memory/brain-writer-handlers.js.map +1 -1
  354. package/dist/memory/brain-writer-thread.d.ts +66 -6
  355. package/dist/memory/brain-writer-thread.d.ts.map +1 -1
  356. package/dist/memory/brain-writer-thread.js +67 -10
  357. package/dist/memory/brain-writer-thread.js.map +1 -1
  358. package/dist/memory/brain-writer-worker.js +7 -0
  359. package/dist/memory/brain-writer-worker.js.map +1 -1
  360. package/dist/memory/decision-contradiction.d.ts.map +1 -1
  361. package/dist/memory/decision-contradiction.js +10 -5
  362. package/dist/memory/decision-contradiction.js.map +1 -1
  363. package/dist/memory/decisions.js +2 -1
  364. package/dist/memory/decisions.js.map +1 -1
  365. package/dist/memory/dialectic-evaluator.d.ts.map +1 -1
  366. package/dist/memory/dialectic-evaluator.js +4 -1
  367. package/dist/memory/dialectic-evaluator.js.map +1 -1
  368. package/dist/memory/embedding-backfill.d.ts +70 -0
  369. package/dist/memory/embedding-backfill.d.ts.map +1 -0
  370. package/dist/memory/embedding-backfill.js +110 -0
  371. package/dist/memory/embedding-backfill.js.map +1 -0
  372. package/dist/memory/index.js +1 -1
  373. package/dist/memory/index.js.map +1 -1
  374. package/dist/memory/manifest-identity.js +1 -1
  375. package/dist/memory/manifest-identity.js.map +1 -1
  376. package/dist/memory/retrieval/observe.d.ts +23 -0
  377. package/dist/memory/retrieval/observe.d.ts.map +1 -1
  378. package/dist/memory/retrieval/observe.js +82 -36
  379. package/dist/memory/retrieval/observe.js.map +1 -1
  380. package/dist/memory/transcript-extractor.d.ts.map +1 -1
  381. package/dist/memory/transcript-extractor.js +3 -2
  382. package/dist/memory/transcript-extractor.js.map +1 -1
  383. package/dist/metrics/model-provider-registry.d.ts.map +1 -1
  384. package/dist/metrics/model-provider-registry.js +6 -0
  385. package/dist/metrics/model-provider-registry.js.map +1 -1
  386. package/dist/metrics/token-service.d.ts +33 -0
  387. package/dist/metrics/token-service.d.ts.map +1 -1
  388. package/dist/metrics/token-service.js +35 -0
  389. package/dist/metrics/token-service.js.map +1 -1
  390. package/dist/migration/index.js +1 -1
  391. package/dist/migration/index.js.map +1 -1
  392. package/dist/migration/manual/T10165-backfill-adr-index.js +1 -1
  393. package/dist/migration/manual/T10165-backfill-adr-index.js.map +1 -1
  394. package/dist/nexus/api-contracts.d.ts.map +1 -1
  395. package/dist/nexus/api-contracts.js +27 -11
  396. package/dist/nexus/api-contracts.js.map +1 -1
  397. package/dist/nexus/api-extractors/http-extractor.d.ts +2 -2
  398. package/dist/nexus/api-extractors/http-extractor.d.ts.map +1 -1
  399. package/dist/nexus/api-extractors/http-extractor.js +3 -3
  400. package/dist/nexus/api-extractors/http-extractor.js.map +1 -1
  401. package/dist/nexus/assessment-projection.d.ts +1 -1
  402. package/dist/nexus/assessment-projection.d.ts.map +1 -1
  403. package/dist/nexus/assessment-projection.js +1 -1
  404. package/dist/nexus/assessment-projection.js.map +1 -1
  405. package/dist/nexus/clusters.js +1 -1
  406. package/dist/nexus/clusters.js.map +1 -1
  407. package/dist/nexus/deps.d.ts +1 -1
  408. package/dist/nexus/deps.d.ts.map +1 -1
  409. package/dist/nexus/deps.js +1 -1
  410. package/dist/nexus/deps.js.map +1 -1
  411. package/dist/nexus/diff.d.ts +1 -1
  412. package/dist/nexus/diff.d.ts.map +1 -1
  413. package/dist/nexus/diff.js +3 -2
  414. package/dist/nexus/diff.js.map +1 -1
  415. package/dist/nexus/fleet-status.d.ts +1 -1
  416. package/dist/nexus/fleet-status.d.ts.map +1 -1
  417. package/dist/nexus/fleet-status.js +1 -1
  418. package/dist/nexus/fleet-status.js.map +1 -1
  419. package/dist/nexus/flows.js +1 -1
  420. package/dist/nexus/flows.js.map +1 -1
  421. package/dist/nexus/identity.d.ts +8 -0
  422. package/dist/nexus/identity.d.ts.map +1 -1
  423. package/dist/nexus/identity.js +17 -1
  424. package/dist/nexus/identity.js.map +1 -1
  425. package/dist/nexus/index.d.ts +1 -1
  426. package/dist/nexus/index.d.ts.map +1 -1
  427. package/dist/nexus/index.js +2 -2
  428. package/dist/nexus/index.js.map +1 -1
  429. package/dist/nexus/nexus-bridge.d.ts.map +1 -1
  430. package/dist/nexus/nexus-bridge.js +5 -5
  431. package/dist/nexus/nexus-bridge.js.map +1 -1
  432. package/dist/nexus/permissions.d.ts +1 -1
  433. package/dist/nexus/permissions.d.ts.map +1 -1
  434. package/dist/nexus/permissions.js +1 -1
  435. package/dist/nexus/permissions.js.map +1 -1
  436. package/dist/nexus/query-dsl.js +1 -1
  437. package/dist/nexus/query-dsl.js.map +1 -1
  438. package/dist/nexus/query.d.ts +1 -2
  439. package/dist/nexus/query.d.ts.map +1 -1
  440. package/dist/nexus/query.js +1 -1
  441. package/dist/nexus/query.js.map +1 -1
  442. package/dist/nexus/registry-errors.js +1 -1
  443. package/dist/nexus/registry-errors.js.map +1 -1
  444. package/dist/nexus/registry.d.ts +23 -1
  445. package/dist/nexus/registry.d.ts.map +1 -1
  446. package/dist/nexus/registry.js +77 -2
  447. package/dist/nexus/registry.js.map +1 -1
  448. package/dist/nexus/workspace.js +1 -1
  449. package/dist/nexus/workspace.js.map +1 -1
  450. package/dist/orchestrate/pivot.d.ts.map +1 -1
  451. package/dist/orchestrate/pivot.js +2 -1
  452. package/dist/orchestrate/pivot.js.map +1 -1
  453. package/dist/orchestrate/query-ops.js +1 -1
  454. package/dist/orchestrate/query-ops.js.map +1 -1
  455. package/dist/orchestrate/spawn-ops.js +1 -1
  456. package/dist/orchestrate/spawn-ops.js.map +1 -1
  457. package/dist/orchestration/atomicity.d.ts +1 -1
  458. package/dist/orchestration/atomicity.d.ts.map +1 -1
  459. package/dist/orchestration/atomicity.js +1 -1
  460. package/dist/orchestration/atomicity.js.map +1 -1
  461. package/dist/orchestration/classify.js +1 -1
  462. package/dist/orchestration/classify.js.map +1 -1
  463. package/dist/orchestration/index.js +1 -1
  464. package/dist/orchestration/index.js.map +1 -1
  465. package/dist/orchestration/parallel.js +1 -1
  466. package/dist/orchestration/parallel.js.map +1 -1
  467. package/dist/orchestration/protocol-validators.d.ts +1 -1
  468. package/dist/orchestration/protocol-validators.d.ts.map +1 -1
  469. package/dist/orchestration/protocol-validators.js +1 -1
  470. package/dist/orchestration/protocol-validators.js.map +1 -1
  471. package/dist/orchestration/skill-ops.js +1 -1
  472. package/dist/orchestration/skill-ops.js.map +1 -1
  473. package/dist/orchestration/spawn-prompt.d.ts +9 -0
  474. package/dist/orchestration/spawn-prompt.d.ts.map +1 -1
  475. package/dist/orchestration/spawn-prompt.js +13 -2
  476. package/dist/orchestration/spawn-prompt.js.map +1 -1
  477. package/dist/orchestration/spawn.js +1 -1
  478. package/dist/orchestration/spawn.js.map +1 -1
  479. package/dist/paths.d.ts +3 -1
  480. package/dist/paths.d.ts.map +1 -1
  481. package/dist/paths.js +4 -2
  482. package/dist/paths.js.map +1 -1
  483. package/dist/phases/deps.js +1 -1
  484. package/dist/phases/deps.js.map +1 -1
  485. package/dist/phases/index.js +1 -1
  486. package/dist/phases/index.js.map +1 -1
  487. package/dist/project-lifecycle.js +3 -3
  488. package/dist/project-lifecycle.js.map +1 -1
  489. package/dist/project-scope.js +1 -1
  490. package/dist/project-scope.js.map +1 -1
  491. package/dist/project-tombstone.js +1 -1
  492. package/dist/project-tombstone.js.map +1 -1
  493. package/dist/registrations.d.ts +30 -0
  494. package/dist/registrations.d.ts.map +1 -0
  495. package/dist/registrations.js +30 -0
  496. package/dist/registrations.js.map +1 -0
  497. package/dist/release/changesets-aggregator.js +1 -1
  498. package/dist/release/changesets-aggregator.js.map +1 -1
  499. package/dist/release/ci-evidence.d.ts +68 -2
  500. package/dist/release/ci-evidence.d.ts.map +1 -1
  501. package/dist/release/ci-evidence.js +203 -39
  502. package/dist/release/ci-evidence.js.map +1 -1
  503. package/dist/release/invariants/archive-reason-invariant.d.ts +1 -1
  504. package/dist/release/invariants/archive-reason-invariant.d.ts.map +1 -1
  505. package/dist/release/invariants/archive-reason-invariant.js +1 -1
  506. package/dist/release/invariants/archive-reason-invariant.js.map +1 -1
  507. package/dist/release/invariants/registry.d.ts +1 -1
  508. package/dist/release/invariants/registry.d.ts.map +1 -1
  509. package/dist/release/invariants/registry.js +1 -1
  510. package/dist/release/invariants/registry.js.map +1 -1
  511. package/dist/release/open.d.ts +4 -7
  512. package/dist/release/open.d.ts.map +1 -1
  513. package/dist/release/open.js +62 -24
  514. package/dist/release/open.js.map +1 -1
  515. package/dist/release/plan.d.ts +1 -2
  516. package/dist/release/plan.d.ts.map +1 -1
  517. package/dist/release/plan.js +4 -1
  518. package/dist/release/plan.js.map +1 -1
  519. package/dist/release/pr-evidence.d.ts +1 -1
  520. package/dist/release/pr-evidence.d.ts.map +1 -1
  521. package/dist/release/pr-evidence.js +2 -2
  522. package/dist/release/pr-evidence.js.map +1 -1
  523. package/dist/release/preflight-skip.d.ts +74 -10
  524. package/dist/release/preflight-skip.d.ts.map +1 -1
  525. package/dist/release/preflight-skip.js +254 -47
  526. package/dist/release/preflight-skip.js.map +1 -1
  527. package/dist/release/reconcile.d.ts +1 -1
  528. package/dist/release/reconcile.d.ts.map +1 -1
  529. package/dist/release/reconcile.js +19 -3
  530. package/dist/release/reconcile.js.map +1 -1
  531. package/dist/release/version-bump.d.ts +1 -1
  532. package/dist/release/version-bump.d.ts.map +1 -1
  533. package/dist/release/version-bump.js +1 -1
  534. package/dist/release/version-bump.js.map +1 -1
  535. package/dist/render/colors.js +1 -19
  536. package/dist/render/colors.js.map +1 -1
  537. package/dist/render/tasks/colors.js +1 -1
  538. package/dist/render/tasks/colors.js.map +1 -1
  539. package/dist/resources/admission-ledger.d.ts +587 -0
  540. package/dist/resources/admission-ledger.d.ts.map +1 -0
  541. package/dist/resources/admission-ledger.js +1401 -0
  542. package/dist/resources/admission-ledger.js.map +1 -0
  543. package/dist/resources/backend.d.ts +37 -1
  544. package/dist/resources/backend.d.ts.map +1 -1
  545. package/dist/resources/backend.js +1 -1
  546. package/dist/resources/darwin-backend.d.ts +152 -26
  547. package/dist/resources/darwin-backend.d.ts.map +1 -1
  548. package/dist/resources/darwin-backend.js +217 -34
  549. package/dist/resources/darwin-backend.js.map +1 -1
  550. package/dist/resources/governor.d.ts +36 -27
  551. package/dist/resources/governor.d.ts.map +1 -1
  552. package/dist/resources/governor.js +144 -49
  553. package/dist/resources/governor.js.map +1 -1
  554. package/dist/resources/heavy-command-hook-delivery.d.ts +144 -0
  555. package/dist/resources/heavy-command-hook-delivery.d.ts.map +1 -0
  556. package/dist/resources/heavy-command-hook-delivery.js +204 -0
  557. package/dist/resources/heavy-command-hook-delivery.js.map +1 -0
  558. package/dist/resources/heavy-command.d.ts +69 -0
  559. package/dist/resources/heavy-command.d.ts.map +1 -1
  560. package/dist/resources/heavy-command.js +479 -7
  561. package/dist/resources/heavy-command.js.map +1 -1
  562. package/dist/resources/pressure-gate.d.ts +148 -0
  563. package/dist/resources/pressure-gate.d.ts.map +1 -0
  564. package/dist/resources/pressure-gate.js +273 -0
  565. package/dist/resources/pressure-gate.js.map +1 -0
  566. package/dist/resources/run-admission.d.ts +33 -45
  567. package/dist/resources/run-admission.d.ts.map +1 -1
  568. package/dist/resources/run-admission.js +50 -118
  569. package/dist/resources/run-admission.js.map +1 -1
  570. package/dist/resources/run-class.d.ts +60 -4
  571. package/dist/resources/run-class.d.ts.map +1 -1
  572. package/dist/resources/run-class.js +474 -6
  573. package/dist/resources/run-class.js.map +1 -1
  574. package/dist/resources/run-governed.d.ts +43 -11
  575. package/dist/resources/run-governed.d.ts.map +1 -1
  576. package/dist/resources/run-governed.js +139 -99
  577. package/dist/resources/run-governed.js.map +1 -1
  578. package/dist/resources/slot-holder.d.ts +12 -4
  579. package/dist/resources/slot-holder.d.ts.map +1 -1
  580. package/dist/resources/slot-holder.js +19 -14
  581. package/dist/resources/slot-holder.js.map +1 -1
  582. package/dist/resources/spawn-wrapper.js +1 -1
  583. package/dist/resources/spawn-wrapper.js.map +1 -1
  584. package/dist/resources/supervisor-admit.d.ts +1 -1
  585. package/dist/resources/supervisor-admit.d.ts.map +1 -1
  586. package/dist/resources/supervisor-admit.js +2 -1
  587. package/dist/resources/supervisor-admit.js.map +1 -1
  588. package/dist/routing/build-command-groups.d.ts +1 -1
  589. package/dist/routing/build-command-groups.d.ts.map +1 -1
  590. package/dist/routing/build-command-groups.js +4 -1
  591. package/dist/routing/build-command-groups.js.map +1 -1
  592. package/dist/runtime/openapi/generate-openapi.d.ts +1 -1
  593. package/dist/runtime/openapi/generate-openapi.d.ts.map +1 -1
  594. package/dist/runtime/openapi/generate-openapi.js +1 -1
  595. package/dist/runtime/openapi/generate-openapi.js.map +1 -1
  596. package/dist/sagas/index.d.ts +3 -1
  597. package/dist/sagas/index.d.ts.map +1 -1
  598. package/dist/sagas/index.js +2 -5
  599. package/dist/sagas/index.js.map +1 -1
  600. package/dist/scaffold/ensure-skills.d.ts.map +1 -1
  601. package/dist/scaffold/ensure-skills.js +58 -2
  602. package/dist/scaffold/ensure-skills.js.map +1 -1
  603. package/dist/scaffold/project-identity.js +1 -1
  604. package/dist/scaffold/project-identity.js.map +1 -1
  605. package/dist/sdk/validator-attest.d.ts +1 -1
  606. package/dist/sdk/validator-attest.d.ts.map +1 -1
  607. package/dist/sdk/validator-attest.js +1 -1
  608. package/dist/sdk/validator-attest.js.map +1 -1
  609. package/dist/sdk/validator-reject.d.ts +1 -1
  610. package/dist/sdk/validator-reject.d.ts.map +1 -1
  611. package/dist/sdk/validator-reject.js +1 -1
  612. package/dist/sdk/validator-reject.js.map +1 -1
  613. package/dist/security/input-sanitization.js +2 -1
  614. package/dist/security/input-sanitization.js.map +1 -1
  615. package/dist/security/override-cap.js +1 -1
  616. package/dist/security/override-cap.js.map +1 -1
  617. package/dist/security/owner-override-auth.js +1 -1
  618. package/dist/security/owner-override-auth.js.map +1 -1
  619. package/dist/security/shared-evidence-tracker.js +1 -1
  620. package/dist/security/shared-evidence-tracker.js.map +1 -1
  621. package/dist/selfimprove/fix-gen.js +35 -93136
  622. package/dist/selfimprove/fix-gen.js.map +3 -3
  623. package/dist/sentient/daemon.d.ts.map +1 -1
  624. package/dist/sentient/daemon.js +3 -0
  625. package/dist/sentient/daemon.js.map +1 -1
  626. package/dist/sentient/tick.d.ts +7 -0
  627. package/dist/sentient/tick.d.ts.map +1 -1
  628. package/dist/sentient/tick.js +11 -0
  629. package/dist/sentient/tick.js.map +1 -1
  630. package/dist/sequence/index.js +1 -1
  631. package/dist/sequence/index.js.map +1 -1
  632. package/dist/session/engine-ops.d.ts +3 -45
  633. package/dist/session/engine-ops.d.ts.map +1 -1
  634. package/dist/session/engine-ops.js +63 -112
  635. package/dist/session/engine-ops.js.map +1 -1
  636. package/dist/session/status-op.d.ts +40 -0
  637. package/dist/session/status-op.d.ts.map +1 -0
  638. package/dist/session/status-op.js +71 -0
  639. package/dist/session/status-op.js.map +1 -0
  640. package/dist/session/task-current.d.ts +31 -0
  641. package/dist/session/task-current.d.ts.map +1 -0
  642. package/dist/session/task-current.js +59 -0
  643. package/dist/session/task-current.js.map +1 -0
  644. package/dist/sessions/assumptions.d.ts +1 -1
  645. package/dist/sessions/assumptions.d.ts.map +1 -1
  646. package/dist/sessions/assumptions.js +1 -1
  647. package/dist/sessions/assumptions.js.map +1 -1
  648. package/dist/sessions/briefing.d.ts.map +1 -1
  649. package/dist/sessions/briefing.js +11 -0
  650. package/dist/sessions/briefing.js.map +1 -1
  651. package/dist/sessions/context-inject.js +1 -1
  652. package/dist/sessions/context-inject.js.map +1 -1
  653. package/dist/sessions/decisions.d.ts +1 -1
  654. package/dist/sessions/decisions.d.ts.map +1 -1
  655. package/dist/sessions/decisions.js +1 -1
  656. package/dist/sessions/decisions.js.map +1 -1
  657. package/dist/sessions/focus-state-store.d.ts.map +1 -1
  658. package/dist/sessions/focus-state-store.js +2 -1
  659. package/dist/sessions/focus-state-store.js.map +1 -1
  660. package/dist/sessions/handoff.js +1 -1
  661. package/dist/sessions/handoff.js.map +1 -1
  662. package/dist/sessions/index.d.ts +1 -2
  663. package/dist/sessions/index.d.ts.map +1 -1
  664. package/dist/sessions/index.js +3 -2
  665. package/dist/sessions/index.js.map +1 -1
  666. package/dist/sessions/session-drift.js +1 -1
  667. package/dist/sessions/session-drift.js.map +1 -1
  668. package/dist/sessions/session-end-snapshot-entry.d.ts +4 -0
  669. package/dist/sessions/session-end-snapshot-entry.d.ts.map +1 -1
  670. package/dist/sessions/session-end-snapshot-entry.js +11 -0
  671. package/dist/sessions/session-end-snapshot-entry.js.map +1 -1
  672. package/dist/sessions/session-end-snapshot.d.ts.map +1 -1
  673. package/dist/sessions/session-end-snapshot.js +4 -0
  674. package/dist/sessions/session-end-snapshot.js.map +1 -1
  675. package/dist/sessions/session-enforcement.js +1 -1
  676. package/dist/sessions/session-enforcement.js.map +1 -1
  677. package/dist/sessions/session-show.d.ts +1 -2
  678. package/dist/sessions/session-show.d.ts.map +1 -1
  679. package/dist/sessions/session-show.js +1 -1
  680. package/dist/sessions/session-show.js.map +1 -1
  681. package/dist/sessions/session-stats.js +1 -1
  682. package/dist/sessions/session-stats.js.map +1 -1
  683. package/dist/sessions/session-suspend.d.ts +1 -2
  684. package/dist/sessions/session-suspend.d.ts.map +1 -1
  685. package/dist/sessions/session-suspend.js +1 -1
  686. package/dist/sessions/session-suspend.js.map +1 -1
  687. package/dist/sessions/session-switch.js +1 -1
  688. package/dist/sessions/session-switch.js.map +1 -1
  689. package/dist/sessions/snapshot.js +1 -1
  690. package/dist/sessions/snapshot.js.map +1 -1
  691. package/dist/sessions/terminal-identity.d.ts +1 -1
  692. package/dist/sessions/terminal-identity.d.ts.map +1 -1
  693. package/dist/sessions/terminal-identity.js +1 -1
  694. package/dist/sessions/terminal-identity.js.map +1 -1
  695. package/dist/setup/sections/integrations.d.ts.map +1 -1
  696. package/dist/setup/sections/integrations.js +9 -0
  697. package/dist/setup/sections/integrations.js.map +1 -1
  698. package/dist/setup/sections/models-roles.js +1 -1
  699. package/dist/setup/sections/models-roles.js.map +1 -1
  700. package/dist/setup/sections/verification.d.ts.map +1 -1
  701. package/dist/setup/sections/verification.js +8 -2
  702. package/dist/setup/sections/verification.js.map +1 -1
  703. package/dist/shutdown.d.ts +24 -0
  704. package/dist/shutdown.d.ts.map +1 -1
  705. package/dist/shutdown.js +30 -1
  706. package/dist/shutdown.js.map +1 -1
  707. package/dist/skills/agents/install.d.ts +46 -6
  708. package/dist/skills/agents/install.d.ts.map +1 -1
  709. package/dist/skills/agents/install.js +86 -17
  710. package/dist/skills/agents/install.js.map +1 -1
  711. package/dist/skills/injection/subagent.js +1 -1
  712. package/dist/skills/injection/subagent.js.map +1 -1
  713. package/dist/skills/manifests/research.d.ts.map +1 -1
  714. package/dist/skills/manifests/research.js +2 -1
  715. package/dist/skills/manifests/research.js.map +1 -1
  716. package/dist/skills/orchestrator/spawn.js +1 -1
  717. package/dist/skills/orchestrator/spawn.js.map +1 -1
  718. package/dist/skills/orchestrator/validator.js +1 -1
  719. package/dist/skills/orchestrator/validator.js.map +1 -1
  720. package/dist/snapshot/index.d.ts.map +1 -1
  721. package/dist/snapshot/index.js +13 -0
  722. package/dist/snapshot/index.js.map +1 -1
  723. package/dist/spawn/agent-identity.js +1 -1
  724. package/dist/spawn/agent-identity.js.map +1 -1
  725. package/dist/stats/index.d.ts.map +1 -1
  726. package/dist/stats/index.js +2 -1
  727. package/dist/stats/index.js.map +1 -1
  728. package/dist/store/agent-install.d.ts.map +1 -1
  729. package/dist/store/agent-install.js +2 -1
  730. package/dist/store/agent-install.js.map +1 -1
  731. package/dist/store/agent-registry-accessor.d.ts +1 -0
  732. package/dist/store/agent-registry-accessor.d.ts.map +1 -1
  733. package/dist/store/agent-registry-accessor.js +3 -1
  734. package/dist/store/agent-registry-accessor.js.map +1 -1
  735. package/dist/store/atomic.js +1 -1
  736. package/dist/store/atomic.js.map +1 -1
  737. package/dist/store/attachment-store.js +1 -1
  738. package/dist/store/attachment-store.js.map +1 -1
  739. package/dist/store/audit-log-schema.d.ts +645 -0
  740. package/dist/store/audit-log-schema.d.ts.map +1 -0
  741. package/dist/store/audit-log-schema.js +30 -0
  742. package/dist/store/audit-log-schema.js.map +1 -0
  743. package/dist/store/background-ops.d.ts +26 -0
  744. package/dist/store/background-ops.d.ts.map +1 -1
  745. package/dist/store/background-ops.js +46 -0
  746. package/dist/store/background-ops.js.map +1 -1
  747. package/dist/store/backup-recover.d.ts +36 -1
  748. package/dist/store/backup-recover.d.ts.map +1 -1
  749. package/dist/store/backup-recover.js +99 -1
  750. package/dist/store/backup-recover.js.map +1 -1
  751. package/dist/store/backup-verify.d.ts +1 -1
  752. package/dist/store/backup-verify.d.ts.map +1 -1
  753. package/dist/store/backup-verify.js +6 -1
  754. package/dist/store/backup-verify.js.map +1 -1
  755. package/dist/store/backup.js +1 -1
  756. package/dist/store/backup.js.map +1 -1
  757. package/dist/store/conduit-sqlite.d.ts.map +1 -1
  758. package/dist/store/conduit-sqlite.js +2 -26
  759. package/dist/store/conduit-sqlite.js.map +1 -1
  760. package/dist/store/converters.js +1 -1
  761. package/dist/store/converters.js.map +1 -1
  762. package/dist/store/db-helpers.js +1 -1
  763. package/dist/store/db-helpers.js.map +1 -1
  764. package/dist/store/dependency-cycles.js +1 -1
  765. package/dist/store/dependency-cycles.js.map +1 -1
  766. package/dist/store/display-id-alias.d.ts +2 -2
  767. package/dist/store/display-id-alias.d.ts.map +1 -1
  768. package/dist/store/display-id-alias.js +5 -28
  769. package/dist/store/display-id-alias.js.map +1 -1
  770. package/dist/store/drizzle-node-sqlite.d.ts +56 -0
  771. package/dist/store/drizzle-node-sqlite.d.ts.map +1 -0
  772. package/dist/store/drizzle-node-sqlite.js +87 -0
  773. package/dist/store/drizzle-node-sqlite.js.map +1 -0
  774. package/dist/store/dual-scope-db.d.ts +26 -33
  775. package/dist/store/dual-scope-db.d.ts.map +1 -1
  776. package/dist/store/dual-scope-db.js +416 -122
  777. package/dist/store/dual-scope-db.js.map +1 -1
  778. package/dist/store/exodus/abort-events.d.ts +134 -0
  779. package/dist/store/exodus/abort-events.d.ts.map +1 -1
  780. package/dist/store/exodus/abort-events.js +201 -0
  781. package/dist/store/exodus/abort-events.js.map +1 -1
  782. package/dist/store/exodus/migrate.d.ts +7 -0
  783. package/dist/store/exodus/migrate.d.ts.map +1 -1
  784. package/dist/store/exodus/migrate.js +156 -118
  785. package/dist/store/exodus/migrate.js.map +1 -1
  786. package/dist/store/exodus/on-open.d.ts +36 -0
  787. package/dist/store/exodus/on-open.d.ts.map +1 -1
  788. package/dist/store/exodus/on-open.js +102 -27
  789. package/dist/store/exodus/on-open.js.map +1 -1
  790. package/dist/store/exodus/prior-recoveries.d.ts +75 -0
  791. package/dist/store/exodus/prior-recoveries.d.ts.map +1 -0
  792. package/dist/store/exodus/prior-recoveries.js +122 -0
  793. package/dist/store/exodus/prior-recoveries.js.map +1 -0
  794. package/dist/store/exodus/reconcile.d.ts.map +1 -1
  795. package/dist/store/exodus/reconcile.js +188 -24
  796. package/dist/store/exodus/reconcile.js.map +1 -1
  797. package/dist/store/exodus/runtime-targets.d.ts +3 -3
  798. package/dist/store/exodus/runtime-targets.js +3 -3
  799. package/dist/store/exodus/task-id-collision-sql.d.ts +52 -0
  800. package/dist/store/exodus/task-id-collision-sql.d.ts.map +1 -0
  801. package/dist/store/exodus/task-id-collision-sql.js +97 -0
  802. package/dist/store/exodus/task-id-collision-sql.js.map +1 -0
  803. package/dist/store/exodus/task-id-remap.d.ts +113 -0
  804. package/dist/store/exodus/task-id-remap.d.ts.map +1 -0
  805. package/dist/store/exodus/task-id-remap.js +301 -0
  806. package/dist/store/exodus/task-id-remap.js.map +1 -0
  807. package/dist/store/exodus/verify-migration.js +1 -1
  808. package/dist/store/exodus/verify-migration.js.map +1 -1
  809. package/dist/store/exodus/write-guard.d.ts +136 -0
  810. package/dist/store/exodus/write-guard.d.ts.map +1 -0
  811. package/dist/store/exodus/write-guard.js +289 -0
  812. package/dist/store/exodus/write-guard.js.map +1 -0
  813. package/dist/store/identity-share.d.ts +31 -0
  814. package/dist/store/identity-share.d.ts.map +1 -0
  815. package/dist/store/identity-share.js +54 -0
  816. package/dist/store/identity-share.js.map +1 -0
  817. package/dist/store/import-remap.js +1 -1
  818. package/dist/store/import-remap.js.map +1 -1
  819. package/dist/store/import-sort.js +1 -1
  820. package/dist/store/import-sort.js.map +1 -1
  821. package/dist/store/json.js +1 -1
  822. package/dist/store/json.js.map +1 -1
  823. package/dist/store/legacy-tasks-lineage.js +3 -3
  824. package/dist/store/legacy-tasks-lineage.js.map +1 -1
  825. package/dist/store/lock.d.ts +17 -0
  826. package/dist/store/lock.d.ts.map +1 -1
  827. package/dist/store/lock.js +18 -1
  828. package/dist/store/lock.js.map +1 -1
  829. package/dist/store/memory-sqlite.d.ts.map +1 -1
  830. package/dist/store/memory-sqlite.js +2 -25
  831. package/dist/store/memory-sqlite.js.map +1 -1
  832. package/dist/store/migration-files.d.ts +30 -0
  833. package/dist/store/migration-files.d.ts.map +1 -0
  834. package/dist/store/migration-files.js +59 -0
  835. package/dist/store/migration-files.js.map +1 -0
  836. package/dist/store/migration-manager.d.ts.map +1 -1
  837. package/dist/store/migration-manager.js +14 -14
  838. package/dist/store/migration-manager.js.map +1 -1
  839. package/dist/store/migration-runner.d.ts.map +1 -1
  840. package/dist/store/migration-runner.js +2 -2
  841. package/dist/store/migration-runner.js.map +1 -1
  842. package/dist/store/migration-sqlite.d.ts +1 -1
  843. package/dist/store/migration-sqlite.d.ts.map +1 -1
  844. package/dist/store/migration-sqlite.js +290 -355
  845. package/dist/store/migration-sqlite.js.map +1 -1
  846. package/dist/store/open-cleo-db.d.ts.map +1 -1
  847. package/dist/store/open-cleo-db.js +4 -2
  848. package/dist/store/open-cleo-db.js.map +1 -1
  849. package/dist/store/pid-alive.d.ts +15 -0
  850. package/dist/store/pid-alive.d.ts.map +1 -0
  851. package/dist/store/pid-alive.js +24 -0
  852. package/dist/store/pid-alive.js.map +1 -0
  853. package/dist/store/portable-bundle-scan.d.ts +1 -1
  854. package/dist/store/portable-bundle-scan.d.ts.map +1 -1
  855. package/dist/store/portable-bundle-scan.js +1 -1
  856. package/dist/store/portable-bundle-scan.js.map +1 -1
  857. package/dist/store/portable-bundle.d.ts +10 -1
  858. package/dist/store/portable-bundle.d.ts.map +1 -1
  859. package/dist/store/portable-bundle.js +10 -1
  860. package/dist/store/portable-bundle.js.map +1 -1
  861. package/dist/store/recover-malformed-db.d.ts +1 -1
  862. package/dist/store/recover-malformed-db.d.ts.map +1 -1
  863. package/dist/store/recover-malformed-db.js +1 -1
  864. package/dist/store/recover-malformed-db.js.map +1 -1
  865. package/dist/store/repair-malformed-dbs.d.ts +1 -1
  866. package/dist/store/repair-malformed-dbs.d.ts.map +1 -1
  867. package/dist/store/repair-malformed-dbs.js +1 -1
  868. package/dist/store/repair-malformed-dbs.js.map +1 -1
  869. package/dist/store/restore-marker.d.ts +89 -0
  870. package/dist/store/restore-marker.d.ts.map +1 -0
  871. package/dist/store/restore-marker.js +197 -0
  872. package/dist/store/restore-marker.js.map +1 -0
  873. package/dist/store/restore-store.d.ts +85 -0
  874. package/dist/store/restore-store.d.ts.map +1 -0
  875. package/dist/store/restore-store.js +391 -0
  876. package/dist/store/restore-store.js.map +1 -0
  877. package/dist/store/row-identity.d.ts +123 -1
  878. package/dist/store/row-identity.d.ts.map +1 -1
  879. package/dist/store/row-identity.js +454 -80
  880. package/dist/store/row-identity.js.map +1 -1
  881. package/dist/store/schema/agent-registry-schema.d.ts +1 -1
  882. package/dist/store/schema/agent-registry-schema.d.ts.map +1 -1
  883. package/dist/store/schema/agent-registry-schema.js +5 -1
  884. package/dist/store/schema/agent-registry-schema.js.map +1 -1
  885. package/dist/store/schema/cleo-global/agent-registry.d.ts +1 -1
  886. package/dist/store/schema/cleo-global/agent-registry.d.ts.map +1 -1
  887. package/dist/store/schema/cleo-global/agent-registry.js +9 -5
  888. package/dist/store/schema/cleo-global/agent-registry.js.map +1 -1
  889. package/dist/store/schema/cleo-global/models-catalog.js +1 -1
  890. package/dist/store/schema/cleo-global/models-catalog.js.map +1 -1
  891. package/dist/store/schema/cleo-global/nexus.js +1 -1
  892. package/dist/store/schema/cleo-global/nexus.js.map +1 -1
  893. package/dist/store/schema/cleo-project/provenance-commits.d.ts +1 -1
  894. package/dist/store/schema/cleo-project/provenance-orphans.d.ts +1 -1
  895. package/dist/store/schema/cleo-project/provenance-orphans.d.ts.map +1 -1
  896. package/dist/store/schema/cleo-project/provenance-orphans.js +9 -2
  897. package/dist/store/schema/cleo-project/provenance-orphans.js.map +1 -1
  898. package/dist/store/schema/cleo-project/provenance-rest.d.ts +1 -1
  899. package/dist/store/schema/cleo-project/provenance-rest.js +1 -1
  900. package/dist/store/schema/cleo-project/provenance-rest.js.map +1 -1
  901. package/dist/store/schema/cleo-shared/brain.js +1 -1
  902. package/dist/store/schema/cleo-shared/brain.js.map +1 -1
  903. package/dist/store/schema/memory-schema.d.ts +1 -1
  904. package/dist/store/schema/memory-schema.d.ts.map +1 -1
  905. package/dist/store/schema/memory-schema.js +1 -1
  906. package/dist/store/schema/memory-schema.js.map +1 -1
  907. package/dist/store/schema/nexus-schema.js +1 -1
  908. package/dist/store/schema/nexus-schema.js.map +1 -1
  909. package/dist/store/service-host-matcher.d.ts +1 -1
  910. package/dist/store/service-host-matcher.d.ts.map +1 -1
  911. package/dist/store/service-host-matcher.js +1 -1
  912. package/dist/store/service-host-matcher.js.map +1 -1
  913. package/dist/store/service-oauth.js +1 -1
  914. package/dist/store/service-oauth.js.map +1 -1
  915. package/dist/store/session-store.d.ts.map +1 -1
  916. package/dist/store/session-store.js +7 -1
  917. package/dist/store/session-store.js.map +1 -1
  918. package/dist/store/sqlite-backup.d.ts +1 -1
  919. package/dist/store/sqlite-backup.d.ts.map +1 -1
  920. package/dist/store/sqlite-backup.js +1 -1
  921. package/dist/store/sqlite-backup.js.map +1 -1
  922. package/dist/store/sqlite-data-accessor.d.ts +52 -1
  923. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  924. package/dist/store/sqlite-data-accessor.js +95 -22
  925. package/dist/store/sqlite-data-accessor.js.map +1 -1
  926. package/dist/store/sqlite-native.d.ts.map +1 -1
  927. package/dist/store/sqlite-native.js +9 -9
  928. package/dist/store/sqlite-native.js.map +1 -1
  929. package/dist/store/sqlite-pragmas.d.ts +12 -5
  930. package/dist/store/sqlite-pragmas.d.ts.map +1 -1
  931. package/dist/store/sqlite-pragmas.js +13 -2
  932. package/dist/store/sqlite-pragmas.js.map +1 -1
  933. package/dist/store/sqlite.d.ts.map +1 -1
  934. package/dist/store/sqlite.js +7 -32
  935. package/dist/store/sqlite.js.map +1 -1
  936. package/dist/store/status-registry.d.ts +1 -1
  937. package/dist/store/status-registry.d.ts.map +1 -1
  938. package/dist/store/status-registry.js +1 -1
  939. package/dist/store/status-registry.js.map +1 -1
  940. package/dist/store/sync/apply/applier.d.ts +119 -0
  941. package/dist/store/sync/apply/applier.d.ts.map +1 -0
  942. package/dist/store/sync/apply/applier.js +1239 -0
  943. package/dist/store/sync/apply/applier.js.map +1 -0
  944. package/dist/store/sync/apply/fk.d.ts +47 -0
  945. package/dist/store/sync/apply/fk.d.ts.map +1 -0
  946. package/dist/store/sync/apply/fk.js +89 -0
  947. package/dist/store/sync/apply/fk.js.map +1 -0
  948. package/dist/store/sync/apply/footprints.d.ts +60 -0
  949. package/dist/store/sync/apply/footprints.d.ts.map +1 -0
  950. package/dist/store/sync/apply/footprints.js +235 -0
  951. package/dist/store/sync/apply/footprints.js.map +1 -0
  952. package/dist/store/sync/apply/frame.d.ts +80 -0
  953. package/dist/store/sync/apply/frame.d.ts.map +1 -0
  954. package/dist/store/sync/apply/frame.js +127 -0
  955. package/dist/store/sync/apply/frame.js.map +1 -0
  956. package/dist/store/sync/apply/index.d.ts +11 -0
  957. package/dist/store/sync/apply/index.d.ts.map +1 -0
  958. package/dist/store/sync/apply/index.js +11 -0
  959. package/dist/store/sync/apply/index.js.map +1 -0
  960. package/dist/store/sync/apply/parent-delete.d.ts +38 -0
  961. package/dist/store/sync/apply/parent-delete.d.ts.map +1 -0
  962. package/dist/store/sync/apply/parent-delete.js +41 -0
  963. package/dist/store/sync/apply/parent-delete.js.map +1 -0
  964. package/dist/store/sync/apply/post-apply.d.ts +67 -0
  965. package/dist/store/sync/apply/post-apply.d.ts.map +1 -0
  966. package/dist/store/sync/apply/post-apply.js +118 -0
  967. package/dist/store/sync/apply/post-apply.js.map +1 -0
  968. package/dist/store/sync/apply/refs.d.ts +60 -0
  969. package/dist/store/sync/apply/refs.d.ts.map +1 -0
  970. package/dist/store/sync/apply/refs.js +90 -0
  971. package/dist/store/sync/apply/refs.js.map +1 -0
  972. package/dist/store/sync/apply/write-api.d.ts +195 -0
  973. package/dist/store/sync/apply/write-api.d.ts.map +1 -0
  974. package/dist/store/sync/apply/write-api.js +416 -0
  975. package/dist/store/sync/apply/write-api.js.map +1 -0
  976. package/dist/store/sync/apply-intent.d.ts +117 -0
  977. package/dist/store/sync/apply-intent.d.ts.map +1 -0
  978. package/dist/store/sync/apply-intent.js +225 -0
  979. package/dist/store/sync/apply-intent.js.map +1 -0
  980. package/dist/store/sync/capture.d.ts +32 -2
  981. package/dist/store/sync/capture.d.ts.map +1 -1
  982. package/dist/store/sync/capture.js +47 -13
  983. package/dist/store/sync/capture.js.map +1 -1
  984. package/dist/store/sync/conflicts.d.ts +81 -0
  985. package/dist/store/sync/conflicts.d.ts.map +1 -0
  986. package/dist/store/sync/conflicts.js +98 -0
  987. package/dist/store/sync/conflicts.js.map +1 -0
  988. package/dist/store/sync/field-leave.d.ts +146 -0
  989. package/dist/store/sync/field-leave.d.ts.map +1 -0
  990. package/dist/store/sync/field-leave.js +241 -0
  991. package/dist/store/sync/field-leave.js.map +1 -0
  992. package/dist/store/sync/flags.d.ts +119 -0
  993. package/dist/store/sync/flags.d.ts.map +1 -1
  994. package/dist/store/sync/flags.js +360 -0
  995. package/dist/store/sync/flags.js.map +1 -1
  996. package/dist/store/sync/held.d.ts +197 -0
  997. package/dist/store/sync/held.d.ts.map +1 -0
  998. package/dist/store/sync/held.js +314 -0
  999. package/dist/store/sync/held.js.map +1 -0
  1000. package/dist/store/sync/identity-fill.d.ts.map +1 -1
  1001. package/dist/store/sync/identity-fill.js +10 -2
  1002. package/dist/store/sync/identity-fill.js.map +1 -1
  1003. package/dist/store/sync/inbox.d.ts +114 -0
  1004. package/dist/store/sync/inbox.d.ts.map +1 -0
  1005. package/dist/store/sync/inbox.js +222 -0
  1006. package/dist/store/sync/inbox.js.map +1 -0
  1007. package/dist/store/sync/inherit.d.ts +36 -0
  1008. package/dist/store/sync/inherit.d.ts.map +1 -0
  1009. package/dist/store/sync/inherit.js +38 -0
  1010. package/dist/store/sync/inherit.js.map +1 -0
  1011. package/dist/store/sync/merge/engine.d.ts +114 -0
  1012. package/dist/store/sync/merge/engine.d.ts.map +1 -0
  1013. package/dist/store/sync/merge/engine.js +698 -0
  1014. package/dist/store/sync/merge/engine.js.map +1 -0
  1015. package/dist/store/sync/merge/index.d.ts +11 -0
  1016. package/dist/store/sync/merge/index.d.ts.map +1 -0
  1017. package/dist/store/sync/merge/index.js +11 -0
  1018. package/dist/store/sync/merge/index.js.map +1 -0
  1019. package/dist/store/sync/merge/rules.d.ts +91 -0
  1020. package/dist/store/sync/merge/rules.d.ts.map +1 -0
  1021. package/dist/store/sync/merge/rules.js +151 -0
  1022. package/dist/store/sync/merge/rules.js.map +1 -0
  1023. package/dist/store/sync/merge/types.d.ts +206 -0
  1024. package/dist/store/sync/merge/types.d.ts.map +1 -0
  1025. package/dist/store/sync/merge/types.js +15 -0
  1026. package/dist/store/sync/merge/types.js.map +1 -0
  1027. package/dist/store/sync/migration-hooks.d.ts +47 -0
  1028. package/dist/store/sync/migration-hooks.d.ts.map +1 -0
  1029. package/dist/store/sync/migration-hooks.js +74 -0
  1030. package/dist/store/sync/migration-hooks.js.map +1 -0
  1031. package/dist/store/sync/netting.d.ts +5 -0
  1032. package/dist/store/sync/netting.d.ts.map +1 -1
  1033. package/dist/store/sync/netting.js +29 -2
  1034. package/dist/store/sync/netting.js.map +1 -1
  1035. package/dist/store/sync/remap.d.ts +72 -0
  1036. package/dist/store/sync/remap.d.ts.map +1 -0
  1037. package/dist/store/sync/remap.js +209 -0
  1038. package/dist/store/sync/remap.js.map +1 -0
  1039. package/dist/store/sync/repair.d.ts +180 -0
  1040. package/dist/store/sync/repair.d.ts.map +1 -0
  1041. package/dist/store/sync/repair.js +499 -0
  1042. package/dist/store/sync/repair.js.map +1 -0
  1043. package/dist/store/sync/replica-registry.d.ts +54 -0
  1044. package/dist/store/sync/replica-registry.d.ts.map +1 -1
  1045. package/dist/store/sync/replica-registry.js +72 -2
  1046. package/dist/store/sync/replica-registry.js.map +1 -1
  1047. package/dist/store/sync/replica.d.ts +71 -9
  1048. package/dist/store/sync/replica.d.ts.map +1 -1
  1049. package/dist/store/sync/replica.js +95 -11
  1050. package/dist/store/sync/replica.js.map +1 -1
  1051. package/dist/store/sync/row-meta.d.ts +148 -0
  1052. package/dist/store/sync/row-meta.d.ts.map +1 -0
  1053. package/dist/store/sync/row-meta.js +200 -0
  1054. package/dist/store/sync/row-meta.js.map +1 -0
  1055. package/dist/store/sync/schema.d.ts +13 -5
  1056. package/dist/store/sync/schema.d.ts.map +1 -1
  1057. package/dist/store/sync/schema.js +34 -7
  1058. package/dist/store/sync/schema.js.map +1 -1
  1059. package/dist/store/sync/sealer-values.d.ts.map +1 -1
  1060. package/dist/store/sync/sealer-values.js +1 -0
  1061. package/dist/store/sync/sealer-values.js.map +1 -1
  1062. package/dist/store/sync/sealer.d.ts +96 -0
  1063. package/dist/store/sync/sealer.d.ts.map +1 -1
  1064. package/dist/store/sync/sealer.js +532 -58
  1065. package/dist/store/sync/sealer.js.map +1 -1
  1066. package/dist/store/sync/sequencing.d.ts +175 -0
  1067. package/dist/store/sync/sequencing.d.ts.map +1 -0
  1068. package/dist/store/sync/sequencing.js +295 -0
  1069. package/dist/store/sync/sequencing.js.map +1 -0
  1070. package/dist/store/sync/structural.d.ts +30 -2
  1071. package/dist/store/sync/structural.d.ts.map +1 -1
  1072. package/dist/store/sync/structural.js +64 -2
  1073. package/dist/store/sync/structural.js.map +1 -1
  1074. package/dist/store/sync/timestamp-canon.d.ts +44 -0
  1075. package/dist/store/sync/timestamp-canon.d.ts.map +1 -0
  1076. package/dist/store/sync/timestamp-canon.js +102 -0
  1077. package/dist/store/sync/timestamp-canon.js.map +1 -0
  1078. package/dist/store/sync/timestamps.d.ts +1 -30
  1079. package/dist/store/sync/timestamps.d.ts.map +1 -1
  1080. package/dist/store/sync/timestamps.js +2 -89
  1081. package/dist/store/sync/timestamps.js.map +1 -1
  1082. package/dist/store/sync/trigger-classes.d.ts +8 -0
  1083. package/dist/store/sync/trigger-classes.d.ts.map +1 -1
  1084. package/dist/store/sync/trigger-classes.js +13 -0
  1085. package/dist/store/sync/trigger-classes.js.map +1 -1
  1086. package/dist/store/sync/write-actor.d.ts +58 -0
  1087. package/dist/store/sync/write-actor.d.ts.map +1 -0
  1088. package/dist/store/sync/write-actor.js +67 -0
  1089. package/dist/store/sync/write-actor.js.map +1 -0
  1090. package/dist/store/table-classification.d.ts +27 -0
  1091. package/dist/store/table-classification.d.ts.map +1 -1
  1092. package/dist/store/table-classification.js +116 -0
  1093. package/dist/store/table-classification.js.map +1 -1
  1094. package/dist/store/task-claim.d.ts +1 -1
  1095. package/dist/store/task-claim.d.ts.map +1 -1
  1096. package/dist/store/task-claim.js +1 -1
  1097. package/dist/store/task-claim.js.map +1 -1
  1098. package/dist/store/task-reference-columns.d.ts +27 -0
  1099. package/dist/store/task-reference-columns.d.ts.map +1 -0
  1100. package/dist/store/task-reference-columns.js +65 -0
  1101. package/dist/store/task-reference-columns.js.map +1 -0
  1102. package/dist/store/task-version.d.ts +1 -1
  1103. package/dist/store/task-version.d.ts.map +1 -1
  1104. package/dist/store/task-version.js +1 -1
  1105. package/dist/store/task-version.js.map +1 -1
  1106. package/dist/store/tasks-schema.d.ts +2 -1
  1107. package/dist/store/tasks-schema.d.ts.map +1 -1
  1108. package/dist/store/tasks-schema.js +5 -4
  1109. package/dist/store/tasks-schema.js.map +1 -1
  1110. package/dist/store/tasks-sqlite.d.ts +1 -1
  1111. package/dist/store/tasks-sqlite.d.ts.map +1 -1
  1112. package/dist/store/tasks-sqlite.js +3 -1
  1113. package/dist/store/tasks-sqlite.js.map +1 -1
  1114. package/dist/store/twin-collapse.d.ts +43 -14
  1115. package/dist/store/twin-collapse.d.ts.map +1 -1
  1116. package/dist/store/twin-collapse.js +373 -32
  1117. package/dist/store/twin-collapse.js.map +1 -1
  1118. package/dist/store/validation-schemas.d.ts +44 -674
  1119. package/dist/store/validation-schemas.d.ts.map +1 -1
  1120. package/dist/store/validation-schemas.js +2 -22
  1121. package/dist/store/validation-schemas.js.map +1 -1
  1122. package/dist/store/vault-manifest.d.ts +6 -2
  1123. package/dist/store/vault-manifest.d.ts.map +1 -1
  1124. package/dist/store/vault-manifest.js +10 -3
  1125. package/dist/store/vault-manifest.js.map +1 -1
  1126. package/dist/store/worktree-build-guard.js +1 -1
  1127. package/dist/store/worktree-build-guard.js.map +1 -1
  1128. package/dist/store/worktree-isolation-guard.js +1 -1
  1129. package/dist/store/worktree-isolation-guard.js.map +1 -1
  1130. package/dist/store/writer-lease.d.ts.map +1 -1
  1131. package/dist/store/writer-lease.js +1 -11
  1132. package/dist/store/writer-lease.js.map +1 -1
  1133. package/dist/store/zod-schema-factory.d.ts +16 -0
  1134. package/dist/store/zod-schema-factory.d.ts.map +1 -0
  1135. package/dist/store/zod-schema-factory.js +23 -0
  1136. package/dist/store/zod-schema-factory.js.map +1 -0
  1137. package/dist/system/backup.d.ts +106 -0
  1138. package/dist/system/backup.d.ts.map +1 -1
  1139. package/dist/system/backup.js +295 -19
  1140. package/dist/system/backup.js.map +1 -1
  1141. package/dist/system/cleanup.js +1 -1
  1142. package/dist/system/cleanup.js.map +1 -1
  1143. package/dist/system/health.d.ts +13 -0
  1144. package/dist/system/health.d.ts.map +1 -1
  1145. package/dist/system/health.js +96 -1
  1146. package/dist/system/health.js.map +1 -1
  1147. package/dist/system/labels.js +1 -1
  1148. package/dist/system/labels.js.map +1 -1
  1149. package/dist/system/migrate.js +1 -1
  1150. package/dist/system/migrate.js.map +1 -1
  1151. package/dist/system/safestop.d.ts.map +1 -1
  1152. package/dist/system/safestop.js +1 -1
  1153. package/dist/system/safestop.js.map +1 -1
  1154. package/dist/task-work/current.d.ts +34 -0
  1155. package/dist/task-work/current.d.ts.map +1 -0
  1156. package/dist/task-work/current.js +34 -0
  1157. package/dist/task-work/current.js.map +1 -0
  1158. package/dist/task-work/index.d.ts +2 -19
  1159. package/dist/task-work/index.d.ts.map +1 -1
  1160. package/dist/task-work/index.js +6 -20
  1161. package/dist/task-work/index.js.map +1 -1
  1162. package/dist/tasks/ac-identity.d.ts +28 -0
  1163. package/dist/tasks/ac-identity.d.ts.map +1 -0
  1164. package/dist/tasks/ac-identity.js +43 -0
  1165. package/dist/tasks/ac-identity.js.map +1 -0
  1166. package/dist/tasks/ac-immutability.d.ts +1 -1
  1167. package/dist/tasks/ac-immutability.d.ts.map +1 -1
  1168. package/dist/tasks/ac-immutability.js +1 -1
  1169. package/dist/tasks/ac-immutability.js.map +1 -1
  1170. package/dist/tasks/ac-table.d.ts +2 -14
  1171. package/dist/tasks/ac-table.d.ts.map +1 -1
  1172. package/dist/tasks/ac-table.js +6 -29
  1173. package/dist/tasks/ac-table.js.map +1 -1
  1174. package/dist/tasks/acceptance-input.js +1 -1
  1175. package/dist/tasks/acceptance-input.js.map +1 -1
  1176. package/dist/tasks/add.d.ts.map +1 -1
  1177. package/dist/tasks/add.js +3 -1
  1178. package/dist/tasks/add.js.map +1 -1
  1179. package/dist/tasks/affected-packages.d.ts +100 -19
  1180. package/dist/tasks/affected-packages.d.ts.map +1 -1
  1181. package/dist/tasks/affected-packages.js +169 -32
  1182. package/dist/tasks/affected-packages.js.map +1 -1
  1183. package/dist/tasks/affected-template.d.ts +93 -0
  1184. package/dist/tasks/affected-template.d.ts.map +1 -0
  1185. package/dist/tasks/affected-template.js +198 -0
  1186. package/dist/tasks/affected-template.js.map +1 -0
  1187. package/dist/tasks/archive.d.ts.map +1 -1
  1188. package/dist/tasks/archive.js +1 -1
  1189. package/dist/tasks/archive.js.map +1 -1
  1190. package/dist/tasks/axis-filters.d.ts.map +1 -1
  1191. package/dist/tasks/axis-filters.js +2 -1
  1192. package/dist/tasks/axis-filters.js.map +1 -1
  1193. package/dist/tasks/child-disposition.js +1 -1
  1194. package/dist/tasks/child-disposition.js.map +1 -1
  1195. package/dist/tasks/collection.js +1 -1
  1196. package/dist/tasks/collection.js.map +1 -1
  1197. package/dist/tasks/command-line.d.ts +4 -1
  1198. package/dist/tasks/command-line.d.ts.map +1 -1
  1199. package/dist/tasks/command-line.js +7 -2
  1200. package/dist/tasks/command-line.js.map +1 -1
  1201. package/dist/tasks/complete.d.ts.map +1 -1
  1202. package/dist/tasks/complete.js +2 -1
  1203. package/dist/tasks/complete.js.map +1 -1
  1204. package/dist/tasks/decompose.js +1 -1
  1205. package/dist/tasks/decompose.js.map +1 -1
  1206. package/dist/tasks/delete.js +1 -1
  1207. package/dist/tasks/delete.js.map +1 -1
  1208. package/dist/tasks/done-plan.d.ts +2 -1
  1209. package/dist/tasks/done-plan.d.ts.map +1 -1
  1210. package/dist/tasks/done-plan.js +21 -21
  1211. package/dist/tasks/done-plan.js.map +1 -1
  1212. package/dist/tasks/done-record.d.ts +1 -1
  1213. package/dist/tasks/done-record.d.ts.map +1 -1
  1214. package/dist/tasks/done-record.js +1 -1
  1215. package/dist/tasks/done-record.js.map +1 -1
  1216. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  1217. package/dist/tasks/duplicate-detector.js +11 -5
  1218. package/dist/tasks/duplicate-detector.js.map +1 -1
  1219. package/dist/tasks/enforcement.d.ts +2 -1
  1220. package/dist/tasks/enforcement.d.ts.map +1 -1
  1221. package/dist/tasks/enforcement.js +1 -1
  1222. package/dist/tasks/enforcement.js.map +1 -1
  1223. package/dist/tasks/engine-wrap-ops.js +1 -1
  1224. package/dist/tasks/engine-wrap-ops.js.map +1 -1
  1225. package/dist/tasks/engine-wrap.d.ts.map +1 -1
  1226. package/dist/tasks/engine-wrap.js +7 -3
  1227. package/dist/tasks/engine-wrap.js.map +1 -1
  1228. package/dist/tasks/epic-enforcement.js +1 -1
  1229. package/dist/tasks/epic-enforcement.js.map +1 -1
  1230. package/dist/tasks/evidence.d.ts.map +1 -1
  1231. package/dist/tasks/evidence.js +216 -20
  1232. package/dist/tasks/evidence.js.map +1 -1
  1233. package/dist/tasks/find.js +1 -1
  1234. package/dist/tasks/find.js.map +1 -1
  1235. package/dist/tasks/gate-result-cache.js +1 -1
  1236. package/dist/tasks/gate-result-cache.js.map +1 -1
  1237. package/dist/tasks/gate-runner.d.ts.map +1 -1
  1238. package/dist/tasks/gate-runner.js +1 -1
  1239. package/dist/tasks/gate-runner.js.map +1 -1
  1240. package/dist/tasks/heavy-tool-env.d.ts +454 -19
  1241. package/dist/tasks/heavy-tool-env.d.ts.map +1 -1
  1242. package/dist/tasks/heavy-tool-env.js +818 -42
  1243. package/dist/tasks/heavy-tool-env.js.map +1 -1
  1244. package/dist/tasks/index.d.ts +3 -3
  1245. package/dist/tasks/index.d.ts.map +1 -1
  1246. package/dist/tasks/index.js +3 -3
  1247. package/dist/tasks/index.js.map +1 -1
  1248. package/dist/tasks/labels.js +1 -1
  1249. package/dist/tasks/labels.js.map +1 -1
  1250. package/dist/tasks/nexus-impact-gate.js +1 -1
  1251. package/dist/tasks/nexus-impact-gate.js.map +1 -1
  1252. package/dist/tasks/pipeline-stage.js +1 -1
  1253. package/dist/tasks/pipeline-stage.js.map +1 -1
  1254. package/dist/tasks/population.js +1 -1
  1255. package/dist/tasks/population.js.map +1 -1
  1256. package/dist/tasks/ranking-audit.js +1 -1
  1257. package/dist/tasks/ranking-audit.js.map +1 -1
  1258. package/dist/tasks/reconcile-scope.js +1 -1
  1259. package/dist/tasks/reconcile-scope.js.map +1 -1
  1260. package/dist/tasks/relates.js +1 -1
  1261. package/dist/tasks/relates.js.map +1 -1
  1262. package/dist/tasks/req.d.ts.map +1 -1
  1263. package/dist/tasks/req.js +2 -1
  1264. package/dist/tasks/req.js.map +1 -1
  1265. package/dist/tasks/severity-attestation.d.ts +1 -1
  1266. package/dist/tasks/severity-attestation.d.ts.map +1 -1
  1267. package/dist/tasks/severity-attestation.js +1 -1
  1268. package/dist/tasks/severity-attestation.js.map +1 -1
  1269. package/dist/tasks/show.d.ts.map +1 -1
  1270. package/dist/tasks/show.js +47 -3
  1271. package/dist/tasks/show.js.map +1 -1
  1272. package/dist/tasks/task-import.js +1 -1
  1273. package/dist/tasks/task-import.js.map +1 -1
  1274. package/dist/tasks/task-reparent.d.ts.map +1 -1
  1275. package/dist/tasks/task-reparent.js +2 -1
  1276. package/dist/tasks/task-reparent.js.map +1 -1
  1277. package/dist/tasks/test-run-binding.d.ts.map +1 -1
  1278. package/dist/tasks/test-run-binding.js +9 -2
  1279. package/dist/tasks/test-run-binding.js.map +1 -1
  1280. package/dist/tasks/tool-cache-env.d.ts +20 -13
  1281. package/dist/tasks/tool-cache-env.d.ts.map +1 -1
  1282. package/dist/tasks/tool-cache-env.js +27 -48
  1283. package/dist/tasks/tool-cache-env.js.map +1 -1
  1284. package/dist/tasks/tool-cache.d.ts +30 -7
  1285. package/dist/tasks/tool-cache.d.ts.map +1 -1
  1286. package/dist/tasks/tool-cache.js +74 -20
  1287. package/dist/tasks/tool-cache.js.map +1 -1
  1288. package/dist/tasks/tool-resolver.d.ts +8 -0
  1289. package/dist/tasks/tool-resolver.d.ts.map +1 -1
  1290. package/dist/tasks/tool-resolver.js +15 -1
  1291. package/dist/tasks/tool-resolver.js.map +1 -1
  1292. package/dist/tasks/tool-runner-guard.d.ts +131 -0
  1293. package/dist/tasks/tool-runner-guard.d.ts.map +1 -0
  1294. package/dist/tasks/tool-runner-guard.js +141 -0
  1295. package/dist/tasks/tool-runner-guard.js.map +1 -0
  1296. package/dist/tasks/tool-semaphore.d.ts +106 -302
  1297. package/dist/tasks/tool-semaphore.d.ts.map +1 -1
  1298. package/dist/tasks/tool-semaphore.js +132 -558
  1299. package/dist/tasks/tool-semaphore.js.map +1 -1
  1300. package/dist/tasks/update.d.ts.map +1 -1
  1301. package/dist/tasks/update.js +2 -1
  1302. package/dist/tasks/update.js.map +1 -1
  1303. package/dist/upgrade.d.ts.map +1 -1
  1304. package/dist/upgrade.js +35 -31
  1305. package/dist/upgrade.js.map +1 -1
  1306. package/dist/validation/doctor/checks.d.ts +41 -0
  1307. package/dist/validation/doctor/checks.d.ts.map +1 -1
  1308. package/dist/validation/doctor/checks.js +251 -0
  1309. package/dist/validation/doctor/checks.js.map +1 -1
  1310. package/dist/validation/doctor/index.d.ts +1 -1
  1311. package/dist/validation/doctor/index.d.ts.map +1 -1
  1312. package/dist/validation/doctor/index.js +1 -1
  1313. package/dist/validation/doctor/index.js.map +1 -1
  1314. package/dist/validation/engine-ops.js +1 -1
  1315. package/dist/validation/engine-ops.js.map +1 -1
  1316. package/dist/validation/engine.d.ts +1 -1
  1317. package/dist/validation/engine.d.ts.map +1 -1
  1318. package/dist/validation/engine.js +2 -1
  1319. package/dist/validation/engine.js.map +1 -1
  1320. package/dist/validation/index.d.ts +1 -1
  1321. package/dist/validation/index.d.ts.map +1 -1
  1322. package/dist/validation/index.js +1 -1
  1323. package/dist/validation/index.js.map +1 -1
  1324. package/dist/validation/operation-gate-validators.js +1 -1
  1325. package/dist/validation/operation-gate-validators.js.map +1 -1
  1326. package/dist/validation/protocol-common.js +1 -1
  1327. package/dist/validation/protocol-common.js.map +1 -1
  1328. package/dist/validation/protocols/_shared.js +1 -1
  1329. package/dist/validation/protocols/_shared.js.map +1 -1
  1330. package/dist/validation/validate-ops.js +1 -1
  1331. package/dist/validation/validate-ops.js.map +1 -1
  1332. package/dist/validation/verification.js +1 -1
  1333. package/dist/validation/verification.js.map +1 -1
  1334. package/dist/workgraph/index.d.ts +1 -1
  1335. package/dist/workgraph/index.d.ts.map +1 -1
  1336. package/dist/workgraph/index.js +1 -1
  1337. package/dist/workgraph/index.js.map +1 -1
  1338. package/dist/workgraph/reparent-preflight.d.ts +1 -2
  1339. package/dist/workgraph/reparent-preflight.d.ts.map +1 -1
  1340. package/dist/workgraph/reparent-preflight.js +1 -1
  1341. package/dist/workgraph/reparent-preflight.js.map +1 -1
  1342. package/dist/workgraph/scaffold-validate.js +1 -1
  1343. package/dist/workgraph/scaffold-validate.js.map +1 -1
  1344. package/dist/worktree/force-unlock.d.ts +1 -1
  1345. package/dist/worktree/force-unlock.d.ts.map +1 -1
  1346. package/dist/worktree/force-unlock.js +1 -1
  1347. package/dist/worktree/force-unlock.js.map +1 -1
  1348. package/dist/worktree/isolation.d.ts +1 -1
  1349. package/dist/worktree/isolation.d.ts.map +1 -1
  1350. package/dist/worktree/isolation.js +1 -1
  1351. package/dist/worktree/isolation.js.map +1 -1
  1352. package/dist/worktree/list.d.ts +1 -1
  1353. package/dist/worktree/list.d.ts.map +1 -1
  1354. package/dist/worktree/list.js +1 -1
  1355. package/dist/worktree/list.js.map +1 -1
  1356. package/dist/worktree/prune.d.ts +1 -1
  1357. package/dist/worktree/prune.d.ts.map +1 -1
  1358. package/dist/worktree/prune.js +1 -1
  1359. package/dist/worktree/prune.js.map +1 -1
  1360. package/dist/worktree/worktree-adopt.d.ts +1 -2
  1361. package/dist/worktree/worktree-adopt.d.ts.map +1 -1
  1362. package/dist/worktree/worktree-adopt.js +1 -1
  1363. package/dist/worktree/worktree-adopt.js.map +1 -1
  1364. package/migrations/sync-journal/20261004120000_t12757-apply-intent/migration.sql +21 -0
  1365. package/migrations/sync-journal/20261005120000_t12344-inbox/migration.sql +67 -0
  1366. package/migrations/sync-journal/20261006120000_t13193-rebase-undo/migration.sql +51 -0
  1367. package/migrations/sync-journal/20261006130000_t13193-rebase-state/migration.sql +17 -0
  1368. package/migrations/sync-journal/20261006140000_t13193-held-rows/migration.sql +24 -0
  1369. package/package.json +13 -13
  1370. package/schemas/project-context.schema.json +19 -1
  1371. package/templates/CLEO-INJECTION.md +11 -11
  1372. package/templates/CLEO-REFERENCE.md +2 -2
  1373. package/templates/workflows/release-prepare.yml.tmpl +10 -10
@@ -0,0 +1,295 @@
1
+ /**
2
+ * Own-echo sequencing and the foreign-touch index (T13193; journal spec §3.5
3
+ * Rules 2-3, R7-6).
4
+ *
5
+ * A sealed local transaction stays **unsequenced** until its own echo comes
6
+ * back through the stream. Until then it keeps its undo (`_sync_undo`, the
7
+ * values) and its row undo (`_sync_row_undo`, the merge state: row meta,
8
+ * leaves, frontiers), so a scoped rebase can rewind it.
9
+ *
10
+ * When the echo applies, the **fast path** decides whether a rebase is needed:
11
+ * if no foreign transaction applied after this transaction's commit touched
12
+ * its rows, the stream order and the local order agree, so the echo is simply
13
+ * sequenced and its undo dropped. The order is exact, with no clock: a local
14
+ * transaction's position is its first capture's seq, and a foreign touch
15
+ * records the capture sequence (`sqlite_sequence` of `_sync_capture`) when its
16
+ * transaction applied. Both come from the one AUTOINCREMENT counter.
17
+ *
18
+ * Unframed writers (foreign connections) seal as singleton transactions with
19
+ * no frame and undo rows with no `txn_local`: they have no position here, are
20
+ * sequenced on echo without a check, and keep their undo until R-2 keys it by
21
+ * capture seq. A split part-set (`LedgerTxn.part`, not sealed today) would map
22
+ * one frame to several transactions.
23
+ *
24
+ * The index holds only entries at or after the oldest unsequenced local
25
+ * transaction and is bounded by {@link FOREIGN_TOUCH_MAX}; past the bound it
26
+ * is marked incomplete and the fast path declines (falling back to the scoped
27
+ * rebase) until the unsequenced backlog drains.
28
+ *
29
+ * @module store/sync/sequencing
30
+ * @task T13193
31
+ */
32
+ import { LedgerActor, LedgerOp } from '@cleocode/contracts/ledger';
33
+ import { actorOpOf, readFieldFrontiers, readFieldLeaves, } from './field-leave.js';
34
+ import { readRowMetaFull } from './row-meta.js';
35
+ import { canonicalJson } from './sealer-values.js';
36
+ /** The foreign-touch index's bound (spec R7-6). */
37
+ export const FOREIGN_TOUCH_MAX = 200_000;
38
+ /** `_sync_meta` key set while the foreign-touch index overflowed its bound. */
39
+ export const FOREIGN_TOUCH_INCOMPLETE_KEY = 'sync.foreign_touch_incomplete';
40
+ /** Whether undo is being written (§3.5 Rule 2: on exactly while push is on). */
41
+ export function undoEnabled(db) {
42
+ return db.prepare("SELECT 1 FROM _sync_meta WHERE key = 'undo_enabled'").get() !== undefined;
43
+ }
44
+ /**
45
+ * Snapshot a row's merge state before a local op moves it (the sealer calls
46
+ * this per sealed op while undo is enabled): its row meta, leaves and
47
+ * frontiers, so a rewind can restore them with the values.
48
+ *
49
+ * @param db - The store, inside the sealer's transaction.
50
+ * @param txn - The sealed transaction id.
51
+ * @param idx - The op's index in it.
52
+ * @param tbl - The row's table.
53
+ * @param uid - The row's uid before the op.
54
+ */
55
+ export function snapshotRowUndo(db, txn, idx, tbl, uid) {
56
+ const meta = readRowMetaFull(db, tbl, uid);
57
+ const leaves = readFieldLeaves(db, tbl, uid);
58
+ const frontiers = readFieldFrontiers(db, tbl, uid);
59
+ const state = Object.keys(leaves).length + Object.keys(frontiers).length > 0
60
+ ? canonicalJson({ leaves, frontiers })
61
+ : null;
62
+ db.prepare(`INSERT INTO _sync_row_undo (txn, idx, tbl, uid, meta_json, leave_json) VALUES (?, ?, ?, ?, ?, ?)
63
+ ON CONFLICT (txn, idx) DO NOTHING`).run(txn, idx, tbl, uid, meta ? canonicalJson(meta) : null, state);
64
+ }
65
+ /**
66
+ * The capture position now: the last seq `_sync_capture` handed out (0 when
67
+ * none). A write made after this point has a larger seq.
68
+ */
69
+ export function capturePosition(db) {
70
+ const row = db.prepare("SELECT seq FROM sqlite_sequence WHERE name = '_sync_capture'").get();
71
+ return Number(row?.seq ?? 0);
72
+ }
73
+ /**
74
+ * The oldest unsequenced local transaction's position: its frame's first
75
+ * undo seq. Joins through the `_sync_txn_frame` index (T13260), since it
76
+ * runs on every echo and foreign apply under the write lock.
77
+ */
78
+ export const OLDEST_UNSEQUENCED_SQL = `SELECT min(u.seq) AS p FROM _sync_undo u JOIN _sync_txn t ON t.frame = u.txn_local
79
+ WHERE t.state = 'sealed' AND NOT EXISTS (SELECT 1 FROM _sync_sequenced s WHERE s.txn = t.txn)`;
80
+ /**
81
+ * Drop the undo of frames sealed into no transaction (netted away, or
82
+ * inherited/folded) that hold no live capture. Probes `_sync_txn` through
83
+ * the `_sync_txn_frame` index (T13260).
84
+ */
85
+ export const DROP_NETTED_UNDO_SQL = `DELETE FROM _sync_undo WHERE txn_local IS NOT NULL
86
+ AND NOT EXISTS (SELECT 1 FROM _sync_txn t WHERE t.frame = _sync_undo.txn_local)
87
+ AND NOT EXISTS (SELECT 1 FROM _sync_capture c WHERE c.frame = _sync_undo.txn_local AND c.state = 'live')`;
88
+ /** The oldest unsequenced local transaction's position, or null when none has undo. */
89
+ function oldestUnsequencedPosition(db) {
90
+ const row = db.prepare(OLDEST_UNSEQUENCED_SQL).get();
91
+ return row.p === null ? null : Number(row.p);
92
+ }
93
+ /**
94
+ * Record the rows an applied foreign transaction touched, at `pos`. Nothing
95
+ * is recorded while no local transaction is unsequenced (no echo will ask).
96
+ *
97
+ * @param db - The store, inside the apply frame.
98
+ * @param rows - The rows the transaction wrote.
99
+ * @param pos - {@link capturePosition} when the transaction began applying.
100
+ */
101
+ export function recordForeignTouches(db, rows, pos) {
102
+ if (rows.length === 0 || oldestUnsequencedPosition(db) === null)
103
+ return;
104
+ if (counterRestarted(db))
105
+ markIncomplete(db);
106
+ const ins = db.prepare('INSERT INTO _sync_foreign_touch (tbl, uid, pos) VALUES (?, ?, ?) ON CONFLICT DO NOTHING');
107
+ let added = 0;
108
+ for (const r of rows)
109
+ added += Number(ins.run(r.table, r.uid, pos).changes);
110
+ // A running count, not a scan per transaction near the bound (#1912 LOW-2).
111
+ if (added > 0 && adjustTouchCount(db, added) > FOREIGN_TOUCH_MAX)
112
+ markIncomplete(db);
113
+ }
114
+ /** `_sync_meta` key holding the foreign-touch index's row count. */
115
+ export const FOREIGN_TOUCH_COUNT_KEY = 'sync.foreign_touch_count';
116
+ function adjustTouchCount(db, delta) {
117
+ const row = db
118
+ .prepare(`INSERT INTO _sync_meta (key, value, updated_at) VALUES (?, ?, datetime('now'))
119
+ ON CONFLICT (key) DO UPDATE SET value = CAST(value AS INTEGER) + excluded.value, updated_at = excluded.updated_at
120
+ RETURNING CAST(value AS INTEGER) AS n`)
121
+ .get(FOREIGN_TOUCH_COUNT_KEY, delta);
122
+ return Number(row.n);
123
+ }
124
+ function markIncomplete(db) {
125
+ db.prepare(`INSERT INTO _sync_meta (key, value, updated_at) VALUES (?, '1', datetime('now'))
126
+ ON CONFLICT (key) DO NOTHING`).run(FOREIGN_TOUCH_INCOMPLETE_KEY);
127
+ }
128
+ /**
129
+ * Whether `_sync_capture`'s counter restarted under unsequenced undo (the
130
+ * table was re-created, #1912 LOW-1): an undo seq above the counter's last
131
+ * value means new positions would sort below old ones, so the fast path can
132
+ * no longer order foreign touches against local commits.
133
+ */
134
+ function counterRestarted(db) {
135
+ const row = db.prepare('SELECT max(seq) AS m FROM _sync_undo').get();
136
+ return row.m !== null && Number(row.m) > capturePosition(db);
137
+ }
138
+ /**
139
+ * The unsequenced sealed local transaction with this id, or null (not ours,
140
+ * or already sequenced).
141
+ *
142
+ * @param db - The store.
143
+ * @param txn - The transaction id the echo carries.
144
+ * @returns The local transaction, or null.
145
+ */
146
+ export function unsequencedLocalTxn(db, txn) {
147
+ const t = db
148
+ .prepare(`SELECT t.txn, t.frame FROM _sync_txn t WHERE t.txn = ?
149
+ AND NOT EXISTS (SELECT 1 FROM _sync_sequenced s WHERE s.txn = t.txn)`)
150
+ .get(txn);
151
+ if (!t)
152
+ return null;
153
+ const p = t.frame === null
154
+ ? undefined
155
+ : db.prepare('SELECT min(seq) AS p FROM _sync_undo WHERE txn_local = ?').get(t.frame);
156
+ return { txn: t.txn, frame: t.frame, position: p?.p == null ? null : Number(p.p) };
157
+ }
158
+ /**
159
+ * The own-echo fast path (Rule 3): whether no foreign transaction applied at
160
+ * or after `local`'s commit touched any of `rows`. False while the index is
161
+ * incomplete.
162
+ *
163
+ * @param db - The store.
164
+ * @param local - The echoed local transaction.
165
+ * @param rows - The rows its ops wrote.
166
+ * @returns True when the echo can be sequenced without a rebase.
167
+ */
168
+ export function ownEchoFastPath(db, local, rows) {
169
+ if (local.position === null)
170
+ return true; // nothing to rewind
171
+ if (counterRestarted(db))
172
+ markIncomplete(db);
173
+ if (db.prepare('SELECT 1 FROM _sync_meta WHERE key = ?').get(FOREIGN_TOUCH_INCOMPLETE_KEY) !==
174
+ undefined) {
175
+ return false;
176
+ }
177
+ const hit = db.prepare('SELECT 1 FROM _sync_foreign_touch WHERE tbl = ? AND uid = ? AND pos >= ? LIMIT 1');
178
+ return !rows.some((r) => hit.get(r.table, r.uid, local.position) !== undefined);
179
+ }
180
+ /**
181
+ * Mark an own transaction sequenced by its echo: record it, drop its undo
182
+ * and row undo (and the undo of frames that netted to no transaction), and
183
+ * prune the foreign-touch index past the new oldest
184
+ * unsequenced transaction (resetting it, and its incomplete mark, when none
185
+ * is left).
186
+ *
187
+ * @param db - The store, inside the apply frame.
188
+ * @param local - The echoed local transaction.
189
+ * @param at - The echo's stream position and the time.
190
+ */
191
+ export function markSequenced(db, local, at) {
192
+ const outcome = at.outcome ?? 'applied';
193
+ db.prepare('INSERT INTO _sync_sequenced (txn, stream, seq, at, outcome) VALUES (?, ?, ?, ?, ?) ON CONFLICT DO NOTHING').run(local.txn, at.stream, at.seq, at.nowIso, outcome);
194
+ if (outcome === 'applied') {
195
+ if (local.frame !== null) {
196
+ db.prepare('DELETE FROM _sync_undo WHERE txn_local = ?').run(local.frame);
197
+ }
198
+ db.prepare('DELETE FROM _sync_row_undo WHERE txn = ?').run(local.txn);
199
+ }
200
+ // A frame whose ops all netted away was sealed into no transaction: its
201
+ // undo can never be sequenced or rewound, so it goes too (its captures are
202
+ // consumed; a frame still waiting to seal keeps live captures).
203
+ db.prepare(DROP_NETTED_UNDO_SQL).run();
204
+ const oldest = oldestUnsequencedPosition(db);
205
+ if (oldest === null) {
206
+ db.prepare('DELETE FROM _sync_foreign_touch').run();
207
+ db.prepare('DELETE FROM _sync_meta WHERE key IN (?, ?)').run(FOREIGN_TOUCH_INCOMPLETE_KEY, FOREIGN_TOUCH_COUNT_KEY);
208
+ }
209
+ else {
210
+ const gone = Number(db.prepare('DELETE FROM _sync_foreign_touch WHERE pos < ?').run(oldest).changes);
211
+ if (gone > 0)
212
+ adjustTouchCount(db, -gone);
213
+ }
214
+ }
215
+ /**
216
+ * Every sealed local transaction not yet sequenced, in local commit order.
217
+ *
218
+ * @param db - The store.
219
+ * @returns The transactions with their sealed ops.
220
+ */
221
+ export function unsequencedLocalTxns(db) {
222
+ const txns = db
223
+ .prepare(`SELECT t.txn, t.frame, t.actor FROM _sync_txn t
224
+ WHERE t.state = 'sealed' AND NOT EXISTS (SELECT 1 FROM _sync_sequenced s WHERE s.txn = t.txn)
225
+ ORDER BY t.local_seq`)
226
+ .all();
227
+ const ops = db.prepare('SELECT body FROM _sync_op WHERE txn = ? ORDER BY idx');
228
+ return txns.map((t) => {
229
+ const local = unsequencedLocalTxn(db, t.txn);
230
+ let actor = null;
231
+ if (t.actor?.startsWith('{')) {
232
+ try {
233
+ const parsed = LedgerActor.safeParse(JSON.parse(t.actor));
234
+ if (parsed.success)
235
+ actor = parsed.data;
236
+ }
237
+ catch {
238
+ actor = null;
239
+ }
240
+ }
241
+ return {
242
+ ...local,
243
+ actor,
244
+ actorOp: actorOpOf(t.actor),
245
+ ops: ops.all(t.txn).map((o) => LedgerOp.parse(JSON.parse(o.body))),
246
+ };
247
+ });
248
+ }
249
+ /**
250
+ * The row undo of a sealed local op, or undefined when none was kept.
251
+ *
252
+ * @param db - The store.
253
+ * @param txn - The local transaction.
254
+ * @param idx - The op's index.
255
+ * @returns The snapshot, or undefined.
256
+ */
257
+ export function readRowUndo(db, txn, idx) {
258
+ const row = db
259
+ .prepare('SELECT meta_json, leave_json, values_json FROM _sync_row_undo WHERE txn = ? AND idx = ?')
260
+ .get(txn, idx);
261
+ if (!row)
262
+ return undefined;
263
+ return {
264
+ meta: row.meta_json === null ? null : JSON.parse(row.meta_json),
265
+ state: row.leave_json === null ? null : JSON.parse(row.leave_json),
266
+ values: row.values_json === null
267
+ ? null
268
+ : JSON.parse(row.values_json),
269
+ };
270
+ }
271
+ /**
272
+ * Re-snapshot a local op's row undo right before a rebase replays it: the
273
+ * merge state and the values it is about to write over, so the next rewind
274
+ * restores exactly what this replay sat on (D2).
275
+ *
276
+ * @param db - The store, inside the rebase frame.
277
+ * @param txn - The local transaction.
278
+ * @param idx - The op's index.
279
+ * @param tbl - The row's table.
280
+ * @param uid - The row's uid.
281
+ * @param values - The wire values the op is about to overwrite.
282
+ */
283
+ export function resnapshotRowUndo(db, txn, idx, tbl, uid, values) {
284
+ const meta = readRowMetaFull(db, tbl, uid);
285
+ const leaves = readFieldLeaves(db, tbl, uid);
286
+ const frontiers = readFieldFrontiers(db, tbl, uid);
287
+ const state = Object.keys(leaves).length + Object.keys(frontiers).length > 0
288
+ ? canonicalJson({ leaves, frontiers })
289
+ : null;
290
+ db.prepare(`INSERT INTO _sync_row_undo (txn, idx, tbl, uid, meta_json, leave_json, values_json)
291
+ VALUES (?, ?, ?, ?, ?, ?, ?)
292
+ ON CONFLICT (txn, idx) DO UPDATE SET meta_json = excluded.meta_json,
293
+ leave_json = excluded.leave_json, values_json = excluded.values_json`).run(txn, idx, tbl, uid, meta ? canonicalJson(meta) : null, state, canonicalJson(values));
294
+ }
295
+ //# sourceMappingURL=sequencing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequencing.js","sourceRoot":"","sources":["../../../src/store/sync/sequencing.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,10 @@
6
6
  * triggers are dropped, `fn` runs its DDL or data rewrite, and the triggers
7
7
  * are regenerated for the new schema, all in ONE transaction the bracket
8
8
  * opens and commits itself. A second connection's write waits on the
9
- * bracket's write lock and is captured by the reinstalled triggers.
9
+ * bracket's write lock and is captured by the reinstalled triggers. A body
10
+ * that rebuilds tables declares them, and the bracket applies rule 2 (A,
11
+ * T12774): foreign keys off before BEGIN, a foreign_key_check that refuses
12
+ * only new violations before COMMIT, and the FK mode restored after.
10
13
  * - {@link touchSet}: the tables a rewrite can change, generated rather than
11
14
  * hand-written: the written tables, their FK-action children (CASCADE,
12
15
  * SET NULL, SET DEFAULT on delete; CASCADE on update), and every table a
@@ -27,16 +30,41 @@ export declare class BracketTransactionError extends Error {
27
30
  readonly code = "E_SYNC_BRACKET_TXN";
28
31
  constructor(message: string);
29
32
  }
33
+ /** A bracketed rebuild that would leave foreign-key violations it did not find. */
34
+ export declare class BracketForeignKeyError extends Error {
35
+ readonly violations: readonly string[];
36
+ readonly code = "E_SYNC_BRACKET_FK_VIOLATION";
37
+ constructor(violations: readonly string[]);
38
+ }
39
+ /** Options of {@link withSyncTriggersSuspended}. */
40
+ export interface SyncSuspensionOptions {
41
+ /**
42
+ * The tables `fn` rebuilds (create a copy, copy the rows, DROP the original,
43
+ * RENAME the copy), named as they are after the rebuild. Inside a
44
+ * transaction `PRAGMA foreign_keys` is a no-op, so without this a rebuild's
45
+ * DROP would cascade-delete child rows, uncaptured (§2.3a rule 2, A T12774).
46
+ * When non-empty, the bracket turns foreign keys off BEFORE its BEGIN,
47
+ * snapshots the violations of these tables and their FK children, refuses
48
+ * only violations the snapshot did not hold, and restores the FK mode after.
49
+ */
50
+ readonly rebuilds?: readonly string[];
51
+ }
30
52
  /**
31
53
  * Run `fn` with the capture triggers dropped, in one transaction this
32
54
  * bracket opens and commits (§2.3a rule 1). The triggers are reinstalled for
33
55
  * the schema `fn` leaves, before COMMIT. When capture is off, `fn` still runs
34
56
  * in the bracket's transaction and nothing is dropped.
35
57
  *
58
+ * @param db - The store handle; must not be inside a transaction.
59
+ * @param scope - The store's scope (selects the capture triggers to reinstall).
60
+ * @param fn - The DDL or data rewrite. Must not end the transaction.
61
+ * @param options - {@link SyncSuspensionOptions}: declare rebuilt tables.
36
62
  * @throws {BracketTransactionError} When called inside a transaction, or when
37
63
  * `fn` ends the bracket's transaction.
64
+ * @throws {BracketForeignKeyError} When a declared rebuild leaves new FK violations.
65
+ * @throws {ForeignKeysNotRestoredError} When the FK mode could not be restored.
38
66
  */
39
- export declare function withSyncTriggersSuspended<T>(db: DatabaseSync, scope: TableScope, fn: () => T): T;
67
+ export declare function withSyncTriggersSuspended<T>(db: DatabaseSync, scope: TableScope, fn: () => T, options?: SyncSuspensionOptions): T;
40
68
  /**
41
69
  * The touch set of a rewrite of `tables` (NEW-8): the tables themselves, their
42
70
  * FK-action children, and every table a trigger on any member writes,
@@ -1 +1 @@
1
- {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../../src/store/sync/structural.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAOtD,+EAA+E;AAC/E,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,wBAAwB;gBAEzB,OAAO,EAAE,MAAM;CAI5B;AAQD;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAqChG;AAQD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CA8C9E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,MAAM,EAAE,CAWV;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,EAAE,CAOxD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,EAAE,EAAE,MAAM,CAAC,GACV;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAMlC"}
1
+ {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../../src/store/sync/structural.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAatD,+EAA+E;AAC/E,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,IAAI,wBAAwB;gBAEzB,OAAO,EAAE,MAAM;CAI5B;AAED,mFAAmF;AACnF,qBAAa,sBAAuB,SAAQ,KAAK;IAGnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE;IAFlD,QAAQ,CAAC,IAAI,iCAAiC;gBAEzB,UAAU,EAAE,SAAS,MAAM,EAAE;CAOnD;AAED,oDAAoD;AACpD,MAAM,WAAW,qBAAqB;IACpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACvC;AAYD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EACzC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EACjB,EAAE,EAAE,MAAM,CAAC,EACX,OAAO,GAAE,qBAA0B,GAClC,CAAC,CA4BH;AA4DD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CA8C9E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,MAAM,EAAE,GACxB,MAAM,EAAE,CAWV;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,EAAE,EAAE,YAAY,GAAG,MAAM,EAAE,CAOxD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,EAAE,EAAE,YAAY,EAChB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,EAAE,EAAE,MAAM,CAAC,GACV;IAAE,MAAM,EAAE,CAAC,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAMlC"}
@@ -6,7 +6,10 @@
6
6
  * triggers are dropped, `fn` runs its DDL or data rewrite, and the triggers
7
7
  * are regenerated for the new schema, all in ONE transaction the bracket
8
8
  * opens and commits itself. A second connection's write waits on the
9
- * bracket's write lock and is captured by the reinstalled triggers.
9
+ * bracket's write lock and is captured by the reinstalled triggers. A body
10
+ * that rebuilds tables declares them, and the bracket applies rule 2 (A,
11
+ * T12774): foreign keys off before BEGIN, a foreign_key_check that refuses
12
+ * only new violations before COMMIT, and the FK mode restored after.
10
13
  * - {@link touchSet}: the tables a rewrite can change, generated rather than
11
14
  * hand-written: the written tables, their FK-action children (CASCADE,
12
15
  * SET NULL, SET DEFAULT on delete; CASCADE on update), and every table a
@@ -20,6 +23,7 @@
20
23
  * @task T12754
21
24
  * @module store/sync/structural
22
25
  */
26
+ import { ForeignKeysNotRestoredError, foreignKeyScope, foreignKeyViolations, newViolations, } from '../migration-runner.js';
23
27
  import { isSqliteBusy } from '../with-retry.js';
24
28
  import { dropCaptureTriggers, installCaptureTriggers, syncSetTables } from './capture.js';
25
29
  import { readSyncFlags } from './flags.js';
@@ -33,7 +37,21 @@ export class BracketTransactionError extends Error {
33
37
  this.name = 'BracketTransactionError';
34
38
  }
35
39
  }
40
+ /** A bracketed rebuild that would leave foreign-key violations it did not find. */
41
+ export class BracketForeignKeyError extends Error {
42
+ violations;
43
+ code = 'E_SYNC_BRACKET_FK_VIOLATION';
44
+ constructor(violations) {
45
+ super(`A bracketed rebuild would leave ${violations.length} new foreign-key violation(s); ` +
46
+ `rolled back. First: ${violations.slice(0, 3).join('; ')}`);
47
+ this.violations = violations;
48
+ this.name = 'BracketForeignKeyError';
49
+ }
50
+ }
36
51
  const MAX_BUSY_RETRIES = 5;
52
+ function readForeignKeys(db) {
53
+ return Number(db.prepare('PRAGMA foreign_keys').get().foreign_keys);
54
+ }
37
55
  function sleepMs(ms) {
38
56
  Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, Math.round(ms));
39
57
  }
@@ -43,14 +61,50 @@ function sleepMs(ms) {
43
61
  * the schema `fn` leaves, before COMMIT. When capture is off, `fn` still runs
44
62
  * in the bracket's transaction and nothing is dropped.
45
63
  *
64
+ * @param db - The store handle; must not be inside a transaction.
65
+ * @param scope - The store's scope (selects the capture triggers to reinstall).
66
+ * @param fn - The DDL or data rewrite. Must not end the transaction.
67
+ * @param options - {@link SyncSuspensionOptions}: declare rebuilt tables.
46
68
  * @throws {BracketTransactionError} When called inside a transaction, or when
47
69
  * `fn` ends the bracket's transaction.
70
+ * @throws {BracketForeignKeyError} When a declared rebuild leaves new FK violations.
71
+ * @throws {ForeignKeysNotRestoredError} When the FK mode could not be restored.
48
72
  */
49
- export function withSyncTriggersSuspended(db, scope, fn) {
73
+ export function withSyncTriggersSuspended(db, scope, fn, options = {}) {
50
74
  if (db.isTransaction) {
51
75
  // @sync-invariant none:local-only programming-error guard on the local suspension bracket
52
76
  throw new BracketTransactionError('withSyncTriggersSuspended must open the only transaction');
53
77
  }
78
+ const rebuilds = options.rebuilds ?? [];
79
+ if (rebuilds.length === 0)
80
+ return bracket(db, scope, fn, []);
81
+ // Rule 2: FK off BEFORE BEGIN (a no-op inside one), restored after, always.
82
+ const prev = readForeignKeys(db);
83
+ db.exec('PRAGMA foreign_keys = OFF');
84
+ let out;
85
+ let failure;
86
+ let ok = false;
87
+ try {
88
+ out = bracket(db, scope, fn, rebuilds);
89
+ ok = true;
90
+ }
91
+ catch (err) {
92
+ failure = err;
93
+ }
94
+ if (db.isTransaction)
95
+ db.exec('ROLLBACK');
96
+ db.exec(`PRAGMA foreign_keys = ${prev}`);
97
+ const now = readForeignKeys(db);
98
+ if (now !== prev) {
99
+ // @sync-invariant none:local-only the suspension bracket restores this handle's FK mode; local only
100
+ throw Object.assign(new ForeignKeysNotRestoredError(prev, now), { cause: failure });
101
+ }
102
+ if (!ok)
103
+ throw failure;
104
+ return out;
105
+ }
106
+ /** The rule-1 bracket itself; `rebuilds` non-empty means FK is already off. */
107
+ function bracket(db, scope, fn, rebuilds) {
54
108
  for (let attempt = 1;; attempt++) {
55
109
  try {
56
110
  db.exec('BEGIN IMMEDIATE');
@@ -65,6 +119,7 @@ export function withSyncTriggersSuspended(db, scope, fn) {
65
119
  let capture = false;
66
120
  try {
67
121
  capture = readSyncFlags(db)['sync.capture'] && hasTable(db, '_sync_capture');
122
+ const before = rebuilds.length > 0 ? foreignKeyViolations(db, foreignKeyScope(db, rebuilds)) : null;
68
123
  if (capture)
69
124
  dropCaptureTriggers(db);
70
125
  const out = fn();
@@ -72,6 +127,13 @@ export function withSyncTriggersSuspended(db, scope, fn) {
72
127
  // @sync-invariant none:local-only programming-error guard on the local suspension bracket
73
128
  throw new BracketTransactionError('the bracket body ended its transaction');
74
129
  }
130
+ if (before !== null) {
131
+ // Pre-existing orphans never block; only violations the rebuild made do (NEW-1).
132
+ const added = newViolations(before, foreignKeyViolations(db, foreignKeyScope(db, rebuilds)));
133
+ // @sync-invariant none:local-only a rebuild that adds FK violations is refused locally before commit
134
+ if (added.length > 0)
135
+ throw new BracketForeignKeyError(added);
136
+ }
75
137
  if (capture)
76
138
  installCaptureTriggers(db, scope);
77
139
  db.exec('COMMIT');
@@ -1 +1 @@
1
- {"version":3,"file":"structural.js","sourceRoot":"","sources":["../../../src/store/sync/structural.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structural.js","sourceRoot":"","sources":["../../../src/store/sync/structural.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * The pure half of the uniform timestamp format (journal spec §1.8, R3, M4;
3
+ * T12986): the strict canonicalizer and the captured timestamp columns. It
4
+ * has no runtime imports, so the Gate B fingerprint script
5
+ * (`scripts/fingerprint-store.mjs --canon-timestamps`) loads this file
6
+ * directly and applies the very function the sealer applies on the wire
7
+ * (T12987). {@link module:store/sync/timestamps} re-exports it.
8
+ *
9
+ * @module store/sync/timestamp-canon
10
+ * @task T12986
11
+ * @task T12987
12
+ */
13
+ import type { TableScope } from '@cleocode/contracts';
14
+ /**
15
+ * The canonical wire form of a stored timestamp,
16
+ * `YYYY-MM-DDTHH:MM:SS.sssZ`, or `null` when the value is refused.
17
+ *
18
+ * Fractions beyond milliseconds are truncated, never rounded, so a carry can
19
+ * never change the second. Pure: two replicas always agree.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * canonicalStoreTimestamp('2026-09-14 19:56:01'); // '2026-09-14T19:56:01.000Z'
24
+ * canonicalStoreTimestamp('2026-09-14T21:56:01.5+02:00'); // '2026-09-14T19:56:01.500Z'
25
+ * canonicalStoreTimestamp('2026-09-14T19:56:01'); // null (zoneless)
26
+ * canonicalStoreTimestamp('2026-09-14'); // null (date only)
27
+ * ```
28
+ */
29
+ export declare function canonicalStoreTimestamp(value: string): string | null;
30
+ /**
31
+ * Captured timestamp columns per sync-set table. The claim-lease columns
32
+ * (`claimed_at`, `lease_expires_at`) are local-only and are not captured, so
33
+ * they are not here. A test pins this map against every captured `*_at`
34
+ * column of the sync set.
35
+ */
36
+ export declare const SYNC_TIMESTAMP_COLUMNS: Readonly<Record<TableScope, Readonly<Record<string, readonly string[]>>>>;
37
+ /**
38
+ * Columns the one-time rewrite never touches: `tasks_tasks.updated_at` is the
39
+ * #1698 CAS token, and rewriting it would invalidate a caller's `--if-match`.
40
+ */
41
+ export declare const CANON_EXCLUDED_COLUMNS: Readonly<Record<TableScope, Readonly<Record<string, readonly string[]>>>>;
42
+ /** The captured timestamp columns of `table` (empty when it has none). */
43
+ export declare function timestampColumns(scope: TableScope, table: string): ReadonlySet<string>;
44
+ //# sourceMappingURL=timestamp-canon.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestamp-canon.d.ts","sourceRoot":"","sources":["../../../src/store/sync/timestamp-canon.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AActD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA+BpE;AAMD;;;;;GAKG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAYhE,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE,QAAQ,CAC3C,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC,CAAC,CAIhE,CAAC;AAEF,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAGtF"}