@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/index.js CHANGED
@@ -61,7 +61,7 @@ import {
61
61
  showNextSteps,
62
62
  volumeConfigSchema,
63
63
  withErrorHandler
64
- } from "./chunk-CENK4RLS.js";
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.1"}`));
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.1");
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.1");
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.1", prompt);
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.1") {
4160
- console.log(chalk33.green(`\u2713 Already up to date (${"9.100.1"})`));
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.1"} -> Latest version: ${latestVersion}`
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.1"} to ${latestVersion}`)
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.1");
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vm0/cli",
3
- "version": "9.100.1",
3
+ "version": "9.100.2",
4
4
  "description": "CLI application",
5
5
  "repository": {
6
6
  "type": "git",
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-CENK4RLS.js";
114
+ } from "./chunk-7RQXNUYT.js";
113
115
 
114
116
  // src/zero.ts
115
- import { Command as Command73 } from "commander";
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
- const [connectorsResult, agentResult, enabledResult] = await Promise.allSettled([
3886
- listZeroConnectors(),
3887
- getZeroAgent(agentId),
3888
- getZeroAgentUserConnectors(agentId)
3889
- ]);
3890
- if (connectorsResult.status === "rejected") return;
3891
- const identities = connectorsResult.value.connectors.filter((c) => {
3892
- return c.externalUsername !== null || c.externalEmail !== null;
3893
- });
3894
- if (identities.length === 0) return;
3895
- let resolvedPolicies = null;
3896
- const permissionDataAvailable = agentResult.status === "fulfilled" && enabledResult.status === "fulfilled";
3897
- if (permissionDataAvailable) {
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
- printConnectorPermissions(connector.type, resolvedPolicies);
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 Command73();
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.1").addHelpText(
4734
+ ).version("9.100.2").addHelpText(
4674
4735
  "after",
4675
4736
  `
4676
4737
  Examples: