@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.
- package/index.js +227 -132
- 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, (
|
|
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
|
|
11675
|
-
inst.minDate =
|
|
11676
|
-
inst.maxDate =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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:
|
|
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:
|
|
12754
|
+
200: c3.otherResponse({
|
|
12834
12755
|
contentType: "application/gzip",
|
|
12835
|
-
body:
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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:
|
|
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 =
|
|
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:
|
|
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 =
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
13141
|
-
var authContract =
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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 =
|
|
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((
|
|
14973
|
-
const action =
|
|
14974
|
-
return `${action}: ${
|
|
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((
|
|
15316
|
-
const icon =
|
|
15317
|
-
return `${icon}${
|
|
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.
|
|
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.
|
|
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}`);
|