@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/{chunk-3OOH3FG4.js → chunk-ZKOPXRWA.js} +43 -96
- package/chunk-ZKOPXRWA.js.map +1 -0
- package/index.js +9 -9
- package/package.json +1 -1
- package/zero.js +24 -219
- package/zero.js.map +1 -1
- package/chunk-3OOH3FG4.js.map +0 -1
package/index.js
CHANGED
|
@@ -62,7 +62,7 @@ import {
|
|
|
62
62
|
source_default,
|
|
63
63
|
volumeConfigSchema,
|
|
64
64
|
withErrorHandler
|
|
65
|
-
} from "./chunk-
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
13580
|
-
console.log(source_default.green(`\u2713 Already up to date (${"9.132.
|
|
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.
|
|
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.
|
|
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.
|
|
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
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-
|
|
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.
|
|
18851
|
+
).version("9.132.1").addHelpText(
|
|
19047
18852
|
"after",
|
|
19048
18853
|
`
|
|
19049
18854
|
Examples:
|