@struktoai/mirage-node 0.0.3 → 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 (430) hide show
  1. package/dist/aliyun-PGI57A43.js +10 -0
  2. package/dist/backblaze-TSPL6Y56.js +10 -0
  3. package/dist/box-7XTZYDSO.js +8 -0
  4. package/dist/cas.lua +15 -0
  5. package/dist/ceph-C265UI5T.js +10 -0
  6. package/dist/{chunk-I5THIMPP.js → chunk-25W4XQJZ.js} +5 -5
  7. package/dist/{chunk-QGRDPSAH.js → chunk-2ERLWAGG.js} +4 -2
  8. package/dist/chunk-2ERLWAGG.js.map +1 -0
  9. package/dist/{chunk-NJMGCT63.js → chunk-2QNPKPZZ.js} +7 -2
  10. package/dist/chunk-2QNPKPZZ.js.map +1 -0
  11. package/dist/{chunk-ZNWVJ6UW.js → chunk-3ASOQTZB.js} +7 -2
  12. package/dist/chunk-3ASOQTZB.js.map +1 -0
  13. package/dist/{chunk-WAR4Q2NM.js → chunk-3JZN3GYO.js} +13 -12
  14. package/dist/chunk-3JZN3GYO.js.map +1 -0
  15. package/dist/{chunk-S5OVP467.js → chunk-4GYB7DGC.js} +294 -705
  16. package/dist/chunk-4GYB7DGC.js.map +1 -0
  17. package/dist/{chunk-HJJMP6IX.js → chunk-4M73WHIE.js} +3 -3
  18. package/dist/{chunk-7CW3BMPH.js → chunk-4X6CLF4F.js} +3 -3
  19. package/dist/{chunk-QQBJC2FQ.js → chunk-5I7Q7RHW.js} +3 -3
  20. package/dist/{chunk-LV2G7VHL.js → chunk-5YRWF5RP.js} +17 -15
  21. package/dist/chunk-5YRWF5RP.js.map +1 -0
  22. package/dist/chunk-5ZHNPNDD.js +944 -0
  23. package/dist/chunk-5ZHNPNDD.js.map +1 -0
  24. package/dist/{chunk-VGLHY6BK.js → chunk-AULFV3KY.js} +1 -2
  25. package/dist/chunk-AULFV3KY.js.map +1 -0
  26. package/dist/{chunk-VWKUT4CW.js → chunk-BWLUBJQG.js} +19 -15
  27. package/dist/chunk-BWLUBJQG.js.map +1 -0
  28. package/dist/{chunk-X5HF2OFP.js → chunk-BWWU5T2D.js} +3 -3
  29. package/dist/chunk-C7TNKIK5.js +39 -0
  30. package/dist/chunk-C7TNKIK5.js.map +1 -0
  31. package/dist/{chunk-MPCCRRE6.js → chunk-CB76WPUS.js} +12 -13
  32. package/dist/chunk-CB76WPUS.js.map +1 -0
  33. package/dist/chunk-CGGO5NKD.js +1194 -0
  34. package/dist/chunk-CGGO5NKD.js.map +1 -0
  35. package/dist/{chunk-B2ZOKNN4.js → chunk-CQCTCW4S.js} +1 -2
  36. package/dist/chunk-CQCTCW4S.js.map +1 -0
  37. package/dist/{chunk-KPULTUOK.js → chunk-CXQGMFI7.js} +3 -3
  38. package/dist/{chunk-LW25LMIH.js → chunk-D3U7VQCG.js} +1 -2
  39. package/dist/{chunk-LW25LMIH.js.map → chunk-D3U7VQCG.js.map} +1 -1
  40. package/dist/{chunk-N5FSLVKO.js → chunk-DXU7NZPH.js} +3 -3
  41. package/dist/{chunk-XGJ2QERC.js → chunk-E3KXVEYI.js} +8 -4
  42. package/dist/chunk-E3KXVEYI.js.map +1 -0
  43. package/dist/{chunk-YAHRT6MB.js → chunk-EGZNOUMH.js} +3 -3
  44. package/dist/{chunk-DNBAMB5J.js → chunk-EVK6HH6Z.js} +1 -2
  45. package/dist/{chunk-DNBAMB5J.js.map → chunk-EVK6HH6Z.js.map} +1 -1
  46. package/dist/{chunk-HGCRXJGP.js → chunk-F5NWRF32.js} +3 -3
  47. package/dist/{chunk-GCFYZSVR.js → chunk-FRGTDZQT.js} +15 -10
  48. package/dist/chunk-FRGTDZQT.js.map +1 -0
  49. package/dist/{chunk-DYXEITK3.js → chunk-GF75O2EN.js} +4 -2
  50. package/dist/chunk-GF75O2EN.js.map +1 -0
  51. package/dist/{chunk-W7FLHT65.js → chunk-GTAS3QVC.js} +1 -2
  52. package/dist/{chunk-W7FLHT65.js.map → chunk-GTAS3QVC.js.map} +1 -1
  53. package/dist/{chunk-RQK5UPMP.js → chunk-H62XQZUM.js} +4 -3
  54. package/dist/chunk-H62XQZUM.js.map +1 -0
  55. package/dist/{chunk-UT2OPSN4.js → chunk-HCU3B6FW.js} +1 -2
  56. package/dist/chunk-HCU3B6FW.js.map +1 -0
  57. package/dist/chunk-HEDE2377.js +754 -0
  58. package/dist/chunk-HEDE2377.js.map +1 -0
  59. package/dist/{chunk-RNQN2FOU.js → chunk-HGIPWY5Y.js} +21 -10
  60. package/dist/chunk-HGIPWY5Y.js.map +1 -0
  61. package/dist/{chunk-Q2IAILVC.js → chunk-HSD24IP2.js} +8 -4
  62. package/dist/chunk-HSD24IP2.js.map +1 -0
  63. package/dist/{chunk-SWCDFEUK.js → chunk-HWQPEBID.js} +18 -14
  64. package/dist/chunk-HWQPEBID.js.map +1 -0
  65. package/dist/{chunk-SFUCUARB.js → chunk-IEHPTILN.js} +4 -4
  66. package/dist/chunk-IEHPTILN.js.map +1 -0
  67. package/dist/{chunk-M5FVUIYP.js → chunk-IEVLWEBO.js} +14 -13
  68. package/dist/chunk-IEVLWEBO.js.map +1 -0
  69. package/dist/{chunk-YUK3X3B4.js → chunk-IKJQOYI4.js} +1 -2
  70. package/dist/{chunk-YUK3X3B4.js.map → chunk-IKJQOYI4.js.map} +1 -1
  71. package/dist/{chunk-TA3WMOMU.js → chunk-IUXXZHY3.js} +16 -22
  72. package/dist/chunk-IUXXZHY3.js.map +1 -0
  73. package/dist/{chunk-EZQ5HBAC.js → chunk-JBDFYIN2.js} +12 -13
  74. package/dist/chunk-JBDFYIN2.js.map +1 -0
  75. package/dist/{chunk-JCC4CU2I.js → chunk-JEBH5APX.js} +14 -14
  76. package/dist/chunk-JEBH5APX.js.map +1 -0
  77. package/dist/{chunk-H3BST2LI.js → chunk-JHI2PHHD.js} +1 -2
  78. package/dist/{chunk-H3BST2LI.js.map → chunk-JHI2PHHD.js.map} +1 -1
  79. package/dist/{chunk-EGB7V74Z.js → chunk-KAWDDS27.js} +1 -3
  80. package/dist/chunk-KAWDDS27.js.map +1 -0
  81. package/dist/{chunk-DP2PP5V2.js → chunk-KGC2OGXI.js} +5 -4
  82. package/dist/chunk-KGC2OGXI.js.map +1 -0
  83. package/dist/{chunk-3WIO7NBR.js → chunk-L4GMDSMB.js} +3 -3
  84. package/dist/{chunk-47AVIIOT.js → chunk-L7FEZ7LU.js} +3 -3
  85. package/dist/{chunk-54NTYJEO.js → chunk-LPDLPRPS.js} +1 -3
  86. package/dist/{chunk-54NTYJEO.js.map → chunk-LPDLPRPS.js.map} +1 -1
  87. package/dist/{chunk-UGK4TAVK.js → chunk-LPLZLSMK.js} +1 -2
  88. package/dist/chunk-LPLZLSMK.js.map +1 -0
  89. package/dist/{chunk-EM4J5EQS.js → chunk-M6E7VK4D.js} +13 -13
  90. package/dist/chunk-M6E7VK4D.js.map +1 -0
  91. package/dist/{chunk-2CC5VW7K.js → chunk-MIQ3ECZM.js} +4 -2
  92. package/dist/chunk-MIQ3ECZM.js.map +1 -0
  93. package/dist/chunk-MRXTUFBZ.js +30 -0
  94. package/dist/chunk-MRXTUFBZ.js.map +1 -0
  95. package/dist/{chunk-RO5IQEDQ.js → chunk-NJ42VNXG.js} +1 -2
  96. package/dist/chunk-NJ42VNXG.js.map +1 -0
  97. package/dist/{chunk-AUHSTJJ3.js → chunk-NLXJMXVE.js} +3 -3
  98. package/dist/{chunk-E2ISWXLB.js → chunk-OQKNDS66.js} +1 -1
  99. package/dist/{chunk-E2ISWXLB.js.map → chunk-OQKNDS66.js.map} +1 -1
  100. package/dist/{chunk-IDYHQQOH.js → chunk-OSVZKYXS.js} +229 -378
  101. package/dist/chunk-OSVZKYXS.js.map +1 -0
  102. package/dist/{chunk-JAGJTM3Q.js → chunk-RHUEV4I7.js} +11 -12
  103. package/dist/chunk-RHUEV4I7.js.map +1 -0
  104. package/dist/{chunk-JALIYI6M.js → chunk-S4KVLPBR.js} +7 -2
  105. package/dist/chunk-S4KVLPBR.js.map +1 -0
  106. package/dist/{chunk-ZEGAMJO2.js → chunk-SAOQW6ZJ.js} +14 -14
  107. package/dist/chunk-SAOQW6ZJ.js.map +1 -0
  108. package/dist/{chunk-NOHWIBRX.js → chunk-SI4GMRXD.js} +13 -14
  109. package/dist/chunk-SI4GMRXD.js.map +1 -0
  110. package/dist/{chunk-X3G37FXT.js → chunk-SYMNWNC3.js} +3 -3
  111. package/dist/{chunk-DM4GSE26.js → chunk-TUNR4VUM.js} +3 -3
  112. package/dist/{chunk-XHCBHYN4.js → chunk-UAJYJP5C.js} +7 -2
  113. package/dist/chunk-UAJYJP5C.js.map +1 -0
  114. package/dist/{chunk-OPYQ5KIO.js → chunk-UYA3XL3J.js} +4 -2
  115. package/dist/chunk-UYA3XL3J.js.map +1 -0
  116. package/dist/{chunk-UINQOUZR.js → chunk-V7JVMG63.js} +3 -3
  117. package/dist/{chunk-LAJJPLEV.js → chunk-VBYIDRNU.js} +7 -3
  118. package/dist/chunk-VBYIDRNU.js.map +1 -0
  119. package/dist/{chunk-GS5AUKUO.js → chunk-VHED2STW.js} +10 -7
  120. package/dist/chunk-VHED2STW.js.map +1 -0
  121. package/dist/{chunk-JZT4QGIP.js → chunk-VIICUPWQ.js} +1 -2
  122. package/dist/{chunk-JZT4QGIP.js.map → chunk-VIICUPWQ.js.map} +1 -1
  123. package/dist/{chunk-QCZ2XUKH.js → chunk-VLRSOWHP.js} +16 -14
  124. package/dist/chunk-VLRSOWHP.js.map +1 -0
  125. package/dist/{chunk-XWVDS66D.js → chunk-W5ZLIQFR.js} +182 -381
  126. package/dist/chunk-W5ZLIQFR.js.map +1 -0
  127. package/dist/{chunk-YGZMVNN5.js → chunk-WTSSEUOZ.js} +7 -2
  128. package/dist/chunk-WTSSEUOZ.js.map +1 -0
  129. package/dist/{chunk-OHROA3FQ.js → chunk-WWP2STF5.js} +7 -2
  130. package/dist/chunk-WWP2STF5.js.map +1 -0
  131. package/dist/{chunk-IK2L4EN3.js → chunk-XADEMW6B.js} +3 -3
  132. package/dist/{chunk-FQ33BYFR.js → chunk-XEMLYWHK.js} +3 -3
  133. package/dist/{chunk-OZAEWZZ3.js → chunk-XFSEADPC.js} +6 -2
  134. package/dist/chunk-XFSEADPC.js.map +1 -0
  135. package/dist/{chunk-TWGVQLG2.js → chunk-XUUSWR4U.js} +1 -2
  136. package/dist/{chunk-TWGVQLG2.js.map → chunk-XUUSWR4U.js.map} +1 -1
  137. package/dist/{chunk-XLQI4IT2.js → chunk-YBVMZ7SR.js} +7 -2
  138. package/dist/chunk-YBVMZ7SR.js.map +1 -0
  139. package/dist/{chunk-A7IVFIOP.js → chunk-YRJICL2Q.js} +14 -14
  140. package/dist/chunk-YRJICL2Q.js.map +1 -0
  141. package/dist/{chunk-ZGSER5TG.js → chunk-ZM44MGC5.js} +3 -3
  142. package/dist/{chunk-G2WCEUQL.js → chunk-ZMREYTHA.js} +15 -14
  143. package/dist/chunk-ZMREYTHA.js.map +1 -0
  144. package/dist/{chunk-H3I2KZIY.js → chunk-ZPB3SLPK.js} +1 -2
  145. package/dist/{chunk-H3I2KZIY.js.map → chunk-ZPB3SLPK.js.map} +1 -1
  146. package/dist/chunk-ZPZQXHW2.js +1230 -0
  147. package/dist/chunk-ZPZQXHW2.js.map +1 -0
  148. package/dist/{config-34LHOGLM.js → config-2LASFFRD.js} +2 -4
  149. package/dist/config-3WDIJPTG.js +9 -0
  150. package/dist/config-4QV4QYI5.js +9 -0
  151. package/dist/{config-ZFJYQZCH.js → config-54USUVSE.js} +2 -4
  152. package/dist/config-5ZXN2T2H.js +9 -0
  153. package/dist/config-A2GQYJDB.js +9 -0
  154. package/dist/config-BBOLI7VE.js +9 -0
  155. package/dist/{config-VM526IKB.js → config-BIBFLUIR.js} +2 -4
  156. package/dist/{config-EO23EY62.js → config-CPYFOUQO.js} +2 -4
  157. package/dist/{config-3IVQJBNW.js → config-DWSJL3NH.js} +2 -4
  158. package/dist/config-E22XAGYN.js +9 -0
  159. package/dist/config-EHE52ZTK.js +9 -0
  160. package/dist/{config-GE4W4ZJC.js → config-EX3ZJTZI.js} +2 -4
  161. package/dist/{config-QNMKWJ4M.js → config-FRK7ZL37.js} +2 -4
  162. package/dist/{config-LHFFXVYI.js → config-HQXNFQZS.js} +2 -4
  163. package/dist/config-HTXOOAOD.js +9 -0
  164. package/dist/{config-HKRMKD76.js → config-IPNWAJHH.js} +2 -4
  165. package/dist/config-J2C53GOT.js +9 -0
  166. package/dist/config-K63RX6EU.js +9 -0
  167. package/dist/config-L7SBSH5L.js +9 -0
  168. package/dist/config-LEALEMKA.js +9 -0
  169. package/dist/{config-IVY5EQQ2.js → config-M3Z47VYU.js} +2 -4
  170. package/dist/{config-EIHSP5DZ.js → config-MZM3IPFM.js} +2 -4
  171. package/dist/{config-GHRUKEQ6.js → config-OJ2BPESH.js} +2 -4
  172. package/dist/{config-WDAZFXYD.js → config-QO2XUME4.js} +2 -4
  173. package/dist/config-QWQGOXQ5.js +9 -0
  174. package/dist/config-RI7IEZUF.js +9 -0
  175. package/dist/{config-CVZ2AGCO.js → config-SPW6NESU.js} +2 -6
  176. package/dist/{config-QAA646XB.js → config-T2IUIU5C.js} +2 -4
  177. package/dist/{config-NV5WXP64.js → config-UU27ALAA.js} +2 -4
  178. package/dist/config-VKKZGC7V.js +9 -0
  179. package/dist/config-W7EVPJNK.js +11 -0
  180. package/dist/config-WKQ3FGTZ.js +9 -0
  181. package/dist/config-WVILHDFV.js +11 -0
  182. package/dist/{config-Q45Y46YT.js → config-XU6D5C7E.js} +2 -4
  183. package/dist/databricks_volume-ETRDJVVQ.js +7 -0
  184. package/dist/digitalocean-QP72DR4J.js +10 -0
  185. package/dist/discord-BSN5RB3E.js +8 -0
  186. package/dist/disk-24NWTN2I.js +7 -0
  187. package/dist/dropbox-OSTZXSIE.js +8 -0
  188. package/dist/email-4ZFPSWIN.js +8 -0
  189. package/dist/gcs-PFWR6MIW.js +10 -0
  190. package/dist/gdocs-GPAZRQG5.js +8 -0
  191. package/dist/gdrive-XSX6A7B3.js +8 -0
  192. package/dist/github-EQ4NXUTA.js +8 -0
  193. package/dist/github_ci-QL5B2Q2N.js +8 -0
  194. package/dist/gmail-2TBT4CVH.js +8 -0
  195. package/dist/gridfs-KZRZ6SIB.js +9 -0
  196. package/dist/gsheets-N53WEXN2.js +8 -0
  197. package/dist/gslides-TATSARTH.js +8 -0
  198. package/dist/hf_buckets-BK7NGJWS.js +10 -0
  199. package/dist/hf_datasets-UQ5QGM4L.js +10 -0
  200. package/dist/hf_models-75LFCQCS.js +10 -0
  201. package/dist/hf_spaces-6T2KB3UC.js +10 -0
  202. package/dist/index.d.ts +494 -40
  203. package/dist/index.js +1193 -388
  204. package/dist/index.js.map +1 -1
  205. package/dist/langfuse-AMQCQWNE.js +8 -0
  206. package/dist/linear-V3TXO6CV.js +8 -0
  207. package/dist/minio-IZRZY4C5.js +10 -0
  208. package/dist/mongodb-VMKPQCPX.js +7 -0
  209. package/dist/nextcloud-5RHQCGDO.js +9 -0
  210. package/dist/notion-6PPNTQFM.js +8 -0
  211. package/dist/oci-CKYBSFZJ.js +10 -0
  212. package/dist/postgres-WIQBVL5M.js +7 -0
  213. package/dist/qingstor-AP4IIPLY.js +10 -0
  214. package/dist/r2-C4XGEWQY.js +10 -0
  215. package/dist/redis-6D55Q2WB.js +8 -0
  216. package/dist/s3-XQBI2CXN.js +8 -0
  217. package/dist/scaleway-SEZJVURB.js +10 -0
  218. package/dist/seaweedfs-3XYIAFU2.js +10 -0
  219. package/dist/slack-ZHXDJQY4.js +8 -0
  220. package/dist/ssh-X2MO7JOV.js +8 -0
  221. package/dist/supabase-BBM44UTM.js +10 -0
  222. package/dist/supabase-BBM44UTM.js.map +1 -0
  223. package/dist/tencent-X72USLJ7.js +10 -0
  224. package/dist/tencent-X72USLJ7.js.map +1 -0
  225. package/dist/trello-EER5NG7L.js +8 -0
  226. package/dist/trello-EER5NG7L.js.map +1 -0
  227. package/dist/wasabi-O4MVIUFG.js +10 -0
  228. package/dist/wasabi-O4MVIUFG.js.map +1 -0
  229. package/package.json +4 -2
  230. package/dist/aliyun-JMJ3PFYY.js +0 -10
  231. package/dist/backblaze-TDFD23QO.js +0 -10
  232. package/dist/box-GQ2U2R6R.js +0 -8
  233. package/dist/ceph-S2VOYO6G.js +0 -10
  234. package/dist/chunk-2CC5VW7K.js.map +0 -1
  235. package/dist/chunk-A7IVFIOP.js.map +0 -1
  236. package/dist/chunk-B2ZOKNN4.js.map +0 -1
  237. package/dist/chunk-DP2PP5V2.js.map +0 -1
  238. package/dist/chunk-DYXEITK3.js.map +0 -1
  239. package/dist/chunk-EGB7V74Z.js.map +0 -1
  240. package/dist/chunk-EM4J5EQS.js.map +0 -1
  241. package/dist/chunk-EZQ5HBAC.js.map +0 -1
  242. package/dist/chunk-G2WCEUQL.js.map +0 -1
  243. package/dist/chunk-GCFYZSVR.js.map +0 -1
  244. package/dist/chunk-GS5AUKUO.js.map +0 -1
  245. package/dist/chunk-IDYHQQOH.js.map +0 -1
  246. package/dist/chunk-JAGJTM3Q.js.map +0 -1
  247. package/dist/chunk-JALIYI6M.js.map +0 -1
  248. package/dist/chunk-JCC4CU2I.js.map +0 -1
  249. package/dist/chunk-LAJJPLEV.js.map +0 -1
  250. package/dist/chunk-LV2G7VHL.js.map +0 -1
  251. package/dist/chunk-M5FVUIYP.js.map +0 -1
  252. package/dist/chunk-MPCCRRE6.js.map +0 -1
  253. package/dist/chunk-NJMGCT63.js.map +0 -1
  254. package/dist/chunk-NOHWIBRX.js.map +0 -1
  255. package/dist/chunk-OHROA3FQ.js.map +0 -1
  256. package/dist/chunk-OPYQ5KIO.js.map +0 -1
  257. package/dist/chunk-OZAEWZZ3.js.map +0 -1
  258. package/dist/chunk-Q2IAILVC.js.map +0 -1
  259. package/dist/chunk-QCZ2XUKH.js.map +0 -1
  260. package/dist/chunk-QGRDPSAH.js.map +0 -1
  261. package/dist/chunk-RNQN2FOU.js.map +0 -1
  262. package/dist/chunk-RO5IQEDQ.js.map +0 -1
  263. package/dist/chunk-RQK5UPMP.js.map +0 -1
  264. package/dist/chunk-S5OVP467.js.map +0 -1
  265. package/dist/chunk-SFUCUARB.js.map +0 -1
  266. package/dist/chunk-SWCDFEUK.js.map +0 -1
  267. package/dist/chunk-TA3WMOMU.js.map +0 -1
  268. package/dist/chunk-TURD42QO.js +0 -1782
  269. package/dist/chunk-TURD42QO.js.map +0 -1
  270. package/dist/chunk-U6QSXTUS.js +0 -7
  271. package/dist/chunk-U6QSXTUS.js.map +0 -1
  272. package/dist/chunk-UGK4TAVK.js.map +0 -1
  273. package/dist/chunk-UT2OPSN4.js.map +0 -1
  274. package/dist/chunk-VGLHY6BK.js.map +0 -1
  275. package/dist/chunk-VWKUT4CW.js.map +0 -1
  276. package/dist/chunk-WAR4Q2NM.js.map +0 -1
  277. package/dist/chunk-WHFUWWI6.js +0 -2097
  278. package/dist/chunk-WHFUWWI6.js.map +0 -1
  279. package/dist/chunk-XGJ2QERC.js.map +0 -1
  280. package/dist/chunk-XHCBHYN4.js.map +0 -1
  281. package/dist/chunk-XLQI4IT2.js.map +0 -1
  282. package/dist/chunk-XWVDS66D.js.map +0 -1
  283. package/dist/chunk-YGZMVNN5.js.map +0 -1
  284. package/dist/chunk-ZEGAMJO2.js.map +0 -1
  285. package/dist/chunk-ZNWVJ6UW.js.map +0 -1
  286. package/dist/config-3BBWD5AB.js +0 -11
  287. package/dist/config-4UDVSUQJ.js +0 -11
  288. package/dist/config-CMDBAPDH.js +0 -11
  289. package/dist/config-D3RLSPNF.js +0 -11
  290. package/dist/config-DG65OEG3.js +0 -11
  291. package/dist/config-GCQK6NJY.js +0 -11
  292. package/dist/config-GVH27UPE.js +0 -11
  293. package/dist/config-HXVYIXP5.js +0 -11
  294. package/dist/config-IDZMEW73.js +0 -11
  295. package/dist/config-IJJXGLBQ.js +0 -11
  296. package/dist/config-KJOLGVB2.js +0 -11
  297. package/dist/config-KMVCVBYN.js +0 -15
  298. package/dist/config-KYTRXAB2.js +0 -15
  299. package/dist/config-OT2TQQCN.js +0 -11
  300. package/dist/config-QWCY3LBQ.js +0 -11
  301. package/dist/config-ZV6G2ZEC.js +0 -11
  302. package/dist/databricks_volume-7XOUYSTY.js +0 -7
  303. package/dist/digitalocean-3CQ4CPPZ.js +0 -10
  304. package/dist/discord-BG7OSRJG.js +0 -8
  305. package/dist/disk-XVLBCVKE.js +0 -8
  306. package/dist/dropbox-74GYLV3R.js +0 -8
  307. package/dist/email-5IZ7OBQ4.js +0 -8
  308. package/dist/gcs-EMEYU2XT.js +0 -10
  309. package/dist/gdocs-R67TDPON.js +0 -8
  310. package/dist/gdrive-PRN2ALRK.js +0 -8
  311. package/dist/github-DV7E6OFV.js +0 -8
  312. package/dist/github_ci-Q554V5PA.js +0 -8
  313. package/dist/gmail-OLN2LT4O.js +0 -8
  314. package/dist/gsheets-H4RYMQJ5.js +0 -8
  315. package/dist/gslides-YLCHKJOM.js +0 -8
  316. package/dist/hf_buckets-DTKXKKFF.js +0 -10
  317. package/dist/hf_datasets-55C4APKR.js +0 -10
  318. package/dist/hf_models-RO5JR36V.js +0 -10
  319. package/dist/hf_spaces-ZVZ3EDRX.js +0 -10
  320. package/dist/langfuse-ACASJZ7O.js +0 -8
  321. package/dist/linear-IC37LZV7.js +0 -8
  322. package/dist/minio-HZ576XFQ.js +0 -10
  323. package/dist/mongodb-JVR62OIO.js +0 -7
  324. package/dist/notion-HKRPQMJS.js +0 -8
  325. package/dist/oci-ZLVECXTW.js +0 -10
  326. package/dist/postgres-P36Z2YN4.js +0 -7
  327. package/dist/qingstor-YLP6K3L4.js +0 -10
  328. package/dist/r2-RPK25ANI.js +0 -10
  329. package/dist/redis-V5ULXULL.js +0 -8
  330. package/dist/s3-4OIOCAAT.js +0 -8
  331. package/dist/scaleway-CCWCLUHB.js +0 -10
  332. package/dist/seaweedfs-QSWKF2FN.js +0 -10
  333. package/dist/slack-YPS7PII3.js +0 -8
  334. package/dist/ssh-YFP3SMTJ.js +0 -9
  335. package/dist/supabase-6CFTOKGZ.js +0 -10
  336. package/dist/tencent-IWZZOSQ4.js +0 -10
  337. package/dist/trello-XYKWZD6P.js +0 -8
  338. package/dist/wasabi-6Z4DC5S5.js +0 -10
  339. /package/dist/{aliyun-JMJ3PFYY.js.map → aliyun-PGI57A43.js.map} +0 -0
  340. /package/dist/{backblaze-TDFD23QO.js.map → backblaze-TSPL6Y56.js.map} +0 -0
  341. /package/dist/{box-GQ2U2R6R.js.map → box-7XTZYDSO.js.map} +0 -0
  342. /package/dist/{ceph-S2VOYO6G.js.map → ceph-C265UI5T.js.map} +0 -0
  343. /package/dist/{chunk-I5THIMPP.js.map → chunk-25W4XQJZ.js.map} +0 -0
  344. /package/dist/{chunk-HJJMP6IX.js.map → chunk-4M73WHIE.js.map} +0 -0
  345. /package/dist/{chunk-7CW3BMPH.js.map → chunk-4X6CLF4F.js.map} +0 -0
  346. /package/dist/{chunk-QQBJC2FQ.js.map → chunk-5I7Q7RHW.js.map} +0 -0
  347. /package/dist/{chunk-X5HF2OFP.js.map → chunk-BWWU5T2D.js.map} +0 -0
  348. /package/dist/{chunk-KPULTUOK.js.map → chunk-CXQGMFI7.js.map} +0 -0
  349. /package/dist/{chunk-N5FSLVKO.js.map → chunk-DXU7NZPH.js.map} +0 -0
  350. /package/dist/{chunk-YAHRT6MB.js.map → chunk-EGZNOUMH.js.map} +0 -0
  351. /package/dist/{chunk-HGCRXJGP.js.map → chunk-F5NWRF32.js.map} +0 -0
  352. /package/dist/{chunk-3WIO7NBR.js.map → chunk-L4GMDSMB.js.map} +0 -0
  353. /package/dist/{chunk-47AVIIOT.js.map → chunk-L7FEZ7LU.js.map} +0 -0
  354. /package/dist/{chunk-AUHSTJJ3.js.map → chunk-NLXJMXVE.js.map} +0 -0
  355. /package/dist/{chunk-X3G37FXT.js.map → chunk-SYMNWNC3.js.map} +0 -0
  356. /package/dist/{chunk-DM4GSE26.js.map → chunk-TUNR4VUM.js.map} +0 -0
  357. /package/dist/{chunk-UINQOUZR.js.map → chunk-V7JVMG63.js.map} +0 -0
  358. /package/dist/{chunk-IK2L4EN3.js.map → chunk-XADEMW6B.js.map} +0 -0
  359. /package/dist/{chunk-FQ33BYFR.js.map → chunk-XEMLYWHK.js.map} +0 -0
  360. /package/dist/{chunk-ZGSER5TG.js.map → chunk-ZM44MGC5.js.map} +0 -0
  361. /package/dist/{config-34LHOGLM.js.map → config-2LASFFRD.js.map} +0 -0
  362. /package/dist/{config-3BBWD5AB.js.map → config-3WDIJPTG.js.map} +0 -0
  363. /package/dist/{config-3IVQJBNW.js.map → config-4QV4QYI5.js.map} +0 -0
  364. /package/dist/{config-4UDVSUQJ.js.map → config-54USUVSE.js.map} +0 -0
  365. /package/dist/{config-CMDBAPDH.js.map → config-5ZXN2T2H.js.map} +0 -0
  366. /package/dist/{config-CVZ2AGCO.js.map → config-A2GQYJDB.js.map} +0 -0
  367. /package/dist/{config-D3RLSPNF.js.map → config-BBOLI7VE.js.map} +0 -0
  368. /package/dist/{config-DG65OEG3.js.map → config-BIBFLUIR.js.map} +0 -0
  369. /package/dist/{config-EIHSP5DZ.js.map → config-CPYFOUQO.js.map} +0 -0
  370. /package/dist/{config-EO23EY62.js.map → config-DWSJL3NH.js.map} +0 -0
  371. /package/dist/{config-GCQK6NJY.js.map → config-E22XAGYN.js.map} +0 -0
  372. /package/dist/{config-GE4W4ZJC.js.map → config-EHE52ZTK.js.map} +0 -0
  373. /package/dist/{config-GHRUKEQ6.js.map → config-EX3ZJTZI.js.map} +0 -0
  374. /package/dist/{config-GVH27UPE.js.map → config-FRK7ZL37.js.map} +0 -0
  375. /package/dist/{config-HKRMKD76.js.map → config-HQXNFQZS.js.map} +0 -0
  376. /package/dist/{config-HXVYIXP5.js.map → config-HTXOOAOD.js.map} +0 -0
  377. /package/dist/{config-IDZMEW73.js.map → config-IPNWAJHH.js.map} +0 -0
  378. /package/dist/{config-IJJXGLBQ.js.map → config-J2C53GOT.js.map} +0 -0
  379. /package/dist/{config-IVY5EQQ2.js.map → config-K63RX6EU.js.map} +0 -0
  380. /package/dist/{config-KJOLGVB2.js.map → config-L7SBSH5L.js.map} +0 -0
  381. /package/dist/{config-KMVCVBYN.js.map → config-LEALEMKA.js.map} +0 -0
  382. /package/dist/{config-KYTRXAB2.js.map → config-M3Z47VYU.js.map} +0 -0
  383. /package/dist/{config-LHFFXVYI.js.map → config-MZM3IPFM.js.map} +0 -0
  384. /package/dist/{config-NV5WXP64.js.map → config-OJ2BPESH.js.map} +0 -0
  385. /package/dist/{config-OT2TQQCN.js.map → config-QO2XUME4.js.map} +0 -0
  386. /package/dist/{config-Q45Y46YT.js.map → config-QWQGOXQ5.js.map} +0 -0
  387. /package/dist/{config-QAA646XB.js.map → config-RI7IEZUF.js.map} +0 -0
  388. /package/dist/{config-QNMKWJ4M.js.map → config-SPW6NESU.js.map} +0 -0
  389. /package/dist/{config-QWCY3LBQ.js.map → config-T2IUIU5C.js.map} +0 -0
  390. /package/dist/{config-VM526IKB.js.map → config-UU27ALAA.js.map} +0 -0
  391. /package/dist/{config-WDAZFXYD.js.map → config-VKKZGC7V.js.map} +0 -0
  392. /package/dist/{config-ZFJYQZCH.js.map → config-W7EVPJNK.js.map} +0 -0
  393. /package/dist/{config-ZV6G2ZEC.js.map → config-WKQ3FGTZ.js.map} +0 -0
  394. /package/dist/{databricks_volume-7XOUYSTY.js.map → config-WVILHDFV.js.map} +0 -0
  395. /package/dist/{digitalocean-3CQ4CPPZ.js.map → config-XU6D5C7E.js.map} +0 -0
  396. /package/dist/{discord-BG7OSRJG.js.map → databricks_volume-ETRDJVVQ.js.map} +0 -0
  397. /package/dist/{disk-XVLBCVKE.js.map → digitalocean-QP72DR4J.js.map} +0 -0
  398. /package/dist/{dropbox-74GYLV3R.js.map → discord-BSN5RB3E.js.map} +0 -0
  399. /package/dist/{email-5IZ7OBQ4.js.map → disk-24NWTN2I.js.map} +0 -0
  400. /package/dist/{gcs-EMEYU2XT.js.map → dropbox-OSTZXSIE.js.map} +0 -0
  401. /package/dist/{gdocs-R67TDPON.js.map → email-4ZFPSWIN.js.map} +0 -0
  402. /package/dist/{gdrive-PRN2ALRK.js.map → gcs-PFWR6MIW.js.map} +0 -0
  403. /package/dist/{github-DV7E6OFV.js.map → gdocs-GPAZRQG5.js.map} +0 -0
  404. /package/dist/{github_ci-Q554V5PA.js.map → gdrive-XSX6A7B3.js.map} +0 -0
  405. /package/dist/{gmail-OLN2LT4O.js.map → github-EQ4NXUTA.js.map} +0 -0
  406. /package/dist/{gsheets-H4RYMQJ5.js.map → github_ci-QL5B2Q2N.js.map} +0 -0
  407. /package/dist/{gslides-YLCHKJOM.js.map → gmail-2TBT4CVH.js.map} +0 -0
  408. /package/dist/{hf_buckets-DTKXKKFF.js.map → gridfs-KZRZ6SIB.js.map} +0 -0
  409. /package/dist/{hf_datasets-55C4APKR.js.map → gsheets-N53WEXN2.js.map} +0 -0
  410. /package/dist/{hf_models-RO5JR36V.js.map → gslides-TATSARTH.js.map} +0 -0
  411. /package/dist/{hf_spaces-ZVZ3EDRX.js.map → hf_buckets-BK7NGJWS.js.map} +0 -0
  412. /package/dist/{langfuse-ACASJZ7O.js.map → hf_datasets-UQ5QGM4L.js.map} +0 -0
  413. /package/dist/{linear-IC37LZV7.js.map → hf_models-75LFCQCS.js.map} +0 -0
  414. /package/dist/{minio-HZ576XFQ.js.map → hf_spaces-6T2KB3UC.js.map} +0 -0
  415. /package/dist/{mongodb-JVR62OIO.js.map → langfuse-AMQCQWNE.js.map} +0 -0
  416. /package/dist/{notion-HKRPQMJS.js.map → linear-V3TXO6CV.js.map} +0 -0
  417. /package/dist/{oci-ZLVECXTW.js.map → minio-IZRZY4C5.js.map} +0 -0
  418. /package/dist/{postgres-P36Z2YN4.js.map → mongodb-VMKPQCPX.js.map} +0 -0
  419. /package/dist/{qingstor-YLP6K3L4.js.map → nextcloud-5RHQCGDO.js.map} +0 -0
  420. /package/dist/{r2-RPK25ANI.js.map → notion-6PPNTQFM.js.map} +0 -0
  421. /package/dist/{redis-V5ULXULL.js.map → oci-CKYBSFZJ.js.map} +0 -0
  422. /package/dist/{s3-4OIOCAAT.js.map → postgres-WIQBVL5M.js.map} +0 -0
  423. /package/dist/{scaleway-CCWCLUHB.js.map → qingstor-AP4IIPLY.js.map} +0 -0
  424. /package/dist/{seaweedfs-QSWKF2FN.js.map → r2-C4XGEWQY.js.map} +0 -0
  425. /package/dist/{slack-YPS7PII3.js.map → redis-6D55Q2WB.js.map} +0 -0
  426. /package/dist/{ssh-YFP3SMTJ.js.map → s3-XQBI2CXN.js.map} +0 -0
  427. /package/dist/{supabase-6CFTOKGZ.js.map → scaleway-SEZJVURB.js.map} +0 -0
  428. /package/dist/{tencent-IWZZOSQ4.js.map → seaweedfs-3XYIAFU2.js.map} +0 -0
  429. /package/dist/{trello-XYKWZD6P.js.map → slack-ZHXDJQY4.js.map} +0 -0
  430. /package/dist/{wasabi-6Z4DC5S5.js.map → ssh-X2MO7JOV.js.map} +0 -0
