@noy-db/hub 0.4.0-pre.1 → 0.4.0-pre.2

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 (352) hide show
  1. package/dist/aggregate/index.js +4 -4
  2. package/dist/api-UPAT2O3M.js +20 -0
  3. package/dist/as/index.js +12 -12
  4. package/dist/attestation/index.js +18 -18
  5. package/dist/{backup-LU2DTZTI.js → backup-JL2GOTYQ.js} +11 -11
  6. package/dist/blobs/index.js +27 -15
  7. package/dist/blobs/index.js.map +1 -1
  8. package/dist/broker/index.js +12 -12
  9. package/dist/by/index.js +2 -2
  10. package/dist/cargo/index.js +46 -36
  11. package/dist/{chunk-QDPZWTN2.js → chunk-25G7U6RD.js} +2 -2
  12. package/dist/{chunk-GQNGCEP5.js → chunk-25ZDB25Z.js} +2 -2
  13. package/dist/{chunk-5WZXVULX.js → chunk-2ITLQZV5.js} +2 -2
  14. package/dist/{chunk-WNGGJWF7.js → chunk-2JZ763FV.js} +2 -2
  15. package/dist/{chunk-2P7EGNKF.js → chunk-2KL6NDD4.js} +90 -3
  16. package/dist/chunk-2KL6NDD4.js.map +1 -0
  17. package/dist/{chunk-3U3FBR7O.js → chunk-2RMDVWGB.js} +2 -2
  18. package/dist/{chunk-VAIS3SOM.js → chunk-2U7Y7BNJ.js} +2 -2
  19. package/dist/{chunk-MQ6WOPSY.js → chunk-2VUISNGP.js} +5 -5
  20. package/dist/chunk-2YELV6TV.js +1 -0
  21. package/dist/{chunk-2MUZ3LY6.js → chunk-3O62PVDW.js} +3 -3
  22. package/dist/{chunk-LOF2W3JU.js → chunk-4JYYIFHW.js} +12 -12
  23. package/dist/{chunk-6HY2X62D.js → chunk-5BB3N4KU.js} +2 -2
  24. package/dist/{chunk-LSASLXGC.js → chunk-5BHNQNBI.js} +1 -1
  25. package/dist/{chunk-LSASLXGC.js.map → chunk-5BHNQNBI.js.map} +1 -1
  26. package/dist/{chunk-6NQMXTYC.js → chunk-5OZCCLNC.js} +2 -2
  27. package/dist/{chunk-HOONYZY2.js → chunk-5P5AAXYA.js} +2 -2
  28. package/dist/{chunk-T6GU5PPZ.js → chunk-5SZ24DL5.js} +6 -6
  29. package/dist/{chunk-PK6QCH2C.js → chunk-7B4GPCX7.js} +5 -5
  30. package/dist/{chunk-O7WJ47EF.js → chunk-A64XXIIB.js} +4 -4
  31. package/dist/{chunk-G6EQYAL6.js → chunk-AFBJHD55.js} +5 -5
  32. package/dist/{chunk-LB6OH6K2.js → chunk-BCOKZC4B.js} +2 -2
  33. package/dist/{chunk-J6Q7UVQE.js → chunk-BVZGNMVM.js} +4 -16
  34. package/dist/{chunk-J6Q7UVQE.js.map → chunk-BVZGNMVM.js.map} +1 -1
  35. package/dist/{chunk-IRQY7IR5.js → chunk-BZEPJJOK.js} +4 -4
  36. package/dist/{chunk-GYYCX5K6.js → chunk-BZK6JEX4.js} +5 -5
  37. package/dist/{chunk-7CI6CP7Z.js → chunk-CCT4WZI6.js} +5 -5
  38. package/dist/{chunk-VEALDPHW.js → chunk-CGPO3ZYB.js} +2 -2
  39. package/dist/{chunk-S3BFKGET.js → chunk-DEQ2JTBR.js} +3 -3
  40. package/dist/{chunk-3ELCWU56.js → chunk-E2R5NRZD.js} +2 -2
  41. package/dist/{chunk-BOKIKJJB.js → chunk-EDC6MLXV.js} +2 -2
  42. package/dist/{chunk-2IALOXZS.js → chunk-F4COUZLL.js} +2 -2
  43. package/dist/{chunk-JRBNCUNT.js → chunk-FLHOTGOO.js} +3 -3
  44. package/dist/{chunk-6XE5TMPR.js → chunk-GBEXTC6Z.js} +3 -3
  45. package/dist/{chunk-N55W7KUL.js → chunk-GS3Q2KOZ.js} +2 -2
  46. package/dist/{chunk-M75ZZHSR.js → chunk-GYB2QK5H.js} +2 -2
  47. package/dist/{chunk-6B4DYGWO.js → chunk-GZ2GKOF6.js} +3 -3
  48. package/dist/{chunk-VCBHAE4R.js → chunk-H4SMS4O2.js} +2 -2
  49. package/dist/{chunk-MTQPRQHB.js → chunk-HGVFJL63.js} +4 -4
  50. package/dist/{chunk-3SV2EPMN.js → chunk-HVZT5T22.js} +5 -5
  51. package/dist/{chunk-F6T6L2UK.js → chunk-IGAIOGCN.js} +4 -4
  52. package/dist/{chunk-W2OG6JOL.js → chunk-IGM563N5.js} +18 -1
  53. package/dist/chunk-IGM563N5.js.map +1 -0
  54. package/dist/{chunk-GWKAVKHI.js → chunk-ITI3SJRB.js} +2 -2
  55. package/dist/{chunk-DDATL6PU.js → chunk-IU22SQGU.js} +7 -7
  56. package/dist/{chunk-RTEK4C4I.js → chunk-IUIVDVXM.js} +2 -2
  57. package/dist/{chunk-UBNCR3YK.js → chunk-IZX3WZBF.js} +4 -4
  58. package/dist/{chunk-RDXW3OBQ.js → chunk-J3VW4J4E.js} +2 -2
  59. package/dist/{chunk-BMQWTQZ4.js → chunk-J6U4BOKP.js} +11 -11
  60. package/dist/{chunk-KUIB4B5Q.js → chunk-JA5B3SLH.js} +2 -2
  61. package/dist/{chunk-4BRCIYFG.js → chunk-JA5O7UEZ.js} +6 -6
  62. package/dist/{chunk-6HPG2YNX.js → chunk-JKWNG3TM.js} +2 -2
  63. package/dist/{chunk-RM2XV574.js → chunk-JLHKBAFY.js} +3 -3
  64. package/dist/{chunk-ISMV2QVG.js → chunk-KMONEHDJ.js} +2 -2
  65. package/dist/{chunk-ZEQWCBCM.js → chunk-KR5EGWI4.js} +5 -5
  66. package/dist/{chunk-JBBSYJHP.js → chunk-KVHWEPT2.js} +2 -2
  67. package/dist/{chunk-2PCAVW2I.js → chunk-L4OA7G5T.js} +2 -2
  68. package/dist/{chunk-IY23KFNZ.js → chunk-LLVW4V7R.js} +3 -3
  69. package/dist/{chunk-N6WF5PKC.js → chunk-M25ZIEB2.js} +2 -2
  70. package/dist/{chunk-A7JJLVGH.js → chunk-MEKAMERX.js} +5 -7
  71. package/dist/{chunk-A7JJLVGH.js.map → chunk-MEKAMERX.js.map} +1 -1
  72. package/dist/{chunk-UC2ETWF3.js → chunk-MSO2C3KG.js} +2 -2
  73. package/dist/{chunk-ONTBCHCP.js → chunk-N4FZ6ITM.js} +2 -2
  74. package/dist/{chunk-DRWBEDYO.js → chunk-NM4LVUXH.js} +2 -2
  75. package/dist/{chunk-HPUWOVR7.js → chunk-NOT7XA7Q.js} +5 -5
  76. package/dist/{chunk-RA5VTXXG.js → chunk-OGFPMCSP.js} +2 -2
  77. package/dist/{chunk-KUPKLSX5.js → chunk-OGY4ELVE.js} +3 -3
  78. package/dist/{chunk-T36RFODW.js → chunk-OOTTXUNV.js} +2 -2
  79. package/dist/{chunk-A5BDDEXK.js → chunk-OTU5ZI3U.js} +4 -4
  80. package/dist/{chunk-OF75ACKS.js → chunk-OVFCAS7U.js} +9 -9
  81. package/dist/{chunk-KWVJAOIN.js → chunk-OWE4BNTM.js} +4 -4
  82. package/dist/{chunk-DVUZMT2W.js → chunk-PEY6ZTCF.js} +8 -8
  83. package/dist/{chunk-7O3AYBC7.js → chunk-PWZKD4HW.js} +70 -59
  84. package/dist/chunk-PWZKD4HW.js.map +1 -0
  85. package/dist/{chunk-SMGEYW6G.js → chunk-QAFWRGVD.js} +7 -7
  86. package/dist/{chunk-TOPYT5U5.js → chunk-QCUH2G77.js} +6 -6
  87. package/dist/{chunk-CBSY2N76.js → chunk-QDNVHA2F.js} +2 -2
  88. package/dist/{chunk-FH52K7EG.js → chunk-QRHEAZ2Q.js} +2 -6
  89. package/dist/{chunk-FH52K7EG.js.map → chunk-QRHEAZ2Q.js.map} +1 -1
  90. package/dist/{chunk-WEYZTLXN.js → chunk-QXPOEAKR.js} +2 -2
  91. package/dist/{chunk-PT37L5DV.js → chunk-RGL53NXZ.js} +3 -3
  92. package/dist/{chunk-TAGR72IR.js → chunk-RI3OKC3Y.js} +4 -4
  93. package/dist/{chunk-UNCOC7QH.js → chunk-S3OYXPSE.js} +9 -9
  94. package/dist/{chunk-JVBO4SZL.js → chunk-STR7WBOB.js} +2 -2
  95. package/dist/{chunk-DDHM2TLX.js → chunk-T7S4V52L.js} +4 -4
  96. package/dist/{chunk-BGK233EA.js → chunk-TYBXP6WE.js} +7 -7
  97. package/dist/{chunk-RND5ZPNP.js → chunk-UEO5CHOP.js} +3 -3
  98. package/dist/{chunk-EGCRBCNA.js → chunk-V3YB7RGR.js} +3 -3
  99. package/dist/{chunk-IM3QVF53.js → chunk-V7RGFJ3Z.js} +6 -6
  100. package/dist/{chunk-SMIRGMS7.js → chunk-VEX6G3YL.js} +2 -2
  101. package/dist/{chunk-3PF6CRDT.js → chunk-VZELV7ZJ.js} +115 -120
  102. package/dist/{chunk-3PF6CRDT.js.map → chunk-VZELV7ZJ.js.map} +1 -1
  103. package/dist/{chunk-GULTLPFB.js → chunk-XGVDLQJE.js} +3 -3
  104. package/dist/{chunk-YJV2UZ7H.js → chunk-XULHFSHO.js} +5 -5
  105. package/dist/{chunk-S6Q37VGE.js → chunk-XW7NWO4A.js} +2 -2
  106. package/dist/{chunk-JZWWLLVY.js → chunk-Y5E6CH6S.js} +6 -6
  107. package/dist/{chunk-CCOP5XDW.js → chunk-YG2EG6CB.js} +4 -4
  108. package/dist/{chunk-5OI6BR4H.js → chunk-YGBIBOCR.js} +307 -17
  109. package/dist/chunk-YGBIBOCR.js.map +1 -0
  110. package/dist/{chunk-YTGDPCPW.js → chunk-YHPUDB7Q.js} +2 -2
  111. package/dist/{chunk-UFEVO57O.js → chunk-ZJGZDOQO.js} +6 -6
  112. package/dist/classified/index.js +5 -5
  113. package/dist/{classified-marker-WQVIJAW2.js → classified-marker-7S5IEP6Q.js} +3 -3
  114. package/dist/collection-facade-ENLTJZBT.js +44 -0
  115. package/dist/{computed-DSMPXG2Y.js → computed-WZNKRLCY.js} +3 -3
  116. package/dist/consent/index.js +9 -9
  117. package/dist/cover-B5MY43CK.js +36 -0
  118. package/dist/{dead-filter-2A7IAJ3D.js → dead-filter-KRRD57MR.js} +2 -2
  119. package/dist/delegation-UT76AQIG.js +25 -0
  120. package/dist/derivations/index.js +12 -12
  121. package/dist/derive-SGRCCKVP.js +21 -0
  122. package/dist/{enclave-7MW6ZGXW.js → enclave-YFKA3GJT.js} +9 -9
  123. package/dist/executor-TEZYRDN3.js +9 -0
  124. package/dist/executor-UF7LTX6O.js +26 -0
  125. package/dist/executor-WQQRU6DO.js +9 -0
  126. package/dist/export-accessible-HXMKW5LJ.js +23 -0
  127. package/dist/extract-partition-QGQ2R42J.js +38 -0
  128. package/dist/{fanout-sidecar-WDYQ77VB.js → fanout-sidecar-HJV3A7PM.js} +9 -9
  129. package/dist/find-VV6PBIHK.js +11 -0
  130. package/dist/forget/index.js +9 -9
  131. package/dist/guards/index.js +6 -6
  132. package/dist/history/index.js +12 -12
  133. package/dist/i18n/index.js +14 -14
  134. package/dist/index.d.ts +1 -4
  135. package/dist/index.js +173 -192
  136. package/dist/index.js.map +1 -1
  137. package/dist/indexing/index.js +2 -2
  138. package/dist/issue-7JJ4Z7E2.js +19 -0
  139. package/dist/kernel/errors.d.ts +19 -0
  140. package/dist/kernel/noydb.d.ts +0 -6
  141. package/dist/kernel/types.d.ts +20 -17
  142. package/dist/kernel/vault.d.ts +0 -4
  143. package/dist/{ledger-33BC4TR7.js → ledger-SW6QQOAV.js} +11 -11
  144. package/dist/liberate-W5MDWYOV.js +24 -0
  145. package/dist/{link-set-QK22TDEX.js → link-set-GNGGCFI4.js} +11 -11
  146. package/dist/materialized-views/index.js +19 -19
  147. package/dist/noydb-U63S3Z7F.js +70 -0
  148. package/dist/on/index.js +9 -9
  149. package/dist/overlay-views/index.js +4 -4
  150. package/dist/periods/index.js +13 -13
  151. package/dist/pod/index.js +27 -12
  152. package/dist/{policy-NAHB2TUT.js → policy-EAXSJNOT.js} +5 -5
  153. package/dist/portability/index.js +8 -8
  154. package/dist/{post-register-JVTMJ6OW.js → post-register-A7HCFBP5.js} +6 -6
  155. package/dist/query/index.js +6 -6
  156. package/dist/register-YBMRLZLO.js +23 -0
  157. package/dist/registry-3LXKNXWI.js +9 -0
  158. package/dist/registry-4V4YQCXJ.js +19 -0
  159. package/dist/registry-ZULMLCJK.js +18 -0
  160. package/dist/request-withdrawal-SEVUEUDG.js +31 -0
  161. package/dist/{reveal-LGBOM2BO.js → reveal-PB3YG544.js} +6 -6
  162. package/dist/revoke-5QULL5GT.js +24 -0
  163. package/dist/satellites/index.js +1 -1
  164. package/dist/sealed-record/index.js +12 -12
  165. package/dist/{seed-PWK45HDF.js → seed-6GTDHL4E.js} +11 -11
  166. package/dist/session/index.js +9 -9
  167. package/dist/shadow/index.js +2 -2
  168. package/dist/signer-ZMH35FT4.js +25 -0
  169. package/dist/snapshots/index.js +10 -10
  170. package/dist/{stale-FJED42DM.js → stale-NB5BGRVU.js} +10 -10
  171. package/dist/storage-QOZKQMID.js +23 -0
  172. package/dist/{store-coordination-provider-APODTV4W.js → store-coordination-provider-3AELCZ4Y.js} +3 -3
  173. package/dist/sync/index.js +10 -10
  174. package/dist/team/index.js +29 -29
  175. package/dist/tiers/index.js +10 -10
  176. package/dist/to/index.js +1 -1
  177. package/dist/tx/index.js +3 -3
  178. package/dist/util/index.js +1 -1
  179. package/dist/{verify-26Y5GNMK.js → verify-MXN66IIH.js} +5 -5
  180. package/dist/via/blob/active.d.ts +27 -1
  181. package/dist/via/blob/index.d.ts +4 -0
  182. package/dist/{walk-XS3PKM6I.js → walk-H4YE52S2.js} +11 -11
  183. package/dist/with/index.js +11 -11
  184. package/dist/with-audit/periods/vault-facade.d.ts +6 -0
  185. package/dist/{legacy/kernel.d.ts → with-cargo/floor.d.ts} +1 -1
  186. package/dist/with-cargo/index.d.ts +6 -1
  187. package/dist/with-party/directory/cover/index.d.ts +0 -5
  188. package/dist/with-party/directory/cover/schema.d.ts +0 -6
  189. package/dist/with-party/directory/cover/storage.d.ts +0 -8
  190. package/dist/with-party/directory/cover/types.d.ts +0 -21
  191. package/dist/with-pod/bundle.d.ts +0 -2
  192. package/dist/with-pod/index.d.ts +2 -1
  193. package/dist/with-shape/blobs/blob-compaction.d.ts +43 -3
  194. package/dist/with-shape/blobs/blob-pinning.d.ts +112 -0
  195. package/dist/with-shape/blobs/blob-set.d.ts +85 -1
  196. package/dist/withdraw-accessible-HPOVNG2G.js +28 -0
  197. package/package.json +3 -7
  198. package/dist/api-IQFZJSQO.js +0 -20
  199. package/dist/bundle/index.js +0 -105
  200. package/dist/chunk-2P7EGNKF.js.map +0 -1
  201. package/dist/chunk-5OI6BR4H.js.map +0 -1
  202. package/dist/chunk-7O3AYBC7.js.map +0 -1
  203. package/dist/chunk-CHFZDSE4.js +0 -1
  204. package/dist/chunk-GVZQ4NAM.js +0 -14
  205. package/dist/chunk-GVZQ4NAM.js.map +0 -1
  206. package/dist/chunk-W2OG6JOL.js.map +0 -1
  207. package/dist/collection-facade-MJXSC3Q6.js +0 -44
  208. package/dist/cover-B5SJDHR3.js +0 -52
  209. package/dist/delegation-A5A75KQO.js +0 -25
  210. package/dist/derive-HJSMH7RA.js +0 -21
  211. package/dist/executor-AXE4XMLT.js +0 -26
  212. package/dist/executor-KGNLJD6M.js +0 -9
  213. package/dist/executor-XGIS6CR7.js +0 -9
  214. package/dist/export-accessible-VVBJM3MM.js +0 -23
  215. package/dist/extract-partition-LGGBTQET.js +0 -38
  216. package/dist/find-YS6XWB46.js +0 -11
  217. package/dist/issue-LSR5PS6H.js +0 -19
  218. package/dist/legacy/bundle.d.ts +0 -30
  219. package/dist/liberate-GBSAYLPJ.js +0 -24
  220. package/dist/noydb-MTUBMWFE.js +0 -70
  221. package/dist/register-X462DNDM.js +0 -23
  222. package/dist/registry-3XMCT7MQ.js +0 -18
  223. package/dist/registry-KHD2I3M2.js +0 -19
  224. package/dist/registry-NPOWJHC4.js +0 -9
  225. package/dist/request-withdrawal-U7K3JTMY.js +0 -31
  226. package/dist/revoke-OCWDSWRQ.js +0 -24
  227. package/dist/signer-3YFBLZRN.js +0 -25
  228. package/dist/storage-W3GURVFU.js +0 -23
  229. package/dist/withdraw-accessible-Y3B2535F.js +0 -28
  230. package/dist/withdraw-accessible-Y3B2535F.js.map +0 -1
  231. /package/dist/{api-IQFZJSQO.js.map → api-UPAT2O3M.js.map} +0 -0
  232. /package/dist/{backup-LU2DTZTI.js.map → backup-JL2GOTYQ.js.map} +0 -0
  233. /package/dist/{chunk-QDPZWTN2.js.map → chunk-25G7U6RD.js.map} +0 -0
  234. /package/dist/{chunk-GQNGCEP5.js.map → chunk-25ZDB25Z.js.map} +0 -0
  235. /package/dist/{chunk-5WZXVULX.js.map → chunk-2ITLQZV5.js.map} +0 -0
  236. /package/dist/{chunk-WNGGJWF7.js.map → chunk-2JZ763FV.js.map} +0 -0
  237. /package/dist/{chunk-3U3FBR7O.js.map → chunk-2RMDVWGB.js.map} +0 -0
  238. /package/dist/{chunk-VAIS3SOM.js.map → chunk-2U7Y7BNJ.js.map} +0 -0
  239. /package/dist/{chunk-MQ6WOPSY.js.map → chunk-2VUISNGP.js.map} +0 -0
  240. /package/dist/{bundle/index.js.map → chunk-2YELV6TV.js.map} +0 -0
  241. /package/dist/{chunk-2MUZ3LY6.js.map → chunk-3O62PVDW.js.map} +0 -0
  242. /package/dist/{chunk-LOF2W3JU.js.map → chunk-4JYYIFHW.js.map} +0 -0
  243. /package/dist/{chunk-6HY2X62D.js.map → chunk-5BB3N4KU.js.map} +0 -0
  244. /package/dist/{chunk-6NQMXTYC.js.map → chunk-5OZCCLNC.js.map} +0 -0
  245. /package/dist/{chunk-HOONYZY2.js.map → chunk-5P5AAXYA.js.map} +0 -0
  246. /package/dist/{chunk-T6GU5PPZ.js.map → chunk-5SZ24DL5.js.map} +0 -0
  247. /package/dist/{chunk-PK6QCH2C.js.map → chunk-7B4GPCX7.js.map} +0 -0
  248. /package/dist/{chunk-O7WJ47EF.js.map → chunk-A64XXIIB.js.map} +0 -0
  249. /package/dist/{chunk-G6EQYAL6.js.map → chunk-AFBJHD55.js.map} +0 -0
  250. /package/dist/{chunk-LB6OH6K2.js.map → chunk-BCOKZC4B.js.map} +0 -0
  251. /package/dist/{chunk-IRQY7IR5.js.map → chunk-BZEPJJOK.js.map} +0 -0
  252. /package/dist/{chunk-GYYCX5K6.js.map → chunk-BZK6JEX4.js.map} +0 -0
  253. /package/dist/{chunk-7CI6CP7Z.js.map → chunk-CCT4WZI6.js.map} +0 -0
  254. /package/dist/{chunk-VEALDPHW.js.map → chunk-CGPO3ZYB.js.map} +0 -0
  255. /package/dist/{chunk-S3BFKGET.js.map → chunk-DEQ2JTBR.js.map} +0 -0
  256. /package/dist/{chunk-3ELCWU56.js.map → chunk-E2R5NRZD.js.map} +0 -0
  257. /package/dist/{chunk-BOKIKJJB.js.map → chunk-EDC6MLXV.js.map} +0 -0
  258. /package/dist/{chunk-2IALOXZS.js.map → chunk-F4COUZLL.js.map} +0 -0
  259. /package/dist/{chunk-JRBNCUNT.js.map → chunk-FLHOTGOO.js.map} +0 -0
  260. /package/dist/{chunk-6XE5TMPR.js.map → chunk-GBEXTC6Z.js.map} +0 -0
  261. /package/dist/{chunk-N55W7KUL.js.map → chunk-GS3Q2KOZ.js.map} +0 -0
  262. /package/dist/{chunk-M75ZZHSR.js.map → chunk-GYB2QK5H.js.map} +0 -0
  263. /package/dist/{chunk-6B4DYGWO.js.map → chunk-GZ2GKOF6.js.map} +0 -0
  264. /package/dist/{chunk-VCBHAE4R.js.map → chunk-H4SMS4O2.js.map} +0 -0
  265. /package/dist/{chunk-MTQPRQHB.js.map → chunk-HGVFJL63.js.map} +0 -0
  266. /package/dist/{chunk-3SV2EPMN.js.map → chunk-HVZT5T22.js.map} +0 -0
  267. /package/dist/{chunk-F6T6L2UK.js.map → chunk-IGAIOGCN.js.map} +0 -0
  268. /package/dist/{chunk-GWKAVKHI.js.map → chunk-ITI3SJRB.js.map} +0 -0
  269. /package/dist/{chunk-DDATL6PU.js.map → chunk-IU22SQGU.js.map} +0 -0
  270. /package/dist/{chunk-RTEK4C4I.js.map → chunk-IUIVDVXM.js.map} +0 -0
  271. /package/dist/{chunk-UBNCR3YK.js.map → chunk-IZX3WZBF.js.map} +0 -0
  272. /package/dist/{chunk-RDXW3OBQ.js.map → chunk-J3VW4J4E.js.map} +0 -0
  273. /package/dist/{chunk-BMQWTQZ4.js.map → chunk-J6U4BOKP.js.map} +0 -0
  274. /package/dist/{chunk-KUIB4B5Q.js.map → chunk-JA5B3SLH.js.map} +0 -0
  275. /package/dist/{chunk-4BRCIYFG.js.map → chunk-JA5O7UEZ.js.map} +0 -0
  276. /package/dist/{chunk-6HPG2YNX.js.map → chunk-JKWNG3TM.js.map} +0 -0
  277. /package/dist/{chunk-RM2XV574.js.map → chunk-JLHKBAFY.js.map} +0 -0
  278. /package/dist/{chunk-ISMV2QVG.js.map → chunk-KMONEHDJ.js.map} +0 -0
  279. /package/dist/{chunk-ZEQWCBCM.js.map → chunk-KR5EGWI4.js.map} +0 -0
  280. /package/dist/{chunk-JBBSYJHP.js.map → chunk-KVHWEPT2.js.map} +0 -0
  281. /package/dist/{chunk-2PCAVW2I.js.map → chunk-L4OA7G5T.js.map} +0 -0
  282. /package/dist/{chunk-IY23KFNZ.js.map → chunk-LLVW4V7R.js.map} +0 -0
  283. /package/dist/{chunk-N6WF5PKC.js.map → chunk-M25ZIEB2.js.map} +0 -0
  284. /package/dist/{chunk-UC2ETWF3.js.map → chunk-MSO2C3KG.js.map} +0 -0
  285. /package/dist/{chunk-ONTBCHCP.js.map → chunk-N4FZ6ITM.js.map} +0 -0
  286. /package/dist/{chunk-DRWBEDYO.js.map → chunk-NM4LVUXH.js.map} +0 -0
  287. /package/dist/{chunk-HPUWOVR7.js.map → chunk-NOT7XA7Q.js.map} +0 -0
  288. /package/dist/{chunk-RA5VTXXG.js.map → chunk-OGFPMCSP.js.map} +0 -0
  289. /package/dist/{chunk-KUPKLSX5.js.map → chunk-OGY4ELVE.js.map} +0 -0
  290. /package/dist/{chunk-T36RFODW.js.map → chunk-OOTTXUNV.js.map} +0 -0
  291. /package/dist/{chunk-A5BDDEXK.js.map → chunk-OTU5ZI3U.js.map} +0 -0
  292. /package/dist/{chunk-OF75ACKS.js.map → chunk-OVFCAS7U.js.map} +0 -0
  293. /package/dist/{chunk-KWVJAOIN.js.map → chunk-OWE4BNTM.js.map} +0 -0
  294. /package/dist/{chunk-DVUZMT2W.js.map → chunk-PEY6ZTCF.js.map} +0 -0
  295. /package/dist/{chunk-SMGEYW6G.js.map → chunk-QAFWRGVD.js.map} +0 -0
  296. /package/dist/{chunk-TOPYT5U5.js.map → chunk-QCUH2G77.js.map} +0 -0
  297. /package/dist/{chunk-CBSY2N76.js.map → chunk-QDNVHA2F.js.map} +0 -0
  298. /package/dist/{chunk-WEYZTLXN.js.map → chunk-QXPOEAKR.js.map} +0 -0
  299. /package/dist/{chunk-PT37L5DV.js.map → chunk-RGL53NXZ.js.map} +0 -0
  300. /package/dist/{chunk-TAGR72IR.js.map → chunk-RI3OKC3Y.js.map} +0 -0
  301. /package/dist/{chunk-UNCOC7QH.js.map → chunk-S3OYXPSE.js.map} +0 -0
  302. /package/dist/{chunk-JVBO4SZL.js.map → chunk-STR7WBOB.js.map} +0 -0
  303. /package/dist/{chunk-DDHM2TLX.js.map → chunk-T7S4V52L.js.map} +0 -0
  304. /package/dist/{chunk-BGK233EA.js.map → chunk-TYBXP6WE.js.map} +0 -0
  305. /package/dist/{chunk-RND5ZPNP.js.map → chunk-UEO5CHOP.js.map} +0 -0
  306. /package/dist/{chunk-EGCRBCNA.js.map → chunk-V3YB7RGR.js.map} +0 -0
  307. /package/dist/{chunk-IM3QVF53.js.map → chunk-V7RGFJ3Z.js.map} +0 -0
  308. /package/dist/{chunk-SMIRGMS7.js.map → chunk-VEX6G3YL.js.map} +0 -0
  309. /package/dist/{chunk-GULTLPFB.js.map → chunk-XGVDLQJE.js.map} +0 -0
  310. /package/dist/{chunk-YJV2UZ7H.js.map → chunk-XULHFSHO.js.map} +0 -0
  311. /package/dist/{chunk-S6Q37VGE.js.map → chunk-XW7NWO4A.js.map} +0 -0
  312. /package/dist/{chunk-JZWWLLVY.js.map → chunk-Y5E6CH6S.js.map} +0 -0
  313. /package/dist/{chunk-CCOP5XDW.js.map → chunk-YG2EG6CB.js.map} +0 -0
  314. /package/dist/{chunk-YTGDPCPW.js.map → chunk-YHPUDB7Q.js.map} +0 -0
  315. /package/dist/{chunk-UFEVO57O.js.map → chunk-ZJGZDOQO.js.map} +0 -0
  316. /package/dist/{classified-marker-WQVIJAW2.js.map → classified-marker-7S5IEP6Q.js.map} +0 -0
  317. /package/dist/{chunk-CHFZDSE4.js.map → collection-facade-ENLTJZBT.js.map} +0 -0
  318. /package/dist/{collection-facade-MJXSC3Q6.js.map → computed-WZNKRLCY.js.map} +0 -0
  319. /package/dist/{computed-DSMPXG2Y.js.map → cover-B5MY43CK.js.map} +0 -0
  320. /package/dist/{dead-filter-2A7IAJ3D.js.map → dead-filter-KRRD57MR.js.map} +0 -0
  321. /package/dist/{cover-B5SJDHR3.js.map → delegation-UT76AQIG.js.map} +0 -0
  322. /package/dist/{delegation-A5A75KQO.js.map → derive-SGRCCKVP.js.map} +0 -0
  323. /package/dist/{derive-HJSMH7RA.js.map → enclave-YFKA3GJT.js.map} +0 -0
  324. /package/dist/{enclave-7MW6ZGXW.js.map → executor-TEZYRDN3.js.map} +0 -0
  325. /package/dist/{executor-AXE4XMLT.js.map → executor-UF7LTX6O.js.map} +0 -0
  326. /package/dist/{executor-KGNLJD6M.js.map → executor-WQQRU6DO.js.map} +0 -0
  327. /package/dist/{executor-XGIS6CR7.js.map → export-accessible-HXMKW5LJ.js.map} +0 -0
  328. /package/dist/{export-accessible-VVBJM3MM.js.map → extract-partition-QGQ2R42J.js.map} +0 -0
  329. /package/dist/{fanout-sidecar-WDYQ77VB.js.map → fanout-sidecar-HJV3A7PM.js.map} +0 -0
  330. /package/dist/{extract-partition-LGGBTQET.js.map → find-VV6PBIHK.js.map} +0 -0
  331. /package/dist/{find-YS6XWB46.js.map → issue-7JJ4Z7E2.js.map} +0 -0
  332. /package/dist/{issue-LSR5PS6H.js.map → ledger-SW6QQOAV.js.map} +0 -0
  333. /package/dist/{ledger-33BC4TR7.js.map → liberate-W5MDWYOV.js.map} +0 -0
  334. /package/dist/{liberate-GBSAYLPJ.js.map → link-set-GNGGCFI4.js.map} +0 -0
  335. /package/dist/{link-set-QK22TDEX.js.map → noydb-U63S3Z7F.js.map} +0 -0
  336. /package/dist/{noydb-MTUBMWFE.js.map → policy-EAXSJNOT.js.map} +0 -0
  337. /package/dist/{post-register-JVTMJ6OW.js.map → post-register-A7HCFBP5.js.map} +0 -0
  338. /package/dist/{policy-NAHB2TUT.js.map → register-YBMRLZLO.js.map} +0 -0
  339. /package/dist/{register-X462DNDM.js.map → registry-3LXKNXWI.js.map} +0 -0
  340. /package/dist/{registry-3XMCT7MQ.js.map → registry-4V4YQCXJ.js.map} +0 -0
  341. /package/dist/{registry-KHD2I3M2.js.map → registry-ZULMLCJK.js.map} +0 -0
  342. /package/dist/{registry-NPOWJHC4.js.map → request-withdrawal-SEVUEUDG.js.map} +0 -0
  343. /package/dist/{reveal-LGBOM2BO.js.map → reveal-PB3YG544.js.map} +0 -0
  344. /package/dist/{request-withdrawal-U7K3JTMY.js.map → revoke-5QULL5GT.js.map} +0 -0
  345. /package/dist/{seed-PWK45HDF.js.map → seed-6GTDHL4E.js.map} +0 -0
  346. /package/dist/{revoke-OCWDSWRQ.js.map → signer-ZMH35FT4.js.map} +0 -0
  347. /package/dist/{signer-3YFBLZRN.js.map → stale-NB5BGRVU.js.map} +0 -0
  348. /package/dist/{stale-FJED42DM.js.map → storage-QOZKQMID.js.map} +0 -0
  349. /package/dist/{store-coordination-provider-APODTV4W.js.map → store-coordination-provider-3AELCZ4Y.js.map} +0 -0
  350. /package/dist/{verify-26Y5GNMK.js.map → verify-MXN66IIH.js.map} +0 -0
  351. /package/dist/{walk-XS3PKM6I.js.map → walk-H4YE52S2.js.map} +0 -0
  352. /package/dist/{storage-W3GURVFU.js.map → withdraw-accessible-HPOVNG2G.js.map} +0 -0
