agentcash 0.13.8 → 0.14.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/cjs/run-server.cjs +76 -19
- package/dist/esm/{add-skill-5O3R2PAD.js → add-skill-JHBOH5SG.js} +4 -3
- package/dist/esm/{add-skill-5O3R2PAD.js.map → add-skill-JHBOH5SG.js.map} +1 -1
- package/dist/esm/{bridge-3T5NWKDE.js → bridge-YU2PE54M.js} +4 -3
- package/dist/esm/{bridge-3T5NWKDE.js.map → bridge-YU2PE54M.js.map} +1 -1
- package/dist/esm/{chunk-THSTTUNV.js → chunk-6I5J7IHC.js} +2 -2
- package/dist/esm/{chunk-DBP743M5.js → chunk-7ZLVTQTS.js} +24 -6
- package/dist/esm/chunk-7ZLVTQTS.js.map +1 -0
- package/dist/esm/{chunk-QCP7Q6UF.js → chunk-BFOYXXLG.js} +2 -27
- package/dist/esm/chunk-BFOYXXLG.js.map +1 -0
- package/dist/esm/{chunk-54KBJ4F6.js → chunk-BNFMFAEF.js} +5 -5
- package/dist/esm/{chunk-UNG335FG.js → chunk-E52LAD7Z.js} +6 -4
- package/dist/esm/{chunk-UNG335FG.js.map → chunk-E52LAD7Z.js.map} +1 -1
- package/dist/esm/{chunk-2NMSPXMD.js → chunk-G5FHPXQL.js} +9 -7
- package/dist/esm/{chunk-2NMSPXMD.js.map → chunk-G5FHPXQL.js.map} +1 -1
- package/dist/esm/{chunk-NQ7OJNSO.js → chunk-KJCWPVQE.js} +5 -3
- package/dist/esm/{chunk-NQ7OJNSO.js.map → chunk-KJCWPVQE.js.map} +1 -1
- package/dist/esm/{chunk-CWU2QWNS.js → chunk-MSNAPI5G.js} +5 -3
- package/dist/esm/{chunk-CWU2QWNS.js.map → chunk-MSNAPI5G.js.map} +1 -1
- package/dist/esm/chunk-U6FRXL3X.js +28 -0
- package/dist/esm/chunk-U6FRXL3X.js.map +1 -0
- package/dist/esm/{chunk-OJGYNAKF.js → chunk-UCADMHNP.js} +2 -2
- package/dist/esm/{chunk-PZNRMIWW.js → chunk-V3HBA7NZ.js} +3 -3
- package/dist/esm/{chunk-TCXITLKU.js → chunk-XC5JT2NQ.js} +2 -2
- package/dist/esm/chunk-Y2J274RB.js +109 -0
- package/dist/esm/chunk-Y2J274RB.js.map +1 -0
- package/dist/esm/{chunk-FYEDHLYF.js → chunk-Y4BYJBYU.js} +5 -3
- package/dist/esm/{chunk-FYEDHLYF.js.map → chunk-Y4BYJBYU.js.map} +1 -1
- package/dist/esm/{chunk-63TCLGO6.js → chunk-YUPRVVFP.js} +6 -6
- package/dist/esm/{discover-PMVCPMAP.js → discover-654M2PZ3.js} +4 -3
- package/dist/esm/discover-654M2PZ3.js.map +1 -0
- package/dist/esm/{fetch-WACX4GKY.js → fetch-GPYZNSPB.js} +5 -4
- package/dist/esm/{fetch-WACX4GKY.js.map → fetch-GPYZNSPB.js.map} +1 -1
- package/dist/esm/{fund-QLGZGIUE.js → fund-HHL4QEU5.js} +5 -4
- package/dist/esm/{fund-QLGZGIUE.js.map → fund-HHL4QEU5.js.map} +1 -1
- package/dist/esm/index.js +24 -24
- package/dist/esm/{install-KTU4GOMT.js → install-D2IVOSIS.js} +8 -7
- package/dist/esm/{install-KTU4GOMT.js.map → install-D2IVOSIS.js.map} +1 -1
- package/dist/esm/{onboard-YNZPSS34.js → onboard-5SZ6ZCM5.js} +11 -10
- package/dist/esm/{onboard-YNZPSS34.js.map → onboard-5SZ6ZCM5.js.map} +1 -1
- package/dist/esm/{origins-UCEONL2Q.js → origins-JAC2K5A4.js} +4 -3
- package/dist/esm/{origins-UCEONL2Q.js.map → origins-JAC2K5A4.js.map} +1 -1
- package/dist/esm/{register-UN5RG5QY.js → register-AD43YD5O.js} +5 -4
- package/dist/esm/{register-UN5RG5QY.js.map → register-AD43YD5O.js.map} +1 -1
- package/dist/esm/{report-error-PIRP6TAE.js → report-error-V2J7LNUZ.js} +5 -4
- package/dist/esm/{report-error-PIRP6TAE.js.map → report-error-V2J7LNUZ.js.map} +1 -1
- package/dist/esm/{search-FDAGE4G3.js → search-WV2FO7OG.js} +6 -5
- package/dist/esm/{search-FDAGE4G3.js.map → search-WV2FO7OG.js.map} +1 -1
- package/dist/esm/{server-RHNWYLER.js → server-ADTFQX5M.js} +20 -16
- package/dist/esm/server-ADTFQX5M.js.map +1 -0
- package/dist/esm/{server-PEG4DEHG.js → server-RHVPZZ4R.js} +2 -2
- package/dist/esm/{try-2JMNINOB.js → try-36SR5JEG.js} +7 -6
- package/dist/esm/try-36SR5JEG.js.map +1 -0
- package/dist/esm/{wallet-IWRIAD6V.js → wallet-QOS3FPSF.js} +7 -6
- package/dist/esm/{wallet-IWRIAD6V.js.map → wallet-QOS3FPSF.js.map} +1 -1
- package/package.json +3 -3
- package/dist/esm/chunk-CR6PFCYR.js +0 -49
- package/dist/esm/chunk-CR6PFCYR.js.map +0 -1
- package/dist/esm/chunk-DBP743M5.js.map +0 -1
- package/dist/esm/chunk-QCP7Q6UF.js.map +0 -1
- package/dist/esm/discover-PMVCPMAP.js.map +0 -1
- package/dist/esm/server-RHNWYLER.js.map +0 -1
- package/dist/esm/try-2JMNINOB.js.map +0 -1
- /package/dist/esm/{chunk-THSTTUNV.js.map → chunk-6I5J7IHC.js.map} +0 -0
- /package/dist/esm/{chunk-54KBJ4F6.js.map → chunk-BNFMFAEF.js.map} +0 -0
- /package/dist/esm/{chunk-OJGYNAKF.js.map → chunk-UCADMHNP.js.map} +0 -0
- /package/dist/esm/{chunk-PZNRMIWW.js.map → chunk-V3HBA7NZ.js.map} +0 -0
- /package/dist/esm/{chunk-TCXITLKU.js.map → chunk-XC5JT2NQ.js.map} +0 -0
- /package/dist/esm/{chunk-63TCLGO6.js.map → chunk-YUPRVVFP.js.map} +0 -0
- /package/dist/esm/{server-PEG4DEHG.js.map → server-RHVPZZ4R.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/operations/bridge.ts","../../src/shared/network.ts","../../../../internal/bridge/src/quote.ts","../../../../internal/bridge/src/client.ts","../../../../internal/bridge/src/execute.ts","../../../../internal/bridge/src/relay-svm-wallet-adapter.ts","../../src/shared/neverthrow/bridge/index.ts"],"sourcesContent":["import z from 'zod';\n\nimport { createWalletClient, http } from 'viem';\n\nimport { EVM_CONFIGS, Network, networkSchema } from '@agentcash/networks';\n\nimport { toTypedNetworkAddress } from '@/shared/network';\nimport { TOOL_PARAMS } from '@/shared/descriptions';\nimport {\n safeExecuteQuote,\n safeExecuteSolana,\n safeGetBridgeDepositQuote,\n} from '@/shared/neverthrow/bridge';\nimport { safeFetchJson } from '@/shared/neverthrow/fetch';\nimport { getBaseUrl } from '@/shared/utils';\n\nimport type { Wallets } from '@/wallet';\nimport type { Execute } from '@agentcash/bridge';\nimport type { GlobalFlags } from '@/types';\n\nexport const bridgeSchema = z\n .object({\n from: networkSchema.describe(TOOL_PARAMS.bridge.from),\n to: networkSchema.describe(TOOL_PARAMS.bridge.to),\n amount: z.number().positive().describe(TOOL_PARAMS.bridge.amount),\n })\n .refine(({ from, to }) => from !== to, {\n message: 'From and to networks cannot be the same',\n });\n\nexport type BridgeInput = z.input<typeof bridgeSchema>;\n\nexport const bridge = async (\n args: GlobalFlags<z.infer<typeof bridgeSchema>>,\n wallets: Wallets\n) => {\n const { from, to, amount } = args;\n\n if (from === Network.SOLANA) {\n const request = new Request(`${getBaseUrl(args.dev)}/api/bridge/solana`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n fromAddress: wallets.svm.address,\n to: toTypedNetworkAddress(to, wallets),\n amount,\n }),\n });\n const response = await safeFetchJson(\n 'bridge',\n request,\n z.object({\n success: z.literal(true),\n partiallySignedTransaction: z.string(),\n quote: z.custom<Execute>(),\n })\n );\n\n if (response.isErr()) {\n return response;\n }\n\n const { partiallySignedTransaction, quote } = response.value;\n\n const executeResult = await safeExecuteSolana('bridge', {\n quote,\n signer: wallets.svm,\n partiallySignedTransaction,\n });\n\n return executeResult.map(\n result => result.data.details ?? { success: true }\n );\n } else {\n const quote = await safeGetBridgeDepositQuote('bridge', {\n from: toTypedNetworkAddress(from, wallets),\n to: toTypedNetworkAddress(to, wallets),\n amount,\n });\n\n if (quote.isErr()) {\n return quote;\n }\n\n const executeResult = await safeExecuteQuote(\n 'bridge',\n quote.value,\n createWalletClient({\n account: wallets.evm,\n chain: EVM_CONFIGS[from].chain,\n transport: http(\n from === Network.TEMPO\n ? 'https://eng:acard-melody-fashion-finish@rpc.mainnet.tempo.xyz'\n : undefined\n ),\n })\n );\n\n return executeResult.map(\n result => result.data.details ?? { success: true }\n );\n }\n};\n","import { Network } from '@agentcash/networks';\n\nimport type { TypedNetworkAddress } from '@agentcash/networks';\nimport type { Wallets } from '@/wallet';\n\nexport const toTypedNetworkAddress = (\n network: Network,\n wallets: Wallets\n): TypedNetworkAddress => {\n if (network === Network.SOLANA) {\n return {\n address: wallets.svm.address,\n network: Network.SOLANA,\n };\n }\n return {\n address: wallets.evm.address,\n network: network,\n };\n};\n","import {\n Network,\n solanaAddressSchema,\n typedAddressSchema,\n usdc,\n} from '@agentcash/networks';\nimport z from 'zod';\n\nimport { relayClient, relayChainId } from './client';\n\nexport const getBridgeDepositQuoteSchema = z.object({\n from: typedAddressSchema,\n to: typedAddressSchema,\n amount: z.number(),\n depositFeePayer: solanaAddressSchema.optional(),\n});\n\nexport const getBridgeDepositQuote = async (\n input: z.input<typeof getBridgeDepositQuoteSchema>\n) => {\n const parseResult = getBridgeDepositQuoteSchema.safeParse(input);\n if (!parseResult.success) {\n throw new Error('Invalid input');\n }\n\n const { from, to, amount, depositFeePayer } = parseResult.data;\n\n const fromCurrency = usdc(from.network);\n const toCurrency = usdc(to.network);\n\n return await relayClient.actions.getQuote({\n chainId: relayChainId(from.network),\n toChainId: relayChainId(to.network),\n currency: fromCurrency.address,\n toCurrency: toCurrency.address,\n tradeType: 'EXACT_INPUT',\n user: from.address,\n recipient: to.address,\n amount: (amount * 10 ** fromCurrency.decimals).toString(),\n options: {\n refundTo: from.address,\n depositFeePayer:\n from.network === Network.SOLANA ? depositFeePayer : undefined,\n usePermit: from.network !== Network.SOLANA,\n },\n });\n};\n","import {\n createClient,\n convertViemChainToRelayChain,\n MAINNET_RELAY_API,\n} from '@relayprotocol/relay-sdk';\n\nimport { Network, chainId, EVM_CONFIGS } from '@agentcash/networks';\n\nimport type { RelayChain } from '@relayprotocol/relay-sdk';\n\nexport const SOLANA_RELAY_CHAIN: RelayChain = {\n id: 792703809,\n name: 'solana',\n displayName: 'Solana',\n httpRpcUrl: 'https://api.mainnet-beta.solana.com',\n wsRpcUrl: '',\n explorerUrl: 'https://solscan.io',\n depositEnabled: true,\n tokenSupport: 'All',\n currency: {\n id: 'sol',\n symbol: 'SOL',\n name: 'Solana',\n address: '11111111111111111111111111111111',\n decimals: 9,\n supportsBridging: true,\n },\n featuredTokens: [\n {\n id: 'sol',\n symbol: 'SOL',\n name: 'Solana',\n address: '11111111111111111111111111111111',\n decimals: 9,\n supportsBridging: true,\n metadata: {\n logoURI:\n 'https://upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png',\n },\n },\n {\n id: 'usdc',\n symbol: 'USDC',\n name: 'USD Coin',\n address: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n decimals: 6,\n supportsBridging: true,\n metadata: {\n logoURI:\n 'https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694',\n },\n },\n {\n id: 'usdt',\n symbol: 'USDT',\n name: 'USDT',\n address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',\n decimals: 6,\n supportsBridging: true,\n metadata: {\n logoURI:\n 'https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661',\n },\n },\n ],\n erc20Currencies: [\n {\n id: 'pengu',\n symbol: 'PENGU',\n name: 'Pudgy Penguins',\n address: '2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv',\n decimals: 6,\n supportsBridging: true,\n withdrawalFee: 25,\n depositFee: 0,\n surgeEnabled: false,\n },\n {\n id: 'usdc',\n symbol: 'USDC',\n name: 'USD Coin',\n address: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n decimals: 6,\n supportsBridging: true,\n supportsPermit: true,\n withdrawalFee: 2.25,\n depositFee: 2,\n surgeEnabled: false,\n },\n {\n id: 'usdt',\n symbol: 'USDT',\n name: 'USDT',\n address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',\n decimals: 6,\n supportsBridging: true,\n withdrawalFee: 5,\n depositFee: 2,\n surgeEnabled: false,\n },\n {\n id: 'cash',\n symbol: 'CASH',\n name: 'CASH',\n address: 'CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH',\n decimals: 6,\n supportsBridging: true,\n withdrawalFee: 25,\n depositFee: 0,\n surgeEnabled: false,\n },\n {\n id: 'pyusd',\n symbol: 'PYUSD',\n name: 'PayPal USD',\n address: '2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo',\n decimals: 6,\n supportsBridging: true,\n withdrawalFee: 25,\n depositFee: 0,\n surgeEnabled: false,\n },\n ],\n solverCurrencies: [\n {\n id: 'pengu',\n symbol: 'PENGU',\n name: 'Pudgy Penguins',\n address: '2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv',\n decimals: 6,\n },\n {\n id: 'usdc',\n symbol: 'USDC',\n name: 'USD Coin',\n address: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n decimals: 6,\n },\n {\n id: 'usdt',\n symbol: 'USDT',\n name: 'USDT',\n address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',\n decimals: 6,\n },\n {\n id: 'cash',\n symbol: 'CASH',\n name: 'CASH',\n address: 'CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH',\n decimals: 6,\n },\n {\n id: 'pyusd',\n symbol: 'PYUSD',\n name: 'PayPal USD',\n address: '2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo',\n decimals: 6,\n },\n {\n id: 'sol',\n symbol: 'SOL',\n name: 'Solana',\n address: '11111111111111111111111111111111',\n decimals: 9,\n },\n ],\n iconUrl: 'https://assets.relay.link/icons/792703809/light.png',\n vmType: 'svm',\n baseChainId: 1,\n tags: [],\n protocol: {\n v2: {\n chainId: 'solana',\n depository: '99vQwtBwYtrqqD9YSXbdum3KBdxPAVxYTaQ3cfnJSrN2',\n },\n },\n};\n\nexport const relayChainId = (network: Network) => {\n switch (network) {\n case Network.BASE:\n case Network.TEMPO:\n return chainId(network);\n case Network.SOLANA:\n return SOLANA_RELAY_CHAIN.id;\n }\n};\n\nexport const relayClient = createClient({\n baseApiUrl: MAINNET_RELAY_API,\n source: 'https://agentcash.dev',\n chains: [\n ...Object.values(EVM_CONFIGS).map(config =>\n convertViemChainToRelayChain(config.chain)\n ),\n SOLANA_RELAY_CHAIN,\n ],\n});\n","import { adaptViemWallet } from '@relayprotocol/relay-sdk';\n\nimport { relayClient } from './client';\nimport type { AdaptSolanaKitWalletParams } from './relay-svm-wallet-adapter';\nimport { adaptSolanaKitWallet } from './relay-svm-wallet-adapter';\n\nimport type { WalletClient } from 'viem';\nimport type { Execute } from '@relayprotocol/relay-sdk';\n\nexport const executeQuote = async (quote: Execute, account: WalletClient) => {\n return await relayClient.actions.execute({\n wallet: adaptViemWallet(account),\n quote,\n });\n};\n\nexport interface ExecuteSolanaParams extends AdaptSolanaKitWalletParams {\n quote: Execute;\n}\n\nexport const executeSolana = async ({\n quote,\n ...rest\n}: ExecuteSolanaParams) => {\n return await relayClient.actions.execute({\n wallet: adaptSolanaKitWallet(rest),\n quote,\n });\n};\n","import {\n assertIsSendableTransaction,\n assertIsTransactionWithinSizeLimit,\n createSolanaRpc,\n getBase64EncodedWireTransaction,\n getCompiledTransactionMessageDecoder,\n getSignatureFromTransaction,\n getTransactionDecoder,\n getTransactionLifetimeConstraintFromCompiledTransactionMessage,\n isTransactionModifyingSigner,\n isTransactionPartialSigner,\n isTransactionSendingSigner,\n} from '@solana/kit';\nimport { LogLevel, getClient } from '@relayprotocol/relay-sdk';\n\nimport { SOLANA_RELAY_CHAIN } from './client';\n\nimport type { AdaptedWallet } from '@relayprotocol/relay-sdk';\nimport type {\n ClusterUrl,\n Signature,\n Transaction,\n TransactionSigner,\n TransactionWithLifetime,\n TransactionWithinSizeLimit,\n} from '@solana/kit';\n\nconst BASE58_SIGNATURE_REGEX = /^[1-9A-HJ-NP-Za-km-z]+$/;\nconst DEFAULT_CONFIRM_TIMEOUT_MS = 120_000;\nconst DEFAULT_CONFIRM_POLL_MS = 2_000;\n\nexport interface AdaptSolanaKitWalletParams {\n signer: TransactionSigner;\n partiallySignedTransaction: string;\n rpcUrl?: ClusterUrl;\n}\n\ntype SignableTransaction = Transaction &\n TransactionWithLifetime &\n TransactionWithinSizeLimit;\n\nconst assertBase58TransactionSignature = (signature: string | undefined) => {\n if (\n typeof signature !== 'string' ||\n signature.length === 0 ||\n !BASE58_SIGNATURE_REGEX.test(signature)\n ) {\n throw new Error('Invalid Solana signature: expected base58.');\n }\n};\n\nconst sleep = async (ms: number) =>\n await new Promise(resolve => setTimeout(resolve, ms));\n\nasync function decodePartiallySignedTransaction(\n partiallySignedTransaction: string\n): Promise<SignableTransaction> {\n const decodedTransaction = getTransactionDecoder().decode(\n Uint8Array.from(Buffer.from(partiallySignedTransaction, 'base64'))\n );\n const compiledTransactionMessage =\n getCompiledTransactionMessageDecoder().decode(\n decodedTransaction.messageBytes\n );\n const lifetimeConstraint =\n await getTransactionLifetimeConstraintFromCompiledTransactionMessage(\n compiledTransactionMessage\n );\n const transactionWithLifetime = {\n ...decodedTransaction,\n lifetimeConstraint,\n };\n\n assertIsTransactionWithinSizeLimit(transactionWithLifetime);\n\n return transactionWithLifetime;\n}\n\nasync function signTransactionWithSigner(\n transaction: SignableTransaction,\n signer: TransactionSigner\n): Promise<SignableTransaction> {\n if (isTransactionModifyingSigner(signer)) {\n const [signedTransaction] = await signer.modifyAndSignTransactions([\n transaction,\n ]);\n\n if (!signedTransaction) {\n throw new Error('Modifying signer did not return a signed transaction');\n }\n\n return signedTransaction;\n }\n\n if (isTransactionPartialSigner(signer)) {\n const [signatureDictionary] = await signer.signTransactions([transaction]);\n\n if (!signatureDictionary) {\n throw new Error('Transaction signer did not return signatures');\n }\n\n return {\n ...transaction,\n signatures: Object.freeze({\n ...transaction.signatures,\n ...signatureDictionary,\n }),\n };\n }\n\n if (isTransactionSendingSigner(signer)) {\n throw new Error(\n 'TransactionSendingSigner is not supported by Relay Solana adapter'\n );\n }\n\n throw new Error(\n 'Unsupported Solana transaction signer provided to Relay adapter'\n );\n}\n\nexport const adaptSolanaKitWallet = ({\n rpcUrl = SOLANA_RELAY_CHAIN.httpRpcUrl as ClusterUrl,\n signer,\n partiallySignedTransaction,\n}: AdaptSolanaKitWalletParams): AdaptedWallet => {\n const rpc = createSolanaRpc(rpcUrl);\n return {\n vmType: 'svm',\n getChainId: () => Promise.resolve(SOLANA_RELAY_CHAIN.id),\n address: () => Promise.resolve(signer.address),\n handleSignMessageStep: () => {\n throw new Error('Message signing not implemented for Solana');\n },\n handleSendTransactionStep: async () => {\n const client = getClient();\n const decodedTransaction = await decodePartiallySignedTransaction(\n partiallySignedTransaction\n );\n const signedTransaction = await signTransactionWithSigner(\n decodedTransaction,\n signer\n );\n\n assertIsSendableTransaction(signedTransaction);\n const wireTransaction =\n getBase64EncodedWireTransaction(signedTransaction);\n const signature = getSignatureFromTransaction(signedTransaction);\n\n await rpc\n .sendTransaction(wireTransaction, {\n encoding: 'base64',\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n .send();\n\n assertBase58TransactionSignature(signature);\n\n client.log(\n ['Transaction Signature obtained', { signature }],\n LogLevel.Verbose\n );\n\n return signature;\n },\n handleConfirmTransactionStep: async txHash => {\n assertBase58TransactionSignature(txHash);\n\n const deadline = Date.now() + DEFAULT_CONFIRM_TIMEOUT_MS;\n\n while (Date.now() < deadline) {\n const { value: statuses } = await rpc\n .getSignatureStatuses([txHash as Signature])\n .send();\n\n const status = statuses[0];\n\n if (status) {\n if (status.err) {\n throw new Error(\n `Transaction failed: ${JSON.stringify(status.err)}`\n );\n }\n\n if (\n status.confirmationStatus === 'confirmed' ||\n status.confirmationStatus === 'finalized'\n ) {\n return {\n blockHash: status.slot.toString(),\n blockNumber: Number(status.slot),\n txHash,\n };\n }\n }\n\n await sleep(DEFAULT_CONFIRM_POLL_MS);\n }\n\n throw new Error(\n `Transaction not confirmed within ${DEFAULT_CONFIRM_TIMEOUT_MS}ms: ${txHash}`\n );\n },\n switchChain: () => {\n throw new Error('Switching chains not implemented for Solana');\n },\n };\n};\n","import {\n executeQuote,\n executeSolana,\n getBridgeDepositQuote,\n} from '@agentcash/bridge';\nimport { err, resultFromPromise } from '@agentcash/neverthrow';\n\nimport type { BaseBridgeError } from './types';\n\nconst errorType = 'bridge';\n\nexport const bridgeErr = (surface: string, error: BaseBridgeError) =>\n err(errorType, surface, error);\n\nconst bridgeResultFromPromise = <T>(\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => BaseBridgeError\n) => resultFromPromise(errorType, surface, promise, error);\n\nconst getErrorMessage = (error: unknown, fallback: string) => {\n if (error instanceof Error && error.message) {\n return error.message;\n }\n\n if (typeof error === 'string' && error.length > 0) {\n return error;\n }\n\n return fallback;\n};\n\nexport const safeGetBridgeDepositQuote = (\n surface: string,\n ...args: Parameters<typeof getBridgeDepositQuote>\n) =>\n bridgeResultFromPromise(surface, getBridgeDepositQuote(...args), error => {\n const errorMessage = getErrorMessage(\n error,\n 'Failed to get bridge deposit quote'\n );\n\n return {\n cause: 'get_bridge_deposit_quote',\n errorMessage,\n message: `Failed to get bridge deposit quote: ${errorMessage}`,\n };\n });\n\nexport const safeExecuteQuote = (\n surface: string,\n ...args: Parameters<typeof executeQuote>\n) =>\n bridgeResultFromPromise(surface, executeQuote(...args), error => {\n const errorMessage = getErrorMessage(error, 'Failed to execute quote');\n\n return {\n cause: 'execute_quote',\n errorMessage,\n message: `Failed to execute quote: ${errorMessage}`,\n };\n });\n\nexport const safeExecuteSolana = (\n surface: string,\n ...args: Parameters<typeof executeSolana>\n) =>\n bridgeResultFromPromise(surface, executeSolana(...args), error => {\n const errorMessage = getErrorMessage(\n error,\n 'Failed to execute Solana bridge transaction'\n );\n\n return {\n cause: 'execute_solana',\n errorMessage,\n message: `Failed to execute Solana bridge transaction: ${errorMessage}`,\n };\n });\n"],"mappings":"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","names":["z","z"]}
|
|
1
|
+
{"version":3,"sources":["../../src/operations/bridge.ts","../../src/shared/network.ts","../../../../internal/bridge/src/quote.ts","../../../../internal/bridge/src/client.ts","../../../../internal/bridge/src/execute.ts","../../../../internal/bridge/src/relay-svm-wallet-adapter.ts","../../src/shared/neverthrow/bridge/index.ts"],"sourcesContent":["import z from 'zod';\n\nimport { createWalletClient, http } from 'viem';\n\nimport { EVM_CONFIGS, Network, networkSchema } from '@agentcash/networks';\n\nimport { toTypedNetworkAddress } from '@/shared/network';\nimport { TOOL_PARAMS } from '@/shared/descriptions';\nimport {\n safeExecuteQuote,\n safeExecuteSolana,\n safeGetBridgeDepositQuote,\n} from '@/shared/neverthrow/bridge';\nimport { safeFetchJson } from '@/shared/neverthrow/fetch';\nimport { getBaseUrl } from '@/shared/utils';\n\nimport type { Wallets } from '@/wallet';\nimport type { Execute } from '@agentcash/bridge';\nimport type { GlobalFlags } from '@/types';\n\nexport const bridgeSchema = z\n .object({\n from: networkSchema.describe(TOOL_PARAMS.bridge.from),\n to: networkSchema.describe(TOOL_PARAMS.bridge.to),\n amount: z.number().positive().describe(TOOL_PARAMS.bridge.amount),\n })\n .refine(({ from, to }) => from !== to, {\n message: 'From and to networks cannot be the same',\n });\n\nexport type BridgeInput = z.input<typeof bridgeSchema>;\n\nexport const bridge = async (\n args: GlobalFlags<z.infer<typeof bridgeSchema>>,\n wallets: Wallets\n) => {\n const { from, to, amount } = args;\n\n if (from === Network.SOLANA) {\n const request = new Request(`${getBaseUrl(args.dev)}/api/bridge/solana`, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n },\n body: JSON.stringify({\n fromAddress: wallets.svm.address,\n to: toTypedNetworkAddress(to, wallets),\n amount,\n }),\n });\n const response = await safeFetchJson(\n 'bridge',\n request,\n z.object({\n success: z.literal(true),\n partiallySignedTransaction: z.string(),\n quote: z.custom<Execute>(),\n })\n );\n\n if (response.isErr()) {\n return response;\n }\n\n const { partiallySignedTransaction, quote } = response.value;\n\n const executeResult = await safeExecuteSolana('bridge', {\n quote,\n signer: wallets.svm,\n partiallySignedTransaction,\n });\n\n return executeResult.map(\n result => result.data.details ?? { success: true }\n );\n } else {\n const quote = await safeGetBridgeDepositQuote('bridge', {\n from: toTypedNetworkAddress(from, wallets),\n to: toTypedNetworkAddress(to, wallets),\n amount,\n });\n\n if (quote.isErr()) {\n return quote;\n }\n\n const executeResult = await safeExecuteQuote(\n 'bridge',\n quote.value,\n createWalletClient({\n account: wallets.evm,\n chain: EVM_CONFIGS[from].chain,\n transport: http(\n from === Network.TEMPO\n ? 'https://eng:acard-melody-fashion-finish@rpc.mainnet.tempo.xyz'\n : undefined\n ),\n })\n );\n\n return executeResult.map(\n result => result.data.details ?? { success: true }\n );\n }\n};\n","import { Network } from '@agentcash/networks';\n\nimport type { TypedNetworkAddress } from '@agentcash/networks';\nimport type { Wallets } from '@/wallet';\n\nexport const toTypedNetworkAddress = (\n network: Network,\n wallets: Wallets\n): TypedNetworkAddress => {\n if (network === Network.SOLANA) {\n return {\n address: wallets.svm.address,\n network: Network.SOLANA,\n };\n }\n return {\n address: wallets.evm.address,\n network: network,\n };\n};\n","import {\n Network,\n solanaAddressSchema,\n typedAddressSchema,\n usdc,\n} from '@agentcash/networks';\nimport z from 'zod';\n\nimport { relayClient, relayChainId } from './client';\n\nexport const getBridgeDepositQuoteSchema = z.object({\n from: typedAddressSchema,\n to: typedAddressSchema,\n amount: z.number(),\n depositFeePayer: solanaAddressSchema.optional(),\n});\n\nexport const getBridgeDepositQuote = async (\n input: z.input<typeof getBridgeDepositQuoteSchema>\n) => {\n const parseResult = getBridgeDepositQuoteSchema.safeParse(input);\n if (!parseResult.success) {\n throw new Error('Invalid input');\n }\n\n const { from, to, amount, depositFeePayer } = parseResult.data;\n\n const fromCurrency = usdc(from.network);\n const toCurrency = usdc(to.network);\n\n return await relayClient.actions.getQuote({\n chainId: relayChainId(from.network),\n toChainId: relayChainId(to.network),\n currency: fromCurrency.address,\n toCurrency: toCurrency.address,\n tradeType: 'EXACT_INPUT',\n user: from.address,\n recipient: to.address,\n amount: (amount * 10 ** fromCurrency.decimals).toString(),\n options: {\n refundTo: from.address,\n depositFeePayer:\n from.network === Network.SOLANA ? depositFeePayer : undefined,\n usePermit: from.network !== Network.SOLANA,\n },\n });\n};\n","import {\n createClient,\n convertViemChainToRelayChain,\n MAINNET_RELAY_API,\n} from '@relayprotocol/relay-sdk';\n\nimport { Network, chainId, EVM_CONFIGS } from '@agentcash/networks';\n\nimport type { RelayChain } from '@relayprotocol/relay-sdk';\n\nexport const SOLANA_RELAY_CHAIN: RelayChain = {\n id: 792703809,\n name: 'solana',\n displayName: 'Solana',\n httpRpcUrl: 'https://api.mainnet-beta.solana.com',\n wsRpcUrl: '',\n explorerUrl: 'https://solscan.io',\n depositEnabled: true,\n tokenSupport: 'All',\n currency: {\n id: 'sol',\n symbol: 'SOL',\n name: 'Solana',\n address: '11111111111111111111111111111111',\n decimals: 9,\n supportsBridging: true,\n },\n featuredTokens: [\n {\n id: 'sol',\n symbol: 'SOL',\n name: 'Solana',\n address: '11111111111111111111111111111111',\n decimals: 9,\n supportsBridging: true,\n metadata: {\n logoURI:\n 'https://upload.wikimedia.org/wikipedia/en/b/b9/Solana_logo.png',\n },\n },\n {\n id: 'usdc',\n symbol: 'USDC',\n name: 'USD Coin',\n address: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n decimals: 6,\n supportsBridging: true,\n metadata: {\n logoURI:\n 'https://coin-images.coingecko.com/coins/images/6319/large/usdc.png?1696506694',\n },\n },\n {\n id: 'usdt',\n symbol: 'USDT',\n name: 'USDT',\n address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',\n decimals: 6,\n supportsBridging: true,\n metadata: {\n logoURI:\n 'https://coin-images.coingecko.com/coins/images/325/large/Tether.png?1696501661',\n },\n },\n ],\n erc20Currencies: [\n {\n id: 'pengu',\n symbol: 'PENGU',\n name: 'Pudgy Penguins',\n address: '2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv',\n decimals: 6,\n supportsBridging: true,\n withdrawalFee: 25,\n depositFee: 0,\n surgeEnabled: false,\n },\n {\n id: 'usdc',\n symbol: 'USDC',\n name: 'USD Coin',\n address: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n decimals: 6,\n supportsBridging: true,\n supportsPermit: true,\n withdrawalFee: 2.25,\n depositFee: 2,\n surgeEnabled: false,\n },\n {\n id: 'usdt',\n symbol: 'USDT',\n name: 'USDT',\n address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',\n decimals: 6,\n supportsBridging: true,\n withdrawalFee: 5,\n depositFee: 2,\n surgeEnabled: false,\n },\n {\n id: 'cash',\n symbol: 'CASH',\n name: 'CASH',\n address: 'CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH',\n decimals: 6,\n supportsBridging: true,\n withdrawalFee: 25,\n depositFee: 0,\n surgeEnabled: false,\n },\n {\n id: 'pyusd',\n symbol: 'PYUSD',\n name: 'PayPal USD',\n address: '2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo',\n decimals: 6,\n supportsBridging: true,\n withdrawalFee: 25,\n depositFee: 0,\n surgeEnabled: false,\n },\n ],\n solverCurrencies: [\n {\n id: 'pengu',\n symbol: 'PENGU',\n name: 'Pudgy Penguins',\n address: '2zMMhcVQEXDtdE6vsFS7S7D5oUodfJHE8vd1gnBouauv',\n decimals: 6,\n },\n {\n id: 'usdc',\n symbol: 'USDC',\n name: 'USD Coin',\n address: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',\n decimals: 6,\n },\n {\n id: 'usdt',\n symbol: 'USDT',\n name: 'USDT',\n address: 'Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB',\n decimals: 6,\n },\n {\n id: 'cash',\n symbol: 'CASH',\n name: 'CASH',\n address: 'CASHx9KJUStyftLFWGvEVf59SGeG9sh5FfcnZMVPCASH',\n decimals: 6,\n },\n {\n id: 'pyusd',\n symbol: 'PYUSD',\n name: 'PayPal USD',\n address: '2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo',\n decimals: 6,\n },\n {\n id: 'sol',\n symbol: 'SOL',\n name: 'Solana',\n address: '11111111111111111111111111111111',\n decimals: 9,\n },\n ],\n iconUrl: 'https://assets.relay.link/icons/792703809/light.png',\n vmType: 'svm',\n baseChainId: 1,\n tags: [],\n protocol: {\n v2: {\n chainId: 'solana',\n depository: '99vQwtBwYtrqqD9YSXbdum3KBdxPAVxYTaQ3cfnJSrN2',\n },\n },\n};\n\nexport const relayChainId = (network: Network) => {\n switch (network) {\n case Network.BASE:\n case Network.TEMPO:\n return chainId(network);\n case Network.SOLANA:\n return SOLANA_RELAY_CHAIN.id;\n }\n};\n\nexport const relayClient = createClient({\n baseApiUrl: MAINNET_RELAY_API,\n source: 'https://agentcash.dev',\n chains: [\n ...Object.values(EVM_CONFIGS).map(config =>\n convertViemChainToRelayChain(config.chain)\n ),\n SOLANA_RELAY_CHAIN,\n ],\n});\n","import { adaptViemWallet } from '@relayprotocol/relay-sdk';\n\nimport { relayClient } from './client';\nimport type { AdaptSolanaKitWalletParams } from './relay-svm-wallet-adapter';\nimport { adaptSolanaKitWallet } from './relay-svm-wallet-adapter';\n\nimport type { WalletClient } from 'viem';\nimport type { Execute } from '@relayprotocol/relay-sdk';\n\nexport const executeQuote = async (quote: Execute, account: WalletClient) => {\n return await relayClient.actions.execute({\n wallet: adaptViemWallet(account),\n quote,\n });\n};\n\nexport interface ExecuteSolanaParams extends AdaptSolanaKitWalletParams {\n quote: Execute;\n}\n\nexport const executeSolana = async ({\n quote,\n ...rest\n}: ExecuteSolanaParams) => {\n return await relayClient.actions.execute({\n wallet: adaptSolanaKitWallet(rest),\n quote,\n });\n};\n","import {\n assertIsSendableTransaction,\n assertIsTransactionWithinSizeLimit,\n createSolanaRpc,\n getBase64EncodedWireTransaction,\n getCompiledTransactionMessageDecoder,\n getSignatureFromTransaction,\n getTransactionDecoder,\n getTransactionLifetimeConstraintFromCompiledTransactionMessage,\n isTransactionModifyingSigner,\n isTransactionPartialSigner,\n isTransactionSendingSigner,\n} from '@solana/kit';\nimport { LogLevel, getClient } from '@relayprotocol/relay-sdk';\n\nimport { SOLANA_RELAY_CHAIN } from './client';\n\nimport type { AdaptedWallet } from '@relayprotocol/relay-sdk';\nimport type {\n ClusterUrl,\n Signature,\n Transaction,\n TransactionSigner,\n TransactionWithLifetime,\n TransactionWithinSizeLimit,\n} from '@solana/kit';\n\nconst BASE58_SIGNATURE_REGEX = /^[1-9A-HJ-NP-Za-km-z]+$/;\nconst DEFAULT_CONFIRM_TIMEOUT_MS = 120_000;\nconst DEFAULT_CONFIRM_POLL_MS = 2_000;\n\nexport interface AdaptSolanaKitWalletParams {\n signer: TransactionSigner;\n partiallySignedTransaction: string;\n rpcUrl?: ClusterUrl;\n}\n\ntype SignableTransaction = Transaction &\n TransactionWithLifetime &\n TransactionWithinSizeLimit;\n\nconst assertBase58TransactionSignature = (signature: string | undefined) => {\n if (\n typeof signature !== 'string' ||\n signature.length === 0 ||\n !BASE58_SIGNATURE_REGEX.test(signature)\n ) {\n throw new Error('Invalid Solana signature: expected base58.');\n }\n};\n\nconst sleep = async (ms: number) =>\n await new Promise(resolve => setTimeout(resolve, ms));\n\nasync function decodePartiallySignedTransaction(\n partiallySignedTransaction: string\n): Promise<SignableTransaction> {\n const decodedTransaction = getTransactionDecoder().decode(\n Uint8Array.from(Buffer.from(partiallySignedTransaction, 'base64'))\n );\n const compiledTransactionMessage =\n getCompiledTransactionMessageDecoder().decode(\n decodedTransaction.messageBytes\n );\n const lifetimeConstraint =\n await getTransactionLifetimeConstraintFromCompiledTransactionMessage(\n compiledTransactionMessage\n );\n const transactionWithLifetime = {\n ...decodedTransaction,\n lifetimeConstraint,\n };\n\n assertIsTransactionWithinSizeLimit(transactionWithLifetime);\n\n return transactionWithLifetime;\n}\n\nasync function signTransactionWithSigner(\n transaction: SignableTransaction,\n signer: TransactionSigner\n): Promise<SignableTransaction> {\n if (isTransactionModifyingSigner(signer)) {\n const [signedTransaction] = await signer.modifyAndSignTransactions([\n transaction,\n ]);\n\n if (!signedTransaction) {\n throw new Error('Modifying signer did not return a signed transaction');\n }\n\n return signedTransaction;\n }\n\n if (isTransactionPartialSigner(signer)) {\n const [signatureDictionary] = await signer.signTransactions([transaction]);\n\n if (!signatureDictionary) {\n throw new Error('Transaction signer did not return signatures');\n }\n\n return {\n ...transaction,\n signatures: Object.freeze({\n ...transaction.signatures,\n ...signatureDictionary,\n }),\n };\n }\n\n if (isTransactionSendingSigner(signer)) {\n throw new Error(\n 'TransactionSendingSigner is not supported by Relay Solana adapter'\n );\n }\n\n throw new Error(\n 'Unsupported Solana transaction signer provided to Relay adapter'\n );\n}\n\nexport const adaptSolanaKitWallet = ({\n rpcUrl = SOLANA_RELAY_CHAIN.httpRpcUrl as ClusterUrl,\n signer,\n partiallySignedTransaction,\n}: AdaptSolanaKitWalletParams): AdaptedWallet => {\n const rpc = createSolanaRpc(rpcUrl);\n return {\n vmType: 'svm',\n getChainId: () => Promise.resolve(SOLANA_RELAY_CHAIN.id),\n address: () => Promise.resolve(signer.address),\n handleSignMessageStep: () => {\n throw new Error('Message signing not implemented for Solana');\n },\n handleSendTransactionStep: async () => {\n const client = getClient();\n const decodedTransaction = await decodePartiallySignedTransaction(\n partiallySignedTransaction\n );\n const signedTransaction = await signTransactionWithSigner(\n decodedTransaction,\n signer\n );\n\n assertIsSendableTransaction(signedTransaction);\n const wireTransaction =\n getBase64EncodedWireTransaction(signedTransaction);\n const signature = getSignatureFromTransaction(signedTransaction);\n\n await rpc\n .sendTransaction(wireTransaction, {\n encoding: 'base64',\n skipPreflight: false,\n preflightCommitment: 'confirmed',\n })\n .send();\n\n assertBase58TransactionSignature(signature);\n\n client.log(\n ['Transaction Signature obtained', { signature }],\n LogLevel.Verbose\n );\n\n return signature;\n },\n handleConfirmTransactionStep: async txHash => {\n assertBase58TransactionSignature(txHash);\n\n const deadline = Date.now() + DEFAULT_CONFIRM_TIMEOUT_MS;\n\n while (Date.now() < deadline) {\n const { value: statuses } = await rpc\n .getSignatureStatuses([txHash as Signature])\n .send();\n\n const status = statuses[0];\n\n if (status) {\n if (status.err) {\n throw new Error(\n `Transaction failed: ${JSON.stringify(status.err)}`\n );\n }\n\n if (\n status.confirmationStatus === 'confirmed' ||\n status.confirmationStatus === 'finalized'\n ) {\n return {\n blockHash: status.slot.toString(),\n blockNumber: Number(status.slot),\n txHash,\n };\n }\n }\n\n await sleep(DEFAULT_CONFIRM_POLL_MS);\n }\n\n throw new Error(\n `Transaction not confirmed within ${DEFAULT_CONFIRM_TIMEOUT_MS}ms: ${txHash}`\n );\n },\n switchChain: () => {\n throw new Error('Switching chains not implemented for Solana');\n },\n };\n};\n","import {\n executeQuote,\n executeSolana,\n getBridgeDepositQuote,\n} from '@agentcash/bridge';\nimport { err, resultFromPromise } from '@agentcash/neverthrow';\n\nimport type { BaseBridgeError } from './types';\n\nconst errorType = 'bridge';\n\nexport const bridgeErr = (surface: string, error: BaseBridgeError) =>\n err(errorType, surface, error);\n\nconst bridgeResultFromPromise = <T>(\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => BaseBridgeError\n) => resultFromPromise(errorType, surface, promise, error);\n\nconst getErrorMessage = (error: unknown, fallback: string) => {\n if (error instanceof Error && error.message) {\n return error.message;\n }\n\n if (typeof error === 'string' && error.length > 0) {\n return error;\n }\n\n return fallback;\n};\n\nexport const safeGetBridgeDepositQuote = (\n surface: string,\n ...args: Parameters<typeof getBridgeDepositQuote>\n) =>\n bridgeResultFromPromise(surface, getBridgeDepositQuote(...args), error => {\n const errorMessage = getErrorMessage(\n error,\n 'Failed to get bridge deposit quote'\n );\n\n return {\n cause: 'get_bridge_deposit_quote',\n errorMessage,\n message: `Failed to get bridge deposit quote: ${errorMessage}`,\n };\n });\n\nexport const safeExecuteQuote = (\n surface: string,\n ...args: Parameters<typeof executeQuote>\n) =>\n bridgeResultFromPromise(surface, executeQuote(...args), error => {\n const errorMessage = getErrorMessage(error, 'Failed to execute quote');\n\n return {\n cause: 'execute_quote',\n errorMessage,\n message: `Failed to execute quote: ${errorMessage}`,\n };\n });\n\nexport const safeExecuteSolana = (\n surface: string,\n ...args: Parameters<typeof executeSolana>\n) =>\n bridgeResultFromPromise(surface, executeSolana(...args), error => {\n const errorMessage = getErrorMessage(\n error,\n 'Failed to execute Solana bridge transaction'\n );\n\n return {\n cause: 'execute_solana',\n errorMessage,\n message: `Failed to execute Solana bridge transaction: ${errorMessage}`,\n };\n });\n"],"mappings":"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","names":["z","z"]}
|
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
} from "./chunk-ISF2WVEZ.js";
|
|
4
4
|
import {
|
|
5
5
|
getBalance
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
getBaseUrl,
|
|
9
|
-
getDepositLink
|
|
10
|
-
} from "./chunk-QCP7Q6UF.js";
|
|
6
|
+
} from "./chunk-KJCWPVQE.js";
|
|
11
7
|
import {
|
|
12
8
|
Network
|
|
13
9
|
} from "./chunk-NPJV7AMV.js";
|
|
10
|
+
import {
|
|
11
|
+
getBaseUrl,
|
|
12
|
+
getDepositLink
|
|
13
|
+
} from "./chunk-U6FRXL3X.js";
|
|
14
14
|
|
|
15
15
|
// src/operations/onboarding-cta.ts
|
|
16
16
|
function shouldShowOnboardingCta(totalBalance) {
|
|
@@ -90,4 +90,4 @@ export {
|
|
|
90
90
|
getBalances,
|
|
91
91
|
listAccountsWithBalances
|
|
92
92
|
};
|
|
93
|
-
//# sourceMappingURL=chunk-
|
|
93
|
+
//# sourceMappingURL=chunk-YUPRVVFP.js.map
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
2
|
discoverResources
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-Y2J274RB.js";
|
|
4
4
|
import "./chunk-CR2YGI3I.js";
|
|
5
5
|
import "./chunk-FB5CMO3J.js";
|
|
6
|
+
import "./chunk-U6FRXL3X.js";
|
|
6
7
|
import {
|
|
7
8
|
errorResponse,
|
|
8
9
|
outputAndExit,
|
|
@@ -15,7 +16,7 @@ import "./chunk-ITCDZXBZ.js";
|
|
|
15
16
|
|
|
16
17
|
// src/cli/commands/discover.ts
|
|
17
18
|
var discoverCommand = async (input) => {
|
|
18
|
-
const result = await discoverResources("cli:discover", input);
|
|
19
|
+
const result = await discoverResources("cli:discover", input, { flags: input });
|
|
19
20
|
if (result.found) {
|
|
20
21
|
return outputAndExit(successResponse(result), input);
|
|
21
22
|
}
|
|
@@ -34,4 +35,4 @@ var discoverCommand = async (input) => {
|
|
|
34
35
|
export {
|
|
35
36
|
discoverCommand
|
|
36
37
|
};
|
|
37
|
-
//# sourceMappingURL=discover-
|
|
38
|
+
//# sourceMappingURL=discover-654M2PZ3.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/discover.ts"],"sourcesContent":["import { successResponse, errorResponse, outputAndExit } from '@/cli/output';\n\nimport { discoverResources } from '@/operations/discover';\n\nimport type { Command } from '@/types';\nimport type { DiscoverResourcesInput } from '@/operations/discover';\n\nexport const discoverCommand: Command<DiscoverResourcesInput> = async input => {\n const result = await discoverResources('cli:discover', input, { flags: input });\n\n if (result.found) {\n return outputAndExit(successResponse(result), input);\n }\n\n const origin = 'origin' in result ? result.origin : input.url;\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message:\n result.message ??\n `No OpenAPI spec found for ${origin}. Tried: /openapi.json, /.well-known/x402`,\n surface: 'cli:discover',\n cause: result.cause,\n details: { origin },\n }),\n input\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;AAOO,IAAM,kBAAmD,OAAM,UAAS;AAC7E,QAAM,SAAS,MAAM,kBAAkB,gBAAgB,OAAO,EAAE,OAAO,MAAM,CAAC;AAE9E,MAAI,OAAO,OAAO;AAChB,WAAO,cAAc,gBAAgB,MAAM,GAAG,KAAK;AAAA,EACrD;AAEA,QAAM,SAAS,YAAY,SAAS,OAAO,SAAS,MAAM;AAC1D,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,MAAM;AAAA,MACN,SACE,OAAO,WACP,6BAA6B,MAAM;AAAA,MACrC,SAAS;AAAA,MACT,OAAO,OAAO;AAAA,MACd,SAAS,EAAE,OAAO;AAAA,IACpB,CAAC;AAAA,IACD;AAAA,EACF;AACF;","names":[]}
|
|
@@ -5,14 +5,14 @@ import "./chunk-JWU363NX.js";
|
|
|
5
5
|
import "./chunk-CR2YGI3I.js";
|
|
6
6
|
import {
|
|
7
7
|
executeFetch
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-G5FHPXQL.js";
|
|
9
9
|
import "./chunk-JX2XE6FD.js";
|
|
10
10
|
import "./chunk-IKPLMFAK.js";
|
|
11
11
|
import "./chunk-LNJIXYCU.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-KJCWPVQE.js";
|
|
13
13
|
import {
|
|
14
14
|
safeParseResponse
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-BFOYXXLG.js";
|
|
16
16
|
import {
|
|
17
17
|
getWalletOrExit
|
|
18
18
|
} from "./chunk-7AT3NXJ2.js";
|
|
@@ -20,6 +20,7 @@ import "./chunk-F3KGAMIA.js";
|
|
|
20
20
|
import "./chunk-NPJV7AMV.js";
|
|
21
21
|
import "./chunk-KVSTJRSJ.js";
|
|
22
22
|
import "./chunk-FB5CMO3J.js";
|
|
23
|
+
import "./chunk-U6FRXL3X.js";
|
|
23
24
|
import {
|
|
24
25
|
errorResponse,
|
|
25
26
|
fromNeverthrowError,
|
|
@@ -88,4 +89,4 @@ var fetchCommand = async (input) => {
|
|
|
88
89
|
export {
|
|
89
90
|
fetchCommand
|
|
90
91
|
};
|
|
91
|
-
//# sourceMappingURL=fetch-
|
|
92
|
+
//# sourceMappingURL=fetch-GPYZNSPB.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/commands/fetch.ts"],"sourcesContent":["import {\n successResponse,\n errorResponse,\n fromNeverthrowError,\n outputAndExit,\n} from '@/cli/output';\n\nimport { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { executeFetch } from '@/operations/fetch';\nimport { cliFetchRequestSchema } from '@/shared/request/schemas/cli';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type z from 'zod';\nimport type { Command } from '@/types';\n\nconst SURFACE = 'cli:fetch';\n\nexport const fetchCommand: Command<\n z.input<typeof cliFetchRequestSchema>\n> = async input => {\n const requestInput = cliFetchRequestSchema.safeParse(input);\n if (!requestInput.success) {\n return outputAndExit(\n errorResponse({\n code: 'INVALID_INPUT',\n message: requestInput.error.message,\n surface: SURFACE,\n cause: 'validation',\n }),\n input\n );\n }\n const wallets = await getWalletOrExit(input);\n\n const fetchResult = await executeFetch(requestInput.data, {\n surface: SURFACE,\n wallets,\n flags: input,\n params: input,\n });\n\n if (fetchResult.isErr()) {\n return outputAndExit(fromNeverthrowError(fetchResult), input);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n const parseResult = await safeParseResponse(SURFACE, response);\n return outputAndExit(\n errorResponse({\n code: 'HTTP_ERROR',\n message: response.statusText,\n surface: SURFACE,\n cause: 'http',\n details: parseResult.match(\n data => ({\n statusCode: response.status,\n type: data.type,\n body:\n data.type === 'json' || data.type === 'text'\n ? data.data\n : undefined,\n }),\n () => ({ statusCode: response.status })\n ),\n }),\n input\n );\n }\n\n const parseResponseResult = await safeParseResponse(SURFACE, response);\n if (parseResponseResult.isErr()) {\n return outputAndExit(fromNeverthrowError(parseResponseResult), input);\n }\n\n const parsedResponse = parseResponseResult.value;\n\n const data =\n parsedResponse.type === 'json' || parsedResponse.type === 'text'\n ? parsedResponse.data\n : { type: parsedResponse.type };\n\n outputAndExit(successResponse(data, paymentInfo), input);\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/fetch.ts"],"sourcesContent":["import {\n successResponse,\n errorResponse,\n fromNeverthrowError,\n outputAndExit,\n} from '@/cli/output';\n\nimport { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { executeFetch } from '@/operations/fetch';\nimport { cliFetchRequestSchema } from '@/shared/request/schemas/cli';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type z from 'zod';\nimport type { Command } from '@/types';\n\nconst SURFACE = 'cli:fetch';\n\nexport const fetchCommand: Command<\n z.input<typeof cliFetchRequestSchema>\n> = async input => {\n const requestInput = cliFetchRequestSchema.safeParse(input);\n if (!requestInput.success) {\n return outputAndExit(\n errorResponse({\n code: 'INVALID_INPUT',\n message: requestInput.error.message,\n surface: SURFACE,\n cause: 'validation',\n }),\n input\n );\n }\n const wallets = await getWalletOrExit(input);\n\n const fetchResult = await executeFetch(requestInput.data, {\n surface: SURFACE,\n wallets,\n flags: input,\n params: input,\n });\n\n if (fetchResult.isErr()) {\n return outputAndExit(fromNeverthrowError(fetchResult), input);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n const parseResult = await safeParseResponse(SURFACE, response);\n return outputAndExit(\n errorResponse({\n code: 'HTTP_ERROR',\n message: response.statusText,\n surface: SURFACE,\n cause: 'http',\n details: parseResult.match(\n data => ({\n statusCode: response.status,\n type: data.type,\n body:\n data.type === 'json' || data.type === 'text'\n ? data.data\n : undefined,\n }),\n () => ({ statusCode: response.status })\n ),\n }),\n input\n );\n }\n\n const parseResponseResult = await safeParseResponse(SURFACE, response);\n if (parseResponseResult.isErr()) {\n return outputAndExit(fromNeverthrowError(parseResponseResult), input);\n }\n\n const parsedResponse = parseResponseResult.value;\n\n const data =\n parsedResponse.type === 'json' || parsedResponse.type === 'text'\n ? parsedResponse.data\n : { type: parsedResponse.type };\n\n outputAndExit(successResponse(data, paymentInfo), input);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,IAAM,UAAU;AAET,IAAM,eAET,OAAM,UAAS;AACjB,QAAM,eAAe,sBAAsB,UAAU,KAAK;AAC1D,MAAI,CAAC,aAAa,SAAS;AACzB,WAAO;AAAA,MACL,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,SAAS,aAAa,MAAM;AAAA,QAC5B,SAAS;AAAA,QACT,OAAO;AAAA,MACT,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AACA,QAAM,UAAU,MAAM,gBAAgB,KAAK;AAE3C,QAAM,cAAc,MAAM,aAAa,aAAa,MAAM;AAAA,IACxD,SAAS;AAAA,IACT;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,EACV,CAAC;AAED,MAAI,YAAY,MAAM,GAAG;AACvB,WAAO,cAAc,oBAAoB,WAAW,GAAG,KAAK;AAAA,EAC9D;AAEA,QAAM,EAAE,UAAU,YAAY,IAAI,YAAY;AAE9C,MAAI,CAAC,SAAS,IAAI;AAChB,UAAM,cAAc,MAAM,kBAAkB,SAAS,QAAQ;AAC7D,WAAO;AAAA,MACL,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,SAAS,SAAS;AAAA,QAClB,SAAS;AAAA,QACT,OAAO;AAAA,QACP,SAAS,YAAY;AAAA,UACnB,CAAAA,WAAS;AAAA,YACP,YAAY,SAAS;AAAA,YACrB,MAAMA,MAAK;AAAA,YACX,MACEA,MAAK,SAAS,UAAUA,MAAK,SAAS,SAClCA,MAAK,OACL;AAAA,UACR;AAAA,UACA,OAAO,EAAE,YAAY,SAAS,OAAO;AAAA,QACvC;AAAA,MACF,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAEA,QAAM,sBAAsB,MAAM,kBAAkB,SAAS,QAAQ;AACrE,MAAI,oBAAoB,MAAM,GAAG;AAC/B,WAAO,cAAc,oBAAoB,mBAAmB,GAAG,KAAK;AAAA,EACtE;AAEA,QAAM,iBAAiB,oBAAoB;AAE3C,QAAM,OACJ,eAAe,SAAS,UAAU,eAAe,SAAS,SACtD,eAAe,OACf,EAAE,MAAM,eAAe,KAAK;AAElC,gBAAc,gBAAgB,MAAM,WAAW,GAAG,KAAK;AACzD;","names":["data"]}
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
promptDeposit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BNFMFAEF.js";
|
|
4
4
|
import "./chunk-DZNSJ2BA.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-MSNAPI5G.js";
|
|
6
6
|
import "./chunk-ISF2WVEZ.js";
|
|
7
|
-
import "./chunk-
|
|
7
|
+
import "./chunk-BFOYXXLG.js";
|
|
8
8
|
import {
|
|
9
9
|
getWallet
|
|
10
10
|
} from "./chunk-F3KGAMIA.js";
|
|
11
11
|
import "./chunk-NPJV7AMV.js";
|
|
12
12
|
import "./chunk-KVSTJRSJ.js";
|
|
13
|
+
import "./chunk-U6FRXL3X.js";
|
|
13
14
|
import {
|
|
14
15
|
log
|
|
15
16
|
} from "./chunk-QZCSZB7E.js";
|
|
@@ -34,4 +35,4 @@ var fundMcpServer = async (args) => {
|
|
|
34
35
|
export {
|
|
35
36
|
fundMcpServer
|
|
36
37
|
};
|
|
37
|
-
//# sourceMappingURL=fund-
|
|
38
|
+
//# sourceMappingURL=fund-HHL4QEU5.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/commands/fund.ts"],"sourcesContent":["import type { Command } from '@/types';\nimport { intro, log as clackLog, outro } from '@clack/prompts';\nimport chalk from 'chalk';\nimport { promptDeposit } from '@/cli/lib/deposit';\nimport { log } from '@/shared/log';\nimport { getWallet } from '@/wallet';\n\nexport const fundMcpServer: Command = async args => {\n intro(chalk.bold(`Fund ${chalk.hex('#2563eb')('agentcash MCP')}`));\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(walletResult.error.message);\n clackLog.error(walletResult.error.message);\n outro(chalk.bold.red('Failed to get wallet'));\n process.exit(1);\n }\n\n await promptDeposit('fund', args, walletResult.value);\n\n outro(chalk.bold.green('Your agentcash MCP server is funded!'));\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/fund.ts"],"sourcesContent":["import type { Command } from '@/types';\nimport { intro, log as clackLog, outro } from '@clack/prompts';\nimport chalk from 'chalk';\nimport { promptDeposit } from '@/cli/lib/deposit';\nimport { log } from '@/shared/log';\nimport { getWallet } from '@/wallet';\n\nexport const fundMcpServer: Command = async args => {\n intro(chalk.bold(`Fund ${chalk.hex('#2563eb')('agentcash MCP')}`));\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(walletResult.error.message);\n clackLog.error(walletResult.error.message);\n outro(chalk.bold.red('Failed to get wallet'));\n process.exit(1);\n }\n\n await promptDeposit('fund', args, walletResult.value);\n\n outro(chalk.bold.green('Your agentcash MCP server is funded!'));\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AACA,SAAS,OAAO,OAAO,UAAU,aAAa;AAC9C,OAAO,WAAW;AAKX,IAAM,gBAAyB,OAAM,SAAQ;AAClD,QAAM,MAAM,KAAK,QAAQ,MAAM,IAAI,SAAS,EAAE,eAAe,CAAC,EAAE,CAAC;AAEjE,QAAM,eAAe,MAAM,UAAU;AAErC,MAAI,aAAa,MAAM,GAAG;AACxB,QAAI,MAAM,aAAa,MAAM,OAAO;AACpC,aAAS,MAAM,aAAa,MAAM,OAAO;AACzC,UAAM,MAAM,KAAK,IAAI,sBAAsB,CAAC;AAC5C,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,cAAc,QAAQ,MAAM,aAAa,KAAK;AAEpD,QAAM,MAAM,KAAK,MAAM,sCAAsC,CAAC;AAChE;","names":[]}
|
package/dist/esm/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
} from "./chunk-YIU364NZ.js";
|
|
8
8
|
import {
|
|
9
9
|
MCP_VERSION
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-XC5JT2NQ.js";
|
|
11
11
|
import {
|
|
12
12
|
paymentNetworks,
|
|
13
13
|
paymentProtocols,
|
|
@@ -117,7 +117,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
117
117
|
DESCRIPTIONS.fetch.epilogue
|
|
118
118
|
),
|
|
119
119
|
async (args) => {
|
|
120
|
-
const { fetchCommand } = await import("./fetch-
|
|
120
|
+
const { fetchCommand } = await import("./fetch-GPYZNSPB.js");
|
|
121
121
|
await fetchCommand(args);
|
|
122
122
|
}
|
|
123
123
|
).command(
|
|
@@ -129,7 +129,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
129
129
|
DESCRIPTIONS.fetchWithAuth.epilogue
|
|
130
130
|
),
|
|
131
131
|
async (args) => {
|
|
132
|
-
const { fetchCommand } = await import("./fetch-
|
|
132
|
+
const { fetchCommand } = await import("./fetch-GPYZNSPB.js");
|
|
133
133
|
await fetchCommand(args);
|
|
134
134
|
}
|
|
135
135
|
).command(
|
|
@@ -173,7 +173,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
173
173
|
demandOption: true
|
|
174
174
|
}),
|
|
175
175
|
async (args) => {
|
|
176
|
-
const { tryCommand } = await import("./try-
|
|
176
|
+
const { tryCommand } = await import("./try-36SR5JEG.js");
|
|
177
177
|
await tryCommand(args);
|
|
178
178
|
}
|
|
179
179
|
).command(
|
|
@@ -185,7 +185,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
185
185
|
demandOption: true
|
|
186
186
|
}),
|
|
187
187
|
async (args) => {
|
|
188
|
-
const { searchCommand } = await import("./search-
|
|
188
|
+
const { searchCommand } = await import("./search-WV2FO7OG.js");
|
|
189
189
|
await searchCommand(args);
|
|
190
190
|
}
|
|
191
191
|
).command(
|
|
@@ -200,7 +200,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
200
200
|
description: TOOL_PARAMS.discoverApiEndpoints.includeGuidance
|
|
201
201
|
}).epilogue(DESCRIPTIONS.discoverApiEndpoints.epilogue),
|
|
202
202
|
async (args) => {
|
|
203
|
-
const { discoverCommand } = await import("./discover-
|
|
203
|
+
const { discoverCommand } = await import("./discover-654M2PZ3.js");
|
|
204
204
|
await discoverCommand(args);
|
|
205
205
|
}
|
|
206
206
|
).command(
|
|
@@ -212,7 +212,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
212
212
|
demandOption: true
|
|
213
213
|
}),
|
|
214
214
|
async (args) => {
|
|
215
|
-
const { registerCommand } = await import("./register-
|
|
215
|
+
const { registerCommand } = await import("./register-AD43YD5O.js");
|
|
216
216
|
await registerCommand(args);
|
|
217
217
|
}
|
|
218
218
|
).command(
|
|
@@ -224,7 +224,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
224
224
|
demandOption: true
|
|
225
225
|
}),
|
|
226
226
|
async (args) => {
|
|
227
|
-
const { addSkillCommand } = await import("./add-skill-
|
|
227
|
+
const { addSkillCommand } = await import("./add-skill-JHBOH5SG.js");
|
|
228
228
|
await addSkillCommand(args);
|
|
229
229
|
}
|
|
230
230
|
).command(
|
|
@@ -239,7 +239,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
239
239
|
demandOption: true
|
|
240
240
|
}),
|
|
241
241
|
async (args) => {
|
|
242
|
-
const { originsAddCommand } = await import("./origins-
|
|
242
|
+
const { originsAddCommand } = await import("./origins-JAC2K5A4.js");
|
|
243
243
|
await originsAddCommand(args);
|
|
244
244
|
}
|
|
245
245
|
).command(
|
|
@@ -247,7 +247,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
247
247
|
"List all registered origins",
|
|
248
248
|
(yargs3) => yargs3,
|
|
249
249
|
async (args) => {
|
|
250
|
-
const { originsListCommand } = await import("./origins-
|
|
250
|
+
const { originsListCommand } = await import("./origins-JAC2K5A4.js");
|
|
251
251
|
await originsListCommand(args);
|
|
252
252
|
}
|
|
253
253
|
).command(
|
|
@@ -259,7 +259,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
259
259
|
demandOption: true
|
|
260
260
|
}),
|
|
261
261
|
async (args) => {
|
|
262
|
-
const { originsRemoveCommand } = await import("./origins-
|
|
262
|
+
const { originsRemoveCommand } = await import("./origins-JAC2K5A4.js");
|
|
263
263
|
await originsRemoveCommand(args);
|
|
264
264
|
}
|
|
265
265
|
).demandCommand(1, "You must specify an origins subcommand").strict(),
|
|
@@ -273,7 +273,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
273
273
|
description: "The invite code to redeem (optional)"
|
|
274
274
|
}),
|
|
275
275
|
async (args) => {
|
|
276
|
-
const { onboardCommand } = await import("./onboard-
|
|
276
|
+
const { onboardCommand } = await import("./onboard-5SZ6ZCM5.js");
|
|
277
277
|
await onboardCommand({ ...args, code: args.code ?? args.invite });
|
|
278
278
|
}
|
|
279
279
|
).command(
|
|
@@ -284,7 +284,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
284
284
|
"Deprecated alias. Prints migration guidance for 'balance' and 'accounts'.",
|
|
285
285
|
(yargs3) => yargs3,
|
|
286
286
|
async (args) => {
|
|
287
|
-
const { legacyWalletInfoCommand } = await import("./wallet-
|
|
287
|
+
const { legacyWalletInfoCommand } = await import("./wallet-QOS3FPSF.js");
|
|
288
288
|
await legacyWalletInfoCommand(args);
|
|
289
289
|
}
|
|
290
290
|
).command(
|
|
@@ -292,7 +292,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
292
292
|
"Deprecated alias. Prints migration guidance for 'balance'.",
|
|
293
293
|
(yargs3) => yargs3,
|
|
294
294
|
async (args) => {
|
|
295
|
-
const { legacyWalletBalanceCommand } = await import("./wallet-
|
|
295
|
+
const { legacyWalletBalanceCommand } = await import("./wallet-QOS3FPSF.js");
|
|
296
296
|
await legacyWalletBalanceCommand(args);
|
|
297
297
|
}
|
|
298
298
|
).command(
|
|
@@ -304,7 +304,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
304
304
|
demandOption: true
|
|
305
305
|
}),
|
|
306
306
|
async (args) => {
|
|
307
|
-
const { legacyWalletRedeemCommand } = await import("./wallet-
|
|
307
|
+
const { legacyWalletRedeemCommand } = await import("./wallet-QOS3FPSF.js");
|
|
308
308
|
await legacyWalletRedeemCommand(args);
|
|
309
309
|
}
|
|
310
310
|
).command(
|
|
@@ -312,7 +312,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
312
312
|
"Deprecated alias for wallet address lookup.",
|
|
313
313
|
(yargs3) => yargs3,
|
|
314
314
|
async (args) => {
|
|
315
|
-
const { legacyWalletAddressCommand } = await import("./wallet-
|
|
315
|
+
const { legacyWalletAddressCommand } = await import("./wallet-QOS3FPSF.js");
|
|
316
316
|
await legacyWalletAddressCommand(args);
|
|
317
317
|
}
|
|
318
318
|
).demandCommand(1, "You must specify a wallet subcommand").strict(),
|
|
@@ -323,7 +323,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
323
323
|
DESCRIPTIONS.getBalance.cli,
|
|
324
324
|
(yargs2) => yargs2,
|
|
325
325
|
async (args) => {
|
|
326
|
-
const { getBalanceCommand } = await import("./wallet-
|
|
326
|
+
const { getBalanceCommand } = await import("./wallet-QOS3FPSF.js");
|
|
327
327
|
await getBalanceCommand(args);
|
|
328
328
|
}
|
|
329
329
|
).command(
|
|
@@ -331,7 +331,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
331
331
|
DESCRIPTIONS.listAccounts.cli,
|
|
332
332
|
(yargs2) => yargs2,
|
|
333
333
|
async (args) => {
|
|
334
|
-
const { listAccountsCommand } = await import("./wallet-
|
|
334
|
+
const { listAccountsCommand } = await import("./wallet-QOS3FPSF.js");
|
|
335
335
|
await listAccountsCommand(args);
|
|
336
336
|
}
|
|
337
337
|
).command(
|
|
@@ -343,7 +343,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
343
343
|
demandOption: true
|
|
344
344
|
}),
|
|
345
345
|
async (args) => {
|
|
346
|
-
const { walletRedeemCommand } = await import("./wallet-
|
|
346
|
+
const { walletRedeemCommand } = await import("./wallet-QOS3FPSF.js");
|
|
347
347
|
await walletRedeemCommand(args);
|
|
348
348
|
}
|
|
349
349
|
).command(
|
|
@@ -402,7 +402,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
402
402
|
description: TOOL_PARAMS.reportError.fullReport
|
|
403
403
|
}),
|
|
404
404
|
async (args) => {
|
|
405
|
-
const { reportErrorCommand } = await import("./report-error-
|
|
405
|
+
const { reportErrorCommand } = await import("./report-error-V2J7LNUZ.js");
|
|
406
406
|
await reportErrorCommand(args);
|
|
407
407
|
}
|
|
408
408
|
).command(
|
|
@@ -424,7 +424,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
424
424
|
required: true
|
|
425
425
|
}),
|
|
426
426
|
async (args) => {
|
|
427
|
-
const { bridgeCommand } = await import("./bridge-
|
|
427
|
+
const { bridgeCommand } = await import("./bridge-YU2PE54M.js");
|
|
428
428
|
await bridgeCommand(args);
|
|
429
429
|
}
|
|
430
430
|
).command(
|
|
@@ -432,7 +432,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
432
432
|
"Start the MCP server (default when no command specified)",
|
|
433
433
|
(yargs2) => yargs2,
|
|
434
434
|
async (args) => {
|
|
435
|
-
const { serverCommand } = await import("./server-
|
|
435
|
+
const { serverCommand } = await import("./server-RHVPZZ4R.js");
|
|
436
436
|
await serverCommand(args);
|
|
437
437
|
}
|
|
438
438
|
).command(
|
|
@@ -446,7 +446,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
446
446
|
default: isClaudeCode ? "claude-code" /* ClaudeCode */ : void 0
|
|
447
447
|
}),
|
|
448
448
|
async (args) => {
|
|
449
|
-
const { installMcpServer } = await import("./install-
|
|
449
|
+
const { installMcpServer } = await import("./install-D2IVOSIS.js");
|
|
450
450
|
await installMcpServer(args);
|
|
451
451
|
}
|
|
452
452
|
).command(
|
|
@@ -454,7 +454,7 @@ void yargs(hideBin(process.argv)).scriptName("agentcash").usage("$0 [command] [o
|
|
|
454
454
|
"Open the funding page to add USDC to your wallet",
|
|
455
455
|
(yargs2) => yargs2,
|
|
456
456
|
async (args) => {
|
|
457
|
-
const { fundMcpServer } = await import("./fund-
|
|
457
|
+
const { fundMcpServer } = await import("./fund-HHL4QEU5.js");
|
|
458
458
|
await fundMcpServer(args);
|
|
459
459
|
}
|
|
460
460
|
).example(
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
promptDeposit
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-BNFMFAEF.js";
|
|
4
4
|
import {
|
|
5
5
|
addServer
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7ZLVTQTS.js";
|
|
7
7
|
import {
|
|
8
8
|
wait
|
|
9
9
|
} from "./chunk-DZNSJ2BA.js";
|
|
10
10
|
import {
|
|
11
11
|
redeemInviteCode
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-MSNAPI5G.js";
|
|
13
13
|
import {
|
|
14
14
|
Clients,
|
|
15
15
|
clientMetadata
|
|
16
16
|
} from "./chunk-27DZCYDB.js";
|
|
17
|
-
import "./chunk-
|
|
17
|
+
import "./chunk-XC5JT2NQ.js";
|
|
18
18
|
import "./chunk-ISF2WVEZ.js";
|
|
19
19
|
import {
|
|
20
20
|
getBalance
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
21
|
+
} from "./chunk-KJCWPVQE.js";
|
|
22
|
+
import "./chunk-BFOYXXLG.js";
|
|
23
23
|
import {
|
|
24
24
|
getWallet
|
|
25
25
|
} from "./chunk-F3KGAMIA.js";
|
|
@@ -27,6 +27,7 @@ import {
|
|
|
27
27
|
getTxExplorerUrl
|
|
28
28
|
} from "./chunk-NPJV7AMV.js";
|
|
29
29
|
import "./chunk-KVSTJRSJ.js";
|
|
30
|
+
import "./chunk-U6FRXL3X.js";
|
|
30
31
|
import {
|
|
31
32
|
log
|
|
32
33
|
} from "./chunk-QZCSZB7E.js";
|
|
@@ -175,4 +176,4 @@ var installMcpServer = async (args) => {
|
|
|
175
176
|
export {
|
|
176
177
|
installMcpServer
|
|
177
178
|
};
|
|
178
|
-
//# sourceMappingURL=install-
|
|
179
|
+
//# sourceMappingURL=install-D2IVOSIS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/commands/install/index.ts","../../src/cli/commands/install/1-get-client/index.ts","../../src/cli/commands/install/3-redeem-invite/index.ts","../../src/cli/commands/install/4-add-funds/index.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { intro, outro } from '@clack/prompts';\n\nimport { log } from '@/shared/log';\n\nimport { getClient } from './1-get-client';\nimport { addServer } from './2-add-server';\nimport { redeemInviteCode } from './3-redeem-invite';\nimport { addFunds } from './4-add-funds';\n\nimport { getWallet } from '@/wallet';\n\nimport type { Command } from '@/types';\nimport type { Clients } from './clients';\n\nexport interface InstallArgs {\n client?: Clients;\n}\n\nexport const installMcpServer: Command<InstallArgs> = async args => {\n intro(chalk.green.bold(`Install agentcash MCP`));\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n outro(chalk.bold.red('Failed to get wallet'));\n process.exit(1);\n }\n\n const client = await getClient(args);\n\n await addServer(client, args);\n\n const inviteRedeemed = args.invite\n ? await redeemInviteCode(\n {\n ...args,\n code: args.invite,\n },\n walletResult.value\n )\n : false;\n\n if (!inviteRedeemed) {\n await addFunds({\n args,\n wallets: walletResult.value,\n });\n }\n\n outro(chalk.bold.green('Your agentcash MCP server is ready to use!'));\n};\n","import z from 'zod';\n\nimport { select, outro } from '@clack/prompts';\n\nimport chalk from 'chalk';\n\nimport { clientMetadata, Clients } from '../clients';\n\nimport type { InstallArgs } from '..';\nimport type { GlobalFlags } from '@/types';\n\nexport const getClient = async ({ client, yes }: GlobalFlags<InstallArgs>) => {\n if (yes) {\n if (!client) {\n throw new Error(\n `Client is required when yes is true. Pass --client as one of these values: ${Object.values(Clients).join(', ')}`\n );\n }\n return client;\n }\n if (client) {\n return client;\n }\n const selectedClient = await select({\n message: 'Where would you like to install the agentcash MCP server?',\n options: Object.values(Clients).map(client => {\n const metadata = clientMetadata[client];\n return {\n label: metadata.name,\n value: client,\n };\n }),\n maxItems: 7,\n });\n\n const parsedClientSelection = z.enum(Clients).safeParse(selectedClient);\n if (parsedClientSelection.success) {\n return parsedClientSelection.data;\n }\n outro(chalk.bold.red('No MCP client selected'));\n process.exit(0);\n};\n","import chalk from 'chalk';\nimport { log, spinner } from '@clack/prompts';\n\nimport { wait } from '@/cli/lib/wait';\n\nimport { redeemInviteCode as redeemInviteCodeLib } from '@/shared/redeem-invite';\nimport { getTxExplorerUrl, Network } from '@agentcash/networks';\n\nimport type { RedeemInviteArgs } from '@/shared/redeem-invite';\nimport type { GlobalFlags } from '@/types';\nimport type { Wallets } from '@/wallet';\n\nconst SURFACE = 'cli:redeem-invite';\n\nexport const redeemInviteCode = async (\n args: GlobalFlags<RedeemInviteArgs>,\n wallets: Wallets\n) => {\n const s = spinner();\n\n if (!args.yes) {\n s.start('Redeeming invite code...');\n }\n\n const result = await redeemInviteCodeLib(SURFACE, args, args, wallets);\n\n return result.match(\n async ({ amount, txHash, network }) => {\n if (!args.yes) {\n s.stop('Invite code redeemed successfully!');\n\n await wait({\n startText: 'Processing...',\n stopText: chalk.green(\n `${chalk.bold(amount)} USDC has been sent to your wallet!`\n ),\n ms: 1000,\n });\n }\n\n const resolvedNetwork =\n network === Network.SOLANA ? Network.SOLANA : Network.BASE;\n log.info(\n chalk.dim(`Transaction: ${getTxExplorerUrl(txHash, resolvedNetwork)}`)\n );\n\n return true;\n },\n error => {\n if (!args.yes) {\n s.stop('Invite code redemption failed');\n }\n log.warning(\n chalk.yellow(`Failed to redeem invite code: ${error.message}`)\n );\n return false;\n }\n );\n};\n","import chalk from 'chalk';\nimport { log, spinner } from '@clack/prompts';\n\nimport { getBalance } from '@/shared/balance';\nimport { promptDeposit } from '@/cli/lib/deposit';\n\nimport { Network } from '@agentcash/networks';\n\nimport type { Wallets } from '@/wallet';\nimport type { GlobalFlags } from '@/types';\n\ninterface AddFundsProps {\n args: GlobalFlags;\n wallets: Wallets;\n}\n\nexport const addFunds = async ({ args, wallets }: AddFundsProps) => {\n const { start, stop } = spinner();\n\n start('Checking balance...');\n const balanceResult = await getBalance(\n 'add-funds',\n {\n address: wallets.evm.address,\n network: Network.BASE,\n },\n args\n );\n\n if (balanceResult.isOk()) {\n stop(`Balance: ${chalk.bold(`${balanceResult.value.balance} USDC`)} `);\n } else {\n stop(`Error: ${balanceResult.error.message}`);\n return;\n }\n\n const balance = balanceResult.value.balance;\n\n if (balance === 0) {\n log.info('To use paid API tools, you will need USDC in your wallet.');\n await promptDeposit('add-funds', args, wallets);\n } else {\n if (balance < 1) {\n log.warning(\n chalk.bold(`Your balance is low ($${balance}). Consider topping up.`)\n );\n await promptDeposit('install', args, wallets);\n }\n }\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/install/index.ts","../../src/cli/commands/install/1-get-client/index.ts","../../src/cli/commands/install/3-redeem-invite/index.ts","../../src/cli/commands/install/4-add-funds/index.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { intro, outro } from '@clack/prompts';\n\nimport { log } from '@/shared/log';\n\nimport { getClient } from './1-get-client';\nimport { addServer } from './2-add-server';\nimport { redeemInviteCode } from './3-redeem-invite';\nimport { addFunds } from './4-add-funds';\n\nimport { getWallet } from '@/wallet';\n\nimport type { Command } from '@/types';\nimport type { Clients } from './clients';\n\nexport interface InstallArgs {\n client?: Clients;\n}\n\nexport const installMcpServer: Command<InstallArgs> = async args => {\n intro(chalk.green.bold(`Install agentcash MCP`));\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n outro(chalk.bold.red('Failed to get wallet'));\n process.exit(1);\n }\n\n const client = await getClient(args);\n\n await addServer(client, args);\n\n const inviteRedeemed = args.invite\n ? await redeemInviteCode(\n {\n ...args,\n code: args.invite,\n },\n walletResult.value\n )\n : false;\n\n if (!inviteRedeemed) {\n await addFunds({\n args,\n wallets: walletResult.value,\n });\n }\n\n outro(chalk.bold.green('Your agentcash MCP server is ready to use!'));\n};\n","import z from 'zod';\n\nimport { select, outro } from '@clack/prompts';\n\nimport chalk from 'chalk';\n\nimport { clientMetadata, Clients } from '../clients';\n\nimport type { InstallArgs } from '..';\nimport type { GlobalFlags } from '@/types';\n\nexport const getClient = async ({ client, yes }: GlobalFlags<InstallArgs>) => {\n if (yes) {\n if (!client) {\n throw new Error(\n `Client is required when yes is true. Pass --client as one of these values: ${Object.values(Clients).join(', ')}`\n );\n }\n return client;\n }\n if (client) {\n return client;\n }\n const selectedClient = await select({\n message: 'Where would you like to install the agentcash MCP server?',\n options: Object.values(Clients).map(client => {\n const metadata = clientMetadata[client];\n return {\n label: metadata.name,\n value: client,\n };\n }),\n maxItems: 7,\n });\n\n const parsedClientSelection = z.enum(Clients).safeParse(selectedClient);\n if (parsedClientSelection.success) {\n return parsedClientSelection.data;\n }\n outro(chalk.bold.red('No MCP client selected'));\n process.exit(0);\n};\n","import chalk from 'chalk';\nimport { log, spinner } from '@clack/prompts';\n\nimport { wait } from '@/cli/lib/wait';\n\nimport { redeemInviteCode as redeemInviteCodeLib } from '@/shared/redeem-invite';\nimport { getTxExplorerUrl, Network } from '@agentcash/networks';\n\nimport type { RedeemInviteArgs } from '@/shared/redeem-invite';\nimport type { GlobalFlags } from '@/types';\nimport type { Wallets } from '@/wallet';\n\nconst SURFACE = 'cli:redeem-invite';\n\nexport const redeemInviteCode = async (\n args: GlobalFlags<RedeemInviteArgs>,\n wallets: Wallets\n) => {\n const s = spinner();\n\n if (!args.yes) {\n s.start('Redeeming invite code...');\n }\n\n const result = await redeemInviteCodeLib(SURFACE, args, args, wallets);\n\n return result.match(\n async ({ amount, txHash, network }) => {\n if (!args.yes) {\n s.stop('Invite code redeemed successfully!');\n\n await wait({\n startText: 'Processing...',\n stopText: chalk.green(\n `${chalk.bold(amount)} USDC has been sent to your wallet!`\n ),\n ms: 1000,\n });\n }\n\n const resolvedNetwork =\n network === Network.SOLANA ? Network.SOLANA : Network.BASE;\n log.info(\n chalk.dim(`Transaction: ${getTxExplorerUrl(txHash, resolvedNetwork)}`)\n );\n\n return true;\n },\n error => {\n if (!args.yes) {\n s.stop('Invite code redemption failed');\n }\n log.warning(\n chalk.yellow(`Failed to redeem invite code: ${error.message}`)\n );\n return false;\n }\n );\n};\n","import chalk from 'chalk';\nimport { log, spinner } from '@clack/prompts';\n\nimport { getBalance } from '@/shared/balance';\nimport { promptDeposit } from '@/cli/lib/deposit';\n\nimport { Network } from '@agentcash/networks';\n\nimport type { Wallets } from '@/wallet';\nimport type { GlobalFlags } from '@/types';\n\ninterface AddFundsProps {\n args: GlobalFlags;\n wallets: Wallets;\n}\n\nexport const addFunds = async ({ args, wallets }: AddFundsProps) => {\n const { start, stop } = spinner();\n\n start('Checking balance...');\n const balanceResult = await getBalance(\n 'add-funds',\n {\n address: wallets.evm.address,\n network: Network.BASE,\n },\n args\n );\n\n if (balanceResult.isOk()) {\n stop(`Balance: ${chalk.bold(`${balanceResult.value.balance} USDC`)} `);\n } else {\n stop(`Error: ${balanceResult.error.message}`);\n return;\n }\n\n const balance = balanceResult.value.balance;\n\n if (balance === 0) {\n log.info('To use paid API tools, you will need USDC in your wallet.');\n await promptDeposit('add-funds', args, wallets);\n } else {\n if (balance < 1) {\n log.warning(\n chalk.bold(`Your balance is low ($${balance}). Consider topping up.`)\n );\n await promptDeposit('install', args, wallets);\n }\n }\n};\n"],"mappings":"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","names":["chalk","outro","client","chalk","log","redeemInviteCode","chalk","log","chalk","log","spinner","spinner","chalk","log","chalk","outro","redeemInviteCode"]}
|