agentcash 0.14.1 → 0.14.2

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.
Files changed (55) hide show
  1. package/dist/cjs/run-server.cjs +21 -11
  2. package/dist/esm/{add-skill-JHBOH5SG.js → add-skill-CDIK57A3.js} +4 -4
  3. package/dist/esm/{bridge-YU2PE54M.js → bridge-6WMUV3ML.js} +3 -3
  4. package/dist/esm/{check-ITXJS2Z6.js → check-D5DZ6Y3T.js} +4 -4
  5. package/dist/esm/{chunk-ICTY7IIE.js → chunk-3SEI5AS3.js} +2 -2
  6. package/dist/esm/{chunk-Y2J274RB.js → chunk-CFSSHSBN.js} +2 -2
  7. package/dist/esm/{chunk-Y4BYJBYU.js → chunk-FV6DADHO.js} +2 -2
  8. package/dist/esm/{chunk-6I5J7IHC.js → chunk-K627XZI4.js} +2 -2
  9. package/dist/esm/{chunk-JWU363NX.js → chunk-KMS4TVJY.js} +2 -2
  10. package/dist/esm/{chunk-V3HBA7NZ.js → chunk-KSW2MGQR.js} +12 -4
  11. package/dist/esm/chunk-KSW2MGQR.js.map +1 -0
  12. package/dist/esm/{chunk-GZ5DKXKY.js → chunk-RYEE6W2Y.js} +2 -2
  13. package/dist/esm/{chunk-XU3KTFR5.js → chunk-SCBLFGL2.js} +3 -3
  14. package/dist/esm/{chunk-CR2YGI3I.js → chunk-SFESERJN.js} +9 -4
  15. package/dist/esm/chunk-SFESERJN.js.map +1 -0
  16. package/dist/esm/{chunk-PAVGIVNI.js → chunk-VR7LHQKH.js} +2 -2
  17. package/dist/esm/{discover-654M2PZ3.js → discover-X557BWGS.js} +6 -4
  18. package/dist/esm/discover-X557BWGS.js.map +1 -0
  19. package/dist/esm/{fetch-GPYZNSPB.js → fetch-45YPD37H.js} +4 -4
  20. package/dist/esm/index.js +28 -18
  21. package/dist/esm/index.js.map +1 -1
  22. package/dist/esm/{install-6W2Z2CWU.js → install-LTQYCDBA.js} +3 -3
  23. package/dist/esm/{onboard-HONVULXC.js → onboard-MAZZ4UDV.js} +3 -3
  24. package/dist/esm/{origins-JAC2K5A4.js → origins-XG6O5K27.js} +4 -4
  25. package/dist/esm/{report-error-D44QKQHM.js → report-error-UPPBICH6.js} +3 -3
  26. package/dist/esm/{search-WV2FO7OG.js → search-VYYPNNIU.js} +9 -4
  27. package/dist/esm/search-VYYPNNIU.js.map +1 -0
  28. package/dist/esm/{server-G7SXDQJD.js → server-T2RYRCCO.js} +2 -2
  29. package/dist/esm/{server-GZG3KSPG.js → server-Z6OTHKZR.js} +10 -13
  30. package/dist/esm/{server-GZG3KSPG.js.map → server-Z6OTHKZR.js.map} +1 -1
  31. package/dist/esm/{try-36SR5JEG.js → try-UYLQPTBJ.js} +6 -4
  32. package/dist/esm/try-UYLQPTBJ.js.map +1 -0
  33. package/package.json +2 -2
  34. package/dist/esm/chunk-CR2YGI3I.js.map +0 -1
  35. package/dist/esm/chunk-V3HBA7NZ.js.map +0 -1
  36. package/dist/esm/discover-654M2PZ3.js.map +0 -1
  37. package/dist/esm/search-WV2FO7OG.js.map +0 -1
  38. package/dist/esm/try-36SR5JEG.js.map +0 -1
  39. /package/dist/esm/{add-skill-JHBOH5SG.js.map → add-skill-CDIK57A3.js.map} +0 -0
  40. /package/dist/esm/{bridge-YU2PE54M.js.map → bridge-6WMUV3ML.js.map} +0 -0
  41. /package/dist/esm/{check-ITXJS2Z6.js.map → check-D5DZ6Y3T.js.map} +0 -0
  42. /package/dist/esm/{chunk-ICTY7IIE.js.map → chunk-3SEI5AS3.js.map} +0 -0
  43. /package/dist/esm/{chunk-Y2J274RB.js.map → chunk-CFSSHSBN.js.map} +0 -0
  44. /package/dist/esm/{chunk-Y4BYJBYU.js.map → chunk-FV6DADHO.js.map} +0 -0
  45. /package/dist/esm/{chunk-6I5J7IHC.js.map → chunk-K627XZI4.js.map} +0 -0
  46. /package/dist/esm/{chunk-JWU363NX.js.map → chunk-KMS4TVJY.js.map} +0 -0
  47. /package/dist/esm/{chunk-GZ5DKXKY.js.map → chunk-RYEE6W2Y.js.map} +0 -0
  48. /package/dist/esm/{chunk-XU3KTFR5.js.map → chunk-SCBLFGL2.js.map} +0 -0
  49. /package/dist/esm/{chunk-PAVGIVNI.js.map → chunk-VR7LHQKH.js.map} +0 -0
  50. /package/dist/esm/{fetch-GPYZNSPB.js.map → fetch-45YPD37H.js.map} +0 -0
  51. /package/dist/esm/{install-6W2Z2CWU.js.map → install-LTQYCDBA.js.map} +0 -0
  52. /package/dist/esm/{onboard-HONVULXC.js.map → onboard-MAZZ4UDV.js.map} +0 -0
  53. /package/dist/esm/{origins-JAC2K5A4.js.map → origins-XG6O5K27.js.map} +0 -0
  54. /package/dist/esm/{report-error-D44QKQHM.js.map → report-error-UPPBICH6.js.map} +0 -0
  55. /package/dist/esm/{server-G7SXDQJD.js.map → server-T2RYRCCO.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs, { type Argv } from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { clients, Clients } from './cli/commands/install/clients';\nimport {\n paymentNetworks,\n paymentProtocols,\n requestMethodValues,\n} from '@/shared/request/schemas/core';\nimport { MCP_VERSION } from '@/shared/version';\nimport {\n DESCRIPTIONS,\n TOOL_PARAMS,\n buildServerInstructions,\n} from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { randomBytes } from 'crypto';\nimport type { GlobalFlags } from './types';\n\nconst isClaudeCode = Boolean(process.env.CLAUDECODE);\nconst defaultYes = isClaudeCode || Boolean(process.env.CI);\n\nconst configureFetchCommand = (\n command: Argv<GlobalFlags>,\n params: typeof TOOL_PARAMS.fetch,\n epilogue: string\n) =>\n command\n .positional('url', {\n type: 'string',\n description: params.url,\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: params.method,\n choices: requestMethodValues,\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: params.body,\n })\n .option('headers', {\n alias: ['H', 'header'],\n type: 'string',\n array: true,\n description: params.headers,\n })\n .option('timeout', {\n type: 'number',\n description: params.timeout,\n })\n .option('payment-protocol', {\n alias: 'p',\n type: 'string',\n description: params.paymentProtocol,\n choices: paymentProtocols,\n })\n .option('payment-network', {\n type: 'string',\n description: params.paymentNetwork,\n choices: paymentNetworks,\n })\n .option('max-amount', {\n type: 'number',\n description: params.maxAmount,\n })\n .epilogue(epilogue);\n\nvoid yargs(hideBin(process.argv))\n .scriptName('agentcash')\n .usage('$0 [command] [options]')\n .option('dev', {\n type: 'boolean',\n description: 'Enable dev mode (use localhost endpoints)',\n default: false,\n })\n .option('invite', {\n type: 'string',\n description: 'Invite code to redeem for starter money',\n required: false,\n })\n .option('yes', {\n alias: 'y',\n type: 'boolean',\n description: 'Yes to all prompts',\n default: defaultYes ? true : undefined,\n })\n .option('sessionId', {\n type: 'string',\n description:\n 'Session ID for matching requests (auto-generated if not provided)',\n required: false,\n default: randomBytes(16).toString('hex'),\n })\n .option('provider', {\n type: 'string',\n description: 'Provider to use for the MCP server',\n required: false,\n default: `agentcash@${MCP_VERSION}`,\n })\n .option('format', {\n type: 'string',\n description:\n 'Output format: json (default for pipes) or pretty (default for TTY)',\n choices: ['json', 'pretty'] as const,\n default: process.stdout.isTTY ? ('pretty' as const) : ('json' as const),\n })\n .option('quiet', {\n alias: 'q',\n type: 'boolean',\n description: 'Suppress stderr output',\n default: false,\n })\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n description: 'Enable verbose logging (debug output to stderr)',\n default: false,\n })\n .middleware(async argv => {\n // Configure CLI context for shared modules (like logging)\n if (argv.verbose) {\n const { configureCliContext } = await import('@/cli/lib/context');\n configureCliContext({ verbose: true });\n }\n })\n // ============================================================\n // Core CLI Commands (for agent/programmatic use)\n // ============================================================\n .command(\n 'fetch <url>',\n DESCRIPTIONS.fetch.cli,\n yargs =>\n configureFetchCommand(\n yargs,\n TOOL_PARAMS.fetch,\n DESCRIPTIONS.fetch.epilogue\n ),\n async args => {\n const { fetchCommand } = await import('@/cli/commands/fetch');\n await fetchCommand(args);\n }\n )\n .command(\n 'fetch-auth <url>',\n DESCRIPTIONS.fetchWithAuth.cli,\n yargs =>\n configureFetchCommand(\n yargs,\n TOOL_PARAMS.fetchWithAuth,\n DESCRIPTIONS.fetchWithAuth.epilogue\n ),\n async args => {\n const { fetchCommand } = await import('@/cli/commands/fetch');\n await fetchCommand(args);\n }\n )\n .command(\n 'check <url>',\n DESCRIPTIONS.checkEndpointSchema.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: TOOL_PARAMS.checkEndpointSchema.url,\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: TOOL_PARAMS.checkEndpointSchema.method,\n choices: requestMethodValues,\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: TOOL_PARAMS.checkEndpointSchema.body,\n })\n .option('headers', {\n alias: ['H', 'header'],\n type: 'string',\n array: true,\n description: TOOL_PARAMS.checkEndpointSchema.headers,\n })\n .epilogue(DESCRIPTIONS.checkEndpointSchema.epilogue),\n async args => {\n const { checkCommand } = await import('@/cli/commands/check');\n await checkCommand({\n ...args,\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n });\n }\n )\n .command(\n 'try <url>',\n DESCRIPTIONS.try.cli,\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: TOOL_PARAMS.try.url,\n demandOption: true,\n }),\n async args => {\n const { tryCommand } = await import('@/cli/commands/try');\n await tryCommand(args);\n }\n )\n .command(\n 'search <query>',\n DESCRIPTIONS.search.cli,\n yargs =>\n yargs.positional('query', {\n type: 'string',\n description: TOOL_PARAMS.search.query,\n demandOption: true,\n }),\n async args => {\n const { searchCommand } = await import('@/cli/commands/search');\n await searchCommand(args);\n }\n )\n .command(\n 'discover <url>',\n DESCRIPTIONS.discoverApiEndpoints.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: TOOL_PARAMS.discoverApiEndpoints.url,\n demandOption: true,\n })\n .option('include-guidance', {\n type: 'boolean',\n description: TOOL_PARAMS.discoverApiEndpoints.includeGuidance,\n })\n .epilogue(DESCRIPTIONS.discoverApiEndpoints.epilogue),\n async args => {\n const { discoverCommand } = await import('@/cli/commands/discover');\n await discoverCommand(args);\n }\n )\n .command(\n 'register <url>',\n 'Register an origin with agentcash (discover + index endpoints)',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { registerCommand } = await import('@/cli/commands/register');\n await registerCommand(args);\n }\n )\n .command(\n 'add <url>',\n 'Add an origin and install its skill to agent clients. The origin is added to the MCP server description.',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: TOOL_PARAMS.add.url,\n demandOption: true,\n }),\n async args => {\n const { addSkillCommand } = await import('@/cli/commands/add-skill');\n await addSkillCommand(args);\n }\n )\n .command(\n 'origins',\n 'Manage registered origins',\n yargs =>\n yargs\n .command(\n 'add <url>',\n 'Add an origin to agent clients. The origin is added to the MCP server description.',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { originsAddCommand } =\n await import('@/cli/commands/origins');\n await originsAddCommand(args);\n }\n )\n .command(\n 'list',\n 'List all registered origins',\n yargs => yargs,\n async args => {\n const { originsListCommand } =\n await import('@/cli/commands/origins');\n await originsListCommand(args);\n }\n )\n .command(\n 'remove <url>',\n 'Remove a user-added origin',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to remove',\n demandOption: true,\n }),\n async args => {\n const { originsRemoveCommand } =\n await import('@/cli/commands/origins');\n await originsRemoveCommand(args);\n }\n )\n .demandCommand(1, 'You must specify an origins subcommand')\n .strict(),\n () => {\n // Show help for origins command\n }\n )\n .command(\n 'onboard [code]',\n 'Non-interactive onboarding flow for agentcash wallet + MCP setup',\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: 'The invite code to redeem (optional)',\n }),\n async args => {\n const { onboardCommand } = await import('@/cli/commands/onboard');\n await onboardCommand({ ...args, code: args.code ?? args.invite });\n }\n )\n .command(\n 'wallet',\n 'Deprecated wallet command aliases',\n yargs =>\n yargs\n .command(\n 'info',\n \"Deprecated alias. Prints migration guidance for 'balance' and 'accounts'.\",\n yargs => yargs,\n async args => {\n const { legacyWalletInfoCommand } =\n await import('@/cli/commands/wallet');\n await legacyWalletInfoCommand(args);\n }\n )\n .command(\n 'balance',\n \"Deprecated alias. Prints migration guidance for 'balance'.\",\n yargs => yargs,\n async args => {\n const { legacyWalletBalanceCommand } =\n await import('@/cli/commands/wallet');\n await legacyWalletBalanceCommand(args);\n }\n )\n .command(\n 'redeem <code>',\n \"Deprecated alias. Prints migration guidance for 'redeem <code>'.\",\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: TOOL_PARAMS.redeemInvite.code,\n demandOption: true,\n }),\n async args => {\n const { legacyWalletRedeemCommand } =\n await import('@/cli/commands/wallet');\n await legacyWalletRedeemCommand(args);\n }\n )\n .command(\n 'address',\n 'Deprecated alias for wallet address lookup.',\n yargs => yargs,\n async args => {\n const { legacyWalletAddressCommand } =\n await import('@/cli/commands/wallet');\n await legacyWalletAddressCommand(args);\n }\n )\n .demandCommand(1, 'You must specify a wallet subcommand')\n .strict(),\n () => {\n // Show help for wallet command\n }\n )\n .command(\n 'balance',\n DESCRIPTIONS.getBalance.cli,\n yargs => yargs,\n async args => {\n const { getBalanceCommand } = await import('@/cli/commands/wallet');\n await getBalanceCommand(args);\n }\n )\n .command(\n 'accounts',\n DESCRIPTIONS.listAccounts.cli,\n yargs => yargs,\n async args => {\n const { listAccountsCommand } = await import('@/cli/commands/wallet');\n await listAccountsCommand(args);\n }\n )\n .command(\n 'redeem <code>',\n DESCRIPTIONS.redeemInvite.cli,\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: TOOL_PARAMS.redeemInvite.code,\n demandOption: true,\n }),\n async args => {\n const { walletRedeemCommand } = await import('@/cli/commands/wallet');\n await walletRedeemCommand(args);\n }\n )\n .command(\n 'settings',\n 'View and update user settings',\n yargs =>\n yargs\n .command(\n 'get',\n 'Show current settings',\n yargs => yargs,\n async args => {\n const { settingsGetCommand } =\n await import('@/cli/commands/settings');\n await settingsGetCommand(args);\n }\n )\n .command(\n 'set <key> <value>',\n 'Update a setting (e.g. settings set maxAmount 10)',\n yargs =>\n yargs\n .positional('key', {\n type: 'string',\n description: 'Setting name (e.g. maxAmount)',\n demandOption: true,\n })\n .positional('value', {\n type: 'string',\n description: 'Setting value',\n demandOption: true,\n }),\n async args => {\n const { settingsSetCommand } =\n await import('@/cli/commands/settings');\n await settingsSetCommand(args);\n }\n )\n .demandCommand(1, 'You must specify a settings subcommand')\n .strict(),\n () => {\n // Show help for settings command\n }\n )\n .command(\n 'report-error',\n DESCRIPTIONS.reportError.cli,\n yargs =>\n yargs\n .option('tool', {\n type: 'string',\n description: TOOL_PARAMS.reportError.tool,\n demandOption: true,\n })\n .option('summary', {\n type: 'string',\n description: TOOL_PARAMS.reportError.summary,\n demandOption: true,\n })\n .option('error-message', {\n type: 'string',\n description: TOOL_PARAMS.reportError.errorMessage,\n demandOption: true,\n })\n .option('resource', {\n type: 'string',\n description: TOOL_PARAMS.reportError.resource,\n })\n .option('stack', {\n type: 'string',\n description: TOOL_PARAMS.reportError.stack,\n })\n .option('full-report', {\n type: 'string',\n description: TOOL_PARAMS.reportError.fullReport,\n }),\n async args => {\n const { reportErrorCommand } =\n await import('@/cli/commands/report-error');\n await reportErrorCommand(args);\n }\n )\n .command(\n DESCRIPTIONS.bridge.toolNames.cli,\n DESCRIPTIONS.bridge.cli,\n yargs =>\n yargs\n .option('from', {\n type: 'string',\n description: TOOL_PARAMS.bridge.from,\n choices: paymentNetworks,\n required: true,\n })\n .option('to', {\n type: 'string',\n description: TOOL_PARAMS.bridge.to,\n choices: paymentNetworks,\n required: true,\n })\n .option('amount', {\n type: 'number',\n description: TOOL_PARAMS.bridge.amount,\n required: true,\n }),\n async args => {\n const { bridgeCommand } = await import('@/cli/commands/bridge');\n await bridgeCommand(args);\n }\n )\n // ============================================================\n // Server & Installation Commands\n // ============================================================\n .command(\n ['$0', 'server'],\n 'Start the MCP server (default when no command specified)',\n yargs => yargs,\n async args => {\n const { serverCommand } = await import('@/cli/commands/server');\n await serverCommand(args);\n }\n )\n .command(\n 'install',\n 'Install the MCP server configuration for a client',\n yargs =>\n yargs.option('client', {\n type: 'string',\n description: 'The client name',\n choices: clients,\n required: false,\n default: isClaudeCode ? Clients.ClaudeCode : undefined,\n }),\n async args => {\n const { installMcpServer } = await import('@/cli/commands/install');\n await installMcpServer(args);\n }\n )\n .command(\n 'fund',\n 'Open the funding page to add USDC to your wallet',\n yargs => yargs,\n async args => {\n const { fundMcpServer } = await import('@/cli/commands/fund');\n await fundMcpServer(args);\n }\n )\n .example(\n '$0 fetch \"https://stableenrich.dev/api/apollo/people-enrich\" -m POST -b \\'{\"email\":\"user@example.com\"}\\'',\n 'Fetch with x402 payment'\n )\n .example(\n '$0 check \"https://stableenrich.dev/api/apollo/people-enrich\"',\n 'Check endpoint pricing'\n )\n .example(\n '$0 discover \"https://stableenrich.dev\"',\n 'Discover endpoints on origin'\n )\n .example(\n '$0 register \"https://stableenrich.dev\"',\n 'Register origin with agentcash'\n )\n .example(\n '$0 onboard ABC123',\n 'Install onboarding skill, configure MCP, and redeem an invite'\n )\n .example('$0 search \"flight data\"', 'Search for APIs by description')\n .example('$0 balance', 'Get wallet balance')\n .example('$0 accounts', 'List wallet accounts by network')\n .example('$0 redeem ABC123', 'Redeem invite code')\n .example('$0', 'Start MCP server (default)')\n .example('$0 install --client cursor', 'Install MCP for Cursor')\n .strict()\n .epilogue(buildServerInstructions(loadUserOrigins()))\n .help()\n .version(MCP_VERSION)\n .parseAsync()\n .catch(err => {\n // Output error in JSON format for agent consumption\n const response = {\n success: false,\n error: {\n code: 'GENERAL_ERROR',\n message: err instanceof Error ? err.message : String(err),\n surface: 'cli',\n cause: 'unknown',\n },\n };\n console.log(JSON.stringify(response, null, 2));\n process.exit(1);\n });\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,OAAO,WAA0B;AACjC,SAAS,eAAe;AAcxB,SAAS,mBAAmB;AAG5B,IAAM,eAAe,QAAQ,QAAQ,IAAI,UAAU;AACnD,IAAM,aAAa,gBAAgB,QAAQ,QAAQ,IAAI,EAAE;AAEzD,IAAM,wBAAwB,CAC5B,SACA,QACA,aAEA,QACG,WAAW,OAAO;AAAA,EACjB,MAAM;AAAA,EACN,aAAa,OAAO;AAAA,EACpB,cAAc;AAChB,CAAC,EACA,OAAO,UAAU;AAAA,EAChB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa,OAAO;AAAA,EACpB,SAAS;AACX,CAAC,EACA,OAAO,QAAQ;AAAA,EACd,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa,OAAO;AACtB,CAAC,EACA,OAAO,WAAW;AAAA,EACjB,OAAO,CAAC,KAAK,QAAQ;AAAA,EACrB,MAAM;AAAA,EACN,OAAO;AAAA,EACP,aAAa,OAAO;AACtB,CAAC,EACA,OAAO,WAAW;AAAA,EACjB,MAAM;AAAA,EACN,aAAa,OAAO;AACtB,CAAC,EACA,OAAO,oBAAoB;AAAA,EAC1B,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa,OAAO;AAAA,EACpB,SAAS;AACX,CAAC,EACA,OAAO,mBAAmB;AAAA,EACzB,MAAM;AAAA,EACN,aAAa,OAAO;AAAA,EACpB,SAAS;AACX,CAAC,EACA,OAAO,cAAc;AAAA,EACpB,MAAM;AAAA,EACN,aAAa,OAAO;AACtB,CAAC,EACA,SAAS,QAAQ;AAEtB,KAAK,MAAM,QAAQ,QAAQ,IAAI,CAAC,EAC7B,WAAW,WAAW,EACtB,MAAM,wBAAwB,EAC9B,OAAO,OAAO;AAAA,EACb,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,OAAO,UAAU;AAAA,EAChB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AACZ,CAAC,EACA,OAAO,OAAO;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS,aAAa,OAAO;AAC/B,CAAC,EACA,OAAO,aAAa;AAAA,EACnB,MAAM;AAAA,EACN,aACE;AAAA,EACF,UAAU;AAAA,EACV,SAAS,YAAY,EAAE,EAAE,SAAS,KAAK;AACzC,CAAC,EACA,OAAO,YAAY;AAAA,EAClB,MAAM;AAAA,EACN,aAAa;AAAA,EACb,UAAU;AAAA,EACV,SAAS,aAAa,WAAW;AACnC,CAAC,EACA,OAAO,UAAU;AAAA,EAChB,MAAM;AAAA,EACN,aACE;AAAA,EACF,SAAS,CAAC,QAAQ,QAAQ;AAAA,EAC1B,SAAS,QAAQ,OAAO,QAAS,WAAsB;AACzD,CAAC,EACA,OAAO,SAAS;AAAA,EACf,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,OAAO,WAAW;AAAA,EACjB,OAAO;AAAA,EACP,MAAM;AAAA,EACN,aAAa;AAAA,EACb,SAAS;AACX,CAAC,EACA,WAAW,OAAM,SAAQ;AAExB,MAAI,KAAK,SAAS;AAChB,UAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,uBAAmB;AAChE,wBAAoB,EAAE,SAAS,KAAK,CAAC;AAAA,EACvC;AACF,CAAC,EAIA;AAAA,EACC;AAAA,EACA,aAAa,MAAM;AAAA,EACnB,CAAAA,WACE;AAAA,IACEA;AAAA,IACA,YAAY;AAAA,IACZ,aAAa,MAAM;AAAA,EACrB;AAAA,EACF,OAAM,SAAQ;AACZ,UAAM,EAAE,aAAa,IAAI,MAAM,OAAO,qBAAsB;AAC5D,UAAM,aAAa,IAAI;AAAA,EACzB;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,cAAc;AAAA,EAC3B,CAAAA,WACE;AAAA,IACEA;AAAA,IACA,YAAY;AAAA,IACZ,aAAa,cAAc;AAAA,EAC7B;AAAA,EACF,OAAM,SAAQ;AACZ,UAAM,EAAE,aAAa,IAAI,MAAM,OAAO,qBAAsB;AAC5D,UAAM,aAAa,IAAI;AAAA,EACzB;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,oBAAoB;AAAA,EACjC,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,aAAa,YAAY,oBAAoB;AAAA,IAC7C,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,UAAU;AAAA,IAChB,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa,YAAY,oBAAoB;AAAA,IAC7C,SAAS;AAAA,EACX,CAAC,EACA,OAAO,QAAQ;AAAA,IACd,OAAO;AAAA,IACP,MAAM;AAAA,IACN,aAAa,YAAY,oBAAoB;AAAA,EAC/C,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,OAAO,CAAC,KAAK,QAAQ;AAAA,IACrB,MAAM;AAAA,IACN,OAAO;AAAA,IACP,aAAa,YAAY,oBAAoB;AAAA,EAC/C,CAAC,EACA,SAAS,aAAa,oBAAoB,QAAQ;AAAA,EACvD,OAAM,SAAQ;AACZ,UAAM,EAAE,aAAa,IAAI,MAAM,OAAO,qBAAsB;AAC5D,UAAM,aAAa;AAAA,MACjB,GAAG;AAAA,MACH,KAAK,KAAK;AAAA,MACV,QAAQ,KAAK;AAAA,MACb,MAAM,KAAK;AAAA,MACX,SAAS,KAAK;AAAA,IAChB,CAAC;AAAA,EACH;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,IAAI;AAAA,EACjB,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,IACtB,MAAM;AAAA,IACN,aAAa,YAAY,IAAI;AAAA,IAC7B,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,WAAW,IAAI,MAAM,OAAO,mBAAoB;AACxD,UAAM,WAAW,IAAI;AAAA,EACvB;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,OAAO;AAAA,EACpB,CAAAA,WACEA,OAAM,WAAW,SAAS;AAAA,IACxB,MAAM;AAAA,IACN,aAAa,YAAY,OAAO;AAAA,IAChC,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,sBAAuB;AAC9D,UAAM,cAAc,IAAI;AAAA,EAC1B;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,qBAAqB;AAAA,EAClC,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,IACjB,MAAM;AAAA,IACN,aAAa,YAAY,qBAAqB;AAAA,IAC9C,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,oBAAoB;AAAA,IAC1B,MAAM;AAAA,IACN,aAAa,YAAY,qBAAqB;AAAA,EAChD,CAAC,EACA,SAAS,aAAa,qBAAqB,QAAQ;AAAA,EACxD,OAAM,SAAQ;AACZ,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,wBAAyB;AAClE,UAAM,gBAAgB,IAAI;AAAA,EAC5B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,IACtB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,wBAAyB;AAClE,UAAM,gBAAgB,IAAI;AAAA,EAC5B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,IACtB,MAAM;AAAA,IACN,aAAa,YAAY,IAAI;AAAA,IAC7B,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,gBAAgB,IAAI,MAAM,OAAO,yBAA0B;AACnE,UAAM,gBAAgB,IAAI;AAAA,EAC5B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,MACtB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AAAA,IACH,OAAM,SAAQ;AACZ,YAAM,EAAE,kBAAkB,IACxB,MAAM,OAAO,uBAAwB;AACvC,YAAM,kBAAkB,IAAI;AAAA,IAC9B;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,mBAAmB,IACzB,MAAM,OAAO,uBAAwB;AACvC,YAAM,mBAAmB,IAAI;AAAA,IAC/B;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WACEA,OAAM,WAAW,OAAO;AAAA,MACtB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AAAA,IACH,OAAM,SAAQ;AACZ,YAAM,EAAE,qBAAqB,IAC3B,MAAM,OAAO,uBAAwB;AACvC,YAAM,qBAAqB,IAAI;AAAA,IACjC;AAAA,EACF,EACC,cAAc,GAAG,wCAAwC,EACzD,OAAO;AAAA,EACZ,MAAM;AAAA,EAEN;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,WAAW,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,aAAa;AAAA,EACf,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,eAAe,IAAI,MAAM,OAAO,uBAAwB;AAChE,UAAM,eAAe,EAAE,GAAG,MAAM,MAAM,KAAK,QAAQ,KAAK,OAAO,CAAC;AAAA,EAClE;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,wBAAwB,IAC9B,MAAM,OAAO,sBAAuB;AACtC,YAAM,wBAAwB,IAAI;AAAA,IACpC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,2BAA2B,IACjC,MAAM,OAAO,sBAAuB;AACtC,YAAM,2BAA2B,IAAI;AAAA,IACvC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WACEA,OAAM,WAAW,QAAQ;AAAA,MACvB,MAAM;AAAA,MACN,aAAa,YAAY,aAAa;AAAA,MACtC,cAAc;AAAA,IAChB,CAAC;AAAA,IACH,OAAM,SAAQ;AACZ,YAAM,EAAE,0BAA0B,IAChC,MAAM,OAAO,sBAAuB;AACtC,YAAM,0BAA0B,IAAI;AAAA,IACtC;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,2BAA2B,IACjC,MAAM,OAAO,sBAAuB;AACtC,YAAM,2BAA2B,IAAI;AAAA,IACvC;AAAA,EACF,EACC,cAAc,GAAG,sCAAsC,EACvD,OAAO;AAAA,EACZ,MAAM;AAAA,EAEN;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,WAAW;AAAA,EACxB,CAAAA,WAASA;AAAA,EACT,OAAM,SAAQ;AACZ,UAAM,EAAE,kBAAkB,IAAI,MAAM,OAAO,sBAAuB;AAClE,UAAM,kBAAkB,IAAI;AAAA,EAC9B;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,aAAa;AAAA,EAC1B,CAAAA,WAASA;AAAA,EACT,OAAM,SAAQ;AACZ,UAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,sBAAuB;AACpE,UAAM,oBAAoB,IAAI;AAAA,EAChC;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,aAAa;AAAA,EAC1B,CAAAA,WACEA,OAAM,WAAW,QAAQ;AAAA,IACvB,MAAM;AAAA,IACN,aAAa,YAAY,aAAa;AAAA,IACtC,cAAc;AAAA,EAChB,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,oBAAoB,IAAI,MAAM,OAAO,sBAAuB;AACpE,UAAM,oBAAoB,IAAI;AAAA,EAChC;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OACG;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WAASA;AAAA,IACT,OAAM,SAAQ;AACZ,YAAM,EAAE,mBAAmB,IACzB,MAAM,OAAO,wBAAyB;AACxC,YAAM,mBAAmB,IAAI;AAAA,IAC/B;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAAA,WACEA,OACG,WAAW,OAAO;AAAA,MACjB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,IAChB,CAAC,EACA,WAAW,SAAS;AAAA,MACnB,MAAM;AAAA,MACN,aAAa;AAAA,MACb,cAAc;AAAA,IAChB,CAAC;AAAA,IACL,OAAM,SAAQ;AACZ,YAAM,EAAE,mBAAmB,IACzB,MAAM,OAAO,wBAAyB;AACxC,YAAM,mBAAmB,IAAI;AAAA,IAC/B;AAAA,EACF,EACC,cAAc,GAAG,wCAAwC,EACzD,OAAO;AAAA,EACZ,MAAM;AAAA,EAEN;AACF,EACC;AAAA,EACC;AAAA,EACA,aAAa,YAAY;AAAA,EACzB,CAAAA,WACEA,OACG,OAAO,QAAQ;AAAA,IACd,MAAM;AAAA,IACN,aAAa,YAAY,YAAY;AAAA,IACrC,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,WAAW;AAAA,IACjB,MAAM;AAAA,IACN,aAAa,YAAY,YAAY;AAAA,IACrC,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,iBAAiB;AAAA,IACvB,MAAM;AAAA,IACN,aAAa,YAAY,YAAY;AAAA,IACrC,cAAc;AAAA,EAChB,CAAC,EACA,OAAO,YAAY;AAAA,IAClB,MAAM;AAAA,IACN,aAAa,YAAY,YAAY;AAAA,EACvC,CAAC,EACA,OAAO,SAAS;AAAA,IACf,MAAM;AAAA,IACN,aAAa,YAAY,YAAY;AAAA,EACvC,CAAC,EACA,OAAO,eAAe;AAAA,IACrB,MAAM;AAAA,IACN,aAAa,YAAY,YAAY;AAAA,EACvC,CAAC;AAAA,EACL,OAAM,SAAQ;AACZ,UAAM,EAAE,mBAAmB,IACzB,MAAM,OAAO,4BAA6B;AAC5C,UAAM,mBAAmB,IAAI;AAAA,EAC/B;AACF,EACC;AAAA,EACC,aAAa,OAAO,UAAU;AAAA,EAC9B,aAAa,OAAO;AAAA,EACpB,CAAAA,WACEA,OACG,OAAO,QAAQ;AAAA,IACd,MAAM;AAAA,IACN,aAAa,YAAY,OAAO;AAAA,IAChC,SAAS;AAAA,IACT,UAAU;AAAA,EACZ,CAAC,EACA,OAAO,MAAM;AAAA,IACZ,MAAM;AAAA,IACN,aAAa,YAAY,OAAO;AAAA,IAChC,SAAS;AAAA,IACT,UAAU;AAAA,EACZ,CAAC,EACA,OAAO,UAAU;AAAA,IAChB,MAAM;AAAA,IACN,aAAa,YAAY,OAAO;AAAA,IAChC,UAAU;AAAA,EACZ,CAAC;AAAA,EACL,OAAM,SAAQ;AACZ,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,sBAAuB;AAC9D,UAAM,cAAc,IAAI;AAAA,EAC1B;AACF,EAIC;AAAA,EACC,CAAC,MAAM,QAAQ;AAAA,EACf;AAAA,EACA,CAAAA,WAASA;AAAA,EACT,OAAM,SAAQ;AACZ,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,sBAAuB;AAC9D,UAAM,cAAc,IAAI;AAAA,EAC1B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WACEA,OAAM,OAAO,UAAU;AAAA,IACrB,MAAM;AAAA,IACN,aAAa;AAAA,IACb,SAAS;AAAA,IACT,UAAU;AAAA,IACV,SAAS,gDAAoC;AAAA,EAC/C,CAAC;AAAA,EACH,OAAM,SAAQ;AACZ,UAAM,EAAE,iBAAiB,IAAI,MAAM,OAAO,uBAAwB;AAClE,UAAM,iBAAiB,IAAI;AAAA,EAC7B;AACF,EACC;AAAA,EACC;AAAA,EACA;AAAA,EACA,CAAAA,WAASA;AAAA,EACT,OAAM,SAAQ;AACZ,UAAM,EAAE,cAAc,IAAI,MAAM,OAAO,oBAAqB;AAC5D,UAAM,cAAc,IAAI;AAAA,EAC1B;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC;AAAA,EACC;AAAA,EACA;AACF,EACC,QAAQ,2BAA2B,gCAAgC,EACnE,QAAQ,cAAc,oBAAoB,EAC1C,QAAQ,eAAe,iCAAiC,EACxD,QAAQ,oBAAoB,oBAAoB,EAChD,QAAQ,MAAM,4BAA4B,EAC1C,QAAQ,8BAA8B,wBAAwB,EAC9D,OAAO,EACP,SAAS,wBAAwB,gBAAgB,CAAC,CAAC,EACnD,KAAK,EACL,QAAQ,WAAW,EACnB,WAAW,EACX,MAAM,SAAO;AAEZ,QAAM,WAAW;AAAA,IACf,SAAS;AAAA,IACT,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG;AAAA,MACxD,SAAS;AAAA,MACT,OAAO;AAAA,IACT;AAAA,EACF;AACA,UAAQ,IAAI,KAAK,UAAU,UAAU,MAAM,CAAC,CAAC;AAC7C,UAAQ,KAAK,CAAC;AAChB,CAAC;","names":["yargs"]}
1
+ {"version":3,"sources":["../../src/index.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport yargs, { type Argv } from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { clients, Clients } from './cli/commands/install/clients';\nimport {\n paymentNetworks,\n paymentProtocols,\n requestMethodValues,\n} from '@/shared/request/schemas/core';\nimport { MCP_VERSION } from '@/shared/version';\nimport {\n DESCRIPTIONS,\n TOOL_PARAMS,\n buildServerInstructions,\n} from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { randomBytes } from 'crypto';\nimport type { GlobalFlags } from './types';\n\nconst isClaudeCode = Boolean(process.env.CLAUDECODE);\nconst defaultYes = isClaudeCode || Boolean(process.env.CI);\n\nconst configureFetchCommand = (\n command: Argv<GlobalFlags>,\n params: typeof TOOL_PARAMS.fetch,\n epilogue: string\n) =>\n command\n .positional('url', {\n type: 'string',\n description: params.url,\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: params.method,\n choices: requestMethodValues,\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: params.body,\n })\n .option('headers', {\n alias: ['H', 'header'],\n type: 'string',\n array: true,\n description: params.headers,\n })\n .option('timeout', {\n type: 'number',\n description: params.timeout,\n })\n .option('payment-protocol', {\n alias: 'p',\n type: 'string',\n description: params.paymentProtocol,\n choices: paymentProtocols,\n })\n .option('payment-network', {\n type: 'string',\n description: params.paymentNetwork,\n choices: paymentNetworks,\n })\n .option('max-amount', {\n type: 'number',\n description: params.maxAmount,\n })\n .epilogue(epilogue);\n\nvoid yargs(hideBin(process.argv))\n .scriptName('agentcash')\n .usage('$0 [command] [options]')\n .option('dev', {\n type: 'boolean',\n description: 'Enable dev mode (use localhost endpoints)',\n default: false,\n })\n .option('invite', {\n type: 'string',\n description: 'Invite code to redeem for starter money',\n required: false,\n })\n .option('yes', {\n alias: 'y',\n type: 'boolean',\n description: 'Yes to all prompts',\n default: defaultYes ? true : undefined,\n })\n .option('sessionId', {\n type: 'string',\n description:\n 'Session ID for matching requests (auto-generated if not provided)',\n required: false,\n default: randomBytes(16).toString('hex'),\n })\n .option('provider', {\n type: 'string',\n description: 'Provider to use for the MCP server',\n required: false,\n default: `agentcash@${MCP_VERSION}`,\n })\n .option('format', {\n type: 'string',\n description:\n 'Output format: json (default for pipes) or pretty (default for TTY)',\n choices: ['json', 'pretty'] as const,\n default: process.stdout.isTTY ? ('pretty' as const) : ('json' as const),\n })\n .option('quiet', {\n alias: 'q',\n type: 'boolean',\n description: 'Suppress stderr output',\n default: false,\n })\n .option('verbose', {\n alias: 'v',\n type: 'boolean',\n description: 'Enable verbose logging (debug output to stderr)',\n default: false,\n })\n .middleware(async argv => {\n // Configure CLI context for shared modules (like logging)\n if (argv.verbose) {\n const { configureCliContext } = await import('@/cli/lib/context');\n configureCliContext({ verbose: true });\n }\n })\n // ============================================================\n // Core CLI Commands (for agent/programmatic use)\n // ============================================================\n .command(\n 'fetch <url>',\n DESCRIPTIONS.fetch.cli,\n yargs =>\n configureFetchCommand(\n yargs,\n TOOL_PARAMS.fetch,\n DESCRIPTIONS.fetch.epilogue\n ),\n async args => {\n const { fetchCommand } = await import('@/cli/commands/fetch');\n await fetchCommand(args);\n }\n )\n .command(\n 'fetch-auth <url>',\n DESCRIPTIONS.fetchWithAuth.cli,\n yargs =>\n configureFetchCommand(\n yargs,\n TOOL_PARAMS.fetchWithAuth,\n DESCRIPTIONS.fetchWithAuth.epilogue\n ),\n async args => {\n const { fetchCommand } = await import('@/cli/commands/fetch');\n await fetchCommand(args);\n }\n )\n .command(\n 'check <url>',\n DESCRIPTIONS.checkEndpointSchema.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: TOOL_PARAMS.checkEndpointSchema.url,\n demandOption: true,\n })\n .option('method', {\n alias: 'm',\n type: 'string',\n description: TOOL_PARAMS.checkEndpointSchema.method,\n choices: requestMethodValues,\n })\n .option('body', {\n alias: 'b',\n type: 'string',\n description: TOOL_PARAMS.checkEndpointSchema.body,\n })\n .option('headers', {\n alias: ['H', 'header'],\n type: 'string',\n array: true,\n description: TOOL_PARAMS.checkEndpointSchema.headers,\n })\n .epilogue(DESCRIPTIONS.checkEndpointSchema.epilogue),\n async args => {\n const { checkCommand } = await import('@/cli/commands/check');\n await checkCommand({\n ...args,\n url: args.url,\n method: args.method,\n body: args.body,\n headers: args.headers,\n });\n }\n )\n .command(\n 'try <url>',\n DESCRIPTIONS.try.cli,\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: TOOL_PARAMS.try.url,\n demandOption: true,\n }),\n async args => {\n const { tryCommand } = await import('@/cli/commands/try');\n await tryCommand(args);\n }\n )\n .command(\n 'search <query>',\n DESCRIPTIONS.search.cli,\n yargs =>\n yargs\n .positional('query', {\n type: 'string',\n description: TOOL_PARAMS.search.query,\n demandOption: true,\n })\n .option('broad', {\n type: 'boolean',\n description: TOOL_PARAMS.search.broad,\n default: false,\n })\n .option('limit', {\n type: 'number',\n description: TOOL_PARAMS.search.limit,\n })\n .option('page', {\n type: 'number',\n description: TOOL_PARAMS.search.page,\n }),\n async args => {\n const { searchCommand } = await import('@/cli/commands/search');\n await searchCommand(args);\n }\n )\n .command(\n 'discover <url>',\n DESCRIPTIONS.discoverApiEndpoints.cli,\n yargs =>\n yargs\n .positional('url', {\n type: 'string',\n description: TOOL_PARAMS.discoverApiEndpoints.url,\n demandOption: true,\n })\n .option('include-guidance', {\n type: 'boolean',\n description: TOOL_PARAMS.discoverApiEndpoints.includeGuidance,\n })\n .epilogue(DESCRIPTIONS.discoverApiEndpoints.epilogue),\n async args => {\n const { discoverCommand } = await import('@/cli/commands/discover');\n await discoverCommand(args);\n }\n )\n .command(\n 'register <url>',\n 'Register an origin with agentcash (discover + index endpoints)',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { registerCommand } = await import('@/cli/commands/register');\n await registerCommand(args);\n }\n )\n .command(\n 'add <url>',\n 'Add an origin and install its skill to agent clients. The origin is added to the MCP server description.',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: TOOL_PARAMS.add.url,\n demandOption: true,\n }),\n async args => {\n const { addSkillCommand } = await import('@/cli/commands/add-skill');\n await addSkillCommand(args);\n }\n )\n .command(\n 'origins',\n 'Manage registered origins',\n yargs =>\n yargs\n .command(\n 'add <url>',\n 'Add an origin to agent clients. The origin is added to the MCP server description.',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to register',\n demandOption: true,\n }),\n async args => {\n const { originsAddCommand } =\n await import('@/cli/commands/origins');\n await originsAddCommand(args);\n }\n )\n .command(\n 'list',\n 'List all registered origins',\n yargs => yargs,\n async args => {\n const { originsListCommand } =\n await import('@/cli/commands/origins');\n await originsListCommand(args);\n }\n )\n .command(\n 'remove <url>',\n 'Remove a user-added origin',\n yargs =>\n yargs.positional('url', {\n type: 'string',\n description: 'The origin URL to remove',\n demandOption: true,\n }),\n async args => {\n const { originsRemoveCommand } =\n await import('@/cli/commands/origins');\n await originsRemoveCommand(args);\n }\n )\n .demandCommand(1, 'You must specify an origins subcommand')\n .strict(),\n () => {\n // Show help for origins command\n }\n )\n .command(\n 'onboard [code]',\n 'Non-interactive onboarding flow for agentcash wallet + MCP setup',\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: 'The invite code to redeem (optional)',\n }),\n async args => {\n const { onboardCommand } = await import('@/cli/commands/onboard');\n await onboardCommand({ ...args, code: args.code ?? args.invite });\n }\n )\n .command(\n 'wallet',\n 'Deprecated wallet command aliases',\n yargs =>\n yargs\n .command(\n 'info',\n \"Deprecated alias. Prints migration guidance for 'balance' and 'accounts'.\",\n yargs => yargs,\n async args => {\n const { legacyWalletInfoCommand } =\n await import('@/cli/commands/wallet');\n await legacyWalletInfoCommand(args);\n }\n )\n .command(\n 'balance',\n \"Deprecated alias. Prints migration guidance for 'balance'.\",\n yargs => yargs,\n async args => {\n const { legacyWalletBalanceCommand } =\n await import('@/cli/commands/wallet');\n await legacyWalletBalanceCommand(args);\n }\n )\n .command(\n 'redeem <code>',\n \"Deprecated alias. Prints migration guidance for 'redeem <code>'.\",\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: TOOL_PARAMS.redeemInvite.code,\n demandOption: true,\n }),\n async args => {\n const { legacyWalletRedeemCommand } =\n await import('@/cli/commands/wallet');\n await legacyWalletRedeemCommand(args);\n }\n )\n .command(\n 'address',\n 'Deprecated alias for wallet address lookup.',\n yargs => yargs,\n async args => {\n const { legacyWalletAddressCommand } =\n await import('@/cli/commands/wallet');\n await legacyWalletAddressCommand(args);\n }\n )\n .demandCommand(1, 'You must specify a wallet subcommand')\n .strict(),\n () => {\n // Show help for wallet command\n }\n )\n .command(\n 'balance',\n DESCRIPTIONS.getBalance.cli,\n yargs => yargs,\n async args => {\n const { getBalanceCommand } = await import('@/cli/commands/wallet');\n await getBalanceCommand(args);\n }\n )\n .command(\n 'accounts',\n DESCRIPTIONS.listAccounts.cli,\n yargs => yargs,\n async args => {\n const { listAccountsCommand } = await import('@/cli/commands/wallet');\n await listAccountsCommand(args);\n }\n )\n .command(\n 'redeem <code>',\n DESCRIPTIONS.redeemInvite.cli,\n yargs =>\n yargs.positional('code', {\n type: 'string',\n description: TOOL_PARAMS.redeemInvite.code,\n demandOption: true,\n }),\n async args => {\n const { walletRedeemCommand } = await import('@/cli/commands/wallet');\n await walletRedeemCommand(args);\n }\n )\n .command(\n 'settings',\n 'View and update user settings',\n yargs =>\n yargs\n .command(\n 'get',\n 'Show current settings',\n yargs => yargs,\n async args => {\n const { settingsGetCommand } =\n await import('@/cli/commands/settings');\n await settingsGetCommand(args);\n }\n )\n .command(\n 'set <key> <value>',\n 'Update a setting (e.g. settings set maxAmount 10)',\n yargs =>\n yargs\n .positional('key', {\n type: 'string',\n description: 'Setting name (e.g. maxAmount)',\n demandOption: true,\n })\n .positional('value', {\n type: 'string',\n description: 'Setting value',\n demandOption: true,\n }),\n async args => {\n const { settingsSetCommand } =\n await import('@/cli/commands/settings');\n await settingsSetCommand(args);\n }\n )\n .demandCommand(1, 'You must specify a settings subcommand')\n .strict(),\n () => {\n // Show help for settings command\n }\n )\n .command(\n 'report-error',\n DESCRIPTIONS.reportError.cli,\n yargs =>\n yargs\n .option('tool', {\n type: 'string',\n description: TOOL_PARAMS.reportError.tool,\n demandOption: true,\n })\n .option('summary', {\n type: 'string',\n description: TOOL_PARAMS.reportError.summary,\n demandOption: true,\n })\n .option('error-message', {\n type: 'string',\n description: TOOL_PARAMS.reportError.errorMessage,\n demandOption: true,\n })\n .option('resource', {\n type: 'string',\n description: TOOL_PARAMS.reportError.resource,\n })\n .option('stack', {\n type: 'string',\n description: TOOL_PARAMS.reportError.stack,\n })\n .option('full-report', {\n type: 'string',\n description: TOOL_PARAMS.reportError.fullReport,\n }),\n async args => {\n const { reportErrorCommand } =\n await import('@/cli/commands/report-error');\n await reportErrorCommand(args);\n }\n )\n .command(\n DESCRIPTIONS.bridge.toolNames.cli,\n DESCRIPTIONS.bridge.cli,\n yargs =>\n yargs\n .option('from', {\n type: 'string',\n description: TOOL_PARAMS.bridge.from,\n choices: paymentNetworks,\n required: true,\n })\n .option('to', {\n type: 'string',\n description: TOOL_PARAMS.bridge.to,\n choices: paymentNetworks,\n required: true,\n })\n .option('amount', {\n type: 'number',\n description: TOOL_PARAMS.bridge.amount,\n required: true,\n }),\n async args => {\n const { bridgeCommand } = await import('@/cli/commands/bridge');\n await bridgeCommand(args);\n }\n )\n // ============================================================\n // Server & Installation Commands\n // ============================================================\n .command(\n ['$0', 'server'],\n 'Start the MCP server (default when no command specified)',\n yargs => yargs,\n async args => {\n const { serverCommand } = await import('@/cli/commands/server');\n await serverCommand(args);\n }\n )\n .command(\n 'install',\n 'Install the MCP server configuration for a client',\n yargs =>\n yargs.option('client', {\n type: 'string',\n description: 'The client name',\n choices: clients,\n required: false,\n default: isClaudeCode ? Clients.ClaudeCode : undefined,\n }),\n async args => {\n const { installMcpServer } = await import('@/cli/commands/install');\n await installMcpServer(args);\n }\n )\n .command(\n 'fund',\n 'Open the funding page to add USDC to your wallet',\n yargs => yargs,\n async args => {\n const { fundMcpServer } = await import('@/cli/commands/fund');\n await fundMcpServer(args);\n }\n )\n .example(\n '$0 fetch \"https://stableenrich.dev/api/apollo/people-enrich\" -m POST -b \\'{\"email\":\"user@example.com\"}\\'',\n 'Fetch with x402 payment'\n )\n .example(\n '$0 check \"https://stableenrich.dev/api/apollo/people-enrich\"',\n 'Check endpoint pricing'\n )\n .example(\n '$0 discover \"https://stableenrich.dev\"',\n 'Discover endpoints on origin'\n )\n .example(\n '$0 register \"https://stableenrich.dev\"',\n 'Register origin with agentcash'\n )\n .example(\n '$0 onboard ABC123',\n 'Install onboarding skill, configure MCP, and redeem an invite'\n )\n .example('$0 search \"flight data\"', 'Search for APIs by description')\n .example('$0 balance', 'Get wallet balance')\n .example('$0 accounts', 'List wallet accounts by network')\n .example('$0 redeem ABC123', 'Redeem invite code')\n .example('$0', 'Start MCP server (default)')\n .example('$0 install --client cursor', 'Install MCP for Cursor')\n .strict()\n .epilogue(buildServerInstructions(loadUserOrigins()))\n .help()\n .version(MCP_VERSION)\n .parseAsync()\n .catch(err => {\n // Output error in JSON format for agent consumption\n const response = {\n success: false,\n error: {\n code: 'GENERAL_ERROR',\n message: err instanceof Error ? err.message : String(err),\n surface: 'cli',\n cause: 'unknown',\n },\n };\n console.log(JSON.stringify(response, null, 2));\n process.exit(1);\n });\n"],"mappings":"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","names":["yargs"]}
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-BNFMFAEF.js";
4
4
  import {
5
5
  addServer
6
- } from "./chunk-GZ5DKXKY.js";
6
+ } from "./chunk-RYEE6W2Y.js";
7
7
  import {
8
8
  wait
9
9
  } from "./chunk-DZNSJ2BA.js";
@@ -14,7 +14,7 @@ import {
14
14
  Clients,
15
15
  clientMetadata
16
16
  } from "./chunk-27DZCYDB.js";
17
- import "./chunk-ICTY7IIE.js";
17
+ import "./chunk-3SEI5AS3.js";
18
18
  import "./chunk-ISF2WVEZ.js";
19
19
  import {
20
20
  getBalance
@@ -176,4 +176,4 @@ var installMcpServer = async (args) => {
176
176
  export {
177
177
  installMcpServer
178
178
  };
179
- //# sourceMappingURL=install-6W2Z2CWU.js.map
179
+ //# sourceMappingURL=install-LTQYCDBA.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getPlatformPath,
3
3
  tryAddServer
4
- } from "./chunk-GZ5DKXKY.js";
4
+ } from "./chunk-RYEE6W2Y.js";
5
5
  import "./chunk-DZNSJ2BA.js";
6
6
  import {
7
7
  installGitHubSkill
@@ -13,7 +13,7 @@ import {
13
13
  redeemInviteCode
14
14
  } from "./chunk-MSNAPI5G.js";
15
15
  import "./chunk-27DZCYDB.js";
16
- import "./chunk-ICTY7IIE.js";
16
+ import "./chunk-3SEI5AS3.js";
17
17
  import {
18
18
  getOnboardingCta,
19
19
  getWalletInfo
@@ -381,4 +381,4 @@ var onboardCommand = async (args) => {
381
381
  export {
382
382
  onboardCommand
383
383
  };
384
- //# sourceMappingURL=onboard-HONVULXC.js.map
384
+ //# sourceMappingURL=onboard-MAZZ4UDV.js.map
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  resolveOrigin
3
- } from "./chunk-6I5J7IHC.js";
3
+ } from "./chunk-K627XZI4.js";
4
4
  import {
5
5
  addUserOrigin,
6
6
  loadUserOrigins,
7
7
  removeUserOrigin
8
8
  } from "./chunk-YIU364NZ.js";
9
- import "./chunk-Y2J274RB.js";
9
+ import "./chunk-CFSSHSBN.js";
10
10
  import {
11
11
  ORIGIN_METADATA,
12
12
  PRIMARY_ORIGINS
13
- } from "./chunk-CR2YGI3I.js";
13
+ } from "./chunk-SFESERJN.js";
14
14
  import "./chunk-KVSTJRSJ.js";
15
15
  import {
16
16
  ensureProtocol
@@ -80,4 +80,4 @@ export {
80
80
  originsListCommand,
81
81
  originsRemoveCommand
82
82
  };
83
- //# sourceMappingURL=origins-JAC2K5A4.js.map
83
+ //# sourceMappingURL=origins-XG6O5K27.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  submitErrorReport
3
- } from "./chunk-PAVGIVNI.js";
4
- import "./chunk-ICTY7IIE.js";
3
+ } from "./chunk-VR7LHQKH.js";
4
+ import "./chunk-3SEI5AS3.js";
5
5
  import "./chunk-BFOYXXLG.js";
