@struktoai/mirage-browser 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aliyun-YEWHEWCL.js +8 -0
- package/dist/backblaze-LWE2HEDK.js +8 -0
- package/dist/box-GTWWIB6F.js +8 -0
- package/dist/ceph-ATSCSVGU.js +8 -0
- package/dist/{chunk-YGRKFONX.js → chunk-23NO22WD.js} +1 -2
- package/dist/{chunk-YGRKFONX.js.map → chunk-23NO22WD.js.map} +1 -1
- package/dist/{chunk-OSMEXGRN.js → chunk-2R7SPBTM.js} +10 -12
- package/dist/chunk-2R7SPBTM.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-NLBT6TBM.js → chunk-3FZ3GHZO.js} +6 -4
- package/dist/chunk-3FZ3GHZO.js.map +1 -0
- package/dist/{chunk-KV2DM5H6.js → chunk-4YUYQTRN.js} +616 -398
- package/dist/chunk-4YUYQTRN.js.map +1 -0
- package/dist/{chunk-KNJKYCTA.js → chunk-5ZNWDS5I.js} +9 -11
- package/dist/chunk-5ZNWDS5I.js.map +1 -0
- package/dist/{chunk-PV53AX35.js → chunk-6BXVYCIC.js} +9 -11
- package/dist/chunk-6BXVYCIC.js.map +1 -0
- package/dist/{chunk-BJHHL4UT.js → chunk-6ETIHSTA.js} +9 -10
- package/dist/chunk-6ETIHSTA.js.map +1 -0
- package/dist/{chunk-XBOJZZRT.js → chunk-AAJQ6AQT.js} +10 -12
- package/dist/chunk-AAJQ6AQT.js.map +1 -0
- package/dist/{chunk-DHZMC42C.js → chunk-AUKVYHNZ.js} +6 -4
- package/dist/chunk-AUKVYHNZ.js.map +1 -0
- package/dist/{chunk-DA5EW34P.js → chunk-AUXZEXCG.js} +11 -11
- package/dist/chunk-AUXZEXCG.js.map +1 -0
- package/dist/{chunk-2AEAISO2.js → chunk-CQERQTAZ.js} +16 -13
- package/dist/chunk-CQERQTAZ.js.map +1 -0
- package/dist/{chunk-RQ273N5K.js → chunk-DC6VA36O.js} +8 -15
- package/dist/chunk-DC6VA36O.js.map +1 -0
- package/dist/{chunk-HYUESAQS.js → chunk-DGP3N4WM.js} +1 -2
- package/dist/{chunk-HYUESAQS.js.map → chunk-DGP3N4WM.js.map} +1 -1
- package/dist/{chunk-ROHDW6KT.js → chunk-DKPDXQML.js} +6 -4
- package/dist/chunk-DKPDXQML.js.map +1 -0
- package/dist/{chunk-2H4KUUFP.js → chunk-DQK6H5LW.js} +1 -2
- package/dist/{chunk-2H4KUUFP.js.map → chunk-DQK6H5LW.js.map} +1 -1
- package/dist/{chunk-KTE5PB2D.js → chunk-E77ESWWV.js} +12 -12
- package/dist/chunk-E77ESWWV.js.map +1 -0
- package/dist/{chunk-F5QWZ7GM.js → chunk-EDS5Q5B7.js} +6 -4
- package/dist/chunk-EDS5Q5B7.js.map +1 -0
- package/dist/{chunk-K2S42IR4.js → chunk-EHTYPBGX.js} +6 -4
- package/dist/chunk-EHTYPBGX.js.map +1 -0
- package/dist/{chunk-DVXOMWD4.js → chunk-GENFT46X.js} +6 -4
- package/dist/chunk-GENFT46X.js.map +1 -0
- package/dist/{chunk-J54OBIJA.js → chunk-GQVJTQXU.js} +6 -2
- package/dist/chunk-GQVJTQXU.js.map +1 -0
- package/dist/{chunk-J7PLA5S3.js → chunk-GZFNGV55.js} +6 -4
- package/dist/chunk-GZFNGV55.js.map +1 -0
- package/dist/{chunk-DFHFILVF.js → chunk-HPID7BWJ.js} +10 -12
- package/dist/chunk-HPID7BWJ.js.map +1 -0
- package/dist/{chunk-57QQAM7V.js → chunk-HTQ4GBKM.js} +6 -4
- package/dist/chunk-HTQ4GBKM.js.map +1 -0
- package/dist/{chunk-NWZNQ3RC.js → chunk-JV4T5HNB.js} +6 -4
- package/dist/chunk-JV4T5HNB.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-54NTYJEO.js → chunk-LPDLPRPS.js} +1 -3
- package/dist/{chunk-54NTYJEO.js.map → chunk-LPDLPRPS.js.map} +1 -1
- package/dist/{chunk-CGZGX2GO.js → chunk-LW56WZDS.js} +10 -12
- package/dist/chunk-LW56WZDS.js.map +1 -0
- package/dist/{chunk-QLLRQNOJ.js → chunk-MB4TUUJQ.js} +6 -4
- package/dist/chunk-MB4TUUJQ.js.map +1 -0
- package/dist/{chunk-O5ONB7QT.js → chunk-MQMUOJZ2.js} +8 -4
- package/dist/chunk-MQMUOJZ2.js.map +1 -0
- package/dist/{chunk-4NLXLDMV.js → chunk-N5VRBFRT.js} +10 -12
- package/dist/chunk-N5VRBFRT.js.map +1 -0
- package/dist/{chunk-LSURHXZH.js → chunk-NVGB3B7J.js} +6 -4
- package/dist/chunk-NVGB3B7J.js.map +1 -0
- package/dist/{chunk-HXQ7HDA6.js → chunk-NYTRDAWX.js} +16 -13
- package/dist/chunk-NYTRDAWX.js.map +1 -0
- package/dist/{chunk-CNDGXKMU.js → chunk-PCC6EZIE.js} +6 -4
- package/dist/chunk-PCC6EZIE.js.map +1 -0
- package/dist/{chunk-TQ6VRUEI.js → chunk-PDZSZ5CB.js} +9 -11
- package/dist/chunk-PDZSZ5CB.js.map +1 -0
- package/dist/{chunk-XYKNXGPR.js → chunk-POJ3IQMQ.js} +13 -13
- package/dist/chunk-POJ3IQMQ.js.map +1 -0
- package/dist/{chunk-X2CCEHOR.js → chunk-PSEXJ5S5.js} +12 -11
- package/dist/chunk-PSEXJ5S5.js.map +1 -0
- package/dist/{chunk-NMZBJOFW.js → chunk-QXJP6TWI.js} +5 -4
- package/dist/chunk-QXJP6TWI.js.map +1 -0
- package/dist/{chunk-6YP3B7UK.js → chunk-TCFD6YJ5.js} +6 -4
- package/dist/chunk-TCFD6YJ5.js.map +1 -0
- package/dist/{chunk-G26SGOFR.js → chunk-VASFK7V6.js} +6 -4
- package/dist/chunk-VASFK7V6.js.map +1 -0
- package/dist/{chunk-JSAQMYPK.js → chunk-ZLHC2CZ6.js} +1 -2
- package/dist/{chunk-JSAQMYPK.js.map → chunk-ZLHC2CZ6.js.map} +1 -1
- package/dist/config-22T7HJBJ.js +9 -0
- package/dist/config-A56HUM6C.js +9 -0
- package/dist/config-DIWQZBOK.js +9 -0
- package/dist/config-HGJ2MGAC.js +9 -0
- package/dist/{config-ET26F632.js → config-MHBKYS53.js} +2 -4
- package/dist/config-PAHALM2T.js +9 -0
- package/dist/config-PWZXYJOI.js +9 -0
- package/dist/{config-NV5WXP64.js → config-UU27ALAA.js} +2 -4
- package/dist/digitalocean-SQA6MJJQ.js +8 -0
- package/dist/discord-ASNFJP6A.js +7 -0
- package/dist/dropbox-VV2WZE6I.js +8 -0
- package/dist/gcs-2W6DDWM7.js +8 -0
- package/dist/gdocs-QPM7VXXE.js +8 -0
- package/dist/gdrive-KT6R7EVB.js +8 -0
- package/dist/github-3IFZGW6I.js +7 -0
- package/dist/github_ci-CKKF2Y4S.js +8 -0
- package/dist/gmail-HLZIMKQU.js +8 -0
- package/dist/gsheets-HF4YPIEF.js +8 -0
- package/dist/gslides-EV2JJH7I.js +8 -0
- package/dist/index.d.ts +28 -16
- package/dist/index.js +82 -82
- package/dist/langfuse-74ZCR6QL.js +7 -0
- package/dist/linear-XABGTU6E.js +7 -0
- package/dist/minio-JPNSX2NP.js +8 -0
- package/dist/mongodb-YZP643ZU.js +7 -0
- package/dist/notion-YJOTGH7J.js +7 -0
- package/dist/oci-R4VYQKGJ.js +8 -0
- package/dist/opfs-4RWMJBCI.js +7 -0
- package/dist/postgres-HPOMN2AR.js +7 -0
- package/dist/qingstor-ZWWK2ZGV.js +8 -0
- package/dist/r2-PZAN2YFG.js +8 -0
- package/dist/{s3-GI7SDKGR.js → s3-CSFY3PLT.js} +2 -2
- package/dist/scaleway-BFROPDBB.js +8 -0
- package/dist/seaweedfs-X6THZT26.js +8 -0
- package/dist/slack-O7BTJ4YR.js +7 -0
- package/dist/supabase-PHN3MIXW.js +8 -0
- package/dist/tencent-JGCJEKHV.js +8 -0
- package/dist/trello-QUDOP3M2.js +7 -0
- package/dist/wasabi-5VMNAFOC.js +8 -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-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-J54OBIJA.js.map +0 -1
- package/dist/chunk-J7PLA5S3.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.map +0 -1
- package/dist/chunk-LSURHXZH.js.map +0 -1
- package/dist/chunk-NLBT6TBM.js.map +0 -1
- 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/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-YEWHEWCL.js.map} +0 -0
- /package/dist/{backblaze-O6CLR73B.js.map → backblaze-LWE2HEDK.js.map} +0 -0
- /package/dist/{box-GXWDWZRN.js.map → box-GTWWIB6F.js.map} +0 -0
- /package/dist/{ceph-SM7MXDAY.js.map → ceph-ATSCSVGU.js.map} +0 -0
- /package/dist/{config-7IZCGWKX.js.map → config-22T7HJBJ.js.map} +0 -0
- /package/dist/{config-AT74FARJ.js.map → config-A56HUM6C.js.map} +0 -0
- /package/dist/{config-C2AYHACT.js.map → config-DIWQZBOK.js.map} +0 -0
- /package/dist/{config-ET26F632.js.map → config-HGJ2MGAC.js.map} +0 -0
- /package/dist/{config-GHJOYNM6.js.map → config-MHBKYS53.js.map} +0 -0
- /package/dist/{config-L55UXIF4.js.map → config-PAHALM2T.js.map} +0 -0
- /package/dist/{config-NV5WXP64.js.map → config-PWZXYJOI.js.map} +0 -0
- /package/dist/{config-V7BLK5WP.js.map → config-UU27ALAA.js.map} +0 -0
- /package/dist/{digitalocean-XFH2V2A3.js.map → digitalocean-SQA6MJJQ.js.map} +0 -0
- /package/dist/{discord-OQMSHM3L.js.map → discord-ASNFJP6A.js.map} +0 -0
- /package/dist/{dropbox-IAOKM7G5.js.map → dropbox-VV2WZE6I.js.map} +0 -0
- /package/dist/{gcs-JYZB6CVP.js.map → gcs-2W6DDWM7.js.map} +0 -0
- /package/dist/{gdocs-PHKQGLZL.js.map → gdocs-QPM7VXXE.js.map} +0 -0
- /package/dist/{gdrive-4JQLGOOP.js.map → gdrive-KT6R7EVB.js.map} +0 -0
- /package/dist/{github-DU7Z4RSU.js.map → github-3IFZGW6I.js.map} +0 -0
- /package/dist/{github_ci-XSAJDNXC.js.map → github_ci-CKKF2Y4S.js.map} +0 -0
- /package/dist/{gmail-DEQP2M7T.js.map → gmail-HLZIMKQU.js.map} +0 -0
- /package/dist/{gsheets-KCIHSMOK.js.map → gsheets-HF4YPIEF.js.map} +0 -0
- /package/dist/{gslides-2KBUKKM5.js.map → gslides-EV2JJH7I.js.map} +0 -0
- /package/dist/{langfuse-FNCMKFSL.js.map → langfuse-74ZCR6QL.js.map} +0 -0
- /package/dist/{linear-XTFO4WKD.js.map → linear-XABGTU6E.js.map} +0 -0
- /package/dist/{minio-NGPBAJY3.js.map → minio-JPNSX2NP.js.map} +0 -0
- /package/dist/{mongodb-PGOX6QSY.js.map → mongodb-YZP643ZU.js.map} +0 -0
- /package/dist/{notion-HYYNQ7KI.js.map → notion-YJOTGH7J.js.map} +0 -0
- /package/dist/{oci-EGDBSMLM.js.map → oci-R4VYQKGJ.js.map} +0 -0
- /package/dist/{opfs-5WGXB5OG.js.map → opfs-4RWMJBCI.js.map} +0 -0
- /package/dist/{postgres-5HYED4AC.js.map → postgres-HPOMN2AR.js.map} +0 -0
- /package/dist/{qingstor-2T4Y6MEG.js.map → qingstor-ZWWK2ZGV.js.map} +0 -0
- /package/dist/{r2-3B45S2KV.js.map → r2-PZAN2YFG.js.map} +0 -0
- /package/dist/{s3-GI7SDKGR.js.map → s3-CSFY3PLT.js.map} +0 -0
- /package/dist/{scaleway-ICCXVAY6.js.map → scaleway-BFROPDBB.js.map} +0 -0
- /package/dist/{seaweedfs-MF77EC33.js.map → seaweedfs-X6THZT26.js.map} +0 -0
- /package/dist/{slack-6LGQERIU.js.map → slack-O7BTJ4YR.js.map} +0 -0
- /package/dist/{supabase-XTOVMHXU.js.map → supabase-PHN3MIXW.js.map} +0 -0
- /package/dist/{tencent-FXFKSOTN.js.map → tencent-JGCJEKHV.js.map} +0 -0
- /package/dist/{trello-DZK4NEVY.js.map → trello-QUDOP3M2.js.map} +0 -0
- /package/dist/{wasabi-KVE2B6RB.js.map → wasabi-5VMNAFOC.js.map} +0 -0
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
// src/resource/notion/notion.ts
|
|
2
|
+
import { mountKey, mountPrefixOf } from "@struktoai/mirage-core";
|
|
2
3
|
import {
|
|
3
4
|
MCPNotionTransport,
|
|
4
5
|
NOTION_COMMANDS,
|
|
5
6
|
NOTION_PROMPT,
|
|
6
|
-
|
|
7
|
+
NOTION_OPS,
|
|
7
8
|
NOTION_WRITE_PROMPT,
|
|
8
9
|
NotionAccessor,
|
|
9
10
|
notionRead,
|
|
@@ -12,7 +13,7 @@ import {
|
|
|
12
13
|
PathSpec,
|
|
13
14
|
RAMIndexCacheStore,
|
|
14
15
|
ResourceName,
|
|
15
|
-
|
|
16
|
+
makeResolveGlob
|
|
16
17
|
} from "@struktoai/mirage-core";
|
|
17
18
|
|
|
18
19
|
// src/resource/notion/config.ts
|
|
@@ -28,6 +29,7 @@ function redactNotionConfig(config) {
|
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
// src/resource/notion/notion.ts
|
|
32
|
+
var resolveNotionGlob = makeResolveGlob(notionReaddir);
|
|
31
33
|
var NotionResource = class {
|
|
32
34
|
kind = ResourceName.NOTION;
|
|
33
35
|
cachesReads = true;
|
|
@@ -54,7 +56,7 @@ var NotionResource = class {
|
|
|
54
56
|
return NOTION_COMMANDS;
|
|
55
57
|
}
|
|
56
58
|
ops() {
|
|
57
|
-
return
|
|
59
|
+
return NOTION_OPS;
|
|
58
60
|
}
|
|
59
61
|
readFile(p) {
|
|
60
62
|
return notionRead(this.accessor, p, this.index);
|
|
@@ -65,18 +67,14 @@ var NotionResource = class {
|
|
|
65
67
|
stat(p) {
|
|
66
68
|
return notionStat(this.accessor, p, this.index);
|
|
67
69
|
}
|
|
68
|
-
async fingerprint(p) {
|
|
69
|
-
const lookup = await this.index.get(p.original);
|
|
70
|
-
return lookup.entry?.remoteTime ?? null;
|
|
71
|
-
}
|
|
72
70
|
glob(paths, prefix = "") {
|
|
73
71
|
const effective = prefix !== "" ? paths.map(
|
|
74
|
-
(p) => p.
|
|
75
|
-
|
|
72
|
+
(p) => mountPrefixOf(p.virtual, p.resourcePath) !== "" ? p : new PathSpec({
|
|
73
|
+
virtual: p.virtual,
|
|
76
74
|
directory: p.directory,
|
|
77
75
|
...p.pattern !== null ? { pattern: p.pattern } : {},
|
|
78
76
|
resolved: p.resolved,
|
|
79
|
-
prefix
|
|
77
|
+
resourcePath: mountKey(p.virtual, prefix)
|
|
80
78
|
})
|
|
81
79
|
) : paths;
|
|
82
80
|
return resolveNotionGlob(this.accessor, effective, this.index);
|
|
@@ -96,4 +94,4 @@ export {
|
|
|
96
94
|
redactNotionConfig,
|
|
97
95
|
NotionResource
|
|
98
96
|
};
|
|
99
|
-
//# sourceMappingURL=chunk-
|
|
97
|
+
//# sourceMappingURL=chunk-PDZSZ5CB.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/notion/notion.ts","../src/resource/notion/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 type FileStat,\n type IndexCacheStore,\n MCPNotionTransport,\n type MCPNotionTransportOptions,\n NOTION_COMMANDS,\n NOTION_PROMPT,\n NOTION_OPS,\n NOTION_WRITE_PROMPT,\n NotionAccessor,\n notionRead,\n notionReaddir,\n notionStat,\n PathSpec,\n RAMIndexCacheStore,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n makeResolveGlob,\n} from '@struktoai/mirage-core'\nimport { redactNotionConfig, type NotionConfig, type NotionConfigRedacted } from './config.ts'\n\nconst resolveNotionGlob = makeResolveGlob<NotionAccessor>(notionReaddir)\n\nexport interface NotionResourceState {\n type: string\n config: NotionConfigRedacted\n}\n\nexport class NotionResource implements Resource {\n readonly kind: string = ResourceName.NOTION\n readonly cachesReads: boolean = true\n readonly indexTtl: number = 600\n readonly prompt: string = NOTION_PROMPT\n readonly writePrompt: string = NOTION_WRITE_PROMPT\n readonly config: NotionConfig\n readonly accessor: NotionAccessor\n readonly index: IndexCacheStore\n\n constructor(config: NotionConfig) {\n this.config = config\n const opts: MCPNotionTransportOptions = { authProvider: config.authProvider }\n if (config.serverUrl !== undefined) opts.serverUrl = config.serverUrl\n this.accessor = new NotionAccessor(new MCPNotionTransport(opts))\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 NOTION_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return NOTION_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return notionRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return notionReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return notionStat(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 resolveNotionGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<NotionResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactNotionConfig(this.config),\n })\n }\n\n loadState(_state: NotionResourceState): 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 type { OAuthClientProvider } from '@modelcontextprotocol/sdk/client/auth.js'\nimport { redactConfigWithSchema, secretSchema, z } from '@struktoai/mirage-core'\n\nexport interface NotionConfig {\n authProvider: OAuthClientProvider\n serverUrl?: string\n}\n\nexport interface NotionConfigRedacted {\n authProvider: '<REDACTED>'\n serverUrl?: string\n}\n\nconst NotionConfigSchema = z.object({\n authProvider: secretSchema(\n z.custom<OAuthClientProvider>((value) => value !== null && typeof value === 'object'),\n ),\n serverUrl: z.string().optional(),\n})\n\nexport function redactNotionConfig(config: NotionConfig): NotionConfigRedacted {\n return redactConfigWithSchema(NotionConfigSchema, config) as unknown as NotionConfigRedacted\n}\n"],"mappings":";AAcA,SAAS,UAAU,qBAAqB;AACxC;AAAA,EAGE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIA;AAAA,EACA;AAAA,OACK;;;ACpBP,SAAS,wBAAwB,cAAc,SAAS;AAYxD,IAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,cAAc;AAAA,IACZ,EAAE,OAA4B,CAAC,UAAU,UAAU,QAAQ,OAAO,UAAU,QAAQ;AAAA,EACtF;AAAA,EACA,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAEM,SAAS,mBAAmB,QAA4C;AAC7E,SAAO,uBAAuB,oBAAoB,MAAM;AAC1D;;;ADEA,IAAM,oBAAoB,gBAAgC,aAAa;AAOhE,IAAM,iBAAN,MAAyC;AAAA,EACrC,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA,EACvB,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB,cAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,QAAsB;AAChC,SAAK,SAAS;AACd,UAAM,OAAkC,EAAE,cAAc,OAAO,aAAa;AAC5E,QAAI,OAAO,cAAc,OAAW,MAAK,YAAY,OAAO;AAC5D,SAAK,WAAW,IAAI,eAAe,IAAI,mBAAmB,IAAI,CAAC;AAC/D,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,WAAW,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAChD;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,cAAc,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACnD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,WAAW,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAChD;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,kBAAkB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EAC/D;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":[]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
redactGDriveConfig
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-QXJP6TWI.js";
|
|
4
4
|
|
|
5
5
|
// src/resource/gdrive/gdrive.ts
|
|
6
|
+
import { mountKey, mountPrefixOf } from "@struktoai/mirage-core";
|
|
6
7
|
import {
|
|
7
8
|
GDRIVE_COMMANDS,
|
|
8
9
|
GDRIVE_PROMPT,
|
|
9
|
-
|
|
10
|
+
GDRIVE_OPS,
|
|
10
11
|
GDriveAccessor,
|
|
11
12
|
PathSpec,
|
|
12
13
|
RAMIndexCacheStore,
|
|
@@ -14,12 +15,14 @@ import {
|
|
|
14
15
|
TokenManager,
|
|
15
16
|
gdriveRead,
|
|
16
17
|
gdriveReaddir,
|
|
17
|
-
|
|
18
|
+
makeResolveGlob,
|
|
18
19
|
gdriveStat
|
|
19
20
|
} from "@struktoai/mirage-core";
|
|
21
|
+
var gdriveResolveGlob = makeResolveGlob(gdriveReaddir);
|
|
20
22
|
var GDriveResource = class {
|
|
21
23
|
kind = ResourceName.GDRIVE;
|
|
22
24
|
cachesReads = true;
|
|
25
|
+
supportsSnapshot = true;
|
|
23
26
|
indexTtl = 86400;
|
|
24
27
|
prompt = GDRIVE_PROMPT;
|
|
25
28
|
config;
|
|
@@ -31,7 +34,8 @@ var GDriveResource = class {
|
|
|
31
34
|
clientId: config.clientId,
|
|
32
35
|
...config.clientSecret !== void 0 ? { clientSecret: config.clientSecret } : {},
|
|
33
36
|
refreshToken: config.refreshToken,
|
|
34
|
-
...config.refreshFn !== void 0 ? { refreshFn: config.refreshFn } : {}
|
|
37
|
+
...config.refreshFn !== void 0 ? { refreshFn: config.refreshFn } : {},
|
|
38
|
+
...config.folderId !== void 0 ? { folderId: config.folderId } : {}
|
|
35
39
|
});
|
|
36
40
|
this.accessor = new GDriveAccessor({ tokenManager: tm });
|
|
37
41
|
this.index = new RAMIndexCacheStore({ ttl: 86400 });
|
|
@@ -46,7 +50,7 @@ var GDriveResource = class {
|
|
|
46
50
|
return GDRIVE_COMMANDS;
|
|
47
51
|
}
|
|
48
52
|
ops() {
|
|
49
|
-
return
|
|
53
|
+
return GDRIVE_OPS;
|
|
50
54
|
}
|
|
51
55
|
readFile(p) {
|
|
52
56
|
return gdriveRead(this.accessor, p, this.index);
|
|
@@ -57,18 +61,14 @@ var GDriveResource = class {
|
|
|
57
61
|
stat(p) {
|
|
58
62
|
return gdriveStat(this.accessor, p, this.index);
|
|
59
63
|
}
|
|
60
|
-
async fingerprint(p) {
|
|
61
|
-
const lookup = await this.index.get(p.original);
|
|
62
|
-
return lookup.entry?.remoteTime ?? null;
|
|
63
|
-
}
|
|
64
64
|
glob(paths, prefix = "") {
|
|
65
65
|
const effective = prefix !== "" ? paths.map(
|
|
66
|
-
(p) => p.
|
|
67
|
-
|
|
66
|
+
(p) => mountPrefixOf(p.virtual, p.resourcePath) !== "" ? p : new PathSpec({
|
|
67
|
+
virtual: p.virtual,
|
|
68
68
|
directory: p.directory,
|
|
69
69
|
...p.pattern !== null ? { pattern: p.pattern } : {},
|
|
70
70
|
resolved: p.resolved,
|
|
71
|
-
prefix
|
|
71
|
+
resourcePath: mountKey(p.virtual, prefix)
|
|
72
72
|
})
|
|
73
73
|
) : paths;
|
|
74
74
|
return gdriveResolveGlob(this.accessor, effective, this.index);
|
|
@@ -87,4 +87,4 @@ var GDriveResource = class {
|
|
|
87
87
|
export {
|
|
88
88
|
GDriveResource
|
|
89
89
|
};
|
|
90
|
-
//# sourceMappingURL=chunk-
|
|
90
|
+
//# sourceMappingURL=chunk-POJ3IQMQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/gdrive/gdrive.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 GDRIVE_COMMANDS,\n GDRIVE_PROMPT,\n GDRIVE_OPS,\n GDriveAccessor,\n type IndexCacheStore,\n PathSpec,\n RAMIndexCacheStore,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n TokenManager,\n gdriveRead,\n gdriveReaddir,\n makeResolveGlob,\n gdriveStat,\n} from '@struktoai/mirage-core'\nimport { redactGDriveConfig, type GDriveConfig, type GDriveConfigRedacted } from './config.ts'\n\nconst gdriveResolveGlob = makeResolveGlob(gdriveReaddir)\n\nexport interface GDriveResourceState {\n type: string\n config: GDriveConfigRedacted\n}\n\nexport class GDriveResource implements Resource {\n readonly kind: string = ResourceName.GDRIVE\n readonly cachesReads: boolean = true\n readonly supportsSnapshot: boolean = true\n readonly indexTtl: number = 86_400\n readonly prompt: string = GDRIVE_PROMPT\n readonly config: GDriveConfig\n readonly accessor: GDriveAccessor\n readonly index: IndexCacheStore\n\n constructor(config: GDriveConfig) {\n this.config = config\n const tm = new TokenManager({\n clientId: config.clientId,\n ...(config.clientSecret !== undefined ? { clientSecret: config.clientSecret } : {}),\n refreshToken: config.refreshToken,\n ...(config.refreshFn !== undefined ? { refreshFn: config.refreshFn } : {}),\n ...(config.folderId !== undefined ? { folderId: config.folderId } : {}),\n })\n this.accessor = new GDriveAccessor({ 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 GDRIVE_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return GDRIVE_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return gdriveRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return gdriveReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return gdriveStat(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 gdriveResolveGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<GDriveResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactGDriveConfig(this.config),\n })\n }\n\n loadState(_state: GDriveResourceState): Promise<void> {\n return Promise.resolve()\n }\n}\n"],"mappings":";;;;;AAcA,SAAS,UAAU,qBAAqB;AACxC;AAAA,EAEE;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,oBAAoB,gBAAgB,aAAa;AAOhD,IAAM,iBAAN,MAAyC;AAAA,EACrC,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA,EACvB,mBAA4B;AAAA,EAC5B,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,QAAsB;AAChC,SAAK,SAAS;AACd,UAAM,KAAK,IAAI,aAAa;AAAA,MAC1B,UAAU,OAAO;AAAA,MACjB,GAAI,OAAO,iBAAiB,SAAY,EAAE,cAAc,OAAO,aAAa,IAAI,CAAC;AAAA,MACjF,cAAc,OAAO;AAAA,MACrB,GAAI,OAAO,cAAc,SAAY,EAAE,WAAW,OAAO,UAAU,IAAI,CAAC;AAAA,MACxE,GAAI,OAAO,aAAa,SAAY,EAAE,UAAU,OAAO,SAAS,IAAI,CAAC;AAAA,IACvE,CAAC;AACD,SAAK,WAAW,IAAI,eAAe,EAAE,cAAc,GAAG,CAAC;AACvD,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,WAAW,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAChD;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,cAAc,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACnD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,WAAW,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAChD;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,kBAAkB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EAC/D;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":[]}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
// src/resource/github/github.ts
|
|
2
|
+
import { mountKey, mountPrefixOf } from "@struktoai/mirage-core";
|
|
2
3
|
import {
|
|
3
4
|
fetchGitHubRepoInfo,
|
|
4
5
|
fetchGitHubTree,
|
|
5
6
|
GITHUB_COMMANDS,
|
|
6
7
|
GITHUB_PROMPT,
|
|
7
|
-
|
|
8
|
+
GITHUB_OPS,
|
|
8
9
|
GitHubAccessor,
|
|
9
10
|
HttpGitHubTransport,
|
|
10
11
|
PathSpec,
|
|
@@ -14,7 +15,7 @@ import {
|
|
|
14
15
|
githubPopulateIndex,
|
|
15
16
|
githubRead,
|
|
16
17
|
githubReaddir,
|
|
17
|
-
|
|
18
|
+
makeResolveGlob,
|
|
18
19
|
githubStat
|
|
19
20
|
} from "@struktoai/mirage-core";
|
|
20
21
|
|
|
@@ -37,9 +38,13 @@ function normalizeGitHubConfig(input) {
|
|
|
37
38
|
}
|
|
38
39
|
|
|
39
40
|
// src/resource/github/github.ts
|
|
41
|
+
var githubResolveGlob = makeResolveGlob(githubReaddir);
|
|
40
42
|
var GitHubResource = class _GitHubResource {
|
|
41
43
|
kind = ResourceName.GITHUB;
|
|
42
44
|
cachesReads = true;
|
|
45
|
+
// Blob shas are stable per-path markers, so cached reads can be
|
|
46
|
+
// probe-verified under ALWAYS and snapshots carry drift fingerprints.
|
|
47
|
+
supportsSnapshot = true;
|
|
43
48
|
indexTtl = 86400;
|
|
44
49
|
prompt = GITHUB_PROMPT;
|
|
45
50
|
config;
|
|
@@ -81,7 +86,7 @@ var GitHubResource = class _GitHubResource {
|
|
|
81
86
|
return GITHUB_COMMANDS;
|
|
82
87
|
}
|
|
83
88
|
ops() {
|
|
84
|
-
return
|
|
89
|
+
return GITHUB_OPS;
|
|
85
90
|
}
|
|
86
91
|
readFile(p) {
|
|
87
92
|
return githubRead(this.accessor, p, this.index);
|
|
@@ -92,18 +97,14 @@ var GitHubResource = class _GitHubResource {
|
|
|
92
97
|
stat(p) {
|
|
93
98
|
return githubStat(this.accessor, p, this.index);
|
|
94
99
|
}
|
|
95
|
-
async fingerprint(p) {
|
|
96
|
-
const lookup = await this.index.get(p.original);
|
|
97
|
-
return lookup.entry?.id ?? null;
|
|
98
|
-
}
|
|
99
100
|
glob(paths, prefix = "") {
|
|
100
101
|
const effective = prefix !== "" ? paths.map(
|
|
101
|
-
(p) => p.
|
|
102
|
-
|
|
102
|
+
(p) => mountPrefixOf(p.virtual, p.resourcePath) !== "" ? p : new PathSpec({
|
|
103
|
+
virtual: p.virtual,
|
|
103
104
|
directory: p.directory,
|
|
104
105
|
...p.pattern !== null ? { pattern: p.pattern } : {},
|
|
105
106
|
resolved: p.resolved,
|
|
106
|
-
prefix
|
|
107
|
+
resourcePath: mountKey(p.virtual, prefix)
|
|
107
108
|
})
|
|
108
109
|
) : paths;
|
|
109
110
|
return githubResolveGlob(this.accessor, effective, this.index);
|
|
@@ -126,4 +127,4 @@ export {
|
|
|
126
127
|
normalizeGitHubConfig,
|
|
127
128
|
GitHubResource
|
|
128
129
|
};
|
|
129
|
-
//# sourceMappingURL=chunk-
|
|
130
|
+
//# sourceMappingURL=chunk-PSEXJ5S5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/github/github.ts","../src/resource/github/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 fetchGitHubRepoInfo,\n fetchGitHubTree,\n type FileStat,\n GITHUB_COMMANDS,\n GITHUB_PROMPT,\n GITHUB_OPS,\n GitHubAccessor,\n HttpGitHubTransport,\n type IndexCacheStore,\n PathSpec,\n RAMIndexCacheStore,\n type RegisteredCommand,\n type RegisteredOp,\n type Resource,\n ResourceName,\n githubBuildTreeMap,\n githubPopulateIndex,\n githubRead,\n githubReaddir,\n makeResolveGlob,\n githubStat,\n} from '@struktoai/mirage-core'\nimport { redactGitHubConfig, type GitHubConfig, type GitHubConfigRedacted } from './config.ts'\n\nconst githubResolveGlob = makeResolveGlob(githubReaddir)\n\nexport interface GitHubResourceState {\n type: string\n config: GitHubConfigRedacted\n defaultBranch: string\n truncated: boolean\n}\n\nexport class GitHubResource implements Resource {\n readonly kind: string = ResourceName.GITHUB\n readonly cachesReads: boolean = true\n // Blob shas are stable per-path markers, so cached reads can be\n // probe-verified under ALWAYS and snapshots carry drift fingerprints.\n readonly supportsSnapshot: boolean = true\n readonly indexTtl: number = 86_400\n readonly prompt: string = GITHUB_PROMPT\n readonly config: GitHubConfig\n readonly accessor: GitHubAccessor\n readonly index: IndexCacheStore\n\n private constructor(config: GitHubConfig, accessor: GitHubAccessor, index: IndexCacheStore) {\n this.config = config\n this.accessor = accessor\n this.index = index\n }\n\n static async create(config: GitHubConfig): Promise<GitHubResource> {\n const transportOpts: { token: string; baseUrl?: string } = { token: config.token }\n if (config.baseUrl !== undefined) transportOpts.baseUrl = config.baseUrl\n const transport = new HttpGitHubTransport(transportOpts)\n const repoInfo = await fetchGitHubRepoInfo(transport, config.owner, config.repo)\n const ref = config.ref ?? repoInfo.default_branch\n const { tree, truncated } = await fetchGitHubTree(transport, config.owner, config.repo, ref)\n const treeMap = githubBuildTreeMap(tree)\n const accessor = new GitHubAccessor({\n transport,\n owner: config.owner,\n repo: config.repo,\n ref,\n defaultBranch: repoInfo.default_branch,\n truncated,\n tree: treeMap,\n })\n const index = new RAMIndexCacheStore({ ttl: 86_400 })\n await githubPopulateIndex(index, tree)\n return new GitHubResource(config, accessor, index)\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_COMMANDS\n }\n\n ops(): readonly RegisteredOp[] {\n return GITHUB_OPS\n }\n\n readFile(p: PathSpec): Promise<Uint8Array> {\n return githubRead(this.accessor, p, this.index)\n }\n\n readdir(p: PathSpec): Promise<string[]> {\n return githubReaddir(this.accessor, p, this.index)\n }\n\n stat(p: PathSpec): Promise<FileStat> {\n return githubStat(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 githubResolveGlob(this.accessor, effective, this.index)\n }\n\n getState(): Promise<GitHubResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactGitHubConfig(this.config),\n defaultBranch: this.accessor.defaultBranch,\n truncated: this.accessor.truncated,\n })\n }\n\n loadState(_state: GitHubResourceState): 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 { normalizeFields, redactConfigWithSchema, secretStr, z } from '@struktoai/mirage-core'\n\nexport interface GitHubConfig {\n token: string\n owner: string\n repo: string\n ref?: string\n baseUrl?: string\n}\n\nexport interface GitHubConfigRedacted {\n token: '<REDACTED>'\n owner: string\n repo: string\n ref?: string\n baseUrl?: string\n}\n\nconst GitHubConfigSchema = z.object({\n token: secretStr(),\n owner: z.string(),\n repo: z.string(),\n ref: z.string().optional(),\n baseUrl: z.string().optional(),\n})\n\nexport function redactGitHubConfig(config: GitHubConfig): GitHubConfigRedacted {\n return redactConfigWithSchema(GitHubConfigSchema, config) as unknown as GitHubConfigRedacted\n}\n\nexport function normalizeGitHubConfig(input: Record<string, unknown>): GitHubConfig {\n return normalizeFields(input, {\n rename: { base_url: 'baseUrl' },\n }) as unknown as GitHubConfig\n}\n"],"mappings":";AAcA,SAAS,UAAU,qBAAqB;AACxC;AAAA,EACE;AAAA,EACA;AAAA,EAEA;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,EACA;AAAA,OACK;;;ACvBP,SAAS,iBAAiB,wBAAwB,WAAW,SAAS;AAkBtE,IAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,OAAO,UAAU;AAAA,EACjB,OAAO,EAAE,OAAO;AAAA,EAChB,MAAM,EAAE,OAAO;AAAA,EACf,KAAK,EAAE,OAAO,EAAE,SAAS;AAAA,EACzB,SAAS,EAAE,OAAO,EAAE,SAAS;AAC/B,CAAC;AAEM,SAAS,mBAAmB,QAA4C;AAC7E,SAAO,uBAAuB,oBAAoB,MAAM;AAC1D;AAEO,SAAS,sBAAsB,OAA8C;AAClF,SAAO,gBAAgB,OAAO;AAAA,IAC5B,QAAQ,EAAE,UAAU,UAAU;AAAA,EAChC,CAAC;AACH;;;ADRA,IAAM,oBAAoB,gBAAgB,aAAa;AAShD,IAAM,iBAAN,MAAM,gBAAmC;AAAA,EACrC,OAAe,aAAa;AAAA,EAC5B,cAAuB;AAAA;AAAA;AAAA,EAGvB,mBAA4B;AAAA,EAC5B,WAAmB;AAAA,EACnB,SAAiB;AAAA,EACjB;AAAA,EACA;AAAA,EACA;AAAA,EAED,YAAY,QAAsB,UAA0B,OAAwB;AAC1F,SAAK,SAAS;AACd,SAAK,WAAW;AAChB,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,aAAa,OAAO,QAA+C;AACjE,UAAM,gBAAqD,EAAE,OAAO,OAAO,MAAM;AACjF,QAAI,OAAO,YAAY,OAAW,eAAc,UAAU,OAAO;AACjE,UAAM,YAAY,IAAI,oBAAoB,aAAa;AACvD,UAAM,WAAW,MAAM,oBAAoB,WAAW,OAAO,OAAO,OAAO,IAAI;AAC/E,UAAM,MAAM,OAAO,OAAO,SAAS;AACnC,UAAM,EAAE,MAAM,UAAU,IAAI,MAAM,gBAAgB,WAAW,OAAO,OAAO,OAAO,MAAM,GAAG;AAC3F,UAAM,UAAU,mBAAmB,IAAI;AACvC,UAAM,WAAW,IAAI,eAAe;AAAA,MAClC;AAAA,MACA,OAAO,OAAO;AAAA,MACd,MAAM,OAAO;AAAA,MACb;AAAA,MACA,eAAe,SAAS;AAAA,MACxB;AAAA,MACA,MAAM;AAAA,IACR,CAAC;AACD,UAAM,QAAQ,IAAI,mBAAmB,EAAE,KAAK,MAAO,CAAC;AACpD,UAAM,oBAAoB,OAAO,IAAI;AACrC,WAAO,IAAI,gBAAe,QAAQ,UAAU,KAAK;AAAA,EACnD;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,WAAW,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAChD;AAAA,EAEA,QAAQ,GAAgC;AACtC,WAAO,cAAc,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EACnD;AAAA,EAEA,KAAK,GAAgC;AACnC,WAAO,WAAW,KAAK,UAAU,GAAG,KAAK,KAAK;AAAA,EAChD;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,kBAAkB,KAAK,UAAU,WAAW,KAAK,KAAK;AAAA,EAC/D;AAAA,EAEA,WAAyC;AACvC,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,mBAAmB,KAAK,MAAM;AAAA,MACtC,eAAe,KAAK,SAAS;AAAA,MAC7B,WAAW,KAAK,SAAS;AAAA,IAC3B,CAAC;AAAA,EACH;AAAA,EAEA,UAAU,QAA4C;AACpD,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -3,7 +3,8 @@ import { normalizeFields, redactConfigWithSchema, secretStr, z } from "@struktoa
|
|
|
3
3
|
var GDriveConfigSchema = z.object({
|
|
4
4
|
clientId: z.string(),
|
|
5
5
|
clientSecret: secretStr().optional(),
|
|
6
|
-
refreshToken: secretStr()
|
|
6
|
+
refreshToken: secretStr(),
|
|
7
|
+
folderId: z.string().optional()
|
|
7
8
|
});
|
|
8
9
|
function redactGDriveConfig(config) {
|
|
9
10
|
return redactConfigWithSchema(GDriveConfigSchema, config);
|
|
@@ -13,14 +14,14 @@ function normalizeGDriveConfig(input) {
|
|
|
13
14
|
rename: {
|
|
14
15
|
client_id: "clientId",
|
|
15
16
|
client_secret: "clientSecret",
|
|
16
|
-
refresh_token: "refreshToken"
|
|
17
|
+
refresh_token: "refreshToken",
|
|
18
|
+
folder_id: "folderId"
|
|
17
19
|
}
|
|
18
20
|
});
|
|
19
21
|
}
|
|
20
22
|
|
|
21
23
|
export {
|
|
22
|
-
GDriveConfigSchema,
|
|
23
24
|
redactGDriveConfig,
|
|
24
25
|
normalizeGDriveConfig
|
|
25
26
|
};
|
|
26
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-QXJP6TWI.js.map
|
|
@@ -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\nimport { normalizeFields, redactConfigWithSchema, secretStr, z } from '@struktoai/mirage-core'\n\nexport interface GDriveConfig {\n clientId: string\n clientSecret?: string\n refreshToken: string\n refreshFn?: (refreshToken: string) => Promise<{ accessToken: string; expiresIn: number }>\n folderId?: string\n}\n\nexport interface GDriveConfigRedacted {\n clientId: string\n clientSecret?: '<REDACTED>'\n refreshToken: '<REDACTED>'\n}\n\nconst GDriveConfigSchema = z.object({\n clientId: z.string(),\n clientSecret: secretStr().optional(),\n refreshToken: secretStr(),\n folderId: z.string().optional(),\n})\n\nexport function redactGDriveConfig(config: GDriveConfig): GDriveConfigRedacted {\n return redactConfigWithSchema(GDriveConfigSchema, config) as unknown as GDriveConfigRedacted\n}\n\nexport function normalizeGDriveConfig(input: Record<string, unknown>): GDriveConfig {\n return normalizeFields(input, {\n rename: {\n client_id: 'clientId',\n client_secret: 'clientSecret',\n refresh_token: 'refreshToken',\n folder_id: 'folderId',\n },\n }) as unknown as GDriveConfig\n}\n"],"mappings":";AAcA,SAAS,iBAAiB,wBAAwB,WAAW,SAAS;AAgBtE,IAAM,qBAAqB,EAAE,OAAO;AAAA,EAClC,UAAU,EAAE,OAAO;AAAA,EACnB,cAAc,UAAU,EAAE,SAAS;AAAA,EACnC,cAAc,UAAU;AAAA,EACxB,UAAU,EAAE,OAAO,EAAE,SAAS;AAChC,CAAC;AAEM,SAAS,mBAAmB,QAA4C;AAC7E,SAAO,uBAAuB,oBAAoB,MAAM;AAC1D;AAEO,SAAS,sBAAsB,OAA8C;AAClF,SAAO,gBAAgB,OAAO;AAAA,IAC5B,QAAQ;AAAA,MACN,WAAW;AAAA,MACX,eAAe;AAAA,MACf,eAAe;AAAA,MACf,WAAW;AAAA,IACb;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
S3Resource
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DC6VA36O.js";
|
|
4
4
|
|
|
5
5
|
// src/resource/minio/minio.ts
|
|
6
6
|
import {
|
|
@@ -18,7 +18,8 @@ var MinIOConfigSchema = z.object({
|
|
|
18
18
|
),
|
|
19
19
|
endpoint: z.string().optional(),
|
|
20
20
|
region: z.string().optional(),
|
|
21
|
-
defaultContentType: z.string().optional()
|
|
21
|
+
defaultContentType: z.string().optional(),
|
|
22
|
+
keyPrefix: z.string().optional()
|
|
22
23
|
});
|
|
23
24
|
function minioToS3Config(config) {
|
|
24
25
|
return {
|
|
@@ -26,7 +27,8 @@ function minioToS3Config(config) {
|
|
|
26
27
|
presignedUrlProvider: config.presignedUrlProvider,
|
|
27
28
|
...config.region !== void 0 ? { region: config.region } : {},
|
|
28
29
|
...config.endpoint !== void 0 ? { endpoint: config.endpoint } : {},
|
|
29
|
-
...config.defaultContentType !== void 0 ? { defaultContentType: config.defaultContentType } : {}
|
|
30
|
+
...config.defaultContentType !== void 0 ? { defaultContentType: config.defaultContentType } : {},
|
|
31
|
+
...config.keyPrefix !== void 0 ? { keyPrefix: config.keyPrefix } : {}
|
|
30
32
|
};
|
|
31
33
|
}
|
|
32
34
|
function redactMinIOConfig(config) {
|
|
@@ -76,4 +78,4 @@ export {
|
|
|
76
78
|
MINIO_BROWSER_PROMPT,
|
|
77
79
|
MinIOResource
|
|
78
80
|
};
|
|
79
|
-
//# sourceMappingURL=chunk-
|
|
81
|
+
//# sourceMappingURL=chunk-TCFD6YJ5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/minio/minio.ts","../src/resource/minio/config.ts","../src/resource/minio/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 minioToS3Config,\n redactMinIOConfig,\n type MinIOConfig,\n type MinIOConfigRedacted,\n} from './config.ts'\nimport { MINIO_BROWSER_PROMPT } from './prompt.ts'\n\nexport interface MinIOResourceState {\n type: string\n config: MinIOConfigRedacted\n}\n\nexport class MinIOResource extends S3Resource {\n override readonly kind: string = ResourceName.MINIO\n override readonly prompt: string = MINIO_BROWSER_PROMPT\n readonly minioConfig: MinIOConfig\n private readonly minioOps: readonly RegisteredOp[]\n private readonly minioCommands: readonly RegisteredCommand[]\n\n constructor(config: MinIOConfig) {\n super(minioToS3Config(config))\n this.minioConfig = config\n this.minioOps = remapOpsResource(super.ops(), ResourceName.MINIO)\n this.minioCommands = remapCommandsResource(super.commands(), ResourceName.MINIO)\n }\n\n override ops(): readonly RegisteredOp[] {\n return this.minioOps\n }\n\n override commands(): readonly RegisteredCommand[] {\n return this.minioCommands\n }\n\n override getState(): Promise<MinIOResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactMinIOConfig(this.minioConfig),\n })\n }\n\n override loadState(_state: MinIOResourceState): 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 { redactConfigWithSchema, secretSchema, z } from '@struktoai/mirage-core'\nimport type { S3BrowserPresignedUrlProvider, S3Config } from '../s3/config.ts'\n\nexport interface MinIOConfig {\n bucket: string\n presignedUrlProvider: S3BrowserPresignedUrlProvider\n endpoint?: string\n region?: string\n defaultContentType?: string\n keyPrefix?: string\n}\n\nexport interface MinIOConfigRedacted extends Omit<MinIOConfig, 'presignedUrlProvider'> {\n presignedUrlProvider: '<REDACTED>'\n}\n\nconst MinIOConfigSchema = 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 function minioToS3Config(config: MinIOConfig): 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 redactMinIOConfig(config: MinIOConfig): MinIOConfigRedacted {\n return redactConfigWithSchema(MinIOConfigSchema, config) as unknown as MinIOConfigRedacted\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 MINIO_BROWSER_PROMPT = `{prefix}\n Remote MinIO 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,SAAS,wBAAwB,cAAc,SAAS;AAgBxD,IAAM,oBAAoB,EAAE,OAAO;AAAA,EACjC,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;AAEM,SAAS,gBAAgB,QAA+B;AAC7D,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,kBAAkB,QAA0C;AAC1E,SAAO,uBAAuB,mBAAmB,MAAM;AACzD;;;AC1CO,IAAM,uBAAuB;AAAA;AAAA;AAAA;AAAA;;;AFqB7B,IAAM,gBAAN,cAA4B,WAAW;AAAA,EAC1B,OAAe,aAAa;AAAA,EAC5B,SAAiB;AAAA,EAC1B;AAAA,EACQ;AAAA,EACA;AAAA,EAEjB,YAAY,QAAqB;AAC/B,UAAM,gBAAgB,MAAM,CAAC;AAC7B,SAAK,cAAc;AACnB,SAAK,WAAW,iBAAiB,MAAM,IAAI,GAAG,aAAa,KAAK;AAChE,SAAK,gBAAgB,sBAAsB,MAAM,SAAS,GAAG,aAAa,KAAK;AAAA,EACjF;AAAA,EAES,MAA+B;AACtC,WAAO,KAAK;AAAA,EACd;AAAA,EAES,WAAyC;AAChD,WAAO,KAAK;AAAA,EACd;AAAA,EAES,WAAwC;AAC/C,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,kBAAkB,KAAK,WAAW;AAAA,IAC5C,CAAC;AAAA,EACH;AAAA,EAES,UAAU,QAA2C;AAC5D,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
S3Resource
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-DC6VA36O.js";
|
|
4
4
|
|
|
5
5
|
// src/resource/tencent/tencent.ts
|
|
6
6
|
import {
|
|
@@ -18,7 +18,8 @@ var TencentConfigSchema = z.object({
|
|
|
18
18
|
),
|
|
19
19
|
region: z.string().optional(),
|
|
20
20
|
endpoint: z.string().optional(),
|
|
21
|
-
defaultContentType: z.string().optional()
|
|
21
|
+
defaultContentType: z.string().optional(),
|
|
22
|
+
keyPrefix: z.string().optional()
|
|
22
23
|
});
|
|
23
24
|
function resolvedTencentEndpoint(config) {
|
|
24
25
|
if (config.endpoint !== void 0 && config.endpoint !== "") return config.endpoint;
|
|
@@ -35,7 +36,8 @@ function tencentToS3Config(config) {
|
|
|
35
36
|
presignedUrlProvider: config.presignedUrlProvider,
|
|
36
37
|
...config.region !== void 0 ? { region: config.region } : {},
|
|
37
38
|
...endpoint !== void 0 ? { endpoint } : {},
|
|
38
|
-
...config.defaultContentType !== void 0 ? { defaultContentType: config.defaultContentType } : {}
|
|
39
|
+
...config.defaultContentType !== void 0 ? { defaultContentType: config.defaultContentType } : {},
|
|
40
|
+
...config.keyPrefix !== void 0 ? { keyPrefix: config.keyPrefix } : {}
|
|
39
41
|
};
|
|
40
42
|
}
|
|
41
43
|
function redactTencentConfig(config) {
|
|
@@ -86,4 +88,4 @@ export {
|
|
|
86
88
|
TENCENT_BROWSER_PROMPT,
|
|
87
89
|
TencentResource
|
|
88
90
|
};
|
|
89
|
-
//# sourceMappingURL=chunk-
|
|
91
|
+
//# sourceMappingURL=chunk-VASFK7V6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/resource/tencent/tencent.ts","../src/resource/tencent/config.ts","../src/resource/tencent/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 redactTencentConfig,\n tencentToS3Config,\n type TencentConfig,\n type TencentConfigRedacted,\n} from './config.ts'\nimport { TENCENT_BROWSER_PROMPT } from './prompt.ts'\n\nexport interface TencentResourceState {\n type: string\n config: TencentConfigRedacted\n}\n\nexport class TencentResource extends S3Resource {\n override readonly kind: string = ResourceName.TENCENT\n override readonly prompt: string = TENCENT_BROWSER_PROMPT\n readonly tencentConfig: TencentConfig\n private readonly tencentOps: readonly RegisteredOp[]\n private readonly tencentCommands: readonly RegisteredCommand[]\n\n constructor(config: TencentConfig) {\n super(tencentToS3Config(config))\n this.tencentConfig = config\n this.tencentOps = remapOpsResource(super.ops(), ResourceName.TENCENT)\n this.tencentCommands = remapCommandsResource(super.commands(), ResourceName.TENCENT)\n }\n\n override ops(): readonly RegisteredOp[] {\n return this.tencentOps\n }\n\n override commands(): readonly RegisteredCommand[] {\n return this.tencentCommands\n }\n\n override getState(): Promise<TencentResourceState> {\n return Promise.resolve({\n type: this.kind,\n config: redactTencentConfig(this.tencentConfig),\n })\n }\n\n override loadState(_state: TencentResourceState): 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 { redactConfigWithSchema, secretSchema, z } from '@struktoai/mirage-core'\nimport type { S3BrowserPresignedUrlProvider, S3Config } from '../s3/config.ts'\n\nexport interface TencentConfig {\n bucket: string\n presignedUrlProvider: S3BrowserPresignedUrlProvider\n region?: string\n endpoint?: string\n defaultContentType?: string\n keyPrefix?: string\n}\n\nexport interface TencentConfigRedacted extends Omit<TencentConfig, 'presignedUrlProvider'> {\n presignedUrlProvider: '<REDACTED>'\n}\n\nconst TencentConfigSchema = 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 function resolvedTencentEndpoint(config: TencentConfig): string | undefined {\n if (config.endpoint !== undefined && config.endpoint !== '') return config.endpoint\n if (config.region !== undefined && config.region !== '') {\n const region = config.region\n return `https://cos.${region}.myqcloud.com`\n }\n return undefined\n}\n\nexport function tencentToS3Config(config: TencentConfig): S3Config {\n const endpoint = resolvedTencentEndpoint(config)\n return {\n bucket: config.bucket,\n presignedUrlProvider: config.presignedUrlProvider,\n ...(config.region !== undefined ? { region: config.region } : {}),\n ...(endpoint !== undefined ? { endpoint } : {}),\n ...(config.defaultContentType !== undefined\n ? { defaultContentType: config.defaultContentType }\n : {}),\n ...(config.keyPrefix !== undefined ? { keyPrefix: config.keyPrefix } : {}),\n }\n}\n\nexport function redactTencentConfig(config: TencentConfig): TencentConfigRedacted {\n return redactConfigWithSchema(TencentConfigSchema, config) as unknown as TencentConfigRedacted\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 TENCENT_BROWSER_PROMPT = `{prefix}\n Remote Tencent Cloud COS 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,SAAS,wBAAwB,cAAc,SAAS;AAgBxD,IAAM,sBAAsB,EAAE,OAAO;AAAA,EACnC,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;AAEM,SAAS,wBAAwB,QAA2C;AACjF,MAAI,OAAO,aAAa,UAAa,OAAO,aAAa,GAAI,QAAO,OAAO;AAC3E,MAAI,OAAO,WAAW,UAAa,OAAO,WAAW,IAAI;AACvD,UAAM,SAAS,OAAO;AACtB,WAAO,eAAe,MAAM;AAAA,EAC9B;AACA,SAAO;AACT;AAEO,SAAS,kBAAkB,QAAiC;AACjE,QAAM,WAAW,wBAAwB,MAAM;AAC/C,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,aAAa,SAAY,EAAE,SAAS,IAAI,CAAC;AAAA,IAC7C,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,oBAAoB,QAA8C;AAChF,SAAO,uBAAuB,qBAAqB,MAAM;AAC3D;;;ACpDO,IAAM,yBAAyB;AAAA;AAAA;AAAA;AAAA;;;AFqB/B,IAAM,kBAAN,cAA8B,WAAW;AAAA,EAC5B,OAAe,aAAa;AAAA,EAC5B,SAAiB;AAAA,EAC1B;AAAA,EACQ;AAAA,EACA;AAAA,EAEjB,YAAY,QAAuB;AACjC,UAAM,kBAAkB,MAAM,CAAC;AAC/B,SAAK,gBAAgB;AACrB,SAAK,aAAa,iBAAiB,MAAM,IAAI,GAAG,aAAa,OAAO;AACpE,SAAK,kBAAkB,sBAAsB,MAAM,SAAS,GAAG,aAAa,OAAO;AAAA,EACrF;AAAA,EAES,MAA+B;AACtC,WAAO,KAAK;AAAA,EACd;AAAA,EAES,WAAyC;AAChD,WAAO,KAAK;AAAA,EACd;AAAA,EAES,WAA0C;AACjD,WAAO,QAAQ,QAAQ;AAAA,MACrB,MAAM,KAAK;AAAA,MACX,QAAQ,oBAAoB,KAAK,aAAa;AAAA,IAChD,CAAC;AAAA,EACH;AAAA,EAES,UAAU,QAA6C;AAC9D,WAAO,QAAQ,QAAQ;AAAA,EACzB;AACF;","names":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/resource/gslides/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 { normalizeFields, redactConfigWithSchema, secretStr, z } from '@struktoai/mirage-core'\n\nexport interface GSlidesConfig {\n clientId: string\n clientSecret?: string\n refreshToken: string\n refreshFn?: (refreshToken: string) => Promise<{ accessToken: string; expiresIn: number }>\n}\n\nexport interface GSlidesConfigRedacted {\n clientId: string\n clientSecret?: '<REDACTED>'\n refreshToken: '<REDACTED>'\n}\n\
|
|
1
|
+
{"version":3,"sources":["../src/resource/gslides/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 { normalizeFields, redactConfigWithSchema, secretStr, z } from '@struktoai/mirage-core'\n\nexport interface GSlidesConfig {\n clientId: string\n clientSecret?: string\n refreshToken: string\n refreshFn?: (refreshToken: string) => Promise<{ accessToken: string; expiresIn: number }>\n}\n\nexport interface GSlidesConfigRedacted {\n clientId: string\n clientSecret?: '<REDACTED>'\n refreshToken: '<REDACTED>'\n}\n\nconst GSlidesConfigSchema = z.object({\n clientId: z.string(),\n clientSecret: secretStr().optional(),\n refreshToken: secretStr(),\n})\n\nexport function redactGSlidesConfig(config: GSlidesConfig): GSlidesConfigRedacted {\n return redactConfigWithSchema(GSlidesConfigSchema, config) as unknown as GSlidesConfigRedacted\n}\n\nexport function normalizeGSlidesConfig(input: Record<string, unknown>): GSlidesConfig {\n return normalizeFields(input, {\n rename: {\n client_id: 'clientId',\n client_secret: 'clientSecret',\n refresh_token: 'refreshToken',\n },\n }) as unknown as GSlidesConfig\n}\n"],"mappings":";AAcA,SAAS,iBAAiB,wBAAwB,WAAW,SAAS;AAetE,IAAM,sBAAsB,EAAE,OAAO;AAAA,EACnC,UAAU,EAAE,OAAO;AAAA,EACnB,cAAc,UAAU,EAAE,SAAS;AAAA,EACnC,cAAc,UAAU;AAC1B,CAAC;AAEM,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,IACjB;AAAA,EACF,CAAC;AACH;","names":[]}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
GitHubCIConfigSchema,
|
|
3
2
|
normalizeGitHubCIConfig,
|
|
4
3
|
redactGitHubCIConfig
|
|
5
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DGP3N4WM.js";
|
|
6
5
|
export {
|
|
7
|
-
GitHubCIConfigSchema,
|
|
8
6
|
normalizeGitHubCIConfig,
|
|
9
7
|
redactGitHubCIConfig
|
|
10
8
|
};
|
|
11
|
-
//# sourceMappingURL=config-
|
|
9
|
+
//# sourceMappingURL=config-MHBKYS53.js.map
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
GoogleConfigSchema,
|
|
3
2
|
normalizeGoogleConfig,
|
|
4
3
|
redactGoogleConfig
|
|
5
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-LPDLPRPS.js";
|
|
6
5
|
export {
|
|
7
|
-
GoogleConfigSchema as GmailConfigSchema,
|
|
8
6
|
normalizeGoogleConfig as normalizeGmailConfig,
|
|
9
7
|
redactGoogleConfig as redactGmailConfig
|
|
10
8
|
};
|
|
11
|
-
//# sourceMappingURL=config-
|
|
9
|
+
//# sourceMappingURL=config-UU27ALAA.js.map
|