@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.
- package/dist/chunk-27ZRH534.js +5 -0
- package/dist/chunk-SRMRNSIO.js +33 -0
- package/dist/chunk-XJWHTFJ5.js +2 -0
- package/dist/index.js +4 -4
- package/dist/{ledger-635GQYQD.js → ledger-I3BQGQNR.js} +1 -1
- package/dist/mcp-UB4MWWSW.js +2 -0
- package/dist/store-ZUZB4662.js +2 -0
- package/package.json +2 -1
- package/dist/chunk-DDBP77FH.js +0 -34
- package/dist/chunk-HJJKANGF.js +0 -2
- package/dist/chunk-WAYYQVLG.js +0 -3
- package/dist/mcp-JZ575BYJ.js +0 -2
- package/dist/store-XZXY6QMD.js +0 -2
|
@@ -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-
|
|
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
|
|
10
|
-
`)}function L(e){let t=null,n=
|
|
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
|
|
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{
|
|
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.
|
|
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",
|