@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 +28 -0
- package/dist/index.js +29 -20
- package/package.json +3 -3
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({
|
|
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
|
|
7513
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7564
|
-
if (
|
|
7565
|
-
|
|
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
|
|
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)
|
|
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.
|
|
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.
|
|
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.
|
|
77
|
+
"@vultisig/core-chain": "^2.16.3",
|
|
78
78
|
"@vultisig/rujira": "^36.0.0",
|
|
79
|
-
"@vultisig/sdk": "^2.3.
|
|
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",
|