@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.
Files changed (87) hide show
  1. package/{agent-MIYZUPVU.js → agent-LLWRGB35.js} +5 -5
  2. package/{banking-DTGDYQDJ.js → banking-QYHIBCN3.js} +3 -3
  3. package/{chat-N2D2YYSA.js → chat-EQLPGPH3.js} +4 -4
  4. package/{chunk-4FUMNBD5.js → chunk-DVM3A5IM.js} +4 -4
  5. package/{chunk-F2VZWS5W.js → chunk-MBABRJV4.js} +2 -2
  6. package/{chunk-VONKCLG6.js → chunk-NNQ22JQZ.js} +2 -2
  7. package/{chunk-P2NGZFRH.js → chunk-OJSHU7HM.js} +80 -7
  8. package/chunk-OJSHU7HM.js.map +1 -0
  9. package/{chunk-YZ3GAWIH.js → chunk-R72KTUBX.js} +2 -2
  10. package/{chunk-HZXFAXZ7.js → chunk-TBX3YOFU.js} +23 -3
  11. package/chunk-TBX3YOFU.js.map +1 -0
  12. package/{chunk-QPMX7UE4.js → chunk-TR7VWRFE.js} +2 -2
  13. package/{chunk-EBSOAQFY.js → chunk-WKNVA3NQ.js} +2 -2
  14. package/{computer-use-AWXLV7M6.js → computer-use-IPMSWG2L.js} +3 -3
  15. package/{connector-PWOHND4R.js → connector-BVLUBDF2.js} +6 -6
  16. package/{credit-2YU6VGRX.js → credit-UJFFUIG3.js} +4 -4
  17. package/{developer-support-IW2IR2CG.js → developer-support-FA37JDLO.js} +3 -3
  18. package/{doctor-NEHZXACI.js → doctor-EVTOKSRU.js} +3 -3
  19. package/{generate-FWS5ACOH.js → generate-MHKXFGQZ.js} +4 -4
  20. package/{github-CTPZCA5T.js → github-BWKIQE2K.js} +3 -3
  21. package/{goal-TSB3VBL4.js → goal-BNTT2GCU.js} +3 -3
  22. package/{host-PKANXY23.js → host-2QZZRK6F.js} +106 -17
  23. package/host-2QZZRK6F.js.map +1 -0
  24. package/{logs-3TW7BZRE.js → logs-AUAXI6ZE.js} +4 -4
  25. package/{mail-FNUVMQEM.js → mail-7B7L7M4G.js} +5 -5
  26. package/{maps-5C3A3FTV.js → maps-BGHDHGH2.js} +3 -3
  27. package/{model-PJ2CYSKG.js → model-F36BHKAJ.js} +4 -4
  28. package/{model-provider-ETWLSRCF.js → model-provider-MMCMHZFS.js} +4 -4
  29. package/{org-OAQCALEB.js → org-LCRTXS6V.js} +3 -3
  30. package/package.json +1 -1
  31. package/{phone-ROFOJPIZ.js → phone-PG342VP7.js} +3 -3
  32. package/{preference-6KH3S3NL.js → preference-OE4N2QBX.js} +3 -3
  33. package/{resource-REBUQJL6.js → resource-E26K6CQ5.js} +3 -3
  34. package/{scrape-7KZHM3CS.js → scrape-WM3PKHWH.js} +3 -3
  35. package/{search-CIHZYFBB.js → search-X445TOTR.js} +4 -4
  36. package/{secret-D2VZKBSY.js → secret-PKL2FGTL.js} +3 -3
  37. package/{slack-DSSSH24B.js → slack-RFHK67YD.js} +3 -3
  38. package/{teams-2UFGWENW.js → teams-2QWRC42Q.js} +3 -3
  39. package/{telegram-SZIZEMIO.js → telegram-NLQ475PI.js} +3 -3
  40. package/{variable-RXXRVG5G.js → variable-P2YUAWRY.js} +3 -3
  41. package/{video-LMYW2LPU.js → video-O3ZHNXJC.js} +2 -2
  42. package/{web-OI5PQTYN.js → web-A4D2UDY2.js} +3 -3
  43. package/{web-search-UBVNXAQS.js → web-search-DJ2FOFVE.js} +3 -3
  44. package/{whoami-HYFT446B.js → whoami-5667CBQ4.js} +5 -5
  45. package/{workflow-HVFS4R2Z.js → workflow-7N2ZOQ2I.js} +3 -3
  46. package/zero.js +36 -36
  47. package/chunk-HZXFAXZ7.js.map +0 -1
  48. package/chunk-P2NGZFRH.js.map +0 -1
  49. package/host-PKANXY23.js.map +0 -1
  50. /package/{agent-MIYZUPVU.js.map → agent-LLWRGB35.js.map} +0 -0
  51. /package/{banking-DTGDYQDJ.js.map → banking-QYHIBCN3.js.map} +0 -0
  52. /package/{chat-N2D2YYSA.js.map → chat-EQLPGPH3.js.map} +0 -0
  53. /package/{chunk-4FUMNBD5.js.map → chunk-DVM3A5IM.js.map} +0 -0
  54. /package/{chunk-F2VZWS5W.js.map → chunk-MBABRJV4.js.map} +0 -0
  55. /package/{chunk-VONKCLG6.js.map → chunk-NNQ22JQZ.js.map} +0 -0
  56. /package/{chunk-YZ3GAWIH.js.map → chunk-R72KTUBX.js.map} +0 -0
  57. /package/{chunk-QPMX7UE4.js.map → chunk-TR7VWRFE.js.map} +0 -0
  58. /package/{chunk-EBSOAQFY.js.map → chunk-WKNVA3NQ.js.map} +0 -0
  59. /package/{computer-use-AWXLV7M6.js.map → computer-use-IPMSWG2L.js.map} +0 -0
  60. /package/{connector-PWOHND4R.js.map → connector-BVLUBDF2.js.map} +0 -0
  61. /package/{credit-2YU6VGRX.js.map → credit-UJFFUIG3.js.map} +0 -0
  62. /package/{developer-support-IW2IR2CG.js.map → developer-support-FA37JDLO.js.map} +0 -0
  63. /package/{doctor-NEHZXACI.js.map → doctor-EVTOKSRU.js.map} +0 -0
  64. /package/{generate-FWS5ACOH.js.map → generate-MHKXFGQZ.js.map} +0 -0
  65. /package/{github-CTPZCA5T.js.map → github-BWKIQE2K.js.map} +0 -0
  66. /package/{goal-TSB3VBL4.js.map → goal-BNTT2GCU.js.map} +0 -0
  67. /package/{logs-3TW7BZRE.js.map → logs-AUAXI6ZE.js.map} +0 -0
  68. /package/{mail-FNUVMQEM.js.map → mail-7B7L7M4G.js.map} +0 -0
  69. /package/{maps-5C3A3FTV.js.map → maps-BGHDHGH2.js.map} +0 -0
  70. /package/{model-PJ2CYSKG.js.map → model-F36BHKAJ.js.map} +0 -0
  71. /package/{model-provider-ETWLSRCF.js.map → model-provider-MMCMHZFS.js.map} +0 -0
  72. /package/{org-OAQCALEB.js.map → org-LCRTXS6V.js.map} +0 -0
  73. /package/{phone-ROFOJPIZ.js.map → phone-PG342VP7.js.map} +0 -0
  74. /package/{preference-6KH3S3NL.js.map → preference-OE4N2QBX.js.map} +0 -0
  75. /package/{resource-REBUQJL6.js.map → resource-E26K6CQ5.js.map} +0 -0
  76. /package/{scrape-7KZHM3CS.js.map → scrape-WM3PKHWH.js.map} +0 -0
  77. /package/{search-CIHZYFBB.js.map → search-X445TOTR.js.map} +0 -0
  78. /package/{secret-D2VZKBSY.js.map → secret-PKL2FGTL.js.map} +0 -0
  79. /package/{slack-DSSSH24B.js.map → slack-RFHK67YD.js.map} +0 -0
  80. /package/{teams-2UFGWENW.js.map → teams-2QWRC42Q.js.map} +0 -0
  81. /package/{telegram-SZIZEMIO.js.map → telegram-NLQ475PI.js.map} +0 -0
  82. /package/{variable-RXXRVG5G.js.map → variable-P2YUAWRY.js.map} +0 -0
  83. /package/{video-LMYW2LPU.js.map → video-O3ZHNXJC.js.map} +0 -0
  84. /package/{web-OI5PQTYN.js.map → web-A4D2UDY2.js.map} +0 -0
  85. /package/{web-search-UBVNXAQS.js.map → web-search-DJ2FOFVE.js.map} +0 -0
  86. /package/{whoami-HYFT446B.js.map → whoami-5667CBQ4.js.map} +0 -0
  87. /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-F2VZWS5W.js";
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-QPMX7UE4.js.map
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-P2NGZFRH.js";
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-EBSOAQFY.js.map
268
+ //# sourceMappingURL=chunk-WKNVA3NQ.js.map
@@ -12,11 +12,11 @@ import {
12
12
  fetchComputerUseScreenshot,
13
13
  getComputerUseCommand,
14
14
  listComputerUseHosts
15
- } from "./chunk-P2NGZFRH.js";
15
+ } from "./chunk-OJSHU7HM.js";
16
16
  import {
17
17
  ApiRequestError,
18
18
  withErrorHandler
19
- } from "./chunk-F2VZWS5W.js";
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-AWXLV7M6.js.map
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-VONKCLG6.js";
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-EBSOAQFY.js";
13
+ } from "./chunk-WKNVA3NQ.js";
14
14
  import {
15
15
  getPlatformOrigin,
16
16
  toPlatformUrl
17
- } from "./chunk-YZ3GAWIH.js";
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-P2NGZFRH.js";
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-F2VZWS5W.js";
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-PWOHND4R.js.map
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-YZ3GAWIH.js";
6
+ } from "./chunk-R72KTUBX.js";
7
7
  import {
8
8
  createZeroCreditCheckout,
9
9
  getZeroBillingStatus,
10
10
  getZeroOrgMembers
11
- } from "./chunk-P2NGZFRH.js";
11
+ } from "./chunk-OJSHU7HM.js";
12
12
  import "./chunk-LTDQISD7.js";
13
13
  import {
14
14
  source_default,
15
15
  withErrorHandler
16
- } from "./chunk-F2VZWS5W.js";
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-2YU6VGRX.js.map
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-P2NGZFRH.js";
7
+ } from "./chunk-OJSHU7HM.js";
8
8
  import "./chunk-LTDQISD7.js";
9
9
  import {
10
10
  withErrorHandler
11
- } from "./chunk-F2VZWS5W.js";
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-IW2IR2CG.js.map
63
+ //# sourceMappingURL=developer-support-FA37JDLO.js.map
@@ -5,12 +5,12 @@ import {
5
5
  getZeroBillingStatus,
6
6
  getZeroOrg,
7
7
  getZeroOrgMembers
8
- } from "./chunk-P2NGZFRH.js";
8
+ } from "./chunk-OJSHU7HM.js";
9
9
  import "./chunk-LTDQISD7.js";
10
10
  import {
11
11
  source_default,
12
12
  withErrorHandler
13
- } from "./chunk-F2VZWS5W.js";
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-NEHZXACI.js.map
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-YZ3GAWIH.js";
23
+ } from "./chunk-R72KTUBX.js";
24
24
  import {
25
25
  getZeroAgentUserConnectors,
26
26
  listZeroConnectorCatalog,
27
27
  listZeroConnectorCatalogStatus
28
- } from "./chunk-P2NGZFRH.js";
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-F2VZWS5W.js";
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-FWS5ACOH.js.map
2699
+ //# sourceMappingURL=generate-MHKXFGQZ.js.map
@@ -5,11 +5,11 @@ import {
5
5
  completeGithubFileUpload,
6
6
  downloadGithubFile,
7
7
  initGithubFileUpload
8
- } from "./chunk-P2NGZFRH.js";
8
+ } from "./chunk-OJSHU7HM.js";
9
9
  import "./chunk-LTDQISD7.js";
10
10
  import {
11
11
  withErrorHandler
12
- } from "./chunk-F2VZWS5W.js";
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-CTPZCA5T.js.map
203
+ //# sourceMappingURL=github-BWKIQE2K.js.map
@@ -10,11 +10,11 @@ import {
10
10
  getGoal,
11
11
  pauseGoal,
12
12
  resumeGoal
13
- } from "./chunk-P2NGZFRH.js";
13
+ } from "./chunk-OJSHU7HM.js";
14
14
  import "./chunk-LTDQISD7.js";
15
15
  import {
16
16
  withErrorHandler
17
- } from "./chunk-F2VZWS5W.js";
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-TSB3VBL4.js.map
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-P2NGZFRH.js";
10
+ } from "./chunk-OJSHU7HM.js";
10
11
  import "./chunk-LTDQISD7.js";
11
12
  import {
12
13
  source_default,
13
14
  withErrorHandler
14
- } from "./chunk-F2VZWS5W.js";
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 site's active files to a local directory").argument("<site>", "Hosted site public slug or URL").argument("[destination]", "Destination directory (default: public slug)").option("--json", "Output only the final result as JSON").addHelpText(
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-a1b2c3d4-release-01
460
- Clone by hosted URL: zero host clone https://my-site-a1b2c3d4-release-01.sites.example.com ./site
461
- Machine readable: zero host clone my-site-a1b2c3d4-release-01 --json
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 static sites and clone owned hosted site files").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 generated site URL suffix").option(
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
- Redeploy a URL: zero host ./dist --site my-product-demo --slug-suffix a1b2c3d4 --spa
526
- Clone a hosted site: zero host clone my-product-demo-a1b2c3d4-release-01 ./site
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
- - Reusing both --site and --slug-suffix keeps the same URL
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 ready"));
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
- console.log(` URL: ${result.url}`);
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-PKANXY23.js.map
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-HZXFAXZ7.js";
15
+ } from "./chunk-TBX3YOFU.js";
16
16
  import "./chunk-RTYT3CSZ.js";
