@claudexor/daemon 3.25.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +91 -0
  282. package/dist/store/retention.d.ts.map +1 -0
  283. package/dist/store/retention.js +169 -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,21 @@
1
+ import { RunTelemetry, type RunFacts } from "@claudexor/schema";
2
+ import { appendLine } from "@claudexor/util";
3
+ import { writeExternalFile } from "./external-files.js";
4
+ import type { Obligations } from "./obligations.js";
5
+ import type { EngineStore } from "./store.js";
6
+ /** One handler for all partitions. SQL already owns the terminal; file repair
7
+ * never inserts another terminal or changes its outcome. */
8
+ export declare class SqlTerminalFiles {
9
+ private readonly store;
10
+ private readonly obligations;
11
+ private readonly io;
12
+ constructor(store: EngineStore, obligations: Obligations, io?: {
13
+ write?: typeof writeExternalFile;
14
+ append?: typeof appendLine;
15
+ });
16
+ pending(runIdOrCommandId: string): boolean;
17
+ materialize(runId: string): void;
18
+ prepareRecoveryTelemetry(runDir: string, facts: RunFacts): RunTelemetry | null;
19
+ private write;
20
+ }
21
+ //# sourceMappingURL=terminal-files.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-files.d.ts","sourceRoot":"","sources":["../../src/store/terminal-files.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAA8B,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAY,MAAM,iBAAiB,CAAC;AAQvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAoC,MAAM,kBAAkB,CAAC;AAEtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C;4DAC4D;AAC5D,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,EAAE;IAHrB,YACmB,KAAK,EAAE,WAAW,EAClB,WAAW,EAAE,WAAW,EACxB,EAAE,GAAE;QAAE,KAAK,CAAC,EAAE,OAAO,iBAAiB,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,UAAU,CAAA;KAAO,EAG3F;IAED,OAAO,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAMzC;IAED,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAO/B;IAED,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,YAAY,GAAG,IAAI,CAS7E;IAED,OAAO,CAAC,KAAK;CAoEd"}
@@ -0,0 +1,115 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { RunTelemetry, validateRunFactsInvariants } from "@claudexor/schema";
4
+ import { appendLine, hashJson } from "@claudexor/util";
5
+ import { parse as parseYaml } from "yaml";
6
+ import { lstatOrNull, normalizedTerminalEvents, recoveredTerminalFacts, } from "../terminal-authority.js";
7
+ import { commandSummary } from "./command-rows.js";
8
+ import { writeExternalFile } from "./external-files.js";
9
+ import { storedTerminal } from "./run-events.js";
10
+ /** One handler for all partitions. SQL already owns the terminal; file repair
11
+ * never inserts another terminal or changes its outcome. */
12
+ export class SqlTerminalFiles {
13
+ store;
14
+ obligations;
15
+ io;
16
+ constructor(store, obligations, io = {}) {
17
+ this.store = store;
18
+ this.obligations = obligations;
19
+ this.io = io;
20
+ obligations.registerHandler("terminal_files", (row, effects) => this.write(row, effects));
21
+ }
22
+ pending(runIdOrCommandId) {
23
+ return !!this.store
24
+ .prepare("SELECT 1 FROM effect_obligation WHERE kind='terminal_files' AND key=coalesce((SELECT run_id FROM command WHERE id=?1),?1) AND state='pending'")
25
+ .get(runIdOrCommandId);
26
+ }
27
+ materialize(runId) {
28
+ const row = this.obligations.get("terminal_files", runId);
29
+ if (!row)
30
+ return;
31
+ this.write(row, {
32
+ register: (dir) => this.obligations.registerEffect("terminal_files", runId, dir),
33
+ });
34
+ this.obligations.materialize("terminal_files", runId);
35
+ }
36
+ prepareRecoveryTelemetry(runDir, facts) {
37
+ try {
38
+ const telemetry = RunTelemetry.safeParse(parseYaml(readFileSync(join(runDir, "final", "telemetry.yaml"), "utf8")));
39
+ return telemetry.success ? RunTelemetry.parse({ ...telemetry.data, run_facts: facts }) : null;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ write(row, effects) {
46
+ const event = storedTerminal(this.store, row.key, row.pid);
47
+ const raw = this.store
48
+ .prepare("SELECT summary FROM command WHERE run_id=? AND pid=?")
49
+ .get(row.key, row.pid);
50
+ if (!event || !raw)
51
+ throw new Error("terminal obligation has no canonical command/event");
52
+ const record = commandSummary(raw);
53
+ const { facts, terminalSeq } = recoveredTerminalFacts(record, event);
54
+ const root = record.runDir;
55
+ const finalDir = join(root, "final");
56
+ const rootStat = lstatOrNull(root), finalStat = lstatOrNull(finalDir);
57
+ // Existing retention may already have reclaimed historical file evidence.
58
+ if (!rootStat || !finalStat)
59
+ return;
60
+ if (!rootStat.isDirectory() ||
61
+ rootStat.isSymbolicLink() ||
62
+ !finalStat.isDirectory() ||
63
+ finalStat.isSymbolicLink())
64
+ throw new Error("durable terminal run directory is not a canonical directory");
65
+ const factsPath = join(finalDir, "run_facts.yaml");
66
+ const prior = lstatOrNull(factsPath);
67
+ if (prior) {
68
+ if (!prior.isFile() || prior.isSymbolicLink())
69
+ throw new Error("durable terminal RunFacts receipt is not a regular file");
70
+ let value;
71
+ try {
72
+ value = parseYaml(readFileSync(factsPath, "utf8"));
73
+ }
74
+ catch {
75
+ value = undefined;
76
+ }
77
+ if (value !== undefined && hashJson(validateRunFactsInvariants(value)) !== hashJson(facts))
78
+ throw new Error("durable terminal RunFacts receipt does not match SQL authority");
79
+ }
80
+ const write = this.io.write ?? writeExternalFile;
81
+ write(this.store, {
82
+ dir: finalDir,
83
+ name: "run_facts.yaml",
84
+ bytes: Buffer.from(`${JSON.stringify(facts, null, 2)}\n`),
85
+ });
86
+ effects.register(finalDir);
87
+ const telemetry = row.payload?.telemetry;
88
+ if (telemetry !== null && telemetry !== undefined) {
89
+ const prepared = RunTelemetry.parse(telemetry);
90
+ if (hashJson(prepared.run_facts) !== hashJson(facts))
91
+ throw new Error("durable terminal telemetry does not match SQL authority");
92
+ write(this.store, {
93
+ dir: finalDir,
94
+ name: "telemetry.yaml",
95
+ bytes: Buffer.from(`${JSON.stringify(prepared, null, 2)}\n`),
96
+ });
97
+ effects.register(finalDir);
98
+ }
99
+ const eventsPath = join(root, "events.jsonl");
100
+ const existing = lstatOrNull(eventsPath);
101
+ if (existing && (!existing.isFile() || existing.isSymbolicLink()))
102
+ throw new Error("durable terminal event log is not a regular file");
103
+ const bytes = existing ? readFileSync(eventsPath) : Buffer.alloc(0);
104
+ const normalized = Buffer.from(normalizedTerminalEvents(bytes, event, terminalSeq));
105
+ if (!bytes.equals(normalized)) {
106
+ const added = Buffer.from(`${JSON.stringify(event)}\n`);
107
+ if (normalized.equals(Buffer.concat([bytes, added])))
108
+ (this.io.append ?? appendLine)(eventsPath, JSON.stringify(event));
109
+ else
110
+ write(this.store, { dir: root, name: "events.jsonl", bytes: normalized });
111
+ }
112
+ effects.register(root);
113
+ }
114
+ }
115
+ //# sourceMappingURL=terminal-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-files.js","sourceRoot":"","sources":["../../src/store/terminal-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Thread } from "@claudexor/schema";
2
+ import type { CreateThreadInput } from "../threads.js";
3
+ import type { SqlWriteContext } from "./mutation.js";
4
+ import type { PartitionGeneration } from "./partitions.js";
5
+ export declare function threadReplayQuery(pairs: readonly (readonly [number, string])[]): {
6
+ sql: string;
7
+ values: Array<string | number>;
8
+ };
9
+ /** No path resolution, admission or project registration precedes this lookup.
10
+ * A different request in an unrelated project is not this request's conflict. */
11
+ export declare function findThreadCreationAcross(sql: Pick<SqlWriteContext, "prepare">, scopes: readonly Pick<PartitionGeneration, "pid" | "name">[], input: CreateThreadInput["idempotency"], exactRequestOnly?: boolean): Thread | undefined;
12
+ //# sourceMappingURL=thread-replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-replay.d.ts","sourceRoot":"","sources":["../../src/store/thread-replay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAM3D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG;IAChF,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;CAChC,CAcA;AAED;iFACiF;AACjF,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EACrC,MAAM,EAAE,SAAS,IAAI,CAAC,mBAAmB,EAAE,KAAK,GAAG,MAAM,CAAC,EAAE,EAC5D,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,EACvC,gBAAgB,UAAO,GACtB,MAAM,GAAG,SAAS,CA2BpB"}
@@ -0,0 +1,49 @@
1
+ import { idempotencyConflict, threadCreationIdempotency } from "../thread-store-support.js";
2
+ import { readThread } from "./thread-rows.js";
3
+ /** Two variables per scope, exactly Node SQLite's 32766-variable bound. */
4
+ const ROW_VALUE_SCOPE_LIMIT = 16_383;
5
+ export function threadReplayQuery(pairs) {
6
+ const columns = "pid,key_digest,request_digest,target_id";
7
+ if (pairs.length > ROW_VALUE_SCOPE_LIMIT) {
8
+ return {
9
+ sql: `SELECT ${columns} FROM idempotency WHERE owner='thread' AND (pid,key_digest) IN (
10
+ SELECT json_extract(value,'$[0]'),json_extract(value,'$[1]') FROM json_each(?))`,
11
+ values: [JSON.stringify(pairs)],
12
+ };
13
+ }
14
+ return {
15
+ sql: `SELECT ${columns} FROM idempotency WHERE owner='thread' AND (pid,key_digest) IN
16
+ (VALUES ${pairs.map(() => "(?,?)").join(",")})`,
17
+ values: pairs.flatMap(([pid, key]) => [pid, key]),
18
+ };
19
+ }
20
+ /** No path resolution, admission or project registration precedes this lookup.
21
+ * A different request in an unrelated project is not this request's conflict. */
22
+ export function findThreadCreationAcross(sql, scopes, input, exactRequestOnly = true) {
23
+ if (!input || scopes.length === 0)
24
+ return undefined;
25
+ const keys = scopes.map((scope) => ({
26
+ scope,
27
+ key: threadCreationIdempotency(scope.name, input),
28
+ }));
29
+ const query = threadReplayQuery(keys.map(({ scope, key }) => [scope.pid, key.keyDigest]));
30
+ const rows = sql.prepare(query.sql).all(...query.values);
31
+ // Legacy searches healthy project partitions in registry insertion order.
32
+ const byPid = new Map(rows.map((row) => [row.pid, row]));
33
+ for (const { scope, key } of keys) {
34
+ const row = byPid.get(scope.pid);
35
+ if (!row)
36
+ continue;
37
+ if (row.request_digest !== key.requestDigest) {
38
+ if (exactRequestOnly)
39
+ continue;
40
+ throw idempotencyConflict();
41
+ }
42
+ const thread = readThread(sql, scope.pid, row.target_id);
43
+ if (!thread)
44
+ throw new Error(`idempotency record points to missing thread ${row.target_id}`);
45
+ return thread;
46
+ }
47
+ return undefined;
48
+ }
49
+ //# sourceMappingURL=thread-replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-replay.js","sourceRoot":"","sources":["../../src/store/thread-replay.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,mBAAmB,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAG5F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,MAAM,CAAC;AAErC,MAAM,UAAU,iBAAiB,CAAC,KAA6C;IAI7E,MAAM,OAAO,GAAG,yCAAyC,CAAC;IAC1D,IAAI,KAAK,CAAC,MAAM,GAAG,qBAAqB,EAAE,CAAC;QACzC,OAAO;YACL,GAAG,EAAE,UAAU,OAAO;sFAC0D;YAChF,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;SAChC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,GAAG,EAAE,UAAU,OAAO;cACZ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;QAC/C,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;KAClD,CAAC;AACJ,CAAC;AAED;iFACiF;AACjF,MAAM,UAAU,wBAAwB,CACtC,GAAqC,EACrC,MAA4D,EAC5D,KAAuC,EACvC,gBAAgB,GAAG,IAAI;IAEvB,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAClC,KAAK;QACL,GAAG,EAAE,yBAAyB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAE;KACnD,CAAC,CAAC,CAAC;IACJ,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAKrD,CAAC;IACH,0EAA0E;IAC1E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACzD,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,SAAS;QACnB,IAAI,GAAG,CAAC,cAAc,KAAK,GAAG,CAAC,aAAa,EAAE,CAAC;YAC7C,IAAI,gBAAgB;gBAAE,SAAS;YAC/B,MAAM,mBAAmB,EAAE,CAAC;QAC9B,CAAC;QACD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7F,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { Thread, ThreadTurn } from "@claudexor/schema";
2
+ import { type ThreadMutation } from "../thread-store-support.js";
3
+ import type { BlobFiles, BodyRef } from "./blob-files.js";
4
+ import { type SqlWriteContext } from "./mutation.js";
5
+ export declare const encodeBody: (body: unknown) => Buffer;
6
+ export declare const decodeBody: <T>(row: {
7
+ body: Uint8Array;
8
+ }) => T;
9
+ export interface PreparedThreadMutation {
10
+ mutation: ThreadMutation;
11
+ prompts: ReadonlyMap<string, BodyRef>;
12
+ }
13
+ export declare function prepareThreadMutation(blobs: BlobFiles, value: ThreadMutation): PreparedThreadMutation;
14
+ /** Pure replay/runtime reducer. The importer supplies prepared prompt bytes
15
+ * and original time on its one connection; no files, callbacks or COMMIT here. */
16
+ export declare function applyThreadMutation(sql: SqlWriteContext, pid: number, prepared: PreparedThreadMutation, time: string): string[];
17
+ /** Applied separately after project rows; import never emits a fresh ping. */
18
+ export declare function applyImportedHeadRevision(sql: SqlWriteContext, threadId: string, revision: number): void;
19
+ export declare function readThread(sql: Pick<SqlWriteContext, "prepare">, pid: number, id: string): Thread | undefined;
20
+ export declare function readTurn(sql: Pick<SqlWriteContext, "prepare">, blobs: Pick<BlobFiles, "read">, pid: number, id: string): ThreadTurn | undefined;
21
+ export declare function hydrateTurn(row: {
22
+ body: Uint8Array;
23
+ prompt_sha: string;
24
+ }, blobs: Pick<BlobFiles, "read">): ThreadTurn;
25
+ //# sourceMappingURL=thread-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-rows.d.ts","sourceRoot":"","sources":["../../src/store/thread-rows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,MAAM,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACrF,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAEzE,eAAO,MAAM,UAAU,SAAU,OAAO,KAAG,MAA2C,CAAC;AACvF,eAAO,MAAM,UAAU,GAAI,CAAC,OAAO;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,KAAG,CACD,CAAC;AAE1D,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,cAAc,CAAC;IACzB,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,cAAc,GACpB,sBAAsB,CAMxB;AAED;kFACkF;AAClF,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,sBAAsB,EAChC,IAAI,EAAE,MAAM,GACX,MAAM,EAAE,CAoEV;AA8ED,8EAA8E;AAC9E,wBAAgB,yBAAyB,CACvC,GAAG,EAAE,eAAe,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,IAAI,CAKN;AAED,wBAAgB,UAAU,CACxB,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EACrC,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,GACT,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,EACrC,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAC9B,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,MAAM,GACT,UAAU,GAAG,SAAS,CAIxB;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAC7C,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,GAC7B,UAAU,CAKZ"}
@@ -0,0 +1,141 @@
1
+ import { parseMutation } from "../thread-store-support.js";
2
+ import { deleteUnownedInlineInTx } from "./blob-files.js";
3
+ import { bindIdempotencyInTx } from "./idempotency.js";
4
+ import { requireTransaction } from "./mutation.js";
5
+ export const encodeBody = (body) => Buffer.from(JSON.stringify(body));
6
+ export const decodeBody = (row) => JSON.parse(Buffer.from(row.body).toString("utf8"));
7
+ export function prepareThreadMutation(blobs, value) {
8
+ const mutation = parseMutation(value);
9
+ const prompts = new Map((mutation.turns ?? []).map((turn) => [turn.id, blobs.prepareBody(Buffer.from(turn.prompt))]));
10
+ return { mutation, prompts };
11
+ }
12
+ /** Pure replay/runtime reducer. The importer supplies prepared prompt bytes
13
+ * and original time on its one connection; no files, callbacks or COMMIT here. */
14
+ export function applyThreadMutation(sql, pid, prepared, time) {
15
+ requireTransaction(sql);
16
+ const changed = new Set();
17
+ const mutation = parseMutation(prepared.mutation);
18
+ for (const thread of mutation.threads ?? []) {
19
+ const result = sql
20
+ .prepare(`INSERT INTO thread(id,pid,state,updated_at,body) VALUES(?,?,?,?,?)
21
+ ON CONFLICT(id) DO UPDATE SET state=excluded.state, updated_at=excluded.updated_at, body=excluded.body
22
+ WHERE thread.pid=excluded.pid`)
23
+ .run(thread.id, pid, thread.state, thread.updated_at, encodeBody(thread));
24
+ if (!result.changes)
25
+ throw new Error(`thread ${thread.id} belongs to another generation`);
26
+ }
27
+ for (const turn of mutation.turns ?? []) {
28
+ const ref = prepared.prompts.get(turn.id);
29
+ if (!ref)
30
+ throw new Error(`missing prepared prompt for ${turn.id}`);
31
+ const old = sql.prepare("SELECT pid, ordinal, prompt_sha FROM turn WHERE id=?").get(turn.id);
32
+ if (old && old.pid !== pid)
33
+ throw new Error(`turn ${turn.id} belongs to another generation`);
34
+ const ordinal = old?.ordinal ?? nextOrdinal(sql, "turn", turn.thread_id);
35
+ sql
36
+ .prepare("INSERT OR IGNORE INTO blob(sha256,size,inline) VALUES(?,?,?)")
37
+ .run(ref.sha256, ref.size, ref.inline);
38
+ const { prompt: _prompt, ...body } = turn;
39
+ sql
40
+ .prepare(`INSERT INTO turn(id,pid,thread_id,ordinal,run_id,created_at,prompt_sha,body) VALUES(?,?,?,?,?,?,?,?)
41
+ ON CONFLICT(id) DO UPDATE SET run_id=excluded.run_id, prompt_sha=excluded.prompt_sha, body=excluded.body`)
42
+ .run(turn.id, pid, turn.thread_id, ordinal, turn.run_id, turn.created_at, ref.sha256, encodeBody(body));
43
+ changed.add(ref.sha256);
44
+ if (old)
45
+ changed.add(old.prompt_sha);
46
+ }
47
+ for (const session of mutation.sessions ?? [])
48
+ writeLane(sql, "session", pid, session);
49
+ for (const checkpoint of mutation.checkpoints ?? [])
50
+ writeLane(sql, "lane_checkpoint", pid, checkpoint);
51
+ const bindings = [
52
+ mutation.threadCreation && {
53
+ ...mutation.threadCreation,
54
+ owner: "thread",
55
+ targetId: mutation.threadCreation.threadId,
56
+ operation: "thread.create",
57
+ },
58
+ mutation.idempotency && {
59
+ ...mutation.idempotency,
60
+ owner: "turn",
61
+ targetId: mutation.idempotency.turnId,
62
+ operation: "thread.turn.create",
63
+ },
64
+ ];
65
+ for (const binding of bindings) {
66
+ if (!binding)
67
+ continue;
68
+ const saved = bindIdempotencyInTx(sql, { ...binding, pid, createdAt: time });
69
+ if (saved.targetId !== binding.targetId)
70
+ throw new Error("conflicting thread idempotency history");
71
+ }
72
+ for (const sha of changed)
73
+ deleteUnownedInlineInTx(sql, sha);
74
+ return [...changed];
75
+ }
76
+ function nextOrdinal(sql, table, scope) {
77
+ const column = table === "turn" ? "ordinal" : "insertion_ordinal";
78
+ const key = table === "turn" ? "thread_id" : "pid";
79
+ const row = sql
80
+ .prepare(`SELECT ${column} AS n FROM ${table} WHERE ${key}=? ORDER BY ${column} DESC LIMIT 1`)
81
+ .get(scope);
82
+ return (row?.n ?? -1) + 1;
83
+ }
84
+ function writeLane(sql, table, pid, item) {
85
+ if (table === "session") {
86
+ const previous = sql
87
+ .prepare("SELECT insertion_ordinal FROM session WHERE id=? AND pid=?")
88
+ .get(item.id, pid);
89
+ const ordinal = previous?.insertion_ordinal ?? nextOrdinal(sql, table, pid);
90
+ const result = sql
91
+ .prepare(`INSERT INTO session(id,thread_id,harness_id,profile_id,pid,insertion_ordinal,body)
92
+ VALUES(?,?,?,?,?,?,?) ON CONFLICT(id) DO UPDATE SET profile_id=excluded.profile_id,body=excluded.body
93
+ WHERE session.pid=excluded.pid`)
94
+ .run(item.id, item.thread_id, item.harness_id, item.profile_id ?? "", pid, ordinal, encodeBody(item));
95
+ if (!result.changes)
96
+ throw new Error(`session ${item.id} belongs to another generation`);
97
+ return;
98
+ }
99
+ // Checkpoints retain legacy lane identity, including the null/default alias.
100
+ const previous = sql
101
+ .prepare(`SELECT profile_id,insertion_ordinal FROM ${table}
102
+ WHERE thread_id=? AND harness_id=? AND json_extract(CAST(body AS TEXT),'$.id')=?`)
103
+ .get(item.thread_id, item.harness_id, item.id);
104
+ const ordinal = previous?.insertion_ordinal ?? nextOrdinal(sql, table, pid);
105
+ const profile = item.profile_id ?? "";
106
+ if (previous && previous.profile_id !== profile) {
107
+ sql
108
+ .prepare(`DELETE FROM ${table} WHERE thread_id=? AND harness_id=? AND profile_id=? AND pid=?`)
109
+ .run(item.thread_id, item.harness_id, previous.profile_id, pid);
110
+ }
111
+ const result = sql
112
+ .prepare(`INSERT INTO lane_checkpoint(thread_id,harness_id,profile_id,pid,insertion_ordinal,body,turn_id)
113
+ VALUES(?,?,?,?,?,?,?)
114
+ ON CONFLICT(thread_id,harness_id,profile_id) DO UPDATE SET body=excluded.body,turn_id=excluded.turn_id
115
+ WHERE lane_checkpoint.pid=excluded.pid`)
116
+ .run(item.thread_id, item.harness_id, profile, pid, ordinal, encodeBody(item), item.turn_id);
117
+ if (!result.changes)
118
+ throw new Error(`checkpoint ${item.id} belongs to another generation`);
119
+ }
120
+ /** Applied separately after project rows; import never emits a fresh ping. */
121
+ export function applyImportedHeadRevision(sql, threadId, revision) {
122
+ requireTransaction(sql);
123
+ sql
124
+ .prepare("UPDATE thread SET head_revision=max(head_revision,?) WHERE id=?")
125
+ .run(revision, threadId);
126
+ }
127
+ export function readThread(sql, pid, id) {
128
+ const row = sql.prepare("SELECT body FROM thread WHERE id=? AND pid=?").get(id, pid);
129
+ return row ? decodeBody(row) : undefined;
130
+ }
131
+ export function readTurn(sql, blobs, pid, id) {
132
+ const row = sql.prepare("SELECT body,prompt_sha FROM turn WHERE id=? AND pid=?").get(id, pid);
133
+ return row ? hydrateTurn(row, blobs) : undefined;
134
+ }
135
+ export function hydrateTurn(row, blobs) {
136
+ return {
137
+ ...decodeBody(row),
138
+ prompt: blobs.read(row.prompt_sha).toString("utf8"),
139
+ };
140
+ }
141
+ //# sourceMappingURL=thread-rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thread-rows.js","sourceRoot":"","sources":["../../src/store/thread-rows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import type { ContinuityDisclosure, LaneCheckpoint, Session, Thread, ThreadTurn, TurnEnqueueProblem } from "@claudexor/schema";
2
+ import { type ThreadMutation } from "../thread-store-support.js";
3
+ import type { CreateThreadInput, CreateTurnInput, UpdateThreadInput } from "../threads.js";
4
+ import { BlobFiles } from "./blob-files.js";
5
+ import { type MutationContext } from "./mutation.js";
6
+ import { Obligations } from "./obligations.js";
7
+ import type { PartitionGeneration } from "./partitions.js";
8
+ import type { EngineStore } from "./store.js";
9
+ import { type PreparedThreadMutation } from "./thread-rows.js";
10
+ /** Addressed SQL conversation owner. It never loads retained journal history. */
11
+ export declare class SqlThreadStore {
12
+ readonly store: EngineStore;
13
+ readonly blobs: BlobFiles;
14
+ readonly generation: Pick<PartitionGeneration, "pid" | "name" | "epoch">;
15
+ readonly obligations: Obligations;
16
+ constructor(store: EngineStore, blobs: BlobFiles, generation: Pick<PartitionGeneration, "pid" | "name" | "epoch">, obligations: Obligations);
17
+ private allThreads;
18
+ private allSessions;
19
+ private allCheckpoints;
20
+ prepare(mutation: ThreadMutation): PreparedThreadMutation;
21
+ /** Compound project relink and terminal owners compose in their one transaction. */
22
+ applyInTx(tx: MutationContext, prepared: PreparedThreadMutation): void;
23
+ private commit;
24
+ pingHeadInTx(tx: MutationContext, threadId: string): void;
25
+ pingHead(threadId: string): void;
26
+ revision(threadId: string): number;
27
+ createThread(input: CreateThreadInput): Thread;
28
+ /** Accepted-creation replay lookup, recovered before mutable path admission. */
29
+ findThreadCreation(input: CreateThreadInput["idempotency"], exactRequestOnly?: boolean): Thread | undefined;
30
+ /** Rename and/or open/close (archive) a thread. */
31
+ updateThread(id: string, patch: UpdateThreadInput): Thread;
32
+ trashThread(id: string): Thread;
33
+ restoreThread(id: string): Thread;
34
+ purgeThread(id: string): Thread;
35
+ private changeLifecycle;
36
+ /** Persist the resolved isolated worktree path + base sha for a thread. */
37
+ setThreadWorktree(id: string, worktreePath: string, baseSha: string, deliveredThroughRunId?: string): void;
38
+ listThreads(only?: "purged"): Thread[];
39
+ getThread(id: string): Thread | undefined;
40
+ turnsFor(threadId: string): ThreadTurn[];
41
+ getTurn(id: string): ThreadTurn | undefined;
42
+ /**
43
+ * Fail-loud prologue for the daemon runner: control-api validates thread/turn
44
+ * ids at the HTTP boundary, but a direct socket caller can pass bogus ids —
45
+ * a silent unbind would orphan the run from its conversation. A typed throw
46
+ * settles the job `failed` instead. Returns the normalized ids.
47
+ */
48
+ assertKnownIds(rawThreadId: unknown, rawTurnId: unknown): {
49
+ threadId?: string;
50
+ turnId?: string;
51
+ };
52
+ sessionsForThread(threadId: string): Session[];
53
+ /** Native resume map for a thread: harnessId -> native session id (live sessions only). */
54
+ resumeMap(threadId: string, profileId?: string | null): Record<string, {
55
+ sessionId: string;
56
+ profileId: string | null;
57
+ }>;
58
+ createTurn(threadId: string, prompt: string, input?: CreateTurnInput): ThreadTurn;
59
+ findTurnByIdempotency(threadId: string, input: NonNullable<CreateTurnInput["idempotency"]>): ThreadTurn | undefined;
60
+ /** Bind a started run to its turn and advance the thread head (runner-owned). */
61
+ bindTurnRun(turnId: string, runId: string): void;
62
+ /**
63
+ * Persist the reason a turn's run could NOT be enqueued/started (trust
64
+ * refusal, preflight validation, enqueue throw). Only meaningful for a
65
+ * RUNLESS turn: once a run is bound the turn's honesty lives on the run's
66
+ * own terminal artifacts, so a late failure report is ignored. One typed
67
+ * object carries code, retryability, recovery actions, and bounded context;
68
+ * adding a field cannot silently fall out of a positional callback chain.
69
+ */
70
+ setTurnEnqueueError(turnId: string, problem: TurnEnqueueProblem): void;
71
+ /** Record/refresh a harness's native session; see `makeSessionRecord` (INV-135). */
72
+ recordSession(threadId: string, harnessId: string, nativeSessionId: string, observedModel?: string | null, profileId?: string | null): void;
73
+ /** Advance a lane's checkpoint to `turnId` (INV-137): the lane
74
+ * (thread, harness, profile) has now SEEN that turn. Same (harness, profile)
75
+ * key as `resumeMap`, so the next turn's packet math is exact. */
76
+ recordLaneCheckpoint(threadId: string, harnessId: string, profileId: string | null, turnId: string): void;
77
+ /** The last turn a lane has seen, or null when the lane never ran. */
78
+ laneCheckpoint(threadId: string, harnessId: string, profileId: string | null): string | null;
79
+ /** All lane checkpoints of a thread (used to identify the prior head's lane). */
80
+ laneCheckpointsForThread(threadId: string): LaneCheckpoint[];
81
+ /** Stamp how a turn's lane was continued (INV-137); last-writer-wins. */
82
+ setTurnContinuity(turnId: string, disclosure: ContinuityDisclosure): void;
83
+ relinkProjectRoot(root: string): void;
84
+ /** D-U1 order 2 / INV-137 unified-accounts readers and mutations — the
85
+ * derivation contracts live in thread-lane-checkpoints.ts. */
86
+ accountBindings(threadId: string): Record<string, string>;
87
+ resumeMapAuto(threadId: string): Record<string, {
88
+ sessionId: string;
89
+ profileId: string | null;
90
+ }>;
91
+ migrateNullProfileContinuity(harnessId: string, rowId: string): {
92
+ sessions: number;
93
+ checkpoints: number;
94
+ };
95
+ rollbackProfileContinuity(harnessId: string, rowId: string): {
96
+ sessions: number;
97
+ checkpoints: number;
98
+ };
99
+ private applyContinuityMutation;
100
+ invalidateCredentialProfile(harnessId: string, profileId: string): {
101
+ clearedThreads: number;
102
+ invalidatedSessions: number;
103
+ };
104
+ }
105
+ //# sourceMappingURL=threads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"threads.d.ts","sourceRoot":"","sources":["../../src/store/threads.ts"],"names":[],"mappings":"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"}