@vm0/cli 9.70.3 → 9.71.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 +83 -46
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -45,7 +45,7 @@ if (DSN) {
|
|
|
45
45
|
Sentry.init({
|
|
46
46
|
dsn: DSN,
|
|
47
47
|
environment: process.env.SENTRY_ENVIRONMENT ?? "production",
|
|
48
|
-
release: "9.
|
|
48
|
+
release: "9.71.0",
|
|
49
49
|
sendDefaultPii: false,
|
|
50
50
|
tracesSampleRate: 0,
|
|
51
51
|
shutdownTimeout: 500,
|
|
@@ -64,7 +64,7 @@ if (DSN) {
|
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
66
|
Sentry.setContext("cli", {
|
|
67
|
-
version: "9.
|
|
67
|
+
version: "9.71.0",
|
|
68
68
|
command: process.argv.slice(2).join(" ")
|
|
69
69
|
});
|
|
70
70
|
Sentry.setContext("runtime", {
|
|
@@ -675,7 +675,7 @@ function getConfigPath() {
|
|
|
675
675
|
return join2(homedir2(), ".vm0", "config.json");
|
|
676
676
|
}
|
|
677
677
|
var infoCommand = new Command6().name("info").description("Display environment and debug information").action(async () => {
|
|
678
|
-
console.log(chalk4.bold(`VM0 CLI v${"9.
|
|
678
|
+
console.log(chalk4.bold(`VM0 CLI v${"9.71.0"}`));
|
|
679
679
|
console.log();
|
|
680
680
|
const config = await loadConfig();
|
|
681
681
|
const hasEnvToken = !!process.env.VM0_TOKEN;
|
|
@@ -1162,7 +1162,7 @@ var logDetailSchema = z5.object({
|
|
|
1162
1162
|
var logsListContract = c2.router({
|
|
1163
1163
|
list: {
|
|
1164
1164
|
method: "GET",
|
|
1165
|
-
path: "/api/
|
|
1165
|
+
path: "/api/zero/logs",
|
|
1166
1166
|
query: listQuerySchema.extend({
|
|
1167
1167
|
search: z5.string().optional(),
|
|
1168
1168
|
agent: z5.string().optional(),
|
|
@@ -1180,7 +1180,7 @@ var logsListContract = c2.router({
|
|
|
1180
1180
|
var logsByIdContract = c2.router({
|
|
1181
1181
|
getById: {
|
|
1182
1182
|
method: "GET",
|
|
1183
|
-
path: "/api/
|
|
1183
|
+
path: "/api/zero/logs/:id",
|
|
1184
1184
|
headers: authHeadersSchema,
|
|
1185
1185
|
pathParams: z5.object({
|
|
1186
1186
|
id: z5.string().uuid("Invalid log ID")
|
|
@@ -1373,14 +1373,14 @@ var orgContract = c4.router({
|
|
|
1373
1373
|
});
|
|
1374
1374
|
var orgDefaultAgentContract = c4.router({
|
|
1375
1375
|
/**
|
|
1376
|
-
* PUT /api/
|
|
1376
|
+
* PUT /api/zero/default-agent?org={slug}
|
|
1377
1377
|
* Set or unset the default agent for an org.
|
|
1378
1378
|
* Only org admins can perform this action.
|
|
1379
1379
|
* The agent must belong to the same org.
|
|
1380
1380
|
*/
|
|
1381
1381
|
setDefaultAgent: {
|
|
1382
1382
|
method: "PUT",
|
|
1383
|
-
path: "/api/
|
|
1383
|
+
path: "/api/zero/default-agent",
|
|
1384
1384
|
headers: authHeadersSchema,
|
|
1385
1385
|
query: z7.object({
|
|
1386
1386
|
org: z7.string().optional()
|
|
@@ -1654,17 +1654,21 @@ var agentEventsResponseSchema = z8.object({
|
|
|
1654
1654
|
});
|
|
1655
1655
|
var networkLogEntrySchema = z8.object({
|
|
1656
1656
|
timestamp: z8.string(),
|
|
1657
|
-
|
|
1658
|
-
action: z8.enum(["ALLOW", "DENY"]).optional(),
|
|
1657
|
+
action: z8.enum(["ALLOW", "DENY", "ERROR"]).optional(),
|
|
1659
1658
|
host: z8.string().optional(),
|
|
1660
1659
|
port: z8.number().optional(),
|
|
1661
|
-
rule_matched: z8.string().nullable().optional(),
|
|
1662
1660
|
method: z8.string().optional(),
|
|
1663
1661
|
url: z8.string().optional(),
|
|
1664
1662
|
status: z8.number().optional(),
|
|
1665
1663
|
latency_ms: z8.number().optional(),
|
|
1666
1664
|
request_size: z8.number().optional(),
|
|
1667
|
-
response_size: z8.number().optional()
|
|
1665
|
+
response_size: z8.number().optional(),
|
|
1666
|
+
firewall_base: z8.string().optional(),
|
|
1667
|
+
firewall_name: z8.string().optional(),
|
|
1668
|
+
firewall_ref: z8.string().optional(),
|
|
1669
|
+
firewall_permission: z8.string().optional(),
|
|
1670
|
+
firewall_rule_match: z8.string().optional(),
|
|
1671
|
+
firewall_params: z8.record(z8.string(), z8.string()).optional()
|
|
1668
1672
|
});
|
|
1669
1673
|
var networkLogsResponseSchema = z8.object({
|
|
1670
1674
|
networkLogs: z8.array(networkLogEntrySchema),
|
|
@@ -3393,7 +3397,7 @@ var chatThreadDetailSchema = z18.object({
|
|
|
3393
3397
|
var chatThreadsContract = c14.router({
|
|
3394
3398
|
create: {
|
|
3395
3399
|
method: "POST",
|
|
3396
|
-
path: "/api/chat-threads",
|
|
3400
|
+
path: "/api/zero/chat-threads",
|
|
3397
3401
|
headers: authHeadersSchema,
|
|
3398
3402
|
body: z18.object({
|
|
3399
3403
|
agentComposeId: z18.string().min(1),
|
|
@@ -3407,7 +3411,7 @@ var chatThreadsContract = c14.router({
|
|
|
3407
3411
|
},
|
|
3408
3412
|
list: {
|
|
3409
3413
|
method: "GET",
|
|
3410
|
-
path: "/api/chat-threads",
|
|
3414
|
+
path: "/api/zero/chat-threads",
|
|
3411
3415
|
headers: authHeadersSchema,
|
|
3412
3416
|
query: z18.object({
|
|
3413
3417
|
agentComposeId: z18.string().min(1, "agentComposeId is required")
|
|
@@ -3422,7 +3426,7 @@ var chatThreadsContract = c14.router({
|
|
|
3422
3426
|
var chatThreadByIdContract = c14.router({
|
|
3423
3427
|
get: {
|
|
3424
3428
|
method: "GET",
|
|
3425
|
-
path: "/api/chat-threads/:id",
|
|
3429
|
+
path: "/api/zero/chat-threads/:id",
|
|
3426
3430
|
headers: authHeadersSchema,
|
|
3427
3431
|
pathParams: z18.object({ id: z18.string() }),
|
|
3428
3432
|
responses: {
|
|
@@ -3436,7 +3440,7 @@ var chatThreadByIdContract = c14.router({
|
|
|
3436
3440
|
var chatThreadRunsContract = c14.router({
|
|
3437
3441
|
addRun: {
|
|
3438
3442
|
method: "POST",
|
|
3439
|
-
path: "/api/chat-threads/:id/runs",
|
|
3443
|
+
path: "/api/zero/chat-threads/:id/runs",
|
|
3440
3444
|
headers: authHeadersSchema,
|
|
3441
3445
|
pathParams: z18.object({ id: z18.string() }),
|
|
3442
3446
|
body: z18.object({
|
|
@@ -7768,7 +7772,7 @@ var onboardingStatusResponseSchema = z25.object({
|
|
|
7768
7772
|
var onboardingStatusContract = c21.router({
|
|
7769
7773
|
getStatus: {
|
|
7770
7774
|
method: "GET",
|
|
7771
|
-
path: "/api/onboarding/status",
|
|
7775
|
+
path: "/api/zero/onboarding/status",
|
|
7772
7776
|
headers: authHeadersSchema,
|
|
7773
7777
|
responses: {
|
|
7774
7778
|
200: onboardingStatusResponseSchema,
|
|
@@ -8551,6 +8555,27 @@ var zeroVariablesContract = c34.router({
|
|
|
8551
8555
|
}
|
|
8552
8556
|
});
|
|
8553
8557
|
|
|
8558
|
+
// ../../packages/core/src/contracts/zero-sessions.ts
|
|
8559
|
+
import { z as z36 } from "zod";
|
|
8560
|
+
var c35 = initContract();
|
|
8561
|
+
var zeroSessionsByIdContract = c35.router({
|
|
8562
|
+
getById: {
|
|
8563
|
+
method: "GET",
|
|
8564
|
+
path: "/api/zero/sessions/:id",
|
|
8565
|
+
headers: authHeadersSchema,
|
|
8566
|
+
pathParams: z36.object({
|
|
8567
|
+
id: z36.string().min(1, "Session ID is required")
|
|
8568
|
+
}),
|
|
8569
|
+
responses: {
|
|
8570
|
+
200: sessionResponseSchema,
|
|
8571
|
+
401: apiErrorSchema,
|
|
8572
|
+
403: apiErrorSchema,
|
|
8573
|
+
404: apiErrorSchema
|
|
8574
|
+
},
|
|
8575
|
+
summary: "Get session by ID (zero proxy)"
|
|
8576
|
+
}
|
|
8577
|
+
});
|
|
8578
|
+
|
|
8554
8579
|
// ../../packages/core/src/storage-names.ts
|
|
8555
8580
|
function getInstructionsStorageName(agentName) {
|
|
8556
8581
|
return `agent-instructions@${agentName}`;
|
|
@@ -9602,8 +9627,8 @@ async function resolveSkills(skillUrls) {
|
|
|
9602
9627
|
}
|
|
9603
9628
|
|
|
9604
9629
|
// src/lib/domain/yaml-validator.ts
|
|
9605
|
-
import { z as
|
|
9606
|
-
var cliAgentNameSchema =
|
|
9630
|
+
import { z as z37 } from "zod";
|
|
9631
|
+
var cliAgentNameSchema = z37.string().min(3, "Agent name must be at least 3 characters").max(64, "Agent name must be 64 characters or less").regex(
|
|
9607
9632
|
/^[a-zA-Z0-9]([a-zA-Z0-9-]{0,62}[a-zA-Z0-9])?$/,
|
|
9608
9633
|
"Agent name must start and end with letter or number, and contain only letters, numbers, and hyphens"
|
|
9609
9634
|
);
|
|
@@ -9617,7 +9642,7 @@ var cliAgentDefinitionSchema = agentDefinitionSchema.superRefine(
|
|
|
9617
9642
|
resolveSkillRef(skillRef);
|
|
9618
9643
|
} catch (error) {
|
|
9619
9644
|
ctx.addIssue({
|
|
9620
|
-
code:
|
|
9645
|
+
code: z37.ZodIssueCode.custom,
|
|
9621
9646
|
message: error instanceof Error ? error.message : `Invalid skill reference: ${skillRef}`,
|
|
9622
9647
|
path: ["skills", i]
|
|
9623
9648
|
});
|
|
@@ -9627,15 +9652,15 @@ var cliAgentDefinitionSchema = agentDefinitionSchema.superRefine(
|
|
|
9627
9652
|
}
|
|
9628
9653
|
}
|
|
9629
9654
|
);
|
|
9630
|
-
var cliComposeSchema =
|
|
9631
|
-
version:
|
|
9632
|
-
agents:
|
|
9633
|
-
volumes:
|
|
9655
|
+
var cliComposeSchema = z37.object({
|
|
9656
|
+
version: z37.string().min(1, "Missing config.version"),
|
|
9657
|
+
agents: z37.record(cliAgentNameSchema, cliAgentDefinitionSchema),
|
|
9658
|
+
volumes: z37.record(z37.string(), volumeConfigSchema).optional()
|
|
9634
9659
|
}).superRefine((config, ctx) => {
|
|
9635
9660
|
const agentKeys = Object.keys(config.agents);
|
|
9636
9661
|
if (agentKeys.length === 0) {
|
|
9637
9662
|
ctx.addIssue({
|
|
9638
|
-
code:
|
|
9663
|
+
code: z37.ZodIssueCode.custom,
|
|
9639
9664
|
message: "agents must have at least one agent defined",
|
|
9640
9665
|
path: ["agents"]
|
|
9641
9666
|
});
|
|
@@ -9643,7 +9668,7 @@ var cliComposeSchema = z36.object({
|
|
|
9643
9668
|
}
|
|
9644
9669
|
if (agentKeys.length > 1) {
|
|
9645
9670
|
ctx.addIssue({
|
|
9646
|
-
code:
|
|
9671
|
+
code: z37.ZodIssueCode.custom,
|
|
9647
9672
|
message: "Multiple agents not supported yet. Only one agent allowed.",
|
|
9648
9673
|
path: ["agents"]
|
|
9649
9674
|
});
|
|
@@ -9655,7 +9680,7 @@ var cliComposeSchema = z36.object({
|
|
|
9655
9680
|
if (agentVolumes && agentVolumes.length > 0) {
|
|
9656
9681
|
if (!config.volumes) {
|
|
9657
9682
|
ctx.addIssue({
|
|
9658
|
-
code:
|
|
9683
|
+
code: z37.ZodIssueCode.custom,
|
|
9659
9684
|
message: "Agent references volumes but no volumes section defined. Each volume must have explicit name and version.",
|
|
9660
9685
|
path: ["volumes"]
|
|
9661
9686
|
});
|
|
@@ -9665,7 +9690,7 @@ var cliComposeSchema = z36.object({
|
|
|
9665
9690
|
const parts = volDeclaration.split(":");
|
|
9666
9691
|
if (parts.length !== 2) {
|
|
9667
9692
|
ctx.addIssue({
|
|
9668
|
-
code:
|
|
9693
|
+
code: z37.ZodIssueCode.custom,
|
|
9669
9694
|
message: `Invalid volume declaration: ${volDeclaration}. Expected format: volume-key:/mount/path`,
|
|
9670
9695
|
path: ["agents", agentName, "volumes"]
|
|
9671
9696
|
});
|
|
@@ -9674,7 +9699,7 @@ var cliComposeSchema = z36.object({
|
|
|
9674
9699
|
const volumeKey = parts[0].trim();
|
|
9675
9700
|
if (!config.volumes[volumeKey]) {
|
|
9676
9701
|
ctx.addIssue({
|
|
9677
|
-
code:
|
|
9702
|
+
code: z37.ZodIssueCode.custom,
|
|
9678
9703
|
message: `Volume "${volumeKey}" is not defined in volumes section. Each volume must have explicit name and version.`,
|
|
9679
9704
|
path: ["volumes", volumeKey]
|
|
9680
9705
|
});
|
|
@@ -10873,7 +10898,7 @@ var composeCommand = new Command7().name("compose").description("Create or updat
|
|
|
10873
10898
|
options.autoUpdate = false;
|
|
10874
10899
|
}
|
|
10875
10900
|
if (options.autoUpdate !== false) {
|
|
10876
|
-
await startSilentUpgrade("9.
|
|
10901
|
+
await startSilentUpgrade("9.71.0");
|
|
10877
10902
|
}
|
|
10878
10903
|
try {
|
|
10879
10904
|
let result;
|
|
@@ -11698,7 +11723,7 @@ var mainRunCommand = new Command8().name("run").description("Run an agent").argu
|
|
|
11698
11723
|
withErrorHandler(
|
|
11699
11724
|
async (identifier, prompt, options) => {
|
|
11700
11725
|
if (options.autoUpdate !== false) {
|
|
11701
|
-
await startSilentUpgrade("9.
|
|
11726
|
+
await startSilentUpgrade("9.71.0");
|
|
11702
11727
|
}
|
|
11703
11728
|
const { org, name, version } = parseIdentifier(identifier);
|
|
11704
11729
|
let composeId;
|
|
@@ -13436,7 +13461,7 @@ var cookAction = new Command35().name("cook").description("Quick start: prepare,
|
|
|
13436
13461
|
withErrorHandler(
|
|
13437
13462
|
async (prompt, options) => {
|
|
13438
13463
|
if (options.autoUpdate !== false) {
|
|
13439
|
-
const shouldExit = await checkAndUpgrade("9.
|
|
13464
|
+
const shouldExit = await checkAndUpgrade("9.71.0", prompt);
|
|
13440
13465
|
if (shouldExit) {
|
|
13441
13466
|
process.exit(0);
|
|
13442
13467
|
}
|
|
@@ -14414,7 +14439,13 @@ function formatMetric(metric) {
|
|
|
14414
14439
|
const diskPercent = (metric.disk_used / metric.disk_total * 100).toFixed(1);
|
|
14415
14440
|
return `[${metric.ts}] CPU: ${metric.cpu.toFixed(1)}% | Mem: ${formatBytes(metric.mem_used)}/${formatBytes(metric.mem_total)} (${memPercent}%) | Disk: ${formatBytes(metric.disk_used)}/${formatBytes(metric.disk_total)} (${diskPercent}%)`;
|
|
14416
14441
|
}
|
|
14417
|
-
function
|
|
14442
|
+
function formatNetworkDeny(entry) {
|
|
14443
|
+
const method = entry.method || "???";
|
|
14444
|
+
const url = entry.url || entry.host || "unknown";
|
|
14445
|
+
const firewall = entry.firewall_name ? ` ${chalk36.cyan(`[${entry.firewall_name}]`)}` : "";
|
|
14446
|
+
return `[${entry.timestamp}] ${method.padEnd(6)} ${chalk36.red.bold("DENY")} ${chalk36.dim(url)}${firewall}`;
|
|
14447
|
+
}
|
|
14448
|
+
function formatNetworkRequest(entry) {
|
|
14418
14449
|
let statusColor;
|
|
14419
14450
|
const status = entry.status || 0;
|
|
14420
14451
|
if (status >= 200 && status < 300) {
|
|
@@ -14439,7 +14470,13 @@ function formatNetworkLog(entry) {
|
|
|
14439
14470
|
const requestSize = entry.request_size || 0;
|
|
14440
14471
|
const responseSize = entry.response_size || 0;
|
|
14441
14472
|
const url = entry.url || entry.host || "unknown";
|
|
14442
|
-
|
|
14473
|
+
const firewall = entry.firewall_name ? ` ${chalk36.cyan(`[${entry.firewall_name}]`)}` : "";
|
|
14474
|
+
const error = entry.action === "ERROR" ? ` ${chalk36.red("auth failed")}` : "";
|
|
14475
|
+
return `[${entry.timestamp}] ${method.padEnd(6)} ${statusColor(status)} ${latencyColor(latencyMs + "ms")} ${formatBytes(requestSize)}/${formatBytes(responseSize)} ${chalk36.dim(url)}${firewall}${error}`;
|
|
14476
|
+
}
|
|
14477
|
+
function formatNetworkLog(entry) {
|
|
14478
|
+
if (entry.action === "DENY") return formatNetworkDeny(entry);
|
|
14479
|
+
return formatNetworkRequest(entry);
|
|
14443
14480
|
}
|
|
14444
14481
|
function createLogRenderer(verbose) {
|
|
14445
14482
|
return new EventRenderer({
|
|
@@ -15788,7 +15825,7 @@ var listCommand9 = new Command65().name("list").alias("ls").description("List al
|
|
|
15788
15825
|
);
|
|
15789
15826
|
return;
|
|
15790
15827
|
}
|
|
15791
|
-
const nameWidth = Math.max(4, ...data.composes.map((
|
|
15828
|
+
const nameWidth = Math.max(4, ...data.composes.map((c36) => c36.name.length));
|
|
15792
15829
|
const header = ["NAME".padEnd(nameWidth), "VERSION", "UPDATED"].join(
|
|
15793
15830
|
" "
|
|
15794
15831
|
);
|
|
@@ -16389,7 +16426,7 @@ async function gatherFrequency(optionFrequency, existingFrequency) {
|
|
|
16389
16426
|
if (!isInteractive()) {
|
|
16390
16427
|
throw new Error("--frequency is required (daily|weekly|monthly|once|loop)");
|
|
16391
16428
|
}
|
|
16392
|
-
const defaultIndex = existingFrequency ? FREQUENCY_CHOICES.findIndex((
|
|
16429
|
+
const defaultIndex = existingFrequency ? FREQUENCY_CHOICES.findIndex((c36) => c36.value === existingFrequency) : 0;
|
|
16393
16430
|
frequency = await promptSelect(
|
|
16394
16431
|
"Schedule frequency",
|
|
16395
16432
|
FREQUENCY_CHOICES,
|
|
@@ -16414,7 +16451,7 @@ async function gatherDay(frequency, optionDay, existingDay) {
|
|
|
16414
16451
|
throw new Error("--day is required for weekly/monthly");
|
|
16415
16452
|
}
|
|
16416
16453
|
if (frequency === "weekly") {
|
|
16417
|
-
const defaultDayIndex = existingDay !== void 0 ? DAY_OF_WEEK_CHOICES.findIndex((
|
|
16454
|
+
const defaultDayIndex = existingDay !== void 0 ? DAY_OF_WEEK_CHOICES.findIndex((c36) => c36.value === existingDay) : 0;
|
|
16418
16455
|
const day2 = await promptSelect(
|
|
16419
16456
|
"Day of week",
|
|
16420
16457
|
DAY_OF_WEEK_CHOICES,
|
|
@@ -17864,7 +17901,7 @@ import chalk76 from "chalk";
|
|
|
17864
17901
|
var listCommand13 = new Command86().name("list").alias("ls").description("List all connectors and their status").action(
|
|
17865
17902
|
withErrorHandler(async () => {
|
|
17866
17903
|
const result = await listConnectors();
|
|
17867
|
-
const connectedMap = new Map(result.connectors.map((
|
|
17904
|
+
const connectedMap = new Map(result.connectors.map((c36) => [c36.type, c36]));
|
|
17868
17905
|
const allTypesRaw = Object.keys(CONNECTOR_TYPES);
|
|
17869
17906
|
const allTypes = [];
|
|
17870
17907
|
for (const type2 of allTypesRaw) {
|
|
@@ -18425,16 +18462,16 @@ async function handleModelProvider(ctx) {
|
|
|
18425
18462
|
const providerType = await step.prompt(
|
|
18426
18463
|
() => promptSelect(
|
|
18427
18464
|
"Select provider type:",
|
|
18428
|
-
choices.map((
|
|
18429
|
-
title:
|
|
18430
|
-
value:
|
|
18465
|
+
choices.map((c36) => ({
|
|
18466
|
+
title: c36.label,
|
|
18467
|
+
value: c36.type
|
|
18431
18468
|
}))
|
|
18432
18469
|
)
|
|
18433
18470
|
);
|
|
18434
18471
|
if (!providerType) {
|
|
18435
18472
|
process.exit(0);
|
|
18436
18473
|
}
|
|
18437
|
-
const selectedChoice = choices.find((
|
|
18474
|
+
const selectedChoice = choices.find((c36) => c36.type === providerType);
|
|
18438
18475
|
if (selectedChoice?.helpText) {
|
|
18439
18476
|
for (const line of selectedChoice.helpText.split("\n")) {
|
|
18440
18477
|
step.detail(chalk82.dim(line));
|
|
@@ -18788,13 +18825,13 @@ var upgradeCommand = new Command94().name("upgrade").description("Upgrade vm0 CL
|
|
|
18788
18825
|
if (latestVersion === null) {
|
|
18789
18826
|
throw new Error("Could not check for updates. Please try again later.");
|
|
18790
18827
|
}
|
|
18791
|
-
if (latestVersion === "9.
|
|
18792
|
-
console.log(chalk86.green(`\u2713 Already up to date (${"9.
|
|
18828
|
+
if (latestVersion === "9.71.0") {
|
|
18829
|
+
console.log(chalk86.green(`\u2713 Already up to date (${"9.71.0"})`));
|
|
18793
18830
|
return;
|
|
18794
18831
|
}
|
|
18795
18832
|
console.log(
|
|
18796
18833
|
chalk86.yellow(
|
|
18797
|
-
`Current version: ${"9.
|
|
18834
|
+
`Current version: ${"9.71.0"} -> Latest version: ${latestVersion}`
|
|
18798
18835
|
)
|
|
18799
18836
|
);
|
|
18800
18837
|
console.log();
|
|
@@ -18821,7 +18858,7 @@ var upgradeCommand = new Command94().name("upgrade").description("Upgrade vm0 CL
|
|
|
18821
18858
|
const success = await performUpgrade(packageManager);
|
|
18822
18859
|
if (success) {
|
|
18823
18860
|
console.log(
|
|
18824
|
-
chalk86.green(`\u2713 Upgraded from ${"9.
|
|
18861
|
+
chalk86.green(`\u2713 Upgraded from ${"9.71.0"} to ${latestVersion}`)
|
|
18825
18862
|
);
|
|
18826
18863
|
return;
|
|
18827
18864
|
}
|
|
@@ -18895,7 +18932,7 @@ var whoamiCommand = new Command95().name("whoami").description("Show current ide
|
|
|
18895
18932
|
|
|
18896
18933
|
// src/index.ts
|
|
18897
18934
|
var program = new Command96();
|
|
18898
|
-
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.
|
|
18935
|
+
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.71.0");
|
|
18899
18936
|
program.addCommand(authCommand);
|
|
18900
18937
|
program.addCommand(infoCommand);
|
|
18901
18938
|
program.addCommand(composeCommand);
|