17
17
  import {
18
18
  getZeroRunAgentEvents,
19
19
  listZeroLogs
20
- } from "./chunk-P2NGZFRH.js";
20
+ } from "./chunk-OJSHU7HM.js";
21
21
  import "./chunk-LTDQISD7.js";
22
22
  import {
23
23
  source_default,
24
24
  withErrorHandler
25
- } from "./chunk-F2VZWS5W.js";
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-3TW7BZRE.js.map
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-EBSOAQFY.js";
7
+ } from "./chunk-WKNVA3NQ.js";
8
8
  import {
9
9
  getPlatformOrigin
10
- } from "./chunk-YZ3GAWIH.js";
10
+ } from "./chunk-R72KTUBX.js";
11
11
  import {
12
12
  linkZeroMailDraft,
13
13
  listZeroConnectorCatalogStatus
14
- } from "./chunk-P2NGZFRH.js";
14
+ } from "./chunk-OJSHU7HM.js";
15
15
  import "./chunk-LTDQISD7.js";
16
16
  import {
17
17
  source_default,
18
18
  withErrorHandler
19
- } from "./chunk-F2VZWS5W.js";
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-FNUVMQEM.js.map
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-P2NGZFRH.js";
6
+ } from "./chunk-OJSHU7HM.js";
7
7
  import "./chunk-LTDQISD7.js";
8
8
  import {
9
9
  source_default,
10
10
  withErrorHandler
11
- } from "./chunk-F2VZWS5W.js";
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-5C3A3FTV.js.map
485
+ //# sourceMappingURL=maps-BGHDHGH2.js.map