@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.
- package/index.js +257 -90
- 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.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.
|
|
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
|
|
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.
|
|
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
|
-
|
|
6444
|
-
name: "
|
|
6445
|
-
|
|
6446
|
-
|
|
6447
|
-
|
|
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(
|
|
6652
|
-
|
|
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(
|
|
6661
|
-
|
|
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(
|
|
6667
|
-
|
|
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(
|
|
6676
|
-
|
|
6677
|
-
|
|
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(
|
|
6686
|
-
|
|
6687
|
-
|
|
6688
|
-
|
|
6689
|
-
|
|
6690
|
-
|
|
6691
|
-
|
|
6692
|
-
|
|
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(
|
|
6703
|
-
|
|
6704
|
-
|
|
6705
|
-
|
|
6706
|
-
|
|
6707
|
-
|
|
6708
|
-
|
|
6709
|
-
|
|
6710
|
-
|
|
6711
|
-
|
|
6712
|
-
|
|
6713
|
-
|
|
6714
|
-
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
|
|
6718
|
-
|
|
6719
|
-
|
|
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(
|
|
6807
|
-
|
|
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
|
-
|
|
6837
|
-
|
|
6838
|
-
|
|
6839
|
-
|
|
6840
|
-
|
|
6841
|
-
|
|
6842
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
17901
|
-
console.log(chalk83.green(`\u2713 Already up to date (${"9.
|
|
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.
|
|
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.
|
|
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.
|
|
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);
|