@struktoai/mirage-node 0.0.2 → 0.0.3

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 (200) hide show
  1. package/README.md +1 -1
  2. package/dist/{aliyun-TMZRUYCG.js → aliyun-JMJ3PFYY.js} +3 -3
  3. package/dist/{backblaze-OHW57DLK.js → backblaze-TDFD23QO.js} +3 -3
  4. package/dist/{box-UXTCAFOZ.js → box-GQ2U2R6R.js} +2 -2
  5. package/dist/{ceph-TNN4I2FT.js → ceph-S2VOYO6G.js} +3 -3
  6. package/dist/{chunk-FXFDBF3P.js → chunk-3WIO7NBR.js} +2 -2
  7. package/dist/{chunk-O7ODGJYL.js → chunk-47AVIIOT.js} +2 -2
  8. package/dist/{chunk-Q6CDMOM6.js → chunk-7CW3BMPH.js} +2 -2
  9. package/dist/{chunk-E7RW3SBV.js → chunk-A7IVFIOP.js} +2 -2
  10. package/dist/chunk-A7IVFIOP.js.map +1 -0
  11. package/dist/{chunk-3T3RMDNX.js → chunk-AUHSTJJ3.js} +2 -2
  12. package/dist/{chunk-PJBQKMCD.js → chunk-DM4GSE26.js} +2 -2
  13. package/dist/{chunk-5DLOHQJ2.js → chunk-EM4J5EQS.js} +2 -2
  14. package/dist/chunk-EM4J5EQS.js.map +1 -0
  15. package/dist/{chunk-ABTEGAFB.js → chunk-EZQ5HBAC.js} +2 -2
  16. package/dist/chunk-EZQ5HBAC.js.map +1 -0
  17. package/dist/{chunk-KTNDT45N.js → chunk-FQ33BYFR.js} +2 -2
  18. package/dist/{chunk-YAVGCQUP.js → chunk-G2WCEUQL.js} +2 -2
  19. package/dist/chunk-G2WCEUQL.js.map +1 -0
  20. package/dist/{chunk-RLGWMJD3.js → chunk-GCFYZSVR.js} +133 -3
  21. package/dist/chunk-GCFYZSVR.js.map +1 -0
  22. package/dist/{chunk-NHS7WLEQ.js → chunk-GS5AUKUO.js} +2 -2
  23. package/dist/chunk-GS5AUKUO.js.map +1 -0
  24. package/dist/{chunk-BYTU2YC3.js → chunk-HGCRXJGP.js} +2 -2
  25. package/dist/{chunk-G5BZE7UA.js → chunk-HJJMP6IX.js} +2 -2
  26. package/dist/{chunk-IQVNVTOP.js → chunk-I5THIMPP.js} +2 -2
  27. package/dist/chunk-IDYHQQOH.js +1095 -0
  28. package/dist/chunk-IDYHQQOH.js.map +1 -0
  29. package/dist/{chunk-C6NHFMIP.js → chunk-IK2L4EN3.js} +2 -2
  30. package/dist/{chunk-LYDMMNL2.js → chunk-JAGJTM3Q.js} +2 -2
  31. package/dist/chunk-JAGJTM3Q.js.map +1 -0
  32. package/dist/{chunk-A7X4L4JM.js → chunk-JCC4CU2I.js} +2 -2
  33. package/dist/chunk-JCC4CU2I.js.map +1 -0
  34. package/dist/{chunk-AJICZLHT.js → chunk-KPULTUOK.js} +2 -2
  35. package/dist/{chunk-YPT4JBUY.js → chunk-LV2G7VHL.js} +2 -2
  36. package/dist/chunk-LV2G7VHL.js.map +1 -0
  37. package/dist/{chunk-C6NHEDHY.js → chunk-M5FVUIYP.js} +2 -2
  38. package/dist/chunk-M5FVUIYP.js.map +1 -0
  39. package/dist/{chunk-HEHERHQ5.js → chunk-MPCCRRE6.js} +2 -2
  40. package/dist/chunk-MPCCRRE6.js.map +1 -0
  41. package/dist/{chunk-RQYEEA2O.js → chunk-N5FSLVKO.js} +2 -2
  42. package/dist/{chunk-CASCUFK2.js → chunk-NOHWIBRX.js} +2 -2
  43. package/dist/chunk-NOHWIBRX.js.map +1 -0
  44. package/dist/{chunk-TRTUHCS4.js → chunk-QCZ2XUKH.js} +2 -2
  45. package/dist/chunk-QCZ2XUKH.js.map +1 -0
  46. package/dist/{chunk-3IJSIVKT.js → chunk-QQBJC2FQ.js} +2 -2
  47. package/dist/{chunk-JZQHKDSY.js → chunk-RNQN2FOU.js} +2 -2
  48. package/dist/chunk-RNQN2FOU.js.map +1 -0
  49. package/dist/{chunk-DTAY7LPC.js → chunk-S5OVP467.js} +2 -2
  50. package/dist/chunk-S5OVP467.js.map +1 -0
  51. package/dist/{chunk-5YOCVEUB.js → chunk-SWCDFEUK.js} +2 -2
  52. package/dist/chunk-SWCDFEUK.js.map +1 -0
  53. package/dist/{chunk-MHCMHKM6.js → chunk-TA3WMOMU.js} +2 -2
  54. package/dist/chunk-TA3WMOMU.js.map +1 -0
  55. package/dist/{chunk-WSGEIVY3.js → chunk-TURD42QO.js} +101 -85
  56. package/dist/chunk-TURD42QO.js.map +1 -0
  57. package/dist/{chunk-WL7HS7EM.js → chunk-UINQOUZR.js} +2 -2
  58. package/dist/{chunk-A4Z6DZ22.js → chunk-VWKUT4CW.js} +2 -2
  59. package/dist/chunk-VWKUT4CW.js.map +1 -0
  60. package/dist/{chunk-ERELJ7BS.js → chunk-WAR4Q2NM.js} +2 -2
  61. package/dist/chunk-WAR4Q2NM.js.map +1 -0
  62. package/dist/{chunk-5HCVKTP3.js → chunk-WHFUWWI6.js} +92 -81
  63. package/dist/chunk-WHFUWWI6.js.map +1 -0
  64. package/dist/{chunk-HQ4KWN76.js → chunk-X3G37FXT.js} +2 -2
  65. package/dist/{chunk-OYV2DN66.js → chunk-X5HF2OFP.js} +2 -2
  66. package/dist/chunk-XWVDS66D.js +963 -0
  67. package/dist/chunk-XWVDS66D.js.map +1 -0
  68. package/dist/{chunk-L6JPBJAS.js → chunk-YAHRT6MB.js} +2 -2
  69. package/dist/{chunk-XRU5WXZX.js → chunk-ZEGAMJO2.js} +2 -2
  70. package/dist/chunk-ZEGAMJO2.js.map +1 -0
  71. package/dist/{chunk-B6SXRCBO.js → chunk-ZGSER5TG.js} +2 -2
  72. package/dist/databricks_volume-7XOUYSTY.js +7 -0
  73. package/dist/{digitalocean-6SPR4S7V.js → digitalocean-3CQ4CPPZ.js} +3 -3
  74. package/dist/{discord-SAV2RBJV.js → discord-BG7OSRJG.js} +2 -2
  75. package/dist/{disk-POACMF4G.js → disk-XVLBCVKE.js} +2 -2
  76. package/dist/{dropbox-CQ7MTYX2.js → dropbox-74GYLV3R.js} +2 -2
  77. package/dist/{email-KBQ7CXS7.js → email-5IZ7OBQ4.js} +2 -2
  78. package/dist/{gcs-SMIE4VMT.js → gcs-EMEYU2XT.js} +3 -3
  79. package/dist/{gdocs-X5Y2SIQX.js → gdocs-R67TDPON.js} +2 -2
  80. package/dist/{gdrive-SIQPRIGI.js → gdrive-PRN2ALRK.js} +2 -2
  81. package/dist/{github-KBHWANKQ.js → github-DV7E6OFV.js} +2 -2
  82. package/dist/{github_ci-HPITNK37.js → github_ci-Q554V5PA.js} +2 -2
  83. package/dist/{gmail-DKHAGJNX.js → gmail-OLN2LT4O.js} +2 -2
  84. package/dist/{gsheets-ZSUDIWGK.js → gsheets-H4RYMQJ5.js} +2 -2
  85. package/dist/{gslides-GYXM7IMJ.js → gslides-YLCHKJOM.js} +2 -2
  86. package/dist/{hf_buckets-RIOMV7WG.js → hf_buckets-DTKXKKFF.js} +3 -3
  87. package/dist/{hf_datasets-QF4BQ3OK.js → hf_datasets-55C4APKR.js} +3 -3
  88. package/dist/{hf_models-62GC2HPZ.js → hf_models-RO5JR36V.js} +3 -3
  89. package/dist/{hf_spaces-NVSMUNRM.js → hf_spaces-ZVZ3EDRX.js} +3 -3
  90. package/dist/index.d.ts +110 -44
  91. package/dist/index.js +520 -232
  92. package/dist/index.js.map +1 -1
  93. package/dist/{langfuse-HUAYVPHF.js → langfuse-ACASJZ7O.js} +2 -2
  94. package/dist/{linear-2MM55KBC.js → linear-IC37LZV7.js} +2 -2
  95. package/dist/{minio-L3XE6PQS.js → minio-HZ576XFQ.js} +3 -3
  96. package/dist/mongodb-JVR62OIO.js +7 -0
  97. package/dist/{notion-UK4GTMT4.js → notion-HKRPQMJS.js} +2 -2
  98. package/dist/{oci-NURLWPL2.js → oci-ZLVECXTW.js} +3 -3
  99. package/dist/postgres-P36Z2YN4.js +7 -0
  100. package/dist/{qingstor-W55D5YFO.js → qingstor-YLP6K3L4.js} +3 -3
  101. package/dist/{r2-FSZK7IFI.js → r2-RPK25ANI.js} +3 -3
  102. package/dist/{redis-S6GIPA4Z.js → redis-V5ULXULL.js} +2 -2
  103. package/dist/{s3-GMPUJ65D.js → s3-4OIOCAAT.js} +2 -2
  104. package/dist/{scaleway-5VM55Y6D.js → scaleway-CCWCLUHB.js} +3 -3
  105. package/dist/{seaweedfs-J3EPUEPE.js → seaweedfs-QSWKF2FN.js} +3 -3
  106. package/dist/{slack-FVBXY7KD.js → slack-YPS7PII3.js} +2 -2
  107. package/dist/{ssh-GCXETJ3Z.js → ssh-YFP3SMTJ.js} +2 -2
  108. package/dist/{supabase-HLWNHBBE.js → supabase-6CFTOKGZ.js} +3 -3
  109. package/dist/{tencent-YDO73XBD.js → tencent-IWZZOSQ4.js} +3 -3
  110. package/dist/{trello-CQ53BQUL.js → trello-XYKWZD6P.js} +2 -2
  111. package/dist/{wasabi-SOZKPMRQ.js → wasabi-6Z4DC5S5.js} +3 -3
  112. package/package.json +7 -5
  113. package/dist/chunk-5DLOHQJ2.js.map +0 -1
  114. package/dist/chunk-5HCVKTP3.js.map +0 -1
  115. package/dist/chunk-5YOCVEUB.js.map +0 -1
  116. package/dist/chunk-A4Z6DZ22.js.map +0 -1
  117. package/dist/chunk-A7X4L4JM.js.map +0 -1
  118. package/dist/chunk-ABTEGAFB.js.map +0 -1
  119. package/dist/chunk-C6NHEDHY.js.map +0 -1
  120. package/dist/chunk-CASCUFK2.js.map +0 -1
  121. package/dist/chunk-DTAY7LPC.js.map +0 -1
  122. package/dist/chunk-E7RW3SBV.js.map +0 -1
  123. package/dist/chunk-ERELJ7BS.js.map +0 -1
  124. package/dist/chunk-HEHERHQ5.js.map +0 -1
  125. package/dist/chunk-JZQHKDSY.js.map +0 -1
  126. package/dist/chunk-LYDMMNL2.js.map +0 -1
  127. package/dist/chunk-MHCMHKM6.js.map +0 -1
  128. package/dist/chunk-N72CAZEH.js +0 -1990
  129. package/dist/chunk-N72CAZEH.js.map +0 -1
  130. package/dist/chunk-NHS7WLEQ.js.map +0 -1
  131. package/dist/chunk-PBBG7VFT.js +0 -1896
  132. package/dist/chunk-PBBG7VFT.js.map +0 -1
  133. package/dist/chunk-RLGWMJD3.js.map +0 -1
  134. package/dist/chunk-TRTUHCS4.js.map +0 -1
  135. package/dist/chunk-WSGEIVY3.js.map +0 -1
  136. package/dist/chunk-XRU5WXZX.js.map +0 -1
  137. package/dist/chunk-YAVGCQUP.js.map +0 -1
  138. package/dist/chunk-YPT4JBUY.js.map +0 -1
  139. package/dist/databricks_volume-HNQ4DJVJ.js +0 -7
  140. package/dist/mongodb-ZOX4FRHJ.js +0 -7
  141. package/dist/postgres-JNFMPAO2.js +0 -7
  142. /package/dist/{aliyun-TMZRUYCG.js.map → aliyun-JMJ3PFYY.js.map} +0 -0
  143. /package/dist/{backblaze-OHW57DLK.js.map → backblaze-TDFD23QO.js.map} +0 -0
  144. /package/dist/{box-UXTCAFOZ.js.map → box-GQ2U2R6R.js.map} +0 -0
  145. /package/dist/{ceph-TNN4I2FT.js.map → ceph-S2VOYO6G.js.map} +0 -0
  146. /package/dist/{chunk-FXFDBF3P.js.map → chunk-3WIO7NBR.js.map} +0 -0
  147. /package/dist/{chunk-O7ODGJYL.js.map → chunk-47AVIIOT.js.map} +0 -0
  148. /package/dist/{chunk-Q6CDMOM6.js.map → chunk-7CW3BMPH.js.map} +0 -0
  149. /package/dist/{chunk-3T3RMDNX.js.map → chunk-AUHSTJJ3.js.map} +0 -0
  150. /package/dist/{chunk-PJBQKMCD.js.map → chunk-DM4GSE26.js.map} +0 -0
  151. /package/dist/{chunk-KTNDT45N.js.map → chunk-FQ33BYFR.js.map} +0 -0
  152. /package/dist/{chunk-BYTU2YC3.js.map → chunk-HGCRXJGP.js.map} +0 -0
  153. /package/dist/{chunk-G5BZE7UA.js.map → chunk-HJJMP6IX.js.map} +0 -0
  154. /package/dist/{chunk-IQVNVTOP.js.map → chunk-I5THIMPP.js.map} +0 -0
  155. /package/dist/{chunk-C6NHFMIP.js.map → chunk-IK2L4EN3.js.map} +0 -0
  156. /package/dist/{chunk-AJICZLHT.js.map → chunk-KPULTUOK.js.map} +0 -0
  157. /package/dist/{chunk-RQYEEA2O.js.map → chunk-N5FSLVKO.js.map} +0 -0
  158. /package/dist/{chunk-3IJSIVKT.js.map → chunk-QQBJC2FQ.js.map} +0 -0
  159. /package/dist/{chunk-WL7HS7EM.js.map → chunk-UINQOUZR.js.map} +0 -0
  160. /package/dist/{chunk-HQ4KWN76.js.map → chunk-X3G37FXT.js.map} +0 -0
  161. /package/dist/{chunk-OYV2DN66.js.map → chunk-X5HF2OFP.js.map} +0 -0
  162. /package/dist/{chunk-L6JPBJAS.js.map → chunk-YAHRT6MB.js.map} +0 -0
  163. /package/dist/{chunk-B6SXRCBO.js.map → chunk-ZGSER5TG.js.map} +0 -0
  164. /package/dist/{databricks_volume-HNQ4DJVJ.js.map → databricks_volume-7XOUYSTY.js.map} +0 -0
  165. /package/dist/{digitalocean-6SPR4S7V.js.map → digitalocean-3CQ4CPPZ.js.map} +0 -0
  166. /package/dist/{discord-SAV2RBJV.js.map → discord-BG7OSRJG.js.map} +0 -0
  167. /package/dist/{disk-POACMF4G.js.map → disk-XVLBCVKE.js.map} +0 -0
  168. /package/dist/{dropbox-CQ7MTYX2.js.map → dropbox-74GYLV3R.js.map} +0 -0
  169. /package/dist/{email-KBQ7CXS7.js.map → email-5IZ7OBQ4.js.map} +0 -0
  170. /package/dist/{gcs-SMIE4VMT.js.map → gcs-EMEYU2XT.js.map} +0 -0
  171. /package/dist/{gdocs-X5Y2SIQX.js.map → gdocs-R67TDPON.js.map} +0 -0
  172. /package/dist/{gdrive-SIQPRIGI.js.map → gdrive-PRN2ALRK.js.map} +0 -0
  173. /package/dist/{github-KBHWANKQ.js.map → github-DV7E6OFV.js.map} +0 -0
  174. /package/dist/{github_ci-HPITNK37.js.map → github_ci-Q554V5PA.js.map} +0 -0
  175. /package/dist/{gmail-DKHAGJNX.js.map → gmail-OLN2LT4O.js.map} +0 -0
  176. /package/dist/{gsheets-ZSUDIWGK.js.map → gsheets-H4RYMQJ5.js.map} +0 -0
  177. /package/dist/{gslides-GYXM7IMJ.js.map → gslides-YLCHKJOM.js.map} +0 -0
  178. /package/dist/{hf_buckets-RIOMV7WG.js.map → hf_buckets-DTKXKKFF.js.map} +0 -0
  179. /package/dist/{hf_datasets-QF4BQ3OK.js.map → hf_datasets-55C4APKR.js.map} +0 -0
  180. /package/dist/{hf_models-62GC2HPZ.js.map → hf_models-RO5JR36V.js.map} +0 -0
  181. /package/dist/{hf_spaces-NVSMUNRM.js.map → hf_spaces-ZVZ3EDRX.js.map} +0 -0
  182. /package/dist/{langfuse-HUAYVPHF.js.map → langfuse-ACASJZ7O.js.map} +0 -0
  183. /package/dist/{linear-2MM55KBC.js.map → linear-IC37LZV7.js.map} +0 -0
  184. /package/dist/{minio-L3XE6PQS.js.map → minio-HZ576XFQ.js.map} +0 -0
  185. /package/dist/{mongodb-ZOX4FRHJ.js.map → mongodb-JVR62OIO.js.map} +0 -0
  186. /package/dist/{notion-UK4GTMT4.js.map → notion-HKRPQMJS.js.map} +0 -0
  187. /package/dist/{oci-NURLWPL2.js.map → oci-ZLVECXTW.js.map} +0 -0
  188. /package/dist/{postgres-JNFMPAO2.js.map → postgres-P36Z2YN4.js.map} +0 -0
  189. /package/dist/{qingstor-W55D5YFO.js.map → qingstor-YLP6K3L4.js.map} +0 -0
  190. /package/dist/{r2-FSZK7IFI.js.map → r2-RPK25ANI.js.map} +0 -0
  191. /package/dist/{redis-S6GIPA4Z.js.map → redis-V5ULXULL.js.map} +0 -0
  192. /package/dist/{s3-GMPUJ65D.js.map → s3-4OIOCAAT.js.map} +0 -0
  193. /package/dist/{scaleway-5VM55Y6D.js.map → scaleway-CCWCLUHB.js.map} +0 -0
  194. /package/dist/{seaweedfs-J3EPUEPE.js.map → seaweedfs-QSWKF2FN.js.map} +0 -0
  195. /package/dist/{slack-FVBXY7KD.js.map → slack-YPS7PII3.js.map} +0 -0
  196. /package/dist/{ssh-GCXETJ3Z.js.map → ssh-YFP3SMTJ.js.map} +0 -0
  197. /package/dist/{supabase-HLWNHBBE.js.map → supabase-6CFTOKGZ.js.map} +0 -0
  198. /package/dist/{tencent-YDO73XBD.js.map → tencent-IWZZOSQ4.js.map} +0 -0
  199. /package/dist/{trello-CQ53BQUL.js.map → trello-XYKWZD6P.js.map} +0 -0
  200. /package/dist/{wasabi-SOZKPMRQ.js.map → wasabi-6Z4DC5S5.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resource/disk/disk.ts","../src/commands/builtin/disk/index.ts","../src/core/disk/read.ts","../src/core/disk/utils.ts","../src/core/disk/stat.ts","../src/core/disk/copy.ts","../src/core/disk/du.ts","../src/core/disk/exists.ts","../src/core/disk/find.ts","../src/core/disk/mkdir.ts","../src/core/disk/readdir.ts","../src/core/disk/rename.ts","../src/core/disk/rm.ts","../src/core/disk/rmdir.ts","../src/core/disk/stream.ts","../src/core/disk/unlink.ts","../src/core/disk/write.ts","../src/commands/builtin/disk/ops.ts","../src/commands/builtin/disk/sed.ts","../src/core/disk/append.ts","../src/core/disk/create.ts","../src/core/disk/glob.ts","../src/core/disk/truncate.ts","../src/accessor/disk.ts","../src/ops/disk/append.ts","../src/ops/disk/create.ts","../src/ops/disk/mkdir.ts","../src/ops/disk/read.ts","../src/ops/disk/read_feather.ts","../src/ops/disk/read_hdf5.ts","../src/ops/disk/read_parquet.ts","../src/ops/disk/readdir.ts","../src/ops/disk/rename.ts","../src/ops/disk/rmdir.ts","../src/ops/disk/stat.ts","../src/ops/disk/truncate.ts","../src/ops/disk/unlink.ts","../src/ops/disk/write.ts","../src/ops/disk/index.ts","../src/resource/disk/prompt.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport { mkdir, readdir, readFile, writeFile } from 'node:fs/promises'\nimport path from 'node:path'\nimport {\n BaseResource,\n type FileStat,\n type FindOptions,\n PathSpec,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n} from '@struktoai/mirage-core'\nimport { DISK_COMMANDS } from '../../commands/builtin/disk/index.ts'\nimport { appendBytes as appendCore } from '../../core/disk/append.ts'\nimport { copy as copyCore } from '../../core/disk/copy.ts'\nimport { create as createCore } from '../../core/disk/create.ts'\nimport { du as duCore, duAll as duAllCore } from '../../core/disk/du.ts'\nimport { exists as existsCore } from '../../core/disk/exists.ts'\nimport { find as findCore, type FindOptions as DiskFindOptions } from '../../core/disk/find.ts'\nimport { resolveGlob as globCore } from '../../core/disk/glob.ts'\nimport { mkdir as mkdirCore } from '../../core/disk/mkdir.ts'\nimport { read as readCoreFn } from '../../core/disk/read.ts'\nimport { readdir as readdirCore } from '../../core/disk/readdir.ts'\nimport { rename as renameCore } from '../../core/disk/rename.ts'\nimport { rmR as rmRCore } from '../../core/disk/rm.ts'\nimport { rmdir as rmdirCore } from '../../core/disk/rmdir.ts'\nimport { stat as statCore } from '../../core/disk/stat.ts'\nimport { stream as streamCore } from '../../core/disk/stream.ts'\nimport { truncate as truncateCore } from '../../core/disk/truncate.ts'\nimport { unlink as unlinkCore } from '../../core/disk/unlink.ts'\nimport { writeBytes as writeCore } from '../../core/disk/write.ts'\nimport { DiskAccessor } from '../../accessor/disk.ts'\nimport { DISK_OPS } from '../../ops/disk/index.ts'\nimport { DISK_PROMPT } from './prompt.ts'\n\nexport interface DiskResourceOptions {\n root: string\n}\n\nexport interface DiskResourceState {\n type: string\n files: Record<string, Uint8Array>\n}\n\nasync function walkFiles(root: string, current: string, out: string[]): Promise<void> {\n const entries = await readdir(current, { withFileTypes: true })\n for (const e of entries) {\n const child = path.join(current, e.name)\n if (e.isDirectory()) {\n await walkFiles(root, child, out)\n } else if (e.isFile()) {\n out.push(child)\n }\n }\n}\n\nexport class DiskResource extends BaseResource implements Resource {\n readonly kind = ResourceName.DISK\n readonly cachesReads: boolean = false\n readonly indexTtl: number = 60\n readonly prompt = DISK_PROMPT\n readonly root: string\n readonly accessor: DiskAccessor\n readonly opsMap: Record<string, unknown> = {\n read_bytes: readCoreFn,\n write: writeCore,\n readdir: readdirCore,\n stat: statCore,\n unlink: unlinkCore,\n rmdir: rmdirCore,\n copy: copyCore,\n rename: renameCore,\n mkdir: mkdirCore,\n read_stream: streamCore,\n rm_recursive: rmRCore,\n du_total: duCore,\n du_all: duAllCore,\n create: createCore,\n truncate: truncateCore,\n exists: existsCore,\n find_flat: findCore,\n append: appendCore,\n }\n\n constructor(options: DiskResourceOptions) {\n super()\n this.root = path.resolve(options.root)\n this.accessor = new DiskAccessor(this.root)\n }\n\n async open(): Promise<void> {\n await mkdir(this.root, { recursive: true })\n }\n\n close(): Promise<void> {\n return Promise.resolve()\n }\n\n ops(): readonly RegisteredOp[] {\n return DISK_OPS\n }\n\n commands(): readonly RegisteredCommand[] {\n return DISK_COMMANDS\n }\n\n streamPath(p: PathSpec): AsyncIterable<Uint8Array> {\n return streamCore(this.accessor, p)\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return readCoreFn(this.accessor, p)\n }\n\n writeFile(p: PathSpec, data: Uint8Array): Promise<void> {\n return writeCore(this.accessor, p, data)\n }\n\n appendFile(p: PathSpec, data: Uint8Array): Promise<void> {\n return appendCore(this.accessor, p, data)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return readdirCore(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return statCore(this.accessor, p)\n }\n\n exists(p: PathSpec): Promise<boolean> {\n return existsCore(this.accessor, p)\n }\n\n mkdir(p: PathSpec, options?: { recursive?: boolean }): Promise<void> {\n return mkdirCore(this.accessor, p, options?.recursive === true)\n }\n\n rmdir(p: PathSpec): Promise<void> {\n return rmdirCore(this.accessor, p)\n }\n\n unlink(p: PathSpec): Promise<void> {\n return unlinkCore(this.accessor, p)\n }\n\n rename(src: PathSpec, dst: PathSpec): Promise<void> {\n return renameCore(this.accessor, src, dst)\n }\n\n truncate(p: PathSpec, length: number): Promise<void> {\n return truncateCore(this.accessor, p, length)\n }\n\n copy(src: PathSpec, dst: PathSpec): Promise<void> {\n return copyCore(this.accessor, src, dst)\n }\n\n rmR(p: PathSpec): Promise<void> {\n return rmRCore(this.accessor, p)\n }\n\n du(p: PathSpec): Promise<number> {\n return duCore(this.accessor, p)\n }\n\n find(p: PathSpec, options: FindOptions = {}): Promise<string[]> {\n return findCore(this.accessor, p, options as DiskFindOptions)\n }\n\n async fingerprint(p: PathSpec): Promise<string | null> {\n try {\n const remote = await statCore(this.accessor, p)\n return remote.modified ?? null\n } catch {\n return null\n }\n }\n\n glob(paths: readonly PathSpec[], prefix = ''): Promise<PathSpec[]> {\n const effective = prefix\n ? paths.map((p) =>\n p.prefix\n ? p\n : new PathSpec({\n original: p.original,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n prefix,\n }),\n )\n : paths\n return globCore(this.accessor, effective, this.index)\n }\n\n async getState(): Promise<DiskResourceState> {\n await mkdir(this.root, { recursive: true })\n const files: Record<string, Uint8Array> = {}\n const fileList: string[] = []\n await walkFiles(this.root, this.root, fileList)\n for (const full of fileList) {\n const rel = path.relative(this.root, full).split(path.sep).join('/')\n const data = await readFile(full)\n files[rel] = new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n }\n return {\n type: this.kind,\n files,\n }\n }\n\n async loadState(state: DiskResourceState): Promise<void> {\n await mkdir(this.root, { recursive: true })\n for (const [rel, data] of Object.entries(state.files)) {\n const full = path.join(this.root, rel)\n await mkdir(path.dirname(full), { recursive: true })\n await writeFile(full, data)\n }\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n type RegisteredCommand,\n ResourceName,\n makeFiletypeCommands,\n makeGenericCommands,\n} from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../../accessor/disk.ts'\nimport { read as diskRead } from '../../../core/disk/read.ts'\nimport { stat as diskStat } from '../../../core/disk/stat.ts'\nimport { DISK_CMD_OPS } from './ops.ts'\nimport { DISK_SED } from './sed.ts'\n\nexport const DISK_COMMANDS: readonly RegisteredCommand[] = [\n ...makeFiletypeCommands<DiskAccessor>({\n resource: ResourceName.DISK,\n readBytes: diskRead,\n statEntry: diskStat,\n }),\n ...makeGenericCommands<DiskAccessor>(ResourceName.DISK, DISK_CMD_OPS),\n ...DISK_SED,\n]\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { readFile } from 'node:fs/promises'\nimport { enoent, type PathSpec, record, ResourceName } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function read(accessor: DiskAccessor, path: PathSpec): Promise<Uint8Array> {\n const start = performance.now()\n const virtual = path.stripPrefix\n const full = resolveSafe(accessor.root, virtual)\n let data: Buffer\n try {\n data = await readFile(full)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') {\n throw enoent(path)\n }\n throw err\n }\n record('read', virtual, ResourceName.DISK, data.byteLength, start)\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport path from 'node:path'\nimport { lstripSlash } from '@struktoai/mirage-core'\n\nexport { norm, parent, gnuBasename as basename } from '@struktoai/mirage-core'\n\nexport function resolveSafe(root: string, virtual: string): string {\n const relative = lstripSlash(virtual)\n const resolved = path.resolve(root, relative)\n const rootResolved = path.resolve(root)\n if (resolved !== rootResolved && !resolved.startsWith(rootResolved + path.sep)) {\n throw new Error(`path escapes root: ${virtual}`)\n }\n return resolved\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { stat as fsStat } from 'node:fs/promises'\nimport path from 'node:path'\nimport { enoent, FileStat, FileType, guessType, type PathSpec } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function stat(accessor: DiskAccessor, p: PathSpec): Promise<FileStat> {\n const virtual = p.stripPrefix\n const full = resolveSafe(accessor.root, virtual)\n let st\n try {\n st = await fsStat(full)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') {\n throw enoent(p)\n }\n throw err\n }\n const modified = st.mtime.toISOString()\n const name = path.basename(full)\n if (st.isDirectory()) {\n return new FileStat({\n name,\n size: null,\n modified,\n type: FileType.DIRECTORY,\n })\n }\n return new FileStat({\n name,\n size: st.size,\n modified,\n fingerprint: modified,\n type: guessType(name),\n })\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { copyFile, mkdir } from 'node:fs/promises'\nimport path from 'node:path'\nimport { enoent, invalidateAfterWrite, type PathSpec } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function copy(accessor: DiskAccessor, src: PathSpec, dst: PathSpec): Promise<void> {\n const s = resolveSafe(accessor.root, src.stripPrefix)\n const d = resolveSafe(accessor.root, dst.stripPrefix)\n await mkdir(path.dirname(d), { recursive: true })\n try {\n await copyFile(s, d)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') {\n throw enoent(src)\n }\n throw err\n }\n await invalidateAfterWrite(dst)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { readdir, stat } from 'node:fs/promises'\nimport path from 'node:path'\nimport type { PathSpec } from '@struktoai/mirage-core'\nimport { norm, resolveSafe } from './utils.ts'\n\nasync function walkSizes(full: string): Promise<number> {\n let total = 0\n let st\n try {\n st = await stat(full)\n } catch {\n return 0\n }\n if (st.isFile()) return st.size\n if (!st.isDirectory()) return 0\n const entries = await readdir(full, { withFileTypes: true })\n for (const e of entries) {\n const child = path.join(full, e.name)\n if (e.isDirectory()) total += await walkSizes(child)\n else if (e.isFile()) {\n try {\n const cst = await stat(child)\n total += cst.size\n } catch {\n // ignore\n }\n }\n }\n return total\n}\n\nasync function walkAll(\n accessor: DiskAccessor,\n full: string,\n entries: [string, number][],\n): Promise<number> {\n let total = 0\n let st\n try {\n st = await stat(full)\n } catch {\n return 0\n }\n if (st.isFile()) {\n const rel = '/' + path.relative(accessor.root, full).split(path.sep).join('/')\n entries.push([rel, st.size])\n return st.size\n }\n if (!st.isDirectory()) return 0\n const children = await readdir(full, { withFileTypes: true })\n for (const e of children) {\n const child = path.join(full, e.name)\n if (e.isDirectory()) {\n total += await walkAll(accessor, child, entries)\n } else if (e.isFile()) {\n try {\n const cst = await stat(child)\n const rel = '/' + path.relative(accessor.root, child).split(path.sep).join('/')\n entries.push([rel, cst.size])\n total += cst.size\n } catch {\n // ignore\n }\n }\n }\n return total\n}\n\nexport async function du(accessor: DiskAccessor, p: PathSpec): Promise<number> {\n const virtual = p.stripPrefix\n const full = resolveSafe(accessor.root, virtual)\n return walkSizes(full)\n}\n\nexport async function duAll(\n accessor: DiskAccessor,\n p: PathSpec,\n): Promise<[entries: [string, number][], total: number]> {\n const virtual = norm(p.stripPrefix)\n const full = resolveSafe(accessor.root, virtual)\n const entries: [string, number][] = []\n const total = await walkAll(accessor, full, entries)\n entries.sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0))\n return [entries, total]\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { access } from 'node:fs/promises'\nimport type { PathSpec } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function exists(accessor: DiskAccessor, path: PathSpec): Promise<boolean> {\n const full = resolveSafe(accessor.root, path.stripPrefix)\n try {\n await access(full)\n return true\n } catch {\n return false\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { readdir, stat } from 'node:fs/promises'\nimport path from 'node:path'\nimport type { PathSpec } from '@struktoai/mirage-core'\nimport { norm, resolveSafe } from './utils.ts'\nimport {\n buildTree,\n emitStartPath,\n keep,\n type PredNode,\n startBasename,\n} from '@struktoai/mirage-core'\n\nexport interface FindOptions {\n name?: string | null\n type?: 'f' | 'd' | null\n minSize?: number | null\n maxSize?: number | null\n maxDepth?: number | null\n minDepth?: number | null\n nameExclude?: string | null\n orNames?: string[] | null\n iname?: string | null\n pathPattern?: string | null\n empty?: boolean | null\n tree?: PredNode | null\n mtimeMin?: number | null\n mtimeMax?: number | null\n}\n\ninterface WalkCtx {\n accessor: DiskAccessor\n base: string\n baseDepth: number\n options: FindOptions\n tree: PredNode\n results: string[]\n}\n\nasync function walk(ctx: WalkCtx, full: string, current: string, depth: number): Promise<void> {\n const opts = ctx.options\n if (opts.maxDepth !== null && opts.maxDepth !== undefined && depth > opts.maxDepth) return\n let entries\n try {\n entries = await readdir(full, { withFileTypes: true })\n } catch {\n return\n }\n for (const e of entries) {\n const kind: 'f' | 'd' = e.isDirectory() ? 'd' : 'f'\n const entryPath = current === '/' ? `/${e.name}` : `${current}/${e.name}`\n const entryName = e.name\n const entrySlashCount = (entryPath.match(/\\//g) ?? []).length\n const entryDepth = entrySlashCount - ctx.baseDepth\n\n let accept = true\n if (opts.maxDepth !== null && opts.maxDepth !== undefined && entryDepth > opts.maxDepth) {\n accept = false\n }\n let isEmpty: boolean | null = null\n if (accept && opts.empty === true) {\n try {\n isEmpty =\n kind === 'f'\n ? (await stat(path.join(full, e.name))).size === 0\n : (await readdir(path.join(full, e.name))).length === 0\n } catch {\n isEmpty = null\n }\n }\n if (\n accept &&\n !keep(\n { key: entryPath, name: entryName, kind, depth: entryDepth, isEmpty },\n ctx.tree,\n opts.minDepth,\n )\n ) {\n accept = false\n }\n\n if (\n accept &&\n kind === 'f' &&\n (opts.minSize !== null ||\n opts.maxSize !== null ||\n opts.mtimeMin !== null ||\n opts.mtimeMax !== null)\n ) {\n try {\n const st = await stat(path.join(full, e.name))\n if (opts.minSize !== null && opts.minSize !== undefined && st.size < opts.minSize)\n accept = false\n if (opts.maxSize !== null && opts.maxSize !== undefined && st.size > opts.maxSize)\n accept = false\n if (accept && (opts.mtimeMin !== undefined || opts.mtimeMax !== undefined)) {\n const mtime = st.mtime.getTime() / 1000\n if (opts.mtimeMin !== null && opts.mtimeMin !== undefined && mtime < opts.mtimeMin)\n accept = false\n if (opts.mtimeMax !== null && opts.mtimeMax !== undefined && mtime > opts.mtimeMax)\n accept = false\n }\n } catch {\n accept = false\n }\n }\n\n if (accept) ctx.results.push(entryPath)\n\n if (kind === 'd') {\n await walk(ctx, path.join(full, e.name), entryPath, depth + 1)\n }\n }\n}\n\nexport async function find(\n accessor: DiskAccessor,\n p: PathSpec,\n options: FindOptions = {},\n): Promise<string[]> {\n const virtual = norm(p.stripPrefix)\n const startName = startBasename(p.original)\n const full = resolveSafe(accessor.root, virtual)\n const baseDepth = virtual === '/' ? 0 : (virtual.match(/\\//g) ?? []).length\n const results: string[] = []\n const tree =\n options.tree ??\n buildTree({\n name: options.name,\n iname: options.iname,\n pathPattern: options.pathPattern,\n type: options.type,\n nameExclude: options.nameExclude,\n orNames: options.orNames,\n empty: options.empty,\n })\n if (options.maxDepth == null || options.maxDepth >= 0) {\n let isDir = false\n try {\n isDir = (await stat(full)).isDirectory()\n } catch {\n isDir = false\n }\n let rootEmpty: boolean | null = null\n if (isDir && options.empty === true) {\n try {\n rootEmpty = (await readdir(full)).length === 0\n } catch {\n rootEmpty = null\n }\n }\n emitStartPath(results, virtual, startName, {\n kind: 'd',\n isEmpty: rootEmpty,\n exists: isDir,\n tree,\n maxDepth: options.maxDepth,\n minDepth: options.minDepth,\n })\n }\n await walk({ accessor, base: virtual, baseDepth, options, tree, results }, full, virtual, 0)\n results.sort()\n return results\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { mkdir as fsMkdir } from 'node:fs/promises'\nimport { type PathSpec, invalidateAfterWrite } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function mkdir(\n accessor: DiskAccessor,\n path: PathSpec,\n parents = false,\n): Promise<void> {\n const full = resolveSafe(accessor.root, path.stripPrefix)\n if (parents) {\n await fsMkdir(full, { recursive: true })\n await invalidateAfterWrite(path)\n return\n }\n await invalidateAfterWrite(path)\n try {\n await fsMkdir(full)\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code\n if (code === 'EEXIST') return\n if (code === 'ENOENT') {\n throw new Error(`parent directory does not exist: ${path.stripPrefix}`)\n }\n throw err\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { readdir as fsReaddir } from 'node:fs/promises'\nimport {\n enotdir,\n IndexEntry,\n type IndexCacheStore,\n type PathSpec,\n ResourceType,\n} from '@struktoai/mirage-core'\nimport { norm, resolveSafe } from './utils.ts'\n\nexport async function readdir(\n accessor: DiskAccessor,\n path: PathSpec,\n index?: IndexCacheStore,\n): Promise<string[]> {\n const virtual = path.pattern !== null ? path.directory : path.stripPrefix\n const mountPrefix = path.prefix\n const virtualKey = mountPrefix + virtual\n if (index !== undefined) {\n const cached = await index.listDir(virtualKey)\n if (cached.entries !== undefined && cached.entries !== null) {\n return cached.entries\n }\n }\n const full = resolveSafe(accessor.root, virtual)\n let entries: string[]\n try {\n entries = await fsReaddir(full)\n } catch (err) {\n const code = (err as NodeJS.ErrnoException).code\n if (code === 'ENOTDIR') throw enotdir(path)\n if (code === 'ENOENT') throw enotdir(path)\n throw err\n }\n const base = norm(virtual)\n const dirPrefix = base === '/' ? '/' : `${base}/`\n const sorted = [...entries].sort()\n const virtualEntries = sorted.map((e) => `${mountPrefix}${dirPrefix}${e}`)\n if (index !== undefined) {\n const indexEntries: [string, IndexEntry][] = sorted.map((name) => [\n name,\n new IndexEntry({\n id: `${dirPrefix}${name}`,\n name,\n resourceType: ResourceType.FILE,\n }),\n ])\n await index.setDir(virtualKey, indexEntries)\n }\n return virtualEntries\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { rename as fsRename } from 'node:fs/promises'\nimport {\n enoent,\n invalidateAfterUnlink,\n invalidateAfterWrite,\n type PathSpec,\n} from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function rename(accessor: DiskAccessor, src: PathSpec, dst: PathSpec): Promise<void> {\n const s = resolveSafe(accessor.root, src.stripPrefix)\n const d = resolveSafe(accessor.root, dst.stripPrefix)\n try {\n await fsRename(s, d)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') {\n throw enoent(src)\n }\n throw err\n }\n await invalidateAfterUnlink(src)\n await invalidateAfterWrite(dst)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { rm } from 'node:fs/promises'\nimport { type PathSpec, invalidateAfterUnlink } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function rmR(accessor: DiskAccessor, path: PathSpec): Promise<void> {\n const full = resolveSafe(accessor.root, path.stripPrefix)\n await rm(full, { recursive: true, force: true })\n await invalidateAfterUnlink(path)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { rmdir as fsRmdir } from 'node:fs/promises'\nimport { type PathSpec, invalidateAfterUnlink } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function rmdir(accessor: DiskAccessor, path: PathSpec): Promise<void> {\n const full = resolveSafe(accessor.root, path.stripPrefix)\n try {\n await fsRmdir(full)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return\n throw err\n }\n await invalidateAfterUnlink(path)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { createReadStream } from 'node:fs'\nimport { enoent, type PathSpec, recordStream, ResourceName } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function* stream(accessor: DiskAccessor, path: PathSpec): AsyncIterable<Uint8Array> {\n const virtual = path.stripPrefix\n const full = resolveSafe(accessor.root, virtual)\n const rec = recordStream('read', virtual, ResourceName.DISK)\n const rs = createReadStream(full, { highWaterMark: 65536 })\n try {\n for await (const chunk of rs) {\n const buf = chunk as Buffer\n const u8 = new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength)\n if (rec !== null) rec.bytes += u8.byteLength\n yield u8\n }\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') {\n throw enoent(path)\n }\n throw err\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { unlink as fsUnlink } from 'node:fs/promises'\nimport { type PathSpec, invalidateAfterUnlink } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function unlink(accessor: DiskAccessor, path: PathSpec): Promise<void> {\n const full = resolveSafe(accessor.root, path.stripPrefix)\n try {\n await fsUnlink(full)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') return\n throw err\n }\n await invalidateAfterUnlink(path)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { mkdir, writeFile } from 'node:fs/promises'\nimport path from 'node:path'\nimport { ResourceName, invalidateAfterWrite, record, type PathSpec } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function writeBytes(\n accessor: DiskAccessor,\n p: PathSpec,\n data: Uint8Array,\n): Promise<void> {\n const start = performance.now()\n const virtual = p.stripPrefix\n const full = resolveSafe(accessor.root, virtual)\n await mkdir(path.dirname(full), { recursive: true })\n await writeFile(full, data)\n record('write', virtual, ResourceName.DISK, data.byteLength, start)\n await invalidateAfterWrite(p)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { CommandIO } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../../accessor/disk.ts'\nimport { SCOPE_ERROR } from '../../../core/disk/constants.ts'\nimport { copy as diskCopy } from '../../../core/disk/copy.ts'\nimport { du as diskDu, duAll as diskDuAll } from '../../../core/disk/du.ts'\nimport { exists as diskExists } from '../../../core/disk/exists.ts'\nimport { find as diskFind } from '../../../core/disk/find.ts'\nimport { mkdir as diskMkdir } from '../../../core/disk/mkdir.ts'\nimport { read as diskRead } from '../../../core/disk/read.ts'\nimport { readdir as diskReaddir } from '../../../core/disk/readdir.ts'\nimport { rename as diskRename } from '../../../core/disk/rename.ts'\nimport { rmR as diskRmR } from '../../../core/disk/rm.ts'\nimport { rmdir as diskRmdir } from '../../../core/disk/rmdir.ts'\nimport { stat as diskStat } from '../../../core/disk/stat.ts'\nimport { stream as diskStream } from '../../../core/disk/stream.ts'\nimport { unlink as diskUnlink } from '../../../core/disk/unlink.ts'\nimport { writeBytes as diskWrite } from '../../../core/disk/write.ts'\n\nexport const DISK_CMD_OPS: CommandIO<DiskAccessor> = {\n readdir: diskReaddir,\n readBytes: diskRead,\n readStream: diskStream,\n stat: diskStat,\n isMounted: (a) => a.root !== '',\n local: true,\n maxGlobMatches: SCOPE_ERROR,\n write: diskWrite,\n exists: diskExists,\n mkdir: diskMkdir,\n unlink: diskUnlink,\n rmdir: diskRmdir,\n rmR: diskRmR,\n rename: diskRename,\n copy: diskCopy,\n find: diskFind,\n duTotal: diskDu,\n duAll: diskDuAll,\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport { ResourceName, makeSed } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../../accessor/disk.ts'\nimport { stream as diskStream } from '../../../core/disk/stream.ts'\nimport { writeBytes as diskWrite } from '../../../core/disk/write.ts'\n\nexport const DISK_SED = makeSed<DiskAccessor>({\n resource: ResourceName.DISK,\n stream: (a, p) => diskStream(a, p),\n write: (a, p, d) => diskWrite(a, p, d),\n})\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { appendFile, mkdir } from 'node:fs/promises'\nimport path from 'node:path'\nimport { ResourceName, invalidateAfterWrite, record, type PathSpec } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function appendBytes(\n accessor: DiskAccessor,\n p: PathSpec,\n data: Uint8Array,\n): Promise<void> {\n const start = performance.now()\n const virtual = p.stripPrefix\n const full = resolveSafe(accessor.root, virtual)\n await mkdir(path.dirname(full), { recursive: true })\n await appendFile(full, data)\n record('append', virtual, ResourceName.DISK, data.byteLength, start)\n await invalidateAfterWrite(p)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport type { PathSpec } from '@struktoai/mirage-core'\nimport { writeBytes } from './write.ts'\n\nexport function create(accessor: DiskAccessor, path: PathSpec): Promise<void> {\n return writeBytes(accessor, path, new Uint8Array())\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { type IndexCacheStore, PathSpec } from '@struktoai/mirage-core'\nimport { SCOPE_ERROR } from './constants.ts'\nimport { readdir } from './readdir.ts'\nimport { fnmatch } from '@struktoai/mirage-core'\nimport { gnuBasename } from '@struktoai/mirage-core'\n\nexport async function resolveGlob(\n accessor: DiskAccessor,\n paths: readonly PathSpec[],\n index?: IndexCacheStore,\n): Promise<PathSpec[]> {\n const result: PathSpec[] = []\n for (const p of paths) {\n if (p.resolved) {\n result.push(p)\n } else if (p.pattern !== null) {\n const dirSpec = new PathSpec({\n original: p.directory,\n directory: p.directory,\n resolved: true,\n prefix: p.prefix,\n })\n const entries = await readdir(accessor, dirSpec, index)\n const matched: PathSpec[] = []\n for (const e of entries) {\n if (fnmatch(gnuBasename(e), p.pattern)) {\n matched.push(\n new PathSpec({\n original: e,\n directory: p.directory,\n resolved: true,\n prefix: p.prefix,\n }),\n )\n }\n }\n if (matched.length > SCOPE_ERROR) matched.length = SCOPE_ERROR\n result.push(...matched)\n } else {\n result.push(p)\n }\n }\n return result\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { readFile, writeFile } from 'node:fs/promises'\nimport { type PathSpec, invalidateAfterWrite } from '@struktoai/mirage-core'\nimport { resolveSafe } from './utils.ts'\n\nexport async function truncate(\n accessor: DiskAccessor,\n path: PathSpec,\n length: number,\n): Promise<void> {\n const full = resolveSafe(accessor.root, path.stripPrefix)\n let data: Buffer\n try {\n data = await readFile(full)\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code === 'ENOENT') {\n data = Buffer.alloc(0)\n } else {\n throw err\n }\n }\n const out = new Uint8Array(length)\n out.set(data.subarray(0, Math.min(data.byteLength, length)))\n await writeFile(full, out)\n await invalidateAfterWrite(path)\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport { Accessor } from '@struktoai/mirage-core'\n\nexport class DiskAccessor extends Accessor {\n readonly root: string\n\n constructor(root: string) {\n super()\n this.root = root\n }\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { appendBytes as coreAppend } from '../../core/disk/append.ts'\n\nexport const appendOp: RegisteredOp = {\n name: 'append',\n resource: ResourceName.DISK,\n filetype: null,\n write: true,\n fn: (accessor: DiskAccessor, path: PathSpec, args: readonly unknown[]) => {\n const data = args[0]\n if (!(data instanceof Uint8Array)) {\n throw new TypeError('append op requires a Uint8Array as the first arg')\n }\n return coreAppend(accessor, path, data)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { create as coreCreate } from '../../core/disk/create.ts'\n\nexport const createOp: RegisteredOp = {\n name: 'create',\n resource: ResourceName.DISK,\n filetype: null,\n write: true,\n fn: (accessor: DiskAccessor, path: PathSpec) => {\n return coreCreate(accessor, path)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { mkdir as coreMkdir } from '../../core/disk/mkdir.ts'\n\nexport const mkdirOp: RegisteredOp = {\n name: 'mkdir',\n resource: ResourceName.DISK,\n filetype: null,\n write: true,\n fn: (accessor: DiskAccessor, path: PathSpec) => {\n return coreMkdir(accessor, path, true)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { read as coreRead } from '../../core/disk/read.ts'\n\nexport const readOp: RegisteredOp = {\n name: 'read',\n resource: ResourceName.DISK,\n filetype: null,\n write: false,\n fn: (accessor: DiskAccessor, path: PathSpec) => {\n return coreRead(accessor, path)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport { featherCat, type PathSpec, type RegisteredOp, ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { read as coreRead } from '../../core/disk/read.ts'\n\nexport const readFeatherOp: RegisteredOp = {\n name: 'read',\n resource: ResourceName.DISK,\n filetype: '.feather',\n write: false,\n fn: async (accessor: DiskAccessor, path: PathSpec) => {\n const raw = await coreRead(accessor, path)\n return featherCat(raw)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport { hdf5Cat, type PathSpec, type RegisteredOp, ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { read as coreRead } from '../../core/disk/read.ts'\n\nexport const readHdf5Op: RegisteredOp = {\n name: 'read',\n resource: ResourceName.DISK,\n filetype: '.hdf5',\n write: false,\n fn: async (accessor: DiskAccessor, path: PathSpec) => {\n const raw = await coreRead(accessor, path)\n return hdf5Cat(raw)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport { parquetCat, type PathSpec, type RegisteredOp, ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { read as coreRead } from '../../core/disk/read.ts'\n\nexport const readParquetOp: RegisteredOp = {\n name: 'read',\n resource: ResourceName.DISK,\n filetype: '.parquet',\n write: false,\n fn: async (accessor: DiskAccessor, path: PathSpec) => {\n const raw = await coreRead(accessor, path)\n return parquetCat(raw)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { readdir as coreReaddir } from '../../core/disk/readdir.ts'\n\nexport const readdirOp: RegisteredOp = {\n name: 'readdir',\n resource: ResourceName.DISK,\n filetype: null,\n write: false,\n fn: (accessor: DiskAccessor, path: PathSpec) => {\n return coreReaddir(accessor, path)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { rename as coreRename } from '../../core/disk/rename.ts'\n\nexport const renameOp: RegisteredOp = {\n name: 'rename',\n resource: ResourceName.DISK,\n filetype: null,\n write: true,\n fn: (accessor: DiskAccessor, path: PathSpec, args: readonly unknown[]) => {\n const dst = args[0]\n if (dst === undefined || dst === null || typeof dst !== 'object' || !('original' in dst)) {\n throw new TypeError('rename op requires a PathSpec destination as the first arg')\n }\n return coreRename(accessor, path, dst as PathSpec)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { rmdir as coreRmdir } from '../../core/disk/rmdir.ts'\n\nexport const rmdirOp: RegisteredOp = {\n name: 'rmdir',\n resource: ResourceName.DISK,\n filetype: null,\n write: true,\n fn: (accessor: DiskAccessor, path: PathSpec) => {\n return coreRmdir(accessor, path)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { stat as coreStat } from '../../core/disk/stat.ts'\n\nexport const statOp: RegisteredOp = {\n name: 'stat',\n resource: ResourceName.DISK,\n filetype: null,\n write: false,\n fn: (accessor: DiskAccessor, path: PathSpec) => {\n return coreStat(accessor, path)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { truncate as coreTruncate } from '../../core/disk/truncate.ts'\n\nexport const truncateOp: RegisteredOp = {\n name: 'truncate',\n resource: ResourceName.DISK,\n filetype: null,\n write: true,\n fn: (accessor: DiskAccessor, path: PathSpec, args: readonly unknown[]) => {\n const length = args[0]\n if (typeof length !== 'number') {\n throw new TypeError('truncate op requires a number length as the first arg')\n }\n return coreTruncate(accessor, path, length)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { PathSpec, RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { unlink as coreUnlink } from '../../core/disk/unlink.ts'\n\nexport const unlinkOp: RegisteredOp = {\n name: 'unlink',\n resource: ResourceName.DISK,\n filetype: null,\n write: true,\n fn: (accessor: DiskAccessor, path: PathSpec) => {\n return coreUnlink(accessor, path)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport { extractWriteData, type PathSpec, type RegisteredOp } from '@struktoai/mirage-core'\nimport { ResourceName } from '@struktoai/mirage-core'\nimport type { DiskAccessor } from '../../accessor/disk.ts'\nimport { writeBytes } from '../../core/disk/write.ts'\n\nexport const writeOp: RegisteredOp = {\n name: 'write',\n resource: ResourceName.DISK,\n filetype: null,\n write: true,\n fn: (accessor: DiskAccessor, path: PathSpec, args: readonly unknown[]) => {\n const data = extractWriteData(args)\n return writeBytes(accessor, path, data)\n },\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport type { RegisteredOp } from '@struktoai/mirage-core'\nimport { appendOp } from './append.ts'\nimport { createOp } from './create.ts'\nimport { mkdirOp } from './mkdir.ts'\nimport { readOp } from './read.ts'\nimport { readFeatherOp } from './read_feather.ts'\nimport { readHdf5Op } from './read_hdf5.ts'\nimport { readParquetOp } from './read_parquet.ts'\nimport { readdirOp } from './readdir.ts'\nimport { renameOp } from './rename.ts'\nimport { rmdirOp } from './rmdir.ts'\nimport { statOp } from './stat.ts'\nimport { truncateOp } from './truncate.ts'\nimport { unlinkOp } from './unlink.ts'\nimport { writeOp } from './write.ts'\n\nexport const DISK_OPS: readonly RegisteredOp[] = [\n appendOp,\n createOp,\n mkdirOp,\n readOp,\n readFeatherOp,\n readHdf5Op,\n readParquetOp,\n readdirOp,\n renameOp,\n rmdirOp,\n statOp,\n truncateOp,\n unlinkOp,\n writeOp,\n]\n\nexport {\n appendOp,\n createOp,\n mkdirOp,\n readOp,\n readFeatherOp,\n readHdf5Op,\n readParquetOp,\n readdirOp,\n renameOp,\n rmdirOp,\n statOp,\n truncateOp,\n unlinkOp,\n writeOp,\n}\n","// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nexport const DISK_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.`\n"],"mappings":"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","names":["mkdir","readdir","readFile","writeFile","path","PathSpec","ResourceName","ResourceName","path","path","enoent","enoent","path","path","enoent","path","enoent","stat","path","stat","path","path","readdir","stat","path","readdir","stat","path","invalidateAfterWrite","mkdir","path","invalidateAfterWrite","readdir","path","enoent","invalidateAfterWrite","enoent","invalidateAfterWrite","invalidateAfterUnlink","path","invalidateAfterUnlink","invalidateAfterUnlink","path","invalidateAfterUnlink","enoent","ResourceName","path","ResourceName","enoent","invalidateAfterUnlink","path","invalidateAfterUnlink","mkdir","path","ResourceName","invalidateAfterWrite","record","mkdir","path","record","ResourceName","invalidateAfterWrite","readdir","mkdir","ResourceName","ResourceName","ResourceName","mkdir","path","ResourceName","invalidateAfterWrite","record","mkdir","path","record","ResourceName","invalidateAfterWrite","path","gnuBasename","readdir","readFile","writeFile","invalidateAfterWrite","path","readFile","writeFile","invalidateAfterWrite","ResourceName","ResourceName","path","ResourceName","ResourceName","path","ResourceName","ResourceName","path","mkdir","ResourceName","ResourceName","path","ResourceName","ResourceName","path","ResourceName","ResourceName","path","ResourceName","ResourceName","path","ResourceName","ResourceName","path","readdir","ResourceName","ResourceName","path","ResourceName","ResourceName","path","ResourceName","ResourceName","path","ResourceName","ResourceName","path","ResourceName","ResourceName","path","ResourceName","ResourceName","path","readdir","path","ResourceName","mkdir","PathSpec","readFile","writeFile"]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-YGZMVNN5.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/tencent/tencent.ts
10
10
  import {
@@ -54,4 +54,4 @@ export {
54
54
  TENCENT_PROMPT,
55
55
  TencentResource
56
56
  };
57
- //# sourceMappingURL=chunk-L6JPBJAS.js.map
57
+ //# sourceMappingURL=chunk-YAHRT6MB.js.map
@@ -20,7 +20,7 @@ import {
20
20
  } from "@struktoai/mirage-core";
21
21
  var GSheetsResource = class extends BaseResource {
22
22
  kind = ResourceName.GSHEETS;
23
- isRemote = true;
23
+ cachesReads = true;
24
24
  indexTtl = 86400;
25
25
  prompt = GSHEETS_PROMPT;
26
26
  writePrompt = GSHEETS_WRITE_PROMPT;
@@ -87,4 +87,4 @@ var GSheetsResource = class extends BaseResource {
87
87
  export {
88
88
  GSheetsResource
89
89
  };
90
- //# sourceMappingURL=chunk-XRU5WXZX.js.map
90
+ //# sourceMappingURL=chunk-ZEGAMJO2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resource/gsheets/gsheets.ts"],"sourcesContent":["// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n// http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\n// ========= Copyright 2026 @ Strukto.AI All Rights Reserved. =========\n\nimport {\n BaseResource,\n type FileStat,\n GSHEETS_COMMANDS,\n GSHEETS_PROMPT,\n GSHEETS_VFS_OPS,\n GSHEETS_WRITE_PROMPT,\n GSheetsAccessor,\n PathSpec,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n TokenManager,\n gsheetsRead,\n gsheetsReaddir,\n gsheetsResolveGlob,\n gsheetsStat,\n} from '@struktoai/mirage-core'\nimport { redactGSheetsConfig, type GSheetsConfig, type GSheetsConfigRedacted } from './config.ts'\n\nexport interface GSheetsResourceState {\n type: string\n config: GSheetsConfigRedacted\n}\n\nexport class GSheetsResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.GSHEETS\n readonly cachesReads: boolean = true\n readonly indexTtl: number = 86_400\n readonly prompt: string = GSHEETS_PROMPT\n readonly writePrompt: string = GSHEETS_WRITE_PROMPT\n readonly config: GSheetsConfig\n readonly accessor: GSheetsAccessor\n\n constructor(config: GSheetsConfig) {\n super()\n this.config = config\n const tm = new TokenManager({\n clientId: config.clientId,\n clientSecret: config.clientSecret,\n refreshToken: config.refreshToken,\n })\n this.accessor = new GSheetsAccessor({ tokenManager: tm })\n }\n\n open(): Promise<void> {\n return Promise.resolve()\n }\n\n close(): Promise<void> {\n return Promise.resolve()\n }\n\n commands(): readonly RegisteredCommand[] {\n return GSHEETS_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return GSHEETS_VFS_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return gsheetsRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return gsheetsReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return gsheetsStat(this.accessor, p, this.index)\n }\n\n async fingerprint(p: PathSpec): Promise<string | null> {\n const lookup = await this.index.get(p.original)\n return lookup.entry?.remoteTime ?? null\n }\n\n glob(paths: readonly PathSpec[], prefix = ''): Promise<PathSpec[]> {\n const effective =\n prefix !== ''\n ? paths.map((p) =>\n p.prefix !== ''\n ? p\n : new PathSpec({\n original: p.original,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n prefix,\n }),\n )\n : paths\n return gsheetsResolveGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<GSheetsResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactGSheetsConfig(this.config),\n })\n }\n\n loadState(_state: GSheetsResourceState): Promise<void> {\n return Promise.resolve()\n }\n}\n"],"mappings":";;;;;AAcA;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAQA,IAAM,kBAAN,cAA8B,aAAiC;AAAA,EAC3D,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA,EACvB,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB,cAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EAET,YAAY,QAAuB;AACjC,UAAM;AACN,SAAK,SAAS;AACd,UAAM,KAAK,IAAI,aAAa;AAAA,MAC1B,UAAU,OAAO;AAAA,MACjB,cAAc,OAAO;AAAA,MACrB,cAAc,OAAO;AAAA,IACvB,CAAC;AACD,SAAK,WAAW,IAAI,gBAAgB,EAAE,cAAc,GAAG,CAAC;AAAA,EAC1D;AAAA,EAEA,OAAsB;AACpB,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EAEA,QAAuB;AACrB,WAAO,QAAQ,QAAQ;AAAA,EACzB;AAAA,EAEA,WAAyC;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,MAA+B;AAC7B,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,GAAkC;AACzC,WAAO,YAAY,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACjD;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,eAAe,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACpD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,YAAY,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACjD;AAAA,EAEA,MAAM,YAAY,GAAqC;AACrD,UAAM,SAAS,MAAM,KAAK,MAAM,IAAI,EAAE,QAAQ;AAC9C,WAAO,OAAO,OAAO,cAAc;AAAA,EACrC;AAAA,EAEA,KAAK,OAA4B,SAAS,IAAyB;AACjE,UAAM,YACJ,WAAW,KACP,MAAM;AAAA,MAAI,CAAC,MACT,EAAE,WAAW,KACT,IACA,IAAI,SAAS;AAAA,QACX,UAAU,EAAE;AAAA,QACZ,WAAW,EAAE;AAAA,QACb,GAAI,EAAE,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,QACnD,UAAU,EAAE;AAAA,QACZ;AAAA,MACF,CAAC;AAAA,IACP,IACA;AACN,WAAO,mBAAmB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EAChE;AAAA,EAEA,WAA0C;AACxC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,oBAAoB,KAAK,MAAM;AAAA,IACzC,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA6C;AACrD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-LAJJPLEV.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/r2/r2.ts
10
10
  import {
@@ -54,4 +54,4 @@ export {
54
54
  R2_PROMPT,
55
55
  R2Resource
56
56
  };
57
- //# sourceMappingURL=chunk-B6SXRCBO.js.map
57
+ //# sourceMappingURL=chunk-ZGSER5TG.js.map
@@ -0,0 +1,7 @@
1
+ import {
2
+ DatabricksVolumeResource
3
+ } from "./chunk-RNQN2FOU.js";
4
+ export {
5
+ DatabricksVolumeResource
6
+ };
7
+ //# sourceMappingURL=databricks_volume-7XOUYSTY.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  DigitalOceanResource
3
- } from "./chunk-AJICZLHT.js";
3
+ } from "./chunk-KPULTUOK.js";
4
4
  import "./chunk-ZNWVJ6UW.js";
5
- import "./chunk-MHCMHKM6.js";
5
+ import "./chunk-TA3WMOMU.js";
6
6
  import "./chunk-UT2OPSN4.js";
7
7
  export {
8
8
  DigitalOceanResource
9
9
  };
10
- //# sourceMappingURL=digitalocean-6SPR4S7V.js.map
10
+ //# sourceMappingURL=digitalocean-3CQ4CPPZ.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  DiscordResource
3
- } from "./chunk-LYDMMNL2.js";
3
+ } from "./chunk-JAGJTM3Q.js";
4
4
  import "./chunk-DNBAMB5J.js";
5
5
  export {
6
6
  DiscordResource
7
7
  };
8
- //# sourceMappingURL=discord-SAV2RBJV.js.map
8
+ //# sourceMappingURL=discord-BG7OSRJG.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  DiskResource
3
- } from "./chunk-PBBG7VFT.js";
3
+ } from "./chunk-XWVDS66D.js";
4
4
  import "./chunk-U6QSXTUS.js";
5
5
  export {
6
6
  DiskResource
7
7
  };
8
- //# sourceMappingURL=disk-POACMF4G.js.map
8
+ //# sourceMappingURL=disk-XVLBCVKE.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  DropboxResource
3
- } from "./chunk-5YOCVEUB.js";
3
+ } from "./chunk-SWCDFEUK.js";
4
4
  import "./chunk-Q2IAILVC.js";
5
5
  export {
6
6
  DropboxResource
7
7
  };
8
- //# sourceMappingURL=dropbox-CQ7MTYX2.js.map
8
+ //# sourceMappingURL=dropbox-74GYLV3R.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  EmailResource
3
- } from "./chunk-DTAY7LPC.js";
3
+ } from "./chunk-S5OVP467.js";
4
4
  import "./chunk-B2ZOKNN4.js";
