@vm0/cli 4.21.1 → 4.22.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.
Files changed (2) hide show
  1. package/index.js +44 -139
  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, (c12) => c12 === "-" ? "+" : "/");
2762
+ const base643 = data.replace(/[-_]/g, (c11) => c11 === "-" ? "+" : "/");
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 c12 = inst._zod.bag;
11675
- inst.minDate = c12.minimum ? new Date(c12.minimum) : null;
11676
- inst.maxDate = c12.maximum ? new Date(c12.maximum) : null;
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;
11677
11677
  });
11678
11678
  function date3(params) {
11679
11679
  return _date(ZodDate, params);
@@ -12773,91 +12773,8 @@ var runNetworkLogsContract = c3.router({
12773
12773
  }
12774
12774
  });
12775
12775
 
12776
- // ../../packages/core/src/contracts/sessions.ts
12777
- var c4 = initContract();
12778
- var agentSessionSchema = external_exports.object({
12779
- id: external_exports.string(),
12780
- userId: external_exports.string(),
12781
- agentComposeId: external_exports.string(),
12782
- conversationId: external_exports.string().nullable(),
12783
- artifactName: external_exports.string().nullable(),
12784
- // nullable when session has no artifact
12785
- vars: external_exports.record(external_exports.string(), external_exports.string()).nullable(),
12786
- createdAt: external_exports.string(),
12787
- updatedAt: external_exports.string()
12788
- });
12789
- var conversationSchema = external_exports.object({
12790
- id: external_exports.string(),
12791
- cliAgentType: external_exports.string(),
12792
- cliAgentSessionId: external_exports.string(),
12793
- cliAgentSessionHistory: external_exports.string()
12794
- });
12795
- var agentSessionWithConversationSchema = agentSessionSchema.extend({
12796
- conversation: conversationSchema.nullable()
12797
- });
12798
- var sessionsMainContract = c4.router({
12799
- /**
12800
- * GET /api/agent/sessions
12801
- * List all agent sessions for the authenticated user
12802
- */
12803
- list: {
12804
- method: "GET",
12805
- path: "/api/agent/sessions",
12806
- responses: {
12807
- 200: external_exports.object({
12808
- sessions: external_exports.array(agentSessionSchema)
12809
- }),
12810
- 401: apiErrorSchema
12811
- },
12812
- summary: "List agent sessions"
12813
- }
12814
- });
12815
- var sessionsByIdContract = c4.router({
12816
- /**
12817
- * GET /api/agent/sessions/:id
12818
- * Get a specific agent session with conversation data
12819
- */
12820
- getById: {
12821
- method: "GET",
12822
- path: "/api/agent/sessions/:id",
12823
- pathParams: external_exports.object({
12824
- id: external_exports.string().min(1, "Session ID is required")
12825
- }),
12826
- responses: {
12827
- 200: external_exports.object({
12828
- session: agentSessionWithConversationSchema
12829
- }),
12830
- 400: apiErrorSchema,
12831
- 401: apiErrorSchema,
12832
- 404: apiErrorSchema
12833
- },
12834
- summary: "Get agent session by ID"
12835
- },
12836
- /**
12837
- * DELETE /api/agent/sessions/:id
12838
- * Delete an agent session
12839
- */
12840
- delete: {
12841
- method: "DELETE",
12842
- path: "/api/agent/sessions/:id",
12843
- pathParams: external_exports.object({
12844
- id: external_exports.string().min(1, "Session ID is required")
12845
- }),
12846
- body: external_exports.undefined(),
12847
- responses: {
12848
- 200: external_exports.object({
12849
- deleted: external_exports.literal(true)
12850
- }),
12851
- 400: apiErrorSchema,
12852
- 401: apiErrorSchema,
12853
- 404: apiErrorSchema
12854
- },
12855
- summary: "Delete agent session"
12856
- }
12857
- });
12858
-
12859
12776
  // ../../packages/core/src/contracts/storages.ts
12860
- var c5 = initContract();
12777
+ var c4 = initContract();
12861
12778
  var storageTypeSchema = external_exports.enum(["volume", "artifact"]);
