@claudexor/daemon 5.0.1 → 5.1.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 (185) hide show
  1. package/dist/client.d.ts +56 -0
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/command-store.d.ts +2 -0
  4. package/dist/command-store.d.ts.map +1 -1
  5. package/dist/command-store.js.map +1 -1
  6. package/dist/deferred-message-owner.d.ts +14 -1
  7. package/dist/deferred-message-owner.d.ts.map +1 -1
  8. package/dist/deferred-messages.d.ts +22 -1
  9. package/dist/deferred-messages.d.ts.map +1 -1
  10. package/dist/deferred-messages.js +60 -18
  11. package/dist/deferred-messages.js.map +1 -1
  12. package/dist/enqueue-command.d.ts +19 -4
  13. package/dist/enqueue-command.d.ts.map +1 -1
  14. package/dist/enqueue-command.js +72 -8
  15. package/dist/enqueue-command.js.map +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/interactions.d.ts.map +1 -1
  21. package/dist/interactions.js +29 -7
  22. package/dist/interactions.js.map +1 -1
  23. package/dist/job-record.d.ts.map +1 -1
  24. package/dist/job-record.js +4 -3
  25. package/dist/job-record.js.map +1 -1
  26. package/dist/job-settlement.d.ts +3 -1
  27. package/dist/job-settlement.d.ts.map +1 -1
  28. package/dist/job-settlement.js +13 -0
  29. package/dist/job-settlement.js.map +1 -1
  30. package/dist/model-operation-execution.d.ts +10 -0
  31. package/dist/model-operation-execution.d.ts.map +1 -1
  32. package/dist/model-operation-execution.js +12 -5
  33. package/dist/model-operation-execution.js.map +1 -1
  34. package/dist/model-operations.d.ts +1 -0
  35. package/dist/model-operations.d.ts.map +1 -1
  36. package/dist/model-operations.js +20 -10
  37. package/dist/model-operations.js.map +1 -1
  38. package/dist/quota-registry-support.d.ts.map +1 -1
  39. package/dist/quota-registry-support.js +14 -9
  40. package/dist/quota-registry-support.js.map +1 -1
  41. package/dist/server.d.ts +2 -3
  42. package/dist/server.d.ts.map +1 -1
  43. package/dist/server.js +12 -38
  44. package/dist/server.js.map +1 -1
  45. package/dist/store/blob-files.d.ts +17 -6
  46. package/dist/store/blob-files.d.ts.map +1 -1
  47. package/dist/store/blob-files.js +29 -5
  48. package/dist/store/blob-files.js.map +1 -1
  49. package/dist/store/command-prune.d.ts.map +1 -1
  50. package/dist/store/command-prune.js +4 -0
  51. package/dist/store/command-prune.js.map +1 -1
  52. package/dist/store/commands.d.ts +29 -2
  53. package/dist/store/commands.d.ts.map +1 -1
  54. package/dist/store/commands.js +136 -26
  55. package/dist/store/commands.js.map +1 -1
  56. package/dist/store/deferred-message-rows.d.ts +10 -0
  57. package/dist/store/deferred-message-rows.d.ts.map +1 -1
  58. package/dist/store/deferred-message-rows.js +28 -1
  59. package/dist/store/deferred-message-rows.js.map +1 -1
  60. package/dist/store/deferred-messages.d.ts +19 -5
  61. package/dist/store/deferred-messages.d.ts.map +1 -1
  62. package/dist/store/deferred-messages.js +93 -30
  63. package/dist/store/deferred-messages.js.map +1 -1
  64. package/dist/store/event-store.d.ts +2 -0
  65. package/dist/store/event-store.d.ts.map +1 -1
  66. package/dist/store/event-store.js +3 -1
  67. package/dist/store/event-store.js.map +1 -1
  68. package/dist/store/external-files.d.ts +57 -2
  69. package/dist/store/external-files.d.ts.map +1 -1
  70. package/dist/store/external-files.js +178 -3
  71. package/dist/store/external-files.js.map +1 -1
  72. package/dist/store/idempotency.d.ts +1 -1
  73. package/dist/store/idempotency.d.ts.map +1 -1
  74. package/dist/store/idempotency.js +2 -1
  75. package/dist/store/idempotency.js.map +1 -1
  76. package/dist/store/import-context.js +1 -1
  77. package/dist/store/import-context.js.map +1 -1
  78. package/dist/store/libuv-pool.d.ts +25 -0
  79. package/dist/store/libuv-pool.d.ts.map +1 -0
  80. package/dist/store/libuv-pool.js +96 -0
  81. package/dist/store/libuv-pool.js.map +1 -0
  82. package/dist/store/maintenance-worker.d.ts.map +1 -1
  83. package/dist/store/maintenance-worker.js +45 -0
  84. package/dist/store/maintenance-worker.js.map +1 -1
  85. package/dist/store/maintenance.d.ts +28 -2
  86. package/dist/store/maintenance.d.ts.map +1 -1
  87. package/dist/store/maintenance.js +36 -6
  88. package/dist/store/maintenance.js.map +1 -1
  89. package/dist/store/project-router.d.ts +108 -1
  90. package/dist/store/project-router.d.ts.map +1 -1
  91. package/dist/store/project-router.js +38 -0
  92. package/dist/store/project-router.js.map +1 -1
  93. package/dist/store/publish-blob.d.ts.map +1 -1
  94. package/dist/store/publish-blob.js +36 -14
  95. package/dist/store/publish-blob.js.map +1 -1
  96. package/dist/store/purge-files.d.ts +11 -2
  97. package/dist/store/purge-files.d.ts.map +1 -1
  98. package/dist/store/purge-files.js +34 -7
  99. package/dist/store/purge-files.js.map +1 -1
  100. package/dist/store/resource-release.d.ts +15 -0
  101. package/dist/store/resource-release.d.ts.map +1 -0
  102. package/dist/store/resource-release.js +56 -0
  103. package/dist/store/resource-release.js.map +1 -0
  104. package/dist/store/resource-rows.d.ts +2 -0
  105. package/dist/store/resource-rows.d.ts.map +1 -1
  106. package/dist/store/resource-rows.js.map +1 -1
  107. package/dist/store/resource-uses.d.ts +84 -0
  108. package/dist/store/resource-uses.d.ts.map +1 -0
  109. package/dist/store/resource-uses.js +129 -0
  110. package/dist/store/resource-uses.js.map +1 -0
  111. package/dist/store/resources.d.ts +16 -2
  112. package/dist/store/resources.d.ts.map +1 -1
  113. package/dist/store/resources.js +42 -3
  114. package/dist/store/resources.js.map +1 -1
  115. package/dist/store/retention-changes.d.ts +8 -2
  116. package/dist/store/retention-changes.d.ts.map +1 -1
  117. package/dist/store/retention-changes.js +24 -11
  118. package/dist/store/retention-changes.js.map +1 -1
  119. package/dist/store/retention-generations.d.ts +7 -2
  120. package/dist/store/retention-generations.d.ts.map +1 -1
  121. package/dist/store/retention-generations.js +71 -26
  122. package/dist/store/retention-generations.js.map +1 -1
  123. package/dist/store/retention-reference-reader.d.ts +26 -1
  124. package/dist/store/retention-reference-reader.d.ts.map +1 -1
  125. package/dist/store/retention-reference-reader.js +31 -7
  126. package/dist/store/retention-reference-reader.js.map +1 -1
  127. package/dist/store/retention-references.d.ts +5 -0
  128. package/dist/store/retention-references.d.ts.map +1 -1
  129. package/dist/store/retention-references.js +35 -6
  130. package/dist/store/retention-references.js.map +1 -1
  131. package/dist/store/schema.d.ts +2 -2
  132. package/dist/store/schema.d.ts.map +1 -1
  133. package/dist/store/schema.js +17 -2
  134. package/dist/store/schema.js.map +1 -1
  135. package/dist/store/sql-command-router.d.ts +12 -1
  136. package/dist/store/sql-command-router.d.ts.map +1 -1
  137. package/dist/store/sql-command-router.js +19 -1
  138. package/dist/store/sql-command-router.js.map +1 -1
  139. package/dist/store/sql-daemon-services.d.ts.map +1 -1
  140. package/dist/store/sql-daemon-services.js +9 -8
  141. package/dist/store/sql-daemon-services.js.map +1 -1
  142. package/dist/store/sql-validation.d.ts.map +1 -1
  143. package/dist/store/sql-validation.js +1 -0
  144. package/dist/store/sql-validation.js.map +1 -1
  145. package/dist/store/store.d.ts +9 -0
  146. package/dist/store/store.d.ts.map +1 -1
  147. package/dist/store/store.js +19 -0
  148. package/dist/store/store.js.map +1 -1
  149. package/dist/store/terminal-files.d.ts +24 -2
  150. package/dist/store/terminal-files.d.ts.map +1 -1
  151. package/dist/store/terminal-files.js +153 -31
  152. package/dist/store/terminal-files.js.map +1 -1
  153. package/dist/store/thread-closure.d.ts +62 -0
  154. package/dist/store/thread-closure.d.ts.map +1 -0
  155. package/dist/store/thread-closure.js +290 -0
  156. package/dist/store/thread-closure.js.map +1 -0
  157. package/dist/store/thread-retirement.d.ts +29 -0
  158. package/dist/store/thread-retirement.d.ts.map +1 -0
  159. package/dist/store/thread-retirement.js +123 -0
  160. package/dist/store/thread-retirement.js.map +1 -0
  161. package/dist/store/threads.d.ts +2 -0
  162. package/dist/store/threads.d.ts.map +1 -1
  163. package/dist/store/threads.js +10 -1
  164. package/dist/store/threads.js.map +1 -1
  165. package/dist/store/upload-imports.d.ts.map +1 -1
  166. package/dist/store/upload-imports.js +16 -3
  167. package/dist/store/upload-imports.js.map +1 -1
  168. package/dist/store/uploads.d.ts +13 -2
  169. package/dist/store/uploads.d.ts.map +1 -1
  170. package/dist/store/uploads.js +76 -30
  171. package/dist/store/uploads.js.map +1 -1
  172. package/dist/store-contracts.d.ts +32 -2
  173. package/dist/store-contracts.d.ts.map +1 -1
  174. package/dist/terminal-authority.d.ts +9 -1
  175. package/dist/terminal-authority.d.ts.map +1 -1
  176. package/dist/terminal-authority.js +32 -0
  177. package/dist/terminal-authority.js.map +1 -1
  178. package/dist/thread-lifecycle.d.ts +3 -1
  179. package/dist/thread-lifecycle.d.ts.map +1 -1
  180. package/dist/thread-lifecycle.js +2 -2
  181. package/dist/thread-lifecycle.js.map +1 -1
  182. package/dist/writer-lease.d.ts.map +1 -1
  183. package/dist/writer-lease.js +6 -3
  184. package/dist/writer-lease.js.map +1 -1
  185. package/package.json +5 -5
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/store/resources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/store/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,GAEhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAa,uBAAuB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,qBAAqB,GACtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,qBAAqB,GAEtB,MAAM,oBAAoB,CAAC;AAE5B,8FAA8F;AAC9F,MAAM,OAAO,gBAAgB;IAOR,KAAK;IACL,KAAK;IAEL,GAAG;IATL,OAAO,CAAa;IACpB,SAAS,CAAc;IACvB,OAAO,CAAmB;IAC1B,OAAO,GAAG,IAAI,GAAG,EAAiB,CAAC;IAEpD,YACmB,KAAkB,EAClB,KAAgB,EACjC,WAAwB,EACP,GAAG,GAA2B,OAAO,CAAC,IAAI;qBAH1C,KAAK;qBACL,KAAK;mBAEL,GAAG;QAEpB,IAAI,CAAC,OAAO,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CACjF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CACjB,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,CAAC,GAAY,EAAE,GAAW;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,KAAK,CAAC,EAAU,EAAE,MAAiC;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,CAAC,EAAU;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IACD,QAAQ,CAAC,EAAU,EAAE,cAAkC,EAAE,GAAW;QAClE,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IACD,YAAY,CAAC,GAAY,EAAE,GAAW;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,iGAAiG;IACjG,OAAO,CAAC,IAAyC,EAAE,MAA0B;QAC3E,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,QAAQ,CAAC,OAAO,KAAK,OAAO;gBAAE,MAAM,eAAe,EAAE,CAAC;YAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxD,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACtC,OAAO,UAAU,CAAC,KAAK,CAAC;gBACtB,WAAW,EAAE,QAAQ,CAAC,UAAU;gBAChC,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;gBACnB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,SAAS;gBAC9B,IAAI;aACL,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,SAAS,CAAC,GAAoB;QAC5B,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,qBAAqB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,KAAK,CAAC,cAAc,CAAC,GAAoB;QACvC,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/C,cAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC9B,OAAO,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IACD,YAAY,CAAC,KAAiB;QAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACjC,OAAO,EAAE,OAAO;YAChB,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,kBAAkB;YACxB,IAAI,EAAE,mBAAmB;YACzB,SAAS,EAAE,KAAK,CAAC,UAAU;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC;YACH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAC9C,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,UAAU,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,YAAY;gBAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YACxC,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,YAAY,CAAC,GAAoB;QAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAChC,CAAC;IACD,kGAAkG;IAClG,eAAe,CAAC,EAAU,EAAE,GAAY;QACtC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,IAAI,GAAG;YAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2FAA2F;IAC3F,WAAW,CAAC,GAAoB,EAAE,SAAiB;QACjD,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC;IAED,kBAAkB;QAChB,OACE,IAAI,CAAC,KAAK;aACP,OAAO,CAAC,+EAA+E,CAAC;aACxF,GAAG,EACP,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3F,OAAO,EAAE,GAAG,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;IACD,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACvC,CAAC;IACD,oBAAoB,CAAC,IAA8B;QACjD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,uGAAuG;IACvG,KAAK,CAAC,YAAY;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5D,CAAC;IAEO,OAAO,CAAC,GAAoB,EAAE,KAA6B,EAAE,SAAkB;QACrF,MAAM,GAAG,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,gBAAgB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACjC,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO;QACxE,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAClC,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE;YAC7B,eAAe,CAAC,EAAE,EAAE;gBAClB,GAAG,GAAG;gBACN,KAAK;gBACL,UAAU,EAAE,SAAS,IAAI,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;gBAC/C,SAAS,EAAE,SAAS,IAAI,GAAG,CAAC,SAAS;aACtC,CAAC,CAAC;YACH,uBAAuB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;YACjC,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,CAAC;IACO,QAAQ,CAAC,EAAU,EAAE,MAA0B;QACrD,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5C,gGAAgG;QAChG,IAAI,GAAG,EAAE,KAAK,KAAK,UAAU,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjE,IAAI,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;gBACtD,MAAM,qBAAqB,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;YAClD,OAAO,GAAG,CAAC,QAAQ,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,UAAU,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;YAC7D,MAAM,aAAa,CAAC,qBAAqB,EAAE,EAAE,EAAE,GAAG,EAAE,oBAAoB,CAAC,CAAC;QAC5E,IAAI,GAAG,CAAC,KAAK,KAAK,YAAY;YAC5B,MAAM,aAAa,CAAC,8BAA8B,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QACnF,OAAO,GAAG,CAAC,QAAQ,CAAC;IACtB,CAAC;IACO,KAAK,CAAC,IAAsB;QAClC,MAAM,OAAO,GAAG,IAAI;aACjB,IAAI,CACH,GAAG,EAAE,CAAC,SAAS,EACf,CAAC,KAAc,EAAE,EAAE;YACjB,IAAI,CAAC,GAAG,CACN,qCAAqC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC9F,CAAC;QACJ,CAAC,CACF;aACA,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,iEAAiE;AACjE,KAAK,UAAU,wBAAwB,CAAC,QAAyB,EAAE,IAAY;IAC7E,IAAI,KAAa,CAAC;IAClB,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GACR,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACtF,IAAI,IAAI,KAAK,QAAQ;YACnB,MAAM,aAAa,CAAC,8BAA8B,EAAE,GAAG,EAAE,sBAAsB,CAAC,CAAC;QACnF,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,QAAQ,CAAC;QACnF,MAAM,aAAa,CACjB,iDAAiD,EACjD,GAAG,EACH,0BAA0B,CAC3B,CAAC;IACJ,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -14,11 +14,17 @@ type Table = keyof typeof columns;
14
14
  type Change = {
15
15
  table: Table;
16
16
  id: string;
17
- operation: string;
17
+ roots: Set<string>;
18
18
  };
