@struktoai/mirage-browser 0.0.3 → 0.0.5-alpha.1
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.
- package/README.md +2 -1
- package/dist/aliyun-DR6KT3H6.js +8 -0
- package/dist/backblaze-XCLZXTES.js +8 -0
- package/dist/box-XBCSU3AA.js +8 -0
- package/dist/ceph-F5S2NMTO.js +8 -0
- package/dist/{chunk-HYUESAQS.js → chunk-2J35WXX5.js} +7 -3
- package/dist/chunk-2J35WXX5.js.map +1 -0
- package/dist/{chunk-CGZGX2GO.js → chunk-2WNXK742.js} +10 -12
- package/dist/chunk-2WNXK742.js.map +1 -0
- package/dist/{chunk-X2CCEHOR.js → chunk-2WSKXBSV.js} +22 -12
- package/dist/chunk-2WSKXBSV.js.map +1 -0
- package/dist/{chunk-SOF74I3T.js → chunk-37WKCB2E.js} +7 -5
- package/dist/chunk-37WKCB2E.js.map +1 -0
- package/dist/{chunk-ROHDW6KT.js → chunk-3IYCVC7W.js} +11 -5
- package/dist/chunk-3IYCVC7W.js.map +1 -0
- package/dist/{chunk-LSURHXZH.js → chunk-46HNNKFR.js} +11 -5
- package/dist/chunk-46HNNKFR.js.map +1 -0
- package/dist/chunk-4IF4TGAI.js +11 -0
- package/dist/chunk-4IF4TGAI.js.map +1 -0
- package/dist/{chunk-DA5EW34P.js → chunk-5OZJMTYW.js} +17 -13
- package/dist/chunk-5OZJMTYW.js.map +1 -0
- package/dist/{chunk-PV53AX35.js → chunk-5UM6EBVW.js} +18 -12
- package/dist/chunk-5UM6EBVW.js.map +1 -0
- package/dist/{chunk-NWZNQ3RC.js → chunk-6HRSCX2U.js} +11 -5
- package/dist/chunk-6HRSCX2U.js.map +1 -0
- package/dist/{chunk-F5QWZ7GM.js → chunk-7HWQAYXR.js} +11 -5
- package/dist/chunk-7HWQAYXR.js.map +1 -0
- package/dist/{chunk-OSMEXGRN.js → chunk-AUZNQ7EI.js} +13 -20
- package/dist/chunk-AUZNQ7EI.js.map +1 -0
- package/dist/{chunk-RQ273N5K.js → chunk-BGA2F226.js} +26 -21
- package/dist/chunk-BGA2F226.js.map +1 -0
- package/dist/{chunk-HXQ7HDA6.js → chunk-BV372CUO.js} +18 -20
- package/dist/chunk-BV372CUO.js.map +1 -0
- package/dist/{chunk-57QQAM7V.js → chunk-C4THTILY.js} +11 -5
- package/dist/chunk-C4THTILY.js.map +1 -0
- package/dist/{chunk-DVXOMWD4.js → chunk-D4MEOKNQ.js} +11 -5
- package/dist/chunk-D4MEOKNQ.js.map +1 -0
- package/dist/chunk-D4RAMWYH.js +88 -0
- package/dist/chunk-D4RAMWYH.js.map +1 -0
- package/dist/{chunk-NLBT6TBM.js → chunk-EHIT6WCY.js} +11 -5
- package/dist/chunk-EHIT6WCY.js.map +1 -0
- package/dist/{chunk-CNDGXKMU.js → chunk-EN6TZYT2.js} +11 -5
- package/dist/chunk-EN6TZYT2.js.map +1 -0
- package/dist/{chunk-QLLRQNOJ.js → chunk-FTDVV7EQ.js} +11 -5
- package/dist/chunk-FTDVV7EQ.js.map +1 -0
- package/dist/{chunk-G26SGOFR.js → chunk-G67Q2Z6I.js} +11 -5
- package/dist/chunk-G67Q2Z6I.js.map +1 -0
- package/dist/{chunk-XBOJZZRT.js → chunk-GM2QMJAY.js} +13 -20
- package/dist/chunk-GM2QMJAY.js.map +1 -0
- package/dist/{chunk-XYKNXGPR.js → chunk-HRWLHJX2.js} +14 -20
- package/dist/chunk-HRWLHJX2.js.map +1 -0
- package/dist/{chunk-DHZMC42C.js → chunk-INEXV2PN.js} +11 -5
- package/dist/chunk-INEXV2PN.js.map +1 -0
- package/dist/chunk-IZMKMD3O.js +11 -0
- package/dist/chunk-IZMKMD3O.js.map +1 -0
- package/dist/{chunk-4NLXLDMV.js → chunk-JUVMJ5GI.js} +13 -20
- package/dist/chunk-JUVMJ5GI.js.map +1 -0
- package/dist/{chunk-BIIG7ZAQ.js → chunk-KL2VFYUV.js} +7 -5
- package/dist/chunk-KL2VFYUV.js.map +1 -0
- package/dist/{chunk-J54OBIJA.js → chunk-L64GRKOD.js} +12 -3
- package/dist/chunk-L64GRKOD.js.map +1 -0
- package/dist/{chunk-54NTYJEO.js → chunk-LPDLPRPS.js} +1 -3
- package/dist/{chunk-54NTYJEO.js.map → chunk-LPDLPRPS.js.map} +1 -1
- package/dist/chunk-M2UF2JHJ.js +11 -0
- package/dist/chunk-M2UF2JHJ.js.map +1 -0
- package/dist/{chunk-KNJKYCTA.js → chunk-NVHPJ5CV.js} +19 -12
- package/dist/chunk-NVHPJ5CV.js.map +1 -0
- package/dist/{chunk-O5ONB7QT.js → chunk-OSTDTTWI.js} +14 -5
- package/dist/chunk-OSTDTTWI.js.map +1 -0
- package/dist/{chunk-J7PLA5S3.js → chunk-PQCRGTSA.js} +11 -5
- package/dist/chunk-PQCRGTSA.js.map +1 -0
- package/dist/{chunk-BJHHL4UT.js → chunk-QE7QNA45.js} +14 -11
- package/dist/chunk-QE7QNA45.js.map +1 -0
- package/dist/{chunk-K2S42IR4.js → chunk-QG2NUNCY.js} +11 -5
- package/dist/chunk-QG2NUNCY.js.map +1 -0
- package/dist/chunk-UFHBDBZD.js +1212 -0
- package/dist/chunk-UFHBDBZD.js.map +1 -0
- package/dist/{chunk-KTE5PB2D.js → chunk-UY22T4AC.js} +22 -14
- package/dist/chunk-UY22T4AC.js.map +1 -0
- package/dist/chunk-XJBC3OYX.js +11 -0
- package/dist/chunk-XJBC3OYX.js.map +1 -0
- package/dist/{chunk-6YP3B7UK.js → chunk-Y6DYUK6J.js} +11 -5
- package/dist/chunk-Y6DYUK6J.js.map +1 -0
- package/dist/{chunk-DFHFILVF.js → chunk-YOCTIHQZ.js} +14 -12
- package/dist/chunk-YOCTIHQZ.js.map +1 -0
- package/dist/{chunk-TQ6VRUEI.js → chunk-ZDJPUXYH.js} +14 -12
- package/dist/chunk-ZDJPUXYH.js.map +1 -0
- package/dist/{chunk-2AEAISO2.js → chunk-ZKCOSE3R.js} +18 -18
- package/dist/chunk-ZKCOSE3R.js.map +1 -0
- package/dist/chunk-ZTHVEXIV.js +11 -0
- package/dist/chunk-ZTHVEXIV.js.map +1 -0
- package/dist/{config-ET26F632.js → config-2Y6LZKLV.js} +2 -4
- package/dist/config-4GSOMUMF.js +9 -0
- package/dist/config-5YBUWFUP.js +9 -0
- package/dist/config-DE5OZ4I7.js +9 -0
- package/dist/config-ELDOFRJW.js +9 -0
- package/dist/config-FPM3LAW7.js +9 -0
- package/dist/config-JY557MA6.js +9 -0
- package/dist/{config-NV5WXP64.js → config-UU27ALAA.js} +2 -4
- package/dist/config-WRACCRPN.js +9 -0
- package/dist/digitalocean-QDHTRS2W.js +8 -0
- package/dist/discord-ERUI7OAQ.js +7 -0
- package/dist/dropbox-3U6D4HLE.js +8 -0
- package/dist/gcal-MTBSDG34.js +8 -0
- package/dist/gcs-KNGRBBET.js +8 -0
- package/dist/gdocs-RUIOIRKP.js +8 -0
- package/dist/gdrive-5JB7ZKEP.js +8 -0
- package/dist/github-CIXBFBVO.js +7 -0
- package/dist/github_ci-HR6YOYAO.js +8 -0
- package/dist/gmail-JHGWTQU5.js +8 -0
- package/dist/gsheets-N54JO2RS.js +8 -0
- package/dist/gslides-B4VMNLMB.js +8 -0
- package/dist/index.d.ts +292 -348
- package/dist/index.js +171 -110
- package/dist/index.js.map +1 -1
- package/dist/langfuse-HEUJGDOC.js +7 -0
- package/dist/linear-J4QQ3CA6.js +7 -0
- package/dist/minio-BXWHJ6K5.js +8 -0
- package/dist/mongodb-YZP643ZU.js +7 -0
- package/dist/notion-I5S5SRLO.js +7 -0
- package/dist/oci-XOPKH4AE.js +8 -0
- package/dist/opfs-36QO72Y5.js +7 -0
- package/dist/postgres-HPOMN2AR.js +7 -0
- package/dist/qingstor-JKAHLK62.js +8 -0
- package/dist/r2-L3QXQ76M.js +8 -0
- package/dist/{s3-GI7SDKGR.js → s3-LRZJPGHK.js} +2 -2
- package/dist/scaleway-CGNDYNKS.js +8 -0
- package/dist/seaweedfs-BSQWCBIR.js +8 -0
- package/dist/slack-62ECSENR.js +7 -0
- package/dist/supabase-J66NXWAF.js +8 -0
- package/dist/tencent-AC667LV3.js +8 -0
- package/dist/trello-SUPG6VDF.js +7 -0
- package/dist/trello-SUPG6VDF.js.map +1 -0
- package/dist/wasabi-5KKPW6LH.js +8 -0
- package/dist/wasabi-5KKPW6LH.js.map +1 -0
- package/package.json +2 -3
- package/dist/aliyun-GMNRT7BJ.js +0 -8
- package/dist/backblaze-O6CLR73B.js +0 -8
- package/dist/box-GXWDWZRN.js +0 -8
- package/dist/ceph-SM7MXDAY.js +0 -8
- package/dist/chunk-2AEAISO2.js.map +0 -1
- package/dist/chunk-2H4KUUFP.js +0 -26
- package/dist/chunk-2H4KUUFP.js.map +0 -1
- package/dist/chunk-4NLXLDMV.js.map +0 -1
- package/dist/chunk-57QQAM7V.js.map +0 -1
- package/dist/chunk-6YP3B7UK.js.map +0 -1
- package/dist/chunk-BIIG7ZAQ.js.map +0 -1
- package/dist/chunk-BJHHL4UT.js.map +0 -1
- package/dist/chunk-CGZGX2GO.js.map +0 -1
- package/dist/chunk-CNDGXKMU.js.map +0 -1
- package/dist/chunk-DA5EW34P.js.map +0 -1
- package/dist/chunk-DFHFILVF.js.map +0 -1
- package/dist/chunk-DHZMC42C.js.map +0 -1
- package/dist/chunk-DVXOMWD4.js.map +0 -1
- package/dist/chunk-F5QWZ7GM.js.map +0 -1
- package/dist/chunk-G26SGOFR.js.map +0 -1
- package/dist/chunk-HXQ7HDA6.js.map +0 -1
- package/dist/chunk-HYUESAQS.js.map +0 -1
- package/dist/chunk-J54OBIJA.js.map +0 -1
- package/dist/chunk-J7PLA5S3.js.map +0 -1
- package/dist/chunk-JSAQMYPK.js +0 -26
- package/dist/chunk-JSAQMYPK.js.map +0 -1
- package/dist/chunk-K2S42IR4.js.map +0 -1
- package/dist/chunk-KNJKYCTA.js.map +0 -1
- package/dist/chunk-KTE5PB2D.js.map +0 -1
- package/dist/chunk-KV2DM5H6.js +0 -2116
- package/dist/chunk-KV2DM5H6.js.map +0 -1
- package/dist/chunk-LSURHXZH.js.map +0 -1
- package/dist/chunk-NLBT6TBM.js.map +0 -1
- package/dist/chunk-NMZBJOFW.js +0 -26
- package/dist/chunk-NMZBJOFW.js.map +0 -1
- package/dist/chunk-NWZNQ3RC.js.map +0 -1
- package/dist/chunk-O5ONB7QT.js.map +0 -1
- package/dist/chunk-OSMEXGRN.js.map +0 -1
- package/dist/chunk-PV53AX35.js.map +0 -1
- package/dist/chunk-QLLRQNOJ.js.map +0 -1
- package/dist/chunk-ROHDW6KT.js.map +0 -1
- package/dist/chunk-RQ273N5K.js.map +0 -1
- package/dist/chunk-SOF74I3T.js.map +0 -1
- package/dist/chunk-TQ6VRUEI.js.map +0 -1
- package/dist/chunk-X2CCEHOR.js.map +0 -1
- package/dist/chunk-XBOJZZRT.js.map +0 -1
- package/dist/chunk-XYKNXGPR.js.map +0 -1
- package/dist/chunk-YGRKFONX.js +0 -26
- package/dist/chunk-YGRKFONX.js.map +0 -1
- package/dist/config-7IZCGWKX.js +0 -11
- package/dist/config-AT74FARJ.js +0 -11
- package/dist/config-C2AYHACT.js +0 -11
- package/dist/config-GHJOYNM6.js +0 -11
- package/dist/config-L55UXIF4.js +0 -11
- package/dist/config-V7BLK5WP.js +0 -11
- package/dist/digitalocean-XFH2V2A3.js +0 -8
- package/dist/discord-OQMSHM3L.js +0 -7
- package/dist/dropbox-IAOKM7G5.js +0 -8
- package/dist/gcs-JYZB6CVP.js +0 -8
- package/dist/gdocs-PHKQGLZL.js +0 -8
- package/dist/gdrive-4JQLGOOP.js +0 -8
- package/dist/github-DU7Z4RSU.js +0 -7
- package/dist/github_ci-XSAJDNXC.js +0 -8
- package/dist/gmail-DEQP2M7T.js +0 -8
- package/dist/gsheets-KCIHSMOK.js +0 -8
- package/dist/gslides-2KBUKKM5.js +0 -8
- package/dist/langfuse-FNCMKFSL.js +0 -7
- package/dist/linear-XTFO4WKD.js +0 -7
- package/dist/minio-NGPBAJY3.js +0 -8
- package/dist/mongodb-PGOX6QSY.js +0 -7
- package/dist/notion-HYYNQ7KI.js +0 -7
- package/dist/oci-EGDBSMLM.js +0 -8
- package/dist/opfs-5WGXB5OG.js +0 -7
- package/dist/postgres-5HYED4AC.js +0 -7
- package/dist/qingstor-2T4Y6MEG.js +0 -8
- package/dist/r2-3B45S2KV.js +0 -8
- package/dist/scaleway-ICCXVAY6.js +0 -8
- package/dist/seaweedfs-MF77EC33.js +0 -8
- package/dist/slack-6LGQERIU.js +0 -7
- package/dist/supabase-XTOVMHXU.js +0 -8
- package/dist/tencent-FXFKSOTN.js +0 -8
- package/dist/trello-DZK4NEVY.js +0 -7
- package/dist/wasabi-KVE2B6RB.js +0 -8
- /package/dist/{aliyun-GMNRT7BJ.js.map → aliyun-DR6KT3H6.js.map} +0 -0
- /package/dist/{backblaze-O6CLR73B.js.map → backblaze-XCLZXTES.js.map} +0 -0
- /package/dist/{box-GXWDWZRN.js.map → box-XBCSU3AA.js.map} +0 -0
- /package/dist/{ceph-SM7MXDAY.js.map → ceph-F5S2NMTO.js.map} +0 -0
- /package/dist/{config-7IZCGWKX.js.map → config-2Y6LZKLV.js.map} +0 -0
- /package/dist/{config-AT74FARJ.js.map → config-4GSOMUMF.js.map} +0 -0
- /package/dist/{config-C2AYHACT.js.map → config-5YBUWFUP.js.map} +0 -0
- /package/dist/{config-ET26F632.js.map → config-DE5OZ4I7.js.map} +0 -0
- /package/dist/{config-GHJOYNM6.js.map → config-ELDOFRJW.js.map} +0 -0
- /package/dist/{config-L55UXIF4.js.map → config-FPM3LAW7.js.map} +0 -0
- /package/dist/{config-NV5WXP64.js.map → config-JY557MA6.js.map} +0 -0
- /package/dist/{config-V7BLK5WP.js.map → config-UU27ALAA.js.map} +0 -0
- /package/dist/{digitalocean-XFH2V2A3.js.map → config-WRACCRPN.js.map} +0 -0
- /package/dist/{discord-OQMSHM3L.js.map → digitalocean-QDHTRS2W.js.map} +0 -0
- /package/dist/{dropbox-IAOKM7G5.js.map → discord-ERUI7OAQ.js.map} +0 -0
- /package/dist/{gcs-JYZB6CVP.js.map → dropbox-3U6D4HLE.js.map} +0 -0
- /package/dist/{gdocs-PHKQGLZL.js.map → gcal-MTBSDG34.js.map} +0 -0
- /package/dist/{gdrive-4JQLGOOP.js.map → gcs-KNGRBBET.js.map} +0 -0
- /package/dist/{github-DU7Z4RSU.js.map → gdocs-RUIOIRKP.js.map} +0 -0
- /package/dist/{github_ci-XSAJDNXC.js.map → gdrive-5JB7ZKEP.js.map} +0 -0
- /package/dist/{gmail-DEQP2M7T.js.map → github-CIXBFBVO.js.map} +0 -0
- /package/dist/{gsheets-KCIHSMOK.js.map → github_ci-HR6YOYAO.js.map} +0 -0
- /package/dist/{gslides-2KBUKKM5.js.map → gmail-JHGWTQU5.js.map} +0 -0
- /package/dist/{langfuse-FNCMKFSL.js.map → gsheets-N54JO2RS.js.map} +0 -0
- /package/dist/{linear-XTFO4WKD.js.map → gslides-B4VMNLMB.js.map} +0 -0
- /package/dist/{minio-NGPBAJY3.js.map → langfuse-HEUJGDOC.js.map} +0 -0
- /package/dist/{mongodb-PGOX6QSY.js.map → linear-J4QQ3CA6.js.map} +0 -0
- /package/dist/{notion-HYYNQ7KI.js.map → minio-BXWHJ6K5.js.map} +0 -0
- /package/dist/{oci-EGDBSMLM.js.map → mongodb-YZP643ZU.js.map} +0 -0
- /package/dist/{opfs-5WGXB5OG.js.map → notion-I5S5SRLO.js.map} +0 -0
- /package/dist/{postgres-5HYED4AC.js.map → oci-XOPKH4AE.js.map} +0 -0
- /package/dist/{qingstor-2T4Y6MEG.js.map → opfs-36QO72Y5.js.map} +0 -0
- /package/dist/{r2-3B45S2KV.js.map → postgres-HPOMN2AR.js.map} +0 -0
- /package/dist/{s3-GI7SDKGR.js.map → qingstor-JKAHLK62.js.map} +0 -0
- /package/dist/{scaleway-ICCXVAY6.js.map → r2-L3QXQ76M.js.map} +0 -0
- /package/dist/{seaweedfs-MF77EC33.js.map → s3-LRZJPGHK.js.map} +0 -0
- /package/dist/{slack-6LGQERIU.js.map → scaleway-CGNDYNKS.js.map} +0 -0
- /package/dist/{supabase-XTOVMHXU.js.map → seaweedfs-BSQWCBIR.js.map} +0 -0
- /package/dist/{tencent-FXFKSOTN.js.map → slack-62ECSENR.js.map} +0 -0
- /package/dist/{trello-DZK4NEVY.js.map → supabase-J66NXWAF.js.map} +0 -0
- /package/dist/{wasabi-KVE2B6RB.js.map → tencent-AC667LV3.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
S3Resource
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BGA2F226.js";
|
|
4
4
|
|
|
5
5
|
// src/resource/wasabi/wasabi.ts
|
|
6
6
|
import {
|
|
@@ -10,7 +10,11 @@ import {
|
|
|
10
10
|
} from "@struktoai/mirage-core";
|
|
11
11
|
|
|
12
12
|
// src/resource/wasabi/config.ts
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
redactConfigWithSchema,
|
|
15
|
+
secretSchema,
|
|
16
|
+
z
|
|
17
|
+
} from "@struktoai/mirage-core";
|
|
14
18
|
var WasabiConfigSchema = z.object({
|
|
15
19
|
bucket: z.string(),
|
|
16
20
|
presignedUrlProvider: secretSchema(
|
|
@@ -18,7 +22,8 @@ var WasabiConfigSchema = z.object({
|
|
|
18
22
|
),
|
|
19
23
|
region: z.string().optional(),
|
|
20
24
|
endpoint: z.string().optional(),
|
|
21
|
-
defaultContentType: z.string().optional()
|
|
25
|
+
defaultContentType: z.string().optional(),
|
|
26
|
+
keyPrefix: z.string().optional()
|
|
22
27
|
});
|
|
23
28
|
function resolvedWasabiEndpoint(config) {
|
|
24
29
|
if (config.endpoint !== void 0 && config.endpoint !== "") return config.endpoint;
|
|
@@ -31,7 +36,8 @@ function wasabiToS3Config(config) {
|
|
|
31
36
|
presignedUrlProvider: config.presignedUrlProvider,
|
|
32
37
|
...config.region !== void 0 ? { region: config.region } : {},
|
|
33
38
|
endpoint: resolvedWasabiEndpoint(config),
|
|
34
|
-
...config.defaultContentType !== void 0 ? { defaultContentType: config.defaultContentType } : {}
|
|
39
|
+
...config.defaultContentType !== void 0 ? { defaultContentType: config.defaultContentType } : {},
|
|
40
|
+
...config.keyPrefix !== void 0 ? { keyPrefix: config.keyPrefix } : {}
|
|
35
41
|
};
|
|
36
42
|
}
|
|
37
43
|
function redactWasabiConfig(config) {
|
|
@@ -82,4 +88,4 @@ export {
|
|
|
82
88
|
WASABI_BROWSER_PROMPT,
|
|
83
89
|
WasabiResource
|
|
84
90
|
};
|
|
85
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
//# sourceMappingURL=chunk-INEXV2PN.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/wasabi/wasabi.ts","../src/resource/wasabi/config.ts","../src/resource/wasabi/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 {\n remapCommandsResource,\n remapOpsResource,\n ResourceName,\n type RegisteredCommand,\n type RegisteredOp,\n} from '@struktoai/mirage-core'\nimport { S3Resource } from '../s3/s3.ts'\nimport {\n redactWasabiConfig,\n wasabiToS3Config,\n type WasabiConfig,\n type WasabiConfigRedacted,\n} from './config.ts'\nimport { WASABI_BROWSER_PROMPT } from './prompt.ts'\n\nexport interface WasabiResourceState {\n type: string\n config: WasabiConfigRedacted\n}\n\nexport class WasabiResource extends S3Resource {\n override readonly kind: string = ResourceName.WASABI\n override readonly prompt: string = WASABI_BROWSER_PROMPT\n readonly wasabiConfig: WasabiConfig\n private readonly wasabiOps: readonly RegisteredOp[]\n private readonly wasabiCommands: readonly RegisteredCommand[]\n\n constructor(config: WasabiConfig) {\n super(wasabiToS3Config(config))\n this.wasabiConfig = config\n this.wasabiOps = remapOpsResource(super.ops(), ResourceName.WASABI)\n this.wasabiCommands = remapCommandsResource(super.commands(), ResourceName.WASABI)\n }\n\n override ops(): readonly RegisteredOp[] {\n return this.wasabiOps\n }\n\n override commands(): readonly RegisteredCommand[] {\n return this.wasabiCommands\n }\n\n override getState(): Promise<WasabiResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactWasabiConfig(this.wasabiConfig),\n })\n }\n\n override loadState(_state: WasabiResourceState): Promise<void> {\n return Promise.resolve()\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 redactConfigWithSchema,\n type ConfigOf,\n type RedactedConfig,\n secretSchema,\n z,\n} from '@struktoai/mirage-core'\nimport type { S3BrowserPresignedUrlProvider, S3Config } from '../s3/config.ts'\n\nconst WasabiConfigSchema = z.object({\n bucket: z.string(),\n presignedUrlProvider: secretSchema(\n z.custom<S3BrowserPresignedUrlProvider>((value) => typeof value === 'function'),\n ),\n region: z.string().optional(),\n endpoint: z.string().optional(),\n defaultContentType: z.string().optional(),\n keyPrefix: z.string().optional(),\n})\n\nexport type WasabiConfig = ConfigOf<typeof WasabiConfigSchema>\n\nexport type WasabiConfigRedacted = RedactedConfig<WasabiConfig, 'presignedUrlProvider'>\n\nexport function resolvedWasabiEndpoint(config: WasabiConfig): string {\n if (config.endpoint !== undefined && config.endpoint !== '') return config.endpoint\n const region = config.region ?? 'us-east-1'\n return region === 'us-east-1' ? 'https://s3.wasabisys.com' : `https://s3.${region}.wasabisys.com`\n}\n\nexport function wasabiToS3Config(config: WasabiConfig): S3Config {\n return {\n bucket: config.bucket,\n presignedUrlProvider: config.presignedUrlProvider,\n ...(config.region !== undefined ? { region: config.region } : {}),\n endpoint: resolvedWasabiEndpoint(config),\n ...(config.defaultContentType !== undefined\n ? { defaultContentType: config.defaultContentType }\n : {}),\n ...(config.keyPrefix !== undefined ? { keyPrefix: config.keyPrefix } : {}),\n }\n}\n\nexport function redactWasabiConfig(config: WasabiConfig): WasabiConfigRedacted {\n return redactConfigWithSchema(WasabiConfigSchema, config) as unknown as WasabiConfigRedacted\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 WASABI_BROWSER_PROMPT = `{prefix}\n Remote Wasabi bucket (S3-compatible) accessed via presigned URLs (browser runtime).\n Supports the full filesystem command set: ls/tree/cat/grep/find/du/cp/mv/rm/etc.\n Listing operations require the presigner to sign LIST/COPY operations in\n addition to GET/PUT/HEAD/DELETE — see S3BrowserPresignedUrlProvider docs.`\n"],"mappings":";;;;;AAcA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;;;ACNP;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAGP,IAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,QAAQ,EAAE,OAAO;AAAA,EACjB,sBAAsB;AAAA,IACpB,EAAE,OAAsC,CAAC,UAAU,OAAO,UAAU,UAAU;AAAA,EAChF;AAAA,EACA,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,oBAAoB,EAAE,OAAO,EAAE,SAAS;AAAA,EACxC,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAMM,SAAS,uBAAuB,QAA8B;AACnE,MAAI,OAAO,aAAa,UAAa,OAAO,aAAa,GAAI,QAAO,OAAO;AAC3E,QAAM,SAAS,OAAO,UAAU;AAChC,SAAO,WAAW,cAAc,6BAA6B,cAAc,MAAM;AACnF;AAEO,SAAS,iBAAiB,QAAgC;AAC/D,SAAO;AAAA,IACL,QAAQ,OAAO;AAAA,IACf,sBAAsB,OAAO;AAAA,IAC7B,GAAI,OAAO,WAAW,SAAY,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,IAC/D,UAAU,uBAAuB,MAAM;AAAA,IACvC,GAAI,OAAO,uBAAuB,SAC9B,EAAE,oBAAoB,OAAO,mBAAmB,IAChD,CAAC;AAAA,IACL,GAAI,OAAO,cAAc,SAAY,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,EAC1E;AACF;AAEO,SAAS,mBAAmB,QAA4C;AAC7E,SAAO,uBAAuB,oBAAoB,MAAM;AAC1D;;;AC7CO,IAAM,wBAAwB;AAAA;AAAA;AAAA;AAAA;;;AFqB9B,IAAM,iBAAN,cAA6B,WAAW;AAAA,EAC3B,OAAe,aAAa;AAAA,EAC5B,SAAiB;AAAA,EAC1B;AAAA,EACQ;AAAA,EACA;AAAA,EAEjB,YAAY,QAAsB;AAChC,UAAM,iBAAiB,MAAM,CAAC;AAC9B,SAAK,eAAe;AACpB,SAAK,YAAY,iBAAiB,MAAM,IAAI,GAAG,aAAa,MAAM;AAClE,SAAK,iBAAiB,sBAAsB,MAAM,SAAS,GAAG,aAAa,MAAM;AAAA,EACnF;AAAA,EAES,MAA+B;AACtC,WAAO,KAAK;AAAA,EACd;AAAA,EAES,WAAyC;AAChD,WAAO,KAAK;AAAA,EACd;AAAA,EAES,WAAyC;AAChD,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,mBAAmB,KAAK,YAAY;AAAA,IAC9C,CAAC;AAAA,EACH;AAAA,EAES,UAAU,QAA4C;AAC7D,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/gdrive/config.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\nexport {\n normalizeGoogleConfig as normalizeGDriveConfig,\n redactGoogleConfig as redactGDriveConfig,\n type GoogleConfig as GDriveConfig,\n type GoogleConfigRedacted as GDriveConfigRedacted,\n} from '@struktoai/mirage-core'\n"],"mappings":";AAcA;AAAA,EAC2B;AAAA,EACH;AAAA,OAGjB;","names":[]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
} from "./chunk-
|
|
2
|
+
redactGoogleConfig
|
|
3
|
+
} from "./chunk-XJBC3OYX.js";
|
|
4
4
|
|
|
5
5
|
// src/resource/gdocs/gdocs.ts
|
|
6
|
+
import { mountKey, mountPrefixOf } from "@struktoai/mirage-core";
|
|
6
7
|
import {
|
|
7
8
|
GDOCS_COMMANDS,
|
|
8
9
|
GDOCS_PROMPT,
|
|
9
|
-
|
|
10
|
+
GDOCS_OPS,
|
|
10
11
|
GDOCS_WRITE_PROMPT,
|
|
11
12
|
GDocsAccessor,
|
|
12
13
|
PathSpec,
|
|
@@ -15,9 +16,10 @@ import {
|
|
|
15
16
|
TokenManager,
|
|
16
17
|
gdocsRead,
|
|
17
18
|
gdocsReaddir,
|
|
18
|
-
|
|
19
|
+
makeResolveGlob,
|
|
19
20
|
gdocsStat
|
|
20
21
|
} from "@struktoai/mirage-core";
|
|
22
|
+
var gdocsResolveGlob = makeResolveGlob(gdocsReaddir);
|
|
21
23
|
var GDocsResource = class {
|
|
22
24
|
kind = ResourceName.GDOCS;
|
|
23
25
|
cachesReads = true;
|
|
@@ -29,12 +31,7 @@ var GDocsResource = class {
|
|
|
29
31
|
index;
|
|
30
32
|
constructor(config) {
|
|
31
33
|
this.config = config;
|
|
32
|
-
const tm = new TokenManager(
|
|
33
|
-
clientId: config.clientId,
|
|
34
|
-
...config.clientSecret !== void 0 ? { clientSecret: config.clientSecret } : {},
|
|
35
|
-
refreshToken: config.refreshToken,
|
|
36
|
-
...config.refreshFn !== void 0 ? { refreshFn: config.refreshFn } : {}
|
|
37
|
-
});
|
|
34
|
+
const tm = new TokenManager(config);
|
|
38
35
|
this.accessor = new GDocsAccessor({ tokenManager: tm });
|
|
39
36
|
this.index = new RAMIndexCacheStore({ ttl: 86400 });
|
|
40
37
|
}
|
|
@@ -48,7 +45,7 @@ var GDocsResource = class {
|
|
|
48
45
|
return GDOCS_COMMANDS;
|
|
49
46
|
}
|
|
50
47
|
ops() {
|
|
51
|
-
return
|
|
48
|
+
return GDOCS_OPS;
|
|
52
49
|
}
|
|
53
50
|
readFile(p) {
|
|
54
51
|
return gdocsRead(this.accessor, p, this.index);
|
|
@@ -59,18 +56,14 @@ var GDocsResource = class {
|
|
|
59
56
|
stat(p) {
|
|
60
57
|
return gdocsStat(this.accessor, p, this.index);
|
|
61
58
|
}
|
|
62
|
-
async fingerprint(p) {
|
|
63
|
-
const lookup = await this.index.get(p.original);
|
|
64
|
-
return lookup.entry?.remoteTime ?? null;
|
|
65
|
-
}
|
|
66
59
|
glob(paths, prefix = "") {
|
|
67
60
|
const effective = prefix !== "" ? paths.map(
|
|
68
|
-
(p) => p.
|
|
69
|
-
|
|
61
|
+
(p) => mountPrefixOf(p.virtual, p.resourcePath) !== "" ? p : new PathSpec({
|
|
62
|
+
virtual: p.virtual,
|
|
70
63
|
directory: p.directory,
|
|
71
64
|
...p.pattern !== null ? { pattern: p.pattern } : {},
|
|
72
65
|
resolved: p.resolved,
|
|
73
|
-
prefix
|
|
66
|
+
resourcePath: mountKey(p.virtual, prefix)
|
|
74
67
|
})
|
|
75
68
|
) : paths;
|
|
76
69
|
return gdocsResolveGlob(this.accessor, effective, this.index);
|
|
@@ -78,7 +71,7 @@ var GDocsResource = class {
|
|
|
78
71
|
getState() {
|
|
79
72
|
return Promise.resolve({
|
|
80
73
|
type: this.kind,
|
|
81
|
-
config:
|
|
74
|
+
config: redactGoogleConfig(this.config)
|
|
82
75
|
});
|
|
83
76
|
}
|
|
84
77
|
loadState(_state) {
|
|
@@ -89,4 +82,4 @@ var GDocsResource = class {
|
|
|
89
82
|
export {
|
|
90
83
|
GDocsResource
|
|
91
84
|
};
|
|
92
|
-
//# sourceMappingURL=chunk-
|
|
85
|
+
//# sourceMappingURL=chunk-JUVMJ5GI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/gdocs/gdocs.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 { mountKey, mountPrefixOf } from '@struktoai/mirage-core'\nimport {\n type FileStat,\n GDOCS_COMMANDS,\n GDOCS_PROMPT,\n GDOCS_OPS,\n GDOCS_WRITE_PROMPT,\n GDocsAccessor,\n type IndexCacheStore,\n PathSpec,\n RAMIndexCacheStore,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n TokenManager,\n gdocsRead,\n gdocsReaddir,\n makeResolveGlob,\n gdocsStat,\n} from '@struktoai/mirage-core'\nimport { redactGDocsConfig, type GDocsConfig, type GDocsConfigRedacted } from './config.ts'\n\nconst gdocsResolveGlob = makeResolveGlob(gdocsReaddir)\n\nexport interface GDocsResourceState {\n type: string\n config: GDocsConfigRedacted\n}\n\nexport class GDocsResource implements Resource {\n readonly kind: string = ResourceName.GDOCS\n readonly cachesReads: boolean = true\n readonly indexTtl: number = 86_400\n readonly prompt: string = GDOCS_PROMPT\n readonly writePrompt: string = GDOCS_WRITE_PROMPT\n readonly config: GDocsConfig\n readonly accessor: GDocsAccessor\n readonly index: IndexCacheStore\n\n constructor(config: GDocsConfig) {\n this.config = config\n const tm = new TokenManager(config)\n this.accessor = new GDocsAccessor({ tokenManager: tm })\n this.index = new RAMIndexCacheStore({ ttl: 86_400 })\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 GDOCS_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return GDOCS_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return gdocsRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return gdocsReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return gdocsStat(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 mountPrefixOf(p.virtual, p.resourcePath) !== ''\n ? p\n : new PathSpec({\n virtual: p.virtual,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n resourcePath: mountKey(p.virtual, prefix),\n }),\n )\n : paths\n return gdocsResolveGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<GDocsResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactGDocsConfig(this.config),\n })\n }\n\n loadState(_state: GDocsResourceState): Promise<void> {\n return Promise.resolve()\n }\n}\n"],"mappings":";;;;;AAcA,SAAS,UAAU,qBAAqB;AACxC;AAAA,EAEE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAEA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP,IAAM,mBAAmB,gBAAgB,YAAY;AAO9C,IAAM,gBAAN,MAAwC;AAAA,EACpC,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA,EACvB,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB,cAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,QAAqB;AAC/B,SAAK,SAAS;AACd,UAAM,KAAK,IAAI,aAAa,MAAM;AAClC,SAAK,WAAW,IAAI,cAAc,EAAE,cAAc,GAAG,CAAC;AACtD,SAAK,QAAQ,IAAI,mBAAmB,EAAE,KAAK,MAAO,CAAC;AAAA,EACrD;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,UAAU,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAC/C;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,aAAa,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAClD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,UAAU,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAC/C;AAAA,EAEA,KAAK,OAA4B,SAAS,IAAyB;AACjE,UAAM,YACJ,WAAW,KACP,MAAM;AAAA,MAAI,CAAC,MACT,cAAc,EAAE,SAAS,EAAE,YAAY,MAAM,KACzC,IACA,IAAI,SAAS;AAAA,QACX,SAAS,EAAE;AAAA,QACX,WAAW,EAAE;AAAA,QACb,GAAI,EAAE,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,QACnD,UAAU,EAAE;AAAA,QACZ,cAAc,SAAS,EAAE,SAAS,MAAM;AAAA,MAC1C,CAAC;AAAA,IACP,IACA;AACN,WAAO,iBAAiB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EAC9D;AAAA,EAEA,WAAwC;AACtC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,mBAAkB,KAAK,MAAM;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA2C;AACnD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
// src/resource/mongodb/mongodb.ts
|
|
2
|
+
import { mountKey, mountPrefixOf } from "@struktoai/mirage-core";
|
|
2
3
|
import {
|
|
3
4
|
MONGODB_COMMANDS,
|
|
4
5
|
MONGODB_OPS,
|
|
@@ -10,7 +11,7 @@ import {
|
|
|
10
11
|
PathSpec,
|
|
11
12
|
RAMIndexCacheStore,
|
|
12
13
|
resolveMongoDBConfig,
|
|
13
|
-
|
|
14
|
+
makeResolveGlob,
|
|
14
15
|
ResourceName
|
|
15
16
|
} from "@struktoai/mirage-core";
|
|
16
17
|
|
|
@@ -98,6 +99,7 @@ var HttpMongoDriver = class {
|
|
|
98
99
|
};
|
|
99
100
|
|
|
100
101
|
// src/resource/mongodb/mongodb.ts
|
|
102
|
+
var resolveMongoGlob = makeResolveGlob(mongoReaddir);
|
|
101
103
|
var MongoDBResource = class {
|
|
102
104
|
kind = ResourceName.MONGODB;
|
|
103
105
|
cachesReads = false;
|
|
@@ -138,12 +140,12 @@ var MongoDBResource = class {
|
|
|
138
140
|
}
|
|
139
141
|
glob(paths, prefix = "") {
|
|
140
142
|
const effective = prefix !== "" ? paths.map(
|
|
141
|
-
(p) => p.
|
|
142
|
-
|
|
143
|
+
(p) => mountPrefixOf(p.virtual, p.resourcePath) !== "" ? p : new PathSpec({
|
|
144
|
+
virtual: p.virtual,
|
|
143
145
|
directory: p.directory,
|
|
144
146
|
...p.pattern !== null ? { pattern: p.pattern } : {},
|
|
145
147
|
resolved: p.resolved,
|
|
146
|
-
prefix
|
|
148
|
+
resourcePath: mountKey(p.virtual, prefix)
|
|
147
149
|
})
|
|
148
150
|
) : paths;
|
|
149
151
|
return resolveMongoGlob(this.accessor, effective, this.index);
|
|
@@ -154,4 +156,4 @@ export {
|
|
|
154
156
|
HttpMongoDriver,
|
|
155
157
|
MongoDBResource
|
|
156
158
|
};
|
|
157
|
-
//# sourceMappingURL=chunk-
|
|
159
|
+
//# sourceMappingURL=chunk-KL2VFYUV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/mongodb/mongodb.ts","../src/resource/mongodb/http_driver.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 { mountKey, mountPrefixOf } from '@struktoai/mirage-core'\nimport {\n type FileStat,\n type IndexCacheStore,\n MONGODB_COMMANDS,\n MONGODB_OPS,\n MONGODB_PROMPT,\n MongoDBAccessor,\n type MongoDBConfig,\n type MongoDBConfigResolved,\n type MongoDriver,\n mongoRead,\n mongoReaddir,\n mongoStat,\n PathSpec,\n RAMIndexCacheStore,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n resolveMongoDBConfig,\n makeResolveGlob,\n ResourceName,\n} from '@struktoai/mirage-core'\nimport { HttpMongoDriver } from './http_driver.ts'\n\nconst resolveMongoGlob = makeResolveGlob(mongoReaddir)\n\nexport interface MongoDBResourceOptions {\n config: MongoDBConfig\n prefix?: string\n driver?: MongoDriver\n endpoint?: string\n}\n\nexport class MongoDBResource 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 driver: MongoDriver\n readonly accessor: MongoDBAccessor\n readonly index: IndexCacheStore\n\n constructor(options: MongoDBResourceOptions | MongoDBConfig) {\n const { config, prefix, driver, endpoint } =\n 'config' in options\n ? options\n : { config: options, prefix: undefined, driver: undefined, endpoint: undefined }\n this.config = resolveMongoDBConfig(config)\n this.driver = driver ?? new HttpMongoDriver({ endpoint: endpoint ?? this.config.uri })\n this.accessor = new MongoDBAccessor(this.driver, this.config)\n this.index = new RAMIndexCacheStore({ ttl: this.indexTtl })\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.driver.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 mountPrefixOf(p.virtual, p.resourcePath) !== ''\n ? p\n : new PathSpec({\n virtual: p.virtual,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n resourcePath: mountKey(p.virtual, 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 type {\n EntityKind,\n MongoCollectionSpec,\n MongoDriver,\n MongoFindOptions,\n MongoIndexAccess,\n MongoIterOptions,\n} from '@struktoai/mirage-core'\n\nexport interface HttpMongoDriverOptions {\n endpoint: string\n fetchImpl?: typeof fetch\n headers?: Record<string, string>\n}\n\ninterface MongoProxyRequest {\n op:\n | 'listDatabases'\n | 'listCollections'\n | 'listCollectionsDetailed'\n | 'findDocuments'\n | 'iterDocuments'\n | 'countDocuments'\n | 'listIndexes'\n | 'getIndexStats'\n database?: string\n collection?: string\n kind?: EntityKind | null\n nameFilter?: { name?: string }\n filter?: Record<string, unknown>\n options?: MongoFindOptions | MongoIterOptions\n}\n\nexport class HttpMongoDriver implements MongoDriver {\n readonly endpoint: string\n private readonly fetchImpl: typeof fetch\n private readonly headers: Record<string, string>\n\n constructor(options: HttpMongoDriverOptions) {\n this.endpoint = options.endpoint\n this.fetchImpl = options.fetchImpl ?? fetch.bind(globalThis)\n this.headers = options.headers ?? {}\n }\n\n private async post<T>(req: MongoProxyRequest): Promise<T> {\n const r = await this.fetchImpl(this.endpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...this.headers },\n body: JSON.stringify(req),\n })\n if (!r.ok) {\n const body = await r.text().catch(() => '')\n throw new Error(`mongo proxy ${req.op} → ${String(r.status)} ${body}`)\n }\n return (await r.json()) as T\n }\n\n listDatabases(): Promise<string[]> {\n return this.post<string[]>({ op: 'listDatabases' })\n }\n\n listCollections(database: string, kind: EntityKind | null = null): Promise<string[]> {\n return this.post<string[]>({ op: 'listCollections', database, kind })\n }\n\n listCollectionsDetailed(\n database: string,\n filter: { name?: string } = {},\n ): Promise<MongoCollectionSpec[]> {\n return this.post<MongoCollectionSpec[]>({\n op: 'listCollectionsDetailed',\n database,\n nameFilter: filter,\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 return this.post<T[]>({\n op: 'findDocuments',\n database,\n collection,\n filter,\n options,\n })\n }\n\n async *iterDocuments<T = Record<string, unknown>>(\n database: string,\n collection: string,\n options: MongoIterOptions = {},\n ): AsyncIterableIterator<T> {\n const docs = await this.post<T[]>({\n op: 'iterDocuments',\n database,\n collection,\n options,\n })\n for (const d of docs) yield d\n }\n\n iterInserts<T = Record<string, unknown>>(\n _database: string,\n _collection: string,\n ): AsyncIterableIterator<T> {\n return {\n next: () =>\n Promise.reject(new Error('iterInserts (tail -f) is not supported by HttpMongoDriver')),\n [Symbol.asyncIterator]() {\n return this\n },\n }\n }\n\n countDocuments(\n database: string,\n collection: string,\n filter: Record<string, unknown> = {},\n ): Promise<number> {\n return this.post<number>({ op: 'countDocuments', database, collection, filter })\n }\n\n listIndexes(database: string, collection: string): Promise<Record<string, unknown>[]> {\n return this.post<Record<string, unknown>[]>({\n op: 'listIndexes',\n database,\n collection,\n })\n }\n\n getIndexStats(database: string, collection: string): Promise<Record<string, MongoIndexAccess>> {\n return this.post<Record<string, MongoIndexAccess>>({\n op: 'getIndexStats',\n database,\n collection,\n })\n }\n\n close(): Promise<void> {\n return Promise.resolve()\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
// src/resource/box/config.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
normalizeFields,
|
|
4
|
+
redactConfigWithSchema,
|
|
5
|
+
secretStr,
|
|
6
|
+
z
|
|
7
|
+
} from "@struktoai/mirage-core";
|
|
3
8
|
var BoxConfigSchema = z.object({
|
|
9
|
+
endpoint: z.string().optional(),
|
|
10
|
+
rootFolderId: z.string().optional(),
|
|
11
|
+
contentSearch: z.boolean().optional(),
|
|
4
12
|
clientId: z.string().optional(),
|
|
5
13
|
clientSecret: secretStr().optional(),
|
|
6
14
|
refreshToken: secretStr().optional(),
|
|
@@ -12,6 +20,8 @@ function redactBoxConfig(config) {
|
|
|
12
20
|
function normalizeBoxConfig(input) {
|
|
13
21
|
return normalizeFields(input, {
|
|
14
22
|
rename: {
|
|
23
|
+
root_folder_id: "rootFolderId",
|
|
24
|
+
content_search: "contentSearch",
|
|
15
25
|
client_id: "clientId",
|
|
16
26
|
client_secret: "clientSecret",
|
|
17
27
|
refresh_token: "refreshToken",
|
|
@@ -22,8 +32,7 @@ function normalizeBoxConfig(input) {
|
|
|
22
32
|
}
|
|
23
33
|
|
|
24
34
|
export {
|
|
25
|
-
BoxConfigSchema,
|
|
26
35
|
redactBoxConfig,
|
|
27
36
|
normalizeBoxConfig
|
|
28
37
|
};
|
|
29
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-L64GRKOD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/box/config.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 normalizeFields,\n redactConfigWithSchema,\n type ConfigOf,\n type RedactedConfig,\n secretStr,\n z,\n} from '@struktoai/mirage-core'\n\nexport interface BoxConfig {\n // API origin override (e.g. an integ fake). Defaults to api.box.com.\n endpoint?: string\n // Box folder id to mount as the workspace root instead of the account\n // root (\"0\"). Folder ids are stable across renames/moves and visible in\n // the Box web URL (box.com/folder/<id>), so a subfolder mount survives\n // reorganization that a path prefix would not.\n rootFolderId?: string\n // Opt in to grep/rg content-search push-down: route recursive literal\n // scans through Box search to narrow the file set before scanning locally.\n // Off by default because Box's search index lags recent writes.\n contentSearch?: boolean\n clientId?: string\n clientSecret?: string\n refreshToken?: string\n accessToken?: string\n refreshFn?: (\n refreshToken: string,\n ) => Promise<{ accessToken: string; refreshToken: string; expiresIn: number }>\n onRefreshTokenRotated?: (newRefreshToken: string) => void | Promise<void>\n}\n\nconst BoxConfigSchema = z.object({\n endpoint: z.string().optional(),\n rootFolderId: z.string().optional(),\n contentSearch: z.boolean().optional(),\n clientId: z.string().optional(),\n clientSecret: secretStr().optional(),\n refreshToken: secretStr().optional(),\n accessToken: secretStr().optional(),\n})\n\n// Only the redacted twin derives: the schema deliberately omits the\n// callbacks, which no snapshot can carry.\nexport type BoxConfigRedacted = RedactedConfig<\n ConfigOf<typeof BoxConfigSchema>,\n 'clientSecret' | 'refreshToken' | 'accessToken'\n>\n\nexport function redactBoxConfig(config: BoxConfig): BoxConfigRedacted {\n return redactConfigWithSchema(BoxConfigSchema, config) as unknown as BoxConfigRedacted\n}\n\nexport function normalizeBoxConfig(input: Record<string, unknown>): BoxConfig {\n return normalizeFields(input, {\n rename: {\n root_folder_id: 'rootFolderId',\n content_search: 'contentSearch',\n client_id: 'clientId',\n client_secret: 'clientSecret',\n refresh_token: 'refreshToken',\n access_token: 'accessToken',\n developer_token: 'accessToken',\n },\n }) as unknown as BoxConfig\n}\n"],"mappings":";AAcA;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAwBP,IAAM,kBAAkB,EAAE,OAAO;AAAA,EAC/B,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,cAAc,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,cAAc,UAAU,EAAE,SAAS;AAAA,EACnC,cAAc,UAAU,EAAE,SAAS;AAAA,EACnC,aAAa,UAAU,EAAE,SAAS;AACpC,CAAC;AASM,SAAS,gBAAgB,QAAsC;AACpE,SAAO,uBAAuB,iBAAiB,MAAM;AACvD;AAEO,SAAS,mBAAmB,OAA2C;AAC5E,SAAO,gBAAgB,OAAO;AAAA,IAC5B,QAAQ;AAAA,MACN,gBAAgB;AAAA,MAChB,gBAAgB;AAAA,MAChB,WAAW;AAAA,MACX,eAAe;AAAA,MACf,eAAe;AAAA,MACf,cAAc;AAAA,MACd,iBAAiB;AAAA,IACnB;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
// src/resource/gmail/config.ts
|
|
2
2
|
import {
|
|
3
|
-
GoogleConfigSchema,
|
|
4
3
|
normalizeGoogleConfig,
|
|
5
4
|
redactGoogleConfig
|
|
6
5
|
} from "@struktoai/mirage-core";
|
|
7
6
|
|
|
8
7
|
export {
|
|
9
|
-
GoogleConfigSchema,
|
|
10
8
|
normalizeGoogleConfig,
|
|
11
9
|
redactGoogleConfig
|
|
12
10
|
};
|
|
13
|
-
//# sourceMappingURL=chunk-
|
|
11
|
+
//# sourceMappingURL=chunk-LPDLPRPS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resource/gmail/config.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\nexport {\n
|
|
1
|
+
{"version":3,"sources":["../src/resource/gmail/config.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\nexport {\n normalizeGoogleConfig as normalizeGmailConfig,\n redactGoogleConfig as redactGmailConfig,\n type GoogleConfig as GmailConfig,\n type GoogleConfigRedacted as GmailConfigRedacted,\n} from '@struktoai/mirage-core'\n"],"mappings":";AAcA;AAAA,EAC2B;AAAA,EACH;AAAA,OAGjB;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/gsheets/config.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\nexport {\n normalizeGoogleConfig as normalizeGSheetsConfig,\n redactGoogleConfig as redactGSheetsConfig,\n type GoogleConfig as GSheetsConfig,\n type GoogleConfigRedacted as GSheetsConfigRedacted,\n} from '@struktoai/mirage-core'\n"],"mappings":";AAcA;AAAA,EAC2B;AAAA,EACH;AAAA,OAGjB;","names":[]}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
// src/resource/slack/slack.ts
|
|
2
|
+
import { mountKey, mountPrefixOf } from "@struktoai/mirage-core";
|
|
2
3
|
import {
|
|
3
4
|
BrowserSlackTransport,
|
|
4
5
|
PathSpec,
|
|
5
6
|
RAMIndexCacheStore,
|
|
6
7
|
ResourceName,
|
|
7
|
-
|
|
8
|
+
makeResolveGlob,
|
|
8
9
|
SLACK_COMMANDS,
|
|
9
10
|
SLACK_PROMPT,
|
|
10
|
-
|
|
11
|
+
SLACK_OPS,
|
|
11
12
|
SLACK_WRITE_PROMPT,
|
|
12
13
|
SlackAccessor,
|
|
13
14
|
slackRead,
|
|
@@ -16,7 +17,11 @@ import {
|
|
|
16
17
|
} from "@struktoai/mirage-core";
|
|
17
18
|
|
|
18
19
|
// src/resource/slack/config.ts
|
|
19
|
-
import {
|
|
20
|
+
import {
|
|
21
|
+
redactConfigWithSchema,
|
|
22
|
+
secretSchema,
|
|
23
|
+
z
|
|
24
|
+
} from "@struktoai/mirage-core";
|
|
20
25
|
var SlackConfigSchema = z.object({
|
|
21
26
|
proxyUrl: z.string(),
|
|
22
27
|
getHeaders: secretSchema(
|
|
@@ -28,9 +33,15 @@ function redactSlackConfig(config) {
|
|
|
28
33
|
}
|
|
29
34
|
|
|
30
35
|
// src/resource/slack/slack.ts
|
|
36
|
+
var resolveSlackGlob = makeResolveGlob(slackReaddir);
|
|
31
37
|
var SlackResource = class {
|
|
32
38
|
kind = ResourceName.SLACK;
|
|
33
39
|
cachesReads = true;
|
|
40
|
+
// Every listed file carries an exact size: chat.jsonl and users/*.json
|
|
41
|
+
// are rendered at readdir from payloads the listing already fetched
|
|
42
|
+
// (users.list is payload-identical to users.info, verified live), and
|
|
43
|
+
// file blobs carry Slack's upload byte count.
|
|
44
|
+
sizesAlwaysKnown = true;
|
|
34
45
|
indexTtl = 600;
|
|
35
46
|
prompt = SLACK_PROMPT;
|
|
36
47
|
writePrompt = SLACK_WRITE_PROMPT;
|
|
@@ -57,7 +68,7 @@ var SlackResource = class {
|
|
|
57
68
|
return SLACK_COMMANDS;
|
|
58
69
|
}
|
|
59
70
|
ops() {
|
|
60
|
-
return
|
|
71
|
+
return SLACK_OPS;
|
|
61
72
|
}
|
|
62
73
|
readFile(p) {
|
|
63
74
|
return slackRead(this.accessor, p, this.index);
|
|
@@ -68,18 +79,14 @@ var SlackResource = class {
|
|
|
68
79
|
stat(p) {
|
|
69
80
|
return slackStat(this.accessor, p, this.index);
|
|
70
81
|
}
|
|
71
|
-
async fingerprint(p) {
|
|
72
|
-
const lookup = await this.index.get(p.original);
|
|
73
|
-
return lookup.entry?.remoteTime ?? null;
|
|
74
|
-
}
|
|
75
82
|
glob(paths, prefix = "") {
|
|
76
83
|
const effective = prefix !== "" ? paths.map(
|
|
77
|
-
(p) => p.
|
|
78
|
-
|
|
84
|
+
(p) => mountPrefixOf(p.virtual, p.resourcePath) !== "" ? p : new PathSpec({
|
|
85
|
+
virtual: p.virtual,
|
|
79
86
|
directory: p.directory,
|
|
80
87
|
...p.pattern !== null ? { pattern: p.pattern } : {},
|
|
81
88
|
resolved: p.resolved,
|
|
82
|
-
prefix
|
|
89
|
+
resourcePath: mountKey(p.virtual, prefix)
|
|
83
90
|
})
|
|
84
91
|
) : paths;
|
|
85
92
|
return resolveSlackGlob(this.accessor, effective, this.index);
|
|
@@ -99,4 +106,4 @@ export {
|
|
|
99
106
|
redactSlackConfig,
|
|
100
107
|
SlackResource
|
|
101
108
|
};
|
|
102
|
-
//# sourceMappingURL=chunk-
|
|
109
|
+
//# sourceMappingURL=chunk-NVHPJ5CV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/slack/slack.ts","../src/resource/slack/config.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 { mountKey, mountPrefixOf } from '@struktoai/mirage-core'\nimport {\n BrowserSlackTransport,\n type FileStat,\n type IndexCacheStore,\n PathSpec,\n RAMIndexCacheStore,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n makeResolveGlob,\n SLACK_COMMANDS,\n SLACK_PROMPT,\n SLACK_OPS,\n SLACK_WRITE_PROMPT,\n SlackAccessor,\n slackRead,\n slackReaddir,\n slackStat,\n} from '@struktoai/mirage-core'\nimport { redactSlackConfig, type SlackConfig, type SlackConfigRedacted } from './config.ts'\n\nconst resolveSlackGlob = makeResolveGlob(slackReaddir)\n\nexport interface SlackResourceState {\n type: string\n config: SlackConfigRedacted\n}\n\nexport class SlackResource implements Resource {\n readonly kind: string = ResourceName.SLACK\n readonly cachesReads: boolean = true\n // Every listed file carries an exact size: chat.jsonl and users/*.json\n // are rendered at readdir from payloads the listing already fetched\n // (users.list is payload-identical to users.info, verified live), and\n // file blobs carry Slack's upload byte count.\n readonly sizesAlwaysKnown: boolean = true\n readonly indexTtl: number = 600\n readonly prompt: string = SLACK_PROMPT\n readonly writePrompt: string = SLACK_WRITE_PROMPT\n readonly config: SlackConfig\n readonly accessor: SlackAccessor\n readonly index: IndexCacheStore\n\n constructor(config: SlackConfig) {\n this.config = config\n this.accessor = new SlackAccessor(\n new BrowserSlackTransport({\n proxyUrl: config.proxyUrl,\n ...(config.getHeaders !== undefined ? { getHeaders: config.getHeaders } : {}),\n }),\n )\n this.index = new RAMIndexCacheStore({ ttl: this.indexTtl })\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 SLACK_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return SLACK_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return slackRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return slackReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return slackStat(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 mountPrefixOf(p.virtual, p.resourcePath) !== ''\n ? p\n : new PathSpec({\n virtual: p.virtual,\n directory: p.directory,\n ...(p.pattern !== null ? { pattern: p.pattern } : {}),\n resolved: p.resolved,\n resourcePath: mountKey(p.virtual, prefix),\n }),\n )\n : paths\n return resolveSlackGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<SlackResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactSlackConfig(this.config),\n })\n }\n\n loadState(_state: SlackResourceState): Promise<void> {\n return Promise.resolve()\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 redactConfigWithSchema,\n type ConfigOf,\n type RedactedConfig,\n secretSchema,\n z,\n} from '@struktoai/mirage-core'\n\ntype HeaderProvider = () => Promise<Record<string, string>> | Record<string, string>\n\nconst SlackConfigSchema = z.object({\n proxyUrl: z.string(),\n getHeaders: secretSchema(\n z.custom<HeaderProvider>((value) => typeof value === 'function'),\n ).optional(),\n})\n\nexport type SlackConfig = ConfigOf<typeof SlackConfigSchema>\n\nexport type SlackConfigRedacted = RedactedConfig<SlackConfig, 'getHeaders'>\n\nexport function redactSlackConfig(config: SlackConfig): SlackConfigRedacted {\n return redactConfigWithSchema(SlackConfigSchema, config) as unknown as SlackConfigRedacted\n}\n"],"mappings":";AAcA,SAAS,UAAU,qBAAqB;AACxC;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;;;ACpBP;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAIP,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,UAAU,EAAE,OAAO;AAAA,EACnB,YAAY;AAAA,IACV,EAAE,OAAuB,CAAC,UAAU,OAAO,UAAU,UAAU;AAAA,EACjE,EAAE,SAAS;AACb,CAAC;AAMM,SAAS,kBAAkB,QAA0C;AAC1E,SAAO,uBAAuB,mBAAmB,MAAM;AACzD;;;ADAA,IAAM,mBAAmB,gBAAgB,YAAY;AAO9C,IAAM,gBAAN,MAAwC;AAAA,EACpC,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA;AAAA;AAAA;AAAA;AAAA,EAKvB,mBAA4B;AAAA,EAC5B,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB,cAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,QAAqB;AAC/B,SAAK,SAAS;AACd,SAAK,WAAW,IAAI;AAAA,MAClB,IAAI,sBAAsB;AAAA,QACxB,UAAU,OAAO;AAAA,QACjB,GAAI,OAAO,eAAe,SAAY,EAAE,YAAY,OAAO,WAAW,IAAI,CAAC;AAAA,MAC7E,CAAC;AAAA,IACH;AACA,SAAK,QAAQ,IAAI,mBAAmB,EAAE,KAAK,KAAK,SAAS,CAAC;AAAA,EAC5D;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,UAAU,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAC/C;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,aAAa,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAClD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,UAAU,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAC/C;AAAA,EAEA,KAAK,OAA4B,SAAS,IAAyB;AACjE,UAAM,YACJ,WAAW,KACP,MAAM;AAAA,MAAI,CAAC,MACT,cAAc,EAAE,SAAS,EAAE,YAAY,MAAM,KACzC,IACA,IAAI,SAAS;AAAA,QACX,SAAS,EAAE;AAAA,QACX,WAAW,EAAE;AAAA,QACb,GAAI,EAAE,YAAY,OAAO,EAAE,SAAS,EAAE,QAAQ,IAAI,CAAC;AAAA,QACnD,UAAU,EAAE;AAAA,QACZ,cAAc,SAAS,EAAE,SAAS,MAAM;AAAA,MAC1C,CAAC;AAAA,IACP,IACA;AACN,WAAO,iBAAiB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EAC9D;AAAA,EAEA,WAAwC;AACtC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,kBAAkB,KAAK,MAAM;AAAA,IACvC,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA2C;AACnD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
1
|
// src/resource/dropbox/config.ts
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
normalizeFields,
|
|
4
|
+
redactConfigWithSchema,
|
|
5
|
+
secretStr,
|
|
6
|
+
z
|
|
7
|
+
} from "@struktoai/mirage-core";
|
|
3
8
|
var DropboxConfigSchema = z.object({
|
|
4
9
|
clientId: z.string(),
|
|
5
10
|
clientSecret: secretStr().optional(),
|
|
6
|
-
refreshToken: secretStr()
|
|
11
|
+
refreshToken: secretStr(),
|
|
12
|
+
rootPath: z.string().optional(),
|
|
13
|
+
contentSearch: z.boolean().optional(),
|
|
14
|
+
endpoint: z.string().optional()
|
|
7
15
|
});
|
|
8
16
|
function redactDropboxConfig(config) {
|
|
9
17
|
return redactConfigWithSchema(DropboxConfigSchema, config);
|
|
@@ -13,14 +21,15 @@ function normalizeDropboxConfig(input) {
|
|
|
13
21
|
rename: {
|
|
14
22
|
client_id: "clientId",
|
|
15
23
|
client_secret: "clientSecret",
|
|
16
|
-
refresh_token: "refreshToken"
|
|
24
|
+
refresh_token: "refreshToken",
|
|
25
|
+
root_path: "rootPath",
|
|
26
|
+
content_search: "contentSearch"
|
|
17
27
|
}
|
|
18
28
|
});
|
|
19
29
|
}
|
|
20
30
|
|
|
21
31
|
export {
|
|
22
|
-
DropboxConfigSchema,
|
|
23
32
|
redactDropboxConfig,
|
|
24
33
|
normalizeDropboxConfig
|
|
25
34
|
};
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
35
|
+
//# sourceMappingURL=chunk-OSTDTTWI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/dropbox/config.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 normalizeFields,\n redactConfigWithSchema,\n type ConfigOf,\n type RedactedConfig,\n secretStr,\n z,\n} from '@struktoai/mirage-core'\n\nexport interface DropboxConfig {\n clientId: string\n clientSecret?: string\n refreshToken: string\n rootPath?: string\n contentSearch?: boolean\n endpoint?: string\n refreshFn?: (refreshToken: string) => Promise<{ accessToken: string; expiresIn: number }>\n}\n\nconst DropboxConfigSchema = z.object({\n clientId: z.string(),\n clientSecret: secretStr().optional(),\n refreshToken: secretStr(),\n rootPath: z.string().optional(),\n contentSearch: z.boolean().optional(),\n endpoint: z.string().optional(),\n})\n\n// Only the redacted twin derives: the schema deliberately omits\n// `refreshFn`, which no snapshot can carry.\nexport type DropboxConfigRedacted = RedactedConfig<\n ConfigOf<typeof DropboxConfigSchema>,\n 'clientSecret' | 'refreshToken'\n>\n\nexport function redactDropboxConfig(config: DropboxConfig): DropboxConfigRedacted {\n return redactConfigWithSchema(DropboxConfigSchema, config) as unknown as DropboxConfigRedacted\n}\n\nexport function normalizeDropboxConfig(input: Record<string, unknown>): DropboxConfig {\n return normalizeFields(input, {\n rename: {\n client_id: 'clientId',\n client_secret: 'clientSecret',\n refresh_token: 'refreshToken',\n root_path: 'rootPath',\n content_search: 'contentSearch',\n },\n }) as unknown as DropboxConfig\n}\n"],"mappings":";AAcA;AAAA,EACE;AAAA,EACA;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAYP,IAAM,sBAAsB,EAAE,OAAO;AAAA,EACnC,UAAU,EAAE,OAAO;AAAA,EACnB,cAAc,UAAU,EAAE,SAAS;AAAA,EACnC,cAAc,UAAU;AAAA,EACxB,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,eAAe,EAAE,QAAQ,EAAE,SAAS;AAAA,EACpC,UAAU,EAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AASM,SAAS,oBAAoB,QAA8C;AAChF,SAAO,uBAAuB,qBAAqB,MAAM;AAC3D;AAEO,SAAS,uBAAuB,OAA+C;AACpF,SAAO,gBAAgB,OAAO;AAAA,IAC5B,QAAQ;AAAA,MACN,WAAW;AAAA,MACX,eAAe;AAAA,MACf,eAAe;AAAA,MACf,WAAW;AAAA,MACX,gBAAgB;AAAA,IAClB;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
S3Resource
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BGA2F226.js";
|
|
4
4
|
|
|
5
5
|
// src/resource/ceph/ceph.ts
|
|
6
6
|
import {
|
|
@@ -10,7 +10,11 @@ import {
|
|
|
10
10
|
} from "@struktoai/mirage-core";
|
|
11
11
|
|
|
12
12
|
// src/resource/ceph/config.ts
|
|
13
|
-
import {
|
|
13
|
+
import {
|
|
14
|
+
redactConfigWithSchema,
|
|
15
|
+
secretSchema,
|
|
16
|
+
z
|
|
17
|
+
} from "@struktoai/mirage-core";
|
|
14
18
|
var CephConfigSchema = z.object({
|
|
15
19
|
bucket: z.string(),
|
|
16
20
|
presignedUrlProvider: secretSchema(
|
|
@@ -18,7 +22,8 @@ var CephConfigSchema = z.object({
|
|
|
18
22
|
),
|
|
19
23
|
endpoint: z.string().optional(),
|
|
20
24
|
region: z.string().optional(),
|
|
21
|
-
defaultContentType: z.string().optional()
|
|
25
|
+
defaultContentType: z.string().optional(),
|
|
26
|
+
keyPrefix: z.string().optional()
|
|
22
27
|
});
|
|
23
28
|
function cephToS3Config(config) {
|
|
24
29
|
return {
|
|
@@ -26,7 +31,8 @@ function cephToS3Config(config) {
|
|
|
26
31
|
presignedUrlProvider: config.presignedUrlProvider,
|
|
27
32
|
...config.region !== void 0 ? { region: config.region } : {},
|
|
28
33
|
...config.endpoint !== void 0 ? { endpoint: config.endpoint } : {},
|
|
29
|
-
...config.defaultContentType !== void 0 ? { defaultContentType: config.defaultContentType } : {}
|
|
34
|
+
...config.defaultContentType !== void 0 ? { defaultContentType: config.defaultContentType } : {},
|
|
35
|
+
...config.keyPrefix !== void 0 ? { keyPrefix: config.keyPrefix } : {}
|
|
30
36
|
};
|
|
31
37
|
}
|
|
32
38
|
function redactCephConfig(config) {
|
|
@@ -76,4 +82,4 @@ export {
|
|
|
76
82
|
CEPH_BROWSER_PROMPT,
|
|
77
83
|
CephResource
|
|
78
84
|
};
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
85
|
+
//# sourceMappingURL=chunk-PQCRGTSA.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/ceph/ceph.ts","../src/resource/ceph/config.ts","../src/resource/ceph/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 {\n remapCommandsResource,\n remapOpsResource,\n ResourceName,\n type RegisteredCommand,\n type RegisteredOp,\n} from '@struktoai/mirage-core'\nimport { S3Resource } from '../s3/s3.ts'\nimport {\n cephToS3Config,\n redactCephConfig,\n type CephConfig,\n type CephConfigRedacted,\n} from './config.ts'\nimport { CEPH_BROWSER_PROMPT } from './prompt.ts'\n\nexport interface CephResourceState {\n type: string\n config: CephConfigRedacted\n}\n\nexport class CephResource extends S3Resource {\n override readonly kind: string = ResourceName.CEPH\n override readonly prompt: string = CEPH_BROWSER_PROMPT\n readonly cephConfig: CephConfig\n private readonly cephOps: readonly RegisteredOp[]\n private readonly cephCommands: readonly RegisteredCommand[]\n\n constructor(config: CephConfig) {\n super(cephToS3Config(config))\n this.cephConfig = config\n this.cephOps = remapOpsResource(super.ops(), ResourceName.CEPH)\n this.cephCommands = remapCommandsResource(super.commands(), ResourceName.CEPH)\n }\n\n override ops(): readonly RegisteredOp[] {\n return this.cephOps\n }\n\n override commands(): readonly RegisteredCommand[] {\n return this.cephCommands\n }\n\n override getState(): Promise<CephResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactCephConfig(this.cephConfig),\n })\n }\n\n override loadState(_state: CephResourceState): Promise<void> {\n return Promise.resolve()\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 redactConfigWithSchema,\n type ConfigOf,\n type RedactedConfig,\n secretSchema,\n z,\n} from '@struktoai/mirage-core'\nimport type { S3BrowserPresignedUrlProvider, S3Config } from '../s3/config.ts'\n\nconst CephConfigSchema = z.object({\n bucket: z.string(),\n presignedUrlProvider: secretSchema(\n z.custom<S3BrowserPresignedUrlProvider>((value) => typeof value === 'function'),\n ),\n endpoint: z.string().optional(),\n region: z.string().optional(),\n defaultContentType: z.string().optional(),\n keyPrefix: z.string().optional(),\n})\n\nexport type CephConfig = ConfigOf<typeof CephConfigSchema>\n\nexport type CephConfigRedacted = RedactedConfig<CephConfig, 'presignedUrlProvider'>\n\nexport function cephToS3Config(config: CephConfig): S3Config {\n return {\n bucket: config.bucket,\n presignedUrlProvider: config.presignedUrlProvider,\n ...(config.region !== undefined ? { region: config.region } : {}),\n ...(config.endpoint !== undefined ? { endpoint: config.endpoint } : {}),\n ...(config.defaultContentType !== undefined\n ? { defaultContentType: config.defaultContentType }\n : {}),\n ...(config.keyPrefix !== undefined ? { keyPrefix: config.keyPrefix } : {}),\n }\n}\n\nexport function redactCephConfig(config: CephConfig): CephConfigRedacted {\n return redactConfigWithSchema(CephConfigSchema, config) as unknown as CephConfigRedacted\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 CEPH_BROWSER_PROMPT = `{prefix}\n Remote Ceph Rados Gateway bucket (S3-compatible) accessed via presigned URLs (browser runtime).\n Supports the full filesystem command set: ls/tree/cat/grep/find/du/cp/mv/rm/etc.\n Listing operations require the presigner to sign LIST/COPY operations in\n addition to GET/PUT/HEAD/DELETE — see S3BrowserPresignedUrlProvider docs.`\n"],"mappings":";;;;;AAcA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OAGK;;;ACNP;AAAA,EACE;AAAA,EAGA;AAAA,EACA;AAAA,OACK;AAGP,IAAM,mBAAmB,EAAE,OAAO;AAAA,EAChC,QAAQ,EAAE,OAAO;AAAA,EACjB,sBAAsB;AAAA,IACpB,EAAE,OAAsC,CAAC,UAAU,OAAO,UAAU,UAAU;AAAA,EAChF;AAAA,EACA,UAAU,EAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,QAAQ,EAAE,OAAO,EAAE,SAAS;AAAA,EAC5B,oBAAoB,EAAE,OAAO,EAAE,SAAS;AAAA,EACxC,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAMM,SAAS,eAAe,QAA8B;AAC3D,SAAO;AAAA,IACL,QAAQ,OAAO;AAAA,IACf,sBAAsB,OAAO;AAAA,IAC7B,GAAI,OAAO,WAAW,SAAY,EAAE,QAAQ,OAAO,OAAO,IAAI,CAAC;AAAA,IAC/D,GAAI,OAAO,aAAa,SAAY,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;AAAA,IACrE,GAAI,OAAO,uBAAuB,SAC9B,EAAE,oBAAoB,OAAO,mBAAmB,IAChD,CAAC;AAAA,IACL,GAAI,OAAO,cAAc,SAAY,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,EAC1E;AACF;AAEO,SAAS,iBAAiB,QAAwC;AACvE,SAAO,uBAAuB,kBAAkB,MAAM;AACxD;;;ACvCO,IAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;;;AFqB5B,IAAM,eAAN,cAA2B,WAAW;AAAA,EACzB,OAAe,aAAa;AAAA,EAC5B,SAAiB;AAAA,EAC1B;AAAA,EACQ;AAAA,EACA;AAAA,EAEjB,YAAY,QAAoB;AAC9B,UAAM,eAAe,MAAM,CAAC;AAC5B,SAAK,aAAa;AAClB,SAAK,UAAU,iBAAiB,MAAM,IAAI,GAAG,aAAa,IAAI;AAC9D,SAAK,eAAe,sBAAsB,MAAM,SAAS,GAAG,aAAa,IAAI;AAAA,EAC/E;AAAA,EAES,MAA+B;AACtC,WAAO,KAAK;AAAA,EACd;AAAA,EAES,WAAyC;AAChD,WAAO,KAAK;AAAA,EACd;AAAA,EAES,WAAuC;AAC9C,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,iBAAiB,KAAK,UAAU;AAAA,IAC1C,CAAC;AAAA,EACH;AAAA,EAES,UAAU,QAA0C;AAC3D,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// src/resource/langfuse/langfuse.ts
|
|
2
|
+
import { mountKey, mountPrefixOf } from "@struktoai/mirage-core";
|
|
2
3
|
import {
|
|
3
4
|
HttpLangfuseTransport,
|
|
4
5
|
LANGFUSE_COMMANDS,
|
|
5
6
|
LANGFUSE_PROMPT,
|
|
6
|
-
|
|
7
|
+
LANGFUSE_OPS,
|
|
7
8
|
LangfuseAccessor,
|
|
8
9
|
langfuseRead,
|
|
9
10
|
langfuseReaddir,
|
|
@@ -11,11 +12,15 @@ import {
|
|
|
11
12
|
PathSpec,
|
|
12
13
|
RAMIndexCacheStore,
|
|
13
14
|
ResourceName,
|
|
14
|
-
|
|
15
|
+
makeResolveGlob
|
|
15
16
|
} from "@struktoai/mirage-core";
|
|
16
17
|
|
|
17
18
|
// src/resource/langfuse/config.ts
|
|
18
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
redactConfigWithSchema,
|
|
21
|
+
secretStr,
|
|
22
|
+
z
|
|
23
|
+
} from "@struktoai/mirage-core";
|
|
19
24
|
var LangfuseConfigSchema = z.object({
|
|
20
25
|
publicKey: z.string(),
|
|
21
26
|
secretKey: secretStr(),
|
|
@@ -29,6 +34,7 @@ function redactLangfuseConfig(config) {
|
|
|
29
34
|
}
|
|
30
35
|
|
|
31
36
|
// src/resource/langfuse/langfuse.ts
|
|
37
|
+
var resolveLangfuseGlob = makeResolveGlob(langfuseReaddir);
|
|
32
38
|
var LangfuseResource = class {
|
|
33
39
|
kind = ResourceName.LANGFUSE;
|
|
34
40
|
cachesReads = true;
|
|
@@ -67,7 +73,7 @@ var LangfuseResource = class {
|
|
|
67
73
|
return LANGFUSE_COMMANDS;
|
|
68
74
|
}
|
|
69
75
|
ops() {
|
|
70
|
-
return
|
|
76
|
+
return LANGFUSE_OPS;
|
|
71
77
|
}
|
|
72
78
|
readFile(p) {
|
|
73
79
|
return langfuseRead(this.accessor, p, this.index);
|
|
@@ -78,17 +84,14 @@ var LangfuseResource = class {
|
|
|
78
84
|
stat(p) {
|
|
79
85
|
return langfuseStat(this.accessor, p, this.index);
|
|
80
86
|
}
|
|
81
|
-
fingerprint(_p) {
|
|
82
|
-
return Promise.resolve(null);
|
|
83
|
-
}
|
|
84
87
|
glob(paths, prefix = "") {
|
|
85
88
|
const effective = prefix !== "" ? paths.map(
|
|
86
|
-
(p) => p.
|
|
87
|
-
|
|
89
|
+
(p) => mountPrefixOf(p.virtual, p.resourcePath) !== "" ? p : new PathSpec({
|
|
90
|
+
virtual: p.virtual,
|
|
88
91
|
directory: p.directory,
|
|
89
92
|
...p.pattern !== null ? { pattern: p.pattern } : {},
|
|
90
93
|
resolved: p.resolved,
|
|
91
|
-
prefix
|
|
94
|
+
resourcePath: mountKey(p.virtual, prefix)
|
|
92
95
|
})
|
|
93
96
|
) : paths;
|
|
94
97
|
return resolveLangfuseGlob(this.accessor, effective, this.index);
|
|
@@ -108,4 +111,4 @@ export {
|
|
|
108
111
|
redactLangfuseConfig,
|
|
109
112
|
LangfuseResource
|
|
110
113
|
};
|
|
111
|
-
//# sourceMappingURL=chunk-
|
|
114
|
+
//# sourceMappingURL=chunk-QE7QNA45.js.map
|