@struktoai/mirage-node 0.0.3-alpha.0 → 0.0.4

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 (433) hide show
  1. package/README.md +1 -1
  2. package/dist/aliyun-PGI57A43.js +10 -0
  3. package/dist/backblaze-TSPL6Y56.js +10 -0
  4. package/dist/box-7XTZYDSO.js +8 -0
  5. package/dist/cas.lua +15 -0
  6. package/dist/ceph-C265UI5T.js +10 -0
  7. package/dist/{chunk-IQVNVTOP.js → chunk-25W4XQJZ.js} +5 -5
  8. package/dist/{chunk-QGRDPSAH.js → chunk-2ERLWAGG.js} +4 -2
  9. package/dist/chunk-2ERLWAGG.js.map +1 -0
  10. package/dist/{chunk-NJMGCT63.js → chunk-2QNPKPZZ.js} +7 -2
  11. package/dist/chunk-2QNPKPZZ.js.map +1 -0
  12. package/dist/{chunk-ZNWVJ6UW.js → chunk-3ASOQTZB.js} +7 -2
  13. package/dist/chunk-3ASOQTZB.js.map +1 -0
  14. package/dist/{chunk-ERELJ7BS.js → chunk-3JZN3GYO.js} +14 -13
  15. package/dist/chunk-3JZN3GYO.js.map +1 -0
  16. package/dist/{chunk-DTAY7LPC.js → chunk-4GYB7DGC.js} +295 -706
  17. package/dist/chunk-4GYB7DGC.js.map +1 -0
  18. package/dist/{chunk-G5BZE7UA.js → chunk-4M73WHIE.js} +3 -3
  19. package/dist/{chunk-Q6CDMOM6.js → chunk-4X6CLF4F.js} +3 -3
  20. package/dist/{chunk-3IJSIVKT.js → chunk-5I7Q7RHW.js} +3 -3
  21. package/dist/{chunk-YPT4JBUY.js → chunk-5YRWF5RP.js} +18 -16
  22. package/dist/chunk-5YRWF5RP.js.map +1 -0
  23. package/dist/chunk-5ZHNPNDD.js +944 -0
  24. package/dist/chunk-5ZHNPNDD.js.map +1 -0
  25. package/dist/{chunk-VGLHY6BK.js → chunk-AULFV3KY.js} +1 -2
  26. package/dist/chunk-AULFV3KY.js.map +1 -0
  27. package/dist/{chunk-A4Z6DZ22.js → chunk-BWLUBJQG.js} +20 -16
  28. package/dist/chunk-BWLUBJQG.js.map +1 -0
  29. package/dist/{chunk-OYV2DN66.js → chunk-BWWU5T2D.js} +3 -3
  30. package/dist/chunk-C7TNKIK5.js +39 -0
  31. package/dist/chunk-C7TNKIK5.js.map +1 -0
  32. package/dist/{chunk-HEHERHQ5.js → chunk-CB76WPUS.js} +13 -14
  33. package/dist/chunk-CB76WPUS.js.map +1 -0
  34. package/dist/chunk-CGGO5NKD.js +1194 -0
  35. package/dist/chunk-CGGO5NKD.js.map +1 -0
  36. package/dist/{chunk-B2ZOKNN4.js → chunk-CQCTCW4S.js} +1 -2
  37. package/dist/chunk-CQCTCW4S.js.map +1 -0
  38. package/dist/{chunk-AJICZLHT.js → chunk-CXQGMFI7.js} +3 -3
  39. package/dist/{chunk-LW25LMIH.js → chunk-D3U7VQCG.js} +1 -2
  40. package/dist/{chunk-LW25LMIH.js.map → chunk-D3U7VQCG.js.map} +1 -1
  41. package/dist/{chunk-RQYEEA2O.js → chunk-DXU7NZPH.js} +3 -3
  42. package/dist/{chunk-XGJ2QERC.js → chunk-E3KXVEYI.js} +8 -4
  43. package/dist/chunk-E3KXVEYI.js.map +1 -0
  44. package/dist/{chunk-L6JPBJAS.js → chunk-EGZNOUMH.js} +3 -3
  45. package/dist/{chunk-DNBAMB5J.js → chunk-EVK6HH6Z.js} +1 -2
  46. package/dist/{chunk-DNBAMB5J.js.map → chunk-EVK6HH6Z.js.map} +1 -1
  47. package/dist/{chunk-BYTU2YC3.js → chunk-F5NWRF32.js} +3 -3
  48. package/dist/{chunk-RLGWMJD3.js → chunk-FRGTDZQT.js} +146 -11
  49. package/dist/chunk-FRGTDZQT.js.map +1 -0
  50. package/dist/{chunk-DYXEITK3.js → chunk-GF75O2EN.js} +4 -2
  51. package/dist/chunk-GF75O2EN.js.map +1 -0
  52. package/dist/{chunk-W7FLHT65.js → chunk-GTAS3QVC.js} +1 -2
  53. package/dist/{chunk-W7FLHT65.js.map → chunk-GTAS3QVC.js.map} +1 -1
  54. package/dist/{chunk-RQK5UPMP.js → chunk-H62XQZUM.js} +4 -3
  55. package/dist/chunk-H62XQZUM.js.map +1 -0
  56. package/dist/{chunk-UT2OPSN4.js → chunk-HCU3B6FW.js} +1 -2
  57. package/dist/chunk-HCU3B6FW.js.map +1 -0
  58. package/dist/chunk-HEDE2377.js +754 -0
  59. package/dist/chunk-HEDE2377.js.map +1 -0
  60. package/dist/{chunk-JZQHKDSY.js → chunk-HGIPWY5Y.js} +22 -11
  61. package/dist/chunk-HGIPWY5Y.js.map +1 -0
  62. package/dist/{chunk-Q2IAILVC.js → chunk-HSD24IP2.js} +8 -4
  63. package/dist/chunk-HSD24IP2.js.map +1 -0
  64. package/dist/{chunk-5YOCVEUB.js → chunk-HWQPEBID.js} +19 -15
  65. package/dist/chunk-HWQPEBID.js.map +1 -0
  66. package/dist/{chunk-SFUCUARB.js → chunk-IEHPTILN.js} +4 -4
  67. package/dist/chunk-IEHPTILN.js.map +1 -0
  68. package/dist/{chunk-C6NHEDHY.js → chunk-IEVLWEBO.js} +15 -14
  69. package/dist/chunk-IEVLWEBO.js.map +1 -0
  70. package/dist/{chunk-YUK3X3B4.js → chunk-IKJQOYI4.js} +1 -2
  71. package/dist/{chunk-YUK3X3B4.js.map → chunk-IKJQOYI4.js.map} +1 -1
  72. package/dist/{chunk-MHCMHKM6.js → chunk-IUXXZHY3.js} +17 -23
  73. package/dist/chunk-IUXXZHY3.js.map +1 -0
  74. package/dist/{chunk-ABTEGAFB.js → chunk-JBDFYIN2.js} +13 -14
  75. package/dist/chunk-JBDFYIN2.js.map +1 -0
  76. package/dist/{chunk-A7X4L4JM.js → chunk-JEBH5APX.js} +15 -15
  77. package/dist/chunk-JEBH5APX.js.map +1 -0
  78. package/dist/{chunk-H3BST2LI.js → chunk-JHI2PHHD.js} +1 -2
  79. package/dist/{chunk-H3BST2LI.js.map → chunk-JHI2PHHD.js.map} +1 -1
  80. package/dist/{chunk-EGB7V74Z.js → chunk-KAWDDS27.js} +1 -3
  81. package/dist/chunk-KAWDDS27.js.map +1 -0
  82. package/dist/{chunk-DP2PP5V2.js → chunk-KGC2OGXI.js} +5 -4
  83. package/dist/chunk-KGC2OGXI.js.map +1 -0
  84. package/dist/{chunk-FXFDBF3P.js → chunk-L4GMDSMB.js} +3 -3
  85. package/dist/{chunk-O7ODGJYL.js → chunk-L7FEZ7LU.js} +3 -3
  86. package/dist/{chunk-54NTYJEO.js → chunk-LPDLPRPS.js} +1 -3
  87. package/dist/{chunk-54NTYJEO.js.map → chunk-LPDLPRPS.js.map} +1 -1
  88. package/dist/{chunk-UGK4TAVK.js → chunk-LPLZLSMK.js} +1 -2
  89. package/dist/chunk-LPLZLSMK.js.map +1 -0
  90. package/dist/{chunk-5DLOHQJ2.js → chunk-M6E7VK4D.js} +14 -14
  91. package/dist/chunk-M6E7VK4D.js.map +1 -0
  92. package/dist/{chunk-2CC5VW7K.js → chunk-MIQ3ECZM.js} +4 -2
  93. package/dist/chunk-MIQ3ECZM.js.map +1 -0
  94. package/dist/chunk-MRXTUFBZ.js +30 -0
  95. package/dist/chunk-MRXTUFBZ.js.map +1 -0
  96. package/dist/{chunk-RO5IQEDQ.js → chunk-NJ42VNXG.js} +1 -2
  97. package/dist/chunk-NJ42VNXG.js.map +1 -0
  98. package/dist/{chunk-3T3RMDNX.js → chunk-NLXJMXVE.js} +3 -3
  99. package/dist/{chunk-E2ISWXLB.js → chunk-OQKNDS66.js} +1 -1
  100. package/dist/{chunk-E2ISWXLB.js.map → chunk-OQKNDS66.js.map} +1 -1
  101. package/dist/chunk-OSVZKYXS.js +946 -0
  102. package/dist/chunk-OSVZKYXS.js.map +1 -0
  103. package/dist/{chunk-LYDMMNL2.js → chunk-RHUEV4I7.js} +12 -13
  104. package/dist/chunk-RHUEV4I7.js.map +1 -0
  105. package/dist/{chunk-JALIYI6M.js → chunk-S4KVLPBR.js} +7 -2
  106. package/dist/chunk-S4KVLPBR.js.map +1 -0
  107. package/dist/{chunk-XRU5WXZX.js → chunk-SAOQW6ZJ.js} +15 -15
  108. package/dist/chunk-SAOQW6ZJ.js.map +1 -0
  109. package/dist/{chunk-CASCUFK2.js → chunk-SI4GMRXD.js} +14 -15
  110. package/dist/chunk-SI4GMRXD.js.map +1 -0
  111. package/dist/{chunk-HQ4KWN76.js → chunk-SYMNWNC3.js} +3 -3
  112. package/dist/{chunk-PJBQKMCD.js → chunk-TUNR4VUM.js} +3 -3
  113. package/dist/{chunk-XHCBHYN4.js → chunk-UAJYJP5C.js} +7 -2
  114. package/dist/chunk-UAJYJP5C.js.map +1 -0
  115. package/dist/{chunk-OPYQ5KIO.js → chunk-UYA3XL3J.js} +4 -2
  116. package/dist/chunk-UYA3XL3J.js.map +1 -0
  117. package/dist/{chunk-WL7HS7EM.js → chunk-V7JVMG63.js} +3 -3
  118. package/dist/{chunk-LAJJPLEV.js → chunk-VBYIDRNU.js} +7 -3
  119. package/dist/chunk-VBYIDRNU.js.map +1 -0
  120. package/dist/{chunk-NHS7WLEQ.js → chunk-VHED2STW.js} +11 -8
  121. package/dist/chunk-VHED2STW.js.map +1 -0
  122. package/dist/{chunk-JZT4QGIP.js → chunk-VIICUPWQ.js} +1 -2
  123. package/dist/{chunk-JZT4QGIP.js.map → chunk-VIICUPWQ.js.map} +1 -1
  124. package/dist/{chunk-TRTUHCS4.js → chunk-VLRSOWHP.js} +17 -15
  125. package/dist/chunk-VLRSOWHP.js.map +1 -0
  126. package/dist/chunk-W5ZLIQFR.js +764 -0
  127. package/dist/chunk-W5ZLIQFR.js.map +1 -0
  128. package/dist/{chunk-YGZMVNN5.js → chunk-WTSSEUOZ.js} +7 -2
  129. package/dist/chunk-WTSSEUOZ.js.map +1 -0
  130. package/dist/{chunk-OHROA3FQ.js → chunk-WWP2STF5.js} +7 -2
  131. package/dist/chunk-WWP2STF5.js.map +1 -0
  132. package/dist/{chunk-C6NHFMIP.js → chunk-XADEMW6B.js} +3 -3
  133. package/dist/{chunk-KTNDT45N.js → chunk-XEMLYWHK.js} +3 -3
  134. package/dist/{chunk-OZAEWZZ3.js → chunk-XFSEADPC.js} +6 -2
  135. package/dist/chunk-XFSEADPC.js.map +1 -0
  136. package/dist/{chunk-TWGVQLG2.js → chunk-XUUSWR4U.js} +1 -2
  137. package/dist/{chunk-TWGVQLG2.js.map → chunk-XUUSWR4U.js.map} +1 -1
  138. package/dist/{chunk-XLQI4IT2.js → chunk-YBVMZ7SR.js} +7 -2
  139. package/dist/chunk-YBVMZ7SR.js.map +1 -0
  140. package/dist/{chunk-E7RW3SBV.js → chunk-YRJICL2Q.js} +15 -15
  141. package/dist/chunk-YRJICL2Q.js.map +1 -0
  142. package/dist/{chunk-B6SXRCBO.js → chunk-ZM44MGC5.js} +3 -3
  143. package/dist/{chunk-YAVGCQUP.js → chunk-ZMREYTHA.js} +16 -15
  144. package/dist/chunk-ZMREYTHA.js.map +1 -0
  145. package/dist/{chunk-H3I2KZIY.js → chunk-ZPB3SLPK.js} +1 -2
  146. package/dist/{chunk-H3I2KZIY.js.map → chunk-ZPB3SLPK.js.map} +1 -1
  147. package/dist/chunk-ZPZQXHW2.js +1230 -0
  148. package/dist/chunk-ZPZQXHW2.js.map +1 -0
  149. package/dist/{config-34LHOGLM.js → config-2LASFFRD.js} +2 -4
  150. package/dist/config-3WDIJPTG.js +9 -0
  151. package/dist/config-4QV4QYI5.js +9 -0
  152. package/dist/{config-ZFJYQZCH.js → config-54USUVSE.js} +2 -4
  153. package/dist/config-5ZXN2T2H.js +9 -0
  154. package/dist/config-A2GQYJDB.js +9 -0
  155. package/dist/config-BBOLI7VE.js +9 -0
  156. package/dist/{config-VM526IKB.js → config-BIBFLUIR.js} +2 -4
  157. package/dist/{config-EO23EY62.js → config-CPYFOUQO.js} +2 -4
  158. package/dist/{config-3IVQJBNW.js → config-DWSJL3NH.js} +2 -4
  159. package/dist/config-E22XAGYN.js +9 -0
  160. package/dist/config-EHE52ZTK.js +9 -0
  161. package/dist/{config-GE4W4ZJC.js → config-EX3ZJTZI.js} +2 -4
  162. package/dist/{config-QNMKWJ4M.js → config-FRK7ZL37.js} +2 -4
  163. package/dist/{config-LHFFXVYI.js → config-HQXNFQZS.js} +2 -4
  164. package/dist/config-HTXOOAOD.js +9 -0
  165. package/dist/{config-HKRMKD76.js → config-IPNWAJHH.js} +2 -4
  166. package/dist/config-J2C53GOT.js +9 -0
  167. package/dist/config-K63RX6EU.js +9 -0
  168. package/dist/config-L7SBSH5L.js +9 -0
  169. package/dist/config-LEALEMKA.js +9 -0
  170. package/dist/{config-IVY5EQQ2.js → config-M3Z47VYU.js} +2 -4
  171. package/dist/{config-EIHSP5DZ.js → config-MZM3IPFM.js} +2 -4
  172. package/dist/{config-GHRUKEQ6.js → config-OJ2BPESH.js} +2 -4
  173. package/dist/{config-WDAZFXYD.js → config-QO2XUME4.js} +2 -4
  174. package/dist/config-QWQGOXQ5.js +9 -0
  175. package/dist/config-RI7IEZUF.js +9 -0
  176. package/dist/{config-CVZ2AGCO.js → config-SPW6NESU.js} +2 -6
  177. package/dist/{config-QAA646XB.js → config-T2IUIU5C.js} +2 -4
  178. package/dist/{config-NV5WXP64.js → config-UU27ALAA.js} +2 -4
  179. package/dist/config-VKKZGC7V.js +9 -0
  180. package/dist/config-W7EVPJNK.js +11 -0
  181. package/dist/config-WKQ3FGTZ.js +9 -0
  182. package/dist/config-WVILHDFV.js +11 -0
  183. package/dist/{config-Q45Y46YT.js → config-XU6D5C7E.js} +2 -4
  184. package/dist/databricks_volume-ETRDJVVQ.js +7 -0
  185. package/dist/digitalocean-QP72DR4J.js +10 -0
  186. package/dist/discord-BSN5RB3E.js +8 -0
  187. package/dist/disk-24NWTN2I.js +7 -0
  188. package/dist/dropbox-OSTZXSIE.js +8 -0
  189. package/dist/email-4ZFPSWIN.js +8 -0
  190. package/dist/gcs-PFWR6MIW.js +10 -0
  191. package/dist/gdocs-GPAZRQG5.js +8 -0
  192. package/dist/gdrive-XSX6A7B3.js +8 -0
  193. package/dist/github-EQ4NXUTA.js +8 -0
  194. package/dist/github_ci-QL5B2Q2N.js +8 -0
  195. package/dist/gmail-2TBT4CVH.js +8 -0
  196. package/dist/gridfs-KZRZ6SIB.js +9 -0
  197. package/dist/gsheets-N53WEXN2.js +8 -0
  198. package/dist/gslides-TATSARTH.js +8 -0
  199. package/dist/hf_buckets-BK7NGJWS.js +10 -0
  200. package/dist/hf_datasets-UQ5QGM4L.js +10 -0
  201. package/dist/hf_models-75LFCQCS.js +10 -0
  202. package/dist/hf_spaces-6T2KB3UC.js +10 -0
  203. package/dist/index.d.ts +599 -79
  204. package/dist/index.js +1515 -422
  205. package/dist/index.js.map +1 -1
  206. package/dist/langfuse-AMQCQWNE.js +8 -0
  207. package/dist/linear-V3TXO6CV.js +8 -0
  208. package/dist/minio-IZRZY4C5.js +10 -0
  209. package/dist/mongodb-VMKPQCPX.js +7 -0
  210. package/dist/nextcloud-5RHQCGDO.js +9 -0
  211. package/dist/notion-6PPNTQFM.js +8 -0
  212. package/dist/oci-CKYBSFZJ.js +10 -0
  213. package/dist/postgres-WIQBVL5M.js +7 -0
  214. package/dist/qingstor-AP4IIPLY.js +10 -0
  215. package/dist/r2-C4XGEWQY.js +10 -0
  216. package/dist/redis-6D55Q2WB.js +8 -0
  217. package/dist/s3-XQBI2CXN.js +8 -0
  218. package/dist/scaleway-SEZJVURB.js +10 -0
  219. package/dist/seaweedfs-3XYIAFU2.js +10 -0
  220. package/dist/slack-ZHXDJQY4.js +8 -0
  221. package/dist/ssh-X2MO7JOV.js +8 -0
  222. package/dist/supabase-BBM44UTM.js +10 -0
  223. package/dist/supabase-BBM44UTM.js.map +1 -0
  224. package/dist/tencent-X72USLJ7.js +10 -0
  225. package/dist/tencent-X72USLJ7.js.map +1 -0
  226. package/dist/trello-EER5NG7L.js +8 -0
  227. package/dist/trello-EER5NG7L.js.map +1 -0
  228. package/dist/wasabi-O4MVIUFG.js +10 -0
  229. package/dist/wasabi-O4MVIUFG.js.map +1 -0
  230. package/package.json +9 -5
  231. package/dist/aliyun-TMZRUYCG.js +0 -10
  232. package/dist/backblaze-OHW57DLK.js +0 -10
  233. package/dist/box-UXTCAFOZ.js +0 -8
  234. package/dist/ceph-TNN4I2FT.js +0 -10
  235. package/dist/chunk-2CC5VW7K.js.map +0 -1
  236. package/dist/chunk-5DLOHQJ2.js.map +0 -1
  237. package/dist/chunk-5HCVKTP3.js +0 -2086
  238. package/dist/chunk-5HCVKTP3.js.map +0 -1
  239. package/dist/chunk-5YOCVEUB.js.map +0 -1
  240. package/dist/chunk-A4Z6DZ22.js.map +0 -1
  241. package/dist/chunk-A7X4L4JM.js.map +0 -1
  242. package/dist/chunk-ABTEGAFB.js.map +0 -1
  243. package/dist/chunk-B2ZOKNN4.js.map +0 -1
  244. package/dist/chunk-C6NHEDHY.js.map +0 -1
  245. package/dist/chunk-CASCUFK2.js.map +0 -1
  246. package/dist/chunk-DP2PP5V2.js.map +0 -1
  247. package/dist/chunk-DTAY7LPC.js.map +0 -1
  248. package/dist/chunk-DYXEITK3.js.map +0 -1
  249. package/dist/chunk-E7RW3SBV.js.map +0 -1
  250. package/dist/chunk-EGB7V74Z.js.map +0 -1
  251. package/dist/chunk-ERELJ7BS.js.map +0 -1
  252. package/dist/chunk-HEHERHQ5.js.map +0 -1
  253. package/dist/chunk-JALIYI6M.js.map +0 -1
  254. package/dist/chunk-JZQHKDSY.js.map +0 -1
  255. package/dist/chunk-LAJJPLEV.js.map +0 -1
  256. package/dist/chunk-LYDMMNL2.js.map +0 -1
  257. package/dist/chunk-MHCMHKM6.js.map +0 -1
  258. package/dist/chunk-N72CAZEH.js +0 -1990
  259. package/dist/chunk-N72CAZEH.js.map +0 -1
  260. package/dist/chunk-NHS7WLEQ.js.map +0 -1
  261. package/dist/chunk-NJMGCT63.js.map +0 -1
  262. package/dist/chunk-OHROA3FQ.js.map +0 -1
  263. package/dist/chunk-OPYQ5KIO.js.map +0 -1
  264. package/dist/chunk-OZAEWZZ3.js.map +0 -1
  265. package/dist/chunk-PBBG7VFT.js +0 -1896
  266. package/dist/chunk-PBBG7VFT.js.map +0 -1
  267. package/dist/chunk-Q2IAILVC.js.map +0 -1
  268. package/dist/chunk-QGRDPSAH.js.map +0 -1
  269. package/dist/chunk-RLGWMJD3.js.map +0 -1
  270. package/dist/chunk-RO5IQEDQ.js.map +0 -1
  271. package/dist/chunk-RQK5UPMP.js.map +0 -1
  272. package/dist/chunk-SFUCUARB.js.map +0 -1
  273. package/dist/chunk-TRTUHCS4.js.map +0 -1
  274. package/dist/chunk-U6QSXTUS.js +0 -7
  275. package/dist/chunk-U6QSXTUS.js.map +0 -1
  276. package/dist/chunk-UGK4TAVK.js.map +0 -1
  277. package/dist/chunk-UT2OPSN4.js.map +0 -1
  278. package/dist/chunk-VGLHY6BK.js.map +0 -1
  279. package/dist/chunk-WSGEIVY3.js +0 -1766
  280. package/dist/chunk-WSGEIVY3.js.map +0 -1
  281. package/dist/chunk-XGJ2QERC.js.map +0 -1
  282. package/dist/chunk-XHCBHYN4.js.map +0 -1
  283. package/dist/chunk-XLQI4IT2.js.map +0 -1
  284. package/dist/chunk-XRU5WXZX.js.map +0 -1
  285. package/dist/chunk-YAVGCQUP.js.map +0 -1
  286. package/dist/chunk-YGZMVNN5.js.map +0 -1
  287. package/dist/chunk-YPT4JBUY.js.map +0 -1
  288. package/dist/chunk-ZNWVJ6UW.js.map +0 -1
  289. package/dist/config-3BBWD5AB.js +0 -11
  290. package/dist/config-4UDVSUQJ.js +0 -11
  291. package/dist/config-CMDBAPDH.js +0 -11
  292. package/dist/config-D3RLSPNF.js +0 -11
  293. package/dist/config-DG65OEG3.js +0 -11
  294. package/dist/config-GCQK6NJY.js +0 -11
  295. package/dist/config-GVH27UPE.js +0 -11
  296. package/dist/config-HXVYIXP5.js +0 -11
  297. package/dist/config-IDZMEW73.js +0 -11
  298. package/dist/config-IJJXGLBQ.js +0 -11
  299. package/dist/config-KJOLGVB2.js +0 -11
  300. package/dist/config-KMVCVBYN.js +0 -15
  301. package/dist/config-KYTRXAB2.js +0 -15
  302. package/dist/config-OT2TQQCN.js +0 -11
  303. package/dist/config-QWCY3LBQ.js +0 -11
  304. package/dist/config-ZV6G2ZEC.js +0 -11
  305. package/dist/databricks_volume-HNQ4DJVJ.js +0 -7
  306. package/dist/digitalocean-6SPR4S7V.js +0 -10
  307. package/dist/discord-SAV2RBJV.js +0 -8
  308. package/dist/disk-POACMF4G.js +0 -8
  309. package/dist/dropbox-CQ7MTYX2.js +0 -8
  310. package/dist/email-KBQ7CXS7.js +0 -8
  311. package/dist/gcs-SMIE4VMT.js +0 -10
  312. package/dist/gdocs-X5Y2SIQX.js +0 -8
  313. package/dist/gdrive-SIQPRIGI.js +0 -8
  314. package/dist/github-KBHWANKQ.js +0 -8
  315. package/dist/github_ci-HPITNK37.js +0 -8
  316. package/dist/gmail-DKHAGJNX.js +0 -8
  317. package/dist/gsheets-ZSUDIWGK.js +0 -8
  318. package/dist/gslides-GYXM7IMJ.js +0 -8
  319. package/dist/hf_buckets-RIOMV7WG.js +0 -10
  320. package/dist/hf_datasets-QF4BQ3OK.js +0 -10
  321. package/dist/hf_models-62GC2HPZ.js +0 -10
  322. package/dist/hf_spaces-NVSMUNRM.js +0 -10
  323. package/dist/langfuse-HUAYVPHF.js +0 -8
  324. package/dist/linear-2MM55KBC.js +0 -8
  325. package/dist/minio-L3XE6PQS.js +0 -10
  326. package/dist/mongodb-ZOX4FRHJ.js +0 -7
  327. package/dist/notion-UK4GTMT4.js +0 -8
  328. package/dist/oci-NURLWPL2.js +0 -10
  329. package/dist/postgres-JNFMPAO2.js +0 -7
  330. package/dist/qingstor-W55D5YFO.js +0 -10
  331. package/dist/r2-FSZK7IFI.js +0 -10
  332. package/dist/redis-S6GIPA4Z.js +0 -8
  333. package/dist/s3-GMPUJ65D.js +0 -8
  334. package/dist/scaleway-5VM55Y6D.js +0 -10
  335. package/dist/seaweedfs-J3EPUEPE.js +0 -10
  336. package/dist/slack-FVBXY7KD.js +0 -8
  337. package/dist/ssh-GCXETJ3Z.js +0 -9
  338. package/dist/supabase-HLWNHBBE.js +0 -10
  339. package/dist/tencent-YDO73XBD.js +0 -10
  340. package/dist/trello-CQ53BQUL.js +0 -8
  341. package/dist/wasabi-SOZKPMRQ.js +0 -10
  342. /package/dist/{aliyun-TMZRUYCG.js.map → aliyun-PGI57A43.js.map} +0 -0
  343. /package/dist/{backblaze-OHW57DLK.js.map → backblaze-TSPL6Y56.js.map} +0 -0
  344. /package/dist/{box-UXTCAFOZ.js.map → box-7XTZYDSO.js.map} +0 -0
  345. /package/dist/{ceph-TNN4I2FT.js.map → ceph-C265UI5T.js.map} +0 -0
  346. /package/dist/{chunk-IQVNVTOP.js.map → chunk-25W4XQJZ.js.map} +0 -0
  347. /package/dist/{chunk-G5BZE7UA.js.map → chunk-4M73WHIE.js.map} +0 -0
  348. /package/dist/{chunk-Q6CDMOM6.js.map → chunk-4X6CLF4F.js.map} +0 -0
  349. /package/dist/{chunk-3IJSIVKT.js.map → chunk-5I7Q7RHW.js.map} +0 -0
  350. /package/dist/{chunk-OYV2DN66.js.map → chunk-BWWU5T2D.js.map} +0 -0
  351. /package/dist/{chunk-AJICZLHT.js.map → chunk-CXQGMFI7.js.map} +0 -0
  352. /package/dist/{chunk-RQYEEA2O.js.map → chunk-DXU7NZPH.js.map} +0 -0
  353. /package/dist/{chunk-L6JPBJAS.js.map → chunk-EGZNOUMH.js.map} +0 -0
  354. /package/dist/{chunk-BYTU2YC3.js.map → chunk-F5NWRF32.js.map} +0 -0
  355. /package/dist/{chunk-FXFDBF3P.js.map → chunk-L4GMDSMB.js.map} +0 -0
  356. /package/dist/{chunk-O7ODGJYL.js.map → chunk-L7FEZ7LU.js.map} +0 -0
  357. /package/dist/{chunk-3T3RMDNX.js.map → chunk-NLXJMXVE.js.map} +0 -0
  358. /package/dist/{chunk-HQ4KWN76.js.map → chunk-SYMNWNC3.js.map} +0 -0
  359. /package/dist/{chunk-PJBQKMCD.js.map → chunk-TUNR4VUM.js.map} +0 -0
  360. /package/dist/{chunk-WL7HS7EM.js.map → chunk-V7JVMG63.js.map} +0 -0
  361. /package/dist/{chunk-C6NHFMIP.js.map → chunk-XADEMW6B.js.map} +0 -0
  362. /package/dist/{chunk-KTNDT45N.js.map → chunk-XEMLYWHK.js.map} +0 -0
  363. /package/dist/{chunk-B6SXRCBO.js.map → chunk-ZM44MGC5.js.map} +0 -0
  364. /package/dist/{config-34LHOGLM.js.map → config-2LASFFRD.js.map} +0 -0
  365. /package/dist/{config-3BBWD5AB.js.map → config-3WDIJPTG.js.map} +0 -0
  366. /package/dist/{config-3IVQJBNW.js.map → config-4QV4QYI5.js.map} +0 -0
  367. /package/dist/{config-4UDVSUQJ.js.map → config-54USUVSE.js.map} +0 -0
  368. /package/dist/{config-CMDBAPDH.js.map → config-5ZXN2T2H.js.map} +0 -0
  369. /package/dist/{config-CVZ2AGCO.js.map → config-A2GQYJDB.js.map} +0 -0
  370. /package/dist/{config-D3RLSPNF.js.map → config-BBOLI7VE.js.map} +0 -0
  371. /package/dist/{config-DG65OEG3.js.map → config-BIBFLUIR.js.map} +0 -0
  372. /package/dist/{config-EIHSP5DZ.js.map → config-CPYFOUQO.js.map} +0 -0
  373. /package/dist/{config-EO23EY62.js.map → config-DWSJL3NH.js.map} +0 -0
  374. /package/dist/{config-GCQK6NJY.js.map → config-E22XAGYN.js.map} +0 -0
  375. /package/dist/{config-GE4W4ZJC.js.map → config-EHE52ZTK.js.map} +0 -0
  376. /package/dist/{config-GHRUKEQ6.js.map → config-EX3ZJTZI.js.map} +0 -0
  377. /package/dist/{config-GVH27UPE.js.map → config-FRK7ZL37.js.map} +0 -0
  378. /package/dist/{config-HKRMKD76.js.map → config-HQXNFQZS.js.map} +0 -0
  379. /package/dist/{config-HXVYIXP5.js.map → config-HTXOOAOD.js.map} +0 -0
  380. /package/dist/{config-IDZMEW73.js.map → config-IPNWAJHH.js.map} +0 -0
  381. /package/dist/{config-IJJXGLBQ.js.map → config-J2C53GOT.js.map} +0 -0
  382. /package/dist/{config-IVY5EQQ2.js.map → config-K63RX6EU.js.map} +0 -0
  383. /package/dist/{config-KJOLGVB2.js.map → config-L7SBSH5L.js.map} +0 -0
  384. /package/dist/{config-KMVCVBYN.js.map → config-LEALEMKA.js.map} +0 -0
  385. /package/dist/{config-KYTRXAB2.js.map → config-M3Z47VYU.js.map} +0 -0
  386. /package/dist/{config-LHFFXVYI.js.map → config-MZM3IPFM.js.map} +0 -0
  387. /package/dist/{config-NV5WXP64.js.map → config-OJ2BPESH.js.map} +0 -0
  388. /package/dist/{config-OT2TQQCN.js.map → config-QO2XUME4.js.map} +0 -0
  389. /package/dist/{config-Q45Y46YT.js.map → config-QWQGOXQ5.js.map} +0 -0
  390. /package/dist/{config-QAA646XB.js.map → config-RI7IEZUF.js.map} +0 -0
  391. /package/dist/{config-QNMKWJ4M.js.map → config-SPW6NESU.js.map} +0 -0
  392. /package/dist/{config-QWCY3LBQ.js.map → config-T2IUIU5C.js.map} +0 -0
  393. /package/dist/{config-VM526IKB.js.map → config-UU27ALAA.js.map} +0 -0
  394. /package/dist/{config-WDAZFXYD.js.map → config-VKKZGC7V.js.map} +0 -0
  395. /package/dist/{config-ZFJYQZCH.js.map → config-W7EVPJNK.js.map} +0 -0
  396. /package/dist/{config-ZV6G2ZEC.js.map → config-WKQ3FGTZ.js.map} +0 -0
  397. /package/dist/{databricks_volume-HNQ4DJVJ.js.map → config-WVILHDFV.js.map} +0 -0
  398. /package/dist/{digitalocean-6SPR4S7V.js.map → config-XU6D5C7E.js.map} +0 -0
  399. /package/dist/{discord-SAV2RBJV.js.map → databricks_volume-ETRDJVVQ.js.map} +0 -0
  400. /package/dist/{disk-POACMF4G.js.map → digitalocean-QP72DR4J.js.map} +0 -0
  401. /package/dist/{dropbox-CQ7MTYX2.js.map → discord-BSN5RB3E.js.map} +0 -0
  402. /package/dist/{email-KBQ7CXS7.js.map → disk-24NWTN2I.js.map} +0 -0
  403. /package/dist/{gcs-SMIE4VMT.js.map → dropbox-OSTZXSIE.js.map} +0 -0
  404. /package/dist/{gdocs-X5Y2SIQX.js.map → email-4ZFPSWIN.js.map} +0 -0
  405. /package/dist/{gdrive-SIQPRIGI.js.map → gcs-PFWR6MIW.js.map} +0 -0
  406. /package/dist/{github-KBHWANKQ.js.map → gdocs-GPAZRQG5.js.map} +0 -0
  407. /package/dist/{github_ci-HPITNK37.js.map → gdrive-XSX6A7B3.js.map} +0 -0
  408. /package/dist/{gmail-DKHAGJNX.js.map → github-EQ4NXUTA.js.map} +0 -0
  409. /package/dist/{gsheets-ZSUDIWGK.js.map → github_ci-QL5B2Q2N.js.map} +0 -0
  410. /package/dist/{gslides-GYXM7IMJ.js.map → gmail-2TBT4CVH.js.map} +0 -0
  411. /package/dist/{hf_buckets-RIOMV7WG.js.map → gridfs-KZRZ6SIB.js.map} +0 -0
  412. /package/dist/{hf_datasets-QF4BQ3OK.js.map → gsheets-N53WEXN2.js.map} +0 -0
  413. /package/dist/{hf_models-62GC2HPZ.js.map → gslides-TATSARTH.js.map} +0 -0
  414. /package/dist/{hf_spaces-NVSMUNRM.js.map → hf_buckets-BK7NGJWS.js.map} +0 -0
  415. /package/dist/{langfuse-HUAYVPHF.js.map → hf_datasets-UQ5QGM4L.js.map} +0 -0
  416. /package/dist/{linear-2MM55KBC.js.map → hf_models-75LFCQCS.js.map} +0 -0
  417. /package/dist/{minio-L3XE6PQS.js.map → hf_spaces-6T2KB3UC.js.map} +0 -0
  418. /package/dist/{mongodb-ZOX4FRHJ.js.map → langfuse-AMQCQWNE.js.map} +0 -0
  419. /package/dist/{notion-UK4GTMT4.js.map → linear-V3TXO6CV.js.map} +0 -0
  420. /package/dist/{oci-NURLWPL2.js.map → minio-IZRZY4C5.js.map} +0 -0
  421. /package/dist/{postgres-JNFMPAO2.js.map → mongodb-VMKPQCPX.js.map} +0 -0
  422. /package/dist/{qingstor-W55D5YFO.js.map → nextcloud-5RHQCGDO.js.map} +0 -0
  423. /package/dist/{r2-FSZK7IFI.js.map → notion-6PPNTQFM.js.map} +0 -0
  424. /package/dist/{redis-S6GIPA4Z.js.map → oci-CKYBSFZJ.js.map} +0 -0
  425. /package/dist/{s3-GMPUJ65D.js.map → postgres-WIQBVL5M.js.map} +0 -0
  426. /package/dist/{scaleway-5VM55Y6D.js.map → qingstor-AP4IIPLY.js.map} +0 -0
  427. /package/dist/{seaweedfs-J3EPUEPE.js.map → r2-C4XGEWQY.js.map} +0 -0
  428. /package/dist/{slack-FVBXY7KD.js.map → redis-6D55Q2WB.js.map} +0 -0
  429. /package/dist/{ssh-GCXETJ3Z.js.map → s3-XQBI2CXN.js.map} +0 -0
  430. /package/dist/{supabase-HLWNHBBE.js.map → scaleway-SEZJVURB.js.map} +0 -0
  431. /package/dist/{tencent-YDO73XBD.js.map → seaweedfs-3XYIAFU2.js.map} +0 -0
  432. /package/dist/{trello-CQ53BQUL.js.map → slack-ZHXDJQY4.js.map} +0 -0
  433. /package/dist/{wasabi-SOZKPMRQ.js.map → ssh-X2MO7JOV.js.map} +0 -0
