@claudexor/daemon 3.25.1 → 4.0.1

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 (453) hide show
  1. package/dist/account-resets.d.ts +2 -2
  2. package/dist/account-resets.d.ts.map +1 -1
  3. package/dist/account-resets.js +15 -0
  4. package/dist/account-resets.js.map +1 -1
  5. package/dist/client.d.ts +25 -6
  6. package/dist/client.d.ts.map +1 -1
  7. package/dist/client.js +55 -51
  8. package/dist/client.js.map +1 -1
  9. package/dist/command-authority.d.ts +11 -8
  10. package/dist/command-authority.d.ts.map +1 -1
  11. package/dist/command-authority.js +5 -6
  12. package/dist/command-authority.js.map +1 -1
  13. package/dist/command-list-projection.d.ts +0 -1
  14. package/dist/command-list-projection.d.ts.map +1 -1
  15. package/dist/command-list-projection.js +0 -6
  16. package/dist/command-list-projection.js.map +1 -1
  17. package/dist/command-list-select.d.ts +0 -4
  18. package/dist/command-list-select.d.ts.map +1 -1
  19. package/dist/command-list-select.js +1 -115
  20. package/dist/command-list-select.js.map +1 -1
  21. package/dist/command-retention.d.ts +7 -19
  22. package/dist/command-retention.d.ts.map +1 -1
  23. package/dist/command-retention.js +1 -120
  24. package/dist/command-retention.js.map +1 -1
  25. package/dist/command-rpc.d.ts +4 -1
  26. package/dist/command-rpc.d.ts.map +1 -1
  27. package/dist/command-rpc.js +12 -1
  28. package/dist/command-rpc.js.map +1 -1
  29. package/dist/command-store.d.ts +15 -52
  30. package/dist/command-store.d.ts.map +1 -1
  31. package/dist/command-store.js +5 -493
  32. package/dist/command-store.js.map +1 -1
  33. package/dist/daemon-health.d.ts +56 -8
  34. package/dist/daemon-health.d.ts.map +1 -1
  35. package/dist/daemon-health.js +44 -9
  36. package/dist/daemon-health.js.map +1 -1
  37. package/dist/daemon-local-client.d.ts +28 -0
  38. package/dist/daemon-local-client.d.ts.map +1 -0
  39. package/dist/daemon-local-client.js +55 -0
  40. package/dist/daemon-local-client.js.map +1 -0
  41. package/dist/delivery-command.d.ts +4 -4
  42. package/dist/delivery-command.d.ts.map +1 -1
  43. package/dist/delivery-command.js.map +1 -1
  44. package/dist/index.d.ts +23 -8
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +25 -8
  47. package/dist/index.js.map +1 -1
  48. package/dist/interactions.d.ts +12 -28
  49. package/dist/interactions.d.ts.map +1 -1
  50. package/dist/interactions.js +22 -123
  51. package/dist/interactions.js.map +1 -1
  52. package/dist/job-admission.d.ts +26 -0
  53. package/dist/job-admission.d.ts.map +1 -0
  54. package/dist/job-admission.js +67 -0
  55. package/dist/job-admission.js.map +1 -0
  56. package/dist/journal-fold-policy.d.ts +1 -1
  57. package/dist/journal-fold-policy.d.ts.map +1 -1
  58. package/dist/journal-recovery-files.d.ts +1 -41
  59. package/dist/journal-recovery-files.d.ts.map +1 -1
  60. package/dist/journal-recovery-files.js +2 -340
  61. package/dist/journal-recovery-files.js.map +1 -1
  62. package/dist/loop-facts.d.ts +28 -0
  63. package/dist/loop-facts.d.ts.map +1 -0
  64. package/dist/loop-facts.js +97 -0
  65. package/dist/loop-facts.js.map +1 -0
  66. package/dist/memory-facts.d.ts +2 -0
  67. package/dist/memory-facts.d.ts.map +1 -1
  68. package/dist/memory-facts.js +5 -0
  69. package/dist/memory-facts.js.map +1 -1
  70. package/dist/model-operations.d.ts +11 -4
  71. package/dist/model-operations.d.ts.map +1 -1
  72. package/dist/model-operations.js +68 -38
  73. package/dist/model-operations.js.map +1 -1
  74. package/dist/operator-decisions.d.ts +15 -25
  75. package/dist/operator-decisions.d.ts.map +1 -1
  76. package/dist/operator-decisions.js +5 -84
  77. package/dist/operator-decisions.js.map +1 -1
  78. package/dist/projects.d.ts +42 -41
  79. package/dist/projects.d.ts.map +1 -1
  80. package/dist/projects.js +46 -184
  81. package/dist/projects.js.map +1 -1
  82. package/dist/quota-registry-replay.d.ts +2 -2
  83. package/dist/quota-registry-replay.d.ts.map +1 -1
  84. package/dist/quota-registry-replay.js.map +1 -1
  85. package/dist/quota-registry-support.d.ts +4 -1
  86. package/dist/quota-registry-support.d.ts.map +1 -1
  87. package/dist/quota-registry-support.js +15 -2
  88. package/dist/quota-registry-support.js.map +1 -1
  89. package/dist/quota-registry.d.ts +64 -2
  90. package/dist/quota-registry.d.ts.map +1 -1
  91. package/dist/quota-registry.js +10 -3
  92. package/dist/quota-registry.js.map +1 -1
  93. package/dist/quota-resources.d.ts +6 -3
  94. package/dist/quota-resources.d.ts.map +1 -1
  95. package/dist/quota-resources.js +25 -8
  96. package/dist/quota-resources.js.map +1 -1
  97. package/dist/runless-turn-recovery.d.ts +2 -9
  98. package/dist/runless-turn-recovery.d.ts.map +1 -1
  99. package/dist/runless-turn-recovery.js +0 -14
  100. package/dist/runless-turn-recovery.js.map +1 -1
  101. package/dist/server.d.ts +23 -22
  102. package/dist/server.d.ts.map +1 -1
  103. package/dist/server.js +74 -84
  104. package/dist/server.js.map +1 -1
  105. package/dist/store/blob-files.d.ts +71 -0
  106. package/dist/store/blob-files.d.ts.map +1 -0
  107. package/dist/store/blob-files.js +160 -0
  108. package/dist/store/blob-files.js.map +1 -0
  109. package/dist/store/command-prune.d.ts +37 -0
  110. package/dist/store/command-prune.d.ts.map +1 -0
  111. package/dist/store/command-prune.js +123 -0
  112. package/dist/store/command-prune.js.map +1 -0
  113. package/dist/store/command-queries.d.ts +41 -0
  114. package/dist/store/command-queries.d.ts.map +1 -0
  115. package/dist/store/command-queries.js +186 -0
  116. package/dist/store/command-queries.js.map +1 -0
  117. package/dist/store/command-rows.d.ts +66 -0
  118. package/dist/store/command-rows.d.ts.map +1 -0
  119. package/dist/store/command-rows.js +141 -0
  120. package/dist/store/command-rows.js.map +1 -0
  121. package/dist/store/commands.d.ts +49 -0
  122. package/dist/store/commands.d.ts.map +1 -0
  123. package/dist/store/commands.js +247 -0
  124. package/dist/store/commands.js.map +1 -0
  125. package/dist/store/cursors.d.ts +33 -0
  126. package/dist/store/cursors.d.ts.map +1 -0
  127. package/dist/store/cursors.js +82 -0
  128. package/dist/store/cursors.js.map +1 -0
  129. package/dist/store/engine-recovery-files.d.ts +14 -0
  130. package/dist/store/engine-recovery-files.d.ts.map +1 -0
  131. package/dist/store/engine-recovery-files.js +53 -0
  132. package/dist/store/engine-recovery-files.js.map +1 -0
  133. package/dist/store/engine-state-recovery.d.ts +71 -0
  134. package/dist/store/engine-state-recovery.d.ts.map +1 -0
  135. package/dist/store/engine-state-recovery.js +318 -0
  136. package/dist/store/engine-state-recovery.js.map +1 -0
  137. package/dist/store/errors.d.ts +80 -0
  138. package/dist/store/errors.d.ts.map +1 -0
  139. package/dist/store/errors.js +130 -0
  140. package/dist/store/errors.js.map +1 -0
  141. package/dist/store/event-store.d.ts +52 -0
  142. package/dist/store/event-store.d.ts.map +1 -0
  143. package/dist/store/event-store.js +117 -0
  144. package/dist/store/event-store.js.map +1 -0
  145. package/dist/store/external-files.d.ts +40 -0
  146. package/dist/store/external-files.d.ts.map +1 -0
  147. package/dist/store/external-files.js +90 -0
  148. package/dist/store/external-files.js.map +1 -0
  149. package/dist/store/flusher-protocol.d.ts +82 -0
  150. package/dist/store/flusher-protocol.d.ts.map +1 -0
  151. package/dist/store/flusher-protocol.js +23 -0
  152. package/dist/store/flusher-protocol.js.map +1 -0
  153. package/dist/store/flusher-worker.d.ts +24 -0
  154. package/dist/store/flusher-worker.d.ts.map +1 -0
  155. package/dist/store/flusher-worker.js +185 -0
  156. package/dist/store/flusher-worker.js.map +1 -0
  157. package/dist/store/flusher.d.ts +87 -0
  158. package/dist/store/flusher.d.ts.map +1 -0
  159. package/dist/store/flusher.js +264 -0
  160. package/dist/store/flusher.js.map +1 -0
  161. package/dist/store/generations.d.ts +43 -0
  162. package/dist/store/generations.d.ts.map +1 -0
  163. package/dist/store/generations.js +143 -0
  164. package/dist/store/generations.js.map +1 -0
  165. package/dist/store/idempotency.d.ts +25 -0
  166. package/dist/store/idempotency.d.ts.map +1 -0
  167. package/dist/store/idempotency.js +53 -0
  168. package/dist/store/idempotency.js.map +1 -0
  169. package/dist/store/import-context.d.ts +22 -0
  170. package/dist/store/import-context.d.ts.map +1 -0
  171. package/dist/store/import-context.js +87 -0
  172. package/dist/store/import-context.js.map +1 -0
  173. package/dist/store/import-discovery.d.ts +6 -0
  174. package/dist/store/import-discovery.d.ts.map +1 -0
  175. package/dist/store/import-discovery.js +66 -0
  176. package/dist/store/import-discovery.js.map +1 -0
  177. package/dist/store/import-records.d.ts +6 -0
  178. package/dist/store/import-records.d.ts.map +1 -0
  179. package/dist/store/import-records.js +191 -0
  180. package/dist/store/import-records.js.map +1 -0
  181. package/dist/store/import-resources.d.ts +14 -0
  182. package/dist/store/import-resources.d.ts.map +1 -0
  183. package/dist/store/import-resources.js +197 -0
  184. package/dist/store/import-resources.js.map +1 -0
  185. package/dist/store/import-source.d.ts +24 -0
  186. package/dist/store/import-source.d.ts.map +1 -0
  187. package/dist/store/import-source.js +65 -0
  188. package/dist/store/import-source.js.map +1 -0
  189. package/dist/store/import-verify.d.ts +6 -0
  190. package/dist/store/import-verify.d.ts.map +1 -0
  191. package/dist/store/import-verify.js +97 -0
  192. package/dist/store/import-verify.js.map +1 -0
  193. package/dist/store/import-worker.d.ts +18 -0
  194. package/dist/store/import-worker.d.ts.map +1 -0
  195. package/dist/store/import-worker.js +69 -0
  196. package/dist/store/import-worker.js.map +1 -0
  197. package/dist/store/importer.d.ts +42 -0
  198. package/dist/store/importer.d.ts.map +1 -0
  199. package/dist/store/importer.js +239 -0
  200. package/dist/store/importer.js.map +1 -0
  201. package/dist/store/interactions.d.ts +22 -0
  202. package/dist/store/interactions.d.ts.map +1 -0
  203. package/dist/store/interactions.js +82 -0
  204. package/dist/store/interactions.js.map +1 -0
  205. package/dist/store/legacy-journal/frame-codec.d.ts +94 -0
  206. package/dist/store/legacy-journal/frame-codec.d.ts.map +1 -0
  207. package/dist/store/legacy-journal/frame-codec.js +352 -0
  208. package/dist/store/legacy-journal/frame-codec.js.map +1 -0
  209. package/dist/store/legacy-journal/frame-reader.d.ts +30 -0
  210. package/dist/store/legacy-journal/frame-reader.d.ts.map +1 -0
  211. package/dist/store/legacy-journal/frame-reader.js +97 -0
  212. package/dist/store/legacy-journal/frame-reader.js.map +1 -0
  213. package/dist/store/legacy-journal/journal-fold.d.ts +47 -0
  214. package/dist/store/legacy-journal/journal-fold.d.ts.map +1 -0
  215. package/dist/store/legacy-journal/journal-fold.js +81 -0
  216. package/dist/store/legacy-journal/journal-fold.js.map +1 -0
  217. package/dist/store/legacy-journal/journal-partition.d.ts +2 -0
  218. package/dist/store/legacy-journal/journal-partition.d.ts.map +1 -0
  219. package/dist/store/legacy-journal/journal-partition.js +10 -0
  220. package/dist/store/legacy-journal/journal-partition.js.map +1 -0
  221. package/dist/store/legacy-journal/read-only-preparation.d.ts +48 -0
  222. package/dist/store/legacy-journal/read-only-preparation.d.ts.map +1 -0
  223. package/dist/store/legacy-journal/read-only-preparation.js +430 -0
  224. package/dist/store/legacy-journal/read-only-preparation.js.map +1 -0
  225. package/dist/store/maintenance-worker.d.ts +5 -0
  226. package/dist/store/maintenance-worker.d.ts.map +1 -0
  227. package/dist/store/maintenance-worker.js +175 -0
  228. package/dist/store/maintenance-worker.js.map +1 -0
  229. package/dist/store/maintenance.d.ts +124 -0
  230. package/dist/store/maintenance.d.ts.map +1 -0
  231. package/dist/store/maintenance.js +197 -0
  232. package/dist/store/maintenance.js.map +1 -0
  233. package/dist/store/mutation.d.ts +34 -0
  234. package/dist/store/mutation.d.ts.map +1 -0
  235. package/dist/store/mutation.js +85 -0
  236. package/dist/store/mutation.js.map +1 -0
  237. package/dist/store/obligations.d.ts +101 -0
  238. package/dist/store/obligations.d.ts.map +1 -0
  239. package/dist/store/obligations.js +226 -0
  240. package/dist/store/obligations.js.map +1 -0
  241. package/dist/store/operator-decisions.d.ts +23 -0
  242. package/dist/store/operator-decisions.d.ts.map +1 -0
  243. package/dist/store/operator-decisions.js +68 -0
  244. package/dist/store/operator-decisions.js.map +1 -0
  245. package/dist/store/owner-generations.d.ts +33 -0
  246. package/dist/store/owner-generations.d.ts.map +1 -0
  247. package/dist/store/owner-generations.js +63 -0
  248. package/dist/store/owner-generations.js.map +1 -0
  249. package/dist/store/partitions.d.ts +37 -0
  250. package/dist/store/partitions.d.ts.map +1 -0
  251. package/dist/store/partitions.js +68 -0
  252. package/dist/store/partitions.js.map +1 -0
  253. package/dist/store/pragmas.d.ts +32 -0
  254. package/dist/store/pragmas.d.ts.map +1 -0
  255. package/dist/store/pragmas.js +65 -0
  256. package/dist/store/pragmas.js.map +1 -0
  257. package/dist/store/project-router.d.ts +325 -0
  258. package/dist/store/project-router.d.ts.map +1 -0
  259. package/dist/store/project-router.js +298 -0
  260. package/dist/store/project-router.js.map +1 -0
  261. package/dist/store/projects.d.ts +36 -0
  262. package/dist/store/projects.d.ts.map +1 -0
  263. package/dist/store/projects.js +238 -0
  264. package/dist/store/projects.js.map +1 -0
  265. package/dist/store/publish-blob.d.ts +20 -0
  266. package/dist/store/publish-blob.d.ts.map +1 -0
  267. package/dist/store/publish-blob.js +158 -0
  268. package/dist/store/publish-blob.js.map +1 -0
  269. package/dist/store/purge-files.d.ts +30 -0
  270. package/dist/store/purge-files.d.ts.map +1 -0
  271. package/dist/store/purge-files.js +79 -0
  272. package/dist/store/purge-files.js.map +1 -0
  273. package/dist/store/resource-rows.d.ts +40 -0
  274. package/dist/store/resource-rows.d.ts.map +1 -0
  275. package/dist/store/resource-rows.js +103 -0
  276. package/dist/store/resource-rows.js.map +1 -0
  277. package/dist/store/resources.d.ts +67 -0
  278. package/dist/store/resources.d.ts.map +1 -0
  279. package/dist/store/resources.js +147 -0
  280. package/dist/store/resources.js.map +1 -0
  281. package/dist/store/retention.d.ts +95 -0
  282. package/dist/store/retention.d.ts.map +1 -0
  283. package/dist/store/retention.js +173 -0
  284. package/dist/store/retention.js.map +1 -0
  285. package/dist/store/run-events.d.ts +14 -0
  286. package/dist/store/run-events.d.ts.map +1 -0
  287. package/dist/store/run-events.js +35 -0
  288. package/dist/store/run-events.js.map +1 -0
  289. package/dist/store/runtime.d.ts +24 -0
  290. package/dist/store/runtime.d.ts.map +1 -0
  291. package/dist/store/runtime.js +67 -0
  292. package/dist/store/runtime.js.map +1 -0
  293. package/dist/store/schema.d.ts +33 -0
  294. package/dist/store/schema.d.ts.map +1 -0
  295. package/dist/store/schema.js +187 -0
  296. package/dist/store/schema.js.map +1 -0
  297. package/dist/store/setup-bindings.d.ts +20 -0
  298. package/dist/store/setup-bindings.d.ts.map +1 -0
  299. package/dist/store/setup-bindings.js +52 -0
  300. package/dist/store/setup-bindings.js.map +1 -0
  301. package/dist/store/sql-command-router.d.ts +79 -0
  302. package/dist/store/sql-command-router.d.ts.map +1 -0
  303. package/dist/store/sql-command-router.js +92 -0
  304. package/dist/store/sql-command-router.js.map +1 -0
  305. package/dist/store/sql-daemon-services.d.ts +61 -0
  306. package/dist/store/sql-daemon-services.d.ts.map +1 -0
  307. package/dist/store/sql-daemon-services.js +124 -0
  308. package/dist/store/sql-daemon-services.js.map +1 -0
  309. package/dist/store/sql-recovery-export.d.ts +8 -0
  310. package/dist/store/sql-recovery-export.d.ts.map +1 -0
  311. package/dist/store/sql-recovery-export.js +110 -0
  312. package/dist/store/sql-recovery-export.js.map +1 -0
  313. package/dist/store/sql-recovery-inspection.d.ts +22 -0
  314. package/dist/store/sql-recovery-inspection.d.ts.map +1 -0
  315. package/dist/store/sql-recovery-inspection.js +88 -0
  316. package/dist/store/sql-recovery-inspection.js.map +1 -0
  317. package/dist/store/sql-recovery.d.ts +69 -0
  318. package/dist/store/sql-recovery.d.ts.map +1 -0
  319. package/dist/store/sql-recovery.js +169 -0
  320. package/dist/store/sql-recovery.js.map +1 -0
  321. package/dist/store/sql-validation.d.ts +9 -0
  322. package/dist/store/sql-validation.d.ts.map +1 -0
  323. package/dist/store/sql-validation.js +103 -0
  324. package/dist/store/sql-validation.js.map +1 -0
  325. package/dist/store/statement-observer.d.ts +7 -0
  326. package/dist/store/statement-observer.d.ts.map +1 -0
  327. package/dist/store/statement-observer.js +44 -0
  328. package/dist/store/statement-observer.js.map +1 -0
  329. package/dist/store/store.d.ts +110 -0
  330. package/dist/store/store.d.ts.map +1 -0
  331. package/dist/store/store.js +296 -0
  332. package/dist/store/store.js.map +1 -0
  333. package/dist/store/terminal-files.d.ts +21 -0
  334. package/dist/store/terminal-files.d.ts.map +1 -0
  335. package/dist/store/terminal-files.js +115 -0
  336. package/dist/store/terminal-files.js.map +1 -0
  337. package/dist/store/thread-replay.d.ts +12 -0
  338. package/dist/store/thread-replay.d.ts.map +1 -0
  339. package/dist/store/thread-replay.js +49 -0
  340. package/dist/store/thread-replay.js.map +1 -0
  341. package/dist/store/thread-rows.d.ts +25 -0
  342. package/dist/store/thread-rows.d.ts.map +1 -0
  343. package/dist/store/thread-rows.js +141 -0
  344. package/dist/store/thread-rows.js.map +1 -0
  345. package/dist/store/threads.d.ts +105 -0
  346. package/dist/store/threads.d.ts.map +1 -0
  347. package/dist/store/threads.js +423 -0
  348. package/dist/store/threads.js.map +1 -0
  349. package/dist/store/upload-binding-retention.d.ts +26 -0
  350. package/dist/store/upload-binding-retention.d.ts.map +1 -0
  351. package/dist/store/upload-binding-retention.js +142 -0
  352. package/dist/store/upload-binding-retention.js.map +1 -0
  353. package/dist/store/uploads.d.ts +30 -0
  354. package/dist/store/uploads.d.ts.map +1 -0
  355. package/dist/store/uploads.js +238 -0
  356. package/dist/store/uploads.js.map +1 -0
  357. package/dist/store-contracts.d.ts +181 -0
  358. package/dist/store-contracts.d.ts.map +1 -0
  359. package/dist/store-contracts.js +2 -0
  360. package/dist/store-contracts.js.map +1 -0
  361. package/dist/terminal-authority.d.ts +9 -0
  362. package/dist/terminal-authority.d.ts.map +1 -1
  363. package/dist/terminal-authority.js +103 -1
  364. package/dist/terminal-authority.js.map +1 -1
  365. package/dist/thread-lane-checkpoints.d.ts +0 -2
  366. package/dist/thread-lane-checkpoints.d.ts.map +1 -1
  367. package/dist/thread-lane-checkpoints.js +0 -4
  368. package/dist/thread-lane-checkpoints.js.map +1 -1
  369. package/dist/thread-store-support.d.ts +1 -27
  370. package/dist/thread-store-support.d.ts.map +1 -1
  371. package/dist/thread-store-support.js +0 -63
  372. package/dist/thread-store-support.js.map +1 -1
  373. package/dist/threads.d.ts +1 -113
  374. package/dist/threads.d.ts.map +1 -1
  375. package/dist/threads.js +1 -379
  376. package/dist/threads.js.map +1 -1
  377. package/package.json +9 -7
  378. package/dist/command-activity.d.ts +0 -14
  379. package/dist/command-activity.d.ts.map +0 -1
  380. package/dist/command-activity.js +0 -16
  381. package/dist/command-activity.js.map +0 -1
  382. package/dist/journal-events.d.ts +0 -4
  383. package/dist/journal-events.d.ts.map +0 -1
  384. package/dist/journal-events.js +0 -23
  385. package/dist/journal-events.js.map +0 -1
  386. package/dist/journal-maintenance.d.ts +0 -50
  387. package/dist/journal-maintenance.d.ts.map +0 -1
  388. package/dist/journal-maintenance.js +0 -162
  389. package/dist/journal-maintenance.js.map +0 -1
  390. package/dist/journal-manager-journal.d.ts +0 -18
  391. package/dist/journal-manager-journal.d.ts.map +0 -1
  392. package/dist/journal-manager-journal.js +0 -25
  393. package/dist/journal-manager-journal.js.map +0 -1
  394. package/dist/journal-manager-lifecycle.d.ts +0 -11
  395. package/dist/journal-manager-lifecycle.d.ts.map +0 -1
  396. package/dist/journal-manager-lifecycle.js +0 -2
  397. package/dist/journal-manager-lifecycle.js.map +0 -1
  398. package/dist/journal-manager.d.ts +0 -99
  399. package/dist/journal-manager.d.ts.map +0 -1
  400. package/dist/journal-manager.js +0 -559
  401. package/dist/journal-manager.js.map +0 -1
  402. package/dist/journal-prepared-operation.d.ts +0 -53
  403. package/dist/journal-prepared-operation.d.ts.map +0 -1
  404. package/dist/journal-prepared-operation.js +0 -158
  405. package/dist/journal-prepared-operation.js.map +0 -1
  406. package/dist/journal-projection-slot.d.ts +0 -28
  407. package/dist/journal-projection-slot.d.ts.map +0 -1
  408. package/dist/journal-projection-slot.js +0 -71
  409. package/dist/journal-projection-slot.js.map +0 -1
  410. package/dist/journal-projection.d.ts +0 -13
  411. package/dist/journal-projection.d.ts.map +0 -1
  412. package/dist/journal-projection.js +0 -2
  413. package/dist/journal-projection.js.map +0 -1
  414. package/dist/partition-accounts.d.ts +0 -27
  415. package/dist/partition-accounts.d.ts.map +0 -1
  416. package/dist/partition-accounts.js +0 -21
  417. package/dist/partition-accounts.js.map +0 -1
  418. package/dist/project-partition-preparation.d.ts +0 -87
  419. package/dist/project-partition-preparation.d.ts.map +0 -1
  420. package/dist/project-partition-preparation.js +0 -273
  421. package/dist/project-partition-preparation.js.map +0 -1
  422. package/dist/project-partitions.d.ts +0 -214
  423. package/dist/project-partitions.d.ts.map +0 -1
  424. package/dist/project-partitions.js +0 -486
  425. package/dist/project-partitions.js.map +0 -1
  426. package/dist/project-remove.d.ts +0 -11
  427. package/dist/project-remove.d.ts.map +0 -1
  428. package/dist/project-remove.js +0 -65
  429. package/dist/project-remove.js.map +0 -1
  430. package/dist/project-thread-listing.d.ts +0 -14
  431. package/dist/project-thread-listing.d.ts.map +0 -1
  432. package/dist/project-thread-listing.js +0 -37
  433. package/dist/project-thread-listing.js.map +0 -1
  434. package/dist/quota-projection.d.ts +0 -11
  435. package/dist/quota-projection.d.ts.map +0 -1
  436. package/dist/quota-projection.js +0 -10
  437. package/dist/quota-projection.js.map +0 -1
  438. package/dist/resource-store.d.ts +0 -39
  439. package/dist/resource-store.d.ts.map +0 -1
  440. package/dist/resource-store.js +0 -464
  441. package/dist/resource-store.js.map +0 -1
  442. package/dist/run-event-terminal-index.d.ts +0 -13
  443. package/dist/run-event-terminal-index.d.ts.map +0 -1
  444. package/dist/run-event-terminal-index.js +0 -38
  445. package/dist/run-event-terminal-index.js.map +0 -1
  446. package/dist/run-events.d.ts +0 -17
  447. package/dist/run-events.d.ts.map +0 -1
  448. package/dist/run-events.js +0 -31
  449. package/dist/run-events.js.map +0 -1
  450. package/dist/thread-head-ping.d.ts +0 -35
  451. package/dist/thread-head-ping.d.ts.map +0 -1
  452. package/dist/thread-head-ping.js +0 -67
  453. package/dist/thread-head-ping.js.map +0 -1
