@struktoai/mirage-node 0.0.3-alpha.0 → 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
package/README.md CHANGED
@@ -57,7 +57,7 @@ await ws.execute('cat /s3/events/2026-05-06.parquet | jq .user')
57
57
  ## About
58
58
 
59
59
  - **One interface instead of N SDKs and M MCPs.** Every service speaks the same filesystem semantics, and pipelines compose across services as naturally as on a local disk.
60
- - **Around 50 built-in backends:** RAM, Disk, Redis, S3 / R2 / OCI / Supabase / GCS, Gmail / GDrive / GDocs / GSheets / GSlides, GitHub / Linear / Notion / Trello, Slack / Discord / Telegram / Email, MongoDB / Postgres / LanceDB, SSH, and more, mounted side-by-side under a single root.
60
+ - **Around 50 built-in backends:** RAM, Disk, Redis, S3 / R2 / OCI / Supabase / GCS, Gmail / GDrive / GDocs / GSheets / GSlides, GitHub / Linear / Notion / Trello, Slack / Discord / Email, MongoDB / Postgres / LanceDB, SSH, and more, mounted side-by-side under a single root.
61
61
  - **Portable workspaces:** clone, snapshot, and version a workspace; agent runs move between machines without restarting or reconfiguring the system.
62
62
  - **Embeddable:** the Python and TypeScript SDKs run in-process inside FastAPI, Express, browser apps, or any async runtime; no separate process required.
63
63
  - **Agent integrations:** OpenAI Agents SDK, Vercel AI SDK, LangChain, Pydantic AI, CAMEL, and OpenHands via the SDKs; coding agents like Claude Code and Codex via the lightweight CLI + daemon.
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  AliyunResource
3
- } from "./chunk-KTNDT45N.js";
3
+ } from "./chunk-FQ33BYFR.js";
4
4
  import "./chunk-NJMGCT63.js";
5
- import "./chunk-MHCMHKM6.js";
5
+ import "./chunk-TA3WMOMU.js";
6
6
  import "./chunk-UT2OPSN4.js";
7
7
  export {
8
8
  AliyunResource
9
9
  };
10
- //# sourceMappingURL=aliyun-TMZRUYCG.js.map
10
+ //# sourceMappingURL=aliyun-JMJ3PFYY.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  BackblazeResource
3
- } from "./chunk-HQ4KWN76.js";
3
+ } from "./chunk-X3G37FXT.js";
4
4
  import "./chunk-XHCBHYN4.js";
5
- import "./chunk-MHCMHKM6.js";
5
+ import "./chunk-TA3WMOMU.js";
6
6
  import "./chunk-UT2OPSN4.js";
7
7
  export {
8
8
  BackblazeResource
9
9
  };
10
- //# sourceMappingURL=backblaze-OHW57DLK.js.map
10
+ //# sourceMappingURL=backblaze-TDFD23QO.js.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  BoxResource
3
- } from "./chunk-A4Z6DZ22.js";
3
+ } from "./chunk-VWKUT4CW.js";
4
4
  import "./chunk-OZAEWZZ3.js";
5
5
  export {
6
6
  BoxResource
7
7
  };
8
- //# sourceMappingURL=box-UXTCAFOZ.js.map
8
+ //# sourceMappingURL=box-GQ2U2R6R.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  CephResource
3
- } from "./chunk-C6NHFMIP.js";
3
+ } from "./chunk-IK2L4EN3.js";
4
4
  import "./chunk-OPYQ5KIO.js";
5
- import "./chunk-MHCMHKM6.js";
5
+ import "./chunk-TA3WMOMU.js";
6
6
  import "./chunk-UT2OPSN4.js";
7
7
  export {
8
8
  CephResource
9
9
  };
