web3-tools-mcp 1.3.4 → 1.5.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/README.md +63 -5
- package/dist/anvil.d.ts +34 -0
- package/dist/anvil.d.ts.map +1 -0
- package/dist/anvil.js +254 -0
- package/dist/anvil.js.map +1 -0
- package/dist/chain-meta.d.ts +27 -0
- package/dist/chain-meta.d.ts.map +1 -0
- package/dist/chain-meta.js +92 -0
- package/dist/chain-meta.js.map +1 -0
- package/dist/clear-signing.d.ts +62 -0
- package/dist/clear-signing.d.ts.map +1 -0
- package/dist/clear-signing.js +139 -0
- package/dist/clear-signing.js.map +1 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +11 -0
- package/dist/client.js.map +1 -1
- package/dist/erc7730-index.json.gz +0 -0
- package/dist/index.js +25 -5
- package/dist/index.js.map +1 -1
- package/dist/preview.d.ts +58 -0
- package/dist/preview.d.ts.map +1 -0
- package/dist/preview.js +182 -0
- package/dist/preview.js.map +1 -0
- package/dist/tools/advanced.d.ts +67 -9
- package/dist/tools/advanced.d.ts.map +1 -1
- package/dist/tools/advanced.js +206 -67
- package/dist/tools/advanced.js.map +1 -1
- package/dist/tools/balance.d.ts +5 -5
- package/dist/tools/contract-info.d.ts +9 -9
- package/dist/tools/contract.d.ts +8 -8
- package/dist/tools/ens.d.ts +15 -15
- package/dist/tools/gas.d.ts +18 -18
- package/dist/tools/logs.d.ts +3 -3
- package/dist/tools/transactions.d.ts +11 -11
- package/dist/tools/transactions.d.ts.map +1 -1
- package/dist/tools/transactions.js +92 -113
- package/dist/tools/transactions.js.map +1 -1
- package/dist/utils.d.ts +13 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +76 -0
- package/dist/utils.js.map +1 -1
- package/dist/wallet-client.d.ts +83 -0
- package/dist/wallet-client.d.ts.map +1 -0
- package/dist/wallet-client.js +357 -0
- package/dist/wallet-client.js.map +1 -0
- package/package.json +11 -9
- package/src/anvil.ts +323 -0
- package/src/chain-meta.ts +102 -0
- package/src/clear-signing.ts +206 -0
- package/src/client.ts +14 -0
- package/src/erc7730-index.json.gz +0 -0
- package/src/index.ts +26 -5
- package/src/preview.ts +265 -0
- package/src/tools/advanced.ts +239 -70
- package/src/tools/transactions.ts +98 -125
- package/src/utils.ts +95 -0
- package/src/wallet-client.ts +380 -0
- package/dist/wallet-server.d.ts +0 -35
- package/dist/wallet-server.d.ts.map +0 -1
- package/dist/wallet-server.js +0 -232
- package/dist/wallet-server.js.map +0 -1
- package/public/wallet-app.js +0 -677
- package/public/wallet.html +0 -723
- package/src/wallet-server.ts +0 -283
|
@@ -1,167 +1,146 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import {
|
|
3
|
-
import { SUPPORTED_CHAINS } from '../client.js';
|
|
4
|
-
import {
|
|
5
|
-
import { randomBytes } from 'crypto';
|
|
2
|
+
import { getWalletClient } from '../wallet-client.js';
|
|
3
|
+
import { getClientManager, SUPPORTED_CHAINS } from '../client.js';
|
|
4
|
+
import { encodeFunctionData, isAddress, parseAbiItem, parseUnits } from 'viem';
|
|
5
|
+
import { randomBytes } from 'node:crypto';
|
|
6
|
+
import { buildTxPreview } from '../preview.js';
|
|
6
7
|
import { createTool, formatResponse } from '../utils.js';
|
|
7
8
|
function generateRequestId() {
|
|
8
9
|
return randomBytes(16).toString('hex');
|
|
9
10
|
}
|
|
11
|
+
function requireAddress(label, address) {
|
|
12
|
+
if (!isAddress(address))
|
|
13
|
+
throw new Error(`Invalid ${label}: ${address}`);
|
|
14
|
+
return address;
|
|
15
|
+
}
|
|
16
|
+
function explorerTxUrl(chain, txHash) {
|
|
17
|
+
return `https://${getClientManager().getEtherscanDomain(chain)}/tx/${txHash}`;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Send a transaction for signing, with a decoded + simulated preview attached so the
|
|
21
|
+
* wallet page can show what it actually does instead of raw calldata.
|
|
22
|
+
*/
|
|
23
|
+
async function requestSignature(chain, tx) {
|
|
24
|
+
const wallet = getWalletClient();
|
|
25
|
+
await wallet.waitForSigner();
|
|
26
|
+
const preview = await buildTxPreview(chain, tx, wallet.getAddress());
|
|
27
|
+
return {
|
|
28
|
+
txHash: await wallet.request({
|
|
29
|
+
id: generateRequestId(),
|
|
30
|
+
type: 'send_transaction',
|
|
31
|
+
chain,
|
|
32
|
+
data: { to: tx.to, value: tx.value ?? '0x0', ...(tx.data && { data: tx.data }) },
|
|
33
|
+
preview
|
|
34
|
+
}),
|
|
35
|
+
preview
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function failure(error, message) {
|
|
39
|
+
return formatResponse({
|
|
40
|
+
success: false,
|
|
41
|
+
error: error instanceof Error ? error.message : String(error),
|
|
42
|
+
message
|
|
43
|
+
});
|
|
44
|
+
}
|
|
10
45
|
export default {
|
|
11
|
-
send_native_token: createTool('Send Native Token', 'Send native tokens (ETH, MATIC, BNB, etc.) to an address.
|
|
46
|
+
send_native_token: createTool('Send Native Token', 'Send native tokens (ETH, MATIC, BNB, etc.) to an address. Simulates the transaction, then opens the browser wallet for approval.', z.object({
|
|
12
47
|
chain: z.enum(SUPPORTED_CHAINS).describe('Blockchain network'),
|
|
13
48
|
to: z.string().describe('Recipient address'),
|
|
14
49
|
amount: z.string().describe('Amount in native token (e.g., "0.1" for 0.1 ETH)'),
|
|
15
50
|
data: z.string().optional().describe('Optional hex-encoded data to include with transaction')
|
|
16
51
|
}), async (args) => {
|
|
17
|
-
const walletServer = getWalletServer();
|
|
18
52
|
try {
|
|
19
|
-
|
|
20
|
-
const value =
|
|
21
|
-
const
|
|
22
|
-
id: generateRequestId(),
|
|
23
|
-
type: 'send_transaction',
|
|
24
|
-
chain: args.chain,
|
|
25
|
-
data: {
|
|
26
|
-
to: args.to,
|
|
27
|
-
value,
|
|
28
|
-
...(args.data && { data: args.data })
|
|
29
|
-
}
|
|
30
|
-
};
|
|
31
|
-
console.error(`[Transaction] Sending ${args.amount} native token to ${args.to} on ${args.chain}`);
|
|
32
|
-
const txHash = await walletServer.sendTransaction(txRequest);
|
|
53
|
+
const to = requireAddress('recipient address', args.to);
|
|
54
|
+
const value = `0x${parseUnits(args.amount, 18).toString(16)}`;
|
|
55
|
+
const { txHash, preview } = await requestSignature(args.chain, { to, value, data: args.data });
|
|
33
56
|
return formatResponse({
|
|
34
57
|
success: true,
|
|
35
58
|
chain: args.chain,
|
|
36
59
|
transactionHash: txHash,
|
|
37
|
-
to
|
|
60
|
+
to,
|
|
38
61
|
amount: args.amount,
|
|
39
|
-
|
|
40
|
-
explorerUrl:
|
|
62
|
+
simulation: preview.simulation,
|
|
63
|
+
explorerUrl: explorerTxUrl(args.chain, txHash)
|
|
41
64
|
});
|
|
42
65
|
}
|
|
43
66
|
catch (error) {
|
|
44
|
-
|
|
45
|
-
return formatResponse({
|
|
46
|
-
success: false,
|
|
47
|
-
error: errorMessage,
|
|
48
|
-
message: 'Transaction failed or was rejected'
|
|
49
|
-
});
|
|
67
|
+
return failure(error, 'Transaction failed or was rejected');
|
|
50
68
|
}
|
|
51
69
|
}),
|
|
52
|
-
send_erc20_token: createTool('Send ERC20 Token', 'Send ERC20 tokens to an address.
|
|
70
|
+
send_erc20_token: createTool('Send ERC20 Token', 'Send ERC20 tokens to an address. Simulates the transfer, then opens the browser wallet for approval.', z.object({
|
|
53
71
|
chain: z.enum(SUPPORTED_CHAINS).describe('Blockchain network'),
|
|
54
72
|
tokenAddress: z.string().describe('ERC20 token contract address'),
|
|
55
73
|
to: z.string().describe('Recipient address'),
|
|
56
74
|
amount: z.string().describe('Amount in token units (e.g., "100" for 100 USDC)'),
|
|
57
75
|
decimals: z.number().optional().default(18).describe('Token decimals (default: 18)')
|
|
58
76
|
}), async (args) => {
|
|
59
|
-
const walletServer = getWalletServer();
|
|
60
77
|
try {
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
chain: args.chain,
|
|
69
|
-
data: {
|
|
70
|
-
to: args.tokenAddress,
|
|
71
|
-
data,
|
|
72
|
-
value: '0x0'
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
console.error(`[Transaction] Sending ${args.amount} tokens to ${args.to} on ${args.chain}`);
|
|
76
|
-
const txHash = await walletServer.sendTransaction(txRequest);
|
|
78
|
+
const tokenAddress = requireAddress('token address', args.tokenAddress);
|
|
79
|
+
const to = requireAddress('recipient address', args.to);
|
|
80
|
+
const data = encodeFunctionData({
|
|
81
|
+
abi: [parseAbiItem('function transfer(address to, uint256 amount)')],
|
|
82
|
+
args: [to, parseUnits(args.amount, args.decimals ?? 18)]
|
|
83
|
+
});
|
|
84
|
+
const { txHash, preview } = await requestSignature(args.chain, { to: tokenAddress, data, value: '0x0' });
|
|
77
85
|
return formatResponse({
|
|
78
86
|
success: true,
|
|
79
87
|
chain: args.chain,
|
|
80
88
|
transactionHash: txHash,
|
|
81
|
-
tokenAddress
|
|
82
|
-
to
|
|
89
|
+
tokenAddress,
|
|
90
|
+
to,
|
|
83
91
|
amount: args.amount,
|
|
84
|
-
|
|
85
|
-
explorerUrl:
|
|
92
|
+
simulation: preview.simulation,
|
|
93
|
+
explorerUrl: explorerTxUrl(args.chain, txHash)
|
|
86
94
|
});
|
|
87
95
|
}
|
|
88
96
|
catch (error) {
|
|
89
|
-
|
|
90
|
-
return formatResponse({
|
|
91
|
-
success: false,
|
|
92
|
-
error: errorMessage,
|
|
93
|
-
message: 'Token transfer failed or was rejected'
|
|
94
|
-
});
|
|
97
|
+
return failure(error, 'Token transfer failed or was rejected');
|
|
95
98
|
}
|
|
96
99
|
}),
|
|
97
|
-
call_contract_write: createTool('Call Contract (Write)', 'Call a state-changing contract function
|
|
100
|
+
call_contract_write: createTool('Call Contract (Write)', 'Call a state-changing contract function. Simulates the call, then opens the browser wallet for approval.', z.object({
|
|
98
101
|
chain: z.enum(SUPPORTED_CHAINS).describe('Blockchain network'),
|
|
99
102
|
contractAddress: z.string().describe('Contract address'),
|
|
100
103
|
functionAbi: z.string().describe('Function ABI definition (e.g., "function transfer(address to, uint256 amount)")'),
|
|
101
|
-
args: z
|
|
102
|
-
|
|
104
|
+
args: z
|
|
105
|
+
.array(z.union([z.string(), z.number(), z.boolean()]))
|
|
106
|
+
.optional()
|
|
107
|
+
.describe('Function arguments in order matching the ABI signature'),
|
|
108
|
+
value: z.string().optional().describe('Optional native value to send with transaction (in ETH units, e.g., "0.1")')
|
|
103
109
|
}), async (args) => {
|
|
104
|
-
const walletServer = getWalletServer();
|
|
105
110
|
try {
|
|
106
|
-
|
|
107
|
-
console.error(`[Transaction] Parsing ABI: ${args.functionAbi}`);
|
|
108
|
-
console.error(`[Transaction] Args: ${JSON.stringify(args.args)}`);
|
|
111
|
+
const contractAddress = requireAddress('contract address', args.contractAddress);
|
|
109
112
|
const abiItem = parseAbiItem(args.functionAbi);
|
|
110
|
-
console.error(`[Transaction] Parsed function: ${abiItem.name}`);
|
|
111
113
|
const data = encodeFunctionData({
|
|
112
114
|
abi: [abiItem],
|
|
113
115
|
functionName: abiItem.name,
|
|
114
116
|
args: (args.args || [])
|
|
115
117
|
});
|
|
116
|
-
|
|
117
|
-
const
|
|
118
|
-
const txRequest = {
|
|
119
|
-
id: generateRequestId(),
|
|
120
|
-
type: 'send_transaction',
|
|
121
|
-
chain: args.chain,
|
|
122
|
-
data: {
|
|
123
|
-
to: args.contractAddress,
|
|
124
|
-
data,
|
|
125
|
-
value: valueHex
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
console.error(`[Transaction] Calling ${abiItem.name}() on ${args.contractAddress} (${args.chain})`);
|
|
129
|
-
const txHash = await walletServer.sendTransaction(txRequest);
|
|
118
|
+
const value = args.value ? `0x${parseUnits(args.value, 18).toString(16)}` : '0x0';
|
|
119
|
+
const { txHash, preview } = await requestSignature(args.chain, { to: contractAddress, data, value });
|
|
130
120
|
return formatResponse({
|
|
131
121
|
success: true,
|
|
132
122
|
chain: args.chain,
|
|
133
123
|
transactionHash: txHash,
|
|
134
|
-
contractAddress
|
|
124
|
+
contractAddress,
|
|
135
125
|
functionName: abiItem.name,
|
|
136
|
-
|
|
137
|
-
explorerUrl:
|
|
126
|
+
simulation: preview.simulation,
|
|
127
|
+
explorerUrl: explorerTxUrl(args.chain, txHash)
|
|
138
128
|
});
|
|
139
129
|
}
|
|
140
130
|
catch (error) {
|
|
141
|
-
|
|
142
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
143
|
-
return formatResponse({
|
|
144
|
-
success: false,
|
|
145
|
-
error: errorMessage,
|
|
146
|
-
message: 'Contract call failed or was rejected'
|
|
147
|
-
});
|
|
131
|
+
return failure(error, 'Contract call failed or was rejected');
|
|
148
132
|
}
|
|
149
133
|
}),
|
|
150
134
|
sign_message: createTool('Sign Message', 'Sign a message with the connected wallet. Opens browser wallet for approval.', z.object({
|
|
151
135
|
message: z.string().describe('Message to sign')
|
|
152
136
|
}), async (args) => {
|
|
153
|
-
const walletServer = getWalletServer();
|
|
154
137
|
try {
|
|
155
|
-
const
|
|
138
|
+
const signature = await getWalletClient().request({
|
|
156
139
|
id: generateRequestId(),
|
|
157
140
|
type: 'sign_message',
|
|
158
141
|
chain: 'any',
|
|
159
|
-
data: {
|
|
160
|
-
|
|
161
|
-
}
|
|
162
|
-
};
|
|
163
|
-
console.error(`[Transaction] Signing message`);
|
|
164
|
-
const signature = await walletServer.sendTransaction(request);
|
|
142
|
+
data: { message: args.message }
|
|
143
|
+
});
|
|
165
144
|
return formatResponse({
|
|
166
145
|
success: true,
|
|
167
146
|
message: args.message,
|
|
@@ -170,28 +149,28 @@ export default {
|
|
|
170
149
|
});
|
|
171
150
|
}
|
|
172
151
|
catch (error) {
|
|
173
|
-
|
|
174
|
-
return formatResponse({
|
|
175
|
-
success: false,
|
|
176
|
-
error: errorMessage,
|
|
177
|
-
message: 'Message signing failed or was rejected'
|
|
178
|
-
});
|
|
152
|
+
return failure(error, 'Message signing failed or was rejected');
|
|
179
153
|
}
|
|
180
154
|
}),
|
|
181
155
|
wallet_status: createTool('Wallet Status', 'Check if a wallet is connected to the browser interface', z.object({}), async () => {
|
|
182
|
-
const
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
156
|
+
const wallet = getWalletClient();
|
|
157
|
+
try {
|
|
158
|
+
await wallet.connect();
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return failure(error, 'Wallet relay unavailable');
|
|
188
162
|
}
|
|
163
|
+
if (!wallet.isConnected())
|
|
164
|
+
wallet.openBrowser();
|
|
189
165
|
return formatResponse({
|
|
190
|
-
connected: isConnected,
|
|
191
|
-
|
|
192
|
-
|
|
166
|
+
connected: wallet.isConnected(),
|
|
167
|
+
address: wallet.getAddress(),
|
|
168
|
+
walletUrl: wallet.getUrl(),
|
|
169
|
+
openTab: wallet.getPageUrl(),
|
|
170
|
+
hosted: wallet.isRemote,
|
|
171
|
+
message: wallet.isConnected()
|
|
193
172
|
? 'Wallet is connected and ready to sign transactions'
|
|
194
|
-
: `No wallet connected.
|
|
173
|
+
: `No wallet connected. Open ${wallet.getUrl()} and connect your wallet.`
|
|
195
174
|
});
|
|
196
175
|
})
|
|
197
176
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"transactions.js","sourceRoot":"","sources":["../../src/tools/transactions.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
CHANGED
|
@@ -8,6 +8,19 @@ export declare function createTool<T extends z.ZodType>(title: string, descripti
|
|
|
8
8
|
handler: (args: z.infer<T>) => Promise<ToolResult>;
|
|
9
9
|
};
|
|
10
10
|
export declare function convertBigIntToString(obj: unknown): unknown;
|
|
11
|
+
export interface SummarizedCall {
|
|
12
|
+
type: string;
|
|
13
|
+
from: string;
|
|
14
|
+
to: string;
|
|
15
|
+
selector?: string;
|
|
16
|
+
error?: string;
|
|
17
|
+
depth: number;
|
|
18
|
+
}
|
|
19
|
+
export declare function summarizeTrace(trace: unknown): {
|
|
20
|
+
hasError: boolean;
|
|
21
|
+
errorPath: SummarizedCall[] | null;
|
|
22
|
+
summary: string;
|
|
23
|
+
};
|
|
11
24
|
export declare function convertArgumentsToTypes(args: (string | number | boolean | null)[], abiInputs: readonly AbiParameter[]): unknown[];
|
|
12
25
|
export declare function convertEventArgsToTypes(eventArgs: Record<string, unknown>, abiInputs: readonly AbiParameter[]): Record<string, unknown>;
|
|
13
26
|
export declare function formatResponse(data: unknown): ToolResult;
|
package/dist/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAC5C,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC;;;;oBAAlC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC;EAQnD;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAe3D;
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AACxC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,wBAAgB,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAC5C,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,CAAC,EACT,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC;;;;oBAAlC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC;EAQnD;AAGD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAe3D;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,QAAQ,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAgCzH;AAqDD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,EAAE,EAC1C,SAAS,EAAE,SAAS,YAAY,EAAE,GACjC,OAAO,EAAE,CAiDX;AAGD,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAClC,SAAS,EAAE,SAAS,YAAY,EAAE,GACjC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA2DzB;AAGD,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAUxD;AAGD,wBAAgB,oBAAoB,IAAI;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CA2CA"}
|
package/dist/utils.js
CHANGED
|
@@ -24,6 +24,82 @@ export function convertBigIntToString(obj) {
|
|
|
24
24
|
}
|
|
25
25
|
return obj;
|
|
26
26
|
}
|
|
27
|
+
export function summarizeTrace(trace) {
|
|
28
|
+
// Use ref object to avoid TypeScript closure narrowing issues
|
|
29
|
+
const result = findErrorInTrace(trace);
|
|
30
|
+
// Generate summary
|
|
31
|
+
let summary;
|
|
32
|
+
if (result) {
|
|
33
|
+
const lastCall = result.errorPath[result.errorPath.length - 1];
|
|
34
|
+
summary = `REVERTED at depth ${lastCall.depth}: ${lastCall.to} (${lastCall.selector || 'unknown'}) - ${result.errorMessage}`;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
// For successful txs, just show top-level calls
|
|
38
|
+
const topCalls = [];
|
|
39
|
+
const rootCall = trace;
|
|
40
|
+
const subcalls = rootCall.calls;
|
|
41
|
+
if (subcalls) {
|
|
42
|
+
for (const sub of subcalls) {
|
|
43
|
+
const type = sub.type;
|
|
44
|
+
if (type !== 'DELEGATECALL') {
|
|
45
|
+
const input = sub.input;
|
|
46
|
+
const selector = input && input.length >= 10 ? input.slice(0, 10) : '?';
|
|
47
|
+
topCalls.push(`${type} ${sub.to} (${selector})`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
summary = `SUCCESS - ${topCalls.length} top-level calls: ${topCalls.slice(0, 5).join(', ')}${topCalls.length > 5 ? '...' : ''}`;
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
hasError: result !== null,
|
|
55
|
+
errorPath: result?.errorPath ?? null,
|
|
56
|
+
summary
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function findErrorInTrace(trace) {
|
|
60
|
+
if (!trace || typeof trace !== 'object')
|
|
61
|
+
return null;
|
|
62
|
+
function findError(call, path) {
|
|
63
|
+
const type = call.type || 'CALL';
|
|
64
|
+
const error = call.error || call.revertReason;
|
|
65
|
+
const subcalls = call.calls;
|
|
66
|
+
const input = call.input;
|
|
67
|
+
// Skip DELEGATECALL for cleaner output
|
|
68
|
+
if (type === 'DELEGATECALL') {
|
|
69
|
+
if (subcalls) {
|
|
70
|
+
for (const subcall of subcalls) {
|
|
71
|
+
const result = findError(subcall, path);
|
|
72
|
+
if (result)
|
|
73
|
+
return result;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
const currentCall = {
|
|
79
|
+
type,
|
|
80
|
+
from: call.from || '',
|
|
81
|
+
to: call.to || '',
|
|
82
|
+
selector: input && input.length >= 10 ? input.slice(0, 10) : undefined,
|
|
83
|
+
error: error || undefined,
|
|
84
|
+
depth: path.length
|
|
85
|
+
};
|
|
86
|
+
const newPath = [...path, currentCall];
|
|
87
|
+
// Check subcalls first (error might be deeper)
|
|
88
|
+
if (subcalls) {
|
|
89
|
+
for (const subcall of subcalls) {
|
|
90
|
+
const result = findError(subcall, newPath);
|
|
91
|
+
if (result)
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// If this call has an error and no subcall had one, this is the source
|
|
96
|
+
if (error) {
|
|
97
|
+
return { errorPath: newPath, errorMessage: error };
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return findError(trace, []);
|
|
102
|
+
}
|
|
27
103
|
// Convert arguments to appropriate types based on ABI
|
|
28
104
|
export function convertArgumentsToTypes(args, abiInputs) {
|
|
29
105
|
return args.map((arg, index) => {
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { type TransactionRequest } from 'web3-wallet-relay';
|
|
2
|
+
/**
|
|
3
|
+
* Requester side of the wallet relay. Connects to a hosted relay when
|
|
4
|
+
* WALLET_SERVER_URL is set, otherwise starts one in-process and talks to that.
|
|
5
|
+
*/
|
|
6
|
+
export declare class WalletClient {
|
|
7
|
+
private relayOptions;
|
|
8
|
+
private relay;
|
|
9
|
+
private ws;
|
|
10
|
+
private connecting;
|
|
11
|
+
private pending;
|
|
12
|
+
private signers;
|
|
13
|
+
private pages;
|
|
14
|
+
private signerAddress;
|
|
15
|
+
private pairingUrl;
|
|
16
|
+
private pageUrl;
|
|
17
|
+
private pageAgent;
|
|
18
|
+
private lastOpenedAt;
|
|
19
|
+
/** Instance field so tests can shorten the wait instead of sitting out the real one. */
|
|
20
|
+
private signerWaitTimeout;
|
|
21
|
+
private readonly remoteUrl;
|
|
22
|
+
private readonly remoteToken;
|
|
23
|
+
constructor(relayOptions?: {
|
|
24
|
+
port?: number;
|
|
25
|
+
token?: string;
|
|
26
|
+
});
|
|
27
|
+
get isRemote(): boolean;
|
|
28
|
+
connect(): Promise<void>;
|
|
29
|
+
private doConnect;
|
|
30
|
+
private connectRemote;
|
|
31
|
+
/**
|
|
32
|
+
* Join the relay another local session already owns, or become the owner.
|
|
33
|
+
*
|
|
34
|
+
* ponytail: two sessions starting in the same instant can each end up owning a relay on a
|
|
35
|
+
* different port, splitting sessions across two wallet tabs. Rare enough to live with —
|
|
36
|
+
* the fix would be for the higher port to hand over when a lower one answers.
|
|
37
|
+
*/
|
|
38
|
+
private connectLocal;
|
|
39
|
+
/**
|
|
40
|
+
* Connect and complete the handshake. Resolves only once the relay acks with `ready`, so
|
|
41
|
+
* a port held by something that isn't our relay fails here instead of looking connected.
|
|
42
|
+
*/
|
|
43
|
+
private openSocket;
|
|
44
|
+
private onMessage;
|
|
45
|
+
/** Wait for a wallet page to connect, opening the browser first when running locally. */
|
|
46
|
+
waitForSigner(): Promise<void>;
|
|
47
|
+
request(request: TransactionRequest): Promise<unknown>;
|
|
48
|
+
isConnected(): boolean;
|
|
49
|
+
getAddress(): string | undefined;
|
|
50
|
+
/** URL of the tab currently holding the wallet, so a caller can point the user at it. */
|
|
51
|
+
getPageUrl(): string | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Pairing URL of the relay actually in use — set once the handshake succeeds. Before that
|
|
54
|
+
* we still hand out a tokened URL: a link without one loads a page that cannot pair.
|
|
55
|
+
*/
|
|
56
|
+
getUrl(): string;
|
|
57
|
+
openBrowser(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Raise the already-open wallet tab. Deliberately drops the `#t=` fragment: the tab has
|
|
60
|
+
* stripped it from its own address bar, and asking for a URL it doesn't currently show
|
|
61
|
+
* makes the browser navigate — a reload would drop the request we are about to send.
|
|
62
|
+
*/
|
|
63
|
+
/**
|
|
64
|
+
* Bring the browser holding the wallet page forward.
|
|
65
|
+
*
|
|
66
|
+
* Activates the application rather than opening its URL: measured on macOS, `open <url>`
|
|
67
|
+
* loads the page again in a NEW tab even when an open tab has exactly that URL, which is
|
|
68
|
+
* where every stray tab came from. Activating an app cannot create one. The page itself
|
|
69
|
+
* flags which tab wants attention, via its title and a desktop notification.
|
|
70
|
+
*/
|
|
71
|
+
focusBrowser(): void;
|
|
72
|
+
/** Raise an app, but only one already running: launching a browser the user does not use
|
|
73
|
+
* would be worse than doing nothing (Brave and Arc both report themselves as Chrome). */
|
|
74
|
+
private activateApp;
|
|
75
|
+
/**
|
|
76
|
+
* Hand a URL to the OS. Runs the opener directly rather than through a shell, and only
|
|
77
|
+
* for http(s): the page reports its own URL, so this value is not fully ours to trust.
|
|
78
|
+
*/
|
|
79
|
+
private open;
|
|
80
|
+
stop(): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
export declare function getWalletClient(): WalletClient;
|
|
83
|
+
//# sourceMappingURL=wallet-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wallet-client.d.ts","sourceRoot":"","sources":["../src/wallet-client.ts"],"names":[],"mappings":"AAMA,OAAO,EAAe,KAAK,kBAAkB,EAA4B,MAAM,mBAAmB,CAAA;AAuDlG;;;GAGG;AACH,qBAAa,YAAY;IAkBX,OAAO,CAAC,YAAY;IAjBhC,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,EAAE,CAAyB;IACnC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,OAAO,CAA2F;IAC1G,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,KAAK,CAAI;IACjB,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,UAAU,CAAoB;IACtC,OAAO,CAAC,OAAO,CAAoB;IACnC,OAAO,CAAC,SAAS,CAAoB;IACrC,OAAO,CAAC,YAAY,CAAI;IACxB,wFAAwF;IACxF,OAAO,CAAC,iBAAiB,CAAsB;IAE/C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;gBAEnC,YAAY,GAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO;IAExE,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAUhB,SAAS;YAKT,aAAa;IA2B3B;;;;;;OAMG;YACW,YAAY;IAoB1B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAmDlB,OAAO,CAAC,SAAS;IAiCjB,yFAAyF;IACnF,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB9B,OAAO,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB5D,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,yFAAyF;IACzF,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC;;;OAGG;IACH,MAAM,IAAI,MAAM;IAMhB,WAAW;IAMX;;;;OAIG;IACH;;;;;;;OAOG;IACH,YAAY;IAQZ;8FAC0F;IAC1F,OAAO,CAAC,WAAW;IAOnB;;;OAGG;IACH,OAAO,CAAC,IAAI;IAoBN,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B;AAID,wBAAgB,eAAe,IAAI,YAAY,CAG9C"}
|