@vm0/cli 9.176.4 → 9.176.5

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/zero.js CHANGED
@@ -144,7 +144,7 @@ import {
144
144
  upsertZeroOrgModelProvider,
145
145
  withErrorHandler,
146
146
  zeroAgentCustomSkillNameSchema
147
- } from "./chunk-JQ72VVQC.js";
147
+ } from "./chunk-4XXIJOZP.js";
148
148
  import {
149
149
  __toESM,
150
150
  init_esm_shims
@@ -6574,8 +6574,10 @@ var DATA_URL_PATTERN = /^data:([^;,]+);base64,(.*)$/s;
6574
6574
  var COMPUTER_USE_HELP_TEXT = `
6575
6575
  Workflow:
6576
6576
  1. Start the Zero Desktop app and make sure Computer Use is online.
6577
- 2. Run "zero computer-use list-apps" to find the target app name or bundle id.
6578
- 3. Run "zero computer-use get-app-state --app <app>" to get a screenshot,
6577
+ 2. Run "zero computer-use list-apps" to find the target app's bundleId.
6578
+ --app accepts a bundle id only (e.g. com.google.Chrome); the name is for
6579
+ display. Apps listed without a bundleId cannot be targeted.
6580
+ 3. Run "zero computer-use get-app-state --app <bundleId>" to get a screenshot,
6579
6581
  snapshotId, visible element indexes, and accessibility state.
6580
6582
  4. Prefer element actions with --snapshot-id and --element-index. Use --x/--y
6581
6583
  only when the target is visible in the returned screenshot but has no useful
@@ -6589,8 +6591,11 @@ Notes:
6589
6591
  Write commands are sent to the connected Desktop host and may wait for local
6590
6592
  approval before they run. Coordinate fallbacks use screenshot coordinates from
6591
6593
  get-app-state; pass the matching --snapshot-id when acting on a prior snapshot.
6592
- type-text sends literal keyboard input to the target app's current focus. Use
6593
- set-value when you need deterministic accessibility value assignment.
6594
+ type-text sends literal keyboard input to the target app's current focus. It
6595
+ first verifies the focused element is editable and fails with
6596
+ element_not_editable when it is not (for example a focused table or list), so
6597
+ click into a text field before typing. Use set-value when you need
6598
+ deterministic accessibility value assignment.
6594
6599
  press-key accepts xdotool-style names such as shift+semicolon, Control_L+J,
6595
6600
  ctrl+alt+n, and BackSpace, plus existing macOS-style forms such as Command+L.
6596
6601
  type-text and press-key accept the same --snapshot-id as the element actions:
@@ -6603,22 +6608,22 @@ Examples:
6603
6608
  zero computer-use list-apps
6604
6609
 
6605
6610
  Inspect Safari state:
6606
- zero computer-use get-app-state --app Safari
6611
+ zero computer-use get-app-state --app com.apple.Safari
6607
6612
 
6608
6613
  Click element index 7 from snapshot desktop_abc:
6609
- zero computer-use click --app Safari --snapshot-id desktop_abc --element-index 7
6614
+ zero computer-use click --app com.apple.Safari --snapshot-id desktop_abc --element-index 7
6610
6615
 
6611
6616
  Click screenshot coordinate (320, 240) from snapshot desktop_abc:
6612
- zero computer-use click --app Safari --snapshot-id desktop_abc --x 320 --y 240
6617
+ zero computer-use click --app com.apple.Safari --snapshot-id desktop_abc --x 320 --y 240
6613
6618
 
6614
6619
  Type text into the snapshot desktop_abc window in Safari:
6615
- zero computer-use type-text --app Safari --snapshot-id desktop_abc --text "Hello"
6620
+ zero computer-use type-text --app com.apple.Safari --snapshot-id desktop_abc --text "Hello"
6616
6621
 
6617
6622
  Press a keyboard shortcut in the snapshot desktop_abc window:
6618
- zero computer-use press-key --app Safari --snapshot-id desktop_abc --key shift+semicolon
6623
+ zero computer-use press-key --app com.apple.Safari --snapshot-id desktop_abc --key shift+semicolon
6619
6624
 
6620
6625
  Open an app without activating the current foreground app:
6621
- zero computer-use open-app --app Things`;
6626
+ zero computer-use open-app --app com.culturedcode.ThingsMac`;
6622
6627
  function sleep2(ms) {
6623
6628
  return new Promise((resolve2) => {
6624
6629
  setTimeout(resolve2, ms);
@@ -6824,7 +6829,10 @@ function addTargetOptions(command) {
6824
6829
  return command.option("--timeout <seconds>", "Maximum time to wait", "30");
6825
6830
  }
6826
6831
  function appOption(command) {
6827
- return command.requiredOption("--app <name>", "Target app name or bundle id");
6832
+ return command.requiredOption(
6833
+ "--app <bundleId>",
6834
+ "Target app bundle id (e.g. com.google.Chrome); run list-apps to find it"
6835
+ );
6828
6836
  }
6829
6837
  var listAppsCommand = addTargetOptions(
6830
6838
  new Command().name("list-apps").description("List apps available to the Desktop Computer Use host").action(
@@ -10068,6 +10076,7 @@ init_esm_shims();
10068
10076
  function toConnectorGenerationType(generationType) {
10069
10077
  switch (generationType) {
10070
10078
  case "voice":
10079
+ case "music":
10071
10080
  return "audio";
10072
10081
  case "dashboard-design":
10073
10082
  case "docs-design":
@@ -10189,62 +10198,6 @@ var BUILT_IN_GENERATION_PROVIDERS = {
10189
10198
  reason: "available without connector setup"
10190
10199
  }
10191
10200
  ],
10192
- presentation: [
10193
- {
10194
- label: "Built-in",
10195
- model: "gpt-5.5",
10196
- command: "zero generate presentation --provider built-in -h",
10197
- reason: "available without connector setup"
10198
- }
10199
- ],
10200
- report: [
10201
- {
10202
- label: "Built-in",
10203
- model: "gpt-5.5",
10204
- command: "zero generate report --provider built-in -h",
10205
- reason: "available without connector setup"
10206
- }
10207
- ],
10208
- "docs-design": [
10209
- {
10210
- label: "Built-in",
10211
- model: "gpt-5.5",
10212
- command: "zero generate docs-design --provider built-in -h",
10213
- reason: "available without connector setup"
10214
- }
10215
- ],
10216
- poster: [
10217
- {
10218
- label: "Built-in",
10219
- model: "gpt-5.5",
10220
- command: "zero generate poster --provider built-in -h",
10221
- reason: "available without connector setup"
10222
- }
10223
- ],
10224
- "dashboard-design": [
10225
- {
10226
- label: "Built-in",
10227
- model: "gpt-5.5",
10228
- command: "zero generate dashboard-design --provider built-in -h",
10229
- reason: "available without connector setup"
10230
- }
10231
- ],
10232
- "mobile-app-design": [
10233
- {
10234
- label: "Built-in",
10235
- model: "gpt-5.5",
10236
- command: "zero generate mobile-app-design --provider built-in -h",
10237
- reason: "available without connector setup"
10238
- }
10239
- ],
10240
- website: [
10241
- {
10242
- label: "Built-in",
10243
- model: "gpt-5.5",
10244
- command: "zero generate website --provider built-in -h",
10245
- reason: "available without connector setup"
10246
- }
10247
- ],
10248
10201
  video: [
10249
10202
  {
10250
10203
  label: "Built-in",
@@ -10299,37 +10252,37 @@ var BUILT_IN_GENERATION_COMMANDS = {
10299
10252
  },
10300
10253
  presentation: {
10301
10254
  label: "Built-in presentation generation",
10302
- command: "zero generate presentation --provider built-in -h",
10255
+ command: "zero generate presentation -h",
10303
10256
  models: "gpt-5.5"
10304
10257
  },
10305
10258
  report: {
10306
10259
  label: "Built-in report generation",
10307
- command: "zero generate report --provider built-in -h",
10260
+ command: "zero generate report -h",
10308
10261
  models: "gpt-5.5"
10309
10262
  },
10310
10263
  "docs-design": {
10311
10264
  label: "Built-in docs design generation",
10312
- command: "zero generate docs-design --provider built-in -h",
10265
+ command: "zero generate docs-design -h",
10313
10266
  models: "gpt-5.5"
10314
10267
  },
10315
10268
  poster: {
10316
10269
  label: "Built-in poster generation",
10317
- command: "zero generate poster --provider built-in -h",
10270
+ command: "zero generate poster -h",
10318
10271
  models: "gpt-5.5"
10319
10272
  },
10320
10273
  "dashboard-design": {
10321
10274
  label: "Built-in dashboard design generation",
10322
- command: "zero generate dashboard-design --provider built-in -h",
10275
+ command: "zero generate dashboard-design -h",
10323
10276
  models: "gpt-5.5"
10324
10277
  },
10325
10278
  "mobile-app-design": {
10326
10279
  label: "Built-in mobile app design generation",
10327
- command: "zero generate mobile-app-design --provider built-in -h",
10280
+ command: "zero generate mobile-app-design -h",
10328
10281
  models: "gpt-5.5"
10329
10282
  },
10330
10283
  website: {
10331
10284
  label: "Built-in website generation",
10332
- command: "zero generate website --provider built-in -h",
10285
+ command: "zero generate website -h",
10333
10286
  models: "gpt-5.5"
10334
10287
  },
10335
10288
  voice: {
@@ -10347,22 +10300,6 @@ var GENERATION_CONTEXT = {
10347
10300
  ]
10348
10301
  }
10349
10302
  };
10350
- var GENERATION_TYPE_ORDER = [
10351
- "image",
10352
- "video",
10353
- "audio",
10354
- "voice",
10355
- "text",
10356
- "code",
10357
- "document",
10358
- "presentation",
10359
- "website",
10360
- "report",
10361
- "docs-design",
10362
- "poster",
10363
- "dashboard-design",
10364
- "mobile-app-design"
10365
- ];
10366
10303
  var GENERATION_TYPE_LABELS = {
10367
10304
  audio: "Audio",
10368
10305
  code: "Code",
@@ -10371,6 +10308,7 @@ var GENERATION_TYPE_LABELS = {
10371
10308
  "docs-design": "Docs design",
10372
10309
  image: "Image",
10373
10310
  "mobile-app-design": "Mobile app design",
10311
+ music: "Music",
10374
10312
  poster: "Poster",
10375
10313
  presentation: "Presentation",
10376
10314
  report: "Report",
@@ -10382,21 +10320,22 @@ var GENERATION_TYPE_LABELS = {
10382
10320
  function getConnectorGenerationType(generationType) {
10383
10321
  switch (generationType) {
10384
10322
  case "voice":
10323
+ case "music":
10385
10324
  return "audio";
10386
10325
  case "dashboard-design":
10387
10326
  case "docs-design":
10388
10327
  case "mobile-app-design":
10389
10328
  case "poster":
10329
+ case "presentation":
10390
10330
  case "report":
10331
+ case "website":
10391
10332
  return null;
10392
10333
  case "audio":
10393
10334
  case "code":
10394
10335
  case "document":
10395
10336
  case "image":
10396
- case "presentation":
10397
10337
  case "text":
10398
10338
  case "video":
10399
- case "website":
10400
10339
  return generationType;
10401
10340
  }
10402
10341
  }
@@ -10409,18 +10348,6 @@ function getBuiltInCommand(generationType) {
10409
10348
  function getGenerationContext(generationType) {
10410
10349
  return GENERATION_CONTEXT[generationType] ?? null;
10411
10350
  }
10412
- function getAvailableGenerationTypes() {
10413
- const available = /* @__PURE__ */ new Set();
10414
- for (const type of CONNECTOR_TYPE_KEYS) {
10415
- for (const generationType of getConnectorGenerationTypes(type)) {
10416
- available.add(generationType);
10417
- }
10418
- }
10419
- return GENERATION_TYPE_ORDER.filter((type) => {
10420
- const connectorGenerationType = getConnectorGenerationType(type);
10421
- return getBuiltInProviders(type).length > 0 || connectorGenerationType !== null && available.has(connectorGenerationType);
10422
- });
10423
- }
10424
10351
  function getGenerationConnectors(generationType) {
10425
10352
  return CONNECTOR_TYPE_KEYS.map((type) => {
10426
10353
  return [type, CONNECTOR_TYPES[type]];
@@ -10650,28 +10577,6 @@ async function runLister(generationType, options = {}) {
10650
10577
  const other = candidates.filter((candidate) => {
10651
10578
  return candidate.status !== "ready";
10652
10579
  });
10653
- const builtInProviders = getBuiltInProviders(generationType);
10654
- if (options.json) {
10655
- console.log(
10656
- JSON.stringify(
10657
- {
10658
- generationType,
10659
- connectorGenerationType,
10660
- availableTypes: getAvailableGenerationTypes(),
10661
- agentId: agentId ?? null,
10662
- choices: ready,
10663
- otherCandidates: other,
10664
- builtInCommand: getBuiltInCommand(generationType),
10665
- generationContext: getGenerationContext(generationType),
10666
- builtInProvider: builtInProviders[0] ?? null,
10667
- builtInProviders
10668
- },
10669
- null,
10670
- 2
10671
- )
10672
- );
10673
- return;
10674
- }
10675
10580
  renderText({
10676
10581
  generationType,
10677
10582
  agentId,
@@ -10700,8 +10605,7 @@ async function dispatchGenerate(options) {
10700
10605
  const resolvedPrompt = resolvePrompt(options.prompt);
10701
10606
  if (resolvedPrompt === null) {
10702
10607
  await runLister(options.generationType, {
10703
- all: options.all,
10704
- json: options.json
10608
+ all: options.all
10705
10609
  });
10706
10610
  return { outcome: "handled" };
10707
10611
  }
@@ -10837,7 +10741,7 @@ function createImageGenerateCommand(config) {
10837
10741
  ).option(
10838
10742
  "--skip-style",
10839
10743
  "Opt out of styled image generation for this invocation"
10840
- ).option("--json", "Print metadata as JSON").addHelpText("after", () => {
10744
+ ).addHelpText("after", () => {
10841
10745
  const styles = listImageStyles();
10842
10746
  return `
10843
10747
  Examples:
@@ -10893,8 +10797,7 @@ ${formatRegistryListing(styles, "image styles")}`;
10893
10797
  generationType: config.generationType,
10894
10798
  provider: options.provider,
10895
10799
  prompt: options.prompt,
10896
- all: options.all,
10897
- json: options.json
10800
+ all: options.all
10898
10801
  });
10899
10802
  if (dispatch.outcome === "handled") return;
10900
10803
  const prompt = dispatch.prompt;
@@ -10922,10 +10825,6 @@ ${formatRegistryListing(styles, "image styles")}`;
10922
10825
  `Mask image URL: ${options.maskImageUrl ?? "none"}`
10923
10826
  ]
