@vm0/cli 9.132.0 → 9.132.1

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
@@ -62,7 +62,7 @@ import {
62
62
  source_default,
63
63
  volumeConfigSchema,
64
64
  withErrorHandler
65
- } from "./chunk-3OOH3FG4.js";
65
+ } from "./chunk-ZKOPXRWA.js";
66
66
  import {
67
67
  __commonJS,
68
68
  __require,
@@ -7771,7 +7771,7 @@ function getConfigPath() {
7771
7771
  return join(homedir(), ".vm0", "config.json");
7772
7772
  }
7773
7773
  var infoCommand = new Command().name("info").description("Display environment and debug information").action(async () => {
7774
- console.log(source_default.bold(`VM0 CLI v${"9.132.0"}`));
7774
+ console.log(source_default.bold(`VM0 CLI v${"9.132.1"}`));
7775
7775
  console.log();
7776
7776
  const config = await loadConfig();
7777
7777
  const hasEnvToken = !!process.env.VM0_TOKEN;
@@ -11711,7 +11711,7 @@ var composeCommand = new Command().name("compose").description("Create or update
11711
11711
  options.autoUpdate = false;
11712
11712
  }
11713
11713
  if (options.autoUpdate !== false) {
11714
- await startSilentUpgrade("9.132.0");
11714
+ await startSilentUpgrade("9.132.1");
11715
11715
  }
11716
11716
  try {
11717
11717
  let result;
@@ -11803,7 +11803,7 @@ var mainRunCommand = new Command().name("run").description("Run an agent").argum
11803
11803
  withErrorHandler(
11804
11804
  async (identifier, prompt, options) => {
11805
11805
  if (options.autoUpdate !== false) {
11806
- await startSilentUpgrade("9.132.0");
11806
+ await startSilentUpgrade("9.132.1");
11807
11807
  }
11808
11808
  const { name, version } = parseIdentifier(identifier);
11809
11809
  let composeId;
@@ -13576,13 +13576,13 @@ var upgradeCommand = new Command().name("upgrade").description("Upgrade vm0 CLI
13576
13576
  if (latestVersion === null) {
13577
13577
  throw new Error("Could not check for updates. Please try again later.");
13578
13578
  }
13579
- if (latestVersion === "9.132.0") {
13580
- console.log(source_default.green(`\u2713 Already up to date (${"9.132.0"})`));
13579
+ if (latestVersion === "9.132.1") {
13580
+ console.log(source_default.green(`\u2713 Already up to date (${"9.132.1"})`));
13581
13581
  return;
13582
13582
  }
13583
13583
  console.log(
13584
13584
  source_default.yellow(
13585
- `Current version: ${"9.132.0"} -> Latest version: ${latestVersion}`
13585
+ `Current version: ${"9.132.1"} -> Latest version: ${latestVersion}`
13586
13586
  )
13587
13587
  );
13588
13588
  console.log();
@@ -13609,7 +13609,7 @@ var upgradeCommand = new Command().name("upgrade").description("Upgrade vm0 CLI
13609
13609
  const success = await performUpgrade(packageManager);
13610
13610
  if (success) {
13611
13611
  console.log(
13612
- source_default.green(`\u2713 Upgraded from ${"9.132.0"} to ${latestVersion}`)
13612
+ source_default.green(`\u2713 Upgraded from ${"9.132.1"} to ${latestVersion}`)
13613
13613
  );
13614
13614
  return;
13615
13615
  }
@@ -13676,7 +13676,7 @@ var whoamiCommand = new Command().name("whoami").description("Show current ident
13676
13676
 
13677
13677
  // src/index.ts
13678
13678
  var program = new Command();
13679
- program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.132.0");
13679
+ program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.132.1");
13680
13680
  program.addCommand(authCommand);
13681
13681
  program.addCommand(infoCommand);
13682
13682
  program.addCommand(composeCommand);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vm0/cli",
3
- "version": "9.132.0",
3
+ "version": "9.132.1",
4
4
  "description": "CLI application",
5
5
  "repository": {
6
6
  "type": "git",
package/zero.js CHANGED
@@ -13,7 +13,6 @@ import {
13
13
  completeSlackFileUpload,
14
14
  configureGlobalProxyFromEnv,
15
15
  connectorTypeSchema,
16
- createPhoneCall,
17
16
  createSkill,
18
17
  createZeroAgent,
19
18
  createZeroRun,
@@ -42,7 +41,6 @@ import {
42
41
  getDefaultAuthMethod,
43
42
  getDefaultModel,
44
43
  getModels,
45
- getPhoneCallDetail,
46
44
  getSecretsForAuthMethod,
47
45
  getSelectableProviderTypes,
48
46
  getSkill,
@@ -64,7 +62,6 @@ import {
64
62
  isInteractive,
65
63
  isUUID,
66
64
  leaveZeroOrg,
67
- listPhoneCalls,
68
65
  listSkills,
69
66
  listZeroAgents,
70
67
  listZeroConnectors,
@@ -115,7 +112,7 @@ import {
115
112
  upsertZeroOrgModelProvider,
116
113
  withErrorHandler,
117
114
  zeroAgentCustomSkillNameSchema
118
- } from "./chunk-3OOH3FG4.js";
115
+ } from "./chunk-ZKOPXRWA.js";
119
116
  import {
120
117
  __toESM,
121
118
  init_esm_shims
@@ -4008,27 +4005,6 @@ var agentmailFirewall = {
4008
4005
  ]
4009
4006
  };
4010
4007
 
4011
- // ../../packages/core/src/firewalls/agentphone.generated.ts
4012
- init_esm_shims();
4013
- var agentphoneFirewall = {
4014
- name: "agentphone",
4015
- description: "AgentPhone API",
4016
- placeholders: {
4017
- AGENTPHONE_TOKEN: "ap_test_c0ffee5afe10ca1c0ffee5afe10ca1c"
4018
- },
4019
- apis: [
4020
- {
4021
- base: "https://api.agentphone.to",
4022
- auth: {
4023
- headers: {
4024
- Authorization: "Bearer ${{ secrets.AGENTPHONE_TOKEN }}"
4025
- }
4026
- },
4027
- permissions: []
4028
- }
4029
- ]
4030
- };
4031
-
4032
4008
  // ../../packages/core/src/firewalls/amplitude.generated.ts
4033
4009
  init_esm_shims();
4034
4010
  var amplitudeFirewall = {
@@ -4824,6 +4800,27 @@ var browserbaseFirewall = {
4824
4800
  ]
4825
4801
  };
4826
4802
 
4803
+ // ../../packages/core/src/firewalls/browser-use.generated.ts
4804
+ init_esm_shims();
4805
+ var browserUseFirewall = {
4806
+ name: "browser-use",
4807
+ description: "Browser Use",
4808
+ placeholders: {
4809
+ BROWSER_USE_TOKEN: "bu_CoffeeSafeLocalCoffeeSafeLocalCoffee"
4810
+ },
4811
+ apis: [
4812
+ {
4813
+ base: "https://api.browser-use.com",
4814
+ auth: {
4815
+ headers: {
4816
+ "X-Browser-Use-API-Key": "${{ secrets.BROWSER_USE_TOKEN }}"
4817
+ }
4818
+ },
4819
+ permissions: []
4820
+ }
4821
+ ]
4822
+ };
4823
+
4827
4824
  // ../../packages/core/src/firewalls/browserless.generated.ts
4828
4825
  init_esm_shims();
4829
4826
  var browserlessFirewall = {
@@ -13238,7 +13235,6 @@ var zoomFirewall = {
13238
13235
  // ../../packages/core/src/firewalls/index.ts
13239
13236
  var CONNECTOR_FIREWALLS = {
13240
13237
  agentmail: agentmailFirewall,
13241
- agentphone: agentphoneFirewall,
13242
13238
  amplitude: amplitudeFirewall,
13243
13239
  "anthropic-managed-agents": anthropicManagedAgentsFirewall,
13244
13240
  ahrefs: ahrefsFirewall,
@@ -13255,6 +13251,7 @@ var CONNECTOR_FIREWALLS = {
13255
13251
  brevo: brevoFirewall,
13256
13252
  "bright-data": brightDataFirewall,
13257
13253
  browserbase: browserbaseFirewall,
13254
+ "browser-use": browserUseFirewall,
13258
13255
  browserless: browserlessFirewall,
13259
13256
  buffer: bufferFirewall,
13260
13257
  "cal-com": calComFirewall,
@@ -13935,11 +13932,6 @@ var FEATURE_SWITCHES = {
13935
13932
  description: "Show audit log links in Slack messages",
13936
13933
  enabled: false
13937
13934
  },
13938
- ["phoneIntegration" /* PhoneIntegration */]: {
13939
- maintainer: "ethan@vm0.ai",
13940
- description: "Show the Phone page for voice call integration",
13941
- enabled: false
13942
- },
13943
13935
  ["audioInput" /* AudioInput */]: {
13944
13936
  maintainer: "lancy@vm0.ai",
13945
13937
  description: "Enable voice input (microphone + STT) in chat \u2014 gates the mic button and the /api/zero/voice-io/stt route",
@@ -18721,191 +18713,6 @@ Examples:
18721
18713
  );
18722
18714
  var zeroComputerUseCommand = new Command().name("computer-use").description("Remote desktop control for cloud agents").addCommand(hostCommand).addCommand(clientCommand);
18723
18715
 
18724
- // src/commands/zero/phone/index.ts
18725
- init_esm_shims();
18726
-
18727
- // src/commands/zero/phone/call.ts
18728
- init_esm_shims();
18729
- import * as fs from "fs";
18730
-
18731
- // src/commands/zero/phone/format.ts
18732
- init_esm_shims();
18733
- function printTranscript(transcript) {
18734
- if (!transcript || transcript.length === 0) {
18735
- console.log(" (no transcript)");
18736
- return;
18737
- }
18738
- for (const entry of transcript) {
18739
- console.log(` ${source_default.dim(`[${entry.role}]`)} ${entry.text}`);
18740
- }
18741
- }
18742
- function printCallInfo(call, callId) {
18743
- console.log(` ${"Call ID:".padEnd(16)}${source_default.cyan(call.id ?? callId)}`);
18744
- console.log(` ${"From:".padEnd(16)}${call.fromNumber}`);
18745
- console.log(` ${"To:".padEnd(16)}${call.toNumber}`);
18746
- console.log(` ${"Status:".padEnd(16)}${call.status}`);
18747
- console.log(
18748
- ` ${"Duration:".padEnd(16)}${call.durationSeconds != null ? `${call.durationSeconds}s` : "N/A"}`
18749
- );
18750
- console.log(` ${"Started:".padEnd(16)}${call.startedAt ?? ""}`);
18751
- }
18752
-
18753
- // src/commands/zero/phone/call.ts
18754
- var POLL_INTERVAL_MS = 1e4;
18755
- var POLL_TIMEOUT_MS = 15 * 60 * 1e3;
18756
- var delay = {
18757
- ms: (ms) => {
18758
- return new Promise((resolve) => {
18759
- setTimeout(resolve, ms);
18760
- });
18761
- }
18762
- };
18763
- var TERMINAL_STATUSES = /* @__PURE__ */ new Set([
18764
- "completed",
18765
- "ended",
18766
- "failed",
18767
- "no-answer",
18768
- "busy",
18769
- "cancelled"
18770
- ]);
18771
- function isErrnoException(err) {
18772
- return err instanceof Error && "code" in err;
18773
- }
18774
- var callCommand = new Command().name("call").description("Initiate an outbound phone call").argument(
18775
- "<to-number>",
18776
- "Phone number to call (E.164 format, e.g. +14155551234)"
18777
- ).addOption(
18778
- new Option(
18779
- "--mode <mode>",
18780
- "onhold: wait for call to complete and return transcript. fire-and-forget: initiate and return immediately."
18781
- ).choices(["onhold", "fire-and-forget"]).makeOptionMandatory()
18782
- ).option(
18783
- "--system-prompt-file <path>",
18784
- "File that defines the agent's persona and task context for this call"
18785
- ).action(
18786
- withErrorHandler(
18787
- async (toNumber, options) => {
18788
- if (!/^\+[1-9]\d{1,14}$/.test(toNumber)) {
18789
- console.error(
18790
- source_default.red(
18791
- "Invalid phone number format. Use E.164 (e.g. +14155551234)"
18792
- )
18793
- );
18794
- process.exit(1);
18795
- }
18796
- let systemPrompt;
18797
- if (options.systemPromptFile) {
18798
- try {
18799
- systemPrompt = fs.readFileSync(options.systemPromptFile, "utf-8");
18800
- } catch (err) {
18801
- if (isErrnoException(err) && err.code === "ENOENT") {
18802
- console.error(
18803
- source_default.red(`File not found: ${options.systemPromptFile}`)
18804
- );
18805
- process.exit(1);
18806
- }
18807
- throw err;
18808
- }
18809
- }
18810
- const result = await createPhoneCall({
18811
- toNumber,
18812
- systemPrompt,
18813
- mode: options.mode
18814
- });
18815
- console.log(source_default.green("Call initiated"));
18816
- console.log(` ${"Call ID:".padEnd(12)}${source_default.cyan(result.callId)}`);
18817
- console.log(` ${"Status:".padEnd(12)}${result.status}`);
18818
- if (options.mode === "fire-and-forget") {
18819
- return;
18820
- }
18821
- console.log();
18822
- console.log(
18823
- source_default.dim("Waiting for call to complete (polling every 10s)...")
18824
- );
18825
- const startTime = Date.now();
18826
- while (Date.now() - startTime < POLL_TIMEOUT_MS) {
18827
- await delay.ms(POLL_INTERVAL_MS);
18828
- const detail = await getPhoneCallDetail(result.callId);
18829
- const status = detail.call.status;
18830
- const elapsed = Math.round((Date.now() - startTime) / 1e3);
18831
- if (TERMINAL_STATUSES.has(status)) {
18832
- console.log();
18833
- console.log(source_default.bold("Call Detail"));
18834
- console.log();
18835
- printCallInfo(detail.call, result.callId);
18836
- console.log();
18837
- console.log(source_default.bold("Transcript"));
18838
- console.log();
18839
- printTranscript(detail.transcript);
18840
- if (status === "failed") {
18841
- process.exit(1);
18842
- }
18843
- return;
18844
- }
18845
- console.log(source_default.dim(` [${elapsed}s] status: ${status}`));
18846
- }
18847
- console.error(source_default.red("\nCall timed out after 15 minutes"));
18848
- process.exit(1);
18849
- }
18850
- )
18851
- );
18852
-
18853
- // src/commands/zero/phone/record.ts
18854
- init_esm_shims();
18855
- async function showCallDetail(callId) {
18856
- const result = await getPhoneCallDetail(callId);
18857
- console.log(source_default.bold("Call Detail"));
18858
- console.log();
18859
- printCallInfo(result.call, callId);
18860
- console.log();
18861
- console.log(source_default.bold("Transcript"));
18862
- console.log();
18863
- printTranscript(result.transcript);
18864
- }
18865
- async function showCallList(limit) {
18866
- const result = await listPhoneCalls({ limit });
18867
- if (result.data.length === 0) {
18868
- console.log(source_default.dim("No phone calls found"));
18869
- return;
18870
- }
18871
- console.log(source_default.bold("Recent Calls"));
18872
- console.log();
18873
- for (const call of result.data) {
18874
- const id = call.id;
18875
- const from = call.fromNumber;
18876
- const to = call.toNumber;
18877
- const status = call.status;
18878
- const duration = call.durationSeconds;
18879
- const snippet = call.lastTranscriptSnippet ?? "";
18880
- console.log(` ${source_default.cyan(id)}`);
18881
- console.log(
18882
- ` ${from} \u2192 ${to} ${source_default.dim(status)}${duration != null ? ` ${duration}s` : ""}`
18883
- );
18884
- if (snippet) {
18885
- console.log(` ${source_default.dim(snippet.slice(0, 80))}`);
18886
- }
18887
- console.log();
18888
- }
18889
- console.log(
18890
- source_default.dim(`Showing ${result.data.length} of ${result.total} call(s)`)
18891
- );
18892
- }
18893
- var recordCommand = new Command().name("record").description("View phone call history and transcripts").argument("[call-id]", "Call ID to view details (omit to list recent calls)").option("-n, --limit <number>", "Number of calls to show", "10").action(
18894
- withErrorHandler(
18895
- async (callId, options) => {
18896
- if (callId) {
18897
- await showCallDetail(callId);
18898
- } else {
18899
- const limit = parseInt(options.limit, 10) || 10;
18900
- await showCallList(limit);
18901
- }
18902
- }
18903
- )
18904
- );
18905
-
18906
- // src/commands/zero/phone/index.ts
18907
- var zeroPhoneCommand = new Command().name("phone").description("Make and manage phone calls").addCommand(callCommand).addCommand(recordCommand);
18908
-
18909
18716
  // src/commands/zero/web/index.ts
18910
18717
  init_esm_shims();
18911
18718
 
@@ -19002,7 +18809,6 @@ var COMMAND_CAPABILITY_MAP = {
19002
18809
  whoami: null,
19003
18810
  "developer-support": null,
19004
18811
  "computer-use": "computer-use:write",
19005
- phone: "phone:write",
19006
18812
  web: null
19007
18813
  };
19008
18814
  var DEFAULT_COMMANDS = [
@@ -19023,7 +18829,6 @@ var DEFAULT_COMMANDS = [
19023
18829
  zeroSkillCommand,
19024
18830
  zeroDeveloperSupportCommand,
19025
18831
  zeroComputerUseCommand,
19026
- zeroPhoneCommand,
19027
18832
  zeroWebCommand
19028
18833
  ];
19029
18834
  function shouldHideCommand(name, payload) {
@@ -19043,7 +18848,7 @@ function registerZeroCommands(prog, commands) {
19043
18848
  var program = new Command();
19044
18849
  program.name("zero").description(
19045
18850
  "Zero CLI \u2014 interact with the zero platform from inside the sandbox"
19046
- ).version("9.132.0").addHelpText(
18851
+ ).version("9.132.1").addHelpText(
19047
18852
  "after",
19048
18853
  `
19049
18854
  Examples: