@vultisig/cli 0.15.0 → 0.15.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.
Files changed (3) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/index.js +180 -55
  3. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @vultisig/cli
2
2
 
3
+ ## 0.15.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [#263](https://github.com/vultisig/vultisig-sdk/pull/263) [`6585c38`](https://github.com/vultisig/vultisig-sdk/commit/6585c38431db063f600e133d1a23f84b7c19e934) Thanks [@rcoderdev](https://github.com/rcoderdev)! - fix(cli): align agent executor with backend payloads and harden action handling
8
+ - model `tx_ready` / non-streaming transaction payloads with `TxReadyPayload`
9
+ - optional `vultisig` on agent config for shared SDK state (e.g. address book)
10
+ - executor improvements (chain locks, calldata resolution, EVM gas refresh) and unit tests
11
+
12
+ - Updated dependencies [[`6585c38`](https://github.com/vultisig/vultisig-sdk/commit/6585c38431db063f600e133d1a23f84b7c19e934)]:
13
+ - @vultisig/sdk@0.15.2
14
+ - @vultisig/rujira@10.0.0
15
+
3
16
  ## 0.15.0
4
17
 
5
18
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1452,7 +1452,7 @@ var init_formatUnits = __esm({
1452
1452
  // src/index.ts
1453
1453
  import "dotenv/config";
1454
1454
  import { promises as fs4 } from "node:fs";
1455
- import { parseKeygenQR, Vultisig as Vultisig7 } from "@vultisig/sdk";
1455
+ import { parseKeygenQR, Vultisig as Vultisig6 } from "@vultisig/sdk";
1456
1456
  import chalk15 from "chalk";
1457
1457
  import { program } from "commander";
1458
1458
  import inquirer8 from "inquirer";
@@ -3934,7 +3934,12 @@ Address Book${options.chain ? ` (${options.chain})` : ""}:
3934
3934
  }
3935
3935
 
3936
3936
  // src/commands/rujira.ts
3937
- import { getRoutesSummary, listEasyRoutes, RujiraClient, VultisigRujiraProvider } from "@vultisig/rujira";
3937
+ import {
3938
+ getRoutesSummary,
3939
+ listEasyRoutes,
3940
+ RujiraClient,
3941
+ VultisigRujiraProvider
3942
+ } from "@vultisig/rujira";
3938
3943
  async function createRujiraClient(ctx2, options = {}) {
3939
3944
  const vault = await ctx2.ensureActiveVault();
3940
3945
  const provider = new VultisigRujiraProvider(vault);
@@ -4566,8 +4571,11 @@ var AgentClient = class {
4566
4571
  case "tx_ready":
4567
4572
  if (this.verbose) process.stderr.write(`[SSE:tx_ready] raw: ${data.slice(0, 2e3)}
4568
4573
  `);
4569
- result.transactions.push(parsed);
4570
- callbacks.onTxReady?.(parsed);
4574
+ {
4575
+ const txReady = parsed;
4576
+ result.transactions.push(txReady);
4577
+ callbacks.onTxReady?.(txReady);
4578
+ }
4571
4579
  break;
4572
4580
  case "message":
4573
4581
  result.message = parsed.message || parsed;
@@ -4782,7 +4790,7 @@ function getNativeTokenDecimals(chain) {
4782
4790
  }
4783
4791
 
4784
4792
  // src/agent/executor.ts
4785
- import { Chain as Chain9, Vultisig as Vultisig6 } from "@vultisig/sdk";
4793
+ import { Chain as Chain9, evmCall, fiatCurrencies as fiatCurrencies3, Vultisig as VultisigSdk } from "@vultisig/sdk";
4786
4794
 
4787
4795
  // node_modules/viem/_esm/index.js
4788
4796
  init_formatUnits();
@@ -4999,6 +5007,8 @@ var EVM_GAS_RPC = {
4999
5007
  };
5000
5008
  var AgentExecutor = class {
5001
5009
  vault;
5010
+ /** Owning SDK (optional); used for address book backed by app storage */
5011
+ vultisig;
5002
5012
  pendingPayloads = /* @__PURE__ */ new Map();
5003
5013
  password = null;
5004
5014
  verbose;
@@ -5007,9 +5017,10 @@ var AgentExecutor = class {
5007
5017
  chainLockReleases = /* @__PURE__ */ new Map();
5008
5018
  /** Backend client for resolving calldata_id references. */
5009
5019
  backendClient = null;
5010
- constructor(vault, verbose = false, vaultId) {
5020
+ constructor(vault, verbose = false, vaultId, vultisig) {
5011
5021
  this.vault = vault;
5012
5022
  this.verbose = verbose;
5023
+ this.vultisig = vultisig;
5013
5024
  if (vaultId) {
5014
5025
  this.stateStore = new VaultStateStore(vaultId);
5015
5026
  }
@@ -5023,6 +5034,8 @@ var AgentExecutor = class {
5023
5034
  /**
5024
5035
  * Store a server-built transaction (from tx_ready SSE event).
5025
5036
  * This allows sign_tx to find and sign it when the backend requests signing.
5037
+ *
5038
+ * @returns true when a signable payload was stored; false for MCP errors or missing tx body
5026
5039
  */
5027
5040
  storeServerTransaction(txReadyData) {
5028
5041
  if (this.verbose)
@@ -5030,11 +5043,17 @@ var AgentExecutor = class {
5030
5043
  `[executor] storeServerTransaction called, keys: ${Object.keys(txReadyData || {}).join(",")}
5031
5044
  `
5032
5045
  );
5033
- const swapTx = txReadyData.swap_tx || txReadyData.send_tx || txReadyData.tx;
5034
- if (!swapTx) {
5046
+ const nestedTx = txReadyData?.swap_tx || txReadyData?.send_tx || txReadyData?.tx;
5047
+ if (nestedTx?.status === "error" || nestedTx?.error) {
5048
+ if (this.verbose)
5049
+ process.stderr.write(`[executor] skipping error tx_ready: ${nestedTx.error || "unknown error"}
5050
+ `);
5051
+ return false;
5052
+ }
5053
+ if (!nestedTx) {
5035
5054
  if (this.verbose) process.stderr.write(`[executor] storeServerTransaction: no swap_tx/send_tx/tx found in data
5036
5055
  `);
5037
- return;
5056
+ return false;
5038
5057
  }
5039
5058
  const chain = resolveChainFromTxReady(txReadyData) || Chain9.Ethereum;
5040
5059
  this.pendingPayloads.clear();
@@ -5049,6 +5068,7 @@ var AgentExecutor = class {
5049
5068
  `[executor] Stored server tx for chain ${chain}, pendingPayloads size=${this.pendingPayloads.size}
5050
5069
  `
5051
5070
  );
5071
+ return true;
5052
5072
  }
5053
5073
  hasPendingTransaction() {
5054
5074
  return this.pendingPayloads.has("latest");
@@ -5107,7 +5127,7 @@ var AgentExecutor = class {
5107
5127
  case "sign_tx":
5108
5128
  return this.signTx(params);
5109
5129
  case "get_address_book":
5110
- return this.getAddressBook();
5130
+ return this.getAddressBook(params);
5111
5131
  case "address_book_add":
5112
5132
  return this.addAddressBookEntry(params);
5113
5133
  case "address_book_remove":
@@ -5153,15 +5173,34 @@ var AgentExecutor = class {
5153
5173
  }
5154
5174
  return { balances: entries };
5155
5175
  }
5156
- async getPortfolio(_params) {
5157
- const balanceRecord = await this.vault.balances();
5158
- const entries = Object.entries(balanceRecord).map(([key, b]) => ({
5159
- chain: b.chainId || key.split(":")[0] || "",
5176
+ async getPortfolio(params) {
5177
+ const currencyRaw = String(params.currency ?? "USD").trim().toLowerCase();
5178
+ const fiatCurrency = fiatCurrencies3.includes(currencyRaw) ? currencyRaw : "usd";
5179
+ const portfolio = await this.vault.portfolio(fiatCurrency);
5180
+ const chainFilter = params.chain;
5181
+ const tickerFilter = params.ticker;
5182
+ let rows = portfolio.balances.map((b) => ({
5183
+ chain: b.chainId || "",
5160
5184
  symbol: b.symbol || "",
5161
5185
  amount: b.formattedAmount || b.amount?.toString() || "0",
5162
- decimals: b.decimals || 18
5186
+ decimals: b.decimals ?? 18,
5187
+ raw_amount: b.amount,
5188
+ fiatValue: b.fiatValue,
5189
+ fiatCurrency: b.fiatCurrency ?? portfolio.currency
5163
5190
  }));
5164
- return { balances: entries };
5191
+ if (chainFilter) {
5192
+ const chain = resolveChain(chainFilter);
5193
+ if (!chain) throw new Error(`Unknown chain: ${chainFilter}`);
5194
+ rows = rows.filter((r) => r.chain.toLowerCase() === chain.toLowerCase());
5195
+ }
5196
+ if (tickerFilter) {
5197
+ rows = rows.filter((r) => r.symbol.toLowerCase() === String(tickerFilter).toLowerCase());
5198
+ }
5199
+ return {
5200
+ balances: rows,
5201
+ totalValue: portfolio.totalValue,
5202
+ currency: portfolio.currency
5203
+ };
5165
5204
  }
5166
5205
  // ============================================================================
5167
5206
  // Chain & Token Management
@@ -5261,13 +5300,28 @@ var AgentExecutor = class {
5261
5300
  };
5262
5301
  const amount = parseAmount(amountStr, balance.decimals);
5263
5302
  const memo = params.memo;
5264
- const payload = await this.vault.prepareSendTx({ coin, receiver: toAddress, amount, memo });
5303
+ const payload = await this.vault.prepareSendTx({
5304
+ coin,
5305
+ receiver: toAddress,
5306
+ amount,
5307
+ memo
5308
+ });
5265
5309
  await this.patchEvmNonce(chain, payload);
5266
5310
  const messageHashes = await this.vault.extractMessageHashes(payload);
5267
5311
  this.pendingPayloads.clear();
5268
5312
  const payloadId = `tx_${Date.now()}_${Math.random().toString(36).slice(2, 8)}`;
5269
- this.pendingPayloads.set(payloadId, { payload, coin, chain, timestamp: Date.now() });
5270
- this.pendingPayloads.set("latest", { payload, coin, chain, timestamp: Date.now() });
5313
+ this.pendingPayloads.set(payloadId, {
5314
+ payload,
5315
+ coin,
5316
+ chain,
5317
+ timestamp: Date.now()
5318
+ });
5319
+ this.pendingPayloads.set("latest", {
5320
+ payload,
5321
+ coin,
5322
+ chain,
5323
+ timestamp: Date.now()
5324
+ });
5271
5325
  return {
5272
5326
  keysign_payload: payloadId,
5273
5327
  from_chain: chain.toString(),
@@ -5307,7 +5361,10 @@ var AgentExecutor = class {
5307
5361
  const fromToken = params.from_contract || params.from_token_id;
5308
5362
  const toToken = params.to_contract || params.to_token_id;
5309
5363
  const fromCoin = { chain: fromChain, token: fromToken || void 0 };
5310
- const toCoin = { chain: toChain || fromChain, token: toToken || void 0 };
5364
+ const toCoin = {
5365
+ chain: toChain || fromChain,
5366
+ token: toToken || void 0
5367
+ };
5311
5368
  const quote = await this.vault.getSwapQuote({
5312
5369
  fromCoin,
5313
5370
  toCoin,
@@ -5377,11 +5434,14 @@ var AgentExecutor = class {
5377
5434
  chain: params.chain,
5378
5435
  chain_id: params.chain_id
5379
5436
  };
5380
- this.storeServerTransaction({
5437
+ const stored = this.storeServerTransaction({
5381
5438
  tx: txData,
5382
5439
  chain: params.chain,
5383
5440
  from_chain: params.chain
5384
5441
  });
5442
+ if (!stored) {
5443
+ throw new Error("Could not stage calldata transaction for signing (invalid or empty tx payload)");
5444
+ }
5385
5445
  const chain = resolveChain(params.chain) || Chain9.Ethereum;
5386
5446
  const address = await this.vault.address(chain);
5387
5447
  return {
@@ -5454,9 +5514,10 @@ var AgentExecutor = class {
5454
5514
  }
5455
5515
  const { payload, chain } = stored;
5456
5516
  if (payload.__serverTx) {
5517
+ let result;
5457
5518
  if (chain === "Solana" && (payload.swap_tx || payload.provider)) {
5458
5519
  try {
5459
- return await this.buildAndSignSolanaSwapLocally(payload);
5520
+ result = await this.buildAndSignSolanaSwapLocally(payload);
5460
5521
  } catch (e) {
5461
5522
  if (e._phase === "prepare") {
5462
5523
  if (this.verbose)
@@ -5467,7 +5528,9 @@ var AgentExecutor = class {
5467
5528
  }
5468
5529
  }
5469
5530
  }
5470
- return this.signServerTx(payload, chain, params);
5531
+ if (!result) result = await this.signServerTx(payload, chain, params);
5532
+ if (payload.sequence_id) result.sequence_id = payload.sequence_id;
5533
+ return result;
5471
5534
  }
5472
5535
  return this.signSdkTx(payload, chain, payloadId);
5473
5536
  }
@@ -5503,7 +5566,7 @@ var AgentExecutor = class {
5503
5566
  }
5504
5567
  await this.releaseEvmLock(chain);
5505
5568
  this.pendingPayloads.clear();
5506
- const explorerUrl = Vultisig6.getTxExplorerUrl(chain, txHash);
5569
+ const explorerUrl = VultisigSdk.getTxExplorerUrl(chain, txHash);
5507
5570
  return {
5508
5571
  tx_hash: txHash,
5509
5572
  chain: chain.toString(),
@@ -5600,7 +5663,7 @@ var AgentExecutor = class {
5600
5663
  }
5601
5664
  await this.releaseEvmLock(chain);
5602
5665
  this.pendingPayloads.clear();
5603
- const explorerUrl = Vultisig6.getTxExplorerUrl(chain, txHash);
5666
+ const explorerUrl = VultisigSdk.getTxExplorerUrl(chain, txHash);
5604
5667
  return {
5605
5668
  tx_hash: txHash,
5606
5669
  chain: chain.toString(),
@@ -5625,9 +5688,15 @@ var AgentExecutor = class {
5625
5688
  const fromChainName = serverTxData.from_chain || serverTxData.chain || "Solana";
5626
5689
  const toChainName = serverTxData.to_chain;
5627
5690
  const fromChain = resolveChain(fromChainName);
5628
- if (!fromChain) throw Object.assign(new Error(`Unknown from_chain: ${fromChainName}`), { _phase: "prepare" });
5691
+ if (!fromChain)
5692
+ throw Object.assign(new Error(`Unknown from_chain: ${fromChainName}`), {
5693
+ _phase: "prepare"
5694
+ });
5629
5695
  const toChain = toChainName ? resolveChain(toChainName) : fromChain;
5630
- if (!toChain) throw Object.assign(new Error(`Unknown to_chain: ${toChainName}`), { _phase: "prepare" });
5696
+ if (!toChain)
5697
+ throw Object.assign(new Error(`Unknown to_chain: ${toChainName}`), {
5698
+ _phase: "prepare"
5699
+ });
5631
5700
  const amountStr = serverTxData.amount;
5632
5701
  if (!amountStr)
5633
5702
  throw Object.assign(new Error("Missing amount in tx_ready data for local Solana swap build"), {
@@ -5694,7 +5763,7 @@ var AgentExecutor = class {
5694
5763
  signature
5695
5764
  });
5696
5765
  this.pendingPayloads.clear();
5697
- const explorerUrl = Vultisig6.getTxExplorerUrl(chain, txHash);
5766
+ const explorerUrl = VultisigSdk.getTxExplorerUrl(chain, txHash);
5698
5767
  return {
5699
5768
  tx_hash: txHash,
5700
5769
  chain: chain.toString(),
@@ -5942,8 +6011,18 @@ var AgentExecutor = class {
5942
6011
  // ============================================================================
5943
6012
  // Address Book
5944
6013
  // ============================================================================
5945
- async getAddressBook() {
5946
- throw new Error("get_address_book is not yet implemented locally. The backend may handle this action server-side.");
6014
+ async getAddressBook(params) {
6015
+ if (!this.vultisig) {
6016
+ throw new Error(
6017
+ "get_address_book requires the CLI SDK instance. Ensure AgentConfig.vultisig is set when creating the session."
6018
+ );
6019
+ }
6020
+ const chainName = params.chain || params.chain_name;
6021
+ const chain = chainName ? resolveChain(chainName) : void 0;
6022
+ if (chainName && !chain) {
6023
+ throw new Error(`Unknown chain: ${chainName}`);
6024
+ }
6025
+ return await this.vultisig.getAddressBook(chain);
5947
6026
  }
5948
6027
  async addAddressBookEntry(_params) {
5949
6028
  throw new Error("address_book_add is not yet implemented locally. The backend may handle this action server-side.");
@@ -5956,8 +6035,34 @@ var AgentExecutor = class {
5956
6035
  // ============================================================================
5957
6036
  // Token Search & Other
5958
6037
  // ============================================================================
5959
- async searchToken(_params) {
5960
- throw new Error("search_token is not yet implemented locally. The backend may handle this action server-side.");
6038
+ async searchToken(params) {
6039
+ const query = String(params.query ?? params.q ?? "").trim().toLowerCase();
6040
+ if (!query) {
6041
+ return { tokens: [] };
6042
+ }
6043
+ const limit = 20;
6044
+ const chainName = params.chain;
6045
+ const tokenMatchesQuery = (t) => {
6046
+ const tick = t.ticker.toLowerCase();
6047
+ const addr = (t.contractAddress ?? "").toLowerCase();
6048
+ const pid = (t.priceProviderId ?? "").toLowerCase();
6049
+ return tick.includes(query) || addr.includes(query) || pid.includes(query);
6050
+ };
6051
+ if (chainName) {
6052
+ const chain = resolveChain(chainName);
6053
+ if (!chain) throw new Error(`Unknown chain: ${chainName}`);
6054
+ const tokens = VultisigSdk.getKnownTokens(chain).filter(tokenMatchesQuery).slice(0, limit);
6055
+ return { tokens };
6056
+ }
6057
+ const out = [];
6058
+ for (const c of Object.values(Chain9)) {
6059
+ for (const t of VultisigSdk.getKnownTokens(c)) {
6060
+ if (!tokenMatchesQuery(t)) continue;
6061
+ out.push(t);
6062
+ if (out.length >= limit) return { tokens: out };
6063
+ }
6064
+ }
6065
+ return { tokens: out };
5961
6066
  }
5962
6067
  async listVaults() {
5963
6068
  return {
@@ -5974,8 +6079,25 @@ var AgentExecutor = class {
5974
6079
  async scanTx(_params) {
5975
6080
  throw new Error("scan_tx is not yet implemented locally. The backend may handle this action server-side.");
5976
6081
  }
5977
- async readEvmContract(_params) {
5978
- throw new Error("read_evm_contract is not yet implemented locally. The backend may handle this action server-side.");
6082
+ async readEvmContract(params) {
6083
+ const chainName = params.chain;
6084
+ if (!chainName) throw new Error("read_evm_contract requires chain");
6085
+ const contractRaw = params.contract_address || params.contractAddress;
6086
+ if (!contractRaw) throw new Error("read_evm_contract requires contract_address");
6087
+ const functionName = params.function_name || params.functionName;
6088
+ if (!functionName) throw new Error("read_evm_contract requires function_name");
6089
+ const chain = resolveChain(chainName);
6090
+ if (!chain) throw new Error(`Unknown chain: ${chainName}`);
6091
+ if (!EVM_CHAINS.has(chain)) {
6092
+ throw new Error(`read_evm_contract only supports EVM chains (got ${chain})`);
6093
+ }
6094
+ const callParams = params.params ?? [];
6095
+ const data = await encodeContractCall(functionName, callParams);
6096
+ const addr = contractRaw.startsWith("0x") ? contractRaw : `0x${contractRaw}`;
6097
+ const to = addr;
6098
+ const from = params.from;
6099
+ const result = await evmCall(chain, { to, data, from });
6100
+ return { result };
5979
6101
  }
5980
6102
  };
5981
6103
  async function encodeContractCall(functionName, params) {
@@ -6249,7 +6371,10 @@ function parseDERSignature(sigHex) {
6249
6371
  }
6250
6372
  let offset = 0;
6251
6373
  if (raw.slice(offset, offset + 2) !== "30") {
6252
- return { r: raw.slice(0, 64).padStart(64, "0"), s: raw.slice(64).padStart(64, "0") };
6374
+ return {
6375
+ r: raw.slice(0, 64).padStart(64, "0"),
6376
+ s: raw.slice(64).padStart(64, "0")
6377
+ };
6253
6378
  }
6254
6379
  offset += 2;
6255
6380
  offset += 2;
@@ -6459,7 +6584,7 @@ var AgentSession = class {
6459
6584
  this.config = config;
6460
6585
  this.client = new AgentClient(config.backendUrl);
6461
6586
  this.client.verbose = !!config.verbose;
6462
- this.executor = new AgentExecutor(vault, !!config.verbose, vault.publicKeys.ecdsa);
6587
+ this.executor = new AgentExecutor(vault, !!config.verbose, vault.publicKeys.ecdsa, config.vultisig);
6463
6588
  this.publicKey = vault.publicKeys.ecdsa;
6464
6589
  if (config.password) {
6465
6590
  this.executor.setPassword(config.password);
@@ -6616,6 +6741,7 @@ var AgentSession = class {
6616
6741
  error: result.error || ""
6617
6742
  };
6618
6743
  }
6744
+ let serverTxStoredFromStream = 0;
6619
6745
  const streamResult = await this.client.sendMessageStream(
6620
6746
  this.conversationId,
6621
6747
  request,
@@ -6636,16 +6762,11 @@ var AgentSession = class {
6636
6762
  ui.onSuggestions(suggestions);
6637
6763
  },
6638
6764
  onTxReady: (tx) => {
6639
- const txData = tx?.swap_tx || tx?.send_tx || tx?.tx;
6640
- if (txData?.status === "error" || txData?.error) {
6641
- if (this.config.verbose)
6642
- process.stderr.write(`[session] skipping error tx_ready: ${txData.error || "unknown error"}
6643
- `);
6644
- return;
6645
- }
6646
- this.executor.storeServerTransaction(tx);
6647
- if (this.config.password) {
6648
- this.executor.setPassword(this.config.password);
6765
+ if (this.executor.storeServerTransaction(tx)) {
6766
+ serverTxStoredFromStream++;
6767
+ if (this.config.password) {
6768
+ this.executor.setPassword(this.config.password);
6769
+ }
6649
6770
  }
6650
6771
  },
6651
6772
  onMessage: (_msg) => {
@@ -6696,10 +6817,12 @@ var AgentSession = class {
6696
6817
  return;
6697
6818
  }
6698
6819
  }
6699
- if (streamResult.transactions.length > 0 && this.executor.hasPendingTransaction()) {
6820
+ if (serverTxStoredFromStream > 0) {
6700
6821
  if (this.config.verbose)
6701
- process.stderr.write(`[session] ${streamResult.transactions.length} tx_ready events, signing client-side
6702
- `);
6822
+ process.stderr.write(
6823
+ `[session] ${serverTxStoredFromStream} stored server tx from tx_ready, signing client-side
6824
+ `
6825
+ );
6703
6826
  const signAction = {
6704
6827
  id: `tx_sign_${Date.now()}`,
6705
6828
  type: "sign_tx",
@@ -7214,6 +7337,7 @@ async function executeAgent(ctx2, options) {
7214
7337
  const config = {
7215
7338
  backendUrl: options.backendUrl || process.env.VULTISIG_AGENT_URL || "https://abe.vultisig.com",
7216
7339
  vaultName: vault.name,
7340
+ vultisig: ctx2.sdk,
7217
7341
  password: options.password,
7218
7342
  viaAgent: options.viaAgent,
7219
7343
  sessionId: options.sessionId,
@@ -7255,6 +7379,7 @@ async function executeAgentAsk(ctx2, message, options) {
7255
7379
  const config = {
7256
7380
  backendUrl: options.backendUrl || process.env.VULTISIG_AGENT_URL || "https://abe.vultisig.com",
7257
7381
  vaultName: vault.name,
7382
+ vultisig: ctx2.sdk,
7258
7383
  password: options.password,
7259
7384
  sessionId: options.session,
7260
7385
  verbose: options.verbose,
@@ -7759,7 +7884,7 @@ var EventBuffer = class {
7759
7884
  };
7760
7885
 
7761
7886
  // src/interactive/session.ts
7762
- import { fiatCurrencies as fiatCurrencies3 } from "@vultisig/sdk";
7887
+ import { fiatCurrencies as fiatCurrencies4 } from "@vultisig/sdk";
7763
7888
  import chalk12 from "chalk";
7764
7889
  import ora3 from "ora";
7765
7890
  import * as readline3 from "readline";
@@ -8577,9 +8702,9 @@ Error: ${error2.message}`));
8577
8702
  i++;
8578
8703
  }
8579
8704
  }
8580
- if (!fiatCurrencies3.includes(currency)) {
8705
+ if (!fiatCurrencies4.includes(currency)) {
8581
8706
  console.log(chalk12.red(`Invalid currency: ${currency}`));
8582
- console.log(chalk12.yellow(`Supported currencies: ${fiatCurrencies3.join(", ")}`));
8707
+ console.log(chalk12.yellow(`Supported currencies: ${fiatCurrencies4.join(", ")}`));
8583
8708
  return;
8584
8709
  }
8585
8710
  const raw = args.includes("--raw");
@@ -8828,7 +8953,7 @@ var cachedVersion = null;
8828
8953
  function getVersion() {
8829
8954
  if (cachedVersion) return cachedVersion;
8830
8955
  if (true) {
8831
- cachedVersion = "0.15.0";
8956
+ cachedVersion = "0.15.2";
8832
8957
  return cachedVersion;
8833
8958
  }
8834
8959
  try {
@@ -9323,7 +9448,7 @@ async function init(vaultOverride, unlockPassword, passwordTTL) {
9323
9448
  }
9324
9449
  const globalOptions = program.opts();
9325
9450
  const serverEndpoints = resolveServerEndpoints(globalOptions);
9326
- const sdk = new Vultisig7({
9451
+ const sdk = new Vultisig6({
9327
9452
  onPasswordRequired: createPasswordCallback(),
9328
9453
  ...serverEndpoints ? { serverEndpoints } : {},
9329
9454
  ...passwordTTL !== void 0 ? { passwordCache: { defaultTTL: passwordTTL } } : {}
@@ -9940,7 +10065,7 @@ program.command("update").description("Check for updates and show update command
9940
10065
  setupCompletionCommand(program);
9941
10066
  async function startInteractiveMode() {
9942
10067
  const serverEndpoints = resolveServerEndpoints(parseServerEndpointOverridesFromArgv(process.argv.slice(2)));
9943
- const sdk = new Vultisig7({
10068
+ const sdk = new Vultisig6({
9944
10069
  onPasswordRequired: createPasswordCallback(),
9945
10070
  ...serverEndpoints ? { serverEndpoints } : {}
9946
10071
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/cli",
3
- "version": "0.15.0",
3
+ "version": "0.15.2",
4
4
  "description": "Command-line wallet for Vultisig - multi-chain MPC wallet management",
5
5
  "type": "module",
6
6
  "bin": {
@@ -55,7 +55,7 @@
55
55
  "@cosmjs/stargate": "^0.38.1",
56
56
  "@noble/hashes": "^2.0.1",
57
57
  "@vultisig/rujira": "^10.0.0",
58
- "@vultisig/sdk": "^0.15.1",
58
+ "@vultisig/sdk": "^0.15.3",
59
59
  "chalk": "^5.6.2",
60
60
  "cli-table3": "^0.6.5",
61
61
  "commander": "^14.0.3",