10924
10827
  });
10925
- if (options.json) {
10926
- console.log(JSON.stringify(packet));
10927
- return;
10928
- }
10929
10828
  console.log(packet.instructions);
10930
10829
  return;
10931
10830
  }
@@ -10953,10 +10852,6 @@ ${formatRegistryListing(styles, "image styles")}`;
10953
10852
  inputFidelity,
10954
10853
  imagePromptStrength
10955
10854
  });
10956
- if (options.json) {
10957
- console.log(JSON.stringify(result));
10958
- return;
10959
- }
10960
10855
  console.log(source_default.green(`\u2713 Image generated: ${result.url}`));
10961
10856
  console.log(source_default.dim(` File: ${result.filename}`));
10962
10857
  console.log(source_default.dim(` Size: ${result.imageSize}`));
@@ -11210,19 +11105,13 @@ function unknownTemplateError(id, usageCommand, target) {
11210
11105
  return new Error(message);
11211
11106
  }
11212
11107
  function createArtifactGenerateCommand(config) {
11213
- return new Command().name(config.name).description(config.description).option("--prompt <text>", "Artifact prompt; can also be piped via stdin").option(
11214
- "--provider <name>",
11215
- "Provider: 'built-in' to run vm0's pipeline, or a connector name to get its skill-invocation guidance"
11216
- ).option(
11217
- "--all",
11218
- "When listing providers (no --prompt given), include unavailable or not-yet-authorized connectors"
11219
- ).option("--site-slug <slug>", "Hosted site slug override").option("--title <text>", "Requested artifact title or name").option(
11108
+ return new Command().name(config.name).description(config.description).option("--prompt <text>", "Artifact prompt; can also be piped via stdin").option("--site-slug <slug>", "Hosted site slug override").option("--title <text>", "Requested artifact title or name").option(
11220
11109
  "--design-system <id>",
11221
11110
  "Design system id from the registry (see Design Systems below). Accepts either 'apple' or 'design-system:apple'."
11222
11111
  ).option(
11223
11112
  "--template <id>",
11224
11113
  `Template id from the registry, scoped to ${config.target} (see Templates below). Accepts either short id or full 'template:<id>'.`
11225
- ).option("--json", "Print metadata as JSON").addHelpText("after", () => {
11114
+ ).addHelpText("after", () => {
11226
11115
  const designSystems = listDesignSystems();
11227
11116
  const templates = listTemplates(config.target);
11228
11117
  return `
