@moonpay/cli 0.6.7 → 0.6.10

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/index.js CHANGED
@@ -24,7 +24,7 @@ import {
24
24
  walletRename,
25
25
  walletRetrieve,
26
26
  x402Request
27
- } from "./chunk-DWAP6OI2.js";
27
+ } from "./chunk-TIV6G4KD.js";
28
28
  import {
29
29
  KEY_CHAIN_MAP,
30
30
  chainSchema,
@@ -32,7 +32,7 @@ import {
32
32
  } from "./chunk-AL5WDHLT.js";
33
33
 
34
34
  // src/index.ts
35
- import { createRequire } from "module";
35
+ import { createRequire as createRequire2 } from "module";
36
36
  import { Command } from "commander";
37
37
 
38
38
  // src/format.ts
@@ -531,6 +531,34 @@ var logout = createTool(logoutSchema, async () => {
531
531
  return { success: true, message: "Logged out." };
532
532
  });
533
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
+
534
562
  // src/index.ts
535
563
  var LOCAL_TOOLS = [
536
564
  walletCreate,
@@ -555,10 +583,11 @@ var LOCAL_TOOLS = [
555
583
  consentCheck,
556
584
  login,
557
585
  verify,
558
- logout
586
+ logout,
587
+ qrGenerate
559
588
  ];
560
- var require2 = createRequire(import.meta.url);
561
- var { version } = require2("../package.json");
589
+ var require3 = createRequire2(import.meta.url);
590
+ var { version } = require3("../package.json");
562
591
  var getUpdateNotice = startVersionCheck(version);
563
592
  var program = new Command();
564
593
  program.name("moonpay").description(
@@ -577,7 +606,7 @@ function printUpdateNotice() {
577
606
  if (notice) process.stderr.write(notice);
578
607
  }
579
608
  program.command("mcp").description("Start MCP server over stdio (for Claude Desktop, Claude Code, etc.)").action(async () => {
580
- const { startMcpServer } = await import("./mcp-5QZGKH7E.js");
609
+ const { startMcpServer } = await import("./mcp-7OXDGMYU.js");
581
610
  await startMcpServer();
582
611
  });
583
612
  function getOrCreateGroup(parent, segments) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/format.ts","../src/version-check.ts","../src/tools/wallet/export/schema.ts","../src/tools/wallet/export/tool.ts","../src/tools/skill/server.ts","../src/tools/skill/list/schema.ts","../src/tools/skill/list/tool.ts","../src/tools/skill/retrieve/schema.ts","../src/tools/skill/retrieve/tool.ts","../src/tools/skill/install/schema.ts","../src/tools/skill/install/tool.ts","../src/tools/token/transfer/schema.ts","../src/tools/token/transfer/tool.ts","../src/tools/consent/accept/tool.ts","../src/tools/consent/accept/schema.ts","../src/tools/consent/check/tool.ts","../src/tools/consent/check/schema.ts","../src/tools/login/schema.ts","../src/tools/login/tool.ts","../src/tools/verify/schema.ts","../src/tools/verify/tool.ts","../src/tools/logout/schema.ts","../src/tools/logout/tool.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { createRequire } from \"module\";\nimport { Command } from \"commander\";\nimport { resolveBaseUrl } from \"./auth\";\n\nimport { callTool } from \"./client\";\nimport { color, formatOutput, type OutputFormat } from \"./format\";\nimport { startVersionCheck } from \"./version-check\";\nimport type { Tool } from \"./tools/shared\";\nimport schemas from \"./generated/schemas.json\";\nimport { walletCreate } from \"./tools/wallet/create/tool\";\nimport { walletImport } from \"./tools/wallet/import/tool\";\nimport { walletList } from \"./tools/wallet/list/tool\";\nimport { walletRetrieve } from \"./tools/wallet/retrieve/tool\";\nimport { walletDelete } from \"./tools/wallet/delete/tool\";\nimport { walletRename } from \"./tools/wallet/rename/tool\";\nimport { walletExport } from \"./tools/wallet/export/tool\";\nimport { transactionSign } from \"./tools/transaction/sign/tool\";\nimport { messageSign } from \"./tools/message/sign/tool\";\nimport { bitcoinBalanceRetrieve } from \"./tools/bitcoin/balance/tool\";\nimport { skillList } from \"./tools/skill/list/tool\";\nimport { skillRetrieve } from \"./tools/skill/retrieve/tool\";\nimport { skillInstall } from \"./tools/skill/install/tool\";\nimport { tokenSwap, tokenBridge } from \"./tools/token/swap/tool\";\nimport { tokenTransfer } from \"./tools/token/transfer/tool\";\nimport { x402Request } from \"./tools/x402/request/tool\";\nimport { virtualAccountWalletRegister } from \"./tools/virtual-account/wallet/register/tool\";\nimport { consentAccept } from \"./tools/consent/accept/tool\";\nimport { consentCheck } from \"./tools/consent/check/tool\";\nimport { login } from \"./tools/login/tool\";\nimport { verify } from \"./tools/verify/tool\";\nimport { logout } from \"./tools/logout/tool\";\n/** All local tools — CLI commands are derived from their schemas */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst LOCAL_TOOLS: Tool<any>[] = [\n walletCreate,\n walletImport,\n walletList,\n walletRetrieve,\n walletDelete,\n walletRename,\n walletExport,\n transactionSign,\n messageSign,\n bitcoinBalanceRetrieve,\n skillList,\n skillRetrieve,\n skillInstall,\n tokenSwap,\n tokenBridge,\n tokenTransfer,\n x402Request,\n virtualAccountWalletRegister,\n consentAccept,\n consentCheck,\n login,\n verify,\n logout,\n];\n\nconst require = createRequire(import.meta.url);\nconst { version } = require(\"../package.json\") as { version: string };\n\nconst getUpdateNotice = startVersionCheck(version);\n\nconst program = new Command();\n\nprogram\n .name(\"moonpay\")\n .description(\n \"MoonPay CLI — the crypto onramp for AI agents\\n\\n\" +\n \" Your agents need money. MoonPay gives them wallets, funds, and tools\\n\" +\n \" to buy, swap, bridge, and transact — all from the command line.\\n\\n\" +\n \" Run `mp skill install` to install AI skills for Claude Code.\\n\\n\" +\n \" Terms of Service: https://www.moonpay.com/legal/terms_of_use_usa\\n\" +\n \" Privacy Policy: https://www.moonpay.com/legal/privacy_policy\\n\" +\n \" Swaps by: https://swaps.xyz/terms\",\n )\n .version(version)\n .option(\"-f, --format <type>\", \"Output format: json, compact, or table\", \"json\");\n\nfunction getFormat(): OutputFormat {\n const fmt = program.opts().format as string;\n if (fmt === \"json\" || fmt === \"compact\" || fmt === \"table\") return fmt;\n return \"json\";\n}\n\nfunction printResult(result: unknown): void {\n console.log(formatOutput(result, getFormat()));\n}\n\nfunction printUpdateNotice(): void {\n const notice = getUpdateNotice();\n if (notice) process.stderr.write(notice);\n}\n\nprogram\n .command(\"mcp\")\n .description(\"Start MCP server over stdio (for Claude Desktop, Claude Code, etc.)\")\n .action(async () => {\n const { startMcpServer } = await import(\"./mcp\");\n await startMcpServer();\n });\n\n// ── Nested command helpers ─────────────────────────────────────\n\n/**\n * Get or create nested command groups from name segments.\n * e.g. [\"token\", \"swap\"] → program > token > swap\n */\nfunction getOrCreateGroup(parent: Command, segments: string[]): Command {\n let current = parent;\n for (const segment of segments) {\n let existing = current.commands.find((c) => c.name() === segment);\n if (!existing) {\n existing = current.command(segment);\n }\n current = existing;\n }\n return current;\n}\n\n// ── Schema flattening ────────────────────────────────────────────\n\ntype FlatField = {\n flatKey: string;\n field: any;\n path: string[];\n};\n\n/**\n * Walk a Zod object shape and flatten nested ZodObjects into\n * hyphenated keys: { from: { wallet, chain } } → from-wallet, from-chain\n */\nfunction flattenShape(shape: Record<string, any>, prefix = \"\"): FlatField[] {\n const fields: FlatField[] = [];\n for (const [key, field] of Object.entries(shape)) {\n const flatKey = prefix ? `${prefix}-${key}` : key;\n let inner = field;\n while (inner._def.typeName === \"ZodEffects\") inner = inner._def.schema;\n\n // Unwrap nullable to check if inner is an object\n let unwrapped = inner;\n if (unwrapped._def.typeName === \"ZodNullable\") unwrapped = unwrapped._def.innerType;\n\n if (unwrapped._def.typeName === \"ZodObject\" && unwrapped.shape) {\n fields.push(...flattenShape(unwrapped.shape, flatKey));\n } else {\n fields.push({ flatKey, field, path: flatKey.split(\"-\") });\n }\n }\n return fields;\n}\n\n/**\n * Reconstruct nested object from flat hyphenated params.\n * { \"from-wallet\": \"test\", \"from-chain\": \"solana\" } → { from: { wallet: \"test\", chain: \"solana\" } }\n */\nfunction unflattenParams(\n flat: Record<string, unknown>,\n fields: FlatField[],\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const { flatKey, path } of fields) {\n // Commander camelCases --from-wallet → fromWallet, so check both\n const camelKey = flatKey.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n const value = camelKey in flat ? flat[camelKey] : flat[flatKey];\n\n if (path.length === 1) {\n result[path[0]] = value;\n } else {\n let obj = result;\n for (let i = 0; i < path.length - 1; i++) {\n if (!obj[path[i]] || typeof obj[path[i]] !== \"object\") {\n obj[path[i]] = {};\n }\n obj = obj[path[i]] as Record<string, unknown>;\n }\n obj[path[path.length - 1]] = value;\n }\n }\n\n return result;\n}\n\n// ── Local tool registration ────────────────────────────────────\n\nfunction registerLocalTools(parent: Command, tools: Tool<any>[]): void {\n for (const tool of tools) {\n const segments = tool.schema.name.split(\"_\");\n const leafName = segments.pop()!;\n const group = getOrCreateGroup(parent, segments);\n\n const cmd = group.command(leafName).description(tool.schema.description);\n\n const shape = (tool.schema.input as any).shape ?? {};\n const flatFields = flattenShape(shape);\n const nullableKeys: string[] = [];\n const numberKeys: string[] = [];\n const jsonKeys: string[] = [];\n\n for (const { flatKey, field } of flatFields) {\n const desc = field.description ?? flatKey;\n let inner = field;\n while (inner._def.typeName === \"ZodEffects\") inner = inner._def.schema;\n const typeName = inner._def.typeName;\n\n let checkInner = inner;\n if (checkInner._def.typeName === \"ZodNullable\") checkInner = checkInner._def.innerType;\n if (checkInner._def.typeName === \"ZodNumber\") numberKeys.push(flatKey);\n if (checkInner._def.typeName === \"ZodRecord\") jsonKeys.push(flatKey);\n\n if (typeName === \"ZodBoolean\") {\n cmd.option(`--${flatKey}`, desc, false);\n } else if (typeName === \"ZodNullable\") {\n cmd.option(`--${flatKey} <${flatKey}>`, desc);\n nullableKeys.push(flatKey);\n } else {\n cmd.requiredOption(`--${flatKey} <${flatKey}>`, desc);\n }\n }\n\n cmd.action(async (options: Record<string, unknown>) => {\n if (!tool.schema.name.startsWith(\"consent_\")) {\n await consentCheck.handler({});\n }\n\n // Coerce types on the flat keys (commander camelCases them)\n for (const key of nullableKeys) {\n const camelKey = key.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n if (options[camelKey] === undefined) options[camelKey] = null;\n }\n for (const key of numberKeys) {\n const camelKey = key.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n if (options[camelKey] != null && typeof options[camelKey] === \"string\") {\n options[camelKey] = Number(options[camelKey]);\n }\n }\n for (const key of jsonKeys) {\n const camelKey = key.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n if (typeof options[camelKey] === \"string\") {\n try {\n options[camelKey] = JSON.parse(options[camelKey] as string);\n } catch {\n console.error(`Invalid JSON for --${key}`);\n process.exit(1);\n }\n }\n }\n\n const params = unflattenParams(options, flatFields);\n\n try {\n const result = await tool.handler(params);\n printResult(result);\n } catch (error) {\n console.error((error as Error).message);\n process.exit(1);\n }\n });\n }\n}\n\n// ── Remote tool registration ───────────────────────────────────\n\ninterface JsonSchemaProperty {\n type?: string | string[];\n description?: string;\n enum?: string[];\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n anyOf?: { type: string }[];\n}\n\ninterface JsonSchema {\n $ref?: string;\n definitions?: Record<string, JsonSchemaProperty>;\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n}\n\nfunction resolveJsonSchema(inputSchema: JsonSchema): JsonSchemaProperty {\n if (inputSchema.$ref && inputSchema.definitions) {\n const defName = inputSchema.$ref.replace(\"#/definitions/\", \"\");\n return inputSchema.definitions[defName];\n }\n return inputSchema;\n}\n\nfunction isNullableProperty(prop: JsonSchemaProperty): boolean {\n if (Array.isArray(prop.type)) return prop.type.includes(\"null\");\n if (prop.anyOf) return prop.anyOf.some((t) => t.type === \"null\");\n return false;\n}\n\nfunction isObjectProperty(prop: JsonSchemaProperty): boolean {\n if (Array.isArray(prop.type)) return prop.type.includes(\"object\");\n if (prop.anyOf) return prop.anyOf.some((t) => t.type === \"object\");\n return prop.type === \"object\";\n}\n\nfunction isNumberProperty(prop: JsonSchemaProperty): boolean {\n if (Array.isArray(prop.type)) return prop.type.some((t) => t === \"number\" || t === \"integer\");\n if (prop.anyOf) return prop.anyOf.some((t) => t.type === \"number\" || t.type === \"integer\");\n return prop.type === \"number\" || prop.type === \"integer\";\n}\n\nconst HIDDEN_TOOLS = new Set([\n \"swaps_transaction_build\",\n \"token_transfer\",\n \"transaction_register\",\n]);\n\nfunction registerRemoteTools(\n parent: Command,\n remoteSchemas: { name: string; description: string; inputSchema: JsonSchema }[],\n): void {\n for (const schema of remoteSchemas) {\n if (HIDDEN_TOOLS.has(schema.name)) continue;\n const segments = schema.name.split(\"_\");\n const leafName = segments.pop()!;\n const group = getOrCreateGroup(parent, segments);\n\n // Skip if a local tool already registered this command\n if (group.commands.find((c) => c.name() === leafName)) continue;\n\n const cmd = group.command(leafName).description(schema.description);\n\n const resolved = resolveJsonSchema(schema.inputSchema);\n const props = resolved.properties ?? {};\n const requiredSet = new Set(resolved.required ?? []);\n const nullableKeys: string[] = [];\n const numberKeys: string[] = [];\n const objectKeys: string[] = [];\n\n for (const [key, prop] of Object.entries(props)) {\n const desc = prop.description ?? key;\n const nullable = isNullableProperty(prop);\n const isObj = isObjectProperty(prop);\n const isNum = isNumberProperty(prop);\n\n if (isNum) numberKeys.push(key);\n\n if (isObj) {\n objectKeys.push(key);\n if (requiredSet.has(key) && !nullable) {\n cmd.requiredOption(`--${key} <json>`, `${desc} (as JSON)`);\n } else {\n cmd.option(`--${key} <json>`, `${desc} (as JSON)`);\n nullableKeys.push(key);\n }\n } else if (nullable || !requiredSet.has(key)) {\n cmd.option(`--${key} <${key}>`, desc);\n nullableKeys.push(key);\n } else {\n cmd.requiredOption(`--${key} <${key}>`, desc);\n }\n }\n\n cmd.action(async (options: Record<string, unknown>) => {\n await consentCheck.handler({});\n\n // Coerce types\n for (const key of nullableKeys) {\n if (options[key] === undefined) options[key] = null;\n }\n for (const key of numberKeys) {\n if (options[key] != null && typeof options[key] === \"string\") {\n options[key] = Number(options[key]);\n }\n }\n for (const key of objectKeys) {\n if (typeof options[key] === \"string\") {\n try {\n options[key] = JSON.parse(options[key] as string);\n } catch {\n console.error(`Invalid JSON for --${key}`);\n process.exit(1);\n }\n }\n }\n\n try {\n const baseUrl = resolveBaseUrl();\n const result = await callTool(baseUrl, schema.name, options as Record<string, unknown>);\n printResult(result);\n printUpdateNotice();\n } catch (error) {\n console.error((error as Error).message);\n process.exit(1);\n }\n });\n }\n}\n\n// ── Register all tools ─────────────────────────────────────────\n\nregisterLocalTools(program, LOCAL_TOOLS);\nregisterRemoteTools(program, schemas as any);\n\n\n// ── Tools listing ──────────────────────────────────────────────\n\nprogram\n .command(\"tools\")\n .description(\"List available tools\")\n .action(() => {\n const allTools = [\n ...LOCAL_TOOLS.map((t) => ({\n name: t.schema.name,\n description: t.schema.description,\n })),\n ...schemas\n .filter((s) => !LOCAL_TOOLS.some((l) => l.schema.name === s.name) && !HIDDEN_TOOLS.has(s.name))\n .map((s) => ({ name: s.name, description: s.description })),\n ].sort((a, b) => a.name.localeCompare(b.name));\n\n const lines: string[] = [];\n for (const tool of allTools) {\n const cmdName = tool.name.replace(/_/g, \" \");\n lines.push(` ${color.green(cmdName.padEnd(28))} ${color.dim(tool.description)}`);\n }\n lines.push(\"\");\n lines.push(color.dim(`${allTools.length} tools`));\n console.log(lines.join(\"\\n\"));\n printUpdateNotice();\n });\n\nprogram.parse();\n","const useColor =\n !process.env.NO_COLOR && process.stdout.isTTY === true;\n\nfunction ansi(code: string) {\n return (text: string) => (useColor ? `${code}${text}\\x1b[0m` : text);\n}\n\nexport const color = {\n bold: ansi(\"\\x1b[1m\"),\n dim: ansi(\"\\x1b[2m\"),\n green: ansi(\"\\x1b[32m\"),\n yellow: ansi(\"\\x1b[33m\"),\n cyan: ansi(\"\\x1b[36m\"),\n red: ansi(\"\\x1b[31m\"),\n};\n\nconst MAX_COL_WIDTH = 40;\n\nfunction truncate(str: string, max: number): string {\n return str.length > max ? str.slice(0, max - 1) + \"…\" : str;\n}\n\nfunction renderArrayTable(rows: Record<string, unknown>[]): string {\n if (rows.length === 0) return \"\";\n\n const keys = Object.keys(rows[0]);\n const widths = keys.map((k) => k.length);\n\n const stringRows = rows.map((row) =>\n keys.map((k, i) => {\n const val = truncate(String(row[k] ?? \"\"), MAX_COL_WIDTH);\n widths[i] = Math.max(widths[i], val.length);\n return val;\n }),\n );\n\n // Cap widths\n for (let i = 0; i < widths.length; i++) {\n widths[i] = Math.min(widths[i], MAX_COL_WIDTH);\n }\n\n const header = keys.map((k, i) => color.bold(k.padEnd(widths[i]))).join(\" \");\n const separator = color.dim(widths.map((w) => \"─\".repeat(w)).join(\"──\"));\n const body = stringRows\n .map((row) => row.map((val, i) => val.padEnd(widths[i])).join(\" \"))\n .join(\"\\n\");\n\n return `${header}\\n${separator}\\n${body}`;\n}\n\nfunction renderObjectTable(obj: Record<string, unknown>): string {\n const entries = Object.entries(obj);\n const maxKey = Math.min(\n MAX_COL_WIDTH,\n Math.max(...entries.map(([k]) => k.length)),\n );\n\n return entries\n .map(([k, v]) => `${color.bold(k.padEnd(maxKey))} ${String(v ?? \"\")}`)\n .join(\"\\n\");\n}\n\nexport function renderTable(data: unknown): string {\n if (Array.isArray(data)) {\n if (data.length === 0) return color.dim(\"(empty)\");\n if (typeof data[0] === \"object\" && data[0] !== null) {\n return renderArrayTable(data as Record<string, unknown>[]);\n }\n return data.map(String).join(\"\\n\");\n }\n\n if (typeof data === \"object\" && data !== null) {\n return renderObjectTable(data as Record<string, unknown>);\n }\n\n return String(data);\n}\n\nexport type OutputFormat = \"json\" | \"compact\" | \"table\";\n\nexport function formatOutput(result: unknown, format: OutputFormat): string {\n if (format === \"compact\") {\n return JSON.stringify(result);\n }\n\n if (format === \"table\") {\n const value =\n typeof result === \"object\" &&\n result !== null &&\n \"data\" in result\n ? (result as Record<string, unknown>).data\n : result;\n return renderTable(value);\n }\n\n return JSON.stringify(result, null, 2);\n}\n","import { readFileSync, writeFileSync, mkdirSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport { color } from \"./format\";\n\nconst CACHE_DIR = join(homedir(), \".config\", \"moonpay\");\nconst CACHE_FILE = join(CACHE_DIR, \"update-check.json\");\nconst ONE_DAY_MS = 24 * 60 * 60 * 1000;\nconst FETCH_TIMEOUT_MS = 3000;\n\ntype CacheData = {\n latest: string;\n checkedAt: number;\n};\n\nfunction readCache(): CacheData | null {\n try {\n const raw = readFileSync(CACHE_FILE, \"utf-8\");\n return JSON.parse(raw) as CacheData;\n } catch {\n return null;\n }\n}\n\nfunction writeCache(data: CacheData): void {\n try {\n mkdirSync(CACHE_DIR, { recursive: true });\n writeFileSync(CACHE_FILE, JSON.stringify(data));\n } catch {\n // Ignore write errors\n }\n}\n\nfunction isNewer(latest: string, current: string): boolean {\n const a = latest.split(\".\").map(Number);\n const b = current.split(\".\").map(Number);\n for (let i = 0; i < 3; i++) {\n if ((a[i] ?? 0) > (b[i] ?? 0)) return true;\n if ((a[i] ?? 0) < (b[i] ?? 0)) return false;\n }\n return false;\n}\n\nfunction formatNotice(current: string, latest: string): string {\n return [\n \"\",\n color.yellow(`Update available: ${current} → ${latest}`),\n color.dim(\"Run `npm i -g @moonpay/cli` to update.\"),\n \"\",\n ].join(\"\\n\");\n}\n\nexport function startVersionCheck(\n currentVersion: string,\n): () => string | null {\n let notice: string | null = null;\n\n const cache = readCache();\n\n if (cache && Date.now() - cache.checkedAt < ONE_DAY_MS) {\n if (isNewer(cache.latest, currentVersion)) {\n notice = formatNotice(currentVersion, cache.latest);\n }\n return () => notice;\n }\n\n // Fire async fetch — non-blocking\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);\n\n fetch(\"https://registry.npmjs.org/@moonpay%2fcli/latest\", {\n signal: controller.signal,\n })\n .then((res) => res.json())\n .then((data: unknown) => {\n const latest = (data as { version?: string }).version;\n if (latest) {\n writeCache({ latest, checkedAt: Date.now() });\n if (isNewer(latest, currentVersion)) {\n notice = formatNotice(currentVersion, latest);\n }\n }\n })\n .catch(() => {\n // Silently ignore fetch errors\n })\n .finally(() => clearTimeout(timeout));\n\n return () => notice;\n}\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const walletExportSchema = defineToolSchema({\n name: \"wallet_export\",\n description:\n \"Export wallet secret (mnemonic or private key). Interactive only — cannot be run by agents or piped.\",\n input: z.object({\n wallet: z.string().describe(\"Wallet name\"),\n }),\n output: z.object({\n exported: z.literal(true),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { findWalletOrThrow } from \"../store\";\nimport { walletExportSchema } from \"./schema\";\n\nexport const walletExport = createTool(walletExportSchema, async (params) => {\n if (!process.stdout.isTTY) {\n throw new Error(\n \"Wallet export requires an interactive terminal.\\n\" +\n \"Run this command directly in your terminal: mp wallet export \" + params.wallet,\n );\n }\n\n const wallet = findWalletOrThrow(params.wallet);\n\n if (wallet.type === \"hd\") {\n process.stderr.write(`\\nMnemonic for \"${wallet.name}\":\\n\\n`);\n process.stderr.write(` ${wallet.mnemonic}\\n\\n`);\n process.stderr.write(\"Write this down and store it securely.\\n\\n\");\n } else {\n process.stderr.write(`\\nPrivate key for \"${wallet.name}\" (${wallet.chain}):\\n\\n`);\n process.stderr.write(` ${wallet.privateKey}\\n\\n`);\n }\n\n return { exported: true as const };\n});\n","import { readdirSync, readFileSync, existsSync, mkdirSync, cpSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { fileURLToPath } from \"node:url\";\nimport { createRequire } from \"node:module\";\n\n/** Package root → skills/ directory bundled with the CLI */\nfunction getSkillsDir(): string {\n // import.meta.url resolves to dist/index.js when bundled\n const __filename = fileURLToPath(import.meta.url);\n const distDir = dirname(__filename);\n // dist/ → package root → skills/\n return join(distDir, \"..\", \"skills\");\n}\n\n/** Where Claude Code discovers skills */\nfunction getClaudeSkillsDir(): string {\n return join(homedir(), \".claude\", \"skills\");\n}\n\nexport type SkillInfo = {\n name: string;\n description: string;\n};\n\nexport function listBundledSkills(): SkillInfo[] {\n const dir = getSkillsDir();\n if (!existsSync(dir)) return [];\n return readdirSync(dir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && e.name.startsWith(\"moonpay-\"))\n .map((e) => {\n const md = readFileSync(join(dir, e.name, \"SKILL.md\"), \"utf-8\");\n const descMatch = md.match(/^description:\\s*(.+)$/m);\n return {\n name: e.name,\n description: descMatch?.[1]?.replace(/^[\"']|[\"']$/g, \"\") ?? \"\",\n };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nexport function readSkill(name: string): string {\n if (/[/\\\\]|\\.\\./.test(name)) throw new Error(`Invalid skill name: \"${name}\"`);\n const skillPath = join(getSkillsDir(), name, \"SKILL.md\");\n if (!existsSync(skillPath)) {\n throw new Error(`Skill \"${name}\" not found. Run \\`mp skill list\\` to see available skills.`);\n }\n return readFileSync(skillPath, \"utf-8\");\n}\n\nexport function installSkills(force: boolean, dir?: string): { name: string; installed: boolean }[] {\n const srcDir = getSkillsDir();\n const destDir = dir ?? getClaudeSkillsDir();\n const skills = listBundledSkills();\n\n mkdirSync(destDir, { recursive: true });\n\n return skills.map((s) => {\n const dest = join(destDir, s.name);\n if (existsSync(dest) && !force) {\n return { name: s.name, installed: false };\n }\n cpSync(join(srcDir, s.name), dest, { recursive: true, force: true });\n return { name: s.name, installed: true };\n });\n}\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillListSchema = defineToolSchema({\n name: \"skill_list\",\n description: \"List available AI skills for Claude Code and other agents\",\n input: z.object({}),\n output: z.array(\n z.object({\n name: z.string(),\n description: z.string(),\n }),\n ),\n});\n","import { createTool } from \"../../shared\";\nimport { listBundledSkills } from \"../server\";\nimport { skillListSchema } from \"./schema\";\n\nexport const skillList = createTool(skillListSchema, async () => {\n return listBundledSkills();\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillRetrieveSchema = defineToolSchema({\n name: \"skill_retrieve\",\n description: \"Get the full instructions for a specific skill\",\n input: z.object({\n name: z.string().describe(\"Skill name (e.g. moonpay-swap-tokens)\"),\n }),\n output: z.object({\n name: z.string(),\n content: z.string(),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { readSkill } from \"../server\";\nimport { skillRetrieveSchema } from \"./schema\";\n\nexport const skillRetrieve = createTool(skillRetrieveSchema, async (params) => {\n return {\n name: params.name,\n content: readSkill(params.name),\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillInstallSchema = defineToolSchema({\n name: \"skill_install\",\n description:\n \"Install AI skills for Claude Code. Defaults to ~/.claude/skills/, or specify --dir for a custom location (e.g. project-local, ~/.agents/skills).\",\n input: z.object({\n force: z.boolean().describe(\"Overwrite existing skills\"),\n dir: z\n .string()\n .nullable()\n .describe(\n \"Target directory to install skills into (default: ~/.claude/skills/)\",\n ),\n }),\n output: z.array(\n z.object({\n name: z.string(),\n installed: z.boolean(),\n }),\n ),\n});\n","import { createTool } from \"../../shared\";\nimport { installSkills } from \"../server\";\nimport { skillInstallSchema } from \"./schema\";\n\nexport const skillInstall = createTool(skillInstallSchema, async (params) => {\n return installSkills(params.force, params.dir ?? undefined);\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { chainSchema } from \"../../wallet/models\";\n\nexport const tokenTransferSchema = defineToolSchema({\n name: \"token_transfer\",\n description:\n \"Transfer tokens to another wallet on the same chain. Builds, signs locally, and broadcasts.\",\n input: z.object({\n wallet: z.string().describe(\"Local wallet name to sign with\"),\n chain: chainSchema.describe(\"Chain to transfer on\"),\n token: z.string().describe(\"Token address to transfer\"),\n amount: z.coerce.number().describe(\"Amount to transfer\"),\n to: z.string().describe(\"Recipient wallet name or address\"),\n }),\n output: z.object({\n signature: z.string().describe(\"Transaction hash/signature\"),\n message: z.string().describe(\"Human-readable transfer description\"),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { callRemoteTool } from \"../../../client\";\nimport { resolveBaseUrl } from \"../../../auth\";\nimport { walletRetrieve } from \"../../wallet/retrieve/tool\";\nimport { KEY_CHAIN_MAP } from \"../../wallet/models\";\nimport { transactionSign } from \"../../transaction/sign/tool\";\nimport { tokenTransferSchema } from \"./schema\";\n\nexport const tokenTransfer = createTool(tokenTransferSchema, async (params) => {\n const baseUrl = resolveBaseUrl();\n\n const wallet = await walletRetrieve.handler({ wallet: params.wallet });\n const fromAddress = wallet.addresses[KEY_CHAIN_MAP[params.chain]];\n if (!fromAddress) {\n throw new Error(`Wallet \"${wallet.name}\" has no address on ${params.chain}.`);\n }\n\n // Resolve recipient: try as wallet name, fall back to raw address\n let toAddress = params.to;\n try {\n const toWallet = await walletRetrieve.handler({ wallet: params.to });\n toAddress = toWallet.addresses[KEY_CHAIN_MAP[params.chain]] ?? params.to;\n } catch {\n // Not a wallet name — use as-is (raw address)\n }\n\n // Build unsigned transaction\n const buildResult = await callRemoteTool(baseUrl, \"token_transfer\", {\n wallet: fromAddress,\n token: params.token,\n to: toAddress,\n amount: params.amount,\n chain: params.chain,\n });\n\n // Sign\n const txPayload = \"base64\" in buildResult.transaction\n ? buildResult.transaction.base64\n : JSON.stringify(buildResult.transaction);\n\n const { transaction: signedTransaction } = await transactionSign.handler({\n wallet: wallet.name,\n chain: params.chain,\n transaction: txPayload,\n });\n\n // Send\n const sendResult = await callRemoteTool(baseUrl, \"transaction_send\", {\n transaction: signedTransaction,\n message: buildResult.message,\n chain: params.chain,\n });\n\n if (!sendResult.signature) {\n throw new Error(`Transaction send failed: ${sendResult.message}`);\n }\n\n return { signature: sendResult.signature, message: buildResult.message };\n});\n","import * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { createTool } from \"../../shared\";\nimport { consentAcceptSchema } from \"./schema\";\n\nconst CONFIG_DIR = path.join(os.homedir(), \".config\", \"moonpay\");\nconst CONSENT_PATH = path.join(CONFIG_DIR, \"consent.json\");\nconst CURRENT_TOS_VERSION = \"1.0\";\n\nexport const consentAccept = createTool(consentAcceptSchema, async () => {\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n }\n\n const now = new Date().toISOString();\n const consent = { tosVersion: CURRENT_TOS_VERSION, acceptedAt: now };\n\n const tmp = CONSENT_PATH + `.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(consent, null, 2), {\n encoding: \"utf-8\",\n mode: 0o600,\n });\n fs.renameSync(tmp, CONSENT_PATH);\n\n return consent;\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const consentAcceptSchema = defineToolSchema({\n name: \"consent_accept\",\n description:\n \"Accept the MoonPay Terms of Service and Privacy Policy. Required before using any CLI command.\",\n input: z.object({}),\n output: z.object({\n tosVersion: z.string(),\n acceptedAt: z.string(),\n }),\n});\n","import * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { createTool } from \"../../shared\";\nimport { consentCheckSchema } from \"./schema\";\n\nconst CONSENT_PATH = path.join(os.homedir(), \".config\", \"moonpay\", \"consent.json\");\nconst CURRENT_TOS_VERSION = \"1.0\";\n\nexport const consentCheck = createTool(consentCheckSchema, async () => {\n let consent: { tosVersion: string; acceptedAt: string } | null = null;\n try {\n consent = JSON.parse(fs.readFileSync(CONSENT_PATH, \"utf-8\"));\n } catch {}\n\n if (!consent || consent.tosVersion !== CURRENT_TOS_VERSION) {\n throw new Error(\n \"Terms of Service not yet accepted. Run `mp consent accept` first.\",\n );\n }\n\n return {\n accepted: true as const,\n tosVersion: consent.tosVersion,\n acceptedAt: consent.acceptedAt,\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const consentCheckSchema = defineToolSchema({\n name: \"consent_check\",\n description:\n \"Check whether the MoonPay Terms of Service and Privacy Policy have been accepted. Throws if not accepted.\",\n input: z.object({}),\n output: z.object({\n accepted: z.literal(true),\n tosVersion: z.string(),\n acceptedAt: z.string(),\n }),\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const loginSchema = defineToolSchema({\n name: \"login\",\n description: \"Send a login verification code to your email.\",\n input: z.object({\n email: z.string().describe(\"Email address\"),\n }),\n output: z.object({\n email: z.string(),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport { callPublicTool, getConfigOrDefault } from \"../../auth\";\nimport { loginSchema } from \"./schema\";\n\nexport const login = createTool(loginSchema, async (params) => {\n const { baseUrl } = getConfigOrDefault();\n await callPublicTool(baseUrl, \"login\", { email: params.email });\n return {\n email: params.email,\n message: `Verification code sent to ${params.email}. Run: mp verify --email ${params.email} --code <code>`,\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const verifySchema = defineToolSchema({\n name: \"verify\",\n description: \"Verify login code and store encrypted credentials.\",\n input: z.object({\n email: z.string().describe(\"Email address\"),\n code: z.string().describe(\"Verification code\"),\n }),\n output: z.object({\n email: z.string(),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport {\n callPublicTool,\n getConfigOrDefault,\n saveCredentials,\n type Credentials,\n} from \"../../auth\";\nimport { verifySchema } from \"./schema\";\n\nexport const verify = createTool(verifySchema, async (params) => {\n const { baseUrl } = getConfigOrDefault();\n const tokens = (await callPublicTool(baseUrl, \"verify\", {\n email: params.email,\n code: params.code,\n })) as {\n accessToken: string;\n refreshToken: string;\n expiresAt: number;\n };\n\n const creds: Credentials = {\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n expiresAt: tokens.expiresAt * 1000,\n baseUrl,\n };\n\n saveCredentials(creds);\n return { email: params.email, message: \"Logged in successfully.\" };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const logoutSchema = defineToolSchema({\n name: \"logout\",\n description: \"Log out and clear stored credentials.\",\n input: z.object({}),\n output: z.object({\n success: z.literal(true),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport { clearCredentials } from \"../../auth\";\nimport { logoutSchema } from \"./schema\";\n\nexport const logout = createTool(logoutSchema, async () => {\n clearCredentials();\n return { success: true as const, message: \"Logged out.\" };\n});\n"],"mappings":"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","names":["readFileSync","mkdirSync","join","homedir","z","z","z","z","z","z","z","z","z","z","fs","os","path","z","z","CONSENT_PATH","CURRENT_TOS_VERSION","z","z","z","z","z","z","require","path"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/format.ts","../src/version-check.ts","../src/tools/wallet/export/schema.ts","../src/tools/wallet/export/tool.ts","../src/tools/skill/server.ts","../src/tools/skill/list/schema.ts","../src/tools/skill/list/tool.ts","../src/tools/skill/retrieve/schema.ts","../src/tools/skill/retrieve/tool.ts","../src/tools/skill/install/schema.ts","../src/tools/skill/install/tool.ts","../src/tools/token/transfer/schema.ts","../src/tools/token/transfer/tool.ts","../src/tools/consent/accept/tool.ts","../src/tools/consent/accept/schema.ts","../src/tools/consent/check/tool.ts","../src/tools/consent/check/schema.ts","../src/tools/login/schema.ts","../src/tools/login/tool.ts","../src/tools/verify/schema.ts","../src/tools/verify/tool.ts","../src/tools/logout/schema.ts","../src/tools/logout/tool.ts","../src/tools/qr/tool.ts","../src/tools/qr/schema.ts"],"sourcesContent":["#!/usr/bin/env node\nimport { createRequire } from \"module\";\nimport { Command } from \"commander\";\nimport { resolveBaseUrl } from \"./auth\";\n\nimport { callTool } from \"./client\";\nimport { color, formatOutput, type OutputFormat } from \"./format\";\nimport { startVersionCheck } from \"./version-check\";\nimport type { Tool } from \"./tools/shared\";\nimport schemas from \"./generated/schemas.json\";\nimport { walletCreate } from \"./tools/wallet/create/tool\";\nimport { walletImport } from \"./tools/wallet/import/tool\";\nimport { walletList } from \"./tools/wallet/list/tool\";\nimport { walletRetrieve } from \"./tools/wallet/retrieve/tool\";\nimport { walletDelete } from \"./tools/wallet/delete/tool\";\nimport { walletRename } from \"./tools/wallet/rename/tool\";\nimport { walletExport } from \"./tools/wallet/export/tool\";\nimport { transactionSign } from \"./tools/transaction/sign/tool\";\nimport { messageSign } from \"./tools/message/sign/tool\";\nimport { bitcoinBalanceRetrieve } from \"./tools/bitcoin/balance/tool\";\nimport { skillList } from \"./tools/skill/list/tool\";\nimport { skillRetrieve } from \"./tools/skill/retrieve/tool\";\nimport { skillInstall } from \"./tools/skill/install/tool\";\nimport { tokenSwap, tokenBridge } from \"./tools/token/swap/tool\";\nimport { tokenTransfer } from \"./tools/token/transfer/tool\";\nimport { x402Request } from \"./tools/x402/request/tool\";\nimport { virtualAccountWalletRegister } from \"./tools/virtual-account/wallet/register/tool\";\nimport { consentAccept } from \"./tools/consent/accept/tool\";\nimport { consentCheck } from \"./tools/consent/check/tool\";\nimport { login } from \"./tools/login/tool\";\nimport { verify } from \"./tools/verify/tool\";\nimport { logout } from \"./tools/logout/tool\";\nimport { qrGenerate } from \"./tools/qr/tool\";\n/** All local tools — CLI commands are derived from their schemas */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst LOCAL_TOOLS: Tool<any>[] = [\n walletCreate,\n walletImport,\n walletList,\n walletRetrieve,\n walletDelete,\n walletRename,\n walletExport,\n transactionSign,\n messageSign,\n bitcoinBalanceRetrieve,\n skillList,\n skillRetrieve,\n skillInstall,\n tokenSwap,\n tokenBridge,\n tokenTransfer,\n x402Request,\n virtualAccountWalletRegister,\n consentAccept,\n consentCheck,\n login,\n verify,\n logout,\n qrGenerate,\n];\n\nconst require = createRequire(import.meta.url);\nconst { version } = require(\"../package.json\") as { version: string };\n\nconst getUpdateNotice = startVersionCheck(version);\n\nconst program = new Command();\n\nprogram\n .name(\"moonpay\")\n .description(\n \"MoonPay CLI — the crypto onramp for AI agents\\n\\n\" +\n \" Your agents need money. MoonPay gives them wallets, funds, and tools\\n\" +\n \" to buy, swap, bridge, and transact — all from the command line.\\n\\n\" +\n \" Run `mp skill install` to install AI skills for Claude Code.\\n\\n\" +\n \" Terms of Service: https://www.moonpay.com/legal/terms_of_use_usa\\n\" +\n \" Privacy Policy: https://www.moonpay.com/legal/privacy_policy\\n\" +\n \" Swaps by: https://swaps.xyz/terms\",\n )\n .version(version)\n .option(\"-f, --format <type>\", \"Output format: json, compact, or table\", \"json\");\n\nfunction getFormat(): OutputFormat {\n const fmt = program.opts().format as string;\n if (fmt === \"json\" || fmt === \"compact\" || fmt === \"table\") return fmt;\n return \"json\";\n}\n\nfunction printResult(result: unknown): void {\n console.log(formatOutput(result, getFormat()));\n}\n\nfunction printUpdateNotice(): void {\n const notice = getUpdateNotice();\n if (notice) process.stderr.write(notice);\n}\n\nprogram\n .command(\"mcp\")\n .description(\"Start MCP server over stdio (for Claude Desktop, Claude Code, etc.)\")\n .action(async () => {\n const { startMcpServer } = await import(\"./mcp\");\n await startMcpServer();\n });\n\n// ── Nested command helpers ─────────────────────────────────────\n\n/**\n * Get or create nested command groups from name segments.\n * e.g. [\"token\", \"swap\"] → program > token > swap\n */\nfunction getOrCreateGroup(parent: Command, segments: string[]): Command {\n let current = parent;\n for (const segment of segments) {\n let existing = current.commands.find((c) => c.name() === segment);\n if (!existing) {\n existing = current.command(segment);\n }\n current = existing;\n }\n return current;\n}\n\n// ── Schema flattening ────────────────────────────────────────────\n\ntype FlatField = {\n flatKey: string;\n field: any;\n path: string[];\n};\n\n/**\n * Walk a Zod object shape and flatten nested ZodObjects into\n * hyphenated keys: { from: { wallet, chain } } → from-wallet, from-chain\n */\nfunction flattenShape(shape: Record<string, any>, prefix = \"\"): FlatField[] {\n const fields: FlatField[] = [];\n for (const [key, field] of Object.entries(shape)) {\n const flatKey = prefix ? `${prefix}-${key}` : key;\n let inner = field;\n while (inner._def.typeName === \"ZodEffects\") inner = inner._def.schema;\n\n // Unwrap nullable to check if inner is an object\n let unwrapped = inner;\n if (unwrapped._def.typeName === \"ZodNullable\") unwrapped = unwrapped._def.innerType;\n\n if (unwrapped._def.typeName === \"ZodObject\" && unwrapped.shape) {\n fields.push(...flattenShape(unwrapped.shape, flatKey));\n } else {\n fields.push({ flatKey, field, path: flatKey.split(\"-\") });\n }\n }\n return fields;\n}\n\n/**\n * Reconstruct nested object from flat hyphenated params.\n * { \"from-wallet\": \"test\", \"from-chain\": \"solana\" } → { from: { wallet: \"test\", chain: \"solana\" } }\n */\nfunction unflattenParams(\n flat: Record<string, unknown>,\n fields: FlatField[],\n): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n\n for (const { flatKey, path } of fields) {\n // Commander camelCases --from-wallet → fromWallet, so check both\n const camelKey = flatKey.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n const value = camelKey in flat ? flat[camelKey] : flat[flatKey];\n\n if (path.length === 1) {\n result[path[0]] = value;\n } else {\n let obj = result;\n for (let i = 0; i < path.length - 1; i++) {\n if (!obj[path[i]] || typeof obj[path[i]] !== \"object\") {\n obj[path[i]] = {};\n }\n obj = obj[path[i]] as Record<string, unknown>;\n }\n obj[path[path.length - 1]] = value;\n }\n }\n\n return result;\n}\n\n// ── Local tool registration ────────────────────────────────────\n\nfunction registerLocalTools(parent: Command, tools: Tool<any>[]): void {\n for (const tool of tools) {\n const segments = tool.schema.name.split(\"_\");\n const leafName = segments.pop()!;\n const group = getOrCreateGroup(parent, segments);\n\n const cmd = group.command(leafName).description(tool.schema.description);\n\n const shape = (tool.schema.input as any).shape ?? {};\n const flatFields = flattenShape(shape);\n const nullableKeys: string[] = [];\n const numberKeys: string[] = [];\n const jsonKeys: string[] = [];\n\n for (const { flatKey, field } of flatFields) {\n const desc = field.description ?? flatKey;\n let inner = field;\n while (inner._def.typeName === \"ZodEffects\") inner = inner._def.schema;\n const typeName = inner._def.typeName;\n\n let checkInner = inner;\n if (checkInner._def.typeName === \"ZodNullable\") checkInner = checkInner._def.innerType;\n if (checkInner._def.typeName === \"ZodNumber\") numberKeys.push(flatKey);\n if (checkInner._def.typeName === \"ZodRecord\") jsonKeys.push(flatKey);\n\n if (typeName === \"ZodBoolean\") {\n cmd.option(`--${flatKey}`, desc, false);\n } else if (typeName === \"ZodNullable\") {\n cmd.option(`--${flatKey} <${flatKey}>`, desc);\n nullableKeys.push(flatKey);\n } else {\n cmd.requiredOption(`--${flatKey} <${flatKey}>`, desc);\n }\n }\n\n cmd.action(async (options: Record<string, unknown>) => {\n if (!tool.schema.name.startsWith(\"consent_\")) {\n await consentCheck.handler({});\n }\n\n // Coerce types on the flat keys (commander camelCases them)\n for (const key of nullableKeys) {\n const camelKey = key.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n if (options[camelKey] === undefined) options[camelKey] = null;\n }\n for (const key of numberKeys) {\n const camelKey = key.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n if (options[camelKey] != null && typeof options[camelKey] === \"string\") {\n options[camelKey] = Number(options[camelKey]);\n }\n }\n for (const key of jsonKeys) {\n const camelKey = key.replace(/-([a-z])/g, (_, c) => c.toUpperCase());\n if (typeof options[camelKey] === \"string\") {\n try {\n options[camelKey] = JSON.parse(options[camelKey] as string);\n } catch {\n console.error(`Invalid JSON for --${key}`);\n process.exit(1);\n }\n }\n }\n\n const params = unflattenParams(options, flatFields);\n\n try {\n const result = await tool.handler(params);\n printResult(result);\n } catch (error) {\n console.error((error as Error).message);\n process.exit(1);\n }\n });\n }\n}\n\n// ── Remote tool registration ───────────────────────────────────\n\ninterface JsonSchemaProperty {\n type?: string | string[];\n description?: string;\n enum?: string[];\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n anyOf?: { type: string }[];\n}\n\ninterface JsonSchema {\n $ref?: string;\n definitions?: Record<string, JsonSchemaProperty>;\n properties?: Record<string, JsonSchemaProperty>;\n required?: string[];\n}\n\nfunction resolveJsonSchema(inputSchema: JsonSchema): JsonSchemaProperty {\n if (inputSchema.$ref && inputSchema.definitions) {\n const defName = inputSchema.$ref.replace(\"#/definitions/\", \"\");\n return inputSchema.definitions[defName];\n }\n return inputSchema;\n}\n\nfunction isNullableProperty(prop: JsonSchemaProperty): boolean {\n if (Array.isArray(prop.type)) return prop.type.includes(\"null\");\n if (prop.anyOf) return prop.anyOf.some((t) => t.type === \"null\");\n return false;\n}\n\nfunction isObjectProperty(prop: JsonSchemaProperty): boolean {\n if (Array.isArray(prop.type)) return prop.type.includes(\"object\");\n if (prop.anyOf) return prop.anyOf.some((t) => t.type === \"object\");\n return prop.type === \"object\";\n}\n\nfunction isNumberProperty(prop: JsonSchemaProperty): boolean {\n if (Array.isArray(prop.type)) return prop.type.some((t) => t === \"number\" || t === \"integer\");\n if (prop.anyOf) return prop.anyOf.some((t) => t.type === \"number\" || t.type === \"integer\");\n return prop.type === \"number\" || prop.type === \"integer\";\n}\n\nconst HIDDEN_TOOLS = new Set([\n \"swaps_transaction_build\",\n \"token_transfer\",\n \"transaction_register\",\n]);\n\nfunction registerRemoteTools(\n parent: Command,\n remoteSchemas: { name: string; description: string; inputSchema: JsonSchema }[],\n): void {\n for (const schema of remoteSchemas) {\n if (HIDDEN_TOOLS.has(schema.name)) continue;\n const segments = schema.name.split(\"_\");\n const leafName = segments.pop()!;\n const group = getOrCreateGroup(parent, segments);\n\n // Skip if a local tool already registered this command\n if (group.commands.find((c) => c.name() === leafName)) continue;\n\n const cmd = group.command(leafName).description(schema.description);\n\n const resolved = resolveJsonSchema(schema.inputSchema);\n const props = resolved.properties ?? {};\n const requiredSet = new Set(resolved.required ?? []);\n const nullableKeys: string[] = [];\n const numberKeys: string[] = [];\n const objectKeys: string[] = [];\n\n for (const [key, prop] of Object.entries(props)) {\n const desc = prop.description ?? key;\n const nullable = isNullableProperty(prop);\n const isObj = isObjectProperty(prop);\n const isNum = isNumberProperty(prop);\n\n if (isNum) numberKeys.push(key);\n\n if (isObj) {\n objectKeys.push(key);\n if (requiredSet.has(key) && !nullable) {\n cmd.requiredOption(`--${key} <json>`, `${desc} (as JSON)`);\n } else {\n cmd.option(`--${key} <json>`, `${desc} (as JSON)`);\n nullableKeys.push(key);\n }\n } else if (nullable || !requiredSet.has(key)) {\n cmd.option(`--${key} <${key}>`, desc);\n nullableKeys.push(key);\n } else {\n cmd.requiredOption(`--${key} <${key}>`, desc);\n }\n }\n\n cmd.action(async (options: Record<string, unknown>) => {\n await consentCheck.handler({});\n\n // Coerce types\n for (const key of nullableKeys) {\n if (options[key] === undefined) options[key] = null;\n }\n for (const key of numberKeys) {\n if (options[key] != null && typeof options[key] === \"string\") {\n options[key] = Number(options[key]);\n }\n }\n for (const key of objectKeys) {\n if (typeof options[key] === \"string\") {\n try {\n options[key] = JSON.parse(options[key] as string);\n } catch {\n console.error(`Invalid JSON for --${key}`);\n process.exit(1);\n }\n }\n }\n\n try {\n const baseUrl = resolveBaseUrl();\n const result = await callTool(baseUrl, schema.name, options as Record<string, unknown>);\n printResult(result);\n printUpdateNotice();\n } catch (error) {\n console.error((error as Error).message);\n process.exit(1);\n }\n });\n }\n}\n\n// ── Register all tools ─────────────────────────────────────────\n\nregisterLocalTools(program, LOCAL_TOOLS);\nregisterRemoteTools(program, schemas as any);\n\n\n// ── Tools listing ──────────────────────────────────────────────\n\nprogram\n .command(\"tools\")\n .description(\"List available tools\")\n .action(() => {\n const allTools = [\n ...LOCAL_TOOLS.map((t) => ({\n name: t.schema.name,\n description: t.schema.description,\n })),\n ...schemas\n .filter((s) => !LOCAL_TOOLS.some((l) => l.schema.name === s.name) && !HIDDEN_TOOLS.has(s.name))\n .map((s) => ({ name: s.name, description: s.description })),\n ].sort((a, b) => a.name.localeCompare(b.name));\n\n const lines: string[] = [];\n for (const tool of allTools) {\n const cmdName = tool.name.replace(/_/g, \" \");\n lines.push(` ${color.green(cmdName.padEnd(28))} ${color.dim(tool.description)}`);\n }\n lines.push(\"\");\n lines.push(color.dim(`${allTools.length} tools`));\n console.log(lines.join(\"\\n\"));\n printUpdateNotice();\n });\n\nprogram.parse();\n","const useColor =\n !process.env.NO_COLOR && process.stdout.isTTY === true;\n\nfunction ansi(code: string) {\n return (text: string) => (useColor ? `${code}${text}\\x1b[0m` : text);\n}\n\nexport const color = {\n bold: ansi(\"\\x1b[1m\"),\n dim: ansi(\"\\x1b[2m\"),\n green: ansi(\"\\x1b[32m\"),\n yellow: ansi(\"\\x1b[33m\"),\n cyan: ansi(\"\\x1b[36m\"),\n red: ansi(\"\\x1b[31m\"),\n};\n\nconst MAX_COL_WIDTH = 40;\n\nfunction truncate(str: string, max: number): string {\n return str.length > max ? str.slice(0, max - 1) + \"…\" : str;\n}\n\nfunction renderArrayTable(rows: Record<string, unknown>[]): string {\n if (rows.length === 0) return \"\";\n\n const keys = Object.keys(rows[0]);\n const widths = keys.map((k) => k.length);\n\n const stringRows = rows.map((row) =>\n keys.map((k, i) => {\n const val = truncate(String(row[k] ?? \"\"), MAX_COL_WIDTH);\n widths[i] = Math.max(widths[i], val.length);\n return val;\n }),\n );\n\n // Cap widths\n for (let i = 0; i < widths.length; i++) {\n widths[i] = Math.min(widths[i], MAX_COL_WIDTH);\n }\n\n const header = keys.map((k, i) => color.bold(k.padEnd(widths[i]))).join(\" \");\n const separator = color.dim(widths.map((w) => \"─\".repeat(w)).join(\"──\"));\n const body = stringRows\n .map((row) => row.map((val, i) => val.padEnd(widths[i])).join(\" \"))\n .join(\"\\n\");\n\n return `${header}\\n${separator}\\n${body}`;\n}\n\nfunction renderObjectTable(obj: Record<string, unknown>): string {\n const entries = Object.entries(obj);\n const maxKey = Math.min(\n MAX_COL_WIDTH,\n Math.max(...entries.map(([k]) => k.length)),\n );\n\n return entries\n .map(([k, v]) => `${color.bold(k.padEnd(maxKey))} ${String(v ?? \"\")}`)\n .join(\"\\n\");\n}\n\nexport function renderTable(data: unknown): string {\n if (Array.isArray(data)) {\n if (data.length === 0) return color.dim(\"(empty)\");\n if (typeof data[0] === \"object\" && data[0] !== null) {\n return renderArrayTable(data as Record<string, unknown>[]);\n }\n return data.map(String).join(\"\\n\");\n }\n\n if (typeof data === \"object\" && data !== null) {\n return renderObjectTable(data as Record<string, unknown>);\n }\n\n return String(data);\n}\n\nexport type OutputFormat = \"json\" | \"compact\" | \"table\";\n\nexport function formatOutput(result: unknown, format: OutputFormat): string {\n if (format === \"compact\") {\n return JSON.stringify(result);\n }\n\n if (format === \"table\") {\n const value =\n typeof result === \"object\" &&\n result !== null &&\n \"data\" in result\n ? (result as Record<string, unknown>).data\n : result;\n return renderTable(value);\n }\n\n return JSON.stringify(result, null, 2);\n}\n","import { readFileSync, writeFileSync, mkdirSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport { color } from \"./format\";\n\nconst CACHE_DIR = join(homedir(), \".config\", \"moonpay\");\nconst CACHE_FILE = join(CACHE_DIR, \"update-check.json\");\nconst ONE_DAY_MS = 24 * 60 * 60 * 1000;\nconst FETCH_TIMEOUT_MS = 3000;\n\ntype CacheData = {\n latest: string;\n checkedAt: number;\n};\n\nfunction readCache(): CacheData | null {\n try {\n const raw = readFileSync(CACHE_FILE, \"utf-8\");\n return JSON.parse(raw) as CacheData;\n } catch {\n return null;\n }\n}\n\nfunction writeCache(data: CacheData): void {\n try {\n mkdirSync(CACHE_DIR, { recursive: true });\n writeFileSync(CACHE_FILE, JSON.stringify(data));\n } catch {\n // Ignore write errors\n }\n}\n\nfunction isNewer(latest: string, current: string): boolean {\n const a = latest.split(\".\").map(Number);\n const b = current.split(\".\").map(Number);\n for (let i = 0; i < 3; i++) {\n if ((a[i] ?? 0) > (b[i] ?? 0)) return true;\n if ((a[i] ?? 0) < (b[i] ?? 0)) return false;\n }\n return false;\n}\n\nfunction formatNotice(current: string, latest: string): string {\n return [\n \"\",\n color.yellow(`Update available: ${current} → ${latest}`),\n color.dim(\"Run `npm i -g @moonpay/cli` to update.\"),\n \"\",\n ].join(\"\\n\");\n}\n\nexport function startVersionCheck(\n currentVersion: string,\n): () => string | null {\n let notice: string | null = null;\n\n const cache = readCache();\n\n if (cache && Date.now() - cache.checkedAt < ONE_DAY_MS) {\n if (isNewer(cache.latest, currentVersion)) {\n notice = formatNotice(currentVersion, cache.latest);\n }\n return () => notice;\n }\n\n // Fire async fetch — non-blocking\n const controller = new AbortController();\n const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);\n\n fetch(\"https://registry.npmjs.org/@moonpay%2fcli/latest\", {\n signal: controller.signal,\n })\n .then((res) => res.json())\n .then((data: unknown) => {\n const latest = (data as { version?: string }).version;\n if (latest) {\n writeCache({ latest, checkedAt: Date.now() });\n if (isNewer(latest, currentVersion)) {\n notice = formatNotice(currentVersion, latest);\n }\n }\n })\n .catch(() => {\n // Silently ignore fetch errors\n })\n .finally(() => clearTimeout(timeout));\n\n return () => notice;\n}\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const walletExportSchema = defineToolSchema({\n name: \"wallet_export\",\n description:\n \"Export wallet secret (mnemonic or private key). Interactive only — cannot be run by agents or piped.\",\n input: z.object({\n wallet: z.string().describe(\"Wallet name\"),\n }),\n output: z.object({\n exported: z.literal(true),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { findWalletOrThrow } from \"../store\";\nimport { walletExportSchema } from \"./schema\";\n\nexport const walletExport = createTool(walletExportSchema, async (params) => {\n if (!process.stdout.isTTY) {\n throw new Error(\n \"Wallet export requires an interactive terminal.\\n\" +\n \"Run this command directly in your terminal: mp wallet export \" + params.wallet,\n );\n }\n\n const wallet = findWalletOrThrow(params.wallet);\n\n if (wallet.type === \"hd\") {\n process.stderr.write(`\\nMnemonic for \"${wallet.name}\":\\n\\n`);\n process.stderr.write(` ${wallet.mnemonic}\\n\\n`);\n process.stderr.write(\"Write this down and store it securely.\\n\\n\");\n } else {\n process.stderr.write(`\\nPrivate key for \"${wallet.name}\" (${wallet.chain}):\\n\\n`);\n process.stderr.write(` ${wallet.privateKey}\\n\\n`);\n }\n\n return { exported: true as const };\n});\n","import { readdirSync, readFileSync, existsSync, mkdirSync, cpSync } from \"node:fs\";\nimport { join, dirname } from \"node:path\";\nimport { homedir } from \"node:os\";\nimport { fileURLToPath } from \"node:url\";\nimport { createRequire } from \"node:module\";\n\n/** Package root → skills/ directory bundled with the CLI */\nfunction getSkillsDir(): string {\n // import.meta.url resolves to dist/index.js when bundled\n const __filename = fileURLToPath(import.meta.url);\n const distDir = dirname(__filename);\n // dist/ → package root → skills/\n return join(distDir, \"..\", \"skills\");\n}\n\n/** Where Claude Code discovers skills */\nfunction getClaudeSkillsDir(): string {\n return join(homedir(), \".claude\", \"skills\");\n}\n\nexport type SkillInfo = {\n name: string;\n description: string;\n};\n\nexport function listBundledSkills(): SkillInfo[] {\n const dir = getSkillsDir();\n if (!existsSync(dir)) return [];\n return readdirSync(dir, { withFileTypes: true })\n .filter((e) => e.isDirectory() && e.name.startsWith(\"moonpay-\"))\n .map((e) => {\n const md = readFileSync(join(dir, e.name, \"SKILL.md\"), \"utf-8\");\n const descMatch = md.match(/^description:\\s*(.+)$/m);\n return {\n name: e.name,\n description: descMatch?.[1]?.replace(/^[\"']|[\"']$/g, \"\") ?? \"\",\n };\n })\n .sort((a, b) => a.name.localeCompare(b.name));\n}\n\nexport function readSkill(name: string): string {\n if (/[/\\\\]|\\.\\./.test(name)) throw new Error(`Invalid skill name: \"${name}\"`);\n const skillPath = join(getSkillsDir(), name, \"SKILL.md\");\n if (!existsSync(skillPath)) {\n throw new Error(`Skill \"${name}\" not found. Run \\`mp skill list\\` to see available skills.`);\n }\n return readFileSync(skillPath, \"utf-8\");\n}\n\nexport function installSkills(force: boolean, dir?: string): { name: string; installed: boolean }[] {\n const srcDir = getSkillsDir();\n const destDir = dir ?? getClaudeSkillsDir();\n const skills = listBundledSkills();\n\n mkdirSync(destDir, { recursive: true });\n\n return skills.map((s) => {\n const dest = join(destDir, s.name);\n if (existsSync(dest) && !force) {\n return { name: s.name, installed: false };\n }\n cpSync(join(srcDir, s.name), dest, { recursive: true, force: true });\n return { name: s.name, installed: true };\n });\n}\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillListSchema = defineToolSchema({\n name: \"skill_list\",\n description: \"List available AI skills for Claude Code and other agents\",\n input: z.object({}),\n output: z.array(\n z.object({\n name: z.string(),\n description: z.string(),\n }),\n ),\n});\n","import { createTool } from \"../../shared\";\nimport { listBundledSkills } from \"../server\";\nimport { skillListSchema } from \"./schema\";\n\nexport const skillList = createTool(skillListSchema, async () => {\n return listBundledSkills();\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillRetrieveSchema = defineToolSchema({\n name: \"skill_retrieve\",\n description: \"Get the full instructions for a specific skill\",\n input: z.object({\n name: z.string().describe(\"Skill name (e.g. moonpay-swap-tokens)\"),\n }),\n output: z.object({\n name: z.string(),\n content: z.string(),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { readSkill } from \"../server\";\nimport { skillRetrieveSchema } from \"./schema\";\n\nexport const skillRetrieve = createTool(skillRetrieveSchema, async (params) => {\n return {\n name: params.name,\n content: readSkill(params.name),\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const skillInstallSchema = defineToolSchema({\n name: \"skill_install\",\n description:\n \"Install AI skills for Claude Code. Defaults to ~/.claude/skills/, or specify --dir for a custom location (e.g. project-local, ~/.agents/skills).\",\n input: z.object({\n force: z.boolean().describe(\"Overwrite existing skills\"),\n dir: z\n .string()\n .nullable()\n .describe(\n \"Target directory to install skills into (default: ~/.claude/skills/)\",\n ),\n }),\n output: z.array(\n z.object({\n name: z.string(),\n installed: z.boolean(),\n }),\n ),\n});\n","import { createTool } from \"../../shared\";\nimport { installSkills } from \"../server\";\nimport { skillInstallSchema } from \"./schema\";\n\nexport const skillInstall = createTool(skillInstallSchema, async (params) => {\n return installSkills(params.force, params.dir ?? undefined);\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\nimport { chainSchema } from \"../../wallet/models\";\n\nexport const tokenTransferSchema = defineToolSchema({\n name: \"token_transfer\",\n description:\n \"Transfer tokens to another wallet on the same chain. Builds, signs locally, and broadcasts.\",\n input: z.object({\n wallet: z.string().describe(\"Local wallet name to sign with\"),\n chain: chainSchema.describe(\"Chain to transfer on\"),\n token: z.string().describe(\"Token address to transfer\"),\n amount: z.coerce.number().describe(\"Amount to transfer\"),\n to: z.string().describe(\"Recipient wallet name or address\"),\n }),\n output: z.object({\n signature: z.string().describe(\"Transaction hash/signature\"),\n message: z.string().describe(\"Human-readable transfer description\"),\n }),\n});\n","import { createTool } from \"../../shared\";\nimport { callRemoteTool } from \"../../../client\";\nimport { resolveBaseUrl } from \"../../../auth\";\nimport { walletRetrieve } from \"../../wallet/retrieve/tool\";\nimport { KEY_CHAIN_MAP } from \"../../wallet/models\";\nimport { transactionSign } from \"../../transaction/sign/tool\";\nimport { tokenTransferSchema } from \"./schema\";\n\nexport const tokenTransfer = createTool(tokenTransferSchema, async (params) => {\n const baseUrl = resolveBaseUrl();\n\n const wallet = await walletRetrieve.handler({ wallet: params.wallet });\n const fromAddress = wallet.addresses[KEY_CHAIN_MAP[params.chain]];\n if (!fromAddress) {\n throw new Error(`Wallet \"${wallet.name}\" has no address on ${params.chain}.`);\n }\n\n // Resolve recipient: try as wallet name, fall back to raw address\n let toAddress = params.to;\n try {\n const toWallet = await walletRetrieve.handler({ wallet: params.to });\n toAddress = toWallet.addresses[KEY_CHAIN_MAP[params.chain]] ?? params.to;\n } catch {\n // Not a wallet name — use as-is (raw address)\n }\n\n // Build unsigned transaction\n const buildResult = await callRemoteTool(baseUrl, \"token_transfer\", {\n wallet: fromAddress,\n token: params.token,\n to: toAddress,\n amount: params.amount,\n chain: params.chain,\n });\n\n // Sign\n const txPayload = \"base64\" in buildResult.transaction\n ? buildResult.transaction.base64\n : JSON.stringify(buildResult.transaction);\n\n const { transaction: signedTransaction } = await transactionSign.handler({\n wallet: wallet.name,\n chain: params.chain,\n transaction: txPayload,\n });\n\n // Send\n const sendResult = await callRemoteTool(baseUrl, \"transaction_send\", {\n transaction: signedTransaction,\n message: buildResult.message,\n chain: params.chain,\n });\n\n if (!sendResult.signature) {\n throw new Error(`Transaction send failed: ${sendResult.message}`);\n }\n\n return { signature: sendResult.signature, message: buildResult.message };\n});\n","import * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { createTool } from \"../../shared\";\nimport { consentAcceptSchema } from \"./schema\";\n\nconst CONFIG_DIR = path.join(os.homedir(), \".config\", \"moonpay\");\nconst CONSENT_PATH = path.join(CONFIG_DIR, \"consent.json\");\nconst CURRENT_TOS_VERSION = \"1.0\";\n\nexport const consentAccept = createTool(consentAcceptSchema, async () => {\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n }\n\n const now = new Date().toISOString();\n const consent = { tosVersion: CURRENT_TOS_VERSION, acceptedAt: now };\n\n const tmp = CONSENT_PATH + `.tmp.${process.pid}`;\n fs.writeFileSync(tmp, JSON.stringify(consent, null, 2), {\n encoding: \"utf-8\",\n mode: 0o600,\n });\n fs.renameSync(tmp, CONSENT_PATH);\n\n return consent;\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const consentAcceptSchema = defineToolSchema({\n name: \"consent_accept\",\n description:\n \"Accept the MoonPay Terms of Service and Privacy Policy. Required before using any CLI command.\",\n input: z.object({}),\n output: z.object({\n tosVersion: z.string(),\n acceptedAt: z.string(),\n }),\n});\n","import * as fs from \"fs\";\nimport * as os from \"os\";\nimport * as path from \"path\";\nimport { createTool } from \"../../shared\";\nimport { consentCheckSchema } from \"./schema\";\n\nconst CONSENT_PATH = path.join(os.homedir(), \".config\", \"moonpay\", \"consent.json\");\nconst CURRENT_TOS_VERSION = \"1.0\";\n\nexport const consentCheck = createTool(consentCheckSchema, async () => {\n let consent: { tosVersion: string; acceptedAt: string } | null = null;\n try {\n consent = JSON.parse(fs.readFileSync(CONSENT_PATH, \"utf-8\"));\n } catch {}\n\n if (!consent || consent.tosVersion !== CURRENT_TOS_VERSION) {\n throw new Error(\n \"Terms of Service not yet accepted. Run `mp consent accept` first.\",\n );\n }\n\n return {\n accepted: true as const,\n tosVersion: consent.tosVersion,\n acceptedAt: consent.acceptedAt,\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../../shared\";\n\nexport const consentCheckSchema = defineToolSchema({\n name: \"consent_check\",\n description:\n \"Check whether the MoonPay Terms of Service and Privacy Policy have been accepted. Throws if not accepted.\",\n input: z.object({}),\n output: z.object({\n accepted: z.literal(true),\n tosVersion: z.string(),\n acceptedAt: z.string(),\n }),\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const loginSchema = defineToolSchema({\n name: \"login\",\n description: \"Send a login verification code to your email.\",\n input: z.object({\n email: z.string().describe(\"Email address\"),\n }),\n output: z.object({\n email: z.string(),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport { callPublicTool, getConfigOrDefault } from \"../../auth\";\nimport { loginSchema } from \"./schema\";\n\nexport const login = createTool(loginSchema, async (params) => {\n const { baseUrl } = getConfigOrDefault();\n await callPublicTool(baseUrl, \"login\", { email: params.email });\n return {\n email: params.email,\n message: `Verification code sent to ${params.email}. Run: mp verify --email ${params.email} --code <code>`,\n };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const verifySchema = defineToolSchema({\n name: \"verify\",\n description: \"Verify login code and store encrypted credentials.\",\n input: z.object({\n email: z.string().describe(\"Email address\"),\n code: z.string().describe(\"Verification code\"),\n }),\n output: z.object({\n email: z.string(),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport {\n callPublicTool,\n getConfigOrDefault,\n saveCredentials,\n type Credentials,\n} from \"../../auth\";\nimport { verifySchema } from \"./schema\";\n\nexport const verify = createTool(verifySchema, async (params) => {\n const { baseUrl } = getConfigOrDefault();\n const tokens = (await callPublicTool(baseUrl, \"verify\", {\n email: params.email,\n code: params.code,\n })) as {\n accessToken: string;\n refreshToken: string;\n expiresAt: number;\n };\n\n const creds: Credentials = {\n accessToken: tokens.accessToken,\n refreshToken: tokens.refreshToken,\n expiresAt: tokens.expiresAt * 1000,\n baseUrl,\n };\n\n saveCredentials(creds);\n return { email: params.email, message: \"Logged in successfully.\" };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const logoutSchema = defineToolSchema({\n name: \"logout\",\n description: \"Log out and clear stored credentials.\",\n input: z.object({}),\n output: z.object({\n success: z.literal(true),\n message: z.string(),\n }),\n});\n","import { createTool } from \"../shared\";\nimport { clearCredentials } from \"../../auth\";\nimport { logoutSchema } from \"./schema\";\n\nexport const logout = createTool(logoutSchema, async () => {\n clearCredentials();\n return { success: true as const, message: \"Logged out.\" };\n});\n","import { createRequire } from \"module\";\nimport { createTool } from \"../shared\";\nimport { qrGenerateSchema } from \"./schema\";\n\nconst require = createRequire(import.meta.url);\nconst qrcode = require(\"qrcode-terminal\") as {\n generate: (text: string, opts: { small?: boolean }, cb: (code: string) => void) => void;\n};\n\nexport const qrGenerate = createTool(qrGenerateSchema, async (params) => {\n qrcode.generate(params.value, { small: true }, (code: string) => {\n process.stderr.write(`\\n${code}\\n`);\n });\n return { value: params.value };\n});\n","import { z } from \"zod\";\nimport { defineToolSchema } from \"../shared\";\n\nexport const qrGenerateSchema = defineToolSchema({\n name: \"qr_generate\",\n description:\n \"Display a QR code in the terminal. Pass any text — wallet address, URL, token address, etc.\",\n input: z.object({\n value: z.string().describe(\"Text to encode as a QR code\"),\n }),\n output: z.object({\n value: z.string(),\n }),\n});\n"],"mappings":"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","names":["createRequire","readFileSync","mkdirSync","join","homedir","z","z","z","z","z","z","z","z","z","z","fs","os","path","z","z","CONSENT_PATH","CURRENT_TOS_VERSION","z","z","z","z","z","z","z","z","require","require","createRequire","path"]}
@@ -15,7 +15,7 @@ import {
15
15
  walletRename,
16
16
  walletRetrieve,
17
17
  x402Request
18
- } from "./chunk-DWAP6OI2.js";
18
+ } from "./chunk-TIV6G4KD.js";
19
19
  import "./chunk-AL5WDHLT.js";
20
20
 
21
21
  // src/mcp.ts
@@ -150,4 +150,4 @@ async function startMcpServer() {
150
150
  export {
151
151
  startMcpServer
152
152
  };
153
- //# sourceMappingURL=mcp-5QZGKH7E.js.map
153
+ //# sourceMappingURL=mcp-7OXDGMYU.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moonpay/cli",
3
- "version": "0.6.7",
3
+ "version": "0.6.10",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -35,6 +35,7 @@
35
35
  "commander": "^12.1.0",
36
36
  "ecpair": "^3.0.1",
37
37
  "ed25519-hd-key": "^1.3.0",
38
+ "qrcode-terminal": "^0.12.0",
38
39
  "tiny-secp256k1": "^2.2.4",
39
40
  "tweetnacl": "^1.0.3",
40
41
  "viem": "^2.46.2",