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

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 (605) hide show
  1. package/README.md +3 -4
  2. package/dist/api-ZDKTWNBB.js +20 -0
  3. package/dist/attestation/index.js +18 -18
  4. package/dist/{backup-LU2DTZTI.js → backup-2UX7PRM5.js} +13 -13
  5. package/dist/blobs/index.js +30 -15
  6. package/dist/blobs/index.js.map +1 -1
  7. package/dist/broker/index.js +12 -12
  8. package/dist/broker/index.js.map +1 -1
  9. package/dist/cargo/index.js +53 -43
  10. package/dist/{chunk-YTGDPCPW.js → chunk-2J6UEN2V.js} +42 -18
  11. package/dist/chunk-2J6UEN2V.js.map +1 -0
  12. package/dist/{chunk-IY23KFNZ.js → chunk-35NMVJ7I.js} +3 -3
  13. package/dist/{chunk-S3BFKGET.js → chunk-3HUYRN24.js} +4 -4
  14. package/dist/chunk-3HUYRN24.js.map +1 -0
  15. package/dist/{walk-XS3PKM6I.js → chunk-3V3XR4S4.js} +4 -13
  16. package/dist/{walk-XS3PKM6I.js.map → chunk-3V3XR4S4.js.map} +1 -1
  17. package/dist/{chunk-RTEK4C4I.js → chunk-4JQK3L4V.js} +2 -2
  18. package/dist/{chunk-3ELCWU56.js → chunk-4ZKNC6A6.js} +2 -2
  19. package/dist/{chunk-VQNJ7UZL.js → chunk-55LKVALY.js} +106 -10
  20. package/dist/chunk-55LKVALY.js.map +1 -0
  21. package/dist/{chunk-VAIS3SOM.js → chunk-55LX6FSX.js} +2 -2
  22. package/dist/chunk-5D2ALSM5.js +19 -0
  23. package/dist/chunk-5D2ALSM5.js.map +1 -0
  24. package/dist/{chunk-6HPG2YNX.js → chunk-5DRROK5W.js} +2 -2
  25. package/dist/{chunk-S6Q37VGE.js → chunk-5GQEU4DN.js} +2 -2
  26. package/dist/chunk-5JOFWL4G.js +25 -0
  27. package/dist/chunk-5JOFWL4G.js.map +1 -0
  28. package/dist/{chunk-TOPYT5U5.js → chunk-63FE525P.js} +6 -6
  29. package/dist/chunk-6LJY7X5A.js +18 -0
  30. package/dist/chunk-6LJY7X5A.js.map +1 -0
  31. package/dist/{chunk-JVBO4SZL.js → chunk-6UBZ6I5Z.js} +2 -2
  32. package/dist/{chunk-BOKIKJJB.js → chunk-6ZNSB3H6.js} +5 -17
  33. package/dist/chunk-6ZNSB3H6.js.map +1 -0
  34. package/dist/{chunk-BMQWTQZ4.js → chunk-7YVBQJ7K.js} +13 -355
  35. package/dist/chunk-7YVBQJ7K.js.map +1 -0
  36. package/dist/{chunk-UFEVO57O.js → chunk-ABS7FMMD.js} +6 -6
  37. package/dist/chunk-AFHQATY4.js +47 -0
  38. package/dist/chunk-AFHQATY4.js.map +1 -0
  39. package/dist/{chunk-HOONYZY2.js → chunk-AKKRXT23.js} +7 -7
  40. package/dist/chunk-AKKRXT23.js.map +1 -0
  41. package/dist/{chunk-DDHM2TLX.js → chunk-AT2JJEKJ.js} +4 -4
  42. package/dist/chunk-AT2JJEKJ.js.map +1 -0
  43. package/dist/{chunk-M75ZZHSR.js → chunk-BLBAQRBM.js} +2 -2
  44. package/dist/{chunk-3SV2EPMN.js → chunk-BLCWSJLN.js} +88 -81
  45. package/dist/chunk-BLCWSJLN.js.map +1 -0
  46. package/dist/chunk-CADUYBQD.js +151 -0
  47. package/dist/chunk-CADUYBQD.js.map +1 -0
  48. package/dist/{chunk-G6EQYAL6.js → chunk-CI32CAFS.js} +5 -5
  49. package/dist/{chunk-FH52K7EG.js → chunk-CUZLNGD5.js} +2 -6
  50. package/dist/{chunk-FH52K7EG.js.map → chunk-CUZLNGD5.js.map} +1 -1
  51. package/dist/{chunk-2P7EGNKF.js → chunk-CXQW2NWO.js} +145 -3
  52. package/dist/chunk-CXQW2NWO.js.map +1 -0
  53. package/dist/{chunk-6B4DYGWO.js → chunk-DABACXEF.js} +3 -3
  54. package/dist/{chunk-F6T6L2UK.js → chunk-DMH3VZU5.js} +4 -4
  55. package/dist/chunk-DSDXAKIP.js +50 -0
  56. package/dist/chunk-DSDXAKIP.js.map +1 -0
  57. package/dist/{chunk-MQ6WOPSY.js → chunk-DZ2JXHWK.js} +5 -5
  58. package/dist/chunk-DZFQVICS.js +23 -0
  59. package/dist/chunk-DZFQVICS.js.map +1 -0
  60. package/dist/chunk-E23UGFVC.js +63 -0
  61. package/dist/chunk-E23UGFVC.js.map +1 -0
  62. package/dist/{chunk-UBNCR3YK.js → chunk-EE7UHLKH.js} +4 -4
  63. package/dist/chunk-EIPVYUEP.js +654 -0
  64. package/dist/chunk-EIPVYUEP.js.map +1 -0
  65. package/dist/{chunk-EGCRBCNA.js → chunk-EKRSCRNM.js} +3 -3
  66. package/dist/{chunk-YMUGBZN2.js → chunk-FQ5CHJR7.js} +1 -1
  67. package/dist/chunk-FQ5CHJR7.js.map +1 -0
  68. package/dist/{chunk-LB6OH6K2.js → chunk-FQZ6XTQ7.js} +17 -20
  69. package/dist/chunk-FQZ6XTQ7.js.map +1 -0
  70. package/dist/{chunk-IRQY7IR5.js → chunk-FRMPM7WG.js} +4 -4
  71. package/dist/{chunk-DVUZMT2W.js → chunk-G2JUIDFA.js} +9 -9
  72. package/dist/{chunk-DVUZMT2W.js.map → chunk-G2JUIDFA.js.map} +1 -1
  73. package/dist/{chunk-RND5ZPNP.js → chunk-G6WWZNJP.js} +13 -13
  74. package/dist/chunk-G6WWZNJP.js.map +1 -0
  75. package/dist/chunk-GJW4HX2O.js +1 -0
  76. package/dist/{chunk-T6GU5PPZ.js → chunk-GU3IP74F.js} +6 -6
  77. package/dist/{chunk-5OI6BR4H.js → chunk-GWWOGNBK.js} +308 -18
  78. package/dist/chunk-GWWOGNBK.js.map +1 -0
  79. package/dist/{chunk-UNCOC7QH.js → chunk-H2GPHUZD.js} +12 -13
  80. package/dist/chunk-H2GPHUZD.js.map +1 -0
  81. package/dist/{chunk-7CI6CP7Z.js → chunk-HMU5P6RL.js} +5 -5
  82. package/dist/chunk-HMU5P6RL.js.map +1 -0
  83. package/dist/{chunk-YJV2UZ7H.js → chunk-I5GEJX3R.js} +5 -5
  84. package/dist/chunk-I5GEJX3R.js.map +1 -0
  85. package/dist/{chunk-GWKAVKHI.js → chunk-IG6KUWBX.js} +2 -2
  86. package/dist/chunk-IG6KUWBX.js.map +1 -0
  87. package/dist/{chunk-MTQPRQHB.js → chunk-IPUG56GJ.js} +15 -5
  88. package/dist/{chunk-MTQPRQHB.js.map → chunk-IPUG56GJ.js.map} +1 -1
  89. package/dist/{chunk-SMIRGMS7.js → chunk-IXNCZTWA.js} +2 -2
  90. package/dist/{chunk-RM2XV574.js → chunk-IXTSNGYY.js} +3 -3
  91. package/dist/{chunk-KUPKLSX5.js → chunk-IYZISPGD.js} +7 -5
  92. package/dist/chunk-IYZISPGD.js.map +1 -0
  93. package/dist/{chunk-SMGEYW6G.js → chunk-JDOMW53O.js} +26 -16
  94. package/dist/chunk-JDOMW53O.js.map +1 -0
  95. package/dist/{chunk-PK6QCH2C.js → chunk-JJZGIE4U.js} +6 -5
  96. package/dist/{chunk-DRWBEDYO.js → chunk-JYJFGD2H.js} +2 -2
  97. package/dist/{chunk-TAGR72IR.js → chunk-KRCBZYTZ.js} +26 -177
  98. package/dist/chunk-KRCBZYTZ.js.map +1 -0
  99. package/dist/{chunk-HPUWOVR7.js → chunk-L2DGWBCT.js} +14 -14
  100. package/dist/chunk-L2DGWBCT.js.map +1 -0
  101. package/dist/{chunk-VEALDPHW.js → chunk-L3YYLT4E.js} +15 -2
  102. package/dist/chunk-L3YYLT4E.js.map +1 -0
  103. package/dist/{chunk-A7JJLVGH.js → chunk-LNPUSMZL.js} +29 -31
  104. package/dist/chunk-LNPUSMZL.js.map +1 -0
  105. package/dist/{chunk-KUIB4B5Q.js → chunk-LNZKOUJR.js} +2 -2
  106. package/dist/{chunk-IM3QVF53.js → chunk-MBKVNOJS.js} +6 -6
  107. package/dist/chunk-MCHBCNCE.js +367 -0
  108. package/dist/chunk-MCHBCNCE.js.map +1 -0
  109. package/dist/{chunk-VCBHAE4R.js → chunk-MHMLXJ3I.js} +2 -2
  110. package/dist/chunk-MHMLXJ3I.js.map +1 -0
  111. package/dist/{chunk-WNGGJWF7.js → chunk-MSMJJB4J.js} +2 -2
  112. package/dist/chunk-MSMJJB4J.js.map +1 -0
  113. package/dist/{chunk-T36RFODW.js → chunk-MXUT7FTE.js} +2 -2
  114. package/dist/chunk-MXUT7FTE.js.map +1 -0
  115. package/dist/{chunk-BGK233EA.js → chunk-N4BBNYIB.js} +11 -9
  116. package/dist/chunk-N4BBNYIB.js.map +1 -0
  117. package/dist/{chunk-3PF6CRDT.js → chunk-NFIBXF4V.js} +1082 -1583
  118. package/dist/chunk-NFIBXF4V.js.map +1 -0
  119. package/dist/{chunk-LOF2W3JU.js → chunk-NFNJLRY7.js} +368 -52
  120. package/dist/chunk-NFNJLRY7.js.map +1 -0
  121. package/dist/{chunk-N6WF5PKC.js → chunk-NFZGZ4AK.js} +2 -2
  122. package/dist/{chunk-JRBNCUNT.js → chunk-NGSJZFGL.js} +21 -4
  123. package/dist/chunk-NGSJZFGL.js.map +1 -0
  124. package/dist/chunk-NJ4DYYO5.js +81 -0
  125. package/dist/chunk-NJ4DYYO5.js.map +1 -0
  126. package/dist/{chunk-2IALOXZS.js → chunk-NM5UYF6Q.js} +2 -2
  127. package/dist/chunk-NM5UYF6Q.js.map +1 -0
  128. package/dist/{chunk-JBBSYJHP.js → chunk-NYEFP7DY.js} +4 -4
  129. package/dist/chunk-NYEFP7DY.js.map +1 -0
  130. package/dist/{chunk-CCOP5XDW.js → chunk-NZ24MX4J.js} +8 -46
  131. package/dist/chunk-NZ24MX4J.js.map +1 -0
  132. package/dist/{chunk-KWVJAOIN.js → chunk-OLEPKFTW.js} +4 -4
  133. package/dist/chunk-OLEPKFTW.js.map +1 -0
  134. package/dist/{chunk-OF75ACKS.js → chunk-PEATRIYJ.js} +9 -9
  135. package/dist/chunk-PEOZ34EM.js +13 -0
  136. package/dist/chunk-PEOZ34EM.js.map +1 -0
  137. package/dist/{chunk-UC2ETWF3.js → chunk-PTHKZWEH.js} +2 -14
  138. package/dist/{chunk-UC2ETWF3.js.map → chunk-PTHKZWEH.js.map} +1 -1
  139. package/dist/chunk-PVEWA2DU.js +23 -0
  140. package/dist/chunk-PVEWA2DU.js.map +1 -0
  141. package/dist/{chunk-LSASLXGC.js → chunk-QBAC3GXA.js} +1 -1
  142. package/dist/chunk-QBAC3GXA.js.map +1 -0
  143. package/dist/{chunk-RDXW3OBQ.js → chunk-QD46HPZG.js} +2 -2
  144. package/dist/chunk-QD46HPZG.js.map +1 -0
  145. package/dist/{chunk-N55W7KUL.js → chunk-QDIH2744.js} +2 -2
  146. package/dist/{chunk-6HY2X62D.js → chunk-QJNCB5SK.js} +2 -2
  147. package/dist/{chunk-4BRCIYFG.js → chunk-QX76XVQH.js} +6 -6
  148. package/dist/chunk-QX76XVQH.js.map +1 -0
  149. package/dist/{chunk-W2OG6JOL.js → chunk-QZWTRENR.js} +24 -7
  150. package/dist/chunk-QZWTRENR.js.map +1 -0
  151. package/dist/{chunk-6NQMXTYC.js → chunk-RO5NM6UI.js} +2 -2
  152. package/dist/chunk-RO5NM6UI.js.map +1 -0
  153. package/dist/chunk-SGDPRCC4.js +1075 -0
  154. package/dist/chunk-SGDPRCC4.js.map +1 -0
  155. package/dist/{chunk-2PCAVW2I.js → chunk-SHEEBRZ4.js} +2 -2
  156. package/dist/chunk-SMY5X46Z.js +14 -0
  157. package/dist/chunk-SMY5X46Z.js.map +1 -0
  158. package/dist/{chunk-ISMV2QVG.js → chunk-TG634KCO.js} +11 -2
  159. package/dist/chunk-TG634KCO.js.map +1 -0
  160. package/dist/{chunk-J6Q7UVQE.js → chunk-TUXQSFHZ.js} +4 -16
  161. package/dist/{chunk-J6Q7UVQE.js.map → chunk-TUXQSFHZ.js.map} +1 -1
  162. package/dist/{chunk-GULTLPFB.js → chunk-UADPR6F4.js} +3 -3
  163. package/dist/{chunk-GULTLPFB.js.map → chunk-UADPR6F4.js.map} +1 -1
  164. package/dist/{chunk-ZEQWCBCM.js → chunk-UDHBXYGG.js} +27 -5
  165. package/dist/chunk-UDHBXYGG.js.map +1 -0
  166. package/dist/{chunk-RA5VTXXG.js → chunk-V6UQZA2H.js} +2 -2
  167. package/dist/chunk-VG2ZSFYD.js +32 -0
  168. package/dist/chunk-VG2ZSFYD.js.map +1 -0
  169. package/dist/chunk-VKQCVU2Z.js +21 -0
  170. package/dist/chunk-VKQCVU2Z.js.map +1 -0
  171. package/dist/{chunk-QDPZWTN2.js → chunk-W3G5REIU.js} +2 -2
  172. package/dist/{chunk-WEYZTLXN.js → chunk-W3L64Y3J.js} +2 -2
  173. package/dist/{chunk-ONTBCHCP.js → chunk-W66AM5IB.js} +2 -2
  174. package/dist/chunk-W66AM5IB.js.map +1 -0
  175. package/dist/{chunk-A5BDDEXK.js → chunk-WBKZUO5V.js} +26 -43
  176. package/dist/chunk-WBKZUO5V.js.map +1 -0
  177. package/dist/{chunk-CBSY2N76.js → chunk-WLXMTYGO.js} +2 -2
  178. package/dist/{chunk-3U3FBR7O.js → chunk-X3F5YJG2.js} +2 -2
  179. package/dist/{chunk-GQNGCEP5.js → chunk-X45JYIAY.js} +3 -3
  180. package/dist/chunk-X45JYIAY.js.map +1 -0
  181. package/dist/{chunk-6XE5TMPR.js → chunk-X4MVWPHV.js} +3 -3
  182. package/dist/chunk-X4MVWPHV.js.map +1 -0
  183. package/dist/chunk-XZHEOSQ2.js +16 -0
  184. package/dist/chunk-XZHEOSQ2.js.map +1 -0
  185. package/dist/chunk-Y2NBBT6K.js +18 -0
  186. package/dist/chunk-Y2NBBT6K.js.map +1 -0
  187. package/dist/{chunk-DDATL6PU.js → chunk-Y2NJBNX3.js} +8 -8
  188. package/dist/{chunk-DDATL6PU.js.map → chunk-Y2NJBNX3.js.map} +1 -1
  189. package/dist/chunk-YMUFFJCO.js +23 -0
  190. package/dist/chunk-YMUFFJCO.js.map +1 -0
  191. package/dist/{chunk-O7WJ47EF.js → chunk-YWWQM7KP.js} +5 -14
  192. package/dist/chunk-YWWQM7KP.js.map +1 -0
  193. package/dist/{chunk-7O3AYBC7.js → chunk-YZJSJOUI.js} +235 -65
  194. package/dist/chunk-YZJSJOUI.js.map +1 -0
  195. package/dist/{chunk-5WZXVULX.js → chunk-ZTLOXFPB.js} +2 -2
  196. package/dist/chunk-ZTLOXFPB.js.map +1 -0
  197. package/dist/classified/index.js +5 -5
  198. package/dist/{classified-marker-WQVIJAW2.js → classified-marker-7PKJBFCG.js} +3 -3
  199. package/dist/collection-facade-6I5K5IOD.js +45 -0
  200. package/dist/{computed-DSMPXG2Y.js → computed-AB45PS4V.js} +3 -3
  201. package/dist/consent/index.js +13 -9
  202. package/dist/consent/index.js.map +1 -1
  203. package/dist/cover/index.js +37 -0
  204. package/dist/crdt/index.js +4 -0
  205. package/dist/crdt/index.js.map +1 -1
  206. package/dist/custody/index.js +26 -0
  207. package/dist/{dead-filter-2A7IAJ3D.js → dead-filter-FL3WIUZS.js} +2 -2
  208. package/dist/{chunk-GYYCX5K6.js → delegation-QXZ4MPPH.js} +12 -6
  209. package/dist/{chunk-GYYCX5K6.js.map → delegation-QXZ4MPPH.js.map} +1 -1
  210. package/dist/derivations/index.js +12 -12
  211. package/dist/derive-VGS7FKE3.js +22 -0
  212. package/dist/directory/index.js +46 -0
  213. package/dist/dispatch-EGGC7UD7.js +72 -0
  214. package/dist/dispatch-EGGC7UD7.js.map +1 -0
  215. package/dist/dispatch-GDSTUTVP.js +194 -0
  216. package/dist/dispatch-GDSTUTVP.js.map +1 -0
  217. package/dist/{enclave-7MW6ZGXW.js → enclave-SPEEDYZ4.js} +11 -11
  218. package/dist/executor-IEBLTBCW.js +9 -0
  219. package/dist/executor-OTF556PL.js +28 -0
  220. package/dist/executor-RM7XWQDU.js +9 -0
  221. package/dist/export-accessible-P42BQ4PB.js +23 -0
  222. package/dist/extract-partition-TCYXRWBN.js +38 -0
  223. package/dist/{fanout-sidecar-WDYQ77VB.js → fanout-sidecar-SSMRSC2L.js} +9 -9
  224. package/dist/find-OZMTRIK3.js +11 -0
  225. package/dist/forget/index.js +11 -11
  226. package/dist/forget/index.js.map +1 -1
  227. package/dist/guards/index.js +6 -6
  228. package/dist/history/index.js +16 -12
  229. package/dist/history/index.js.map +1 -1
  230. package/dist/i18n/index.js +16 -14
  231. package/dist/i18n/index.js.map +1 -1
  232. package/dist/index.d.ts +42 -42
  233. package/dist/index.js +330 -2106
  234. package/dist/index.js.map +1 -1
  235. package/dist/indexing/index.js +4 -2
  236. package/dist/indexing/index.js.map +1 -1
  237. package/dist/introspection/index.js +28 -0
  238. package/dist/issue-FCKN5O6C.js +19 -0
  239. package/dist/kernel/best-effort-revert.d.ts +9 -1
  240. package/dist/kernel/collection-config.d.ts +12 -70
  241. package/dist/kernel/collection.d.ts +11 -23
  242. package/dist/kernel/enclave/crypto.d.ts +8 -8
  243. package/dist/kernel/enclave/index.d.ts +3 -3
  244. package/dist/kernel/errors.d.ts +41 -22
  245. package/dist/kernel/lazy.d.ts +30 -0
  246. package/dist/kernel/noydb.d.ts +81 -124
  247. package/dist/kernel/query/builder.d.ts +10 -10
  248. package/dist/kernel/query/index.d.ts +0 -6
  249. package/dist/kernel/query/scan-builder.d.ts +4 -4
  250. package/dist/kernel/sync-policy.d.ts +76 -4
  251. package/dist/kernel/types.d.ts +146 -86
  252. package/dist/kernel/validation.d.ts +33 -33
  253. package/dist/kernel/vault.d.ts +41 -229
  254. package/dist/kernel/via/dispatch.d.ts +7 -0
  255. package/dist/{ledger-33BC4TR7.js → ledger-6XBEVWYP.js} +11 -11
  256. package/dist/liberate-CYUOS4NC.js +24 -0
  257. package/dist/{link-set-QK22TDEX.js → link-set-NK6L2A5S.js} +11 -11
  258. package/dist/materialized-views/index.js +22 -19
  259. package/dist/money/index.js +31 -0
  260. package/dist/noydb-FZZIMLCI.js +81 -0
  261. package/dist/overlay-views/index.js +4 -4
  262. package/dist/periods/index.js +15 -13
  263. package/dist/pod/index.js +26 -12
  264. package/dist/{policy-NAHB2TUT.js → policy/index.js} +6 -6
  265. package/dist/port/with/archive-strategy.d.ts +31 -0
  266. package/dist/port/with/blob-strategy.d.ts +15 -5
  267. package/dist/port/with/collection-options.d.ts +171 -0
  268. package/dist/port/with/collection-registries.d.ts +62 -0
  269. package/dist/port/with/strategies.d.ts +134 -0
  270. package/dist/port/with/team-strategy.d.ts +3 -2
  271. package/dist/portability/index.js +8 -8
  272. package/dist/{post-register-JVTMJ6OW.js → post-register-VFIYISUK.js} +6 -6
  273. package/dist/query/index.js +6 -46
  274. package/dist/{aggregate → reduce}/index.js +24 -17
  275. package/dist/reduce/index.js.map +1 -0
  276. package/dist/register-UKU2J6MN.js +25 -0
  277. package/dist/registry-2VCWVHZS.js +19 -0
  278. package/dist/registry-7Y5WF7GS.js +9 -0
  279. package/dist/{registry-VW6P6A3J.js → registry-BWD2ED52.js} +2 -2
  280. package/dist/registry-DTWRJLSF.js +18 -0
  281. package/dist/request-withdrawal-JYDZ5XY2.js +31 -0
  282. package/dist/{reveal-LGBOM2BO.js → reveal-CL2BCW6A.js} +6 -6
  283. package/dist/revoke-2TSAD2T4.js +24 -0
  284. package/dist/satellites/index.js +1 -1
  285. package/dist/schema-update/index.js +26 -0
  286. package/dist/sealed-record/index.js +12 -12
  287. package/dist/search/index.js +36 -0
  288. package/dist/{seed-PWK45HDF.js → seed-NUVJEL7T.js} +12 -12
  289. package/dist/seed-NUVJEL7T.js.map +1 -0
  290. package/dist/sequence/index.js +30 -0
  291. package/dist/session/index.js +13 -9
  292. package/dist/session/index.js.map +1 -1
  293. package/dist/shadow/index.js +6 -2
  294. package/dist/shadow/index.js.map +1 -1
  295. package/dist/signer-K7Z2EOMG.js +25 -0
  296. package/dist/snapshots/index.js +14 -10
  297. package/dist/snapshots/index.js.map +1 -1
  298. package/dist/{stale-FJED42DM.js → stale-A4J26OIC.js} +11 -10
  299. package/dist/storage-YVHZUISN.js +23 -0
  300. package/dist/store/index.js +22 -0
  301. package/dist/{store-coordination-provider-APODTV4W.js → store-coordination-provider-EWRZL7XF.js} +3 -3
  302. package/dist/sync/index.js +15 -12
  303. package/dist/sync/index.js.map +1 -1
  304. package/dist/team/index.js +33 -48
  305. package/dist/tiers/index.js +10 -10
  306. package/dist/to/index.js +1 -1
  307. package/dist/{tx → transactions}/index.js +7 -3
  308. package/dist/transactions/index.js.map +1 -0
  309. package/dist/util/index.js +1 -1
  310. package/dist/{verify-26Y5GNMK.js → verify-7XWHJWUN.js} +5 -5
  311. package/dist/via/blob/active.d.ts +23 -7
  312. package/dist/via/blob/binding.d.ts +1 -1
  313. package/dist/via/blob/index.d.ts +7 -1
  314. package/dist/via/i18n/core.d.ts +1 -1
  315. package/dist/via/i18n/index.d.ts +2 -0
  316. package/dist/via/money/money-reducer.d.ts +2 -2
  317. package/dist/walk-P5D6CF4V.js +21 -0
  318. package/dist/with-audit/consent/index.d.ts +2 -0
  319. package/dist/with-audit/forget/active.d.ts +3 -3
  320. package/dist/with-audit/forget/index.d.ts +6 -5
  321. package/dist/with-audit/forget/strategy.d.ts +3 -3
  322. package/dist/with-audit/guards/executor.d.ts +4 -4
  323. package/dist/with-audit/guards/immutable-guard.d.ts +3 -3
  324. package/dist/with-audit/guards/index.d.ts +1 -1
  325. package/dist/with-audit/guards/registry.d.ts +3 -3
  326. package/dist/with-audit/guards/transition-guard.d.ts +3 -3
  327. package/dist/with-audit/guards/types.d.ts +10 -10
  328. package/dist/with-audit/guards/with-guard.d.ts +2 -2
  329. package/dist/with-audit/periods/index.d.ts +2 -0
  330. package/dist/with-audit/periods/vault-facade.d.ts +6 -0
  331. package/dist/with-audit/portability/export-accessible.d.ts +4 -4
  332. package/dist/with-audit/portability/request-withdrawal.d.ts +3 -3
  333. package/dist/with-audit/portability/withdraw-accessible.d.ts +2 -2
  334. package/dist/with-audit/sealed-record/strategy.d.ts +1 -1
  335. package/dist/with-audit/tiers/index.d.ts +1 -0
  336. package/dist/with-cargo/adopt-partition.d.ts +7 -7
  337. package/dist/{legacy/kernel.d.ts → with-cargo/floor.d.ts} +4 -4
  338. package/dist/with-cargo/index.d.ts +9 -2
  339. package/dist/with-commit/crdt/index.d.ts +2 -0
  340. package/dist/with-commit/history/index.d.ts +2 -0
  341. package/dist/with-commit/history/time-machine.d.ts +2 -2
  342. package/dist/with-commit/numbering/descriptor.d.ts +16 -6
  343. package/dist/with-commit/tx/active.d.ts +5 -5
  344. package/dist/with-commit/tx/index.d.ts +2 -2
  345. package/dist/with-commit/tx/invariants.d.ts +1 -1
  346. package/dist/with-commit/tx/strategy.d.ts +3 -3
  347. package/dist/with-fork/shadow/index.d.ts +2 -0
  348. package/dist/with-fork/snapshots/active.d.ts +2 -2
  349. package/dist/with-fork/snapshots/index.d.ts +3 -1
  350. package/dist/with-fork/snapshots/noydb-facade.d.ts +3 -3
  351. package/dist/with-fork/snapshots/strategy.d.ts +2 -2
  352. package/dist/with-formula/derivations/dispatch.d.ts +98 -0
  353. package/dist/with-formula/derivations/executor.d.ts +2 -2
  354. package/dist/with-formula/derivations/index.d.ts +4 -1
  355. package/dist/with-formula/derivations/registry.d.ts +3 -3
  356. package/dist/with-formula/derivations/stale.d.ts +2 -2
  357. package/dist/with-formula/derivations/types.d.ts +3 -3
  358. package/dist/with-formula/derivations/with-derivation.d.ts +2 -2
  359. package/dist/with-formula/derivations/with-rollup.d.ts +15 -8
  360. package/dist/with-formula/materialized-views/dependency-analyzer.d.ts +3 -3
  361. package/dist/with-formula/materialized-views/dispatch.d.ts +75 -0
  362. package/dist/with-formula/materialized-views/index.d.ts +2 -1
  363. package/dist/with-formula/materialized-views/registry.d.ts +4 -4
  364. package/dist/with-formula/materialized-views/types.d.ts +11 -11
  365. package/dist/with-formula/materialized-views/with-materialized-view.d.ts +2 -2
  366. package/dist/with-formula/overlay-views/index.d.ts +1 -1
  367. package/dist/with-formula/overlay-views/registry.d.ts +4 -4
  368. package/dist/with-formula/overlay-views/types.d.ts +3 -3
  369. package/dist/with-formula/overlay-views/virtual-collection.d.ts +2 -2
  370. package/dist/with-formula/overlay-views/with-overlayed-view.d.ts +2 -2
  371. package/dist/with-lookup/indexing/active.d.ts +5 -5
  372. package/dist/with-lookup/indexing/index.d.ts +3 -1
  373. package/dist/with-lookup/indexing/strategy.d.ts +3 -3
  374. package/dist/with-lookup/{aggregate → reduce}/active.d.ts +8 -8
  375. package/dist/with-lookup/{aggregate → reduce}/groupby.d.ts +21 -21
  376. package/dist/with-lookup/reduce/index.d.ts +34 -0
  377. package/dist/with-lookup/{aggregate → reduce}/reducers.d.ts +11 -12
  378. package/dist/with-lookup/{aggregate/aggregation.d.ts → reduce/reduction.d.ts} +21 -21
  379. package/dist/with-lookup/{aggregate → reduce}/strategy.d.ts +15 -15
  380. package/dist/with-lookup/search/build-docs.d.ts +7 -2
  381. package/dist/with-lookup/search/index.d.ts +1 -1
  382. package/dist/with-party/broker/index.d.ts +1 -0
  383. package/dist/with-party/broker/seed.d.ts +1 -1
  384. package/dist/with-party/custody/liberate.d.ts +3 -3
  385. package/dist/with-party/directory/cover/index.d.ts +1 -5
  386. package/dist/with-party/directory/cover/schema.d.ts +0 -6
  387. package/dist/with-party/directory/cover/storage.d.ts +0 -8
  388. package/dist/with-party/directory/cover/types.d.ts +0 -21
  389. package/dist/with-party/directory/index.d.ts +2 -0
  390. package/dist/with-party/session/dev-unlock.d.ts +2 -2
  391. package/dist/with-party/session/index.d.ts +2 -0
  392. package/dist/with-party/session/session.d.ts +2 -2
  393. package/dist/with-party/team/deed.d.ts +8 -8
  394. package/dist/with-party/team/index.d.ts +4 -7
  395. package/dist/with-party/team/keyring.d.ts +83 -35
  396. package/dist/with-party/team/{managed-passphrase.d.ts → managed-secret.d.ts} +27 -27
  397. package/dist/with-party/team/noydb-facade.d.ts +43 -42
  398. package/dist/with-party/team/peer-recover.d.ts +13 -13
  399. package/dist/with-party/team/recovery.d.ts +5 -5
  400. package/dist/with-party/team/rotate-recover.d.ts +30 -30
  401. package/dist/with-pod/bundle.d.ts +30 -32
  402. package/dist/with-pod/format.d.ts +2 -2
  403. package/dist/with-pod/index.d.ts +2 -1
  404. package/dist/with-shape/blobs/blob-compaction.d.ts +43 -3
  405. package/dist/with-shape/blobs/blob-pinning.d.ts +112 -0
  406. package/dist/with-shape/blobs/blob-set.d.ts +86 -2
  407. package/dist/with-shape/introspection/index.d.ts +6 -0
  408. package/dist/with-shape/schema-update/index.d.ts +1 -0
  409. package/dist/with-store/index.d.ts +3 -2
  410. package/dist/with-store/route-store.d.ts +1 -1
  411. package/dist/{with-party/team/sync-active.d.ts → with-sync/active.d.ts} +1 -1
  412. package/dist/{with-party/team/sync-credentials.d.ts → with-sync/credentials.d.ts} +3 -3
  413. package/dist/{with-party/team/sync.d.ts → with-sync/engine.d.ts} +5 -5
  414. package/dist/{with-party/sync → with-sync}/index.d.ts +4 -2
  415. package/dist/{with-party/team/sync-period-scope.d.ts → with-sync/period-scope.d.ts} +2 -2
  416. package/dist/{with-party/team → with-sync}/presence.d.ts +2 -2
  417. package/dist/{with-party/team/sync-strategy.d.ts → with-sync/strategy.d.ts} +6 -6
  418. package/dist/{with-party/team/sync-transaction.d.ts → with-sync/transaction.d.ts} +3 -3
  419. package/dist/withdraw-accessible-A2PWF5MZ.js +28 -0
  420. package/package.json +45 -36
  421. package/dist/aggregate/index.js.map +0 -1
  422. package/dist/api-IQFZJSQO.js +0 -20
  423. package/dist/as/index.js +0 -30
  424. package/dist/at/index.js +0 -1
  425. package/dist/bundle/index.js +0 -105
  426. package/dist/by/index.js +0 -11
  427. package/dist/chunk-2IALOXZS.js.map +0 -1
  428. package/dist/chunk-2MUZ3LY6.js +0 -205
  429. package/dist/chunk-2MUZ3LY6.js.map +0 -1
  430. package/dist/chunk-2P7EGNKF.js.map +0 -1
  431. package/dist/chunk-3PF6CRDT.js.map +0 -1
  432. package/dist/chunk-3SV2EPMN.js.map +0 -1
  433. package/dist/chunk-4BRCIYFG.js.map +0 -1
  434. package/dist/chunk-5OI6BR4H.js.map +0 -1
  435. package/dist/chunk-5WZXVULX.js.map +0 -1
  436. package/dist/chunk-6NQMXTYC.js.map +0 -1
  437. package/dist/chunk-6XE5TMPR.js.map +0 -1
  438. package/dist/chunk-7CI6CP7Z.js.map +0 -1
  439. package/dist/chunk-7O3AYBC7.js.map +0 -1
  440. package/dist/chunk-A5BDDEXK.js.map +0 -1
  441. package/dist/chunk-A7JJLVGH.js.map +0 -1
  442. package/dist/chunk-BGK233EA.js.map +0 -1
  443. package/dist/chunk-BMQWTQZ4.js.map +0 -1
  444. package/dist/chunk-BOKIKJJB.js.map +0 -1
  445. package/dist/chunk-CCOP5XDW.js.map +0 -1
  446. package/dist/chunk-CHFZDSE4.js +0 -1
  447. package/dist/chunk-DDHM2TLX.js.map +0 -1
  448. package/dist/chunk-GQNGCEP5.js.map +0 -1
  449. package/dist/chunk-GVZQ4NAM.js +0 -14
  450. package/dist/chunk-GVZQ4NAM.js.map +0 -1
  451. package/dist/chunk-GWKAVKHI.js.map +0 -1
  452. package/dist/chunk-HOONYZY2.js.map +0 -1
  453. package/dist/chunk-HPUWOVR7.js.map +0 -1
  454. package/dist/chunk-ISMV2QVG.js.map +0 -1
  455. package/dist/chunk-JBBSYJHP.js.map +0 -1
  456. package/dist/chunk-JRBNCUNT.js.map +0 -1
  457. package/dist/chunk-JZWWLLVY.js +0 -99
  458. package/dist/chunk-JZWWLLVY.js.map +0 -1
  459. package/dist/chunk-KUPKLSX5.js.map +0 -1
  460. package/dist/chunk-KWVJAOIN.js.map +0 -1
  461. package/dist/chunk-LB6OH6K2.js.map +0 -1
  462. package/dist/chunk-LB7FD65R.js +0 -163
  463. package/dist/chunk-LB7FD65R.js.map +0 -1
  464. package/dist/chunk-LOF2W3JU.js.map +0 -1
  465. package/dist/chunk-LSASLXGC.js.map +0 -1
  466. package/dist/chunk-O7WJ47EF.js.map +0 -1
  467. package/dist/chunk-ONTBCHCP.js.map +0 -1
  468. package/dist/chunk-PT37L5DV.js +0 -255
  469. package/dist/chunk-PT37L5DV.js.map +0 -1
  470. package/dist/chunk-RDXW3OBQ.js.map +0 -1
  471. package/dist/chunk-RND5ZPNP.js.map +0 -1
  472. package/dist/chunk-S3BFKGET.js.map +0 -1
  473. package/dist/chunk-SMGEYW6G.js.map +0 -1
  474. package/dist/chunk-T36RFODW.js.map +0 -1
  475. package/dist/chunk-TAGR72IR.js.map +0 -1
  476. package/dist/chunk-UNCOC7QH.js.map +0 -1
  477. package/dist/chunk-VCBHAE4R.js.map +0 -1
  478. package/dist/chunk-VEALDPHW.js.map +0 -1
  479. package/dist/chunk-VQNJ7UZL.js.map +0 -1
  480. package/dist/chunk-W2OG6JOL.js.map +0 -1
  481. package/dist/chunk-WNGGJWF7.js.map +0 -1
  482. package/dist/chunk-YJV2UZ7H.js.map +0 -1
  483. package/dist/chunk-YMUGBZN2.js.map +0 -1
  484. package/dist/chunk-YTGDPCPW.js.map +0 -1
  485. package/dist/chunk-ZEQWCBCM.js.map +0 -1
  486. package/dist/collection-facade-MJXSC3Q6.js +0 -44
  487. package/dist/cover-B5SJDHR3.js +0 -52
  488. package/dist/delegation-A5A75KQO.js +0 -25
  489. package/dist/derive-HJSMH7RA.js +0 -21
  490. package/dist/executor-AXE4XMLT.js +0 -26
  491. package/dist/executor-KGNLJD6M.js +0 -9
  492. package/dist/executor-XGIS6CR7.js +0 -9
  493. package/dist/export-accessible-VVBJM3MM.js +0 -23
  494. package/dist/extract-partition-LGGBTQET.js +0 -38
  495. package/dist/find-YS6XWB46.js +0 -11
  496. package/dist/in/index.js +0 -1
  497. package/dist/issue-LSR5PS6H.js +0 -19
  498. package/dist/legacy/bundle.d.ts +0 -30
  499. package/dist/liberate-GBSAYLPJ.js +0 -24
  500. package/dist/noydb-MTUBMWFE.js +0 -70
  501. package/dist/on/index.js +0 -17
  502. package/dist/port/as/index.d.ts +0 -26
  503. package/dist/port/at/index.d.ts +0 -18
  504. package/dist/port/in/index.d.ts +0 -21
  505. package/dist/port/on/index.d.ts +0 -27
  506. package/dist/port/ui/index.d.ts +0 -21
  507. package/dist/port/with/index.d.ts +0 -18
  508. package/dist/register-X462DNDM.js +0 -23
  509. package/dist/registry-3XMCT7MQ.js +0 -18
  510. package/dist/registry-KHD2I3M2.js +0 -19
  511. package/dist/registry-NPOWJHC4.js +0 -9
  512. package/dist/request-withdrawal-U7K3JTMY.js +0 -31
  513. package/dist/revoke-OCWDSWRQ.js +0 -24
  514. package/dist/seed-PWK45HDF.js.map +0 -1
  515. package/dist/signer-3YFBLZRN.js +0 -25
  516. package/dist/storage-W3GURVFU.js +0 -23
  517. package/dist/tx/index.js.map +0 -1
  518. package/dist/ui/index.js +0 -1
  519. package/dist/with/index.js +0 -31
  520. package/dist/with-lookup/aggregate/index.d.ts +0 -23
  521. package/dist/withdraw-accessible-Y3B2535F.js +0 -28
  522. /package/dist/{api-IQFZJSQO.js.map → api-ZDKTWNBB.js.map} +0 -0
  523. /package/dist/{backup-LU2DTZTI.js.map → backup-2UX7PRM5.js.map} +0 -0
  524. /package/dist/{chunk-IY23KFNZ.js.map → chunk-35NMVJ7I.js.map} +0 -0
  525. /package/dist/{chunk-RTEK4C4I.js.map → chunk-4JQK3L4V.js.map} +0 -0
  526. /package/dist/{chunk-3ELCWU56.js.map → chunk-4ZKNC6A6.js.map} +0 -0
  527. /package/dist/{chunk-VAIS3SOM.js.map → chunk-55LX6FSX.js.map} +0 -0
  528. /package/dist/{chunk-6HPG2YNX.js.map → chunk-5DRROK5W.js.map} +0 -0
  529. /package/dist/{chunk-S6Q37VGE.js.map → chunk-5GQEU4DN.js.map} +0 -0
  530. /package/dist/{chunk-TOPYT5U5.js.map → chunk-63FE525P.js.map} +0 -0
  531. /package/dist/{chunk-JVBO4SZL.js.map → chunk-6UBZ6I5Z.js.map} +0 -0
  532. /package/dist/{chunk-UFEVO57O.js.map → chunk-ABS7FMMD.js.map} +0 -0
  533. /package/dist/{chunk-M75ZZHSR.js.map → chunk-BLBAQRBM.js.map} +0 -0
  534. /package/dist/{chunk-G6EQYAL6.js.map → chunk-CI32CAFS.js.map} +0 -0
  535. /package/dist/{chunk-6B4DYGWO.js.map → chunk-DABACXEF.js.map} +0 -0
  536. /package/dist/{chunk-F6T6L2UK.js.map → chunk-DMH3VZU5.js.map} +0 -0
  537. /package/dist/{chunk-MQ6WOPSY.js.map → chunk-DZ2JXHWK.js.map} +0 -0
  538. /package/dist/{chunk-UBNCR3YK.js.map → chunk-EE7UHLKH.js.map} +0 -0
  539. /package/dist/{chunk-EGCRBCNA.js.map → chunk-EKRSCRNM.js.map} +0 -0
  540. /package/dist/{chunk-IRQY7IR5.js.map → chunk-FRMPM7WG.js.map} +0 -0
  541. /package/dist/{as/index.js.map → chunk-GJW4HX2O.js.map} +0 -0
  542. /package/dist/{chunk-T6GU5PPZ.js.map → chunk-GU3IP74F.js.map} +0 -0
  543. /package/dist/{chunk-SMIRGMS7.js.map → chunk-IXNCZTWA.js.map} +0 -0
  544. /package/dist/{chunk-RM2XV574.js.map → chunk-IXTSNGYY.js.map} +0 -0
  545. /package/dist/{chunk-PK6QCH2C.js.map → chunk-JJZGIE4U.js.map} +0 -0
  546. /package/dist/{chunk-DRWBEDYO.js.map → chunk-JYJFGD2H.js.map} +0 -0
  547. /package/dist/{chunk-KUIB4B5Q.js.map → chunk-LNZKOUJR.js.map} +0 -0
  548. /package/dist/{chunk-IM3QVF53.js.map → chunk-MBKVNOJS.js.map} +0 -0
  549. /package/dist/{chunk-N6WF5PKC.js.map → chunk-NFZGZ4AK.js.map} +0 -0
  550. /package/dist/{chunk-OF75ACKS.js.map → chunk-PEATRIYJ.js.map} +0 -0
  551. /package/dist/{chunk-N55W7KUL.js.map → chunk-QDIH2744.js.map} +0 -0
  552. /package/dist/{chunk-6HY2X62D.js.map → chunk-QJNCB5SK.js.map} +0 -0
  553. /package/dist/{chunk-2PCAVW2I.js.map → chunk-SHEEBRZ4.js.map} +0 -0
  554. /package/dist/{chunk-RA5VTXXG.js.map → chunk-V6UQZA2H.js.map} +0 -0
  555. /package/dist/{chunk-QDPZWTN2.js.map → chunk-W3G5REIU.js.map} +0 -0
  556. /package/dist/{chunk-WEYZTLXN.js.map → chunk-W3L64Y3J.js.map} +0 -0
  557. /package/dist/{chunk-CBSY2N76.js.map → chunk-WLXMTYGO.js.map} +0 -0
  558. /package/dist/{chunk-3U3FBR7O.js.map → chunk-X3F5YJG2.js.map} +0 -0
  559. /package/dist/{classified-marker-WQVIJAW2.js.map → classified-marker-7PKJBFCG.js.map} +0 -0
  560. /package/dist/{at/index.js.map → collection-facade-6I5K5IOD.js.map} +0 -0
  561. /package/dist/{bundle/index.js.map → computed-AB45PS4V.js.map} +0 -0
  562. /package/dist/{by → cover}/index.js.map +0 -0
  563. /package/dist/{in → custody}/index.js.map +0 -0
  564. /package/dist/{dead-filter-2A7IAJ3D.js.map → dead-filter-FL3WIUZS.js.map} +0 -0
  565. /package/dist/{chunk-CHFZDSE4.js.map → derive-VGS7FKE3.js.map} +0 -0
  566. /package/dist/{on → directory}/index.js.map +0 -0
  567. /package/dist/{collection-facade-MJXSC3Q6.js.map → enclave-SPEEDYZ4.js.map} +0 -0
  568. /package/dist/{computed-DSMPXG2Y.js.map → executor-IEBLTBCW.js.map} +0 -0
  569. /package/dist/{cover-B5SJDHR3.js.map → executor-OTF556PL.js.map} +0 -0
  570. /package/dist/{delegation-A5A75KQO.js.map → executor-RM7XWQDU.js.map} +0 -0
  571. /package/dist/{derive-HJSMH7RA.js.map → export-accessible-P42BQ4PB.js.map} +0 -0
  572. /package/dist/{enclave-7MW6ZGXW.js.map → extract-partition-TCYXRWBN.js.map} +0 -0
  573. /package/dist/{fanout-sidecar-WDYQ77VB.js.map → fanout-sidecar-SSMRSC2L.js.map} +0 -0
  574. /package/dist/{executor-AXE4XMLT.js.map → find-OZMTRIK3.js.map} +0 -0
  575. /package/dist/{ui → introspection}/index.js.map +0 -0
  576. /package/dist/{executor-KGNLJD6M.js.map → issue-FCKN5O6C.js.map} +0 -0
  577. /package/dist/{executor-XGIS6CR7.js.map → ledger-6XBEVWYP.js.map} +0 -0
  578. /package/dist/{export-accessible-VVBJM3MM.js.map → liberate-CYUOS4NC.js.map} +0 -0
  579. /package/dist/{extract-partition-LGGBTQET.js.map → link-set-NK6L2A5S.js.map} +0 -0
  580. /package/dist/{with → money}/index.js.map +0 -0
  581. /package/dist/{find-YS6XWB46.js.map → noydb-FZZIMLCI.js.map} +0 -0
  582. /package/dist/{issue-LSR5PS6H.js.map → policy/index.js.map} +0 -0
  583. /package/dist/{post-register-JVTMJ6OW.js.map → post-register-VFIYISUK.js.map} +0 -0
  584. /package/dist/{ledger-33BC4TR7.js.map → register-UKU2J6MN.js.map} +0 -0
  585. /package/dist/{liberate-GBSAYLPJ.js.map → registry-2VCWVHZS.js.map} +0 -0
  586. /package/dist/{link-set-QK22TDEX.js.map → registry-7Y5WF7GS.js.map} +0 -0
  587. /package/dist/{noydb-MTUBMWFE.js.map → registry-BWD2ED52.js.map} +0 -0
  588. /package/dist/{policy-NAHB2TUT.js.map → registry-DTWRJLSF.js.map} +0 -0
  589. /package/dist/{register-X462DNDM.js.map → request-withdrawal-JYDZ5XY2.js.map} +0 -0
  590. /package/dist/{reveal-LGBOM2BO.js.map → reveal-CL2BCW6A.js.map} +0 -0
  591. /package/dist/{registry-3XMCT7MQ.js.map → revoke-2TSAD2T4.js.map} +0 -0
  592. /package/dist/{registry-KHD2I3M2.js.map → schema-update/index.js.map} +0 -0
  593. /package/dist/{registry-NPOWJHC4.js.map → search/index.js.map} +0 -0
  594. /package/dist/{registry-VW6P6A3J.js.map → sequence/index.js.map} +0 -0
  595. /package/dist/{request-withdrawal-U7K3JTMY.js.map → signer-K7Z2EOMG.js.map} +0 -0
  596. /package/dist/{revoke-OCWDSWRQ.js.map → stale-A4J26OIC.js.map} +0 -0
  597. /package/dist/{signer-3YFBLZRN.js.map → storage-YVHZUISN.js.map} +0 -0
  598. /package/dist/{stale-FJED42DM.js.map → store/index.js.map} +0 -0
  599. /package/dist/{store-coordination-provider-APODTV4W.js.map → store-coordination-provider-EWRZL7XF.js.map} +0 -0
  600. /package/dist/{verify-26Y5GNMK.js.map → verify-7XWHJWUN.js.map} +0 -0
  601. /package/dist/{storage-W3GURVFU.js.map → walk-P5D6CF4V.js.map} +0 -0
  602. /package/dist/with-lookup/{aggregate → reduce}/canonical-key.d.ts +0 -0
  603. /package/dist/{with-party → with-sync}/tab-coordination.d.ts +0 -0
  604. /package/dist/{with-party → with-sync}/tab-write-relay.d.ts +0 -0
  605. /package/dist/{withdraw-accessible-Y3B2535F.js.map → withdraw-accessible-A2PWF5MZ.js.map} +0 -0