package/dist/index.d.ts CHANGED
@@ -1,27 +1,50 @@
1
- import { Workspace as Workspace$1, Resource, WorkspaceOptions, ExecuteOptions, ExecuteResult, ProvisionResult, Accessor, BaseResource, RegisteredOp, RegisteredCommand, PathSpec, FileStat, FindOptions, REDACTED_SECRET, CommandOpts, FileCache, OpRecord, S3Config as S3Config$1, S3ConfigRedacted as S3ConfigRedacted$1, S3Accessor, DatabricksVolumeConfig, DatabricksVolumeAccessor, DatabricksVolumeConfigRedacted, ResourceName, PgDriver, PostgresConfigResolved, PgQueryResult, PostgresAccessor, PostgresConfig, MongoDriver, EntityKind, MongoCollectionSpec, MongoFindOptions, MongoIterOptions, MongoIndexAccess, MongoDBConfigResolved, MongoDBAccessor, MongoDBConfig, LanceDriver, LanceDBConfigResolved, LanceRow, LanceDBAccessor, LanceDBConfig, SlackAccessor, DiscordAccessor, TrelloAccessor, LinearAccessor, NotionAccessor, LangfuseAccessor, GitHubAccessor, GitHubCIAccessor, GDocsAccessor, GSheetsAccessor, GSlidesAccessor, GDriveAccessor, DropboxAccessor, BoxAccessor, GoogleConfig, GmailAccessor, GoogleConfigRedacted } from '@struktoai/mirage-core';
1
+ import { Resource, MountMode, CommandSafeguard, WorkspaceOptions, Workspace as Workspace$1, MountSpec, ExecuteOptions, ExecuteResult, ProvisionResult, Accessor, BaseResource, RegisteredOp, RegisteredCommand, PathSpec, FileStat, FindOptions, ObserverStore, NamespaceStore, NodeFields, SessionStore, SessionFields, WorkspaceStateStore, WorkspaceStateStoreOverrides, WorkspaceFields, REDACTED_SECRET, CommandOpts, FileCache, Session, OpRecord, S3Config as S3Config$1, S3ConfigRedacted as S3ConfigRedacted$1, S3Accessor, DatabricksVolumeConfig, DatabricksVolumeAccessor, DatabricksVolumeConfigRedacted, ResourceName, PgDriver, PostgresConfigResolved, PgQueryResult, PostgresAccessor, PostgresConfig, MongoDriver, EntityKind, MongoCollectionSpec, MongoFindOptions, MongoIterOptions, MongoIndexAccess, MongoDBConfigResolved, MongoDBAccessor, MongoDBConfig, LanceDriver, LanceDBConfigResolved, LanceRow, LanceDBAccessor, LanceDBConfig, SlackAccessor, DiscordAccessor, TrelloAccessor, LinearAccessor, NotionAccessor, LangfuseAccessor, GitHubAccessor, GitHubCIAccessor, GDocsAccessor, GSheetsAccessor, GSlidesAccessor, GDriveAccessor, DropboxAccessor, BoxAccessor, GoogleConfig, GmailAccessor, GoogleConfigRedacted } from '@struktoai/mirage-core';
2
2
  export * from '@struktoai/mirage-core';
