@vm0/cli 4.38.0 → 4.38.2

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 +176 -153
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -12267,8 +12267,123 @@ var apiErrorSchema = external_exports.object({
12267
12267
  })
12268
12268
  });
12269
12269
 
12270
- // ../../packages/core/src/contracts/composes.ts
12270
+ // ../../packages/core/src/contracts/runners.ts
12271
12271
  var c = initContract();
12272
+ var firewallRuleSchema = external_exports.object({
12273
+ domain: external_exports.string().optional(),
12274
+ ip: external_exports.string().optional(),
12275
+ /** Terminal rule - value is the action (ALLOW or DENY) */
12276
+ final: external_exports.enum(["ALLOW", "DENY"]).optional(),
12277
+ /** Action for domain/ip rules */
12278
+ action: external_exports.enum(["ALLOW", "DENY"]).optional()
12279
+ });
12280
+ var experimentalFirewallSchema = external_exports.object({
12281
+ enabled: external_exports.boolean(),
12282
+ rules: external_exports.array(firewallRuleSchema).optional(),
12283
+ experimental_mitm: external_exports.boolean().optional(),
12284
+ experimental_seal_secrets: external_exports.boolean().optional()
12285
+ });
12286
+ var runnerGroupSchema = external_exports.string().regex(
12287
+ /^[a-z0-9-]+\/[a-z0-9-]+$/,
12288
+ "Runner group must be in scope/name format (e.g., acme/production)"
12289
+ );
12290
+ var jobSchema = external_exports.object({
12291
+ runId: external_exports.string().uuid(),
12292
+ prompt: external_exports.string(),
12293
+ agentComposeVersionId: external_exports.string(),
12294
+ vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
12295
+ secretNames: external_exports.array(external_exports.string()).nullable(),
12296
+ checkpointId: external_exports.string().uuid().nullable()
12297
+ });
12298
+ var runnersPollContract = c.router({
12299
+ poll: {
12300
+ method: "POST",
12301
+ path: "/api/runners/poll",
12302
+ body: external_exports.object({
12303
+ group: runnerGroupSchema
12304
+ }),
12305
+ responses: {
12306
+ 200: external_exports.object({
12307
+ job: jobSchema.nullable()
12308
+ }),
12309
+ 400: apiErrorSchema,
12310
+ 401: apiErrorSchema,
12311
+ 500: apiErrorSchema
12312
+ },
12313
+ summary: "Poll for pending jobs (long-polling with 30s timeout)"
12314
+ }
12315
+ });
12316
+ var storageEntrySchema = external_exports.object({
12317
+ mountPath: external_exports.string(),
12318
+ archiveUrl: external_exports.string().nullable()
12319
+ });
12320
+ var artifactEntrySchema = external_exports.object({
12321
+ mountPath: external_exports.string(),
12322
+ archiveUrl: external_exports.string().nullable(),
12323
+ vasStorageName: external_exports.string(),
12324
+ vasVersionId: external_exports.string()
12325
+ });
12326
+ var storageManifestSchema = external_exports.object({
12327
+ storages: external_exports.array(storageEntrySchema),
12328
+ artifact: artifactEntrySchema.nullable()
12329
+ });
12330
+ var resumeSessionSchema = external_exports.object({
12331
+ sessionId: external_exports.string(),
12332
+ sessionHistory: external_exports.string()
12333
+ });
12334
+ var storedExecutionContextSchema = external_exports.object({
12335
+ workingDir: external_exports.string(),
12336
+ storageManifest: storageManifestSchema.nullable(),
12337
+ environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
12338
+ resumeSession: resumeSessionSchema.nullable(),
12339
+ encryptedSecrets: external_exports.string().nullable(),
12340
+ // AES-256-GCM encrypted secrets
12341
+ cliAgentType: external_exports.string(),
12342
+ experimentalFirewall: experimentalFirewallSchema.optional()
12343
+ });
12344
+ var executionContextSchema = external_exports.object({
12345
+ runId: external_exports.string().uuid(),
12346
+ prompt: external_exports.string(),
12347
+ agentComposeVersionId: external_exports.string(),
12348
+ vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
12349
+ secretNames: external_exports.array(external_exports.string()).nullable(),
12350
+ checkpointId: external_exports.string().uuid().nullable(),
12351
+ sandboxToken: external_exports.string(),
12352
+ // New fields for E2B parity:
12353
+ workingDir: external_exports.string(),
12354
+ storageManifest: storageManifestSchema.nullable(),
12355
+ environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
12356
+ resumeSession: resumeSessionSchema.nullable(),
12357
+ secretValues: external_exports.array(external_exports.string()).nullable(),
12358
+ cliAgentType: external_exports.string(),
12359
+ // Experimental firewall configuration
12360
+ experimentalFirewall: experimentalFirewallSchema.optional()
12361
+ });
12362
+ var runnersJobClaimContract = c.router({
12363
+ claim: {
12364
+ method: "POST",
12365
+ path: "/api/runners/jobs/:id/claim",
12366
+ pathParams: external_exports.object({
12367
+ id: external_exports.string().uuid()
12368
+ }),
12369
+ body: external_exports.object({}),
12370
+ responses: {
12371
+ 200: executionContextSchema,
12372
+ 400: apiErrorSchema,
12373
+ 401: apiErrorSchema,
12374
+ 403: apiErrorSchema,
12375
+ // Job does not belong to user
12376
+ 404: apiErrorSchema,
12377
+ 409: apiErrorSchema,
12378
+ // Already claimed
12379
+ 500: apiErrorSchema
12380
+ },
12381
+ summary: "Claim a pending job for execution"
12382
+ }
12383
+ });
12384
+
12385
+ // ../../packages/core/src/contracts/composes.ts
12386
+ var c2 = initContract();
12272
12387
  var composeVersionQuerySchema = external_exports.preprocess(
12273
12388
  (val) => val === void 0 || val === null ? void 0 : String(val),
12274
12389
  external_exports.string().min(1, "Missing version query parameter").regex(
@@ -12341,7 +12456,13 @@ var agentDefinitionSchema = external_exports.object({
12341
12456
  /^[a-z0-9-]+\/[a-z0-9-]+$/,
12342
12457
  "Runner group must be in scope/name format (e.g., acme/production)"
12343
12458
  )
12344
- }).optional()
12459
+ }).optional(),
12460
+ /**
12461
+ * Experimental firewall configuration for network egress control.
12462
+ * Requires experimental_runner to be configured.
12463
+ * When enabled, filters outbound traffic by domain/IP rules.
12464
+ */
12465
+ experimental_firewall: experimentalFirewallSchema.optional()
12345
12466
  });
