@vm0/cli 9.245.9 → 9.246.0
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/{agent-MIYZUPVU.js → agent-LLWRGB35.js} +5 -5
- package/{banking-DTGDYQDJ.js → banking-QYHIBCN3.js} +3 -3
- package/{chat-N2D2YYSA.js → chat-EQLPGPH3.js} +4 -4
- package/{chunk-4FUMNBD5.js → chunk-DVM3A5IM.js} +4 -4
- package/{chunk-F2VZWS5W.js → chunk-MBABRJV4.js} +2 -2
- package/{chunk-VONKCLG6.js → chunk-NNQ22JQZ.js} +2 -2
- package/{chunk-P2NGZFRH.js → chunk-OJSHU7HM.js} +80 -7
- package/chunk-OJSHU7HM.js.map +1 -0
- package/{chunk-YZ3GAWIH.js → chunk-R72KTUBX.js} +2 -2
- package/{chunk-HZXFAXZ7.js → chunk-TBX3YOFU.js} +23 -3
- package/chunk-TBX3YOFU.js.map +1 -0
- package/{chunk-QPMX7UE4.js → chunk-TR7VWRFE.js} +2 -2
- package/{chunk-EBSOAQFY.js → chunk-WKNVA3NQ.js} +2 -2
- package/{computer-use-AWXLV7M6.js → computer-use-IPMSWG2L.js} +3 -3
- package/{connector-PWOHND4R.js → connector-BVLUBDF2.js} +6 -6
- package/{credit-2YU6VGRX.js → credit-UJFFUIG3.js} +4 -4
- package/{developer-support-IW2IR2CG.js → developer-support-FA37JDLO.js} +3 -3
- package/{doctor-NEHZXACI.js → doctor-EVTOKSRU.js} +3 -3
- package/{generate-FWS5ACOH.js → generate-MHKXFGQZ.js} +4 -4
- package/{github-CTPZCA5T.js → github-BWKIQE2K.js} +3 -3
- package/{goal-TSB3VBL4.js → goal-BNTT2GCU.js} +3 -3
- package/{host-PKANXY23.js → host-2QZZRK6F.js} +106 -17
- package/host-2QZZRK6F.js.map +1 -0
- package/{logs-3TW7BZRE.js → logs-AUAXI6ZE.js} +4 -4
- package/{mail-FNUVMQEM.js → mail-7B7L7M4G.js} +5 -5
- package/{maps-5C3A3FTV.js → maps-BGHDHGH2.js} +3 -3
- package/{model-PJ2CYSKG.js → model-F36BHKAJ.js} +4 -4
- package/{model-provider-ETWLSRCF.js → model-provider-MMCMHZFS.js} +4 -4
- package/{org-OAQCALEB.js → org-LCRTXS6V.js} +3 -3
- package/package.json +1 -1
- package/{phone-ROFOJPIZ.js → phone-PG342VP7.js} +3 -3
- package/{preference-6KH3S3NL.js → preference-OE4N2QBX.js} +3 -3
- package/{resource-REBUQJL6.js → resource-E26K6CQ5.js} +3 -3
- package/{scrape-7KZHM3CS.js → scrape-WM3PKHWH.js} +3 -3
- package/{search-CIHZYFBB.js → search-X445TOTR.js} +4 -4
- package/{secret-D2VZKBSY.js → secret-PKL2FGTL.js} +3 -3
- package/{slack-DSSSH24B.js → slack-RFHK67YD.js} +3 -3
- package/{teams-2UFGWENW.js → teams-2QWRC42Q.js} +3 -3
- package/{telegram-SZIZEMIO.js → telegram-NLQ475PI.js} +3 -3
- package/{variable-RXXRVG5G.js → variable-P2YUAWRY.js} +3 -3
- package/{video-LMYW2LPU.js → video-O3ZHNXJC.js} +2 -2
- package/{web-OI5PQTYN.js → web-A4D2UDY2.js} +3 -3
- package/{web-search-UBVNXAQS.js → web-search-DJ2FOFVE.js} +3 -3
- package/{whoami-HYFT446B.js → whoami-5667CBQ4.js} +5 -5
- package/{workflow-HVFS4R2Z.js → workflow-7N2ZOQ2I.js} +3 -3
- package/zero.js +36 -36
- package/chunk-HZXFAXZ7.js.map +0 -1
- package/chunk-P2NGZFRH.js.map +0 -1
- package/host-PKANXY23.js.map +0 -1
- /package/{agent-MIYZUPVU.js.map → agent-LLWRGB35.js.map} +0 -0
- /package/{banking-DTGDYQDJ.js.map → banking-QYHIBCN3.js.map} +0 -0
- /package/{chat-N2D2YYSA.js.map → chat-EQLPGPH3.js.map} +0 -0
- /package/{chunk-4FUMNBD5.js.map → chunk-DVM3A5IM.js.map} +0 -0
- /package/{chunk-F2VZWS5W.js.map → chunk-MBABRJV4.js.map} +0 -0
- /package/{chunk-VONKCLG6.js.map → chunk-NNQ22JQZ.js.map} +0 -0
- /package/{chunk-YZ3GAWIH.js.map → chunk-R72KTUBX.js.map} +0 -0
- /package/{chunk-QPMX7UE4.js.map → chunk-TR7VWRFE.js.map} +0 -0
- /package/{chunk-EBSOAQFY.js.map → chunk-WKNVA3NQ.js.map} +0 -0
- /package/{computer-use-AWXLV7M6.js.map → computer-use-IPMSWG2L.js.map} +0 -0
- /package/{connector-PWOHND4R.js.map → connector-BVLUBDF2.js.map} +0 -0
- /package/{credit-2YU6VGRX.js.map → credit-UJFFUIG3.js.map} +0 -0
- /package/{developer-support-IW2IR2CG.js.map → developer-support-FA37JDLO.js.map} +0 -0
- /package/{doctor-NEHZXACI.js.map → doctor-EVTOKSRU.js.map} +0 -0
- /package/{generate-FWS5ACOH.js.map → generate-MHKXFGQZ.js.map} +0 -0
- /package/{github-CTPZCA5T.js.map → github-BWKIQE2K.js.map} +0 -0
- /package/{goal-TSB3VBL4.js.map → goal-BNTT2GCU.js.map} +0 -0
- /package/{logs-3TW7BZRE.js.map → logs-AUAXI6ZE.js.map} +0 -0
- /package/{mail-FNUVMQEM.js.map → mail-7B7L7M4G.js.map} +0 -0
- /package/{maps-5C3A3FTV.js.map → maps-BGHDHGH2.js.map} +0 -0
- /package/{model-PJ2CYSKG.js.map → model-F36BHKAJ.js.map} +0 -0
- /package/{model-provider-ETWLSRCF.js.map → model-provider-MMCMHZFS.js.map} +0 -0
- /package/{org-OAQCALEB.js.map → org-LCRTXS6V.js.map} +0 -0
- /package/{phone-ROFOJPIZ.js.map → phone-PG342VP7.js.map} +0 -0
- /package/{preference-6KH3S3NL.js.map → preference-OE4N2QBX.js.map} +0 -0
- /package/{resource-REBUQJL6.js.map → resource-E26K6CQ5.js.map} +0 -0
- /package/{scrape-7KZHM3CS.js.map → scrape-WM3PKHWH.js.map} +0 -0
- /package/{search-CIHZYFBB.js.map → search-X445TOTR.js.map} +0 -0
- /package/{secret-D2VZKBSY.js.map → secret-PKL2FGTL.js.map} +0 -0
- /package/{slack-DSSSH24B.js.map → slack-RFHK67YD.js.map} +0 -0
- /package/{teams-2UFGWENW.js.map → teams-2QWRC42Q.js.map} +0 -0
- /package/{telegram-SZIZEMIO.js.map → telegram-NLQ475PI.js.map} +0 -0
- /package/{variable-RXXRVG5G.js.map → variable-P2YUAWRY.js.map} +0 -0
- /package/{video-LMYW2LPU.js.map → video-O3ZHNXJC.js.map} +0 -0
- /package/{web-OI5PQTYN.js.map → web-A4D2UDY2.js.map} +0 -0
- /package/{web-search-UBVNXAQS.js.map → web-search-DJ2FOFVE.js.map} +0 -0
- /package/{whoami-HYFT446B.js.map → whoami-5667CBQ4.js.map} +0 -0
- /package/{workflow-HVFS4R2Z.js.map → workflow-7N2ZOQ2I.js.map} +0 -0
|
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
MODEL_PROVIDER_TYPES
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MBABRJV4.js";
|
|
7
7
|
import {
|
|
8
8
|
init_esm_shims
|
|
9
9
|
} from "./chunk-DIRAZ3YX.js";
|
|
@@ -40,4 +40,4 @@ export {
|
|
|
40
40
|
formatModelProviderRoute,
|
|
41
41
|
formatModelPolicyStatus
|
|
42
42
|
};
|
|
43
|
-
//# sourceMappingURL=chunk-
|
|
43
|
+
//# sourceMappingURL=chunk-TR7VWRFE.js.map
|
|
@@ -4,7 +4,7 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
getZeroAgent,
|
|
6
6
|
getZeroAgentUserConnectors
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-OJSHU7HM.js";
|
|
8
8
|
import {
|
|
9
9
|
init_esm_shims
|
|
10
10
|
} from "./chunk-DIRAZ3YX.js";
|
|
@@ -265,4 +265,4 @@ export {
|
|
|
265
265
|
resolveManualGrantAuthMethod,
|
|
266
266
|
resolveAgentContext
|
|
267
267
|
};
|
|
268
|
-
//# sourceMappingURL=chunk-
|
|
268
|
+
//# sourceMappingURL=chunk-WKNVA3NQ.js.map
|
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
fetchComputerUseScreenshot,
|
|
13
13
|
getComputerUseCommand,
|
|
14
14
|
listComputerUseHosts
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-OJSHU7HM.js";
|
|
16
16
|
import {
|
|
17
17
|
ApiRequestError,
|
|
18
18
|
withErrorHandler
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MBABRJV4.js";
|
|
20
20
|
import "./chunk-LRHXR7JT.js";
|
|
21
21
|
import {
|
|
22
22
|
Command
|
|
@@ -969,4 +969,4 @@ export {
|
|
|
969
969
|
formatComputerUseResultForConsole,
|
|
970
970
|
zeroComputerUseCommand
|
|
971
971
|
};
|
|
972
|
-
//# sourceMappingURL=computer-use-
|
|
972
|
+
//# sourceMappingURL=computer-use-IPMSWG2L.js.map
|
|
@@ -3,18 +3,18 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
findFirewallMetadataPermission
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-NNQ22JQZ.js";
|
|
7
7
|
import {
|
|
8
8
|
availableConnectorRefs,
|
|
9
9
|
findConnectorStatusItem,
|
|
10
10
|
resolveAgentContext,
|
|
11
11
|
resolveManualGrantAuthMethod,
|
|
12
12
|
searchPublicConnectorCatalog
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-WKNVA3NQ.js";
|
|
14
14
|
import {
|
|
15
15
|
getPlatformOrigin,
|
|
16
16
|
toPlatformUrl
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-R72KTUBX.js";
|
|
18
18
|
import {
|
|
19
19
|
UNKNOWN_PERMISSION_GRANT,
|
|
20
20
|
connectZeroConnectorManualGrant,
|
|
@@ -29,14 +29,14 @@ import {
|
|
|
29
29
|
getZeroCustomConnector,
|
|
30
30
|
listZeroConnectorCatalogStatus,
|
|
31
31
|
listZeroCustomConnectors
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-OJSHU7HM.js";
|
|
33
33
|
import "./chunk-LTDQISD7.js";
|
|
34
34
|
import {
|
|
35
35
|
ApiRequestError,
|
|
36
36
|
getApiUrl,
|
|
37
37
|
source_default,
|
|
38
38
|
withErrorHandler
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-MBABRJV4.js";
|
|
40
40
|
import "./chunk-LRHXR7JT.js";
|
|
41
41
|
import {
|
|
42
42
|
Command,
|
|
@@ -1556,4 +1556,4 @@ var zeroConnectorCommand = new Command().name("connector").description("Manage a
|
|
|
1556
1556
|
export {
|
|
1557
1557
|
zeroConnectorCommand
|
|
1558
1558
|
};
|
|
1559
|
-
//# sourceMappingURL=connector-
|
|
1559
|
+
//# sourceMappingURL=connector-BVLUBDF2.js.map
|
|
@@ -3,17 +3,17 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
getPlatformOrigin
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-R72KTUBX.js";
|
|
7
7
|
import {
|
|
8
8
|
createZeroCreditCheckout,
|
|
9
9
|
getZeroBillingStatus,
|
|
10
10
|
getZeroOrgMembers
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-OJSHU7HM.js";
|
|
12
12
|
import "./chunk-LTDQISD7.js";
|
|
13
13
|
import {
|
|
14
14
|
source_default,
|
|
15
15
|
withErrorHandler
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-MBABRJV4.js";
|
|
17
17
|
import {
|
|
18
18
|
decodeZeroTokenPayload
|
|
19
19
|
} from "./chunk-LRHXR7JT.js";
|
|
@@ -125,4 +125,4 @@ var zeroCreditCommand = new Command().name("credit").description("View credit ba
|
|
|
125
125
|
export {
|
|
126
126
|
zeroCreditCommand
|
|
127
127
|
};
|
|
128
|
-
//# sourceMappingURL=credit-
|
|
128
|
+
//# sourceMappingURL=credit-UJFFUIG3.js.map
|
|
@@ -4,11 +4,11 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
requestDeveloperSupportConsent,
|
|
6
6
|
submitDeveloperSupport
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-OJSHU7HM.js";
|
|
8
8
|
import "./chunk-LTDQISD7.js";
|
|
9
9
|
import {
|
|
10
10
|
withErrorHandler
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MBABRJV4.js";
|
|
12
12
|
import "./chunk-LRHXR7JT.js";
|
|
13
13
|
import {
|
|
14
14
|
Command
|
|
@@ -60,4 +60,4 @@ Notes:
|
|
|
60
60
|
export {
|
|
61
61
|
zeroDeveloperSupportCommand
|
|
62
62
|
};
|
|
63
|
-
//# sourceMappingURL=developer-support-
|
|
63
|
+
//# sourceMappingURL=developer-support-FA37JDLO.js.map
|
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
getZeroBillingStatus,
|
|
6
6
|
getZeroOrg,
|
|
7
7
|
getZeroOrgMembers
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OJSHU7HM.js";
|
|
9
9
|
import "./chunk-LTDQISD7.js";
|
|
10
10
|
import {
|
|
11
11
|
source_default,
|
|
12
12
|
withErrorHandler
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-MBABRJV4.js";
|
|
14
14
|
import "./chunk-LRHXR7JT.js";
|
|
15
15
|
import {
|
|
16
16
|
Command
|
|
@@ -96,4 +96,4 @@ Notes:
|
|
|
96
96
|
export {
|
|
97
97
|
zeroDoctorCommand
|
|
98
98
|
};
|
|
99
|
-
//# sourceMappingURL=doctor-
|
|
99
|
+
//# sourceMappingURL=doctor-EVTOKSRU.js.map
|
|
@@ -20,12 +20,12 @@ import {
|
|
|
20
20
|
} from "./chunk-RTYT3CSZ.js";
|
|
21
21
|
import {
|
|
22
22
|
getPlatformOrigin
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-R72KTUBX.js";
|
|
24
24
|
import {
|
|
25
25
|
getZeroAgentUserConnectors,
|
|
26
26
|
listZeroConnectorCatalog,
|
|
27
27
|
listZeroConnectorCatalogStatus
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-OJSHU7HM.js";
|
|
29
29
|
import "./chunk-LTDQISD7.js";
|
|
30
30
|
import {
|
|
31
31
|
generateWebImage,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
generateWebVoice,
|
|
34
34
|
source_default,
|
|
35
35
|
withErrorHandler
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-MBABRJV4.js";
|
|
37
37
|
import "./chunk-LRHXR7JT.js";
|
|
38
38
|
import {
|
|
39
39
|
Command,
|
|
@@ -2696,4 +2696,4 @@ var generateCommand = new Command().name("generate").description(
|
|
|
2696
2696
|
export {
|
|
2697
2697
|
generateCommand
|
|
2698
2698
|
};
|
|
2699
|
-
//# sourceMappingURL=generate-
|
|
2699
|
+
//# sourceMappingURL=generate-MHKXFGQZ.js.map
|
|
@@ -5,11 +5,11 @@ import {
|
|
|
5
5
|
completeGithubFileUpload,
|
|
6
6
|
downloadGithubFile,
|
|
7
7
|
initGithubFileUpload
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-OJSHU7HM.js";
|
|
9
9
|
import "./chunk-LTDQISD7.js";
|
|
10
10
|
import {
|
|
11
11
|
withErrorHandler
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-MBABRJV4.js";
|
|
13
13
|
import "./chunk-LRHXR7JT.js";
|
|
14
14
|
import {
|
|
15
15
|
Command
|
|
@@ -200,4 +200,4 @@ Examples:
|
|
|
200
200
|
export {
|
|
201
201
|
zeroGithubCommand
|
|
202
202
|
};
|
|
203
|
-
//# sourceMappingURL=github-
|
|
203
|
+
//# sourceMappingURL=github-BWKIQE2K.js.map
|
|
@@ -10,11 +10,11 @@ import {
|
|
|
10
10
|
getGoal,
|
|
11
11
|
pauseGoal,
|
|
12
12
|
resumeGoal
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-OJSHU7HM.js";
|
|
14
14
|
import "./chunk-LTDQISD7.js";
|
|
15
15
|
import {
|
|
16
16
|
withErrorHandler
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-MBABRJV4.js";
|
|
18
18
|
import "./chunk-LRHXR7JT.js";
|
|
19
19
|
import {
|
|
20
20
|
Command
|
|
@@ -77,4 +77,4 @@ var zeroGoalCommand = new Command().name("goal").description("Manage the current
|
|
|
77
77
|
export {
|
|
78
78
|
zeroGoalCommand
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=goal-
|
|
80
|
+
//# sourceMappingURL=goal-BNTT2GCU.js.map
|
|
@@ -3,18 +3,20 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
completeHostedSite,
|
|
6
|
+
getHostedSiteDeployments,
|
|
6
7
|
getHostedSiteFiles,
|
|
7
8
|
hostedArtifactKindSchema,
|
|
8
9
|
prepareHostedSite
|
|
9
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-OJSHU7HM.js";
|
|
10
11
|
import "./chunk-LTDQISD7.js";
|
|
11
12
|
import {
|
|
12
13
|
source_default,
|
|
13
14
|
withErrorHandler
|
|
14
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-MBABRJV4.js";
|
|
15
16
|
import "./chunk-LRHXR7JT.js";
|
|
16
17
|
import {
|
|
17
|
-
Command
|
|
18
|
+
Command,
|
|
19
|
+
InvalidArgumentError
|
|
18
20
|
} from "./chunk-B3W2RUBP.js";
|
|
19
21
|
import {
|
|
20
22
|
init_esm_shims
|
|
@@ -327,6 +329,11 @@ async function publishStaticSite(options) {
|
|
|
327
329
|
deploymentId: completed.deploymentId,
|
|
328
330
|
publicSlug: completed.publicSlug,
|
|
329
331
|
url: completed.url,
|
|
332
|
+
...completed.deploymentVersion === void 0 ? {} : { deploymentVersion: completed.deploymentVersion },
|
|
333
|
+
...completed.artifactUrl === void 0 ? {} : { artifactUrl: completed.artifactUrl },
|
|
334
|
+
...completed.aliasUrl === void 0 ? {} : { aliasUrl: completed.aliasUrl },
|
|
335
|
+
...completed.isActive === void 0 ? {} : { isActive: completed.isActive },
|
|
336
|
+
...completed.activeDeploymentVersion === void 0 ? {} : { activeDeploymentVersion: completed.activeDeploymentVersion },
|
|
330
337
|
fileCount: scan.files.length,
|
|
331
338
|
size: totalSize
|
|
332
339
|
};
|
|
@@ -426,7 +433,7 @@ async function cloneHostedSite(options) {
|
|
|
426
433
|
throw new Error(`Directory "${options.destination}" is not empty`);
|
|
427
434
|
}
|
|
428
435
|
options.onProgress?.({ phase: "checking" });
|
|
429
|
-
const hostedSite = await getHostedSiteFiles(publicSlug);
|
|
436
|
+
const hostedSite = await getHostedSiteFiles(publicSlug, options.version);
|
|
430
437
|
options.onProgress?.({
|
|
431
438
|
phase: "creating",
|
|
432
439
|
fileCount: hostedSite.fileCount
|
|
@@ -441,6 +448,8 @@ async function cloneHostedSite(options) {
|
|
|
441
448
|
deploymentId: hostedSite.deploymentId,
|
|
442
449
|
publicSlug: hostedSite.publicSlug,
|
|
443
450
|
url: hostedSite.url,
|
|
451
|
+
...hostedSite.deploymentVersion === void 0 ? {} : { deploymentVersion: hostedSite.deploymentVersion },
|
|
452
|
+
...hostedSite.artifactUrl === void 0 ? {} : { artifactUrl: hostedSite.artifactUrl },
|
|
444
453
|
destination: options.destination,
|
|
445
454
|
fileCount: hostedSite.fileCount,
|
|
446
455
|
size: hostedSite.size
|
|
@@ -448,17 +457,30 @@ async function cloneHostedSite(options) {
|
|
|
448
457
|
}
|
|
449
458
|
|
|
450
459
|
// src/commands/zero/host/clone.ts
|
|
460
|
+
function parseVersion(value) {
|
|
461
|
+
const version = Number(value);
|
|
462
|
+
if (!Number.isSafeInteger(version) || version <= 0) {
|
|
463
|
+
throw new InvalidArgumentError("version must be a positive integer");
|
|
464
|
+
}
|
|
465
|
+
return version;
|
|
466
|
+
}
|
|
451
467
|
function jsonOption(options, command) {
|
|
452
468
|
const parentOptions = command.parent?.opts();
|
|
453
469
|
return Boolean(options.json || parentOptions?.json);
|
|
454
470
|
}
|
|
455
|
-
var cloneHostedSiteCommand = new Command().name("clone").description("Clone an owned hosted
|
|
471
|
+
var cloneHostedSiteCommand = new Command().name("clone").description("Clone an owned hosted-site version to a local directory").argument("<site>", "Hosted site public slug or URL").argument("[destination]", "Destination directory (default: public slug)").option(
|
|
472
|
+
"--version <number>",
|
|
473
|
+
"Clone a specific artifact version",
|
|
474
|
+
parseVersion
|
|
475
|
+
).option("--json", "Output only the final result as JSON").addHelpText(
|
|
456
476
|
"after",
|
|
457
477
|
`
|
|
458
478
|
Examples:
|
|
459
|
-
Clone by public slug: zero host clone my-site
|
|
460
|
-
Clone by hosted URL: zero host clone https://my-site
|
|
461
|
-
|
|
479
|
+
Clone by public slug: zero host clone my-site
|
|
480
|
+
Clone by hosted URL: zero host clone https://my-site.sites.example.com ./site
|
|
481
|
+
Clone an artifact URL: zero host clone https://dpl-<deployment-id>.sites.example.com ./site
|
|
482
|
+
Clone version 2: zero host clone my-site --version 2
|
|
483
|
+
Machine readable: zero host clone my-site --json
|
|
462
484
|
|
|
463
485
|
Notes:
|
|
464
486
|
- Authenticates via ZERO_TOKEN (requires host:read capability)
|
|
@@ -473,6 +495,7 @@ Notes:
|
|
|
473
495
|
const result = await cloneHostedSite({
|
|
474
496
|
site,
|
|
475
497
|
destination: targetDir,
|
|
498
|
+
...options.version === void 0 ? {} : { version: options.version },
|
|
476
499
|
onProgress: json ? void 0 : (progress) => {
|
|
477
500
|
if (progress.phase === "checking") {
|
|
478
501
|
console.log(source_default.dim("Checking hosted site..."));
|
|
@@ -495,11 +518,62 @@ Notes:
|
|
|
495
518
|
}
|
|
496
519
|
console.log(source_default.green("\u2713 Hosted site cloned"));
|
|
497
520
|
console.log(source_default.dim(` Site: ${result.publicSlug}`));
|
|
521
|
+
if (result.deploymentVersion !== void 0) {
|
|
522
|
+
console.log(source_default.dim(` Version: v${result.deploymentVersion}`));
|
|
523
|
+
}
|
|
498
524
|
console.log(source_default.dim(` Deployment: ${result.deploymentId}`));
|
|
499
525
|
console.log(source_default.dim(` Files: ${result.fileCount.toLocaleString()}`));
|
|
500
526
|
console.log(source_default.dim(` Size: ${formatBytes(result.size)}`));
|
|
501
527
|
console.log(source_default.dim(` Location: ${result.destination}/`));
|
|
502
|
-
console.log(` URL: ${result.url}`);
|
|
528
|
+
console.log(` URL: ${result.artifactUrl ?? result.url}`);
|
|
529
|
+
}
|
|
530
|
+
)
|
|
531
|
+
);
|
|
532
|
+
|
|
533
|
+
// src/commands/zero/host/versions.ts
|
|
534
|
+
init_esm_shims();
|
|
535
|
+
function jsonOption2(options, command) {
|
|
536
|
+
const parentOptions = command.parent?.opts();
|
|
537
|
+
return Boolean(options.json || parentOptions?.json);
|
|
538
|
+
}
|
|
539
|
+
var versionsHostedSiteCommand = new Command().name("versions").description("List immutable artifact versions for an owned hosted site").argument("<site>", "Logical site slug").option("--json", "Output only the result as JSON").addHelpText(
|
|
540
|
+
"after",
|
|
541
|
+
`
|
|
542
|
+
Examples:
|
|
543
|
+
List versions: zero host versions my-product-demo
|
|
544
|
+
Machine readable: zero host versions my-product-demo --json
|
|
545
|
+
|
|
546
|
+
Notes:
|
|
547
|
+
- Authenticates via ZERO_TOKEN and requires host:read
|
|
548
|
+
- Requires hosted artifact versions to be enabled for the current user
|
|
549
|
+
- The active marker identifies the version served by the site alias`
|
|
550
|
+
).action(
|
|
551
|
+
withErrorHandler(
|
|
552
|
+
async (site, options, command) => {
|
|
553
|
+
const result = await getHostedSiteDeployments(site);
|
|
554
|
+
if (jsonOption2(options, command)) {
|
|
555
|
+
console.log(JSON.stringify(result));
|
|
556
|
+
return;
|
|
557
|
+
}
|
|
558
|
+
console.log(source_default.bold(`Hosted site versions: ${result.site}`));
|
|
559
|
+
console.log(source_default.dim(`Alias: ${result.aliasUrl}`));
|
|
560
|
+
if (result.deployments.length === 0) {
|
|
561
|
+
console.log(source_default.dim("No deployments found"));
|
|
562
|
+
console.log(
|
|
563
|
+
source_default.dim(
|
|
564
|
+
`Publish one with: zero host <dir> --site ${result.site}`
|
|
565
|
+
)
|
|
566
|
+
);
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
for (const deployment of result.deployments) {
|
|
570
|
+
const marker = deployment.isActive ? source_default.green("* ") : " ";
|
|
571
|
+
const version = deployment.deploymentVersion === null ? "legacy" : `v${deployment.deploymentVersion}`;
|
|
572
|
+
const url = deployment.artifactUrl ?? result.aliasUrl;
|
|
573
|
+
console.log(
|
|
574
|
+
`${marker}${version} ${deployment.status} ${deployment.createdAt} ${url}`
|
|
575
|
+
);
|
|
576
|
+
}
|
|
503
577
|
}
|
|
504
578
|
)
|
|
505
579
|
);
|
|
@@ -513,22 +587,25 @@ function formatBytes2(bytes) {
|
|
|
513
587
|
if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;
|
|
514
588
|
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
515
589
|
}
|
|
516
|
-
var zeroHostCommand = new Command().name("host").description("Publish
|
|
590
|
+
var zeroHostCommand = new Command().name("host").description("Publish and inspect owned static hosted sites").argument("<dir>", "Static build directory, for example ./dist").option("--site <slug>", "Public site slug, e.g. my-product-demo").option("--slug-suffix <suffix>", "Reuse a legacy generated site URL suffix").option(
|
|
517
591
|
"--artifact-kind <kind>",
|
|
518
592
|
"Artifact kind to record for this hosted deployment",
|
|
519
593
|
parseArtifactKind
|
|
520
|
-
).option("--spa", "Serve unknown HTML navigation paths from index.html").option("--json", "Output only the final result as JSON").addCommand(cloneHostedSiteCommand).addHelpText(
|
|
594
|
+
).option("--spa", "Serve unknown HTML navigation paths from index.html").option("--json", "Output only the final result as JSON").addCommand(cloneHostedSiteCommand).addCommand(versionsHostedSiteCommand).addHelpText(
|
|
521
595
|
"after",
|
|
522
596
|
`
|
|
523
597
|
Examples:
|
|
524
598
|
Publish a Vite build: zero host ./dist --site my-product-demo --spa
|
|
525
|
-
|
|
526
|
-
|
|
599
|
+
Publish next version: zero host ./dist --site my-product-demo --spa
|
|
600
|
+
Reuse a legacy URL: zero host ./dist --site my-product-demo --slug-suffix release-01 --spa
|
|
601
|
+
List site versions: zero host versions my-product-demo
|
|
602
|
+
Clone a hosted site: zero host clone my-product-demo ./site
|
|
527
603
|
Machine readable: zero host ./dist --site my-product-demo --spa --json
|
|
528
604
|
|
|
529
605
|
Notes:
|
|
530
606
|
- Authenticates via ZERO_TOKEN (publish requires host:write; clone requires host:read)
|
|
531
|
-
-
|
|
607
|
+
- With hosted artifact versions enabled, reusing --site publishes behind the same alias
|
|
608
|
+
- Otherwise, reuse both --site and --slug-suffix to keep a legacy URL
|
|
532
609
|
- The directory must include index.html
|
|
533
610
|
- Local HTML/CSS asset references must point at files inside the directory`
|
|
534
611
|
).action(
|
|
@@ -556,15 +633,27 @@ Notes:
|
|
|
556
633
|
console.log(JSON.stringify(result));
|
|
557
634
|
return;
|
|
558
635
|
}
|
|
559
|
-
console.log(source_default.green("\u2713 Hosted site
|
|
636
|
+
console.log(source_default.green("\u2713 Hosted site deployed"));
|
|
560
637
|
console.log(source_default.dim(` Site: ${result.publicSlug}`));
|
|
638
|
+
if (result.deploymentVersion !== void 0) {
|
|
639
|
+
console.log(source_default.dim(` Version: v${result.deploymentVersion}`));
|
|
640
|
+
}
|
|
641
|
+
if (result.artifactUrl) {
|
|
642
|
+
console.log(` Artifact: ${result.artifactUrl}`);
|
|
643
|
+
}
|
|
644
|
+
if (result.aliasUrl) {
|
|
645
|
+
const target = result.isActive === false && result.activeDeploymentVersion !== void 0 ? `remains on v${result.activeDeploymentVersion}` : `v${result.deploymentVersion ?? "?"}`;
|
|
646
|
+
console.log(` Alias: ${result.aliasUrl} \u2192 ${target}`);
|
|
647
|
+
}
|
|
561
648
|
console.log(source_default.dim(` Deployment: ${result.deploymentId}`));
|
|
562
649
|
console.log(source_default.dim(` Files: ${result.fileCount.toLocaleString()}`));
|
|
563
650
|
console.log(source_default.dim(` Size: ${formatBytes2(result.size)}`));
|
|
564
|
-
|
|
651
|
+
if (!result.aliasUrl) {
|
|
652
|
+
console.log(` URL: ${result.url}`);
|
|
653
|
+
}
|
|
565
654
|
})
|
|
566
655
|
);
|
|
567
656
|
export {
|
|
568
657
|
zeroHostCommand
|
|
569
658
|
};
|
|
570
|
-
//# sourceMappingURL=host-
|
|
659
|
+
//# sourceMappingURL=host-2QZZRK6F.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/commands/zero/host/index.ts","../src/lib/host/publish-static-site.ts","../src/lib/host/static-site.ts","../src/commands/zero/host/clone.ts","../src/lib/host/clone-hosted-site.ts","../src/lib/utils/file-utils.ts","../src/commands/zero/host/versions.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport {\n hostedArtifactKindSchema,\n type HostedArtifactKind,\n} from \"@vm0/api-contracts/contracts/zero-host\";\nimport { withErrorHandler } from \"../../../lib/command\";\nimport { publishStaticSite } from \"../../../lib/host/publish-static-site\";\nimport { cloneHostedSiteCommand } from \"./clone\";\nimport { versionsHostedSiteCommand } from \"./versions\";\n\ninterface HostOptions {\n readonly site?: string;\n readonly slugSuffix?: string;\n readonly artifactKind?: HostedArtifactKind;\n readonly spa?: boolean;\n readonly json?: boolean;\n}\n\nfunction parseArtifactKind(value: string): HostedArtifactKind {\n return hostedArtifactKindSchema.parse(value);\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes < 1024) return `${bytes} B`;\n if (bytes < 1024 * 1024) return `${(bytes / 1024).toFixed(1)} KB`;\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}\n\nexport const zeroHostCommand = new Command()\n .name(\"host\")\n .description(\"Publish and inspect owned static hosted sites\")\n .argument(\"<dir>\", \"Static build directory, for example ./dist\")\n .option(\"--site <slug>\", \"Public site slug, e.g. my-product-demo\")\n .option(\"--slug-suffix <suffix>\", \"Reuse a legacy generated site URL suffix\")\n .option(\n \"--artifact-kind <kind>\",\n \"Artifact kind to record for this hosted deployment\",\n parseArtifactKind,\n )\n .option(\"--spa\", \"Serve unknown HTML navigation paths from index.html\")\n .option(\"--json\", \"Output only the final result as JSON\")\n .addCommand(cloneHostedSiteCommand)\n .addCommand(versionsHostedSiteCommand)\n .addHelpText(\n \"after\",\n `\nExamples:\n Publish a Vite build: zero host ./dist --site my-product-demo --spa\n Publish next version: zero host ./dist --site my-product-demo --spa\n Reuse a legacy URL: zero host ./dist --site my-product-demo --slug-suffix release-01 --spa\n List site versions: zero host versions my-product-demo\n Clone a hosted site: zero host clone my-product-demo ./site\n Machine readable: zero host ./dist --site my-product-demo --spa --json\n\nNotes:\n - Authenticates via ZERO_TOKEN (publish requires host:write; clone requires host:read)\n - With hosted artifact versions enabled, reusing --site publishes behind the same alias\n - Otherwise, reuse both --site and --slug-suffix to keep a legacy URL\n - The directory must include index.html\n - Local HTML/CSS asset references must point at files inside the directory`,\n )\n .action(\n withErrorHandler(async (dir: string, options: HostOptions) => {\n if (!options.site) {\n throw new Error(\"--site is required when publishing a hosted site\");\n }\n const result = await publishStaticSite({\n dir,\n site: options.site,\n slugSuffix: options.slugSuffix,\n artifactKind: options.artifactKind,\n spaFallback: Boolean(options.spa),\n onProgress: options.json\n ? undefined\n : (progress) => {\n if (progress.phase === \"preparing\") {\n console.log(\n chalk.dim(`Preparing ${progress.fileCount} files...`),\n );\n return;\n }\n console.log(chalk.dim(`Uploading ${progress.path}`));\n },\n });\n\n if (options.json) {\n console.log(JSON.stringify(result));\n return;\n }\n\n console.log(chalk.green(\"✓ Hosted site deployed\"));\n console.log(chalk.dim(` Site: ${result.publicSlug}`));\n if (result.deploymentVersion !== undefined) {\n console.log(chalk.dim(` Version: v${result.deploymentVersion}`));\n }\n if (result.artifactUrl) {\n console.log(` Artifact: ${result.artifactUrl}`);\n }\n if (result.aliasUrl) {\n const target =\n result.isActive === false &&\n result.activeDeploymentVersion !== undefined\n ? `remains on v${result.activeDeploymentVersion}`\n : `v${result.deploymentVersion ?? \"?\"}`;\n console.log(` Alias: ${result.aliasUrl} → ${target}`);\n }\n console.log(chalk.dim(` Deployment: ${result.deploymentId}`));\n console.log(chalk.dim(` Files: ${result.fileCount.toLocaleString()}`));\n console.log(chalk.dim(` Size: ${formatBytes(result.size)}`));\n if (!result.aliasUrl) {\n console.log(` URL: ${result.url}`);\n }\n }),\n );\n","import type { HostedArtifactKind } from \"@vm0/api-contracts/contracts/zero-host\";\nimport { completeHostedSite, prepareHostedSite } from \"../api\";\nimport { readStaticSiteFile, scanStaticSite } from \"./static-site\";\n\ninterface PublishStaticSiteProgress {\n readonly phase: \"preparing\" | \"uploading\";\n readonly fileCount?: number;\n readonly path?: string;\n}\n\ninterface PublishStaticSiteResult {\n readonly siteId: string;\n readonly deploymentId: string;\n readonly publicSlug: string;\n readonly url: string;\n readonly deploymentVersion?: number;\n readonly artifactUrl?: string;\n readonly aliasUrl?: string;\n readonly isActive?: boolean;\n readonly activeDeploymentVersion?: number;\n readonly fileCount: number;\n readonly size: number;\n}\n\ninterface PublishStaticSiteOptions {\n readonly dir: string;\n readonly site: string;\n readonly slugSuffix?: string;\n readonly artifactKind?: HostedArtifactKind;\n readonly spaFallback?: boolean;\n readonly onProgress?: (progress: PublishStaticSiteProgress) => void;\n}\n\nexport async function publishStaticSite(\n options: PublishStaticSiteOptions,\n): Promise<PublishStaticSiteResult> {\n const artifactKind = options.artifactKind ?? \"hosted-site\";\n const scan = await scanStaticSite(\n options.dir,\n artifactKind === \"hosted-site\" ? { defaultRobots: \"disallow-all\" } : {},\n );\n const totalSize = scan.files.reduce((sum, file) => {\n return sum + file.size;\n }, 0);\n\n options.onProgress?.({\n phase: \"preparing\",\n fileCount: scan.files.length,\n });\n\n const prepared = await prepareHostedSite({\n site: options.site,\n ...(options.slugSuffix !== undefined && { slugSuffix: options.slugSuffix }),\n artifactKind,\n spaFallback: Boolean(options.spaFallback),\n files: scan.files.map((file) => {\n return {\n path: file.path,\n size: file.size,\n sha256: file.sha256,\n contentType: file.contentType,\n immutable: file.immutable,\n };\n }),\n });\n\n const uploadByPath = new Map(\n prepared.uploads.map((upload) => {\n return [upload.path, upload.uploadUrl];\n }),\n );\n\n for (const file of scan.files) {\n const uploadUrl = uploadByPath.get(file.path);\n if (!uploadUrl) {\n throw new Error(`Missing upload URL for ${file.path}`);\n }\n options.onProgress?.({ phase: \"uploading\", path: file.path });\n const bytes = await readStaticSiteFile(file);\n const response = await fetch(uploadUrl, {\n method: \"PUT\",\n headers: { \"Content-Type\": file.contentType },\n body: new Uint8Array(bytes),\n });\n if (!response.ok) {\n throw new Error(\n `Failed to upload ${file.path} (HTTP ${response.status})`,\n );\n }\n }\n\n const completed = await completeHostedSite(prepared.deploymentId);\n\n return {\n siteId: completed.siteId,\n deploymentId: completed.deploymentId,\n publicSlug: completed.publicSlug,\n url: completed.url,\n ...(completed.deploymentVersion === undefined\n ? {}\n : { deploymentVersion: completed.deploymentVersion }),\n ...(completed.artifactUrl === undefined\n ? {}\n : { artifactUrl: completed.artifactUrl }),\n ...(completed.aliasUrl === undefined\n ? {}\n : { aliasUrl: completed.aliasUrl }),\n ...(completed.isActive === undefined\n ? {}\n : { isActive: completed.isActive }),\n ...(completed.activeDeploymentVersion === undefined\n ? {}\n : { activeDeploymentVersion: completed.activeDeploymentVersion }),\n fileCount: scan.files.length,\n size: totalSize,\n };\n}\n","import { createHash } from \"node:crypto\";\nimport { readdir, readFile, stat } from \"node:fs/promises\";\nimport { extname, relative, resolve, sep, dirname, posix } from \"node:path\";\n\ninterface StaticSiteFile {\n readonly absolutePath?: string;\n readonly content?: Uint8Array;\n readonly path: string;\n readonly size: number;\n readonly sha256: string;\n readonly contentType: string;\n readonly immutable?: boolean;\n}\n\ninterface StaticSiteScanOptions {\n readonly defaultRobots?: \"disallow-all\";\n}\n\ninterface StaticSiteScanResult {\n readonly root: string;\n readonly files: readonly StaticSiteFile[];\n}\n\nexport const DEFAULT_HOSTED_SITE_ROBOTS_TXT = \"User-agent: *\\nDisallow: /\\n\";\n\nconst MIME_BY_EXTENSION: Record<string, string> = {\n \".html\": \"text/html; charset=utf-8\",\n \".htm\": \"text/html; charset=utf-8\",\n \".css\": \"text/css; charset=utf-8\",\n \".js\": \"application/javascript; charset=utf-8\",\n \".mjs\": \"application/javascript; charset=utf-8\",\n \".json\": \"application/json; charset=utf-8\",\n \".map\": \"application/json; charset=utf-8\",\n \".txt\": \"text/plain; charset=utf-8\",\n \".xml\": \"application/xml; charset=utf-8\",\n \".svg\": \"image/svg+xml; charset=utf-8\",\n \".png\": \"image/png\",\n \".jpg\": \"image/jpeg\",\n \".jpeg\": \"image/jpeg\",\n \".gif\": \"image/gif\",\n \".webp\": \"image/webp\",\n \".avif\": \"image/avif\",\n \".ico\": \"image/x-icon\",\n \".wasm\": \"application/wasm\",\n \".woff\": \"font/woff\",\n \".woff2\": \"font/woff2\",\n \".ttf\": \"font/ttf\",\n \".otf\": \"font/otf\",\n \".eot\": \"application/vnd.ms-fontobject\",\n \".mp4\": \"video/mp4\",\n \".webm\": \"video/webm\",\n \".mp3\": \"audio/mpeg\",\n \".wav\": \"audio/wav\",\n};\n\nconst HTML_REFERENCE_RE =\n /<(?:script|link|img|source|video|audio|embed|object)\\b[^>]*\\s(?:src|href|poster|data)=[\"']([^\"']+)[\"'][^>]*>/giu;\nconst SRCSET_RE = /\\s(?:srcset)=[\"']([^\"']+)[\"']/giu;\nconst CSS_URL_RE = /url\\(\\s*[\"']?([^\"')]+)[\"']?\\s*\\)/giu;\nconst CSS_IMPORT_RE = /@import\\s+(?:url\\()?[\"']([^\"']+)[\"']\\)?/giu;\n\nfunction inferContentType(path: string): string {\n return (\n MIME_BY_EXTENSION[extname(path).toLowerCase()] ?? \"application/octet-stream\"\n );\n}\n\nfunction looksImmutable(path: string): boolean {\n if (path.startsWith(\"/assets/\")) {\n return true;\n }\n return /(?:[-.])[A-Za-z0-9_-]{8,}\\.[A-Za-z0-9]+$/u.test(path);\n}\n\nfunction toSitePath(root: string, absolutePath: string): string {\n const rel = relative(root, absolutePath).split(sep).join(\"/\");\n return `/${rel}`;\n}\n\nfunction isSafeSitePath(path: string): boolean {\n if (!path.startsWith(\"/\") || path.startsWith(\"//\")) {\n return false;\n }\n if (path.includes(\"\\\\\") || path.includes(\"\\0\")) {\n return false;\n }\n const segments = path.split(\"/\").filter(Boolean);\n return !segments.some((segment) => {\n return segment === \".\" || segment === \"..\";\n });\n}\n\nfunction isExternalReference(value: string): boolean {\n return /^(?:[a-z][a-z0-9+.-]*:|\\/\\/|#)/iu.test(value);\n}\n\n// References containing template interpolation are resolved at runtime, not on\n// disk. Covers JS template literals (`${...}`), mustache/Vue/Angular/Handlebars\n// (`{{...}}`), and EJS/ERB (`<%...%>`). These cannot be validated statically.\nfunction isDynamicReference(value: string): boolean {\n return /\\$\\{|\\{\\{|<%/u.test(value);\n}\n\nfunction stripQueryAndHash(value: string): string {\n const hashIndex = value.indexOf(\"#\");\n const withoutHash = hashIndex >= 0 ? value.slice(0, hashIndex) : value;\n const queryIndex = withoutHash.indexOf(\"?\");\n return queryIndex >= 0 ? withoutHash.slice(0, queryIndex) : withoutHash;\n}\n\nfunction normalizeReference(fromPath: string, raw: string): string | null {\n const trimmed = raw.trim();\n if (!trimmed || isExternalReference(trimmed) || isDynamicReference(trimmed)) {\n return null;\n }\n const stripped = stripQueryAndHash(trimmed);\n if (!stripped || stripped.endsWith(\"/\")) {\n return null;\n }\n const resolved = stripped.startsWith(\"/\")\n ? posix.normalize(stripped)\n : posix.normalize(posix.join(dirname(fromPath), stripped));\n const path = resolved.startsWith(\"/\") ? resolved : `/${resolved}`;\n if (!isSafeSitePath(path)) {\n throw new Error(`Invalid asset reference in ${fromPath}: ${raw}`);\n }\n return path;\n}\n\nfunction shouldRequireHtmlReference(path: string): boolean {\n return extname(path).length > 0 || path.startsWith(\"/assets/\");\n}\n\nfunction isHtmlExtension(ext: string): boolean {\n return ext === \".html\" || ext === \".htm\";\n}\n\nfunction shouldValidateReferences(ext: string): boolean {\n return isHtmlExtension(ext) || ext === \".css\";\n}\n\nfunction collectSrcsetReferences(value: string): string[] {\n return value\n .split(\",\")\n .map((entry) => {\n return entry.trim().split(/\\s+/u)[0] ?? \"\";\n })\n .filter(Boolean);\n}\n\nfunction collectHtmlReferences(text: string): string[] {\n const references: string[] = [];\n for (const match of text.matchAll(HTML_REFERENCE_RE)) {\n if (match[1]) references.push(match[1]);\n }\n for (const match of text.matchAll(SRCSET_RE)) {\n if (!match[1]) continue;\n references.push(...collectSrcsetReferences(match[1]));\n }\n return references;\n}\n\nfunction collectCssReferences(text: string): string[] {\n const references: string[] = [];\n for (const match of text.matchAll(CSS_URL_RE)) {\n if (match[1]) references.push(match[1]);\n }\n for (const match of text.matchAll(CSS_IMPORT_RE)) {\n if (match[1]) references.push(match[1]);\n }\n return references;\n}\n\nfunction collectReferences(ext: string, text: string): string[] {\n return isHtmlExtension(ext)\n ? collectHtmlReferences(text)\n : collectCssReferences(text);\n}\n\nasync function hashFile(path: string): Promise<string> {\n const bytes = await readFile(path);\n return createHash(\"sha256\").update(bytes).digest(\"hex\");\n}\n\nfunction textFile(path: string, content: string): StaticSiteFile {\n const bytes = new TextEncoder().encode(content);\n return {\n content: bytes,\n path,\n size: bytes.byteLength,\n sha256: createHash(\"sha256\").update(bytes).digest(\"hex\"),\n contentType: inferContentType(path),\n };\n}\n\nfunction ensureDefaultRobots(\n files: readonly StaticSiteFile[],\n options: StaticSiteScanOptions,\n): readonly StaticSiteFile[] {\n if (\n options.defaultRobots !== \"disallow-all\" ||\n files.some((file) => {\n return file.path === \"/robots.txt\";\n })\n ) {\n return files;\n }\n\n return [...files, textFile(\"/robots.txt\", DEFAULT_HOSTED_SITE_ROBOTS_TXT)];\n}\n\nasync function walk(\n root: string,\n dir: string,\n files: StaticSiteFile[],\n): Promise<void> {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const fullPath = resolve(dir, entry.name);\n if (entry.isDirectory()) {\n await walk(root, fullPath, files);\n continue;\n }\n if (!entry.isFile()) {\n throw new Error(`Unsupported file type in hosted site: ${fullPath}`);\n }\n\n const fileStat = await stat(fullPath);\n const path = toSitePath(root, fullPath);\n if (!isSafeSitePath(path)) {\n throw new Error(`Invalid hosted-site path: ${path}`);\n }\n files.push({\n absolutePath: fullPath,\n path,\n size: fileStat.size,\n sha256: await hashFile(fullPath),\n contentType: inferContentType(path),\n immutable: looksImmutable(path) || undefined,\n });\n }\n}\n\nasync function assertReferencesExist(\n files: readonly StaticSiteFile[],\n): Promise<void> {\n const byPath = new Map(\n files.map((file) => {\n return [file.path, file];\n }),\n );\n\n for (const file of files) {\n const ext = extname(file.path).toLowerCase();\n if (!shouldValidateReferences(ext)) {\n continue;\n }\n if (!file.absolutePath) {\n throw new Error(`Hosted-site file has no source: ${file.path}`);\n }\n const text = await readFile(file.absolutePath, \"utf8\");\n const references = collectReferences(ext, text);\n\n for (const reference of references) {\n const normalized = normalizeReference(file.path, reference);\n if (!normalized) {\n continue;\n }\n if (isHtmlExtension(ext) && !shouldRequireHtmlReference(normalized)) {\n continue;\n }\n if (!byPath.has(normalized)) {\n throw new Error(\n `Missing asset referenced by ${file.path}: ${reference}`,\n );\n }\n }\n }\n}\n\nexport async function scanStaticSite(\n rootPath: string,\n options: StaticSiteScanOptions = {},\n): Promise<StaticSiteScanResult> {\n const root = resolve(rootPath);\n const rootStat = await stat(root);\n if (!rootStat.isDirectory()) {\n throw new Error(`Hosted site path must be a directory: ${rootPath}`);\n }\n\n const files: StaticSiteFile[] = [];\n await walk(root, root, files);\n\n if (\n !files.some((file) => {\n return file.path === \"/index.html\";\n })\n ) {\n throw new Error(\"Hosted site directory must include index.html\");\n }\n\n await assertReferencesExist(files);\n const publishFiles = [...ensureDefaultRobots(files, options)];\n\n return {\n root,\n files: publishFiles.sort((a, b) => {\n return a.path.localeCompare(b.path);\n }),\n };\n}\n\nexport async function readStaticSiteFile(\n file: StaticSiteFile,\n): Promise<Uint8Array> {\n if (file.content) {\n return file.content;\n }\n if (!file.absolutePath) {\n throw new Error(`Hosted-site file has no source: ${file.path}`);\n }\n const bytes = await readFile(file.absolutePath);\n return new Uint8Array(bytes);\n}\n","import { Command, InvalidArgumentError } from \"commander\";\nimport chalk from \"chalk\";\n\nimport { withErrorHandler } from \"../../../lib/command\";\nimport {\n cloneHostedSite,\n publicSlugFromSite,\n} from \"../../../lib/host/clone-hosted-site\";\nimport { formatBytes } from \"../../../lib/utils/file-utils\";\n\ninterface CloneOptions {\n readonly json?: boolean;\n readonly version?: number;\n}\n\nfunction parseVersion(value: string): number {\n const version = Number(value);\n if (!Number.isSafeInteger(version) || version <= 0) {\n throw new InvalidArgumentError(\"version must be a positive integer\");\n }\n return version;\n}\n\nfunction jsonOption(options: CloneOptions, command: Command): boolean {\n const parentOptions = command.parent?.opts<CloneOptions>();\n return Boolean(options.json || parentOptions?.json);\n}\n\nexport const cloneHostedSiteCommand = new Command()\n .name(\"clone\")\n .description(\"Clone an owned hosted-site version to a local directory\")\n .argument(\"<site>\", \"Hosted site public slug or URL\")\n .argument(\"[destination]\", \"Destination directory (default: public slug)\")\n .option(\n \"--version <number>\",\n \"Clone a specific artifact version\",\n parseVersion,\n )\n .option(\"--json\", \"Output only the final result as JSON\")\n .addHelpText(\n \"after\",\n `\nExamples:\n Clone by public slug: zero host clone my-site\n Clone by hosted URL: zero host clone https://my-site.sites.example.com ./site\n Clone an artifact URL: zero host clone https://dpl-<deployment-id>.sites.example.com ./site\n Clone version 2: zero host clone my-site --version 2\n Machine readable: zero host clone my-site --json\n\nNotes:\n - Authenticates via ZERO_TOKEN (requires host:read capability)\n - Only hosted sites owned by the active org can be cloned\n - Downloads files directly from R2 and verifies size/hash\n - The destination directory must be empty or not exist`,\n )\n .action(\n withErrorHandler(\n async (\n site: string,\n destination: string | undefined,\n options: CloneOptions,\n command: Command,\n ) => {\n const json = jsonOption(options, command);\n const targetDir = destination ?? publicSlugFromSite(site);\n const result = await cloneHostedSite({\n site,\n destination: targetDir,\n ...(options.version === undefined\n ? {}\n : { version: options.version }),\n onProgress: json\n ? undefined\n : (progress) => {\n if (progress.phase === \"checking\") {\n console.log(chalk.dim(\"Checking hosted site...\"));\n return;\n }\n if (progress.phase === \"creating\") {\n console.log(\n chalk.dim(\n `Preparing ${progress.fileCount?.toLocaleString() ?? 0} files...`,\n ),\n );\n return;\n }\n console.log(chalk.dim(`Downloading ${progress.path}`));\n },\n });\n\n if (json) {\n console.log(JSON.stringify(result));\n return;\n }\n\n console.log(chalk.green(\"✓ Hosted site cloned\"));\n console.log(chalk.dim(` Site: ${result.publicSlug}`));\n if (result.deploymentVersion !== undefined) {\n console.log(chalk.dim(` Version: v${result.deploymentVersion}`));\n }\n console.log(chalk.dim(` Deployment: ${result.deploymentId}`));\n console.log(chalk.dim(` Files: ${result.fileCount.toLocaleString()}`));\n console.log(chalk.dim(` Size: ${formatBytes(result.size)}`));\n console.log(chalk.dim(` Location: ${result.destination}/`));\n console.log(` URL: ${result.artifactUrl ?? result.url}`);\n },\n ),\n );\n","import { createHash } from \"node:crypto\";\nimport { mkdir, writeFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, relative, resolve, sep } from \"node:path\";\n\nimport type { HostedSiteFilesResponse } from \"@vm0/api-contracts/contracts/zero-host\";\nimport { getHostedSiteFiles } from \"../api\";\nimport { checkDirectoryStatus } from \"../utils/file-utils\";\n\ninterface CloneHostedSiteProgress {\n readonly phase: \"checking\" | \"creating\" | \"downloading\";\n readonly fileCount?: number;\n readonly path?: string;\n}\n\ninterface CloneHostedSiteResult {\n readonly siteId: string;\n readonly deploymentId: string;\n readonly publicSlug: string;\n readonly url: string;\n readonly deploymentVersion?: number;\n readonly artifactUrl?: string;\n readonly destination: string;\n readonly fileCount: number;\n readonly size: number;\n}\n\ninterface CloneHostedSiteOptions {\n readonly site: string;\n readonly destination: string;\n readonly version?: number;\n readonly onProgress?: (progress: CloneHostedSiteProgress) => void;\n}\n\nexport function publicSlugFromSite(value: string): string {\n const trimmed = value.trim();\n if (URL.canParse(trimmed)) {\n const url = new URL(trimmed);\n return url.hostname.split(\".\")[0] ?? trimmed;\n }\n if (trimmed.includes(\".\")) {\n return trimmed.split(\".\")[0] ?? trimmed;\n }\n return trimmed;\n}\n\nfunction isInsideDirectory(parent: string, target: string): boolean {\n const relativePath = relative(parent, target);\n return (\n relativePath === \"\" ||\n (!relativePath.startsWith(`..${sep}`) &&\n relativePath !== \"..\" &&\n !isAbsolute(relativePath))\n );\n}\n\nfunction outputPathForHostedFile(\n destination: string,\n hostedPath: string,\n): string {\n if (\n !hostedPath.startsWith(\"/\") ||\n hostedPath.startsWith(\"//\") ||\n hostedPath.includes(\"\\\\\") ||\n hostedPath.includes(\"\\0\")\n ) {\n throw new Error(`Invalid hosted-site path: ${hostedPath}`);\n }\n\n const segments = hostedPath.split(\"/\").filter((segment) => {\n return segment.length > 0;\n });\n if (\n segments.length === 0 ||\n segments.some((segment) => {\n return segment === \".\" || segment === \"..\";\n })\n ) {\n throw new Error(`Invalid hosted-site path: ${hostedPath}`);\n }\n\n const destinationRoot = resolve(destination);\n const outputPath = resolve(destinationRoot, ...segments);\n if (!isInsideDirectory(destinationRoot, outputPath)) {\n throw new Error(`Invalid hosted-site path: ${hostedPath}`);\n }\n\n return outputPath;\n}\n\nfunction sha256(bytes: Buffer): string {\n return createHash(\"sha256\").update(bytes).digest(\"hex\");\n}\n\nasync function downloadHostedFile(\n file: HostedSiteFilesResponse[\"files\"][number],\n destination: string,\n): Promise<void> {\n const response = await fetch(file.downloadUrl);\n if (!response.ok) {\n throw new Error(\n `Failed to download ${file.path} (HTTP ${response.status})`,\n );\n }\n\n const bytes = Buffer.from(await response.arrayBuffer());\n if (bytes.byteLength !== file.size) {\n throw new Error(`Downloaded size mismatch for ${file.path}`);\n }\n if (sha256(bytes) !== file.sha256) {\n throw new Error(`Downloaded hash mismatch for ${file.path}`);\n }\n\n const outputPath = outputPathForHostedFile(destination, file.path);\n await mkdir(dirname(outputPath), { recursive: true });\n await writeFile(outputPath, bytes);\n}\n\nexport async function cloneHostedSite(\n options: CloneHostedSiteOptions,\n): Promise<CloneHostedSiteResult> {\n const publicSlug = publicSlugFromSite(options.site);\n const dirStatus = checkDirectoryStatus(options.destination);\n if (dirStatus.exists && !dirStatus.empty) {\n throw new Error(`Directory \"${options.destination}\" is not empty`);\n }\n\n options.onProgress?.({ phase: \"checking\" });\n const hostedSite = await getHostedSiteFiles(publicSlug, options.version);\n\n options.onProgress?.({\n phase: \"creating\",\n fileCount: hostedSite.fileCount,\n });\n await mkdir(options.destination, { recursive: true });\n\n for (const file of hostedSite.files) {\n options.onProgress?.({ phase: \"downloading\", path: file.path });\n await downloadHostedFile(file, options.destination);\n }\n\n return {\n siteId: hostedSite.siteId,\n deploymentId: hostedSite.deploymentId,\n publicSlug: hostedSite.publicSlug,\n url: hostedSite.url,\n ...(hostedSite.deploymentVersion === undefined\n ? {}\n : { deploymentVersion: hostedSite.deploymentVersion }),\n ...(hostedSite.artifactUrl === undefined\n ? {}\n : { artifactUrl: hostedSite.artifactUrl }),\n destination: options.destination,\n fileCount: hostedSite.fileCount,\n size: hostedSite.size,\n };\n}\n","import * as fs from \"fs\";\n\n/**\n * Check if a directory exists and is empty (contains no files or subdirectories).\n * Returns: { exists: boolean, empty: boolean }\n * - Non-existent path: { exists: false, empty: true }\n * - Existing empty directory: { exists: true, empty: true }\n * - Existing non-empty directory: { exists: true, empty: false }\n * - Existing file (not directory): { exists: true, empty: false }\n */\nexport function checkDirectoryStatus(dirPath: string): {\n exists: boolean;\n empty: boolean;\n} {\n if (!fs.existsSync(dirPath)) {\n return { exists: false, empty: true };\n }\n\n const stat = fs.statSync(dirPath);\n if (!stat.isDirectory()) {\n // Path exists but is a file, not a directory\n return { exists: true, empty: false };\n }\n\n const entries = fs.readdirSync(dirPath);\n return { exists: true, empty: entries.length === 0 };\n}\n\n/**\n * Format bytes to human-readable format\n */\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${(bytes / Math.pow(k, i)).toFixed(2)} ${sizes[i]}`;\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\n\nimport { getHostedSiteDeployments } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\ninterface VersionsOptions {\n readonly json?: boolean;\n}\n\nfunction jsonOption(options: VersionsOptions, command: Command): boolean {\n const parentOptions = command.parent?.opts<VersionsOptions>();\n return Boolean(options.json || parentOptions?.json);\n}\n\nexport const versionsHostedSiteCommand = new Command()\n .name(\"versions\")\n .description(\"List immutable artifact versions for an owned hosted site\")\n .argument(\"<site>\", \"Logical site slug\")\n .option(\"--json\", \"Output only the result as JSON\")\n .addHelpText(\n \"after\",\n `\nExamples:\n List versions: zero host versions my-product-demo\n Machine readable: zero host versions my-product-demo --json\n\nNotes:\n - Authenticates via ZERO_TOKEN and requires host:read\n - Requires hosted artifact versions to be enabled for the current user\n - The active marker identifies the version served by the site alias`,\n )\n .action(\n withErrorHandler(\n async (site: string, options: VersionsOptions, command: Command) => {\n const result = await getHostedSiteDeployments(site);\n if (jsonOption(options, command)) {\n console.log(JSON.stringify(result));\n return;\n }\n\n console.log(chalk.bold(`Hosted site versions: ${result.site}`));\n console.log(chalk.dim(`Alias: ${result.aliasUrl}`));\n if (result.deployments.length === 0) {\n console.log(chalk.dim(\"No deployments found\"));\n console.log(\n chalk.dim(\n `Publish one with: zero host <dir> --site ${result.site}`,\n ),\n );\n return;\n }\n\n for (const deployment of result.deployments) {\n const marker = deployment.isActive ? chalk.green(\"* \") : \" \";\n const version =\n deployment.deploymentVersion === null\n ? \"legacy\"\n : `v${deployment.deploymentVersion}`;\n const url = deployment.artifactUrl ?? result.aliasUrl;\n console.log(\n `${marker}${version} ${deployment.status} ${deployment.createdAt} ${url}`,\n );\n }\n },\n ),\n );\n"],"mappings":"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","names":["createHash","dirname","relative","resolve","sep","stat","relative","sep","resolve","createHash","dirname","jsonOption","formatBytes"]}
|
|
@@ -12,17 +12,17 @@ import {
|
|
|
12
12
|
parsePositiveLogCount,
|
|
13
13
|
parseTime,
|
|
14
14
|
searchCommand
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-TBX3YOFU.js";
|
|
16
16
|
import "./chunk-RTYT3CSZ.js";
|
|
17
17
|
import {
|
|
18
18
|
getZeroRunAgentEvents,
|
|
19
19
|
listZeroLogs
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-OJSHU7HM.js";
|
|
21
21
|
import "./chunk-LTDQISD7.js";
|
|
22
22
|
import {
|
|
23
23
|
source_default,
|
|
24
24
|
withErrorHandler
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-MBABRJV4.js";
|
|
26
26
|
import "./chunk-LRHXR7JT.js";
|
|
27
27
|
import {
|
|
28
28
|
Command
|
|
@@ -268,4 +268,4 @@ Examples:
|
|
|
268
268
|
export {
|
|
269
269
|
zeroLogsCommand
|
|
270
270
|
};
|
|
271
|
-
//# sourceMappingURL=logs-
|
|
271
|
+
//# sourceMappingURL=logs-AUAXI6ZE.js.map
|
|
@@ -4,19 +4,19 @@ const require = __createRequire(import.meta.url);
|
|
|
4
4
|
import {
|
|
5
5
|
findConnectorStatusItem,
|
|
6
6
|
resolveAgentContext
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-WKNVA3NQ.js";
|
|
8
8
|
import {
|
|
9
9
|
getPlatformOrigin
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-R72KTUBX.js";
|
|
11
11
|
import {
|
|
12
12
|
linkZeroMailDraft,
|
|
13
13
|
listZeroConnectorCatalogStatus
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-OJSHU7HM.js";
|
|
15
15
|
import "./chunk-LTDQISD7.js";
|
|
16
16
|
import {
|
|
17
17
|
source_default,
|
|
18
18
|
withErrorHandler
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-MBABRJV4.js";
|
|
20
20
|
import "./chunk-LRHXR7JT.js";
|
|
21
21
|
import {
|
|
22
22
|
Command
|
|
@@ -183,4 +183,4 @@ var zeroMailCommand = new Command().name("mail").description("Review linked Gmai
|
|
|
183
183
|
export {
|
|
184
184
|
zeroMailCommand
|
|
185
185
|
};
|
|
186
|
-
//# sourceMappingURL=mail-
|
|
186
|
+
//# sourceMappingURL=mail-7B7L7M4G.js.map
|
|
@@ -3,12 +3,12 @@ import { createRequire as __createRequire } from "node:module";
|
|
|
3
3
|
const require = __createRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
callZeroMaps
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-OJSHU7HM.js";
|
|
7
7
|
import "./chunk-LTDQISD7.js";
|
|
8
8
|
import {
|
|
9
9
|
source_default,
|
|
10
10
|
withErrorHandler
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-MBABRJV4.js";
|
|
12
12
|
import "./chunk-LRHXR7JT.js";
|
|
13
13
|
import {
|
|
14
14
|
Command,
|
|
@@ -482,4 +482,4 @@ Notes:
|
|
|
482
482
|
export {
|
|
483
483
|
zeroMapsCommand
|
|
484
484
|
};
|
|
485
|
-
//# sourceMappingURL=maps-
|
|
485
|
+
//# sourceMappingURL=maps-BGHDHGH2.js.map
|