@@ -11232,7 +11121,7 @@ ${config.examples}
11232
11121
  Output:
11233
11122
  Prints a source-selection packet for the current agent. The
11234
11123
  agent authors a static HTML artifact and hosts it with zero host. With no
11235
- --prompt and no piped input, prints the provider menu instead.
11124
+ --prompt and no piped input, prints the generation choices instead.
11236
11125
 
11237
11126
  Notes:
11238
11127
  - Authenticates via ZERO_TOKEN
@@ -11246,10 +11135,7 @@ ${formatRegistryListing(templates, `${config.target} templates`)}`;
11246
11135
  withErrorHandler(async (options) => {
11247
11136
  const dispatch = await dispatchGenerate({
11248
11137
  generationType: config.generationType,
11249
- provider: options.provider,
11250
- prompt: options.prompt,
11251
- all: options.all,
11252
- json: options.json
11138
+ prompt: options.prompt
11253
11139
  });
11254
11140
  if (dispatch.outcome === "handled") return;
11255
11141
  const prompt = dispatch.prompt;
@@ -11296,10 +11182,6 @@ ${formatRegistryListing(templates, `${config.target} templates`)}`;
11296
11182
  details: [...config.details(options), ...extraDetails],
11297
11183
  artifactRules: config.artifactRules
