@moonpay/cli 1.3.4 → 1.4.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.
@@ -1,5 +1,5 @@
1
1
  process.noDeprecation = true; import { createRequire as __createRequire } from "module"; const require = __createRequire(import.meta.url);
2
2
  import{a as z,b as Q,c as Z,d as Se,e as ee,g as te,h as re,l as ne}from"./chunk-XJWHTFJ5.js";import{a as we,b as H,d as xe,f as q}from"./chunk-LMDE72OE.js";var le={};xe(le,{ensureEncryptionKey:()=>U,getEncryptionKey:()=>T});import{execFileSync as b,execSync as Re}from"child_process";import{randomBytes as Pe}from"crypto";import{existsSync as $e,readFileSync as He,writeFileSync as De}from"fs";import{homedir as Be,platform as ce}from"os";import{join as Ue}from"path";function Le(e){try{b("security",["delete-generic-password","-s",m,"-a",x],{stdio:"ignore"})}catch{}b("security",["add-generic-password","-s",m,"-a",x,"-w",e],{stdio:"ignore"})}function Me(){try{return b("security",["find-generic-password","-s",m,"-a",x,"-w"],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()}catch{return null}}function Je(e){Re(`printf '%s' | secret-tool store --label="${m}" service "${m}" account "${x}"`,{input:e,stdio:["pipe","ignore","ignore"]})}function je(){try{return b("secret-tool",["lookup","service",m,"account",x],{encoding:"utf-8",stdio:["ignore","pipe","ignore"]}).trim()}catch{return null}}function Ve(e){p(),De(O,e,{encoding:"utf-8",mode:384})}function Ye(){try{return $e(O)&&He(O,"utf-8").trim()||null}catch{return null}}function Ge(e){try{let t=ce();return t==="darwin"?(Le(e),!0):t==="linux"?(Je(e),!0):!1}catch{return!1}}function Xe(){let e=ce();return e==="darwin"?Me():e==="linux"?je():null}function T(){let e=process.env.MOONPAY_ENCRYPTION_KEY;return e||(Xe()??Ye())}function U(){let e=T();if(e)return e;let t=Pe(32).toString("hex");return Ge(t)||(Ve(t),process.stderr.write("Note: Keychain unavailable. Encryption key stored in "+O+`
3
- `)),t}var m,x,O,L=H(()=>{"use strict";M();m="moonpay-cli",x="encryption-key",O=Ue(Be(),".config","moonpay",".encryption-key")});import{readFileSync as qe}from"fs";import{join as ze}from"path";import{homedir as Qe}from"os";function rt(){if(S!==void 0)return S;try{S=JSON.parse(qe(ze(Qe(),".config","moonpay","consent.json"),"utf-8")).agentId??null}catch{S=null}return S??null}function fe(){let e={"Content-Type":"application/json",[et]:Ze},t=rt();return t&&(e[tt]=t),e}var Ze,et,tt,S,ue=H(()=>{"use strict";Ze="1.3.4",et="X-CLI-Version",tt="X-Agent-Id"});import*as s from"fs";import*as de from"os";import*as E from"path";function p(){s.existsSync(C)||s.mkdirSync(C,{recursive:!0,mode:448})}function pe(e,t,r){let n=e+`.tmp.${process.pid}`;s.writeFileSync(n,t,{encoding:"utf-8",mode:r}),s.renameSync(n,e)}function ot(){p();try{let e=s.openSync(v,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY,384);s.writeSync(e,JSON.stringify({pid:process.pid,ts:Date.now()})),s.closeSync(e)}catch(e){if(e.code!=="EEXIST")throw e;try{let t=JSON.parse(s.readFileSync(v,"utf-8"));if(Date.now()-t.ts<nt)return null}catch{}try{s.unlinkSync(v)}catch{}try{let t=s.openSync(v,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY,384);s.writeSync(t,JSON.stringify({pid:process.pid,ts:Date.now()})),s.closeSync(t)}catch{return null}}return()=>{try{s.unlinkSync(v)}catch{}}}function ye(){if(!s.existsSync(J))return null;try{let e=JSON.parse(s.readFileSync(J,"utf-8"));return e.baseUrl?e:null}catch{return null}}function Xt(){let e=ye();return e||(it(j),j)}function I(){if(!s.existsSync(k))return null;let e=T();if(!e)return null;try{let t=JSON.parse(s.readFileSync(k,"utf-8")),r=z.parse(t),n=Z(r,e),o=JSON.parse(n);return!o.accessToken||!o.baseUrl?null:o}catch{return null}}function st(e){let t=U(),r=Q(JSON.stringify(e),t);p(),pe(k,JSON.stringify(r,null,2),384)}function it(e){p(),pe(J,JSON.stringify(e,null,2),384)}function qt(){s.existsSync(k)&&s.unlinkSync(k)}function zt(){let e=ye(),t=I();return e?.baseUrl??t?.baseUrl??j.baseUrl}async function at(e,t,r){let n=await fetch(`${e}/api/tools/${encodeURIComponent(t)}`,{method:"POST",signal:AbortSignal.timeout(15e3),headers:fe(),body:JSON.stringify(r)}),o=await n.json();if(!n.ok){let i=o;throw new Error(i?.error??`${t} failed (${n.status})`)}return o}async function ct(e){if(!e.refreshToken)throw new Error("No refresh token available");let t=ot();if(!t){await new Promise(n=>setTimeout(n,2e3));let r=I();if(r&&r.expiresAt>Date.now())return r;throw new Error("Token refresh failed (concurrent refresh in progress)")}try{let r=I();if(r&&r.expiresAt>Date.now()+6e4)return r;let n=await at(e.baseUrl,"refresh",{refreshToken:e.refreshToken}),o={accessToken:n.accessToken,refreshToken:n.refreshToken,expiresAt:n.expiresAt*1e3,baseUrl:e.baseUrl};return st(o),o}finally{t()}}async function Qt(){let e=I();if(!e)return null;if(Date.now()>=e.expiresAt-lt){if(e.refreshToken)try{return(await ct(e)).accessToken}catch{return null}return null}return e.accessToken}var C,J,k,v,j,nt,lt,M=H(()=>{"use strict";ee();L();ue();C=E.join(de.homedir(),".config","moonpay"),J=E.join(C,"config.json"),k=E.join(C,"credentials.json"),v=E.join(C,".credentials.lock"),j={baseUrl:"https://agents.moonpay.com"};nt=3e4;lt=300*1e3});import{existsSync as Y,readFileSync as me,writeFileSync as ft,renameSync as ge}from"fs";import{join as N}from"path";import{homedir as ut}from"os";import{randomBytes as dt}from"crypto";import*as a from"@local-wallet-standard/node";import he from"bs58";import{createHash as oe}from"crypto";import{HDKey as D}from"@scure/bip32";import{mnemonicToSeedSync as w}from"@scure/bip39";import{keccak_256 as B}from"@noble/hashes/sha3";import{derivePath as se}from"ed25519-hd-key";import*as ie from"bitcoinjs-lib";import ve from"ecpair";import*as _ from"tiny-secp256k1";import{Keypair as Ce}from"@solana/web3.js";import ke from"bs58";import{WalletContractV5R1 as Ee}from"@ton/ton";import{keyPairFromSeed as Ke}from"@ton/crypto";var We=ve(_);function ae(e,t,r=0){switch(t){case"solana":return Ae(e,r);case"ethereum":return _e(e,r);case"bitcoin":return Te(e,r);case"tron":return Ie(e,r);case"ton":return Fe(e,r)}}function Ae(e,t){let r=w(e),n=`m/44'/501'/${t}'/0'`,{key:o}=se(n,Buffer.from(r).toString("hex")),i=Ce.fromSeed(Uint8Array.from(o));return{privateKey:i.secretKey,address:i.publicKey.toBase58()}}function _e(e,t){let r=w(e),n=D.fromMasterSeed(r),o=`m/44'/60'/${t}'/0/0`,i=n.derive(o);if(!i.privateKey)throw new Error("Failed to derive EVM private key");let c=be(i.publicKey);return{privateKey:i.privateKey,address:c}}function be(e){let t=_.pointCompress(e,!1),n=B(t.slice(1)).slice(-20),o="0x"+Buffer.from(n).toString("hex");return Oe(o)}function Oe(e){let t=e.toLowerCase().replace("0x",""),r=Buffer.from(B(Buffer.from(t,"utf8"))).toString("hex"),n="0x";for(let o=0;o<t.length;o++)n+=parseInt(r[o],16)>=8?t[o].toUpperCase():t[o];return n}function Te(e,t){let r=w(e),n=D.fromMasterSeed(r),o=`m/84'/0'/${t}'/0/0`,i=n.derive(o);if(!i.privateKey)throw new Error("Failed to derive Bitcoin private key");let c=We.fromPrivateKey(Buffer.from(i.privateKey)),{address:y}=ie.payments.p2wpkh({pubkey:Buffer.from(c.publicKey)});if(!y)throw new Error("Failed to derive Bitcoin address");return{privateKey:i.privateKey,address:y}}function Ie(e,t){let r=w(e),n=D.fromMasterSeed(r),o=`m/44'/195'/${t}'/0/0`,i=n.derive(o);if(!i.privateKey)throw new Error("Failed to derive Tron private key");let c=Ne(i.publicKey);return{privateKey:i.privateKey,address:c}}function Ne(e){let t=_.pointCompress(e,!1),n=B(t.slice(1)).slice(-20),o=Buffer.concat([Buffer.from([65]),Buffer.from(n)]),i=oe("sha256").update(o).digest(),c=oe("sha256").update(i).digest(),y=Buffer.concat([o,c.slice(0,4)]);return ke.encode(y)}function Fe(e,t){let r=w(e),n=`m/44'/607'/${t}'/0'`,{key:o}=se(n,Buffer.from(r).toString("hex")),i=Ke(Buffer.from(o)),c=Ee.create({publicKey:Buffer.from(i.publicKey)});return{privateKey:i.secretKey,address:c.address.toString({bounceable:!1})}}M();var F=N(ut(),".config","moonpay"),V=N(F,"hardware-wallets.json");function f(){return F}function pt(e){let t={};for(let r of e){let n=re[r.chainId];n&&(t[n]=r.address)}return t}function g(e){return{name:e.name,type:"hd",addresses:pt(e.accounts),createdAt:e.createdAt}}function d(){if(!Y(V))return[];try{return(JSON.parse(me(V,"utf-8")).wallets??[]).map(t=>ne.parse(t))}catch{return[]}}function yt(e,t){p();let r=N(F,`.tmp.${dt(4).toString("hex")}`);ft(r,JSON.stringify(t,null,2),{mode:384}),ge(r,e)}function h(e){yt(V,{wallets:e})}var K=N(F,"wallets.json");function G(){if(Y(K)){process.stderr.write(`Migrating legacy wallets...
3
+ `)),t}var m,x,O,L=H(()=>{"use strict";M();m="moonpay-cli",x="encryption-key",O=Ue(Be(),".config","moonpay",".encryption-key")});import{readFileSync as qe}from"fs";import{join as ze}from"path";import{homedir as Qe}from"os";function rt(){if(S!==void 0)return S;try{S=JSON.parse(qe(ze(Qe(),".config","moonpay","consent.json"),"utf-8")).agentId??null}catch{S=null}return S??null}function fe(){let e={"Content-Type":"application/json",[et]:Ze},t=rt();return t&&(e[tt]=t),e}var Ze,et,tt,S,ue=H(()=>{"use strict";Ze="1.4.0",et="X-CLI-Version",tt="X-Agent-Id"});import*as s from"fs";import*as de from"os";import*as E from"path";function p(){s.existsSync(C)||s.mkdirSync(C,{recursive:!0,mode:448})}function pe(e,t,r){let n=e+`.tmp.${process.pid}`;s.writeFileSync(n,t,{encoding:"utf-8",mode:r}),s.renameSync(n,e)}function ot(){p();try{let e=s.openSync(v,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY,384);s.writeSync(e,JSON.stringify({pid:process.pid,ts:Date.now()})),s.closeSync(e)}catch(e){if(e.code!=="EEXIST")throw e;try{let t=JSON.parse(s.readFileSync(v,"utf-8"));if(Date.now()-t.ts<nt)return null}catch{}try{s.unlinkSync(v)}catch{}try{let t=s.openSync(v,s.constants.O_CREAT|s.constants.O_EXCL|s.constants.O_WRONLY,384);s.writeSync(t,JSON.stringify({pid:process.pid,ts:Date.now()})),s.closeSync(t)}catch{return null}}return()=>{try{s.unlinkSync(v)}catch{}}}function ye(){if(!s.existsSync(J))return null;try{let e=JSON.parse(s.readFileSync(J,"utf-8"));return e.baseUrl?e:null}catch{return null}}function Xt(){let e=ye();return e||(it(j),j)}function I(){if(!s.existsSync(k))return null;let e=T();if(!e)return null;try{let t=JSON.parse(s.readFileSync(k,"utf-8")),r=z.parse(t),n=Z(r,e),o=JSON.parse(n);return!o.accessToken||!o.baseUrl?null:o}catch{return null}}function st(e){let t=U(),r=Q(JSON.stringify(e),t);p(),pe(k,JSON.stringify(r,null,2),384)}function it(e){p(),pe(J,JSON.stringify(e,null,2),384)}function qt(){s.existsSync(k)&&s.unlinkSync(k)}function zt(){let e=ye(),t=I();return e?.baseUrl??t?.baseUrl??j.baseUrl}async function at(e,t,r){let n=await fetch(`${e}/api/tools/${encodeURIComponent(t)}`,{method:"POST",signal:AbortSignal.timeout(15e3),headers:fe(),body:JSON.stringify(r)}),o=await n.json();if(!n.ok){let i=o;throw new Error(i?.error??`${t} failed (${n.status})`)}return o}async function ct(e){if(!e.refreshToken)throw new Error("No refresh token available");let t=ot();if(!t){await new Promise(n=>setTimeout(n,2e3));let r=I();if(r&&r.expiresAt>Date.now())return r;throw new Error("Token refresh failed (concurrent refresh in progress)")}try{let r=I();if(r&&r.expiresAt>Date.now()+6e4)return r;let n=await at(e.baseUrl,"refresh",{refreshToken:e.refreshToken}),o={accessToken:n.accessToken,refreshToken:n.refreshToken,expiresAt:n.expiresAt*1e3,baseUrl:e.baseUrl};return st(o),o}finally{t()}}async function Qt(){let e=I();if(!e)return null;if(Date.now()>=e.expiresAt-lt){if(e.refreshToken)try{return(await ct(e)).accessToken}catch{return null}return null}return e.accessToken}var C,J,k,v,j,nt,lt,M=H(()=>{"use strict";ee();L();ue();C=E.join(de.homedir(),".config","moonpay"),J=E.join(C,"config.json"),k=E.join(C,"credentials.json"),v=E.join(C,".credentials.lock"),j={baseUrl:"https://agents.moonpay.com"};nt=3e4;lt=300*1e3});import{existsSync as Y,readFileSync as me,writeFileSync as ft,renameSync as ge}from"fs";import{join as N}from"path";import{homedir as ut}from"os";import{randomBytes as dt}from"crypto";import*as a from"@local-wallet-standard/node";import he from"bs58";import{createHash as oe}from"crypto";import{HDKey as D}from"@scure/bip32";import{mnemonicToSeedSync as w}from"@scure/bip39";import{keccak_256 as B}from"@noble/hashes/sha3";import{derivePath as se}from"ed25519-hd-key";import*as ie from"bitcoinjs-lib";import ve from"ecpair";import*as _ from"tiny-secp256k1";import{Keypair as Ce}from"@solana/web3.js";import ke from"bs58";import{WalletContractV5R1 as Ee}from"@ton/ton";import{keyPairFromSeed as Ke}from"@ton/crypto";var We=ve(_);function ae(e,t,r=0){switch(t){case"solana":return Ae(e,r);case"ethereum":return _e(e,r);case"bitcoin":return Te(e,r);case"tron":return Ie(e,r);case"ton":return Fe(e,r)}}function Ae(e,t){let r=w(e),n=`m/44'/501'/${t}'/0'`,{key:o}=se(n,Buffer.from(r).toString("hex")),i=Ce.fromSeed(Uint8Array.from(o));return{privateKey:i.secretKey,address:i.publicKey.toBase58()}}function _e(e,t){let r=w(e),n=D.fromMasterSeed(r),o=`m/44'/60'/${t}'/0/0`,i=n.derive(o);if(!i.privateKey)throw new Error("Failed to derive EVM private key");let c=be(i.publicKey);return{privateKey:i.privateKey,address:c}}function be(e){let t=_.pointCompress(e,!1),n=B(t.slice(1)).slice(-20),o="0x"+Buffer.from(n).toString("hex");return Oe(o)}function Oe(e){let t=e.toLowerCase().replace("0x",""),r=Buffer.from(B(Buffer.from(t,"utf8"))).toString("hex"),n="0x";for(let o=0;o<t.length;o++)n+=parseInt(r[o],16)>=8?t[o].toUpperCase():t[o];return n}function Te(e,t){let r=w(e),n=D.fromMasterSeed(r),o=`m/84'/0'/${t}'/0/0`,i=n.derive(o);if(!i.privateKey)throw new Error("Failed to derive Bitcoin private key");let c=We.fromPrivateKey(Buffer.from(i.privateKey)),{address:y}=ie.payments.p2wpkh({pubkey:Buffer.from(c.publicKey)});if(!y)throw new Error("Failed to derive Bitcoin address");return{privateKey:i.privateKey,address:y}}function Ie(e,t){let r=w(e),n=D.fromMasterSeed(r),o=`m/44'/195'/${t}'/0/0`,i=n.derive(o);if(!i.privateKey)throw new Error("Failed to derive Tron private key");let c=Ne(i.publicKey);return{privateKey:i.privateKey,address:c}}function Ne(e){let t=_.pointCompress(e,!1),n=B(t.slice(1)).slice(-20),o=Buffer.concat([Buffer.from([65]),Buffer.from(n)]),i=oe("sha256").update(o).digest(),c=oe("sha256").update(i).digest(),y=Buffer.concat([o,c.slice(0,4)]);return ke.encode(y)}function Fe(e,t){let r=w(e),n=`m/44'/607'/${t}'/0'`,{key:o}=se(n,Buffer.from(r).toString("hex")),i=Ke(Buffer.from(o)),c=Ee.create({publicKey:Buffer.from(i.publicKey)});return{privateKey:i.secretKey,address:c.address.toString({bounceable:!1})}}M();var F=N(ut(),".config","moonpay"),V=N(F,"hardware-wallets.json");function f(){return F}function pt(e){let t={};for(let r of e){let n=re[r.chainId];n&&(t[n]=r.address)}return t}function g(e){return{name:e.name,type:"hd",addresses:pt(e.accounts),createdAt:e.createdAt}}function d(){if(!Y(V))return[];try{return(JSON.parse(me(V,"utf-8")).wallets??[]).map(t=>ne.parse(t))}catch{return[]}}function yt(e,t){p();let r=N(F,`.tmp.${dt(4).toString("hex")}`);ft(r,JSON.stringify(t,null,2),{mode:384}),ge(r,e)}function h(e){yt(V,{wallets:e})}var K=N(F,"wallets.json");function G(){if(Y(K)){process.stderr.write(`Migrating legacy wallets...
4
4
  `);let{migrated:e,skipped:t}=mt();process.stderr.write(`Migrated ${e} wallet(s), skipped ${t}.
5
5
  `)}}function mt(){if(!Y(K))throw new Error("No legacy wallets.json found \u2014 nothing to migrate.");let{getEncryptionKey:e}=(L(),q(le)),{decrypt:t,encryptedFileSchema:r}=(ee(),q(Se)),n=e();if(!n)throw new Error("Encryption key not found. Set MOONPAY_ENCRYPTION_KEY or ensure OS keychain is accessible.");let o=JSON.parse(me(K,"utf-8")),i=r.parse(o),c=t(i,n),y=JSON.parse(c).wallets??[],R=f(),A=d(),X=0,P=0;for(let l of y){try{a.getWallet(l.name,R),P++;continue}catch{}if(A.some(u=>u.name===l.name)){P++;continue}if(l.type==="hardware")A.push({name:l.name,type:"hardware",device:l.device,addresses:l.addresses,createdAt:l.createdAt});else if(l.type==="hd"&&l.mnemonic)a.importWalletMnemonic(l.name,l.mnemonic,null,null,R);else if(l.type==="imported"&&l.privateKey){let u=l.privateKey;if(!/^[0-9a-fA-F]+$/.test(u)){let $=he.decode(u);u=Buffer.from($.length===64?$.slice(0,32):$).toString("hex")}a.importWalletPrivateKey(l.name,u,null,R,null,u,u)}X++}return A.length>0&&h(A),ge(K,K+".migrated"),{migrated:X,skipped:P}}function gt(e){G(),W(e);let t=a.createWallet(e,null,24,f());return g(t)}function ht(e,t){W(e);let r=a.importWalletMnemonic(e,t,null,null,f());return g(r)}function wt(e,t){return W(e),g(a.importWalletPrivateKey(e,t,null,f()))}function xt(){G();let e=[];try{e=a.listWallets(f())}catch{}return[...e.map(r=>g(r)),...d()]}function St(e){G();let t=f();try{let r=a.getWallet(e,t);return g(r)}catch{}try{for(let r of a.listWallets(t))for(let n of r.accounts)if(n.address===e)return g(r)}catch{}for(let r of d()){if(r.name===e)return r;for(let n of Object.values(r.addresses))if(n===e)return r}return null}function cr(e){let t=St(e);if(!t)throw new Error(`Wallet "${e}" not found`);return t}function vt(e){try{a.deleteWallet(e,f());return}catch{}let t=d(),r=t.findIndex(n=>n.name===e);if(r===-1)throw new Error(`Wallet "${e}" not found`);t.splice(r,1),h(t)}function lr(e,t){if(e===t)return;W(t);try{a.getWallet(e,f()),a.renameWallet(e,t,f());return}catch(o){if(o instanceof Error&&!o.message.includes("not found"))throw o}let r=d(),n=r.find(o=>o.name===e);if(!n)throw new Error(`Wallet "${e}" not found`);n.name=t,h(r)}function fr(e){return a.exportWallet(e,null,f())}function Ct(e){W(e.name);let t=d();t.push(e),h(t)}function ur(e,t){let r=d(),n=r.find(o=>o.name===e);if(!n)throw new Error(`Hardware wallet "${e}" not found`);n.addresses=t,h(r)}function dr(e,t,r){return a.signTransaction(e,t,r,null,null,f())}function pr(e,t,r,n){return a.signMessage(e,t,r,null,n??null,null,f())}function yr(e,t){if(e.type==="hardware")throw new Error(`Wallet "${e.name}" is a hardware wallet. Signing must happen on the device.`);let r=te[t],n=a.exportWallet(e.name,null,f());if(n.includes(" "))return ae(n,r);let o;if(n.startsWith("{")){let c=JSON.parse(n);o=r==="solana"||r==="ton"?c.ed25519:c.secp256k1}else o=n;let i=Uint8Array.from(Buffer.from(o,"hex"));if(r==="solana"&&i.length===32){let c=we("tweetnacl");i=Uint8Array.from(c.sign.keyPair.fromSeed(i).secretKey)}return{privateKey:i,address:e.addresses[r]??""}}var kt=xt,mr=vt;function Et(e){if(e.type==="hardware"){Ct(e);return}if(e.type==="hd"&&e.mnemonic){ht(e.name,e.mnemonic);return}if(e.type==="imported"&&e.privateKey){let t=e.privateKey;if(t.startsWith("0x"))t=t.slice(2);else if(!/^[0-9a-fA-F]+$/.test(t)){let r=he.decode(t);t=Buffer.from(r.length===64?r.slice(0,32):r).toString("hex")}wt(e.name,t);return}gt(e.name)}function gr(e){for(let t of e)Et(t)}function hr(e){let t=kt();e(t),h(t.filter(r=>r.type==="hardware"))}function W(e){try{throw a.getWallet(e,f()),new Error(`Wallet "${e}" already exists`)}catch(t){if(t instanceof Error&&t.message.includes("already exists"))throw t}if(d().some(t=>t.name===e))throw new Error(`Wallet "${e}" already exists`)}export{Ze as a,fe as b,ue as c,p as d,Xt as e,I as f,st as g,qt as h,zt as i,at as j,ct as k,Qt as l,M as m,f as n,G as o,mt as p,gt as q,ht as r,wt as s,xt as t,St as u,cr as v,vt as w,lr as x,fr as y,Ct as z,ur as A,dr as B,pr as C,yr as D,kt as E,mr as F,Et as G,gr as H,hr as I};
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
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-WR2UOGMQ.js";import{a as C,c as Y,i as A,m as H,u as J}from"./chunk-I24SY723.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(`
3
+ import{a as R,b as S,c as T,d as j,e as k}from"./chunk-ARDJJK6K.js";import{a as C,c as Y,i as A,m as H,u as J}from"./chunk-YCRMKSWE.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
 
@@ -14,5 +14,5 @@ ${N(a,t+1)}`).join(`
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 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-XM5L7QTR.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(`
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-DJS7SN6H.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,2 +1,2 @@
1
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-WR2UOGMQ.js";import{a as u,c as x,i as f,m as N}from"./chunk-I24SY723.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};
2
+ import{a as d,b as y,e as l}from"./chunk-ARDJJK6K.js";import{a as u,c as x,i as f,m as N}from"./chunk-YCRMKSWE.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};
@@ -1,2 +1,2 @@
1
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-I24SY723.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};
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-YCRMKSWE.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": "1.3.4",
3
+ "version": "1.4.0",
4
4
  "description": "MoonPay CLI — how agents move money",
5
5
  "homepage": "https://agents.moonpay.com",
6
6
  "publishConfig": {