@vm0/cli 9.178.0 → 9.179.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/{chunk-DPEOZVW6.js → chunk-KC3JLLAV.js} +459 -287
- package/{chunk-DPEOZVW6.js.map → chunk-KC3JLLAV.js.map} +1 -1
- package/index.js +9 -9
- package/package.json +1 -1
- package/zero.js +133 -12
- package/zero.js.map +1 -1
package/index.js
CHANGED
|
@@ -67,7 +67,7 @@ import {
|
|
|
67
67
|
source_default,
|
|
68
68
|
volumeConfigSchema,
|
|
69
69
|
withErrorHandler
|
|
70
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-KC3JLLAV.js";
|
|
71
71
|
import {
|
|
72
72
|
__toESM,
|
|
73
73
|
init_esm_shims
|
|
@@ -400,7 +400,7 @@ function getConfigPath() {
|
|
|
400
400
|
return join(os.homedir(), ".vm0", "config.json");
|
|
401
401
|
}
|
|
402
402
|
var infoCommand = new Command().name("info").description("Display environment and debug information").action(async () => {
|
|
403
|
-
console.log(source_default.bold(`VM0 CLI v${"9.
|
|
403
|
+
console.log(source_default.bold(`VM0 CLI v${"9.179.0"}`));
|
|
404
404
|
console.log();
|
|
405
405
|
const config = await loadConfig();
|
|
406
406
|
const hasEnvToken = !!process.env.VM0_TOKEN;
|
|
@@ -4293,7 +4293,7 @@ var composeCommand = new Command().name("compose").description("Create or update
|
|
|
4293
4293
|
options.autoUpdate = false;
|
|
4294
4294
|
}
|
|
4295
4295
|
if (options.autoUpdate !== false) {
|
|
4296
|
-
await startSilentUpgrade("9.
|
|
4296
|
+
await startSilentUpgrade("9.179.0");
|
|
4297
4297
|
}
|
|
4298
4298
|
try {
|
|
4299
4299
|
let result;
|
|
@@ -4395,7 +4395,7 @@ var mainRunCommand = new Command().name("run").description("Run an agent").argum
|
|
|
4395
4395
|
withErrorHandler(
|
|
4396
4396
|
async (identifier, prompt, options) => {
|
|
4397
4397
|
if (options.autoUpdate !== false) {
|
|
4398
|
-
await startSilentUpgrade("9.
|
|
4398
|
+
await startSilentUpgrade("9.179.0");
|
|
4399
4399
|
}
|
|
4400
4400
|
const { name, version } = parseIdentifier(identifier);
|
|
4401
4401
|
let composeId;
|
|
@@ -6192,13 +6192,13 @@ var upgradeCommand = new Command().name("upgrade").description("Upgrade vm0 CLI
|
|
|
6192
6192
|
if (latestVersion === null) {
|
|
6193
6193
|
throw new Error("Could not check for updates. Please try again later.");
|
|
6194
6194
|
}
|
|
6195
|
-
if (latestVersion === "9.
|
|
6196
|
-
console.log(source_default.green(`\u2713 Already up to date (${"9.
|
|
6195
|
+
if (latestVersion === "9.179.0") {
|
|
6196
|
+
console.log(source_default.green(`\u2713 Already up to date (${"9.179.0"})`));
|
|
6197
6197
|
return;
|
|
6198
6198
|
}
|
|
6199
6199
|
console.log(
|
|
6200
6200
|
source_default.yellow(
|
|
6201
|
-
`Current version: ${"9.
|
|
6201
|
+
`Current version: ${"9.179.0"} -> Latest version: ${latestVersion}`
|
|
6202
6202
|
)
|
|
6203
6203
|
);
|
|
6204
6204
|
console.log();
|
|
@@ -6225,7 +6225,7 @@ var upgradeCommand = new Command().name("upgrade").description("Upgrade vm0 CLI
|
|
|
6225
6225
|
const success = await performUpgrade(packageManager);
|
|
6226
6226
|
if (success) {
|
|
6227
6227
|
console.log(
|
|
6228
|
-
source_default.green(`\u2713 Upgraded from ${"9.
|
|
6228
|
+
source_default.green(`\u2713 Upgraded from ${"9.179.0"} to ${latestVersion}`)
|
|
6229
6229
|
);
|
|
6230
6230
|
return;
|
|
6231
6231
|
}
|
|
@@ -6292,7 +6292,7 @@ var whoamiCommand = new Command().name("whoami").description("Show current ident
|
|
|
6292
6292
|
|
|
6293
6293
|
// src/index.ts
|
|
6294
6294
|
var program = new Command();
|
|
6295
|
-
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.
|
|
6295
|
+
program.name("vm0").description("VM0 CLI - Build and run agents with natural language").version("9.179.0");
|
|
6296
6296
|
program.addCommand(authCommand);
|
|
6297
6297
|
program.addCommand(infoCommand);
|
|
6298
6298
|
program.addCommand(composeCommand);
|
package/package.json
CHANGED
package/zero.js
CHANGED
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
InvalidArgumentError,
|
|
12
12
|
MODEL_PROVIDER_TYPES,
|
|
13
13
|
Option,
|
|
14
|
+
callZeroBanking,
|
|
14
15
|
callZeroMaps,
|
|
15
16
|
completeGithubFileUpload,
|
|
16
17
|
completeHostedSite,
|
|
@@ -61,11 +62,11 @@ import {
|
|
|
61
62
|
getConnectorAuthMethod,
|
|
62
63
|
getConnectorAuthMethodScopeDiff,
|
|
63
64
|
getConnectorEnvBindingEntries,
|
|
64
|
-
getConnectorEnvNamesForSecret,
|
|
65
65
|
getConnectorFirewall,
|
|
66
66
|
getConnectorGenerationTypes,
|
|
67
|
-
|
|
67
|
+
getConnectorStoredSecretDisplayInfo,
|
|
68
68
|
getDefaultAuthMethod,
|
|
69
|
+
getDiagnosticConnectorTypeForRuntimeEnvName,
|
|
69
70
|
getGithubInstallation,
|
|
70
71
|
getSecretsForAuthMethod,
|
|
71
72
|
getSelectableProviderTypes,
|
|
@@ -148,7 +149,7 @@ import {
|
|
|
148
149
|
upsertZeroOrgModelProvider,
|
|
149
150
|
withErrorHandler,
|
|
150
151
|
zeroAgentCustomSkillNameSchema
|
|
151
|
-
} from "./chunk-
|
|
152
|
+
} from "./chunk-KC3JLLAV.js";
|
|
152
153
|
import {
|
|
153
154
|
__toESM,
|
|
154
155
|
init_esm_shims
|
|
@@ -2905,14 +2906,14 @@ How connectors work:
|
|
|
2905
2906
|
console.log(` Relative path: ${urlLookup.relativePath}`);
|
|
2906
2907
|
console.log(` Environment name: ${envName}`);
|
|
2907
2908
|
} else {
|
|
2908
|
-
|
|
2909
|
-
|
|
2910
|
-
)
|
|
2911
|
-
if (!connectorType) {
|
|
2909
|
+
envName = opts.envName;
|
|
2910
|
+
const resolvedConnectorType = getDiagnosticConnectorTypeForRuntimeEnvName(envName);
|
|
2911
|
+
if (!resolvedConnectorType) {
|
|
2912
2912
|
throw new Error(
|
|
2913
2913
|
`Unknown environment name: ${envName} \u2014 not managed by any connector`
|
|
2914
2914
|
);
|
|
2915
2915
|
}
|
|
2916
|
+
connectorType = resolvedConnectorType;
|
|
2916
2917
|
console.log(
|
|
2917
2918
|
`${envName} is managed by the ${CONNECTOR_TYPES[connectorType].label} connector (type: ${connectorType}).`
|
|
2918
2919
|
);
|
|
@@ -4501,7 +4502,7 @@ var listCommand8 = new Command().name("list").alias("ls").description("List all
|
|
|
4501
4502
|
if (secret.type === "model-provider") {
|
|
4502
4503
|
typeIndicator = source_default.dim(" [model-provider]");
|
|
4503
4504
|
} else if (secret.type === "connector") {
|
|
4504
|
-
const derived =
|
|
4505
|
+
const derived = getConnectorStoredSecretDisplayInfo(secret.name);
|
|
4505
4506
|
if (derived) {
|
|
4506
4507
|
typeIndicator = source_default.dim(` [${derived.connectorLabel} connector]`);
|
|
4507
4508
|
derivedLine = source_default.dim(
|
|
@@ -4511,7 +4512,7 @@ var listCommand8 = new Command().name("list").alias("ls").description("List all
|
|
|
4511
4512
|
typeIndicator = source_default.dim(" [connector]");
|
|
4512
4513
|
}
|
|
4513
4514
|
} else if (secret.type === "user") {
|
|
4514
|
-
const derived =
|
|
4515
|
+
const derived = getConnectorStoredSecretDisplayInfo(secret.name);
|
|
4515
4516
|
if (derived) {
|
|
4516
4517
|
typeIndicator = source_default.dim(` [${derived.connectorLabel} connector]`);
|
|
4517
4518
|
derivedLine = source_default.dim(
|
|
@@ -10001,6 +10002,30 @@ var RESOURCE_REGISTRY = [
|
|
|
10001
10002
|
path: "illustration-template/iberian-vignette"
|
|
10002
10003
|
}
|
|
10003
10004
|
},
|
|
10005
|
+
{
|
|
10006
|
+
id: "image-style:cozy-parlor",
|
|
10007
|
+
kind: "image-style",
|
|
10008
|
+
name: "Cozy Parlor",
|
|
10009
|
+
description: "Hand-painted watercolor + ink-line scene \u2014 one anthropomorphic animal in a quiet domestic interior, clean cool-white paper, neutral palette with one hot accent pop.",
|
|
10010
|
+
desc: "Hand-painted watercolor + brushy black ink line on clean cool-white paper (no amber tint). ONE anthropomorphic animal mid-quiet-activity in a domestic interior. Closed-crescent-eye smile, minimal facial features, expression through posture. At least two patterned surfaces per piece. Cool/neutral palette lead (sage, slate-blue, cornflower, lavender, mint, dove-gray) with a single hot accent pop (cherry-red, mustard, magenta-pink) on one object. Six dials per brief \u2014 cast, activity, palette family, pattern motif stack, hot accent object, and complexity (L1/L2/L3). Trigger when user says /cozy-parlor, asks for a 'cozy parlor illustration', a 'watercolor animal scene', a 'picture-book interior', or a new piece in this neutral-palette watercolor style.",
|
|
10011
|
+
source: {
|
|
10012
|
+
repo: VM0_SKILLS_REPO,
|
|
10013
|
+
ref: VM0_SKILLS_REF,
|
|
10014
|
+
path: "illustration-template/cozy-parlor"
|
|
10015
|
+
}
|
|
10016
|
+
},
|
|
10017
|
+
{
|
|
10018
|
+
id: "image-style:crowd-ink",
|
|
10019
|
+
kind: "image-style",
|
|
10020
|
+
name: "Crowd Ink",
|
|
10021
|
+
description: "Hand-drawn editorial crowd illustration \u2014 sketchy black ink contours over flat 3-color spot fills on pure white, scene-as-metaphor composition.",
|
|
10022
|
+
desc: 'Hand-drawn editorial crowd illustration style \u2014 confident sketchy black ink contour lines with slightly irregular weight, flat 3-color spot fills sitting under or beside the ink lines (edges allowed to misregister slightly), on a PURE WHITE background (never cream). Fine-line backdrop drawn lighter than the foreground figures, scattered atmospheric marks in negative space (birds / leaves / steam / confetti / dots), and a scene-as-metaphor composition with a cast that varies per piece. Six dials per brief \u2014 palette (tested families: urban editorial / cool transit / warm natural / cozy interior), scene metaphor, complexity (L2 small group of 3\u20135 / L3 full crowd of 8\u201310), cast, backdrop, atmospheric motif. Trigger when the user says /crowd-ink, asks for a "crowd-ink illustration", "editorial crowd scene", "hand-drawn ink-and-spot-color illustration", "New-Yorker-style crowd vignette", or briefs with palette + scene metaphor + complexity level.',
|
|
10023
|
+
source: {
|
|
10024
|
+
repo: VM0_SKILLS_REPO,
|
|
10025
|
+
ref: VM0_SKILLS_REF,
|
|
10026
|
+
path: "illustration-template/crowd-ink"
|
|
10027
|
+
}
|
|
10028
|
+
},
|
|
10004
10029
|
{
|
|
10005
10030
|
id: "image-style:ink-storefront",
|
|
10006
10031
|
kind: "image-style",
|
|
@@ -13054,6 +13079,99 @@ Notes:
|
|
|
13054
13079
|
- Use --fields essentials for place details unless pro fields are required`
|
|
13055
13080
|
);
|
|
13056
13081
|
|
|
13082
|
+
// src/commands/zero/banking/index.ts
|
|
13083
|
+
init_esm_shims();
|
|
13084
|
+
function parseLimit5(value) {
|
|
13085
|
+
const parsed = Number(value);
|
|
13086
|
+
if (!Number.isInteger(parsed) || parsed < 1 || parsed > 1e3) {
|
|
13087
|
+
throw new InvalidArgumentError("limit must be between 1 and 1000");
|
|
13088
|
+
}
|
|
13089
|
+
return parsed;
|
|
13090
|
+
}
|
|
13091
|
+
function parseDateOnly(value) {
|
|
13092
|
+
if (!/^\d{4}-\d{2}-\d{2}$/.test(value)) {
|
|
13093
|
+
throw new InvalidArgumentError("date must be formatted as YYYY-MM-DD");
|
|
13094
|
+
}
|
|
13095
|
+
return value;
|
|
13096
|
+
}
|
|
13097
|
+
function renderBankingResponse(label, response) {
|
|
13098
|
+
console.log(source_default.green(`\u2713 ${label}`));
|
|
13099
|
+
console.log(source_default.dim(` Provider: ${response.provider}`));
|
|
13100
|
+
if (response.accounts) {
|
|
13101
|
+
console.log(JSON.stringify(response.accounts, null, 2));
|
|
13102
|
+
return;
|
|
13103
|
+
}
|
|
13104
|
+
if (response.balance) {
|
|
13105
|
+
console.log(JSON.stringify(response.balance, null, 2));
|
|
13106
|
+
return;
|
|
13107
|
+
}
|
|
13108
|
+
console.log(JSON.stringify(response.transactions ?? [], null, 2));
|
|
13109
|
+
}
|
|
13110
|
+
async function runBankingRequest(label, operation, payload, options) {
|
|
13111
|
+
const response = await callZeroBanking(operation, payload);
|
|
13112
|
+
if (options.json) {
|
|
13113
|
+
console.log(JSON.stringify(response));
|
|
13114
|
+
return;
|
|
13115
|
+
}
|
|
13116
|
+
renderBankingResponse(label, response);
|
|
13117
|
+
}
|
|
13118
|
+
var accountsCommand = new Command().name("accounts").description("List enabled banking accounts").option("--json", "Print the raw banking response as JSON").action(
|
|
13119
|
+
withErrorHandler(async (options) => {
|
|
13120
|
+
await runBankingRequest(
|
|
13121
|
+
"Banking accounts loaded",
|
|
13122
|
+
"accounts",
|
|
13123
|
+
{},
|
|
13124
|
+
options
|
|
13125
|
+
);
|
|
13126
|
+
})
|
|
13127
|
+
);
|
|
13128
|
+
var balancesCommand = new Command().name("balances").description("Read an enabled account balance").requiredOption("--account-id <id>", "Enabled provider account ID").option("--json", "Print the raw banking response as JSON").action(
|
|
13129
|
+
withErrorHandler(async (options) => {
|
|
13130
|
+
await runBankingRequest(
|
|
13131
|
+
"Banking balance loaded",
|
|
13132
|
+
"balances",
|
|
13133
|
+
{ accountId: options.accountId },
|
|
13134
|
+
options
|
|
13135
|
+
);
|
|
13136
|
+
})
|
|
13137
|
+
);
|
|
13138
|
+
var transactionsCommand = new Command().name("transactions").description("Read transactions for an enabled account").requiredOption("--account-id <id>", "Enabled provider account ID").requiredOption(
|
|
13139
|
+
"--from <date>",
|
|
13140
|
+
"Start date, formatted as YYYY-MM-DD",
|
|
13141
|
+
parseDateOnly
|
|
13142
|
+
).requiredOption(
|
|
13143
|
+
"--to <date>",
|
|
13144
|
+
"End date, formatted as YYYY-MM-DD",
|
|
13145
|
+
parseDateOnly
|
|
13146
|
+
).option("--limit <n>", "Maximum transactions to return", parseLimit5, 100).option("--json", "Print the raw banking response as JSON").action(
|
|
13147
|
+
withErrorHandler(async (options) => {
|
|
13148
|
+
await runBankingRequest(
|
|
13149
|
+
"Banking transactions loaded",
|
|
13150
|
+
"transactions",
|
|
13151
|
+
{
|
|
13152
|
+
accountId: options.accountId,
|
|
13153
|
+
from: options.from,
|
|
13154
|
+
to: options.to,
|
|
13155
|
+
limit: options.limit
|
|
13156
|
+
},
|
|
13157
|
+
options
|
|
13158
|
+
);
|
|
13159
|
+
})
|
|
13160
|
+
);
|
|
13161
|
+
var zeroBankingCommand = new Command().name("banking").description("Use managed zero banking services").addCommand(accountsCommand).addCommand(balancesCommand).addCommand(transactionsCommand).addHelpText(
|
|
13162
|
+
"after",
|
|
13163
|
+
`
|
|
13164
|
+
Examples:
|
|
13165
|
+
List accounts: zero banking accounts --json
|
|
13166
|
+
Get balance: zero banking balances --account-id <id> --json
|
|
13167
|
+
Get transactions: zero banking transactions --account-id <id> --from 2026-01-01 --to 2026-01-31 --json
|
|
13168
|
+
|
|
13169
|
+
Notes:
|
|
13170
|
+
- Authenticates via ZERO_TOKEN (requires banking:read capability)
|
|
13171
|
+
- Finicity credentials and app tokens stay on the vm0 API server
|
|
13172
|
+
- Access is limited to accounts enabled for the current agent`
|
|
13173
|
+
);
|
|
13174
|
+
|
|
13057
13175
|
// src/commands/zero/model/index.ts
|
|
13058
13176
|
init_esm_shims();
|
|
13059
13177
|
|
|
@@ -13213,7 +13331,8 @@ var COMMAND_CAPABILITY_MAP = {
|
|
|
13213
13331
|
generate: null,
|
|
13214
13332
|
web: null,
|
|
13215
13333
|
host: "host:write",
|
|
13216
|
-
maps: "maps:read"
|
|
13334
|
+
maps: "maps:read",
|
|
13335
|
+
banking: "banking:read"
|
|
13217
13336
|
};
|
|
13218
13337
|
var DEFAULT_COMMANDS = [
|
|
13219
13338
|
zeroOrgCommand,
|
|
@@ -13242,7 +13361,8 @@ var DEFAULT_COMMANDS = [
|
|
|
13242
13361
|
generateCommand,
|
|
13243
13362
|
zeroWebCommand,
|
|
13244
13363
|
zeroHostCommand,
|
|
13245
|
-
zeroMapsCommand
|
|
13364
|
+
zeroMapsCommand,
|
|
13365
|
+
zeroBankingCommand
|
|
13246
13366
|
];
|
|
13247
13367
|
function shouldHideCommand(name, payload) {
|
|
13248
13368
|
if (!payload) return false;
|
|
@@ -13284,6 +13404,7 @@ function buildZeroHelpText(payload = decodeZeroTokenPayload()) {
|
|
|
13284
13404
|
...shouldHideCommand("maps", payload) ? [] : [
|
|
13285
13405
|
' Get directions? zero maps directions --origin "SFO" --destination "Mountain View" --json'
|
|
13286
13406
|
],
|
|
13407
|
+
...shouldHideCommand("banking", payload) ? [] : [" Read bank data? zero banking accounts --json"],
|
|
13287
13408
|
" Check your identity? zero whoami"
|
|
13288
13409
|
];
|
|
13289
13410
|
return `
|
|
@@ -13301,7 +13422,7 @@ function registerZeroCommands(prog, commands) {
|
|
|
13301
13422
|
var program = new Command();
|
|
13302
13423
|
program.name("zero").description(
|
|
13303
13424
|
"Zero CLI \u2014 interact with the zero platform from inside the sandbox"
|
|
13304
|
-
).version("9.
|
|
13425
|
+
).version("9.179.0").addHelpText("after", () => {
|
|
13305
13426
|
return buildZeroHelpText();
|
|
13306
13427
|
});
|
|
13307
13428
|
if (process.argv[1]?.endsWith("zero.js") || process.argv[1]?.endsWith("zero.ts") || process.argv[1]?.endsWith("zero")) {
|