@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
package/dist/threads.js CHANGED
@@ -1,380 +1,2 @@
1
- import { LaneCheckpoint as LaneCheckpointSchema, Session as SessionSchema, Thread as ThreadSchema, ThreadTurn as ThreadTurnSchema, } from "@claudexor/schema";
2
- import { newId, nowIso, redactSecrets, safeProblemContext, safeProblemMessage, safeProblemRequiredActions, } from "@claudexor/util";
3
- import { accountBindingsFrom, invalidateCredentialProfileMutation, findLaneCheckpoint, makeLaneCheckpoint, makeSessionRecord, migrateNullProfileContinuityMutation, resumeMapAutoFrom, resumeMapFrom, rollbackProfileContinuityMutation, stampContinuity, threadLaneCheckpoints, } from "./thread-lane-checkpoints.js";
4
- import { reduceThreadLifecycle } from "./thread-lifecycle.js";
5
- import { deriveThreadTitle } from "./thread-title.js";
6
- import { applyThreadIdempotency, assertUnique, findIdempotentThread, findIdempotentTurn, parseMutation, threadCreationIdempotency, turnRunConflict, turnIdempotency, upsert, buildNewThread, mergeThreadPatch, } from "./thread-store-support.js";
7
- import { threadWorktreeMutation } from "./thread-worktree-state.js";
8
- const UPSERTED = "thread.entities_upserted";
9
- /** Journal-backed thread/session projection. Returned mutations are fsynced. */
10
- export class ThreadStore {
11
- journal;
12
- headPing;
13
- state = { threads: [], sessions: [], turns: [], checkpoints: [] };
14
- // Derived during replay and commit; retained turns never move or disappear.
15
- turnIndexById = new Map();
16
- turnIdByKey = new Map();
17
- threadIdByKey = new Map();
18
- constructor(journal, headPing) {
19
- this.journal = journal;
20
- this.headPing = headPing;
21
- this.replay();
22
- }
23
- validateProjection() {
24
- for (const thread of this.state.threads)
25
- ThreadSchema.parse(thread);
26
- for (const session of this.state.sessions)
27
- SessionSchema.parse(session);
28
- for (const turn of this.state.turns)
29
- ThreadTurnSchema.parse(turn);
30
- for (const checkpoint of this.state.checkpoints)
31
- LaneCheckpointSchema.parse(checkpoint);
32
- assertUnique(this.state.threads, "thread");
33
- assertUnique(this.state.sessions, "session");
34
- assertUnique(this.state.turns, "turn");
35
- assertUnique(this.state.checkpoints, "lane checkpoint");
36
- for (const value of this.turnIdByKey.values()) {
37
- if (!this.getTurn(value.turnId))
38
- throw new Error("thread idempotency index is dangling");
39
- }
40
- for (const value of this.threadIdByKey.values()) {
41
- if (!this.getThread(value.threadId))
42
- throw new Error("thread creation idempotency index is dangling");
43
- }
44
- }
45
- replay() {
46
- for (const record of this.journal.records(0, [UPSERTED])) {
47
- if (record.type === UPSERTED)
48
- this.apply(parseMutation(record.payload));
49
- }
50
- this.validateProjection();
51
- }
52
- commit(mutation) {
53
- const parsed = parseMutation(mutation);
54
- this.journal.append(UPSERTED, parsed);
55
- this.apply(parsed);
56
- // Every PERSISTED mutation invalidates the touched threads' summaries —
57
- // pinging here (the single writer) covers create/rename/archive/turn-add/
58
- // enqueue-error/session/checkpoint without per-call-site wiring. Replay never
59
- // pings (it goes through apply(), not commit()); run-terminal pings directly.
60
- const touched = new Set([
61
- ...(parsed.threads ?? []).map((thread) => thread.id),
62
- ...(parsed.turns ?? []).map((turn) => turn.thread_id),
63
- ...(parsed.sessions ?? []).map((session) => session.thread_id),
64
- ...(parsed.checkpoints ?? []).map((checkpoint) => checkpoint.thread_id),
65
- ]);
66
- for (const threadId of touched)
67
- this.pingHead(threadId);
68
- }
69
- /**
70
- * Emit the content-free head-invalidation ping for one thread. The owning
71
- * partition name is this store's journal partition — the single source of
72
- * the thread->project mapping.
73
- */
74
- pingHead(threadId) {
75
- const partition = this.journal.options.partition;
76
- const projectId = partition.startsWith("project:") ? partition.slice("project:".length) : null;
77
- this.headPing?.({ threadId, projectId });
78
- }
79
- apply(mutation) {
80
- for (const thread of mutation.threads ?? [])
81
- upsert(this.state.threads, thread);
82
- for (const session of mutation.sessions ?? [])
83
- upsert(this.state.sessions, session);
84
- for (const turn of mutation.turns ?? [])
85
- upsert(this.state.turns, turn, this.turnIndexById);
86
- for (const checkpoint of mutation.checkpoints ?? [])
87
- upsert(this.state.checkpoints, checkpoint);
88
- applyThreadIdempotency(mutation, this.turnIdByKey, this.threadIdByKey);
89
- }
90
- createThread(input) {
91
- const creation = threadCreationIdempotency(this.journal.options.partition, input.idempotency);
92
- const existing = findIdempotentThread(this.threadIdByKey, (id) => this.getThread(id), creation);
93
- if (existing)
94
- return existing;
95
- const thread = buildNewThread(input);
96
- if (creation)
97
- creation.threadId = thread.id;
98
- this.commit({ threads: [thread], ...(creation ? { threadCreation: creation } : {}) });
99
- return thread;
100
- }
101
- /** Accepted-creation replay lookup, recovered before mutable path admission. */
102
- findThreadCreation(input, exactRequestOnly = false) {
103
- const creation = threadCreationIdempotency(this.journal.options.partition, input);
104
- return findIdempotentThread(this.threadIdByKey, (id) => this.getThread(id), creation, exactRequestOnly);
105
- }
106
- /** Rename and/or open/close (archive) a thread. */
107
- updateThread(id, patch) {
108
- const thread = this.getThread(id);
109
- if (!thread)
110
- throw Object.assign(new Error(`no such thread: ${id}`), { status: 404 });
111
- if (thread.state === "trashed" || thread.state === "purged") {
112
- throw Object.assign(new Error(`thread ${id} is ${thread.state}`), {
113
- status: 409,
114
- code: `thread_${thread.state}`,
115
- });
116
- }
117
- const next = mergeThreadPatch(thread, patch);
118
- this.commit({ threads: [next] });
119
- return next;
120
- }
121
- trashThread(id) {
122
- return this.changeLifecycle(id, "trash");
123
- }
124
- restoreThread(id) {
125
- return this.changeLifecycle(id, "restore");
126
- }
127
- purgeThread(id) {
128
- return this.changeLifecycle(id, "purge");
129
- }
130
- changeLifecycle(id, action) {
131
- const thread = this.getThread(id);
132
- if (!thread)
133
- throw Object.assign(new Error(`no such thread: ${id}`), { status: 404 });
134
- const next = reduceThreadLifecycle(thread, action);
135
- if (next !== thread)
136
- this.commit({ threads: [next] });
137
- return next;
138
- }
139
- /** Persist the resolved isolated worktree path + base sha for a thread. */
140
- setThreadWorktree(id, worktreePath, baseSha, deliveredThroughRunId) {
141
- const thread = this.getThread(id);
142
- if (!thread)
143
- return;
144
- this.commit(threadWorktreeMutation(thread, this.state.sessions, worktreePath, baseSha, deliveredThroughRunId));
145
- }
146
- listThreads(only) {
147
- return this.state.threads
148
- .filter((thread) => (only ? thread.state === only : thread.state !== "purged"))
149
- .sort((a, b) => (a.updated_at < b.updated_at ? 1 : -1));
150
- }
151
- getThread(id) {
152
- return this.state.threads.find((t) => t.id === id);
153
- }
154
- turnsFor(threadId) {
155
- return this.state.turns.filter((t) => t.thread_id === threadId);
156
- }
157
- getTurn(turnId) {
158
- const index = this.turnIndexById.get(turnId);
159
- return index === undefined ? undefined : this.state.turns[index];
160
- }
161
- /**
162
- * Fail-loud prologue for the daemon runner: control-api validates thread/turn
163
- * ids at the HTTP boundary, but a direct socket caller can pass bogus ids —
164
- * a silent unbind would orphan the run from its conversation. A typed throw
165
- * settles the job `failed` instead. Returns the normalized ids.
166
- */
167
- assertKnownIds(rawThreadId, rawTurnId) {
168
- const threadId = typeof rawThreadId === "string" && rawThreadId ? rawThreadId : undefined;
169
- const turnId = typeof rawTurnId === "string" && rawTurnId ? rawTurnId : undefined;
170
- if (threadId && !this.getThread(threadId)) {
171
- throw Object.assign(new Error(`no such thread: ${threadId}`), { code: "unknown_thread" });
172
- }
173
- if (turnId) {
174
- const turn = this.getTurn(turnId);
175
- if (!turn) {
176
- throw Object.assign(new Error(`no such turn: ${turnId}`), { code: "unknown_turn" });
177
- }
178
- // A turn is bound to ONE conversation: a foreign turnId would resolve
179
- // workspace/session context from one thread while advancing another
180
- // thread's lineage. A turn also never rides without its thread id.
181
- if (!threadId) {
182
- throw Object.assign(new Error(`turnId ${turnId} requires its threadId`), {
183
- code: "unbound_turn",
184
- });
185
- }
186
- if (turn.thread_id !== threadId) {
187
- throw Object.assign(new Error(`turn ${turnId} belongs to thread ${turn.thread_id}, not ${threadId}`), { code: "foreign_turn" });
188
- }
189
- }
190
- return { threadId, turnId };
191
- }
192
- sessionsForThread(threadId) {
193
- return this.state.sessions.filter((s) => s.thread_id === threadId);
194
- }
195
- /** Native resume map for a thread: harnessId -> native session id (live sessions only). */
196
- resumeMap(threadId, profileId = null) {
197
- return resumeMapFrom(this.state.sessions, threadId, profileId);
198
- }
199
- createTurn(threadId, prompt, input = {}) {
200
- const idempotency = turnIdempotency(this.journal.options.partition, threadId, input.idempotency);
201
- if (idempotency) {
202
- const existing = findIdempotentTurn(this.turnIdByKey, (id) => this.getTurn(id), idempotency);
203
- if (existing)
204
- return existing;
205
- }
206
- const thread = this.getThread(threadId);
207
- if (!thread)
208
- throw Object.assign(new Error(`no such thread: ${threadId}`), { status: 404 });
209
- if (thread.state === "trashed" || thread.state === "purged") {
210
- throw Object.assign(new Error(`thread ${threadId} is ${thread.state}`), {
211
- status: 409,
212
- code: `thread_${thread.state}`,
213
- });
214
- }
215
- // Count TURNS, not run_ids: run_ids is only filled at bindTurnRun (which lags
216
- // the runner), so a second turn created before the first binds would also see
217
- // an empty run_ids and wrongly claim "initial" (review #5).
218
- const existingTurns = this.state.turns.filter((t) => t.thread_id === threadId).length;
219
- const kind = input.kind ?? (existingTurns === 0 ? "initial" : "followup");
220
- const turn = ThreadTurnSchema.parse({
221
- id: newId("tn"),
222
- thread_id: threadId,
223
- run_id: null,
224
- parent_run_id: input.parentRunId !== undefined ? input.parentRunId : thread.head_run_id,
225
- answers_plan_run_id: input.answersPlanRunId ?? null,
226
- plan_run_id: input.planRunId ?? null,
227
- plan_hash: input.planHash ?? null,
228
- plan_readiness_overridden: input.planOverridden === true,
229
- kind,
230
- // Redact at the persistence boundary (the store is read back into UIs).
231
- prompt: redactSecrets(prompt),
232
- attachments: input.attachments ?? [],
233
- created_at: nowIso(),
234
- });
235
- // First prompt names the thread (no LLM): cheap, honest, editable via rename.
236
- const nextThread = ThreadSchema.parse({
237
- ...thread,
238
- title: thread.title || deriveThreadTitle(turn.prompt),
239
- updated_at: nowIso(),
240
- });
241
- if (idempotency)
242
- idempotency.turnId = turn.id;
243
- this.commit({ threads: [nextThread], turns: [turn], ...(idempotency ? { idempotency } : {}) });
244
- return turn;
245
- }
246
- findTurnByIdempotency(threadId, input) {
247
- const idempotency = turnIdempotency(this.journal.options.partition, threadId, input);
248
- return findIdempotentTurn(this.turnIdByKey, (id) => this.getTurn(id), idempotency);
249
- }
250
- /** Bind a started run to its turn and advance the thread head (runner-owned). */
251
- bindTurnRun(turnId, runId) {
252
- const turn = this.getTurn(turnId);
253
- if (!turn)
254
- return;
255
- if (turn.run_id === runId)
256
- return;
257
- if (turn.run_id)
258
- throw turnRunConflict(turnId, turn.run_id, runId);
259
- const nextTurn = ThreadTurnSchema.parse({ ...turn, run_id: runId, enqueue_error: null });
260
- // A binding run supersedes any recorded refusal (the retry path): the
261
- // turn is no longer an orphan, so the stale error must not linger.
262
- const thread = this.getThread(turn.thread_id);
263
- let nextThread;
264
- if (thread) {
265
- nextThread = ThreadSchema.parse({
266
- ...thread,
267
- run_ids: thread.run_ids.includes(runId) ? thread.run_ids : [...thread.run_ids, runId],
268
- head_run_id: runId,
269
- updated_at: nowIso(),
270
- });
271
- }
272
- this.commit({ turns: [nextTurn], ...(nextThread ? { threads: [nextThread] } : {}) });
273
- }
274
- /**
275
- * Persist the reason a turn's run could NOT be enqueued/started (trust
276
- * refusal, preflight validation, enqueue throw). Only meaningful for a
277
- * RUNLESS turn: once a run is bound the turn's honesty lives on the run's
278
- * own terminal artifacts, so a late failure report is ignored. One typed
279
- * object carries code, retryability, recovery actions, and bounded context;
280
- * adding a field cannot silently fall out of a positional callback chain.
281
- */
282
- setTurnEnqueueError(turnId, problem) {
283
- const turn = this.getTurn(turnId);
284
- if (!turn || turn.run_id)
285
- return;
286
- const nextTurn = ThreadTurnSchema.parse({
287
- ...turn,
288
- enqueue_error: {
289
- ...problem,
290
- message: safeProblemMessage(problem.message),
291
- required_actions: safeProblemRequiredActions(problem.required_actions),
292
- context: safeProblemContext(problem.context),
293
- failed_at: nowIso(),
294
- },
295
- });
296
- const thread = this.getThread(turn.thread_id);
297
- const nextThread = thread ? ThreadSchema.parse({ ...thread, updated_at: nowIso() }) : undefined;
298
- this.commit({ turns: [nextTurn], ...(nextThread ? { threads: [nextThread] } : {}) });
299
- }
300
- /** Record/refresh a harness's native session; see `makeSessionRecord` (INV-135). */
301
- recordSession(threadId, harnessId, nativeSessionId, observedModel, profileId = null) {
302
- const existing = this.state.sessions.find((s) => s.thread_id === threadId &&
303
- s.harness_id === harnessId &&
304
- (s.profile_id ?? null) === (profileId ?? null));
305
- const session = makeSessionRecord(existing, threadId, harnessId, nativeSessionId, observedModel, profileId);
306
- const thread = this.getThread(threadId);
307
- const nextThread = thread
308
- ? ThreadSchema.parse({ ...thread, updated_at: session.updated_at })
309
- : undefined;
310
- this.commit({ sessions: [session], ...(nextThread ? { threads: [nextThread] } : {}) });
311
- }
312
- /** Advance a lane's checkpoint to `turnId` (INV-137): the lane
313
- * (thread, harness, profile) has now SEEN that turn. Same (harness, profile)
314
- * key as `resumeMap`, so the next turn's packet math is exact. */
315
- recordLaneCheckpoint(threadId, harnessId, profileId, turnId) {
316
- this.commit({ checkpoints: [makeLaneCheckpoint(threadId, harnessId, profileId, turnId)] });
317
- }
318
- /** The last turn a lane has seen, or null when the lane never ran. */
319
- laneCheckpoint(threadId, harnessId, profileId) {
320
- return findLaneCheckpoint(this.state.checkpoints, threadId, harnessId, profileId);
321
- }
322
- /** All lane checkpoints of a thread (used to identify the prior head's lane). */
323
- laneCheckpointsForThread(threadId) {
324
- return threadLaneCheckpoints(this.state.checkpoints, threadId);
325
- }
326
- /** Stamp how a turn's lane was continued (INV-137); last-writer-wins. */
327
- setTurnContinuity(turnId, disclosure) {
328
- const turn = this.getTurn(turnId);
329
- if (!turn)
330
- return;
331
- this.commit({ turns: [stampContinuity(turn, disclosure)] });
332
- }
333
- relinkProjectRoot(root) {
334
- const threads = this.state.threads
335
- .filter((thread) => thread.repo && thread.repo.root !== root)
336
- .map((thread) => ThreadSchema.parse({
337
- ...thread,
338
- repo: { ...thread.repo, root },
339
- updated_at: nowIso(),
340
- }));
341
- if (threads.length > 0)
342
- this.commit({ threads });
343
- }
344
- /** D-U1 order 2 / INV-137 unified-accounts readers and mutations — the
345
- * derivation contracts live in thread-lane-checkpoints.ts. */
346
- accountBindings(threadId) {
347
- return accountBindingsFrom(this.state.sessions, this.state.checkpoints, threadId);
348
- }
349
- resumeMapAuto(threadId) {
350
- return resumeMapAutoFrom(this.state.sessions, threadId);
351
- }
352
- migrateNullProfileContinuity(harnessId, rowId) {
353
- return this.applyContinuityMutation(migrateNullProfileContinuityMutation(this.state.sessions, this.state.checkpoints, harnessId, rowId));
354
- }
355
- rollbackProfileContinuity(harnessId, rowId) {
356
- return this.applyContinuityMutation(rollbackProfileContinuityMutation(this.state.sessions, this.state.checkpoints, harnessId, rowId));
357
- }
358
- applyContinuityMutation(mutation) {
359
- if (mutation.sessions.length > 0 || mutation.checkpoints.length > 0)
360
- this.commit(mutation);
361
- return { sessions: mutation.sessions.length, checkpoints: mutation.checkpoints.length };
362
- }
363
- invalidateCredentialProfile(harnessId, profileId) {
364
- const mutation = invalidateCredentialProfileMutation(this.state.threads, this.state.sessions, harnessId, profileId);
365
- if (mutation.threads.length > 0 || mutation.sessions.length > 0)
366
- this.commit(mutation);
367
- return {
368
- clearedThreads: mutation.threads.length,
369
- invalidatedSessions: mutation.sessions.length,
370
- };
371
- }
372
- }
373
- export function threadProjection(headPing) {
374
- return {
375
- name: "threads",
376
- create: (journal) => new ThreadStore(journal, headPing),
377
- validate: (store) => store.validateProjection(),
378
- };
379
- }
1
+ export {};
380
2
  //# sourceMappingURL=threads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"threads.js","sourceRoot":"","sources":["../src/threads.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudexor/daemon",