@@ -11,19 +11,19 @@ import {
11
11
  putAtTier,
12
12
  syncDerivedOutputs,
13
13
  withTiers
14
- } from "../chunk-DDATL6PU.js";
15
- import "../chunk-UC2ETWF3.js";
16
- import "../chunk-DVUZMT2W.js";
17
- import "../chunk-WEYZTLXN.js";
18
- import "../chunk-IY23KFNZ.js";
19
- import "../chunk-N6WF5PKC.js";
20
- import "../chunk-6HY2X62D.js";
14
+ } from "../chunk-IU22SQGU.js";
15
+ import "../chunk-MSO2C3KG.js";
16
+ import "../chunk-PEY6ZTCF.js";
17
+ import "../chunk-QXPOEAKR.js";
18
+ import "../chunk-LLVW4V7R.js";
19
+ import "../chunk-M25ZIEB2.js";
20
+ import "../chunk-5BB3N4KU.js";
21
21
  import "../chunk-LP7BEXCT.js";
22
- import "../chunk-HOONYZY2.js";
23
- import "../chunk-LSASLXGC.js";
22
+ import "../chunk-5P5AAXYA.js";
23
+ import "../chunk-5BHNQNBI.js";
24
24
  import {
25
25
  TiersNotEnabledError
26
- } from "../chunk-W2OG6JOL.js";
26
+ } from "../chunk-IGM563N5.js";
27
27
  import "../chunk-PZ5AY32C.js";
