@vultisig/cli 2.19.14 → 2.19.18
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/CHANGELOG.md +6 -0
- package/dist/index.js +40 -23
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @vultisig/cli
|
|
2
2
|
|
|
3
|
+
## 2.19.18
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1223](https://github.com/vultisig/vultisig-sdk/pull/1223) [`6296248`](https://github.com/vultisig/vultisig-sdk/commit/62962482d8499f697e0634260a2e6083b944e649) Thanks [@neavra](https://github.com/neavra)! - Fix `agent ask` headless signing so a vault unlocked via `VAULT_PASSWORD` (or the OS keyring) can sign without also passing `--password`. The sign-time gate now keys off whether a password is actually needed — an encrypted vault that is still locked with no password in hand — and retries the same non-interactive chain (cache → keyring → `VAULT_PASSWORDS`/`VAULT_PASSWORD`) before prompting, instead of always re-prompting when `--password` was absent. Unencrypted vaults skip the gate entirely. The transaction confirmation gate is unchanged. Also corrects the `VAULT_PASSWORD` help text.
|
|
8
|
+
|
|
3
9
|
## 2.19.14
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
package/dist/index.js
CHANGED
|
@@ -10496,6 +10496,14 @@ var AgentExecutor = class {
|
|
|
10496
10496
|
setPassword(password) {
|
|
10497
10497
|
this.password = password;
|
|
10498
10498
|
}
|
|
10499
|
+
/**
|
|
10500
|
+
* Whether a password is already held (set at unlock via the keyring/env chain
|
|
10501
|
+
* or `--password`). The sign gate consults this so a session unlocked
|
|
10502
|
+
* non-interactively doesn't get re-prompted for a secret it already has.
|
|
10503
|
+
*/
|
|
10504
|
+
hasPassword() {
|
|
10505
|
+
return this.password != null;
|
|
10506
|
+
}
|
|
10499
10507
|
/** Opt out of the persistent broadcast-journal duplicate guard (`--force`). */
|
|
10500
10508
|
setForceBroadcast(force) {
|
|
10501
10509
|
this.forceBroadcast = force;
|
|
@@ -13833,28 +13841,37 @@ var AgentSession = class {
|
|
|
13833
13841
|
}
|
|
13834
13842
|
let promptedPassword;
|
|
13835
13843
|
if (PASSWORD_REQUIRED_TOOLS.has(toolName) && !this.config.password) {
|
|
13836
|
-
|
|
13837
|
-
|
|
13838
|
-
|
|
13839
|
-
|
|
13840
|
-
|
|
13841
|
-
|
|
13842
|
-
|
|
13843
|
-
|
|
13844
|
-
|
|
13845
|
-
|
|
13844
|
+
const vaultLocked = this.vault.isEncrypted && !this.vault.isUnlocked();
|
|
13845
|
+
const needsPassword = vaultLocked && !this.executor.hasPassword();
|
|
13846
|
+
if (needsPassword) {
|
|
13847
|
+
const resolved = await resolvePasswordNonInteractive(this.vault.id, this.vault.name);
|
|
13848
|
+
if (resolved) {
|
|
13849
|
+
this.executor.setPassword(resolved);
|
|
13850
|
+
} else {
|
|
13851
|
+
try {
|
|
13852
|
+
promptedPassword = await ui.requestPassword();
|
|
13853
|
+
this.executor.setPassword(promptedPassword);
|
|
13854
|
+
} catch {
|
|
13855
|
+
const failure = {
|
|
13856
|
+
tool: toolName,
|
|
13857
|
+
success: false,
|
|
13858
|
+
data: {
|
|
13859
|
+
error: "Password not provided",
|
|
13860
|
+
code: "PASSWORD_REQUIRED" /* PASSWORD_REQUIRED */
|
|
13861
|
+
}
|
|
13862
|
+
};
|
|
13863
|
+
ui.onToolCall(toolCallId, toolName, input);
|
|
13864
|
+
ui.onToolResult(
|
|
13865
|
+
toolCallId,
|
|
13866
|
+
toolName,
|
|
13867
|
+
false,
|
|
13868
|
+
failure.data,
|
|
13869
|
+
"Password not provided",
|
|
13870
|
+
"PASSWORD_REQUIRED" /* PASSWORD_REQUIRED */
|
|
13871
|
+
);
|
|
13872
|
+
return failure;
|
|
13846
13873
|
}
|
|
13847
|
-
}
|
|
13848
|
-
ui.onToolCall(toolCallId, toolName, input);
|
|
13849
|
-
ui.onToolResult(
|
|
13850
|
-
toolCallId,
|
|
13851
|
-
toolName,
|
|
13852
|
-
false,
|
|
13853
|
-
failure.data,
|
|
13854
|
-
"Password not provided",
|
|
13855
|
-
"PASSWORD_REQUIRED" /* PASSWORD_REQUIRED */
|
|
13856
|
-
);
|
|
13857
|
-
return failure;
|
|
13874
|
+
}
|
|
13858
13875
|
}
|
|
13859
13876
|
}
|
|
13860
13877
|
ui.onToolCall(toolCallId, toolName, input);
|
|
@@ -14671,7 +14688,7 @@ var cachedVersion = null;
|
|
|
14671
14688
|
function getVersion() {
|
|
14672
14689
|
if (cachedVersion) return cachedVersion;
|
|
14673
14690
|
if (true) {
|
|
14674
|
-
cachedVersion = "2.19.
|
|
14691
|
+
cachedVersion = "2.19.18";
|
|
14675
14692
|
return cachedVersion;
|
|
14676
14693
|
}
|
|
14677
14694
|
try {
|
|
@@ -16718,7 +16735,7 @@ program.name("vultisig").description("Vultisig CLI - Secure multi-party crypto w
|
|
|
16718
16735
|
process.stdout.isTTY ? "table" : "json"
|
|
16719
16736
|
).option("-q, --quiet", "Strip empty/zero fields from output").option("--fields <fields>", "Comma-separated list of fields to include in output").option("--non-interactive", "Disable interactive prompts (fail instead of asking)").option("--ci", "CI/automation mode (equivalent to --output json --non-interactive --quiet)").option("-i, --interactive", "Start interactive shell mode").option("--vault <nameOrId>", "Specify vault by name or ID").option("--server-url <url>", "Base Vultisig API URL for FastVault and relay endpoints").addHelpText(
|
|
16720
16737
|
"after",
|
|
16721
|
-
"\nExit codes:\n" + Object.entries(EXIT_CODE_DESCRIPTIONS).map(([k, v]) => ` ${k} ${v}`).join("\n") + "\n\nEnvironment variables:\n VAULT_PASSWORD Vault password for signing (
|
|
16738
|
+
"\nExit codes:\n" + Object.entries(EXIT_CODE_DESCRIPTIONS).map(([k, v]) => ` ${k} ${v}`).join("\n") + "\n\nEnvironment variables:\n VAULT_PASSWORD Vault password \u2014 unlocks the vault for reads and signing (no prompt)\n VULTISIG_PASSWORD Alias for VAULT_PASSWORD\n VAULT_PASSWORDS Space-separated VaultName:password pairs\n VULTISIG_VAULT Default vault name or ID\n VULTISIG_CONFIG_DIR Override config directory (~/.vultisig)\n VULTISIG_SILENT Set to 1 for silent mode\n VULTISIG_HTTP_TIMEOUT_MS Agent-backend request timeout in ms (default 30000)\n NO_COLOR Disable colored output"
|
|
16722
16739
|
).hook("preAction", (thisCommand) => {
|
|
16723
16740
|
const opts = thisCommand.opts();
|
|
16724
16741
|
if (opts.ci) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vultisig/cli",
|
|
3
|
-
"version": "2.19.
|
|
3
|
+
"version": "2.19.18",
|
|
4
4
|
"description": "The self-custody MPC wallet CLI for AI coding agents (Claude Code, Cursor, OpenCode). Natural-language agent mode, 36+ chains, DKLS23 threshold signatures. Seedless.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -74,9 +74,9 @@
|
|
|
74
74
|
"@napi-rs/keyring": "^1.3.0",
|
|
75
75
|
"@noble/hashes": "^2.2.0",
|
|
76
76
|
"@vultisig/client-shared": "^0.2.17",
|
|
77
|
-
"@vultisig/core-chain": "^2.
|
|
77
|
+
"@vultisig/core-chain": "^2.25.1",
|
|
78
78
|
"@vultisig/rujira": "^52.0.0",
|
|
79
|
-
"@vultisig/sdk": "^2.19.
|
|
79
|
+
"@vultisig/sdk": "^2.19.17",
|
|
80
80
|
"chalk": "^5.6.2",
|
|
81
81
|
"cli-table3": "^0.6.5",
|
|
82
82
|
"commander": "^15.0.0",
|