@vm0/cli 4.29.0 → 4.29.1

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 +227 -132
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -2759,7 +2759,7 @@ var $ZodBase64 = /* @__PURE__ */ $constructor("$ZodBase64", (inst, def) => {
2759
2759
  function isValidBase64URL(data) {
2760
2760
  if (!base64url.test(data))
2761
2761
  return false;
2762
- const base643 = data.replace(/[-_]/g, (c11) => c11 === "-" ? "+" : "/");
2762
+ const base643 = data.replace(/[-_]/g, (c10) => c10 === "-" ? "+" : "/");
2763
2763
  const padded = base643.padEnd(Math.ceil(base643.length / 4) * 4, "=");
2764
2764
  return isValidBase64(padded);
2765
2765
  }
@@ -11671,9 +11671,9 @@ var ZodDate = /* @__PURE__ */ $constructor("ZodDate", (inst, def) => {
11671
11671
  ZodType.init(inst, def);
11672
11672
  inst.min = (value, params) => inst.check(_gte(value, params));
11673
11673
  inst.max = (value, params) => inst.check(_lte(value, params));
11674
- const c11 = inst._zod.bag;
11675
- inst.minDate = c11.minimum ? new Date(c11.minimum) : null;
11676
- inst.maxDate = c11.maximum ? new Date(c11.maximum) : null;
11674
+ const c10 = inst._zod.bag;
11675
+ inst.minDate = c10.minimum ? new Date(c10.minimum) : null;
11676
+ inst.maxDate = c10.maximum ? new Date(c10.maximum) : null;
11677
11677
  });
11678
11678
  function date3(params) {
11679
11679
  return _date(ZodDate, params);
@@ -12266,87 +12266,8 @@ var apiErrorSchema = external_exports.object({
12266
12266
  })
12267
12267
  });
12268
12268
 
12269
- // ../../packages/core/src/contracts/secrets.ts
12270
- var c = initContract();
12271
- var secretNameSchema = external_exports.string().min(1, "Secret name is required").max(255, "Secret name must be 255 characters or less").regex(
12272
- /^[a-zA-Z][a-zA-Z0-9_]*$/,
12273
- "Secret name must start with a letter and contain only letters, numbers, and underscores"
12274
- );
12275
- var secretValueSchema = external_exports.string().min(1, "Secret value is required").refine(
12276
- (value) => Buffer.byteLength(value, "utf8") <= 48 * 1024,
12277
- "Secret value must be 48 KB or less"
12278
- );
12279
- var secretInfoSchema = external_exports.object({
12280
- name: external_exports.string(),
12281
- createdAt: external_exports.string(),
12282
- updatedAt: external_exports.string()
12283
- });
12284
- var secretsContract = c.router({
12285
- /**
12286
- * GET /api/secrets
12287
- * List all secrets for the authenticated user (names only, not values)
12288
- */
12289
- list: {
12290
- method: "GET",
12291
- path: "/api/secrets",
12292
- responses: {
12293
- 200: external_exports.object({
12294
- secrets: external_exports.array(secretInfoSchema)
12295
- }),
12296
- 401: apiErrorSchema
12297
- },
12298
- summary: "List all secrets"
12299
- },
12300
- /**
12301
- * POST /api/secrets
12302
- * Create or update a secret
12303
- */
12304
- create: {
12305
- method: "POST",
12306
- path: "/api/secrets",
12307
- body: external_exports.object({
12308
- name: secretNameSchema,
12309
- value: secretValueSchema
12310
- }),
12311
- responses: {
12312
- 200: external_exports.object({
12313
- name: external_exports.string(),
12314
- action: external_exports.literal("updated")
12315
- }),
12316
- 201: external_exports.object({
12317
- name: external_exports.string(),
12318
- action: external_exports.literal("created")
12319
- }),
12320
- 400: apiErrorSchema,
12321
- 401: apiErrorSchema
12322
- },
12323
- summary: "Create or update a secret"
12324
- },
12325
- /**
12326
- * DELETE /api/secrets?name={name}
12327
- * Delete a secret by name
12328
- */
12329
- delete: {
12330
- method: "DELETE",
12331
- path: "/api/secrets",
12332
- query: external_exports.object({
12333
- name: external_exports.string().min(1, "Missing name query parameter")
12334
- }),
12335
- responses: {
12336
- 200: external_exports.object({
12337
- name: external_exports.string(),
12338
- deleted: external_exports.literal(true)
12339
- }),
12340
- 400: apiErrorSchema,
12341
- 401: apiErrorSchema,
12342
- 404: apiErrorSchema
12343
- },
12344
- summary: "Delete a secret"
12345
- }
12346
- });
12347
-
12348
12269
  // ../../packages/core/src/contracts/composes.ts
12349
- var c2 = initContract();
12270
+ var c = initContract();
12350
12271
  var agentNameSchema = external_exports.string().min(3, "Agent name must be at least 3 characters").max(64, "Agent name must be 64 characters or less").regex(
12351
12272
  /^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}[a-zA-Z0-9]$/,
12352
12273
  "Agent name must start and end with letter or number, and contain only letters, numbers, and hyphens"
@@ -12402,7 +12323,7 @@ var createComposeResponseSchema = external_exports.object({
12402
12323
  action: external_exports.enum(["created", "existing"]),
12403
12324
  updatedAt: external_exports.string()
12404
12325
  });
12405
- var composesMainContract = c2.router({
12326
+ var composesMainContract = c.router({
12406
12327
  /**
12407
12328
  * GET /api/agent/composes?name={name}&scope={scope}
12408
12329
  * Get agent compose by name with HEAD version content
@@ -12444,7 +12365,7 @@ var composesMainContract = c2.router({
12444
12365
  summary: "Create or update agent compose version"
12445
12366
  }
12446
12367
  });
12447
- var composesByIdContract = c2.router({
12368
+ var composesByIdContract = c.router({
12448
12369
  /**
12449
12370
  * GET /api/agent/composes/:id
12450
12371
  * Get agent compose by ID with HEAD version content
@@ -12463,7 +12384,7 @@ var composesByIdContract = c2.router({
12463
12384
  summary: "Get agent compose by ID"
12464
12385
  }
12465
12386
  });
12466
- var composesVersionsContract = c2.router({
12387
+ var composesVersionsContract = c.router({
12467
12388
  /**
12468
12389
  * GET /api/agent/composes/versions?composeId={id}&version={hash|tag}
12469
12390
  * Resolve a version specifier to a full version ID
@@ -12489,7 +12410,7 @@ var composesVersionsContract = c2.router({
12489
12410
  });
12490
12411
 
12491
12412
  // ../../packages/core/src/contracts/runs.ts
12492
- var c3 = initContract();
12413
+ var c2 = initContract();
12493
12414
  var runStatusSchema = external_exports.enum([
12494
12415
  "pending",
12495
12416
  "running",
@@ -12564,7 +12485,7 @@ var eventsResponseSchema = external_exports.object({
12564
12485
  run: runStateSchema,
12565
12486
  provider: external_exports.string()
12566
12487
  });
12567
- var runsMainContract = c3.router({
12488
+ var runsMainContract = c2.router({
12568
12489
  /**
12569
12490
  * POST /api/agent/runs
12570
12491
  * Create and execute a new agent run
@@ -12582,7 +12503,7 @@ var runsMainContract = c3.router({
12582
12503
  summary: "Create and execute agent run"
12583
12504
  }
12584
12505
  });
12585
- var runsByIdContract = c3.router({
12506
+ var runsByIdContract = c2.router({
12586
12507
  /**
12587
12508
  * GET /api/agent/runs/:id
12588
12509
  * Get agent run status and results
@@ -12602,7 +12523,7 @@ var runsByIdContract = c3.router({
12602
12523
  summary: "Get agent run by ID"
12603
12524
  }
12604
12525
  });
12605
- var runEventsContract = c3.router({
12526
+ var runEventsContract = c2.router({
12606
12527
  /**
12607
12528
  * GET /api/agent/runs/:id/events
12608
12529
  * Poll for agent run events with pagination
@@ -12663,7 +12584,7 @@ var telemetryResponseSchema = external_exports.object({
12663
12584
  systemLog: external_exports.string(),
12664
12585
  metrics: external_exports.array(telemetryMetricSchema)
12665
12586
  });
12666
- var runTelemetryContract = c3.router({
12587
+ var runTelemetryContract = c2.router({
12667
12588
  /**
12668
12589
  * GET /api/agent/runs/:id/telemetry
12669
12590
  * Get aggregated telemetry data for a run (legacy combined format)
@@ -12682,7 +12603,7 @@ var runTelemetryContract = c3.router({
12682
12603
  summary: "Get run telemetry data"
12683
12604
  }
12684
12605
  });
12685
- var runSystemLogContract = c3.router({
12606
+ var runSystemLogContract = c2.router({
12686
12607
  /**
12687
12608
  * GET /api/agent/runs/:id/telemetry/system-log
12688
12609
  * Get system log with pagination
@@ -12705,7 +12626,7 @@ var runSystemLogContract = c3.router({
12705
12626
  summary: "Get system log with pagination"
12706
12627
  }
12707
12628
  });
12708
- var runMetricsContract = c3.router({
12629
+ var runMetricsContract = c2.router({
12709
12630
  /**
12710
12631
  * GET /api/agent/runs/:id/telemetry/metrics
12711
12632
  * Get metrics with pagination
@@ -12728,7 +12649,7 @@ var runMetricsContract = c3.router({
12728
12649
  summary: "Get metrics with pagination"
12729
12650
  }
12730
12651
  });
12731
- var runAgentEventsContract = c3.router({
12652
+ var runAgentEventsContract = c2.router({
12732
12653
  /**
12733
12654
  * GET /api/agent/runs/:id/telemetry/agent
12734
12655
  * Get agent events with pagination (for vm0 logs default)
@@ -12751,7 +12672,7 @@ var runAgentEventsContract = c3.router({
12751
12672
  summary: "Get agent events with pagination"
12752
12673
  }
12753
12674
  });
12754
- var runNetworkLogsContract = c3.router({
12675
+ var runNetworkLogsContract = c2.router({
12755
12676
  /**
12756
12677
  * GET /api/agent/runs/:id/telemetry/network
12757
12678
  * Get network logs with pagination (for vm0 logs --network)
@@ -12776,7 +12697,7 @@ var runNetworkLogsContract = c3.router({
12776
12697
  });
12777
12698
 
12778
12699
  // ../../packages/core/src/contracts/storages.ts
12779
- var c4 = initContract();
12700
+ var c3 = initContract();
12780
12701
  var storageTypeSchema = external_exports.enum(["volume", "artifact"]);
12781
12702
  var uploadStorageResponseSchema = external_exports.object({
12782
12703
  name: external_exports.string(),
@@ -12786,7 +12707,7 @@ var uploadStorageResponseSchema = external_exports.object({
12786
12707
  type: storageTypeSchema,
12787
12708
  deduplicated: external_exports.boolean()
12788
12709
  });
12789
- var storagesContract = c4.router({
12710
+ var storagesContract = c3.router({
12790
12711
  /**
12791
12712
  * POST /api/storages
12792
12713
  * Upload a storage (tar.gz file)
@@ -12802,7 +12723,7 @@ var storagesContract = c4.router({
12802
12723
  method: "POST",
12803
12724
  path: "/api/storages",
12804
12725
  contentType: "multipart/form-data",
12805
- body: c4.type(),
12726
+ body: c3.type(),
12806
12727
  responses: {
12807
12728
  200: uploadStorageResponseSchema,
12808
12729
  400: apiErrorSchema,
@@ -12830,9 +12751,9 @@ var storagesContract = c4.router({
12830
12751
  }),
12831
12752
  responses: {
12832
12753
  // Binary response - actual handling done at route level
12833
- 200: c4.otherResponse({
12754
+ 200: c3.otherResponse({
12834
12755
  contentType: "application/gzip",
12835
- body: c4.type()
12756
+ body: c3.type()
12836
12757
  }),
12837
12758
  400: apiErrorSchema,
12838
12759
  401: apiErrorSchema,
@@ -12842,9 +12763,120 @@ var storagesContract = c4.router({
12842
12763
  summary: "Download storage archive"
12843
12764
  }
12844
12765
  });
12766
+ var fileEntryWithHashSchema = external_exports.object({
12767
+ path: external_exports.string().min(1, "File path is required"),
12768
+ hash: external_exports.string().length(64, "Hash must be SHA-256 (64 hex chars)"),
12769
+ size: external_exports.number().int().min(0, "Size must be non-negative")
12770
+ });
12771
+ var storageChangesSchema = external_exports.object({
12772
+ added: external_exports.array(external_exports.string()),
12773
+ modified: external_exports.array(external_exports.string()),
12774
+ deleted: external_exports.array(external_exports.string())
12775
+ });
12776
+ var presignedUploadSchema = external_exports.object({
12777
+ key: external_exports.string(),
12778
+ presignedUrl: external_exports.string().url()
12779
+ });
12780
+ var storagesPrepareContract = c3.router({
12781
+ prepare: {
12782
+ method: "POST",
12783
+ path: "/api/storages/prepare",
12784
+ body: external_exports.object({
12785
+ storageName: external_exports.string().min(1, "Storage name is required"),
12786
+ storageType: storageTypeSchema,
12787
+ files: external_exports.array(fileEntryWithHashSchema),
12788
+ force: external_exports.boolean().optional(),
12789
+ runId: external_exports.string().optional(),
12790
+ // For sandbox auth
12791
+ baseVersion: external_exports.string().optional(),
12792
+ // For incremental uploads
12793
+ changes: storageChangesSchema.optional()
12794
+ }),
12795
+ responses: {
12796
+ 200: external_exports.object({
12797
+ versionId: external_exports.string(),
12798
+ existing: external_exports.boolean(),
12799
+ uploads: external_exports.object({
12800
+ archive: presignedUploadSchema,
12801
+ manifest: presignedUploadSchema
12802
+ }).optional()
12803
+ }),
12804
+ 400: apiErrorSchema,
12805
+ 401: apiErrorSchema,
12806
+ 404: apiErrorSchema,
12807
+ 500: apiErrorSchema
12808
+ },
12809
+ summary: "Prepare for direct S3 upload"
12810
+ }
12811
+ });
12812
+ var storagesCommitContract = c3.router({
12813
+ commit: {
12814
+ method: "POST",
12815
+ path: "/api/storages/commit",
12816
+ body: external_exports.object({
12817
+ storageName: external_exports.string().min(1, "Storage name is required"),
12818
+ storageType: storageTypeSchema,
12819
+ versionId: external_exports.string().min(1, "Version ID is required"),
12820
+ files: external_exports.array(fileEntryWithHashSchema),
12821
+ runId: external_exports.string().optional(),
12822
+ message: external_exports.string().optional()
12823
+ }),
12824
+ responses: {
12825
+ 200: external_exports.object({
12826
+ success: external_exports.literal(true),
12827
+ versionId: external_exports.string(),
12828
+ storageName: external_exports.string(),
12829
+ size: external_exports.number(),
12830
+ fileCount: external_exports.number(),
12831
+ deduplicated: external_exports.boolean().optional()
12832
+ }),
12833
+ 400: apiErrorSchema,
12834
+ 401: apiErrorSchema,
12835
+ 404: apiErrorSchema,
12836
+ 409: apiErrorSchema,
12837
+ // S3 files missing
12838
+ 500: apiErrorSchema
12839
+ },
12840
+ summary: "Commit uploaded storage"
12841
+ }
12842
+ });
12843
+ var storagesDownloadContract = c3.router({
12844
+ download: {
12845
+ method: "GET",
12846
+ path: "/api/storages/download",
12847
+ query: external_exports.object({
12848
+ name: external_exports.string().min(1, "Storage name is required"),
12849
+ type: storageTypeSchema,
12850
+ version: external_exports.string().optional()
12851
+ }),
12852
+ responses: {
12853
+ // Normal response with presigned URL
12854
+ 200: external_exports.union([
12855
+ external_exports.object({
12856
+ url: external_exports.string().url(),
12857
+ versionId: external_exports.string(),
12858
+ fileCount: external_exports.number(),
12859
+ size: external_exports.number()
12860
+ }),
12861
+ // Empty artifact response
12862
+ external_exports.object({
12863
+ empty: external_exports.literal(true),
12864
+ versionId: external_exports.string(),
12865
+ fileCount: external_exports.literal(0),
12866
+ size: external_exports.literal(0)
12867
+ })
12868
+ ]),
12869
+ 400: apiErrorSchema,
12870
+ 401: apiErrorSchema,
12871
+ 404: apiErrorSchema,
12872
+ 500: apiErrorSchema
12873
+ },
12874
+ summary: "Get presigned download URL"
12875
+ }
12876
+ });
12845
12877
 
12846
12878
  // ../../packages/core/src/contracts/webhooks.ts
12847
- var c5 = initContract();
12879
+ var c4 = initContract();
12848
12880
  var agentEventSchema = external_exports.object({
12849
12881
  type: external_exports.string(),
12850
12882
  sequenceNumber: external_exports.number().int().positive()
@@ -12856,7 +12888,7 @@ var artifactSnapshotSchema = external_exports.object({
12856
12888
  var volumeVersionsSnapshotSchema = external_exports.object({
12857
12889
  versions: external_exports.record(external_exports.string(), external_exports.string())
12858
12890
  });
12859
- var webhookEventsContract = c5.router({
12891
+ var webhookEventsContract = c4.router({
12860
12892
  /**
12861
12893
  * POST /api/webhooks/agent/events
12862
12894
  * Receive agent events from E2B sandbox
@@ -12882,7 +12914,7 @@ var webhookEventsContract = c5.router({
12882
12914
  summary: "Receive agent events from sandbox"
12883
12915
  }
12884
12916
  });
12885
- var webhookCompleteContract = c5.router({
12917
+ var webhookCompleteContract = c4.router({
12886
12918
  /**
12887
12919
  * POST /api/webhooks/agent/complete
12888
12920
  * Handle agent run completion (success or failure)
@@ -12908,7 +12940,7 @@ var webhookCompleteContract = c5.router({
12908
12940
  summary: "Handle agent run completion"
12909
12941
  }
12910
12942
  });
12911
- var webhookCheckpointsContract = c5.router({
12943
+ var webhookCheckpointsContract = c4.router({
12912
12944
  /**
12913
12945
  * POST /api/webhooks/agent/checkpoints
12914
12946
  * Create checkpoint for completed agent run
@@ -12940,7 +12972,7 @@ var webhookCheckpointsContract = c5.router({
12940
12972
  summary: "Create checkpoint for agent run"
12941
12973
  }
12942
12974
  });
12943
- var webhookHeartbeatContract = c5.router({
12975
+ var webhookHeartbeatContract = c4.router({
12944
12976
  /**
12945
12977
  * POST /api/webhooks/agent/heartbeat
12946
12978
  * Receive heartbeat signals from E2B sandbox
@@ -12963,7 +12995,7 @@ var webhookHeartbeatContract = c5.router({
12963
12995
  summary: "Receive heartbeat from sandbox"
12964
12996
  }
12965
12997
  });
12966
- var webhookStoragesContract = c5.router({
12998
+ var webhookStoragesContract = c4.router({
12967
12999
  /**
12968
13000
  * POST /api/webhooks/agent/storages
12969
13001
  * Create a new version of a storage from sandbox
@@ -12978,7 +13010,7 @@ var webhookStoragesContract = c5.router({
12978
13010
  method: "POST",
12979
13011
  path: "/api/webhooks/agent/storages",
12980
13012
  contentType: "multipart/form-data",
12981
- body: c5.type(),
13013
+ body: c4.type(),
12982
13014
  responses: {
12983
13015
  200: external_exports.object({
12984
13016
  versionId: external_exports.string(),
@@ -12994,7 +13026,7 @@ var webhookStoragesContract = c5.router({
12994
13026
  summary: "Upload storage version from sandbox"
12995
13027
  }
12996
13028
  });
12997
- var webhookStoragesIncrementalContract = c5.router({
13029
+ var webhookStoragesIncrementalContract = c4.router({
12998
13030
  /**
12999
13031
  * POST /api/webhooks/agent/storages/incremental
13000
13032
  * Create a new version using incremental upload
@@ -13011,7 +13043,7 @@ var webhookStoragesIncrementalContract = c5.router({
13011
13043
  method: "POST",
13012
13044
  path: "/api/webhooks/agent/storages/incremental",
13013
13045
  contentType: "multipart/form-data",
13014
- body: c5.type(),
13046
+ body: c4.type(),
13015
13047
  responses: {
13016
13048
  200: external_exports.object({
13017
13049
  versionId: external_exports.string(),
@@ -13051,7 +13083,7 @@ var networkLogSchema = external_exports.object({
13051
13083
  request_size: external_exports.number(),
13052
13084
  response_size: external_exports.number()
13053
13085
  });
13054
- var webhookTelemetryContract = c5.router({
13086
+ var webhookTelemetryContract = c4.router({
13055
13087
  /**
13056
13088
  * POST /api/webhooks/agent/telemetry
13057
13089
  * Receive telemetry data (system log, metrics, and network logs) from sandbox
@@ -13078,14 +13110,77 @@ var webhookTelemetryContract = c5.router({
13078
13110
  summary: "Receive telemetry data from sandbox"
13079
13111
  }
13080
13112
  });
13113
+ var webhookStoragesPrepareContract = c4.router({
13114
+ prepare: {
13115
+ method: "POST",
13116
+ path: "/api/webhooks/agent/storages/prepare",
13117
+ body: external_exports.object({
13118
+ runId: external_exports.string().min(1, "runId is required"),
13119
+ // Required for webhook auth
13120
+ storageName: external_exports.string().min(1, "Storage name is required"),
13121
+ storageType: storageTypeSchema,
13122
+ files: external_exports.array(fileEntryWithHashSchema),
13123
+ force: external_exports.boolean().optional(),
13124
+ baseVersion: external_exports.string().optional(),
13125
+ changes: storageChangesSchema.optional()
13126
+ }),
13127
+ responses: {
13128
+ 200: external_exports.object({
13129
+ versionId: external_exports.string(),
13130
+ existing: external_exports.boolean(),
13131
+ uploads: external_exports.object({
13132
+ archive: presignedUploadSchema,
13133
+ manifest: presignedUploadSchema
13134
+ }).optional()
13135
+ }),
13136
+ 400: apiErrorSchema,
13137
+ 401: apiErrorSchema,
13138
+ 404: apiErrorSchema,
13139
+ 500: apiErrorSchema
13140
+ },
13141
+ summary: "Prepare for direct S3 upload from sandbox"
13142
+ }
13143
+ });
13144
+ var webhookStoragesCommitContract = c4.router({
13145
+ commit: {
13146
+ method: "POST",
13147
+ path: "/api/webhooks/agent/storages/commit",
13148
+ body: external_exports.object({
13149
+ runId: external_exports.string().min(1, "runId is required"),
13150
+ // Required for webhook auth
13151
+ storageName: external_exports.string().min(1, "Storage name is required"),
13152
+ storageType: storageTypeSchema,
13153
+ versionId: external_exports.string().min(1, "Version ID is required"),
13154
+ files: external_exports.array(fileEntryWithHashSchema),
13155
+ message: external_exports.string().optional()
13156
+ }),
13157
+ responses: {
13158
+ 200: external_exports.object({
13159
+ success: external_exports.literal(true),
13160
+ versionId: external_exports.string(),
13161
+ storageName: external_exports.string(),
13162
+ size: external_exports.number(),
13163
+ fileCount: external_exports.number(),
13164
+ deduplicated: external_exports.boolean().optional()
13165
+ }),
13166
+ 400: apiErrorSchema,
13167
+ 401: apiErrorSchema,
13168
+ 404: apiErrorSchema,
13169
+ 409: apiErrorSchema,
13170
+ // S3 files missing
13171
+ 500: apiErrorSchema
13172
+ },
13173
+ summary: "Commit uploaded storage from sandbox"
13174
+ }
13175
+ });
13081
13176
 
13082
13177
  // ../../packages/core/src/contracts/cli-auth.ts
13083
- var c6 = initContract();
13178
+ var c5 = initContract();
13084
13179
  var oauthErrorSchema = external_exports.object({
13085
13180
  error: external_exports.string(),
13086
13181
  error_description: external_exports.string()
13087
13182
  });
13088
- var cliAuthDeviceContract = c6.router({
13183
+ var cliAuthDeviceContract = c5.router({
13089
13184
  /**
13090
13185
  * POST /api/cli/auth/device
13091
13186
  * Initiate device authorization flow
@@ -13107,7 +13202,7 @@ var cliAuthDeviceContract = c6.router({
13107
13202
  summary: "Initiate device authorization flow"
13108
13203
  }
13109
13204
  });
13110
- var cliAuthTokenContract = c6.router({
13205
+ var cliAuthTokenContract = c5.router({
13111
13206
  /**
13112
13207
  * POST /api/cli/auth/token
13113
13208
  * Exchange device code for access token
@@ -13137,8 +13232,8 @@ var cliAuthTokenContract = c6.router({
13137
13232
  });
13138
13233
 
13139
13234
  // ../../packages/core/src/contracts/auth.ts
13140
- var c7 = initContract();
13141
- var authContract = c7.router({
13235
+ var c6 = initContract();
13236
+ var authContract = c6.router({
13142
13237
  /**
13143
13238
  * GET /api/auth/me
13144
13239
  * Get current user information
@@ -13160,7 +13255,7 @@ var authContract = c7.router({
13160
13255
  });
13161
13256
 
13162
13257
  // ../../packages/core/src/contracts/images.ts
13163
- var c8 = initContract();
13258
+ var c7 = initContract();
13164
13259
  var buildStatusSchema = external_exports.enum(["building", "ready", "error"]);
13165
13260
  var imageInfoSchema = external_exports.object({
13166
13261
  id: external_exports.string(),
@@ -13196,7 +13291,7 @@ var buildStatusResponseSchema = external_exports.object({
13196
13291
  logsOffset: external_exports.number(),
13197
13292
  error: external_exports.string().optional()
13198
13293
  });
13199
- var imagesMainContract = c8.router({
13294
+ var imagesMainContract = c7.router({
13200
13295
  /**
13201
13296
  * GET /api/images
13202
13297
  * List all images for authenticated user
@@ -13230,7 +13325,7 @@ var imagesMainContract = c8.router({
13230
13325
  summary: "Create image build"
13231
13326
  }
13232
13327
  });
13233
- var imagesByIdContract = c8.router({
13328
+ var imagesByIdContract = c7.router({
13234
13329
  /**
13235
13330
  * DELETE /api/images/:imageId
13236
13331
  * Delete an image by ID
@@ -13254,7 +13349,7 @@ var imagesByIdContract = c8.router({
13254
13349
  summary: "Delete image"
13255
13350
  }
13256
13351
  });
13257
- var imageBuildsContract = c8.router({
13352
+ var imageBuildsContract = c7.router({
13258
13353
  /**
13259
13354
  * GET /api/images/:imageId/builds/:buildId
13260
13355
  * Query build status with incremental logs
@@ -13281,7 +13376,7 @@ var imageBuildsContract = c8.router({
13281
13376
  });
13282
13377
 
13283
13378
  // ../../packages/core/src/contracts/cron.ts
13284
- var c9 = initContract();
13379
+ var c8 = initContract();
13285
13380
  var cleanupResultSchema = external_exports.object({
13286
13381
  runId: external_exports.string(),
13287
13382
  sandboxId: external_exports.string().nullable(),
@@ -13293,7 +13388,7 @@ var cleanupResponseSchema = external_exports.object({
13293
13388
  errors: external_exports.number(),
13294
13389
  results: external_exports.array(cleanupResultSchema)
13295
13390
  });
13296
- var cronCleanupSandboxesContract = c9.router({
13391
+ var cronCleanupSandboxesContract = c8.router({
13297
13392
  /**
13298
13393
  * GET /api/cron/cleanup-sandboxes
13299
13394
  * Cron job to cleanup sandboxes that have stopped sending heartbeats
@@ -13325,7 +13420,7 @@ var proxyErrorSchema = external_exports.object({
13325
13420
  });
13326
13421
 
13327
13422
  // ../../packages/core/src/contracts/scopes.ts
13328
- var c10 = initContract();
13423
+ var c9 = initContract();
13329
13424
  var scopeTypeSchema = external_exports.enum(["personal", "organization", "system"]);
13330
13425
  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(
13331
13426
  /^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]{1,2}$/,
@@ -13350,7 +13445,7 @@ var updateScopeRequestSchema = external_exports.object({
13350
13445
  slug: scopeSlugSchema,
13351
13446
  force: external_exports.boolean().optional().default(false)
13352
13447
  });
13353
- var scopeContract = c10.router({
13448
+ var scopeContract = c9.router({
13354
13449
  /**
13355
13450
  * GET /api/scope
13356
13451
  * Get current user's scope
@@ -14969,9 +15064,9 @@ var CodexEventParser = class {
14969
15064
  }
14970
15065
  }
14971
15066
  if (itemType === "file_change" && item.changes && item.changes.length > 0) {
14972
- const changes = item.changes.map((c11) => {
14973
- const action = c11.kind === "add" ? "Created" : c11.kind === "modify" ? "Modified" : "Deleted";
14974
- return `${action}: ${c11.path}`;
15067
+ const changes = item.changes.map((c10) => {
15068
+ const action = c10.kind === "add" ? "Created" : c10.kind === "modify" ? "Modified" : "Deleted";
15069
+ return `${action}: ${c10.path}`;
14975
15070
  }).join("\n");
14976
15071
  return {
14977
15072
  type: "text",
@@ -15312,9 +15407,9 @@ var CodexEventRenderer = class {
15312
15407
  return;
15313
15408
  }
15314
15409
  if (itemType === "file_change" && item.changes && item.changes.length > 0) {
15315
- const summary = item.changes.map((c11) => {
15316
- const icon = c11.kind === "add" ? "+" : c11.kind === "delete" ? "-" : "~";
15317
- return `${icon}${c11.path}`;
15410
+ const summary = item.changes.map((c10) => {
15411
+ const icon = c10.kind === "add" ? "+" : c10.kind === "delete" ? "-" : "~";
15412
+ return `${icon}${c10.path}`;
15318
15413
  }).join(", ");
15319
15414
  console.log(chalk4.green("[files]") + ` ${summary}`);
15320
15415
  return;
@@ -16814,7 +16909,7 @@ async function autoPullArtifact(runOutput, artifactDir) {
16814
16909
  }
16815
16910
  var cookCmd = new Command13().name("cook").description("One-click agent preparation and execution from vm0.yaml");
16816
16911
  cookCmd.argument("[prompt]", "Prompt for the agent").action(async (prompt) => {
16817
- const shouldExit = await checkAndUpgrade("4.29.0", prompt);
16912
+ const shouldExit = await checkAndUpgrade("4.29.1", prompt);
16818
16913
  if (shouldExit) {
16819
16914
  process.exit(0);
16820
16915
  }
@@ -18416,7 +18511,7 @@ var setupGithubCommand = new Command24().name("setup-github").description("Initi
18416
18511
 
18417
18512
  // src/index.ts
18418
18513
  var program = new Command25();
18419
- program.name("vm0").description("VM0 CLI - A modern build tool").version("4.29.0");
18514
+ program.name("vm0").description("VM0 CLI - A modern build tool").version("4.29.1");
18420
18515
  program.command("info").description("Display environment information").action(async () => {
18421
18516
  console.log(chalk26.bold("System Information:"));
18422
18517
  console.log(`Node Version: ${process.version}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vm0/cli",
3
- "version": "4.29.0",
3
+ "version": "4.29.1",
4
4
  "description": "CLI application",
5
5
  "repository": {
6
6
  "type": "git",