@@ -0,0 +1,944 @@
1
+ import {
2
+ redactSshConfig
3
+ } from "./chunk-LPLZLSMK.js";
4
+
5
+ // src/resource/ssh/ssh.ts
6
+ import {
7
+ BaseResource,
8
+ PathSpec,
9
+ ResourceName as ResourceName4,
10
+ makeResolveGlob,
11
+ mountKey,
12
+ mountPrefixOf as mountPrefixOf3
13
+ } from "@struktoai/mirage-core";
14
+
15
+ // src/accessor/ssh.ts
16
+ import { Accessor } from "@struktoai/mirage-core";
17
+ import { homedir } from "os";
18
+ import { readFileSync } from "fs";
19
+ import { resolve } from "path";
20
+ function expandHome(p) {
21
+ if (p === "~") return homedir();
22
+ if (p.startsWith("~/")) return resolve(homedir(), p.slice(2));
23
+ return p;
24
+ }
25
+ var SSHAccessor = class extends Accessor {
26
+ constructor(config) {
27
+ super();
28
+ this.config = config;
29
+ }
30
+ config;
31
+ client = null;
32
+ sftpClient = null;
33
+ connectPromise = null;
34
+ async sftp() {
35
+ if (this.sftpClient !== null) return this.sftpClient;
36
+ if (this.connectPromise !== null) return this.connectPromise;
37
+ this.connectPromise = this.connect();
38
+ try {
39
+ return await this.connectPromise;
40
+ } finally {
41
+ this.connectPromise = null;
42
+ }
43
+ }
44
+ async connect() {
45
+ let ssh2Mod;
46
+ try {
47
+ ssh2Mod = await import("ssh2");
48
+ } catch (err) {
49
+ const msg = err instanceof Error ? err.message : String(err);
50
+ throw new Error(`ssh2 is required for the SSH resource \u2014 install it as a peer dep: ${msg}`);
51
+ }
52
+ const { Client: ClientCtor } = ssh2Mod;
53
+ const c = new ClientCtor();
54
+ const opts = {
55
+ host: this.config.hostname ?? this.config.host,
56
+ port: this.config.port ?? 22,
57
+ readyTimeout: (this.config.timeout ?? 30) * 1e3
58
+ };
59
+ if (this.config.username !== void 0) opts.username = this.config.username;
60
+ if (this.config.password !== void 0) opts.password = this.config.password;
61
+ if (this.config.identityFile !== void 0) {
62
+ opts.privateKey = readFileSync(expandHome(this.config.identityFile));
63
+ if (this.config.passphrase !== void 0) opts.passphrase = this.config.passphrase;
64
+ }
65
+ return new Promise((resolveFn, rejectFn) => {
66
+ c.on("ready", () => {
67
+ c.sftp((err, sftp) => {
68
+ if (err !== void 0) {
69
+ rejectFn(err);
70
+ return;
71
+ }
72
+ this.client = c;
73
+ this.sftpClient = sftp;
74
+ resolveFn(sftp);
75
+ });
76
+ });
77
+ c.on("error", rejectFn);
78
+ c.connect(opts);
79
+ });
80
+ }
81
+ close() {
82
+ if (this.client !== null) {
83
+ this.client.end();
84
+ this.client = null;
85
+ this.sftpClient = null;
86
+ }
87
+ return Promise.resolve();
88
+ }
89
+ };
90
+
91
+ // src/commands/builtin/ssh/index.ts
92
+ import {
93
+ ResourceName as ResourceName2,
94
+ makeFiletypeCommands,
95
+ makeGenericCommands
96
+ } from "@struktoai/mirage-core";
97
+
98
+ // src/core/ssh/read.ts
99
+ import { enoent as enoent2 } from "@struktoai/mirage-core";
100
+
101
+ // src/core/ssh/stream.ts
102
+ import { once } from "events";
103
+ import { enoent } from "@struktoai/mirage-core";
104
+
105
+ // src/core/ssh/utils.ts
106
+ import { lstripSlash, mountPrefixOf, rstripSlash } from "@struktoai/mirage-core";
107
+ var S_IFMT = 61440;
108
+ var S_IFDIR = 16384;
109
+ var S_IFREG = 32768;
110
+ function stripPrefix(p) {
111
+ if (mountPrefixOf(p.virtual, p.resourcePath) && p.virtual.startsWith(mountPrefixOf(p.virtual, p.resourcePath))) {
112
+ return p.virtual.slice(mountPrefixOf(p.virtual, p.resourcePath).length) || "/";
113
+ }
114
+ return p.virtual;
115
+ }
116
+ function joinRoot(root, rel) {
117
+ const r = rstripSlash(root);
118
+ const stripped = lstripSlash(rel);
119
+ if (stripped === "") return r === "" ? "/" : r;
120
+ if (r === "") return `/${stripped}`;
121
+ return `${r}/${stripped}`;
122
+ }
123
+ function isNoSuchFile(err) {
124
+ if (err === null || err === void 0) return false;
125
+ if (typeof err !== "object") return false;
126
+ const code = err.code;
127
+ return code === 2;
128
+ }
129
+ function isDirectoryAttrs(attrs) {
130
+ if (attrs.mode === void 0) return false;
131
+ return (attrs.mode & S_IFMT) === S_IFDIR;
132
+ }
133
+ function isFileAttrs(attrs) {
134
+ if (attrs.mode === void 0) return false;
135
+ return (attrs.mode & S_IFMT) === S_IFREG;
136
+ }
137
+
138
+ // src/core/ssh/stream.ts
139
+ async function waitForClose(rs) {
140
+ try {
141
+ await once(rs, "close");
142
+ return null;
143
+ } catch (error) {
144
+ return error instanceof Error ? error : new Error(String(error));
145
+ }
146
+ }
147
+ async function* readChunks(rs) {
148
+ const closed = waitForClose(rs);
149
+ let closeError = null;
150
+ try {
151
+ for await (const chunk of rs) {
152
+ const buf = chunk;
153
+ yield new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);
154
+ }
155
+ } finally {
156
+ if (!rs.destroyed) rs.destroy();
157
+ closeError = await closed;
158
+ }
159
+ if (closeError !== null) throw closeError;
160
+ }
161
+ async function* stream(accessor, p) {
162
+ const sftp = await accessor.sftp();
163
+ const virtual = stripPrefix(p);
164
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
165
+ const rs = sftp.createReadStream(remote);
166
+ try {
167
+ yield* readChunks(rs);
168
+ } catch (err) {
169
+ if (isNoSuchFile(err)) throw enoent(p);
170
+ throw err;
171
+ }
172
+ }
173
+ async function rangeRead(accessor, p, start, end) {
174
+ const sftp = await accessor.sftp();
175
+ const virtual = stripPrefix(p);
176
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
177
+ const rs = sftp.createReadStream(remote, { start, end: end - 1 });
178
+ const chunks = [];
179
+ let total = 0;
180
+ try {
181
+ for await (const u8 of readChunks(rs)) {
182
+ chunks.push(u8);
183
+ total += u8.byteLength;
184
+ }
185
+ } catch (err) {
186
+ if (isNoSuchFile(err)) throw enoent(p);
187
+ throw err;
188
+ }
189
+ const out = new Uint8Array(total);
190
+ let offset = 0;
191
+ for (const c of chunks) {
192
+ out.set(c, offset);
193
+ offset += c.byteLength;
194
+ }
195
+ return out;
196
+ }
197
+
198
+ // src/core/ssh/read.ts
199
+ async function read(accessor, p) {
200
+ const sftp = await accessor.sftp();
201
+ const virtual = stripPrefix(p);
202
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
203
+ const rs = sftp.createReadStream(remote);
204
+ const chunks = [];
205
+ let total = 0;
206
+ try {
207
+ for await (const u8 of readChunks(rs)) {
208
+ chunks.push(u8);
209
+ total += u8.byteLength;
210
+ }
211
+ } catch (err) {
212
+ if (isNoSuchFile(err)) throw enoent2(p);
213
+ throw err;
214
+ }
215
+ const out = new Uint8Array(total);
216
+ let offset = 0;
217
+ for (const c of chunks) {
218
+ out.set(c, offset);
219
+ offset += c.byteLength;
220
+ }
221
+ return out;
222
+ }
223
+
224
+ // src/core/ssh/entry.ts
225
+ import { FileStat, FileType, guessType } from "@struktoai/mirage-core";
226
+ function attrsToFileStat(name, attrs) {
227
+ const modified = attrs.mtime !== void 0 ? new Date(attrs.mtime * 1e3).toISOString() : null;
228
+ const extra = {};
229
+ if (attrs.mode !== void 0) extra.mode = attrs.mode;
230
+ if (attrs.uid !== void 0) extra.uid = attrs.uid;
231
+ if (attrs.gid !== void 0) extra.gid = attrs.gid;
232
+ if (isDirectoryAttrs(attrs)) {
233
+ return new FileStat({
234
+ name,
235
+ size: null,
236
+ modified,
237
+ type: FileType.DIRECTORY,
238
+ extra
239
+ });
240
+ }
241
+ return new FileStat({
242
+ name,
243
+ size: attrs.size ?? null,
244
+ modified,
245
+ fingerprint: null,
246
+ type: guessType(name),
247
+ extra
248
+ });
249
+ }
250
+
251
+ // src/core/ssh/stat.ts
252
+ import { enoent as enoent3, rstripSlash as rstripSlash2 } from "@struktoai/mirage-core";
253
+ async function stat(accessor, p) {
254
+ const sftp = await accessor.sftp();
255
+ const virtual = stripPrefix(p);
256
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
257
+ const attrs = await new Promise((resolveFn, rejectFn) => {
258
+ sftp.lstat(remote, (err, stats) => {
259
+ if (err !== void 0) {
260
+ if (isNoSuchFile(err)) rejectFn(enoent3(p));
261
+ else rejectFn(err);
262
+ return;
263
+ }
264
+ resolveFn(stats);
265
+ });
266
+ });
267
+ const cleaned = rstripSlash2(virtual);
268
+ const name = cleaned.length === 0 ? "/" : cleaned.split("/").pop() ?? "/";
269
+ return attrsToFileStat(name, attrs);
270
+ }
271
+
272
+ // src/core/ssh/append.ts
273
+ import { invalidateAfterWrite } from "@struktoai/mirage-core";
274
+ async function appendBytes(accessor, p, data) {
275
+ const sftp = await accessor.sftp();
276
+ const virtual = stripPrefix(p);
277
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
278
+ await new Promise((resolveFn, rejectFn) => {
279
+ sftp.appendFile(remote, Buffer.from(data), (err) => {
280
+ if (err) rejectFn(err);
281
+ else resolveFn();
282
+ });
283
+ });
284
+ await invalidateAfterWrite(p);
285
+ }
286
+
287
+ // src/core/ssh/constants.ts
288
+ var SCOPE_ERROR = 5e3;
289
+
290
+ // src/core/ssh/write.ts
291
+ import { ResourceName, invalidateAfterWrite as invalidateAfterWrite2, record } from "@struktoai/mirage-core";
292
+ async function writeBytes(accessor, p, data) {
293
+ const start = performance.now();
294
+ const sftp = await accessor.sftp();
295
+ const virtual = stripPrefix(p);
296
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
297
+ await new Promise((resolveFn, rejectFn) => {
298
+ sftp.writeFile(remote, Buffer.from(data), (err) => {
299
+ if (err) rejectFn(err);
300
+ else resolveFn();
301
+ });
302
+ });
303
+ record("write", virtual, ResourceName.SSH, data.byteLength, start);
304
+ await invalidateAfterWrite2(p);
305
+ }
306
+
307
+ // src/core/ssh/copy.ts
308
+ async function copy(accessor, src, dst) {
309
+ const data = await read(accessor, src);
310
+ await writeBytes(accessor, dst, data);
311
+ }
312
+
313
+ // src/core/ssh/create.ts
314
+ function create(accessor, path) {
315
+ return writeBytes(accessor, path, new Uint8Array());
316
+ }
317
+
318
+ // src/core/ssh/du.ts
319
+ import { norm } from "@struktoai/mirage-core";
320
+ async function readRemoteDir(accessor, remote) {
321
+ const sftp = await accessor.sftp();
322
+ return new Promise((resolveFn, rejectFn) => {
323
+ sftp.readdir(remote, (err, entries) => {
324
+ if (err !== void 0) {
325
+ const code = err.code;
326
+ if (code === 2) {
327
+ resolveFn(null);
328
+ return;
329
+ }
330
+ rejectFn(err);
331
+ return;
332
+ }
333
+ resolveFn(entries);
334
+ });
335
+ });
336
+ }
337
+ async function statRemote(accessor, remote) {
338
+ const sftp = await accessor.sftp();
339
+ return new Promise((resolveFn, rejectFn) => {
340
+ sftp.lstat(remote, (err, stats) => {
341
+ if (err !== void 0) {
342
+ const code = err.code;
343
+ if (code === 2) {
344
+ resolveFn(null);
345
+ return;
346
+ }
347
+ rejectFn(err);
348
+ return;
349
+ }
350
+ resolveFn({ mode: stats.mode, size: stats.size });
351
+ });
352
+ });
353
+ }
354
+ async function walkSizes(accessor, virtual) {
355
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
356
+ const st = await statRemote(accessor, remote);
357
+ if (st === null) return 0;
358
+ if (isFileAttrs(st)) return st.size;
359
+ if (!isDirectoryAttrs(st)) return 0;
360
+ const entries = await readRemoteDir(accessor, remote);
361
+ if (entries === null) return 0;
362
+ let total = 0;
363
+ for (const entry of entries) {
364
+ if (entry.filename === "." || entry.filename === "..") continue;
365
+ const child = virtual === "/" ? `/${entry.filename}` : `${virtual}/${entry.filename}`;
366
+ if (isDirectoryAttrs(entry.attrs)) {
367
+ total += await walkSizes(accessor, child);
368
+ } else {
369
+ total += entry.attrs.size;
370
+ }
371
+ }
372
+ return total;
373
+ }
374
+ async function walkAll(accessor, virtual, entries) {
375
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
376
+ const st = await statRemote(accessor, remote);
377
+ if (st === null) return 0;
378
+ if (isFileAttrs(st)) {
379
+ entries.push([virtual, st.size]);
380
+ return st.size;
381
+ }
382
+ if (!isDirectoryAttrs(st)) return 0;
383
+ const list = await readRemoteDir(accessor, remote);
384
+ if (list === null) return 0;
385
+ let total = 0;
386
+ for (const entry of list) {
387
+ if (entry.filename === "." || entry.filename === "..") continue;
388
+ const child = virtual === "/" ? `/${entry.filename}` : `${virtual}/${entry.filename}`;
389
+ if (isDirectoryAttrs(entry.attrs)) {
390
+ total += await walkAll(accessor, child, entries);
391
+ } else {
392
+ const size = entry.attrs.size;
393
+ entries.push([child, size]);
394
+ total += size;
395
+ }
396
+ }
397
+ return total;
398
+ }
399
+ async function du(accessor, p) {
400
+ const virtual = stripPrefix(p);
401
+ return walkSizes(accessor, virtual);
402
+ }
403
+ async function duAll(accessor, p) {
404
+ const virtual = norm(stripPrefix(p));
405
+ const entries = [];
406
+ const total = await walkAll(accessor, virtual, entries);
407
+ entries.sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0);
408
+ return [entries, total];
409
+ }
410
+
411
+ // src/core/ssh/exists.ts
412
+ async function exists(accessor, p) {
413
+ const sftp = await accessor.sftp();
414
+ const remote = joinRoot(accessor.config.root ?? "/", stripPrefix(p));
415
+ return new Promise((resolveFn) => {
416
+ sftp.exists(remote, (yes) => {
417
+ resolveFn(yes);
418
+ });
419
+ });
420
+ }
421
+
422
+ // src/core/ssh/find.ts
423
+ import { norm as norm2 } from "@struktoai/mirage-core";
424
+ import {
425
+ buildTree,
426
+ emitStartPath,
427
+ keep,
428
+ startBasename
429
+ } from "@struktoai/mirage-core";
430
+ function isFileType(t) {
431
+ return t === "f" || t === "file";
432
+ }
433
+ function isDirType(t) {
434
+ return t === "d" || t === "directory";
435
+ }
436
+ function matches(entry, entryPath, isDir, depth, opts, tree) {
437
+ if (opts.maxDepth !== null && opts.maxDepth !== void 0 && depth > opts.maxDepth) return false;
438
+ const basename = entryPath.slice(entryPath.lastIndexOf("/") + 1);
439
+ const isEmpty = isDir ? false : entry.attrs.size === 0;
440
+ if (!keep(
441
+ { key: entryPath, name: basename, kind: isDir ? "d" : "f", depth, isEmpty },
442
+ tree,
443
+ opts.minDepth
444
+ )) {
445
+ return false;
446
+ }
447
+ if (opts.minSize != null || opts.maxSize != null) {
448
+ const size = isDir ? 0 : entry.attrs.size;
449
+ if (opts.minSize != null && size < opts.minSize) return false;
450
+ if (opts.maxSize != null && size > opts.maxSize) return false;
451
+ }
452
+ if (opts.mtimeMin !== null && opts.mtimeMin !== void 0 || opts.mtimeMax !== null && opts.mtimeMax !== void 0) {
453
+ const mtime = entry.attrs.mtime;
454
+ if (opts.mtimeMin !== null && opts.mtimeMin !== void 0 && mtime < opts.mtimeMin) return false;
455
+ if (opts.mtimeMax !== null && opts.mtimeMax !== void 0 && mtime > opts.mtimeMax) return false;
456
+ }
457
+ return true;
458
+ }
459
+ async function readRemoteDir2(accessor, remote) {
460
+ const sftp = await accessor.sftp();
461
+ return new Promise((resolveFn, rejectFn) => {
462
+ sftp.readdir(remote, (err, entries) => {
463
+ if (err !== void 0) {
464
+ const code = err.code;
465
+ if (code === 2) {
466
+ resolveFn(null);
467
+ return;
468
+ }
469
+ rejectFn(err);
470
+ return;
471
+ }
472
+ resolveFn(entries);
473
+ });
474
+ });
475
+ }
476
+ async function statRemote2(accessor, remote) {
477
+ const sftp = await accessor.sftp();
478
+ return new Promise((resolveFn, rejectFn) => {
479
+ sftp.stat(remote, (err, stats) => {
480
+ if (err !== void 0) {
481
+ const code = err.code;
482
+ if (code === 2) {
483
+ resolveFn(null);
484
+ return;
485
+ }
486
+ rejectFn(err);
487
+ return;
488
+ }
489
+ resolveFn({ isDir: stats.isDirectory(), size: stats.size });
490
+ });
491
+ });
492
+ }
493
+ async function walk(ctx, virtual, depth) {
494
+ const opts = ctx.options;
495
+ if (opts.maxDepth !== null && opts.maxDepth !== void 0 && depth > opts.maxDepth) return;
496
+ const remote = joinRoot(ctx.accessor.config.root ?? "/", virtual);
497
+ const entries = await readRemoteDir2(ctx.accessor, remote);
498
+ if (entries === null) return;
499
+ for (const entry of entries) {
500
+ if (entry.filename === "." || entry.filename === "..") continue;
501
+ const childPath = virtual === "/" ? `/${entry.filename}` : `${virtual}/${entry.filename}`;
502
+ const isDir = isDirectoryAttrs(entry.attrs);
503
+ if (matches(entry, childPath, isDir, depth + 1, opts, ctx.tree)) {
504
+ ctx.results.push(childPath);
505
+ }
506
+ if (isDir) {
507
+ await walk(ctx, childPath, depth + 1);
508
+ }
509
+ }
510
+ }
511
+ async function find(accessor, p, options = {}) {
512
+ const virtual = norm2(stripPrefix(p));
513
+ const startName = startBasename(p.virtual);
514
+ const results = [];
515
+ const baseDepth = (virtual.match(/\//g) ?? []).length;
516
+ const typeKind = isFileType(options.type) ? "f" : isDirType(options.type) ? "d" : null;
517
+ const tree = options.tree ?? buildTree({
518
+ name: options.name,
519
+ iname: options.iname,
520
+ pathPattern: options.pathPattern,
521
+ type: typeKind,
522
+ nameExclude: options.nameExclude,
523
+ orNames: options.orNames
524
+ });
525
+ if (options.maxDepth == null || options.maxDepth >= 0) {
526
+ const st = await statRemote2(accessor, joinRoot(accessor.config.root ?? "/", virtual));
527
+ emitStartPath(results, virtual, startName, {
528
+ kind: st?.isDir ? "d" : "f",
529
+ isEmpty: st === null ? null : st.isDir ? false : st.size === 0,
530
+ exists: st !== null,
531
+ tree,
532
+ maxDepth: options.maxDepth,
533
+ minDepth: options.minDepth,
534
+ size: st === null || st.isDir ? null : st.size,
535
+ minSize: options.minSize,
536
+ maxSize: options.maxSize
537
+ });
538
+ }
539
+ await walk({ accessor, options, results, baseDepth, tree }, virtual, 0);
540
+ results.sort();
541
+ return results;
542
+ }
543
+
544
+ // src/core/ssh/mkdir.ts
545
+ import { invalidateAfterWrite as invalidateAfterWrite3, invalidateAncestors } from "@struktoai/mirage-core";
546
+ import { enoent as enoent4, stripSlash } from "@struktoai/mirage-core";
547
+ async function statRemote3(sftp, remote) {
548
+ return new Promise((resolveFn) => {
549
+ sftp.lstat(remote, (err, stats) => {
550
+ if (err) resolveFn(null);
551
+ else resolveFn(stats);
552
+ });
553
+ });
554
+ }
555
+ async function mkdirOne(sftp, remote, ignoreExisting) {
556
+ return new Promise((resolveFn, rejectFn) => {
557
+ sftp.mkdir(remote, (err) => {
558
+ if (!err) {
559
+ resolveFn();
560
+ return;
561
+ }
562
+ if (ignoreExisting) {
563
+ resolveFn();
564
+ return;
565
+ }
566
+ rejectFn(err);
567
+ });
568
+ });
569
+ }
570
+ async function mkdir(accessor, p, recursive) {
571
+ const sftp = await accessor.sftp();
572
+ const virtual = stripPrefix(p);
573
+ const root = accessor.config.root ?? "/";
574
+ const remote = joinRoot(root, virtual);
575
+ if (!recursive) {
576
+ try {
577
+ await mkdirOne(sftp, remote, false);
578
+ } catch (err) {
579
+ if (isNoSuchFile(err)) throw enoent4(p);
580
+ throw err;
581
+ }
582
+ return;
583
+ }
584
+ const cleaned = stripSlash(virtual);
585
+ if (cleaned.length === 0) return;
586
+ const parts = cleaned.split("/");
587
+ let cur = "";
588
+ for (const part of parts) {
589
+ cur = cur === "" ? `/${part}` : `${cur}/${part}`;
590
+ const stepRemote = joinRoot(root, cur);
591
+ const existing = await statRemote3(sftp, stepRemote);
592
+ if (existing?.isDirectory()) continue;
593
+ await mkdirOne(sftp, stepRemote, true);
594
+ }
595
+ await invalidateAfterWrite3(p);
596
+ await invalidateAncestors(p);
597
+ }
598
+
599
+ // src/core/ssh/readdir.ts
600
+ import { enoent as enoent5, mountPrefixOf as mountPrefixOf2, stripSlash as stripSlash2 } from "@struktoai/mirage-core";
601
+ async function readdir(accessor, p) {
602
+ const sftp = await accessor.sftp();
603
+ const virtual = p.pattern !== null ? p.directory.slice(mountPrefixOf2(p.virtual, p.resourcePath).length) || "/" : stripPrefix(p);
604
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
605
+ const list = await new Promise((resolveFn, rejectFn) => {
606
+ sftp.readdir(remote, (err, entries) => {
607
+ if (err !== void 0) {
608
+ if (isNoSuchFile(err)) rejectFn(enoent5(p));
609
+ else rejectFn(err);
610
+ return;
611
+ }
612
+ resolveFn(entries);
613
+ });
614
+ });
615
+ const base = `/${stripSlash2(virtual)}`;
616
+ const dirPrefix = base === "/" ? "/" : `${base}/`;
617
+ const mountPrefix = mountPrefixOf2(p.virtual, p.resourcePath);
618
+ const names = [];
619
+ for (const entry of list) {
620
+ if (entry.filename === "." || entry.filename === "..") continue;
621
+ names.push(`${mountPrefix}${dirPrefix}${entry.filename}`);
622
+ }
623
+ names.sort();
624
+ return names;
625
+ }
626
+
627
+ // src/core/ssh/rename.ts
628
+ import { invalidateAfterUnlink, invalidateAfterWrite as invalidateAfterWrite4 } from "@struktoai/mirage-core";
629
+ import { enoent as enoent6 } from "@struktoai/mirage-core";
630
+ async function rename(accessor, src, dst) {
631
+ const sftp = await accessor.sftp();
632
+ const root = accessor.config.root ?? "/";
633
+ const srcVirtual = stripPrefix(src);
634
+ const dstVirtual = stripPrefix(dst);
635
+ const remoteSrc = joinRoot(root, srcVirtual);
636
+ const remoteDst = joinRoot(root, dstVirtual);
637
+ await new Promise((resolveFn, rejectFn) => {
638
+ const done = (err) => {
639
+ if (!err) resolveFn();
640
+ else if (isNoSuchFile(err)) rejectFn(enoent6(src));
641
+ else rejectFn(err);
642
+ };
643
+ try {
644
+ sftp.ext_openssh_rename(remoteSrc, remoteDst, done);
645
+ } catch {
646
+ sftp.rename(remoteSrc, remoteDst, done);
647
+ }
648
+ });
649
+ await invalidateAfterWrite4(dst);
650
+ await invalidateAfterUnlink(src);
651
+ }
652
+
653
+ // src/core/ssh/rm.ts
654
+ import { enoent as enoent7, invalidateAfterUnlink as invalidateAfterUnlink2 } from "@struktoai/mirage-core";
655
+ async function statRemote4(sftp, remote) {
656
+ return new Promise((resolveFn, rejectFn) => {
657
+ sftp.lstat(remote, (err, stats) => {
658
+ if (err !== void 0) rejectFn(err);
659
+ else resolveFn(stats);
660
+ });
661
+ });
662
+ }
663
+ async function readdirRemote(sftp, remote) {
664
+ return new Promise((resolveFn, rejectFn) => {
665
+ sftp.readdir(remote, (err, list) => {
666
+ if (err !== void 0) rejectFn(err);
667
+ else resolveFn(list);
668
+ });
669
+ });
670
+ }
671
+ async function unlinkRemote(sftp, remote) {
672
+ return new Promise((resolveFn, rejectFn) => {
673
+ sftp.unlink(remote, (err) => {
674
+ if (err) rejectFn(err);
675
+ else resolveFn();
676
+ });
677
+ });
678
+ }
679
+ async function rmdirRemote(sftp, remote) {
680
+ return new Promise((resolveFn, rejectFn) => {
681
+ sftp.rmdir(remote, (err) => {
682
+ if (err) rejectFn(err);
683
+ else resolveFn();
684
+ });
685
+ });
686
+ }
687
+ async function rmRecurse(sftp, remote) {
688
+ const stats = await statRemote4(sftp, remote);
689
+ if (isDirectoryAttrs(stats)) {
690
+ const entries = await readdirRemote(sftp, remote);
691
+ for (const entry of entries) {
692
+ if (entry.filename === "." || entry.filename === "..") continue;
693
+ const child = remote === "/" ? `/${entry.filename}` : `${remote}/${entry.filename}`;
694
+ await rmRecurse(sftp, child);
695
+ }
696
+ await rmdirRemote(sftp, remote);
697
+ return;
698
+ }
699
+ await unlinkRemote(sftp, remote);
700
+ }
701
+ async function rmR(accessor, p) {
702
+ const sftp = await accessor.sftp();
703
+ const virtual = stripPrefix(p);
704
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
705
+ try {
706
+ await rmRecurse(sftp, remote);
707
+ } catch (err) {
708
+ if (isNoSuchFile(err)) throw enoent7(p);
709
+ throw err;
710
+ }
711
+ await invalidateAfterUnlink2(p);
712
+ }
713
+
714
+ // src/core/ssh/rmdir.ts
715
+ import { enoent as enoent8, invalidateAfterUnlink as invalidateAfterUnlink3 } from "@struktoai/mirage-core";
716
+ async function rmdir(accessor, p) {
717
+ const sftp = await accessor.sftp();
718
+ const virtual = stripPrefix(p);
719
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
720
+ await new Promise((resolveFn, rejectFn) => {
721
+ sftp.rmdir(remote, (err) => {
722
+ if (!err) {
723
+ resolveFn();
724
+ return;
725
+ }
726
+ if (isNoSuchFile(err)) rejectFn(enoent8(p));
727
+ else rejectFn(err);
728
+ });
729
+ });
730
+ await invalidateAfterUnlink3(p);
731
+ }
732
+
733
+ // src/core/ssh/truncate.ts
734
+ async function truncate(accessor, p, length) {
735
+ let data;
736
+ try {
737
+ data = await read(accessor, p);
738
+ } catch (err) {
739
+ if (err.code === "ENOENT") {
740
+ data = new Uint8Array(0);
741
+ } else {
742
+ throw err;
743
+ }
744
+ }
745
+ const out = new Uint8Array(length);
746
+ out.set(data.subarray(0, Math.min(data.byteLength, length)));
747
+ await writeBytes(accessor, p, out);
748
+ }
749
+
750
+ // src/core/ssh/unlink.ts
751
+ import { invalidateAfterUnlink as invalidateAfterUnlink4 } from "@struktoai/mirage-core";
752
+ import { enoent as enoent9 } from "@struktoai/mirage-core";
753
+ async function unlink(accessor, p) {
754
+ const sftp = await accessor.sftp();
755
+ const virtual = stripPrefix(p);
756
+ const remote = joinRoot(accessor.config.root ?? "/", virtual);
757
+ await new Promise((resolveFn, rejectFn) => {
758
+ sftp.unlink(remote, (err) => {
759
+ if (!err) {
760
+ resolveFn();
761
+ return;
762
+ }
763
+ if (isNoSuchFile(err)) rejectFn(enoent9(p));
764
+ else rejectFn(err);
765
+ });
766
+ });
767
+ await invalidateAfterUnlink4(p);
768
+ }
769
+
770
+ // src/commands/builtin/ssh/io.ts
771
+ var SSH_IO = {
772
+ maxGlobMatches: SCOPE_ERROR,
773
+ readdir,
774
+ readBytes: read,
775
+ readStream: stream,
776
+ stat,
777
+ isMounted: () => true,
778
+ local: false,
779
+ write: writeBytes,
780
+ exists,
781
+ mkdir: (accessor, path, parents) => mkdir(accessor, path, parents === true),
782
+ unlink,
783
+ rmdir,
784
+ rmR,
785
+ rename,
786
+ copy,
787
+ create,
788
+ truncate,
789
+ append: appendBytes,
790
+ find,
791
+ duTotal: du,
792
+ duAll
793
+ };
794
+
795
+ // src/commands/builtin/ssh/index.ts
796
+ var SSH_COMMANDS = [
797
+ ...makeFiletypeCommands({
798
+ resource: ResourceName2.SSH,
799
+ readBytes: read,
800
+ statEntry: stat
801
+ }),
802
+ ...makeGenericCommands(ResourceName2.SSH, SSH_IO)
803
+ ];
804
+
805
+ // src/ops/ssh/index.ts
806
+ import { ResourceName as ResourceName3, makeGenericOps } from "@struktoai/mirage-core";
807
+ var SSH_OPS = makeGenericOps(ResourceName3.SSH, SSH_IO, {
808
+ mkdirParents: true,
809
+ forwardIndex: false
810
+ });
811
+
812
+ // src/resource/ssh/prompt.ts
813
+ var SSH_PROMPT = `{prefix}
814
+ Remote filesystem via SSH/SFTP.
815
+ IMPORTANT: This is a remote mount. Prefer targeted reads over full scans.
816
+ Supports: ls, cat, head, tail, grep, rg, wc, find, tree, stat, mkdir, touch, cp, mv, rm, tee.`;
817
+
818
+ // src/resource/ssh/ssh.ts
819
+ var globCore = makeResolveGlob(readdir, SCOPE_ERROR);
820
+ var SSHResource = class extends BaseResource {
821
+ kind = ResourceName4.SSH;
822
+ cachesReads = true;
823
+ indexTtl = 60;
824
+ prompt = SSH_PROMPT;
825
+ config;
826
+ accessor;
827
+ opsMap = {
828
+ read_bytes: read,
829
+ write: writeBytes,
830
+ readdir,
831
+ stat,
832
+ unlink,
833
+ rmdir,
834
+ copy,
835
+ rename,
836
+ mkdir,
837
+ read_stream: stream,
838
+ range_read: rangeRead,
839
+ rm_recursive: rmR,
840
+ du_total: du,
841
+ du_all: duAll,
842
+ create,
843
+ truncate,
844
+ exists,
845
+ find_flat: find,
846
+ append: appendBytes
847
+ };
848
+ constructor(config) {
849
+ super();
850
+ this.config = config;
851
+ this.accessor = new SSHAccessor(config);
852
+ }
853
+ open() {
854
+ return Promise.resolve();
855
+ }
856
+ close() {
857
+ return this.accessor.close();
858
+ }
859
+ ops() {
860
+ return SSH_OPS;
861
+ }
862
+ commands() {
863
+ return SSH_COMMANDS;
864
+ }
865
+ streamPath(p) {
866
+ return stream(this.accessor, p);
867
+ }
868
+ readFile(p) {
869
+ return read(this.accessor, p);
870
+ }
871
+ writeFile(p, data) {
872
+ return writeBytes(this.accessor, p, data);
873
+ }
874
+ appendFile(p, data) {
875
+ return appendBytes(this.accessor, p, data);
876
+ }
877
+ readdir(p) {
878
+ return readdir(this.accessor, p);
879
+ }
880
+ stat(p) {
881
+ return stat(this.accessor, p);
882
+ }
883
+ exists(p) {
884
+ return exists(this.accessor, p);
885
+ }
886
+ mkdir(p, options) {
887
+ return mkdir(this.accessor, p, options?.recursive === true);
888
+ }
889
+ rmdir(p) {
890
+ return rmdir(this.accessor, p);
891
+ }
892
+ unlink(p) {
893
+ return unlink(this.accessor, p);
894
+ }
895
+ rename(src, dst) {
896
+ return rename(this.accessor, src, dst);
897
+ }
898
+ truncate(p, length) {
899
+ return truncate(this.accessor, p, length);
900
+ }
901
+ copy(src, dst) {
902
+ return copy(this.accessor, src, dst);
903
+ }
904
+ rmR(p) {
905
+ return rmR(this.accessor, p);
906
+ }
907
+ du(p) {
908
+ return du(this.accessor, p);
909
+ }
910
+ find(p, options = {}) {
911
+ return find(this.accessor, p, options);
912
+ }
913
+ glob(paths, prefix = "") {
914
+ const effective = prefix ? paths.map(
915
+ (p) => mountPrefixOf3(p.virtual, p.resourcePath) ? p : new PathSpec({
916
+ virtual: p.virtual,
917
+ directory: p.directory,
918
+ ...p.pattern !== null ? { pattern: p.pattern } : {},
919
+ resolved: p.resolved,
920
+ resourcePath: mountKey(p.virtual, prefix)
921
+ })
922
+ ) : paths;
923
+ return globCore(this.accessor, effective);
924
+ }
925
+ // eslint-disable-next-line @typescript-eslint/require-await
926
+ async getState() {
927
+ return {
928
+ type: this.kind,
929
+ config: redactSshConfig(this.config)
930
+ };
931
+ }
932
+ loadState(_state) {
933
+ return Promise.resolve();
934
+ }
935
+ };
936
+
937
+ export {
938
+ SSHAccessor,
939
+ SSH_COMMANDS,
940
+ SSH_OPS,
941
+ SSH_PROMPT,
942
+ SSHResource
943
+ };
944
+ //# sourceMappingURL=chunk-5ZHNPNDD.js.map