28
28
  export {
29
29
  NO_TIERS,
package/dist/to/index.js CHANGED
@@ -4,7 +4,7 @@ import {
4
4
  NetworkError,
5
5
  PodVersionConflictError,
6
6
  StoreCapabilityError
7
- } from "../chunk-W2OG6JOL.js";
7
+ } from "../chunk-IGM563N5.js";
8
8
  import "../chunk-PZ5AY32C.js";
9
9
  export {
10
10
  BundleVersionConflictError,
package/dist/tx/index.js CHANGED
@@ -3,9 +3,9 @@ import {
3
3
  TxContext,
4
4
  TxVault,
5
5
  runTransaction
6
- } from "../chunk-JRBNCUNT.js";
6
+ } from "../chunk-FLHOTGOO.js";
7
7
  import "../chunk-ZJADGNYF.js";
8
- import "../chunk-W2OG6JOL.js";
8
+ import "../chunk-IGM563N5.js";
9
9
  import "../chunk-PZ5AY32C.js";
10
10
 
11
11
  // src/with-commit/tx/dry-run.ts
@@ -44,7 +44,7 @@ async function runDryRun(db, fn) {
44
44
  const gctx = { existing: before, vault: facade, userId: v.userId, role: v.role };
45
45
  try {
46
46
  await registry.runChecks(op.collectionName, after, gctx);
47
- const { GuardExecutor } = await import("../executor-KGNLJD6M.js");
47
+ const { GuardExecutor } = await import("../executor-WQQRU6DO.js");
48
48
  for (const g of guards) {
49
49
  await GuardExecutor.checkFrozenFields(g, op.id, before, after);
50
50
  }
@@ -3,7 +3,7 @@ import {
3
3
  } from "../chunk-PY4KJPYU.js";
4
4
  import {
5
5
  FilenameSanitizationError
6
- } from "../chunk-W2OG6JOL.js";
6
+ } from "../chunk-IGM563N5.js";
7
7
  import "../chunk-PZ5AY32C.js";
8
8
 
9
9
  // src/kernel/util/sanitize-filename.ts
@@ -2,10 +2,10 @@ import {
2
2
  blindedEqual,
3
3
  evaluateKofN,
4
4
  openVdigPayload
5
- } from "./chunk-IY23KFNZ.js";
5
+ } from "./chunk-LLVW4V7R.js";
6
6
  import {
7
7
  dualReadSealedSlot
8
- } from "./chunk-N6WF5PKC.js";
8
+ } from "./chunk-M25ZIEB2.js";
9
9
  import {
10
10
  VDIG_ITERATIONS,
11
11
  normalizeForVerify,
@@ -14,11 +14,11 @@ import {
14
14
  import {
15
15
  base64ToBuffer,
16
16
  generateSalt
17
- } from "./chunk-HOONYZY2.js";
17
+ } from "./chunk-5P5AAXYA.js";
18
18
  import {
19
19
  ClassifiedConfigError,
20
20
  ClassifiedVerifyError
21
- } from "./chunk-W2OG6JOL.js";
21
+ } from "./chunk-IGM563N5.js";
22
22
  import "./chunk-PZ5AY32C.js";
