@moonpay/cli 0.6.10 → 0.6.11
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/dist/{chunk-TIV6G4KD.js → chunk-6TW2YUWK.js} +530 -170
- package/dist/chunk-6TW2YUWK.js.map +1 -0
- package/dist/{chunk-AL5WDHLT.js → chunk-ZYYH3VNA.js} +53 -22
- package/dist/chunk-ZYYH3VNA.js.map +1 -0
- package/dist/index.js +17 -453
- package/dist/index.js.map +1 -1
- package/dist/{mcp-7OXDGMYU.js → mcp-VK7BDE25.js} +5 -30
- package/dist/mcp-VK7BDE25.js.map +1 -0
- package/dist/{store-QVVENVIP.js → store-6OIOBMHW.js} +2 -2
- package/package.json +1 -1
- package/skills/moonpay-deposit/SKILL.md +16 -8
- package/dist/chunk-AL5WDHLT.js.map +0 -1
- package/dist/chunk-TIV6G4KD.js.map +0 -1
- package/dist/mcp-7OXDGMYU.js.map +0 -1
- /package/dist/{store-QVVENVIP.js.map → store-6OIOBMHW.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,38 +1,16 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
callPublicTool,
|
|
6
|
-
callRemoteTool,
|
|
4
|
+
LOCAL_TOOLS,
|
|
7
5
|
callTool,
|
|
8
|
-
|
|
9
|
-
createTool,
|
|
10
|
-
defineToolSchema,
|
|
11
|
-
getConfigOrDefault,
|
|
12
|
-
messageSign,
|
|
6
|
+
consentCheck,
|
|
13
7
|
resolveBaseUrl,
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
tokenSwap,
|
|
18
|
-
transactionSign,
|
|
19
|
-
virtualAccountWalletRegister,
|
|
20
|
-
walletCreate,
|
|
21
|
-
walletDelete,
|
|
22
|
-
walletImport,
|
|
23
|
-
walletList,
|
|
24
|
-
walletRename,
|
|
25
|
-
walletRetrieve,
|
|
26
|
-
x402Request
|
|
27
|
-
} from "./chunk-TIV6G4KD.js";
|
|
28
|
-
import {
|
|
29
|
-
KEY_CHAIN_MAP,
|
|
30
|
-
chainSchema,
|
|
31
|
-
findWalletOrThrow
|
|
32
|
-
} from "./chunk-AL5WDHLT.js";
|
|
8
|
+
schemas_default
|
|
9
|
+
} from "./chunk-6TW2YUWK.js";
|
|
10
|
+
import "./chunk-ZYYH3VNA.js";
|
|
33
11
|
|
|
34
12
|
// src/index.ts
|
|
35
|
-
import { createRequire
|
|
13
|
+
import { createRequire } from "module";
|
|
36
14
|
import { Command } from "commander";
|
|
37
15
|
|
|
38
16
|
// src/format.ts
|
|
@@ -171,423 +149,9 @@ function startVersionCheck(currentVersion) {
|
|
|
171
149
|
return () => notice;
|
|
172
150
|
}
|
|
173
151
|
|
|
174
|
-
// src/tools/wallet/export/schema.ts
|
|
175
|
-
import { z } from "zod";
|
|
176
|
-
var walletExportSchema = defineToolSchema({
|
|
177
|
-
name: "wallet_export",
|
|
178
|
-
description: "Export wallet secret (mnemonic or private key). Interactive only \u2014 cannot be run by agents or piped.",
|
|
179
|
-
input: z.object({
|
|
180
|
-
wallet: z.string().describe("Wallet name")
|
|
181
|
-
}),
|
|
182
|
-
output: z.object({
|
|
183
|
-
exported: z.literal(true)
|
|
184
|
-
})
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
// src/tools/wallet/export/tool.ts
|
|
188
|
-
var walletExport = createTool(walletExportSchema, async (params) => {
|
|
189
|
-
if (!process.stdout.isTTY) {
|
|
190
|
-
throw new Error(
|
|
191
|
-
"Wallet export requires an interactive terminal.\nRun this command directly in your terminal: mp wallet export " + params.wallet
|
|
192
|
-
);
|
|
193
|
-
}
|
|
194
|
-
const wallet = findWalletOrThrow(params.wallet);
|
|
195
|
-
if (wallet.type === "hd") {
|
|
196
|
-
process.stderr.write(`
|
|
197
|
-
Mnemonic for "${wallet.name}":
|
|
198
|
-
|
|
199
|
-
`);
|
|
200
|
-
process.stderr.write(` ${wallet.mnemonic}
|
|
201
|
-
|
|
202
|
-
`);
|
|
203
|
-
process.stderr.write("Write this down and store it securely.\n\n");
|
|
204
|
-
} else {
|
|
205
|
-
process.stderr.write(`
|
|
206
|
-
Private key for "${wallet.name}" (${wallet.chain}):
|
|
207
|
-
|
|
208
|
-
`);
|
|
209
|
-
process.stderr.write(` ${wallet.privateKey}
|
|
210
|
-
|
|
211
|
-
`);
|
|
212
|
-
}
|
|
213
|
-
return { exported: true };
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
// src/tools/skill/server.ts
|
|
217
|
-
import { readdirSync, readFileSync as readFileSync2, existsSync, mkdirSync as mkdirSync2, cpSync } from "fs";
|
|
218
|
-
import { join as join2, dirname } from "path";
|
|
219
|
-
import { homedir as homedir2 } from "os";
|
|
220
|
-
import { fileURLToPath } from "url";
|
|
221
|
-
function getSkillsDir() {
|
|
222
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
223
|
-
const distDir = dirname(__filename);
|
|
224
|
-
return join2(distDir, "..", "skills");
|
|
225
|
-
}
|
|
226
|
-
function getClaudeSkillsDir() {
|
|
227
|
-
return join2(homedir2(), ".claude", "skills");
|
|
228
|
-
}
|
|
229
|
-
function listBundledSkills() {
|
|
230
|
-
const dir = getSkillsDir();
|
|
231
|
-
if (!existsSync(dir)) return [];
|
|
232
|
-
return readdirSync(dir, { withFileTypes: true }).filter((e) => e.isDirectory() && e.name.startsWith("moonpay-")).map((e) => {
|
|
233
|
-
const md = readFileSync2(join2(dir, e.name, "SKILL.md"), "utf-8");
|
|
234
|
-
const descMatch = md.match(/^description:\s*(.+)$/m);
|
|
235
|
-
return {
|
|
236
|
-
name: e.name,
|
|
237
|
-
description: descMatch?.[1]?.replace(/^["']|["']$/g, "") ?? ""
|
|
238
|
-
};
|
|
239
|
-
}).sort((a, b) => a.name.localeCompare(b.name));
|
|
240
|
-
}
|
|
241
|
-
function readSkill(name) {
|
|
242
|
-
if (/[/\\]|\.\./.test(name)) throw new Error(`Invalid skill name: "${name}"`);
|
|
243
|
-
const skillPath = join2(getSkillsDir(), name, "SKILL.md");
|
|
244
|
-
if (!existsSync(skillPath)) {
|
|
245
|
-
throw new Error(`Skill "${name}" not found. Run \`mp skill list\` to see available skills.`);
|
|
246
|
-
}
|
|
247
|
-
return readFileSync2(skillPath, "utf-8");
|
|
248
|
-
}
|
|
249
|
-
function installSkills(force, dir) {
|
|
250
|
-
const srcDir = getSkillsDir();
|
|
251
|
-
const destDir = dir ?? getClaudeSkillsDir();
|
|
252
|
-
const skills = listBundledSkills();
|
|
253
|
-
mkdirSync2(destDir, { recursive: true });
|
|
254
|
-
return skills.map((s) => {
|
|
255
|
-
const dest = join2(destDir, s.name);
|
|
256
|
-
if (existsSync(dest) && !force) {
|
|
257
|
-
return { name: s.name, installed: false };
|
|
258
|
-
}
|
|
259
|
-
cpSync(join2(srcDir, s.name), dest, { recursive: true, force: true });
|
|
260
|
-
return { name: s.name, installed: true };
|
|
261
|
-
});
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// src/tools/skill/list/schema.ts
|
|
265
|
-
import { z as z2 } from "zod";
|
|
266
|
-
var skillListSchema = defineToolSchema({
|
|
267
|
-
name: "skill_list",
|
|
268
|
-
description: "List available AI skills for Claude Code and other agents",
|
|
269
|
-
input: z2.object({}),
|
|
270
|
-
output: z2.array(
|
|
271
|
-
z2.object({
|
|
272
|
-
name: z2.string(),
|
|
273
|
-
description: z2.string()
|
|
274
|
-
})
|
|
275
|
-
)
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
// src/tools/skill/list/tool.ts
|
|
279
|
-
var skillList = createTool(skillListSchema, async () => {
|
|
280
|
-
return listBundledSkills();
|
|
281
|
-
});
|
|
282
|
-
|
|
283
|
-
// src/tools/skill/retrieve/schema.ts
|
|
284
|
-
import { z as z3 } from "zod";
|
|
285
|
-
var skillRetrieveSchema = defineToolSchema({
|
|
286
|
-
name: "skill_retrieve",
|
|
287
|
-
description: "Get the full instructions for a specific skill",
|
|
288
|
-
input: z3.object({
|
|
289
|
-
name: z3.string().describe("Skill name (e.g. moonpay-swap-tokens)")
|
|
290
|
-
}),
|
|
291
|
-
output: z3.object({
|
|
292
|
-
name: z3.string(),
|
|
293
|
-
content: z3.string()
|
|
294
|
-
})
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
// src/tools/skill/retrieve/tool.ts
|
|
298
|
-
var skillRetrieve = createTool(skillRetrieveSchema, async (params) => {
|
|
299
|
-
return {
|
|
300
|
-
name: params.name,
|
|
301
|
-
content: readSkill(params.name)
|
|
302
|
-
};
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
// src/tools/skill/install/schema.ts
|
|
306
|
-
import { z as z4 } from "zod";
|
|
307
|
-
var skillInstallSchema = defineToolSchema({
|
|
308
|
-
name: "skill_install",
|
|
309
|
-
description: "Install AI skills for Claude Code. Defaults to ~/.claude/skills/, or specify --dir for a custom location (e.g. project-local, ~/.agents/skills).",
|
|
310
|
-
input: z4.object({
|
|
311
|
-
force: z4.boolean().describe("Overwrite existing skills"),
|
|
312
|
-
dir: z4.string().nullable().describe(
|
|
313
|
-
"Target directory to install skills into (default: ~/.claude/skills/)"
|
|
314
|
-
)
|
|
315
|
-
}),
|
|
316
|
-
output: z4.array(
|
|
317
|
-
z4.object({
|
|
318
|
-
name: z4.string(),
|
|
319
|
-
installed: z4.boolean()
|
|
320
|
-
})
|
|
321
|
-
)
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
// src/tools/skill/install/tool.ts
|
|
325
|
-
var skillInstall = createTool(skillInstallSchema, async (params) => {
|
|
326
|
-
return installSkills(params.force, params.dir ?? void 0);
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
// src/tools/token/transfer/schema.ts
|
|
330
|
-
import { z as z5 } from "zod";
|
|
331
|
-
var tokenTransferSchema = defineToolSchema({
|
|
332
|
-
name: "token_transfer",
|
|
333
|
-
description: "Transfer tokens to another wallet on the same chain. Builds, signs locally, and broadcasts.",
|
|
334
|
-
input: z5.object({
|
|
335
|
-
wallet: z5.string().describe("Local wallet name to sign with"),
|
|
336
|
-
chain: chainSchema.describe("Chain to transfer on"),
|
|
337
|
-
token: z5.string().describe("Token address to transfer"),
|
|
338
|
-
amount: z5.coerce.number().describe("Amount to transfer"),
|
|
339
|
-
to: z5.string().describe("Recipient wallet name or address")
|
|
340
|
-
}),
|
|
341
|
-
output: z5.object({
|
|
342
|
-
signature: z5.string().describe("Transaction hash/signature"),
|
|
343
|
-
message: z5.string().describe("Human-readable transfer description")
|
|
344
|
-
})
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
// src/tools/token/transfer/tool.ts
|
|
348
|
-
var tokenTransfer = createTool(tokenTransferSchema, async (params) => {
|
|
349
|
-
const baseUrl = resolveBaseUrl();
|
|
350
|
-
const wallet = await walletRetrieve.handler({ wallet: params.wallet });
|
|
351
|
-
const fromAddress = wallet.addresses[KEY_CHAIN_MAP[params.chain]];
|
|
352
|
-
if (!fromAddress) {
|
|
353
|
-
throw new Error(`Wallet "${wallet.name}" has no address on ${params.chain}.`);
|
|
354
|
-
}
|
|
355
|
-
let toAddress = params.to;
|
|
356
|
-
try {
|
|
357
|
-
const toWallet = await walletRetrieve.handler({ wallet: params.to });
|
|
358
|
-
toAddress = toWallet.addresses[KEY_CHAIN_MAP[params.chain]] ?? params.to;
|
|
359
|
-
} catch {
|
|
360
|
-
}
|
|
361
|
-
const buildResult = await callRemoteTool(baseUrl, "token_transfer", {
|
|
362
|
-
wallet: fromAddress,
|
|
363
|
-
token: params.token,
|
|
364
|
-
to: toAddress,
|
|
365
|
-
amount: params.amount,
|
|
366
|
-
chain: params.chain
|
|
367
|
-
});
|
|
368
|
-
const txPayload = "base64" in buildResult.transaction ? buildResult.transaction.base64 : JSON.stringify(buildResult.transaction);
|
|
369
|
-
const { transaction: signedTransaction } = await transactionSign.handler({
|
|
370
|
-
wallet: wallet.name,
|
|
371
|
-
chain: params.chain,
|
|
372
|
-
transaction: txPayload
|
|
373
|
-
});
|
|
374
|
-
const sendResult = await callRemoteTool(baseUrl, "transaction_send", {
|
|
375
|
-
transaction: signedTransaction,
|
|
376
|
-
message: buildResult.message,
|
|
377
|
-
chain: params.chain
|
|
378
|
-
});
|
|
379
|
-
if (!sendResult.signature) {
|
|
380
|
-
throw new Error(`Transaction send failed: ${sendResult.message}`);
|
|
381
|
-
}
|
|
382
|
-
return { signature: sendResult.signature, message: buildResult.message };
|
|
383
|
-
});
|
|
384
|
-
|
|
385
|
-
// src/tools/consent/accept/tool.ts
|
|
386
|
-
import * as fs from "fs";
|
|
387
|
-
import * as os from "os";
|
|
388
|
-
import * as path from "path";
|
|
389
|
-
|
|
390
|
-
// src/tools/consent/accept/schema.ts
|
|
391
|
-
import { z as z6 } from "zod";
|
|
392
|
-
var consentAcceptSchema = defineToolSchema({
|
|
393
|
-
name: "consent_accept",
|
|
394
|
-
description: "Accept the MoonPay Terms of Service and Privacy Policy. Required before using any CLI command.",
|
|
395
|
-
input: z6.object({}),
|
|
396
|
-
output: z6.object({
|
|
397
|
-
tosVersion: z6.string(),
|
|
398
|
-
acceptedAt: z6.string()
|
|
399
|
-
})
|
|
400
|
-
});
|
|
401
|
-
|
|
402
|
-
// src/tools/consent/accept/tool.ts
|
|
403
|
-
var CONFIG_DIR = path.join(os.homedir(), ".config", "moonpay");
|
|
404
|
-
var CONSENT_PATH = path.join(CONFIG_DIR, "consent.json");
|
|
405
|
-
var CURRENT_TOS_VERSION = "1.0";
|
|
406
|
-
var consentAccept = createTool(consentAcceptSchema, async () => {
|
|
407
|
-
if (!fs.existsSync(CONFIG_DIR)) {
|
|
408
|
-
fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 448 });
|
|
409
|
-
}
|
|
410
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
411
|
-
const consent = { tosVersion: CURRENT_TOS_VERSION, acceptedAt: now };
|
|
412
|
-
const tmp = CONSENT_PATH + `.tmp.${process.pid}`;
|
|
413
|
-
fs.writeFileSync(tmp, JSON.stringify(consent, null, 2), {
|
|
414
|
-
encoding: "utf-8",
|
|
415
|
-
mode: 384
|
|
416
|
-
});
|
|
417
|
-
fs.renameSync(tmp, CONSENT_PATH);
|
|
418
|
-
return consent;
|
|
419
|
-
});
|
|
420
|
-
|
|
421
|
-
// src/tools/consent/check/tool.ts
|
|
422
|
-
import * as fs2 from "fs";
|
|
423
|
-
import * as os2 from "os";
|
|
424
|
-
import * as path2 from "path";
|
|
425
|
-
|
|
426
|
-
// src/tools/consent/check/schema.ts
|
|
427
|
-
import { z as z7 } from "zod";
|
|
428
|
-
var consentCheckSchema = defineToolSchema({
|
|
429
|
-
name: "consent_check",
|
|
430
|
-
description: "Check whether the MoonPay Terms of Service and Privacy Policy have been accepted. Throws if not accepted.",
|
|
431
|
-
input: z7.object({}),
|
|
432
|
-
output: z7.object({
|
|
433
|
-
accepted: z7.literal(true),
|
|
434
|
-
tosVersion: z7.string(),
|
|
435
|
-
acceptedAt: z7.string()
|
|
436
|
-
})
|
|
437
|
-
});
|
|
438
|
-
|
|
439
|
-
// src/tools/consent/check/tool.ts
|
|
440
|
-
var CONSENT_PATH2 = path2.join(os2.homedir(), ".config", "moonpay", "consent.json");
|
|
441
|
-
var CURRENT_TOS_VERSION2 = "1.0";
|
|
442
|
-
var consentCheck = createTool(consentCheckSchema, async () => {
|
|
443
|
-
let consent = null;
|
|
444
|
-
try {
|
|
445
|
-
consent = JSON.parse(fs2.readFileSync(CONSENT_PATH2, "utf-8"));
|
|
446
|
-
} catch {
|
|
447
|
-
}
|
|
448
|
-
if (!consent || consent.tosVersion !== CURRENT_TOS_VERSION2) {
|
|
449
|
-
throw new Error(
|
|
450
|
-
"Terms of Service not yet accepted. Run `mp consent accept` first."
|
|
451
|
-
);
|
|
452
|
-
}
|
|
453
|
-
return {
|
|
454
|
-
accepted: true,
|
|
455
|
-
tosVersion: consent.tosVersion,
|
|
456
|
-
acceptedAt: consent.acceptedAt
|
|
457
|
-
};
|
|
458
|
-
});
|
|
459
|
-
|
|
460
|
-
// src/tools/login/schema.ts
|
|
461
|
-
import { z as z8 } from "zod";
|
|
462
|
-
var loginSchema = defineToolSchema({
|
|
463
|
-
name: "login",
|
|
464
|
-
description: "Send a login verification code to your email.",
|
|
465
|
-
input: z8.object({
|
|
466
|
-
email: z8.string().describe("Email address")
|
|
467
|
-
}),
|
|
468
|
-
output: z8.object({
|
|
469
|
-
email: z8.string(),
|
|
470
|
-
message: z8.string()
|
|
471
|
-
})
|
|
472
|
-
});
|
|
473
|
-
|
|
474
|
-
// src/tools/login/tool.ts
|
|
475
|
-
var login = createTool(loginSchema, async (params) => {
|
|
476
|
-
const { baseUrl } = getConfigOrDefault();
|
|
477
|
-
await callPublicTool(baseUrl, "login", { email: params.email });
|
|
478
|
-
return {
|
|
479
|
-
email: params.email,
|
|
480
|
-
message: `Verification code sent to ${params.email}. Run: mp verify --email ${params.email} --code <code>`
|
|
481
|
-
};
|
|
482
|
-
});
|
|
483
|
-
|
|
484
|
-
// src/tools/verify/schema.ts
|
|
485
|
-
import { z as z9 } from "zod";
|
|
486
|
-
var verifySchema = defineToolSchema({
|
|
487
|
-
name: "verify",
|
|
488
|
-
description: "Verify login code and store encrypted credentials.",
|
|
489
|
-
input: z9.object({
|
|
490
|
-
email: z9.string().describe("Email address"),
|
|
491
|
-
code: z9.string().describe("Verification code")
|
|
492
|
-
}),
|
|
493
|
-
output: z9.object({
|
|
494
|
-
email: z9.string(),
|
|
495
|
-
message: z9.string()
|
|
496
|
-
})
|
|
497
|
-
});
|
|
498
|
-
|
|
499
|
-
// src/tools/verify/tool.ts
|
|
500
|
-
var verify = createTool(verifySchema, async (params) => {
|
|
501
|
-
const { baseUrl } = getConfigOrDefault();
|
|
502
|
-
const tokens = await callPublicTool(baseUrl, "verify", {
|
|
503
|
-
email: params.email,
|
|
504
|
-
code: params.code
|
|
505
|
-
});
|
|
506
|
-
const creds = {
|
|
507
|
-
accessToken: tokens.accessToken,
|
|
508
|
-
refreshToken: tokens.refreshToken,
|
|
509
|
-
expiresAt: tokens.expiresAt * 1e3,
|
|
510
|
-
baseUrl
|
|
511
|
-
};
|
|
512
|
-
saveCredentials(creds);
|
|
513
|
-
return { email: params.email, message: "Logged in successfully." };
|
|
514
|
-
});
|
|
515
|
-
|
|
516
|
-
// src/tools/logout/schema.ts
|
|
517
|
-
import { z as z10 } from "zod";
|
|
518
|
-
var logoutSchema = defineToolSchema({
|
|
519
|
-
name: "logout",
|
|
520
|
-
description: "Log out and clear stored credentials.",
|
|
521
|
-
input: z10.object({}),
|
|
522
|
-
output: z10.object({
|
|
523
|
-
success: z10.literal(true),
|
|
524
|
-
message: z10.string()
|
|
525
|
-
})
|
|
526
|
-
});
|
|
527
|
-
|
|
528
|
-
// src/tools/logout/tool.ts
|
|
529
|
-
var logout = createTool(logoutSchema, async () => {
|
|
530
|
-
clearCredentials();
|
|
531
|
-
return { success: true, message: "Logged out." };
|
|
532
|
-
});
|
|
533
|
-
|
|
534
|
-
// src/tools/qr/tool.ts
|
|
535
|
-
import { createRequire } from "module";
|
|
536
|
-
|
|
537
|
-
// src/tools/qr/schema.ts
|
|
538
|
-
import { z as z11 } from "zod";
|
|
539
|
-
var qrGenerateSchema = defineToolSchema({
|
|
540
|
-
name: "qr_generate",
|
|
541
|
-
description: "Display a QR code in the terminal. Pass any text \u2014 wallet address, URL, token address, etc.",
|
|
542
|
-
input: z11.object({
|
|
543
|
-
value: z11.string().describe("Text to encode as a QR code")
|
|
544
|
-
}),
|
|
545
|
-
output: z11.object({
|
|
546
|
-
value: z11.string()
|
|
547
|
-
})
|
|
548
|
-
});
|
|
549
|
-
|
|
550
|
-
// src/tools/qr/tool.ts
|
|
551
|
-
var require2 = createRequire(import.meta.url);
|
|
552
|
-
var qrcode = require2("qrcode-terminal");
|
|
553
|
-
var qrGenerate = createTool(qrGenerateSchema, async (params) => {
|
|
554
|
-
qrcode.generate(params.value, { small: true }, (code) => {
|
|
555
|
-
process.stderr.write(`
|
|
556
|
-
${code}
|
|
557
|
-
`);
|
|
558
|
-
});
|
|
559
|
-
return { value: params.value };
|
|
560
|
-
});
|
|
561
|
-
|
|
562
152
|
// src/index.ts
|
|
563
|
-
var
|
|
564
|
-
|
|
565
|
-
walletImport,
|
|
566
|
-
walletList,
|
|
567
|
-
walletRetrieve,
|
|
568
|
-
walletDelete,
|
|
569
|
-
walletRename,
|
|
570
|
-
walletExport,
|
|
571
|
-
transactionSign,
|
|
572
|
-
messageSign,
|
|
573
|
-
bitcoinBalanceRetrieve,
|
|
574
|
-
skillList,
|
|
575
|
-
skillRetrieve,
|
|
576
|
-
skillInstall,
|
|
577
|
-
tokenSwap,
|
|
578
|
-
tokenBridge,
|
|
579
|
-
tokenTransfer,
|
|
580
|
-
x402Request,
|
|
581
|
-
virtualAccountWalletRegister,
|
|
582
|
-
consentAccept,
|
|
583
|
-
consentCheck,
|
|
584
|
-
login,
|
|
585
|
-
verify,
|
|
586
|
-
logout,
|
|
587
|
-
qrGenerate
|
|
588
|
-
];
|
|
589
|
-
var require3 = createRequire2(import.meta.url);
|
|
590
|
-
var { version } = require3("../package.json");
|
|
153
|
+
var require2 = createRequire(import.meta.url);
|
|
154
|
+
var { version } = require2("../package.json");
|
|
591
155
|
var getUpdateNotice = startVersionCheck(version);
|
|
592
156
|
var program = new Command();
|
|
593
157
|
program.name("moonpay").description(
|
|
@@ -606,7 +170,7 @@ function printUpdateNotice() {
|
|
|
606
170
|
if (notice) process.stderr.write(notice);
|
|
607
171
|
}
|
|
608
172
|
program.command("mcp").description("Start MCP server over stdio (for Claude Desktop, Claude Code, etc.)").action(async () => {
|
|
609
|
-
const { startMcpServer } = await import("./mcp-
|
|
173
|
+
const { startMcpServer } = await import("./mcp-VK7BDE25.js");
|
|
610
174
|
await startMcpServer();
|
|
611
175
|
});
|
|
612
176
|
function getOrCreateGroup(parent, segments) {
|
|
@@ -638,20 +202,20 @@ function flattenShape(shape, prefix = "") {
|
|
|
638
202
|
}
|
|
639
203
|
function unflattenParams(flat, fields) {
|
|
640
204
|
const result = {};
|
|
641
|
-
for (const { flatKey, path
|
|
205
|
+
for (const { flatKey, path } of fields) {
|
|
642
206
|
const camelKey = flatKey.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
643
207
|
const value = camelKey in flat ? flat[camelKey] : flat[flatKey];
|
|
644
|
-
if (
|
|
645
|
-
result[
|
|
208
|
+
if (path.length === 1) {
|
|
209
|
+
result[path[0]] = value;
|
|
646
210
|
} else {
|
|
647
211
|
let obj = result;
|
|
648
|
-
for (let i = 0; i <
|
|
649
|
-
if (!obj[
|
|
650
|
-
obj[
|
|
212
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
213
|
+
if (!obj[path[i]] || typeof obj[path[i]] !== "object") {
|
|
214
|
+
obj[path[i]] = {};
|
|
651
215
|
}
|
|
652
|
-
obj = obj[
|
|
216
|
+
obj = obj[path[i]];
|
|
653
217
|
}
|
|
654
|
-
obj[
|
|
218
|
+
obj[path[path.length - 1]] = value;
|
|
655
219
|
}
|
|
656
220
|
}
|
|
657
221
|
return result;
|