@vm0/cli 9.62.3 → 9.62.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.
Files changed (2) hide show
  1. package/index.js +69 -46
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -45,7 +45,7 @@ if (DSN) {
45
45
  Sentry.init({
46
46
  dsn: DSN,
47
47
  environment: process.env.SENTRY_ENVIRONMENT ?? "production",
48
- release: "9.62.3",
48
+ release: "9.62.5",
49
49
  sendDefaultPii: false,
50
50
  tracesSampleRate: 0,
51
51
  shutdownTimeout: 500,
@@ -64,7 +64,7 @@ if (DSN) {
64
64
  }
65
65
  });
66
66
  Sentry.setContext("cli", {
67
- version: "9.62.3",
67
+ version: "9.62.5",
68
68
  command: process.argv.slice(2).join(" ")
69
69
  });
70
70
  Sentry.setContext("runtime", {
@@ -673,7 +673,7 @@ function getConfigPath() {
673
673
  return join2(homedir2(), ".vm0", "config.json");
674
674
  }
675
675
  var infoCommand = new Command6().name("info").description("Display environment and debug information").action(async () => {
676
- console.log(chalk4.bold(`VM0 CLI v${"9.62.3"}`));
676
+ console.log(chalk4.bold(`VM0 CLI v${"9.62.5"}`));
677
677
  console.log();
678
678
  const config = await loadConfig();
679
679
  const hasEnvToken = !!process.env.VM0_TOKEN;
@@ -801,7 +801,7 @@ var firewallSchema = z3.object({
801
801
  ref: z3.string(),
802
802
  apis: z3.array(firewallApiSchema)
803
803
  });
804
- var experimentalFirewallSchema = z3.array(firewallSchema);
804
+ var experimentalFirewallsSchema = z3.array(firewallSchema);
805
805
  var firewallConfigSchema = z3.object({
806
806
  name: z3.string().min(1, "Firewall name is required"),
807
807
  description: z3.string().optional(),
@@ -817,10 +817,10 @@ var composeVersionQuerySchema = z4.string().min(1, "Missing version query parame
817
817
  );
818
818
  var AGENT_NAME_REGEX = /^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}[a-zA-Z0-9]$/;
819
819
  var VALID_CAPABILITIES = [
820
- "storage:read",
821
- "storage:write",
822
820
  "agent:read",
823
821
  "agent:write",
822
+ "artifact:read",
823
+ "artifact:write",
824
824
  "agent-run:read",
825
825
  "agent-run:write",
826
826
  "schedule:read",
@@ -869,7 +869,7 @@ var agentDefinitionSchema = z4.object({
869
869
  * CLI input: map format { slack: { permissions: [...] | "all" } }
870
870
  * — expanded by CLI to full ExpandedFirewallConfig[] before API call.
871
871
  */
872
- experimental_firewall: z4.record(
872
+ experimental_firewalls: z4.record(
873
873
  z4.string(),
874
874
  z4.object({
875
875
  permissions: z4.union([z4.literal("all"), z4.array(z4.string()).min(1)])
@@ -928,7 +928,7 @@ var agentComposeApiContentSchema = z4.object({
928
928
  agents: z4.record(
929
929
  z4.string(),
930
930
  agentDefinitionSchema.extend({
931
- experimental_firewall: z4.array(expandedFirewallConfigSchema).optional()
931
+ experimental_firewalls: z4.array(expandedFirewallConfigSchema).optional()
932
932
  })
933
933
  ),
934
934
  volumes: z4.record(z4.string(), volumeConfigSchema).optional()
@@ -1169,11 +1169,11 @@ var orgDefaultAgentContract = c2.router({
1169
1169
  org: z5.string().optional()
1170
1170
  }),
1171
1171
  body: z5.object({
1172
- agentComposeId: z5.string().uuid().nullable()
1172
+ agentComposeId: z5.uuid().nullable()
1173
1173
  }),
1174
1174
  responses: {
1175
1175
  200: z5.object({
1176
- agentComposeId: z5.string().uuid().nullable()
1176
+ agentComposeId: z5.uuid().nullable()
1177
1177
  }),
1178
1178
  400: apiErrorSchema,
1179
1179
  401: apiErrorSchema,
@@ -1723,7 +1723,7 @@ var storageChangesSchema = z7.object({
1723
1723
  });
1724
1724
  var presignedUploadSchema = z7.object({
1725
1725
  key: z7.string(),
1726
- presignedUrl: z7.string().url()
1726
+ presignedUrl: z7.url()
1727
1727
  });
1728
1728
  var storagesPrepareContract = c4.router({
1729
1729
  prepare: {
@@ -1808,7 +1808,7 @@ var storagesDownloadContract = c4.router({
1808
1808
  // Normal response with presigned URL
1809
1809
  200: z7.union([
1810
1810
  z7.object({
1811
- url: z7.string().url(),
1811
+ url: z7.url(),
1812
1812
  versionId: z7.string(),
1813
1813
  fileCount: z7.number(),
1814
1814
  size: z7.number()
@@ -2313,7 +2313,7 @@ var secretNameSchema = z12.string().min(1, "Secret name is required").max(255, "
2313
2313
  );
2314
2314
  var secretTypeSchema = z12.enum(["user", "model-provider", "connector"]);
2315
2315
  var secretResponseSchema = z12.object({
2316
- id: z12.string().uuid(),
2316
+ id: z12.uuid(),
2317
2317
  name: z12.string(),
2318
2318
  description: z12.string().nullable(),
2319
2319
  type: secretTypeSchema,
@@ -2412,7 +2412,7 @@ var variableNameSchema = z13.string().min(1, "Variable name is required").max(25
2412
2412
  "Variable name must contain only uppercase letters, numbers, and underscores, and must start with a letter (e.g., MY_VAR)"
2413
2413
  );
2414
2414
  var variableResponseSchema = z13.object({
2415
- id: z13.string().uuid(),
2415
+ id: z13.uuid(),
2416
2416
  name: z13.string(),
2417
2417
  value: z13.string(),
2418
2418
  description: z13.string().nullable(),
@@ -2538,6 +2538,8 @@ var MODEL_PROVIDER_TYPES = {
2538
2538
  CLAUDE_CODE_SUBAGENT_MODEL: "$model"
2539
2539
  },
2540
2540
  models: [
2541
+ "anthropic/claude-sonnet-4.6",
2542
+ "anthropic/claude-opus-4.6",
2541
2543
  "anthropic/claude-sonnet-4.5",
2542
2544
  "anthropic/claude-opus-4.5",
2543
2545
  "anthropic/claude-haiku-4.5"
@@ -2625,6 +2627,21 @@ var MODEL_PROVIDER_TYPES = {
2625
2627
  models: ["glm-5", "glm-4.7", "glm-4.5-air"],
2626
2628
  defaultModel: "glm-4.7"
2627
2629
  },
2630
+ "vercel-ai-gateway": {
2631
+ framework: "claude-code",
2632
+ secretName: "VERCEL_AI_GATEWAY_API_KEY",
2633
+ label: "Vercel AI Gateway",
2634
+ secretLabel: "API key",
2635
+ helpText: "Get your API key from the Vercel AI Gateway dashboard",
2636
+ featureFlag: "vercelAiGateway" /* VercelAiGateway */,
2637
+ environmentMapping: {
2638
+ ANTHROPIC_AUTH_TOKEN: "$secret",
2639
+ ANTHROPIC_BASE_URL: "https://ai-gateway.vercel.sh",
2640
+ ANTHROPIC_API_KEY: "",
2641
+ ANTHROPIC_MODEL: "moonshotai/kimi-k2.5",
2642
+ ANTHROPIC_CUSTOM_HEADERS: "x-ai-gateway-providers-only: moonshot"
2643
+ }
2644
+ },
2628
2645
  "azure-foundry": {
2629
2646
  framework: "claude-code",
2630
2647
  label: "Azure Foundry",
@@ -2734,6 +2751,7 @@ var modelProviderTypeSchema = z14.enum([
2734
2751
  "minimax-api-key",
2735
2752
  "deepseek-api-key",
2736
2753
  "zai-api-key",
2754
+ "vercel-ai-gateway",
2737
2755
  "azure-foundry",
2738
2756
  "aws-bedrock"
2739
2757
  ]);
@@ -2779,7 +2797,7 @@ function getCustomModelPlaceholder(type2) {
2779
2797
  return "customModelPlaceholder" in config ? config.customModelPlaceholder : void 0;
2780
2798
  }
2781
2799
  var modelProviderResponseSchema = z14.object({
2782
- id: z14.string().uuid(),
2800
+ id: z14.uuid(),
2783
2801
  type: modelProviderTypeSchema,
2784
2802
  framework: modelProviderFrameworkSchema,
2785
2803
  secretName: z14.string().nullable(),
@@ -3081,11 +3099,11 @@ var runnerGroupSchema = z16.string().regex(
3081
3099
  "Runner group must be in org/name format (e.g., acme/production)"
3082
3100
  );
3083
3101
  var jobSchema = z16.object({
3084
- runId: z16.string().uuid(),
3102
+ runId: z16.uuid(),
3085
3103
  prompt: z16.string(),
3086
3104
  agentComposeVersionId: z16.string().nullable(),
3087
3105
  vars: z16.record(z16.string(), z16.string()).nullable(),
3088
- checkpointId: z16.string().uuid().nullable()
3106
+ checkpointId: z16.uuid().nullable()
3089
3107
  });
3090
3108
  var runnersPollContract = c13.router({
3091
3109
  poll: {
@@ -3147,16 +3165,16 @@ var storedExecutionContextSchema = z16.object({
3147
3165
  // Memory storage name (for first-run when manifest.memory is null)
3148
3166
  memoryName: z16.string().optional(),
3149
3167
  // Experimental firewall for proxy-side token replacement
3150
- experimentalFirewall: experimentalFirewallSchema.optional(),
3168
+ experimentalFirewalls: experimentalFirewallsSchema.optional(),
3151
3169
  // Experimental capabilities for agent permission enforcement
3152
3170
  experimentalCapabilities: z16.array(z16.enum(VALID_CAPABILITIES)).optional()
3153
3171
  });
3154
3172
  var executionContextSchema = z16.object({
3155
- runId: z16.string().uuid(),
3173
+ runId: z16.uuid(),
3156
3174
  prompt: z16.string(),
3157
3175
  agentComposeVersionId: z16.string().nullable(),
3158
3176
  vars: z16.record(z16.string(), z16.string()).nullable(),
3159
- checkpointId: z16.string().uuid().nullable(),
3177
+ checkpointId: z16.uuid().nullable(),
3160
3178
  sandboxToken: z16.string(),
3161
3179
  // New fields for E2B parity:
3162
3180
  workingDir: z16.string(),
@@ -3181,7 +3199,7 @@ var executionContextSchema = z16.object({
3181
3199
  // Memory storage name (for first-run when manifest.memory is null)
3182
3200
  memoryName: z16.string().optional(),
3183
3201
  // Experimental firewall for proxy-side token replacement
3184
- experimentalFirewall: experimentalFirewallSchema.optional(),
3202
+ experimentalFirewalls: experimentalFirewallsSchema.optional(),
3185
3203
  // Experimental capabilities for agent permission enforcement
3186
3204
  experimentalCapabilities: z16.array(z16.enum(VALID_CAPABILITIES)).optional()
3187
3205
  });
@@ -3191,7 +3209,7 @@ var runnersJobClaimContract = c13.router({
3191
3209
  path: "/api/runners/jobs/:id/claim",
3192
3210
  headers: authHeadersSchema,
3193
3211
  pathParams: z16.object({
3194
- id: z16.string().uuid()
3212
+ id: z16.uuid()
3195
3213
  }),
3196
3214
  body: z16.object({}),
3197
3215
  responses: {
@@ -3275,8 +3293,8 @@ var deployScheduleRequestSchema = z17.object({
3275
3293
  }
3276
3294
  );
3277
3295
  var scheduleResponseSchema = z17.object({
3278
- id: z17.string().uuid(),
3279
- composeId: z17.string().uuid(),
3296
+ id: z17.uuid(),
3297
+ composeId: z17.uuid(),
3280
3298
  composeName: z17.string(),
3281
3299
  orgSlug: z17.string(),
3282
3300
  userId: z17.string(),
@@ -3304,7 +3322,7 @@ var scheduleResponseSchema = z17.object({
3304
3322
  updatedAt: z17.string()
3305
3323
  });
3306
3324
  var runSummarySchema = z17.object({
3307
- id: z17.string().uuid(),
3325
+ id: z17.uuid(),
3308
3326
  status: z17.enum([
3309
3327
  "queued",
3310
3328
  "pending",
@@ -3544,7 +3562,7 @@ var platformLogStatusSchema = z19.enum([
3544
3562
  "cancelled"
3545
3563
  ]);
3546
3564
  var platformLogEntrySchema = z19.object({
3547
- id: z19.string().uuid(),
3565
+ id: z19.uuid(),
3548
3566
  sessionId: z19.string().nullable(),
3549
3567
  agentName: z19.string(),
3550
3568
  orgSlug: z19.string().nullable(),
@@ -3563,7 +3581,7 @@ var artifactSchema = z19.object({
3563
3581
  version: z19.string().nullable()
3564
3582
  });
3565
3583
  var platformLogDetailSchema = z19.object({
3566
- id: z19.string().uuid(),
3584
+ id: z19.uuid(),
3567
3585
  sessionId: z19.string().nullable(),
3568
3586
  agentName: z19.string(),
3569
3587
  framework: z19.string().nullable(),
@@ -3610,7 +3628,7 @@ var platformLogsByIdContract = c16.router({
3610
3628
  }
3611
3629
  });
3612
3630
  var artifactDownloadResponseSchema = z19.object({
3613
- url: z19.string().url(),
3631
+ url: z19.url(),
3614
3632
  expiresAt: z19.string()
3615
3633
  });
3616
3634
  var platformArtifactDownloadContract = c16.router({
@@ -3648,7 +3666,7 @@ var composeJobResultSchema = z20.object({
3648
3666
  var composeJobSourceSchema = z20.enum(["github", "platform", "slack"]);
3649
3667
  var createComposeJobRequestSchema = z20.union([
3650
3668
  z20.object({
3651
- githubUrl: z20.string().url().startsWith("https://github.com/"),
3669
+ githubUrl: z20.url().check(z20.startsWith("https://github.com/")),
3652
3670
  overwrite: z20.boolean().optional().default(false)
3653
3671
  }),
3654
3672
  z20.object({
@@ -3697,7 +3715,7 @@ var composeJobsByIdContract = c17.router({
3697
3715
  path: "/api/compose/jobs/:jobId",
3698
3716
  headers: authHeadersSchema,
3699
3717
  pathParams: z20.object({
3700
- jobId: z20.string().uuid()
3718
+ jobId: z20.uuid()
3701
3719
  }),
3702
3720
  responses: {
3703
3721
  200: composeJobResponseSchema,
@@ -3717,7 +3735,7 @@ var webhookComposeCompleteContract = c17.router({
3717
3735
  path: "/api/webhooks/compose/complete",
3718
3736
  headers: authHeadersSchema,
3719
3737
  body: z20.object({
3720
- jobId: z20.string().uuid(),
3738
+ jobId: z20.uuid(),
3721
3739
  success: z20.boolean(),
3722
3740
  // Result from CLI compose command
3723
3741
  result: composeJobResultSchema.optional(),
@@ -6350,7 +6368,7 @@ function getConnectorDerivedNames(secretName) {
6350
6368
  return null;
6351
6369
  }
6352
6370
  var connectorResponseSchema = z21.object({
6353
- id: z21.string().uuid().nullable(),
6371
+ id: z21.uuid().nullable(),
6354
6372
  type: connectorTypeSchema,
6355
6373
  authMethod: z21.string(),
6356
6374
  externalId: z21.string().nullable(),
@@ -6417,7 +6435,7 @@ var connectorSessionStatusSchema = z21.enum([
6417
6435
  "error"
6418
6436
  ]);
6419
6437
  var connectorSessionResponseSchema = z21.object({
6420
- id: z21.string().uuid(),
6438
+ id: z21.uuid(),
6421
6439
  code: z21.string(),
6422
6440
  type: connectorTypeSchema,
6423
6441
  status: connectorSessionStatusSchema,
@@ -6463,7 +6481,7 @@ var connectorSessionByIdContract = c18.router({
6463
6481
  headers: authHeadersSchema,
6464
6482
  pathParams: z21.object({
6465
6483
  type: connectorTypeSchema,
6466
- sessionId: z21.string().uuid()
6484
+ sessionId: z21.uuid()
6467
6485
  }),
6468
6486
  responses: {
6469
6487
  200: connectorSessionStatusResponseSchema,
@@ -6476,7 +6494,7 @@ var connectorSessionByIdContract = c18.router({
6476
6494
  }
6477
6495
  });
6478
6496
  var computerConnectorCreateResponseSchema = z21.object({
6479
- id: z21.string().uuid(),
6497
+ id: z21.uuid(),
6480
6498
  ngrokToken: z21.string(),
6481
6499
  bridgeToken: z21.string(),
6482
6500
  endpointPrefix: z21.string(),
@@ -6817,7 +6835,7 @@ async function expandFirewallConfigs(config, fetchFn) {
6817
6835
  const compose = config;
6818
6836
  if (!compose?.agents) return;
6819
6837
  for (const agent of Object.values(compose.agents)) {
6820
- const configs = agent.experimental_firewall;
6838
+ const configs = agent.experimental_firewalls;
6821
6839
  if (!configs) continue;
6822
6840
  if (Array.isArray(configs)) continue;
6823
6841
  const expanded = [];
@@ -6859,7 +6877,7 @@ async function expandFirewallConfigs(config, fetchFn) {
6859
6877
  entry.placeholders = serviceConfig.placeholders;
6860
6878
  expanded.push(entry);
6861
6879
  }
6862
- agent.experimental_firewall = expanded;
6880
+ agent.experimental_firewalls = expanded;
6863
6881
  }
6864
6882
  }
6865
6883
 
@@ -7098,7 +7116,7 @@ var skillsResolveContract = c23.router({
7098
7116
  path: "/api/skills/resolve",
7099
7117
  headers: authHeadersSchema,
7100
7118
  body: z26.object({
7101
- skills: z26.array(z26.string().url()).min(1).max(100)
7119
+ skills: z26.array(z26.url()).min(1).max(100)
7102
7120
  }),
7103
7121
  responses: {
7104
7122
  200: z26.object({
@@ -7363,6 +7381,11 @@ var FEATURE_SWITCHES = {
7363
7381
  enabled: false,
7364
7382
  enabledUserHashes: STAFF_USER_HASHES
7365
7383
  },
7384
+ ["vercelAiGateway" /* VercelAiGateway */]: {
7385
+ maintainer: "ethan@vm0.ai",
7386
+ enabled: false,
7387
+ enabledUserHashes: STAFF_USER_HASHES
7388
+ },
7366
7389
  ["zero" /* Zero */]: {
7367
7390
  maintainer: "ethan@vm0.ai",
7368
7391
  enabled: false,
@@ -9510,7 +9533,7 @@ var composeCommand = new Command7().name("compose").description("Create or updat
9510
9533
  options.autoUpdate = false;
9511
9534
  }
9512
9535
  if (options.autoUpdate !== false) {
9513
- await startSilentUpgrade("9.62.3");
9536
+ await startSilentUpgrade("9.62.5");
9514
9537
  }
9515
9538
  try {
9516
9539
  let result;
@@ -10332,7 +10355,7 @@ var mainRunCommand = new Command8().name("run").description("Run an agent").argu
10332
10355
  withErrorHandler(
10333
10356
  async (identifier, prompt, options) => {
10334
10357
  if (options.autoUpdate !== false) {
10335
- await startSilentUpgrade("9.62.3");
10358
+ await startSilentUpgrade("9.62.5");
10336
10359
  }
10337
10360
  const { org, name, version } = parseIdentifier(identifier);
10338
10361
  let composeId;
@@ -12052,7 +12075,7 @@ var cookAction = new Command35().name("cook").description("Quick start: prepare,
12052
12075
  withErrorHandler(
12053
12076
  async (prompt, options) => {
12054
12077
  if (options.autoUpdate !== false) {
12055
- const shouldExit = await checkAndUpgrade("9.62.3", prompt);
12078
+ const shouldExit = await checkAndUpgrade("9.62.5", prompt);
12056
12079
  if (shouldExit) {
12057
12080
  process.exit(0);
12058
12081
  }
@@ -17186,13 +17209,13 @@ var upgradeCommand = new Command86().name("upgrade").description("Upgrade vm0 CL
17186
17209
  if (latestVersion === null) {
17187
17210
  throw new Error("Could not check for updates. Please try again later.");
17188
17211
  }
17189
- if (latestVersion === "9.62.3") {
17190
- console.log(chalk79.green(`\u2713 Already up to date (${"9.62.3"})`));
17212
+ if (latestVersion === "9.62.5") {
17213
+ console.log(chalk79.green(`\u2713 Already up to date (${"9.62.5"})`));
17191
17214
  return;
17192
17215
  }
17193
17216
  console.log(
17194
17217
  chalk79.yellow(
17195
- `Current version: ${"9.62.3"} -> Latest version: ${latestVersion}`
17218
+ `Current version: ${"9.62.5"} -> Latest version: ${latestVersion}`
17196
17219
  )
17197
17220
  );
17198
17221
  console.log();
@@ -17219,7 +17242,7 @@ var upgradeCommand = new Command86().name("upgrade").description("Upgrade vm0 CL
17219
17242
  const success = await performUpgrade(packageManager);
17220
17243
  if (success) {
17221
17244
  console.log(
17222
- chalk79.green(`\u2713 Upgraded from ${"9.62.3"} to ${latestVersion}`)
17245
+ chalk79.green(`\u2713 Upgraded from ${"9.62.5"} to ${latestVersion}`)
17223
17246
  );
17224
17247
  return;
17225
17248
  }
@@ -17233,7 +17256,7 @@ var upgradeCommand = new Command86().name("upgrade").description("Upgrade vm0 CL
17233
17256
 
17234
17257
  // src/index.ts
17235
17258
  var program = new Command87();
17236
- program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.62.3");
17259
+ program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.62.5");
17237
17260
  program.addCommand(authCommand);
17238
17261
  program.addCommand(infoCommand);
17239
17262
  program.addCommand(composeCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vm0/cli",
3
- "version": "9.62.3",
3
+ "version": "9.62.5",
4
4
  "description": "CLI application",
5
5
  "repository": {
6
6
  "type": "git",