10
- //# sourceMappingURL=ceph-TNN4I2FT.js.map
10
+ //# sourceMappingURL=ceph-S2VOYO6G.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-XLQI4IT2.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/scaleway/scaleway.ts
10
10
  import {
@@ -54,4 +54,4 @@ export {
54
54
  SCALEWAY_PROMPT,
55
55
  ScalewayResource
56
56
  };
57
- //# sourceMappingURL=chunk-FXFDBF3P.js.map
57
+ //# sourceMappingURL=chunk-3WIO7NBR.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-JALIYI6M.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/wasabi/wasabi.ts
10
10
  import {
@@ -54,4 +54,4 @@ export {
54
54
  WASABI_PROMPT,
55
55
  WasabiResource
56
56
  };
57
- //# sourceMappingURL=chunk-O7ODGJYL.js.map
57
+ //# sourceMappingURL=chunk-47AVIIOT.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-DYXEITK3.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/minio/minio.ts
10
10
  import {
@@ -54,4 +54,4 @@ export {
54
54
  MINIO_PROMPT,
55
55
  MinIOResource
56
56
  };
57
- //# sourceMappingURL=chunk-Q6CDMOM6.js.map
57
+ //# sourceMappingURL=chunk-7CW3BMPH.js.map
@@ -20,7 +20,7 @@ import {
20
20
  } from "@struktoai/mirage-core";
21
21
  var GSlidesResource = class extends BaseResource {
22
22
  kind = ResourceName.GSLIDES;
23
- isRemote = true;
23
+ cachesReads = true;
24
24
  indexTtl = 86400;
25
25
  prompt = GSLIDES_PROMPT;
26
26
  writePrompt = GSLIDES_WRITE_PROMPT;
@@ -87,4 +87,4 @@ var GSlidesResource = class extends BaseResource {
87
87
  export {
88
88
  GSlidesResource
89
89
  };
90
- //# sourceMappingURL=chunk-E7RW3SBV.js.map
90
+ //# sourceMappingURL=chunk-A7IVFIOP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resource/gslides/gslides.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 GSLIDES_COMMANDS,\n GSLIDES_PROMPT,\n GSLIDES_VFS_OPS,\n GSLIDES_WRITE_PROMPT,\n GSlidesAccessor,\n PathSpec,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n TokenManager,\n gslidesRead,\n gslidesReaddir,\n gslidesResolveGlob,\n gslidesStat,\n} from '@struktoai/mirage-core'\nimport { redactGSlidesConfig, type GSlidesConfig, type GSlidesConfigRedacted } from './config.ts'\n\nexport interface GSlidesResourceState {\n type: string\n config: GSlidesConfigRedacted\n}\n\nexport class GSlidesResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.GSLIDES\n readonly cachesReads: boolean = true\n readonly indexTtl: number = 86_400\n readonly prompt: string = GSLIDES_PROMPT\n readonly writePrompt: string = GSLIDES_WRITE_PROMPT\n readonly config: GSlidesConfig\n readonly accessor: GSlidesAccessor\n\n constructor(config: GSlidesConfig) {\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 GSlidesAccessor({ 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 GSLIDES_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return GSLIDES_VFS_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return gslidesRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return gslidesReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return gslidesStat(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 gslidesResolveGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<GSlidesResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactGSlidesConfig(this.config),\n })\n }\n\n loadState(_state: GSlidesResourceState): 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-2CC5VW7K.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/seaweedfs/seaweedfs.ts
10
10
  import {
@@ -54,4 +54,4 @@ export {
54
54
  SEAWEEDFS_PROMPT,
55
55
  SeaweedFSResource
56
56
  };
57
- //# sourceMappingURL=chunk-3T3RMDNX.js.map
57
+ //# sourceMappingURL=chunk-AUHSTJJ3.js.map
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-RQK5UPMP.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/oci/oci.ts
10
10
  import {
@@ -53,4 +53,4 @@ export {
53
53
  OCI_PROMPT,
54
54
  OCIResource
55
55
  };
56
- //# sourceMappingURL=chunk-PJBQKMCD.js.map
56
+ //# sourceMappingURL=chunk-DM4GSE26.js.map
@@ -19,7 +19,7 @@ import {
19
19
  } from "@struktoai/mirage-core";
20
20
  var LangfuseResource = class extends BaseResource {
21
21
  kind = ResourceName.LANGFUSE;
22
- isRemote = true;
22
+ cachesReads = true;
23
23
  indexTtl = 600;
24
24
  prompt = LANGFUSE_PROMPT;
25
25
  config;
@@ -94,4 +94,4 @@ var LangfuseResource = class extends BaseResource {
94
94
  export {
95
95
  LangfuseResource
96
96
  };
97
- //# sourceMappingURL=chunk-5DLOHQJ2.js.map
97
+ //# sourceMappingURL=chunk-EM4J5EQS.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resource/langfuse/langfuse.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 HttpLangfuseTransport,\n LANGFUSE_COMMANDS,\n LANGFUSE_PROMPT,\n LANGFUSE_VFS_OPS,\n LangfuseAccessor,\n langfuseRead,\n langfuseReaddir,\n langfuseStat,\n PathSpec,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n resolveLangfuseGlob,\n} from '@struktoai/mirage-core'\nimport { redactLangfuseConfig, type LangfuseConfig, type LangfuseConfigRedacted } from './config.ts'\n\nexport interface LangfuseResourceState {\n type: string\n config: LangfuseConfigRedacted\n}\n\nexport class LangfuseResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.LANGFUSE\n readonly cachesReads: boolean = true\n readonly indexTtl: number = 600\n readonly prompt: string = LANGFUSE_PROMPT\n readonly config: LangfuseConfig\n readonly accessor: LangfuseAccessor\n\n constructor(config: LangfuseConfig) {\n super()\n this.config = config\n const transportOpts: { publicKey: string; secretKey: string; host?: string } = {\n publicKey: config.publicKey,\n secretKey: config.secretKey,\n }\n if (config.host !== undefined) transportOpts.host = config.host\n const accessorConfig: {\n defaultTraceLimit?: number\n defaultSearchLimit?: number\n defaultFromTimestamp?: string\n } = {}\n if (config.defaultTraceLimit !== undefined) {\n accessorConfig.defaultTraceLimit = config.defaultTraceLimit\n }\n if (config.defaultSearchLimit !== undefined) {\n accessorConfig.defaultSearchLimit = config.defaultSearchLimit\n }\n if (config.defaultFromTimestamp !== undefined) {\n accessorConfig.defaultFromTimestamp = config.defaultFromTimestamp\n }\n this.accessor = new LangfuseAccessor(new HttpLangfuseTransport(transportOpts), accessorConfig)\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 LANGFUSE_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return LANGFUSE_VFS_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return langfuseRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return langfuseReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return langfuseStat(this.accessor, p, this.index)\n }\n\n fingerprint(_p: PathSpec): Promise<string | null> {\n return Promise.resolve(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 resolveLangfuseGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<LangfuseResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactLangfuseConfig(this.config),\n })\n }\n\n loadState(_state: LangfuseResourceState): 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,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,OACK;AAQA,IAAM,mBAAN,cAA+B,aAAiC;AAAA,EAC5D,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA,EACvB,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EAET,YAAY,QAAwB;AAClC,UAAM;AACN,SAAK,SAAS;AACd,UAAM,gBAAyE;AAAA,MAC7E,WAAW,OAAO;AAAA,MAClB,WAAW,OAAO;AAAA,IACpB;AACA,QAAI,OAAO,SAAS,OAAW,eAAc,OAAO,OAAO;AAC3D,UAAM,iBAIF,CAAC;AACL,QAAI,OAAO,sBAAsB,QAAW;AAC1C,qBAAe,oBAAoB,OAAO;AAAA,IAC5C;AACA,QAAI,OAAO,uBAAuB,QAAW;AAC3C,qBAAe,qBAAqB,OAAO;AAAA,IAC7C;AACA,QAAI,OAAO,yBAAyB,QAAW;AAC7C,qBAAe,uBAAuB,OAAO;AAAA,IAC/C;AACA,SAAK,WAAW,IAAI,iBAAiB,IAAI,sBAAsB,aAAa,GAAG,cAAc;AAAA,EAC/F;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,aAAa,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAClD;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,gBAAgB,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACrD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,aAAa,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAClD;AAAA,EAEA,YAAY,IAAsC;AAChD,WAAO,QAAQ,QAAQ,IAAI;AAAA,EAC7B;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,oBAAoB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EACjE;AAAA,EAEA,WAA2C;AACzC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,qBAAqB,KAAK,MAAM;AAAA,IAC1C,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA8C;AACtD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
@@ -19,7 +19,7 @@ import {
19
19
  } from "@struktoai/mirage-core";
20
20
  var GitHubCIResource = class extends BaseResource {
21
21
  kind = ResourceName.GITHUB_CI;
22
- isRemote = true;
22
+ cachesReads = true;
23
23
  indexTtl = 86400;
24
24
  prompt = GITHUB_CI_PROMPT;
25
25
  config;
@@ -88,4 +88,4 @@ var GitHubCIResource = class extends BaseResource {
88
88
  export {
89
89
  GitHubCIResource
90
90
  };
91
- //# sourceMappingURL=chunk-ABTEGAFB.js.map
91
+ //# sourceMappingURL=chunk-EZQ5HBAC.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resource/github_ci/github_ci.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 GITHUB_CI_COMMANDS,\n GITHUB_CI_PROMPT,\n GITHUB_CI_VFS_OPS,\n GitHubCIAccessor,\n HttpCITransport,\n PathSpec,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n githubCiRead,\n githubCiReaddir,\n githubCiResolveGlob,\n githubCiStat,\n} from '@struktoai/mirage-core'\nimport { redactGitHubCIConfig, type GitHubCIConfig, type GitHubCIConfigRedacted } from './config.ts'\n\nexport interface GitHubCIResourceState {\n type: string\n config: GitHubCIConfigRedacted\n}\n\nexport class GitHubCIResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.GITHUB_CI\n readonly cachesReads: boolean = true\n readonly indexTtl: number = 86_400\n readonly prompt: string = GITHUB_CI_PROMPT\n readonly config: GitHubCIConfig\n readonly accessor: GitHubCIAccessor\n\n constructor(config: GitHubCIConfig) {\n super()\n this.config = config\n const transportOpts: { token: string; baseUrl?: string } = { token: config.token }\n if (config.baseUrl !== undefined) transportOpts.baseUrl = config.baseUrl\n this.accessor = new GitHubCIAccessor({\n transport: new HttpCITransport(transportOpts),\n owner: config.owner,\n repo: config.repo,\n days: config.days ?? 30,\n maxRuns: config.maxRuns ?? 300,\n })\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 GITHUB_CI_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return GITHUB_CI_VFS_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return githubCiRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return githubCiReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return githubCiStat(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 githubCiResolveGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<GitHubCIResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactGitHubCIConfig(this.config),\n })\n }\n\n loadState(_state: GitHubCIResourceState): 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,OACK;AAQA,IAAM,mBAAN,cAA+B,aAAiC;AAAA,EAC5D,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA,EACvB,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EAET,YAAY,QAAwB;AAClC,UAAM;AACN,SAAK,SAAS;AACd,UAAM,gBAAqD,EAAE,OAAO,OAAO,MAAM;AACjF,QAAI,OAAO,YAAY,OAAW,eAAc,UAAU,OAAO;AACjE,SAAK,WAAW,IAAI,iBAAiB;AAAA,MACnC,WAAW,IAAI,gBAAgB,aAAa;AAAA,MAC5C,OAAO,OAAO;AAAA,MACd,MAAM,OAAO;AAAA,MACb,MAAM,OAAO,QAAQ;AAAA,MACrB,SAAS,OAAO,WAAW;AAAA,IAC7B,CAAC;AAAA,EACH;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,aAAa,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAClD;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,gBAAgB,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACrD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,aAAa,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAClD;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,oBAAoB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EACjE;AAAA,EAEA,WAA2C;AACzC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,qBAAqB,KAAK,MAAM;AAAA,IAC1C,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA8C;AACtD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-NJMGCT63.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/aliyun/aliyun.ts
10
10
  import {
@@ -54,4 +54,4 @@ export {
54
54
  ALIYUN_PROMPT,
55
55
  AliyunResource
56
56
  };
57
- //# sourceMappingURL=chunk-KTNDT45N.js.map
57
+ //# sourceMappingURL=chunk-FQ33BYFR.js.map
@@ -20,7 +20,7 @@ import {
20
20
  } from "@struktoai/mirage-core";
21
21
  var LinearResource = class extends BaseResource {
22
22
  kind = ResourceName.LINEAR;
23
- isRemote = true;
23
+ cachesReads = true;
24
24
  indexTtl = 600;
25
25
  prompt = LINEAR_PROMPT;
26
26
  writePrompt = LINEAR_WRITE_PROMPT;
@@ -89,4 +89,4 @@ var LinearResource = class extends BaseResource {
89
89
  export {
90
90
  LinearResource
91
91
  };
92
- //# sourceMappingURL=chunk-YAVGCQUP.js.map
92
+ //# sourceMappingURL=chunk-G2WCEUQL.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resource/linear/linear.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 HttpLinearTransport,\n LINEAR_COMMANDS,\n LINEAR_PROMPT,\n LINEAR_VFS_OPS,\n LINEAR_WRITE_PROMPT,\n LinearAccessor,\n type LinearReaddirFilter,\n linearRead,\n linearReaddir,\n linearStat,\n PathSpec,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n resolveLinearGlob,\n} from '@struktoai/mirage-core'\nimport { redactLinearConfig, type LinearConfig, type LinearConfigRedacted } from './config.ts'\n\nexport interface LinearResourceState {\n type: string\n config: LinearConfigRedacted\n}\n\nexport class LinearResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.LINEAR\n readonly cachesReads: boolean = true\n readonly indexTtl: number = 600\n readonly prompt: string = LINEAR_PROMPT\n readonly writePrompt: string = LINEAR_WRITE_PROMPT\n readonly config: LinearConfig\n readonly accessor: LinearAccessor\n\n constructor(config: LinearConfig) {\n super()\n this.config = config\n const transportOpts: { apiKey: string; baseUrl?: string } = { apiKey: config.apiKey }\n if (config.baseUrl !== undefined) transportOpts.baseUrl = config.baseUrl\n this.accessor = new LinearAccessor(new HttpLinearTransport(transportOpts))\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 LINEAR_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return LINEAR_VFS_OPS\n }\n\n private filter(): LinearReaddirFilter {\n const out: LinearReaddirFilter = {}\n if (this.config.teamIds !== undefined) out.teamIds = this.config.teamIds\n return out\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return linearRead(this.accessor, p, this.index, this.filter())\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return linearReaddir(this.accessor, p, this.index, this.filter())\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return linearStat(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 resolveLinearGlob(this.accessor, effective, this.index, this.filter())\n }\n\n getState(): Promise<LinearResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactLinearConfig(this.config),\n })\n }\n\n loadState(_state: LinearResourceState): 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,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,OACK;AAQA,IAAM,iBAAN,cAA6B,aAAiC;AAAA,EAC1D,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA,EACvB,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB,cAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EAET,YAAY,QAAsB;AAChC,UAAM;AACN,SAAK,SAAS;AACd,UAAM,gBAAsD,EAAE,QAAQ,OAAO,OAAO;AACpF,QAAI,OAAO,YAAY,OAAW,eAAc,UAAU,OAAO;AACjE,SAAK,WAAW,IAAI,eAAe,IAAI,oBAAoB,aAAa,CAAC;AAAA,EAC3E;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,EAEQ,SAA8B;AACpC,UAAM,MAA2B,CAAC;AAClC,QAAI,KAAK,OAAO,YAAY,OAAW,KAAI,UAAU,KAAK,OAAO;AACjE,WAAO;AAAA,EACT;AAAA,EAEA,SAAS,GAAkC;AACzC,WAAO,WAAW,KAAK,UAAU,GAAG,KAAK,OAAO,KAAK,OAAO,CAAC;AAAA,EAC/D;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,cAAc,KAAK,UAAU,GAAG,KAAK,OAAO,KAAK,OAAO,CAAC;AAAA,EAClE;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,WAAW,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAChD;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,kBAAkB,KAAK,UAAU,WAAW,KAAK,OAAO,KAAK,OAAO,CAAC;AAAA,EAC9E;AAAA,EAEA,WAAyC;AACvC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,mBAAmB,KAAK,MAAM;AAAA,IACxC,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA4C;AACpD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
@@ -19,6 +19,136 @@ import {
19
19
  import {
20
20
  loadOptionalPeer
21
21
  } from "@struktoai/mirage-core";
22
+
23
+ // package.json
24
+ var package_default = {
25
+ name: "@struktoai/mirage-node",
26
+ version: "0.0.3",
27
+ description: "A Unified Virtual Filesystem For AI Agents",
28
+ keywords: [
29
+ "bash",
30
+ "fuse",
31
+ "typescript",
32
+ "vfs",
33
+ "ai-agents",
34
+ "agent-sandbox",
35
+ "langchain",
36
+ "virtual-filesystem",
37
+ "llm-agents",
38
+ "agent-tools",
39
+ "claude-code",
40
+ "openai-agents"
41
+ ],
42
+ homepage: "https://github.com/strukto-ai/mirage#readme",
43
+ bugs: {
44
+ url: "https://github.com/strukto-ai/mirage/issues"
45
+ },
46
+ repository: {
47
+ type: "git",
48
+ url: "git+https://github.com/strukto-ai/mirage.git",
49
+ directory: "typescript/packages/node"
50
+ },
51
+ license: "Apache-2.0",
52
+ author: "Zecheng Zhang <zecheng@strukto.ai>",
53
+ publishConfig: {
54
+ access: "public"
55
+ },
56
+ type: "module",
57
+ main: "./dist/index.js",
58
+ types: "./dist/index.d.ts",
59
+ exports: {
60
+ ".": {
61
+ types: "./dist/index.d.ts",
62
+ import: "./dist/index.js"
63
+ }
64
+ },
65
+ files: [
66
+ "dist"
67
+ ],
68
+ scripts: {
69
+ build: "tsup",
70
+ test: "vitest run",
71
+ typecheck: "tsc --noEmit"
72
+ },
73
+ dependencies: {
74
+ "@napi-rs/lzma": "^1.4.5",
75
+ "@struktoai/mirage-core": "workspace:*",
76
+ compressjs: "^1.0.3",
77
+ "fs-monkey": "^1.1.0",
78
+ "tree-sitter-bash": "^0.25.1",
79
+ "web-tree-sitter": "^0.26.8"
80
+ },
81
+ peerDependencies: {
82
+ "@lancedb/lancedb": "^0.30.0",
83
+ "@zkochan/fuse-native": "^0.1.0",
84
+ imapflow: "^1.0.0",
85
+ mailparser: "^3.6.0",
86
+ mongodb: "^6.10.0",
87
+ nodemailer: "^9.0.1",
88
+ opendal: "^0.49.4",
89
+ pg: "^8.13.0",
90
+ redis: "^5.0.0",
91
+ ssh2: "^1.16.0"
92
+ },
93
+ peerDependenciesMeta: {
94
+ "@lancedb/lancedb": {
95
+ optional: true
96
+ },
97
+ "@zkochan/fuse-native": {
98
+ optional: true
99
+ },
100
+ imapflow: {
101
+ optional: true
102
+ },
103
+ mailparser: {
104
+ optional: true
105
+ },
106
+ mongodb: {
107
+ optional: true
108
+ },
109
+ nodemailer: {
110
+ optional: true
111
+ },
112
+ opendal: {
113
+ optional: true
114
+ },
115
+ pg: {
116
+ optional: true
117
+ },
118
+ redis: {
119
+ optional: true
120
+ },
121
+ ssh2: {
122
+ optional: true
123
+ }
124
+ },
125
+ devDependencies: {
126
+ "@aws-sdk/client-s3": "^3.0.0",
127
+ "@lancedb/lancedb": "^0.30.0",
128
+ "@types/mailparser": "^3.4.6",
129
+ "@types/nodemailer": "^8.0.0",
130
+ "@types/pg": "^8.11.0",
131
+ "@types/ssh2": "^1.15.0",
132
+ "@zkochan/fuse-native": "^0.1.0",
133
+ imapflow: "^1.3.2",
134
+ mailparser: "^3.9.8",
135
+ mongodb: "^6.10.0",
136
+ nodemailer: "^9.0.1",
137
+ opendal: "^0.49.4",
138
+ pg: "^8.13.0",
139
+ redis: "^5.0.0",
140
+ ssh2: "^1.16.0",
141
+ tsup: "^8.5.0",
142
+ typescript: "^6.0.0",
143
+ vitest: "^3.2.6"
144
+ }
145
+ };
146
+
147
+ // src/version.ts
148
+ var VERSION = package_default.version;
149
+
150
+ // src/resource/mongodb/store.ts
151
+ var DRIVER_INFO = { name: "Mirage", version: VERSION };
22
152
  var MongoDBStore = class {
23
153
  uri;
24
154
  clientPromise = null;
@@ -121,7 +251,7 @@ var MongoDBStore = class {
121
251
  feature: "MongoDBResource",
122
252
  packageName: "mongodb"
123
253
  });
124
- const c = new mod.MongoClient(this.uri);
254
+ const c = new mod.MongoClient(this.uri, { driverInfo: DRIVER_INFO });
125
255
  await c.connect();
126
256
  return c;
127
257
  }
@@ -130,7 +260,7 @@ var MongoDBStore = class {
130
260
  // src/resource/mongodb/mongodb.ts
131
261
  var MongoDBResource = class extends BaseResource {
132
262
  kind = ResourceName.MONGODB;
133
- isRemote = true;
263
+ cachesReads = false;
134
264
  indexTtl = 0;
135
265
  prompt;
136
266
  config;
@@ -183,4 +313,4 @@ export {
183
313
  MongoDBStore,
184
314
  MongoDBResource
185
315
  };
186
- //# sourceMappingURL=chunk-RLGWMJD3.js.map
316
+ //# sourceMappingURL=chunk-GCFYZSVR.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resource/mongodb/mongodb.ts","../src/resource/mongodb/store.ts","../package.json","../src/version.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 detectMongoScope,\n type FileStat,\n MONGODB_COMMANDS,\n MONGODB_OPS,\n MONGODB_PROMPT,\n MongoDBAccessor,\n type MongoDBConfig,\n type MongoDBConfigResolved,\n mongoRead,\n mongoReaddir,\n mongoStat,\n PathSpec,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n resolveMongoGlob,\n ResourceName,\n resolveMongoDBConfig,\n} from '@struktoai/mirage-core'\nimport { MongoDBStore } from './store.ts'\n\nvoid detectMongoScope\n\nexport interface MongoDBResourceOptions {\n config: MongoDBConfig\n prefix?: string\n}\n\nexport class MongoDBResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.MONGODB\n readonly cachesReads: boolean = false\n readonly indexTtl: number = 0\n readonly prompt: string\n readonly config: MongoDBConfigResolved\n readonly store: MongoDBStore\n readonly accessor: MongoDBAccessor\n\n constructor(options: MongoDBResourceOptions | MongoDBConfig) {\n super()\n const { config, prefix } =\n 'config' in options ? options : { config: options, prefix: undefined }\n this.config = resolveMongoDBConfig(config)\n this.store = new MongoDBStore(this.config.uri)\n this.accessor = new MongoDBAccessor(this.store, this.config)\n this.prompt = MONGODB_PROMPT.replace('{prefix}', prefix ?? '')\n }\n\n open(): Promise<void> {\n return Promise.resolve()\n }\n\n async close(): Promise<void> {\n await this.store.close()\n }\n\n ops(): readonly RegisteredOp[] {\n return MONGODB_OPS\n }\n\n commands(): readonly RegisteredCommand[] {\n return MONGODB_COMMANDS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return mongoRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return mongoReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return mongoStat(this.accessor, p, this.index)\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 resolveMongoGlob(this.accessor, effective, this.index)\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 loadOptionalPeer,\n type EntityKind,\n type MongoCollectionSpec,\n type MongoDriver,\n type MongoFindOptions,\n type MongoIndexAccess,\n type MongoIterOptions,\n} from '@struktoai/mirage-core'\nimport { VERSION } from '../../version.ts'\n\nconst DRIVER_INFO = { name: 'Mirage', version: VERSION }\n\ninterface MongoCollectionLike {\n find: (\n filter: Record<string, unknown>,\n options?: { projection?: Record<string, unknown> },\n ) => {\n sort: (sort: Record<string, 1 | -1>) => MongoCursorLike\n skip: (n: number) => MongoCursorLike\n limit: (n: number) => MongoCursorLike\n batchSize: (n: number) => MongoCursorLike\n toArray: () => Promise<Record<string, unknown>[]>\n [Symbol.asyncIterator]?: () => AsyncIterableIterator<Record<string, unknown>>\n }\n countDocuments: (filter?: Record<string, unknown>) => Promise<number>\n listIndexes: () => { toArray: () => Promise<Record<string, unknown>[]> }\n aggregate: (pipeline: unknown[]) => { toArray: () => Promise<Record<string, unknown>[]> }\n watch: (\n pipeline?: unknown[],\n ) => AsyncIterableIterator<Record<string, unknown>> & { close: () => Promise<void> }\n}\n\ninterface MongoCursorLike {\n sort: (sort: Record<string, 1 | -1>) => MongoCursorLike\n skip: (n: number) => MongoCursorLike\n limit: (n: number) => MongoCursorLike\n batchSize: (n: number) => MongoCursorLike\n toArray: () => Promise<Record<string, unknown>[]>\n [Symbol.asyncIterator]?: () => AsyncIterableIterator<Record<string, unknown>>\n}\n\ninterface MongoDbLike {\n listCollections: (filter?: Record<string, unknown>) => {\n toArray: () => Promise<Record<string, unknown>[]>\n }\n collection: (name: string) => MongoCollectionLike\n admin: () => { listDatabases: () => Promise<{ databases: { name: string }[] }> }\n}\n\ninterface MongoClientLike {\n connect: () => Promise<MongoClientLike>\n db: (name?: string) => MongoDbLike\n close: () => Promise<void>\n}\n\ninterface MongoModule {\n MongoClient: new (\n uri: string,\n options?: { driverInfo?: { name: string; version?: string } },\n ) => MongoClientLike\n}\n\nexport class MongoDBStore implements MongoDriver {\n readonly uri: string\n private clientPromise: Promise<MongoClientLike> | null = null\n\n constructor(uri: string) {\n this.uri = uri\n }\n\n async listDatabases(): Promise<string[]> {\n const c = await this._client()\n const r = await c.db().admin().listDatabases()\n return r.databases.map((d) => d.name)\n }\n\n async listCollections(database: string, kind: EntityKind | null = null): Promise<string[]> {\n const c = await this._client()\n const filter = kind === null ? undefined : { type: kind }\n const cols = await c.db(database).listCollections(filter).toArray()\n return cols.map((col) => col.name as string).sort()\n }\n\n async listCollectionsDetailed(\n database: string,\n filter: { name?: string } = {},\n ): Promise<MongoCollectionSpec[]> {\n const c = await this._client()\n const cols = await c.db(database).listCollections(filter).toArray()\n return cols.map((col) => {\n const spec: MongoCollectionSpec = { name: col.name as string }\n if (col.type !== undefined) spec.type = col.type as string\n if (col.options !== undefined)\n spec.options = col.options as NonNullable<MongoCollectionSpec['options']>\n return spec\n })\n }\n\n async findDocuments<T = Record<string, unknown>>(\n database: string,\n collection: string,\n filter: Record<string, unknown> = {},\n options: MongoFindOptions = {},\n ): Promise<T[]> {\n const c = await this._client()\n let cursor = c\n .db(database)\n .collection(collection)\n .find(filter, {\n ...(options.projection !== undefined ? { projection: options.projection } : {}),\n }) as MongoCursorLike\n if (options.sort !== undefined) cursor = cursor.sort(options.sort)\n if (options.skip !== undefined) cursor = cursor.skip(options.skip)\n if (options.limit !== undefined) cursor = cursor.limit(options.limit)\n return (await cursor.toArray()) as T[]\n }\n\n async *iterDocuments<T = Record<string, unknown>>(\n database: string,\n collection: string,\n options: MongoIterOptions = {},\n ): AsyncIterableIterator<T> {\n const c = await this._client()\n const filter = options.filter ?? {}\n let cursor = c\n .db(database)\n .collection(collection)\n .find(filter, {\n ...(options.projection !== undefined ? { projection: options.projection } : {}),\n }) as MongoCursorLike\n if (options.sort !== undefined) cursor = cursor.sort(options.sort)\n if (options.batchSize !== undefined) cursor = cursor.batchSize(options.batchSize)\n if (cursor[Symbol.asyncIterator] === undefined) {\n const all = (await cursor.toArray()) as T[]\n for (const doc of all) yield doc\n return\n }\n for await (const doc of cursor as unknown as AsyncIterableIterator<T>) {\n yield doc\n }\n }\n\n async *iterInserts<T = Record<string, unknown>>(\n database: string,\n collection: string,\n ): AsyncIterableIterator<T> {\n const c = await this._client()\n const stream = c\n .db(database)\n .collection(collection)\n .watch([{ $match: { operationType: 'insert' } }])\n try {\n for await (const change of stream as AsyncIterableIterator<Record<string, unknown>>) {\n const doc = change.fullDocument\n if (doc !== undefined && doc !== null) yield doc as T\n }\n } finally {\n await stream.close()\n }\n }\n\n async countDocuments(\n database: string,\n collection: string,\n filter: Record<string, unknown> = {},\n ): Promise<number> {\n const c = await this._client()\n return c.db(database).collection(collection).countDocuments(filter)\n }\n\n async listIndexes(database: string, collection: string): Promise<Record<string, unknown>[]> {\n const c = await this._client()\n return c.db(database).collection(collection).listIndexes().toArray()\n }\n\n async getIndexStats(\n database: string,\n collection: string,\n ): Promise<Record<string, MongoIndexAccess>> {\n const c = await this._client()\n const docs = await c\n .db(database)\n .collection(collection)\n .aggregate([{ $indexStats: {} }])\n .toArray()\n const out: Record<string, MongoIndexAccess> = {}\n for (const d of docs) {\n const name = d.name as string | undefined\n if (name !== undefined) {\n out[name] = (d.accesses as MongoIndexAccess | undefined) ?? {}\n }\n }\n return out\n }\n\n async close(): Promise<void> {\n if (this.clientPromise === null) return\n const c = await this.clientPromise\n this.clientPromise = null\n await c.close()\n }\n\n private async _client(): Promise<MongoClientLike> {\n this.clientPromise ??= this._connect()\n return this.clientPromise\n }\n\n protected async _connect(): Promise<MongoClientLike> {\n const mod = await loadOptionalPeer(() => import('mongodb') as unknown as Promise<MongoModule>, {\n feature: 'MongoDBResource',\n packageName: 'mongodb',\n })\n const c = new mod.MongoClient(this.uri, { driverInfo: DRIVER_INFO })\n await c.connect()\n return c\n }\n}\n","{\n \"name\": \"@struktoai/mirage-node\",\n \"version\": \"0.0.3\",\n \"description\": \"A Unified Virtual Filesystem For AI Agents\",\n \"keywords\": [\n \"bash\",\n \"fuse\",\n \"typescript\",\n \"vfs\",\n \"ai-agents\",\n \"agent-sandbox\",\n \"langchain\",\n \"virtual-filesystem\",\n \"llm-agents\",\n \"agent-tools\",\n \"claude-code\",\n \"openai-agents\"\n ],\n \"homepage\": \"https://github.com/strukto-ai/mirage#readme\",\n \"bugs\": {\n \"url\": \"https://github.com/strukto-ai/mirage/issues\"\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/strukto-ai/mirage.git\",\n \"directory\": \"typescript/packages/node\"\n },\n \"license\": \"Apache-2.0\",\n \"author\": \"Zecheng Zhang <zecheng@strukto.ai>\",\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"type\": \"module\",\n \"main\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.js\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"test\": \"vitest run\",\n \"typecheck\": \"tsc --noEmit\"\n },\n \"dependencies\": {\n \"@napi-rs/lzma\": \"^1.4.5\",\n \"@struktoai/mirage-core\": \"workspace:*\",\n \"compressjs\": \"^1.0.3\",\n \"fs-monkey\": \"^1.1.0\",\n \"tree-sitter-bash\": \"^0.25.1\",\n \"web-tree-sitter\": \"^0.26.8\"\n },\n \"peerDependencies\": {\n \"@lancedb/lancedb\": \"^0.30.0\",\n \"@zkochan/fuse-native\": \"^0.1.0\",\n \"imapflow\": \"^1.0.0\",\n \"mailparser\": \"^3.6.0\",\n \"mongodb\": \"^6.10.0\",\n \"nodemailer\": \"^9.0.1\",\n \"opendal\": \"^0.49.4\",\n \"pg\": \"^8.13.0\",\n \"redis\": \"^5.0.0\",\n \"ssh2\": \"^1.16.0\"\n },\n \"peerDependenciesMeta\": {\n \"@lancedb/lancedb\": {\n \"optional\": true\n },\n \"@zkochan/fuse-native\": {\n \"optional\": true\n },\n \"imapflow\": {\n \"optional\": true\n },\n \"mailparser\": {\n \"optional\": true\n },\n \"mongodb\": {\n \"optional\": true\n },\n \"nodemailer\": {\n \"optional\": true\n },\n \"opendal\": {\n \"optional\": true\n },\n \"pg\": {\n \"optional\": true\n },\n \"redis\": {\n \"optional\": true\n },\n \"ssh2\": {\n \"optional\": true\n }\n },\n \"devDependencies\": {\n \"@aws-sdk/client-s3\": \"^3.0.0\",\n \"@lancedb/lancedb\": \"^0.30.0\",\n \"@types/mailparser\": \"^3.4.6\",\n \"@types/nodemailer\": \"^8.0.0\",\n \"@types/pg\": \"^8.11.0\",\n \"@types/ssh2\": \"^1.15.0\",\n \"@zkochan/fuse-native\": \"^0.1.0\",\n \"imapflow\": \"^1.3.2\",\n \"mailparser\": \"^3.9.8\",\n \"mongodb\": \"^6.10.0\",\n \"nodemailer\": \"^9.0.1\",\n \"opendal\": \"^0.49.4\",\n \"pg\": \"^8.13.0\",\n \"redis\": \"^5.0.0\",\n \"ssh2\": \"^1.16.0\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^6.0.0\",\n \"vitest\": \"^3.2.6\"\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 pkg from '../package.json'\n\nexport const VERSION: string = pkg.version\n"],"mappings":"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","names":[]}
@@ -60,7 +60,7 @@ var PostgresStore = class {
60
60
  // src/resource/postgres/postgres.ts
61
61
  var PostgresResource = class extends BaseResource {
62
62
  kind = ResourceName.POSTGRES;
63
- isRemote = true;
63
+ cachesReads = false;
64
64
  indexTtl = 0;
65
65
  prompt;
66
66
  config;
@@ -113,4 +113,4 @@ export {
113
113
  PostgresStore,
114
114
  PostgresResource
115
115
  };
116
- //# sourceMappingURL=chunk-NHS7WLEQ.js.map
116
+ //# sourceMappingURL=chunk-GS5AUKUO.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/resource/postgres/postgres.ts","../src/resource/postgres/store.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 PathSpec,\n POSTGRES_COMMANDS,\n POSTGRES_OPS,\n POSTGRES_PROMPT,\n PostgresAccessor,\n type PostgresConfig,\n type PostgresConfigResolved,\n postgresRead,\n postgresReaddir,\n postgresStat,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n resolvePostgresConfig,\n resolvePostgresGlob,\n} from '@struktoai/mirage-core'\nimport { PostgresStore } from './store.ts'\n\nexport interface PostgresResourceOptions {\n config: PostgresConfig\n prefix?: string\n}\n\nexport class PostgresResource extends BaseResource implements Resource {\n readonly kind: string = ResourceName.POSTGRES\n readonly cachesReads: boolean = false\n readonly indexTtl: number = 0\n readonly prompt: string\n readonly config: PostgresConfigResolved\n readonly store: PostgresStore\n readonly accessor: PostgresAccessor\n\n constructor(options: PostgresResourceOptions | PostgresConfig) {\n super()\n const { config, prefix } =\n 'config' in options ? options : { config: options, prefix: undefined }\n this.config = resolvePostgresConfig(config)\n this.store = new PostgresStore(this.config)\n this.accessor = new PostgresAccessor(this.store, this.config)\n this.prompt = POSTGRES_PROMPT.replace('{prefix}', prefix ?? '')\n }\n\n open(): Promise<void> {\n return Promise.resolve()\n }\n\n async close(): Promise<void> {\n await this.store.close()\n }\n\n ops(): readonly RegisteredOp[] {\n return POSTGRES_OPS\n }\n\n commands(): readonly RegisteredCommand[] {\n return POSTGRES_COMMANDS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return postgresRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return postgresReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return postgresStat(this.accessor, p, this.index)\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 resolvePostgresGlob(this.accessor, effective, this.index)\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 { loadOptionalPeer, type PgDriver, type PgQueryResult } from '@struktoai/mirage-core'\nimport type { PostgresConfigResolved } from '@struktoai/mirage-core'\n\ninterface PgPoolLike {\n query: (\n sql: string,\n params?: readonly unknown[],\n ) => Promise<{ rows: unknown[]; rowCount: number | null }>\n end: () => Promise<void>\n}\n\ninterface PgModule {\n Pool: new (options: Record<string, unknown>) => PgPoolLike\n}\n\nexport class PostgresStore implements PgDriver {\n readonly config: PostgresConfigResolved\n private poolPromise: Promise<PgPoolLike> | null = null\n\n constructor(config: PostgresConfigResolved) {\n this.config = config\n }\n\n async query<R = Record<string, unknown>>(\n sql: string,\n params?: readonly unknown[],\n ): Promise<PgQueryResult<R>> {\n const pool = await this._pool()\n const result = await pool.query(sql, params)\n return { rows: result.rows as R[], rowCount: result.rowCount ?? 0 }\n }\n\n async databaseName(): Promise<string> {\n const result = await this.query<{ db: string }>('SELECT current_database() AS db')\n return result.rows[0]?.db ?? ''\n }\n\n async close(): Promise<void> {\n if (this.poolPromise === null) return\n const pool = await this.poolPromise\n this.poolPromise = null\n await pool.end()\n }\n\n private async _pool(): Promise<PgPoolLike> {\n this.poolPromise ??= this._connect()\n return this.poolPromise\n }\n\n protected async _connect(): Promise<PgPoolLike> {\n const mod = await loadOptionalPeer(\n () => import('pg') as unknown as Promise<{ default?: PgModule } & Partial<PgModule>>,\n { feature: 'PostgresResource', packageName: 'pg' },\n )\n const Pool = mod.default?.Pool ?? mod.Pool\n if (Pool === undefined) {\n throw new Error('postgres: pg package missing Pool export')\n }\n return new Pool({\n connectionString: this.config.dsn,\n options: '-c default_transaction_read_only=on',\n })\n }\n}\n"],"mappings":"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","names":[]}
@@ -4,7 +4,7 @@ import {
4
4
  } from "./chunk-QGRDPSAH.js";
5
5
  import {
6
6
  S3Resource
7
- } from "./chunk-MHCMHKM6.js";
7
+ } from "./chunk-TA3WMOMU.js";
8
8
 
9
9
  // src/resource/supabase/supabase.ts
10
10
  import {
@@ -53,4 +53,4 @@ export {
53
53
  SUPABASE_PROMPT,
54
54
  SupabaseResource
55
55
  };
56
- //# sourceMappingURL=chunk-BYTU2YC3.js.map
56
+ //# sourceMappingURL=chunk-HGCRXJGP.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  HfBucketsAccessor,
3
3
  HfResource
4
- } from "./chunk-WSGEIVY3.js";
4
+ } from "./chunk-TURD42QO.js";
5
5
  import {
6
6
  assertHfRepoId,
7
7
  redactHfBucketsConfig
@@ -47,4 +47,4 @@ export {
47
47
  HF_BUCKETS_PROMPT,
48
48
  HfBucketsResource
49
49
  };
50
- //# sourceMappingURL=chunk-G5BZE7UA.js.map
50
+ //# sourceMappingURL=chunk-HJJMP6IX.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  S3Resource
3
- } from "./chunk-MHCMHKM6.js";
3
+ } from "./chunk-TA3WMOMU.js";
4
4
  import {
5
5
  gcsToS3Config,
6
6
  redactGcsConfig
@@ -54,4 +54,4 @@ export {
54
54
  GCS_PROMPT,
55
55
  GCSResource
56
56
  };
57
- //# sourceMappingURL=chunk-IQVNVTOP.js.map
57
+ //# sourceMappingURL=chunk-I5THIMPP.js.map