@@ -26,8 +26,8 @@
26
26
  * **Why split read/load?** `readPod` returns the
27
27
  * *unwrapped JSON string*, not a Vault object. The caller
28
28
  * is responsible for piping that JSON into
29
- * `vault.load(json, passphrase)`. Splitting the layers
30
- * keeps the bundle module free of any crypto/passphrase
29
+ * `vault.load(json, secret)`. Splitting the layers
30
+ * keeps the bundle module free of any crypto/secret
31
31
  * concerns — it's purely a format layer. The same `readPod`
32
32
  * call can also feed verification tools, format inspectors, or
33
33
  * archive utilities that don't care about decryption.
@@ -36,18 +36,18 @@ import { type NoydbPodHeader } from './format.js';
36
36
  import type { Vault } from '../kernel/vault.js';
37
37
  import type { BundleRecipient } from '../with-party/team/keyring.js';
38
38
  import type { Cover } from '../with-party/directory/cover/types.js';
39
- import type { SealingKeyProvider, RecipientSealer, RecipientHint } from '../with-party/team/managed-passphrase.js';
39
+ import type { SealingKeyProvider, RecipientSealer, RecipientHint } from '../with-party/team/managed-secret.js';
40
40
  /**
41
41
  * The credential kinds that can be bundled for auto-unlock.
42
42
  * WebAuthn is intentionally excluded — it is hardware-bound and
43
43
  * cannot be embedded as a portable credential.
44
44
  */