3
- "version": "3.25.1",
3
+ "version": "4.0.0",
4
4
  "license": "MIT",
5
5
  "description": "Managed local daemon: Unix-socket JSON-RPC, token auth, task queue. Runner injected (no second scheduler).",
6
6
  "type": "module",
@@ -17,11 +17,10 @@
17
17
  ],
18
18
  "dependencies": {
19
19
  "yaml": "^2.9.1",
20
- "@claudexor/core": "3.25.1",
21
- "@claudexor/schema": "3.25.1",
22
- "@claudexor/journal": "3.25.1",
23
- "@claudexor/workspace": "3.25.1",
24
- "@claudexor/util": "3.25.1"
20
+ "@claudexor/util": "4.0.0",
21
+ "@claudexor/core": "4.0.0",
22
+ "@claudexor/workspace": "4.0.0",
23
+ "@claudexor/schema": "4.0.0"
25
24
  },
26
25
  "repository": {
27
26
  "type": "git",
@@ -33,11 +32,14 @@
33
32
  "url": "https://github.com/razzant/claudexor/issues"
34
33
  },
35
34
  "engines": {
36
- "node": ">=20.19"
35
+ "node": ">=24.15.0"
37
36
  },
38
37
  "publishConfig": {
39
38
  "access": "public"
40
39
  },