19
19
  /** Subscribe BEFORE the cooperative read. Drain changed row identities only;
20
- * quota/event traffic and unrelated metadata never restart the full inventory. */
20
+ * quota/event traffic and unrelated metadata never restart the full inventory.
21
+ * Project and partition changes reach the reader like every other owner row: it
22
+ * defers the affected namespaces or, only when rows were never inventoried,
23
+ * holds the whole pass (`hold`). A change that cannot be read holds it too. */
21
24
  export declare function retentionChanges(store: EngineStore): {
25
+ /** Why the whole pass holds, once a change named a reason. */
26
+ hold(reason: string): void;
27
+ held: () => string | null;
22
28
  refresh(read: (change: Change) => void, signal?: AbortSignal): Promise<void>;
23
29
  current(read: (change: Change) => void): boolean;
24
30
  close(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"retention-changes.d.ts","sourceRoot":"","sources":["../../src/store/retention-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,QAAA,MAAM,OAAO;aACX,MAAM,YAAG,IAAI,EAAE,OAAO,EAAE,MAAM;aAC9B,IAAI,YAAG,IAAI,EAAE,WAAW,EAAE,MAAM;aAChC,OAAO,YAAG,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM;aACjD,OAAO,YACL,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,eAAe,EACf,YAAY;aAEd,WAAW,YAAG,IAAI,EAAE,QAAQ,EAAE,OAAO;aACrC,gBAAgB,YAAG,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO;aACjF,OAAO,YAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;aACtD,SAAS,YAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;aAChD,IAAI,YAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ;CACzB,CAAC;AACX,KAAK,KAAK,GAAG,MAAM,OAAO,OAAO,CAAC;AAClC,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAwC9D;kFACkF;AAClF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW;IAoBzC,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,WAAW,WAAW;IASlE,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAQtC,KAAK;EAMR"}
1
+ {"version":3,"file":"retention-changes.d.ts","sourceRoot":"","sources":["../../src/store/retention-changes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAK9C,QAAA,MAAM,OAAO;aACX,MAAM,YAAG,IAAI,EAAE,OAAO,EAAE,MAAM;aAC9B,IAAI,YAAG,IAAI,EAAE,WAAW,EAAE,MAAM;aAChC,OAAO,YAAG,IAAI,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM;aACjD,OAAO,YACL,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,SAAS,EACT,OAAO,EACP,aAAa,EACb,eAAe,EACf,YAAY;aAEd,WAAW,YAAG,IAAI,EAAE,QAAQ,EAAE,OAAO;aACrC,gBAAgB,YAAG,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO;aACjF,OAAO,YAAG,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa;aACtD,SAAS,YAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY;aAChD,IAAI,YAAG,QAAQ,EAAE,MAAM,EAAE,QAAQ;CACzB,CAAC;AACX,KAAK,KAAK,GAAG,MAAM,OAAO,OAAO,CAAC;AAClC,KAAK,MAAM,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;CAAE,CAAC;AA4C/D;;;;+EAI+E;AAC/E,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW;IAqB/C,8DAA8D;IAC9D,IAAI,SAAS,MAAM;IAGnB,IAAI;IACE,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,WAAW,WAAW;IASlE,OAAO,OAAO,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI;IAQtC,KAAK;EAMR"}
@@ -27,11 +27,15 @@ function observe(store, listener) {
27
27
  let listeners = observers.get(store);
28
28
  if (!listeners) {
29
29
  const targets = new Set();
30
- store.db.function("disk_retention_changed", (table, id, operation) => {
30
+ store.db.function("disk_retention_changed", (table, id, root) => {
31
31
  // Node 24.15 truncates TEXT at NUL; interaction keys must arrive as bytes.
32
32
  const decodedId = Buffer.from(id).toString("utf8");
33
33
  for (const target of targets)
34
- target({ table: table, id: decodedId, operation: String(operation) });
34
+ target({
35
+ table: table,
36
+ id: decodedId,
37
+ roots: new Set(root === null ? [] : [Buffer.from(root).toString("utf8")]),
38
+ });
35
39
  return null;
36
40
  });
37
41
  for (const [table, fields] of Object.entries(columns)) {
@@ -47,7 +51,7 @@ function observe(store, listener) {
47
51
  const rows = operation === "UPDATE" ? ["OLD", "NEW"] : [operation === "DELETE" ? "OLD" : "NEW"];
48
52
  store.exec(`CREATE TEMP TRIGGER disk_retention_${table}_${operation}
49
53
  AFTER ${operation} ON main.${table} ${changed} BEGIN
50
- ${rows.map((row) => `SELECT disk_retention_changed('${table}',CAST(${row}.${key} AS BLOB),'${operation}');`).join("\n")}
54
+ ${rows.map((row) => `SELECT disk_retention_changed('${table}',CAST(${row}.${key} AS BLOB),${table === "project" ? `CAST(${row}.root AS BLOB)` : "NULL"});`).join("\n")}
51
55
  END`);
52
56
  }
53
57
  }
@@ -58,15 +62,19 @@ function observe(store, listener) {
58
62
  return () => void listeners.delete(listener);
59
63
  }
60
64
  /** Subscribe BEFORE the cooperative read. Drain changed row identities only;
61
- * quota/event traffic and unrelated metadata never restart the full inventory. */
65
+ * quota/event traffic and unrelated metadata never restart the full inventory.
66
+ * Project and partition changes reach the reader like every other owner row: it
67
+ * defers the affected namespaces or, only when rows were never inventoried,
68
+ * holds the whole pass (`hold`). A change that cannot be read holds it too. */
62
69
  export function retentionChanges(store) {
63
70
  const pending = new Map();
64
71
  let closed = false;
65
- let topologyChanged = false;
72
+ let held = null;
66
73
  const stop = observe(store, (change) => {
67
- pending.set(`${change.table}:${change.id}`, change);
68
- if (change.table === "project" || change.table === "partition")
69
- topologyChanged = true;
74
+ const key = `${change.table}:${change.id}`;
75
+ for (const root of pending.get(key)?.roots ?? [])
76
+ change.roots.add(root);
77
+ pending.set(key, change);
70
78
  });
71
79
  const readOne = (key, read) => {
72
80
  const change = pending.get(key);
@@ -77,11 +85,16 @@ export function retentionChanges(store) {
77
85
  read(change);
78
86
  }
79
87
  catch (error) {
80
- topologyChanged = true;
88
+ held ??= String(error);
81
89
  throw error;
82
90
  }
83
91
  };
84
92
  return {
93
+ /** Why the whole pass holds, once a change named a reason. */
94
+ hold(reason) {
95
+ held ??= reason;
96
+ },
97
+ held: () => held,
85
98
  async refresh(read, signal) {
86
99
  // Capture a finite batch; newly arriving work is handled by the final
87
100
  // synchronous check or the next cooperative refresh.
@@ -92,7 +105,7 @@ export function retentionChanges(store) {
92
105
  }
93
106
  },
94
107
  current(read) {
95
- if (closed || topologyChanged)
108
+ if (closed || held)
96
109
  return false;
97
110
  // Same physical read budget as a SQL inventory page. An exceptional
98
111
  // burst stays for the next cooperative pass, never a long admission lock.
@@ -100,7 +113,7 @@ export function retentionChanges(store) {
100
113
  return false;
101
114
  for (const key of pending.keys())
102
115
  readOne(key, read);
103
- return !topologyChanged;
116
+ return !held;
104
117
  },
105
118
  close() {
106
119
  closed = true;
@@ -1 +1 @@
1
- {"version":3,"file":"retention-changes.js","sourceRoot":"","sources":["../../src/store/retention-changes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retention-changes.js","sourceRoot":"","sources":["../../src/store/retention-changes.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,14 @@
1
1
  import type { EngineStore } from "./store.js";
2
2
  /** Quarantine completes recovery: those rows are evidence, never live owners.
3
3
  * Archived generations remain restorable owners. Unknown/pending states cannot
4
- * prove absence and hold run retirement install-wide. */
4
+ * prove absence and hold run retirement install-wide. A partition created after
5
+ * the snapshot (a late registration's fresh generation) is read on demand; its
6
+ * rows were all written after the change observer subscribed, so they reach the
7
+ * pass through its queue. */
5
8
  export declare function retentionGenerations(store: EngineStore): {
6
9
  retained: (pid: number) => boolean;
10
+ changed: (pid: number) => string | null;
11
+ refreshProject: (id?: string) => void;
7
12
  registeredProjectRoots: Set<string>;
8
13
  archivedProjectRoots: Set<string>;
9
14
  protectedProjectRoots: Set<string>;
@@ -13,6 +18,6 @@ export declare function retentionGenerations(store: EngineStore): {
13
18
  count: number;
14
19
  example: string;
15
20
  }[];
16
- blocked: string | undefined;
21
+ readonly blocked: string | undefined;
17
22
  };
18
23
  //# sourceMappingURL=retention-generations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"retention-generations.d.ts","sourceRoot":"","sources":["../../src/store/retention-generations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG9C;;yDAEyD;AACzD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW;oBAmB9B,MAAM;;;;;;;;;;;EAmE9B"}
1
+ {"version":3,"file":"retention-generations.d.ts","sourceRoot":"","sources":["../../src/store/retention-generations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAc9C;;;;;6BAK6B;AAC7B,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW;oBAa9B,MAAM;mBAeP,MAAM,KAAG,MAAM,GAAG,IAAI;0BAoDf,MAAM;;;;;;;;;;;EAoCpC"}
@@ -1,22 +1,56 @@
1
+ const PARTITIONS = `SELECT q.id,q.name,q.status,q.project_id,p.root,g.status AS registry_status
2
+ FROM partition q LEFT JOIN project p ON p.id=q.project_id LEFT JOIN partition g ON g.id=p.pid`;
1
3
  /** Quarantine completes recovery: those rows are evidence, never live owners.
2
4
  * Archived generations remain restorable owners. Unknown/pending states cannot
3
- * prove absence and hold run retirement install-wide. */
5
+ * prove absence and hold run retirement install-wide. A partition created after
6
+ * the snapshot (a late registration's fresh generation) is read on demand; its
7
+ * rows were all written after the change observer subscribed, so they reach the
8
+ * pass through its queue. */
4
9
  export function retentionGenerations(store) {
5
- const rows = store
6
- .prepare(`SELECT q.id,q.name,q.status,q.project_id,p.root,g.status AS registry_status FROM partition q
7
- LEFT JOIN project p ON p.id=q.project_id LEFT JOIN partition g ON g.id=p.pid`)
8
- .all();
10
+ const rows = store.prepare(PARTITIONS).all();
9
11
  const known = new Map(rows.map((row) => [row.id, row]));
12
+ const read = (pid) => store.prepare(`${PARTITIONS} WHERE q.id=?`).get(pid);
10
13
  // A completed global quarantine also retires its project descendants. Their
11
14
  // own ready/archived/pending bits are historical, not an independent owner.
12
15
  const retired = (row) => row.status === "quarantined" || row.registry_status === "quarantined";
16
+ const owns = (row) => !retired(row) &&
17
+ (!row.project_id || row.registry_status === "ready" || row.registry_status === "archived") &&
18
+ (row.status === "ready" || row.status === "archived");
13
19
  const retained = (pid) => {
14
- const row = known.get(pid);
20
+ let row = known.get(pid);
21
+ if (!row) {
22
+ row = read(pid);
23
+ if (row) {
24
+ known.set(pid, row);
25
+ observe(row);
26
+ }
27
+ }
15
28
  if (!row)
16
29
  throw new Error(`retention owner names missing partition ${pid}`);
17
- return (!retired(row) &&
18
- (!row.project_id || row.registry_status === "ready" || row.registry_status === "archived") &&
19
- (row.status === "ready" || row.status === "archived"));
30
+ return owns(row);
31
+ };
32
+ /** A partition row changed during the pass. A generation the pass excluded that
33
+ * now owns rows was never inventoried: the reason holds the whole pass. Growth
34
+ * of protection, and a fresh partition, need nothing more. */
35
+ const changed = (pid) => {
36
+ const before = known.get(pid);
37
+ const after = read(pid);
38
+ if (!after)
39
+ return null;
40
+ observe(after);
41
+ if (blocked)
42
+ return blocked;
43
+ if (!before) {
44
+ known.set(pid, after);
45
+ return null;
46
+ }
47
+ if (!owns(before) && owns(after))
48
+ return `partition ${after.name} (${pid}) became a retained owner during inventory`;
49
+ // A registry's status decides many generations at once: none is rechecked alone.
50
+ if (before.status !== after.status &&
51
+ store.prepare("SELECT 1 FROM project WHERE pid=? LIMIT 1").get(pid))
52
+ return `registry partition ${after.name} (${pid}) changed during inventory`;
53
+ return null;
20
54
  };
21
55
  const registered = store
22
56
  .prepare(`SELECT p.root,p.status FROM project p
@@ -33,39 +67,50 @@ export function retentionGenerations(store) {
33
67
  const errors = [];
34
68
  const holds = [];
35
69
  let blocked;
36
- for (const row of rows) {
37
- if (retained(row.id) || retired(row))
38
- continue;
70
+ const recoveryHolds = new Set();
71
+ const observe = (row) => {
72
+ if (owns(row) || retired(row) || recoveryHolds.has(row.id))
73
+ return;
74
+ recoveryHolds.add(row.id);
39
75
  const reason = `partition ${row.name} (${row.id}, ${row.status}) awaits journal recovery`;
40
- // Scope roots do not bound dependencies: a continuation may name any namespace.
41
76
  blocked ??= reason;
42
77
  errors.push(`all namespaces kept: ${reason}`);
43
78
  holds.push({ class: "recovery_pending", count: 1, example: reason });
44
- }
79
+ };
80
+ for (const row of rows)
81
+ observe(row);
45
82
  const bindingHolds = new Set();
46
- for (const row of store
47
- .prepare(`SELECT p.root,p.current_pid FROM project p
83
+ const refreshProject = (id) => {
84
+ for (const row of store
85
+ .prepare(`SELECT p.root,p.current_pid FROM project p
48
86
  JOIN partition g ON g.id=p.pid LEFT JOIN partition q ON q.id=p.current_pid
49
87
  WHERE g.status IN ('ready','archived') AND
50
88
  ((p.current_pid IS NOT NULL AND q.id IS NULL) OR
51
- (p.status='active' AND p.current_pid IS NULL))`)
52
- .all()) {
53
- const reason = row.current_pid === null ? "unbound_active_registration" : "missing_partition";
54
- const holdKey = `${reason}\0${row.root}`;
55
- if (!bindingHolds.has(holdKey))
89
+ (p.status='active' AND p.current_pid IS NULL))${id === undefined ? "" : " AND p.id=?"}`)
90
+ .all(...(id === undefined ? [] : [id]))) {
91
+ const reason = row.current_pid === null ? "unbound_active_registration" : "missing_partition";
92
+ const holdKey = `${reason}\0${row.root}`;
93
+ if (bindingHolds.has(holdKey))
94
+ continue;
56
95
  holds.push({ class: reason, count: 1, example: row.root });
57
- bindingHolds.add(holdKey);
58
- protectedProjectRoots.add(row.root);
59
- errors.push(`namespace ${row.root} kept: ${reason} (${row.current_pid ?? "NULL"})`);
60
- }
96
+ bindingHolds.add(holdKey);
97
+ protectedProjectRoots.add(row.root);
98
+ errors.push(`namespace ${row.root} kept: ${reason} (${row.current_pid ?? "NULL"})`);
99
+ }
100
+ };
101
+ refreshProject();
61
102
  return {
62
103
  retained,
104
+ changed,
105
+ refreshProject,
63
106
  registeredProjectRoots,
64
107
  archivedProjectRoots,
65
108
  protectedProjectRoots,
66
109
  errors,
67
110
  holds,
68
- blocked,
111
+ get blocked() {
112
+ return blocked;
113
+ },
69
114
  };
70
115
  }
71
116
  //# sourceMappingURL=retention-generations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"retention-generations.js","sourceRoot":"","sources":["../../src/store/retention-generations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retention-generations.js","sourceRoot":"","sources":["../../src/store/retention-generations.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,GAAG;gGAC6E,CAAC;AAUjG;;;;;6BAK6B;AAC7B,MAAM,UAAU,oBAAoB,CAAC,KAAkB;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,EAAoB,CAAC;IAC/D,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAE,CAC3B,KAAK,CAAC,OAAO,CAAC,GAAG,UAAU,eAAe,CAAC,CAAC,GAAG,CAAC,GAAG,CAA6B,CAAC;IACnF,4EAA4E;IAC5E,4EAA4E;IAC5E,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAE,EAAE,CACpC,GAAG,CAAC,MAAM,KAAK,aAAa,IAAI,GAAG,CAAC,eAAe,KAAK,aAAa,CAAC;IACxE,MAAM,IAAI,GAAG,CAAC,GAAiB,EAAE,EAAE,CACjC,CAAC,OAAO,CAAC,GAAG,CAAC;QACb,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,eAAe,KAAK,OAAO,IAAI,GAAG,CAAC,eAAe,KAAK,UAAU,CAAC;QAC1F,CAAC,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAE,EAAE;QAC/B,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,GAAG,EAAE,CAAC;gBACR,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;QAC5E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC,CAAC;IACF;;kEAE8D;IAC9D,MAAM,OAAO,GAAG,CAAC,GAAW,EAAiB,EAAE;QAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,OAAO,CAAC,KAAK,CAAC,CAAC;QACf,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;YAC9B,OAAO,aAAa,KAAK,CAAC,IAAI,KAAK,GAAG,4CAA4C,CAAC;QACrF,iFAAiF;QACjF,IACE,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;YAC9B,KAAK,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YAEnE,OAAO,sBAAsB,KAAK,CAAC,IAAI,KAAK,GAAG,4BAA4B,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,UAAU,GAAG,KAAK;SACrB,OAAO,CACN;;;oDAG8C,CAC/C;SACA,GAAG,EAA6C,CAAC;IACpD,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAC3E,CAAC;IACF,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAClC,UAAU;SACP,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,UAAU,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;SACxE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAC1B,CAAC;IACF,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAA2B,CAAC;IAChC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,OAAO,GAAG,CAAC,GAAiB,EAAE,EAAE;QACpC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO;QACnE,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,MAAM,GAAG,aAAa,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,MAAM,2BAA2B,CAAC;QAC1F,OAAO,KAAK,MAAM,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,MAAM,cAAc,GAAG,CAAC,EAAW,EAAE,EAAE;QACrC,KAAK,MAAM,GAAG,IAAI,KAAK;aACpB,OAAO,CACN;;;;uDAI+C,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CACvF;aACA,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAGtC,EAAE,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,mBAAmB,CAAC;YAC9F,MAAM,OAAO,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;gBAAE,SAAS;YACxC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC1B,qBAAqB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,UAAU,MAAM,KAAK,GAAG,CAAC,WAAW,IAAI,MAAM,GAAG,CAAC,CAAC;QACtF,CAAC;IACH,CAAC,CAAC;IACF,cAAc,EAAE,CAAC;IACjB,OAAO;QACL,QAAQ;QACR,OAAO;QACP,cAAc;QACd,sBAAsB;QACtB,oBAAoB;QACpB,qBAAqB;QACrB,MAAM;QACN,KAAK;QACL,IAAI,OAAO;YACT,OAAO,OAAO,CAAC;QACjB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -24,10 +24,19 @@ export declare class RetentionReferenceReader {
24
24
  readonly runs: Set<string>;
25
25
  readonly sessions: Map<string, Set<string>>;
26
26
  readonly roots: Set<string>;
27
- readonly lanes: Map<string, Set<string>>;
27
+ /** Lane directories are named by globally unique thread id, independent of
28
+ * the project spelling that happened to produce their runtime namespace. */
29
+ readonly laneThreadIds: Set<string>;
28
30
  constructor(store: EngineStore, ignored: ReadonlySet<string>, retained: (pid: number) => boolean);
29
31
  add: (id: string | null | undefined) => void;
30
32
  thread(row: ThreadRow): Thread | undefined;
33
+ /** A purge obligation still open owns its lane: only the purge owner removes
34
+ * it, after rechecking what a conditional retirement accepted; the orphan
35
+ * sweep must not delete those bytes first. */
36
+ private purgedLane;
37
+ /** Add lane owners from a quarantined partition without decoding its body.
38
+ * Quarantine is precisely the state in which the body may be malformed. */
39
+ addQuarantinedLaneThreadIds(pid?: number): void;
31
40
  turn(row: TurnRow, owner?: {
32
41
  schema_version: 2;
33
42
  id: string;
@@ -58,6 +67,14 @@ export declare class RetentionReferenceReader {
58
67
  trashed_at: string | null;
59
68
  purge_after: string | null;
60
69
  pre_trash_state: "active" | "closed" | null;
70
+ retirement?: {
71
+ operationId: string;
72
+ exportId: string;
73
+ closureDigest: string;
74
+ contentDigest: string;
75
+ laneDigest: string;
76
+ acceptedAt: string;
77
+ } | undefined;
61
78
  } | undefined): void;
62
79
  session(row: SessionRow, owner?: {
63
80
  schema_version: 2;
@@ -89,6 +106,14 @@ export declare class RetentionReferenceReader {
89
106
  trashed_at: string | null;
90
107
  purge_after: string | null;
91
108
  pre_trash_state: "active" | "closed" | null;
109
+ retirement?: {
110
+ operationId: string;
111
+ exportId: string;
112
+ closureDigest: string;
113
+ contentDigest: string;
114
+ laneDigest: string;
115
+ acceptedAt: string;
116
+ } | undefined;
92
117
  } | undefined): void;
93
118
  refresh(table: "thread" | "turn" | "session" | "interaction", id: string): void;
94
119
  private read;
@@ -1 +1 @@
1
- {"version":3,"file":"retention-reference-reader.d.ts","sourceRoot":"","sources":["../../src/store/retention-reference-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,KAAK,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAC1D,KAAK,SAAS,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1C,KAAK,UAAU,GAAG,IAAI,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,KAAK,OAAO,GAAG,IAAI,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C;kFACkF;AAClF,qBAAa,wBAAwB;IAOjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAR3B,QAAQ,CAAC,IAAI,cAAqB;IAClC,QAAQ,CAAC,QAAQ,2BAAkC;IACnD,QAAQ,CAAC,KAAK,cAAqB;IACnC,QAAQ,CAAC,KAAK,2BAAkC;IAEhD,YACmB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EACjD;IAEJ,GAAG,OAAQ,MAAM,GAAG,IAAI,GAAG,SAAS,UAElC;IAEF,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAgBzC;IAED,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA4B,GAAG,IAAI,CAM1D;IAED,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA4B,GAAG,IAAI,CAchE;IAED,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAmB9E;IAED,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,KAAK;CASd"}
1
+ {"version":3,"file":"retention-reference-reader.d.ts","sourceRoot":"","sources":["../../src/store/retention-reference-reader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAc,MAAM,mBAAmB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAI9C,KAAK,IAAI,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC;AAC1D,KAAK,SAAS,GAAG,IAAI,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1C,KAAK,UAAU,GAAG,IAAI,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AACnE,KAAK,OAAO,GAAG,IAAI,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE5C;kFACkF;AAClF,qBAAa,wBAAwB;IASjC,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,QAAQ,CAAC,IAAI,cAAqB;IAClC,QAAQ,CAAC,QAAQ,2BAAkC;IACnD,QAAQ,CAAC,KAAK,cAAqB;IACnC;gFAC4E;IAC5E,QAAQ,CAAC,aAAa,cAAqB;IAE3C,YACmB,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,EAC5B,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,EACjD;IAEJ,GAAG,OAAQ,MAAM,GAAG,IAAI,GAAG,SAAS,UAElC;IAEF,MAAM,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAiBzC;IAED;;kDAE8C;IAC9C,OAAO,CAAC,UAAU;IAUlB;+EAC2E;IAC3E,2BAA2B,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAU9C;IAED,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA4B,GAAG,IAAI,CAM1D;IAED,OAAO,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAA4B,GAAG,IAAI,CAchE;IAED,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAmB9E;IAED,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,KAAK;CASd"}
@@ -1,5 +1,4 @@
1
1
  import { Session, Thread, ThreadTurn } from "@claudexor/schema";
2
- import { noProjectRepoRoot } from "@claudexor/util";
3
2
  import { decodeBody } from "./thread-rows.js";
4
3
  const RetainedTurn = ThreadTurn.omit({ prompt: true });
5
4
  /** One typed reader for the initial inventory AND changed-owner rechecks.
@@ -11,7 +10,9 @@ export class RetentionReferenceReader {
11
10
  runs = new Set();
12
11
  sessions = new Map();
13
12
  roots = new Set();
14
- lanes = new Map();
13
+ /** Lane directories are named by globally unique thread id, independent of
14
+ * the project spelling that happened to produce their runtime namespace. */
15
+ laneThreadIds = new Set();
15
16
  constructor(store, ignored, retained) {
16
17
  this.store = store;
17
18
  this.ignored = ignored;
@@ -22,23 +23,46 @@ export class RetentionReferenceReader {
22
23
  this.runs.add(id);
23
24
  };
24
25
  thread(row) {
25
- if (!this.retained(row.pid) || row.state === "purged")
26
+ if (row.state === "purged") {
27
+ this.purgedLane(row);
28
+ return;
29
+ }
30
+ if (!this.retained(row.pid))
26
31
  return;
27
32
  const thread = this.read("thread", row, () => Thread.parse(decodeBody(row)));
28
33
  if (thread.state !== row.state || thread.id !== row.id)
29
34
  throw new Error(`thread ${row.id} in partition ${row.pid}: retention state or identity disagrees`);
30
35
  if (thread.repo)
31
36
  this.roots.add(thread.repo.root);
32
- const root = thread.repo?.root ?? noProjectRepoRoot();
33
- const lanes = this.lanes.get(root) ?? new Set();
34
- lanes.add(thread.id);
35
- this.lanes.set(root, lanes);
37
+ this.laneThreadIds.add(thread.id);
36
38
  if (this.ignored.has(thread.id) && thread.state === "trashed")
37
39
  return;
38
40
  thread.run_ids.forEach(this.add);
39
41
  this.add(thread.head_run_id);
40
42
  return thread;
41
43
  }
44
+ /** A purge obligation still open owns its lane: only the purge owner removes
45
+ * it, after rechecking what a conditional retirement accepted; the orphan
46
+ * sweep must not delete those bytes first. */
47
+ purgedLane(row) {
48
+ if (!this.store
49
+ .prepare("SELECT 1 FROM effect_obligation WHERE kind='purge_fs' AND key=?")
50
+ .get(row.id))
51
+ return;
52
+ this.laneThreadIds.add(row.id);
53
+ }
54
+ /** Add lane owners from a quarantined partition without decoding its body.
55
+ * Quarantine is precisely the state in which the body may be malformed. */
56
+ addQuarantinedLaneThreadIds(pid) {
57
+ const rows = this.store
58
+ .prepare(`SELECT t.id FROM thread t JOIN partition q ON q.id=t.pid
59
+ LEFT JOIN project p ON p.id=q.project_id LEFT JOIN partition g ON g.id=p.pid
60
+ WHERE t.state<>'purged' AND (q.status='quarantined' OR g.status='quarantined')
61
+ ${pid === undefined ? "" : "AND (q.id=? OR p.pid=?)"}`)
62
+ .all(...(pid === undefined ? [] : [pid, pid]));
63
+ for (const row of rows)
64
+ this.laneThreadIds.add(row.id);
65
+ }
42
66
  turn(row, owner = this.owner(row.thread_id)) {
43
67
  if (!this.retained(row.pid) || !owner)
44
68
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"retention-reference-reader.js","sourceRoot":"","sources":["../../src/store/retention-reference-reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retention-reference-reader.js","sourceRoot":"","sources":["../../src/store/retention-reference-reader.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,8 @@ export interface DiskRetentionReferences {
6
6
  /** Cooperatively absorb changed owners, then synchronously recheck before expiry. */
7
7
  refresh?: () => Promise<void>;
8
8
  recheck?: () => boolean;
9
+ /** Latched changed-owner cause when the proof is no longer current. */
10
+ held?: () => string | null;
9
11
  /** Native callers absorb the same changed owners before per-file rechecks. */
10
12
  nativeCurrent?: () => boolean;
11
13
  /** Pass-local ownership, refreshed synchronously at each lane sweep boundary. */
@@ -14,6 +16,9 @@ export interface DiskRetentionReferences {
14
16
  nativeWatchRunDirs?: ReadonlySet<string>;
15
17
  nativeReferenceError?: () => string | null;
16
18
  hasActiveCommands?: () => boolean;
19
+ /** Runtime namespaces whose registration (root, status, generation) changed during
20
+ * the pass: their keep-last and ownership are unknown until a fresh pass (#503). */
21
+ deferredRuntimes?: () => ReadonlySet<string>;
17
22
  /** Caller releases the observation after all deletions, including error paths. */
18
23
  close?: () => void;
19
24
  /** Recovery holds are receipt facts; completed quarantine is not a hold. */
@@ -1 +1 @@
1
- {"version":3,"file":"retention-references.d.ts","sourceRoot":"","sources":["../../src/store/retention-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAU9C,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;IACxB,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,iFAAiF;IACjF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,oBAAoB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yFAAyF;IACzF,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,6EAA6E;IAC7E,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED;gFACgF;AAChF,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CnB;AAED;wFACwF;AACxF,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,WAAW,EAClB,eAAe,GAAE,WAAW,CAAC,MAAM,CAAa,EAChD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,uBAAuB,CAAC,CAiHlC"}
1
+ {"version":3,"file":"retention-references.d.ts","sourceRoot":"","sources":["../../src/store/retention-references.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAU9C,MAAM,WAAW,uBAAuB;IACtC,kFAAkF;IAClF,SAAS,EAAE,MAAM,OAAO,CAAC;IACzB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;IACxB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC3B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC;IAC9B,iFAAiF;IACjF,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,kBAAkB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,oBAAoB,CAAC,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC3C,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC;IAClC;wFACoF;IACpF,gBAAgB,CAAC,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,yFAAyF;IACzF,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,6EAA6E;IAC7E,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,qBAAqB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,gBAAgB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IACzC,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACvE;AAED;gFACgF;AAChF,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,WAAW,EAClB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CA8CnB;AAED;wFACwF;AACxF,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,WAAW,EAClB,eAAe,GAAE,WAAW,CAAC,MAAM,CAAa,EAChD,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,uBAAuB,CAAC,CA2IlC"}