5
5
  export {
6
6
  EmailResource
7
7
  };
8
- //# sourceMappingURL=email-KBQ7CXS7.js.map
8
+ //# sourceMappingURL=email-5IZ7OBQ4.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  GCSResource
3
- } from "./chunk-IQVNVTOP.js";
4
- import "./chunk-MHCMHKM6.js";
3
+ } from "./chunk-I5THIMPP.js";
4
+ import "./chunk-TA3WMOMU.js";
5
5
  import "./chunk-UT2OPSN4.js";
6
6
  import "./chunk-XGJ2QERC.js";
7
7
  export {
8
8
  GCSResource
9
9
  };
10
- //# sourceMappingURL=gcs-SMIE4VMT.js.map
10
+ //# sourceMappingURL=gcs-EMEYU2XT.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  GDocsResource
3
- } from "./chunk-A7X4L4JM.js";
3
+ } from "./chunk-JCC4CU2I.js";
4
4
  import "./chunk-H3BST2LI.js";
5
5
  export {
6
6
  GDocsResource
7
7
  };
8
- //# sourceMappingURL=gdocs-X5Y2SIQX.js.map
8
+ //# sourceMappingURL=gdocs-R67TDPON.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  GDriveResource
3
- } from "./chunk-TRTUHCS4.js";
3
+ } from "./chunk-QCZ2XUKH.js";
4
4
  import "./chunk-DP2PP5V2.js";