40
+ "devDependencies": {
41
+ "zod": "4.6.5"
42
+ },
41
43
  "scripts": {
42
44
  "build": "tsc",
43
45
  "typecheck": "tsc --noEmit"
@@ -1,14 +0,0 @@
1
- import type { JobRecord } from "./job-record.js";
2
- /** In-process project-removal/retention facts. No self-RPC, prompt copy or
3
- * public redaction; include the global AND every healthy project partition.
4
- * Project removal reads `scope`; the retention trash fence reads `threadId`. */
5
- export declare function commandActivityRecords(records: readonly JobRecord[]): {
6
- runId: string | undefined;
7
- state: "cancelled" | "failed" | "interrupted" | "queued" | "running" | "succeeded";
8
- finishedAt: string | undefined;
9
- params: {
10
- scope: unknown;
11
- threadId: unknown;
12
- };
13
- }[];
14
- //# sourceMappingURL=command-activity.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-activity.d.ts","sourceRoot":"","sources":["../src/command-activity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD;;gFAEgF;AAChF,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,SAAS,EAAE;;;;;QAOpD,KAAK;QAAiB,QAAQ;;IAG7C"}
@@ -1,16 +0,0 @@
1
- import { productCommandRecords } from "./command-retention.js";
2
- /** In-process project-removal/retention facts. No self-RPC, prompt copy or
3
- * public redaction; include the global AND every healthy project partition.
4
- * Project removal reads `scope`; the retention trash fence reads `threadId`. */
5
- export function commandActivityRecords(records) {
6
- return productCommandRecords(records).map((record) => {
7
- const params = record.params;
8
- return {
9
- runId: record.runId,
10
- state: record.state,
11
- finishedAt: record.finishedAt,
12
- params: { scope: params?.scope, threadId: params?.threadId },
13
- };
14
- });
15
- }
16
- //# sourceMappingURL=command-activity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-activity.js","sourceRoot":"","sources":["../src/command-activity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D;;gFAEgF;AAChF,MAAM,UAAU,sBAAsB,CAAC,OAA6B;IAClE,OAAO,qBAAqB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAwD,CAAC;QAC/E,OAAO;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;SAC7D,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1,4 +0,0 @@
1
- import { DurableJournal, type JournalRecoveryState } from "@claudexor/journal";
2
- import type { ControlJournalEvent } from "@claudexor/schema";
3
- export declare function journalEvents(journal: DurableJournal | null, recovery: JournalRecoveryState, afterCursor?: string): ControlJournalEvent[];
4
- //# sourceMappingURL=journal-events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"journal-events.d.ts","sourceRoot":"","sources":["../src/journal-events.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAEd,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG,IAAI,EAC9B,QAAQ,EAAE,oBAAoB,EAC9B,WAAW,CAAC,EAAE,MAAM,GACnB,mBAAmB,EAAE,CAsBvB"}
@@ -1,23 +0,0 @@
1
- import { JournalRecoveryRequiredError, } from "@claudexor/journal";
2
- export function journalEvents(journal, recovery, afterCursor) {
3
- if (!journal || recovery.status === "recovery_required") {
4
- throw new JournalRecoveryRequiredError(recovery.status === "recovery_required"
5
- ? recovery
6
- : {
7
- status: "recovery_required",
8
- location: { kind: "byte", byteOffset: 0 },
9
- reason: "journal partition is unavailable",
10
- discardedTailBytes: 0,
11
- });
12
- }
13
- const afterSeq = afterCursor ? journal.sequenceAfter(afterCursor) : 0;
14
- return journal.records(afterSeq).map((record) => ({
15
- schemaVersion: 1,
16
- cursor: journal.cursorAt(record.seq),
17
- partition: record.partition,
18
- type: record.type,
19
- observedAt: record.time,
20
- payload: record.payload,
21
- }));
22
- }
23
- //# sourceMappingURL=journal-events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"journal-events.js","sourceRoot":"","sources":["../src/journal-events.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,4BAA4B,GAE7B,MAAM,oBAAoB,CAAC;AAG5B,MAAM,UAAU,aAAa,CAC3B,OAA8B,EAC9B,QAA8B,EAC9B,WAAoB;IAEpB,IAAI,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,mBAAmB,EAAE,CAAC;QACxD,MAAM,IAAI,4BAA4B,CACpC,QAAQ,CAAC,MAAM,KAAK,mBAAmB;YACrC,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC;gBACE,MAAM,EAAE,mBAAmB;gBAC3B,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,EAAE;gBACzC,MAAM,EAAE,kCAAkC;gBAC1C,kBAAkB,EAAE,CAAC;aACtB,CACN,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChD,aAAa,EAAE,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC;QACpC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,UAAU,EAAE,MAAM,CAAC,IAAI;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC,CAAC;AACN,CAAC"}
@@ -1,50 +0,0 @@
1
- import type { DurableJournal, JournalCompactionOutcome } from "@claudexor/journal";
2
- /** One cancelable maintenance flight under the daemon's existing root writer.
3
- * A manager creates a new journal object per generation and closes the old one;
4
- * those exact objects are the dedupe keys, never another durable authority. */
5
- export declare class JournalMaintenance {
6
- /** One sink for failures, typed declines and `journal.records_retired`
7
- * receipts (the daemon log plus startup diagnostics in the composition root). */
8
- private readonly log;
9
- private readonly pending;
10
- private readonly controller;
11
- private flight;
12
- private armed;
13
- private stopped;
14
- private cleaned;
15
- private readonly stagingDir;
16
- constructor(rootDir: string,
17
- /** One sink for failures, typed declines and `journal.records_retired`
18
- * receipts (the daemon log plus startup diagnostics in the composition root). */
19
- log: (message: string) => void);
20
- /** Request one pass for this generation. Requests coalesce while pending; a
21
- * request that arrives during the generation's own flight runs one more pass
22
- * after it — the journal's threshold hook is edge-triggered, so that request
23
- * means the file crossed the threshold again. */
24
- request: (journal: DurableJournal) => void;
25
- /** Called only after normal admission, including recovery-route reopen. */
26
- arm(): void;
27
- /** Synchronous prefix revokes new work and aborts bulk I/O. The existing
28
- * daemon stop wrapper awaits cleanup before journals/root authority close. */
29
- stop(): Promise<void>;
30
- private startFlight;
31
- private run;
32
- private removeCrashCandidates;
33
- private warnFailure;
34
- }
35
- /** The process footprint as log-line fields (`rssMb=… heapUsedMb=… externalMb=…`,
36
- * whole mebibytes). The daemon's retained journal set lives on its heap, so
37
- * the lines that already exist — the normal-admission line and every journal
38
- * maintenance receipt — carry it, and the memory class stays observable on
39
- * every install without a new mechanism. */
40
- export declare function processMemoryFields(usage?: Pick<NodeJS.MemoryUsage, "rss" | "heapUsed" | "external">): string;
41
- /** One log line per maintenance outcome: the typed decline with its reason and
42
- * bounds, or the `journal.records_retired` receipt — compaction-time counts
43
- * beside what the fold already retired while replaying this generation at
44
- * open (`retiredAtReplay`). Both end with the process memory fields. The quiet
45
- * no-ops (below the threshold, an empty journal) produce no line. */
46
- export declare function describeCompactionOutcome(partition: string, outcome: JournalCompactionOutcome, replay?: {
47
- count: number;
48
- bytes: number;
49
- }, memory?: string): string | null;
50
- //# sourceMappingURL=journal-maintenance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"journal-maintenance.d.ts","sourceRoot":"","sources":["../src/journal-maintenance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAGnF;;+EAE+E;AAC/E,qBAAa,kBAAkB;IAW3B;qFACiF;IACjF,OAAO,CAAC,QAAQ,CAAC,GAAG;IAZtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAyB;IACpD,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YACE,OAAO,EAAE,MAAM;IACf;qFACiF;IAChE,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,EAGhD;IAED;;;qDAGiD;IACjD,OAAO,YAAa,cAAc,KAAG,IAAI,CAIvC;IAEF,2EAA2E;IAC3E,GAAG,IAAI,IAAI,CAWV;IAED;kFAC8E;IAC9E,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAKpB;IAED,OAAO,CAAC,WAAW;YAaL,GAAG;YA+BH,qBAAqB;IAanC,OAAO,CAAC,WAAW;CAKpB;AAED;;;;4CAI4C;AAC5C,wBAAgB,mBAAmB,CACjC,KAAK,GAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,CAAyB,GACvF,MAAM,CAGR;AAED;;;;qEAIqE;AACrE,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,wBAAwB,EACjC,MAAM,GAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAA2B,EACjE,MAAM,GAAE,MAA8B,GACrC,MAAM,GAAG,IAAI,CA0Bf"}