3
3
  export { GoogleConfig as GmailConfig, GoogleConfigRedacted as GmailConfigRedacted, normalizeGoogleConfig as normalizeGmailConfig, redactGoogleConfig as redactGmailConfig } from '@struktoai/mirage-core';
4
+ import { FileHandle } from 'node:fs/promises';
4
5
  import { RedisClientType } from 'redis';
6
+ import { MongoClient, Db } from 'mongodb';
5
7
  import { Operator } from 'opendal';
6
8
  import { SFTPWrapper } from 'ssh2';
7
9
  import { ImapFlow } from 'imapflow';
8
10
 
9
- interface NodeWorkspaceOptions extends WorkspaceOptions {
10
- /**
11
- * Per-mount FUSE exposure: `{ '/data': true, '/s3': '/tmp/s3' }`. A value of
12
- * `true` mounts at a fresh temp dir; a string pins the mountpoint (created if
13
- * missing). Each entry becomes its own FUSE mount scoped to that prefix.
14
- */
15
- fuseMounts?: Record<string, boolean | string>;
11
+ interface MountSpecOptions {
12
+ /** Per-mount mode override; falls back to the workspace default when unset. */
13
+ mode?: MountMode;
14
+ /** `true` mounts at a temp dir; a string pins the mountpoint to that path. */
15
+ fuse?: boolean | string;
16
+ commandSafeguards?: Record<string, CommandSafeguard>;
16
17
  }
18
+ declare class Mount {
19
+ readonly resource: Resource;
20
+ readonly options: MountSpecOptions;
21
+ constructor(resource: Resource, options?: MountSpecOptions);
22
+ }
23
+
24
+ type NodeWorkspaceOptions = WorkspaceOptions;
17
25
  declare class Workspace extends Workspace$1 {
18
- private readonly autoFuseManagers;
19
- private readonly fuseMountpointsMap;
20
26
  private fuseSetupPromise;
21
- constructor(resources: Record<string, Resource>, options?: NodeWorkspaceOptions);
22
- /** Map each FUSE-exposed mount prefix to its live mountpoint. */
27
+ private readonly fuseMountpointsMap;
28
+ private readonly fuseManagers;
29
+ constructor(resources: Record<string, MountSpec | Mount>, options?: NodeWorkspaceOptions);
30
+ private registerFuseMount;
31
+ /**
32
+ * Mount a workspace subtree under FUSE and own its lifecycle. Each mount gets
33
+ * its own {@link FuseManager}, so a workspace can expose any number of FUSE
34
+ * subtrees at once. A pinned mountpoint is collision-checked BEFORE mounting,
35
+ * so a clash never leaves a partial kernel mount.
36
+ *
37
+ * A session-bound mount (`sessionId` given) runs every op under that
38
+ * session's mount grants (the kernel-tier primitive: bind-mount the tree
39
+ * into a container and the narrowing travels with it); it is keyed
40
+ * separately so the same prefix can also be exposed unbound.
41
+ */
42
+ addFuseMount(prefix: string, mountpoint?: string, sessionId?: string): Promise<string>;
43
+ removeFuseMount(prefix: string, sessionId?: string): Promise<void>;
23
44
  get fuseMountpoints(): Record<string, string>;
24
- private ensureFuseReady;
45
+ get fuseMountpoint(): string | null;
46
+ /** Await the eager per-mount fuse mounts started in the constructor. */
47
+ fuseReady(): Promise<void>;
25
48
  execute(command: string, options?: ExecuteOptions & {
26
49
  provision?: false | undefined;
27
50
  }): Promise<ExecuteResult>;
@@ -43,10 +66,11 @@ interface DiskResourceOptions {
43
66
  interface DiskResourceState {
44
67
  type: string;
45
68
  files: Record<string, Uint8Array>;
69
+ modes?: Record<string, number>;
46
70
  }
47
71
  declare class DiskResource extends BaseResource implements Resource {
48
72
  readonly kind: "disk";
49
- readonly isRemote: boolean;
73
+ readonly cachesReads: boolean;
50
74
  readonly indexTtl: number;
51
75
  readonly prompt = "{prefix}\n Local disk filesystem. Mirrors the configured root directory.\n Standard commands: ls, cat, head, tail, grep, wc, find, tree, mkdir, touch, cp, mv, rm, tee.";
52
76
  readonly root: string;
@@ -75,7 +99,6 @@ declare class DiskResource extends BaseResource implements Resource {
75
99
  rmR(p: PathSpec): Promise<void>;
76
100
  du(p: PathSpec): Promise<number>;
77
101
  find(p: PathSpec, options?: FindOptions): Promise<string[]>;
78
- fingerprint(p: PathSpec): Promise<string | null>;
79
102
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
80
103
  getState(): Promise<DiskResourceState>;
81
104
  loadState(state: DiskResourceState): Promise<void>;
@@ -85,6 +108,279 @@ declare const DISK_PROMPT = "{prefix}\n Local disk filesystem. Mirrors the conf
85
108
 
86
109
  declare const DISK_OPS: readonly RegisteredOp[];
87
110
 
111
+ /**
112
+ * ObserverStore backed by a directory of JSONL files. Created lazily on
113
+ * first append. Mirrors the Python DiskObserverStore.
114
+ */
115
+ declare class DiskObserverStore implements ObserverStore {
116
+ private readonly root;
117
+ constructor(root: string);
118
+ private abs;
119
+ append(key: string, data: Uint8Array): Promise<void>;
120
+ write(key: string, data: Uint8Array): Promise<void>;
121
+ readAll(): Promise<Map<string, Uint8Array>>;
122
+ readMatching(suffix: string): Promise<Map<string, Uint8Array>>;
123
+ clear(): Promise<void>;
124
+ close(): Promise<void>;
125
+ private walk;
126
+ }
127
+
128
+ interface RedisObserverStoreOptions {
129
+ url?: string;
130
+ keyPrefix?: string;
131
+ }
132
+ /**
133
+ * ObserverStore backed by Redis strings (one key per JSONL file).
134
+ *
135
+ * Appends use the atomic Redis APPEND command; an index set tracks which
136
+ * file keys exist so readAll needs no SCAN. Mirrors the Python
137
+ * RedisObserverStore.
138
+ */
139
+ declare class RedisObserverStore implements ObserverStore {
140
+ readonly url: string;
141
+ private readonly prefix;
142
+ private readonly indexKey;
143
+ private clientPromise;
144
+ constructor(options?: RedisObserverStoreOptions);
145
+ private client;
146
+ append(key: string, data: Uint8Array): Promise<void>;
147
+ write(key: string, data: Uint8Array): Promise<void>;
148
+ readAll(): Promise<Map<string, Uint8Array>>;
149
+ readMatching(suffix: string): Promise<Map<string, Uint8Array>>;
150
+ private indexedPaths;
151
+ private readPaths;
152
+ clear(): Promise<void>;
153
+ close(): Promise<void>;
154
+ }
155
+
156
+ /**
157
+ * NamespaceStore backed by one `namespace.json` per workspace.
158
+ *
159
+ * The whole plane is one human-readable record
160
+ * `{"nodes": {path: fields}, "user": ...}`: the namespace is bound to
161
+ * the workspace, so it serializes as one JSON file, not per-node
162
+ * files. Read-modify-writes take the record's lockfile so concurrent
163
+ * local processes never lose a node upsert; the write itself stays
164
+ * tmp-then-rename atomic, so readers never see a torn file. Mirrors
165
+ * the Python DiskNamespaceStore byte-for-byte on disk.
166
+ */
167
+ declare class DiskNamespaceStore extends NamespaceStore {
168
+ private readonly records;
169
+ constructor(root: string);
170
+ private state;
171
+ private write;
172
+ load(): Promise<Map<string, NodeFields>>;
173
+ set(path: string, fields: NodeFields): Promise<void>;
174
+ delete(paths: readonly string[]): Promise<void>;
175
+ replaceAll(entries: Map<string, NodeFields>): Promise<void>;
176
+ loadUser(): Promise<string | null>;
177
+ setUser(user: string): Promise<void>;
178
+ clear(): Promise<void>;
179
+ close(): Promise<void>;
180
+ }
181
+
182
+ interface RedisNamespaceStoreOptions {
183
+ url?: string;
184
+ keyPrefix?: string;
185
+ }
186
+ /**
187
+ * NamespaceStore backed by one Redis hash (path -> JSON fields).
188
+ *
189
+ * Symlinks and attribute overlays survive process restarts and are visible
190
+ * to any workspace pointed at the same key prefix. Writes are
191
+ * single-command (HSET/HDEL) so mutations stay one round trip. Mirrors the
192
+ * Python RedisNamespaceStore.
193
+ */
194
+ declare class RedisNamespaceStore extends NamespaceStore {
195
+ readonly url: string;
196
+ private readonly key;
197
+ private readonly userKey;
198
+ private clientPromise;
199
+ constructor(options?: RedisNamespaceStoreOptions);
200
+ private client;
201
+ load(): Promise<Map<string, NodeFields>>;
202
+ set(path: string, fields: NodeFields): Promise<void>;
203
+ delete(paths: readonly string[]): Promise<void>;
204
+ replaceAll(entries: Map<string, NodeFields>): Promise<void>;
205
+ loadUser(): Promise<string | null>;
206
+ setUser(user: string): Promise<void>;
207
+ clear(): Promise<void>;
208
+ close(): Promise<void>;
209
+ }
210
+
211
+ /**
212
+ * One JSON-record-per-file client with lockfile CAS.
213
+ *
214
+ * The disk twin of `S3RecordClient`: a record is one file at
215
+ * `{root}/{prefix}{name}.json`, written atomically (tmp then rename(2))
216
+ * so readers never see a torn record. The conditional write serializes
217
+ * on a `{record}.lock` created with O_CREAT|O_EXCL, so compare and
218
+ * write hit the same stored version. Record names are percent-encoded
219
+ * into filenames, so any id is safe. Mirrors the Python
220
+ * DiskRecordClient byte-for-byte on disk.
221
+ */
222
+ declare class DiskRecordClient {
223
+ private readonly dir;
224
+ constructor(root: string, prefix: string);
225
+ recordPath(name: string): string;
226
+ get(name: string): Promise<[Record<string, unknown> | null, string]>;
227
+ put(name: string, fields: Record<string, unknown>): Promise<void>;
228
+ /**
229
+ * Write one record iff its stored generation matches.
230
+ *
231
+ * Take the record's lockfile, re-read under the lock, check the
232
+ * generation, then tmp-write + rename. Losing the lock race or the
233
+ * generation check resolves false; the caller adopts and retries.
234
+ */
235
+ casPut(name: string, fields: Record<string, unknown>, expectedGeneration: number): Promise<boolean>;
236
+ listNames(): Promise<string[]>;
237
+ loadAll(): Promise<Map<string, Record<string, unknown>>>;
238
+ delete(names: Iterable<string>): Promise<void>;
239
+ clear(): Promise<void>;
240
+ close(): Promise<void>;
241
+ /**
242
+ * Block until this record's lockfile is held; handle to release.
243
+ *
244
+ * For callers doing a read-modify-write that is not generation-CAS
245
+ * (e.g. the single-file namespace plane); spins past contention and
246
+ * reclaims stale locks, throwing only if a live writer holds the
247
+ * lock for the whole retry budget (~10s).
248
+ */
249
+ lock(name: string): Promise<FileHandle>;
250
+ unlock(name: string, fh: FileHandle): Promise<void>;
251
+ private acquireLock;
252
+ private reclaimStaleLock;
253
+ private releaseLock;
254
+ private writeRecord;
255
+ }
256
+ /**
257
+ * SessionStore backed by per-session files under one directory.
258
+ *
259
+ * One file per session at `{root}/sessions/{session_id}.json`, lockfile
260
+ * CAS per record, so multiple local processes share one session table
261
+ * with the same generation contract as the Redis Lua script, with zero
262
+ * infrastructure. Mirrors the Python DiskSessionStore.
263
+ */
264
+ declare class DiskSessionStore extends SessionStore {
265
+ private readonly records;
266
+ constructor(root: string);
267
+ load(): Promise<Map<string, SessionFields>>;
268
+ set(sessionId: string, fields: SessionFields): Promise<void>;
269
+ casSet(sessionId: string, fields: SessionFields, expectedGeneration: number): Promise<boolean>;
270
+ delete(sessionIds: readonly string[]): Promise<void>;
271
+ replaceAll(entries: Map<string, SessionFields>): Promise<void>;
272
+ clear(): Promise<void>;
273
+ close(): Promise<void>;
274
+ }
275
+
276
+ interface RedisSessionStoreOptions {
277
+ url?: string;
278
+ keyPrefix?: string;
279
+ }
280
+ /**
281
+ * SessionStore backed by one Redis hash (session id -> JSON fields).
282
+ *
283
+ * Sessions and the mount grants they carry survive restarts and are
284
+ * visible to every workspace pointed at the same key prefix — the seam
285
+ * that lets one process create a session and another (a kernel tier, a
286
+ * sibling daemon) bind a mountpoint to it. Writes are single-command
287
+ * (HSET/HDEL) so mutations stay one round trip. Mirrors the Python
288
+ * RedisSessionStore.
289
+ */
290
+ declare class RedisSessionStore extends SessionStore {
291
+ readonly url: string;
292
+ private readonly key;
293
+ private clientPromise;
294
+ constructor(options?: RedisSessionStoreOptions);
295
+ private client;
296
+ casSet(sessionId: string, fields: SessionFields, expectedGeneration: number): Promise<boolean>;
297
+ load(): Promise<Map<string, SessionFields>>;
298
+ set(sessionId: string, fields: SessionFields): Promise<void>;
299
+ delete(sessionIds: readonly string[]): Promise<void>;
300
+ replaceAll(entries: Map<string, SessionFields>): Promise<void>;
301
+ clear(): Promise<void>;
302
+ close(): Promise<void>;
303
+ }
304
+
305
+ declare const DEFAULT_STATE_ROOT = "~/.mirage/state";
306
+ interface DiskWorkspaceStateStoreOptions extends WorkspaceStateStoreOverrides {
307
+ root?: string;
308
+ }
309
+ /**
310
+ * WorkspaceStateStore backed by a directory tree.
311
+ *
312
+ * Each workspace is one self-contained directory (delete a workspace
313
+ * by removing its folder):
314
+ *
315
+ * - `{root}/workspaces/{ws}/workspace.json` — metadata record
316
+ * - `{root}/workspaces/{ws}/sessions/{sid}.json` — session table
317
+ * - `{root}/workspaces/{ws}/namespace.json` — nodes + user, one JSON
318
+ * - `{root}/workspaces/{ws}/history/<day>/<sid>.jsonl` — history
319
+ *
320
+ * The layout mirrors the S3 store file-for-object; mutable records get
321
+ * the same generation-CAS contract via the lockfile protocol
322
+ * (O_CREAT|O_EXCL mutex, tmp write, rename(2)), so multiple local
323
+ * processes share one workspace with zero infrastructure: a CLI-created
324
+ * workspace survives restart like `git init`. Local filesystems only;
325
+ * anything cross-machine belongs on redis or s3. Mirrors the Python
326
+ * DiskWorkspaceStateStore byte-for-byte on disk.
327
+ */
328
+ declare class DiskWorkspaceStateStore extends WorkspaceStateStore {
329
+ private readonly root;
330
+ private readonly meta;
331
+ private readonly namespaces;
332
+ private readonly observers;
333
+ private readonly sessionTables;
334
+ constructor(options?: DiskWorkspaceStateStoreOptions);
335
+ private wsRoot;
336
+ private metaClient;
337
+ protected makeNamespace(workspaceId: string): NamespaceStore;
338
+ protected makeObserver(workspaceId: string): ObserverStore;
339
+ protected makeSessions(workspaceId: string): SessionStore;
340
+ protected readMeta(workspaceId: string): Promise<WorkspaceFields | null>;
341
+ protected writeMeta(workspaceId: string, fields: WorkspaceFields): Promise<void>;
342
+ protected casWriteMeta(workspaceId: string, fields: WorkspaceFields, expectedGeneration: number): Promise<boolean>;
343
+ protected closeSelf(): Promise<void>;
344
+ }
345
+
346
+ interface RedisWorkspaceStateStoreOptions extends WorkspaceStateStoreOverrides {
347
+ url?: string;
348
+ keyPrefix?: string;
349
+ }
350
+ /**
351
+ * WorkspaceStateStore backed by one Redis server.
352
+ *
353
+ * Key layout under one prefix, everything scoped by workspace id:
354
+ *
355
+ * - `{prefix}workspaces` — hash, workspace id -> metadata JSON
356
+ * - `{prefix}{ws}:namespace:nodes` (+ `:user`) — namespace plane
357
+ * - `{prefix}{ws}:observer:*` — observer plane
358
+ * - `{prefix}{ws}:sessions` — session table
359
+ *
360
+ * All plane state survives restarts and is visible to every process
361
+ * pointed at the same url and prefix, so a workspace rebuilt from its
362
+ * config alone gets identical overlays, history, sessions, and grants.
363
+ * Mirrors the Python RedisWorkspaceStateStore.
364
+ */
365
+ declare class RedisWorkspaceStateStore extends WorkspaceStateStore {
366
+ readonly url: string;
367
+ private readonly prefix;
368
+ private readonly metaKey;
369
+ private clientPromise;
370
+ private readonly namespaces;
371
+ private readonly observers;
372
+ private readonly sessionTables;
373
+ constructor(options?: RedisWorkspaceStateStoreOptions);
374
+ private client;
375
+ protected makeNamespace(workspaceId: string): NamespaceStore;
376
+ protected makeObserver(workspaceId: string): ObserverStore;
377
+ protected makeSessions(workspaceId: string): SessionStore;
378
+ protected readMeta(workspaceId: string): Promise<WorkspaceFields | null>;
379
+ protected writeMeta(workspaceId: string, fields: WorkspaceFields): Promise<void>;
380
+ protected casWriteMeta(workspaceId: string, fields: WorkspaceFields, expectedGeneration: number): Promise<boolean>;
381
+ protected closeSelf(): Promise<void>;
382
+ }
383
+
88
384
  /**
89
385
  * Monkey-patch Node's `fs` module so that paths under any mirage mount
90
386
  * route through the workspace. Paths NOT under a mount fall through to
@@ -109,6 +405,7 @@ declare class RedisStore {
109
405
  fk(path: string): string;
110
406
  dk(): string;
111
407
  mk(path: string): string;
408
+ ak(path: string): string;
112
409
  client(): Promise<RedisClientType>;
113
410
  getFile(path: string): Promise<Uint8Array | null>;
114
411
  setFile(path: string, data: Uint8Array): Promise<void>;
@@ -116,7 +413,6 @@ declare class RedisStore {
116
413
  hasFile(path: string): Promise<boolean>;
117
414
  listFiles(prefix?: string): Promise<string[]>;
118
415
  fileLen(path: string): Promise<number>;
119
- getRange(path: string, start: number, end: number): Promise<Uint8Array>;
120
416
  hasDir(path: string): Promise<boolean>;
121
417
  addDir(path: string): Promise<void>;
122
418
  removeDir(path: string): Promise<void>;
@@ -124,6 +420,9 @@ declare class RedisStore {
124
420
  getModified(path: string): Promise<string | null>;
125
421
  setModified(path: string, ts: string): Promise<void>;
126
422
  delModified(path: string): Promise<void>;
423
+ getAttrs(path: string): Promise<Record<string, string>>;
424
+ setAttrs(path: string, fields: Record<string, string>): Promise<void>;
425
+ delAttrs(path: string): Promise<void>;
127
426
  clear(): Promise<void>;
128
427
  close(): Promise<void>;
129
428
  }
@@ -154,10 +453,12 @@ interface RedisResourceState {
154
453
  keyPrefix: string;
155
454
  files: Record<string, Uint8Array>;
156
455
  dirs: string[];
456
+ attrs?: Record<string, Record<string, string>>;
457
+ modified?: Record<string, string>;
157
458
  }
158
459
  declare class RedisResource extends BaseResource implements Resource {
159
460
  readonly kind: string;
160
- readonly isRemote: boolean;
461
+ readonly cachesReads: boolean;
161
462
  readonly indexTtl: number;
162
463
  readonly prompt: string;
163
464
  readonly url: string;
@@ -214,9 +515,13 @@ declare class RedisFileCacheStore extends RedisResource implements FileCache {
214
515
  private readonly limit;
215
516
  private readonly dataPrefix;
216
517
  private readonly metaPrefix;
217
- maxDrainBytes: number | null;
518
+ private maxDrainBytesValue;
519
+ readonly drainTasks: Map<string, Promise<void>>;
218
520
  constructor(options?: RedisFileCacheOptions);
219
- readonly cacheSize = 0;
521
+ get maxDrainBytes(): number | null;
522
+ set maxDrainBytes(value: number | null);
523
+ readonly cacheSize: number | null;
524
+ readonly cacheEntries: number | null;
220
525
  get cacheLimit(): number;
221
526
  cacheClient(): Promise<RedisClientType>;
222
527
  get(key: string): Promise<Uint8Array | null>;
@@ -238,13 +543,17 @@ declare class RedisFileCacheStore extends RedisResource implements FileCache {
238
543
 
239
544
  interface FuseHandle {
240
545
  mountpoint: string;
546
+ /** Whether Mirage created this mountpoint directory and may remove it later. */
547
+ ownsMountpoint: boolean;
241
548
  unmount: () => Promise<void>;
242
549
  }
243
550
  interface MountOptions {
551
+ /** Caller/deployment-owned mountpoint. Mirage mounts here but does not delete it. */
244
552
  mountpoint?: string;
245
- agentId?: string;
246
553
  /** Scope the mount to a single workspace mount prefix (subtree exposure). */
247
554
  rootPrefix?: string;
555
+ /** Run every op under this session's mount grants (session-bound mountpoint). */
556
+ session?: Session;
248
557
  /**
249
558
  * When true, `@zkochan/fuse-native`'s `autoUnmount` flag is set so the
250
559
  * kernel releases the mount if the process exits abnormally. Defaults to
@@ -253,7 +562,11 @@ interface MountOptions {
253
562
  * FuseManager runs `diskutil unmount force` instead.
254
563
  */
255
564
  autoUnmount?: boolean;
256
- /** Extra options forwarded verbatim to `@zkochan/fuse-native`. */
565
+ /**
566
+ * Extra options forwarded verbatim to `@zkochan/fuse-native`.
567
+ * `directIO: false` additionally skips the `direct_io` mount option that
568
+ * Mirage appends by default (see appendDirectIO).
569
+ */
257
570
  fuseOptions?: Record<string, unknown>;
258
571
  }
259
572
  declare function mount(ws: Workspace$1, options?: MountOptions): Promise<FuseHandle>;
@@ -261,14 +574,11 @@ declare function mountBackground(ws: Workspace$1, options?: MountOptions): Promi
261
574
 
262
575
  declare class FuseManager {
263
576
  private handle;
264
- private externalMountpoint;
265
- private auto;
266
577
  private cleanupEntry;
267
578
  get mountpoint(): string | null;
268
- set mountpoint(path: string | null);
269
579
  setup(ws: Workspace$1, options?: MountOptions): Promise<string>;
270
- unmount(ws?: Workspace$1): Promise<void>;
271
- close(ws?: Workspace$1): Promise<void>;
580
+ unmount(): Promise<void>;
581
+ close(): Promise<void>;
272
582
  }
273
583
 
274
584
  interface FuseAttr {
@@ -282,36 +592,59 @@ interface FuseAttr {
282
592
  gid: number;
283
593
  }
284
594
  interface MirageFSOptions {
285
- agentId?: string;
286
595
  rootPrefix?: string;
596
+ /**
597
+ * Bind every FUSE op to this session's mount grants. The kernel-tier
598
+ * primitive: bind-mount the tree into a container and the narrowing
599
+ * travels with it. Enforcement happens inside dispatch/Ops via the
600
+ * session context, so binding at the op entry point is sufficient.
601
+ */
602
+ session?: Session;
287
603
  }
288
604
  declare class MirageFS {
289
605
  private readonly ws;
290
- readonly agentId: string;
291
606
  private readonly now;
292
607
  private readonly root;
293
608
  private readonly prefixes;
294
609
  private readonly handles;
610
+ private readonly xattrs;
295
611
  private readonly prefetchCache;
296
612
  private readonly prefetchInflight;
297
613
  private nextFh;
298
614
  private readonly uid;
299
615
  private readonly gid;
616
+ private readonly session;
300
617
  constructor(ws: Workspace$1, options?: MirageFSOptions);
301
618
  private resolve;
302
- private whoamiContent;
303
619
  private dirStat;
304
620
  private fileStat;
621
+ /**
622
+ * Fold merged stat attributes into a FUSE attr. The workspace stat
623
+ * already carries the namespace overlay (chmod bits, chown ids, touched
624
+ * mtime), so honoring these fields here is what makes metadata ops
625
+ * visible over FUSE. String uid/gid (names) are skipped: FUSE wants
626
+ * numeric ids and there is no user db to map against.
627
+ */
628
+ private applyStatAttrs;
629
+ /**
630
+ * The target to present for a namespace link at a FUSE path, or null
631
+ * when not a link. Relative targets are stored verbatim and returned
632
+ * as-is. Absolute targets name virtual paths, so they are rewritten
633
+ * relative to the link's directory: returned raw, the kernel would
634
+ * resolve them against the host root and escape the mountpoint.
635
+ */
636
+ private linkTarget;
637
+ private linkStat;
305
638
  private isVirtualDir;
306
639
  private virtualChildren;
307
640
  private cachedSize;
308
641
  private cachedData;
309
642
  /**
310
- * Fetch bytes for a size-unknown file and cache them so the immediate
311
- * getattr → open → read burst (and subsequent stats within the TTL) reuse
312
- * the same fetch. Required because @zkochan/fuse-native doesn't expose
313
- * libfuse's `direct_io` flag — without a real size from getattr, the kernel
314
- * decides the file is empty and never issues read().
643
+ * Fetch bytes for a size-unknown file and cache them so the open → read →
644
+ * fstat burst (and subsequent stats within the TTL) reuse the same fetch.
645
+ * With getattr reporting 0 pre-open, this hydration is what lets fgetattr
646
+ * answer with the real byte length after open (mirrors Python's
647
+ * `_prefetch_read`).
315
648
  */
316
649
  private prefetch;
317
650
  /** Drain and return accumulated op records (mirrors Python's drain_ops). */
@@ -325,6 +658,15 @@ declare class MirageFS {
325
658
  private write;
326
659
  private create;
327
660
  private mkdir;
661
+ private readlink;
662
+ /**
663
+ * Create namespace link `dest -> src` (ln -s src dest; libfuse passes
664
+ * the pointee first). Relative sources are stored verbatim (resolved
665
+ * at follow time, exactly like the shell `ln -s`); absolute sources
666
+ * are mapped into virtual space so a scoped mount stores the path it
667
+ * will later follow.
668
+ */
669
+ private symlink;
328
670
  private unlink;
329
671
  private rename;
330
672
  private rmdir;
@@ -334,6 +676,10 @@ declare class MirageFS {
334
676
  private chown;
335
677
  private utimens;
336
678
  private access;
679
+ private setxattr;
680
+ private getxattr;
681
+ private listxattr;
682
+ private removexattr;
337
683
  private getattrValidate;
338
684
  private open;
339
685
  private release;
@@ -357,7 +703,7 @@ interface S3ResourceState {
357
703
  }
358
704
  declare class S3Resource extends BaseResource implements Resource {
359
705
  readonly kind: string;
360
- readonly isRemote: boolean;
706
+ readonly cachesReads: boolean;
361
707
  readonly supportsSnapshot: boolean;
362
708
  readonly indexTtl: number;
363
709
  readonly prompt: string;
@@ -386,18 +732,83 @@ declare class S3Resource extends BaseResource implements Resource {
386
732
  du(p: PathSpec): Promise<number>;
387
733
  find(p: PathSpec, options?: FindOptions): Promise<string[]>;
388
734
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
389
- fingerprint(p: PathSpec): Promise<string | null>;
390
735
  getState(): Promise<S3ResourceState>;
391
736
  loadState(_state: S3ResourceState): Promise<void>;
392
737
  }
393
738
 
739
+ interface GridFSConfig {
740
+ uri: string;
741
+ database: string;
742
+ bucket?: string;
743
+ keyPrefix?: string;
744
+ chunkSizeBytes?: number;
745
+ }
746
+ interface GridFSConfigRedacted extends Omit<GridFSConfig, 'uri'> {
747
+ uri?: string;
748
+ }
749
+ /**
750
+ * Translate Python-style snake_case keys (as used in YAML configs and the
751
+ * Python `GridFSConfig`) to the TS-idiomatic camelCase fields, and
752
+ * normalize the key prefix the way the accessor expects.
753
+ */
754
+ declare function normalizeGridFSConfig(input: Record<string, unknown>): GridFSConfig;
755
+
756
+ declare class GridFSAccessor extends Accessor {
757
+ readonly config: GridFSConfig;
758
+ private clientPromise;
759
+ constructor(config: GridFSConfig);
760
+ client(): Promise<MongoClient>;
761
+ db(): Promise<Db>;
762
+ private _connect;
763
+ close(): Promise<void>;
764
+ }
765
+
766
+ interface GridFSResourceState {
767
+ type: string;
768
+ config: GridFSConfigRedacted;
769
+ }
770
+ declare class GridFSResource extends BaseResource implements Resource {
771
+ readonly kind: string;
772
+ readonly cachesReads: boolean;
773
+ readonly supportsSnapshot: boolean;
774
+ readonly indexTtl: number;
775
+ readonly prompt: string;
776
+ readonly config: GridFSConfig;
777
+ readonly accessor: GridFSAccessor;
778
+ readonly opsMap: Record<string, unknown>;
779
+ constructor(config: GridFSConfig);
780
+ open(): Promise<void>;
781
+ close(): Promise<void>;
782
+ commands(): readonly RegisteredCommand[];
783
+ ops(): readonly RegisteredOp[];
784
+ streamPath(p: PathSpec): AsyncIterable<Uint8Array>;
785
+ readFile(p: PathSpec): Promise<Uint8Array>;
786
+ writeFile(p: PathSpec, data: Uint8Array): Promise<void>;
787
+ appendFile(p: PathSpec, data: Uint8Array): Promise<void>;
788
+ readdir(p: PathSpec): Promise<string[]>;
789
+ stat(p: PathSpec): Promise<FileStat>;
790
+ exists(p: PathSpec): Promise<boolean>;
791
+ mkdir(p: PathSpec): Promise<void>;
792
+ rmdir(p: PathSpec): Promise<void>;
793
+ unlink(p: PathSpec): Promise<void>;
794
+ rename(src: PathSpec, dst: PathSpec): Promise<void>;
795
+ truncate(p: PathSpec, length: number): Promise<void>;
796
+ copy(src: PathSpec, dst: PathSpec): Promise<void>;
797
+ rmR(p: PathSpec): Promise<void>;
798
+ du(p: PathSpec): Promise<number>;
799
+ find(p: PathSpec, options?: FindOptions): Promise<string[]>;
800
+ glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
801
+ getState(): Promise<GridFSResourceState>;
802
+ loadState(_state: GridFSResourceState): Promise<void>;
803
+ }
804
+
394
805
  interface DatabricksVolumeResourceState {
395
806
  type: string;
396
807
  config: DatabricksVolumeConfigRedacted;
397
808
  }
398
809
  declare class DatabricksVolumeResource extends BaseResource implements Resource {
399
810
  readonly kind: string;
400
- readonly isRemote: boolean;
811
+ readonly cachesReads: boolean;
401
812
  readonly indexTtl: number;
402
813
  readonly prompt: string;
403
814
  readonly config: DatabricksVolumeConfig;
@@ -444,6 +855,7 @@ interface GCSConfig {
444
855
  region?: string;
445
856
  timeoutMs?: number;
446
857
  forcePathStyle?: boolean;
858
+ keyPrefix?: string;
447
859
  }
448
860
  interface GCSConfigRedacted {
449
861
  bucket: string;
@@ -452,6 +864,8 @@ interface GCSConfigRedacted {
452
864
  endpoint: string;
453
865
  region: string;
454
866
  timeoutMs?: number;
867
+ forcePathStyle?: boolean;
868
+ keyPrefix?: string;
455
869
  }
456
870
  declare function redactGcsConfig(config: GCSConfig): GCSConfigRedacted;
457
871
 
@@ -481,6 +895,7 @@ interface OCIConfig {
481
895
  accessKeyId: string;
482
896
  secretAccessKey: string;
483
897
  endpoint?: string;
898
+ keyPrefix?: string;
484
899
  timeoutMs?: number;
485
900
  }
486
901
  interface OCIConfigRedacted {
@@ -490,6 +905,7 @@ interface OCIConfigRedacted {
490
905
  accessKeyId: string;
491
906
  secretAccessKey: string;
492
907
  endpoint: string;
908
+ keyPrefix?: string;
493
909
  timeoutMs?: number;
494
910
  }
495
911
  declare function redactOciConfig(config: OCIConfig): OCIConfigRedacted;
@@ -521,6 +937,8 @@ interface R2Config {
521
937
  endpoint?: string;
522
938
  region?: string;
523
939
  profile?: string;
940
+ forcePathStyle?: boolean;
941
+ keyPrefix?: string;
524
942
  timeoutMs?: number;
525
943
  }
526
944
  interface R2ConfigRedacted {
@@ -531,6 +949,8 @@ interface R2ConfigRedacted {
531
949
  endpoint: string;
532
950
  region: string;
533
951
  profile?: string;
952
+ forcePathStyle?: boolean;
953
+ keyPrefix?: string;
534
954
  timeoutMs?: number;
535
955
  }
536
956
  declare function redactR2Config(config: R2Config): R2ConfigRedacted;
@@ -562,6 +982,7 @@ interface SupabaseConfig {
562
982
  projectRef?: string;
563
983
  endpoint?: string;
564
984
  sessionToken?: string;
985
+ keyPrefix?: string;
565
986
  timeoutMs?: number;
566
987
  }
567
988
  interface SupabaseConfigRedacted {
@@ -572,6 +993,7 @@ interface SupabaseConfigRedacted {
572
993
  accessKeyId: string;
573
994
  secretAccessKey: string;
574
995
  sessionToken?: string;
996
+ keyPrefix?: string;
575
997
  timeoutMs?: number;
576
998
  }
577
999
  declare function resolvedSupabaseEndpoint(config: SupabaseConfig): string;
@@ -671,7 +1093,7 @@ declare abstract class HfResource extends BaseResource implements Resource {
671
1093
  abstract readonly kind: string;
672
1094
  abstract readonly prompt: string;
673
1095
  abstract readonly accessor: HfAccessor;
674
- readonly isRemote: boolean;
1096
+ readonly cachesReads: boolean;
675
1097
  readonly supportsSnapshot: boolean;
676
1098
  readonly opsMap: Record<string, unknown>;
677
1099
  open(): Promise<void>;
@@ -689,7 +1111,6 @@ declare abstract class HfResource extends BaseResource implements Resource {
689
1111
  du(p: PathSpec): Promise<number>;
690
1112
  find(p: PathSpec, options?: FindOptions): Promise<string[]>;
691
1113
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
692
- fingerprint(p: PathSpec): Promise<string | null>;
693
1114
  loadState(_state: unknown): Promise<void>;
694
1115
  }
695
1116
 
@@ -769,6 +1190,7 @@ interface MinIOConfig {
769
1190
  secretAccessKey: string;
770
1191
  region?: string;
771
1192
  forcePathStyle?: boolean;
1193
+ keyPrefix?: string;
772
1194
  timeoutMs?: number;
773
1195
  }
774
1196
  interface MinIOConfigRedacted {
@@ -778,6 +1200,7 @@ interface MinIOConfigRedacted {
778
1200
  secretAccessKey: string;
779
1201
  region: string;
780
1202
  forcePathStyle: boolean;
1203
+ keyPrefix?: string;
781
1204
  timeoutMs?: number;
782
1205
  }
783
1206
  declare function redactMinIOConfig(config: MinIOConfig): MinIOConfigRedacted;
@@ -808,6 +1231,7 @@ interface SeaweedFSConfig {
808
1231
  secretAccessKey: string;
809
1232
  region?: string;
810
1233
  forcePathStyle?: boolean;
1234
+ keyPrefix?: string;
811
1235
  timeoutMs?: number;
812
1236
  }
813
1237
  interface SeaweedFSConfigRedacted {
@@ -817,6 +1241,7 @@ interface SeaweedFSConfigRedacted {
817
1241
  secretAccessKey: string;
818
1242
  region: string;
819
1243
  forcePathStyle: boolean;
1244
+ keyPrefix?: string;
820
1245
  timeoutMs?: number;
821
1246
  }
822
1247
  declare function redactSeaweedFSConfig(config: SeaweedFSConfig): SeaweedFSConfigRedacted;
@@ -847,6 +1272,7 @@ interface CephConfig {
847
1272
  secretAccessKey: string;
848
1273
  region?: string;
849
1274
  forcePathStyle?: boolean;
1275
+ keyPrefix?: string;
850
1276
  timeoutMs?: number;
851
1277
  }
852
1278
  interface CephConfigRedacted {
@@ -856,6 +1282,7 @@ interface CephConfigRedacted {
856
1282
  secretAccessKey: string;
857
1283
  region: string;
858
1284
  forcePathStyle: boolean;
1285
+ keyPrefix?: string;
859
1286
  timeoutMs?: number;
860
1287
  }
861
1288
  declare function redactCephConfig(config: CephConfig): CephConfigRedacted;
@@ -885,6 +1312,8 @@ interface WasabiConfig {
885
1312
  secretAccessKey: string;
886
1313
  region?: string;
887
1314
  endpoint?: string;
1315
+ forcePathStyle?: boolean;
1316
+ keyPrefix?: string;
888
1317
  timeoutMs?: number;
889
1318
  }
890
1319
  interface WasabiConfigRedacted {
@@ -893,6 +1322,8 @@ interface WasabiConfigRedacted {
893
1322
  secretAccessKey: string;
894
1323
  region: string;
895
1324
  endpoint: string;
1325
+ forcePathStyle?: boolean;
1326
+ keyPrefix?: string;
896
1327
  timeoutMs?: number;
897
1328
  }
898
1329
  declare function resolvedWasabiEndpoint(config: WasabiConfig): string;
@@ -923,6 +1354,8 @@ interface BackblazeConfig {
923
1354
  secretAccessKey: string;
924
1355
  region: string;
925
1356
  endpoint?: string;
1357
+ forcePathStyle?: boolean;
1358
+ keyPrefix?: string;
926
1359
  timeoutMs?: number;
927
1360
  }
928
1361
  interface BackblazeConfigRedacted {
@@ -931,6 +1364,8 @@ interface BackblazeConfigRedacted {
931
1364
  secretAccessKey: string;
932
1365
  region: string;
933
1366
  endpoint: string;
1367
+ forcePathStyle?: boolean;
1368
+ keyPrefix?: string;
934
1369
  timeoutMs?: number;
935
1370
  }
936
1371
  declare function resolvedBackblazeEndpoint(config: BackblazeConfig): string;
@@ -961,6 +1396,8 @@ interface DigitalOceanConfig {
961
1396
  secretAccessKey: string;
962
1397
  region: string;
963
1398
  endpoint?: string;
1399
+ forcePathStyle?: boolean;
1400
+ keyPrefix?: string;
964
1401
  timeoutMs?: number;
965
1402
  }
966
1403
  interface DigitalOceanConfigRedacted {
@@ -969,6 +1406,8 @@ interface DigitalOceanConfigRedacted {
969
1406
  secretAccessKey: string;
970
1407
  region: string;
971
1408
  endpoint: string;
1409
+ forcePathStyle?: boolean;
1410
+ keyPrefix?: string;
972
1411
  timeoutMs?: number;
973
1412
  }
974
1413
  declare function resolvedDigitalOceanEndpoint(config: DigitalOceanConfig): string;
@@ -999,6 +1438,8 @@ interface TencentConfig {
999
1438
  secretAccessKey: string;
1000
1439
  region: string;
1001
1440
  endpoint?: string;
1441
+ forcePathStyle?: boolean;
1442
+ keyPrefix?: string;
1002
1443
  timeoutMs?: number;
1003
1444
  }
1004
1445
  interface TencentConfigRedacted {
@@ -1007,6 +1448,8 @@ interface TencentConfigRedacted {
1007
1448
  secretAccessKey: string;
1008
1449
  region: string;
1009
1450
  endpoint: string;
1451
+ forcePathStyle?: boolean;
1452
+ keyPrefix?: string;
1010
1453
  timeoutMs?: number;
1011
1454
  }
1012
1455
  declare function resolvedTencentEndpoint(config: TencentConfig): string;
@@ -1037,6 +1480,8 @@ interface AliyunConfig {
1037
1480
  secretAccessKey: string;
1038
1481
  region: string;
1039
1482
  endpoint?: string;
1483
+ forcePathStyle?: boolean;
1484
+ keyPrefix?: string;
1040
1485
  timeoutMs?: number;
1041
1486
  }
1042
1487
  interface AliyunConfigRedacted {
@@ -1045,6 +1490,8 @@ interface AliyunConfigRedacted {
1045
1490
  secretAccessKey: string;
1046
1491
  region: string;
1047
1492
  endpoint: string;
1493
+ forcePathStyle?: boolean;
1494
+ keyPrefix?: string;
1048
1495
  timeoutMs?: number;
1049
1496
  }
1050
1497
  declare function resolvedAliyunEndpoint(config: AliyunConfig): string;
@@ -1075,6 +1522,8 @@ interface ScalewayConfig {
1075
1522
  secretAccessKey: string;
1076
1523
  region: string;
1077
1524
  endpoint?: string;
1525
+ forcePathStyle?: boolean;
1526
+ keyPrefix?: string;
1078
1527
  timeoutMs?: number;
1079
1528
  }
1080
1529
  interface ScalewayConfigRedacted {
@@ -1083,6 +1532,8 @@ interface ScalewayConfigRedacted {
1083
1532
  secretAccessKey: string;
1084
1533
  region: string;
1085
1534
  endpoint: string;
1535
+ forcePathStyle?: boolean;
1536
+ keyPrefix?: string;
1086
1537
  timeoutMs?: number;
1087
1538
  }
1088
1539
  declare function resolvedScalewayEndpoint(config: ScalewayConfig): string;
@@ -1113,6 +1564,8 @@ interface QingStorConfig {
1113
1564
  secretAccessKey: string;
1114
1565
  region: string;
1115
1566
  endpoint?: string;
1567
+ forcePathStyle?: boolean;
1568
+ keyPrefix?: string;
1116
1569
  timeoutMs?: number;
1117
1570
  }
1118
1571
  interface QingStorConfigRedacted {
@@ -1121,6 +1574,8 @@ interface QingStorConfigRedacted {
1121
1574
  secretAccessKey: string;
1122
1575
  region: string;
1123
1576
  endpoint: string;
1577
+ forcePathStyle?: boolean;
1578
+ keyPrefix?: string;
1124
1579
  timeoutMs?: number;
1125
1580
  }
1126
1581
  declare function resolvedQingStorEndpoint(config: QingStorConfig): string;
@@ -1169,7 +1624,7 @@ interface PostgresResourceOptions {
1169
1624
  }
1170
1625
  declare class PostgresResource extends BaseResource implements Resource {
1171
1626
  readonly kind: string;
1172
- readonly isRemote: boolean;
1627
+ readonly cachesReads: boolean;
1173
1628
  readonly indexTtl: number;
1174
1629
  readonly prompt: string;
1175
1630
  readonly config: PostgresConfigResolved;
@@ -1260,7 +1715,7 @@ interface MongoDBResourceOptions {
1260
1715
  }
1261
1716
  declare class MongoDBResource extends BaseResource implements Resource {
1262
1717
  readonly kind: string;
1263
- readonly isRemote: boolean;
1718
+ readonly cachesReads: boolean;
1264
1719
  readonly indexTtl: number;
1265
1720
  readonly prompt: string;
1266
1721
  readonly config: MongoDBConfigResolved;
@@ -1297,7 +1752,7 @@ interface LanceDBResourceOptions {
1297
1752
  }
1298
1753
  declare class LanceDBResource extends BaseResource implements Resource {
1299
1754
  readonly kind: string;
1300
- readonly isRemote: boolean;
1755
+ readonly cachesReads: boolean;
1301
1756
  readonly indexTtl: number;
1302
1757
  readonly prompt: string;
1303
1758
  readonly config: LanceDBConfigResolved;
@@ -1316,10 +1771,12 @@ declare class LanceDBResource extends BaseResource implements Resource {
1316
1771
  interface SlackConfig {
1317
1772
  token: string;
1318
1773
  searchToken?: string;
1774
+ baseUrl?: string;
1319
1775
  }
1320
1776
  interface SlackConfigRedacted {
1321
1777
  token: '<REDACTED>';
1322
1778
  searchToken?: '<REDACTED>';
1779
+ baseUrl?: string;
1323
1780
  }
1324
1781
  declare function redactSlackConfig(config: SlackConfig): SlackConfigRedacted;
1325
1782
  declare function normalizeSlackConfig(input: Record<string, unknown>): SlackConfig;
@@ -1330,7 +1787,7 @@ interface SlackResourceState {
1330
1787
  }
1331
1788
  declare class SlackResource extends BaseResource implements Resource {
1332
1789
  readonly kind: string;
1333
- readonly isRemote: boolean;
1790
+ readonly cachesReads: boolean;
1334
1791
  readonly indexTtl: number;
1335
1792
  readonly prompt: string;
1336
1793
  readonly writePrompt: string;
@@ -1344,7 +1801,6 @@ declare class SlackResource extends BaseResource implements Resource {
1344
1801
  readFile(p: PathSpec): Promise<Uint8Array>;
1345
1802
  readdir(p: PathSpec): Promise<string[]>;
1346
1803
  stat(p: PathSpec): Promise<FileStat>;
1347
- fingerprint(p: PathSpec): Promise<string | null>;
1348
1804
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1349
1805
  getState(): Promise<SlackResourceState>;
1350
1806
  loadState(_state: SlackResourceState): Promise<void>;
@@ -1394,7 +1850,7 @@ interface SSHResourceState {
1394
1850
  }
1395
1851
  declare class SSHResource extends BaseResource implements Resource {
1396
1852
  readonly kind: "ssh";
1397
- readonly isRemote: boolean;
1853
+ readonly cachesReads: boolean;
1398
1854
  readonly indexTtl: number;
1399
1855
  readonly prompt = "{prefix}\n Remote filesystem via SSH/SFTP.\n IMPORTANT: This is a remote mount. Prefer targeted reads over full scans.\n Supports: ls, cat, head, tail, grep, rg, wc, find, tree, stat, mkdir, touch, cp, mv, rm, tee.";
1400
1856
  readonly config: SSHConfig;
@@ -1423,7 +1879,6 @@ declare class SSHResource extends BaseResource implements Resource {
1423
1879
  rmR(p: PathSpec): Promise<void>;
1424
1880
  du(p: PathSpec): Promise<number>;
1425
1881
  find(p: PathSpec, options?: FindOptions): Promise<string[]>;
1426
- fingerprint(p: PathSpec): Promise<string | null>;
1427
1882
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1428
1883
  getState(): Promise<SSHResourceState>;
1429
1884
  loadState(_state: SSHResourceState): Promise<void>;
@@ -1435,6 +1890,72 @@ declare const SSH_COMMANDS: readonly RegisteredCommand[];
1435
1890
 
1436
1891
  declare const SSH_OPS: readonly RegisteredOp[];
1437
1892
 
1893
+ interface NextcloudConfig {
1894
+ url: string;
1895
+ username?: string;
1896
+ password?: string;
1897
+ verifySsl?: boolean;
1898
+ timeout?: number;
1899
+ }
1900
+ interface NextcloudConfigRedacted extends Omit<NextcloudConfig, 'password'> {
1901
+ password?: '<REDACTED>';
1902
+ }
1903
+ declare function normalizeNextcloudConfig(config: Record<string, unknown>): NextcloudConfig;
1904
+ declare function redactNextcloudConfig(config: NextcloudConfig): NextcloudConfigRedacted;
1905
+
1906
+ declare class NextcloudAccessor extends Accessor {
1907
+ readonly config: NextcloudConfig;
1908
+ readonly resourceName: "nextcloud";
1909
+ private operatorPromise;
1910
+ constructor(config: NextcloudConfig);
1911
+ operator(): Promise<Operator>;
1912
+ private createOperator;
1913
+ }
1914
+
1915
+ interface NextcloudResourceState {
1916
+ type: string;
1917
+ config: NextcloudConfigRedacted;
1918
+ }
1919
+ declare class NextcloudResource extends BaseResource implements Resource {
1920
+ readonly config: NextcloudConfig;
1921
+ readonly kind: "nextcloud";
1922
+ readonly cachesReads = true;
1923
+ readonly supportsSnapshot = true;
1924
+ readonly prompt = "You have access to files stored in Nextcloud.";
1925
+ readonly accessor: NextcloudAccessor;
1926
+ readonly opsMap: Record<string, unknown>;
1927
+ constructor(config: NextcloudConfig);
1928
+ open(): Promise<void>;
1929
+ close(): Promise<void>;
1930
+ commands(): readonly RegisteredCommand[];
1931
+ ops(): readonly RegisteredOp[];
1932
+ streamPath(path: PathSpec): AsyncIterable<Uint8Array>;
1933
+ readFile(path: PathSpec): Promise<Uint8Array>;
1934
+ writeFile(path: PathSpec, data: Uint8Array): Promise<void>;
1935
+ appendFile(path: PathSpec, data: Uint8Array): Promise<void>;
1936
+ readdir(path: PathSpec): Promise<string[]>;
1937
+ stat(path: PathSpec): Promise<FileStat>;
1938
+ exists(path: PathSpec): Promise<boolean>;
1939
+ mkdir(path: PathSpec): Promise<void>;
1940
+ rmdir(path: PathSpec): Promise<void>;
1941
+ unlink(path: PathSpec): Promise<void>;
1942
+ rename(source: PathSpec, destination: PathSpec): Promise<void>;
1943
+ truncate(path: PathSpec, length: number): Promise<void>;
1944
+ copy(source: PathSpec, destination: PathSpec): Promise<void>;
1945
+ rmR(path: PathSpec): Promise<void>;
1946
+ du(path: PathSpec): Promise<number>;
1947
+ find(path: PathSpec, options?: FindOptions): Promise<string[]>;
1948
+ glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1949
+ getState(): Promise<NextcloudResourceState>;
1950
+ loadState(_state: NextcloudResourceState): Promise<void>;
1951
+ }
1952
+
1953
+ declare const NEXTCLOUD_PROMPT = "You have access to files stored in Nextcloud.";
1954
+
1955
+ declare const NEXTCLOUD_COMMANDS: readonly RegisteredCommand[];
1956
+
1957
+ declare const NEXTCLOUD_OPS: readonly RegisteredOp[];
1958
+
1438
1959
  interface DiscordConfig {
1439
1960
  token: string;
1440
1961
  }
@@ -1450,7 +1971,7 @@ interface DiscordResourceState {
1450
1971
  }
1451
1972
  declare class DiscordResource extends BaseResource implements Resource {
1452
1973
  readonly kind: string;
1453
- readonly isRemote: boolean;
1974
+ readonly cachesReads: boolean;
1454
1975
  readonly indexTtl: number;
1455
1976
  readonly prompt: string;
1456
1977
  readonly writePrompt: string;
@@ -1464,7 +1985,6 @@ declare class DiscordResource extends BaseResource implements Resource {
1464
1985
  readFile(p: PathSpec): Promise<Uint8Array>;
1465
1986
  readdir(p: PathSpec): Promise<string[]>;
1466
1987
  stat(p: PathSpec): Promise<FileStat>;
1467
- fingerprint(p: PathSpec): Promise<string | null>;
1468
1988
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1469
1989
  getState(): Promise<DiscordResourceState>;
1470
1990
  loadState(_state: DiscordResourceState): Promise<void>;
@@ -1493,7 +2013,7 @@ interface TrelloResourceState {
1493
2013
  }
1494
2014
  declare class TrelloResource extends BaseResource implements Resource {
1495
2015
  readonly kind: string;
1496
- readonly isRemote: boolean;
2016
+ readonly cachesReads: boolean;
1497
2017
  readonly indexTtl: number;
1498
2018
  readonly prompt: string;
1499
2019
  readonly writePrompt: string;
@@ -1508,7 +2028,6 @@ declare class TrelloResource extends BaseResource implements Resource {
1508
2028
  readFile(p: PathSpec): Promise<Uint8Array>;
1509
2029
  readdir(p: PathSpec): Promise<string[]>;
1510
2030
  stat(p: PathSpec): Promise<FileStat>;
1511
- fingerprint(p: PathSpec): Promise<string | null>;
1512
2031
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1513
2032
  getState(): Promise<TrelloResourceState>;
1514
2033
  loadState(_state: TrelloResourceState): Promise<void>;
@@ -1535,7 +2054,7 @@ interface LinearResourceState {
1535
2054
  }
1536
2055
  declare class LinearResource extends BaseResource implements Resource {
1537
2056
  readonly kind: string;
1538
- readonly isRemote: boolean;
2057
+ readonly cachesReads: boolean;
1539
2058
  readonly indexTtl: number;
1540
2059
  readonly prompt: string;
1541
2060
  readonly writePrompt: string;
@@ -1550,7 +2069,6 @@ declare class LinearResource extends BaseResource implements Resource {
1550
2069
  readFile(p: PathSpec): Promise<Uint8Array>;
1551
2070
  readdir(p: PathSpec): Promise<string[]>;
1552
2071
  stat(p: PathSpec): Promise<FileStat>;
1553
- fingerprint(p: PathSpec): Promise<string | null>;
1554
2072
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1555
2073
  getState(): Promise<LinearResourceState>;
1556
2074
  loadState(_state: LinearResourceState): Promise<void>;
@@ -1573,7 +2091,7 @@ interface NotionResourceState {
1573
2091
  }
1574
2092
  declare class NotionResource extends BaseResource implements Resource {
1575
2093
  readonly kind: string;
1576
- readonly isRemote: boolean;
2094
+ readonly cachesReads: boolean;
1577
2095
  readonly indexTtl: number;
1578
2096
  readonly prompt: string;
1579
2097
  readonly writePrompt: string;
@@ -1587,7 +2105,6 @@ declare class NotionResource extends BaseResource implements Resource {
1587
2105
  readFile(p: PathSpec): Promise<Uint8Array>;
1588
2106
  readdir(p: PathSpec): Promise<string[]>;
1589
2107
  stat(p: PathSpec): Promise<FileStat>;
1590
- fingerprint(p: PathSpec): Promise<string | null>;
1591
2108
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1592
2109
  getState(): Promise<NotionResourceState>;
1593
2110
  loadState(_state: NotionResourceState): Promise<void>;
@@ -1618,7 +2135,7 @@ interface LangfuseResourceState {
1618
2135
  }
1619
2136
  declare class LangfuseResource extends BaseResource implements Resource {
1620
2137
  readonly kind: string;
1621
- readonly isRemote: boolean;
2138
+ readonly cachesReads: boolean;
1622
2139
  readonly indexTtl: number;
1623
2140
  readonly prompt: string;
1624
2141
  readonly config: LangfuseConfig;
@@ -1631,7 +2148,6 @@ declare class LangfuseResource extends BaseResource implements Resource {
1631
2148
  readFile(p: PathSpec): Promise<Uint8Array>;
1632
2149
  readdir(p: PathSpec): Promise<string[]>;
1633
2150
  stat(p: PathSpec): Promise<FileStat>;
1634
- fingerprint(_p: PathSpec): Promise<string | null>;
1635
2151
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1636
2152
  getState(): Promise<LangfuseResourceState>;
1637
2153
  loadState(_state: LangfuseResourceState): Promise<void>;
@@ -1662,7 +2178,8 @@ interface GitHubResourceState {
1662
2178
  }
1663
2179
  declare class GitHubResource extends BaseResource implements Resource {
1664
2180
  readonly kind: string;
1665
- readonly isRemote: boolean;
2181
+ readonly cachesReads: boolean;
2182
+ readonly supportsSnapshot: boolean;
1666
2183
  readonly indexTtl: number;
1667
2184
  readonly config: GitHubConfig;
1668
2185
  readonly accessor: GitHubAccessor;
@@ -1675,7 +2192,6 @@ declare class GitHubResource extends BaseResource implements Resource {
1675
2192
  readFile(p: PathSpec): Promise<Uint8Array>;
1676
2193
  readdir(p: PathSpec): Promise<string[]>;
1677
2194
  stat(p: PathSpec): Promise<FileStat>;
1678
- fingerprint(p: PathSpec): Promise<string | null>;
1679
2195
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1680
2196
  getState(): Promise<GitHubResourceState>;
1681
2197
  loadState(_state: GitHubResourceState): Promise<void>;
@@ -1706,7 +2222,7 @@ interface GitHubCIResourceState {
1706
2222
  }
1707
2223
  declare class GitHubCIResource extends BaseResource implements Resource {
1708
2224
  readonly kind: string;
1709
- readonly isRemote: boolean;
2225
+ readonly cachesReads: boolean;
1710
2226
  readonly indexTtl: number;
1711
2227
  readonly prompt: string;
1712
2228
  readonly config: GitHubCIConfig;
@@ -1719,7 +2235,6 @@ declare class GitHubCIResource extends BaseResource implements Resource {
1719
2235
  readFile(p: PathSpec): Promise<Uint8Array>;
1720
2236
  readdir(p: PathSpec): Promise<string[]>;
1721
2237
  stat(p: PathSpec): Promise<FileStat>;
1722
- fingerprint(p: PathSpec): Promise<string | null>;
1723
2238
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1724
2239
  getState(): Promise<GitHubCIResourceState>;
1725
2240
  loadState(_state: GitHubCIResourceState): Promise<void>;
@@ -1748,7 +2263,7 @@ interface GDocsResourceState {
1748
2263
  }
1749
2264
  declare class GDocsResource extends BaseResource implements Resource {
1750
2265
  readonly kind: string;
1751
- readonly isRemote: boolean;
2266
+ readonly cachesReads: boolean;
1752
2267
  readonly indexTtl: number;
1753
2268
  readonly prompt: string;
1754
2269
  readonly writePrompt: string;
@@ -1762,7 +2277,6 @@ declare class GDocsResource extends BaseResource implements Resource {
1762
2277
  readFile(p: PathSpec): Promise<Uint8Array>;
1763
2278
  readdir(p: PathSpec): Promise<string[]>;
1764
2279
  stat(p: PathSpec): Promise<FileStat>;
1765
- fingerprint(p: PathSpec): Promise<string | null>;
1766
2280
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1767
2281
  getState(): Promise<GDocsResourceState>;
1768
2282
  loadState(_state: GDocsResourceState): Promise<void>;
@@ -1791,7 +2305,7 @@ interface GSheetsResourceState {
1791
2305
  }
1792
2306
  declare class GSheetsResource extends BaseResource implements Resource {
1793
2307
  readonly kind: string;
1794
- readonly isRemote: boolean;
2308
+ readonly cachesReads: boolean;
1795
2309
  readonly indexTtl: number;
1796
2310
  readonly prompt: string;
1797
2311
  readonly writePrompt: string;
@@ -1805,7 +2319,6 @@ declare class GSheetsResource extends BaseResource implements Resource {
1805
2319
  readFile(p: PathSpec): Promise<Uint8Array>;
1806
2320
  readdir(p: PathSpec): Promise<string[]>;
1807
2321
  stat(p: PathSpec): Promise<FileStat>;
1808
- fingerprint(p: PathSpec): Promise<string | null>;
1809
2322
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1810
2323
  getState(): Promise<GSheetsResourceState>;
1811
2324
  loadState(_state: GSheetsResourceState): Promise<void>;
@@ -1834,7 +2347,7 @@ interface GSlidesResourceState {
1834
2347
  }
1835
2348
  declare class GSlidesResource extends BaseResource implements Resource {
1836
2349
  readonly kind: string;
1837
- readonly isRemote: boolean;
2350
+ readonly cachesReads: boolean;
1838
2351
  readonly indexTtl: number;
1839
2352
  readonly prompt: string;
1840
2353
  readonly writePrompt: string;
@@ -1848,7 +2361,6 @@ declare class GSlidesResource extends BaseResource implements Resource {
1848
2361
  readFile(p: PathSpec): Promise<Uint8Array>;
1849
2362
  readdir(p: PathSpec): Promise<string[]>;
1850
2363
  stat(p: PathSpec): Promise<FileStat>;
1851
- fingerprint(p: PathSpec): Promise<string | null>;
1852
2364
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1853
2365
  getState(): Promise<GSlidesResourceState>;
1854
2366
  loadState(_state: GSlidesResourceState): Promise<void>;
@@ -1862,6 +2374,7 @@ interface GDriveConfig {
1862
2374
  accessToken: string;
1863
2375
  expiresIn: number;
1864
2376
  }>;
2377
+ folderId?: string;
1865
2378
  }
1866
2379
  interface GDriveConfigRedacted {
1867
2380
  clientId: string;
@@ -1877,7 +2390,8 @@ interface GDriveResourceState {
1877
2390
  }
1878
2391
  declare class GDriveResource extends BaseResource implements Resource {
1879
2392
  readonly kind: string;
1880
- readonly isRemote: boolean;
2393
+ readonly cachesReads: boolean;
2394
+ readonly supportsSnapshot: boolean;
1881
2395
  readonly indexTtl: number;
1882
2396
  readonly prompt: string;
1883
2397
  readonly config: GDriveConfig;
@@ -1890,7 +2404,6 @@ declare class GDriveResource extends BaseResource implements Resource {
1890
2404
  readFile(p: PathSpec): Promise<Uint8Array>;
1891
2405
  readdir(p: PathSpec): Promise<string[]>;
1892
2406
  stat(p: PathSpec): Promise<FileStat>;
1893
- fingerprint(p: PathSpec): Promise<string | null>;
1894
2407
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1895
2408
  getState(): Promise<GDriveResourceState>;
1896
2409
  loadState(_state: GDriveResourceState): Promise<void>;
@@ -1900,6 +2413,9 @@ interface DropboxConfig {
1900
2413
  clientId: string;
1901
2414
  clientSecret: string;
1902
2415
  refreshToken: string;
2416
+ rootPath?: string;
2417
+ contentSearch?: boolean;
2418
+ endpoint?: string;
1903
2419
  refreshFn?: (refreshToken: string) => Promise<{
1904
2420
  accessToken: string;
1905
2421
  expiresIn: number;
@@ -1909,6 +2425,9 @@ interface DropboxConfigRedacted {
1909
2425
  clientId: string;
1910
2426
  clientSecret: '<REDACTED>';
1911
2427
  refreshToken: '<REDACTED>';
2428
+ rootPath?: string;
2429
+ contentSearch?: boolean;
2430
+ endpoint?: string;
1912
2431
  }
1913
2432
  declare function redactDropboxConfig(config: DropboxConfig): DropboxConfigRedacted;
1914
2433
  declare function normalizeDropboxConfig(input: Record<string, unknown>): DropboxConfig;
@@ -1919,7 +2438,7 @@ interface DropboxResourceState {
1919
2438
  }
1920
2439
  declare class DropboxResource extends BaseResource implements Resource {
1921
2440
  readonly kind: string;
1922
- readonly isRemote: boolean;
2441
+ readonly cachesReads: boolean;
1923
2442
  readonly indexTtl: number;
1924
2443
  readonly prompt: string;
1925
2444
  readonly config: DropboxConfig;
@@ -1932,13 +2451,15 @@ declare class DropboxResource extends BaseResource implements Resource {
1932
2451
  readFile(p: PathSpec): Promise<Uint8Array>;
1933
2452
  readdir(p: PathSpec): Promise<string[]>;
1934
2453
  stat(p: PathSpec): Promise<FileStat>;
1935
- fingerprint(p: PathSpec): Promise<string | null>;
1936
2454
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1937
2455
  getState(): Promise<DropboxResourceState>;
1938
2456
  loadState(_state: DropboxResourceState): Promise<void>;
1939
2457
  }
1940
2458
 
1941
2459
  interface BoxConfig {
2460
+ endpoint?: string;
2461
+ rootFolderId?: string;
2462
+ contentSearch?: boolean;
1942
2463
  clientId?: string;
1943
2464
  clientSecret?: string;
1944
2465
  refreshToken?: string;
@@ -1952,6 +2473,8 @@ interface BoxConfig {
1952
2473
  onRefreshTokenRotated?: (newRefreshToken: string) => void | Promise<void>;
1953
2474
  }
1954
2475
  interface BoxConfigRedacted {
2476
+ endpoint?: string;
2477
+ rootFolderId?: string;
1955
2478
  clientId?: string;
1956
2479
  clientSecret?: '<REDACTED>';
1957
2480
  refreshToken?: '<REDACTED>';
@@ -1967,7 +2490,7 @@ interface BoxResourceState {
1967
2490
  }
1968
2491
  declare class BoxResource extends BaseResource implements Resource {
1969
2492
  readonly kind: string;
1970
- readonly isRemote: boolean;
2493
+ readonly cachesReads: boolean;
1971
2494
  readonly indexTtl: number;
1972
2495
  readonly prompt: string;
1973
2496
  readonly config: BoxConfig;
@@ -1980,7 +2503,6 @@ declare class BoxResource extends BaseResource implements Resource {
1980
2503
  readFile(p: PathSpec): Promise<Uint8Array>;
1981
2504
  readdir(p: PathSpec): Promise<string[]>;
1982
2505
  stat(p: PathSpec): Promise<FileStat>;
1983
- fingerprint(p: PathSpec): Promise<string | null>;
1984
2506
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
1985
2507
  getState(): Promise<BoxResourceState>;
1986
2508
  loadState(_state: BoxResourceState): Promise<void>;
@@ -1992,7 +2514,7 @@ interface GmailResourceState {
1992
2514
  }
1993
2515
  declare class GmailResource extends BaseResource implements Resource {
1994
2516
  readonly kind: string;
1995
- readonly isRemote: boolean;
2517
+ readonly cachesReads: boolean;
1996
2518
  readonly indexTtl: number;
1997
2519
  readonly prompt: string;
1998
2520
  readonly writePrompt: string;
@@ -2006,7 +2528,6 @@ declare class GmailResource extends BaseResource implements Resource {
2006
2528
  readFile(p: PathSpec): Promise<Uint8Array>;
2007
2529
  readdir(p: PathSpec): Promise<string[]>;
2008
2530
  stat(p: PathSpec): Promise<FileStat>;
2009
- fingerprint(p: PathSpec): Promise<string | null>;
2010
2531
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
2011
2532
  getState(): Promise<GmailResourceState>;
2012
2533
  loadState(_state: GmailResourceState): Promise<void>;
@@ -2053,7 +2574,7 @@ interface EmailResourceState {
2053
2574
  }
2054
2575
  declare class EmailResource extends BaseResource implements Resource {
2055
2576
  readonly kind: string;
2056
- readonly isRemote: boolean;
2577
+ readonly cachesReads: boolean;
2057
2578
  readonly indexTtl: number;
2058
2579
  readonly prompt: string;
2059
2580
  readonly config: EmailConfig;
@@ -2066,14 +2587,13 @@ declare class EmailResource extends BaseResource implements Resource {
2066
2587
  readFile(p: PathSpec): Promise<Uint8Array>;
2067
2588
  readdir(p: PathSpec): Promise<string[]>;
2068
2589
  stat(p: PathSpec): Promise<FileStat>;
2069
- fingerprint(p: PathSpec): Promise<string | null>;
2070
2590
  glob(paths: readonly PathSpec[], prefix?: string): Promise<PathSpec[]>;
2071
2591
  getState(): Promise<EmailResourceState>;
2072
2592
  loadState(_state: EmailResourceState): Promise<void>;
2073
2593
  }
2074
2594
 
2075
- declare const EMAIL_PROMPT = "{prefix}\n <folder>/\n <yyyy-mm-dd>/\n <subject>__<uid>.email.json\n <subject>__<uid>/ # if attachments exist\n <attachment-filename>\n Folders include: INBOX, Sent, Drafts, etc. cat shows email as JSON.";
2076
- declare const EMAIL_WRITE_PROMPT = " Write commands:\n email-send \"to@email.com\" \"subject\" \"body\"\n email-reply <email-path> \"reply body\"\n email-forward <email-path> \"to@email.com\"";
2595
+ declare const EMAIL_PROMPT = "{prefix}\n <folder>/\n <yyyy-mm-dd>/\n <subject>__<uid>.email.json\n <subject>__<uid>/ # if attachments exist\n <attachment-filename>\n Folders include: INBOX, Sent, Drafts, etc. cat shows email as JSON.\n\n Read commands:\n himalaya envelope list --folder INBOX --unseen # id/from/subject/date\n himalaya message read --folder INBOX --uid <uid> # one message as JSON";
2596
+ declare const EMAIL_WRITE_PROMPT = " Write commands:\n himalaya message send --to \"to@email.com\" --subject \"Hi\" --body \"...\"\n himalaya message reply --folder INBOX --uid <uid> --body \"...\" [--all]\n himalaya message forward --folder INBOX --uid <uid> --to \"to@email.com\"";
2077
2597
 
2078
2598
  declare const EMAIL_COMMANDS: readonly RegisteredCommand[];
2079
2599
 
@@ -2113,4 +2633,4 @@ declare const DISK_COMMANDS: readonly RegisteredCommand[];
2113
2633
 
2114
2634
  declare const REDIS_COMMANDS: readonly RegisteredCommand[];
2115
2635
 
2116
- export { ALIYUN_PROMPT, type AliyunConfig, type AliyunConfigRedacted, AliyunResource, type AliyunResourceState, BACKBLAZE_PROMPT, type BackblazeConfig, type BackblazeConfigRedacted, BackblazeResource, type BackblazeResourceState, type BoxConfig, type BoxConfigRedacted, BoxResource, type BoxResourceState, CEPH_PROMPT, type CephConfig, type CephConfigRedacted, CephResource, type CephResourceState, DIGITALOCEAN_PROMPT, DISK_COMMANDS, DISK_OPS, DISK_PROMPT, type DatabricksProfile, DatabricksVolumeResource, type DatabricksVolumeResourceState, type DigitalOceanConfig, type DigitalOceanConfigRedacted, DigitalOceanResource, type DigitalOceanResourceState, type DiscordConfig, type DiscordConfigRedacted, DiscordResource, type DiscordResourceState, DiskResource, type DiskResourceOptions, type DiskResourceState, type DropboxConfig, type DropboxConfigRedacted, DropboxResource, type DropboxResourceState, EMAIL_COMMANDS, EMAIL_OPS, EMAIL_PROMPT, EMAIL_WRITE_PROMPT, EmailAccessor, type EmailConfig, type EmailConfigInput, type EmailConfigRedacted, EmailResource, type EmailResourceState, type FuseAttr, type FuseHandle, FuseManager, type MountOptions as FuseMountOptions, type GCSConfig, type GCSConfigRedacted, GCSResource, type GCSResourceState, GCS_ENDPOINT, GCS_PROMPT, type GDocsConfig, type GDocsConfigRedacted, GDocsResource, type GDocsResourceState, type GDriveConfig, type GDriveConfigRedacted, GDriveResource, type GDriveResourceState, type GSheetsConfig, type GSheetsConfigRedacted, GSheetsResource, type GSheetsResourceState, type GSlidesConfig, type GSlidesConfigRedacted, GSlidesResource, type GSlidesResourceState, type GitHubCIConfig, type GitHubCIConfigRedacted, GitHubCIResource, type GitHubCIResourceState, type GitHubConfig, type GitHubConfigRedacted, GitHubResource, type GitHubResourceState, GmailResource, type GmailResourceState, HF_BUCKETS_PROMPT, HF_COMMANDS, HF_DATASETS_PROMPT, HF_ENDPOINT, HF_MODELS_PROMPT, HF_OPS, HF_RESOURCES, HF_SPACES_PROMPT, HfAccessor, HfBucketsAccessor, type HfBucketsConfig, type HfBucketsConfigRedacted, HfBucketsResource, type HfBucketsResourceState, HfDatasetsAccessor, HfDatasetsResource, type HfDatasetsResourceState, HfModelsAccessor, type HfModelsConfig, type HfModelsConfigRedacted, HfModelsResource, type HfModelsResourceState, type HfRepoConfig, type HfRepoConfigRedacted, HfSpacesAccessor, HfSpacesResource, type HfSpacesResourceState, LanceDBResource, type LanceDBResourceOptions, LanceDBStore, type LangfuseConfig, type LangfuseConfigRedacted, LangfuseResource, type LangfuseResourceState, type LinearConfig, type LinearConfigRedacted, LinearResource, type LinearResourceState, MINIO_PROMPT, type MinIOConfig, type MinIOConfigRedacted, MinIOResource, type MinIOResourceState, MirageFS, type MirageFSOptions, MongoDBResource, type MongoDBResourceOptions, MongoDBStore, type NotionConfig, type NotionConfigRedacted, NotionResource, type NotionResourceState, type OCIConfig, type OCIConfigRedacted, OCIResource, type OCIResourceState, OCI_PROMPT, PostgresResource, type PostgresResourceOptions, PostgresStore, QINGSTOR_PROMPT, type QingStorConfig, type QingStorConfigRedacted, QingStorResource, type QingStorResourceState, type R2Config, type R2ConfigRedacted, R2Resource, type R2ResourceState, R2_PROMPT, REDIS_COMMANDS, REDIS_OPS, REDIS_PROMPT, RedisAccessor, type RedisFileCacheOptions, RedisFileCacheStore, RedisResource, type RedisResourceLike, type RedisResourceOptions, type RedisResourceState, RedisStore, type RedisStoreOptions, type ResourceFactory, type S3Config, type S3ConfigRedacted, S3Resource, type S3ResourceState, SCALEWAY_PROMPT, SEAWEEDFS_PROMPT, SSHAccessor, type SSHConfig, type SSHConfigRedacted, SSHResource, type SSHResourceState, SSH_COMMANDS, SSH_OPS, SSH_PROMPT, SUPABASE_PROMPT, type ScalewayConfig, type ScalewayConfigRedacted, ScalewayResource, type ScalewayResourceState, type SeaweedFSConfig, type SeaweedFSConfigRedacted, SeaweedFSResource, type SeaweedFSResourceState, type SlackConfig, type SlackConfigRedacted, SlackResource, type SlackResourceState, type SupabaseConfig, type SupabaseConfigRedacted, SupabaseResource, type SupabaseResourceState, TENCENT_PROMPT, type TencentConfig, type TencentConfigRedacted, TencentResource, type TencentResourceState, type TrelloConfig, type TrelloConfigRedacted, TrelloResource, type TrelloResourceState, WASABI_PROMPT, type WasabiConfig, type WasabiConfigRedacted, WasabiResource, type WasabiResourceState, Workspace, assertHfRepoId, buildEmailConfig, buildResource, fileReadProvision, mount as fuseMount, mountBackground as fuseMountBackground, headTailProvision, isMacosMetadata, knownResources, loadDatabricksProfile, metadataProvision, normalizeBoxConfig, normalizeDiscordConfig, normalizeDropboxConfig, normalizeEmailConfig, normalizeGDocsConfig, normalizeGDriveConfig, normalizeGSheetsConfig, normalizeGSlidesConfig, normalizeGitHubCIConfig, normalizeGitHubConfig, normalizeHfBucketsConfig, normalizeHfModelsConfig, normalizeHfRepoConfig, normalizeLangfuseConfig, normalizeLinearConfig, normalizeNotionConfig, normalizeSlackConfig, normalizeSshConfig, normalizeTrelloConfig, parseDatabricksCfg, patchNodeFs, redactAliyunConfig, redactBackblazeConfig, redactBoxConfig, redactCephConfig, redactDigitalOceanConfig, redactDiscordConfig, redactDropboxConfig, redactEmailConfig, redactGDocsConfig, redactGDriveConfig, redactGSheetsConfig, redactGSlidesConfig, redactGcsConfig, redactGitHubCIConfig, redactGitHubConfig, redactHfBucketsConfig, redactHfModelsConfig, redactHfRepoConfig, redactLangfuseConfig, redactLinearConfig, redactMinIOConfig, redactNotionConfig, redactOciConfig, redactQingStorConfig, redactR2Config, redactConfig as redactS3Config, redactScalewayConfig, redactSeaweedFSConfig, redactSlackConfig, redactSshConfig, redactSupabaseConfig, redactTencentConfig, redactTrelloConfig, redactWasabiConfig, register as registerResourceFactory, resolvedAliyunEndpoint, resolvedBackblazeEndpoint, resolvedDigitalOceanEndpoint, resolvedQingStorEndpoint, resolvedScalewayEndpoint, resolvedSupabaseEndpoint, resolvedTencentEndpoint, resolvedWasabiEndpoint };
2636
+ export { ALIYUN_PROMPT, type AliyunConfig, type AliyunConfigRedacted, AliyunResource, type AliyunResourceState, BACKBLAZE_PROMPT, type BackblazeConfig, type BackblazeConfigRedacted, BackblazeResource, type BackblazeResourceState, type BoxConfig, type BoxConfigRedacted, BoxResource, type BoxResourceState, CEPH_PROMPT, type CephConfig, type CephConfigRedacted, CephResource, type CephResourceState, DEFAULT_STATE_ROOT, DIGITALOCEAN_PROMPT, DISK_COMMANDS, DISK_OPS, DISK_PROMPT, type DatabricksProfile, DatabricksVolumeResource, type DatabricksVolumeResourceState, type DigitalOceanConfig, type DigitalOceanConfigRedacted, DigitalOceanResource, type DigitalOceanResourceState, type DiscordConfig, type DiscordConfigRedacted, DiscordResource, type DiscordResourceState, DiskNamespaceStore, DiskObserverStore, DiskRecordClient, DiskResource, type DiskResourceOptions, type DiskResourceState, DiskSessionStore, DiskWorkspaceStateStore, type DiskWorkspaceStateStoreOptions, type DropboxConfig, type DropboxConfigRedacted, DropboxResource, type DropboxResourceState, EMAIL_COMMANDS, EMAIL_OPS, EMAIL_PROMPT, EMAIL_WRITE_PROMPT, EmailAccessor, type EmailConfig, type EmailConfigInput, type EmailConfigRedacted, EmailResource, type EmailResourceState, type FuseAttr, type FuseHandle, FuseManager, type MountOptions as FuseMountOptions, type GCSConfig, type GCSConfigRedacted, GCSResource, type GCSResourceState, GCS_ENDPOINT, GCS_PROMPT, type GDocsConfig, type GDocsConfigRedacted, GDocsResource, type GDocsResourceState, type GDriveConfig, type GDriveConfigRedacted, GDriveResource, type GDriveResourceState, type GSheetsConfig, type GSheetsConfigRedacted, GSheetsResource, type GSheetsResourceState, type GSlidesConfig, type GSlidesConfigRedacted, GSlidesResource, type GSlidesResourceState, type GitHubCIConfig, type GitHubCIConfigRedacted, GitHubCIResource, type GitHubCIResourceState, type GitHubConfig, type GitHubConfigRedacted, GitHubResource, type GitHubResourceState, GmailResource, type GmailResourceState, GridFSAccessor, type GridFSConfig, type GridFSConfigRedacted, GridFSResource, type GridFSResourceState, HF_BUCKETS_PROMPT, HF_COMMANDS, HF_DATASETS_PROMPT, HF_ENDPOINT, HF_MODELS_PROMPT, HF_OPS, HF_RESOURCES, HF_SPACES_PROMPT, HfAccessor, HfBucketsAccessor, type HfBucketsConfig, type HfBucketsConfigRedacted, HfBucketsResource, type HfBucketsResourceState, HfDatasetsAccessor, HfDatasetsResource, type HfDatasetsResourceState, HfModelsAccessor, type HfModelsConfig, type HfModelsConfigRedacted, HfModelsResource, type HfModelsResourceState, type HfRepoConfig, type HfRepoConfigRedacted, HfSpacesAccessor, HfSpacesResource, type HfSpacesResourceState, LanceDBResource, type LanceDBResourceOptions, LanceDBStore, type LangfuseConfig, type LangfuseConfigRedacted, LangfuseResource, type LangfuseResourceState, type LinearConfig, type LinearConfigRedacted, LinearResource, type LinearResourceState, MINIO_PROMPT, type MinIOConfig, type MinIOConfigRedacted, MinIOResource, type MinIOResourceState, MirageFS, type MirageFSOptions, MongoDBResource, type MongoDBResourceOptions, MongoDBStore, Mount, type MountSpecOptions, NEXTCLOUD_COMMANDS, NEXTCLOUD_OPS, NEXTCLOUD_PROMPT, NextcloudAccessor, type NextcloudConfig, type NextcloudConfigRedacted, NextcloudResource, type NextcloudResourceState, type NodeWorkspaceOptions, type NotionConfig, type NotionConfigRedacted, NotionResource, type NotionResourceState, type OCIConfig, type OCIConfigRedacted, OCIResource, type OCIResourceState, OCI_PROMPT, PostgresResource, type PostgresResourceOptions, PostgresStore, QINGSTOR_PROMPT, type QingStorConfig, type QingStorConfigRedacted, QingStorResource, type QingStorResourceState, type R2Config, type R2ConfigRedacted, R2Resource, type R2ResourceState, R2_PROMPT, REDIS_COMMANDS, REDIS_OPS, REDIS_PROMPT, RedisAccessor, type RedisFileCacheOptions, RedisFileCacheStore, RedisNamespaceStore, type RedisNamespaceStoreOptions, RedisObserverStore, type RedisObserverStoreOptions, RedisResource, type RedisResourceLike, type RedisResourceOptions, type RedisResourceState, RedisSessionStore, type RedisSessionStoreOptions, RedisStore, type RedisStoreOptions, RedisWorkspaceStateStore, type RedisWorkspaceStateStoreOptions, type ResourceFactory, type S3Config, type S3ConfigRedacted, S3Resource, type S3ResourceState, SCALEWAY_PROMPT, SEAWEEDFS_PROMPT, SSHAccessor, type SSHConfig, type SSHConfigRedacted, SSHResource, type SSHResourceState, SSH_COMMANDS, SSH_OPS, SSH_PROMPT, SUPABASE_PROMPT, type ScalewayConfig, type ScalewayConfigRedacted, ScalewayResource, type ScalewayResourceState, type SeaweedFSConfig, type SeaweedFSConfigRedacted, SeaweedFSResource, type SeaweedFSResourceState, type SlackConfig, type SlackConfigRedacted, SlackResource, type SlackResourceState, type SupabaseConfig, type SupabaseConfigRedacted, SupabaseResource, type SupabaseResourceState, TENCENT_PROMPT, type TencentConfig, type TencentConfigRedacted, TencentResource, type TencentResourceState, type TrelloConfig, type TrelloConfigRedacted, TrelloResource, type TrelloResourceState, WASABI_PROMPT, type WasabiConfig, type WasabiConfigRedacted, WasabiResource, type WasabiResourceState, Workspace, assertHfRepoId, buildEmailConfig, buildResource, fileReadProvision, mount as fuseMount, mountBackground as fuseMountBackground, headTailProvision, isMacosMetadata, knownResources, loadDatabricksProfile, metadataProvision, normalizeBoxConfig, normalizeDiscordConfig, normalizeDropboxConfig, normalizeEmailConfig, normalizeGDocsConfig, normalizeGDriveConfig, normalizeGSheetsConfig, normalizeGSlidesConfig, normalizeGitHubCIConfig, normalizeGitHubConfig, normalizeGridFSConfig, normalizeHfBucketsConfig, normalizeHfModelsConfig, normalizeHfRepoConfig, normalizeLangfuseConfig, normalizeLinearConfig, normalizeNextcloudConfig, normalizeNotionConfig, normalizeSlackConfig, normalizeSshConfig, normalizeTrelloConfig, parseDatabricksCfg, patchNodeFs, redactAliyunConfig, redactBackblazeConfig, redactBoxConfig, redactCephConfig, redactDigitalOceanConfig, redactDiscordConfig, redactDropboxConfig, redactEmailConfig, redactGDocsConfig, redactGDriveConfig, redactGSheetsConfig, redactGSlidesConfig, redactGcsConfig, redactGitHubCIConfig, redactGitHubConfig, redactHfBucketsConfig, redactHfModelsConfig, redactHfRepoConfig, redactLangfuseConfig, redactLinearConfig, redactMinIOConfig, redactNextcloudConfig, redactNotionConfig, redactOciConfig, redactQingStorConfig, redactR2Config, redactConfig as redactS3Config, redactScalewayConfig, redactSeaweedFSConfig, redactSlackConfig, redactSshConfig, redactSupabaseConfig, redactTencentConfig, redactTrelloConfig, redactWasabiConfig, register as registerResourceFactory, resolvedAliyunEndpoint, resolvedBackblazeEndpoint, resolvedDigitalOceanEndpoint, resolvedQingStorEndpoint, resolvedScalewayEndpoint, resolvedSupabaseEndpoint, resolvedTencentEndpoint, resolvedWasabiEndpoint };