6
6
  import {
7
7
  getWalletOrExit
@@ -33,4 +33,4 @@ var reportErrorCommand = async (args) => {
33
33
  export {
34
34
  reportErrorCommand
35
35
  };
36
- //# sourceMappingURL=report-error-D44QKQHM.js.map
36
+ //# sourceMappingURL=report-error-UPPBICH6.js.map
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  search
3
- } from "./chunk-V3HBA7NZ.js";
4
- import "./chunk-CR2YGI3I.js";
3
+ } from "./chunk-KSW2MGQR.js";
4
+ import "./chunk-SFESERJN.js";
5
5
  import "./chunk-G5FHPXQL.js";
6
6
  import "./chunk-JX2XE6FD.js";
7
7
  import "./chunk-IKPLMFAK.js";
@@ -30,7 +30,12 @@ var SURFACE = "cli:search";
30
30
  var searchCommand = async (input) => {
31
31
  const wallets = await getWalletOrExit(input);
32
32
  const result = await search(
33
- { query: input.query },
33
+ {
34
+ query: input.query,
35
+ broad: input.broad,
36
+ limit: input.limit,
37
+ page: input.page
38
+ },
34
39
  { surface: SURFACE, wallets, flags: input }
35
40
  );
36
41
  if (!result.success) {
@@ -49,4 +54,4 @@ var searchCommand = async (input) => {
49
54
  export {
50
55
  searchCommand
51
56
  };
52
- //# sourceMappingURL=search-WV2FO7OG.js.map
57
+ //# sourceMappingURL=search-VYYPNNIU.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/commands/search.ts"],"sourcesContent":["import { successResponse, errorResponse, outputAndExit } from '@/cli/output';\n\nimport { search } from '@/operations/search';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type { Command } from '@/types';\nimport type { SearchInput } from '@/operations/search';\n\nconst SURFACE = 'cli:search';\n\nexport const searchCommand: Command<SearchInput> = async input => {\n const wallets = await getWalletOrExit(input);\n\n const result = await search(\n {\n query: input.query,\n broad: input.broad,\n limit: input.limit,\n page: input.page,\n },\n { surface: SURFACE, wallets, flags: input }\n );\n\n if (!result.success) {\n return outputAndExit(\n errorResponse({\n code: 'GENERAL_ERROR',\n message: result.message,\n surface: SURFACE,\n cause: result.cause,\n }),\n input\n );\n }\n\n return outputAndExit(successResponse(result), input);\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,IAAM,UAAU;AAET,IAAM,gBAAsC,OAAM,UAAS;AAChE,QAAM,UAAU,MAAM,gBAAgB,KAAK;AAE3C,QAAM,SAAS,MAAM;AAAA,IACnB;AAAA,MACE,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,MACb,OAAO,MAAM;AAAA,MACb,MAAM,MAAM;AAAA,IACd;AAAA,IACA,EAAE,SAAS,SAAS,SAAS,OAAO,MAAM;AAAA,EAC5C;AAEA,MAAI,CAAC,OAAO,SAAS;AACnB,WAAO;AAAA,MACL,cAAc;AAAA,QACZ,MAAM;AAAA,QACN,SAAS,OAAO;AAAA,QAChB,SAAS;AAAA,QACT,OAAO,OAAO;AAAA,MAChB,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAEA,SAAO,cAAc,gBAAgB,MAAM,GAAG,KAAK;AACrD;","names":[]}
@@ -5,10 +5,10 @@ var serverCommand = async (args) => {
5
5
  "MCP server started. If you meant to explore the CLI, run: npx agentcash --help\n"
6
6
  );
7
7
  }
8
- const { startServer } = await import("./server-GZG3KSPG.js");
8
+ const { startServer } = await import("./server-Z6OTHKZR.js");
9
9
  await startServer(args);
10
10
  };
11
11
  export {
12
12
  serverCommand
13
13
  };
14
- //# sourceMappingURL=server-G7SXDQJD.js.map
14
+ //# sourceMappingURL=server-T2RYRCCO.js.map
@@ -3,22 +3,22 @@ import {
3
3
  } from "./chunk-MSNAPI5G.js";
4
4
  import {
5
5
  submitErrorReport
6
- } from "./chunk-PAVGIVNI.js";
6
+ } from "./chunk-VR7LHQKH.js";
7
7
  import {
8
8
  bridge,
9
9
  bridgeSchema
10
- } from "./chunk-Y4BYJBYU.js";
10
+ } from "./chunk-FV6DADHO.js";
11
11
  import {
12
12
  loadUserOrigins
13
13
  } from "./chunk-YIU364NZ.js";