5
5
  export {
6
6
  GDriveResource
7
7
  };
8
- //# sourceMappingURL=gdrive-SIQPRIGI.js.map
8
+ //# sourceMappingURL=gdrive-PRN2ALRK.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  GitHubResource
3
- } from "./chunk-YPT4JBUY.js";
3
+ } from "./chunk-LV2G7VHL.js";
4
4
  import "./chunk-TWGVQLG2.js";
5
5
  export {
6
6
  GitHubResource
7
7
  };
8
- //# sourceMappingURL=github-KBHWANKQ.js.map
8
+ //# sourceMappingURL=github-DV7E6OFV.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  GitHubCIResource
3
- } from "./chunk-ABTEGAFB.js";
3
+ } from "./chunk-EZQ5HBAC.js";
4
4
  import "./chunk-H3I2KZIY.js";
5
5
  export {
6
6
  GitHubCIResource
7
7
  };
8
- //# sourceMappingURL=github_ci-HPITNK37.js.map
8
+ //# sourceMappingURL=github_ci-Q554V5PA.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  GmailResource
3
- } from "./chunk-HEHERHQ5.js";
3
+ } from "./chunk-MPCCRRE6.js";
4
4
  import "./chunk-54NTYJEO.js";
5
5
  export {
6
6
  GmailResource
7
7
  };