23
23
 
24
24
  // src/kernel/enclave/classify/verify.ts
@@ -137,4 +137,4 @@ export {
137
137
  verifyDigestField,
138
138
  verifyTextField
139
139
  };
140
- //# sourceMappingURL=verify-26Y5GNMK.js.map
140
+ //# sourceMappingURL=verify-MXN66IIH.js.map
@@ -10,6 +10,29 @@
10
10
  * this (ESM tree-shaking + hub's `"sideEffects": false`).
11
11
  */
12
12
  import type { BlobStrategy } from '../../port/with/blob-strategy.js';
13
+ import type { BlobPinStore, BlobCacheStats } from '../../with-shape/blobs/blob-pinning.js';
14
+ /** Options for {@link withBlobs} (#808). */
15
+ export interface WithBlobsOptions {
16
+ /**
17
+ * Device-local backend for the offline-pin registry + external side-cache
18
+ * (`collection.blob(id).pin()`, the `cacheBudget` LRU stamps). Default:
19
+ * in-memory — pins then last one app session. Supply a durable,
20
+ * DEVICE-LOCAL store (IndexedDB-backed on the web; it must never sync) to
21
+ * keep pins across restarts. See `BlobPinStore`'s doc for the posture.
22
+ */
23
+ readonly pinStore?: BlobPinStore;
24
+ }
25
+ /**
26
+ * The strategy `withBlobs()` returns — a `BlobStrategy` plus the device-local
27
+ * blob-cache KPI surface (#808).
28
+ */
29
+ export interface BlobsService extends BlobStrategy {
30
+ /**
31
+ * Snapshot of this device's blob-cache KPI counters: local-read hits,
32
+ * network misses, and total bytes downloaded from the object store.
33
+ */
34
+ cacheStats(): BlobCacheStats;
35
+ }
13
36
  /**
14
37
  * Build a default `BlobStrategy` ready to pass into `createNoydb`.
15
38
  *
@@ -17,6 +40,9 @@ import type { BlobStrategy } from '../../port/with/blob-strategy.js';
17
40
  * avoid shadowing the very common local idiom
18
41
  * `const blobs = invoices.blob(id)` in user code.
19
42
  *
43
+ * One `withBlobs()` instance owns one device-local pin registry + KPI
44
+ * counter set (#808) — treat it as "this device's" blob service.
45
+ *
20
46
  * @example
21
47
  * ```ts
22
48
  * import { createNoydb } from '@noy-db/hub'
@@ -31,4 +57,4 @@ import type { BlobStrategy } from '../../port/with/blob-strategy.js';
31
57
  * await db.vault('acme').collection('invoices').blob('inv-1').put('receipt.pdf', bytes)
32
58
  * ```
33
59
  */
34
- export declare function withBlobs(): BlobStrategy;
60
+ export declare function withBlobs(options?: WithBlobsOptions): BlobsService;
@@ -19,7 +19,11 @@
19
19
  * code should prefer this subpath so the import boundary is explicit.
20
20
  */
21
21
  export { withBlobs } from './active.js';
22
+ export type { WithBlobsOptions, BlobsService } from './active.js';
22
23
  export type { BlobStrategy, BlobStrategyOpenArgs } from '../../port/with/blob-strategy.js';
24
+ export { memoryBlobPinStore, blobPinKey } from '../../with-shape/blobs/blob-pinning.js';
25
+ export type { BlobPinStore, BlobPinEntry, BlobCacheStats } from '../../with-shape/blobs/blob-pinning.js';
26
+ export { BlobOfflineError } from '../../kernel/errors.js';
23
27
  export { memoryObjectProjection } from '../../with-shape/blobs/object-projection.js';
24
28
  export type { ObjectProjection, ObjectMeta, ObjectListEntry, PutObjectOptions, ObjectUrlOptions, PutUrlOptions, } from '../../with-shape/blobs/object-projection.js';
25
29
  export { importExternalObjects } from '../../with-shape/blobs/import-external.js';
@@ -3,19 +3,19 @@ import {
3
3
  } from "./chunk-VYYM3MEN.js";
4
4
  import {
5
5
  derivePersistedSchema
6
- } from "./chunk-BOKIKJJB.js";
6
+ } from "./chunk-EDC6MLXV.js";
7
7
  import {
8
8
  loadPersistedSchema
9
- } from "./chunk-F6T6L2UK.js";
10
- import "./chunk-DVUZMT2W.js";
11
- import "./chunk-WEYZTLXN.js";
12
- import "./chunk-IY23KFNZ.js";
13
- import "./chunk-N6WF5PKC.js";
14
- import "./chunk-6HY2X62D.js";
9
+ } from "./chunk-IGAIOGCN.js";
10
+ import "./chunk-PEY6ZTCF.js";
11
+ import "./chunk-QXPOEAKR.js";
12
+ import "./chunk-LLVW4V7R.js";
13
+ import "./chunk-M25ZIEB2.js";
14
+ import "./chunk-5BB3N4KU.js";
15
15
  import "./chunk-LP7BEXCT.js";