@@ -0,0 +1,147 @@
1
+ import { Attachment, ControlResource, ModelPayloadRef, } from "@claudexor/schema";
2
+ import { newId, sensitiveResourcePolicy } from "@claudexor/util";
3
+ import { deleteUnownedInlineInTx, sha256Hex } from "./blob-files.js";
4
+ import { runMutation } from "./mutation.js";
5
+ import { PublishBlob } from "./publish-blob.js";
6
+ import { assertContentAllowed, assertModelRef, assertResourceId, payloadRef, putResourceInTx, readResourceRow, readUploadRow, resourceError, resourceSha, purposeMismatch, sensitiveResourceError, verifiedResourceBytes, } from "./resource-rows.js";
7
+ import { SqlUploads } from "./uploads.js";
8
+ /** Resource metadata and replay live in the one engine DB; only immutable bytes are files. */
9
+ export class SqlResourceStore {
10
+ store;
11
+ blobs;
12
+ log;
13
+ uploads;
14
+ publisher;
15
+ cleanup = new Set();
16
+ constructor(store, blobs, obligations, log = console.warn) {
17
+ this.store = store;
18
+ this.blobs = blobs;
19
+ this.log = log;
20
+ this.uploads = new SqlUploads(store, (work) => this.defer(work));
21
+ this.publisher = new PublishBlob(store, blobs, obligations, this.uploads, (work) => this.defer(work));
22
+ }
23
+ create(raw, key) {
24
+ return this.uploads.create(raw, key);
25
+ }
26
+ status(id) {
27
+ return this.uploads.status(id);
28
+ }
29
+ write(id, chunks) {
30
+ return this.uploads.write(id, chunks);
31
+ }
32
+ cancel(id) {
33
+ return this.uploads.cancel(id);
34
+ }
35
+ finalize(id, expectedSha256, key) {
36
+ return this.publisher.finalize(id, expectedSha256, key);
37
+ }
38
+ resolve(refs) {
39
+ return (refs ?? []).map(({ resourceId }) => {
40
+ const resource = this.metadata(resourceId);
41
+ if (resource.purpose === "model")
42
+ throw purposeMismatch();
43
+ const path = this.blobs.filePath(resourceSha(resource));
44
+ const bytes = verifiedResourceBytes(resource, path);
45
+ if (sensitiveResourcePolicy.classifyPath(resource.name).sensitive)
46
+ throw sensitiveResourceError();
47
+ assertContentAllowed(resource, bytes);
48
+ return Attachment.parse({
49
+ resource_id: resource.resourceId,
50
+ kind: resource.kind,
51
+ mime: resource.mime,
52
+ name: resource.name,
53
+ sha256: resource.sha256,
54
+ size_bytes: resource.sizeBytes,
55
+ path,
56
+ });
57
+ });
58
+ }
59
+ readModel(raw) {
60
+ const ref = ModelPayloadRef.parse(raw);
61
+ const resource = this.metadata(ref.resourceId);
62
+ assertModelRef(resource, ref);
63
+ return verifiedResourceBytes(resource, this.blobs.filePath(resourceSha(resource)));
64
+ }
65
+ publishModel(bytes) {
66
+ const status = this.create({
67
+ purpose: "model",
68
+ kind: "file",
69
+ mime: "application/json",
70
+ name: "model-result.json",
71
+ sizeBytes: bytes.byteLength,
72
+ }, newId("model-create"));
73
+ try {
74
+ this.uploads.writeAll(status.uploadId, bytes);
75
+ return payloadRef(this.finalize(status.uploadId, `sha256:${sha256Hex(bytes)}`, newId("model-finalize")));
76
+ }
77
+ catch (error) {
78
+ if (!readUploadRow(this.store, status.uploadId)?.finalization)
79
+ this.uploads.discard(status.uploadId);
80
+ throw error;
81
+ }
82
+ }
83
+ releaseModel(raw) {
84
+ this.release(raw, "released");
85
+ }
86
+ /** Expiry has an observed custody timestamp; callers must not infer it from file mtime. */
87
+ expireModel(raw, expiredAt) {
88
+ this.release(raw, "expired", expiredAt);
89
+ }
90
+ listModelResources() {
91
+ return this.store
92
+ .prepare("SELECT body FROM resource WHERE purpose='model' AND state='ready' ORDER BY id")
93
+ .all().map((row) => {
94
+ const resource = ControlResource.parse(JSON.parse(Buffer.from(row.body).toString("utf8")));
95
+ return { ...payloadRef(resource), createdAt: resource.createdAt };
96
+ });
97
+ }
98
+ pruneUploadBindings() {
99
+ return this.uploads.bindings.prune();
100
+ }
101
+ onObligationsCleared(rows) {
102
+ this.publisher.onCleared(rows);
103
+ }
104
+ /** Await this before closing the store; failures are logged and the existing sweep retries residue. */
105
+ async drainCleanup() {
106
+ while (this.cleanup.size)
107
+ await Promise.all(this.cleanup);
108
+ }
109
+ release(raw, state, expiredAt) {
110
+ const ref = ModelPayloadRef.parse(raw);
111
+ assertResourceId(ref.resourceId);
112
+ const row = readResourceRow(this.store, ref.resourceId);
113
+ if (!row || row.state === "released" || row.state === "expired")
114
+ return;
115
+ assertModelRef(row.resource, ref);
116
+ const sha = resourceSha(row.resource);
117
+ runMutation(this.store, (tx) => {
118
+ putResourceInTx(tx, {
119
+ ...row,
120
+ state,
121
+ releasedAt: expiredAt ?? tx.now().toISOString(),
122
+ expiresAt: expiredAt ?? row.expiresAt,
123
+ });
124
+ deleteUnownedInlineInTx(tx, sha);
125
+ tx.changes.blobChanged(sha);
126
+ });
127
+ this.defer(this.blobs.gc(sha));
128
+ }
129
+ metadata(id) {
130
+ assertResourceId(id);
131
+ const row = readResourceRow(this.store, id);
132
+ if (!row || row.state === "released" || row.state === "expired")
133
+ throw resourceError(`no such resource: ${id}`, 404, "resource_not_found");
134
+ if (row.state === "publishing")
135
+ throw resourceError("resource blob is unavailable", 409, "resource_unavailable");
136
+ return row.resource;
137
+ }
138
+ defer(work) {
139
+ const pending = work
140
+ .then(() => undefined, (error) => {
141
+ this.log(`Resource cleanup remains pending: ${error instanceof Error ? error.message : String(error)}`);
142
+ })
143
+ .finally(() => this.cleanup.delete(pending));
144
+ this.cleanup.add(pending);
145
+ }
146
+ }
147
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/store/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAEjE,OAAO,EAAa,uBAAuB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8FAA8F;AAC9F,MAAM,OAAO,gBAAgB;IAMR,KAAK;IACL,KAAK;IAEL,GAAG;IARL,OAAO,CAAa;IACpB,SAAS,CAAc;IACvB,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEpD,YACmB,KAAkB,EAClB,KAAgB,EACjC,WAAwB,EACP,GAAG,GAA2B,OAAO,CAAC,IAAI;qBAH1C,KAAK;qBACL,KAAK;mBAEL,GAAG;QAEpB,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CACjF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CACjB,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,GAAY,EAAE,GAAW;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,KAAK,CAAC,EAAU,EAAE,MAAiC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,QAAQ,CAAC,EAAU,EAAE,cAAkC,EAAE,GAAW;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,OAAO,CAAC,IAAyC;QAC/C,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC3C,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO;gBAAE,MAAM,eAAe,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxD,MAAM,KAAK,GAAG,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACpD,IAAI,uBAAuB,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS;gBAC/D,MAAM,sBAAsB,EAAE,CAAC;YACjC,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,OAAO,UAAU,CAAC,KAAK,CAAC;gBACtB,WAAW,EAAE,QAAQ,CAAC,UAAU;gBAChC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,SAAS;gBAC9B,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,GAAoB;QAC5B,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,YAAY,CAAC,KAAiB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CACxB;YACE,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,KAAK,CAAC,UAAU;SAC5B,EACD,KAAK,CAAC,cAAc,CAAC,CACtB,CAAC;QACF,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO,UAAU,CACf,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CACtF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY;gBAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,YAAY,CAAC,GAAoB;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC;IAED,2FAA2F;IAC3F,WAAW,CAAC,GAAoB,EAAE,SAAiB;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,kBAAkB;QAChB,OACE,IAAI,CAAC,KAAK;aACP,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,EACP,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IACD,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IACD,oBAAoB,CAAC,IAA8B;QACjD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,uGAAuG;IACvG,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAEO,OAAO,CAAC,GAAoB,EAAE,KAA6B,EAAE,SAAkB;QACrF,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QACxE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;YAC7B,eAAe,CAAC,EAAE,EAAE;gBAClB,GAAG,GAAG;gBACN,KAAK;gBACL,UAAU,EAAE,SAAS,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;gBAC/C,SAAS,EAAE,SAAS,IAAI,GAAG,CAAC,SAAS;aACtC,CAAC,CAAC;YACH,uBAAuB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACjC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IACO,QAAQ,CAAC,EAAU;QACzB,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAC7D,MAAM,aAAa,CAAC,qBAAqB,EAAE,EAAE,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC5E,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY;YAC5B,MAAM,aAAa,CAAC,8BAA8B,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QACnF,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IACO,KAAK,CAAC,IAAsB;QAClC,MAAM,OAAO,GAAG,IAAI;aACjB,IAAI,CACH,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,CAAC,GAAG,CACN,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9F,CAAC;QACJ,CAAC,CACF;aACA,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF"}
@@ -0,0 +1,95 @@
1
+ import type { FoldRecord, FoldVerdict } from "./legacy-journal/journal-fold.js";
2
+ import { type SqlWriteContext } from "./mutation.js";
3
+ import type { EngineStore } from "./store.js";
4
+ export interface EventInput {
5
+ type: string;
6
+ payload: unknown;
7
+ time?: string;
8
+ /** Bare hex digest when the payload body lives in `blob` (collection reads never select it). */
9
+ payloadSha?: string | null;
10
+ /** Serialized before the transaction by the runtime body preparer. Import
11
+ * reducers may pass the original JSON bytes from their decoded frame. */
12
+ encodedPayload?: Uint8Array;
13
+ }
14
+ export interface AppendedEvent {
15
+ seq: number;
16
+ verdict: FoldVerdict;
17
+ /** False when the verdict dropped the record (the sequence number is still consumed). */
18
+ stored: boolean;
19
+ /** `payload_sha` of every row this append deleted (retire/slot): owner changes the
20
+ * caller reports with `noteOwnerChange` after COMMIT (A3/C10). */
21
+ releasedDigests: string[];
22
+ }
23
+ /** SQL keeps the existing fold semantics with the two approved storage changes:
24
+ * entity snapshots consume sequence but have no stream row; setup saves have a
25
+ * stable address without replacing earlier saves or sharing the log's lifetime. */
26
+ export declare function sqlEventVerdict(record: FoldRecord): FoldVerdict;
27
+ /** Addressed event deletes pin their partial index: without statistics SQLite
28
+ * otherwise scans the whole partition for every fold verdict (issue #446). */
29
+ export declare const EVENT_SLOT_DELETE_SQL = "DELETE FROM event INDEXED BY event_slot WHERE pid = ? AND slot_key = ? RETURNING payload_sha";
30
+ export declare const EVENT_GROUP_DELETE_SQL = "DELETE FROM event INDEXED BY event_group WHERE pid = ? AND group_key = ? RETURNING payload_sha";
31
+ /** Retire addressed slots/groups and return every released body reference. */
32
+ export declare function deleteEventKeysInTx(sql: SqlWriteContext, pid: number, keys: readonly string[]): string[];
33
+ /** Import seam: apply the fold to the full logical payload using its ORIGINAL
34
+ * seq/time. This neither allocates sequence nor advances partition.next_seq;
35
+ * the importer restores the frame header's nextSeq, including a folded tail. */
36
+ export declare function insertEventInTx(sql: SqlWriteContext, pid: number, input: EventInput & {
37
+ seq: number;
38
+ time: string;
39
+ }, verdictOf?: (record: FoldRecord) => FoldVerdict): AppendedEvent;
40
+ export declare function restoreEventSequenceInTx(sql: SqlWriteContext, pid: number, nextSeq: number): void;
41
+ /**
42
+ * Append one `event` row under the journal fold's verdict (SYNTHESIS_R5 §6.6),
43
+ * inside the caller's transaction. `retire` deletes every retained row under
44
+ * the named slot/group keys; `slot` deletes the previous holder; `drop` skips
45
+ * the insert. Sequence numbers come from `partition.next_seq` and are consumed
46
+ * even for dropped records, exactly like a frame the fold forgets on disk.
47
+ */
48
+ export declare function appendEvent(store: SqlWriteContext & Pick<EngineStore, "now">, pid: number, input: EventInput, verdictOf?: (record: FoldRecord) => FoldVerdict): AppendedEvent;
49
+ /** `command.kind` (R5_AMENDMENTS A1): set once at accept, the single source of
50
+ * both the `GET /v2/runs` predicate (`product`) and the retention `terminal`
51
+ * predicate (`product`, `delivery`, `maintenance`). */
52
+ export type CommandKind = "product" | "delivery" | "maintenance" | "model" | "account_reset";
53
+ export declare function commandKind(id: string, params: unknown): CommandKind;
54
+ /** Bounded count of today's `terminal` set over the live generations (B1 query 1). */
55
+ export declare const COMMAND_TERMINAL_COUNT_SQL = "SELECT count(*) AS n FROM (\n SELECT 1 FROM command INDEXED BY command_terminal\n WHERE live = 1 AND kind IN ('product','delivery','maintenance') AND finished_at IS NOT NULL\n LIMIT ?1)";
56
+ /** One keyset page of prune candidates, oldest first (B1 query 2 as amended by C1). */
57
+ export declare const COMMAND_PRUNABLE_PAGE_SQL = "SELECT id, run_id, run_dir, continue_from, created_at\n FROM command INDEXED BY command_prunable\n WHERE live = 1 AND kind IN ('product','delivery','maintenance') AND finished_at IS NOT NULL AND needs_decision = 0\n AND finished_at <= ?1\n AND (created_at, id) > (?2, ?3)\n ORDER BY created_at, id LIMIT ?4";
58
+ /** Continuation exemption: `continueFrom` names a live run id or job id that is still retained. */
59
+ export declare const RETAINED_PREDECESSOR_SQL = "SELECT EXISTS(\n SELECT 1 FROM command WHERE live = 1 AND (id = ?1 OR run_id = ?1)) AS retained";
60
+ export declare const COMMAND_RETENTION_CAP = 500;
61
+ export declare const COMMAND_RETENTION_BATCH = 100;
62
+ export interface PrunableCommand {
63
+ id: string;
64
+ runId: string | null;
65
+ runDir: string | null;
66
+ continueFrom: string | null;
67
+ createdAt: string;
68
+ }
69
+ export interface CommandRetentionInput {
70
+ now: Date;
71
+ retentionMs: number;
72
+ cap?: number;
73
+ batch?: number;
74
+ /** Extra exemption probed per candidate at most once (the retained-envelope file probe, PR-C). */
75
+ exempt?: (candidate: PrunableCommand) => boolean;
76
+ }
77
+ export interface CommandRetentionSelection {
78
+ victims: PrunableCommand[];
79
+ excess: number;
80
+ /** Unique candidate rows read (keyset paging never re-reads a prefix). */
81
+ visited: number;
82
+ pages: number;
83
+ }
84
+ /** Today's `terminal.length`, bounded by `cap + batch` (the excess cannot exceed one batch per call). */
85
+ export declare function terminalCommandCount(store: EngineStore, cap?: number, batch?: number): number;
86
+ /**
87
+ * Select at most one batch of victims: the oldest expired terminal commands of
88
+ * the live generations, skipping needs-decision rows (outside the index) and
89
+ * continuations whose predecessor is retained, paging by keyset so exempt rows
90
+ * are visited once. The deletion transaction belongs to the owner (PR-C).
91
+ */
92
+ export declare function commandRetentionCandidates(store: EngineStore, input: CommandRetentionInput): CommandRetentionSelection;
93
+ /** `EXPLAIN QUERY PLAN` rows for a statement (plan gates, SYNTHESIS_R5 §5). */
94
+ export declare function queryPlan(store: EngineStore, sql: string): string[];
95
+ //# sourceMappingURL=retention.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention.d.ts","sourceRoot":"","sources":["../../src/store/retention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,173 @@
1
+ import { isHarnessMaintenanceOperation, isModelOperation } from "@claudexor/schema";
2
+ import { journalFoldPolicy } from "../journal-fold-policy.js";
3
+ import { requireTransaction } from "./mutation.js";
4
+ /** SQL keeps the existing fold semantics with the two approved storage changes:
5
+ * entity snapshots consume sequence but have no stream row; setup saves have a
6
+ * stable address without replacing earlier saves or sharing the log's lifetime. */
7
+ export function sqlEventVerdict(record) {
8
+ if (record.type === "thread.entities_upserted")
9
+ return { drop: true };
10
+ const verdict = journalFoldPolicy.verdict(record) ?? {};
11
+ if (record.type === "operator.decision_recorded") {
12
+ const value = record.payload;
13
+ const runId = value?.decision?.runId ?? value?.runId;
14
+ if (typeof runId === "string" && runId.length > 0)
15
+ return { ...verdict, group: `d:${runId}` };
16
+ }
17
+ if (record.type === "setup.job.saved") {
18
+ const jobId = record.payload?.job?.jobId;
19
+ if (typeof jobId === "string" && jobId.length > 0) {
20
+ return { ...verdict, group: `s:${jobId}:saved` };
21
+ }
22
+ }
23
+ return verdict;
24
+ }
25
+ /** Addressed event deletes pin their partial index: without statistics SQLite
26
+ * otherwise scans the whole partition for every fold verdict (issue #446). */
27
+ export const EVENT_SLOT_DELETE_SQL = "DELETE FROM event INDEXED BY event_slot WHERE pid = ? AND slot_key = ? RETURNING payload_sha";
28
+ export const EVENT_GROUP_DELETE_SQL = "DELETE FROM event INDEXED BY event_group WHERE pid = ? AND group_key = ? RETURNING payload_sha";
29
+ /** Retire addressed slots/groups and return every released body reference. */
30
+ export function deleteEventKeysInTx(sql, pid, keys) {
31
+ requireTransaction(sql);
32
+ const released = [];
33
+ const slot = sql.prepare(EVENT_SLOT_DELETE_SQL);
34
+ const group = sql.prepare(EVENT_GROUP_DELETE_SQL);
35
+ for (const key of new Set(keys)) {
36
+ released.push(...releasedPayloadDigests(slot.all(pid, key)));
37
+ released.push(...releasedPayloadDigests(group.all(pid, key)));
38
+ }
39
+ return released;
40
+ }
41
+ function releasedPayloadDigests(rows) {
42
+ return rows.flatMap((row) => typeof row.payload_sha === "string" ? [row.payload_sha] : []);
43
+ }
44
+ /** Import seam: apply the fold to the full logical payload using its ORIGINAL
45
+ * seq/time. This neither allocates sequence nor advances partition.next_seq;
46
+ * the importer restores the frame header's nextSeq, including a folded tail. */
47
+ export function insertEventInTx(sql, pid, input, verdictOf = sqlEventVerdict) {
48
+ requireTransaction(sql);
49
+ const bytes = input.encodedPayload ?? Buffer.from(JSON.stringify(input.payload ?? null));
50
+ const verdict = verdictOf({
51
+ seq: input.seq,
52
+ type: input.type,
53
+ time: input.time,
54
+ payload: input.payload,
55
+ byteLength: bytes.byteLength,
56
+ }) ?? {};
57
+ const releasedDigests = deleteEventKeysInTx(sql, pid, verdict.retire ?? []);
58
+ if (verdict.slot !== undefined) {
59
+ releasedDigests.push(...releasedPayloadDigests(sql.prepare(EVENT_SLOT_DELETE_SQL).all(pid, verdict.slot)));
60
+ }
61
+ if (!verdict.drop) {
62
+ sql
63
+ .prepare("INSERT INTO event(pid, seq, time, type, payload, payload_sha, slot_key, group_key) VALUES(?, ?, ?, ?, ?, ?, ?, ?)")
64
+ .run(pid, input.seq, input.time, input.type, input.payloadSha == null ? bytes : Buffer.from("null"), input.payloadSha ?? null, verdict.slot ?? null, verdict.group ?? null);
65
+ }
66
+ return { seq: input.seq, verdict, stored: !verdict.drop, releasedDigests };
67
+ }
68
+ export function restoreEventSequenceInTx(sql, pid, nextSeq) {
69
+ requireTransaction(sql);
70
+ sql.prepare("UPDATE partition SET next_seq = ? WHERE id = ?").run(nextSeq, pid);
71
+ }
72
+ /**
73
+ * Append one `event` row under the journal fold's verdict (SYNTHESIS_R5 §6.6),
74
+ * inside the caller's transaction. `retire` deletes every retained row under
75
+ * the named slot/group keys; `slot` deletes the previous holder; `drop` skips
76
+ * the insert. Sequence numbers come from `partition.next_seq` and are consumed
77
+ * even for dropped records, exactly like a frame the fold forgets on disk.
78
+ */
79
+ export function appendEvent(store, pid, input, verdictOf = sqlEventVerdict) {
80
+ if (!store.inTransaction)
81
+ throw new Error("events are appended inside the owner's transaction");
82
+ const current = store.prepare("SELECT next_seq FROM partition WHERE id = ?").get(pid);
83
+ if (!current)
84
+ throw new Error(`no partition generation ${pid}`);
85
+ const seq = Number(current.next_seq);
86
+ const result = insertEventInTx(store, pid, { ...input, seq, time: input.time ?? store.now().toISOString() }, verdictOf);
87
+ store.prepare("UPDATE partition SET next_seq = ? WHERE id = ?").run(seq + 1, pid);
88
+ return result;
89
+ }
90
+ export function commandKind(id, params) {
91
+ if (id.startsWith("account-reset-"))
92
+ return "account_reset";
93
+ if (id.startsWith("delivery-"))
94
+ return "delivery";
95
+ if (isModelOperation(params))
96
+ return "model";
97
+ if (isHarnessMaintenanceOperation(params))
98
+ return "maintenance";
99
+ return "product";
100
+ }
101
+ /** Bounded count of today's `terminal` set over the live generations (B1 query 1). */
102
+ export const COMMAND_TERMINAL_COUNT_SQL = `SELECT count(*) AS n FROM (
103
+ SELECT 1 FROM command INDEXED BY command_terminal
104
+ WHERE live = 1 AND kind IN ('product','delivery','maintenance') AND finished_at IS NOT NULL
105
+ LIMIT ?1)`;
106
+ /** One keyset page of prune candidates, oldest first (B1 query 2 as amended by C1). */
107
+ export const COMMAND_PRUNABLE_PAGE_SQL = `SELECT id, run_id, run_dir, continue_from, created_at
108
+ FROM command INDEXED BY command_prunable
109
+ WHERE live = 1 AND kind IN ('product','delivery','maintenance') AND finished_at IS NOT NULL AND needs_decision = 0
110
+ AND finished_at <= ?1
111
+ AND (created_at, id) > (?2, ?3)
112
+ ORDER BY created_at, id LIMIT ?4`;
113
+ /** Continuation exemption: `continueFrom` names a live run id or job id that is still retained. */
114
+ export const RETAINED_PREDECESSOR_SQL = `SELECT EXISTS(
115
+ SELECT 1 FROM command WHERE live = 1 AND (id = ?1 OR run_id = ?1)) AS retained`;
116
+ export const COMMAND_RETENTION_CAP = 500;
117
+ export const COMMAND_RETENTION_BATCH = 100;
118
+ /** Today's `terminal.length`, bounded by `cap + batch` (the excess cannot exceed one batch per call). */
119
+ export function terminalCommandCount(store, cap = COMMAND_RETENTION_CAP, batch = COMMAND_RETENTION_BATCH) {
120
+ const row = store.prepare(COMMAND_TERMINAL_COUNT_SQL).get(cap + batch);
121
+ return Number(row.n);
122
+ }
123
+ /**
124
+ * Select at most one batch of victims: the oldest expired terminal commands of
125
+ * the live generations, skipping needs-decision rows (outside the index) and
126
+ * continuations whose predecessor is retained, paging by keyset so exempt rows
127
+ * are visited once. The deletion transaction belongs to the owner (PR-C).
128
+ */
129
+ export function commandRetentionCandidates(store, input) {
130
+ const cap = input.cap ?? COMMAND_RETENTION_CAP;
131
+ const batch = input.batch ?? COMMAND_RETENTION_BATCH;
132
+ const excess = Math.max(0, terminalCommandCount(store, cap, batch) - cap);
133
+ const selection = { victims: [], excess, visited: 0, pages: 0 };
134
+ if (excess === 0)
135
+ return selection;
136
+ const target = Math.min(excess, batch);
137
+ const cutoff = new Date(input.now.getTime() - input.retentionMs).toISOString();
138
+ const page = store.prepare(COMMAND_PRUNABLE_PAGE_SQL);
139
+ const retained = store.prepare(RETAINED_PREDECESSOR_SQL);
140
+ let after = ["", ""];
141
+ while (selection.victims.length < target) {
142
+ const rows = page.all(cutoff, after[0], after[1], batch);
143
+ if (rows.length === 0)
144
+ break;
145
+ selection.pages += 1;
146
+ for (const row of rows) {
147
+ selection.visited += 1;
148
+ const candidate = {
149
+ id: row.id,
150
+ runId: row.run_id,
151
+ runDir: row.run_dir,
152
+ continueFrom: row.continue_from,
153
+ createdAt: row.created_at,
154
+ };
155
+ const predecessorRetained = candidate.continueFrom !== null &&
156
+ Number(retained.get(candidate.continueFrom).retained) ===
157
+ 1;
158
+ if (predecessorRetained || input.exempt?.(candidate))
159
+ continue;
160
+ selection.victims.push(candidate);
161
+ if (selection.victims.length >= target)
162
+ break;
163
+ }
164
+ const last = rows[rows.length - 1];
165
+ after = [last.created_at, last.id];
166
+ }
167
+ return selection;
168
+ }
169
+ /** `EXPLAIN QUERY PLAN` rows for a statement (plan gates, SYNTHESIS_R5 §5). */
170
+ export function queryPlan(store, sql) {
171
+ return store.prepare(`EXPLAIN QUERY PLAN ${sql}`).all().map((row) => row.detail);
172
+ }
173
+ //# sourceMappingURL=retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/store/retention.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { RunEvent } from "@claudexor/schema";
2
+ import { type SqlWriteContext } from "./mutation.js";
3
+ import type { SqlEventLedger } from "./event-store.js";
4
+ /** Import/runtime authority uses INSERT, never replacement of a first terminal. */
5
+ export declare function applyTerminalInTx(sql: SqlWriteContext, pid: number, event: RunEvent): void;
6
+ export declare function storedTerminal(sql: Pick<SqlWriteContext, "prepare">, runId: string, pid?: number): RunEvent | undefined;
7
+ /** Non-terminal durable copies use the same typed selection/redaction owner.
8
+ * The terminal itself enters through SqlCommandStore.persistTerminal. */
9
+ export declare class SqlRunEventStore {
10
+ private readonly events;
11
+ constructor(events: SqlEventLedger);
12
+ record(value: RunEvent): RunEvent;
13
+ }
14
+ //# sourceMappingURL=run-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-events.d.ts","sourceRoot":"","sources":["../../src/store/run-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAK1F;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EACrC,KAAK,EAAE,MAAM,EACb,GAAG,CAAC,EAAE,MAAM,GACX,QAAQ,GAAG,SAAS,CAOtB;AAED;yEACyE;AACzE,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAAnC,YAA6B,MAAM,EAAE,cAAc,EAAI;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAUhC;CACF"}
@@ -0,0 +1,35 @@
1
+ import { RunEvent } from "@claudexor/schema";
2
+ import { isJournaledRunEvent, journaledRunEventCopy } from "../journaled-run-events.js";
3
+ import { requireTransaction } from "./mutation.js";
4
+ /** Import/runtime authority uses INSERT, never replacement of a first terminal. */
5
+ export function applyTerminalInTx(sql, pid, event) {
6
+ requireTransaction(sql);
7
+ sql
8
+ .prepare("INSERT INTO run_terminal(run_id,pid,event) VALUES(?,?,?)")
9
+ .run(event.run_id, pid, Buffer.from(JSON.stringify(event)));
10
+ }
11
+ export function storedTerminal(sql, runId, pid) {
12
+ const row = sql
13
+ .prepare(`SELECT event FROM run_terminal WHERE run_id=?${pid === undefined ? "" : " AND pid=?"}`)
14
+ .get(runId, ...(pid === undefined ? [] : [pid]));
15
+ return row ? RunEvent.parse(JSON.parse(Buffer.from(row.event).toString("utf8"))) : undefined;
16
+ }
17
+ /** Non-terminal durable copies use the same typed selection/redaction owner.
18
+ * The terminal itself enters through SqlCommandStore.persistTerminal. */
19
+ export class SqlRunEventStore {
20
+ events;
21
+ constructor(events) {
22
+ this.events = events;
23
+ }
24
+ record(value) {
25
+ const event = RunEvent.parse(value);
26
+ if (event.type === "run.completed" ||
27
+ event.type === "run.failed" ||
28
+ event.type === "run.blocked")
29
+ throw new Error("terminal events require the command terminal transaction");
30
+ if (isJournaledRunEvent(event))
31
+ this.events.append("run.event", journaledRunEventCopy(event));
32
+ return event;
33
+ }
34
+ }
35
+ //# sourceMappingURL=run-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-events.js","sourceRoot":"","sources":["../../src/store/run-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAE,kBAAkB,EAAwB,MAAM,eAAe,CAAC;AAGzE,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,GAAoB,EAAE,GAAW,EAAE,KAAe;IAClF,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxB,GAAG;SACA,OAAO,CAAC,0DAA0D,CAAC;SACnE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,GAAqC,EACrC,KAAa,EACb,GAAY;IAEZ,MAAM,GAAG,GAAG,GAAG;SACZ,OAAO,CACN,gDAAgD,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CACxF;SACA,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAsC,CAAC;IACxF,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/F,CAAC;AAED;yEACyE;AACzE,MAAM,OAAO,gBAAgB;IACE,MAAM;IAAnC,YAA6B,MAAsB;sBAAtB,MAAM;IAAmB,CAAC;IACvD,MAAM,CAAC,KAAe;QACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACpC,IACE,KAAK,CAAC,IAAI,KAAK,eAAe;YAC9B,KAAK,CAAC,IAAI,KAAK,YAAY;YAC3B,KAAK,CAAC,IAAI,KAAK,aAAa;YAE5B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,IAAI,mBAAmB,CAAC,KAAK,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9F,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ /** First SQLite that fixes the WAL-reset corruption bug (two connections
2
+ * writing/checkpointing at once — exactly the flusher topology). Bundled by
3
+ * Node >= 24.15.0 and >= 22.23.0; the published engines floor is 24.15.0. */
4
+ export declare const ENGINE_SQLITE_MIN_VERSION = "3.51.3";
5
+ export type SqliteModule = typeof import("node:sqlite");
6
+ export interface EngineRuntime {
7
+ sqlite: SqliteModule;
8
+ nodeVersion: string;
9
+ sqliteVersion: string;
10
+ }
11
+ export interface EngineRuntimeProbe {
12
+ versions?: Readonly<Record<string, string | undefined>>;
13
+ importSqlite?: () => Promise<SqliteModule>;
14
+ }
15
+ /** Compare dotted numeric versions; non-numeric segments compare as 0. */
16
+ export declare function compareDottedVersions(a: string, b: string): number;
17
+ /**
18
+ * Lazily import `node:sqlite` and prove the bundled SQLite is new enough.
19
+ * Fails typed (`engine_runtime_unsupported`) before any data root is touched:
20
+ * Node 20 has no `node:sqlite`, Node 22 < 22.23 and Node 24 < 24.15 bundle
21
+ * the WAL-reset-affected SQLite, and neither may serve an engine store.
22
+ */
23
+ export declare function loadEngineRuntime(probe?: EngineRuntimeProbe): Promise<EngineRuntime>;
24
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/store/runtime.ts"],"names":[],"mappings":"AAEA;;6EAE6E;AAC7E,eAAO,MAAM,yBAAyB,WAAW,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,cAAc,aAAa,CAAC,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IACxD,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,CAAC;CAC5C;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CASlE;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,CAAC,CAyC9F"}
@@ -0,0 +1,67 @@
1
+ import { EngineRuntimeUnsupportedError } from "./errors.js";
2
+ /** First SQLite that fixes the WAL-reset corruption bug (two connections
3
+ * writing/checkpointing at once — exactly the flusher topology). Bundled by
4
+ * Node >= 24.15.0 and >= 22.23.0; the published engines floor is 24.15.0. */
5
+ export const ENGINE_SQLITE_MIN_VERSION = "3.51.3";
6
+ /** Compare dotted numeric versions; non-numeric segments compare as 0. */
7
+ export function compareDottedVersions(a, b) {
8
+ const left = a.split(".").map((part) => Number.parseInt(part, 10) || 0);
9
+ const right = b.split(".").map((part) => Number.parseInt(part, 10) || 0);
10
+ const length = Math.max(left.length, right.length);
11
+ for (let index = 0; index < length; index += 1) {
12
+ const delta = (left[index] ?? 0) - (right[index] ?? 0);
13
+ if (delta !== 0)
14
+ return delta < 0 ? -1 : 1;
15
+ }
16
+ return 0;
17
+ }
18
+ /**
19
+ * Lazily import `node:sqlite` and prove the bundled SQLite is new enough.
20
+ * Fails typed (`engine_runtime_unsupported`) before any data root is touched:
21
+ * Node 20 has no `node:sqlite`, Node 22 < 22.23 and Node 24 < 24.15 bundle
22
+ * the WAL-reset-affected SQLite, and neither may serve an engine store.
23
+ */
24
+ export async function loadEngineRuntime(probe = {}) {
25
+ const versions = probe.versions ?? process.versions;
26
+ const nodeVersion = versions["node"] ?? "unknown";
27
+ const sqliteVersion = versions["sqlite"] ?? null;
28
+ if (sqliteVersion === null) {
29
+ throw new EngineRuntimeUnsupportedError({
30
+ nodeVersion,
31
+ sqliteVersion,
32
+ requiredSqlite: ENGINE_SQLITE_MIN_VERSION,
33
+ detail: "this Node does not bundle SQLite (node:sqlite is absent)",
34
+ });
35
+ }
36
+ if (compareDottedVersions(sqliteVersion, ENGINE_SQLITE_MIN_VERSION) < 0) {
37
+ throw new EngineRuntimeUnsupportedError({
38
+ nodeVersion,
39
+ sqliteVersion,
40
+ requiredSqlite: ENGINE_SQLITE_MIN_VERSION,
41
+ detail: "the bundled SQLite predates the WAL-reset corruption fix",
42
+ });
43
+ }
44
+ let sqlite;
45
+ try {
46
+ sqlite = await (probe.importSqlite ?? (() => import("node:sqlite")))();
47
+ }
48
+ catch (error) {
49
+ throw new EngineRuntimeUnsupportedError({
50
+ nodeVersion,
51
+ sqliteVersion,
52
+ requiredSqlite: ENGINE_SQLITE_MIN_VERSION,
53
+ detail: "node:sqlite could not be imported",
54
+ cause: error,
55
+ });
56
+ }
57
+ if (typeof sqlite.DatabaseSync !== "function") {
58
+ throw new EngineRuntimeUnsupportedError({
59
+ nodeVersion,
60
+ sqliteVersion,
61
+ requiredSqlite: ENGINE_SQLITE_MIN_VERSION,
62
+ detail: "node:sqlite exposes no DatabaseSync",
63
+ });
64
+ }
65
+ return { sqlite, nodeVersion, sqliteVersion };
66
+ }
67
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/store/runtime.ts"],"names":[],"mappings":"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"}