12346
12467
  var agentComposeContentSchema = external_exports.object({
12347
12468
  version: external_exports.string().min(1, "Version is required"),
@@ -12363,7 +12484,7 @@ var createComposeResponseSchema = external_exports.object({
12363
12484
  action: external_exports.enum(["created", "existing"]),
12364
12485
  updatedAt: external_exports.string()
12365
12486
  });
12366
- var composesMainContract = c.router({
12487
+ var composesMainContract = c2.router({
12367
12488
  /**
12368
12489
  * GET /api/agent/composes?name={name}&scope={scope}
12369
12490
  * Get agent compose by name with HEAD version content
@@ -12405,7 +12526,7 @@ var composesMainContract = c.router({
12405
12526
  summary: "Create or update agent compose version"
12406
12527
  }
12407
12528
  });
12408
- var composesByIdContract = c.router({
12529
+ var composesByIdContract = c2.router({
12409
12530
  /**
12410
12531
  * GET /api/agent/composes/:id
12411
12532
  * Get agent compose by ID with HEAD version content
@@ -12424,7 +12545,7 @@ var composesByIdContract = c.router({
12424
12545
  summary: "Get agent compose by ID"
12425
12546
  }
12426
12547
  });
12427
- var composesVersionsContract = c.router({
12548
+ var composesVersionsContract = c2.router({
12428
12549
  /**
12429
12550
  * GET /api/agent/composes/versions?composeId={id}&version={hash|tag}
12430
12551
  * Resolve a version specifier to a full version ID
@@ -12453,7 +12574,7 @@ var composeListItemSchema = external_exports.object({
12453
12574
  headVersionId: external_exports.string().nullable(),
12454
12575
  updatedAt: external_exports.string()
12455
12576
  });
12456
- var composesListContract = c.router({
12577
+ var composesListContract = c2.router({
12457
12578
  /**
12458
12579
  * GET /api/agent/composes/list?scope={scope}
12459
12580
  * List all agent composes for a scope
@@ -12477,7 +12598,7 @@ var composesListContract = c.router({
12477
12598
  });
12478
12599
 
12479
12600
  // ../../packages/core/src/contracts/runs.ts
12480
- var c2 = initContract();
12601
+ var c3 = initContract();
12481
12602
  var runStatusSchema = external_exports.enum([
12482
12603
  "pending",
12483
12604
  "running",
@@ -12552,7 +12673,7 @@ var eventsResponseSchema = external_exports.object({
12552
12673
  run: runStateSchema,
12553
12674
  provider: external_exports.string()
12554
12675
  });
12555
- var runsMainContract = c2.router({
12676
+ var runsMainContract = c3.router({
12556
12677
  /**
12557
12678
  * POST /api/agent/runs
12558
12679
  * Create and execute a new agent run
@@ -12570,7 +12691,7 @@ var runsMainContract = c2.router({
12570
12691
  summary: "Create and execute agent run"
12571
12692
  }
12572
12693
  });
12573
- var runsByIdContract = c2.router({
12694
+ var runsByIdContract = c3.router({
12574
12695
  /**
12575
12696
  * GET /api/agent/runs/:id
12576
12697
  * Get agent run status and results
@@ -12590,7 +12711,7 @@ var runsByIdContract = c2.router({
12590
12711
  summary: "Get agent run by ID"
12591
12712
  }
12592
12713
  });
12593
- var runEventsContract = c2.router({
12714
+ var runEventsContract = c3.router({
12594
12715
  /**
12595
12716
  * GET /api/agent/runs/:id/events
12596
12717
  * Poll for agent run events with pagination
@@ -12651,7 +12772,7 @@ var telemetryResponseSchema = external_exports.object({
12651
12772
  systemLog: external_exports.string(),
12652
12773
  metrics: external_exports.array(telemetryMetricSchema)
12653
12774
  });
12654
- var runTelemetryContract = c2.router({
12775
+ var runTelemetryContract = c3.router({
12655
12776
  /**
12656
12777
  * GET /api/agent/runs/:id/telemetry
12657
12778
  * Get aggregated telemetry data for a run (legacy combined format)
@@ -12670,7 +12791,7 @@ var runTelemetryContract = c2.router({
12670
12791
  summary: "Get run telemetry data"
12671
12792
  }
12672
12793
  });
12673
- var runSystemLogContract = c2.router({
12794
+ var runSystemLogContract = c3.router({
12674
12795
  /**
12675
12796
  * GET /api/agent/runs/:id/telemetry/system-log
12676
12797
  * Get system log with pagination
@@ -12694,7 +12815,7 @@ var runSystemLogContract = c2.router({
12694
12815
  summary: "Get system log with pagination"
12695
12816
  }
12696
12817
  });
12697
- var runMetricsContract = c2.router({
12818
+ var runMetricsContract = c3.router({
12698
12819
  /**
12699
12820
  * GET /api/agent/runs/:id/telemetry/metrics
12700
12821
  * Get metrics with pagination
@@ -12718,7 +12839,7 @@ var runMetricsContract = c2.router({
12718
12839
  summary: "Get metrics with pagination"
12719
12840
  }
12720
12841
  });
12721
- var runAgentEventsContract = c2.router({
12842
+ var runAgentEventsContract = c3.router({
12722
12843
  /**
12723
12844
  * GET /api/agent/runs/:id/telemetry/agent
12724
12845
  * Get agent events with pagination (for vm0 logs default)
@@ -12742,7 +12863,7 @@ var runAgentEventsContract = c2.router({
12742
12863
  summary: "Get agent events with pagination"
12743
12864
  }
12744
12865
  });
12745
- var runNetworkLogsContract = c2.router({
12866
+ var runNetworkLogsContract = c3.router({
12746
12867
  /**
12747
12868
  * GET /api/agent/runs/:id/telemetry/network
12748
12869
  * Get network logs with pagination (for vm0 logs --network)
@@ -12768,7 +12889,7 @@ var runNetworkLogsContract = c2.router({
12768
12889
  });
12769
12890
 
12770
12891
  // ../../packages/core/src/contracts/storages.ts
12771
- var c3 = initContract();
12892
+ var c4 = initContract();
12772
12893
  var storageTypeSchema = external_exports.enum(["volume", "artifact"]);
12773
12894
  var versionQuerySchema = external_exports.preprocess(
12774
12895
  (val) => val === void 0 || val === null ? void 0 : String(val),
@@ -12782,7 +12903,7 @@ var uploadStorageResponseSchema = external_exports.object({
12782
12903
  type: storageTypeSchema,
12783
12904
  deduplicated: external_exports.boolean()
12784
12905
  });
12785
- var storagesContract = c3.router({
12906
+ var storagesContract = c4.router({
12786
12907
  /**
12787
12908
  * POST /api/storages
12788
12909
  * Upload a storage (tar.gz file)
@@ -12798,7 +12919,7 @@ var storagesContract = c3.router({
12798
12919
  method: "POST",
12799
12920
  path: "/api/storages",
12800
12921
  contentType: "multipart/form-data",
12801
- body: c3.type(),
12922
+ body: c4.type(),
12802
12923
  responses: {
12803
12924
  200: uploadStorageResponseSchema,
12804
12925
  400: apiErrorSchema,
@@ -12826,9 +12947,9 @@ var storagesContract = c3.router({
12826
12947
  }),
12827
12948
  responses: {
12828
12949
  // Binary response - actual handling done at route level
12829
- 200: c3.otherResponse({
12950
+ 200: c4.otherResponse({
12830
12951
  contentType: "application/gzip",
12831
- body: c3.type()
12952
+ body: c4.type()
12832
12953
  }),
12833
12954
  400: apiErrorSchema,
12834
12955
  401: apiErrorSchema,
@@ -12852,7 +12973,7 @@ var presignedUploadSchema = external_exports.object({
12852
12973
  key: external_exports.string(),
12853
12974
  presignedUrl: external_exports.string().url()
12854
12975
  });
12855
- var storagesPrepareContract = c3.router({
12976
+ var storagesPrepareContract = c4.router({
12856
12977
  prepare: {
12857
12978
  method: "POST",
12858
12979
  path: "/api/storages/prepare",
@@ -12884,7 +13005,7 @@ var storagesPrepareContract = c3.router({
12884
13005
  summary: "Prepare for direct S3 upload"
12885
13006
  }
12886
13007
  });
12887
- var storagesCommitContract = c3.router({
13008
+ var storagesCommitContract = c4.router({
12888
13009
  commit: {
12889
13010
  method: "POST",
12890
13011
  path: "/api/storages/commit",
@@ -12915,7 +13036,7 @@ var storagesCommitContract = c3.router({
12915
13036
  summary: "Commit uploaded storage"
12916
13037
  }
12917
13038
  });
12918
- var storagesDownloadContract = c3.router({
13039
+ var storagesDownloadContract = c4.router({
12919
13040
  download: {
12920
13041
  method: "GET",
12921
13042
  path: "/api/storages/download",
@@ -12949,7 +13070,7 @@ var storagesDownloadContract = c3.router({
12949
13070
  summary: "Get presigned download URL"
12950
13071
  }
12951
13072
  });
12952
- var storagesListContract = c3.router({
13073
+ var storagesListContract = c4.router({
12953
13074
  list: {
12954
13075
  method: "GET",
12955
13076
  path: "/api/storages/list",
@@ -12973,7 +13094,7 @@ var storagesListContract = c3.router({
12973
13094
  });
12974
13095
 
12975
13096
  // ../../packages/core/src/contracts/webhooks.ts
12976
- var c4 = initContract();
13097
+ var c5 = initContract();
12977
13098
  var agentEventSchema = external_exports.object({
12978
13099
  type: external_exports.string(),
12979
13100
  sequenceNumber: external_exports.number().int().positive()
@@ -12985,7 +13106,7 @@ var artifactSnapshotSchema = external_exports.object({
12985
13106
  var volumeVersionsSnapshotSchema = external_exports.object({
12986
13107
  versions: external_exports.record(external_exports.string(), external_exports.string())
12987
13108
  });
12988
- var webhookEventsContract = c4.router({
13109
+ var webhookEventsContract = c5.router({
12989
13110
  /**
12990
13111
  * POST /api/webhooks/agent/events
12991
13112
  * Receive agent events from E2B sandbox
@@ -13011,7 +13132,7 @@ var webhookEventsContract = c4.router({
13011
13132
  summary: "Receive agent events from sandbox"
13012
13133
  }
13013
13134
  });
13014
- var webhookCompleteContract = c4.router({
13135
+ var webhookCompleteContract = c5.router({
13015
13136
  /**
13016
13137
  * POST /api/webhooks/agent/complete
13017
13138
  * Handle agent run completion (success or failure)
@@ -13037,7 +13158,7 @@ var webhookCompleteContract = c4.router({
13037
13158
  summary: "Handle agent run completion"
13038
13159
  }
13039
13160
  });
13040
- var webhookCheckpointsContract = c4.router({
13161
+ var webhookCheckpointsContract = c5.router({
13041
13162
  /**
13042
13163
  * POST /api/webhooks/agent/checkpoints
13043
13164
  * Create checkpoint for completed agent run
@@ -13069,7 +13190,7 @@ var webhookCheckpointsContract = c4.router({
13069
13190
  summary: "Create checkpoint for agent run"
13070
13191
  }
13071
13192
  });
13072
- var webhookHeartbeatContract = c4.router({
13193
+ var webhookHeartbeatContract = c5.router({
13073
13194
  /**
13074
13195
  * POST /api/webhooks/agent/heartbeat
13075
13196
  * Receive heartbeat signals from E2B sandbox
@@ -13092,7 +13213,7 @@ var webhookHeartbeatContract = c4.router({
13092
13213
  summary: "Receive heartbeat from sandbox"
13093
13214
  }
13094
13215
  });
13095
- var webhookStoragesContract = c4.router({
13216
+ var webhookStoragesContract = c5.router({
13096
13217
  /**
13097
13218
  * POST /api/webhooks/agent/storages
13098
13219
  * Create a new version of a storage from sandbox
@@ -13107,7 +13228,7 @@ var webhookStoragesContract = c4.router({
13107
13228
  method: "POST",
13108
13229
  path: "/api/webhooks/agent/storages",
13109
13230
  contentType: "multipart/form-data",
13110
- body: c4.type(),
13231
+ body: c5.type(),
13111
13232
  responses: {
13112
13233
  200: external_exports.object({
13113
13234
  versionId: external_exports.string(),
@@ -13123,7 +13244,7 @@ var webhookStoragesContract = c4.router({
13123
13244
  summary: "Upload storage version from sandbox"
13124
13245
  }
13125
13246
  });
13126
- var webhookStoragesIncrementalContract = c4.router({
13247
+ var webhookStoragesIncrementalContract = c5.router({
13127
13248
  /**
13128
13249
  * POST /api/webhooks/agent/storages/incremental
13129
13250
  * Create a new version using incremental upload
@@ -13140,7 +13261,7 @@ var webhookStoragesIncrementalContract = c4.router({
13140
13261
  method: "POST",
13141
13262
  path: "/api/webhooks/agent/storages/incremental",
13142
13263
  contentType: "multipart/form-data",
13143
- body: c4.type(),
13264
+ body: c5.type(),
13144
13265
  responses: {
13145
13266
  200: external_exports.object({
13146
13267
  versionId: external_exports.string(),
@@ -13180,7 +13301,7 @@ var networkLogSchema = external_exports.object({
13180
13301
  request_size: external_exports.number(),
13181
13302
  response_size: external_exports.number()
13182
13303
  });
13183
- var webhookTelemetryContract = c4.router({
13304
+ var webhookTelemetryContract = c5.router({
13184
13305
  /**
13185
13306
  * POST /api/webhooks/agent/telemetry
13186
13307
  * Receive telemetry data (system log, metrics, and network logs) from sandbox
@@ -13207,7 +13328,7 @@ var webhookTelemetryContract = c4.router({
13207
13328
  summary: "Receive telemetry data from sandbox"
13208
13329
  }
13209
13330
  });
13210
- var webhookStoragesPrepareContract = c4.router({
13331
+ var webhookStoragesPrepareContract = c5.router({
13211
13332
  prepare: {
13212
13333
  method: "POST",
13213
13334
  path: "/api/webhooks/agent/storages/prepare",
@@ -13238,7 +13359,7 @@ var webhookStoragesPrepareContract = c4.router({
13238
13359
  summary: "Prepare for direct S3 upload from sandbox"
13239
13360
  }
13240
13361
  });
13241
- var webhookStoragesCommitContract = c4.router({
13362
+ var webhookStoragesCommitContract = c5.router({
13242
13363
  commit: {
13243
13364
  method: "POST",
13244
13365
  path: "/api/webhooks/agent/storages/commit",
@@ -13272,12 +13393,12 @@ var webhookStoragesCommitContract = c4.router({
13272
13393
  });
13273
13394
 
13274
13395
  // ../../packages/core/src/contracts/cli-auth.ts
13275
- var c5 = initContract();
13396
+ var c6 = initContract();
13276
13397
  var oauthErrorSchema = external_exports.object({
13277
13398
  error: external_exports.string(),
13278
13399
  error_description: external_exports.string()
13279
13400
  });
13280
- var cliAuthDeviceContract = c5.router({
13401
+ var cliAuthDeviceContract = c6.router({
13281
13402
  /**
13282
13403
  * POST /api/cli/auth/device
13283
13404
  * Initiate device authorization flow
@@ -13299,7 +13420,7 @@ var cliAuthDeviceContract = c5.router({
13299
13420
  summary: "Initiate device authorization flow"
13300
13421
  }
13301
13422
  });
13302
- var cliAuthTokenContract = c5.router({
13423
+ var cliAuthTokenContract = c6.router({
13303
13424
  /**
13304
13425
  * POST /api/cli/auth/token
13305
13426
  * Exchange device code for access token
@@ -13329,8 +13450,8 @@ var cliAuthTokenContract = c5.router({
13329
13450
  });
13330
13451
 
13331
13452
  // ../../packages/core/src/contracts/auth.ts
13332
- var c6 = initContract();
13333
- var authContract = c6.router({
13453
+ var c7 = initContract();
13454
+ var authContract = c7.router({
13334
13455
  /**
13335
13456
  * GET /api/auth/me
13336
13457
  * Get current user information
@@ -13352,7 +13473,7 @@ var authContract = c6.router({
13352
13473
  });
13353
13474
 
13354
13475
  // ../../packages/core/src/contracts/cron.ts
13355
- var c7 = initContract();
13476
+ var c8 = initContract();
13356
13477
  var cleanupResultSchema = external_exports.object({
13357
13478
  runId: external_exports.string(),
13358
13479
  sandboxId: external_exports.string().nullable(),
@@ -13364,7 +13485,7 @@ var cleanupResponseSchema = external_exports.object({
13364
13485
  errors: external_exports.number(),
13365
13486
  results: external_exports.array(cleanupResultSchema)
13366
13487
  });
13367
- var cronCleanupSandboxesContract = c7.router({
13488
+ var cronCleanupSandboxesContract = c8.router({
13368
13489
  /**
13369
13490
  * GET /api/cron/cleanup-sandboxes
13370
13491
  * Cron job to cleanup sandboxes that have stopped sending heartbeats
@@ -13396,7 +13517,7 @@ var proxyErrorSchema = external_exports.object({
13396
13517
  });
13397
13518
 
13398
13519
  // ../../packages/core/src/contracts/scopes.ts
13399
- var c8 = initContract();
13520
+ var c9 = initContract();
13400
13521
  var scopeTypeSchema = external_exports.enum(["personal", "organization", "system"]);
13401
13522
  var scopeSlugSchema = external_exports.string().min(3, "Scope slug must be at least 3 characters").max(64, "Scope slug must be at most 64 characters").regex(
13402
13523
  /^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]{1,2}$/,
@@ -13421,7 +13542,7 @@ var updateScopeRequestSchema = external_exports.object({
13421
13542
  slug: scopeSlugSchema,
13422
13543
  force: external_exports.boolean().optional().default(false)
13423
13544
  });
13424
- var scopeContract = c8.router({
13545
+ var scopeContract = c9.router({
13425
13546
  /**
13426
13547
  * GET /api/scope
13427
13548
  * Get current user's scope
@@ -13476,7 +13597,7 @@ var scopeContract = c8.router({
13476
13597
  });
13477
13598
 
13478
13599
  // ../../packages/core/src/contracts/sessions.ts
13479
- var c9 = initContract();
13600
+ var c10 = initContract();
13480
13601
  var sessionResponseSchema = external_exports.object({
13481
13602
  id: external_exports.string(),
13482
13603
  agentComposeId: external_exports.string(),
@@ -13510,7 +13631,7 @@ var checkpointResponseSchema = external_exports.object({
13510
13631
  volumeVersionsSnapshot: volumeVersionsSnapshotSchema2.nullable(),
13511
13632
  createdAt: external_exports.string()
13512
13633
  });
13513
- var sessionsByIdContract = c9.router({
13634
+ var sessionsByIdContract = c10.router({
13514
13635
  /**
13515
13636
  * GET /api/agent/sessions/:id
13516
13637
  * Get session by ID
@@ -13530,7 +13651,7 @@ var sessionsByIdContract = c9.router({
13530
13651
  summary: "Get session by ID"
13531
13652
  }
13532
13653
  });
13533
- var checkpointsByIdContract = c9.router({
13654
+ var checkpointsByIdContract = c10.router({
13534
13655
  /**
13535
13656
  * GET /api/agent/checkpoints/:id
13536
13657
  * Get checkpoint by ID
@@ -13551,107 +13672,6 @@ var checkpointsByIdContract = c9.router({
13551
13672
  }
13552
13673
  });
13553
13674
 
13554
- // ../../packages/core/src/contracts/runners.ts
13555
- var c10 = initContract();
13556
- var runnerGroupSchema = external_exports.string().regex(
13557
- /^[a-z0-9-]+\/[a-z0-9-]+$/,
13558
- "Runner group must be in scope/name format (e.g., acme/production)"
13559
- );
13560
- var jobSchema = external_exports.object({
13561
- runId: external_exports.string().uuid(),
13562
- prompt: external_exports.string(),
13563
- agentComposeVersionId: external_exports.string(),
13564
- vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
13565
- secretNames: external_exports.array(external_exports.string()).nullable(),
13566
- checkpointId: external_exports.string().uuid().nullable()
13567
- });
13568
- var runnersPollContract = c10.router({
13569
- poll: {
13570
- method: "POST",
13571
- path: "/api/runners/poll",
13572
- body: external_exports.object({
13573
- group: runnerGroupSchema
13574
- }),
13575
- responses: {
13576
- 200: external_exports.object({
13577
- job: jobSchema.nullable()
13578
- }),
13579
- 400: apiErrorSchema,
13580
- 401: apiErrorSchema,
13581
- 500: apiErrorSchema
13582
- },
13583
- summary: "Poll for pending jobs (long-polling with 30s timeout)"
13584
- }
13585
- });
13586
- var storageEntrySchema = external_exports.object({
13587
- mountPath: external_exports.string(),
13588
- archiveUrl: external_exports.string().nullable()
13589
- });
13590
- var artifactEntrySchema = external_exports.object({
13591
- mountPath: external_exports.string(),
13592
- archiveUrl: external_exports.string().nullable(),
13593
- vasStorageName: external_exports.string(),
13594
- vasVersionId: external_exports.string()
13595
- });
13596
- var storageManifestSchema = external_exports.object({
13597
- storages: external_exports.array(storageEntrySchema),
13598
- artifact: artifactEntrySchema.nullable()
13599
- });
13600
- var resumeSessionSchema = external_exports.object({
13601
- sessionId: external_exports.string(),
13602
- sessionHistory: external_exports.string()
13603
- });
13604
- var storedExecutionContextSchema = external_exports.object({
13605
- workingDir: external_exports.string(),
13606
- storageManifest: storageManifestSchema.nullable(),
13607
- environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
13608
- resumeSession: resumeSessionSchema.nullable(),
13609
- encryptedSecrets: external_exports.string().nullable(),
13610
- // AES-256-GCM encrypted secrets
13611
- cliAgentType: external_exports.string(),
13612
- experimentalNetworkSecurity: external_exports.boolean().optional()
13613
- });
13614
- var executionContextSchema = external_exports.object({
13615
- runId: external_exports.string().uuid(),
13616
- prompt: external_exports.string(),
13617
- agentComposeVersionId: external_exports.string(),
13618
- vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
13619
- secretNames: external_exports.array(external_exports.string()).nullable(),
13620
- checkpointId: external_exports.string().uuid().nullable(),
13621
- sandboxToken: external_exports.string(),
13622
- // New fields for E2B parity:
13623
- workingDir: external_exports.string(),
13624
- storageManifest: storageManifestSchema.nullable(),
13625
- environment: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
13626
- resumeSession: resumeSessionSchema.nullable(),
13627
- secretValues: external_exports.array(external_exports.string()).nullable(),
13628
- cliAgentType: external_exports.string(),
13629
- // Network security mode flag
13630
- experimentalNetworkSecurity: external_exports.boolean().optional()
13631
- });
13632
- var runnersJobClaimContract = c10.router({
13633
- claim: {
13634
- method: "POST",
13635
- path: "/api/runners/jobs/:id/claim",
13636
- pathParams: external_exports.object({
13637
- id: external_exports.string().uuid()
13638
- }),
13639
- body: external_exports.object({}),
13640
- responses: {
13641
- 200: executionContextSchema,
13642
- 400: apiErrorSchema,
13643
- 401: apiErrorSchema,
13644
- 403: apiErrorSchema,
13645
- // Job does not belong to user
13646
- 404: apiErrorSchema,
13647
- 409: apiErrorSchema,
13648
- // Already claimed
13649
- 500: apiErrorSchema
13650
- },
13651
- summary: "Claim a pending job for execution"
13652
- }
13653
- });
13654
-
13655
13675
  // ../../packages/core/src/contracts/public/common.ts
13656
13676
  var publicApiErrorTypeSchema = external_exports.enum([
13657
13677
  "api_error",
@@ -13725,18 +13745,21 @@ var updateAgentRequestSchema = external_exports.object({
13725
13745
  config: external_exports.unknown()
13726
13746
  // New agent configuration (creates new version)
13727
13747
  });
13748
+ var agentListQuerySchema = listQuerySchema.extend({
13749
+ name: external_exports.string().optional()
13750
+ });
13728
13751
  var publicAgentsListContract = c11.router({
13729
13752
  list: {
13730
13753
  method: "GET",
13731
13754
  path: "/v1/agents",
13732
- query: listQuerySchema,
13755
+ query: agentListQuerySchema,
13733
13756
  responses: {
13734
13757
  200: paginatedAgentsSchema,
13735
13758
  401: publicApiErrorSchema,
13736
13759
  500: publicApiErrorSchema
13737
13760
  },
13738
13761
  summary: "List agents",
13739
- description: "List all agents in the current scope with pagination"
13762
+ description: "List all agents in the current scope with pagination. Use the `name` query parameter to filter by agent name."
13740
13763
  },
13741
13764
  create: {
13742
13765
  method: "POST",
@@ -18628,7 +18651,7 @@ async function autoPullArtifact(runOutput, artifactDir) {
18628
18651
  }
18629
18652
  var cookCmd = new Command17().name("cook").description("One-click agent preparation and execution from vm0.yaml");
18630
18653
  cookCmd.argument("[prompt]", "Prompt for the agent").option("-y, --yes", "Skip confirmation prompts").action(async (prompt, options) => {
18631
- const shouldExit = await checkAndUpgrade("4.38.0", prompt);
18654
+ const shouldExit = await checkAndUpgrade("4.38.2", prompt);
18632
18655
  if (shouldExit) {
18633
18656
  process.exit(0);
18634
18657
  }
@@ -20182,7 +20205,7 @@ var setupGithubCommand = new Command26().name("setup-github").description("Initi
20182
20205
 
20183
20206
  // src/index.ts
20184
20207
  var program = new Command27();
20185
- program.name("vm0").description("VM0 CLI - A modern build tool").version("4.38.0");
20208
+ program.name("vm0").description("VM0 CLI - A modern build tool").version("4.38.2");
20186
20209
  program.command("info").description("Display environment information").action(async () => {
20187
20210
  console.log(chalk29.bold("System Information:"));
20188
20211
  console.log(`Node Version: ${process.version}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vm0/cli",
3
- "version": "4.38.0",
3
+ "version": "4.38.2",
4
4
  "description": "CLI application",
5
5
  "repository": {
6
6
  "type": "git",