14
- import "./chunk-ICTY7IIE.js";
14
+ import "./chunk-3SEI5AS3.js";
15
15
  import {
16
16
  checkEndpoint
17
17
  } from "./chunk-5CMVFNXO.js";
18
18
  import {
19
19
  coreRequestSchema,
20
20
  fetchShape
21
- } from "./chunk-JWU363NX.js";
21
+ } from "./chunk-KMS4TVJY.js";
22
22
  import {
23
23
  getBalances,
24
24
  listAccountsWithBalances
@@ -27,16 +27,16 @@ import "./chunk-ISF2WVEZ.js";
27
27
  import {
28
28
  search,
29
29
  searchSchema
30
- } from "./chunk-V3HBA7NZ.js";
30
+ } from "./chunk-KSW2MGQR.js";
31
31
  import {
32
32
  discoverResources,
33
33
  discoverResourcesSchema
34
- } from "./chunk-Y2J274RB.js";
34
+ } from "./chunk-CFSSHSBN.js";
35
35
  import {
36
36
  DESCRIPTIONS,
37
37
  TOOL_PARAMS,
38
38
  buildServerInstructions
39
- } from "./chunk-CR2YGI3I.js";
39
+ } from "./chunk-SFESERJN.js";
40
40
  import {
41
41
  executeFetch
42
42
  } from "./chunk-G5FHPXQL.js";