45
- export type AutoCredentialKind = 'passphrase' | 'password' | 'pin';
45
+ export type AutoCredentialKind = 'secret' | 'password' | 'pin';
46
46
  /**
47
47
  * A typed credential for auto-unlock. Carries the credential `kind`
48
48
  * alongside the plaintext `value`, so consumers can dispatch the
49
49
  * correct login/prefill path rather than treating all credentials
50
- * as passphrases.
50
+ * as secrets.
51
51
  *
52
52
  * `bundle.ts` is a pure format layer — it carries the credential
53
53
  * without interpreting it. The consumer is responsible for
@@ -112,17 +112,17 @@ export interface WritePodOptions {
112
112
  /**
113
113
  * Single-recipient re-keying shorthand. When set, the
114
114
  * bundle's keyring is replaced with one freshly-derived entry sealed
115
- * with this passphrase. The recipient inherits the source keyring's
115
+ * with this secret. The recipient inherits the source keyring's
116
116
  * userId, role, and permissions. Mutually exclusive with `recipients`.
117
117
  */
118
- readonly exportPassphrase?: string;
118
+ readonly exportSecret?: string;
119
119
  /**
120
120
  * Multi-recipient re-keying. Replaces the bundle's keyring
121
121
  * map with one slot per recipient, each sealed with its own
122
- * passphrase. DEKs are unwrapped from the source keyring once and
122
+ * secret. DEKs are unwrapped from the source keyring once and
123
123
  * re-wrapped per recipient — record ciphertext is unchanged.
124
124
  *
125
- * Mutually exclusive with `exportPassphrase`. When neither is set,
125
+ * Mutually exclusive with `exportSecret`. When neither is set,
126
126
  * the bundle inherits the source keyring as-is (today's behaviour,
127
127
  * suited to personal backup-and-restore).
128
128
  */