16
- import "./chunk-HOONYZY2.js";
17
- import "./chunk-LSASLXGC.js";
18
- import "./chunk-W2OG6JOL.js";
16
+ import "./chunk-5P5AAXYA.js";
17
+ import "./chunk-5BHNQNBI.js";
18
+ import "./chunk-IGM563N5.js";
19
19
  import "./chunk-PZ5AY32C.js";
20
20
 
21
21
  // src/with-shape/introspection/walk.ts
@@ -238,4 +238,4 @@ function summariseAggregateOp(value) {
238
238
  export {
239
239
  dumpVaultSchema
240
240
  };
241
- //# sourceMappingURL=walk-XS3PKM6I.js.map
241
+ //# sourceMappingURL=walk-H4YE52S2.js.map
@@ -6,18 +6,18 @@ import {
6
6
  assertCanImport,
7
7
  canExport,
8
8
  canImport
9
- } from "../chunk-PT37L5DV.js";
10
- import "../chunk-3SV2EPMN.js";
11
- import "../chunk-PK6QCH2C.js";
12
- import "../chunk-DVUZMT2W.js";
13
- import "../chunk-WEYZTLXN.js";
14
- import "../chunk-IY23KFNZ.js";
15
- import "../chunk-N6WF5PKC.js";
16
- import "../chunk-6HY2X62D.js";
9
+ } from "../chunk-RGL53NXZ.js";
10
+ import "../chunk-HVZT5T22.js";
11
+ import "../chunk-7B4GPCX7.js";
12
+ import "../chunk-PEY6ZTCF.js";
13
+ import "../chunk-QXPOEAKR.js";
14
+ import "../chunk-LLVW4V7R.js";
15
+ import "../chunk-M25ZIEB2.js";
16
+ import "../chunk-5BB3N4KU.js";
17
17
  import "../chunk-LP7BEXCT.js";