12862
12779
  var uploadStorageResponseSchema = external_exports.object({
12863
12780
  name: external_exports.string(),
@@ -12867,7 +12784,7 @@ var uploadStorageResponseSchema = external_exports.object({
12867
12784
  type: storageTypeSchema,
12868
12785
  deduplicated: external_exports.boolean()
12869
12786
  });
12870
- var storagesContract = c5.router({
12787
+ var storagesContract = c4.router({
12871
12788
  /**
12872
12789
  * POST /api/storages
12873
12790
  * Upload a storage (tar.gz file)
@@ -12883,7 +12800,7 @@ var storagesContract = c5.router({
12883
12800
  method: "POST",
12884
12801
  path: "/api/storages",
12885
12802
  contentType: "multipart/form-data",
12886
- body: c5.type(),
12803
+ body: c4.type(),
12887
12804
  responses: {
12888
12805
  200: uploadStorageResponseSchema,
12889
12806
  400: apiErrorSchema,
@@ -12911,9 +12828,9 @@ var storagesContract = c5.router({
12911
12828
  }),
12912
12829
  responses: {
12913
12830
  // Binary response - actual handling done at route level
12914
- 200: c5.otherResponse({
12831
+ 200: c4.otherResponse({
12915
12832
  contentType: "application/gzip",
12916
- body: c5.type()
12833
+ body: c4.type()
12917
12834
  }),
12918
12835
  400: apiErrorSchema,
12919
12836
  401: apiErrorSchema,
@@ -12925,9 +12842,10 @@ var storagesContract = c5.router({
12925
12842
  });
12926
12843
 
12927
12844
  // ../../packages/core/src/contracts/webhooks.ts
12928
- var c6 = initContract();
12845
+ var c5 = initContract();
12929
12846
  var agentEventSchema = external_exports.object({
12930
- type: external_exports.string()
12847
+ type: external_exports.string(),
12848
+ sequenceNumber: external_exports.number().int().positive()
12931
12849
  }).passthrough();
12932
12850
  var artifactSnapshotSchema = external_exports.object({
12933
12851
  artifactName: external_exports.string(),
@@ -12936,7 +12854,7 @@ var artifactSnapshotSchema = external_exports.object({
12936
12854
  var volumeVersionsSnapshotSchema = external_exports.object({
12937
12855
  versions: external_exports.record(external_exports.string(), external_exports.string())
12938
12856
  });
12939
- var webhookEventsContract = c6.router({
12857
+ var webhookEventsContract = c5.router({
12940
12858
  /**
12941
12859
  * POST /api/webhooks/agent/events
12942
12860
  * Receive agent events from E2B sandbox
@@ -12962,7 +12880,7 @@ var webhookEventsContract = c6.router({
12962
12880
  summary: "Receive agent events from sandbox"
12963
12881
  }
12964
12882
  });
12965
- var webhookCompleteContract = c6.router({
12883
+ var webhookCompleteContract = c5.router({
12966
12884
  /**
12967
12885
  * POST /api/webhooks/agent/complete
12968
12886
  * Handle agent run completion (success or failure)
@@ -12988,7 +12906,7 @@ var webhookCompleteContract = c6.router({
12988
12906
  summary: "Handle agent run completion"
12989
12907
  }
12990
12908
  });
12991
- var webhookCheckpointsContract = c6.router({
12909
+ var webhookCheckpointsContract = c5.router({
12992
12910
  /**
12993
12911
  * POST /api/webhooks/agent/checkpoints
12994
12912
  * Create checkpoint for completed agent run
@@ -13020,7 +12938,7 @@ var webhookCheckpointsContract = c6.router({
13020
12938
  summary: "Create checkpoint for agent run"
13021
12939
  }
13022
12940
  });
13023
- var webhookHeartbeatContract = c6.router({
12941
+ var webhookHeartbeatContract = c5.router({
13024
12942
  /**
13025
12943
  * POST /api/webhooks/agent/heartbeat
13026
12944
  * Receive heartbeat signals from E2B sandbox
@@ -13043,7 +12961,7 @@ var webhookHeartbeatContract = c6.router({
13043
12961
  summary: "Receive heartbeat from sandbox"
13044
12962
  }
13045
12963
  });
13046
- var webhookStoragesContract = c6.router({
12964
+ var webhookStoragesContract = c5.router({
13047
12965
  /**
13048
12966
  * POST /api/webhooks/agent/storages
13049
12967
  * Create a new version of a storage from sandbox
@@ -13058,7 +12976,7 @@ var webhookStoragesContract = c6.router({
13058
12976
  method: "POST",
13059
12977
  path: "/api/webhooks/agent/storages",
13060
12978
  contentType: "multipart/form-data",
13061
- body: c6.type(),
12979
+ body: c5.type(),
13062
12980
  responses: {
13063
12981
  200: external_exports.object({
13064
12982
  versionId: external_exports.string(),
@@ -13074,7 +12992,7 @@ var webhookStoragesContract = c6.router({
13074
12992
  summary: "Upload storage version from sandbox"
13075
12993
  }
13076
12994
  });
13077
- var webhookStoragesIncrementalContract = c6.router({
12995
+ var webhookStoragesIncrementalContract = c5.router({
13078
12996
  /**
13079
12997
  * POST /api/webhooks/agent/storages/incremental
13080
12998
  * Create a new version using incremental upload
@@ -13091,7 +13009,7 @@ var webhookStoragesIncrementalContract = c6.router({
13091
13009
  method: "POST",
13092
13010
  path: "/api/webhooks/agent/storages/incremental",
13093
13011
  contentType: "multipart/form-data",
13094
- body: c6.type(),
13012
+ body: c5.type(),
13095
13013
  responses: {
13096
13014
  200: external_exports.object({
13097
13015
  versionId: external_exports.string(),
@@ -13131,7 +13049,7 @@ var networkLogSchema = external_exports.object({
13131
13049
  request_size: external_exports.number(),
13132
13050
  response_size: external_exports.number()
13133
13051
  });
13134
- var webhookTelemetryContract = c6.router({
13052
+ var webhookTelemetryContract = c5.router({
13135
13053
  /**
13136
13054
  * POST /api/webhooks/agent/telemetry
13137
13055
  * Receive telemetry data (system log, metrics, and network logs) from sandbox
@@ -13160,12 +13078,12 @@ var webhookTelemetryContract = c6.router({
13160
13078
  });
13161
13079
 
13162
13080
  // ../../packages/core/src/contracts/cli-auth.ts
13163
- var c7 = initContract();
13081
+ var c6 = initContract();
13164
13082
  var oauthErrorSchema = external_exports.object({
13165
13083
  error: external_exports.string(),
13166
13084
  error_description: external_exports.string()
13167
13085
  });
13168
- var cliAuthDeviceContract = c7.router({
13086
+ var cliAuthDeviceContract = c6.router({
13169
13087
  /**
13170
13088
  * POST /api/cli/auth/device
13171
13089
  * Initiate device authorization flow
@@ -13187,7 +13105,7 @@ var cliAuthDeviceContract = c7.router({
13187
13105
  summary: "Initiate device authorization flow"
13188
13106
  }
13189
13107
  });
13190
- var cliAuthTokenContract = c7.router({
13108
+ var cliAuthTokenContract = c6.router({
13191
13109
  /**
13192
13110
  * POST /api/cli/auth/token
13193
13111
  * Exchange device code for access token
@@ -13217,8 +13135,8 @@ var cliAuthTokenContract = c7.router({
13217
13135
  });
13218
13136
 
13219
13137
  // ../../packages/core/src/contracts/auth.ts
13220
- var c8 = initContract();
13221
- var authContract = c8.router({
13138
+ var c7 = initContract();
13139
+ var authContract = c7.router({
13222
13140
  /**
13223
13141
  * GET /api/auth/me
13224
13142
  * Get current user information
@@ -13240,7 +13158,7 @@ var authContract = c8.router({
13240
13158
  });
13241
13159
 
13242
13160
  // ../../packages/core/src/contracts/images.ts
13243
- var c9 = initContract();
13161
+ var c8 = initContract();
13244
13162
  var buildStatusSchema = external_exports.enum(["building", "ready", "error"]);
13245
13163
  var imageInfoSchema = external_exports.object({
13246
13164
  id: external_exports.string(),
@@ -13276,7 +13194,7 @@ var buildStatusResponseSchema = external_exports.object({
13276
13194
  logsOffset: external_exports.number(),
13277
13195
  error: external_exports.string().optional()
13278
13196
  });
13279
- var imagesMainContract = c9.router({
13197
+ var imagesMainContract = c8.router({
13280
13198
  /**
13281
13199
  * GET /api/images
13282
13200
  * List all images for authenticated user
@@ -13310,7 +13228,7 @@ var imagesMainContract = c9.router({
13310
13228
  summary: "Create image build"
13311
13229
  }
13312
13230
  });
13313
- var imagesByIdContract = c9.router({
13231
+ var imagesByIdContract = c8.router({
13314
13232
  /**
13315
13233
  * DELETE /api/images/:imageId
13316
13234
  * Delete an image by ID
@@ -13334,7 +13252,7 @@ var imagesByIdContract = c9.router({
13334
13252
  summary: "Delete image"
13335
13253
  }
13336
13254
  });
13337
- var imageBuildsContract = c9.router({
13255
+ var imageBuildsContract = c8.router({
13338
13256
  /**
13339
13257
  * GET /api/images/:imageId/builds/:buildId
13340
13258
  * Query build status with incremental logs
@@ -13361,7 +13279,7 @@ var imageBuildsContract = c9.router({
13361
13279
  });
13362
13280
 
13363
13281
  // ../../packages/core/src/contracts/cron.ts
13364
- var c10 = initContract();
13282
+ var c9 = initContract();
13365
13283
  var cleanupResultSchema = external_exports.object({
13366
13284
  runId: external_exports.string(),
13367
13285
  sandboxId: external_exports.string().nullable(),
@@ -13373,7 +13291,7 @@ var cleanupResponseSchema = external_exports.object({
13373
13291
  errors: external_exports.number(),
13374
13292
  results: external_exports.array(cleanupResultSchema)
13375
13293
  });
13376
- var cronCleanupSandboxesContract = c10.router({
13294
+ var cronCleanupSandboxesContract = c9.router({
13377
13295
  /**
13378
13296
  * GET /api/cron/cleanup-sandboxes
13379
13297
  * Cron job to cleanup sandboxes that have stopped sending heartbeats
@@ -13405,7 +13323,7 @@ var proxyErrorSchema = external_exports.object({
13405
13323
  });
13406
13324
 
13407
13325
  // ../../packages/core/src/contracts/scopes.ts
13408
- var c11 = initContract();
13326
+ var c10 = initContract();
13409
13327
  var scopeTypeSchema = external_exports.enum(["personal", "organization", "system"]);
13410
13328
  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(
13411
13329
  /^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]{1,2}$/,
@@ -13430,7 +13348,7 @@ var updateScopeRequestSchema = external_exports.object({
13430
13348
  slug: scopeSlugSchema,
13431
13349
  force: external_exports.boolean().optional().default(false)
13432
13350
  });
13433
- var scopeContract = c11.router({
13351
+ var scopeContract = c10.router({
13434
13352
  /**
13435
13353
  * GET /api/scope
13436
13354
  * Get current user's scope
@@ -13704,19 +13622,6 @@ var ApiClient = class {
13704
13622
  }
13705
13623
  return await response.json();
13706
13624
  }
13707
- async getAgentSession(id) {
13708
- const baseUrl = await this.getBaseUrl();
13709
- const headers = await this.getHeaders();
13710
- const response = await fetch(`${baseUrl}/api/agent/sessions/${id}`, {
13711
- method: "GET",
13712
- headers
13713
- });
13714
- if (!response.ok) {
13715
- const error43 = await response.json();
13716
- throw new Error(error43.error?.message || "Failed to get agent session");
13717
- }
13718
- return await response.json();
13719
- }
13720
13625
  async getTelemetry(runId) {
13721
13626
  const baseUrl = await this.getBaseUrl();
13722
13627
  const headers = await this.getHeaders();
@@ -14983,9 +14888,9 @@ var CodexEventParser = class {
14983
14888
  }
14984
14889
  }
14985
14890
  if (itemType === "file_change" && item.changes && item.changes.length > 0) {
14986
- const changes = item.changes.map((c12) => {
14987
- const action = c12.kind === "add" ? "Created" : c12.kind === "modify" ? "Modified" : "Deleted";
14988
- return `${action}: ${c12.path}`;
14891
+ const changes = item.changes.map((c11) => {
14892
+ const action = c11.kind === "add" ? "Created" : c11.kind === "modify" ? "Modified" : "Deleted";
14893
+ return `${action}: ${c11.path}`;
14989
14894
  }).join("\n");
14990
14895
  return {
14991
14896
  type: "text",
@@ -15332,9 +15237,9 @@ var CodexEventRenderer = class {
15332
15237
  return;
15333
15238
  }
15334
15239
  if (itemType === "file_change" && item.changes && item.changes.length > 0) {
15335
- const summary = item.changes.map((c12) => {
15336
- const icon = c12.kind === "add" ? "+" : c12.kind === "delete" ? "-" : "~";
15337
- return `${icon}${c12.path}`;
15240
+ const summary = item.changes.map((c11) => {
15241
+ const icon = c11.kind === "add" ? "+" : c11.kind === "delete" ? "-" : "~";
15242
+ return `${icon}${c11.path}`;
15338
15243
  }).join(", ");
15339
15244
  console.log(chalk4.green("[files]") + ` ${summary}`);
15340
15245
  return;
@@ -15393,7 +15298,7 @@ function loadValues(cliValues, configNames) {
15393
15298
  const envFilePath = path5.resolve(process.cwd(), ".env");
15394
15299
  let dotenvValues = {};
15395
15300
  if (fs5.existsSync(envFilePath)) {
15396
- const dotenvResult = dotenvConfig({ path: envFilePath });
15301
+ const dotenvResult = dotenvConfig({ path: envFilePath, quiet: true });
15397
15302
  if (dotenvResult.parsed) {
15398
15303
  dotenvValues = Object.fromEntries(
15399
15304
  Object.entries(dotenvResult.parsed).filter(
@@ -16695,7 +16600,7 @@ function extractRequiredVarNames(config2) {
16695
16600
  function checkMissingVariables(varNames, envFilePath) {
16696
16601
  let dotenvValues = {};
16697
16602
  if (existsSync6(envFilePath)) {
16698
- const result = dotenvConfig2({ path: envFilePath });
16603
+ const result = dotenvConfig2({ path: envFilePath, quiet: true });
16699
16604
  if (result.parsed) {
16700
16605
  dotenvValues = result.parsed;
16701
16606
  }
@@ -16724,7 +16629,7 @@ async function generateEnvPlaceholders(missingVars, envFilePath) {
16724
16629
  }
16725
16630
  }
16726
16631
  var cookCommand = new Command13().name("cook").description("One-click agent preparation and execution from vm0.yaml").argument("[prompt]", "Prompt for the agent").action(async (prompt) => {
16727
- const shouldExit = await checkAndUpgrade("4.21.1", prompt);
16632
+ const shouldExit = await checkAndUpgrade("4.22.0", prompt);
16728
16633
  if (shouldExit) {
16729
16634
  process.exit(0);
16730
16635
  }
@@ -17662,7 +17567,7 @@ var scopeCommand = new Command22().name("scope").description("Manage your scope
17662
17567
 
17663
17568
  // src/index.ts
17664
17569
  var program = new Command23();
17665
- program.name("vm0").description("VM0 CLI - A modern build tool").version("4.21.1");
17570
+ program.name("vm0").description("VM0 CLI - A modern build tool").version("4.22.0");
17666
17571
  program.command("info").description("Display environment information").action(async () => {
17667
17572
  console.log(chalk24.cyan("System Information:"));
17668
17573
  console.log(`Node Version: ${process.version}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vm0/cli",
3
- "version": "4.21.1",
3
+ "version": "4.22.0",
4
4
  "description": "CLI application",
5
5
  "repository": {
6
6
  "type": "git",