8
- //# sourceMappingURL=gmail-DKHAGJNX.js.map
8
+ //# sourceMappingURL=gmail-OLN2LT4O.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  GSheetsResource
3
- } from "./chunk-XRU5WXZX.js";
3
+ } from "./chunk-ZEGAMJO2.js";
4
4
  import "./chunk-LW25LMIH.js";
5
5
  export {
6
6
  GSheetsResource
7
7
  };
8
- //# sourceMappingURL=gsheets-ZSUDIWGK.js.map
8
+ //# sourceMappingURL=gsheets-H4RYMQJ5.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  GSlidesResource
3
- } from "./chunk-E7RW3SBV.js";
3
+ } from "./chunk-A7IVFIOP.js";
4
4
  import "./chunk-W7FLHT65.js";
5
5
  export {
6
6
  GSlidesResource
7
7
  };
8
- //# sourceMappingURL=gslides-GYXM7IMJ.js.map
8
+ //# sourceMappingURL=gslides-YLCHKJOM.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  HfBucketsResource
3
- } from "./chunk-G5BZE7UA.js";
4
- import "./chunk-WSGEIVY3.js";
3
+ } from "./chunk-HJJMP6IX.js";
4
+ import "./chunk-TURD42QO.js";
5
5
  import "./chunk-EGB7V74Z.js";