18
- import "../chunk-HOONYZY2.js";
19
- import "../chunk-LSASLXGC.js";
20
- import "../chunk-W2OG6JOL.js";
18
+ import "../chunk-5P5AAXYA.js";
19
+ import "../chunk-5BHNQNBI.js";
20
+ import "../chunk-IGM563N5.js";
21
21
  import "../chunk-PZ5AY32C.js";
22
22
  export {
23
23
  ServiceBus,
@@ -28,6 +28,12 @@ export interface VaultPeriodsDeps {
28
28
  archiveRecords(before: string): Promise<number>;
29
29
  /** #615: sweep delete markers off the vault's push-only sync targets. Bound to `vault._purgePeriodTargets`. */
30
30
  purgeTargets(before: string): Promise<readonly TargetPurgeCount[]>;
31
+ /**
32
+ * #822: mark a reserved-collection write dirty so the sync engine pushes
33
+ * it. Bound to the vault's `onDirty` when sync is configured, `undefined`
34
+ * otherwise. Only `_periods` uses it — see `writeReserved`.
35
+ */
36
+ onDirty?: ((collection: string, id: string, action: 'put', version: number) => Promise<void>) | undefined;
31
37
  }
32
38
  export declare class VaultPeriods {
33
39
  private readonly deps;
@@ -2,7 +2,7 @@
2
2
  * The `@noy-db/hub/kernel` published subpath has been retired (coordinated
3
3
  * removal; consumers migrated to `@noy-db/hub/cargo`). This file survives
4
4
  * unpublished as `/cargo`'s internal re-export floor — `with-cargo/index.ts`
5
- * does `export * from '../legacy/kernel.js'` to consolidate this runtime-helper
5
+ * does `export * from './floor.js'` to consolidate this runtime-helper
6
6
  * / error-class / type surface into the cargo seam, and
7
7
  * `cargo-surface-golden.test.ts` reads this file directly as part of that
8
8
  * union. Do not reintroduce it as a tsup entry or package.json export.
@@ -12,7 +12,7 @@
12
12
  *
13
13
  * @packageDocumentation
14
14
  */
15
- export * from '../legacy/kernel.js';
15
+ export * from './floor.js';
16
16
  export { CustodyApi } from '../with-party/custody/index.js';
17
17
  export type { GrantCustodianOptions } from '../with-party/custody/index.js';
18
18
  export { liberateVault } from '../with-party/custody/liberate.js';
@@ -32,6 +32,11 @@ export { describeExtraction } from './describe-extraction.js';
32
32
  export { decryptExtractedPartition } from './decrypt-partition.js';
33
33
  export type { ExtractionPreview } from './describe-extraction.js';
34
34
  export type { DecryptedRecord } from './decrypt-partition.js';
35
+ export type { WalkClosureOptions, ClosureResult, DanglingRefNotice } from './walk-closure.js';
36
+ export type { ExtractPartitionResult } from './extract-partition.js';
37
+ export { adoptPartition, unsealDeks, createOwnerOnAdoptedPartition } from './adopt-partition.js';
38
+ export type { AdoptPartitionOptions, AdoptPartitionResult, CreateOwnerResult, CreateOwnerOptions, CreateOwnerStandardOptions, CreateOwnerManagedOptions, } from './adopt-partition.js';
39
+ export { TransferSealError, AdoptionStateError, PartitionExtractionError } from '../kernel/errors.js';
35
40
  export type { WriteHook } from '../port/with/write-hooks.js';
36
41
  export type { WriteQueue } from '../kernel/write-queue.js';
37
42
  export type { WriteConflict } from '../kernel/types.js';
@@ -12,8 +12,3 @@ export type { SetCoverInput } from './schema.js';
12
12
  export { validateCoverInput, isCover } from './schema.js';
13
13
  export { mergeCustom, validateCoverSize } from './custom.js';
14
14
  export { loadCover, saveCover, readCover, resolveLocale, pickLocale, COVER_RECORD_ID, } from './storage.js';
15
- export type { PublicEnvelope, PublicEnvelopeText, PublicEnvelopeSchema, PublicEnvelopeField, ResolvedPublicEnvelopeSchema, } from './types.js';
16
- export { PUBLIC_ENVELOPE_FIELDS, DEFAULT_PUBLIC_ENVELOPE_SCHEMA, } from './types.js';
17
- export type { SetPublicEnvelopeInput } from './schema.js';
18
- export { validatePublicEnvelopeInput, isPublicEnvelope } from './schema.js';
19
- export { loadPublicEnvelope, savePublicEnvelope, readPublicEnvelope, PUBLIC_ENVELOPE_RECORD_ID, } from './storage.js';
@@ -31,9 +31,3 @@ export declare function validateCoverInput(input: SetCoverInput, schema: Resolve
31
31
  * discriminator keeps its frozen name: `_noydb_public: 1`.)
32
32
  */
33
33
  export declare function isCover(x: unknown): x is Cover;
34
- /** @deprecated Use {@link SetCoverInput}. */
35
- export type SetPublicEnvelopeInput = SetCoverInput;
36
- /** @deprecated Use {@link validateCoverInput}. */
37
- export declare const validatePublicEnvelopeInput: typeof validateCoverInput;
38
- /** @deprecated Use {@link isCover}. */
39
- export declare const isPublicEnvelope: typeof isCover;
@@ -61,11 +61,3 @@ export declare function resolveLocale(cover: Cover, locale: string): Cover;
61
61
  * This deviation is documented in `https://github.com/vLannaAi/noy-db-docs/blob/main/content/docs/services/public-envelope.md`.
62
62
  */
63
63
  export declare function pickLocale(value: string | Record<string, string>, locale: string, defaultLocale: string | undefined): string;
64
- /** @deprecated Use {@link COVER_RECORD_ID}. */
65
- export declare const PUBLIC_ENVELOPE_RECORD_ID = "public-envelope";
66
- /** @deprecated Use {@link loadCover}. */
67
- export declare const loadPublicEnvelope: typeof loadCover;
68
- /** @deprecated Use {@link saveCover}. */
69
- export declare const savePublicEnvelope: typeof saveCover;
70
- /** @deprecated Use {@link readCover}. */
71
- export declare const readPublicEnvelope: typeof readCover;
@@ -126,24 +126,3 @@ export interface ResolvedCoverSchema {
126
126
  * overrides the keys it provides.
127
127
  */
128
128
  export declare function resolveSchema(schema: true | CoverSchema | undefined): ResolvedCoverSchema | undefined;
129
- /** @deprecated Use {@link Cover}. */
130
- export type PublicEnvelope = Cover;
131
- /** @deprecated Use {@link CoverText}. */
132
- export type PublicEnvelopeText = CoverText;
133
- /** @deprecated Use {@link CoverField}. */
134
- export type PublicEnvelopeField = CoverField;
135
- /** @deprecated Use {@link CoverSchema}. */
136
- export type PublicEnvelopeSchema = CoverSchema;
137
- /** @deprecated Use {@link ResolvedCoverSchema}. */
138
- export type ResolvedPublicEnvelopeSchema = ResolvedCoverSchema;
139
- /** @deprecated Use {@link COVER_FIELDS}. */
140
- export declare const PUBLIC_ENVELOPE_FIELDS: readonly ["name", "description", "icon", "createdAt", "updatedAt", "defaultLocale", "custom"];
141
- /** @deprecated Use {@link DEFAULT_COVER_SCHEMA}. */
142
- export declare const DEFAULT_PUBLIC_ENVELOPE_SCHEMA: {
143
- readonly fields: readonly ["name", "description", "icon", "createdAt", "updatedAt", "defaultLocale"];
144
- readonly maxIconBytes: number;
145
- readonly iconMimeTypes: readonly ["image/png", "image/svg+xml"];
146
- readonly maxStringChars: 200;
147
- readonly maxCustomBytes: number;
148
- readonly maxCoverBytes: number;
149
- };
@@ -391,8 +391,6 @@ export declare const readNoydbBundleHeader: typeof readPodHeader;
391
391
  export declare function readPodCover(bytes: Uint8Array, opts?: {
392
392
  readonly locale?: string;
393
393
  }): Cover | undefined;
394
- /** @deprecated Use `readPodCover` (#799 rename). */
395
- export declare const readNoydbBundlePublicEnvelope: typeof readPodCover;
396
394
  /**
397
395
  * Read a full `.noydb` bundle: validate magic + header, verify
398
396
  * integrity hash over the body bytes, decompress, and return the
@@ -14,8 +14,9 @@
14
14
  export { writePod, readPod, readPodHeader, readPodCover, writeNoydbBundle, readNoydbBundle, readNoydbBundleHeader, resetBrotliSupportCache, } from './bundle.js';
15
15
  export type { Cover } from '../with-party/directory/cover/types.js';
16
16
  export type { WritePodOptions, WriteNoydbBundleOptions, ReadNoydbBundleOptions, NoydbBundleReadResult, } from './bundle.js';
17
- export { NOYDB_BUNDLE_MAGIC, NOYDB_BUNDLE_PREFIX_BYTES, NOYDB_BUNDLE_FORMAT_VERSION, FLAG_COMPRESSED, FLAG_HAS_INTEGRITY_HASH, COMPRESSION_NONE, COMPRESSION_GZIP, COMPRESSION_BROTLI, validateBundleHeader, encodeBundleHeader, } from './format.js';
17
+ export { NOYDB_BUNDLE_MAGIC, NOYDB_BUNDLE_PREFIX_BYTES, NOYDB_BUNDLE_FORMAT_VERSION, FLAG_COMPRESSED, FLAG_HAS_INTEGRITY_HASH, COMPRESSION_NONE, COMPRESSION_GZIP, COMPRESSION_BROTLI, validateBundleHeader, encodeBundleHeader, hasNoydbBundleMagic, } from './format.js';
18
18
  export type { CompressionAlgo, NoydbPodHeader, NoydbBundleHeader, } from './format.js';
19
19
  export { generateULID, isULID } from './ulid.js';
20
20
  export { wrapPodStore, createPodStore, wrapBundleStore, createBundleStore } from './pod-store.js';
21
21
  export type { WrappedPodNoydbStore, WrapPodStoreOptions, WrappedBundleNoydbStore, WrapBundleStoreOptions, } from './pod-store.js';
22
+ export { BundleIntegrityError, BundleSealMismatchError, PodVersionConflictError, BundleVersionConflictError, BackupLedgerError, BackupCorruptedError, } from '../kernel/errors.js';
@@ -105,24 +105,41 @@ export interface BlobEvictionEntry {
105
105
  readonly recordId: string;
106
106
  readonly slotName: string;
107
107
  readonly blobHash: string;
108
- readonly reason: 'ttl' | 'predicate' | 'both';
108
+ /** `'budget'` — evicted by the #808 cache-budget LRU pass, not a policy. */
109
+ readonly reason: 'ttl' | 'predicate' | 'both' | 'budget';
109
110
  readonly evictedAt: string;
110
111
  readonly actor: string;
111
112
  }
112
113
  export interface CompactionResult {
113
- /** Number of blob slots evicted across all collections. */
114
+ /** Number of blob slots evicted by the policy pass across all collections. */
114
115
  readonly evicted: number;
115
116
  /** Number of records touched (iterated + policy checked). */
116
117
  readonly records: number;
117
118
  /** Number of collections with `blobFields` configured. */
118
119
  readonly collections: number;
119
- /** Number of audit entries written. Equal to `evicted`. */
120
+ /**
121
+ * Number of audit entries written — one per policy eviction plus one per
122
+ * budget SLOT eviction (dropping a device-local cache copy writes none).
123
+ */
120
124
  readonly auditEntries: number;
121
125
  /**
122
126
  * Number of slots that would have evicted (TTL/predicate triggered)
123
127
  * but were retained by a `legalHold` or `retainUntil` floor.
124
128
  */
125
129
  readonly held: number;
130
+ /**
131
+ * #808: number of slots whose due policy eviction was skipped because they
132
+ * are pinned for offline on THIS device (pin state is device-local).
133
+ */
134
+ readonly pinned: number;
135
+ /**
136
+ * #808: number of evictions performed by the `cacheBudget` LRU pass —
137
+ * internal slots evicted through the standard eviction writer plus
138
+ * device-local external cache copies dropped. 0 when no budget was given.
139
+ */
140
+ readonly budgetEvicted: number;
141
+ /** #808: plaintext bytes freed by the `cacheBudget` LRU pass. */
142
+ readonly budgetBytesFreed: number;
126
143
  /** Per-collection breakdown for diagnostics. */
127
144
  readonly byCollection: Record<string, {
128
145
  records: number;
@@ -143,6 +160,22 @@ export interface CompactRunOptions {
143
160
  * what would happen.
144
161
  */
145
162
  readonly dryRun?: boolean;
163
+ /**
164
+ * #808 mobile cache budget: cap the locally-cached UNPINNED blob bytes.
165
+ * After the policy pass, a dedicated LRU pass walks every collection's
166
+ * slots (pinned slots and `legalHold`/`retainUntil`-held slots are exempt
167
+ * and uncounted) and evicts oldest-access-first — internal slots through
168
+ * the standard eviction writer (`deleteSlot` + a `'budget'` audit entry),
169
+ * external slots by dropping their device-local encrypted cache copy only
170
+ * (the object-store copy is authoritative and untouched) — until the
171
+ * remaining unpinned bytes fit `maxBytes`. Internal slots count their
172
+ * uncompressed `size`; external slots count `cachedBytes` (0 = nothing
173
+ * local, nothing to evict). LRU order comes from the device-local
174
+ * `lastAccessAt` stamp, falling back to `uploadedAt`.
175
+ */
176
+ readonly cacheBudget?: {
177
+ readonly maxBytes: number;
178
+ };
146
179
  }
147
180
  export interface CompactionContext {
148
181
  readonly adapter: NoydbStore;
@@ -166,5 +199,12 @@ export interface CompactionContext {
166
199
  readonly listSlots: (collection: string, id: string) => Promise<SlotInfo[]>;
167
200
  /** Delete a slot and decrement its blob's refCount. */
168
201
  readonly deleteSlot: (collection: string, id: string, slotName: string) => Promise<void>;
202
+ /**
203
+ * #808: drop a slot's DEVICE-LOCAL cached copy (the encrypted external
204
+ * side-cache) without touching the slot or the object store. Returns the
205
+ * plaintext bytes freed. Optional — absent (or a 0 return) means external
206
+ * cache entries simply cannot be budget-evicted through this context.
207
+ */
208
+ readonly dropLocalCache?: (collection: string, id: string, slotName: string) => Promise<number>;
169
209
  }
170
210
  export declare function runCompaction(ctx: CompactionContext, options?: CompactRunOptions): Promise<CompactionResult>;
@@ -0,0 +1,112 @@
1
+ /**
2
+ * #808 — device-local blob pin registry + external side-cache + KPI counters.
3
+ *
4
+ * Pinning marks a blob slot "keep this available offline" **for this device
5
+ * only**. Pin state is intentionally NEVER written to the vault's
6
+ * `NoydbStore` — the vault store is the synced/shared substrate, and each
7
+ * device pins for itself. Instead, `withBlobs()` owns one {@link BlobPinCache}
8
+ * per strategy instance and threads it into every `BlobSet` it opens; the
9
+ * registry rows live in a pluggable {@link BlobPinStore}.
10
+ *
11
+ * The default backend is in-memory ({@link memoryBlobPinStore}) — the hub has
12
+ * NO device-persistence idiom of its own (it never touches IndexedDB or any
13
+ * Node fs API; persistence backends are the `to-*` package family), so a
14
+ * durable registry is supplied by the consumer:
15
+ * `withBlobs({ pinStore: myIdbBackedStore })`. The interface is four async
16
+ * methods, deliberately trivial to implement over IndexedDB / SQLite / a file.
17
+ *
18
+ * ## What a registry row holds
19
+ *
20
+ * One row per `{vault, collection, record, slot}` ({@link blobPinKey}):
21
+ * - the pin flag + timestamps (LRU input for the cache-budget pass), and
22
+ * - for `external: true` slots, the **local encrypted copy** of the object's
23
+ * bytes ({@link BlobPinEntry.cipher}). The object-store copy of an external
24
+ * blob lives OUTSIDE the zero-knowledge envelope by design; the local copy
25
+ * does NOT — it is AES-256-GCM-encrypted under the vault's `_blob` DEK
26
+ * through the same enclave path that encrypts blob chunks
27
+ * (`encryptBytesWithAAD`, AAD-bound to the row's pin key), so a stolen
28
+ * device store leaks nothing the vault store wouldn't.
29
+ *
30
+ * Internal (chunked) blobs never store bytes here — their ciphertext already
31
+ * lives in `_blob_chunks`; the registry only carries their pin flag and
32
+ * access times.
33
+ *
34
+ * @module
35
+ */
36
+ /** One device-local registry row — see the module doc for the field posture. */
37
+ export interface BlobPinEntry {
38
+ /** Slot is pinned for offline on THIS device. */
39
+ readonly pinned: boolean;
40
+ /** ISO timestamp of the pin (absent when not pinned). */
41
+ readonly pinnedAt?: string;
42
+ /** ISO timestamp of the last local read — LRU input for the budget pass. */
43
+ readonly lastAccessAt?: string;
44
+ /** Plaintext byte length of the cached external copy (external slots only). */
45
+ readonly cachedBytes?: number;
46
+ /**
47
+ * Encrypted local copy of an external slot's bytes: base64 IV + base64
48
+ * AES-256-GCM ciphertext under the vault's `_blob` DEK, AAD-bound to the
49
+ * row's {@link blobPinKey}. On an UNENCRYPTED vault (`encrypt: false`) the
50
+ * fallback mirrors the envelope convention: `iv === ''`, `data` = base64
51
+ * plaintext.
52
+ */
53
+ readonly cipher?: {
54
+ readonly iv: string;
55
+ readonly data: string;
56
+ };
57
+ }
58
+ /**
59
+ * Pluggable device-local backend for the pin registry (#808). Implementations
60
+ * MUST be device-local (never synced) — an IndexedDB- or file-backed store is
61
+ * the expected production shape; {@link memoryBlobPinStore} is the default.
62
+ */
63
+ export interface BlobPinStore {
64
+ get(key: string): Promise<BlobPinEntry | null>;
65
+ set(key: string, entry: BlobPinEntry): Promise<void>;
66
+ delete(key: string): Promise<void>;
67
+ /** All rows whose key starts with `prefix` (`''` = every row). */
68
+ entries(prefix: string): Promise<Array<{
69
+ key: string;
70
+ entry: BlobPinEntry;
71
+ }>>;
72
+ }
73
+ /**
74
+ * In-memory {@link BlobPinStore} — the default. Pin state then lasts for the
75
+ * strategy instance's lifetime (one app session); pass a durable store to
76
+ * `withBlobs({ pinStore })` to keep pins across restarts.
77
+ */
78
+ export declare function memoryBlobPinStore(): BlobPinStore;
79
+ /**
80
+ * Device-local blob-cache KPI counters (#808) — read via
81
+ * `withBlobs().cacheStats()`. "Local" reads (internal chunks, cached external
82
+ * copies) count as hits; network fetches from the object store count as
83
+ * misses and add to `bytesDownloaded` (the 4G-budget number).
84
+ */
85
+ export interface BlobCacheStats {
86
+ readonly hits: number;
87
+ readonly misses: number;
88
+ readonly bytesDownloaded: number;
89
+ }
90
+ /**
91
+ * The per-strategy bundle `withBlobs()` threads into every `BlobSet`: the
92
+ * registry backend plus the shared mutable KPI counters.
93
+ *
94
+ * @internal
95
+ */
96
+ export interface BlobPinCache {
97
+ readonly store: BlobPinStore;
98
+ readonly stats: {
99
+ hits: number;
100
+ misses: number;
101
+ bytesDownloaded: number;
102
+ };
103
+ }
104
+ /** @internal */
105
+ export declare function createBlobPinCache(store?: BlobPinStore): BlobPinCache;
106
+ /**
107
+ * Registry key for one slot's row: `{vault}::{collection}::{record}::{slot}`
108
+ * (the blobs' established `::` separator — record ids and slot names are
109
+ * already `::`-refused at the write surface, see `assertKeyPartSafe`).
110
+ * Omitting `slotName` yields the record's row PREFIX (for per-record scans).
111
+ */
112
+ export declare function blobPinKey(vault: string, collection: string, recordId: string, slotName?: string): string;