@vm0/cli 9.100.1 → 9.100.2
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/{chunk-CENK4RLS.js → chunk-7RQXNUYT.js} +111 -63
- package/chunk-7RQXNUYT.js.map +1 -0
- package/index.js +10 -10
- package/package.json +1 -1
- package/zero.js +95 -34
- package/zero.js.map +1 -1
- package/chunk-CENK4RLS.js.map +0 -1
package/index.js
CHANGED
|
@@ -61,7 +61,7 @@ import {
|
|
|
61
61
|
showNextSteps,
|
|
62
62
|
volumeConfigSchema,
|
|
63
63
|
withErrorHandler
|
|
64
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-7RQXNUYT.js";
|
|
65
65
|
|
|
66
66
|
// src/index.ts
|
|
67
67
|
import { Command as Command44 } from "commander";
|
|
@@ -454,7 +454,7 @@ function getConfigPath() {
|
|
|
454
454
|
return join(homedir(), ".vm0", "config.json");
|
|
455
455
|
}
|
|
456
456
|
var infoCommand = new Command6().name("info").description("Display environment and debug information").action(async () => {
|
|
457
|
-
console.log(chalk3.bold(`VM0 CLI v${"9.100.
|
|
457
|
+
console.log(chalk3.bold(`VM0 CLI v${"9.100.2"}`));
|
|
458
458
|
console.log();
|
|
459
459
|
const config = await loadConfig();
|
|
460
460
|
const hasEnvToken = !!process.env.VM0_TOKEN;
|
|
@@ -1581,7 +1581,7 @@ var composeCommand = new Command7().name("compose").description("Create or updat
|
|
|
1581
1581
|
options.autoUpdate = false;
|
|
1582
1582
|
}
|
|
1583
1583
|
if (options.autoUpdate !== false) {
|
|
1584
|
-
await startSilentUpgrade("9.100.
|
|
1584
|
+
await startSilentUpgrade("9.100.2");
|
|
1585
1585
|
}
|
|
1586
1586
|
try {
|
|
1587
1587
|
let result;
|
|
@@ -1655,7 +1655,7 @@ var mainRunCommand = new Command8().name("run").description("Run an agent").argu
|
|
|
1655
1655
|
withErrorHandler(
|
|
1656
1656
|
async (identifier, prompt, options) => {
|
|
1657
1657
|
if (options.autoUpdate !== false) {
|
|
1658
|
-
await startSilentUpgrade("9.100.
|
|
1658
|
+
await startSilentUpgrade("9.100.2");
|
|
1659
1659
|
}
|
|
1660
1660
|
const { name, version } = parseIdentifier(identifier);
|
|
1661
1661
|
let composeId;
|
|
@@ -3413,7 +3413,7 @@ var cookAction = new Command35().name("cook").description("Quick start: prepare,
|
|
|
3413
3413
|
withErrorHandler(
|
|
3414
3414
|
async (prompt, options) => {
|
|
3415
3415
|
if (options.autoUpdate !== false) {
|
|
3416
|
-
const shouldExit = await checkAndUpgrade("9.100.
|
|
3416
|
+
const shouldExit = await checkAndUpgrade("9.100.2", prompt);
|
|
3417
3417
|
if (shouldExit) {
|
|
3418
3418
|
process.exit(0);
|
|
3419
3419
|
}
|
|
@@ -4156,13 +4156,13 @@ var upgradeCommand = new Command42().name("upgrade").description("Upgrade vm0 CL
|
|
|
4156
4156
|
if (latestVersion === null) {
|
|
4157
4157
|
throw new Error("Could not check for updates. Please try again later.");
|
|
4158
4158
|
}
|
|
4159
|
-
if (latestVersion === "9.100.
|
|
4160
|
-
console.log(chalk33.green(`\u2713 Already up to date (${"9.100.
|
|
4159
|
+
if (latestVersion === "9.100.2") {
|
|
4160
|
+
console.log(chalk33.green(`\u2713 Already up to date (${"9.100.2"})`));
|
|
4161
4161
|
return;
|
|
4162
4162
|
}
|
|
4163
4163
|
console.log(
|
|
4164
4164
|
chalk33.yellow(
|
|
4165
|
-
`Current version: ${"9.100.
|
|
4165
|
+
`Current version: ${"9.100.2"} -> Latest version: ${latestVersion}`
|
|
4166
4166
|
)
|
|
4167
4167
|
);
|
|
4168
4168
|
console.log();
|
|
@@ -4189,7 +4189,7 @@ var upgradeCommand = new Command42().name("upgrade").description("Upgrade vm0 CL
|
|
|
4189
4189
|
const success = await performUpgrade(packageManager);
|
|
4190
4190
|
if (success) {
|
|
4191
4191
|
console.log(
|
|
4192
|
-
chalk33.green(`\u2713 Upgraded from ${"9.100.
|
|
4192
|
+
chalk33.green(`\u2713 Upgraded from ${"9.100.2"} to ${latestVersion}`)
|
|
4193
4193
|
);
|
|
4194
4194
|
return;
|
|
4195
4195
|
}
|
|
@@ -4257,7 +4257,7 @@ var whoamiCommand = new Command43().name("whoami").description("Show current ide
|
|
|
4257
4257
|
|
|
4258
4258
|
// src/index.ts
|
|
4259
4259
|
var program = new Command44();
|
|
4260
|
-
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.100.
|
|
4260
|
+
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.100.2");
|
|
4261
4261
|
program.addCommand(authCommand);
|
|
4262
4262
|
program.addCommand(infoCommand);
|
|
4263
4263
|
program.addCommand(composeCommand);
|
package/package.json
CHANGED
package/zero.js
CHANGED
|
@@ -89,6 +89,7 @@ import {
|
|
|
89
89
|
promptText,
|
|
90
90
|
removeZeroOrgMember,
|
|
91
91
|
renderRunCreated,
|
|
92
|
+
requestDeveloperSupportConsent,
|
|
92
93
|
resolveCompose,
|
|
93
94
|
resolveFirewallPolicies,
|
|
94
95
|
resolveZeroScheduleByAgent,
|
|
@@ -100,6 +101,7 @@ import {
|
|
|
100
101
|
setZeroOrgVariable,
|
|
101
102
|
setZeroSecret,
|
|
102
103
|
setZeroVariable,
|
|
104
|
+
submitDeveloperSupport,
|
|
103
105
|
switchZeroOrg,
|
|
104
106
|
updateSkill,
|
|
105
107
|
updateZeroAgent,
|
|
@@ -109,10 +111,10 @@ import {
|
|
|
109
111
|
updateZeroUserPreferences,
|
|
110
112
|
upsertZeroOrgModelProvider,
|
|
111
113
|
withErrorHandler
|
|
112
|
-
} from "./chunk-
|
|
114
|
+
} from "./chunk-7RQXNUYT.js";
|
|
113
115
|
|
|
114
116
|
// src/zero.ts
|
|
115
|
-
import { Command as
|
|
117
|
+
import { Command as Command74 } from "commander";
|
|
116
118
|
|
|
117
119
|
// src/commands/zero/org/index.ts
|
|
118
120
|
import { Command as Command23 } from "commander";
|
|
@@ -3870,7 +3872,7 @@ function printConnectorPermissions(type, resolvedPolicies) {
|
|
|
3870
3872
|
console.log(` ${icon} ${perm.name.padEnd(nameWidth)} ${desc}`);
|
|
3871
3873
|
}
|
|
3872
3874
|
}
|
|
3873
|
-
async function showSandboxInfo() {
|
|
3875
|
+
async function showSandboxInfo(showPermissions) {
|
|
3874
3876
|
const agentId = process.env.ZERO_AGENT_ID;
|
|
3875
3877
|
const payload = decodeZeroTokenPayload();
|
|
3876
3878
|
console.log(`Agent ID: ${agentId}`);
|
|
@@ -3882,31 +3884,45 @@ async function showSandboxInfo() {
|
|
|
3882
3884
|
console.log(` ${payload.capabilities.join(", ")}`);
|
|
3883
3885
|
}
|
|
3884
3886
|
try {
|
|
3885
|
-
|
|
3886
|
-
|
|
3887
|
-
|
|
3888
|
-
|
|
3889
|
-
|
|
3890
|
-
|
|
3891
|
-
|
|
3892
|
-
|
|
3893
|
-
|
|
3894
|
-
|
|
3895
|
-
|
|
3896
|
-
|
|
3897
|
-
|
|
3898
|
-
resolvedPolicies = resolveFirewallPolicies(
|
|
3899
|
-
agentResult.value.firewallPolicies,
|
|
3900
|
-
enabledResult.value
|
|
3901
|
-
);
|
|
3902
|
-
}
|
|
3903
|
-
console.log();
|
|
3904
|
-
console.log(chalk47.bold("Connectors:"));
|
|
3905
|
-
for (const connector of identities) {
|
|
3906
|
-
const identity = formatConnectorIdentity2(connector);
|
|
3907
|
-
console.log(` ${connector.type.padEnd(14)}${identity}`);
|
|
3887
|
+
if (showPermissions) {
|
|
3888
|
+
const [connectorsResult, agentResult, enabledResult] = await Promise.allSettled([
|
|
3889
|
+
listZeroConnectors(),
|
|
3890
|
+
getZeroAgent(agentId),
|
|
3891
|
+
getZeroAgentUserConnectors(agentId)
|
|
3892
|
+
]);
|
|
3893
|
+
if (connectorsResult.status === "rejected") return;
|
|
3894
|
+
const identities = connectorsResult.value.connectors.filter((c) => {
|
|
3895
|
+
return c.externalUsername !== null || c.externalEmail !== null;
|
|
3896
|
+
});
|
|
3897
|
+
if (identities.length === 0) return;
|
|
3898
|
+
let resolvedPolicies = null;
|
|
3899
|
+
const permissionDataAvailable = agentResult.status === "fulfilled" && enabledResult.status === "fulfilled";
|
|
3908
3900
|
if (permissionDataAvailable) {
|
|
3909
|
-
|
|
3901
|
+
resolvedPolicies = resolveFirewallPolicies(
|
|
3902
|
+
agentResult.value.firewallPolicies,
|
|
3903
|
+
enabledResult.value
|
|
3904
|
+
);
|
|
3905
|
+
}
|
|
3906
|
+
console.log();
|
|
3907
|
+
console.log(chalk47.bold("Connectors:"));
|
|
3908
|
+
for (const connector of identities) {
|
|
3909
|
+
const identity = formatConnectorIdentity2(connector);
|
|
3910
|
+
console.log(` ${connector.type.padEnd(14)}${identity}`);
|
|
3911
|
+
if (permissionDataAvailable) {
|
|
3912
|
+
printConnectorPermissions(connector.type, resolvedPolicies);
|
|
3913
|
+
}
|
|
3914
|
+
}
|
|
3915
|
+
} else {
|
|
3916
|
+
const connectors = await listZeroConnectors();
|
|
3917
|
+
const identities = connectors.connectors.filter((c) => {
|
|
3918
|
+
return c.externalUsername !== null || c.externalEmail !== null;
|
|
3919
|
+
});
|
|
3920
|
+
if (identities.length === 0) return;
|
|
3921
|
+
console.log();
|
|
3922
|
+
console.log(chalk47.bold("Connectors:"));
|
|
3923
|
+
for (const connector of identities) {
|
|
3924
|
+
const identity = formatConnectorIdentity2(connector);
|
|
3925
|
+
console.log(` ${connector.type.padEnd(14)}${identity}`);
|
|
3910
3926
|
}
|
|
3911
3927
|
}
|
|
3912
3928
|
} catch {
|
|
@@ -3932,19 +3948,21 @@ async function showLocalInfo() {
|
|
|
3932
3948
|
console.log(` Active: ${activeOrg}`);
|
|
3933
3949
|
}
|
|
3934
3950
|
}
|
|
3935
|
-
var zeroWhoamiCommand = new Command61().name("whoami").description("Show agent identity, run ID, and capabilities").addHelpText(
|
|
3951
|
+
var zeroWhoamiCommand = new Command61().name("whoami").description("Show agent identity, run ID, and capabilities").option("--permissions", "Show full permission details for each connector").addHelpText(
|
|
3936
3952
|
"after",
|
|
3937
3953
|
`
|
|
3938
3954
|
Examples:
|
|
3939
3955
|
zero whoami
|
|
3956
|
+
zero whoami --permissions
|
|
3940
3957
|
|
|
3941
3958
|
Notes:
|
|
3942
3959
|
- Inside sandbox: shows agent ID, run ID, org ID, and granted capabilities
|
|
3960
|
+
- Use --permissions to see detailed permission breakdown per connector
|
|
3943
3961
|
- Your agent ID is also available as $ZERO_AGENT_ID`
|
|
3944
3962
|
).action(
|
|
3945
|
-
withErrorHandler(async () => {
|
|
3963
|
+
withErrorHandler(async (options) => {
|
|
3946
3964
|
if (isInsideSandbox()) {
|
|
3947
|
-
await showSandboxInfo();
|
|
3965
|
+
await showSandboxInfo(options.permissions ?? false);
|
|
3948
3966
|
} else {
|
|
3949
3967
|
await showLocalInfo();
|
|
3950
3968
|
}
|
|
@@ -4624,6 +4642,47 @@ Examples:
|
|
|
4624
4642
|
)
|
|
4625
4643
|
);
|
|
4626
4644
|
|
|
4645
|
+
// src/commands/zero/developer-support.ts
|
|
4646
|
+
import { Command as Command73 } from "commander";
|
|
4647
|
+
var zeroDeveloperSupportCommand = new Command73().name("developer-support").description("Submit a diagnostic report to the dev team").requiredOption("--title <text>", "Issue title").requiredOption("--description <text>", "Diagnostic description").option("--consent-code <code>", "User-provided verification code").addHelpText(
|
|
4648
|
+
"after",
|
|
4649
|
+
`
|
|
4650
|
+
Examples:
|
|
4651
|
+
Step 1 \u2014 Get consent code:
|
|
4652
|
+
zero developer-support --title "GitHub 403 error" --description "Connector connected but API returns 403"
|
|
4653
|
+
|
|
4654
|
+
Step 2 \u2014 Submit with code:
|
|
4655
|
+
zero developer-support --title "GitHub 403 error" --description "Connector connected but API returns 403" --consent-code A7X3
|
|
4656
|
+
|
|
4657
|
+
Notes:
|
|
4658
|
+
- The consent code must be provided by the user to confirm sharing their conversation
|
|
4659
|
+
- The dev team will receive a diagnostic bundle with conversation, environment, and connector info`
|
|
4660
|
+
).action(
|
|
4661
|
+
withErrorHandler(
|
|
4662
|
+
async (options) => {
|
|
4663
|
+
if (!options.consentCode) {
|
|
4664
|
+
const { consentCode } = await requestDeveloperSupportConsent({
|
|
4665
|
+
title: options.title,
|
|
4666
|
+
description: options.description
|
|
4667
|
+
});
|
|
4668
|
+
console.log(
|
|
4669
|
+
"Consent required to share chat history with developers."
|
|
4670
|
+
);
|
|
4671
|
+
console.log(`Code: ${consentCode}`);
|
|
4672
|
+
console.log("Ask the user to confirm by providing this code.");
|
|
4673
|
+
} else {
|
|
4674
|
+
const { reference } = await submitDeveloperSupport({
|
|
4675
|
+
title: options.title,
|
|
4676
|
+
description: options.description,
|
|
4677
|
+
consentCode: options.consentCode
|
|
4678
|
+
});
|
|
4679
|
+
console.log("Developer support request submitted successfully.");
|
|
4680
|
+
console.log(`Reference: ${reference}`);
|
|
4681
|
+
}
|
|
4682
|
+
}
|
|
4683
|
+
)
|
|
4684
|
+
);
|
|
4685
|
+
|
|
4627
4686
|
// src/zero.ts
|
|
4628
4687
|
var COMMAND_CAPABILITY_MAP = {
|
|
4629
4688
|
agent: "agent:read",
|
|
@@ -4635,7 +4694,8 @@ var COMMAND_CAPABILITY_MAP = {
|
|
|
4635
4694
|
logs: "agent-run:read",
|
|
4636
4695
|
slack: "slack:write",
|
|
4637
4696
|
whoami: null,
|
|
4638
|
-
"ask-user": null
|
|
4697
|
+
"ask-user": null,
|
|
4698
|
+
"developer-support": null
|
|
4639
4699
|
};
|
|
4640
4700
|
var DEFAULT_COMMANDS = [
|
|
4641
4701
|
zeroOrgCommand,
|
|
@@ -4651,7 +4711,8 @@ var DEFAULT_COMMANDS = [
|
|
|
4651
4711
|
zeroLogsCommand,
|
|
4652
4712
|
zeroWhoamiCommand,
|
|
4653
4713
|
zeroAskUserCommand,
|
|
4654
|
-
zeroSkillCommand
|
|
4714
|
+
zeroSkillCommand,
|
|
4715
|
+
zeroDeveloperSupportCommand
|
|
4655
4716
|
];
|
|
4656
4717
|
function shouldHideCommand(name, payload) {
|
|
4657
4718
|
if (!payload) return false;
|
|
@@ -4667,10 +4728,10 @@ function registerZeroCommands(prog, commands) {
|
|
|
4667
4728
|
prog.addCommand(cmd, hidden ? { hidden: true } : {});
|
|
4668
4729
|
}
|
|
4669
4730
|
}
|
|
4670
|
-
var program = new
|
|
4731
|
+
var program = new Command74();
|
|
4671
4732
|
program.name("zero").description(
|
|
4672
4733
|
"Zero CLI \u2014 interact with the zero platform from inside the sandbox"
|
|
4673
|
-
).version("9.100.
|
|
4734
|
+
).version("9.100.2").addHelpText(
|
|
4674
4735
|
"after",
|
|
4675
4736
|
`
|
|
4676
4737
|
Examples:
|