@@ -487,10 +487,7 @@ var registerTelemetryTools = ({
487
487
  // src/server/tools/discover-resources.ts
488
488
  var toolName3 = "discover_api_endpoints";
489
489
  var OPENAPI_TRIED_PATHS = "/openapi.json, /.well-known/x402";
490
- var registerDiscoveryTools = ({
491
- server,
492
- flags
493
- }) => {
490
+ var registerDiscoveryTools = ({ server, flags }) => {
494
491
  server.registerTool(
495
492
  toolName3,
496
493
  {
@@ -676,7 +673,7 @@ import { dirname, join } from "path";
676
673
  import { fileURLToPath } from "url";
677
674
  function getVersion() {
678
675
  if (true) {
679
- return "0.14.1";
676
+ return "0.14.2";
680
677
  }
681
678
  const __dirname2 = dirname(fileURLToPath(import.meta.url));
682
679
  const pkg = JSON.parse(
@@ -742,4 +739,4 @@ var startServer = async (flags) => {
742
739
  export {
743
740
  startServer
744
741
  };
745
- //# sourceMappingURL=server-GZG3KSPG.js.map
742
+ //# sourceMappingURL=server-Z6OTHKZR.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/server/index.ts","../../src/server/tools/response/lib.ts","../../src/server/tools/response/error.ts","../../src/server/tools/response/success.ts","../../src/server/tools/response/safe-handler.ts","../../src/shared/request/schemas/mcp.ts","../../src/server/tools/fetch.ts","../../src/server/tools/wallet.ts","../../src/server/tools/check-endpoint.ts","../../src/server/tools/redeem-invite.ts","../../src/server/tools/telemetry.ts","../../src/server/tools/discover-resources.ts","../../src/server/tools/settings.ts","../../src/server/tools/bridge.ts","../../src/server/tools/search.ts","../../src/server/lib/version.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerFetchTool } from './tools/fetch';\nimport { registerWalletTools } from './tools/wallet';\nimport { registerCheckEndpointTool } from './tools/check-endpoint';\nimport { registerRedeemInviteTool } from './tools/redeem-invite';\nimport { registerTelemetryTools } from './tools/telemetry';\nimport { registerDiscoveryTools } from './tools/discover-resources';\nimport { registerSettingsTools } from './tools/settings';\nimport { registerBridgeTool } from './tools/bridge';\nimport { registerSearchTool } from './tools/search';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport { buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { getWallet } from '@/wallet';\n\nimport type { Command } from '@/types';\n\nexport const startServer: Command = async flags => {\n log.info('Starting agentcash...');\n\n const { invite, sessionId } = flags;\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n process.exit(1);\n }\n\n const wallets = walletResult.value;\n\n const code = invite ?? process.env.INVITE_CODE;\n\n if (code) {\n await redeemInviteCode('startServer', { code }, flags, wallets);\n }\n\n const serverInstructions = buildServerInstructions(loadUserOrigins());\n\n const server = new McpServer(\n {\n name: 'agentcash',\n title: 'AgentCash',\n version: MCP_VERSION,\n websiteUrl: 'https://agentcash.dev',\n icons: [{ src: 'https://agentcash.dev/favicon.svg' }],\n description: serverInstructions,\n },\n {\n instructions: serverInstructions,\n }\n );\n\n const props = {\n server,\n wallets,\n flags,\n sessionId,\n };\n\n registerFetchTool(props);\n registerWalletTools(props);\n registerCheckEndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(props);\n registerTelemetryTools(props);\n registerSettingsTools(props);\n registerBridgeTool(props);\n registerSearchTool(props);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n const shutdown = async () => {\n log.info('Shutting down...');\n await server.close();\n process.exit(0);\n };\n\n process.on('SIGINT', () => void shutdown());\n process.on('SIGTERM', () => void shutdown());\n};\n","import type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\nexport const parsedResponseToToolContentPart = (\n data: ParsedResponse\n): CallToolResult['content'][number] => {\n switch (data.type) {\n case 'json':\n return {\n type: 'text' as const,\n text: JSON.stringify(data.data),\n };\n case 'image':\n return {\n type: 'image' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'audio':\n return {\n type: 'audio' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'text':\n return { type: 'text' as const, text: data.data };\n default:\n return {\n type: 'text' as const,\n text: `Unsupported response type: ${data.type}`,\n };\n }\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { parsedResponseToToolContentPart } from './lib';\nimport {\n fetchHttpErr,\n isFetchError,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\n\nimport type { JsonStringifyValue } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { BaseError, Err } from '@agentcash/neverthrow/types';\nimport type { BaseX402Error } from '@/shared/protocols/x402/types';\nimport type { BaseMppError } from '@/shared/protocols/mpp/types';\nimport type { BaseFetchError } from '@/shared/neverthrow/fetch/types';\n\nconst buildMcpError = (\n content: CallToolResult['content'],\n options?: { isError?: boolean }\n): CallToolResult => {\n return {\n content,\n // Default: omit isError so siblings survive parallel calls.\n // Tools with outputSchema MUST pass isError: true so the SDK\n // skips output validation on error paths.\n ...(options?.isError ? { isError: true as const } : {}),\n };\n};\n\nexport const mcpErrorJson = (\n error: JsonStringifyValue,\n options?: { isError?: boolean }\n): CallToolResult => {\n return safeStringifyJson('mcp-error-json', error).match(\n success =>\n buildMcpError([{ type: 'text' as const, text: success }], options),\n error =>\n buildMcpError(\n [{ type: 'text' as const, text: JSON.stringify(error, null, 2) }],\n options\n )\n );\n};\n\nexport const mcpError = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Err<any, BaseX402Error | BaseMppError | BaseFetchError | BaseError>,\n options?: { isError?: boolean }\n) => {\n const { error } = err;\n if (isFetchError(error)) {\n switch (error.cause) {\n case 'network':\n case 'parse':\n return mcpErrorJson({ ...error }, options);\n case 'http':\n const { response, ...rest } = error;\n const parseResponseResult = await safeParseResponse(\n 'mcp-error-fetch-parse-response',\n response\n );\n const httpContent: CallToolResult['content'] = [\n { type: 'text' as const, text: JSON.stringify(rest, null, 2) },\n ...parseResponseResult.match(\n success => [parsedResponseToToolContentPart(success)],\n () => []\n ),\n ];\n return buildMcpError(httpContent, options);\n }\n }\n return mcpErrorJson({ ...error }, options);\n};\n\nexport const mcpErrorFetch = async (surface: string, response: Response) => {\n return mcpError(fetchHttpErr(surface, response));\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { mcpErrorJson } from './error';\n\nimport type {\n JsonStringifyObject,\n JsonStringifyValue,\n} from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport { parsedResponseToToolContentPart } from './lib';\n\nconst buildMcpSuccess = (\n content: CallToolResult['content']\n): CallToolResult => {\n return {\n content,\n };\n};\n\nexport const mcpSuccessJson = (data: JsonStringifyValue): CallToolResult => {\n return safeStringifyJson('mcp-success-text', data).match(\n success => buildMcpSuccess([{ type: 'text' as const, text: success }]),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessStructuredJson = (\n data: JsonStringifyObject\n): CallToolResult => {\n return safeStringifyJson('mcp-success-structured', data).match(\n success => ({\n content: [{ type: 'text' as const, text: success }],\n structuredContent: data,\n }),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessResponse = (\n data: ParsedResponse,\n extra?: JsonStringifyValue\n): CallToolResult => {\n const parsedExtra = extra\n ? safeStringifyJson('mcp-success-extra', extra).match(\n success => success,\n () => undefined\n )\n : undefined;\n\n return buildMcpSuccess([\n parsedResponseToToolContentPart(data),\n ...(parsedExtra ? [{ type: 'text' as const, text: parsedExtra }] : []),\n ]);\n};\n","import { log } from '@/shared/log';\nimport { mcpErrorJson } from './error';\n\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Wraps an MCP tool handler so uncaught exceptions never propagate.\n * Returns error info as normal content (isError omitted) for any unhandled throw.\n *\n * This prevents sibling parallel tool calls from failing when one\n * tool encounters an unexpected error.\n */\nexport function safeHandler<T>(\n handler: (input: T) => Promise<CallToolResult>\n): (input: T) => Promise<CallToolResult> {\n return async (input: T) => {\n // eslint-disable-next-line no-restricted-syntax -- intentional last-resort catch to prevent sibling tool call failures\n try {\n return await handler(input);\n } catch (e) {\n log.error('Unhandled tool error', e);\n return mcpErrorJson({\n error: e instanceof Error ? e.message : String(e),\n cause: 'unhandled_exception',\n });\n }\n };\n}\n","import z from 'zod';\n\nimport { coreRequestSchema, fetchShape } from './core';\n\nexport const mcpBodySchema = z\n .union([\n z\n .string()\n .describe(\n 'Raw request body string. Passed through to the underlying fetch call as-is.'\n ),\n z\n .record(z.string(), z.unknown())\n .transform(json => JSON.stringify(json))\n .describe('JSON object to be sent as the request body'),\n ])\n .optional()\n .describe(\n 'Request body. Can be a string or an object that will be stringified.'\n );\n\nexport const mcpRequestSchema = coreRequestSchema.extend({\n body: mcpBodySchema,\n headers: z\n .record(z.string(), z.string())\n .optional()\n .default({})\n .transform(headers =>\n Object.fromEntries(\n Object.entries(headers).map(([key, value]) => [key, value.trim()])\n )\n )\n .describe('Additional headers to include as a key-value pair'),\n});\n\nexport const mcpFetchRequestSchema = mcpRequestSchema.extend(fetchShape);\n","import { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { executeFetch } from '@/operations/fetch';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessResponse,\n safeHandler,\n} from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport { mcpFetchRequestSchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'fetch';\n\nexport const registerFetchTool: RegisterTools = props => {\n const { server, wallets, flags } = props;\n\n server.registerTool(\n TOOL_NAME,\n {\n title: DESCRIPTIONS.fetch.mcp,\n description: DESCRIPTIONS.fetch.mcp,\n inputSchema: mcpFetchRequestSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n const fetchResult = await executeFetch(input, {\n surface: TOOL_NAME,\n wallets,\n flags,\n params: input,\n });\n\n if (fetchResult.isErr()) {\n return mcpError(fetchResult);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n return mcpErrorFetch(TOOL_NAME, response);\n }\n\n const parseResponseResult = await safeParseResponse(TOOL_NAME, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n paymentInfo ?? undefined\n );\n })\n );\n};\n","import { getBalances, listAccountsWithBalances } from '@/operations/wallet';\n\nimport { mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n const getBalanceToolName = 'get_balance';\n server.registerTool(\n getBalanceToolName,\n {\n title: 'Get Balance',\n description: DESCRIPTIONS.getBalance.mcp,\n },\n async () => {\n const result = await getBalances(getBalanceToolName, wallets, flags);\n return mcpSuccessStructuredJson({\n balance: result.totalBalance,\n });\n }\n );\n\n const listAccountsToolName = 'list_accounts';\n\n server.registerTool(\n listAccountsToolName,\n {\n title: 'Get Accounts',\n description: DESCRIPTIONS.listAccounts.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n const result = await listAccountsWithBalances(\n listAccountsToolName,\n wallets,\n flags\n );\n return mcpSuccessStructuredJson(result);\n }\n );\n};\n","import { mcpSuccessJson, safeHandler } from './response';\n\nimport { log } from '@/shared/log';\nimport { checkEndpoint } from '@/operations/check-endpoint';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport { mcpRequestSchema, mcpBodySchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\nimport { RequestMethod } from '@/shared/request/types';\nimport z from 'zod';\n\nconst toolName = 'check_endpoint_schema';\n\nexport const registerCheckEndpointTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Check Endpoint Schema',\n description: DESCRIPTIONS.checkEndpointSchema.mcp,\n inputSchema: mcpRequestSchema.extend({\n method: z\n .enum(RequestMethod)\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.method),\n body: mcpBodySchema.describe(TOOL_PARAMS.checkEndpointSchema.body),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n log.info('Querying endpoint', {\n url: input.url,\n method: input.method,\n hasSampleInputBody: !!input.body,\n });\n\n const result = await checkEndpoint(toolName, input, { wallets, flags });\n\n if (!result.found) {\n log.error('[checkEndpoint] failed', {\n surface: toolName,\n url: input.url,\n cause: result.cause,\n message: result.message,\n });\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n if (result.advisories.length === 0) {\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n return mcpSuccessJson({\n url: input.url,\n results: result.advisories,\n });\n })\n );\n};\n","import z from 'zod';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\n\nimport { redeemInviteCode } from '@/shared/redeem-invite';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\nimport { Network } from '@agentcash/networks';\n\nconst SURFACE = 'server:redeem-invite';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n 'redeem_invite',\n {\n title: 'Redeem Invite',\n description: DESCRIPTIONS.redeemInvite.mcp,\n inputSchema: z.object({\n code: z.string().min(1).describe(TOOL_PARAMS.redeemInvite.code),\n }),\n outputSchema: z.object({\n redeemed: z.literal(true),\n amount: z.string().describe(TOOL_PARAMS.redeemInvite.output.amount),\n txHash: z.string().describe(TOOL_PARAMS.redeemInvite.output.txHash),\n }),\n annotations: {\n readOnlyHint: false, // Modifies wallet balance\n destructiveHint: false, // Additive (adds funds), not destructive\n idempotentHint: false, // Same code can't be redeemed twice - second attempt fails\n openWorldHint: true,\n },\n },\n async args => {\n const result = await redeemInviteCode(\n SURFACE,\n { code: args.code },\n flags,\n wallets\n );\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n const { amount, txHash, solanaTxHash, network } = result.value;\n const effectiveTxHash = solanaTxHash ?? txHash;\n const explorerUrl =\n solanaTxHash || network === Network.SOLANA\n ? `https://solscan.io/tx/${effectiveTxHash}`\n : `https://basescan.org/tx/${effectiveTxHash}`;\n\n return mcpSuccessStructuredJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash: effectiveTxHash,\n explorerUrl,\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { log } from '@/shared/log';\nimport { submitErrorReport } from '@/operations/report-error';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'report_error';\n\nexport const registerTelemetryTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Report Error',\n description: DESCRIPTIONS.reportError.mcp,\n inputSchema: z.object({\n tool: z.string().describe(TOOL_PARAMS.reportError.tool),\n resource: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.resource),\n summary: z.string().describe(TOOL_PARAMS.reportError.summary),\n errorMessage: z.string().describe(TOOL_PARAMS.reportError.errorMessage),\n stack: z.string().optional().describe(TOOL_PARAMS.reportError.stack),\n fullReport: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.fullReport),\n }),\n outputSchema: z.object({\n submitted: z.literal(true),\n reportId: z.string().describe(TOOL_PARAMS.reportError.output.reportId),\n message: z.string().describe(TOOL_PARAMS.reportError.output.message),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async input => {\n log.info('Submitting error report', {\n tool: input.tool,\n resource: input.resource,\n summary: input.summary,\n });\n\n const result = await submitErrorReport(\n toolName,\n {\n tool: input.tool,\n summary: input.summary,\n errorMessage: input.errorMessage,\n resource: input.resource,\n stack: input.stack,\n fullReport: input.fullReport,\n },\n wallets.evm.address,\n flags.dev\n );\n\n if (result.isErr()) {\n log.error('Failed to submit error report', result.error);\n return mcpError(result, { isError: true });\n }\n\n log.info('Error report submitted successfully', {\n reportId: result.value.reportId,\n });\n\n return mcpSuccessStructuredJson(result.value);\n }\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport {\n discoverResources,\n discoverResourcesSchema,\n} from '@/operations/discover';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'discover_api_endpoints';\nconst OPENAPI_TRIED_PATHS = '/openapi.json, /.well-known/x402';\n\nexport const registerDiscoveryTools: RegisterTools = ({\n server,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Discover API Endpoints',\n description: DESCRIPTIONS.discoverApiEndpoints.mcp,\n inputSchema: discoverResourcesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`Discovering resources for: ${args.url}`);\n\n const discoverResult = await resultFromPromise(\n 'discover',\n toolName,\n discoverResources(toolName, args, { flags }),\n e => ({\n cause: 'discover' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (discoverResult.isErr()) {\n return mcpError(discoverResult);\n }\n\n const result = discoverResult.value;\n\n if (result.found) {\n return mcpSuccessJson(result);\n }\n\n if (result.cause === 'not_found') {\n return mcpSuccessJson({\n found: false,\n origin: result.origin,\n error: `No OpenAPI spec found. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n }\n\n return mcpSuccessJson({\n found: false,\n cause: result.cause,\n error: result.message ?? `Failed to fetch OpenAPI spec`,\n hint:\n hintMap[result.cause] ??\n `The server returned an unparseable response. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n })\n );\n}\n\nconst hintMap = {\n timeout: 'The server may be slow or unreachable. Try again later.',\n network:\n 'Could not reach the server. Check the network connection and try again.',\n invalid_input: 'Invalid input. Please check the input and try again.',\n};\n","import { z } from 'zod';\n\nimport { getSettings, setSettings } from '@/shared/settings';\nimport { DEFAULT_MAX_AMOUNT } from '@/operations/fetch/types';\n\nimport { mcpSuccessStructuredJson, safeHandler } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerSettingsTools: RegisterTools = ({ server }) => {\n server.registerTool(\n 'update_settings',\n {\n title: 'Update Settings',\n description: DESCRIPTIONS.updateSettings.mcp,\n inputSchema: z.object({\n maxAmount: z\n .number()\n .positive()\n .optional()\n .describe(\n `Maximum amount (USD) to pay per fetch request. Current default: $${DEFAULT_MAX_AMOUNT}.`\n ),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(input => {\n if (input.maxAmount !== undefined) {\n setSettings({ maxAmount: input.maxAmount });\n }\n\n const settings = getSettings();\n\n return Promise.resolve(mcpSuccessStructuredJson(settings));\n })\n );\n\n server.registerTool(\n 'get_settings',\n {\n title: 'Get Settings',\n description: DESCRIPTIONS.getSettings.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(() => {\n const settings = getSettings();\n\n return Promise.resolve(mcpSuccessStructuredJson(settings));\n })\n );\n};\n","import { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport type { RegisterTools } from '@/server/types';\nimport { bridge, bridgeSchema } from '@/operations/bridge';\n\nconst toolName = DESCRIPTIONS.bridge.toolNames.mcp;\n\nexport const registerBridgeTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: DESCRIPTIONS.bridge.title,\n description: DESCRIPTIONS.bridge.mcp,\n inputSchema: bridgeSchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n },\n },\n safeHandler(async input => {\n const result = await bridge({ ...input, ...flags }, wallets);\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n return mcpSuccessJson(result.value);\n })\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport { search, searchSchema } from '@/operations/search';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport {\n mcpError,\n mcpErrorJson,\n mcpSuccessJson,\n safeHandler,\n} from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'search';\n\nexport const registerSearchTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n TOOL_NAME,\n {\n title: 'Search APIs',\n description: DESCRIPTIONS.search.mcp,\n inputSchema: searchSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`[search] query: ${args.query}`);\n\n const searchResult = await resultFromPromise(\n 'search',\n TOOL_NAME,\n search(args, { surface: TOOL_NAME, wallets, flags }),\n e => ({\n cause: 'search' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (searchResult.isErr()) {\n return mcpError(searchResult);\n }\n\n const result = searchResult.value;\n\n if (!result.success) {\n return mcpErrorJson({\n error: result.message,\n cause: result.cause,\n details: result.details,\n });\n }\n\n return mcpSuccessJson({\n success: result.success,\n results: result.results,\n });\n })\n );\n};\n","import { readFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\ndeclare const __MCP_VERSION__: string | undefined;\n\nfunction getVersion(): string {\n if (typeof __MCP_VERSION__ !== 'undefined') {\n return __MCP_VERSION__;\n }\n // Fallback for dev mode (tsx)\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n readFileSync(join(__dirname, '../../../package.json'), 'utf-8')\n ) as { version: string };\n return pkg.version;\n}\n\nexport const MCP_VERSION = getVersion();\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,iBAAiB;AAC1B,SAAS,4BAA4B;;;ACE9B,IAAM,kCAAkC,CAC7C,SACsC;AACtC,UAAQ,KAAK,MAAM;AAAA,IACjB,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM,KAAK,UAAU,KAAK,IAAI;AAAA,MAChC;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,KAAK;AAAA,QACf,MAAM,OAAO,KAAK,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,MAChD;AAAA,IACF,KAAK;AACH,aAAO;AAAA,QACL,MAAM;AAAA,QACN,UAAU,KAAK;AAAA,QACf,MAAM,OAAO,KAAK,KAAK,IAAI,EAAE,SAAS,QAAQ;AAAA,MAChD;AAAA,IACF,KAAK;AACH,aAAO,EAAE,MAAM,QAAiB,MAAM,KAAK,KAAK;AAAA,IAClD;AACE,aAAO;AAAA,QACL,MAAM;AAAA,QACN,MAAM,8BAA8B,KAAK,IAAI;AAAA,MAC/C;AAAA,EACJ;AACF;;;AChBA,IAAM,gBAAgB,CACpB,SACA,YACmB;AACnB,SAAO;AAAA,IACL;AAAA;AAAA;AAAA;AAAA,IAIA,GAAI,SAAS,UAAU,EAAE,SAAS,KAAc,IAAI,CAAC;AAAA,EACvD;AACF;AAEO,IAAM,eAAe,CAC1B,OACA,YACmB;AACnB,SAAO,kBAAkB,kBAAkB,KAAK,EAAE;AAAA,IAChD,aACE,cAAc,CAAC,EAAE,MAAM,QAAiB,MAAM,QAAQ,CAAC,GAAG,OAAO;AAAA,IACnE,CAAAA,WACE;AAAA,MACE,CAAC,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAUA,QAAO,MAAM,CAAC,EAAE,CAAC;AAAA,MAChE;AAAA,IACF;AAAA,EACJ;AACF;AAEO,IAAM,WAAW,OAEtB,KACA,YACG;AACH,QAAM,EAAE,MAAM,IAAI;AAClB,MAAI,aAAa,KAAK,GAAG;AACvB,YAAQ,MAAM,OAAO;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACH,eAAO,aAAa,EAAE,GAAG,MAAM,GAAG,OAAO;AAAA,MAC3C,KAAK;AACH,cAAM,EAAE,UAAU,GAAG,KAAK,IAAI;AAC9B,cAAM,sBAAsB,MAAM;AAAA,UAChC;AAAA,UACA;AAAA,QACF;AACA,cAAM,cAAyC;AAAA,UAC7C,EAAE,MAAM,QAAiB,MAAM,KAAK,UAAU,MAAM,MAAM,CAAC,EAAE;AAAA,UAC7D,GAAG,oBAAoB;AAAA,YACrB,aAAW,CAAC,gCAAgC,OAAO,CAAC;AAAA,YACpD,MAAM,CAAC;AAAA,UACT;AAAA,QACF;AACA,eAAO,cAAc,aAAa,OAAO;AAAA,IAC7C;AAAA,EACF;AACA,SAAO,aAAa,EAAE,GAAG,MAAM,GAAG,OAAO;AAC3C;AAEO,IAAM,gBAAgB,OAAO,SAAiB,aAAuB;AAC1E,SAAO,SAAS,aAAa,SAAS,QAAQ,CAAC;AACjD;;;AChEA,IAAM,kBAAkB,CACtB,YACmB;AACnB,SAAO;AAAA,IACL;AAAA,EACF;AACF;AAEO,IAAM,iBAAiB,CAAC,SAA6C;AAC1E,SAAO,kBAAkB,oBAAoB,IAAI,EAAE;AAAA,IACjD,aAAW,gBAAgB,CAAC,EAAE,MAAM,QAAiB,MAAM,QAAQ,CAAC,CAAC;AAAA,IACrE,WAAS,aAAa,KAAK;AAAA,EAC7B;AACF;AAEO,IAAM,2BAA2B,CACtC,SACmB;AACnB,SAAO,kBAAkB,0BAA0B,IAAI,EAAE;AAAA,IACvD,cAAY;AAAA,MACV,SAAS,CAAC,EAAE,MAAM,QAAiB,MAAM,QAAQ,CAAC;AAAA,MAClD,mBAAmB;AAAA,IACrB;AAAA,IACA,WAAS,aAAa,KAAK;AAAA,EAC7B;AACF;AAEO,IAAM,qBAAqB,CAChC,MACA,UACmB;AACnB,QAAM,cAAc,QAChB,kBAAkB,qBAAqB,KAAK,EAAE;AAAA,IAC5C,aAAW;AAAA,IACX,MAAM;AAAA,EACR,IACA;AAEJ,SAAO,gBAAgB;AAAA,IACrB,gCAAgC,IAAI;AAAA,IACpC,GAAI,cAAc,CAAC,EAAE,MAAM,QAAiB,MAAM,YAAY,CAAC,IAAI,CAAC;AAAA,EACtE,CAAC;AACH;;;AC1CO,SAAS,YACd,SACuC;AACvC,SAAO,OAAO,UAAa;AAEzB,QAAI;AACF,aAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B,SAAS,GAAG;AACV,UAAI,MAAM,wBAAwB,CAAC;AACnC,aAAO,aAAa;AAAA,QAClB,OAAO,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,QAChD,OAAO;AAAA,MACT,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AC3BA,OAAO,OAAO;AAIP,IAAM,gBAAgB,EAC1B,MAAM;AAAA,EACL,EACG,OAAO,EACP;AAAA,IACC;AAAA,EACF;AAAA,EACF,EACG,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAC9B,UAAU,UAAQ,KAAK,UAAU,IAAI,CAAC,EACtC,SAAS,4CAA4C;AAC1D,CAAC,EACA,SAAS,EACT;AAAA,EACC;AACF;AAEK,IAAM,mBAAmB,kBAAkB,OAAO;AAAA,EACvD,MAAM;AAAA,EACN,SAAS,EACN,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC,EAC7B,SAAS,EACT,QAAQ,CAAC,CAAC,EACV;AAAA,IAAU,aACT,OAAO;AAAA,MACL,OAAO,QAAQ,OAAO,EAAE,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,MAAM,KAAK,CAAC,CAAC;AAAA,IACnE;AAAA,EACF,EACC,SAAS,mDAAmD;AACjE,CAAC;AAEM,IAAM,wBAAwB,iBAAiB,OAAO,UAAU;;;ACrBvE,IAAM,YAAY;AAEX,IAAM,oBAAmC,WAAS;AACvD,QAAM,EAAE,QAAQ,SAAS,MAAM,IAAI;AAEnC,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO,aAAa,MAAM;AAAA,MAC1B,aAAa,aAAa,MAAM;AAAA,MAChC,aAAa;AAAA,MACb,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,UAAS;AACzB,YAAM,cAAc,MAAM,aAAa,OAAO;AAAA,QAC5C,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACV,CAAC;AAED,UAAI,YAAY,MAAM,GAAG;AACvB,eAAO,SAAS,WAAW;AAAA,MAC7B;AAEA,YAAM,EAAE,UAAU,YAAY,IAAI,YAAY;AAE9C,UAAI,CAAC,SAAS,IAAI;AAChB,eAAO,cAAc,WAAW,QAAQ;AAAA,MAC1C;AAEA,YAAM,sBAAsB,MAAM,kBAAkB,WAAW,QAAQ;AAEvE,UAAI,oBAAoB,MAAM,GAAG;AAC/B,eAAO,SAAS,mBAAmB;AAAA,MACrC;AAEA,aAAO;AAAA,QACL,oBAAoB;AAAA,QACpB,eAAe;AAAA,MACjB;AAAA,IACF,CAAC;AAAA,EACH;AACF;;;ACvDO,IAAM,sBAAqC,CAAC;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,qBAAqB;AAC3B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,WAAW;AAAA,IACvC;AAAA,IACA,YAAY;AACV,YAAM,SAAS,MAAM,YAAY,oBAAoB,SAAS,KAAK;AACnE,aAAO,yBAAyB;AAAA,QAC9B,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH;AAAA,EACF;AAEA,QAAM,uBAAuB;AAE7B,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,aAAa;AAAA,MACvC,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY;AACV,YAAM,SAAS,MAAM;AAAA,QACnB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,aAAO,yBAAyB,MAAM;AAAA,IACxC;AAAA,EACF;AACF;;;ACxCA,OAAOC,QAAO;AAEd,IAAM,WAAW;AAEV,IAAM,4BAA2C,CAAC;AAAA,EACvD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,oBAAoB;AAAA,MAC9C,aAAa,iBAAiB,OAAO;AAAA,QACnC,QAAQA,GACL,KAAK,aAAa,EAClB,SAAS,EACT,SAAS,YAAY,oBAAoB,MAAM;AAAA,QAClD,MAAM,cAAc,SAAS,YAAY,oBAAoB,IAAI;AAAA,MACnE,CAAC;AAAA,MACD,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,UAAS;AACzB,UAAI,KAAK,qBAAqB;AAAA,QAC5B,KAAK,MAAM;AAAA,QACX,QAAQ,MAAM;AAAA,QACd,oBAAoB,CAAC,CAAC,MAAM;AAAA,MAC9B,CAAC;AAED,YAAM,SAAS,MAAM,cAAc,UAAU,OAAO,EAAE,SAAS,MAAM,CAAC;AAEtE,UAAI,CAAC,OAAO,OAAO;AACjB,YAAI,MAAM,0BAA0B;AAAA,UAClC,SAAS;AAAA,UACT,KAAK,MAAM;AAAA,UACX,OAAO,OAAO;AAAA,UACd,SAAS,OAAO;AAAA,QAClB,CAAC;AACD,eAAO,eAAe;AAAA,UACpB,SAAS;AAAA,UACT,KAAK,MAAM;AAAA,QACb,CAAC;AAAA,MACH;AAEA,UAAI,OAAO,WAAW,WAAW,GAAG;AAClC,eAAO,eAAe;AAAA,UACpB,SAAS;AAAA,UACT,KAAK,MAAM;AAAA,QACb,CAAC;AAAA,MACH;AAEA,aAAO,eAAe;AAAA,QACpB,KAAK,MAAM;AAAA,QACX,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;ACzEA,OAAOC,QAAO;AASd,IAAM,UAAU;AAET,IAAM,2BAA0C,CAAC;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,aAAa;AAAA,MACvC,aAAaC,GAAE,OAAO;AAAA,QACpB,MAAMA,GAAE,OAAO,EAAE,IAAI,CAAC,EAAE,SAAS,YAAY,aAAa,IAAI;AAAA,MAChE,CAAC;AAAA,MACD,cAAcA,GAAE,OAAO;AAAA,QACrB,UAAUA,GAAE,QAAQ,IAAI;AAAA,QACxB,QAAQA,GAAE,OAAO,EAAE,SAAS,YAAY,aAAa,OAAO,MAAM;AAAA,QAClE,QAAQA,GAAE,OAAO,EAAE,SAAS,YAAY,aAAa,OAAO,MAAM;AAAA,MACpE,CAAC;AAAA,MACD,aAAa;AAAA,QACX,cAAc;AAAA;AAAA,QACd,iBAAiB;AAAA;AAAA,QACjB,gBAAgB;AAAA;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAM,SAAQ;AACZ,YAAM,SAAS,MAAM;AAAA,QACnB;AAAA,QACA,EAAE,MAAM,KAAK,KAAK;AAAA,QAClB;AAAA,QACA;AAAA,MACF;AAEA,UAAI,OAAO,MAAM,GAAG;AAClB,eAAO,SAAS,QAAQ,EAAE,SAAS,KAAK,CAAC;AAAA,MAC3C;AAEA,YAAM,EAAE,QAAQ,QAAQ,cAAc,QAAQ,IAAI,OAAO;AACzD,YAAM,kBAAkB,gBAAgB;AACxC,YAAM,cACJ,gBAAgB,oCACZ,yBAAyB,eAAe,KACxC,2BAA2B,eAAe;AAEhD,aAAO,yBAAyB;AAAA,QAC9B,UAAU;AAAA,QACV,QAAQ,GAAG,MAAM;AAAA,QACjB,QAAQ;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AC/DA,OAAOC,QAAO;AASd,IAAMC,YAAW;AAEV,IAAM,yBAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACLA;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,YAAY;AAAA,MACtC,aAAaC,GAAE,OAAO;AAAA,QACpB,MAAMA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,IAAI;AAAA,QACtD,UAAUA,GACP,OAAO,EACP,SAAS,EACT,SAAS,YAAY,YAAY,QAAQ;AAAA,QAC5C,SAASA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,OAAO;AAAA,QAC5D,cAAcA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,YAAY;AAAA,QACtE,OAAOA,GAAE,OAAO,EAAE,SAAS,EAAE,SAAS,YAAY,YAAY,KAAK;AAAA,QACnE,YAAYA,GACT,OAAO,EACP,SAAS,EACT,SAAS,YAAY,YAAY,UAAU;AAAA,MAChD,CAAC;AAAA,MACD,cAAcA,GAAE,OAAO;AAAA,QACrB,WAAWA,GAAE,QAAQ,IAAI;AAAA,QACzB,UAAUA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,OAAO,QAAQ;AAAA,QACrE,SAASA,GAAE,OAAO,EAAE,SAAS,YAAY,YAAY,OAAO,OAAO;AAAA,MACrE,CAAC;AAAA,MACD,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,OAAM,UAAS;AACb,UAAI,KAAK,2BAA2B;AAAA,QAClC,MAAM,MAAM;AAAA,QACZ,UAAU,MAAM;AAAA,QAChB,SAAS,MAAM;AAAA,MACjB,CAAC;AAED,YAAM,SAAS,MAAM;AAAA,QACnBD;AAAA,QACA;AAAA,UACE,MAAM,MAAM;AAAA,UACZ,SAAS,MAAM;AAAA,UACf,cAAc,MAAM;AAAA,UACpB,UAAU,MAAM;AAAA,UAChB,OAAO,MAAM;AAAA,UACb,YAAY,MAAM;AAAA,QACpB;AAAA,QACA,QAAQ,IAAI;AAAA,QACZ,MAAM;AAAA,MACR;AAEA,UAAI,OAAO,MAAM,GAAG;AAClB,YAAI,MAAM,iCAAiC,OAAO,KAAK;AACvD,eAAO,SAAS,QAAQ,EAAE,SAAS,KAAK,CAAC;AAAA,MAC3C;AAEA,UAAI,KAAK,uCAAuC;AAAA,QAC9C,UAAU,OAAO,MAAM;AAAA,MACzB,CAAC;AAED,aAAO,yBAAyB,OAAO,KAAK;AAAA,IAC9C;AAAA,EACF;AACF;;;ACnEA,IAAME,YAAW;AACjB,IAAM,sBAAsB;AAErB,IAAM,yBAAwC,CAAC;AAAA,EACpD;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACLA;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,qBAAqB;AAAA,MAC/C,aAAa;AAAA,MACb,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,SAAQ;AACxB,UAAI,KAAK,8BAA8B,KAAK,GAAG,EAAE;AAEjD,YAAM,iBAAiB,MAAM;AAAA,QAC3B;AAAA,QACAA;AAAA,QACA,kBAAkBA,WAAU,MAAM,EAAE,MAAM,CAAC;AAAA,QAC3C,QAAM;AAAA,UACJ,OAAO;AAAA,UACP,SAAS,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,QACpD;AAAA,MACF;AAEA,UAAI,eAAe,MAAM,GAAG;AAC1B,eAAO,SAAS,cAAc;AAAA,MAChC;AAEA,YAAM,SAAS,eAAe;AAE9B,UAAI,OAAO,OAAO;AAChB,eAAO,eAAe,MAAM;AAAA,MAC9B;AAEA,UAAI,OAAO,UAAU,aAAa;AAChC,eAAO,eAAe;AAAA,UACpB,OAAO;AAAA,UACP,QAAQ,OAAO;AAAA,UACf,OAAO,iCAAiC,mBAAmB;AAAA,QAC7D,CAAC;AAAA,MACH;AAEA,aAAO,eAAe;AAAA,QACpB,OAAO;AAAA,QACP,OAAO,OAAO;AAAA,QACd,OAAO,OAAO,WAAW;AAAA,QACzB,MACE,QAAQ,OAAO,KAAK,KACpB,uDAAuD,mBAAmB;AAAA,MAC9E,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;AAEA,IAAM,UAAU;AAAA,EACd,SAAS;AAAA,EACT,SACE;AAAA,EACF,eAAe;AACjB;;;ACjFA,SAAS,KAAAC,UAAS;AAUX,IAAM,wBAAuC,CAAC,EAAE,OAAO,MAAM;AAClE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,eAAe;AAAA,MACzC,aAAaC,GAAE,OAAO;AAAA,QACpB,WAAWA,GACR,OAAO,EACP,SAAS,EACT,SAAS,EACT;AAAA,UACC,oEAAoE,kBAAkB;AAAA,QACxF;AAAA,MACJ,CAAC;AAAA,MACD,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,WAAS;AACnB,UAAI,MAAM,cAAc,QAAW;AACjC,oBAAY,EAAE,WAAW,MAAM,UAAU,CAAC;AAAA,MAC5C;AAEA,YAAM,WAAW,YAAY;AAE7B,aAAO,QAAQ,QAAQ,yBAAyB,QAAQ,CAAC;AAAA,IAC3D,CAAC;AAAA,EACH;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,YAAY;AAAA,MACtC,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,MAAM;AAChB,YAAM,WAAW,YAAY;AAE7B,aAAO,QAAQ,QAAQ,yBAAyB,QAAQ,CAAC;AAAA,IAC3D,CAAC;AAAA,EACH;AACF;;;ACvDA,IAAMC,YAAW,aAAa,OAAO,UAAU;AAExC,IAAM,qBAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACLA;AAAA,IACA;AAAA,MACE,OAAO,aAAa,OAAO;AAAA,MAC3B,aAAa,aAAa,OAAO;AAAA,MACjC,aAAa;AAAA,MACb,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,MAClB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,UAAS;AACzB,YAAM,SAAS,MAAM,OAAO,EAAE,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO;AAE3D,UAAI,OAAO,MAAM,GAAG;AAClB,eAAO,SAAS,MAAM;AAAA,MACxB;AAEA,aAAO,eAAe,OAAO,KAAK;AAAA,IACpC,CAAC;AAAA,EACH;AACF;;;ACpBA,IAAMC,aAAY;AAEX,IAAM,qBAAoC,CAAC;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,SAAO;AAAA,IACLA;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa,aAAa,OAAO;AAAA,MACjC,aAAa;AAAA,MACb,aAAa;AAAA,QACX,cAAc;AAAA,QACd,iBAAiB;AAAA,QACjB,gBAAgB;AAAA,QAChB,eAAe;AAAA,MACjB;AAAA,IACF;AAAA,IACA,YAAY,OAAM,SAAQ;AACxB,UAAI,KAAK,mBAAmB,KAAK,KAAK,EAAE;AAExC,YAAM,eAAe,MAAM;AAAA,QACzB;AAAA,QACAA;AAAA,QACA,OAAO,MAAM,EAAE,SAASA,YAAW,SAAS,MAAM,CAAC;AAAA,QACnD,QAAM;AAAA,UACJ,OAAO;AAAA,UACP,SAAS,aAAa,QAAQ,EAAE,UAAU,OAAO,CAAC;AAAA,QACpD;AAAA,MACF;AAEA,UAAI,aAAa,MAAM,GAAG;AACxB,eAAO,SAAS,YAAY;AAAA,MAC9B;AAEA,YAAM,SAAS,aAAa;AAE5B,UAAI,CAAC,OAAO,SAAS;AACnB,eAAO,aAAa;AAAA,UAClB,OAAO,OAAO;AAAA,UACd,OAAO,OAAO;AAAA,UACd,SAAS,OAAO;AAAA,QAClB,CAAC;AAAA,MACH;AAEA,aAAO,eAAe;AAAA,QACpB,SAAS,OAAO;AAAA,QAChB,SAAS,OAAO;AAAA,MAClB,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AACF;;;ACpEA,SAAS,oBAAoB;AAC7B,SAAS,SAAS,YAAY;AAC9B,SAAS,qBAAqB;AAI9B,SAAS,aAAqB;AAC5B,MAAI,MAAwC;AAC1C,WAAO;AAAA,EACT;AAEA,QAAMC,aAAY,QAAQ,cAAc,YAAY,GAAG,CAAC;AACxD,QAAM,MAAM,KAAK;AAAA,IACf,aAAa,KAAKA,YAAW,uBAAuB,GAAG,OAAO;AAAA,EAChE;AACA,SAAO,IAAI;AACb;AAEO,IAAM,cAAc,WAAW;;;AfM/B,IAAM,cAAuB,OAAM,UAAS;AACjD,MAAI,KAAK,uBAAuB;AAEhC,QAAM,EAAE,QAAQ,UAAU,IAAI;AAE9B,QAAM,eAAe,MAAM,UAAU;AAErC,MAAI,aAAa,MAAM,GAAG;AACxB,QAAI,MAAM,KAAK,UAAU,aAAa,OAAO,MAAM,CAAC,CAAC;AACrD,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAU,aAAa;AAE7B,QAAM,OAAO,UAAU,QAAQ,IAAI;AAEnC,MAAI,MAAM;AACR,UAAM,iBAAiB,eAAe,EAAE,KAAK,GAAG,OAAO,OAAO;AAAA,EAChE;AAEA,QAAM,qBAAqB,wBAAwB,gBAAgB,CAAC;AAEpE,QAAM,SAAS,IAAI;AAAA,IACjB;AAAA,MACE,MAAM;AAAA,MACN,OAAO;AAAA,MACP,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,OAAO,CAAC,EAAE,KAAK,oCAAoC,CAAC;AAAA,MACpD,aAAa;AAAA,IACf;AAAA,IACA;AAAA,MACE,cAAc;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAEA,oBAAkB,KAAK;AACvB,sBAAoB,KAAK;AACzB,4BAA0B,KAAK;AAC/B,2BAAyB,KAAK;AAC9B,yBAAuB,KAAK;AAC5B,yBAAuB,KAAK;AAC5B,wBAAsB,KAAK;AAC3B,qBAAmB,KAAK;AACxB,qBAAmB,KAAK;AAExB,QAAM,YAAY,IAAI,qBAAqB;AAC3C,QAAM,OAAO,QAAQ,SAAS;AAE9B,QAAM,WAAW,YAAY;AAC3B,QAAI,KAAK,kBAAkB;AAC3B,UAAM,OAAO,MAAM;AACnB,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,UAAQ,GAAG,UAAU,MAAM,KAAK,SAAS,CAAC;AAC1C,UAAQ,GAAG,WAAW,MAAM,KAAK,SAAS,CAAC;AAC7C;","names":["error","z","z","z","z","toolName","z","toolName","z","z","toolName","TOOL_NAME","__dirname"]}
1
+ {"version":3,"sources":["../../src/server/index.ts","../../src/server/tools/response/lib.ts","../../src/server/tools/response/error.ts","../../src/server/tools/response/success.ts","../../src/server/tools/response/safe-handler.ts","../../src/shared/request/schemas/mcp.ts","../../src/server/tools/fetch.ts","../../src/server/tools/wallet.ts","../../src/server/tools/check-endpoint.ts","../../src/server/tools/redeem-invite.ts","../../src/server/tools/telemetry.ts","../../src/server/tools/discover-resources.ts","../../src/server/tools/settings.ts","../../src/server/tools/bridge.ts","../../src/server/tools/search.ts","../../src/server/lib/version.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerFetchTool } from './tools/fetch';\nimport { registerWalletTools } from './tools/wallet';\nimport { registerCheckEndpointTool } from './tools/check-endpoint';\nimport { registerRedeemInviteTool } from './tools/redeem-invite';\nimport { registerTelemetryTools } from './tools/telemetry';\nimport { registerDiscoveryTools } from './tools/discover-resources';\nimport { registerSettingsTools } from './tools/settings';\nimport { registerBridgeTool } from './tools/bridge';\nimport { registerSearchTool } from './tools/search';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport { buildServerInstructions } from '@/shared/descriptions';\nimport { loadUserOrigins } from '@/shared/user-origins';\nimport { getWallet } from '@/wallet';\n\nimport type { Command } from '@/types';\n\nexport const startServer: Command = async flags => {\n log.info('Starting agentcash...');\n\n const { invite, sessionId } = flags;\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n process.exit(1);\n }\n\n const wallets = walletResult.value;\n\n const code = invite ?? process.env.INVITE_CODE;\n\n if (code) {\n await redeemInviteCode('startServer', { code }, flags, wallets);\n }\n\n const serverInstructions = buildServerInstructions(loadUserOrigins());\n\n const server = new McpServer(\n {\n name: 'agentcash',\n title: 'AgentCash',\n version: MCP_VERSION,\n websiteUrl: 'https://agentcash.dev',\n icons: [{ src: 'https://agentcash.dev/favicon.svg' }],\n description: serverInstructions,\n },\n {\n instructions: serverInstructions,\n }\n );\n\n const props = {\n server,\n wallets,\n flags,\n sessionId,\n };\n\n registerFetchTool(props);\n registerWalletTools(props);\n registerCheckEndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(props);\n registerTelemetryTools(props);\n registerSettingsTools(props);\n registerBridgeTool(props);\n registerSearchTool(props);\n\n const transport = new StdioServerTransport();\n await server.connect(transport);\n\n const shutdown = async () => {\n log.info('Shutting down...');\n await server.close();\n process.exit(0);\n };\n\n process.on('SIGINT', () => void shutdown());\n process.on('SIGTERM', () => void shutdown());\n};\n","import type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\nexport const parsedResponseToToolContentPart = (\n data: ParsedResponse\n): CallToolResult['content'][number] => {\n switch (data.type) {\n case 'json':\n return {\n type: 'text' as const,\n text: JSON.stringify(data.data),\n };\n case 'image':\n return {\n type: 'image' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'audio':\n return {\n type: 'audio' as const,\n mimeType: data.mimeType,\n data: Buffer.from(data.data).toString('base64'),\n };\n case 'text':\n return { type: 'text' as const, text: data.data };\n default:\n return {\n type: 'text' as const,\n text: `Unsupported response type: ${data.type}`,\n };\n }\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { parsedResponseToToolContentPart } from './lib';\nimport {\n fetchHttpErr,\n isFetchError,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\n\nimport type { JsonStringifyValue } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { BaseError, Err } from '@agentcash/neverthrow/types';\nimport type { BaseX402Error } from '@/shared/protocols/x402/types';\nimport type { BaseMppError } from '@/shared/protocols/mpp/types';\nimport type { BaseFetchError } from '@/shared/neverthrow/fetch/types';\n\nconst buildMcpError = (\n content: CallToolResult['content'],\n options?: { isError?: boolean }\n): CallToolResult => {\n return {\n content,\n // Default: omit isError so siblings survive parallel calls.\n // Tools with outputSchema MUST pass isError: true so the SDK\n // skips output validation on error paths.\n ...(options?.isError ? { isError: true as const } : {}),\n };\n};\n\nexport const mcpErrorJson = (\n error: JsonStringifyValue,\n options?: { isError?: boolean }\n): CallToolResult => {\n return safeStringifyJson('mcp-error-json', error).match(\n success =>\n buildMcpError([{ type: 'text' as const, text: success }], options),\n error =>\n buildMcpError(\n [{ type: 'text' as const, text: JSON.stringify(error, null, 2) }],\n options\n )\n );\n};\n\nexport const mcpError = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Err<any, BaseX402Error | BaseMppError | BaseFetchError | BaseError>,\n options?: { isError?: boolean }\n) => {\n const { error } = err;\n if (isFetchError(error)) {\n switch (error.cause) {\n case 'network':\n case 'parse':\n return mcpErrorJson({ ...error }, options);\n case 'http':\n const { response, ...rest } = error;\n const parseResponseResult = await safeParseResponse(\n 'mcp-error-fetch-parse-response',\n response\n );\n const httpContent: CallToolResult['content'] = [\n { type: 'text' as const, text: JSON.stringify(rest, null, 2) },\n ...parseResponseResult.match(\n success => [parsedResponseToToolContentPart(success)],\n () => []\n ),\n ];\n return buildMcpError(httpContent, options);\n }\n }\n return mcpErrorJson({ ...error }, options);\n};\n\nexport const mcpErrorFetch = async (surface: string, response: Response) => {\n return mcpError(fetchHttpErr(surface, response));\n};\n","import { safeStringifyJson } from '@/shared/neverthrow/json';\n\nimport { mcpErrorJson } from './error';\n\nimport type {\n JsonStringifyObject,\n JsonStringifyValue,\n} from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { ParsedResponse } from '@/shared/neverthrow/fetch/types';\nimport { parsedResponseToToolContentPart } from './lib';\n\nconst buildMcpSuccess = (\n content: CallToolResult['content']\n): CallToolResult => {\n return {\n content,\n };\n};\n\nexport const mcpSuccessJson = (data: JsonStringifyValue): CallToolResult => {\n return safeStringifyJson('mcp-success-text', data).match(\n success => buildMcpSuccess([{ type: 'text' as const, text: success }]),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessStructuredJson = (\n data: JsonStringifyObject\n): CallToolResult => {\n return safeStringifyJson('mcp-success-structured', data).match(\n success => ({\n content: [{ type: 'text' as const, text: success }],\n structuredContent: data,\n }),\n error => mcpErrorJson(error)\n );\n};\n\nexport const mcpSuccessResponse = (\n data: ParsedResponse,\n extra?: JsonStringifyValue\n): CallToolResult => {\n const parsedExtra = extra\n ? safeStringifyJson('mcp-success-extra', extra).match(\n success => success,\n () => undefined\n )\n : undefined;\n\n return buildMcpSuccess([\n parsedResponseToToolContentPart(data),\n ...(parsedExtra ? [{ type: 'text' as const, text: parsedExtra }] : []),\n ]);\n};\n","import { log } from '@/shared/log';\nimport { mcpErrorJson } from './error';\n\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\n\n/**\n * Wraps an MCP tool handler so uncaught exceptions never propagate.\n * Returns error info as normal content (isError omitted) for any unhandled throw.\n *\n * This prevents sibling parallel tool calls from failing when one\n * tool encounters an unexpected error.\n */\nexport function safeHandler<T>(\n handler: (input: T) => Promise<CallToolResult>\n): (input: T) => Promise<CallToolResult> {\n return async (input: T) => {\n // eslint-disable-next-line no-restricted-syntax -- intentional last-resort catch to prevent sibling tool call failures\n try {\n return await handler(input);\n } catch (e) {\n log.error('Unhandled tool error', e);\n return mcpErrorJson({\n error: e instanceof Error ? e.message : String(e),\n cause: 'unhandled_exception',\n });\n }\n };\n}\n","import z from 'zod';\n\nimport { coreRequestSchema, fetchShape } from './core';\n\nexport const mcpBodySchema = z\n .union([\n z\n .string()\n .describe(\n 'Raw request body string. Passed through to the underlying fetch call as-is.'\n ),\n z\n .record(z.string(), z.unknown())\n .transform(json => JSON.stringify(json))\n .describe('JSON object to be sent as the request body'),\n ])\n .optional()\n .describe(\n 'Request body. Can be a string or an object that will be stringified.'\n );\n\nexport const mcpRequestSchema = coreRequestSchema.extend({\n body: mcpBodySchema,\n headers: z\n .record(z.string(), z.string())\n .optional()\n .default({})\n .transform(headers =>\n Object.fromEntries(\n Object.entries(headers).map(([key, value]) => [key, value.trim()])\n )\n )\n .describe('Additional headers to include as a key-value pair'),\n});\n\nexport const mcpFetchRequestSchema = mcpRequestSchema.extend(fetchShape);\n","import { safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { executeFetch } from '@/operations/fetch';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessResponse,\n safeHandler,\n} from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport { mcpFetchRequestSchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'fetch';\n\nexport const registerFetchTool: RegisterTools = props => {\n const { server, wallets, flags } = props;\n\n server.registerTool(\n TOOL_NAME,\n {\n title: DESCRIPTIONS.fetch.mcp,\n description: DESCRIPTIONS.fetch.mcp,\n inputSchema: mcpFetchRequestSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n const fetchResult = await executeFetch(input, {\n surface: TOOL_NAME,\n wallets,\n flags,\n params: input,\n });\n\n if (fetchResult.isErr()) {\n return mcpError(fetchResult);\n }\n\n const { response, paymentInfo } = fetchResult.value;\n\n if (!response.ok) {\n return mcpErrorFetch(TOOL_NAME, response);\n }\n\n const parseResponseResult = await safeParseResponse(TOOL_NAME, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n paymentInfo ?? undefined\n );\n })\n );\n};\n","import { getBalances, listAccountsWithBalances } from '@/operations/wallet';\n\nimport { mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n const getBalanceToolName = 'get_balance';\n server.registerTool(\n getBalanceToolName,\n {\n title: 'Get Balance',\n description: DESCRIPTIONS.getBalance.mcp,\n },\n async () => {\n const result = await getBalances(getBalanceToolName, wallets, flags);\n return mcpSuccessStructuredJson({\n balance: result.totalBalance,\n });\n }\n );\n\n const listAccountsToolName = 'list_accounts';\n\n server.registerTool(\n listAccountsToolName,\n {\n title: 'Get Accounts',\n description: DESCRIPTIONS.listAccounts.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n async () => {\n const result = await listAccountsWithBalances(\n listAccountsToolName,\n wallets,\n flags\n );\n return mcpSuccessStructuredJson(result);\n }\n );\n};\n","import { mcpSuccessJson, safeHandler } from './response';\n\nimport { log } from '@/shared/log';\nimport { checkEndpoint } from '@/operations/check-endpoint';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport { mcpRequestSchema, mcpBodySchema } from '@/shared/request/schemas/mcp';\n\nimport type { RegisterTools } from '@/server/types';\nimport { RequestMethod } from '@/shared/request/types';\nimport z from 'zod';\n\nconst toolName = 'check_endpoint_schema';\n\nexport const registerCheckEndpointTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Check Endpoint Schema',\n description: DESCRIPTIONS.checkEndpointSchema.mcp,\n inputSchema: mcpRequestSchema.extend({\n method: z\n .enum(RequestMethod)\n .optional()\n .describe(TOOL_PARAMS.checkEndpointSchema.method),\n body: mcpBodySchema.describe(TOOL_PARAMS.checkEndpointSchema.body),\n }),\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async input => {\n log.info('Querying endpoint', {\n url: input.url,\n method: input.method,\n hasSampleInputBody: !!input.body,\n });\n\n const result = await checkEndpoint(toolName, input, { wallets, flags });\n\n if (!result.found) {\n log.error('[checkEndpoint] failed', {\n surface: toolName,\n url: input.url,\n cause: result.cause,\n message: result.message,\n });\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n if (result.advisories.length === 0) {\n return mcpSuccessJson({\n message: 'No endpoint schema found for this URL.',\n url: input.url,\n });\n }\n\n return mcpSuccessJson({\n url: input.url,\n results: result.advisories,\n });\n })\n );\n};\n","import z from 'zod';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\n\nimport { redeemInviteCode } from '@/shared/redeem-invite';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\nimport { Network } from '@agentcash/networks';\n\nconst SURFACE = 'server:redeem-invite';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n 'redeem_invite',\n {\n title: 'Redeem Invite',\n description: DESCRIPTIONS.redeemInvite.mcp,\n inputSchema: z.object({\n code: z.string().min(1).describe(TOOL_PARAMS.redeemInvite.code),\n }),\n outputSchema: z.object({\n redeemed: z.literal(true),\n amount: z.string().describe(TOOL_PARAMS.redeemInvite.output.amount),\n txHash: z.string().describe(TOOL_PARAMS.redeemInvite.output.txHash),\n }),\n annotations: {\n readOnlyHint: false, // Modifies wallet balance\n destructiveHint: false, // Additive (adds funds), not destructive\n idempotentHint: false, // Same code can't be redeemed twice - second attempt fails\n openWorldHint: true,\n },\n },\n async args => {\n const result = await redeemInviteCode(\n SURFACE,\n { code: args.code },\n flags,\n wallets\n );\n\n if (result.isErr()) {\n return mcpError(result, { isError: true });\n }\n\n const { amount, txHash, solanaTxHash, network } = result.value;\n const effectiveTxHash = solanaTxHash ?? txHash;\n const explorerUrl =\n solanaTxHash || network === Network.SOLANA\n ? `https://solscan.io/tx/${effectiveTxHash}`\n : `https://basescan.org/tx/${effectiveTxHash}`;\n\n return mcpSuccessStructuredJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash: effectiveTxHash,\n explorerUrl,\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { log } from '@/shared/log';\nimport { submitErrorReport } from '@/operations/report-error';\nimport { mcpError, mcpSuccessStructuredJson } from './response';\nimport { DESCRIPTIONS, TOOL_PARAMS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'report_error';\n\nexport const registerTelemetryTools: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: 'Report Error',\n description: DESCRIPTIONS.reportError.mcp,\n inputSchema: z.object({\n tool: z.string().describe(TOOL_PARAMS.reportError.tool),\n resource: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.resource),\n summary: z.string().describe(TOOL_PARAMS.reportError.summary),\n errorMessage: z.string().describe(TOOL_PARAMS.reportError.errorMessage),\n stack: z.string().optional().describe(TOOL_PARAMS.reportError.stack),\n fullReport: z\n .string()\n .optional()\n .describe(TOOL_PARAMS.reportError.fullReport),\n }),\n outputSchema: z.object({\n submitted: z.literal(true),\n reportId: z.string().describe(TOOL_PARAMS.reportError.output.reportId),\n message: z.string().describe(TOOL_PARAMS.reportError.output.message),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n openWorldHint: true,\n },\n },\n async input => {\n log.info('Submitting error report', {\n tool: input.tool,\n resource: input.resource,\n summary: input.summary,\n });\n\n const result = await submitErrorReport(\n toolName,\n {\n tool: input.tool,\n summary: input.summary,\n errorMessage: input.errorMessage,\n resource: input.resource,\n stack: input.stack,\n fullReport: input.fullReport,\n },\n wallets.evm.address,\n flags.dev\n );\n\n if (result.isErr()) {\n log.error('Failed to submit error report', result.error);\n return mcpError(result, { isError: true });\n }\n\n log.info('Error report submitted successfully', {\n reportId: result.value.reportId,\n });\n\n return mcpSuccessStructuredJson(result.value);\n }\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport {\n discoverResources,\n discoverResourcesSchema,\n} from '@/operations/discover';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'discover_api_endpoints';\nconst OPENAPI_TRIED_PATHS = '/openapi.json, /.well-known/x402';\n\nexport const registerDiscoveryTools: RegisterTools = ({ server, flags }) => {\n server.registerTool(\n toolName,\n {\n title: 'Discover API Endpoints',\n description: DESCRIPTIONS.discoverApiEndpoints.mcp,\n inputSchema: discoverResourcesSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`Discovering resources for: ${args.url}`);\n\n const discoverResult = await resultFromPromise(\n 'discover',\n toolName,\n discoverResources(toolName, args, { flags }),\n e => ({\n cause: 'discover' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (discoverResult.isErr()) {\n return mcpError(discoverResult);\n }\n\n const result = discoverResult.value;\n\n if (result.found) {\n return mcpSuccessJson(result);\n }\n\n if (result.cause === 'not_found') {\n return mcpSuccessJson({\n found: false,\n origin: result.origin,\n error: `No OpenAPI spec found. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n }\n\n return mcpSuccessJson({\n found: false,\n cause: result.cause,\n error: result.message ?? `Failed to fetch OpenAPI spec`,\n hint:\n hintMap[result.cause] ??\n `The server returned an unparseable response. Tried: ${OPENAPI_TRIED_PATHS}`,\n });\n })\n );\n};\n\nconst hintMap = {\n timeout: 'The server may be slow or unreachable. Try again later.',\n network:\n 'Could not reach the server. Check the network connection and try again.',\n invalid_input: 'Invalid input. Please check the input and try again.',\n};\n","import { z } from 'zod';\n\nimport { getSettings, setSettings } from '@/shared/settings';\nimport { DEFAULT_MAX_AMOUNT } from '@/operations/fetch/types';\n\nimport { mcpSuccessStructuredJson, safeHandler } from './response';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport type { RegisterTools } from '@/server/types';\n\nexport const registerSettingsTools: RegisterTools = ({ server }) => {\n server.registerTool(\n 'update_settings',\n {\n title: 'Update Settings',\n description: DESCRIPTIONS.updateSettings.mcp,\n inputSchema: z.object({\n maxAmount: z\n .number()\n .positive()\n .optional()\n .describe(\n `Maximum amount (USD) to pay per fetch request. Current default: $${DEFAULT_MAX_AMOUNT}.`\n ),\n }),\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(input => {\n if (input.maxAmount !== undefined) {\n setSettings({ maxAmount: input.maxAmount });\n }\n\n const settings = getSettings();\n\n return Promise.resolve(mcpSuccessStructuredJson(settings));\n })\n );\n\n server.registerTool(\n 'get_settings',\n {\n title: 'Get Settings',\n description: DESCRIPTIONS.getSettings.mcp,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: false,\n },\n },\n safeHandler(() => {\n const settings = getSettings();\n\n return Promise.resolve(mcpSuccessStructuredJson(settings));\n })\n );\n};\n","import { mcpError, mcpSuccessJson, safeHandler } from './response';\n\nimport { DESCRIPTIONS } from '@/shared/descriptions';\nimport type { RegisterTools } from '@/server/types';\nimport { bridge, bridgeSchema } from '@/operations/bridge';\n\nconst toolName = DESCRIPTIONS.bridge.toolNames.mcp;\n\nexport const registerBridgeTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n title: DESCRIPTIONS.bridge.title,\n description: DESCRIPTIONS.bridge.mcp,\n inputSchema: bridgeSchema,\n annotations: {\n readOnlyHint: false,\n destructiveHint: false,\n idempotentHint: false,\n },\n },\n safeHandler(async input => {\n const result = await bridge({ ...input, ...flags }, wallets);\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n return mcpSuccessJson(result.value);\n })\n );\n};\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { log } from '@/shared/log';\nimport { search, searchSchema } from '@/operations/search';\nimport { DESCRIPTIONS } from '@/shared/descriptions';\n\nimport {\n mcpError,\n mcpErrorJson,\n mcpSuccessJson,\n safeHandler,\n} from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst TOOL_NAME = 'search';\n\nexport const registerSearchTool: RegisterTools = ({\n server,\n wallets,\n flags,\n}) => {\n server.registerTool(\n TOOL_NAME,\n {\n title: 'Search APIs',\n description: DESCRIPTIONS.search.mcp,\n inputSchema: searchSchema,\n annotations: {\n readOnlyHint: true,\n destructiveHint: false,\n idempotentHint: true,\n openWorldHint: true,\n },\n },\n safeHandler(async args => {\n log.info(`[search] query: ${args.query}`);\n\n const searchResult = await resultFromPromise(\n 'search',\n TOOL_NAME,\n search(args, { surface: TOOL_NAME, wallets, flags }),\n e => ({\n cause: 'search' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (searchResult.isErr()) {\n return mcpError(searchResult);\n }\n\n const result = searchResult.value;\n\n if (!result.success) {\n return mcpErrorJson({\n error: result.message,\n cause: result.cause,\n details: result.details,\n });\n }\n\n return mcpSuccessJson({\n success: result.success,\n results: result.results,\n });\n })\n );\n};\n","import { readFileSync } from 'fs';\nimport { dirname, join } from 'path';\nimport { fileURLToPath } from 'url';\n\ndeclare const __MCP_VERSION__: string | undefined;\n\nfunction getVersion(): string {\n if (typeof __MCP_VERSION__ !== 'undefined') {\n return __MCP_VERSION__;\n }\n // Fallback for dev mode (tsx)\n const __dirname = dirname(fileURLToPath(import.meta.url));\n const pkg = JSON.parse(\n readFileSync(join(__dirname, '../../../package.json'), 'utf-8')\n ) as { version: string };\n return pkg.version;\n}\n\nexport const MCP_VERSION = getVersion();\n"],"mappings":"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","names":["error","z","z","z","z","toolName","z","toolName","z","z","toolName","TOOL_NAME","__dirname"]}
@@ -4,8 +4,8 @@ import {
4
4
  import "./chunk-ISF2WVEZ.js";
5
5
  import {
6
6
  discoverResources
7
- } from "./chunk-Y2J274RB.js";
8
- import "./chunk-CR2YGI3I.js";
7
+ } from "./chunk-CFSSHSBN.js";
8
+ import "./chunk-SFESERJN.js";
9
9
  import "./chunk-KJCWPVQE.js";
10
10
  import "./chunk-BFOYXXLG.js";
11
11
  import {
@@ -29,7 +29,9 @@ import "./chunk-ITCDZXBZ.js";
29
29
  var surface = "cli:try";
30
30
  var tryCommand = async (args) => {
31
31
  const wallets = await getWalletOrExit(args);
32
- const discoverResult = await discoverResources(surface, args, { flags: args });
32
+ const discoverResult = await discoverResources(surface, args, {
33
+ flags: args
34
+ });
33
35
  const walletInfo = await getWalletInfo(surface, wallets, args);
34
36
  const onboardingCta = walletInfo.onboardingCta;
35
37
  if (!discoverResult.found) {
@@ -99,4 +101,4 @@ var tryCommand = async (args) => {
99
101
  export {
100
102
  tryCommand
101
103
  };
102
- //# sourceMappingURL=try-36SR5JEG.js.map
104
+ //# sourceMappingURL=try-UYLQPTBJ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cli/commands/try.ts"],"sourcesContent":["import { successResponse, outputAndExit } from '@/cli/output';\n\nimport { discoverResources } from '@/operations/discover';\nimport { getWalletInfo } from '@/operations/wallet';\nimport { getWalletOrExit } from '../lib/get-wallet-or-exit';\n\nimport type { Command } from '@/types';\nimport type { DiscoverResourcesInput } from '@/operations/discover';\n\nconst surface = 'cli:try';\n\nexport const tryCommand: Command<DiscoverResourcesInput> = async args => {\n const wallets = await getWalletOrExit(args);\n\n const discoverResult = await discoverResources(surface, args, {\n flags: args,\n });\n const walletInfo = await getWalletInfo(surface, wallets, args);\n\n const onboardingCta = walletInfo.onboardingCta;\n\n if (!discoverResult.found) {\n const origin =\n 'origin' in discoverResult ? discoverResult.origin : args.url;\n return outputAndExit(\n successResponse({\n ...(onboardingCta\n ? {\n onboardMessage: onboardingCta.message,\n onboardLink: onboardingCta.onboardLink,\n }\n : {}),\n notice: `No endpoints found for ${origin}. The origin may not support x402 or SIWX.`,\n resources: `Browse supported APIs at https://agentcash.dev/resources`,\n }),\n args\n );\n }\n\n // Pick up to 3 sample endpoints (prefer paid)\n const paidEndpoints = discoverResult.endpoints.filter(\n e => e.authMode === 'paid'\n );\n const sampleEndpoints = (\n paidEndpoints.length > 0 ? paidEndpoints : discoverResult.endpoints\n ).slice(0, 3);\n const totalCount = discoverResult.endpoints.length;\n\n const title = discoverResult.info?.title ?? discoverResult.origin;\n const description = discoverResult.info?.description;\n\n const sampleLines = sampleEndpoints.map(e => {\n const price = e.price ? ` (${e.price})` : '';\n return ` - ${e.summary}${price}`;\n });\n\n const originSummary = [\n `${title}${description ? ` — ${description}` : ''}`,\n '',\n 'Sample endpoints:',\n ...sampleLines,\n ...(totalCount > sampleEndpoints.length\n ? [\n ` ...and ${totalCount - sampleEndpoints.length} more. Run \\`npx agentcash discover ${discoverResult.origin}\\` to see all endpoints.`,\n ]\n : []),\n ].join('\\n');\n\n // Call to action using the first paid endpoint\n const firstEndpoint =\n discoverResult.endpoints.find(e => e.authMode === 'paid') ??\n discoverResult.endpoints[0];\n\n let callToAction: string | undefined;\n if (firstEndpoint) {\n const endpointUrl = `${discoverResult.origin}${firstEndpoint.path}`;\n callToAction = [\n `To call your first endpoint:`,\n ` 1. Run \\`npx agentcash check \"${endpointUrl}\"\\` to get the input schema and pricing.`,\n ` 2. Run \\`npx agentcash fetch \"${endpointUrl}\" -m ${firstEndpoint.method}\\` with the required body to make the call.`,\n `If you have the AgentCash MCP installed, you can also call this directly using the check_endpoint_schema and fetch tools.`,\n ].join('\\n');\n }\n\n const modelInstructions = [\n `Present the originSummary to the user, then ask them what they would like to do — e.g. \"What would you like to do with ${title}?\"`,\n ...(onboardingCta\n ? [\n `IMPORTANT: The user has not yet onboarded. Show the onboard link VERBATIM as a clickable URL so the user can click it: ${onboardingCta.onboardLink}`,\n ]\n : []),\n ].join('\\n');\n\n return outputAndExit(\n successResponse({\n ...(onboardingCta\n ? {\n onboardMessage: onboardingCta.message,\n onboardLink: onboardingCta.onboardLink,\n }\n : {}),\n originSummary,\n callToAction,\n modelInstructions,\n }),\n args\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,IAAM,UAAU;AAET,IAAM,aAA8C,OAAM,SAAQ;AACvE,QAAM,UAAU,MAAM,gBAAgB,IAAI;AAE1C,QAAM,iBAAiB,MAAM,kBAAkB,SAAS,MAAM;AAAA,IAC5D,OAAO;AAAA,EACT,CAAC;AACD,QAAM,aAAa,MAAM,cAAc,SAAS,SAAS,IAAI;AAE7D,QAAM,gBAAgB,WAAW;AAEjC,MAAI,CAAC,eAAe,OAAO;AACzB,UAAM,SACJ,YAAY,iBAAiB,eAAe,SAAS,KAAK;AAC5D,WAAO;AAAA,MACL,gBAAgB;AAAA,QACd,GAAI,gBACA;AAAA,UACE,gBAAgB,cAAc;AAAA,UAC9B,aAAa,cAAc;AAAA,QAC7B,IACA,CAAC;AAAA,QACL,QAAQ,0BAA0B,MAAM;AAAA,QACxC,WAAW;AAAA,MACb,CAAC;AAAA,MACD;AAAA,IACF;AAAA,EACF;AAGA,QAAM,gBAAgB,eAAe,UAAU;AAAA,IAC7C,OAAK,EAAE,aAAa;AAAA,EACtB;AACA,QAAM,mBACJ,cAAc,SAAS,IAAI,gBAAgB,eAAe,WAC1D,MAAM,GAAG,CAAC;AACZ,QAAM,aAAa,eAAe,UAAU;AAE5C,QAAM,QAAQ,eAAe,MAAM,SAAS,eAAe;AAC3D,QAAM,cAAc,eAAe,MAAM;AAEzC,QAAM,cAAc,gBAAgB,IAAI,OAAK;AAC3C,UAAM,QAAQ,EAAE,QAAQ,KAAK,EAAE,KAAK,MAAM;AAC1C,WAAO,OAAO,EAAE,OAAO,GAAG,KAAK;AAAA,EACjC,CAAC;AAED,QAAM,gBAAgB;AAAA,IACpB,GAAG,KAAK,GAAG,cAAc,WAAM,WAAW,KAAK,EAAE;AAAA,IACjD;AAAA,IACA;AAAA,IACA,GAAG;AAAA,IACH,GAAI,aAAa,gBAAgB,SAC7B;AAAA,MACE,YAAY,aAAa,gBAAgB,MAAM,uCAAuC,eAAe,MAAM;AAAA,IAC7G,IACA,CAAC;AAAA,EACP,EAAE,KAAK,IAAI;AAGX,QAAM,gBACJ,eAAe,UAAU,KAAK,OAAK,EAAE,aAAa,MAAM,KACxD,eAAe,UAAU,CAAC;AAE5B,MAAI;AACJ,MAAI,eAAe;AACjB,UAAM,cAAc,GAAG,eAAe,MAAM,GAAG,cAAc,IAAI;AACjE,mBAAe;AAAA,MACb;AAAA,MACA,mCAAmC,WAAW;AAAA,MAC9C,mCAAmC,WAAW,QAAQ,cAAc,MAAM;AAAA,MAC1E;AAAA,IACF,EAAE,KAAK,IAAI;AAAA,EACb;AAEA,QAAM,oBAAoB;AAAA,IACxB,+HAA0H,KAAK;AAAA,IAC/H,GAAI,gBACA;AAAA,MACE,0HAA0H,cAAc,WAAW;AAAA,IACrJ,IACA,CAAC;AAAA,EACP,EAAE,KAAK,IAAI;AAEX,SAAO;AAAA,IACL,gBAAgB;AAAA,MACd,GAAI,gBACA;AAAA,QACE,gBAAgB,cAAc;AAAA,QAC9B,aAAa,cAAc;AAAA,MAC7B,IACA,CAAC;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD;AAAA,EACF;AACF;","names":[]}