@vm0/cli 4.29.0 → 4.30.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.
- package/index.js +279 -157
- 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
|
|
@@ -12695,7 +12616,8 @@ var runSystemLogContract = c3.router({
|
|
|
12695
12616
|
}),
|
|
12696
12617
|
query: external_exports.object({
|
|
12697
12618
|
since: external_exports.coerce.number().optional(),
|
|
12698
|
-
limit: external_exports.coerce.number().min(1).max(100).default(5)
|
|
12619
|
+
limit: external_exports.coerce.number().min(1).max(100).default(5),
|
|
12620
|
+
order: external_exports.enum(["asc", "desc"]).default("desc")
|
|
12699
12621
|
}),
|
|
12700
12622
|
responses: {
|
|
12701
12623
|
200: systemLogResponseSchema,
|
|
@@ -12705,7 +12627,7 @@ var runSystemLogContract = c3.router({
|
|
|
12705
12627
|
summary: "Get system log with pagination"
|
|
12706
12628
|
}
|
|
12707
12629
|
});
|
|
12708
|
-
var runMetricsContract =
|
|
12630
|
+
var runMetricsContract = c2.router({
|
|
12709
12631
|
/**
|
|
12710
12632
|
* GET /api/agent/runs/:id/telemetry/metrics
|
|
12711
12633
|
* Get metrics with pagination
|
|
@@ -12718,7 +12640,8 @@ var runMetricsContract = c3.router({
|
|
|
12718
12640
|
}),
|
|
12719
12641
|
query: external_exports.object({
|
|
12720
12642
|
since: external_exports.coerce.number().optional(),
|
|
12721
|
-
limit: external_exports.coerce.number().min(1).max(100).default(5)
|
|
12643
|
+
limit: external_exports.coerce.number().min(1).max(100).default(5),
|
|
12644
|
+
order: external_exports.enum(["asc", "desc"]).default("desc")
|
|
12722
12645
|
}),
|
|
12723
12646
|
responses: {
|
|
12724
12647
|
200: metricsResponseSchema,
|
|
@@ -12728,7 +12651,7 @@ var runMetricsContract = c3.router({
|
|
|
12728
12651
|
summary: "Get metrics with pagination"
|
|
12729
12652
|
}
|
|
12730
12653
|
});
|
|
12731
|
-
var runAgentEventsContract =
|
|
12654
|
+
var runAgentEventsContract = c2.router({
|
|
12732
12655
|
/**
|
|
12733
12656
|
* GET /api/agent/runs/:id/telemetry/agent
|
|
12734
12657
|
* Get agent events with pagination (for vm0 logs default)
|
|
@@ -12741,7 +12664,8 @@ var runAgentEventsContract = c3.router({
|
|
|
12741
12664
|
}),
|
|
12742
12665
|
query: external_exports.object({
|
|
12743
12666
|
since: external_exports.coerce.number().optional(),
|
|
12744
|
-
limit: external_exports.coerce.number().min(1).max(100).default(5)
|
|
12667
|
+
limit: external_exports.coerce.number().min(1).max(100).default(5),
|
|
12668
|
+
order: external_exports.enum(["asc", "desc"]).default("desc")
|
|
12745
12669
|
}),
|
|
12746
12670
|
responses: {
|
|
12747
12671
|
200: agentEventsResponseSchema,
|
|
@@ -12751,7 +12675,7 @@ var runAgentEventsContract = c3.router({
|
|
|
12751
12675
|
summary: "Get agent events with pagination"
|
|
12752
12676
|
}
|
|
12753
12677
|
});
|
|
12754
|
-
var runNetworkLogsContract =
|
|
12678
|
+
var runNetworkLogsContract = c2.router({
|
|
12755
12679
|
/**
|
|
12756
12680
|
* GET /api/agent/runs/:id/telemetry/network
|
|
12757
12681
|
* Get network logs with pagination (for vm0 logs --network)
|
|
@@ -12764,7 +12688,8 @@ var runNetworkLogsContract = c3.router({
|
|
|
12764
12688
|
}),
|
|
12765
12689
|
query: external_exports.object({
|
|
12766
12690
|
since: external_exports.coerce.number().optional(),
|
|
12767
|
-
limit: external_exports.coerce.number().min(1).max(100).default(5)
|
|
12691
|
+
limit: external_exports.coerce.number().min(1).max(100).default(5),
|
|
12692
|
+
order: external_exports.enum(["asc", "desc"]).default("desc")
|
|
12768
12693
|
}),
|
|
12769
12694
|
responses: {
|
|
12770
12695
|
200: networkLogsResponseSchema,
|
|
@@ -12776,7 +12701,7 @@ var runNetworkLogsContract = c3.router({
|
|
|
12776
12701
|
});
|
|
12777
12702
|
|
|
12778
12703
|
// ../../packages/core/src/contracts/storages.ts
|
|
12779
|
-
var
|
|
12704
|
+
var c3 = initContract();
|
|
12780
12705
|
var storageTypeSchema = external_exports.enum(["volume", "artifact"]);
|
|
12781
12706
|
var uploadStorageResponseSchema = external_exports.object({
|
|
12782
12707
|
name: external_exports.string(),
|
|
@@ -12786,7 +12711,7 @@ var uploadStorageResponseSchema = external_exports.object({
|
|
|
12786
12711
|
type: storageTypeSchema,
|
|
12787
12712
|
deduplicated: external_exports.boolean()
|
|
12788
12713
|
});
|
|
12789
|
-
var storagesContract =
|
|
12714
|
+
var storagesContract = c3.router({
|
|
12790
12715
|
/**
|
|
12791
12716
|
* POST /api/storages
|
|
12792
12717
|
* Upload a storage (tar.gz file)
|
|
@@ -12802,7 +12727,7 @@ var storagesContract = c4.router({
|
|
|
12802
12727
|
method: "POST",
|
|
12803
12728
|
path: "/api/storages",
|
|
12804
12729
|
contentType: "multipart/form-data",
|
|
12805
|
-
body:
|
|
12730
|
+
body: c3.type(),
|
|
12806
12731
|
responses: {
|
|
12807
12732
|
200: uploadStorageResponseSchema,
|
|
12808
12733
|
400: apiErrorSchema,
|
|
@@ -12830,9 +12755,9 @@ var storagesContract = c4.router({
|
|
|
12830
12755
|
}),
|
|
12831
12756
|
responses: {
|
|
12832
12757
|
// Binary response - actual handling done at route level
|
|
12833
|
-
200:
|
|
12758
|
+
200: c3.otherResponse({
|
|
12834
12759
|
contentType: "application/gzip",
|
|
12835
|
-
body:
|
|
12760
|
+
body: c3.type()
|
|
12836
12761
|
}),
|
|
12837
12762
|
400: apiErrorSchema,
|
|
12838
12763
|
401: apiErrorSchema,
|
|
@@ -12842,9 +12767,120 @@ var storagesContract = c4.router({
|
|
|
12842
12767
|
summary: "Download storage archive"
|
|
12843
12768
|
}
|
|
12844
12769
|
});
|
|
12770
|
+
var fileEntryWithHashSchema = external_exports.object({
|
|
12771
|
+
path: external_exports.string().min(1, "File path is required"),
|
|
12772
|
+
hash: external_exports.string().length(64, "Hash must be SHA-256 (64 hex chars)"),
|
|
12773
|
+
size: external_exports.number().int().min(0, "Size must be non-negative")
|
|
12774
|
+
});
|
|
12775
|
+
var storageChangesSchema = external_exports.object({
|
|
12776
|
+
added: external_exports.array(external_exports.string()),
|
|
12777
|
+
modified: external_exports.array(external_exports.string()),
|
|
12778
|
+
deleted: external_exports.array(external_exports.string())
|
|
12779
|
+
});
|
|
12780
|
+
var presignedUploadSchema = external_exports.object({
|
|
12781
|
+
key: external_exports.string(),
|
|
12782
|
+
presignedUrl: external_exports.string().url()
|
|
12783
|
+
});
|
|
12784
|
+
var storagesPrepareContract = c3.router({
|
|
12785
|
+
prepare: {
|
|
12786
|
+
method: "POST",
|
|
12787
|
+
path: "/api/storages/prepare",
|
|
12788
|
+
body: external_exports.object({
|
|
12789
|
+
storageName: external_exports.string().min(1, "Storage name is required"),
|
|
12790
|
+
storageType: storageTypeSchema,
|
|
12791
|
+
files: external_exports.array(fileEntryWithHashSchema),
|
|
12792
|
+
force: external_exports.boolean().optional(),
|
|
12793
|
+
runId: external_exports.string().optional(),
|
|
12794
|
+
// For sandbox auth
|
|
12795
|
+
baseVersion: external_exports.string().optional(),
|
|
12796
|
+
// For incremental uploads
|
|
12797
|
+
changes: storageChangesSchema.optional()
|
|
12798
|
+
}),
|
|
12799
|
+
responses: {
|
|
12800
|
+
200: external_exports.object({
|
|
12801
|
+
versionId: external_exports.string(),
|
|
12802
|
+
existing: external_exports.boolean(),
|
|
12803
|
+
uploads: external_exports.object({
|
|
12804
|
+
archive: presignedUploadSchema,
|
|
12805
|
+
manifest: presignedUploadSchema
|
|
12806
|
+
}).optional()
|
|
12807
|
+
}),
|
|
12808
|
+
400: apiErrorSchema,
|
|
12809
|
+
401: apiErrorSchema,
|
|
12810
|
+
404: apiErrorSchema,
|
|
12811
|
+
500: apiErrorSchema
|
|
12812
|
+
},
|
|
12813
|
+
summary: "Prepare for direct S3 upload"
|
|
12814
|
+
}
|
|
12815
|
+
});
|
|
12816
|
+
var storagesCommitContract = c3.router({
|
|
12817
|
+
commit: {
|
|
12818
|
+
method: "POST",
|
|
12819
|
+
path: "/api/storages/commit",
|
|
12820
|
+
body: external_exports.object({
|
|
12821
|
+
storageName: external_exports.string().min(1, "Storage name is required"),
|
|
12822
|
+
storageType: storageTypeSchema,
|
|
12823
|
+
versionId: external_exports.string().min(1, "Version ID is required"),
|
|
12824
|
+
files: external_exports.array(fileEntryWithHashSchema),
|
|
12825
|
+
runId: external_exports.string().optional(),
|
|
12826
|
+
message: external_exports.string().optional()
|
|
12827
|
+
}),
|
|
12828
|
+
responses: {
|
|
12829
|
+
200: external_exports.object({
|
|
12830
|
+
success: external_exports.literal(true),
|
|
12831
|
+
versionId: external_exports.string(),
|
|
12832
|
+
storageName: external_exports.string(),
|
|
12833
|
+
size: external_exports.number(),
|
|
12834
|
+
fileCount: external_exports.number(),
|
|
12835
|
+
deduplicated: external_exports.boolean().optional()
|
|
12836
|
+
}),
|
|
12837
|
+
400: apiErrorSchema,
|
|
12838
|
+
401: apiErrorSchema,
|
|
12839
|
+
404: apiErrorSchema,
|
|
12840
|
+
409: apiErrorSchema,
|
|
12841
|
+
// S3 files missing
|
|
12842
|
+
500: apiErrorSchema
|
|
12843
|
+
},
|
|
12844
|
+
summary: "Commit uploaded storage"
|
|
12845
|
+
}
|
|
12846
|
+
});
|
|
12847
|
+
var storagesDownloadContract = c3.router({
|
|
12848
|
+
download: {
|
|
12849
|
+
method: "GET",
|
|
12850
|
+
path: "/api/storages/download",
|
|
12851
|
+
query: external_exports.object({
|
|
12852
|
+
name: external_exports.string().min(1, "Storage name is required"),
|
|
12853
|
+
type: storageTypeSchema,
|
|
12854
|
+
version: external_exports.string().optional()
|
|
12855
|
+
}),
|
|
12856
|
+
responses: {
|
|
12857
|
+
// Normal response with presigned URL
|
|
12858
|
+
200: external_exports.union([
|
|
12859
|
+
external_exports.object({
|
|
12860
|
+
url: external_exports.string().url(),
|
|
12861
|
+
versionId: external_exports.string(),
|
|
12862
|
+
fileCount: external_exports.number(),
|
|
12863
|
+
size: external_exports.number()
|
|
12864
|
+
}),
|
|
12865
|
+
// Empty artifact response
|
|
12866
|
+
external_exports.object({
|
|
12867
|
+
empty: external_exports.literal(true),
|
|
12868
|
+
versionId: external_exports.string(),
|
|
12869
|
+
fileCount: external_exports.literal(0),
|
|
12870
|
+
size: external_exports.literal(0)
|
|
12871
|
+
})
|
|
12872
|
+
]),
|
|
12873
|
+
400: apiErrorSchema,
|
|
12874
|
+
401: apiErrorSchema,
|
|
12875
|
+
404: apiErrorSchema,
|
|
12876
|
+
500: apiErrorSchema
|
|
12877
|
+
},
|
|
12878
|
+
summary: "Get presigned download URL"
|
|
12879
|
+
}
|
|
12880
|
+
});
|
|
12845
12881
|
|
|
12846
12882
|
// ../../packages/core/src/contracts/webhooks.ts
|
|
12847
|
-
var
|
|
12883
|
+
var c4 = initContract();
|
|
12848
12884
|
var agentEventSchema = external_exports.object({
|
|
12849
12885
|
type: external_exports.string(),
|
|
12850
12886
|
sequenceNumber: external_exports.number().int().positive()
|
|
@@ -12856,7 +12892,7 @@ var artifactSnapshotSchema = external_exports.object({
|
|
|
12856
12892
|
var volumeVersionsSnapshotSchema = external_exports.object({
|
|
12857
12893
|
versions: external_exports.record(external_exports.string(), external_exports.string())
|
|
12858
12894
|
});
|
|
12859
|
-
var webhookEventsContract =
|
|
12895
|
+
var webhookEventsContract = c4.router({
|
|
12860
12896
|
/**
|
|
12861
12897
|
* POST /api/webhooks/agent/events
|
|
12862
12898
|
* Receive agent events from E2B sandbox
|
|
@@ -12882,7 +12918,7 @@ var webhookEventsContract = c5.router({
|
|
|
12882
12918
|
summary: "Receive agent events from sandbox"
|
|
12883
12919
|
}
|
|
12884
12920
|
});
|
|
12885
|
-
var webhookCompleteContract =
|
|
12921
|
+
var webhookCompleteContract = c4.router({
|
|
12886
12922
|
/**
|
|
12887
12923
|
* POST /api/webhooks/agent/complete
|
|
12888
12924
|
* Handle agent run completion (success or failure)
|
|
@@ -12908,7 +12944,7 @@ var webhookCompleteContract = c5.router({
|
|
|
12908
12944
|
summary: "Handle agent run completion"
|
|
12909
12945
|
}
|
|
12910
12946
|
});
|
|
12911
|
-
var webhookCheckpointsContract =
|
|
12947
|
+
var webhookCheckpointsContract = c4.router({
|
|
12912
12948
|
/**
|
|
12913
12949
|
* POST /api/webhooks/agent/checkpoints
|
|
12914
12950
|
* Create checkpoint for completed agent run
|
|
@@ -12940,7 +12976,7 @@ var webhookCheckpointsContract = c5.router({
|
|
|
12940
12976
|
summary: "Create checkpoint for agent run"
|
|
12941
12977
|
}
|
|
12942
12978
|
});
|
|
12943
|
-
var webhookHeartbeatContract =
|
|
12979
|
+
var webhookHeartbeatContract = c4.router({
|
|
12944
12980
|
/**
|
|
12945
12981
|
* POST /api/webhooks/agent/heartbeat
|
|
12946
12982
|
* Receive heartbeat signals from E2B sandbox
|
|
@@ -12963,7 +12999,7 @@ var webhookHeartbeatContract = c5.router({
|
|
|
12963
12999
|
summary: "Receive heartbeat from sandbox"
|
|
12964
13000
|
}
|
|
12965
13001
|
});
|
|
12966
|
-
var webhookStoragesContract =
|
|
13002
|
+
var webhookStoragesContract = c4.router({
|
|
12967
13003
|
/**
|
|
12968
13004
|
* POST /api/webhooks/agent/storages
|
|
12969
13005
|
* Create a new version of a storage from sandbox
|
|
@@ -12978,7 +13014,7 @@ var webhookStoragesContract = c5.router({
|
|
|
12978
13014
|
method: "POST",
|
|
12979
13015
|
path: "/api/webhooks/agent/storages",
|
|
12980
13016
|
contentType: "multipart/form-data",
|
|
12981
|
-
body:
|
|
13017
|
+
body: c4.type(),
|
|
12982
13018
|
responses: {
|
|
12983
13019
|
200: external_exports.object({
|
|
12984
13020
|
versionId: external_exports.string(),
|
|
@@ -12994,7 +13030,7 @@ var webhookStoragesContract = c5.router({
|
|
|
12994
13030
|
summary: "Upload storage version from sandbox"
|
|
12995
13031
|
}
|
|
12996
13032
|
});
|
|
12997
|
-
var webhookStoragesIncrementalContract =
|
|
13033
|
+
var webhookStoragesIncrementalContract = c4.router({
|
|
12998
13034
|
/**
|
|
12999
13035
|
* POST /api/webhooks/agent/storages/incremental
|
|
13000
13036
|
* Create a new version using incremental upload
|
|
@@ -13011,7 +13047,7 @@ var webhookStoragesIncrementalContract = c5.router({
|
|
|
13011
13047
|
method: "POST",
|
|
13012
13048
|
path: "/api/webhooks/agent/storages/incremental",
|
|
13013
13049
|
contentType: "multipart/form-data",
|
|
13014
|
-
body:
|
|
13050
|
+
body: c4.type(),
|
|
13015
13051
|
responses: {
|
|
13016
13052
|
200: external_exports.object({
|
|
13017
13053
|
versionId: external_exports.string(),
|
|
@@ -13051,7 +13087,7 @@ var networkLogSchema = external_exports.object({
|
|
|
13051
13087
|
request_size: external_exports.number(),
|
|
13052
13088
|
response_size: external_exports.number()
|
|
13053
13089
|
});
|
|
13054
|
-
var webhookTelemetryContract =
|
|
13090
|
+
var webhookTelemetryContract = c4.router({
|
|
13055
13091
|
/**
|
|
13056
13092
|
* POST /api/webhooks/agent/telemetry
|
|
13057
13093
|
* Receive telemetry data (system log, metrics, and network logs) from sandbox
|
|
@@ -13078,14 +13114,77 @@ var webhookTelemetryContract = c5.router({
|
|
|
13078
13114
|
summary: "Receive telemetry data from sandbox"
|
|
13079
13115
|
}
|
|
13080
13116
|
});
|
|
13117
|
+
var webhookStoragesPrepareContract = c4.router({
|
|
13118
|
+
prepare: {
|
|
13119
|
+
method: "POST",
|
|
13120
|
+
path: "/api/webhooks/agent/storages/prepare",
|
|
13121
|
+
body: external_exports.object({
|
|
13122
|
+
runId: external_exports.string().min(1, "runId is required"),
|
|
13123
|
+
// Required for webhook auth
|
|
13124
|
+
storageName: external_exports.string().min(1, "Storage name is required"),
|
|
13125
|
+
storageType: storageTypeSchema,
|
|
13126
|
+
files: external_exports.array(fileEntryWithHashSchema),
|
|
13127
|
+
force: external_exports.boolean().optional(),
|
|
13128
|
+
baseVersion: external_exports.string().optional(),
|
|
13129
|
+
changes: storageChangesSchema.optional()
|
|
13130
|
+
}),
|
|
13131
|
+
responses: {
|
|
13132
|
+
200: external_exports.object({
|
|
13133
|
+
versionId: external_exports.string(),
|
|
13134
|
+
existing: external_exports.boolean(),
|
|
13135
|
+
uploads: external_exports.object({
|
|
13136
|
+
archive: presignedUploadSchema,
|
|
13137
|
+
manifest: presignedUploadSchema
|
|
13138
|
+
}).optional()
|
|
13139
|
+
}),
|
|
13140
|
+
400: apiErrorSchema,
|
|
13141
|
+
401: apiErrorSchema,
|
|
13142
|
+
404: apiErrorSchema,
|
|
13143
|
+
500: apiErrorSchema
|
|
13144
|
+
},
|
|
13145
|
+
summary: "Prepare for direct S3 upload from sandbox"
|
|
13146
|
+
}
|
|
13147
|
+
});
|
|
13148
|
+
var webhookStoragesCommitContract = c4.router({
|
|
13149
|
+
commit: {
|
|
13150
|
+
method: "POST",
|
|
13151
|
+
path: "/api/webhooks/agent/storages/commit",
|
|
13152
|
+
body: external_exports.object({
|
|
13153
|
+
runId: external_exports.string().min(1, "runId is required"),
|
|
13154
|
+
// Required for webhook auth
|
|
13155
|
+
storageName: external_exports.string().min(1, "Storage name is required"),
|
|
13156
|
+
storageType: storageTypeSchema,
|
|
13157
|
+
versionId: external_exports.string().min(1, "Version ID is required"),
|
|
13158
|
+
files: external_exports.array(fileEntryWithHashSchema),
|
|
13159
|
+
message: external_exports.string().optional()
|
|
13160
|
+
}),
|
|
13161
|
+
responses: {
|
|
13162
|
+
200: external_exports.object({
|
|
13163
|
+
success: external_exports.literal(true),
|
|
13164
|
+
versionId: external_exports.string(),
|
|
13165
|
+
storageName: external_exports.string(),
|
|
13166
|
+
size: external_exports.number(),
|
|
13167
|
+
fileCount: external_exports.number(),
|
|
13168
|
+
deduplicated: external_exports.boolean().optional()
|
|
13169
|
+
}),
|
|
13170
|
+
400: apiErrorSchema,
|
|
13171
|
+
401: apiErrorSchema,
|
|
13172
|
+
404: apiErrorSchema,
|
|
13173
|
+
409: apiErrorSchema,
|
|
13174
|
+
// S3 files missing
|
|
13175
|
+
500: apiErrorSchema
|
|
13176
|
+
},
|
|
13177
|
+
summary: "Commit uploaded storage from sandbox"
|
|
13178
|
+
}
|
|
13179
|
+
});
|
|
13081
13180
|
|
|
13082
13181
|
// ../../packages/core/src/contracts/cli-auth.ts
|
|
13083
|
-
var
|
|
13182
|
+
var c5 = initContract();
|
|
13084
13183
|
var oauthErrorSchema = external_exports.object({
|
|
13085
13184
|
error: external_exports.string(),
|
|
13086
13185
|
error_description: external_exports.string()
|
|
13087
13186
|
});
|
|
13088
|
-
var cliAuthDeviceContract =
|
|
13187
|
+
var cliAuthDeviceContract = c5.router({
|
|
13089
13188
|
/**
|
|
13090
13189
|
* POST /api/cli/auth/device
|
|
13091
13190
|
* Initiate device authorization flow
|
|
@@ -13107,7 +13206,7 @@ var cliAuthDeviceContract = c6.router({
|
|
|
13107
13206
|
summary: "Initiate device authorization flow"
|
|
13108
13207
|
}
|
|
13109
13208
|
});
|
|
13110
|
-
var cliAuthTokenContract =
|
|
13209
|
+
var cliAuthTokenContract = c5.router({
|
|
13111
13210
|
/**
|
|
13112
13211
|
* POST /api/cli/auth/token
|
|
13113
13212
|
* Exchange device code for access token
|
|
@@ -13137,8 +13236,8 @@ var cliAuthTokenContract = c6.router({
|
|
|
13137
13236
|
});
|
|
13138
13237
|
|
|
13139
13238
|
// ../../packages/core/src/contracts/auth.ts
|
|
13140
|
-
var
|
|
13141
|
-
var authContract =
|
|
13239
|
+
var c6 = initContract();
|
|
13240
|
+
var authContract = c6.router({
|
|
13142
13241
|
/**
|
|
13143
13242
|
* GET /api/auth/me
|
|
13144
13243
|
* Get current user information
|
|
@@ -13160,7 +13259,7 @@ var authContract = c7.router({
|
|
|
13160
13259
|
});
|
|
13161
13260
|
|
|
13162
13261
|
// ../../packages/core/src/contracts/images.ts
|
|
13163
|
-
var
|
|
13262
|
+
var c7 = initContract();
|
|
13164
13263
|
var buildStatusSchema = external_exports.enum(["building", "ready", "error"]);
|
|
13165
13264
|
var imageInfoSchema = external_exports.object({
|
|
13166
13265
|
id: external_exports.string(),
|
|
@@ -13196,7 +13295,7 @@ var buildStatusResponseSchema = external_exports.object({
|
|
|
13196
13295
|
logsOffset: external_exports.number(),
|
|
13197
13296
|
error: external_exports.string().optional()
|
|
13198
13297
|
});
|
|
13199
|
-
var imagesMainContract =
|
|
13298
|
+
var imagesMainContract = c7.router({
|
|
13200
13299
|
/**
|
|
13201
13300
|
* GET /api/images
|
|
13202
13301
|
* List all images for authenticated user
|
|
@@ -13230,7 +13329,7 @@ var imagesMainContract = c8.router({
|
|
|
13230
13329
|
summary: "Create image build"
|
|
13231
13330
|
}
|
|
13232
13331
|
});
|
|
13233
|
-
var imagesByIdContract =
|
|
13332
|
+
var imagesByIdContract = c7.router({
|
|
13234
13333
|
/**
|
|
13235
13334
|
* DELETE /api/images/:imageId
|
|
13236
13335
|
* Delete an image by ID
|
|
@@ -13254,7 +13353,7 @@ var imagesByIdContract = c8.router({
|
|
|
13254
13353
|
summary: "Delete image"
|
|
13255
13354
|
}
|
|
13256
13355
|
});
|
|
13257
|
-
var imageBuildsContract =
|
|
13356
|
+
var imageBuildsContract = c7.router({
|
|
13258
13357
|
/**
|
|
13259
13358
|
* GET /api/images/:imageId/builds/:buildId
|
|
13260
13359
|
* Query build status with incremental logs
|
|
@@ -13281,7 +13380,7 @@ var imageBuildsContract = c8.router({
|
|
|
13281
13380
|
});
|
|
13282
13381
|
|
|
13283
13382
|
// ../../packages/core/src/contracts/cron.ts
|
|
13284
|
-
var
|
|
13383
|
+
var c8 = initContract();
|
|
13285
13384
|
var cleanupResultSchema = external_exports.object({
|
|
13286
13385
|
runId: external_exports.string(),
|
|
13287
13386
|
sandboxId: external_exports.string().nullable(),
|
|
@@ -13293,7 +13392,7 @@ var cleanupResponseSchema = external_exports.object({
|
|
|
13293
13392
|
errors: external_exports.number(),
|
|
13294
13393
|
results: external_exports.array(cleanupResultSchema)
|
|
13295
13394
|
});
|
|
13296
|
-
var cronCleanupSandboxesContract =
|
|
13395
|
+
var cronCleanupSandboxesContract = c8.router({
|
|
13297
13396
|
/**
|
|
13298
13397
|
* GET /api/cron/cleanup-sandboxes
|
|
13299
13398
|
* Cron job to cleanup sandboxes that have stopped sending heartbeats
|
|
@@ -13325,7 +13424,7 @@ var proxyErrorSchema = external_exports.object({
|
|
|
13325
13424
|
});
|
|
13326
13425
|
|
|
13327
13426
|
// ../../packages/core/src/contracts/scopes.ts
|
|
13328
|
-
var
|
|
13427
|
+
var c9 = initContract();
|
|
13329
13428
|
var scopeTypeSchema = external_exports.enum(["personal", "organization", "system"]);
|
|
13330
13429
|
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
13430
|
/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]{1,2}$/,
|
|
@@ -13350,7 +13449,7 @@ var updateScopeRequestSchema = external_exports.object({
|
|
|
13350
13449
|
slug: scopeSlugSchema,
|
|
13351
13450
|
force: external_exports.boolean().optional().default(false)
|
|
13352
13451
|
});
|
|
13353
|
-
var scopeContract =
|
|
13452
|
+
var scopeContract = c9.router({
|
|
13354
13453
|
/**
|
|
13355
13454
|
* GET /api/scope
|
|
13356
13455
|
* Get current user's scope
|
|
@@ -13654,6 +13753,9 @@ var ApiClient = class {
|
|
|
13654
13753
|
if (options?.limit !== void 0) {
|
|
13655
13754
|
params.set("limit", String(options.limit));
|
|
13656
13755
|
}
|
|
13756
|
+
if (options?.order !== void 0) {
|
|
13757
|
+
params.set("order", options.order);
|
|
13758
|
+
}
|
|
13657
13759
|
const queryString = params.toString();
|
|
13658
13760
|
const url2 = `${baseUrl}/api/agent/runs/${runId}/telemetry/system-log${queryString ? `?${queryString}` : ""}`;
|
|
13659
13761
|
const response = await fetch(url2, {
|
|
@@ -13676,6 +13778,9 @@ var ApiClient = class {
|
|
|
13676
13778
|
if (options?.limit !== void 0) {
|
|
13677
13779
|
params.set("limit", String(options.limit));
|
|
13678
13780
|
}
|
|
13781
|
+
if (options?.order !== void 0) {
|
|
13782
|
+
params.set("order", options.order);
|
|
13783
|
+
}
|
|
13679
13784
|
const queryString = params.toString();
|
|
13680
13785
|
const url2 = `${baseUrl}/api/agent/runs/${runId}/telemetry/metrics${queryString ? `?${queryString}` : ""}`;
|
|
13681
13786
|
const response = await fetch(url2, {
|
|
@@ -13698,6 +13803,9 @@ var ApiClient = class {
|
|
|
13698
13803
|
if (options?.limit !== void 0) {
|
|
13699
13804
|
params.set("limit", String(options.limit));
|
|
13700
13805
|
}
|
|
13806
|
+
if (options?.order !== void 0) {
|
|
13807
|
+
params.set("order", options.order);
|
|
13808
|
+
}
|
|
13701
13809
|
const queryString = params.toString();
|
|
13702
13810
|
const url2 = `${baseUrl}/api/agent/runs/${runId}/telemetry/agent${queryString ? `?${queryString}` : ""}`;
|
|
13703
13811
|
const response = await fetch(url2, {
|
|
@@ -13720,6 +13828,9 @@ var ApiClient = class {
|
|
|
13720
13828
|
if (options?.limit !== void 0) {
|
|
13721
13829
|
params.set("limit", String(options.limit));
|
|
13722
13830
|
}
|
|
13831
|
+
if (options?.order !== void 0) {
|
|
13832
|
+
params.set("order", options.order);
|
|
13833
|
+
}
|
|
13723
13834
|
const queryString = params.toString();
|
|
13724
13835
|
const url2 = `${baseUrl}/api/agent/runs/${runId}/telemetry/network${queryString ? `?${queryString}` : ""}`;
|
|
13725
13836
|
const response = await fetch(url2, {
|
|
@@ -14969,9 +15080,9 @@ var CodexEventParser = class {
|
|
|
14969
15080
|
}
|
|
14970
15081
|
}
|
|
14971
15082
|
if (itemType === "file_change" && item.changes && item.changes.length > 0) {
|
|
14972
|
-
const changes = item.changes.map((
|
|
14973
|
-
const action =
|
|
14974
|
-
return `${action}: ${
|
|
15083
|
+
const changes = item.changes.map((c10) => {
|
|
15084
|
+
const action = c10.kind === "add" ? "Created" : c10.kind === "modify" ? "Modified" : "Deleted";
|
|
15085
|
+
return `${action}: ${c10.path}`;
|
|
14975
15086
|
}).join("\n");
|
|
14976
15087
|
return {
|
|
14977
15088
|
type: "text",
|
|
@@ -15312,9 +15423,9 @@ var CodexEventRenderer = class {
|
|
|
15312
15423
|
return;
|
|
15313
15424
|
}
|
|
15314
15425
|
if (itemType === "file_change" && item.changes && item.changes.length > 0) {
|
|
15315
|
-
const summary = item.changes.map((
|
|
15316
|
-
const icon =
|
|
15317
|
-
return `${icon}${
|
|
15426
|
+
const summary = item.changes.map((c10) => {
|
|
15427
|
+
const icon = c10.kind === "add" ? "+" : c10.kind === "delete" ? "-" : "~";
|
|
15428
|
+
return `${icon}${c10.path}`;
|
|
15318
15429
|
}).join(", ");
|
|
15319
15430
|
console.log(chalk4.green("[files]") + ` ${summary}`);
|
|
15320
15431
|
return;
|
|
@@ -16814,7 +16925,7 @@ async function autoPullArtifact(runOutput, artifactDir) {
|
|
|
16814
16925
|
}
|
|
16815
16926
|
var cookCmd = new Command13().name("cook").description("One-click agent preparation and execution from vm0.yaml");
|
|
16816
16927
|
cookCmd.argument("[prompt]", "Prompt for the agent").action(async (prompt) => {
|
|
16817
|
-
const shouldExit = await checkAndUpgrade("4.
|
|
16928
|
+
const shouldExit = await checkAndUpgrade("4.30.0", prompt);
|
|
16818
16929
|
if (shouldExit) {
|
|
16819
16930
|
process.exit(0);
|
|
16820
16931
|
}
|
|
@@ -16987,7 +17098,7 @@ cookCmd.argument("[prompt]", "Prompt for the agent").action(async (prompt) => {
|
|
|
16987
17098
|
cookCmd.command("logs").description("View logs from the last cook run").option("-a, --agent", "Show agent events (default)").option("-s, --system", "Show system log").option("-m, --metrics", "Show metrics").option("-n, --network", "Show network logs (proxy traffic)").option(
|
|
16988
17099
|
"--since <time>",
|
|
16989
17100
|
"Show logs since timestamp (e.g., 5m, 2h, 1d, 2024-01-15T10:30:00Z)"
|
|
16990
|
-
).option("--
|
|
17101
|
+
).option("--tail <n>", "Show last N entries (default: 5, max: 100)").option("--head <n>", "Show first N entries (max: 100)").action(
|
|
16991
17102
|
async (options) => {
|
|
16992
17103
|
const state = await loadCookState();
|
|
16993
17104
|
if (!state.lastRunId) {
|
|
@@ -17017,9 +17128,13 @@ cookCmd.command("logs").description("View logs from the last cook run").option("
|
|
|
17017
17128
|
args.push("--since", options.since);
|
|
17018
17129
|
displayArgs.push(`--since ${options.since}`);
|
|
17019
17130
|
}
|
|
17020
|
-
if (options.
|
|
17021
|
-
args.push("--
|
|
17022
|
-
displayArgs.push(`--
|
|
17131
|
+
if (options.tail) {
|
|
17132
|
+
args.push("--tail", options.tail);
|
|
17133
|
+
displayArgs.push(`--tail ${options.tail}`);
|
|
17134
|
+
}
|
|
17135
|
+
if (options.head) {
|
|
17136
|
+
args.push("--head", options.head);
|
|
17137
|
+
displayArgs.push(`--head ${options.head}`);
|
|
17023
17138
|
}
|
|
17024
17139
|
printCommand(displayArgs.join(" "));
|
|
17025
17140
|
await execVm0Command(args);
|
|
@@ -17609,34 +17724,38 @@ function getLogType(options) {
|
|
|
17609
17724
|
var logsCommand = new Command19().name("logs").description("View logs for an agent run").argument("<runId>", "Run ID to fetch logs for").option("-a, --agent", "Show agent events (default)").option("-s, --system", "Show system log").option("-m, --metrics", "Show metrics").option("-n, --network", "Show network logs (proxy traffic)").option(
|
|
17610
17725
|
"--since <time>",
|
|
17611
17726
|
"Show logs since timestamp (e.g., 5m, 2h, 1d, 2024-01-15T10:30:00Z, 1705312200)"
|
|
17612
|
-
).option(
|
|
17613
|
-
"--limit <n>",
|
|
17614
|
-
"Maximum number of entries to show (default: 5, max: 100)",
|
|
17615
|
-
"5"
|
|
17616
|
-
).action(
|
|
17727
|
+
).option("--tail <n>", "Show last N entries (default: 5, max: 100)").option("--head <n>", "Show first N entries (max: 100)").action(
|
|
17617
17728
|
async (runId, options) => {
|
|
17618
17729
|
try {
|
|
17619
17730
|
const logType = getLogType(options);
|
|
17731
|
+
if (options.tail !== void 0 && options.head !== void 0) {
|
|
17732
|
+
console.error(
|
|
17733
|
+
chalk21.red("Options --tail and --head are mutually exclusive")
|
|
17734
|
+
);
|
|
17735
|
+
process.exit(1);
|
|
17736
|
+
}
|
|
17620
17737
|
let since;
|
|
17621
17738
|
if (options.since) {
|
|
17622
17739
|
since = parseTime(options.since);
|
|
17623
17740
|
}
|
|
17741
|
+
const isHead = options.head !== void 0;
|
|
17624
17742
|
const limit = Math.min(
|
|
17625
|
-
Math.max(1, parseInt(options.
|
|
17743
|
+
Math.max(1, parseInt(options.head || options.tail || "5", 10)),
|
|
17626
17744
|
100
|
|
17627
17745
|
);
|
|
17746
|
+
const order = isHead ? "asc" : "desc";
|
|
17628
17747
|
switch (logType) {
|
|
17629
17748
|
case "agent":
|
|
17630
|
-
await showAgentEvents(runId, { since, limit });
|
|
17749
|
+
await showAgentEvents(runId, { since, limit, order });
|
|
17631
17750
|
break;
|
|
17632
17751
|
case "system":
|
|
17633
|
-
await showSystemLog(runId, { since, limit });
|
|
17752
|
+
await showSystemLog(runId, { since, limit, order });
|
|
17634
17753
|
break;
|
|
17635
17754
|
case "metrics":
|
|
17636
|
-
await showMetrics(runId, { since, limit });
|
|
17755
|
+
await showMetrics(runId, { since, limit, order });
|
|
17637
17756
|
break;
|
|
17638
17757
|
case "network":
|
|
17639
|
-
await showNetworkLogs(runId, { since, limit });
|
|
17758
|
+
await showNetworkLogs(runId, { since, limit, order });
|
|
17640
17759
|
break;
|
|
17641
17760
|
}
|
|
17642
17761
|
} catch (error43) {
|
|
@@ -17651,14 +17770,15 @@ async function showAgentEvents(runId, options) {
|
|
|
17651
17770
|
console.log(chalk21.yellow("No agent events found for this run."));
|
|
17652
17771
|
return;
|
|
17653
17772
|
}
|
|
17654
|
-
|
|
17773
|
+
const events = options.order === "desc" ? [...response.events].reverse() : response.events;
|
|
17774
|
+
for (const event of events) {
|
|
17655
17775
|
renderAgentEvent(event, response.provider);
|
|
17656
17776
|
}
|
|
17657
17777
|
if (response.hasMore) {
|
|
17658
17778
|
console.log();
|
|
17659
17779
|
console.log(
|
|
17660
17780
|
chalk21.dim(
|
|
17661
|
-
`Showing ${response.events.length} events. Use --
|
|
17781
|
+
`Showing ${response.events.length} events. Use --tail to see more.`
|
|
17662
17782
|
)
|
|
17663
17783
|
);
|
|
17664
17784
|
}
|
|
@@ -17673,7 +17793,7 @@ async function showSystemLog(runId, options) {
|
|
|
17673
17793
|
if (response.hasMore) {
|
|
17674
17794
|
console.log();
|
|
17675
17795
|
console.log(
|
|
17676
|
-
chalk21.dim("More log entries available. Use --
|
|
17796
|
+
chalk21.dim("More log entries available. Use --tail to see more.")
|
|
17677
17797
|
);
|
|
17678
17798
|
}
|
|
17679
17799
|
}
|
|
@@ -17683,14 +17803,15 @@ async function showMetrics(runId, options) {
|
|
|
17683
17803
|
console.log(chalk21.yellow("No metrics found for this run."));
|
|
17684
17804
|
return;
|
|
17685
17805
|
}
|
|
17686
|
-
|
|
17806
|
+
const metrics = options.order === "desc" ? [...response.metrics].reverse() : response.metrics;
|
|
17807
|
+
for (const metric of metrics) {
|
|
17687
17808
|
console.log(formatMetric(metric));
|
|
17688
17809
|
}
|
|
17689
17810
|
if (response.hasMore) {
|
|
17690
17811
|
console.log();
|
|
17691
17812
|
console.log(
|
|
17692
17813
|
chalk21.dim(
|
|
17693
|
-
`Showing ${response.metrics.length} metrics. Use --
|
|
17814
|
+
`Showing ${response.metrics.length} metrics. Use --tail to see more.`
|
|
17694
17815
|
)
|
|
17695
17816
|
);
|
|
17696
17817
|
}
|
|
@@ -17705,14 +17826,15 @@ async function showNetworkLogs(runId, options) {
|
|
|
17705
17826
|
);
|
|
17706
17827
|
return;
|
|
17707
17828
|
}
|
|
17708
|
-
|
|
17829
|
+
const networkLogs = options.order === "desc" ? [...response.networkLogs].reverse() : response.networkLogs;
|
|
17830
|
+
for (const entry of networkLogs) {
|
|
17709
17831
|
console.log(formatNetworkLog(entry));
|
|
17710
17832
|
}
|
|
17711
17833
|
if (response.hasMore) {
|
|
17712
17834
|
console.log();
|
|
17713
17835
|
console.log(
|
|
17714
17836
|
chalk21.dim(
|
|
17715
|
-
`Showing ${response.networkLogs.length} network logs. Use --
|
|
17837
|
+
`Showing ${response.networkLogs.length} network logs. Use --tail to see more.`
|
|
17716
17838
|
)
|
|
17717
17839
|
);
|
|
17718
17840
|
}
|
|
@@ -18416,7 +18538,7 @@ var setupGithubCommand = new Command24().name("setup-github").description("Initi
|
|
|
18416
18538
|
|
|
18417
18539
|
// src/index.ts
|
|
18418
18540
|
var program = new Command25();
|
|
18419
|
-
program.name("vm0").description("VM0 CLI - A modern build tool").version("4.
|
|
18541
|
+
program.name("vm0").description("VM0 CLI - A modern build tool").version("4.30.0");
|
|
18420
18542
|
program.command("info").description("Display environment information").action(async () => {
|
|
18421
18543
|
console.log(chalk26.bold("System Information:"));
|
|
18422
18544
|
console.log(`Node Version: ${process.version}`);
|