@moonpay/cli 0.13.5 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,2 @@
1
+ process.noDeprecation = true; import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
2
+ import{b as v,d as C}from"./chunk-LMDE72OE.js";var F={};C(F,{decrypt:()=>W,encrypt:()=>E,encryptedFileSchema:()=>b});import{randomBytes as l,scryptSync as d,createCipheriv as A,createDecipheriv as z}from"crypto";import{z as n}from"zod";function E(t,r){let a=l(32),c=d(r,a,g,{N:h,r:f,p:y,maxmem:u}),i=l(12),o=A("aes-256-gcm",c,i),p=Buffer.concat([o.update(t,"utf8"),o.final()]);return{encryption:{cipher:"aes-256-gcm",kdf:"scrypt",kdfparams:{n:h,r:f,p:y},salt:a.toString("base64"),iv:i.toString("base64"),tag:o.getAuthTag().toString("base64")},data:p.toString("base64")}}function W(t,r){let{salt:a,iv:c,tag:i,kdfparams:o}=t.encryption,p=d(r,Buffer.from(a,"base64"),g,{N:o.n,r:o.r,p:o.p,maxmem:u}),s=z("aes-256-gcm",p,Buffer.from(c,"base64"),{authTagLength:16});return s.setAuthTag(Buffer.from(i,"base64")),Buffer.concat([s.update(Buffer.from(t.data,"base64")),s.final()]).toString("utf8")}var h,f,y,g,u,b,S=v(()=>{"use strict";h=2**18,f=8,y=1,g=32,u=512*1024*1024,b=n.object({encryption:n.object({cipher:n.literal("aes-256-gcm"),kdf:n.literal("scrypt"),kdfparams:n.object({n:n.number(),r:n.number(),p:n.number()}),salt:n.string(),iv:n.string(),tag:n.string()}),data:n.string()})});S();import{z as e}from"zod";var P=e.enum(["solana","ethereum","base","arbitrum","polygon","optimism","bnb","avalanche","bitcoin","tron","ton"]),K=e.enum(["solana","ethereum","bitcoin","tron","ton"]),Y={solana:"solana",ethereum:"ethereum",base:"ethereum",arbitrum:"ethereum",polygon:"ethereum",optimism:"ethereum",bnb:"ethereum",avalanche:"ethereum",bitcoin:"bitcoin",tron:"tron",ton:"ton"},B={"eip155:1":"ethereum","solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp":"solana","bip122:000000000019d6689c085ae165831e93":"bitcoin","tron:mainnet":"tron","ton:mainnet":"ton"},m=e.object({solana:e.string().optional(),ethereum:e.string().optional(),bitcoin:e.string().optional(),tron:e.string().optional(),ton:e.string().optional()}),w=["base","arbitrum","polygon","optimism","bnb","avalanche"];function H(t){let r={};if(t.solana&&(r.solana=t.solana),t.ethereum){r.ethereum=t.ethereum;for(let a of w)r[a]=t.ethereum}return t.bitcoin&&(r.bitcoin=t.bitcoin),t.tron&&(r.tron=t.tron),t.ton&&(r.ton=t.ton),r}var R=e.object({name:e.string(),type:e.literal("hd"),mnemonic:e.string().optional(),addresses:m,createdAt:e.string()}),T=e.object({name:e.string(),type:e.literal("imported"),chain:K.optional(),privateKey:e.string().optional(),addresses:m,createdAt:e.string()}),x=e.enum(["ledger"]),_=e.object({name:e.string(),type:e.literal("hardware"),device:x,addresses:m,createdAt:e.string()}),M=e.discriminatedUnion("type",[R,T,_]),q=e.object({name:e.string(),type:e.enum(["hd","imported","hardware"]),device:x.optional(),addresses:e.record(e.string(),e.string()),createdAt:e.string()});export{b as a,E as b,W as c,F as d,S as e,P as f,Y as g,B as h,m as i,H as j,x as k,_ as l,q as m};
package/dist/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  process.noDeprecation = true; import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
3
- import{a as R,b as S,c as T,d as j,e as k}from"./chunk-DDBP77FH.js";import{a as C,h as A,p as J}from"./chunk-WAYYQVLG.js";import{e as v}from"./chunk-HJJKANGF.js";import"./chunk-LMDE72OE.js";import{Command as ne}from"commander";var Y=!process.env.NO_COLOR&&process.stdout.isTTY===!0;function $(e){return t=>Y?`${e}${t}\x1B[0m`:t}var p={bold:$("\x1B[1m"),dim:$("\x1B[2m"),green:$("\x1B[32m"),yellow:$("\x1B[33m"),cyan:$("\x1B[36m"),red:$("\x1B[31m")};function O(e){if(e==null)return!0;let t=typeof e;return t==="string"||t==="number"||t==="boolean"}function _(e){return e==null?"-":String(e)}function N(e,t=0){let n=" ".repeat(t);return O(e)?`${n}${_(e)}`:Array.isArray(e)?e.length===0?`${n}${p.dim("(empty)")}`:e.every(O)?e.map(r=>`${n}- ${_(r)}`).join(`
3
+ import{a as R,b as S,c as T,d as j,e as k}from"./chunk-SRMRNSIO.js";import{a as C,c as Y,i as A,m as H,u as J}from"./chunk-27ZRH534.js";import{g as v}from"./chunk-XJWHTFJ5.js";import"./chunk-LMDE72OE.js";H();import{Command as re}from"commander";var z=!process.env.NO_COLOR&&process.stdout.isTTY===!0;function $(e){return t=>z?`${e}${t}\x1B[0m`:t}var p={bold:$("\x1B[1m"),dim:$("\x1B[2m"),green:$("\x1B[32m"),yellow:$("\x1B[33m"),cyan:$("\x1B[36m"),red:$("\x1B[31m")};function O(e){if(e==null)return!0;let t=typeof e;return t==="string"||t==="number"||t==="boolean"}function _(e){return e==null?"-":String(e)}function N(e,t=0){let n=" ".repeat(t);return O(e)?`${n}${_(e)}`:Array.isArray(e)?e.length===0?`${n}${p.dim("(empty)")}`:e.every(O)?e.map(r=>`${n}- ${_(r)}`).join(`
4
4
  `):e.map(r=>{if(typeof r!="object"||r===null)return`${n}- ${_(r)}`;let o=Object.entries(r),a=[],[c,f]=o[0];O(f)?a.push(`${n}- ${p.bold(c)}: ${_(f)}`):(a.push(`${n}- ${p.bold(c)}:`),a.push(N(f,t+2)));for(let[m,y]of o.slice(1))O(y)?a.push(`${n} ${p.bold(m)}: ${_(y)}`):(a.push(`${n} ${p.bold(m)}:`),a.push(N(y,t+2)));return a.join(`
5
5
  `)}).join(`
6
6
 
7
7
  `):typeof e=="object"&&e!==null?Object.entries(e).map(([o,a])=>O(a)?`${n}${p.bold(o)}: ${_(a)}`:`${n}${p.bold(o)}:
8
8
  ${N(a,t+1)}`).join(`
9
- `):""}function H(e){if(typeof e!="object"||e===null)return e;let t=e;return"data"in t?t.data:"items"in t&&Array.isArray(t.items)&&Object.keys(t).filter(r=>r!=="items").length===0?t.items:e}function F(e,t){return t==="json"?JSON.stringify(e,null,2):N(H(e))}import{readFileSync as z,writeFileSync as W,mkdirSync as B}from"fs";import{join as E}from"path";import{homedir as G}from"os";var x=E(G(),".config","moonpay"),I=E(x,"update-check.json"),V=1440*60*1e3,Q=3e3;function X(){try{let e=z(I,"utf-8");return JSON.parse(e)}catch{return null}}function ee(e){try{B(x,{recursive:!0}),W(I,JSON.stringify(e))}catch{}}function K(e,t){let n=e.split(".").map(Number),r=t.split(".").map(Number);for(let o=0;o<3;o++){if((n[o]??0)>(r[o]??0))return!0;if((n[o]??0)<(r[o]??0))return!1}return!1}function P(e,t){return["",p.yellow(`Update available: ${e} \u2192 ${t}`),p.dim("Run `npm i -g @moonpay/cli` to update."),""].join(`
10
- `)}function L(e){let t=null,n=X();if(n&&Date.now()-n.checkedAt<V)return K(n.latest,e)&&(t=P(e,n.latest)),()=>t;let r=new AbortController,o=setTimeout(()=>r.abort(),Q);return fetch("https://registry.npmjs.org/@moonpay%2fcli/latest",{signal:r.signal}).then(a=>a.json()).then(a=>{let c=a.version;c&&(ee({latest:c,checkedAt:Date.now()}),K(c,e)&&(t=P(e,c)))}).catch(()=>{}).finally(()=>clearTimeout(o)),()=>t}var te=L(C),h=new ne;h.name("moonpay").description(`MoonPay CLI \u2014 the crypto onramp for AI agents
9
+ `):""}function W(e){if(typeof e!="object"||e===null)return e;let t=e;return"data"in t?t.data:"items"in t&&Array.isArray(t.items)&&Object.keys(t).filter(r=>r!=="items").length===0?t.items:e}function F(e,t){return t==="json"?JSON.stringify(e,null,2):N(W(e))}import{readFileSync as B,writeFileSync as G,mkdirSync as V}from"fs";import{join as E}from"path";import{homedir as Q}from"os";var x=E(Q(),".config","moonpay"),I=E(x,"update-check.json"),X=1440*60*1e3,ee=3e3;function ne(){try{let e=B(I,"utf-8");return JSON.parse(e)}catch{return null}}function te(e){try{V(x,{recursive:!0}),G(I,JSON.stringify(e))}catch{}}function K(e,t){let n=e.split(".").map(Number),r=t.split(".").map(Number);for(let o=0;o<3;o++){if((n[o]??0)>(r[o]??0))return!0;if((n[o]??0)<(r[o]??0))return!1}return!1}function P(e,t){return["",p.yellow(`Update available: ${e} \u2192 ${t}`),p.dim("Run `npm i -g @moonpay/cli` to update."),""].join(`
10
+ `)}function L(e){let t=null,n=ne();if(n&&Date.now()-n.checkedAt<X)return K(n.latest,e)&&(t=P(e,n.latest)),()=>t;let r=new AbortController,o=setTimeout(()=>r.abort(),ee);return fetch("https://registry.npmjs.org/@moonpay%2fcli/latest",{signal:r.signal}).then(a=>a.json()).then(a=>{let c=a.version;c&&(te({latest:c,checkedAt:Date.now()}),K(c,e)&&(t=P(e,c)))}).catch(()=>{}).finally(()=>clearTimeout(o)),()=>t}Y();var oe=L(C),h=new re;h.name("moonpay").description(`MoonPay CLI \u2014 the crypto onramp for AI agents
11
11
 
12
12
  Your agents need money. MoonPay gives them wallets, funds, and tools
13
13
  to buy, swap, bridge, and transact \u2014 all from the command line.
14
14
 
15
15
  Run \`mp skill install\` to install AI skills for Claude Code.
16
16
 
17
- `+T).version(C).option("--json","Output as JSON instead of YAML");function re(){return h.opts().json?"json":"yaml"}function D(e){console.log(F(e,re()))}function U(){let e=te();e&&process.stderr.write(e)}h.command("mcp").description("Start MCP server over stdio (for Claude Desktop, Claude Code, etc.)").action(async()=>{let{startMcpServer:e}=await import("./mcp-JZ575BYJ.js");await e()});function M(e,t){let n=e;for(let r of t){let o=n.commands.find(a=>a.name()===r);o||(o=n.command(r)),n=o}return n}function Z(e,t=""){let n=[];for(let[r,o]of Object.entries(e)){let a=t?`${t}-${r}`:r,c=o;for(;c._def.typeName==="ZodEffects";)c=c._def.schema;let f=c;f._def.typeName==="ZodNullable"&&(f=f._def.innerType),f._def.typeName==="ZodObject"&&f.shape?n.push(...Z(f.shape,a)):n.push({flatKey:a,field:o,path:a.split("-")})}return n}function oe(e,t){let n={};for(let{flatKey:r,path:o}of t){let a=r.replace(/-([a-z])/g,(f,m)=>m.toUpperCase()),c=a in e?e[a]:e[r];if(o.length===1)n[o[0]]=c;else{let f=n;for(let m=0;m<o.length-1;m++)(!f[o[m]]||typeof f[o[m]]!="object")&&(f[o[m]]={}),f=f[o[m]];f[o[o.length-1]]=c}}return n}function se(e,t){for(let n of t){let r=n.schema.name.split("_"),o=r.pop(),c=M(e,r).command(o).description(n.schema.description),f=n.schema.input.shape??{},m=Z(f),y=[],b=[],w=[];for(let{flatKey:u,field:i}of m){let s=i.description??u,l=i;for(;l._def.typeName==="ZodEffects";)l=l._def.schema;let g=l._def.typeName,d=l;d._def.typeName==="ZodNullable"&&(d=d._def.innerType),d._def.typeName==="ZodNumber"&&b.push(u),d._def.typeName==="ZodRecord"&&w.push(u),g==="ZodBoolean"?c.option(`--${u}`,s,!1):g==="ZodNullable"?(c.option(`--${u} <${u}>`,s),y.push(u)):c.requiredOption(`--${u} <${u}>`,s)}c.action(async u=>{n.schema.name.startsWith("consent_")||await j.handler({});for(let s of y){let l=s.replace(/-([a-z])/g,(g,d)=>d.toUpperCase());u[l]===void 0&&(u[l]=null)}for(let s of b){let l=s.replace(/-([a-z])/g,(g,d)=>d.toUpperCase());u[l]!=null&&typeof u[l]=="string"&&(u[l]=Number(u[l]))}for(let s of w){let l=s.replace(/-([a-z])/g,(g,d)=>d.toUpperCase());if(typeof u[l]=="string")try{u[l]=JSON.parse(u[l])}catch{console.error(`Invalid JSON for --${s}`),process.exit(1)}}let i=oe(u,m);try{let s=await n.handler(i);D(s)}catch(s){console.error(s.message),process.exit(1)}})}}function ie(e){if(e.$ref&&e.definitions){let t=e.$ref.replace("#/definitions/","");return e.definitions[t]}return e}function ae(e){return Array.isArray(e.type)?e.type.includes("null"):e.anyOf?e.anyOf.some(t=>t.type==="null"):!1}function ce(e){return Array.isArray(e.type)?e.type.includes("object"):e.anyOf?e.anyOf.some(t=>t.type==="object"):e.type==="object"}function le(e){return Array.isArray(e.type)?e.type.some(t=>t==="number"||t==="integer"):e.anyOf?e.anyOf.some(t=>t.type==="number"||t.type==="integer"):e.type==="number"||e.type==="integer"}function fe(e){let t=e.wallet,n=e.chain;if(typeof t!="string"||typeof n!="string")return;let r=J(t);if(!r)return;let o=v[n];if(!o)return;let a=r.addresses[o];a&&(e.wallet=a)}var q=new Set(["swaps_transaction_build","token_transfer","transaction_register","virtual-account_offramp_initiate","prediction-market_position_buy","prediction-market_position_sell","commerce_cart_update","commerce_checkout_start","commerce_checkout_pay"]);function ue(e,t){for(let n of t){if(q.has(n.name))continue;let r=n.name.split("_"),o=r.pop(),a=M(e,r);if(a.commands.find(i=>i.name()===o))continue;let c=a.command(o).description(n.description),f=ie(n.inputSchema),m=f.properties??{},y=new Set(f.required??[]),b=[],w=[],u=[];for(let[i,s]of Object.entries(m)){let l=s.description??i,g=ae(s),d=ce(s);le(s)&&w.push(i),d?(u.push(i),y.has(i)&&!g?c.requiredOption(`--${i} <json>`,`${l} (as JSON)`):(c.option(`--${i} <json>`,`${l} (as JSON)`),b.push(i))):g||!y.has(i)?(c.option(`--${i} <${i}>`,l),b.push(i)):c.requiredOption(`--${i} <${i}>`,l)}c.action(async i=>{await j.handler({});for(let s of b)i[s]===void 0&&(i[s]=null);for(let s of w)i[s]!=null&&typeof i[s]=="string"&&(i[s]=Number(i[s]));for(let s of u)if(typeof i[s]=="string")try{i[s]=JSON.parse(i[s])}catch{console.error(`Invalid JSON for --${s}`),process.exit(1)}try{fe(i);let s=A(),l=await R(s,n.name,i);D(l),U()}catch(s){console.error(s.message),process.exit(1)}})}}se(h,k);ue(h,S);h.command("tools").description("List available tools").action(()=>{let e=[...k.map(n=>({name:n.schema.name,description:n.schema.description})),...S.filter(n=>!k.some(r=>r.schema.name===n.name)&&!q.has(n.name)).map(n=>({name:n.name,description:n.description}))].sort((n,r)=>n.name.localeCompare(r.name)),t=[];for(let n of e){let r=n.name.replace(/_/g," ");t.push(` ${p.green(r.padEnd(28))} ${p.dim(n.description)}`)}t.push(""),t.push(p.dim(`${e.length} tools`)),console.log(t.join(`
17
+ `+T).version(C).option("--json","Output as JSON instead of YAML");function se(){return h.opts().json?"json":"yaml"}function D(e){console.log(F(e,se()))}function U(){let e=oe();e&&process.stderr.write(e)}h.command("mcp").description("Start MCP server over stdio (for Claude Desktop, Claude Code, etc.)").action(async()=>{let{startMcpServer:e}=await import("./mcp-UB4MWWSW.js");await e()});function M(e,t){let n=e;for(let r of t){let o=n.commands.find(a=>a.name()===r);o||(o=n.command(r)),n=o}return n}function Z(e,t=""){let n=[];for(let[r,o]of Object.entries(e)){let a=t?`${t}-${r}`:r,c=o;for(;c._def.typeName==="ZodEffects";)c=c._def.schema;let f=c;f._def.typeName==="ZodNullable"&&(f=f._def.innerType),f._def.typeName==="ZodObject"&&f.shape?n.push(...Z(f.shape,a)):n.push({flatKey:a,field:o,path:a.split("-")})}return n}function ie(e,t){let n={};for(let{flatKey:r,path:o}of t){let a=r.replace(/-([a-z])/g,(f,m)=>m.toUpperCase()),c=a in e?e[a]:e[r];if(o.length===1)n[o[0]]=c;else{let f=n;for(let m=0;m<o.length-1;m++)(!f[o[m]]||typeof f[o[m]]!="object")&&(f[o[m]]={}),f=f[o[m]];f[o[o.length-1]]=c}}return n}function ae(e,t){for(let n of t){let r=n.schema.name.split("_"),o=r.pop(),c=M(e,r).command(o).description(n.schema.description),f=n.schema.input.shape??{},m=Z(f),y=[],b=[],w=[];for(let{flatKey:u,field:i}of m){let s=i.description??u,l=i;for(;l._def.typeName==="ZodEffects";)l=l._def.schema;let g=l._def.typeName,d=l;d._def.typeName==="ZodNullable"&&(d=d._def.innerType),d._def.typeName==="ZodNumber"&&b.push(u),d._def.typeName==="ZodRecord"&&w.push(u),g==="ZodBoolean"?c.option(`--${u}`,s,!1):g==="ZodNullable"?(c.option(`--${u} <${u}>`,s),y.push(u)):c.requiredOption(`--${u} <${u}>`,s)}c.action(async u=>{n.schema.name.startsWith("consent_")||await j.handler({});for(let s of y){let l=s.replace(/-([a-z])/g,(g,d)=>d.toUpperCase());u[l]===void 0&&(u[l]=null)}for(let s of b){let l=s.replace(/-([a-z])/g,(g,d)=>d.toUpperCase());u[l]!=null&&typeof u[l]=="string"&&(u[l]=Number(u[l]))}for(let s of w){let l=s.replace(/-([a-z])/g,(g,d)=>d.toUpperCase());if(typeof u[l]=="string")try{u[l]=JSON.parse(u[l])}catch{console.error(`Invalid JSON for --${s}`),process.exit(1)}}let i=ie(u,m);try{let s=await n.handler(i);D(s)}catch(s){console.error(s.message),process.exit(1)}})}}function ce(e){if(e.$ref&&e.definitions){let t=e.$ref.replace("#/definitions/","");return e.definitions[t]}return e}function le(e){return Array.isArray(e.type)?e.type.includes("null"):e.anyOf?e.anyOf.some(t=>t.type==="null"):!1}function fe(e){return Array.isArray(e.type)?e.type.includes("object"):e.anyOf?e.anyOf.some(t=>t.type==="object"):e.type==="object"}function ue(e){return Array.isArray(e.type)?e.type.some(t=>t==="number"||t==="integer"):e.anyOf?e.anyOf.some(t=>t.type==="number"||t.type==="integer"):e.type==="number"||e.type==="integer"}function me(e){let t=e.wallet,n=e.chain;if(typeof t!="string"||typeof n!="string")return;let r=J(t);if(!r)return;let o=v[n];if(!o)return;let a=r.addresses[o];a&&(e.wallet=a)}var q=new Set(["swaps_transaction_build","token_transfer","transaction_register","virtual-account_offramp_initiate","prediction-market_position_buy","prediction-market_position_sell","commerce_cart_update","commerce_checkout_start","commerce_checkout_pay"]);function pe(e,t){for(let n of t){if(q.has(n.name))continue;let r=n.name.split("_"),o=r.pop(),a=M(e,r);if(a.commands.find(i=>i.name()===o))continue;let c=a.command(o).description(n.description),f=ce(n.inputSchema),m=f.properties??{},y=new Set(f.required??[]),b=[],w=[],u=[];for(let[i,s]of Object.entries(m)){let l=s.description??i,g=le(s),d=fe(s);ue(s)&&w.push(i),d?(u.push(i),y.has(i)&&!g?c.requiredOption(`--${i} <json>`,`${l} (as JSON)`):(c.option(`--${i} <json>`,`${l} (as JSON)`),b.push(i))):g||!y.has(i)?(c.option(`--${i} <${i}>`,l),b.push(i)):c.requiredOption(`--${i} <${i}>`,l)}c.action(async i=>{await j.handler({});for(let s of b)i[s]===void 0&&(i[s]=null);for(let s of w)i[s]!=null&&typeof i[s]=="string"&&(i[s]=Number(i[s]));for(let s of u)if(typeof i[s]=="string")try{i[s]=JSON.parse(i[s])}catch{console.error(`Invalid JSON for --${s}`),process.exit(1)}try{me(i);let s=A(),l=await R(s,n.name,i);D(l),U()}catch(s){console.error(s.message),process.exit(1)}})}}ae(h,k);pe(h,S);h.command("tools").description("List available tools").action(()=>{let e=[...k.map(n=>({name:n.schema.name,description:n.schema.description})),...S.filter(n=>!k.some(r=>r.schema.name===n.name)&&!q.has(n.name)).map(n=>({name:n.name,description:n.description}))].sort((n,r)=>n.name.localeCompare(r.name)),t=[];for(let n of e){let r=n.name.replace(/_/g," ");t.push(` ${p.green(r.padEnd(28))} ${p.dim(n.description)}`)}t.push(""),t.push(p.dim(`${e.length} tools`)),console.log(t.join(`
18
18
  `)),U()});h.parse();
@@ -1,5 +1,5 @@
1
1
  process.noDeprecation = true; import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
2
- import{e as S}from"./chunk-HJJKANGF.js";import{a as v}from"./chunk-LMDE72OE.js";var B=3e4;var T=`Ledger support requires additional packages.
2
+ import{g as S}from"./chunk-XJWHTFJ5.js";import{a as v}from"./chunk-LMDE72OE.js";var B=3e4;var T=`Ledger support requires additional packages.
3
3
  Run: npm i -g @moonpay/cli --include=optional`;function y(){try{let e=v("@ledgerhq/device-management-kit"),n=v("@ledgerhq/device-transport-kit-node-hid"),t=v("rxjs");return{...e,...n,...t}}catch{throw new Error(T)}}function I(){try{return v("@ledgerhq/device-signer-kit-ethereum")}catch{throw new Error(T)}}function D(){try{return v("@ledgerhq/device-signer-kit-solana")}catch{throw new Error(T)}}var h=null,l=null;function w(){if(!h){let e=y();h=new e.DeviceManagementKitBuilder().addTransport(e.nodeHidTransportFactory).build()}return h}function A(){if(!l)throw new Error("No Ledger device connected. Connect first.");return l}var C={"unlock-device":"ACTION REQUIRED: Unlock your Ledger device by entering your PIN","confirm-open-app":"ACTION REQUIRED: Confirm opening the app on your Ledger device screen","sign-transaction":"ACTION REQUIRED: Review and approve the transaction on your Ledger device screen","sign-personal-message":"ACTION REQUIRED: Review and approve the message on your Ledger device screen","verify-address":"ACTION REQUIRED: Verify the address shown on your Ledger device screen"};async function f(e,n,t=6e4){let{DeviceActionStatus:r}=y();return new Promise((a,o)=>{let d="",u=!1,i=c=>{u||(u=!0,clearTimeout(g),p.unsubscribe(),c())},g=setTimeout(()=>{i(()=>{e.cancel(),o(new Error(`${n} timed out after ${t/1e3}s. Make sure the correct app is open on your Ledger and try again.`))})},t),p=e.observable.subscribe({next:c=>{switch(c.status){case r.Pending:{let s=c.intermediateValue?.requiredUserInteraction??"";if(s&&s!=="none"&&s!==d){d=s;let m=C[s]??s;m&&process.stderr.write(` ${m}
4
4
  `)}break}case r.Completed:i(()=>a(c.output));break;case r.Error:i(()=>{let s=c.error,m=s instanceof Error?s.message:s&&typeof s=="object"?s._tag??s.message??JSON.stringify(s):String(s);o(new Error(`${n} failed: ${m}`))});break;case r.Stopped:i(()=>o(new Error(`${n} was cancelled`)));break}},error:c=>i(()=>o(c))})})}async function O(){let e=y(),n=w().startDiscovering({});process.stderr.write(`Scanning for Ledger devices via USB...
5
5
  `);let t=await e.firstValueFrom(n.pipe(e.take(1),e.timeout(B))).finally(()=>{w().stopDiscovering()}),r=t.deviceModel.model??t.deviceModel.id;process.stderr.write(`Connecting to Ledger ${r}...
@@ -0,0 +1,2 @@
1
+ process.noDeprecation = true; import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
2
+ import{a as d,b as y,e as l}from"./chunk-SRMRNSIO.js";import{a as u,c as x,i as f,m as N}from"./chunk-27ZRH534.js";import"./chunk-XJWHTFJ5.js";import"./chunk-LMDE72OE.js";import{Server as T}from"@modelcontextprotocol/sdk/server/index.js";import{StdioServerTransport as v}from"@modelcontextprotocol/sdk/server/stdio.js";import{CallToolRequestSchema as q,ListToolsRequestSchema as A}from"@modelcontextprotocol/sdk/types.js";import{zodToJsonSchema as M}from"zod-to-json-schema";N();x();var h=new Map(l.map(s=>[s.schema.name,s]));function k(s){let n=s.inputSchema;if(n.$ref&&n.definitions){let c=n.$ref.replace("#/definitions/","");return n.definitions[c]??n}return n}async function _(){let s=new T({name:"moonpay",version:u},{capabilities:{tools:{listChanged:!0}}}),n=l.map(e=>({name:e.schema.name,description:e.schema.description,inputSchema:M(e.schema.input)})),c=new Map;for(let e of y){if(h.has(e.name))continue;let t=k(e);c.set(e.name,t.properties??{}),n.push({name:e.name,description:e.description,inputSchema:{type:"object",properties:t.properties??{},...t.required?{required:t.required}:{},...t.additionalProperties!==void 0?{additionalProperties:t.additionalProperties}:{}}})}let g=new Map(n.map(e=>[e.name,e]));s.setRequestHandler(A,async()=>({tools:n.map(e=>({name:e.name,description:e.description,inputSchema:e.inputSchema}))})),s.setRequestHandler(q,async e=>{let{name:t,arguments:o={}}=e.params;if(!g.has(t))return{content:[{type:"text",text:`Unknown tool: ${t}`}],isError:!0};try{let i=h.get(t);if(i){let p=i.schema.input.shape??{};for(let[m,a]of Object.entries(p))o[m]===void 0&&a._def.typeName==="ZodNullable"&&(o[m]=null);let r=await i.handler(o);return{content:[{type:"text",text:JSON.stringify(r,null,2)}]}}let b=c.get(t)??{};for(let[p,r]of Object.entries(b))o[p]===void 0&&(Array.isArray(r.type)?r.type.includes("null"):r.anyOf?.some(R=>R.type==="null"))&&(o[p]=null),(r.type==="number"||r.type==="integer"||Array.isArray(r.type)&&r.type.some(a=>a==="number"||a==="integer")||r.anyOf?.some(a=>a.type==="number"||a.type==="integer"))&&typeof o[p]=="string"&&(o[p]=Number(o[p]));let w=f(),O=await d(w,t,o);return{content:[{type:"text",text:JSON.stringify(O,null,2)}]}}catch(i){return{content:[{type:"text",text:i instanceof Error?i.message:String(i)}],isError:!0}}});let S=new v;await s.connect(S)}export{_ as startMcpServer};
@@ -0,0 +1,2 @@
1
+ process.noDeprecation = true; import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
2
+ import{A as n,B as o,C as p,D as q,E as r,F as s,G as t,H as u,I as v,n as a,o as b,p as c,q as d,r as e,s as f,t as g,u as h,v as i,w as j,x as k,y as l,z as m}from"./chunk-27ZRH534.js";import"./chunk-XJWHTFJ5.js";import"./chunk-LMDE72OE.js";export{m as addHardwareWallet,t as addWallet,d as createWallet,j as deleteWallet,l as exportSecret,h as findWallet,i as findWalletOrThrow,a as getVaultPath,e as importMnemonic,f as importPrivateKey,g as listWallets,r as loadWallets,p as lwsSignMessage,o as lwsSignTransaction,c as migrateWallets,v as mutateWallets,n as refreshHardwareAddresses,s as removeWallet,k as renameWallet,b as requireMigrationCheck,q as resolveSigningKey,u as saveWallets};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moonpay/cli",
3
- "version": "0.13.5",
3
+ "version": "1.0.0",
4
4
  "description": "MoonPay CLI — how agents move money",
5
5
  "homepage": "https://agents.moonpay.com",
6
6
  "publishConfig": {
@@ -26,6 +26,7 @@
26
26
  "@ledgerhq/device-signer-kit-ethereum": "1.11.1",
27
27
  "@ledgerhq/device-signer-kit-solana": "1.6.2",
28
28
  "@ledgerhq/device-transport-kit-node-hid": "1.0.0",
29
+ "@local-wallet-standard/node": "^0.2.22",
29
30
  "@modelcontextprotocol/sdk": "1.26.0",
30
31
  "@noble/hashes": "1.8.0",
31
32
  "@scure/bip32": "1.4.0",