@@ -130,8 +130,8 @@ export interface WritePodOptions {
130
130
  /**
131
131
  * Auto-unlock — unsealed per-user credentials.
132
132
  *
133
- * Generalises `autoPassphrases` to support any bundleable credential
134
- * kind (`passphrase` | `password` | `pin`).
133
+ * Generalises `autoSecrets` to support any bundleable credential
134
+ * kind (`secret` | `password` | `pin`).
135
135
  *
136
136
  * Public-by-design: anyone holding the bundle bytes can read these
137
137
  * plaintext credentials. Use for demo data, sample vaults,
@@ -141,8 +141,8 @@ export interface WritePodOptions {
141
141
  * bare `{ perUser }` without it is rejected at write time — the
142
142
  * safety net against a careless call against a production vault.
143
143
  *
144
- * Mutually exclusive with `sealedCredentials`, `autoPassphrases`,
145
- * and `sealedPassphrases`.
144
+ * Mutually exclusive with `sealedCredentials`, `autoSecrets`,
145
+ * and `sealedSecrets`.
146
146
  */
147
147
  readonly autoCredentials?: {
148
148
  readonly policy: 'public-by-design';
@@ -152,8 +152,8 @@ export interface WritePodOptions {
152
152
  * Auto-unlock — per-user credentials sealed under a
153
153
  * {@link SealingKeyProvider}.
154
154
  *
155
- * Generalises `sealedPassphrases` to support any bundleable
156
- * credential kind (`passphrase` | `password` | `pin`).
155
+ * Generalises `sealedSecrets` to support any bundleable
156
+ * credential kind (`secret` | `password` | `pin`).
157
157
  *
158
158
  * The hub seals each user's plaintext credential under `provider`
159
159
  * and embeds the resulting sealed envelopes in the bundle. The
@@ -170,8 +170,8 @@ export interface WritePodOptions {
170
170
  * The bundle can only be unsealed by the holder of the matching
171
171
  * private key.
172
172
  *
173
- * Mutually exclusive with `autoCredentials`, `autoPassphrases`,
174
- * and `sealedPassphrases`.
173
+ * Mutually exclusive with `autoCredentials`, `autoSecrets`,
174
+ * and `sealedSecrets`.
175
175
  */
176
176
  readonly sealedCredentials?: {
177
177
  readonly mode: 'self-target';
@@ -188,7 +188,7 @@ export interface WritePodOptions {
188
188
  /**
189
189
  * @deprecated Use `autoCredentials` instead.
190
190
  *
191
- * Auto-unlock — unsealed per-user passphrases.
191
+ * Auto-unlock — unsealed per-user secrets.
192
192
  *
193
193
  * Public-by-design: anyone holding the bundle bytes can read these
194
194
  * plaintext credentials. Use for demo data, sample vaults,
@@ -199,33 +199,33 @@ export interface WritePodOptions {
199
199
  * safety net against a careless call against a production vault.
200
200
  *
201
201
  * Mutually exclusive with `autoCredentials`, `sealedCredentials`,
202
- * and `sealedPassphrases`.
202
+ * and `sealedSecrets`.
203
203
  */
204
- readonly autoPassphrases?: {
204
+ readonly autoSecrets?: {
205
205
  readonly policy: 'public-by-design';
206
206
  readonly perUser: Record<string, string>;
207
207
  };
208
208
  /**
209
209
  * @deprecated Use `sealedCredentials` instead.
210
210
  *
211
- * Auto-unlock — per-user passphrases sealed under a
211
+ * Auto-unlock — per-user secrets sealed under a
212
212
  * {@link SealingKeyProvider} (self-target only).
213
213
  *
214
- * The hub seals each user's plaintext passphrase under `provider`
214
+ * The hub seals each user's plaintext secret under `provider`
215
215
  * and embeds the resulting sealed envelopes in the bundle. The
216
216
  * recipient must hold a provider with a matching `pid` (i.e.,
217
217
  * `provider.id`) to auto-unseal on import.
218
218
  *
219
- * `mode: 'self-target'` is the only mode for `sealedPassphrases` — sender
219
+ * `mode: 'self-target'` is the only mode for `sealedSecrets` — sender
220
220
  * and recipient share the same provider identity (same iCloud Keychain
221
221
  * entry, same MDM-provisioned bundle id, same KMS account, etc.).
222
222
  * For recipient-target sealing via the `RecipientSealer` interface,
223
223
  * use `sealedCredentials` with `mode: 'recipient-target'` (§11.4).
224
224
  *
225
225
  * Mutually exclusive with `autoCredentials`, `sealedCredentials`,
226
- * and `autoPassphrases`.
226
+ * and `autoSecrets`.
227
227
  */
228
- readonly sealedPassphrases?: {
228
+ readonly sealedSecrets?: {
229
229
  readonly mode: 'self-target';
230
230
  readonly provider: SealingKeyProvider;
231
231
  readonly perUser: Record<string, string>;
@@ -235,7 +235,7 @@ export interface WritePodOptions {
235
235
  export type WriteNoydbBundleOptions = WritePodOptions;
236
236
  /**
237
237
  * Result returned by `readPod`. The caller is expected to
238
- * pass `dumpJson` into `vault.load(json, passphrase)` to
238
+ * pass `dumpJson` into `vault.load(json, secret)` to
239
239
  * actually restore a vault. Splitting the layers keeps the
240
240
  * bundle module free of crypto concerns — see file-level docs.
241
241
  */
@@ -251,7 +251,7 @@ export interface NoydbBundleReadResult {
251
251
  *
252
252
  * Consumers dispatch on `cred.kind` to choose the correct login /
253
253
  * prefill path. Pre-0.2 bundles (bare string entries) are coerced
254
- * to `{ kind: 'passphrase', value }` on read for back-compat.
254
+ * to `{ kind: 'secret', value }` on read for back-compat.
255
255
  *
256
256
  * For `kind: 'sealed'` bundles read without `sealingProviders`, the
257
257
  * `value` field is the raw base64 sealed bytes — opaque to the
@@ -270,7 +270,7 @@ export interface NoydbBundleReadResult {
270
270
  export interface ReadNoydbBundleOptions {
271
271
  /**
272
272
  * Recipient-side sealing providers used to unseal entries from
273
- * `sealedPassphrases`. The reader picks the one whose `.id`
273
+ * `sealedSecrets`. The reader picks the one whose `.id`
274
274
  * matches each entry's `pid`. Multiple providers may be supplied
275
275
  * (different users may seal under different identities).
276
276
  *
@@ -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
@@ -404,9 +402,9 @@ export declare const readNoydbBundlePublicEnvelope: typeof readPodCover;
404
402
  * format error so consumers can pattern-match in catch blocks
405
403
  * (corrupted-in-transit vs malformed-by-producer).
406
404
  *
407
- * Note: this function does NOT take a passphrase. The dump JSON
405
+ * Note: this function does NOT take a secret. The dump JSON
408
406
  * inside the body still contains encrypted records — restoring
409
- * the vault requires `vault.load(dumpJson, passphrase)`
407
+ * the vault requires `vault.load(dumpJson, secret)`
410
408
  * after this call. Splitting the layers keeps the bundle module
411
409
  * free of crypto concerns and lets the same code feed format
412
410
  * inspectors that never decrypt anything.
@@ -34,7 +34,7 @@
34
34
  * The dump JSON inside the body still contains the original
35
35
  * metadata, but that's only readable by someone who already has the
36
36
  * file bytes — the same person who could read the encrypted records
37
- * with the right passphrase.
37
+ * with the right secret.
38
38
  *
39
39
  * **Why minimum disclosure** in the header? Because consumers will
40
40
  * inevitably store these in services where the filename, file size,
@@ -128,7 +128,7 @@ export interface NoydbPodHeader {
128
128
  /**
129
129
  * Auto-unlock material indicator. When present, the bundle
130
130
  * body wraps the dump JSON in a structure carrying per-user
131
- * passphrases — either plaintext (`'unsealed'`, public-by-design)
131
+ * secrets — either plaintext (`'unsealed'`, public-by-design)
132
132
  * or sealed under a `SealingKeyProvider` (`'sealed'`, requires
133
133
  * matching provider on the recipient side).
134
134
  *
@@ -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;
@@ -2,6 +2,7 @@ import type { NoydbStore, BlobObject, SlotInfo, VersionRecord, BlobPutOptions, B
2
2
  import type { ObjectProjection } from './object-projection.js';
3
3
  import type { BlobFieldsConfig } from './blob-compaction.js';
4
4
  import { type EnclaveKey } from '../../kernel/enclave/index.js';
5
+ import { type BlobPinCache } from './blob-pinning.js';
5
6
  import type { UnlockedKeyring } from '../../with-party/team/keyring.js';
6
7
  /**
7
8
  * DEK slot name for vault-shared blob data. Calling `getDEK('_blob')`
@@ -69,6 +70,12 @@ export declare class BlobSet {
69
70
  private readonly objectStore;
70
71
  private readonly blobFields;
71
72
  private readonly keyring;
73
+ /**
74
+ * Device-local pin registry + external side-cache + KPI counters (#808).
75
+ * Injected by `withBlobs()` (one shared instance per strategy — per
76
+ * "device"); absent on a direct construction that never threads one.
77
+ */
78
+ private readonly pinCache;
72
79
  /**
73
80
  * Set only on the cleared clone `atTier()` returns (#749) — never by
74
81
  * `openSlot`/`Collection.blob()`. Its presence is what makes a `BlobSet`
@@ -91,6 +98,7 @@ export declare class BlobSet {
91
98
  blobFields?: BlobFieldsConfig;
92
99
  keyring?: UnlockedKeyring;
93
100
  clearedTier?: number;
101
+ pinCache?: BlobPinCache;
94
102
  });
95
103
  /**
96
104
  * #724 I1 completion: a legacy (non-`perRecordKeys`) blob has no per-blob
@@ -101,7 +109,7 @@ export declare class BlobSet {
101
109
  * DECLARED; a collection with an undeclared field (or no `blobFields` at
102
110
  * all) constructs fine and reaches this write path unguarded. Refuse the
103
111
  * write itself instead of broadening the construction mandate, which
104
- * would over-refuse blobless tiered collections (`blobStrategy` is
112
+ * would over-refuse blobless tiered collections (`blobsStrategy` is
105
113
  * vault-wide, not per-collection). Called from every content-write entry
106
114
  * (`put()`, `publish()`) — never from a read path, so a pre-existing
107
115
  * legacy blob stays readable (back-compat).
@@ -1136,7 +1144,11 @@ export declare class BlobSet {
1136
1144
  /**
1137
1145
  * Fetch all bytes for the named slot.
1138
1146
  * Returns `null` if the slot does not exist.
1139
- * Throws `NotFoundError` if the index entry exists but a chunk is missing.
1147
+ * Throws `BlobOfflineError` if the content is not available locally (#808):
1148
+ * an internal blob whose chunk envelopes are absent from the local store, or
1149
+ * an external slot with no local cached copy while the object store is
1150
+ * unreachable. External reads populate the device-local encrypted
1151
+ * side-cache, so a repeat read is served locally (see `pin()`).
1140
1152
  */
1141
1153
  get(slotName: string): Promise<Uint8Array | null>;
1142
1154
  /**
@@ -1182,6 +1194,12 @@ export declare class BlobSet {
1182
1194
  /**
1183
1195
  * List all slot entries for this record.
1184
1196
  * Returns metadata only — no chunk data is loaded.
1197
+ *
1198
+ * #808: when a pin registry is present (`withBlobs()`), each entry is
1199
+ * annotated with this DEVICE's view — `pinned` / `lastAccessAt` /
1200
+ * `cachedBytes` (see their `SlotInfo` doc comments). The annotations come
1201
+ * from the device-local registry, never the vault store, and are what
1202
+ * `vault.compact()`'s pin exemption + cache-budget LRU pass key off.
1185
1203
  */
1186
1204
  list(): Promise<SlotInfo[]>;
1187
1205
  /**
@@ -1189,6 +1207,72 @@ export declare class BlobSet {
1189
1207
  * Decrements refCount on the blob. Chunks are GC'd by `vault.blobGC()`.
1190
1208
  */
1191
1209
  delete(slotName: string): Promise<void>;
1210
+ /**
1211
+ * Pin the named slot for offline availability ON THIS DEVICE.
1212
+ *
1213
+ * - Downloads eagerly (call while online): an internal blob's chunks are
1214
+ * fetched once to prove they are locally readable; an `external` slot's
1215
+ * bytes are fetched from the object store and kept in the device-local
1216
+ * side-cache, **encrypted** under the vault's `_blob` DEK via the same
1217
+ * enclave path as chunk encryption (the object-store copy sits outside
1218
+ * the ZK envelope by design; the local copy does not).
1219
+ * - A pinned slot is EXEMPT from `vault.compact()` eviction — both the
1220
+ * `blobFields` policy pass and the `cacheBudget` LRU pass.
1221
+ * - Pin state is device-local (never synced): it lives in the `withBlobs()`
1222
+ * pin registry, not in the vault store. Each device pins for itself.
1223
+ *
1224
+ * Throws `NotFoundError` for a missing slot and `BlobOfflineError` when the
1225
+ * eager download cannot complete (offline).
1226
+ */
1227
+ pin(slotName: string): Promise<void>;
1228
+ /**
1229
+ * Unpin the named slot on this device — it returns to the normal lifecycle:
1230
+ * `blobFields` policy eviction applies again, and any local cached copy
1231
+ * (external slots) stays but becomes budget-managed (`cacheBudget` LRU).
1232
+ * A no-op when the slot is not pinned here.
1233
+ */
1234
+ unpin(slotName: string): Promise<void>;
1235
+ /** Whether the named slot is pinned for offline ON THIS DEVICE (#808). */
1236
+ isPinned(slotName: string): Promise<boolean>;
1237
+ /**
1238
+ * Drop this slot's device-local cached copy (the encrypted external
1239
+ * side-cache) WITHOUT touching the slot, the vault store, or the object
1240
+ * store. Returns the plaintext bytes freed (0 when nothing was cached, the
1241
+ * slot is pinned — pinned copies are exempt — or no registry is present).
1242
+ * The cache-budget pass inside `vault.compact()` is the expected caller;
1243
+ * the LRU access row itself is kept.
1244
+ */
1245
+ dropLocalCache(slotName: string): Promise<number>;
1246
+ /** This slot's registry key — see {@link blobPinKey}. */
1247
+ private pinKeyFor;
1248
+ /** AAD binding for a cached external copy: the row's own registry key. */
1249
+ private pinCopyAAD;
1250
+ private requirePinCache;
1251
+ /** KPI hit + LRU access stamp for a successful LOCAL read. No-op without a registry. */
1252
+ private recordLocalHit;
1253
+ /**
1254
+ * Read an `external` slot (#808 taxonomy): local encrypted side-cache first
1255
+ * (hit); else the object store (miss + `bytesDownloaded`), auto-caching the
1256
+ * fetched bytes so the NEXT read — and any later offline read — is local.
1257
+ * A network failure with no local copy is the typed `BlobOfflineError`;
1258
+ * a genuinely absent object (fetch succeeded, nothing there) stays `null`.
1259
+ */
1260
+ private readExternal;
1261
+ /**
1262
+ * Decrypt a cached external copy. `null` (treated as a cache miss → network
1263
+ * refresh) when the vault keys can no longer open it — e.g. the copy was
1264
+ * cached before the owning record moved tiers, so it is sealed under a DEK
1265
+ * this handle no longer resolves. Genuine non-crypto failures propagate.
1266
+ */
1267
+ private decryptCachedCopy;
1268
+ /**
1269
+ * Write an external slot's bytes into the device-local side-cache —
1270
+ * ENCRYPTED under the vault's `_blob` DEK (owner tier) via the enclave's
1271
+ * AAD-bound path, mirroring chunk encryption; base64 plaintext with
1272
+ * `iv: ''` only on an unencrypted vault (the envelope convention). A
1273
+ * pre-existing pin flag survives the rewrite.
1274
+ */
1275
+ private cacheExternalCopy;
1192
1276
  /**
1193
1277
  * Return a native `Response` whose body streams the decrypted,
1194
1278
  * decompressed blob bytes with full HTTP metadata headers.
@@ -9,4 +9,10 @@
9
9
  */
10
10
  export type { VaultSchemaSnapshot, DumpSchemaOptions, CollectionDescriptor, CollectionConfig, CollectionStats, FieldDescriptor, FieldSource, MaterializedViewDescriptor, OverlayViewDescriptor, DerivationDescriptor, InternalCollectionStats, } from './types.js';
11
11
  export { dumpVaultSchema } from './walk.js';
12
+ export type { VaultIntrospectState } from './walk.js';
12
13
  export { jsonSchemaToFields } from './fields.js';
14
+ export type { SchemaIntrospection } from './types.js';
15
+ export type { FieldMeta, SemanticType } from './field-meta.js';
16
+ export type { CollectionDescription, DescribedField, DescribeOptions } from './describe.js';
17
+ export { applyListProjection } from './projection.js';
18
+ export type { ListProjectionOptions } from './projection.js';
@@ -4,3 +4,4 @@ export { evaluateStrategies } from './dispatch.js';
4
4
  export { blindUpdate, additiveOnly, lockSchema } from './strategies.js';
5
5
  export { coordinatedCutover } from './cutover.js';
6
6
  export { SchemaUpdateGate } from './gate.js';
7
+ export type { FenceDoc } from './fence.js';
@@ -3,8 +3,9 @@
3
3
  *
4
4
  * Store routing (multiplex by collection/size/age) and composable store
5
5
  * middleware (retry, logging, metrics, circuit-breaker, cache, health-check).
6
- * Root-barrel-only: no dedicated `@noy-db/hub/with-store` subpath export —
7
- * consumers reach these through the main `@noy-db/hub` entry.
6
+ * Published as `@noy-db/hub/store` (#843 C3a). Also re-exported from the root
7
+ * barrel, matching how the Via features are dual-homed — the subpath exists so
8
+ * the surface is navigable and tree-shakeable, not to force a migration.
8
9
  *
9
10
  * Named re-exports (not `export *`) so tsup keeps the barrel populated
10
11
  * even with `sideEffects: false`.
@@ -204,7 +204,7 @@ export interface RoutedNoydbStore extends NoydbStore {
204
204
  * - `hydrate: ['invoices', 'clients']` — copies only named collections.
205
205
  *
206
206
  * Use cases:
207
- * - Shared device: `await store.override('default', memory(), { hydrate: true })`
207
+ * - Shared device: `await store.override('default', toMemory(), { hydrate: true })`
208
208
  * - Restricted network: `store.override('blobs', localFile(...))`
209
209
  */
210
210
  override(route: OverrideTarget, store: NoydbStore, opts?: OverrideOptions): void | Promise<void>;
@@ -29,5 +29,5 @@
29
29
  *
30
30
  * @public
31
31
  */
32
- import type { SyncStrategy } from './sync-strategy.js';
32
+ import type { SyncStrategy } from './strategy.js';
33
33
  export declare function withSync(): SyncStrategy;
@@ -36,15 +36,15 @@
36
36
  * Operators, viewers, and clients cannot call this API. The check is made
37
37
  * against the caller's keyring role at call time.
38
38
  */
39
- import type { NoydbStore } from '../../kernel/types.js';
40
- import type { UnlockedKeyring } from './keyring.js';
39
+ import type { NoydbStore } from '../kernel/types.js';
40
+ import type { UnlockedKeyring } from '../with-party/team/keyring.js';
41
41
  /**
42
42
  * The reserved collection name. Never collides with user collections.
43
43
  * Canonical definition lives in `reserved-secret-collections.ts` (shared with
44
44
  * the `vault.collection()` guard and grant DEK-propagation); re-exported here
45
45
  * for existing consumers.
46
46
  */
47
- export { SYNC_CREDENTIALS_COLLECTION } from './reserved-secret-collections.js';
47
+ export { SYNC_CREDENTIALS_COLLECTION } from '../with-party/team/reserved-secret-collections.js';
48
48
  /**
49
49
  * An OAuth/auth token stored in `_sync_credentials`.
50
50
  *
@@ -1,8 +1,8 @@
1
- import type { NoydbStore, DirtyEntry, ConflictStrategy, CollectionConflictResolver, PushOptions, PullOptions, PushResult, PullResult, SyncStatus, SyncTargetRole } from '../../kernel/types.js';
2
- import { type PeriodPullSource } from './sync-period-scope.js';
3
- import type { NoydbEventEmitter } from '../../kernel/events.js';
4
- import type { SyncPolicy } from '../../kernel/sync-policy.js';
5
- import { SyncScheduler } from '../../kernel/sync-policy.js';
1
+ import type { NoydbStore, DirtyEntry, ConflictStrategy, CollectionConflictResolver, PushOptions, PullOptions, PushResult, PullResult, SyncStatus, SyncTargetRole } from '../kernel/types.js';
2
+ import { type PeriodPullSource } from './period-scope.js';
3
+ import type { NoydbEventEmitter } from '../kernel/events.js';
4
+ import type { SyncPolicy } from '../kernel/sync-policy.js';
5
+ import { SyncScheduler } from '../kernel/sync-policy.js';
6
6
  /** #650 Task 4 (#647) — the declared reserved-lookup (`_dict_*`/`_lookup_*`) collection-name
7
7
  * registry a `SyncEngine` enumerates on pull. Explicit, not a blanket underscore-glob — other
8
8
  * `_`-prefixed namespaces keep their `loadAll`-skip semantics untouched. */
@@ -27,5 +27,7 @@
27
27
  * via `@noy-db/hub/team` for advanced consumers that construct them
28
28
  * directly. This subpath is the clean LTS factory entry point.
29
29
  */
30
- export { withSync } from '../team/sync-active.js';
31
- export type { SyncStrategy } from '../team/sync-strategy.js';
30
+ export { withSync } from './active.js';
31
+ export type { SyncStrategy } from './strategy.js';
32
+ /** The un-opted-in stub for this service — exported so callers can compare against it (#844). */
33
+ export { NO_SYNC } from './strategy.js';