6
6
  import "./chunk-E2ISWXLB.js";
7
7
  export {
8
8
  HfBucketsResource
9
9
  };
10
- //# sourceMappingURL=hf_buckets-RIOMV7WG.js.map
10
+ //# sourceMappingURL=hf_buckets-DTKXKKFF.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  HfDatasetsResource
3
- } from "./chunk-RQYEEA2O.js";
4
- import "./chunk-WSGEIVY3.js";
3
+ } from "./chunk-N5FSLVKO.js";
4
+ import "./chunk-TURD42QO.js";
5
5
  import "./chunk-EGB7V74Z.js";
6
6
  import "./chunk-E2ISWXLB.js";
7
7
  export {
8
8
  HfDatasetsResource
9
9
  };
10
- //# sourceMappingURL=hf_datasets-QF4BQ3OK.js.map
10
+ //# sourceMappingURL=hf_datasets-55C4APKR.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  HfModelsResource
3
- } from "./chunk-WL7HS7EM.js";
4
- import "./chunk-WSGEIVY3.js";
3
+ } from "./chunk-UINQOUZR.js";
4
+ import "./chunk-TURD42QO.js";
5
5
  import "./chunk-EGB7V74Z.js";
6
6
  import "./chunk-E2ISWXLB.js";
7
7
  export {
8
8
  HfModelsResource
9
9
  };
10
- //# sourceMappingURL=hf_models-62GC2HPZ.js.map
10
+ //# sourceMappingURL=hf_models-RO5JR36V.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  HfSpacesResource
3
- } from "./chunk-OYV2DN66.js";
4
- import "./chunk-WSGEIVY3.js";
3
+ } from "./chunk-X5HF2OFP.js";
4
+ import "./chunk-TURD42QO.js";
5
5
  import "./chunk-EGB7V74Z.js";
6
6
  import "./chunk-E2ISWXLB.js";
7
7
  export {
8
8
  HfSpacesResource
9
9
  };
10
- //# sourceMappingURL=hf_spaces-NVSMUNRM.js.map
10
+ //# sourceMappingURL=hf_spaces-ZVZ3EDRX.js.map