11298
11184
  });
11299
- if (options.json) {
11300
- console.log(JSON.stringify(packet));
11301
- return;
11302
- }
11303
11185
  console.log(packet.instructions);
11304
11186
  })
11305
11187
  );
@@ -11322,7 +11204,7 @@ var reportCommand = createArtifactGenerateCommand({
11322
11204
  usageCommand: "zero generate report",
11323
11205
  examples: ` Generate report: zero generate report --prompt "A Q2 usage report for the API team"
11324
11206
  Stable hosted slug: zero generate report --site-slug api-usage-q2 --prompt "A Q2 usage report"
11325
- List providers: zero generate report`,
11207
+ Show choices: zero generate report`,
11326
11208
  details: standardDetails("report"),
11327
11209
  artifactRules: [
11328
11210
  "Produce an analytical report, not a marketing page.",
@@ -11339,7 +11221,7 @@ var docsDesignCommand = createArtifactGenerateCommand({
11339
11221
  usageCommand: "zero generate docs-design",
11340
11222
  examples: ` Generate docs design: zero generate docs-design --prompt "Docs for adding artifact targets"
11341
11223
  Stable hosted slug: zero generate docs-design --site-slug artifact-target-docs --prompt "Artifact target docs"
11342
- List providers: zero generate docs-design`,
11224
+ Show choices: zero generate docs-design`,
11343
11225
  details: standardDetails("docs-design"),
11344
11226
  artifactRules: [
11345
11227
  "Produce a documentation design mockup, not a production documentation system.",
@@ -11356,7 +11238,7 @@ var posterCommand = createArtifactGenerateCommand({
11356
11238
  usageCommand: "zero generate poster",
11357
11239
  examples: ` Generate poster: zero generate poster --prompt "A launch poster for artifact targets"
11358
11240
  Stable hosted slug: zero generate poster --site-slug artifact-poster --prompt "A launch poster"
11359
- List providers: zero generate poster`,
11241
+ Show choices: zero generate poster`,
11360
11242
  details: standardDetails("poster"),
11361
11243
  artifactRules: [
11362
11244
  "Produce a poster-style HTML artifact with strong hierarchy and composition.",
@@ -11373,7 +11255,7 @@ var dashboardDesignCommand = createArtifactGenerateCommand({
11373
11255
  usageCommand: "zero generate dashboard-design",
11374
11256
  examples: ` Generate dash design: zero generate dashboard-design --prompt "An ops dashboard for generation runs"
11375
11257
  Stable hosted slug: zero generate dashboard-design --site-slug generation-ops --prompt "A generation ops dashboard"
11376
- List providers: zero generate dashboard-design`,
11258
+ Show choices: zero generate dashboard-design`,
11377
11259
  details: standardDetails("dashboard-design"),
11378
11260
  artifactRules: [
11379
11261
  "Produce a dashboard design mockup, not a live operational dashboard.",
@@ -11390,7 +11272,7 @@ var mobileAppDesignCommand = createArtifactGenerateCommand({
11390
11272
  usageCommand: "zero generate mobile-app-design",
11391
11273
  examples: ` Generate mobile UI: zero generate mobile-app-design --prompt "A mobile review screen for generation artifacts"
11392
11274
  Stable hosted slug: zero generate mobile-app-design --site-slug generation-mobile-review --prompt "A mobile review screen"
11393
- List providers: zero generate mobile-app-design`,
11275
+ Show choices: zero generate mobile-app-design`,
11394
11276
  details: standardDetails("mobile-app-design"),
11395
11277
  artifactRules: [
11396
11278
  "Produce a design prototype, not a runnable or installable mobile app.",
@@ -11405,7 +11287,6 @@ init_esm_shims();
11405
11287
 
11406
11288
  // src/commands/zero/shared/presentation-generate.ts
11407
11289
  init_esm_shims();
11408
- var PRESENTATION_MAX_IMAGES = 8;
11409
11290
  var PRESENTATION_TARGET = "presentation";
11410
11291
  function parseSlideCount(value) {
11411
11292
  const slideCount = Number(value);
@@ -11414,18 +11295,6 @@ function parseSlideCount(value) {
11414
11295
  }
11415
11296
  return slideCount;
11416
11297
  }
11417
- function parseImageCount(value) {
11418
- const imageCount = Number(value);
11419
- if (!Number.isInteger(imageCount)) {
11420
- throw new InvalidArgumentError("images must be an integer");
11421
- }
11422
- if (!Number.isSafeInteger(imageCount) || imageCount < 0 || imageCount > PRESENTATION_MAX_IMAGES) {
11423
- throw new InvalidArgumentError(
11424
- `images must be between 0 and ${PRESENTATION_MAX_IMAGES}`
11425
- );
11426
- }
11427
- return imageCount;
11428
- }
11429
11298
  function unknownDesignSystemError2(id, usageCommand) {
11430
11299
  const designSystems = listDesignSystems();
11431
11300
  const message = [
@@ -11456,27 +11325,13 @@ function createPresentationGenerateCommand(config) {
11456
11325
  return new Command().name(config.name).description("Generate an HTML presentation from a prompt").option(
11457
11326
  "--prompt <text>",
11458
11327
  "Presentation prompt; can also be piped via stdin"
11459
- ).option(
11460
- "--provider <name>",
11461
- "Provider: 'built-in' to run vm0's pipeline, or a connector name to get its skill-invocation guidance"
11462
- ).option(
11463
- "--all",
11464
- "When listing providers (no --prompt given), include unavailable or not-yet-authorized connectors"
11465
- ).option("--slides <count>", "Slide count: 4-20", parseSlideCount, 8).option(
11466
- "--images <count>",
11467
- `Generated image count: 0-${PRESENTATION_MAX_IMAGES}`,
11468
- parseImageCount,
11469
- 2
11470
- ).option(
11471
- "--image-model <model>",
11472
- "Image model for generated visuals (default: gpt-image-1): gpt-image-2, gpt-image-1.5, gpt-image-1, gpt-image-1-mini, flux-pro-1.1, flux-pro-1.1-ultra, qwen-image, or seedream4"
11473
- ).option("--title <text>", "Requested deck title").option("--site-slug <slug>", "Hosted site slug override").option(
11328
+ ).option("--site-slug <slug>", "Hosted site slug override").option("--title <text>", "Requested deck title").option(
11474
11329
  "--design-system <id>",
11475
11330
  "Design system id from the registry (see Design Systems below). Accepts either 'apple' or 'design-system:apple'."
11476
11331
  ).option(
11477
11332
  "--template <id>",
11478
11333
  "Template id from the registry, scoped to presentation (see Templates below). Accepts either 'html-ppt-pitch-deck' or 'template:html-ppt-pitch-deck'."
11479
- ).option("--json", "Print metadata as JSON").addHelpText("after", () => {
11334
+ ).option("--slides <count>", "Slide count: 4-20", parseSlideCount, 8).addHelpText("after", () => {
11480
11335
  const designSystems = listDesignSystems();
11481
11336
  const templates = listTemplates(PRESENTATION_TARGET);
11482
11337
  return `
@@ -11499,10 +11354,7 @@ ${formatRegistryListing(templates, "presentation templates")}`;
11499
11354
  withErrorHandler(async (options) => {
11500
11355
  const dispatch = await dispatchGenerate({
11501
11356
  generationType: config.generationType,
11502
- provider: options.provider,
11503
- prompt: options.prompt,
11504
- all: options.all,
11505
- json: options.json
11357
+ prompt: options.prompt
11506
11358
  });
11507
11359
  if (dispatch.outcome === "handled") return;
11508
11360
  const prompt = dispatch.prompt;
@@ -11544,8 +11396,6 @@ ${formatRegistryListing(templates, "presentation templates")}`;
11544
11396
  siteSlug: options.siteSlug,
11545
11397
  details: [
11546
11398
  `Slide count: ${options.slides}`,
11547
- `Suggested generated visual count: ${options.images}`,
11548
- `Image model preference if visuals are generated separately: ${options.imageModel ?? "default"}`,
11549
11399
  `Requested deck title: ${options.title ?? "not specified"}`,
11550
11400
  `Selected design system: ${resolvedDesignSystem ? `${resolvedDesignSystem.id} (${resolvedDesignSystem.name})` : "agent decides"}`,
11551
11401
  `Selected template: ${resolvedTemplate ? `${resolvedTemplate.id} (${resolvedTemplate.name})` : "agent decides"}`
@@ -11558,10 +11408,6 @@ ${formatRegistryListing(templates, "presentation templates")}`;
11558
11408
  "Keep slide text readable from across a room; avoid memo-like walls of text."
11559
11409
  ]
11560
11410
  });
11561
- if (options.json) {
11562
- console.log(JSON.stringify(packet));
11563
- return;
11564
- }
11565
11411
  console.log(packet.instructions);
11566
11412
  })
11567
11413
  );
@@ -11574,9 +11420,9 @@ var presentationCommand = createPresentationGenerateCommand({
11574
11420
  usageCommand: "zero generate presentation",
11575
11421
  examples: ` Generate deck: zero generate presentation --prompt "A strategy deck for reducing support volume"
11576
11422
  Pipe prompt: cat brief.txt | zero generate presentation
11577
- Generated visuals: zero generate presentation --slides 10 --images 8 --image-model gpt-image-1.5 --prompt "A product launch narrative"
11423
+ Pick slide count: zero generate presentation --slides 10 --prompt "A product launch narrative"
11578
11424
  Stable hosted slug: zero generate presentation --site-slug api-migration-plan --prompt "API migration plan"
11579
- List providers: zero generate presentation`
11425
+ Show choices: zero generate presentation`
11580
11426
  });
11581
11427
 
11582
11428
  // src/commands/zero/generate/video.ts
@@ -11811,7 +11657,7 @@ function createVideoGenerateCommand(config) {
11811
11657
  "Reference audio URL for Dreamina Seedance 2.0",
11812
11658
  collectUrl,
11813
11659
  []
11814
- ).option("--first-frame-image-url <url>", "First frame image URL").option("--last-frame-image-url <url>", "Last frame image URL").option("--json", "Print metadata as JSON").addHelpText(
11660
+ ).option("--first-frame-image-url <url>", "First frame image URL").option("--last-frame-image-url <url>", "Last frame image URL").addHelpText(
11815
11661
  "after",
11816
11662
  `
11817
11663
  Examples:
@@ -11843,8 +11689,7 @@ Models:
11843
11689
  generationType: config.generationType,
11844
11690
  provider: options.provider,
11845
11691
  prompt: options.prompt,
11846
- all: options.all,
11847
- json: options.json
11692
+ all: options.all
11848
11693
  });
11849
11694
  if (dispatch.outcome === "handled") return;
11850
11695
  const prompt = dispatch.prompt;
@@ -11866,10 +11711,6 @@ Models:
11866
11711
  firstFrameImageUrl: options.firstFrameImageUrl,
11867
11712
  lastFrameImageUrl: options.lastFrameImageUrl
11868
11713
  });
11869
- if (options.json) {
11870
- console.log(JSON.stringify(result));
11871
- return;
11872
- }
11873
11714
  console.log(source_default.green(`\u2713 Video generated: ${result.url}`));
11874
11715
  console.log(source_default.dim(` File: ${result.filename}`));
11875
11716
  console.log(source_default.dim(` Duration: ${result.duration}`));
@@ -11900,21 +11741,8 @@ var videoCommand = createVideoGenerateCommand({
11900
11741
 
11901
11742
  // src/commands/zero/generate/website.ts
11902
11743
  init_esm_shims();
11903
- var WEBSITE_MAX_IMAGES = 3;
11904
11744
  var WEBSITE_TARGET = "website";
11905
11745
  var WEBSITE_USAGE_COMMAND = "zero generate website";
11906
- function parseImageCount2(value) {
11907
- const imageCount = Number(value);
11908
- if (!Number.isInteger(imageCount)) {
11909
- throw new InvalidArgumentError("images must be an integer");
11910
- }
11911
- if (!Number.isSafeInteger(imageCount) || imageCount < 0 || imageCount > WEBSITE_MAX_IMAGES) {
11912
- throw new InvalidArgumentError(
11913
- `images must be between 0 and ${WEBSITE_MAX_IMAGES}`
11914
- );
11915
- }
11916
- return imageCount;
11917
- }
11918
11746
  function unknownDesignSystemError3(id) {
11919
11747
  const designSystems = listDesignSystems();
11920
11748
  const message = [
@@ -11941,27 +11769,13 @@ function unknownTemplateError3(id) {
11941
11769
  ].join("\n");
11942
11770
  return new Error(message);
11943
11771
  }
11944
- var websiteCommand = new Command().name("website").description("Prepare website authoring instructions from a prompt").option("--prompt <text>", "Website prompt; can also be piped via stdin").option(
11945
- "--provider <name>",
11946
- "Provider: 'built-in' to run vm0's pipeline, or a connector name to get its skill-invocation guidance"
11947
- ).option(
11948
- "--all",
11949
- "When listing providers (no --prompt given), include unavailable or not-yet-authorized connectors"
11950
- ).option(
11951
- "--template <id>",
11952
- "Template id from the registry, scoped to website (see Templates below). Accepts either short id or full 'template:<id>'."
11953
- ).option(
11772
+ var websiteCommand = new Command().name("website").description("Prepare website authoring instructions from a prompt").option("--prompt <text>", "Website prompt; can also be piped via stdin").option("--site-slug <slug>", "Hosted site slug override").option("--title <text>", "Requested site title or name").option(
11954
11773
  "--design-system <id>",
11955
11774
  "Design system id from the registry (see Design Systems below). Accepts either 'apple' or 'design-system:apple'."
11956
11775
  ).option(
11957
- "--images <count>",
11958
- `Generated website image count: 0-${WEBSITE_MAX_IMAGES}`,
11959
- parseImageCount2,
11960
- 1
11961
- ).option(
11962
- "--image-model <model>",
11963
- "Image model for generated visuals (default: gpt-image-1): gpt-image-2, gpt-image-1.5, gpt-image-1, gpt-image-1-mini, flux-pro-1.1, flux-pro-1.1-ultra, qwen-image, or seedream4"
11964
- ).option("--site-slug <slug>", "Hosted site slug override").option("--title <text>", "Requested site title or name").option("--json", "Print metadata as JSON").addHelpText("after", () => {
11776
+ "--template <id>",
11777
+ "Template id from the registry, scoped to website (see Templates below). Accepts either short id or full 'template:<id>'."
11778
+ ).addHelpText("after", () => {
11965
11779
  const designSystems = listDesignSystems();
11966
11780
  const templates = listTemplates(WEBSITE_TARGET);
11967
11781
  return `
@@ -11971,11 +11785,11 @@ Examples:
11971
11785
  Pick design system: zero generate website --design-system stripe --prompt "Pricing page for a SaaS"
11972
11786
  Stable hosted slug: zero generate website --site-slug api-migration-demo --prompt "An internal migration microsite"
11973
11787
  Pipe prompt: cat brief.txt | zero generate website
11974
- List providers: zero generate website
11788
+ Show choices: zero generate website
11975
11789
 
11976
11790
  Output:
11977
11791
  Prints a source-selection packet for the current agent.
11978
- With no --prompt and no piped input, prints the provider menu instead.
11792
+ With no --prompt and no piped input, prints the generation choices instead.
11979
11793
 
11980
11794
  Notes:
11981
11795
  - Authenticates via ZERO_TOKEN
@@ -11990,10 +11804,7 @@ ${formatRegistryListing(templates, "website templates")}`;
11990
11804
  withErrorHandler(async (options) => {
11991
11805
  const dispatch = await dispatchGenerate({
11992
11806
  generationType: "website",
11993
- provider: options.provider,
11994
- prompt: options.prompt,
11995
- all: options.all,
11996
- json: options.json
11807
+ prompt: options.prompt
11997
11808
  });
11998
11809
  if (dispatch.outcome === "handled") return;
11999
11810
  const prompt = dispatch.prompt;
@@ -12024,8 +11835,6 @@ ${formatRegistryListing(templates, "website templates")}`;
12024
11835
  slugSource: options.title,
12025
11836
  siteSlug: options.siteSlug,
12026
11837
  details: [
12027
- `Suggested generated visual count: ${options.images}`,
12028
- `Image model preference if visuals are generated separately: ${options.imageModel ?? "default"}`,
12029
11838
  `Requested title/site name: ${options.title ?? "not specified"}`,
12030
11839
  `Selected design system: ${resolvedDesignSystem ? `${resolvedDesignSystem.id} (${resolvedDesignSystem.name})` : "agent decides"}`,
12031
11840
  `Selected template: ${resolvedTemplate ? `${resolvedTemplate.id} (${resolvedTemplate.name})` : "agent decides"}`
@@ -12037,10 +11846,6 @@ ${formatRegistryListing(templates, "website templates")}`;
12037
11846
  "Use responsive HTML/CSS and verify the page works at mobile and desktop widths."
12038
11847
  ]
12039
11848
  });
12040
- if (options.json) {
12041
- console.log(JSON.stringify(packet));
12042
- return;
12043
- }
12044
11849
  console.log(packet.instructions);
12045
11850
  })
12046
11851
  );
@@ -12057,7 +11862,7 @@ function createVoiceGenerateCommand(config) {
12057
11862
  ).option(
12058
11863
  "--all",
12059
11864
  "When listing providers (no --prompt given), include unavailable or not-yet-authorized connectors"
12060
- ).option("--voice <voice>", "OpenAI voice to use", "marin").option("--instructions <text>", "Voice style instructions").option("--json", "Print metadata as JSON").addHelpText(
11865
+ ).option("--voice <voice>", "OpenAI voice to use", "marin").option("--instructions <text>", "Voice style instructions").addHelpText(
12061
11866
  "after",
12062
11867
  `
12063
11868
  Examples:
@@ -12077,8 +11882,7 @@ Notes:
12077
11882
  generationType: config.generationType,
12078
11883
  provider: options.provider,
12079
11884
  prompt: options.prompt ?? options.text,
12080
- all: options.all,
12081
- json: options.json
11885
+ all: options.all
12082
11886
  });
12083
11887
  if (dispatch.outcome === "handled") return;
12084
11888
  const text = dispatch.prompt;
@@ -12087,10 +11891,6 @@ Notes:
12087
11891
  voice: options.voice,
12088
11892
  instructions: options.instructions
12089
11893
  });
12090
- if (options.json) {
12091
- console.log(JSON.stringify(result));
12092
- return;
12093
- }
12094
11894
  console.log(source_default.green(`\u2713 Voice generated: ${result.url}`));
12095
11895
  console.log(source_default.dim(` File: ${result.filename}`));
12096
11896
  console.log(source_default.dim(` Duration: ${result.durationSeconds}s`));
@@ -12119,7 +11919,7 @@ function createListerOnlyCommand(config) {
12119
11919
  return new Command().name(config.name).description(config.description).option(
12120
11920
  "--provider <name>",
12121
11921
  "Connector name; prints that connector's skill-invocation guidance"
12122
- ).option("--all", "Include unavailable or not-yet-authorized connectors").option("--json", "Print the provider list as JSON").addHelpText(
11922
+ ).option("--all", "Include unavailable or not-yet-authorized connectors").addHelpText(
12123
11923
  "after",
12124
11924
  `
12125
11925
  Notes:
@@ -12144,18 +11944,17 @@ Notes:
12144
11944
  return;
12145
11945
  }
12146
11946
  await runLister(config.generationType, {
12147
- all: options.all,
12148
- json: options.json
11947
+ all: options.all
12149
11948
  });
12150
11949
  })
12151
11950
  );
12152
11951
  }
12153
11952
 
12154
11953
  // src/commands/zero/generate/index.ts
12155
- var audioCommand = createListerOnlyCommand({
12156
- name: "audio",
12157
- generationType: "audio",
12158
- description: "List connectors that provide audio generation (alias of voice for non-speech audio)"
11954
+ var musicCommand = createListerOnlyCommand({
11955
+ name: "music",
11956
+ generationType: "music",
11957
+ description: "List connectors that provide music generation"
12159
11958
  });
12160
11959
  var textCommand = createListerOnlyCommand({
12161
11960
  name: "text",
@@ -12181,8 +11980,10 @@ function buildGenerateHelpText() {
12181
11980
  ' Generate video: zero generate video --prompt "A cinematic city shot"',
12182
11981
  ' Generate site: zero generate website --prompt "A launch site"',
12183
11982
  ' Generate speech: zero generate voice --prompt "Hello"',
11983
+ " Show music choices: zero generate music",
12184
11984
  "",
12185
- " List image providers: zero generate image",
11985
+ " Show image choices: zero generate image",
11986
+ " Show report choices: zero generate report",
12186
11987
  " Use a connector: zero generate video --provider heygen",
12187
11988
  " Force built-in: zero generate image --provider built-in --model gpt-image-1.5 --prompt ..."
12188
11989
  ];
@@ -12191,13 +11992,13 @@ Examples:
12191
11992
  ${examples.join("\n")}
12192
11993
 
12193
11994
  Notes:
12194
- - Run "zero generate <type>" with no --prompt to list every provider available for that type.
12195
- - --provider built-in (default when --prompt is provided) runs the vm0-hosted pipeline.
12196
- - --provider <connector-name> prints how to invoke that connector's skill instead.`;
11995
+ - Run "zero generate <type>" with no --prompt to list generation choices for that type.
11996
+ - Media and connector-backed generation types may expose --provider for vm0 or connector execution guidance.
11997
+ - HTML artifact types use registry-backed --design-system and --template selection.`;
12197
11998
  }
12198
11999
  var generateCommand = new Command().name("generate").description(
12199
12000
  "Generate assets via vm0's built-in pipelines or get connector skill-invocation guidance"
12200
- ).addCommand(imageCommand).addCommand(presentationCommand).addCommand(reportCommand).addCommand(docsDesignCommand).addCommand(posterCommand).addCommand(dashboardDesignCommand).addCommand(mobileAppDesignCommand).addCommand(videoCommand).addCommand(websiteCommand).addCommand(voiceCommand).addCommand(audioCommand).addCommand(textCommand).addCommand(codeCommand).addCommand(documentCommand).addHelpText("after", buildGenerateHelpText);
12001
+ ).addCommand(imageCommand).addCommand(presentationCommand).addCommand(reportCommand).addCommand(docsDesignCommand).addCommand(posterCommand).addCommand(dashboardDesignCommand).addCommand(mobileAppDesignCommand).addCommand(videoCommand).addCommand(websiteCommand).addCommand(voiceCommand).addCommand(musicCommand).addCommand(textCommand).addCommand(codeCommand).addCommand(documentCommand).addHelpText("after", buildGenerateHelpText);
12201
12002
 
12202
12003
  // src/commands/zero/web/index.ts
12203
12004
  init_esm_shims();
@@ -13026,7 +12827,7 @@ function registerZeroCommands(prog, commands) {
13026
12827
  var program = new Command();
13027
12828
  program.name("zero").description(
13028
12829
  "Zero CLI \u2014 interact with the zero platform from inside the sandbox"
13029
- ).version("9.176.4").addHelpText("after", () => {
12830
+ ).version("9.176.5").addHelpText("after", () => {
13030
12831
  return buildZeroHelpText();
13031
12832
  });
13032
12833
  if (process.argv[1]?.endsWith("zero.js") || process.argv[1]?.endsWith("zero.ts") || process.argv[1]?.endsWith("zero")) {