@quantulabs/8004-mcp 0.1.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.
Files changed (243) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +370 -0
  3. package/dist/chains/evm/index.d.ts +2 -0
  4. package/dist/chains/evm/index.d.ts.map +1 -0
  5. package/dist/chains/evm/index.js +3 -0
  6. package/dist/chains/evm/index.js.map +1 -0
  7. package/dist/chains/evm/provider.d.ts +48 -0
  8. package/dist/chains/evm/provider.d.ts.map +1 -0
  9. package/dist/chains/evm/provider.js +446 -0
  10. package/dist/chains/evm/provider.js.map +1 -0
  11. package/dist/chains/index.d.ts +3 -0
  12. package/dist/chains/index.d.ts.map +1 -0
  13. package/dist/chains/index.js +4 -0
  14. package/dist/chains/index.js.map +1 -0
  15. package/dist/chains/solana/data-source.d.ts +17 -0
  16. package/dist/chains/solana/data-source.d.ts.map +1 -0
  17. package/dist/chains/solana/data-source.js +65 -0
  18. package/dist/chains/solana/data-source.js.map +1 -0
  19. package/dist/chains/solana/index.d.ts +8 -0
  20. package/dist/chains/solana/index.d.ts.map +1 -0
  21. package/dist/chains/solana/index.js +9 -0
  22. package/dist/chains/solana/index.js.map +1 -0
  23. package/dist/chains/solana/parsers.d.ts +11 -0
  24. package/dist/chains/solana/parsers.d.ts.map +1 -0
  25. package/dist/chains/solana/parsers.js +94 -0
  26. package/dist/chains/solana/parsers.js.map +1 -0
  27. package/dist/chains/solana/provider.d.ts +33 -0
  28. package/dist/chains/solana/provider.d.ts.map +1 -0
  29. package/dist/chains/solana/provider.js +407 -0
  30. package/dist/chains/solana/provider.js.map +1 -0
  31. package/dist/chains/solana/state.d.ts +55 -0
  32. package/dist/chains/solana/state.d.ts.map +1 -0
  33. package/dist/chains/solana/state.js +162 -0
  34. package/dist/chains/solana/state.js.map +1 -0
  35. package/dist/chains/solana/tools/atom.d.ts +45 -0
  36. package/dist/chains/solana/tools/atom.d.ts.map +1 -0
  37. package/dist/chains/solana/tools/atom.js +115 -0
  38. package/dist/chains/solana/tools/atom.js.map +1 -0
  39. package/dist/chains/solana/tools/validation.d.ts +45 -0
  40. package/dist/chains/solana/tools/validation.d.ts.map +1 -0
  41. package/dist/chains/solana/tools/validation.js +212 -0
  42. package/dist/chains/solana/tools/validation.js.map +1 -0
  43. package/dist/chains/solana/tools/wallet.d.ts +45 -0
  44. package/dist/chains/solana/tools/wallet.d.ts.map +1 -0
  45. package/dist/chains/solana/tools/wallet.js +103 -0
  46. package/dist/chains/solana/tools/wallet.js.map +1 -0
  47. package/dist/config/defaults.d.ts +68 -0
  48. package/dist/config/defaults.d.ts.map +1 -0
  49. package/dist/config/defaults.js +247 -0
  50. package/dist/config/defaults.js.map +1 -0
  51. package/dist/config/env.d.ts +33 -0
  52. package/dist/config/env.d.ts.map +1 -0
  53. package/dist/config/env.js +42 -0
  54. package/dist/config/env.js.map +1 -0
  55. package/dist/config/index.d.ts +3 -0
  56. package/dist/config/index.d.ts.map +1 -0
  57. package/dist/config/index.js +3 -0
  58. package/dist/config/index.js.map +1 -0
  59. package/dist/core/cache/agent-cache.d.ts +36 -0
  60. package/dist/core/cache/agent-cache.d.ts.map +1 -0
  61. package/dist/core/cache/agent-cache.js +87 -0
  62. package/dist/core/cache/agent-cache.js.map +1 -0
  63. package/dist/core/cache/data-source.d.ts +31 -0
  64. package/dist/core/cache/data-source.d.ts.map +1 -0
  65. package/dist/core/cache/data-source.js +6 -0
  66. package/dist/core/cache/data-source.js.map +1 -0
  67. package/dist/core/cache/index.d.ts +7 -0
  68. package/dist/core/cache/index.d.ts.map +1 -0
  69. package/dist/core/cache/index.js +9 -0
  70. package/dist/core/cache/index.js.map +1 -0
  71. package/dist/core/cache/lazy-cache.d.ts +30 -0
  72. package/dist/core/cache/lazy-cache.d.ts.map +1 -0
  73. package/dist/core/cache/lazy-cache.js +79 -0
  74. package/dist/core/cache/lazy-cache.js.map +1 -0
  75. package/dist/core/cache/slim-store.d.ts +66 -0
  76. package/dist/core/cache/slim-store.d.ts.map +1 -0
  77. package/dist/core/cache/slim-store.js +285 -0
  78. package/dist/core/cache/slim-store.js.map +1 -0
  79. package/dist/core/cache/sqlite-store.d.ts +99 -0
  80. package/dist/core/cache/sqlite-store.d.ts.map +1 -0
  81. package/dist/core/cache/sqlite-store.js +470 -0
  82. package/dist/core/cache/sqlite-store.js.map +1 -0
  83. package/dist/core/cache/sync-manager.d.ts +38 -0
  84. package/dist/core/cache/sync-manager.d.ts.map +1 -0
  85. package/dist/core/cache/sync-manager.js +213 -0
  86. package/dist/core/cache/sync-manager.js.map +1 -0
  87. package/dist/core/errors/index.d.ts +2 -0
  88. package/dist/core/errors/index.d.ts.map +1 -0
  89. package/dist/core/errors/index.js +2 -0
  90. package/dist/core/errors/index.js.map +1 -0
  91. package/dist/core/errors/mcp-error.d.ts +39 -0
  92. package/dist/core/errors/mcp-error.d.ts.map +1 -0
  93. package/dist/core/errors/mcp-error.js +79 -0
  94. package/dist/core/errors/mcp-error.js.map +1 -0
  95. package/dist/core/interfaces/agent.d.ts +84 -0
  96. package/dist/core/interfaces/agent.d.ts.map +1 -0
  97. package/dist/core/interfaces/agent.js +40 -0
  98. package/dist/core/interfaces/agent.js.map +1 -0
  99. package/dist/core/interfaces/chain-provider.d.ts +50 -0
  100. package/dist/core/interfaces/chain-provider.d.ts.map +1 -0
  101. package/dist/core/interfaces/chain-provider.js +5 -0
  102. package/dist/core/interfaces/chain-provider.js.map +1 -0
  103. package/dist/core/interfaces/feedback.d.ts +46 -0
  104. package/dist/core/interfaces/feedback.d.ts.map +1 -0
  105. package/dist/core/interfaces/feedback.js +3 -0
  106. package/dist/core/interfaces/feedback.js.map +1 -0
  107. package/dist/core/interfaces/index.d.ts +6 -0
  108. package/dist/core/interfaces/index.d.ts.map +1 -0
  109. package/dist/core/interfaces/index.js +7 -0
  110. package/dist/core/interfaces/index.js.map +1 -0
  111. package/dist/core/interfaces/reputation.d.ts +47 -0
  112. package/dist/core/interfaces/reputation.d.ts.map +1 -0
  113. package/dist/core/interfaces/reputation.js +30 -0
  114. package/dist/core/interfaces/reputation.js.map +1 -0
  115. package/dist/core/interfaces/x402.d.ts +226 -0
  116. package/dist/core/interfaces/x402.d.ts.map +1 -0
  117. package/dist/core/interfaces/x402.js +120 -0
  118. package/dist/core/interfaces/x402.js.map +1 -0
  119. package/dist/core/parsers/common.d.ts +31 -0
  120. package/dist/core/parsers/common.d.ts.map +1 -0
  121. package/dist/core/parsers/common.js +185 -0
  122. package/dist/core/parsers/common.js.map +1 -0
  123. package/dist/core/parsers/index.d.ts +2 -0
  124. package/dist/core/parsers/index.d.ts.map +1 -0
  125. package/dist/core/parsers/index.js +2 -0
  126. package/dist/core/parsers/index.js.map +1 -0
  127. package/dist/core/registry/chain-registry.d.ts +26 -0
  128. package/dist/core/registry/chain-registry.d.ts.map +1 -0
  129. package/dist/core/registry/chain-registry.js +141 -0
  130. package/dist/core/registry/chain-registry.js.map +1 -0
  131. package/dist/core/registry/index.d.ts +3 -0
  132. package/dist/core/registry/index.d.ts.map +1 -0
  133. package/dist/core/registry/index.js +3 -0
  134. package/dist/core/registry/index.js.map +1 -0
  135. package/dist/core/registry/tool-registry.d.ts +23 -0
  136. package/dist/core/registry/tool-registry.d.ts.map +1 -0
  137. package/dist/core/registry/tool-registry.js +66 -0
  138. package/dist/core/registry/tool-registry.js.map +1 -0
  139. package/dist/core/serializers/common.d.ts +20 -0
  140. package/dist/core/serializers/common.d.ts.map +1 -0
  141. package/dist/core/serializers/common.js +76 -0
  142. package/dist/core/serializers/common.js.map +1 -0
  143. package/dist/core/serializers/index.d.ts +2 -0
  144. package/dist/core/serializers/index.d.ts.map +1 -0
  145. package/dist/core/serializers/index.js +2 -0
  146. package/dist/core/serializers/index.js.map +1 -0
  147. package/dist/core/services/index.d.ts +3 -0
  148. package/dist/core/services/index.d.ts.map +1 -0
  149. package/dist/core/services/index.js +3 -0
  150. package/dist/core/services/index.js.map +1 -0
  151. package/dist/core/services/ipfs-service.d.ts +59 -0
  152. package/dist/core/services/ipfs-service.d.ts.map +1 -0
  153. package/dist/core/services/ipfs-service.js +84 -0
  154. package/dist/core/services/ipfs-service.js.map +1 -0
  155. package/dist/core/utils/tags.d.ts +38 -0
  156. package/dist/core/utils/tags.d.ts.map +1 -0
  157. package/dist/core/utils/tags.js +77 -0
  158. package/dist/core/utils/tags.js.map +1 -0
  159. package/dist/core/utils/value-encoding.d.ts +36 -0
  160. package/dist/core/utils/value-encoding.d.ts.map +1 -0
  161. package/dist/core/utils/value-encoding.js +196 -0
  162. package/dist/core/utils/value-encoding.js.map +1 -0
  163. package/dist/core/wallet/index.d.ts +2 -0
  164. package/dist/core/wallet/index.d.ts.map +1 -0
  165. package/dist/core/wallet/index.js +3 -0
  166. package/dist/core/wallet/index.js.map +1 -0
  167. package/dist/core/wallet/wallet-manager.d.ts +86 -0
  168. package/dist/core/wallet/wallet-manager.d.ts.map +1 -0
  169. package/dist/core/wallet/wallet-manager.js +783 -0
  170. package/dist/core/wallet/wallet-manager.js.map +1 -0
  171. package/dist/core/x402/index.d.ts +2 -0
  172. package/dist/core/x402/index.d.ts.map +1 -0
  173. package/dist/core/x402/index.js +3 -0
  174. package/dist/core/x402/index.js.map +1 -0
  175. package/dist/core/x402/proof-validator.d.ts +57 -0
  176. package/dist/core/x402/proof-validator.d.ts.map +1 -0
  177. package/dist/core/x402/proof-validator.js +103 -0
  178. package/dist/core/x402/proof-validator.js.map +1 -0
  179. package/dist/index.d.ts +3 -0
  180. package/dist/index.d.ts.map +1 -0
  181. package/dist/index.js +135 -0
  182. package/dist/index.js.map +1 -0
  183. package/dist/state/global-state.d.ts +98 -0
  184. package/dist/state/global-state.d.ts.map +1 -0
  185. package/dist/state/global-state.js +258 -0
  186. package/dist/state/global-state.js.map +1 -0
  187. package/dist/tools/definitions.d.ts +10 -0
  188. package/dist/tools/definitions.d.ts.map +1 -0
  189. package/dist/tools/definitions.js +163 -0
  190. package/dist/tools/definitions.js.map +1 -0
  191. package/dist/tools/unified/agent.d.ts +5 -0
  192. package/dist/tools/unified/agent.d.ts.map +1 -0
  193. package/dist/tools/unified/agent.js +300 -0
  194. package/dist/tools/unified/agent.js.map +1 -0
  195. package/dist/tools/unified/cache.d.ts +5 -0
  196. package/dist/tools/unified/cache.d.ts.map +1 -0
  197. package/dist/tools/unified/cache.js +207 -0
  198. package/dist/tools/unified/cache.js.map +1 -0
  199. package/dist/tools/unified/collection.d.ts +5 -0
  200. package/dist/tools/unified/collection.d.ts.map +1 -0
  201. package/dist/tools/unified/collection.js +162 -0
  202. package/dist/tools/unified/collection.js.map +1 -0
  203. package/dist/tools/unified/config.d.ts +5 -0
  204. package/dist/tools/unified/config.d.ts.map +1 -0
  205. package/dist/tools/unified/config.js +217 -0
  206. package/dist/tools/unified/config.js.map +1 -0
  207. package/dist/tools/unified/crawler.d.ts +5 -0
  208. package/dist/tools/unified/crawler.d.ts.map +1 -0
  209. package/dist/tools/unified/crawler.js +212 -0
  210. package/dist/tools/unified/crawler.js.map +1 -0
  211. package/dist/tools/unified/feedback.d.ts +5 -0
  212. package/dist/tools/unified/feedback.d.ts.map +1 -0
  213. package/dist/tools/unified/feedback.js +274 -0
  214. package/dist/tools/unified/feedback.js.map +1 -0
  215. package/dist/tools/unified/ipfs.d.ts +5 -0
  216. package/dist/tools/unified/ipfs.d.ts.map +1 -0
  217. package/dist/tools/unified/ipfs.js +156 -0
  218. package/dist/tools/unified/ipfs.js.map +1 -0
  219. package/dist/tools/unified/oasf.d.ts +5 -0
  220. package/dist/tools/unified/oasf.d.ts.map +1 -0
  221. package/dist/tools/unified/oasf.js +167 -0
  222. package/dist/tools/unified/oasf.js.map +1 -0
  223. package/dist/tools/unified/registration.d.ts +5 -0
  224. package/dist/tools/unified/registration.d.ts.map +1 -0
  225. package/dist/tools/unified/registration.js +223 -0
  226. package/dist/tools/unified/registration.js.map +1 -0
  227. package/dist/tools/unified/reputation.d.ts +5 -0
  228. package/dist/tools/unified/reputation.d.ts.map +1 -0
  229. package/dist/tools/unified/reputation.js +121 -0
  230. package/dist/tools/unified/reputation.js.map +1 -0
  231. package/dist/tools/unified/wallet.d.ts +5 -0
  232. package/dist/tools/unified/wallet.d.ts.map +1 -0
  233. package/dist/tools/unified/wallet.js +434 -0
  234. package/dist/tools/unified/wallet.js.map +1 -0
  235. package/dist/tools/unified/write-operations.d.ts +5 -0
  236. package/dist/tools/unified/write-operations.d.ts.map +1 -0
  237. package/dist/tools/unified/write-operations.js +582 -0
  238. package/dist/tools/unified/write-operations.js.map +1 -0
  239. package/dist/tools/unified/x402.d.ts +5 -0
  240. package/dist/tools/unified/x402.d.ts.map +1 -0
  241. package/dist/tools/unified/x402.js +594 -0
  242. package/dist/tools/unified/x402.js.map +1 -0
  243. package/package.json +67 -0
@@ -0,0 +1,434 @@
1
+ // Multi-wallet management tools (Solana + EVM)
2
+ import { getArgs, readString, readStringOptional } from '../../core/parsers/common.js';
3
+ import { successResponse } from '../../core/serializers/common.js';
4
+ import { getWalletManager } from '../../core/wallet/index.js';
5
+ import { globalState } from '../../state/global-state.js';
6
+ // Helper to invalidate Solana SDK after wallet state change
7
+ function invalidateSolanaSDK() {
8
+ const provider = globalState.chains.getByPrefix('sol');
9
+ if (provider) {
10
+ provider.getState().invalidateSdk();
11
+ }
12
+ }
13
+ // Helper to invalidate all EVM SDKs after wallet state change
14
+ function invalidateEvmSDKs() {
15
+ const evmPrefixes = ['eth', 'base', 'arb', 'poly', 'op'];
16
+ for (const prefix of evmPrefixes) {
17
+ const provider = globalState.chains.getByPrefix(prefix);
18
+ if (provider) {
19
+ provider.invalidateSdk();
20
+ }
21
+ }
22
+ }
23
+ export const walletTools = [
24
+ {
25
+ name: 'wallet_list',
26
+ description: 'List all wallets with their names, addresses, and chain types. Shows which wallets are unlocked.',
27
+ inputSchema: {
28
+ type: 'object',
29
+ properties: {},
30
+ },
31
+ },
32
+ {
33
+ name: 'wallet_info',
34
+ description: 'Get detailed information about a specific wallet by name',
35
+ inputSchema: {
36
+ type: 'object',
37
+ properties: {
38
+ name: {
39
+ type: 'string',
40
+ description: 'Name of the wallet',
41
+ },
42
+ },
43
+ required: ['name'],
44
+ },
45
+ },
46
+ {
47
+ name: 'wallet_create',
48
+ description: 'Create a new wallet with a name and password. Supports Solana and EVM chains. Returns the address for funding.',
49
+ inputSchema: {
50
+ type: 'object',
51
+ properties: {
52
+ name: {
53
+ type: 'string',
54
+ description: 'Unique name/label for the wallet (e.g., "main-trading", "dev-wallet")',
55
+ },
56
+ chainType: {
57
+ type: 'string',
58
+ enum: ['solana', 'evm'],
59
+ description: 'Chain type: "solana" for Solana wallets, "evm" for Ethereum/Base/etc.',
60
+ },
61
+ password: {
62
+ type: 'string',
63
+ description: 'Password to encrypt the wallet (min 8 characters)',
64
+ },
65
+ },
66
+ required: ['name', 'chainType', 'password'],
67
+ },
68
+ },
69
+ {
70
+ name: 'wallet_import',
71
+ description: 'Import an existing private key as a new wallet. Supports Solana (JSON array, base64, hex) and EVM (hex) formats.',
72
+ inputSchema: {
73
+ type: 'object',
74
+ properties: {
75
+ name: {
76
+ type: 'string',
77
+ description: 'Unique name/label for the wallet',
78
+ },
79
+ chainType: {
80
+ type: 'string',
81
+ enum: ['solana', 'evm'],
82
+ description: 'Chain type: "solana" or "evm"',
83
+ },
84
+ privateKey: {
85
+ type: 'string',
86
+ description: 'Private key. Solana: JSON array [1,2,...], base64, or hex. EVM: 0x-prefixed or plain hex.',
87
+ },
88
+ password: {
89
+ type: 'string',
90
+ description: 'Password to encrypt the wallet (min 8 characters)',
91
+ },
92
+ },
93
+ required: ['name', 'chainType', 'privateKey', 'password'],
94
+ },
95
+ },
96
+ {
97
+ name: 'wallet_unlock',
98
+ description: 'Unlock a wallet with password to enable signing operations',
99
+ inputSchema: {
100
+ type: 'object',
101
+ properties: {
102
+ name: {
103
+ type: 'string',
104
+ description: 'Name of the wallet to unlock',
105
+ },
106
+ password: {
107
+ type: 'string',
108
+ description: 'Password to decrypt the wallet',
109
+ },
110
+ },
111
+ required: ['name', 'password'],
112
+ },
113
+ },
114
+ {
115
+ name: 'wallet_lock',
116
+ description: 'Lock a specific wallet or all wallets (clear keys from memory)',
117
+ inputSchema: {
118
+ type: 'object',
119
+ properties: {
120
+ name: {
121
+ type: 'string',
122
+ description: 'Name of the wallet to lock. If not provided, locks all wallets.',
123
+ },
124
+ },
125
+ },
126
+ },
127
+ {
128
+ name: 'wallet_export',
129
+ description: 'Export wallet as encrypted backup (requires password)',
130
+ inputSchema: {
131
+ type: 'object',
132
+ properties: {
133
+ name: {
134
+ type: 'string',
135
+ description: 'Name of the wallet to export',
136
+ },
137
+ password: {
138
+ type: 'string',
139
+ description: 'Current wallet password',
140
+ },
141
+ exportPassword: {
142
+ type: 'string',
143
+ description: 'Password for the export file (optional, uses current password if not provided)',
144
+ },
145
+ },
146
+ required: ['name', 'password'],
147
+ },
148
+ },
149
+ {
150
+ name: 'wallet_delete',
151
+ description: 'Delete a wallet permanently (requires password confirmation)',
152
+ inputSchema: {
153
+ type: 'object',
154
+ properties: {
155
+ name: {
156
+ type: 'string',
157
+ description: 'Name of the wallet to delete',
158
+ },
159
+ password: {
160
+ type: 'string',
161
+ description: 'Wallet password for confirmation',
162
+ },
163
+ },
164
+ required: ['name', 'password'],
165
+ },
166
+ },
167
+ {
168
+ name: 'wallet_change_password',
169
+ description: 'Change the password for a wallet',
170
+ inputSchema: {
171
+ type: 'object',
172
+ properties: {
173
+ name: {
174
+ type: 'string',
175
+ description: 'Name of the wallet',
176
+ },
177
+ currentPassword: {
178
+ type: 'string',
179
+ description: 'Current wallet password',
180
+ },
181
+ newPassword: {
182
+ type: 'string',
183
+ description: 'New password (min 8 characters)',
184
+ },
185
+ },
186
+ required: ['name', 'currentPassword', 'newPassword'],
187
+ },
188
+ },
189
+ {
190
+ name: 'wallet_security',
191
+ description: 'Configure wallet security settings (auto-lock timeout) and view session status',
192
+ inputSchema: {
193
+ type: 'object',
194
+ properties: {
195
+ autoLockMinutes: {
196
+ type: 'number',
197
+ description: 'Auto-lock timeout in minutes (1-1440, default 15). Wallets auto-lock after this period of inactivity.',
198
+ },
199
+ },
200
+ },
201
+ },
202
+ ];
203
+ export const walletHandlers = {
204
+ wallet_list: async () => {
205
+ const manager = getWalletManager();
206
+ const result = await manager.list();
207
+ // Format wallets for display
208
+ const formatted = result.wallets.map((w) => ({
209
+ name: w.name,
210
+ chain: w.chainType,
211
+ address: w.address,
212
+ status: w.isUnlocked ? 'unlocked' : 'locked',
213
+ created: w.createdAt,
214
+ }));
215
+ return successResponse({
216
+ wallets: formatted,
217
+ total: result.wallets.length,
218
+ unlocked: result.unlockedCount,
219
+ hint: result.wallets.length === 0
220
+ ? 'No wallets found. Use wallet_create to create a new wallet.'
221
+ : undefined,
222
+ });
223
+ },
224
+ wallet_info: async (args) => {
225
+ const input = getArgs(args);
226
+ const name = readString(input, 'name', true);
227
+ const manager = getWalletManager();
228
+ const info = await manager.getInfo(name);
229
+ if (!info) {
230
+ throw new Error(`Wallet "${name}" not found.`);
231
+ }
232
+ return successResponse({
233
+ name: info.name,
234
+ chainType: info.chainType,
235
+ address: info.address,
236
+ publicKey: info.publicKey,
237
+ status: info.isUnlocked ? 'unlocked' : 'locked',
238
+ createdAt: info.createdAt,
239
+ fundingInstructions: info.chainType === 'solana'
240
+ ? `Send SOL to: ${info.address}`
241
+ : `Send ETH/tokens to: ${info.address}`,
242
+ });
243
+ },
244
+ wallet_create: async (args) => {
245
+ const input = getArgs(args);
246
+ const name = readString(input, 'name', true);
247
+ const chainType = readString(input, 'chainType', true);
248
+ const password = readString(input, 'password', true);
249
+ // Validate chain type
250
+ if (!['solana', 'evm'].includes(chainType)) {
251
+ throw new Error('chainType must be "solana" or "evm"');
252
+ }
253
+ const manager = getWalletManager();
254
+ const result = await manager.create(name, chainType, password);
255
+ // Invalidate SDK so it picks up the new keypair (auto-unlocked after create)
256
+ if (chainType === 'solana') {
257
+ invalidateSolanaSDK();
258
+ }
259
+ else {
260
+ invalidateEvmSDKs();
261
+ }
262
+ return successResponse({
263
+ name: result.name,
264
+ chainType: result.chainType,
265
+ address: result.address,
266
+ publicKey: result.publicKey,
267
+ status: 'unlocked',
268
+ message: result.message,
269
+ fundingInstructions: chainType === 'solana'
270
+ ? `Send SOL to fund this wallet: ${result.address}`
271
+ : `Send ETH/tokens to fund this wallet: ${result.address}`,
272
+ warning: 'IMPORTANT: Save your password securely. There is no way to recover your wallet if you forget it.',
273
+ });
274
+ },
275
+ wallet_import: async (args) => {
276
+ const input = getArgs(args);
277
+ const name = readString(input, 'name', true);
278
+ const chainType = readString(input, 'chainType', true);
279
+ const privateKey = readString(input, 'privateKey', true);
280
+ const password = readString(input, 'password', true);
281
+ // Validate chain type
282
+ if (!['solana', 'evm'].includes(chainType)) {
283
+ throw new Error('chainType must be "solana" or "evm"');
284
+ }
285
+ const manager = getWalletManager();
286
+ const result = await manager.import(name, chainType, privateKey, password);
287
+ // Invalidate SDK so it picks up the new keypair (auto-unlocked after import)
288
+ if (chainType === 'solana') {
289
+ invalidateSolanaSDK();
290
+ }
291
+ else {
292
+ invalidateEvmSDKs();
293
+ }
294
+ return successResponse({
295
+ name: result.name,
296
+ chainType: result.chainType,
297
+ address: result.address,
298
+ publicKey: result.publicKey,
299
+ status: 'unlocked',
300
+ message: result.message,
301
+ warning: 'IMPORTANT: Save your password securely. There is no way to recover your wallet if you forget it.',
302
+ });
303
+ },
304
+ wallet_unlock: async (args) => {
305
+ const input = getArgs(args);
306
+ const name = readString(input, 'name', true);
307
+ const password = readString(input, 'password', true);
308
+ const manager = getWalletManager();
309
+ const result = await manager.unlock(name, password);
310
+ // Invalidate SDK so it picks up the new keypair
311
+ if (result.chainType === 'solana') {
312
+ invalidateSolanaSDK();
313
+ }
314
+ else {
315
+ invalidateEvmSDKs();
316
+ }
317
+ return successResponse({
318
+ name: result.name,
319
+ chainType: result.chainType,
320
+ address: result.address,
321
+ status: 'unlocked',
322
+ message: result.message,
323
+ });
324
+ },
325
+ wallet_lock: async (args) => {
326
+ const input = getArgs(args);
327
+ const name = readStringOptional(input, 'name');
328
+ const manager = getWalletManager();
329
+ if (name) {
330
+ // Lock specific wallet
331
+ const locked = manager.lock(name);
332
+ if (!locked) {
333
+ return successResponse({
334
+ message: `Wallet "${name}" was not unlocked.`,
335
+ });
336
+ }
337
+ // Invalidate SDKs (both chains since we might not know the type)
338
+ invalidateSolanaSDK();
339
+ invalidateEvmSDKs();
340
+ return successResponse({
341
+ name,
342
+ status: 'locked',
343
+ message: `Wallet "${name}" locked successfully.`,
344
+ });
345
+ }
346
+ else {
347
+ // Lock all wallets
348
+ const count = manager.lockAll();
349
+ // Invalidate all SDKs
350
+ invalidateSolanaSDK();
351
+ invalidateEvmSDKs();
352
+ return successResponse({
353
+ lockedCount: count,
354
+ message: count > 0
355
+ ? `Locked ${count} wallet(s).`
356
+ : 'No wallets were unlocked.',
357
+ });
358
+ }
359
+ },
360
+ wallet_export: async (args) => {
361
+ const input = getArgs(args);
362
+ const name = readString(input, 'name', true);
363
+ const password = readString(input, 'password', true);
364
+ const exportPassword = readStringOptional(input, 'exportPassword');
365
+ const manager = getWalletManager();
366
+ const exportData = await manager.export(name, password, exportPassword ?? undefined);
367
+ return successResponse({
368
+ name,
369
+ message: 'Wallet exported successfully. Save this encrypted backup securely.',
370
+ encryptedWallet: exportData,
371
+ });
372
+ },
373
+ wallet_delete: async (args) => {
374
+ const input = getArgs(args);
375
+ const name = readString(input, 'name', true);
376
+ const password = readString(input, 'password', true);
377
+ const manager = getWalletManager();
378
+ await manager.delete(name, password);
379
+ // Invalidate all SDKs (we don't know the chain type after deletion)
380
+ invalidateSolanaSDK();
381
+ invalidateEvmSDKs();
382
+ return successResponse({
383
+ name,
384
+ message: `Wallet "${name}" deleted permanently.`,
385
+ });
386
+ },
387
+ wallet_change_password: async (args) => {
388
+ const input = getArgs(args);
389
+ const name = readString(input, 'name', true);
390
+ const currentPassword = readString(input, 'currentPassword', true);
391
+ const newPassword = readString(input, 'newPassword', true);
392
+ const manager = getWalletManager();
393
+ await manager.changePassword(name, currentPassword, newPassword);
394
+ return successResponse({
395
+ name,
396
+ message: `Password changed successfully for wallet "${name}".`,
397
+ });
398
+ },
399
+ wallet_security: async (args) => {
400
+ const input = getArgs(args);
401
+ const manager = getWalletManager();
402
+ // Update auto-lock if provided
403
+ if (input && typeof input === 'object' && 'autoLockMinutes' in input) {
404
+ const minutes = Number(input.autoLockMinutes);
405
+ if (!isNaN(minutes) && minutes >= 1 && minutes <= 1440) {
406
+ manager.setAutoLockTimeout(minutes * 60 * 1000);
407
+ }
408
+ }
409
+ // Get current settings and session info
410
+ const autoLockMs = manager.getAutoLockTimeout();
411
+ const sessions = manager.getSessionInfo();
412
+ return successResponse({
413
+ security: {
414
+ autoLockMinutes: Math.round(autoLockMs / 60000),
415
+ autoLockEnabled: true,
416
+ memoryWipeOnLock: true,
417
+ },
418
+ activeSessions: sessions.map(s => ({
419
+ wallet: s.name,
420
+ lastActivity: new Date(s.lastActivity).toISOString(),
421
+ expiresIn: `${Math.round((s.lastActivity + autoLockMs - Date.now()) / 1000)}s`,
422
+ })),
423
+ message: sessions.length > 0
424
+ ? `${sessions.length} wallet(s) unlocked. Auto-lock: ${Math.round(autoLockMs / 60000)} min.`
425
+ : `No wallets unlocked. Auto-lock: ${Math.round(autoLockMs / 60000)} min.`,
426
+ });
427
+ },
428
+ };
429
+ // Tool aliases for backward compatibility
430
+ export const walletAliases = {
431
+ // Old single-wallet tools map to new multi-wallet versions
432
+ wallet_status: 'wallet_list',
433
+ };
434
+ //# sourceMappingURL=wallet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../src/tools/unified/wallet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
+ export declare const writeOperationTools: Tool[];
3
+ export declare const writeOperationHandlers: Record<string, (args: unknown) => Promise<unknown>>;
4
+ export declare const writeOperationAliases: Record<string, string>;
5
+ //# sourceMappingURL=write-operations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-operations.d.ts","sourceRoot":"","sources":["../../../src/tools/unified/write-operations.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAgB/D,eAAO,MAAM,mBAAmB,EAAE,IAAI,EAwOrC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAsYtF,CAAC;AAGF,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAOxD,CAAC"}