@vm0/cli 9.57.1 → 9.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +257 -90
  2. 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.57.1",
48
+ release: "9.58.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.57.1",
67
+ version: "9.58.0",
68
68
  command: process.argv.slice(2).join(" ")
69
69
  });
70
70
  Sentry.setContext("runtime", {
@@ -198,6 +198,13 @@ async function getApiUrl() {
198
198
  }
199
199
  return config.apiUrl ?? "https://www.vm0.ai";
200
200
  }
201
+ async function getActiveOrg() {
202
+ if (process.env.VM0_ACTIVE_ORG) {
203
+ return process.env.VM0_ACTIVE_ORG;
204
+ }
205
+ const config = await loadConfig();
206
+ return config.activeOrg;
207
+ }
201
208
  async function clearConfig() {
202
209
  const configFile = getConfigFile();
203
210
  if (existsSync(configFile)) {
@@ -271,7 +278,8 @@ The code expires in ${Math.floor(deviceAuth.expires_in / 60)} minutes.`
271
278
  if (tokenResult.access_token) {
272
279
  await saveConfig({
273
280
  token: tokenResult.access_token,
274
- apiUrl: targetApiUrl
281
+ apiUrl: targetApiUrl,
282
+ ...tokenResult.org_slug && { activeOrg: tokenResult.org_slug }
275
283
  });
276
284
  console.log(chalk.green("\nAuthentication successful!"));
277
285
  console.log("Your credentials have been saved");
@@ -371,8 +379,7 @@ async function getBaseUrl() {
371
379
  async function getClientConfig() {
372
380
  const baseUrl = await getBaseUrl();
373
381
  const baseHeaders = await getHeaders();
374
- const config = await loadConfig();
375
- const activeOrg = config.activeOrg;
382
+ const activeOrg = await getActiveOrg();
376
383
  if (activeOrg) {
377
384
  return {
378
385
  baseUrl,
@@ -666,7 +673,7 @@ function getConfigPath() {
666
673
  return join2(homedir2(), ".vm0", "config.json");
667
674
  }
668
675
  var infoCommand = new Command6().name("info").description("Display environment and debug information").action(async () => {
669
- console.log(chalk4.bold(`VM0 CLI v${"9.57.1"}`));
676
+ console.log(chalk4.bold(`VM0 CLI v${"9.58.0"}`));
670
677
  console.log();
671
678
  const config = await loadConfig();
672
679
  const hasEnvToken = !!process.env.VM0_TOKEN;
@@ -2209,7 +2216,8 @@ var cliAuthTokenContract = c6.router({
2209
2216
  200: z8.object({
2210
2217
  access_token: z8.string(),
2211
2218
  token_type: z8.literal("Bearer"),
2212
- expires_in: z8.number()
2219
+ expires_in: z8.number(),
2220
+ org_slug: z8.string().optional()
2213
2221
  }),
2214
2222
  // Authorization pending
2215
2223
  202: oauthErrorSchema,
@@ -6440,12 +6448,11 @@ var computerConnectorContract = c18.router({
6440
6448
  function bearerAuth(secretName) {
6441
6449
  return { headers: { Authorization: `Bearer \${secrets.${secretName}}` } };
6442
6450
  }
6443
- var FULL_ACCESS_PERMISSION = {
6444
- name: "full-access",
6445
- rules: ["ANY /{path+}"]
6446
- };
6447
- function api(base, auth) {
6448
- return { base, auth, permissions: [FULL_ACCESS_PERMISSION] };
6451
+ function fullAccess(name = "full-access") {
6452
+ return { name, rules: ["ANY /{path+}"] };
6453
+ }
6454
+ function api(base, auth, permissionName = "full-access") {
6455
+ return { base, auth, permissions: [fullAccess(permissionName)] };
6449
6456
  }
6450
6457
  var SERVICE_CONFIGS = {
6451
6458
  ahrefs: {
@@ -6648,8 +6655,16 @@ var SERVICE_CONFIGS = {
6648
6655
  },
6649
6656
  slack: {
6650
6657
  apis: [
6651
- api("https://slack.com/api", bearerAuth("SLACK_TOKEN")),
6652
- api("https://files.slack.com", bearerAuth("SLACK_TOKEN"))
6658
+ api(
6659
+ "https://slack.com/api",
6660
+ bearerAuth("SLACK_TOKEN"),
6661
+ "api-full-access"
6662
+ ),
6663
+ api(
6664
+ "https://files.slack.com",
6665
+ bearerAuth("SLACK_TOKEN"),
6666
+ "files-full-access"
6667
+ )
6653
6668
  ],
6654
6669
  placeholders: {
6655
6670
  SLACK_TOKEN: "xoxb-0000-0000-vm0placeholder"
@@ -6657,14 +6672,30 @@ var SERVICE_CONFIGS = {
6657
6672
  },
6658
6673
  docusign: {
6659
6674
  apis: [
6660
- api("https://demo.docusign.net/restapi", bearerAuth("DOCUSIGN_TOKEN")),
6661
- api("https://na1.docusign.net/restapi", bearerAuth("DOCUSIGN_TOKEN"))
6675
+ api(
6676
+ "https://demo.docusign.net/restapi",
6677
+ bearerAuth("DOCUSIGN_TOKEN"),
6678
+ "demo-full-access"
6679
+ ),
6680
+ api(
6681
+ "https://na1.docusign.net/restapi",
6682
+ bearerAuth("DOCUSIGN_TOKEN"),
6683
+ "na1-full-access"
6684
+ )
6662
6685
  ]
6663
6686
  },
6664
6687
  dropbox: {
6665
6688
  apis: [
6666
- api("https://api.dropboxapi.com/2", bearerAuth("DROPBOX_TOKEN")),
6667
- api("https://content.dropboxapi.com/2", bearerAuth("DROPBOX_TOKEN"))
6689
+ api(
6690
+ "https://api.dropboxapi.com/2",
6691
+ bearerAuth("DROPBOX_TOKEN"),
6692
+ "api-full-access"
6693
+ ),
6694
+ api(
6695
+ "https://content.dropboxapi.com/2",
6696
+ bearerAuth("DROPBOX_TOKEN"),
6697
+ "content-full-access"
6698
+ )
6668
6699
  ]
6669
6700
  },
6670
6701
  linear: {
@@ -6672,9 +6703,21 @@ var SERVICE_CONFIGS = {
6672
6703
  },
6673
6704
  intercom: {
6674
6705
  apis: [
6675
- api("https://api.intercom.io", bearerAuth("INTERCOM_TOKEN")),
6676
- api("https://api.eu.intercom.io", bearerAuth("INTERCOM_TOKEN")),
6677
- api("https://api.au.intercom.io", bearerAuth("INTERCOM_TOKEN"))
6706
+ api(
6707
+ "https://api.intercom.io",
6708
+ bearerAuth("INTERCOM_TOKEN"),
6709
+ "us-full-access"
6710
+ ),
6711
+ api(
6712
+ "https://api.eu.intercom.io",
6713
+ bearerAuth("INTERCOM_TOKEN"),
6714
+ "eu-full-access"
6715
+ ),
6716
+ api(
6717
+ "https://api.au.intercom.io",
6718
+ bearerAuth("INTERCOM_TOKEN"),
6719
+ "au-full-access"
6720
+ )
6678
6721
  ]
6679
6722
  },
6680
6723
  jam: {
@@ -6682,16 +6725,24 @@ var SERVICE_CONFIGS = {
6682
6725
  },
6683
6726
  jotform: {
6684
6727
  apis: [
6685
- api("https://api.jotform.com", {
6686
- headers: {
6687
- APIKEY: "${secrets.JOTFORM_TOKEN}"
6688
- }
6689
- }),
6690
- api("https://eu-api.jotform.com", {
6691
- headers: {
6692
- APIKEY: "${secrets.JOTFORM_TOKEN}"
6693
- }
6694
- })
6728
+ api(
6729
+ "https://api.jotform.com",
6730
+ {
6731
+ headers: {
6732
+ APIKEY: "${secrets.JOTFORM_TOKEN}"
6733
+ }
6734
+ },
6735
+ "us-full-access"
6736
+ ),
6737
+ api(
6738
+ "https://eu-api.jotform.com",
6739
+ {
6740
+ headers: {
6741
+ APIKEY: "${secrets.JOTFORM_TOKEN}"
6742
+ }
6743
+ },
6744
+ "eu-full-access"
6745
+ )
6695
6746
  ]
6696
6747
  },
6697
6748
  line: {
@@ -6699,26 +6750,42 @@ var SERVICE_CONFIGS = {
6699
6750
  },
6700
6751
  make: {
6701
6752
  apis: [
6702
- api("https://eu1.make.com/api/v2", {
6703
- headers: {
6704
- Authorization: "Token ${secrets.MAKE_TOKEN}"
6705
- }
6706
- }),
6707
- api("https://eu2.make.com/api/v2", {
6708
- headers: {
6709
- Authorization: "Token ${secrets.MAKE_TOKEN}"
6710
- }
6711
- }),
6712
- api("https://us1.make.com/api/v2", {
6713
- headers: {
6714
- Authorization: "Token ${secrets.MAKE_TOKEN}"
6715
- }
6716
- }),
6717
- api("https://us2.make.com/api/v2", {
6718
- headers: {
6719
- Authorization: "Token ${secrets.MAKE_TOKEN}"
6720
- }
6721
- })
6753
+ api(
6754
+ "https://eu1.make.com/api/v2",
6755
+ {
6756
+ headers: {
6757
+ Authorization: "Token ${secrets.MAKE_TOKEN}"
6758
+ }
6759
+ },
6760
+ "eu1-full-access"
6761
+ ),
6762
+ api(
6763
+ "https://eu2.make.com/api/v2",
6764
+ {
6765
+ headers: {
6766
+ Authorization: "Token ${secrets.MAKE_TOKEN}"
6767
+ }
6768
+ },
6769
+ "eu2-full-access"
6770
+ ),
6771
+ api(
6772
+ "https://us1.make.com/api/v2",
6773
+ {
6774
+ headers: {
6775
+ Authorization: "Token ${secrets.MAKE_TOKEN}"
6776
+ }
6777
+ },
6778
+ "us1-full-access"
6779
+ ),
6780
+ api(
6781
+ "https://us2.make.com/api/v2",
6782
+ {
6783
+ headers: {
6784
+ Authorization: "Token ${secrets.MAKE_TOKEN}"
6785
+ }
6786
+ },
6787
+ "us2-full-access"
6788
+ )
6722
6789
  ]
6723
6790
  },
6724
6791
  metabase: {
@@ -6803,8 +6870,16 @@ var SERVICE_CONFIGS = {
6803
6870
  },
6804
6871
  posthog: {
6805
6872
  apis: [
6806
- api("https://us.posthog.com/api", bearerAuth("POSTHOG_ACCESS_TOKEN")),
6807
- api("https://app.posthog.com/api", bearerAuth("POSTHOG_ACCESS_TOKEN"))
6873
+ api(
6874
+ "https://us.posthog.com/api",
6875
+ bearerAuth("POSTHOG_ACCESS_TOKEN"),
6876
+ "us-full-access"
6877
+ ),
6878
+ api(
6879
+ "https://app.posthog.com/api",
6880
+ bearerAuth("POSTHOG_ACCESS_TOKEN"),
6881
+ "cloud-full-access"
6882
+ )
6808
6883
  ]
6809
6884
  },
6810
6885
  stripe: {
@@ -6832,29 +6907,14 @@ var SERVICE_CONFIGS = {
6832
6907
  apis: [api("https://plausible.io/api", bearerAuth("PLAUSIBLE_TOKEN"))]
6833
6908
  },
6834
6909
  mailchimp: {
6835
- apis: [
6836
- api("https://us1.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6837
- api("https://us2.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6838
- api("https://us3.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6839
- api("https://us4.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6840
- api("https://us5.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6841
- api("https://us6.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6842
- api("https://us7.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6843
- api("https://us8.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6844
- api("https://us9.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6845
- api("https://us10.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6846
- api("https://us11.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6847
- api("https://us12.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6848
- api("https://us13.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6849
- api("https://us14.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6850
- api("https://us15.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6851
- api("https://us16.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6852
- api("https://us17.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6853
- api("https://us18.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6854
- api("https://us19.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6855
- api("https://us20.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN")),
6856
- api("https://us21.api.mailchimp.com/3.0", bearerAuth("MAILCHIMP_TOKEN"))
6857
- ]
6910
+ apis: Array.from(
6911
+ { length: 21 },
6912
+ (_, i) => api(
6913
+ `https://us${i + 1}.api.mailchimp.com/3.0`,
6914
+ bearerAuth("MAILCHIMP_TOKEN"),
6915
+ `us${i + 1}-full-access`
6916
+ )
6917
+ )
6858
6918
  },
