@vm0/cli 9.205.0 → 9.206.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.
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  getConnectorEnvBindingEntries
6
- } from "./chunk-GTPY5BQJ.js";
6
+ } from "./chunk-A7UBSZER.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-QI47S6VO.js";
@@ -47,4 +47,4 @@ function expandFirewallPlaceholders(firewall, connectorType) {
47
47
  export {
48
48
  expandFirewallPlaceholders
49
49
  };
50
- //# sourceMappingURL=firewall-placeholder-expansion-EZ5WNMSE.js.map
50
+ //# sourceMappingURL=firewall-placeholder-expansion-ZRRX27DR.js.map
package/index.js CHANGED
@@ -74,10 +74,10 @@ import {
74
74
  uo,
75
75
  volumeConfigSchema,
76
76
  withErrorHandler
77
- } from "./chunk-URAOWQX7.js";
77
+ } from "./chunk-QMWTDWXH.js";
78
78
  import {
79
79
  external_exports
80
- } from "./chunk-GTPY5BQJ.js";
80
+ } from "./chunk-A7UBSZER.js";
81
81
  import "./chunk-NR42YJMI.js";
82
82
  import {
83
83
  __toESM,
@@ -411,7 +411,7 @@ function getConfigPath() {
411
411
  return join(os.homedir(), ".vm0", "config.json");
412
412
  }
413
413
  var infoCommand = new Command().name("info").description("Display environment and debug information").action(async () => {
414
- console.log(source_default.bold(`VM0 CLI v${"9.205.0"}`));
414
+ console.log(source_default.bold(`VM0 CLI v${"9.206.0"}`));
415
415
  console.log();
416
416
  const config = await loadConfig();
417
417
  const hasEnvToken = !!process.env.VM0_TOKEN;
@@ -1113,7 +1113,7 @@ var composeCommand = new Command().name("compose").description("Create or update
1113
1113
  options.autoUpdate = false;
1114
1114
  }
1115
1115
  if (options.autoUpdate !== false) {
1116
- await startSilentUpgrade("9.205.0");
1116
+ await startSilentUpgrade("9.206.0");
1117
1117
  }
1118
1118
  try {
1119
1119
  const { config, agentName, agent, basePath } = await loadAndValidateConfig(resolvedConfigFile);
@@ -1210,7 +1210,7 @@ var mainRunCommand = new Command().name("run").description("Run an agent").argum
1210
1210
  withErrorHandler(
1211
1211
  async (identifier, prompt, options) => {
1212
1212
  if (options.autoUpdate !== false) {
1213
- await startSilentUpgrade("9.205.0");
1213
+ await startSilentUpgrade("9.206.0");
1214
1214
  }
1215
1215
  const { name, version } = parseIdentifier(identifier);
1216
1216
  let composeId;
@@ -3016,13 +3016,13 @@ var upgradeCommand = new Command().name("upgrade").description("Upgrade vm0 CLI
3016
3016
  if (latestVersion === null) {
3017
3017
  throw new Error("Could not check for updates. Please try again later.");
3018
3018
  }
3019
- if (latestVersion === "9.205.0") {
3020
- console.log(source_default.green(`\u2713 Already up to date (${"9.205.0"})`));
3019
+ if (latestVersion === "9.206.0") {
3020
+ console.log(source_default.green(`\u2713 Already up to date (${"9.206.0"})`));
3021
3021
  return;
3022
3022
  }
3023
3023
  console.log(
3024
3024
  source_default.yellow(
3025
- `Current version: ${"9.205.0"} -> Latest version: ${latestVersion}`
3025
+ `Current version: ${"9.206.0"} -> Latest version: ${latestVersion}`
3026
3026
  )
3027
3027
  );
3028
3028
  console.log();
@@ -3049,7 +3049,7 @@ var upgradeCommand = new Command().name("upgrade").description("Upgrade vm0 CLI
3049
3049
  const success = await performUpgrade(packageManager);
3050
3050
  if (success) {
3051
3051
  console.log(
3052
- source_default.green(`\u2713 Upgraded from ${"9.205.0"} to ${latestVersion}`)
3052
+ source_default.green(`\u2713 Upgraded from ${"9.206.0"} to ${latestVersion}`)
3053
3053
  );
3054
3054
  return;
3055
3055
  }
@@ -3116,7 +3116,7 @@ var whoamiCommand = new Command().name("whoami").description("Show current ident
3116
3116
 
3117
3117
  // src/index.ts
3118
3118
  var program = new Command();
3119
- program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.205.0");
3119
+ program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.206.0");
3120
3120
  program.addCommand(authCommand);
3121
3121
  program.addCommand(infoCommand);
3122
3122
  program.addCommand(composeCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vm0/cli",
3
- "version": "9.205.0",
3
+ "version": "9.206.0",
4
4
  "description": "CLI application",
5
5
  "repository": {
6
6
  "type": "git",
package/zero.js CHANGED
@@ -175,7 +175,7 @@ import {
175
175
  uploadWebFile,
176
176
  upsertZeroOrgModelProvider,
177
177
  withErrorHandler
178
- } from "./chunk-URAOWQX7.js";
178
+ } from "./chunk-QMWTDWXH.js";
179
179
  import {
180
180
  CONNECTOR_TYPES,
181
181
  CONNECTOR_TYPE_KEYS,
@@ -188,7 +188,7 @@ import {
188
188
  getConnectorStoredSecretDisplayInfo,
189
189
  getDiagnosticConnectorTypeForRuntimeEnvName,
190
190
  hasRequiredConnectorAuthMethodScopes
191
- } from "./chunk-GTPY5BQJ.js";
191
+ } from "./chunk-A7UBSZER.js";
192
192
  import "./chunk-NR42YJMI.js";
193
193
  import {
194
194
  __toESM,
@@ -6733,7 +6733,7 @@ function isRuntimeFirewallConnectorType(type) {
6733
6733
  async function loadExpandedConnectorFirewall(type) {
6734
6734
  const [firewall, { expandFirewallPlaceholders }] = await Promise.all([
6735
6735
  loadGeneratedRuntimeFirewall(type),
6736
- import("./firewall-placeholder-expansion-EZ5WNMSE.js")
6736
+ import("./firewall-placeholder-expansion-ZRRX27DR.js")
6737
6737
  ]);
6738
6738
  return expandFirewallPlaceholders(firewall, type);
6739
6739
  }
@@ -10288,7 +10288,34 @@ var UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
10288
10288
  var SCHEDULE_KINDS = ["cron", "once", "loop"];
10289
10289
  var EVENT_KINDS = ["gmail-new-message"];
10290
10290
  var TRIGGER_KINDS = [...SCHEDULE_KINDS, ...EVENT_KINDS];
10291
- var EXACTLY_ONE_FLAG_MESSAGE = "Provide exactly one of --expr (cron), --at (once), --every (loop)";
10291
+ var EXACTLY_ONE_FLAG_MESSAGE = "Provide exactly one of --expr (cron), --at (once), --every (loop), or provide Gmail match options";
10292
+ function addGmailTriggerOptions(command) {
10293
+ return command.option(
10294
+ "--config <path>",
10295
+ "Path to a Gmail new message trigger config JSON"
10296
+ ).option("--from-contains <text>", "Require the From header to contain text").option(
10297
+ "--from-not-contains <text>",
10298
+ "Require the From header not to contain text"
10299
+ ).option(
10300
+ "--subject-contains <text>",
10301
+ "Require the Subject header to contain text"
10302
+ ).option(
10303
+ "--subject-not-contains <text>",
10304
+ "Require the Subject header not to contain text"
10305
+ ).option(
10306
+ "--body-contains <text>",
10307
+ "Require the message body to contain text"
10308
+ ).option(
10309
+ "--body-not-contains <text>",
10310
+ "Require the message body not to contain text"
10311
+ ).option("--to-contains <text>", "Require the To header to contain text").option(
10312
+ "--to-not-contains <text>",
10313
+ "Require the To header not to contain text"
10314
+ ).option("--cc-contains <text>", "Require the Cc header to contain text").option(
10315
+ "--cc-not-contains <text>",
10316
+ "Require the Cc header not to contain text"
10317
+ );
10318
+ }
10292
10319
  function timezoneOrUtc(timezone) {
10293
10320
  return timezone ?? "UTC";
10294
10321
  }
@@ -10454,6 +10481,13 @@ function buildUpdate(options) {
10454
10481
  return value !== void 0;
10455
10482
  }
10456
10483
  ).length;
10484
+ const hasGmailOptions = hasGmailTriggerOptions(options);
10485
+ if (hasGmailOptions) {
10486
+ if (flagCount > 0 || options.timezone !== void 0) {
10487
+ throw new Error("Use either schedule flags or Gmail match options");
10488
+ }
10489
+ return { eventConfig: buildGmailNewMessageEventConfig(options) };
10490
+ }
10457
10491
  if (flagCount !== 1) {
10458
10492
  throw new Error(EXACTLY_ONE_FLAG_MESSAGE);
10459
10493
  }
@@ -10488,24 +10522,14 @@ async function resolveWorkflowId(ref, options) {
10488
10522
  }
10489
10523
  return matches[0].id;
10490
10524
  }
10491
- var addCommand = new Command().name("add").description("Add a trigger to a workflow").argument("<workflow>", "Workflow ID or name").argument("<kind>", `Trigger type: ${TRIGGER_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("--config <path>", "Path to a Gmail new message trigger config JSON").option("--from-contains <text>", "Require the From header to contain text").option(
10492
- "--from-not-contains <text>",
10493
- "Require the From header not to contain text"
10494
- ).option(
10495
- "--subject-contains <text>",
10496
- "Require the Subject header to contain text"
10497
- ).option(
10498
- "--subject-not-contains <text>",
10499
- "Require the Subject header not to contain text"
10500
- ).option("--body-contains <text>", "Require the message body to contain text").option(
10501
- "--body-not-contains <text>",
10502
- "Require the message body not to contain text"
10503
- ).option("--to-contains <text>", "Require the To header to contain text").option(
10504
- "--to-not-contains <text>",
10505
- "Require the To header not to contain text"
10506
- ).option("--cc-contains <text>", "Require the Cc header to contain text").option(
10507
- "--cc-not-contains <text>",
10508
- "Require the Cc header not to contain text"
10525
+ var addCommand = addGmailTriggerOptions(
10526
+ new Command().name("add").description("Add a trigger to a workflow").argument("<workflow>", "Workflow ID or name").argument("<kind>", `Trigger type: ${TRIGGER_KINDS.join(" | ")}`).option("--expr <expression>", 'Cron expression for kind "cron"').option("--at <iso-time>", 'Fire time for kind "once"').option(
10527
+ "--every <duration>",
10528
+ 'Interval for kind "loop" (e.g. 15m, 1h, 90s)'
10529
+ ).option(
10530
+ "-z, --timezone <tz>",
10531
+ "IANA timezone for cron/once (default: UTC)"
10532
+ )
10509
10533
  ).option("--agent <id>", "Agent ID for resolving a workflow name").addHelpText(
10510
10534
  "after",
10511
10535
  `
@@ -10536,13 +10560,17 @@ Notes:
10536
10560
  }
10537
10561
  )
10538
10562
  );
10539
- var updateCommand3 = 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(
10563
+ var updateCommand3 = addGmailTriggerOptions(
10564
+ new Command().name("update").description("Replace a workflow trigger's schedule or Gmail match config").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")
10565
+ ).addHelpText(
10540
10566
  "after",
10541
10567
  `
10542
10568
  Examples:
10543
10569
  zero workflow trigger update 22222222-2222-4222-8222-222222222222 --expr "0 9 * * *" -z Asia/Shanghai
10544
10570
  zero workflow trigger update 22222222-2222-4222-8222-222222222222 --at "2026-06-10T09:00" -z UTC
10545
- zero workflow trigger update 22222222-2222-4222-8222-222222222222 --every 10m`
10571
+ zero workflow trigger update 22222222-2222-4222-8222-222222222222 --every 10m
10572
+ zero workflow trigger update 22222222-2222-4222-8222-222222222222 --from-contains "@example.com"
10573
+ zero workflow trigger update 22222222-2222-4222-8222-222222222222 --config ./gmail-trigger.json`
10546
10574
  ).action(
10547
10575
  withErrorHandler(async (id, options) => {
10548
10576
  const trigger = await updateWorkflowTrigger(id, buildUpdate(options));
@@ -15754,7 +15782,7 @@ function registerZeroCommands(prog, commands) {
15754
15782
  var program = new Command();
15755
15783
  program.name("zero").description(
15756
15784
  "Zero CLI \u2014 interact with the zero platform from inside the sandbox"
15757
- ).version("9.205.0").addHelpText("after", () => {
15785
+ ).version("9.206.0").addHelpText("after", () => {
15758
15786
  return buildZeroHelpText();
15759
15787
  });
15760
15788
  if (process.argv[1]?.endsWith("zero.js") || process.argv[1]?.endsWith("zero.ts") || process.argv[1]?.endsWith("zero")) {