@vultisig/cli 2.3.0 → 2.3.3

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 CHANGED
@@ -1,5 +1,33 @@
1
1
  # @vultisig/cli
2
2
 
3
+ ## 2.3.3
4
+
5
+ ### Patch Changes
6
+
7
+ - [#750](https://github.com/vultisig/vultisig-sdk/pull/750) [`0f6adc3`](https://github.com/vultisig/vultisig-sdk/commit/0f6adc3c73d06eb6da3758987dfaafb29d599019) Thanks [@gomesalexandre](https://github.com/gomesalexandre)! - security: bump transitive deps to fix 5 high-severity advisories
8
+
9
+ - form-data: 4.0.5 -> 4.0.6 (CRLF injection, GHSA-hmw2-7cc7-3qxx)
10
+ - protobufjs: 7.5.8 -> 7.6.4, 8.3.0 -> 8.6.3 (DoS via unbounded Any expansion, GHSA-wcpc-wj8m-hjx6)
11
+ - tmp: 0.2.6 -> 0.2.7 (path traversal via type confusion, GHSA-7c78-jf6q-g5cm)
12
+ - vite: 8.0.10 -> 8.0.16 (server.fs.deny bypass on Windows, GHSA-fx2h-pf6j-xcff)
13
+ - ws: 7.5.10 -> 7.5.11, 8.17.1/8.20.x -> 8.21.0 (memory exhaustion DoS, GHSA-96hv-2xvq-fx4p)
14
+
15
+ all bumped via yarn resolutions; no direct dep changes.
16
+
17
+ - Updated dependencies [[`b544eea`](https://github.com/vultisig/vultisig-sdk/commit/b544eea2bd6f30aef59d6465d89784c763b13c11), [`c78c10d`](https://github.com/vultisig/vultisig-sdk/commit/c78c10d2b43f9ddd13b2c912a71f7d902f2694cc), [`0f6adc3`](https://github.com/vultisig/vultisig-sdk/commit/0f6adc3c73d06eb6da3758987dfaafb29d599019)]:
18
+ - @vultisig/core-chain@2.16.3
19
+ - @vultisig/sdk@2.3.3
20
+
21
+ ## 2.3.1
22
+
23
+ ### Patch Changes
24
+
25
+ - [#701](https://github.com/vultisig/vultisig-sdk/pull/701) [`1bcb195`](https://github.com/vultisig/vultisig-sdk/commit/1bcb195013b9730bf6ed0e2c42209d2285a357e8) Thanks [@neavra](https://github.com/neavra)! - Fix EIP-712 domain hashing for domains that omit standard fields. The agent executor's `sign_typed_data` hardcoded the `EIP712Domain` type to all four standard fields while skipping absent values during data encoding, producing non-canonical hashes for domains without `verifyingContract` (e.g. Polymarket's `ClobAuthDomain`) — CLOB rejected every auto-submitted order with `401 Invalid L1 Request headers`. The domain type is now derived from the fields actually present, matching viem/ethers canonical hashing (verified live against the Polymarket CLOB: L1 auth now accepted and L2 API credentials derived).
26
+
27
+ - Updated dependencies [[`cb2e8f0`](https://github.com/vultisig/vultisig-sdk/commit/cb2e8f00861daff26ac8b04a34e22be9b243235c)]:
28
+ - @vultisig/core-chain@2.16.1
29
+ - @vultisig/sdk@2.3.1
30
+
3
31
  ## 2.3.0
4
32
 
5
33
  ### Patch Changes
package/dist/index.js CHANGED
@@ -6727,7 +6727,11 @@ var AgentExecutor = class {
6727
6727
  if (this.verbose)
6728
6728
  process.stderr.write(`[sign_thor_msg_deposit_lp] chain=${chain}, memo='${memo}', amountBaseUnits=${amountRaw}
6729
6729
  `);
6730
- const result = await this.vault.signMsgDeposit({ chain, amountBaseUnits: amountRaw, memo });
6730
+ const result = await this.vault.signMsgDeposit({
6731
+ chain,
6732
+ amountBaseUnits: amountRaw,
6733
+ memo
6734
+ });
6731
6735
  this.pendingPayloads.clear();
6732
6736
  const explorerUrl = VultisigSdk.getTxExplorerUrl(chain, result.txHash);
6733
6737
  return {
@@ -7509,8 +7513,12 @@ function resolveChainId(chainId) {
7509
7513
  }
7510
7514
  async function computeEIP712Hash(domain, types, primaryType, message) {
7511
7515
  const { keccak_256: keccak_2562 } = await Promise.resolve().then(() => (init_sha3(), sha3_exports));
7512
- const domainSeparator = hashStruct("EIP712Domain", domain, types, keccak_2562);
7513
- const messageHash = hashStruct(primaryType, message, types, keccak_2562);
7516
+ const typesWithDomain = types["EIP712Domain"] ? types : {
7517
+ ...types,
7518
+ EIP712Domain: EIP712_DOMAIN_FIELDS.filter((f) => domain[f.name] !== void 0 && domain[f.name] !== null)
7519
+ };
7520
+ const domainSeparator = hashStruct("EIP712Domain", domain, typesWithDomain, keccak_2562);
7521
+ const messageHash = hashStruct(primaryType, message, typesWithDomain, keccak_2562);
7514
7522
  const prefix = new Uint8Array([25, 1]);
7515
7523
  const combined = new Uint8Array(2 + 32 + 32);
7516
7524
  combined.set(prefix, 0);
@@ -7533,7 +7541,6 @@ function hashType(typeName, types, keccak) {
7533
7541
  }
7534
7542
  function encodeType(typeName, types) {
7535
7543
  const fields = getTypeFields(typeName, types);
7536
- if (!fields) return "";
7537
7544
  const refs = /* @__PURE__ */ new Set();
7538
7545
  findReferencedTypes(typeName, types, refs);
7539
7546
  refs.delete(typeName);
@@ -7541,16 +7548,13 @@ function encodeType(typeName, types) {
7541
7548
  let result = `${typeName}(${fields.map((f) => `${f.type} ${f.name}`).join(",")})`;
7542
7549
  for (const ref of sortedRefs) {
7543
7550
  const refFields = getTypeFields(ref, types);
7544
- if (refFields) {
7545
- result += `${ref}(${refFields.map((f) => `${f.type} ${f.name}`).join(",")})`;
7546
- }
7551
+ result += `${ref}(${refFields.map((f) => `${f.type} ${f.name}`).join(",")})`;
7547
7552
  }
7548
7553
  return result;
7549
7554
  }
7550
7555
  function findReferencedTypes(typeName, types, refs) {
7551
7556
  if (refs.has(typeName)) return;
7552
7557
  const fields = getTypeFields(typeName, types);
7553
- if (!fields) return;
7554
7558
  refs.add(typeName);
7555
7559
  for (const field of fields) {
7556
7560
  const baseType = field.type.replace(/\[\d*\]$/, "");
@@ -7559,25 +7563,30 @@ function findReferencedTypes(typeName, types, refs) {
7559
7563
  }
7560
7564
  }
7561
7565
  }
7566
+ var EIP712_DOMAIN_FIELDS = [
7567
+ { name: "name", type: "string" },
7568
+ { name: "version", type: "string" },
7569
+ { name: "chainId", type: "uint256" },
7570
+ { name: "verifyingContract", type: "address" },
7571
+ { name: "salt", type: "bytes32" }
7572
+ ];
7562
7573
  function getTypeFields(typeName, types) {
7563
- if (types[typeName]) return types[typeName];
7564
- if (typeName === "EIP712Domain") {
7565
- return [
7566
- { name: "name", type: "string" },
7567
- { name: "version", type: "string" },
7568
- { name: "chainId", type: "uint256" },
7569
- { name: "verifyingContract", type: "address" }
7570
- ];
7574
+ const fields = types[typeName];
7575
+ if (!fields) {
7576
+ throw new Error(`EIP-712 encode: missing type definition for struct "${typeName}"`);
7571
7577
  }
7572
- return void 0;
7578
+ return fields;
7573
7579
  }
7574
7580
  function encodeData(typeName, data, types, keccak) {
7575
7581
  const fields = getTypeFields(typeName, types);
7576
- if (!fields) return new Uint8Array(0);
7577
7582
  const chunks = [];
7578
7583
  for (const field of fields) {
7579
7584
  const value = data[field.name];
7580
- if (value === void 0 || value === null) continue;
7585
+ if (value === void 0 || value === null) {
7586
+ throw new Error(
7587
+ `EIP-712 encode: missing value for declared field "${field.name}" (${field.type}) in struct "${typeName}"`
7588
+ );
7589
+ }
7581
7590
  chunks.push(encodeField(field.type, value, types, keccak));
7582
7591
  }
7583
7592
  const totalLen = chunks.reduce((sum, c) => sum + c.length, 0);
@@ -8912,7 +8921,7 @@ var cachedVersion = null;
8912
8921
  function getVersion() {
8913
8922
  if (cachedVersion) return cachedVersion;
8914
8923
  if (true) {
8915
- cachedVersion = "2.3.0";
8924
+ cachedVersion = "2.3.3";
8916
8925
  return cachedVersion;
8917
8926
  }
8918
8927
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vultisig/cli",
3
- "version": "2.3.0",
3
+ "version": "2.3.3",
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.15",
77
- "@vultisig/core-chain": "^2.16.0",
77
+ "@vultisig/core-chain": "^2.16.3",
78
78
  "@vultisig/rujira": "^36.0.0",
79
- "@vultisig/sdk": "^2.3.0",
79
+ "@vultisig/sdk": "^2.3.3",
80
80
  "chalk": "^5.6.2",
81
81
  "cli-table3": "^0.6.5",
82
82
  "commander": "^15.0.0",