6859
6919
  chatwoot: {
6860
6920
  apis: [api("https://app.chatwoot.com", bearerAuth("CHATWOOT_TOKEN"))]
@@ -7705,8 +7765,7 @@ ${block}
7705
7765
 
7706
7766
  // src/lib/api/core/http.ts
7707
7767
  async function appendOrgParam(path18) {
7708
- const config = await loadConfig();
7709
- const activeOrg = config.activeOrg;
7768
+ const activeOrg = await getActiveOrg();
7710
7769
  if (!activeOrg) {
7711
7770
  return path18;
7712
7771
  }
@@ -9428,15 +9487,123 @@ function resolveServiceConfig(ref) {
9428
9487
  }
9429
9488
  return serviceConfig;
9430
9489
  }
9490
+ var VALID_RULE_METHODS = /* @__PURE__ */ new Set([
9491
+ "GET",
9492
+ "POST",
9493
+ "PUT",
9494
+ "PATCH",
9495
+ "DELETE",
9496
+ "HEAD",
9497
+ "OPTIONS",
9498
+ "ANY"
9499
+ ]);
9500
+ function validateRule(rule, permName, serviceName) {
9501
+ const parts = rule.split(" ", 2);
9502
+ if (parts.length !== 2 || !parts[1]) {
9503
+ throw new Error(
9504
+ `Invalid rule "${rule}" in permission "${permName}" of service "${serviceName}": must be "METHOD /path"`
9505
+ );
9506
+ }
9507
+ const [method, path18] = parts;
9508
+ if (!VALID_RULE_METHODS.has(method)) {
9509
+ throw new Error(
9510
+ `Invalid rule "${rule}" in permission "${permName}" of service "${serviceName}": unknown method "${method}" (must be uppercase)`
9511
+ );
9512
+ }
9513
+ if (!path18.startsWith("/")) {
9514
+ throw new Error(
9515
+ `Invalid rule "${rule}" in permission "${permName}" of service "${serviceName}": path must start with "/"`
9516
+ );
9517
+ }
9518
+ if (path18.includes("?") || path18.includes("#")) {
9519
+ throw new Error(
9520
+ `Invalid rule "${rule}" in permission "${permName}" of service "${serviceName}": path must not contain query string or fragment`
9521
+ );
9522
+ }
9523
+ const segments = path18.split("/").filter(Boolean);
9524
+ const paramNames = /* @__PURE__ */ new Set();
9525
+ for (let i = 0; i < segments.length; i++) {
9526
+ const seg = segments[i];
9527
+ if (seg.startsWith("{") && seg.endsWith("}")) {
9528
+ const name = seg.slice(1, -1);
9529
+ const baseName = name.endsWith("+") ? name.slice(0, -1) : name;
9530
+ if (!baseName) {
9531
+ throw new Error(
9532
+ `Invalid rule "${rule}" in permission "${permName}" of service "${serviceName}": empty parameter name`
9533
+ );
9534
+ }
9535
+ if (paramNames.has(baseName)) {
9536
+ throw new Error(
9537
+ `Invalid rule "${rule}" in permission "${permName}" of service "${serviceName}": duplicate parameter name "{${baseName}}"`
9538
+ );
9539
+ }
9540
+ paramNames.add(baseName);
9541
+ if (name.endsWith("+") && i !== segments.length - 1) {
9542
+ throw new Error(
9543
+ `Invalid rule "${rule}" in permission "${permName}" of service "${serviceName}": {${name}} must be the last segment`
9544
+ );
9545
+ }
9546
+ }
9547
+ }
9548
+ }
9549
+ function validateBaseUrl(base, serviceName) {
9550
+ let url;
9551
+ try {
9552
+ url = new URL(base);
9553
+ } catch {
9554
+ throw new Error(
9555
+ `Invalid base URL "${base}" in service "${serviceName}": not a valid URL`
9556
+ );
9557
+ }
9558
+ if (url.search) {
9559
+ throw new Error(
9560
+ `Invalid base URL "${base}" in service "${serviceName}": must not contain query string`
9561
+ );
9562
+ }
9563
+ if (url.hash) {
9564
+ throw new Error(
9565
+ `Invalid base URL "${base}" in service "${serviceName}": must not contain fragment`
9566
+ );
9567
+ }
9568
+ }
9431
9569
  function collectAndValidatePermissions(ref, serviceConfig) {
9570
+ if (serviceConfig.apis.length === 0) {
9571
+ throw new Error(
9572
+ `Service "${serviceConfig.name}" (ref "${ref}") has no api entries`
9573
+ );
9574
+ }
9432
9575
  const available = /* @__PURE__ */ new Set();
9433
9576
  for (const api2 of serviceConfig.apis) {
9434
- for (const perm of api2.permissions ?? []) {
9577
+ validateBaseUrl(api2.base, serviceConfig.name);
9578
+ if (!api2.permissions || api2.permissions.length === 0) {
9579
+ throw new Error(
9580
+ `API entry "${api2.base}" in service "${serviceConfig.name}" (ref "${ref}") has no permissions`
9581
+ );
9582
+ }
9583
+ for (const perm of api2.permissions) {
9584
+ if (!perm.name) {
9585
+ throw new Error(
9586
+ `Service "${serviceConfig.name}" (ref "${ref}") has a permission with empty name`
9587
+ );
9588
+ }
9435
9589
  if (perm.name === "all") {
9436
9590
  throw new Error(
9437
9591
  `Service "${serviceConfig.name}" (ref "${ref}") has a permission named "all", which is a reserved keyword`
9438
9592
  );
9439
9593
  }
9594
+ if (available.has(perm.name)) {
9595
+ throw new Error(
9596
+ `Duplicate permission name "${perm.name}" in service "${serviceConfig.name}" (ref "${ref}")`
9597
+ );
9598
+ }
9599
+ if (perm.rules.length === 0) {
9600
+ throw new Error(
9601
+ `Permission "${perm.name}" in service "${serviceConfig.name}" (ref "${ref}") has no rules`
9602
+ );
9603
+ }
9604
+ for (const rule of perm.rules) {
9605
+ validateRule(rule, perm.name, serviceConfig.name);
9606
+ }
9440
9607
  available.add(perm.name);
9441
9608
  }
9442
9609
  }
@@ -9686,7 +9853,7 @@ var composeCommand = new Command7().name("compose").description("Create or updat
9686
9853
  options.autoUpdate = false;
9687
9854
  }
9688
9855
  if (options.autoUpdate !== false) {
9689
- await startSilentUpgrade("9.57.1");
9856
+ await startSilentUpgrade("9.58.0");
9690
9857
  }
9691
9858
  try {
9692
9859
  let result;
@@ -10859,7 +11026,7 @@ var mainRunCommand = new Command8().name("run").description("Run an agent").argu
10859
11026
  withErrorHandler(
10860
11027
  async (identifier, prompt, options) => {
10861
11028
  if (options.autoUpdate !== false) {
10862
- await startSilentUpgrade("9.57.1");
11029
+ await startSilentUpgrade("9.58.0");
10863
11030
  }
10864
11031
  const { org, name, version } = parseIdentifier(identifier);
10865
11032
  if (org && !options.experimentalSharedAgent) {
@@ -12546,7 +12713,7 @@ var cookAction = new Command34().name("cook").description("Quick start: prepare,
12546
12713
  withErrorHandler(
12547
12714
  async (prompt, options) => {
12548
12715
  if (options.autoUpdate !== false) {
12549
- const shouldExit = await checkAndUpgrade("9.57.1", prompt);
12716
+ const shouldExit = await checkAndUpgrade("9.58.0", prompt);
12550
12717
  if (shouldExit) {
12551
12718
  process.exit(0);
12552
12719
  }
@@ -13863,6 +14030,7 @@ var setCommand = new Command41().name("set").description("Rename your organizati
13863
14030
  );
13864
14031
  }
13865
14032
  const org = await updateOrg({ slug, force: true });
14033
+ await saveConfig({ activeOrg: org.slug });
13866
14034
  console.log(chalk37.green(`\u2713 Organization updated to ${org.slug}`));
13867
14035
  console.log();
13868
14036
  console.log("Your agents will now be namespaced as:");
@@ -13884,8 +14052,7 @@ import chalk38 from "chalk";
13884
14052
  var listCommand5 = new Command42().name("list").description("List all accessible organizations").action(
13885
14053
  withErrorHandler(async () => {
13886
14054
  const result = await listOrgs();
13887
- const config = await loadConfig();
13888
- const activeOrg = config.activeOrg;
14055
+ const activeOrg = await getActiveOrg();
13889
14056
  console.log(chalk38.bold("Available organizations:"));
13890
14057
  for (const org of result.orgs) {
13891
14058
  const isCurrent = org.slug === activeOrg;
@@ -17897,13 +18064,13 @@ var upgradeCommand = new Command90().name("upgrade").description("Upgrade vm0 CL
17897
18064
  if (latestVersion === null) {
17898
18065
  throw new Error("Could not check for updates. Please try again later.");
17899
18066
  }
17900
- if (latestVersion === "9.57.1") {
17901
- console.log(chalk83.green(`\u2713 Already up to date (${"9.57.1"})`));
18067
+ if (latestVersion === "9.58.0") {
18068
+ console.log(chalk83.green(`\u2713 Already up to date (${"9.58.0"})`));
17902
18069
  return;
17903
18070
  }
17904
18071
  console.log(
17905
18072
  chalk83.yellow(
17906
- `Current version: ${"9.57.1"} -> Latest version: ${latestVersion}`
18073
+ `Current version: ${"9.58.0"} -> Latest version: ${latestVersion}`
17907
18074
  )
17908
18075
  );
17909
18076
  console.log();
@@ -17930,7 +18097,7 @@ var upgradeCommand = new Command90().name("upgrade").description("Upgrade vm0 CL
17930
18097
  const success = await performUpgrade(packageManager);
17931
18098
  if (success) {
17932
18099
  console.log(
17933
- chalk83.green(`\u2713 Upgraded from ${"9.57.1"} to ${latestVersion}`)
18100
+ chalk83.green(`\u2713 Upgraded from ${"9.58.0"} to ${latestVersion}`)
17934
18101
  );
17935
18102
  return;
17936
18103
  }
@@ -17944,7 +18111,7 @@ var upgradeCommand = new Command90().name("upgrade").description("Upgrade vm0 CL
17944
18111
 
17945
18112
  // src/index.ts
17946
18113
  var program = new Command91();
17947
- program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.57.1");
18114
+ program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.58.0");
17948
18115
  program.addCommand(authCommand);
17949
18116
  program.addCommand(infoCommand);
17950
18117
  program.addCommand(composeCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vm0/cli",
3
- "version": "9.57.1",
3
+ "version": "9.58.0",
4
4
  "description": "CLI application",
5
5
  "repository": {
6
6
  "type": "git",