@vm0/cli 9.200.4 → 9.201.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/zero.js CHANGED
@@ -35,12 +35,14 @@ import {
35
35
  createGithubLabelListener,
36
36
  createGoal,
37
37
  createWorkflow,
38
+ createWorkflowTrigger,
38
39
  createZeroAgent,
39
40
  createZeroCreditCheckout,
40
41
  decodeZeroTokenPayload,
41
42
  deleteAutomation,
42
43
  deleteGithubLabelListener,
43
44
  deleteWorkflow,
45
+ deleteWorkflowTrigger,
44
46
  deleteZeroAgent,
45
47
  deleteZeroOrg,
46
48
  deleteZeroOrgModelProvider,
@@ -50,6 +52,7 @@ import {
50
52
  deleteZeroVariable,
51
53
  disableAutomation,
52
54
  disableAutomationTrigger,
55
+ disableWorkflowTrigger,
53
56
  downloadGithubFile,
54
57
  downloadPhoneFile,
55
58
  downloadSlackFile,
@@ -58,6 +61,7 @@ import {
58
61
  editGoal,
59
62
  enableAutomation,
60
63
  enableAutomationTrigger,
64
+ enableWorkflowTrigger,
61
65
  extractSecretNamesFromApis,
62
66
  fetchComputerUseScreenshot,
63
67
  findColorSystem,
@@ -93,6 +97,7 @@ import {
93
97
  getToken,
94
98
  getVm0ModelMultiplier,
95
99
  getWorkflow,
100
+ getWorkflowTrigger,
96
101
  getZeroAgent,
97
102
  getZeroAgentInstructions,
98
103
  getZeroAgentUserConnectors,
@@ -122,6 +127,7 @@ import {
122
127
  listTelegramBots,
123
128
  listTemplates,
124
129
  listVideoTemplates,
130
+ listWorkflowTriggers,
125
131
  listWorkflows,
126
132
  listZeroAgents,
127
133
  listZeroConnectors,
@@ -154,6 +160,7 @@ import {
154
160
  rotateAutomationTriggerSecret,
155
161
  runAutomation,
156
162
  runWorkflow,
163
+ runWorkflowTrigger,
157
164
  saveConfig,
158
165
  searchZeroChat,
159
166
  searchZeroConnectors,
@@ -178,6 +185,7 @@ import {
178
185
  updateAutomationTrigger,
179
186
  updateGithubLabelListener,
180
187
  updateWorkflow,
188
+ updateWorkflowTrigger,
181
189
  updateZeroAgent,
182
190
  updateZeroAgentInstructions,
183
191
  updateZeroOrg,
@@ -185,7 +193,7 @@ import {
185
193
  uploadWebFile,
186
194
  upsertZeroOrgModelProvider,
187
195
  withErrorHandler
188
- } from "./chunk-IMHXYYPH.js";
196
+ } from "./chunk-M5DCFTDG.js";
189
197
  import "./chunk-NR42YJMI.js";
190
198
  import {
191
199
  __toESM,
@@ -5909,8 +5917,373 @@ Examples:
5909
5917
  })
5910
5918
  );
5911
5919
 
5920
+ // src/commands/zero/workflow/trigger/index.ts
5921
+ init_esm_shims();
5922
+
5923
+ // src/commands/zero/workflow/trigger/display.ts
5924
+ init_esm_shims();
5925
+ function formatWorkflowTriggerSchedule(trigger) {
5926
+ const { schedule } = trigger;
5927
+ switch (schedule.type) {
5928
+ case "cron":
5929
+ return `${schedule.cronExpression} (${schedule.timezone})`;
5930
+ case "once":
5931
+ return `at ${schedule.atTime} (${schedule.timezone})`;
5932
+ case "loop":
5933
+ return `every ${formatDurationSeconds(schedule.intervalSeconds)}`;
5934
+ }
5935
+ }
5936
+ function formatRunTime(value) {
5937
+ return value ? formatRelativeTime(value) : source_default.dim("-");
5938
+ }
5939
+ function printWorkflowTriggersTable(triggers) {
5940
+ const idWidth = Math.max(
5941
+ 2,
5942
+ ...triggers.map((trigger) => {
5943
+ return trigger.id.length;
5944
+ })
5945
+ );
5946
+ const scheduleWidth = Math.max(
5947
+ 8,
5948
+ ...triggers.map((trigger) => {
5949
+ return formatWorkflowTriggerSchedule(trigger).length;
5950
+ })
5951
+ );
5952
+ console.log(
5953
+ source_default.dim(
5954
+ [
5955
+ "ID".padEnd(idWidth),
5956
+ "STATUS".padEnd(8),
5957
+ "SCHEDULE".padEnd(scheduleWidth),
5958
+ "NEXT RUN"
5959
+ ].join(" ")
5960
+ )
5961
+ );
5962
+ for (const trigger of triggers) {
5963
+ const status = trigger.enabled ? source_default.green("enabled") : source_default.yellow("disabled");
5964
+ console.log(
5965
+ [
5966
+ trigger.id.padEnd(idWidth),
5967
+ status.padEnd(8 + (trigger.enabled ? 0 : 2)),
5968
+ formatWorkflowTriggerSchedule(trigger).padEnd(scheduleWidth),
5969
+ formatRunTime(trigger.nextRunAt)
5970
+ ].join(" ")
5971
+ );
5972
+ }
5973
+ }
5974
+ function printWorkflowTriggerDetails(trigger, options) {
5975
+ const status = trigger.enabled ? source_default.green("enabled") : source_default.yellow("disabled");
5976
+ console.log(`${"Kind:".padEnd(14)}${trigger.kind}`);
5977
+ console.log(`${"ID:".padEnd(14)}${trigger.id}`);
5978
+ if (options?.workflowRef) {
5979
+ console.log(`${"Workflow:".padEnd(14)}${options.workflowRef}`);
5980
+ }
5981
+ console.log(`${"Status:".padEnd(14)}${status}`);
5982
+ console.log(
5983
+ `${"Schedule:".padEnd(14)}${formatWorkflowTriggerSchedule(trigger)}`
5984
+ );
5985
+ console.log(`${"Owner:".padEnd(14)}${trigger.ownerUserId}`);
5986
+ console.log(
5987
+ `${"Chat thread:".padEnd(14)}${trigger.chatThreadId ?? source_default.dim("-")}`
5988
+ );
5989
+ console.log(`${"Next run:".padEnd(14)}${formatRunTime(trigger.nextRunAt)}`);
5990
+ console.log(`${"Last run:".padEnd(14)}${formatRunTime(trigger.lastRunAt)}`);
5991
+ }
5992
+
5993
+ // src/commands/zero/workflow/trigger/index.ts
5994
+ var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
5995
+ var SCHEDULE_KINDS = ["cron", "once", "loop"];
5996
+ var EXACTLY_ONE_FLAG_MESSAGE2 = "Provide exactly one of --expr (cron), --at (once), --every (loop)";
5997
+ function timezoneOrUtc(timezone) {
5998
+ return timezone ?? "UTC";
5999
+ }
6000
+ function assertValidTimezone(timezone) {
6001
+ new Intl.DateTimeFormat("en-US", { timeZone: timezone });
6002
+ }
6003
+ function hasExplicitOffset(value) {
6004
+ return /(?:Z|[+-]\d{2}:?\d{2})$/i.test(value);
6005
+ }
6006
+ function parseLocalDateTime(value) {
6007
+ const match = value.match(
6008
+ /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2})(?:\.(\d{1,3}))?)?$/
6009
+ );
6010
+ if (!match) {
6011
+ throw new Error(
6012
+ `Invalid at time: "${value}". Use ISO datetime, e.g. 2026-06-10T09:00 or 2026-06-10T09:00:00Z`
6013
+ );
6014
+ }
6015
+ return {
6016
+ year: Number(match[1]),
6017
+ month: Number(match[2]),
6018
+ day: Number(match[3]),
6019
+ hour: Number(match[4]),
6020
+ minute: Number(match[5]),
6021
+ second: match[6] ? Number(match[6]) : 0,
6022
+ millisecond: match[7] ? Number(match[7].padEnd(3, "0")) : 0
6023
+ };
6024
+ }
6025
+ function zonedParts(instant, timezone) {
6026
+ const parts = new Intl.DateTimeFormat("en-US", {
6027
+ timeZone: timezone,
6028
+ year: "numeric",
6029
+ month: "2-digit",
6030
+ day: "2-digit",
6031
+ hour: "2-digit",
6032
+ minute: "2-digit",
6033
+ second: "2-digit",
6034
+ hourCycle: "h23"
6035
+ }).formatToParts(instant);
6036
+ const values = /* @__PURE__ */ new Map();
6037
+ for (const part of parts) {
6038
+ if (part.type !== "literal") {
6039
+ values.set(part.type, part.value);
6040
+ }
6041
+ }
6042
+ return {
6043
+ year: Number(values.get("year")),
6044
+ month: Number(values.get("month")),
6045
+ day: Number(values.get("day")),
6046
+ hour: Number(values.get("hour")),
6047
+ minute: Number(values.get("minute")),
6048
+ second: Number(values.get("second"))
6049
+ };
6050
+ }
6051
+ function wallTimeToUtcIso(value, timezone) {
6052
+ assertValidTimezone(timezone);
6053
+ if (hasExplicitOffset(value)) {
6054
+ const instant = new Date(value);
6055
+ if (Number.isNaN(instant.getTime())) {
6056
+ throw new Error(`Invalid at time: "${value}"`);
6057
+ }
6058
+ return instant.toISOString();
6059
+ }
6060
+ const target = parseLocalDateTime(value);
6061
+ const targetUtc = Date.UTC(
6062
+ target.year,
6063
+ target.month - 1,
6064
+ target.day,
6065
+ target.hour,
6066
+ target.minute,
6067
+ target.second,
6068
+ target.millisecond
6069
+ );
6070
+ let guess = targetUtc;
6071
+ for (let i = 0; i < 3; i++) {
6072
+ const parts = zonedParts(new Date(guess), timezone);
6073
+ const renderedUtc = Date.UTC(
6074
+ parts.year,
6075
+ parts.month - 1,
6076
+ parts.day,
6077
+ parts.hour,
6078
+ parts.minute,
6079
+ parts.second,
6080
+ target.millisecond
6081
+ );
6082
+ guess += targetUtc - renderedUtc;
6083
+ }
6084
+ const result = new Date(guess);
6085
+ const rendered = zonedParts(result, timezone);
6086
+ if (rendered.year !== target.year || rendered.month !== target.month || rendered.day !== target.day || rendered.hour !== target.hour || rendered.minute !== target.minute || rendered.second !== target.second) {
6087
+ throw new Error(
6088
+ `Invalid at time for ${timezone}: "${value}". The local time does not exist`
6089
+ );
6090
+ }
6091
+ return result.toISOString();
6092
+ }
6093
+ function buildSchedule(kind, options) {
6094
+ switch (kind) {
6095
+ case "cron":
6096
+ if (!options.expr) {
6097
+ throw new Error(
6098
+ 'cron triggers require --expr (e.g. --expr "0 9 * * *")'
6099
+ );
6100
+ }
6101
+ return {
6102
+ type: "cron",
6103
+ cronExpression: options.expr,
6104
+ timezone: timezoneOrUtc(options.timezone)
6105
+ };
6106
+ case "once": {
6107
+ if (!options.at) {
6108
+ throw new Error(
6109
+ 'once triggers require --at (e.g. --at "2026-06-10T09:00")'
6110
+ );
6111
+ }
6112
+ const timezone = timezoneOrUtc(options.timezone);
6113
+ return {
6114
+ type: "once",
6115
+ atTime: wallTimeToUtcIso(options.at, timezone),
6116
+ timezone
6117
+ };
6118
+ }
6119
+ case "loop":
6120
+ if (!options.every) {
6121
+ throw new Error("loop triggers require --every (e.g. --every 15m)");
6122
+ }
6123
+ return {
6124
+ type: "loop",
6125
+ intervalSeconds: parseDurationSeconds(options.every)
6126
+ };
6127
+ default:
6128
+ throw new Error(
6129
+ `Unknown trigger kind: "${kind}". Use one of: ${SCHEDULE_KINDS.join(", ")}`
6130
+ );
6131
+ }
6132
+ }
6133
+ function buildUpdate2(options) {
6134
+ const flagCount = [options.expr, options.at, options.every].filter(
6135
+ (value) => {
6136
+ return value !== void 0;
6137
+ }
6138
+ ).length;
6139
+ if (flagCount !== 1) {
6140
+ throw new Error(EXACTLY_ONE_FLAG_MESSAGE2);
6141
+ }
6142
+ if (options.timezone && !options.expr && !options.at) {
6143
+ throw new Error("--timezone only applies to --expr and --at");
6144
+ }
6145
+ if (options.expr) {
6146
+ return { schedule: buildSchedule("cron", options) };
6147
+ }
6148
+ if (options.at) {
6149
+ return { schedule: buildSchedule("once", options) };
6150
+ }
6151
+ return { schedule: buildSchedule("loop", options) };
6152
+ }
6153
+ async function resolveWorkflowId(ref, options) {
6154
+ if (UUID_RE.test(ref)) {
6155
+ return ref;
6156
+ }
6157
+ const agentId = options.agent ?? process.env.ZERO_AGENT_ID;
6158
+ const workflows = await listWorkflows(agentId ? { agentId } : {});
6159
+ const matches = workflows.filter((workflow) => {
6160
+ return workflow.name === ref;
6161
+ });
6162
+ if (matches.length === 0) {
6163
+ const hint = agentId ? ` under agent "${agentId}"` : ". Provide --agent <agent-id> or use the workflow ID";
6164
+ throw new Error(`Workflow not found: "${ref}"${hint}`);
6165
+ }
6166
+ if (matches.length > 1) {
6167
+ throw new Error(
6168
+ `Ambiguous workflow name: "${ref}". Provide --agent <agent-id> or use the workflow ID`
6169
+ );
6170
+ }
6171
+ return matches[0].id;
6172
+ }
6173
+ var addCommand2 = new Command().name("add").description("Add a schedule trigger to a workflow").argument("<workflow>", "Workflow ID or name").argument("<kind>", `Trigger kind: ${SCHEDULE_KINDS.join(" | ")}`).option("--expr <expression>", 'Cron expression for kind "cron"').option("--at <iso-time>", 'Fire time for kind "once"').option("--every <duration>", 'Interval for kind "loop" (e.g. 15m, 1h, 90s)').option("-z, --timezone <tz>", "IANA timezone for cron/once (default: UTC)").option("--agent <id>", "Agent ID for resolving a workflow name").addHelpText(
6174
+ "after",
6175
+ `
6176
+ Examples:
6177
+ zero workflow trigger add tell-a-joke cron --expr "0 9 * * *" -z Asia/Shanghai
6178
+ zero workflow trigger add tell-a-joke once --at "2026-06-10T09:00" -z Asia/Shanghai
6179
+ zero workflow trigger add tell-a-joke loop --every 15m
6180
+
6181
+ Notes:
6182
+ - Workflow names resolve under --agent, then ZERO_AGENT_ID, then all visible workflows
6183
+ - Use the workflow ID when a name is ambiguous`
6184
+ ).action(
6185
+ withErrorHandler(
6186
+ async (workflowRef, kind, options) => {
6187
+ if (options.timezone && kind !== "cron" && kind !== "once") {
6188
+ throw new Error("--timezone only applies to cron and once triggers");
6189
+ }
6190
+ const workflowId = await resolveWorkflowId(workflowRef, options);
6191
+ const body = {
6192
+ schedule: buildSchedule(kind, options)
6193
+ };
6194
+ const trigger = await createWorkflowTrigger(workflowId, body);
6195
+ console.log(
6196
+ source_default.green(`\u2713 Trigger added to workflow "${workflowRef}"`)
6197
+ );
6198
+ printWorkflowTriggerDetails(trigger, { workflowRef });
6199
+ }
6200
+ )
6201
+ );
6202
+ var updateCommand4 = new Command().name("update").description("Replace a workflow trigger's schedule").argument("<trigger>", "Workflow trigger ID").option("--expr <expression>", 'New cron schedule (e.g. "0 9 * * *")').option("--at <iso-time>", 'New one-time fire (e.g. "2026-06-10T09:00")').option("--every <duration>", "New loop interval (e.g. 15m, 1h, 90s)").option("-z, --timezone <tz>", "IANA timezone for --expr / --at").addHelpText(
6203
+ "after",
6204
+ `
6205
+ Examples:
6206
+ zero workflow trigger update 22222222-2222-4222-8222-222222222222 --expr "0 9 * * *" -z Asia/Shanghai
6207
+ zero workflow trigger update 22222222-2222-4222-8222-222222222222 --at "2026-06-10T09:00" -z UTC
6208
+ zero workflow trigger update 22222222-2222-4222-8222-222222222222 --every 10m`
6209
+ ).action(
6210
+ withErrorHandler(async (id, options) => {
6211
+ const trigger = await updateWorkflowTrigger(id, buildUpdate2(options));
6212
+ console.log(source_default.green(`\u2713 Trigger ${trigger.id} updated`));
6213
+ printWorkflowTriggerDetails(trigger);
6214
+ })
6215
+ );
6216
+ var listCommand14 = new Command().name("list").alias("ls").description("List a workflow's schedule triggers").argument("<workflow>", "Workflow ID or name").option("--agent <id>", "Agent ID for resolving a workflow name").addHelpText(
6217
+ "after",
6218
+ `
6219
+ Examples:
6220
+ zero workflow trigger list tell-a-joke
6221
+ zero workflow trigger list tell-a-joke --agent <agent-id>`
6222
+ ).action(
6223
+ withErrorHandler(
6224
+ async (workflowRef, options) => {
6225
+ const workflowId = await resolveWorkflowId(workflowRef, options);
6226
+ const triggers = await listWorkflowTriggers(workflowId);
6227
+ if (triggers.length === 0) {
6228
+ console.log(source_default.dim("No triggers"));
6229
+ console.log(
6230
+ source_default.dim(
6231
+ ` Add one with: zero workflow trigger add ${workflowRef} cron --expr "0 9 * * *"`
6232
+ )
6233
+ );
6234
+ return;
6235
+ }
6236
+ printWorkflowTriggersTable(triggers);
6237
+ }
6238
+ )
6239
+ );
6240
+ var showCommand3 = new Command().name("show").description("Show a workflow trigger").argument("<trigger>", "Workflow trigger ID").action(
6241
+ withErrorHandler(async (id) => {
6242
+ const trigger = await getWorkflowTrigger(id);
6243
+ printWorkflowTriggerDetails(trigger);
6244
+ })
6245
+ );
6246
+ var rmCommand2 = new Command().name("rm").alias("remove").description("Remove a workflow trigger").argument("<trigger>", "Workflow trigger ID").action(
6247
+ withErrorHandler(async (id) => {
6248
+ await deleteWorkflowTrigger(id);
6249
+ console.log(source_default.green(`\u2713 Trigger ${id} removed`));
6250
+ })
6251
+ );
6252
+ var enableCommand3 = new Command().name("enable").description("Enable a workflow trigger").argument("<trigger>", "Workflow trigger ID").action(
6253
+ withErrorHandler(async (id) => {
6254
+ const trigger = await enableWorkflowTrigger(id);
6255
+ console.log(source_default.green(`\u2713 Trigger ${trigger.id} enabled`));
6256
+ })
6257
+ );
6258
+ var disableCommand3 = new Command().name("disable").description("Disable a workflow trigger").argument("<trigger>", "Workflow trigger ID").action(
6259
+ withErrorHandler(async (id) => {
6260
+ const trigger = await disableWorkflowTrigger(id);
6261
+ console.log(source_default.green(`\u2713 Trigger ${trigger.id} disabled`));
6262
+ })
6263
+ );
6264
+ var runCommand3 = new Command().name("run").description("Fire a workflow trigger test run").argument("<trigger>", "Workflow trigger ID").action(
6265
+ withErrorHandler(async (id) => {
6266
+ const result = await runWorkflowTrigger(id);
6267
+ console.log(source_default.green(`\u2713 Workflow trigger ${id} run started`));
6268
+ console.log(` Run ID: ${result.runId}`);
6269
+ console.log();
6270
+ console.log(`Stream logs: zero logs ${result.runId}`);
6271
+ })
6272
+ );
6273
+ var triggerCommand2 = new Command().name("trigger").description("Manage a workflow's schedule triggers").addCommand(addCommand2).addCommand(updateCommand4).addCommand(listCommand14).addCommand(showCommand3).addCommand(rmCommand2).addCommand(enableCommand3).addCommand(disableCommand3).addCommand(runCommand3).addHelpText(
6274
+ "after",
6275
+ `
6276
+ Examples:
6277
+ Add a trigger: zero workflow trigger add <workflow> cron --expr "0 9 * * *"
6278
+ Update a schedule: zero workflow trigger update <trigger-id> --every 10m
6279
+ List triggers: zero workflow trigger list <workflow>
6280
+ Inspect a trigger: zero workflow trigger show <trigger-id>
6281
+ Test run: zero workflow trigger run <trigger-id>
6282
+ Pause one trigger: zero workflow trigger disable <trigger-id>`
6283
+ );
6284
+
5912
6285
  // src/commands/zero/workflow/index.ts
5913
- var zeroWorkflowCommand = new Command("workflow").description("Manage workflows").addCommand(createCommand4).addCommand(editCommand2).addCommand(viewCommand2).addCommand(listCommand13).addCommand(deleteCommand7).addCommand(copyCommand).addCommand(runCommand2).addHelpText(
6286
+ var zeroWorkflowCommand = new Command("workflow").description("Manage workflows").addCommand(createCommand4).addCommand(editCommand2).addCommand(viewCommand2).addCommand(listCommand13).addCommand(deleteCommand7).addCommand(copyCommand).addCommand(runCommand2).addCommand(triggerCommand2).addHelpText(
5914
6287
  "after",
5915
6288
  `
5916
6289
  Examples:
@@ -5920,6 +6293,7 @@ Examples:
5920
6293
  Update workflow content: zero workflow edit <workflow-id> --instruction "New steps"
5921
6294
  Copy onto another agent: zero workflow copy <workflow-id> --to-agent <agent-id>
5922
6295
  Run a workflow once: zero workflow run <workflow-id>
6296
+ Manage triggers: zero workflow trigger --help
5923
6297
  Delete a workflow: zero workflow delete <workflow-id> -y`
5924
6298
  );
5925
6299
 
@@ -6007,7 +6381,7 @@ function formatStatus(status) {
6007
6381
  function formatTime(iso) {
6008
6382
  return new Date(iso).toISOString().replace(/\.\d{3}Z$/, "Z");
6009
6383
  }
6010
- var listCommand14 = new Command().name("list").alias("ls").description("List agent run logs").option("--agent <id>", "Filter by Zero agent ID").option(
6384
+ var listCommand15 = new Command().name("list").alias("ls").description("List agent run logs").option("--agent <id>", "Filter by Zero agent ID").option(
6011
6385
  "--status <status>",
6012
6386
  "Filter by status (queued|pending|running|completed|failed|timeout|cancelled)"
6013
6387
  ).option(
@@ -6253,7 +6627,7 @@ async function showAgentEvents(runId, options) {
6253
6627
  renderer.render(parsed);
6254
6628
  }
6255
6629
  }
6256
- var zeroLogsCommand = new Command().name("logs").description("View and search agent run logs").argument("[runId]", "Run ID to view agent events for").addCommand(listCommand14).addCommand(searchCommand2).option(
6630
+ var zeroLogsCommand = new Command().name("logs").description("View and search agent run logs").argument("[runId]", "Run ID to view agent events for").addCommand(listCommand15).addCommand(searchCommand2).option(
6257
6631
  "--since <time>",
6258
6632
  "Show logs since timestamp (e.g., 5m, 2h, 1d, 2024-01-15T10:30:00Z)"
6259
6633
  ).option("--tail <n>", "Show last N entries (default: 5)").option("--head <n>", "Show first N entries").option("--all", "Fetch all log entries").addHelpText(
@@ -10504,7 +10878,7 @@ function getModelSwitchGuidance(integration = getCurrentIntegration()) {
10504
10878
  }
10505
10879
  return "Open https://app.vm0.ai and switch models from the model selector next to the input box.";
10506
10880
  }
10507
- var listCommand15 = new Command().name("list").alias("ls").description("List models allowed by the current organization").action(
10881
+ var listCommand16 = new Command().name("list").alias("ls").description("List models allowed by the current organization").action(
10508
10882
  withErrorHandler(async () => {
10509
10883
  const result = await listZeroModelPolicies();
10510
10884
  if (result.policies.length === 0) {
@@ -10540,7 +10914,7 @@ var listCommand15 = new Command().name("list").alias("ls").description("List mod
10540
10914
  var switchCommand = new Command().name("switch").description("Show how to switch models in the current environment").action(() => {
10541
10915
  console.log(getModelSwitchGuidance());
10542
10916
  });
10543
- var zeroModelCommand = new Command().name("model").description("List available models and model-switching guidance").addCommand(listCommand15).addCommand(switchCommand);
10917
+ var zeroModelCommand = new Command().name("model").description("List available models and model-switching guidance").addCommand(listCommand16).addCommand(switchCommand);
10544
10918
 
10545
10919
  // src/commands/zero/model-provider/index.ts
10546
10920
  init_esm_shims();
@@ -10551,7 +10925,7 @@ var MODEL_PROVIDER_SET_GUIDANCE = [
10551
10925
  "",
10552
10926
  "If an organization admin sets a model provider to subscription, members must use the bottom-left user menu, choose Preferences / Personal Models, and connect their personal subscription."
10553
10927
  ].join("\n");
10554
- var listCommand16 = new Command().name("list").alias("ls").description(
10928
+ var listCommand17 = new Command().name("list").alias("ls").description(
10555
10929
  "List provider routing for each model allowed by the organization"
10556
10930
  ).action(
10557
10931
  withErrorHandler(async () => {
@@ -10586,7 +10960,7 @@ var setCommand6 = new Command().name("set").description("Show where to adjust mo
10586
10960
  ${MODEL_PROVIDER_SET_GUIDANCE}`).action(() => {
10587
10961
  console.log(MODEL_PROVIDER_SET_GUIDANCE);
10588
10962
  });
10589
- var zeroModelProviderCommand = new Command().name("model-provider").description("Inspect model provider routing").addCommand(listCommand16).addCommand(setCommand6);
10963
+ var zeroModelProviderCommand = new Command().name("model-provider").description("Inspect model provider routing").addCommand(listCommand17).addCommand(setCommand6);
10590
10964
 
10591
10965
  // src/commands/zero/video/index.ts
10592
10966
  init_esm_shims();
@@ -11043,7 +11417,7 @@ function registerZeroCommands(prog, commands) {
11043
11417
  var program = new Command();
11044
11418
  program.name("zero").description(
11045
11419
  "Zero CLI \u2014 interact with the zero platform from inside the sandbox"
11046
- ).version("9.200.4").addHelpText("after", () => {
11420
+ ).version("9.201.0").addHelpText("after", () => {
11047
11421
  return buildZeroHelpText();
11048
11422
  });
11049
11423
  if (process.argv[1]?.endsWith("zero.js") || process.argv[1]?.endsWith("zero.ts") || process.argv[1]?.endsWith("zero")) {