@x402scan/mcp 0.0.7-beta.3 → 0.0.7-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/run-server.cjs +6 -6
- package/dist/esm/chunk-2UP5W5MC.js +47 -0
- package/dist/esm/chunk-2UP5W5MC.js.map +1 -0
- package/dist/esm/{chunk-4ESXGYV6.js → chunk-JXXC6FYE.js} +66 -21
- package/dist/esm/chunk-JXXC6FYE.js.map +1 -0
- package/dist/esm/{chunk-47GMMJYJ.js → chunk-Q2QVXJFE.js} +5 -3
- package/dist/esm/chunk-Q2QVXJFE.js.map +1 -0
- package/dist/esm/{chunk-NV5QXA6N.js → chunk-RZYTNVC6.js} +19 -8
- package/dist/esm/chunk-RZYTNVC6.js.map +1 -0
- package/dist/esm/{fund-DSYKNOMK.js → fund-ANZCZU5C.js} +15 -10
- package/dist/esm/fund-ANZCZU5C.js.map +1 -0
- package/dist/esm/index.js +7 -8
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{install-F5WF4NGY.js → install-BBOI4D6I.js} +102 -58
- package/dist/esm/install-BBOI4D6I.js.map +1 -0
- package/dist/esm/server-IOVNYPTB.js +976 -0
- package/dist/esm/server-IOVNYPTB.js.map +1 -0
- package/package.json +5 -5
- package/dist/esm/chunk-47GMMJYJ.js.map +0 -1
- package/dist/esm/chunk-4ESXGYV6.js.map +0 -1
- package/dist/esm/chunk-BGSCKUEG.js +0 -35
- package/dist/esm/chunk-BGSCKUEG.js.map +0 -1
- package/dist/esm/chunk-NV5QXA6N.js.map +0 -1
- package/dist/esm/chunk-PLDDJCW6.js +0 -43
- package/dist/esm/chunk-PLDDJCW6.js.map +0 -1
- package/dist/esm/fund-DSYKNOMK.js.map +0 -1
- package/dist/esm/install-F5WF4NGY.js.map +0 -1
- package/dist/esm/server-P6JS4DSU.js +0 -42616
- package/dist/esm/server-P6JS4DSU.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/server/index.ts","../../src/server/tools/x402-fetch.ts","../../src/server/tools/response/lib.ts","../../src/server/tools/response/error.ts","../../src/server/tools/response/success.ts","../../src/server/tools/lib/request.ts","../../src/server/tools/lib/check-balance.ts","../../src/shared/token.ts","../../src/shared/neverthrow/x402/index.ts","../../src/server/tools/auth-fetch.ts","../../src/server/lib/x402-extensions.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/resources/origins.ts","../../src/server/resources/_lib.ts"],"sourcesContent":["import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';\n\nimport { registerFetchX402ResourceTool } from './tools/x402-fetch';\nimport { registerAuthTools } from './tools/auth-fetch';\nimport { registerWalletTools } from './tools/wallet';\nimport { registerCheckX402EndpointTool } from './tools/check-endpoint';\nimport { registerRedeemInviteTool } from './tools/redeem-invite';\nimport { registerTelemetryTools } from './tools/telemetry';\nimport { registerDiscoveryTools } from './tools/discover-resources';\n\nimport { registerOrigins } from './resources/origins';\n\nimport { MCP_VERSION } from './lib/version';\n\nimport { log } from '@/shared/log';\nimport { getWallet } from '@/shared/wallet';\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport type { Command } from '@/types';\n\nexport const startServer: Command = async flags => {\n log.info('Starting x402scan-mcp...');\n\n const { dev, invite } = flags;\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n console.error(walletResult.error);\n process.exit(1);\n }\n\n const { account } = walletResult.value;\n\n const code = invite ?? process.env.INVITE_CODE;\n\n if (code) {\n await redeemInviteCode({\n code,\n dev,\n address: account.address,\n surface: 'startServer',\n });\n }\n\n const server = new McpServer(\n {\n name: '@x402scan/mcp',\n version: MCP_VERSION,\n websiteUrl: 'https://x402scan.com/mcp',\n icons: [{ src: 'https://x402scan.com/logo.svg' }],\n },\n {\n capabilities: {\n resources: {\n subscribe: true,\n listChanged: true,\n },\n },\n }\n );\n\n const props = {\n server,\n account,\n flags,\n };\n\n registerFetchX402ResourceTool(props);\n registerAuthTools(props);\n registerWalletTools(props);\n registerCheckX402EndpointTool(props);\n registerRedeemInviteTool(props);\n registerDiscoveryTools(server);\n registerTelemetryTools(props);\n\n await registerOrigins({ server, flags });\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 { safeFetch, safeParseResponse } from '@/shared/neverthrow/fetch';\n\nimport { x402Client, x402HTTPClient } from '@x402/core/client';\nimport { ExactEvmScheme } from '@x402/evm/exact/client';\n\nimport { mcpError, mcpErrorFetch, mcpSuccessResponse } from './response';\n\nimport { requestSchema, buildRequest } from './lib/request';\nimport { checkBalance } from './lib/check-balance';\n\nimport { DEFAULT_NETWORK } from '@/shared/networks';\nimport { tokenStringToNumber } from '@/shared/token';\nimport {\n safeCreatePaymentPayload,\n safeGetPaymentRequired,\n safeGetPaymentSettlement,\n x402Err,\n} from '@/shared/neverthrow/x402';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'fetch';\n\nexport const registerFetchX402ResourceTool: RegisterTools = ({\n server,\n account,\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n description:\n 'Makes an http fetch request. If the request is to an x402-protected resource, it will handle payment automatically.',\n inputSchema: requestSchema,\n },\n async input => {\n const coreClient = x402Client.fromConfig({\n schemes: [\n { network: DEFAULT_NETWORK, client: new ExactEvmScheme(account) },\n ],\n });\n\n coreClient.onBeforePaymentCreation(async ({ selectedRequirements }) => {\n const amount = tokenStringToNumber(selectedRequirements.amount);\n await checkBalance({\n surface: toolName,\n server,\n address: account.address,\n amountNeeded: amount,\n message: balance =>\n `This request costs ${amount} USDC. Your current balance is ${balance} USDC.`,\n flags,\n });\n });\n\n const client = new x402HTTPClient(coreClient);\n\n const fetchWithPay = safeWrapFetchWithPayment(client);\n\n const fetchResult = await fetchWithPay(buildRequest(input));\n\n if (fetchResult.isErr()) {\n return mcpError(fetchResult);\n }\n\n const response = fetchResult.value;\n\n if (!response.ok) {\n return mcpErrorFetch(toolName, response);\n }\n\n const parseResponseResult = await safeParseResponse(toolName, response);\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n const settlementResult = safeGetPaymentSettlement(\n toolName,\n client,\n response\n );\n\n return mcpSuccessResponse(\n parseResponseResult.value,\n settlementResult.isOk()\n ? { payment: settlementResult.value }\n : undefined\n );\n }\n );\n};\n\nfunction safeWrapFetchWithPayment(client: x402HTTPClient) {\n return async (input: RequestInfo | URL, init?: RequestInit) => {\n const request = new Request(input, init);\n const clonedRequest = request.clone();\n\n const probeResult = await safeFetch(toolName, request);\n\n if (probeResult.isErr()) {\n return probeResult;\n }\n\n if (probeResult.value.status !== 402) {\n return probeResult;\n }\n\n const response = probeResult.value;\n\n const paymentRequiredResult = await safeGetPaymentRequired(\n toolName,\n client,\n response\n );\n\n if (paymentRequiredResult.isErr()) {\n return paymentRequiredResult;\n }\n\n const paymentRequired = paymentRequiredResult.value;\n\n const paymentPayloadResult = await safeCreatePaymentPayload(\n toolName,\n client,\n paymentRequired\n );\n\n if (paymentPayloadResult.isErr()) {\n return paymentPayloadResult;\n }\n\n const paymentPayload = paymentPayloadResult.value;\n\n // Encode payment header\n const paymentHeaders = client.encodePaymentSignatureHeader(paymentPayload);\n\n // Check if this is already a retry to prevent infinite loops\n if (\n clonedRequest.headers.has('PAYMENT-SIGNATURE') ||\n clonedRequest.headers.has('X-PAYMENT')\n ) {\n return x402Err(toolName, {\n cause: 'payment_already_attempted',\n message: 'Payment already attempted',\n });\n }\n\n // Add payment headers to cloned request\n for (const [key, value] of Object.entries(paymentHeaders)) {\n clonedRequest.headers.set(key, value);\n }\n clonedRequest.headers.set(\n 'Access-Control-Expose-Headers',\n 'PAYMENT-RESPONSE,X-PAYMENT-RESPONSE'\n );\n\n // Retry the request with payment\n return await safeFetch(toolName, clonedRequest);\n };\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, null, 2),\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 { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';\nimport type { BaseError, Err } from '@x402scan/neverthrow/types';\nimport type { BaseX402Error } from '@/shared/neverthrow/x402/types';\nimport type { BaseFetchError } from '@/shared/neverthrow/fetch/types';\n\nconst buildMcpError = (content: CallToolResult['content']): CallToolResult => {\n return {\n content,\n isError: true as const,\n };\n};\n\nexport const mcpErrorJson = (error: JsonObject): CallToolResult => {\n return safeStringifyJson('mcp-error-json', error).match(\n success => buildMcpError([{ type: 'text' as const, text: success }]),\n error =>\n buildMcpError([\n { type: 'text' as const, text: JSON.stringify(error, null, 2) },\n ])\n );\n};\n\nexport const mcpError = async (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n err: Err<any, BaseX402Error | BaseFetchError | BaseError>\n) => {\n const { error } = err;\n if (isFetchError(error)) {\n switch (error.cause) {\n case 'network':\n case 'parse':\n return mcpErrorJson({ ...error });\n case 'http':\n const { response, ...rest } = error;\n const parseResponseResult = await safeParseResponse(\n 'mcp-error-fetch-parse-response',\n response\n );\n return buildMcpError([\n { type: 'text' as const, text: JSON.stringify(rest, null, 2) },\n ...parseResponseResult.match(\n success => [parsedResponseToToolContentPart(success)],\n () => []\n ),\n ]);\n }\n }\n return mcpErrorJson({ ...error });\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 { JsonObject } 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: JsonObject): 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 mcpSuccessResponse = (\n data: ParsedResponse,\n extra?: JsonObject\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 z from 'zod';\n\nexport const requestSchema = z.object({\n url: z.url().describe('The endpoint URL'),\n method: z\n .enum(['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])\n .default('GET')\n .describe('HTTP method'),\n body: z\n .unknown()\n .optional()\n .describe('Request body for POST/PUT/PATCH methods'),\n headers: z\n .record(z.string(), z.string())\n .optional()\n .describe('Additional headers to include')\n .default({}),\n});\n\nexport const buildRequest = (input: z.infer<typeof requestSchema>) => {\n return new Request(input.url, {\n method: input.method,\n body: input.body\n ? typeof input.body === 'string'\n ? input.body\n : JSON.stringify(input.body)\n : undefined,\n headers: {\n ...(input.body ? { 'Content-Type': 'application/json' } : {}),\n ...input.headers,\n },\n });\n};\n","import { getBalance } from '@/shared/balance';\nimport { getDepositLink, openDepositLink } from '@/shared/utils';\nimport { log } from '@/shared/log';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport type { Address } from 'viem';\nimport type { GlobalFlags } from '@/types';\n\ninterface CheckBalanceProps {\n server: McpServer;\n address: Address;\n amountNeeded: number;\n message: (balance: number) => string;\n flags: GlobalFlags;\n surface: string;\n}\n\nexport const checkBalance = async ({\n server,\n address,\n amountNeeded,\n message,\n flags,\n surface,\n}: CheckBalanceProps) => {\n const balanceResult = await getBalance({ address, flags, surface });\n\n if (balanceResult.isErr()) {\n log.error(JSON.stringify(balanceResult.error, null, 2));\n return;\n }\n\n const balance = balanceResult.value;\n\n if (balance.balance < amountNeeded) {\n const capabilities = server.server.getClientCapabilities();\n if (!capabilities?.elicitation) {\n throw new Error(\n `${message(balance.balance)}\\n\\nYou can deposit USDC at ${getDepositLink(address, flags)}`\n );\n }\n\n const result = await server.server.elicitInput({\n mode: 'form',\n message: message(balance.balance),\n requestedSchema: {\n type: 'object',\n properties: {},\n },\n });\n\n if (result.action === 'accept') {\n await openDepositLink(address, flags);\n }\n }\n\n return balance.balance;\n};\n","import { formatUnits } from 'viem';\n\nexport const tokenStringToNumber = (amount: string, decimals = 6) => {\n return Number(formatUnits(BigInt(amount), decimals));\n};\n","import {\n err,\n resultFromPromise,\n resultFromThrowable,\n} from '@x402scan/neverthrow';\nimport { createSIWxPayload } from '@x402scan/siwx';\n\nimport type { BaseX402Error } from './types';\nimport type { x402HTTPClient } from '@x402/core/http';\nimport type { PaymentRequired } from '@x402/core/types';\nimport type { SIWxExtensionInfo } from '@x402scan/siwx/types';\nimport type { PrivateKeyAccount } from 'viem';\n\nconst errorType = 'x402';\n\nexport const x402Err = (cause: string, error: BaseX402Error) =>\n err(errorType, cause, error);\n\nconst x402ResultFromPromise = <T>(\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => BaseX402Error\n) => resultFromPromise(errorType, surface, promise, error);\n\nconst x402ResultFromThrowable = <T>(\n surface: string,\n fn: () => T,\n error: (e: unknown) => BaseX402Error\n) => resultFromThrowable(errorType, surface, fn, error);\n\nexport const safeGetPaymentRequired = (\n surface: string,\n client: x402HTTPClient,\n response: Response\n) => {\n return x402ResultFromPromise(\n surface,\n response.json().then(\n json =>\n client.getPaymentRequiredResponse(\n name => response.headers.get(name),\n json\n ),\n () =>\n client.getPaymentRequiredResponse(name => response.headers.get(name))\n ),\n error => ({\n cause: 'parse_payment_required',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to parse payment required',\n })\n );\n};\n\nexport const safeCreatePaymentPayload = (\n surface: string,\n client: x402HTTPClient,\n paymentRequired: PaymentRequired\n) => {\n return x402ResultFromPromise(\n surface,\n client.createPaymentPayload(paymentRequired),\n error => ({\n cause: 'create_payment_payload',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to create payment payload',\n })\n );\n};\n\nexport const safeGetPaymentSettlement = (\n surface: string,\n client: x402HTTPClient,\n response: Response\n) => {\n return x402ResultFromThrowable(\n surface,\n () => client.getPaymentSettleResponse(name => response.headers.get(name)),\n error => ({\n cause: 'get_payment_settlement',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to get payment settlement',\n })\n );\n};\n\nexport const safeCreateSIWxPayload = (\n surface: string,\n serverInfo: SIWxExtensionInfo,\n signer: PrivateKeyAccount\n) => {\n return x402ResultFromPromise(\n surface,\n createSIWxPayload(serverInfo, signer),\n error => ({\n cause: 'create_siwx_payload',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to create SIWX payload',\n })\n );\n};\n","import { x402Client, x402HTTPClient } from '@x402/core/client';\nimport { encodeSIWxHeader } from '@x402scan/siwx';\n\nimport { safeFetch, safeParseResponse } from '@/shared/neverthrow/fetch';\nimport {\n safeCreateSIWxPayload,\n safeGetPaymentRequired,\n} from '@/shared/neverthrow/x402';\n\nimport {\n mcpErrorJson,\n mcpError,\n mcpSuccessResponse,\n mcpErrorFetch,\n} from './response';\n\nimport { requestSchema, buildRequest } from './lib/request';\n\nimport type { SIWxExtensionInfo } from '@x402scan/siwx/types';\nimport type { RegisterTools } from '@/server/types';\nimport { getSiwxExtension } from '../lib/x402-extensions';\n\nconst toolName = 'fetchWithAuth';\n\nexport const registerAuthTools: RegisterTools = ({ server, account }) => {\n server.registerTool(\n toolName,\n {\n description:\n 'Make a request to a SIWX-protected endpoint. Handles auth flow automatically: detects SIWX requirement from 402 response, signs proof with server-provided challenge, retries.',\n inputSchema: requestSchema,\n },\n async input => {\n const httpClient = new x402HTTPClient(new x402Client());\n\n // Step 1: Make initial request\n const firstResult = await safeFetch(toolName, buildRequest(input));\n\n if (firstResult.isErr()) {\n return mcpError(firstResult);\n }\n\n const firstResponse = firstResult.value;\n\n if (firstResponse.status !== 402) {\n if (!firstResponse.ok) {\n return mcpErrorFetch(toolName, firstResponse);\n }\n\n const parseResponseResult = await safeParseResponse(\n toolName,\n firstResponse\n );\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(parseResponseResult.value);\n }\n\n const getPaymentRequiredResult = await safeGetPaymentRequired(\n toolName,\n httpClient,\n firstResponse\n );\n\n if (getPaymentRequiredResult.isErr()) {\n return mcpError(getPaymentRequiredResult);\n }\n\n const paymentRequired = getPaymentRequiredResult.value;\n\n const siwxExtension = getSiwxExtension(paymentRequired.extensions);\n\n if (!siwxExtension) {\n return mcpErrorJson({\n message:\n 'Endpoint returned 402 but no sign-in-with-x extension found',\n statusCode: 402,\n extensions: Object.keys(paymentRequired.extensions ?? {}),\n hint: 'This endpoint may require payment instead of authentication. Use execute_call for paid requests.',\n });\n }\n\n const serverInfo = siwxExtension;\n\n // Validate required fields\n const requiredFields = [\n 'domain',\n 'uri',\n 'version',\n 'chainId',\n 'nonce',\n 'issuedAt',\n ];\n const missingFields = requiredFields.filter(\n f => !serverInfo[f as keyof SIWxExtensionInfo]\n );\n if (missingFields.length > 0) {\n return mcpErrorJson({\n message: 'Invalid sign-in-with-x extension: missing required fields',\n missingFields,\n receivedInfo: { ...serverInfo },\n });\n }\n\n // Step 4: Check for unsupported chain types\n if (serverInfo.chainId.startsWith('solana:')) {\n return mcpErrorJson({\n message: 'Solana authentication not supported',\n chainId: serverInfo.chainId,\n hint: 'This endpoint requires a Solana wallet. The MCP server currently only supports EVM wallets.',\n });\n }\n\n // Step 5: Create signed proof using server-provided challenge\n const payloadResult = await safeCreateSIWxPayload(\n toolName,\n serverInfo,\n account\n );\n\n if (payloadResult.isErr()) {\n return mcpError(payloadResult);\n }\n\n const siwxHeader = encodeSIWxHeader(payloadResult.value);\n\n // Step 6: Retry with SIGN-IN-WITH-X header\n const authedRequest = buildRequest(input);\n authedRequest.headers.set('SIGN-IN-WITH-X', siwxHeader);\n\n const authedResult = await safeFetch(toolName, authedRequest);\n\n if (authedResult.isErr()) {\n return mcpError(authedResult);\n }\n\n const authedResponse = authedResult.value;\n\n if (!authedResponse.ok) {\n return mcpErrorFetch(toolName, authedResponse);\n }\n\n const parseResponseResult = await safeParseResponse(\n toolName,\n authedResponse\n );\n\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n\n return mcpSuccessResponse(parseResponseResult.value, {\n authentication: {\n address: account.address,\n domain: serverInfo.domain,\n chainId: serverInfo.chainId,\n },\n });\n }\n );\n};\n","import type { PaymentRequired } from '@x402/core/types';\nimport type { DiscoveryExtension } from '@x402/extensions/bazaar';\nimport type { SIWxExtensionInfo } from '@x402scan/siwx/types';\n\nconst getBazaarExtension = (extensions: PaymentRequired['extensions']) => {\n const { bazaar } = extensions ?? {};\n\n if (!bazaar) {\n return undefined;\n }\n\n return bazaar as DiscoveryExtension;\n};\n\nexport const getInputSchema = (extensions: PaymentRequired['extensions']) =>\n getBazaarExtension(extensions)?.schema.properties.input;\n\nexport const getSiwxExtension = (extensions: PaymentRequired['extensions']) => {\n const siwx = extensions?.['sign-in-with-x'] as\n | { info?: SIWxExtensionInfo }\n | undefined;\n\n if (!siwx?.info) {\n return undefined;\n }\n\n return siwx.info;\n};\n","import { getBalance } from '@/shared/balance';\nimport { DEFAULT_NETWORK, getChainName } from '@/shared/networks';\nimport { getDepositLink } from '@/shared/utils';\n\nimport { mcpSuccessJson, mcpError } from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'getWalletInfo';\n\nexport const registerWalletTools: RegisterTools = ({\n server,\n account: { address },\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n description:\n 'Check wallet address and USDC balance. Creates wallet if needed.',\n },\n async () => {\n const balanceResult = await getBalance({\n address,\n flags,\n surface: toolName,\n });\n\n if (balanceResult.isErr()) {\n return mcpError(balanceResult);\n }\n\n const { balance } = balanceResult.value;\n\n return mcpSuccessJson({\n address,\n network: DEFAULT_NETWORK,\n networkName: getChainName(DEFAULT_NETWORK),\n usdcBalance: balance,\n isNewWallet: balance === 0,\n depositLink: getDepositLink(address, flags),\n ...(balance < 2.5\n ? {\n message: `Your balance is low. Consider topping it up`,\n }\n : {}),\n });\n }\n );\n};\n","import { x402Client, x402HTTPClient } from '@x402/core/client';\n\nimport { safeFetch, safeParseResponse } from '@/shared/neverthrow/fetch';\n\nimport {\n mcpError,\n mcpErrorFetch,\n mcpSuccessJson,\n mcpSuccessResponse,\n} from './response';\n\nimport { log } from '@/shared/log';\nimport { tokenStringToNumber } from '@/shared/token';\nimport { safeGetPaymentRequired } from '@/shared/neverthrow/x402';\n\nimport { getInputSchema } from '../lib/x402-extensions';\nimport { requestSchema, buildRequest } from './lib/request';\n\nimport type { RegisterTools } from '@/server/types';\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\n\nconst toolName = 'checkEndpointSchema';\n\nexport const registerCheckX402EndpointTool: RegisterTools = ({ server }) => {\n server.registerTool(\n toolName,\n {\n description:\n 'Check if an endpoint is x402-protected and get pricing options, schema, and auth requirements (if applicable).',\n inputSchema: requestSchema,\n },\n async input => {\n log.info('Querying endpoint', input);\n\n const responseResult = await safeFetch(toolName, buildRequest(input));\n\n if (responseResult.isErr()) {\n return mcpError(responseResult);\n }\n\n const response = responseResult.value;\n\n if (response.status !== 402) {\n if (!response.ok) {\n return mcpErrorFetch(toolName, response);\n }\n\n const parseResponseResult = await safeParseResponse(toolName, response);\n if (parseResponseResult.isErr()) {\n return mcpError(parseResponseResult);\n }\n return mcpSuccessResponse(parseResponseResult.value, {\n requiresPayment: false,\n });\n }\n\n const client = new x402HTTPClient(new x402Client());\n\n const paymentRequiredResult = await safeGetPaymentRequired(\n toolName,\n client,\n response\n );\n\n if (paymentRequiredResult.isErr()) {\n return mcpError(paymentRequiredResult);\n }\n\n const { resource, extensions, accepts } = paymentRequiredResult.value;\n\n return mcpSuccessJson({\n requiresPayment: true,\n statusCode: response.status,\n routeDetails: {\n ...resource,\n schema: getInputSchema(extensions) as JsonObject,\n paymentMethods: accepts.map(accept => ({\n price: tokenStringToNumber(accept.amount),\n network: accept.network,\n asset: accept.asset,\n })),\n },\n });\n }\n );\n};\n","import z from 'zod';\nimport { mcpError, mcpSuccessJson } from './response';\n\nimport { redeemInviteCode } from '@/shared/redeem-invite';\n\nimport type { RegisterTools } from '@/server/types';\n\nconst toolName = 'redeemInvite';\n\nexport const registerRedeemInviteTool: RegisterTools = ({\n server,\n account: { address },\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n description: 'Redeem an invite code to receive USDC.',\n inputSchema: z.object({\n code: z.string().min(1).describe('The invite code'),\n }),\n },\n async ({ code }) => {\n const result = await redeemInviteCode({\n code,\n dev: flags.dev,\n address,\n surface: toolName,\n });\n\n if (result.isErr()) {\n return mcpError(result);\n }\n\n const { amount, txHash } = result.value;\n\n return mcpSuccessJson({\n redeemed: true,\n amount: `${amount} USDC`,\n txHash,\n });\n }\n );\n};\n","import z from 'zod';\n\nimport { safeFetchJson } from '@/shared/neverthrow/fetch';\n\nimport { log } from '@/shared/log';\nimport { getBaseUrl } from '@/shared/utils';\n\nimport { MCP_VERSION } from '../lib/version';\n\nimport { mcpError, mcpSuccessJson } from './response';\n\nimport type { RegisterTools } from '@/server/types';\n\ninterface ReportErrorResponse {\n reportId: string;\n}\n\nconst toolName = 'reportError';\n\nexport const registerTelemetryTools: RegisterTools = ({\n server,\n account: { address },\n flags,\n}) => {\n server.registerTool(\n toolName,\n {\n description:\n 'EMERGENCY ONLY. Report critical MCP tool bugs. Do NOT use for normal errors (balance, network, 4xx) - those are recoverable.',\n inputSchema: z.object({\n tool: z.string().describe('MCP tool name'),\n resource: z.string().optional().describe('x402 resource URL'),\n summary: z.string().describe('1-2 sentence summary'),\n errorMessage: z.string().describe('Error message'),\n stack: z.string().optional().describe('Stack trace'),\n fullReport: z\n .string()\n .optional()\n .describe('Detailed report with context, logs, repro steps'),\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 telemetryResult = await safeFetchJson<ReportErrorResponse>(\n toolName,\n new Request(`${getBaseUrl(flags.dev)}/api/telemetry`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n ...input,\n walletAddress: address,\n mcpVersion: MCP_VERSION,\n reportedAt: new Date().toISOString(),\n }),\n })\n );\n\n if (telemetryResult.isErr()) {\n log.error('Failed to submit error report', telemetryResult.error);\n return mcpError(telemetryResult);\n }\n\n const { reportId } = telemetryResult.value;\n\n log.info('Error report submitted successfully', {\n reportId,\n });\n\n return mcpSuccessJson({\n submitted: true,\n reportId,\n message:\n 'Error report submitted successfully. The x402scan team will investigate.',\n });\n }\n );\n};\n","import { z } from 'zod';\n\nimport { log } from '@/shared/log';\nimport {\n safeFetch,\n safeFetchJson,\n safeParseResponse,\n} from '@/shared/neverthrow/fetch';\n\nimport { mcpErrorJson, mcpSuccessJson } from './response';\n\nimport type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nconst toolName = 'discoverResources';\n\n// Discovery document schema per spec\nconst discoveryDocumentSchema = z.object({\n version: z.number().refine(v => v === 1, { message: 'version must be 1' }),\n resources: z.array(z.url()),\n ownershipProofs: z.array(z.string()).optional(),\n instructions: z.string().optional(),\n});\n\nexport function registerDiscoveryTools(server: McpServer): void {\n server.registerTool(\n 'discover_resources',\n {\n description: `Discover x402-protected resources on an origin. Returns a list of resource URLs.\n Use check_x402_endpoint separately to get detailed pricing/schema info for specific resources.\n\n Known default origins with resource packs. Discover if more needed:\n - https://enrichx402.com ->\n People + Org search\n Google Maps (places + locations)\n Grok twitter search\n Exa web search\n Clado linkedin data\n Firecrawl web scrape\n - https://stablestudio.io -> generate images / videos\n `,\n inputSchema: {\n url: z\n .url()\n .describe(\n 'The origin URL or any URL on the origin to discover resources from'\n ),\n },\n },\n async ({ url }) => {\n const origin = URL.canParse(url) ? new URL(url).origin : url;\n const hostname = URL.canParse(origin) ? new URL(origin).hostname : origin;\n log.info(`Discovering resources for origin: ${origin}`);\n\n // ============================================================\n // Step 1: Try .well-known/x402\n // ============================================================\n const wellKnownUrl = `${origin}/.well-known/x402`;\n log.debug(`Fetching discovery document from: ${wellKnownUrl}`);\n\n const wellKnownResult = await safeFetchJson(\n toolName,\n new Request(wellKnownUrl, { headers: { Accept: 'application/json' } })\n );\n\n if (wellKnownResult.isOk()) {\n const parsed = discoveryDocumentSchema.safeParse(wellKnownResult.value);\n if (parsed.success) {\n return mcpSuccessJson({\n found: true,\n origin,\n source: 'well-known',\n data: parsed.data,\n });\n }\n } else {\n log.info(\n `No well-known x402 discovery document found at ${wellKnownUrl}`\n );\n }\n\n // ============================================================\n // Step 2: Try DNS TXT record _x402.hostname\n // ============================================================\n const dnsQuery = `_x402.${hostname}`;\n log.debug(`Looking up DNS TXT record: ${dnsQuery}`);\n\n const dnsResult = await safeFetchJson<{ Answer?: { data: string }[] }>(\n toolName,\n new Request(\n `https://cloudflare-dns.com/dns-query?name=${encodeURIComponent(dnsQuery)}&type=TXT`,\n { headers: { Accept: 'application/dns-json' } }\n )\n );\n\n if (\n dnsResult.isOk() &&\n dnsResult.value.Answer &&\n dnsResult.value.Answer.length > 0\n ) {\n const dnsUrl = dnsResult.value.Answer[0]!.data.replace(/^\"|\"$/g, '');\n if (URL.canParse(dnsUrl)) {\n const dnsDocResult = await safeFetchJson(\n toolName,\n new Request(dnsUrl, { headers: { Accept: 'application/json' } })\n );\n\n if (dnsDocResult.isOk()) {\n const parsed = discoveryDocumentSchema.safeParse(\n dnsDocResult.value\n );\n\n if (parsed.success) {\n return mcpSuccessJson({\n found: true,\n origin,\n source: 'dns-txt',\n data: parsed.data,\n });\n }\n }\n } else {\n log.debug(`DNS TXT value is not a valid URL: ${dnsUrl}`);\n }\n } else {\n log.info(`No DNS TXT record found for ${dnsQuery}`);\n }\n\n // ============================================================\n // Step 3: Try llms.txt as last resort\n // ============================================================\n const llmsTxtUrl = `${origin}/llms.txt`;\n log.debug(`Fetching llms.txt from: ${llmsTxtUrl}`);\n\n const llmsResult = await safeFetch(\n toolName,\n new Request(llmsTxtUrl, { headers: { Accept: 'text/plain' } })\n );\n\n if (llmsResult.isOk()) {\n const parseResult = await safeParseResponse(toolName, llmsResult.value);\n if (parseResult.isOk() && parseResult.value.type === 'text') {\n return mcpSuccessJson({\n found: true,\n origin,\n source: 'llms-txt',\n usage:\n 'Found llms.txt but no structured x402 discovery document. The content below may contain information about x402 resources. Parse it to find relevant endpoints.',\n data: parseResult.value,\n });\n }\n }\n\n return mcpErrorJson({\n found: false,\n origin,\n error:\n 'No discovery document found. Tried: .well-known/x402, DNS TXT record, llms.txt',\n });\n }\n );\n}\n","import { x402HTTPClient } from '@x402/core/client';\nimport { x402Client } from '@x402/core/client';\n\nimport { getWebPageMetadata } from './_lib';\n\nimport { getInputSchema } from '../lib/x402-extensions';\n\nimport type { RegisterResources } from './types';\n\nconst origins = ['enrichx402.com'];\n\nexport const registerOrigins: RegisterResources = async ({ server }) => {\n await Promise.all(\n origins.map(async origin => {\n const metadataResult = await getWebPageMetadata(`https://${origin}`);\n const metadata = metadataResult.isOk() ? metadataResult.value : null;\n server.registerResource(\n origin,\n `api://${origin}`,\n {\n title: metadata?.title ?? origin,\n description: metadata?.description ?? '',\n mimeType: 'application/json',\n },\n async uri => {\n const response = (await fetch(\n `${uri.toString().replace('api://', 'https://')}/.well-known/x402`\n ).then(response => response.json())) as { resources: string[] };\n const resources = await Promise.all(\n response.resources.map(async resource => {\n const resourceResponse = await getResourceResponse(\n resource,\n await fetch(resource, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n })\n );\n if (resourceResponse) {\n return resourceResponse;\n }\n const getResponse = await getResourceResponse(\n resource,\n await fetch(resource, {\n method: 'GET',\n })\n );\n if (getResponse) {\n return getResponse;\n }\n console.error(`Failed to get resource response for ${resource}`);\n return null;\n })\n );\n return {\n contents: [\n {\n uri: origin,\n text: JSON.stringify({\n server: origin,\n name: metadata?.title,\n description: metadata?.description,\n resources: resources.filter(Boolean).map(resource => {\n if (!resource) return null;\n const schema = getInputSchema(\n resource.paymentRequired?.extensions\n );\n\n return {\n url: resource.resource,\n schema,\n mimeType: resource.paymentRequired.resource.mimeType,\n };\n }),\n }),\n mimeType: 'application/json',\n },\n ],\n };\n }\n );\n })\n );\n};\n\nconst getResourceResponse = async (resource: string, response: Response) => {\n const client = new x402HTTPClient(new x402Client());\n if (response.status === 402) {\n const paymentRequired = client.getPaymentRequiredResponse(\n name => response.headers.get(name),\n JSON.parse(await response.text())\n );\n return {\n paymentRequired,\n resource,\n };\n }\n return null;\n};\n","import { err, ok } from '@x402scan/neverthrow';\nimport { safeFetch, safeParseResponse } from '@/shared/neverthrow/fetch';\n\nconst surface = 'getWebPageMetadata';\n\ninterface WebPageMetadata {\n title: string | null;\n description: string | null;\n}\n\nexport const getWebPageMetadata = (url: string) => {\n return safeFetch(surface, new Request(url))\n .andThen(response => safeParseResponse(surface, response))\n .andThen(parsedResponse => {\n if (parsedResponse.type === 'text') {\n return ok(parseMetadataFromResponse(parsedResponse.data));\n }\n return err('user', surface, {\n cause: 'invalid_response_type',\n message: 'Invalid response type',\n });\n });\n};\n\nconst parseMetadataFromResponse = (html: string): WebPageMetadata => {\n // Extract title\n const titleMatch = /<title[^>]*>([\\s\\S]*?)<\\/title>/i.exec(html);\n const title = titleMatch ? titleMatch[1]!.trim().replace(/\\s+/g, ' ') : null;\n\n // Extract description from meta tags\n // Try standard meta description first\n let descriptionMatch =\n /<meta\\s+name=[\"']description[\"']\\s+content=[\"']([^\"']*)[\"']/i.exec(html);\n\n // If not found, try og:description\n descriptionMatch ??=\n /<meta\\s+property=[\"']og:description[\"']\\s+content=[\"']([^\"']*)[\"']/i.exec(\n html\n );\n\n // Also check for reversed attribute order\n descriptionMatch ??=\n /<meta\\s+content=[\"']([^\"']*)[\"']\\s+name=[\"']description[\"']/i.exec(html);\n\n descriptionMatch ??=\n /<meta\\s+content=[\"']([^\"']*)[\"']\\s+property=[\"']og:description[\"']/i.exec(\n html\n );\n\n const description = descriptionMatch\n ? descriptionMatch[1]!.trim().replace(/\\s+/g, ' ')\n : null;\n\n return {\n title,\n description,\n };\n};\n"],"mappings":"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","names":["error","err","surface","surface","surface","x402Client","x402HTTPClient","toolName","x402HTTPClient","x402Client","parseResponseResult","toolName","x402Client","x402HTTPClient","toolName","x402HTTPClient","x402Client","z","toolName","z","z","toolName","z","z","toolName","z","x402HTTPClient","x402Client","response","x402HTTPClient","x402Client"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x402scan/mcp",
|
|
3
|
-
"version": "0.0.7-beta.
|
|
3
|
+
"version": "0.0.7-beta.4",
|
|
4
4
|
"description": "Generic MCP server for calling x402-protected APIs with automatic payment handling",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/esm/index.js",
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
"open": "^11.0.0",
|
|
23
23
|
"viem": "^2.44.2",
|
|
24
24
|
"yargs": "^18.0.0",
|
|
25
|
-
"zod": "^4.3.5"
|
|
25
|
+
"zod": "^4.3.5",
|
|
26
|
+
"@x402scan/siwx": "0.0.1"
|
|
26
27
|
},
|
|
27
28
|
"devDependencies": {
|
|
28
29
|
"@types/js-yaml": "^4.0.9",
|
|
@@ -35,9 +36,8 @@
|
|
|
35
36
|
"typescript": "^5.9.3",
|
|
36
37
|
"vitest": "^4.0.16",
|
|
37
38
|
"@x402scan/eslint-config": "0.0.0",
|
|
38
|
-
"@x402scan/
|
|
39
|
-
"@x402scan/
|
|
40
|
-
"@x402scan/typescript-config": "0.0.0"
|
|
39
|
+
"@x402scan/typescript-config": "0.0.0",
|
|
40
|
+
"@x402scan/neverthrow": "1.0.0"
|
|
41
41
|
},
|
|
42
42
|
"engines": {
|
|
43
43
|
"node": ">=20"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/install/clients.ts"],"names":["Clients"],"mappings":";AAAO,IAAK,OAAA,qBAAAA,QAAAA,KAAL;AACL,EAAAA,SAAA,YAAA,CAAA,GAAa,aAAA;AACb,EAAAA,SAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,SAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,SAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,SAAA,QAAA,CAAA,GAAS,QAAA;AACT,EAAAA,SAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,SAAA,UAAA,CAAA,GAAW,WAAA;AACX,EAAAA,SAAA,UAAA,CAAA,GAAW,UAAA;AACX,EAAAA,SAAA,MAAA,CAAA,GAAO,MAAA;AACP,EAAAA,SAAA,WAAA,CAAA,GAAY,YAAA;AACZ,EAAAA,SAAA,OAAA,CAAA,GAAQ,OAAA;AACR,EAAAA,SAAA,KAAA,CAAA,GAAM,KAAA;AACN,EAAAA,SAAA,UAAA,CAAA,GAAW,UAAA;AAbD,EAAA,OAAAA,QAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;AAsBL,IAAM,cAAA,GAAkD;AAAA,EAC7D,CAAC,iCAAqB;AAAA,IACpB,IAAA,EAAM,aAAA;AAAA,IACN,WAAA,EAAa,wDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,wBAAiB;AAAA,IAChB,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,mDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,wBAAiB;AAAA,IAChB,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,mDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,sBAAgB;AAAA,IACf,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,iDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,wBAAiB;AAAA,IAChB,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,mDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,sBAAgB;AAAA,IACf,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,iDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,6BAAmB;AAAA,IAClB,IAAA,EAAM,UAAA;AAAA,IACN,WAAA,EAAa,uDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,4BAAmB;AAAA,IAClB,IAAA,EAAM,UAAA;AAAA,IACN,WAAA,EAAa,uDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,oBAAe;AAAA,IACd,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,+CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,+BAAoB;AAAA,IACnB,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,2DAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,sBAAgB;AAAA,IACf,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,iDAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,kBAAc;AAAA,IACb,IAAA,EAAM,KAAA;AAAA,IACN,WAAA,EAAa,6CAAA;AAAA,IACb,OAAA,EAAS;AAAA,GACX;AAAA,EACA,CAAC,4BAAmB;AAAA,IAClB,IAAA,EAAM,UAAA;AAAA,IACN,WAAA,EAAa,uDAAA;AAAA,IACb,OAAA,EAAS;AAAA;AAEb","file":"chunk-47GMMJYJ.js","sourcesContent":["export enum Clients {\n ClaudeCode = 'claude-code',\n Cursor = 'cursor',\n Claude = 'claude',\n Codex = 'codex',\n Vscode = 'vscode',\n Cline = 'cline',\n RooCline = 'roo-cline',\n Windsurf = 'windsurf',\n Warp = 'warp',\n GeminiCli = 'gemini-cli',\n Goose = 'goose',\n Zed = 'zed',\n Opencode = 'opencode',\n}\n\ninterface ClientMetadata {\n name: string;\n description: string;\n website: string;\n}\n\nexport const clientMetadata: Record<Clients, ClientMetadata> = {\n [Clients.ClaudeCode]: {\n name: 'Claude Code',\n description: 'Claude Code is a code editor that uses the Claude API.',\n website: 'https://claude.com',\n },\n [Clients.Cursor]: {\n name: 'Cursor',\n description: 'Cursor is a code editor that uses the Cursor API.',\n website: 'https://cursor.com',\n },\n [Clients.Claude]: {\n name: 'Claude',\n description: 'Claude is a code editor that uses the Claude API.',\n website: 'https://claude.com',\n },\n [Clients.Codex]: {\n name: 'Codex',\n description: 'Codex is a code editor that uses the Codex API.',\n website: 'https://codex.com',\n },\n [Clients.Vscode]: {\n name: 'VSCode',\n description: 'VSCode is a code editor that uses the VSCode API.',\n website: 'https://vscode.com',\n },\n [Clients.Cline]: {\n name: 'Cline',\n description: 'Cline is a code editor that uses the Cline API.',\n website: 'https://cline.com',\n },\n [Clients.RooCline]: {\n name: 'RooCline',\n description: 'RooCline is a code editor that uses the RooCline API.',\n website: 'https://roo-cline.com',\n },\n [Clients.Windsurf]: {\n name: 'Windsurf',\n description: 'Windsurf is a code editor that uses the Windsurf API.',\n website: 'https://windsurf.com',\n },\n [Clients.Warp]: {\n name: 'Warp',\n description: 'Warp is a code editor that uses the Warp API.',\n website: 'https://warp.com',\n },\n [Clients.GeminiCli]: {\n name: 'Gemini CLI',\n description: 'Gemini CLI is a code editor that uses the Gemini CLI API.',\n website: 'https://gemini-cli.com',\n },\n [Clients.Goose]: {\n name: 'Goose',\n description: 'Goose is a code editor that uses the Goose API.',\n website: 'https://goose.com',\n },\n [Clients.Zed]: {\n name: 'Zed',\n description: 'Zed is a code editor that uses the Zed API.',\n website: 'https://zed.com',\n },\n [Clients.Opencode]: {\n name: 'Opencode',\n description: 'Opencode is a code editor that uses the Opencode API.',\n website: 'https://opencode.com',\n },\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../node_modules/.pnpm/neverthrow@8.2.0/node_modules/neverthrow/dist/index.es.js","../../../../internal/neverthrow/src/index.ts","../../src/shared/neverthrow/fs/index.ts","../../src/shared/fs.ts","../../src/shared/log.ts","../../src/shared/neverthrow/fetch/index.ts","../../src/shared/utils.ts","../../src/shared/state.ts","../../src/shared/redeem-invite.ts","../../src/shared/neverthrow/json/index.ts","../../src/shared/neverthrow/parse/index.ts","../../src/shared/wallet.ts","../../src/shared/networks.ts"],"names":["v","ok","err","Result","fromThrowable","type","errorType","z","fs","account"],"mappings":"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","file":"chunk-4ESXGYV6.js","sourcesContent":["const defaultErrorConfig = {\r\n withStackTrace: false,\r\n};\r\n// Custom error object\r\n// Context / discussion: https://github.com/supermacro/neverthrow/pull/215\r\nconst createNeverThrowError = (message, result, config = defaultErrorConfig) => {\r\n const data = result.isOk()\r\n ? { type: 'Ok', value: result.value }\r\n : { type: 'Err', value: result.error };\r\n const maybeStack = config.withStackTrace ? new Error().stack : undefined;\r\n return {\r\n data,\r\n message,\r\n stack: maybeStack,\r\n };\r\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nclass ResultAsync {\r\n constructor(res) {\r\n this._promise = res;\r\n }\r\n static fromSafePromise(promise) {\r\n const newPromise = promise.then((value) => new Ok(value));\r\n return new ResultAsync(newPromise);\r\n }\r\n static fromPromise(promise, errorFn) {\r\n const newPromise = promise\r\n .then((value) => new Ok(value))\r\n .catch((e) => new Err(errorFn(e)));\r\n return new ResultAsync(newPromise);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n static fromThrowable(fn, errorFn) {\r\n return (...args) => {\r\n return new ResultAsync((() => __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n return new Ok(yield fn(...args));\r\n }\r\n catch (error) {\r\n return new Err(errorFn ? errorFn(error) : error);\r\n }\r\n }))());\r\n };\r\n }\r\n static combine(asyncResultList) {\r\n return combineResultAsyncList(asyncResultList);\r\n }\r\n static combineWithAllErrors(asyncResultList) {\r\n return combineResultAsyncListWithAllErrors(asyncResultList);\r\n }\r\n map(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n return new Ok(yield f(res.value));\r\n })));\r\n }\r\n andThrough(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n const newRes = yield f(res.value);\r\n if (newRes.isErr()) {\r\n return new Err(newRes.error);\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n andTee(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n try {\r\n yield f(res.value);\r\n }\r\n catch (e) {\r\n // Tee does not care about the error\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n orTee(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isOk()) {\r\n return new Ok(res.value);\r\n }\r\n try {\r\n yield f(res.error);\r\n }\r\n catch (e) {\r\n // Tee does not care about the error\r\n }\r\n return new Err(res.error);\r\n })));\r\n }\r\n mapErr(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isOk()) {\r\n return new Ok(res.value);\r\n }\r\n return new Err(yield f(res.error));\r\n })));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(f) {\r\n return new ResultAsync(this._promise.then((res) => {\r\n if (res.isErr()) {\r\n return new Err(res.error);\r\n }\r\n const newValue = f(res.value);\r\n return newValue instanceof ResultAsync ? newValue._promise : newValue;\r\n }));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(f) {\r\n return new ResultAsync(this._promise.then((res) => __awaiter(this, void 0, void 0, function* () {\r\n if (res.isErr()) {\r\n return f(res.error);\r\n }\r\n return new Ok(res.value);\r\n })));\r\n }\r\n match(ok, _err) {\r\n return this._promise.then((res) => res.match(ok, _err));\r\n }\r\n unwrapOr(t) {\r\n return this._promise.then((res) => res.unwrapOr(t));\r\n }\r\n /**\r\n * @deprecated will be removed in 9.0.0.\r\n *\r\n * You can use `safeTry` without this method.\r\n * @example\r\n * ```typescript\r\n * safeTry(async function* () {\r\n * const okValue = yield* yourResult\r\n * })\r\n * ```\r\n * Emulates Rust's `?` operator in `safeTry`'s body. See also `safeTry`.\r\n */\r\n safeUnwrap() {\r\n return __asyncGenerator(this, arguments, function* safeUnwrap_1() {\r\n return yield __await(yield __await(yield* __asyncDelegator(__asyncValues(yield __await(this._promise.then((res) => res.safeUnwrap()))))));\r\n });\r\n }\r\n // Makes ResultAsync implement PromiseLike<Result>\r\n then(successCallback, failureCallback) {\r\n return this._promise.then(successCallback, failureCallback);\r\n }\r\n [Symbol.asyncIterator]() {\r\n return __asyncGenerator(this, arguments, function* _a() {\r\n const result = yield __await(this._promise);\r\n if (result.isErr()) {\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n yield yield __await(errAsync(result.error));\r\n }\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n return yield __await(result.value);\r\n });\r\n }\r\n}\r\nfunction okAsync(value) {\r\n return new ResultAsync(Promise.resolve(new Ok(value)));\r\n}\r\nfunction errAsync(err) {\r\n return new ResultAsync(Promise.resolve(new Err(err)));\r\n}\r\nconst fromPromise = ResultAsync.fromPromise;\r\nconst fromSafePromise = ResultAsync.fromSafePromise;\r\nconst fromAsyncThrowable = ResultAsync.fromThrowable;\n\n/**\r\n * Short circuits on the FIRST Err value that we find\r\n */\r\nconst combineResultList = (resultList) => {\r\n let acc = ok([]);\r\n for (const result of resultList) {\r\n if (result.isErr()) {\r\n acc = err(result.error);\r\n break;\r\n }\r\n else {\r\n acc.map((list) => list.push(result.value));\r\n }\r\n }\r\n return acc;\r\n};\r\n/* This is the typesafe version of Promise.all\r\n *\r\n * Takes a list of ResultAsync<T, E> and success if all inner results are Ok values\r\n * or fails if one (or more) of the inner results are Err values\r\n */\r\nconst combineResultAsyncList = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultList);\r\n/**\r\n * Give a list of all the errors we find\r\n */\r\nconst combineResultListWithAllErrors = (resultList) => {\r\n let acc = ok([]);\r\n for (const result of resultList) {\r\n if (result.isErr() && acc.isErr()) {\r\n acc.error.push(result.error);\r\n }\r\n else if (result.isErr() && acc.isOk()) {\r\n acc = err([result.error]);\r\n }\r\n else if (result.isOk() && acc.isOk()) {\r\n acc.value.push(result.value);\r\n }\r\n // do nothing when result.isOk() && acc.isErr()\r\n }\r\n return acc;\r\n};\r\nconst combineResultAsyncListWithAllErrors = (asyncResultList) => ResultAsync.fromSafePromise(Promise.all(asyncResultList)).andThen(combineResultListWithAllErrors);\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\r\nvar Result;\r\n(function (Result) {\r\n /**\r\n * Wraps a function with a try catch, creating a new function with the same\r\n * arguments but returning `Ok` if successful, `Err` if the function throws\r\n *\r\n * @param fn function to wrap with ok on success or err on failure\r\n * @param errorFn when an error is thrown, this will wrap the error result if provided\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n function fromThrowable(fn, errorFn) {\r\n return (...args) => {\r\n try {\r\n const result = fn(...args);\r\n return ok(result);\r\n }\r\n catch (e) {\r\n return err(errorFn ? errorFn(e) : e);\r\n }\r\n };\r\n }\r\n Result.fromThrowable = fromThrowable;\r\n function combine(resultList) {\r\n return combineResultList(resultList);\r\n }\r\n Result.combine = combine;\r\n function combineWithAllErrors(resultList) {\r\n return combineResultListWithAllErrors(resultList);\r\n }\r\n Result.combineWithAllErrors = combineWithAllErrors;\r\n})(Result || (Result = {}));\r\nfunction ok(value) {\r\n return new Ok(value);\r\n}\r\nfunction err(err) {\r\n return new Err(err);\r\n}\r\nfunction safeTry(body) {\r\n const n = body().next();\r\n if (n instanceof Promise) {\r\n return new ResultAsync(n.then((r) => r.value));\r\n }\r\n return n.value;\r\n}\r\nclass Ok {\r\n constructor(value) {\r\n this.value = value;\r\n }\r\n isOk() {\r\n return true;\r\n }\r\n isErr() {\r\n return !this.isOk();\r\n }\r\n map(f) {\r\n return ok(f(this.value));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n mapErr(_f) {\r\n return ok(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(f) {\r\n return f(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThrough(f) {\r\n return f(this.value).map((_value) => this.value);\r\n }\r\n andTee(f) {\r\n try {\r\n f(this.value);\r\n }\r\n catch (e) {\r\n // Tee doesn't care about the error\r\n }\r\n return ok(this.value);\r\n }\r\n orTee(_f) {\r\n return ok(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(_f) {\r\n return ok(this.value);\r\n }\r\n asyncAndThen(f) {\r\n return f(this.value);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n asyncAndThrough(f) {\r\n return f(this.value).map(() => this.value);\r\n }\r\n asyncMap(f) {\r\n return ResultAsync.fromSafePromise(f(this.value));\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n unwrapOr(_v) {\r\n return this.value;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n match(ok, _err) {\r\n return ok(this.value);\r\n }\r\n safeUnwrap() {\r\n const value = this.value;\r\n /* eslint-disable-next-line require-yield */\r\n return (function* () {\r\n return value;\r\n })();\r\n }\r\n _unsafeUnwrap(_) {\r\n return this.value;\r\n }\r\n _unsafeUnwrapErr(config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrapErr` on an Ok', this, config);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias, require-yield\r\n *[Symbol.iterator]() {\r\n return this.value;\r\n }\r\n}\r\nclass Err {\r\n constructor(error) {\r\n this.error = error;\r\n }\r\n isOk() {\r\n return false;\r\n }\r\n isErr() {\r\n return !this.isOk();\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n map(_f) {\r\n return err(this.error);\r\n }\r\n mapErr(f) {\r\n return err(f(this.error));\r\n }\r\n andThrough(_f) {\r\n return err(this.error);\r\n }\r\n andTee(_f) {\r\n return err(this.error);\r\n }\r\n orTee(f) {\r\n try {\r\n f(this.error);\r\n }\r\n catch (e) {\r\n // Tee doesn't care about the error\r\n }\r\n return err(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n andThen(_f) {\r\n return err(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\r\n orElse(f) {\r\n return f(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n asyncAndThen(_f) {\r\n return errAsync(this.error);\r\n }\r\n asyncAndThrough(_f) {\r\n return errAsync(this.error);\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n asyncMap(_f) {\r\n return errAsync(this.error);\r\n }\r\n unwrapOr(v) {\r\n return v;\r\n }\r\n match(_ok, err) {\r\n return err(this.error);\r\n }\r\n safeUnwrap() {\r\n const error = this.error;\r\n return (function* () {\r\n yield err(error);\r\n throw new Error('Do not use this generator out of `safeTry`');\r\n })();\r\n }\r\n _unsafeUnwrap(config) {\r\n throw createNeverThrowError('Called `_unsafeUnwrap` on an Err', this, config);\r\n }\r\n _unsafeUnwrapErr(_) {\r\n return this.error;\r\n }\r\n *[Symbol.iterator]() {\r\n // eslint-disable-next-line @typescript-eslint/no-this-alias\r\n const self = this;\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n yield self;\r\n // @ts-expect-error -- This is structurally equivalent and safe\r\n return self;\r\n }\r\n}\r\nconst fromThrowable = Result.fromThrowable;\r\n//#endregion\n\nexport { Err, Ok, Result, ResultAsync, err, errAsync, fromAsyncThrowable, fromPromise, fromSafePromise, fromThrowable, ok, okAsync, safeTry };\n","import {\n ResultAsync as NeverthrowResultAsync,\n Result as NeverthrowResult,\n ok as neverthrowOk,\n err as neverthrowErr,\n okAsync as neverthrowOkAsync,\n errAsync as neverthrowErrAsync,\n} from 'neverthrow';\n\nimport type { ResultAsync, BaseError, Error, Result } from './types';\n\nexport function resultFromPromise<E extends BaseError, T = unknown>(\n type: string,\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => E\n): ResultAsync<T, E> {\n return NeverthrowResultAsync.fromPromise(promise, e => ({\n ...error(e),\n type,\n surface,\n }));\n}\n\nexport function resultFromThrowable<E extends BaseError, T = unknown>(\n type: string,\n surface: string,\n fn: () => T,\n error: (e: unknown) => E\n): Result<T, E> {\n return NeverthrowResult.fromThrowable(fn, e => ({\n ...error(e),\n type,\n surface,\n }))();\n}\n\nexport function resultFromSafePromise<E extends BaseError, T = unknown>(\n promise: Promise<T>\n): ResultAsync<T, E> {\n return NeverthrowResultAsync.fromSafePromise(promise);\n}\n\nexport function ok<T>(data: T) {\n return neverthrowOk(data);\n}\n\nexport function err<BE extends BaseError>(\n type: string,\n surface: string,\n error: BE\n) {\n return neverthrowErr<never, Error<BE>>({\n ...error,\n type,\n surface,\n });\n}\n\nexport function okAsync<T>(data: T): ResultAsync<T, never> {\n return neverthrowOkAsync(data);\n}\n\nexport function errAsync<E extends BaseError>(surface: string, error: E) {\n return neverthrowErrAsync({\n ...error,\n surface,\n });\n}\n","import * as fs from 'fs/promises';\nimport { existsSync } from 'fs';\n\nimport { err, ok, resultFromPromise } from '@x402scan/neverthrow';\n\nimport type { BaseFileSystemError } from './types';\n\nconst errorType = 'fs';\n\nexport const fsErr = (surface: string, error: BaseFileSystemError) =>\n err(errorType, surface, error);\n\nconst fsResultFromPromise = <T>(\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => BaseFileSystemError\n) => resultFromPromise(errorType, surface, promise, error);\n\nexport const safeReadFile = (surface: string, path: string) =>\n fsResultFromPromise(surface, fs.readFile(path, 'utf-8'), () => ({\n cause: 'file_not_readable',\n message: 'Failed to read file',\n }));\n\nexport const safeWriteFile = (surface: string, path: string, data: string) =>\n fsResultFromPromise(surface, fs.writeFile(path, data), () => ({\n cause: 'file_not_writable',\n message: 'Failed to write file',\n }));\n\nexport const safeAppendFile = (surface: string, path: string, data: string) =>\n fsResultFromPromise(surface, fs.appendFile(path, data), () => ({\n cause: 'file_not_writable',\n message: 'Failed to append file',\n }));\n\nexport const safeChmod = (surface: string, path: string, mode: number) =>\n fsResultFromPromise(surface, fs.chmod(path, mode), () => ({\n cause: 'file_not_chmodable',\n message: 'Failed to chmod file',\n }));\n\nexport const safeFileExists = (surface: string, path: string) => {\n const fileExists = existsSync(path);\n if (fileExists) {\n return ok(true);\n }\n return err(errorType, surface, {\n cause: 'file_not_found',\n message: 'File not found',\n });\n};\n","import { join } from 'path';\nimport { homedir } from 'os';\nimport * as fs from 'fs';\n\nconst BASE_DIRECTORY = join(homedir(), '.x402scan-mcp');\n\nif (!fs.existsSync(BASE_DIRECTORY)) {\n fs.mkdirSync(BASE_DIRECTORY, { recursive: true });\n}\n\nexport const configFile = (\n name: `${string}.${string}`,\n defaultValue: string\n) => {\n if (!fs.existsSync(BASE_DIRECTORY)) {\n fs.mkdirSync(BASE_DIRECTORY, { recursive: true });\n }\n const filePath = join(BASE_DIRECTORY, name);\n if (!fs.existsSync(filePath)) {\n fs.writeFileSync(filePath, defaultValue);\n }\n return filePath;\n};\n","import { safeAppendFile } from '@/shared/neverthrow/fs';\n\nimport { configFile } from './fs';\n\nconst LOG_FILE = configFile('mcp.log', '');\nconst DEBUG = process.env.X402_DEBUG === 'true';\n\nfunction format(args: unknown[]): string {\n return args\n .map(a =>\n typeof a === 'object' && a !== null ? JSON.stringify(a) : String(a)\n )\n .join(' ');\n}\n\nfunction write(level: string, msg: string, args: unknown[]): void {\n const formatted = args.length ? `${msg} ${format(args)}` : msg;\n const line = `[${new Date().toISOString()}] [${level}] ${formatted}\\n`;\n safeAppendFile('log', LOG_FILE, line);\n if (process.env.X402_DEBUG === 'true') {\n console.error(`[x402scan] ${formatted}`);\n }\n}\n\nexport const log = {\n info: (msg: string, ...args: unknown[]) => write('INFO', msg, args),\n error: (msg: string, ...args: unknown[]) => write('ERROR', msg, args),\n debug: (msg: string, ...args: unknown[]) =>\n DEBUG && write('DEBUG', msg, args),\n path: LOG_FILE,\n};\n","import { err, resultFromPromise } from '@x402scan/neverthrow';\n\nimport type { BaseError, Error } from '@x402scan/neverthrow/types';\nimport type { BaseFetchError, FetchError, ParsedResponse } from './types';\nimport type { JsonObject } from '../json/types';\n\nconst errorType = 'fetch';\n\nconst fetchErr = (surface: string, error: BaseFetchError) =>\n err(errorType, surface, error);\nexport const fetchHttpErr = (surface: string, response: Response) =>\n fetchErr(surface, {\n cause: 'http' as const,\n statusCode: response.status,\n message: response.statusText,\n response,\n });\n\nexport const safeFetch = (surface: string, request: Request) => {\n return resultFromPromise(\n errorType,\n surface,\n fetch(request),\n error =>\n ({\n cause: 'network',\n message: error instanceof Error ? error.message : 'Network error',\n }) as BaseFetchError\n );\n};\n\nexport const safeFetchJson = <T>(surface: string, request: Request) => {\n return safeFetch(surface, request).andThen(response => {\n if (!response.ok) {\n return fetchHttpErr(surface, response);\n }\n\n return resultFromPromise(\n errorType,\n surface,\n response.json() as Promise<T>,\n () => ({\n cause: 'parse' as const,\n message: 'Could not parse JSON from response',\n statusCode: response.status,\n contentType: response.headers.get('content-type') ?? 'Not specified',\n })\n );\n });\n};\n\nexport const safeParseResponse = (surface: string, response: Response) => {\n return resultFromPromise(\n errorType,\n surface,\n (async (): Promise<ParsedResponse> => {\n const contentType = response.headers.get('content-type') ?? '';\n\n switch (contentType) {\n case 'application/json':\n return {\n type: 'json' as const,\n data: (await response.json()) as JsonObject,\n };\n case 'image/png':\n case 'image/jpeg':\n case 'image/gif':\n case 'image/webp':\n case 'image/svg+xml':\n case 'image/tiff':\n case 'image/bmp':\n case 'image/ico':\n return {\n type: 'image' as const,\n mimeType: contentType,\n data: await response.arrayBuffer(),\n };\n case 'audio/':\n return {\n type: 'audio' as const,\n mimeType: contentType,\n data: await response.arrayBuffer(),\n };\n case 'video/':\n return {\n type: 'video' as const,\n mimeType: contentType,\n data: await response.arrayBuffer(),\n };\n case 'application/pdf':\n return {\n type: 'pdf' as const,\n mimeType: contentType,\n data: await response.arrayBuffer(),\n };\n case 'application/octet-stream':\n return {\n type: 'octet-stream' as const,\n mimeType: contentType,\n data: await response.arrayBuffer(),\n };\n case 'multipart/form-data':\n return { type: 'formData' as const, data: await response.formData() };\n case 'text/':\n return { type: 'text' as const, data: await response.text() };\n default:\n throw new Error(`Unsupported content type: ${contentType}`);\n }\n })(),\n e => ({\n cause: 'parse' as const,\n message: e instanceof Error ? e.message : 'Could not parse response',\n statusCode: response.status,\n contentType: response.headers.get('content-type') ?? 'Not specified',\n })\n );\n};\n\nexport const isFetchError = (error: Error<BaseError>): error is FetchError => {\n return error.type === errorType;\n};\n","import open from 'open';\n\nimport type { GlobalFlags } from '@/types';\n\nexport const getBaseUrl = (dev: boolean) => {\n return dev ? 'http://localhost:3000' : 'https://x402scan.com';\n};\n\nexport const getDepositLink = (address: string, flags: GlobalFlags) => {\n return `${getBaseUrl(flags.dev)}/mcp/deposit/${address}`;\n};\n\nexport const openDepositLink = async (address: string, flags: GlobalFlags) => {\n const depositLink = getDepositLink(address, flags);\n await open(depositLink);\n};\n","import z from 'zod';\nimport fs from 'fs';\n\nimport { configFile } from './fs';\nimport { log } from './log';\n\nconst STATE_FILE = configFile('state.json', '{}');\n\nconst stateSchema = z\n .looseObject({\n redeemedCodes: z.array(z.string()),\n })\n .partial();\n\nexport const getState = () => {\n const result = stateSchema.safeParse(\n JSON.parse(fs.readFileSync(STATE_FILE, 'utf-8'))\n );\n if (!result.success) {\n log.error('Failed to parse state', { error: result.error });\n return {};\n }\n return result.data;\n};\n\nexport const setState = (state: z.infer<typeof stateSchema>) => {\n const existing = getState();\n const newState = stateSchema.parse({ ...existing, ...state });\n fs.writeFileSync(STATE_FILE, JSON.stringify(newState, null, 2));\n};\n","import { safeFetchJson } from '@/shared/neverthrow/fetch';\nimport { err } from '@x402scan/neverthrow';\n\nimport { getBaseUrl } from './utils';\nimport { getState, setState } from './state';\n\nimport type { Address } from 'viem';\n\nexport interface RedeemInviteProps {\n code: string;\n dev: boolean;\n address: Address;\n surface: string;\n}\n\ninterface RedeemResponse {\n redemptionId: string;\n txHash: string;\n amount: string;\n}\n\nexport const redeemInviteCode = async ({\n code,\n dev,\n address,\n surface,\n}: RedeemInviteProps) => {\n const state = getState();\n\n if (state.redeemedCodes?.includes(code)) {\n return err('user', surface, {\n cause: 'conflict',\n message: 'This invite code has already been redeemed',\n });\n }\n\n const result = await safeFetchJson<RedeemResponse>(\n surface,\n new Request(`${getBaseUrl(dev)}/api/invite/redeem`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n code,\n recipientAddr: address,\n }),\n })\n );\n\n if (result.isOk()) {\n setState({\n redeemedCodes: [...(state.redeemedCodes ?? []), code],\n });\n }\n\n return result;\n};\n","import { err, resultFromThrowable } from '@x402scan/neverthrow';\n\nimport type { BaseJsonError, JsonObject } from './types';\n\nconst type = 'json';\n\nexport const jsonErr = (surface: string, error: BaseJsonError) => {\n return err(type, surface, error);\n};\n\nexport const safeStringifyJson = (surface: string, value: JsonObject) => {\n return resultFromThrowable(\n type,\n surface,\n () => JSON.stringify(value),\n () => ({\n cause: 'stringify' as const,\n message: 'Could not stringify JSON',\n })\n );\n};\n\nexport const safeParseJson = (surface: string, value: string) => {\n return resultFromThrowable(\n type,\n surface,\n () => JSON.parse(value) as JsonObject,\n e => ({\n cause: 'parse' as const,\n message: e instanceof Error ? e.message : 'Could not parse JSON',\n })\n );\n};\n","import z from 'zod';\n\nimport { err, ok } from '@x402scan/neverthrow';\n\nimport type { BaseParseError } from './types';\n\nconst type = 'json';\n\nconst parseErr = (surface: string, error: BaseParseError) =>\n err(type, surface, error);\n\nexport const safeParse = <T>(\n surface: string,\n schema: z.ZodSchema<T>,\n value: unknown\n) => {\n const parseResult = schema.safeParse(value);\n if (!parseResult.success) {\n return parseErr(surface, {\n cause: 'invalid_data',\n message: JSON.stringify(z.treeifyError(parseResult.error), null, 2),\n error: parseResult.error,\n });\n }\n return ok(parseResult.data);\n};\n","import { getAddress } from 'viem';\nimport { generatePrivateKey, privateKeyToAccount } from 'viem/accounts';\n\nimport z from 'zod';\n\nimport { ok } from '@x402scan/neverthrow';\nimport {\n fsErr,\n safeChmod,\n safeFileExists,\n safeReadFile,\n safeWriteFile,\n} from '@/shared/neverthrow/fs';\nimport { jsonErr, safeParseJson } from '@/shared/neverthrow/json';\nimport { safeParse } from '@/shared/neverthrow/parse';\n\nimport { log } from './log';\nimport { configFile } from './fs';\n\nimport type { Hex } from 'viem';\n\nconst WALLET_FILE = configFile('wallet.json', '');\n\nconst storedWalletSchema = z.object({\n privateKey: z\n .string()\n .regex(/^0x[a-fA-F0-9]{64}$/, 'Invalid Ethereum private key')\n .transform(privateKey => privateKey as Hex),\n address: z\n .string()\n .regex(/^0x[a-fA-F0-9]{40}$/, 'Invalid Ethereum address')\n .transform(address => getAddress(address)),\n createdAt: z.string(),\n});\n\nconst walletSurface = 'wallet';\n\nexport async function getWallet() {\n if (process.env.X402_PRIVATE_KEY) {\n const account = privateKeyToAccount(process.env.X402_PRIVATE_KEY as Hex);\n log.info(`Using wallet from env: ${account.address}`);\n return ok({ account, isNew: false });\n }\n\n const readFileResult = await safeReadFile(walletSurface, WALLET_FILE);\n\n if (!readFileResult.isOk()) {\n const fileExistsResult = safeFileExists(walletSurface, WALLET_FILE);\n // file exists but is not readable\n if (fileExistsResult.isOk()) {\n return fsErr(walletSurface, {\n cause: 'file_not_readable',\n message: `The file exists but is not readable. Fix corrupted state file: ${WALLET_FILE}`,\n });\n }\n }\n\n if (readFileResult.isOk()) {\n const data = readFileResult.value;\n const jsonParseResult = safeParseJson(walletSurface, data);\n\n // file exists but is not valid JSON\n if (jsonParseResult.isErr()) {\n return jsonErr(walletSurface, {\n cause: 'parse',\n message: `The data in ${WALLET_FILE} is not valid JSON`,\n });\n }\n\n const parseResult = safeParse(\n walletSurface,\n storedWalletSchema,\n jsonParseResult.value\n );\n\n // file has valid JSON but is not a valid wallet configuration\n if (parseResult.isErr()) {\n return parseResult;\n }\n\n const account = privateKeyToAccount(parseResult.value.privateKey);\n log.info(`Loaded wallet: ${account.address}`);\n return ok({ account, isNew: false });\n }\n\n // Generate new\n const privateKey = generatePrivateKey();\n const account = privateKeyToAccount(privateKey);\n const stored = {\n privateKey,\n address: account.address,\n createdAt: new Date().toISOString(),\n };\n\n const saveResult = await safeWriteFile(\n walletSurface,\n WALLET_FILE,\n JSON.stringify(stored, null, 2)\n ).andThen(() => safeChmod(walletSurface, WALLET_FILE, 0o600));\n\n if (saveResult.isErr()) {\n return saveResult;\n }\n\n log.info(`Created wallet: ${account.address}`);\n log.info(`Saved to: ${WALLET_FILE}`);\n\n return ok({ account, isNew: true });\n}\n","import {\n base,\n baseSepolia,\n mainnet,\n sepolia,\n optimism,\n arbitrum,\n polygon,\n} from 'viem/chains';\n\nimport type { Chain } from 'viem';\n\nexport interface ChainConfig {\n chain: Chain;\n caip2: string;\n v1Name: string;\n usdcAddress: `0x${string}`;\n}\n\nconst CHAIN_CONFIGS: Record<string, ChainConfig> = {\n 'eip155:8453': {\n chain: base,\n caip2: 'eip155:8453',\n v1Name: 'base',\n usdcAddress: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',\n },\n 'eip155:84532': {\n chain: baseSepolia,\n caip2: 'eip155:84532',\n v1Name: 'base-sepolia',\n usdcAddress: '0x036CbD53842c5426634e7929541eC2318f3dCF7e',\n },\n 'eip155:1': {\n chain: mainnet,\n caip2: 'eip155:1',\n v1Name: 'ethereum',\n usdcAddress: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',\n },\n 'eip155:11155111': {\n chain: sepolia,\n caip2: 'eip155:11155111',\n v1Name: 'ethereum-sepolia',\n usdcAddress: '0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238',\n },\n 'eip155:10': {\n chain: optimism,\n caip2: 'eip155:10',\n v1Name: 'optimism',\n usdcAddress: '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85',\n },\n 'eip155:42161': {\n chain: arbitrum,\n caip2: 'eip155:42161',\n v1Name: 'arbitrum',\n usdcAddress: '0xaf88d065e77c8cC2239327C5EDb3A432268e5831',\n },\n 'eip155:137': {\n chain: polygon,\n caip2: 'eip155:137',\n v1Name: 'polygon',\n usdcAddress: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359',\n },\n};\n\nconst V1_TO_CAIP2: Record<string, string> = {\n base: 'eip155:8453',\n 'base-sepolia': 'eip155:84532',\n ethereum: 'eip155:1',\n 'ethereum-sepolia': 'eip155:11155111',\n optimism: 'eip155:10',\n arbitrum: 'eip155:42161',\n polygon: 'eip155:137',\n};\n\nexport const DEFAULT_NETWORK = 'eip155:8453';\n\n/** Convert any network identifier to CAIP-2 format */\nexport function toCaip2(network: string): string {\n if (network.startsWith('eip155:')) return network;\n return V1_TO_CAIP2[network.toLowerCase()] ?? network;\n}\n\n/** Get chain config from network identifier */\nexport function getChainConfig(network: string): ChainConfig | undefined {\n return CHAIN_CONFIGS[toCaip2(network)];\n}\n\n/** Get USDC address for a network */\nexport function getUSDCAddress(network: string): `0x${string}` | undefined {\n return getChainConfig(network)?.usdcAddress;\n}\n\n/** Extract chain ID from CAIP-2 identifier */\nexport function getChainId(network: string): number | undefined {\n const caip2 = toCaip2(network);\n const match = /^eip155:(\\d+)$/.exec(caip2);\n return match ? parseInt(match[1]!, 10) : undefined;\n}\n\n/** Get human-readable chain name */\nexport function getChainName(network: string): string {\n return getChainConfig(network)?.chain.name ?? network;\n}\n\n/** Check if network is a testnet */\nexport function isTestnet(network: string): boolean {\n return getChainConfig(network)?.chain.testnet === true;\n}\n"]}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { getBaseUrl, safeFetchJson } from './chunk-4ESXGYV6.js';
|
|
2
|
-
import 'fs';
|
|
3
|
-
import 'path';
|
|
4
|
-
import 'url';
|
|
5
|
-
|
|
6
|
-
function getVersion() {
|
|
7
|
-
{
|
|
8
|
-
return "0.0.7-beta.3";
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
var MCP_VERSION = getVersion();
|
|
12
|
-
var DIST_TAG = MCP_VERSION.includes("-beta") ? "beta" : "latest";
|
|
13
|
-
|
|
14
|
-
// src/shared/balance.ts
|
|
15
|
-
var getBalance = async ({
|
|
16
|
-
address,
|
|
17
|
-
flags,
|
|
18
|
-
surface
|
|
19
|
-
}) => {
|
|
20
|
-
const url = `${getBaseUrl(flags.dev)}/api/rpc/balance/${address}`;
|
|
21
|
-
const res = await safeFetchJson(
|
|
22
|
-
surface,
|
|
23
|
-
new Request(url, {
|
|
24
|
-
method: "GET",
|
|
25
|
-
headers: {
|
|
26
|
-
accept: "application/json"
|
|
27
|
-
}
|
|
28
|
-
})
|
|
29
|
-
);
|
|
30
|
-
return res;
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
export { DIST_TAG, MCP_VERSION, getBalance };
|
|
34
|
-
//# sourceMappingURL=chunk-BGSCKUEG.js.map
|
|
35
|
-
//# sourceMappingURL=chunk-BGSCKUEG.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/server/lib/version.ts","../../src/shared/balance.ts"],"names":[],"mappings":";;;;;AAMA,SAAS,UAAA,GAAqB;AAC5B,EAA4C;AAC1C,IAAA,OAAO,cAAA;AAAA,EACT;AAOF;AAEO,IAAM,cAAc,UAAA;AAEpB,IAAM,QAAA,GAAW,WAAA,CAAY,QAAA,CAAS,OAAO,IAAI,MAAA,GAAS;;;ACH1D,IAAM,aAAa,OAAO;AAAA,EAC/B,OAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAA,KAAuB;AACrB,EAAA,MAAM,MAAM,CAAA,EAAG,UAAA,CAAW,MAAM,GAAG,CAAC,oBAAoB,OAAO,CAAA,CAAA;AAE/D,EAAA,MAAM,MAAM,MAAM,aAAA;AAAA,IAChB,OAAA;AAAA,IACA,IAAI,QAAQ,GAAA,EAAK;AAAA,MACf,MAAA,EAAQ,KAAA;AAAA,MACR,OAAA,EAAS;AAAA,QACP,MAAA,EAAQ;AAAA;AACV,KACD;AAAA,GACH;AAEA,EAAA,OAAO,GAAA;AACT","file":"chunk-BGSCKUEG.js","sourcesContent":["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\nexport const DIST_TAG = MCP_VERSION.includes('-beta') ? 'beta' : 'latest';\n","import { getBaseUrl } from '@/shared/utils';\nimport { safeFetchJson } from '@/shared/neverthrow/fetch';\n\nimport type { Address } from 'viem';\nimport type { GlobalFlags } from '@/types';\n\ninterface BalanceApiResponse {\n chain: number;\n balance: number;\n}\n\ninterface GetBalanceProps {\n address: Address;\n flags: GlobalFlags;\n surface: string;\n}\n\nexport const getBalance = async ({\n address,\n flags,\n surface,\n}: GetBalanceProps) => {\n const url = `${getBaseUrl(flags.dev)}/api/rpc/balance/${address}`;\n\n const res = await safeFetchJson<BalanceApiResponse>(\n surface,\n new Request(url, {\n method: 'GET',\n headers: {\n accept: 'application/json',\n },\n })\n );\n\n return res;\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/lib/wait.ts","../../src/cli/lib/deposit.ts"],"names":["spinner"],"mappings":"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","file":"chunk-NV5QXA6N.js","sourcesContent":["import { spinner } from '@clack/prompts';\n\ninterface WaitProps {\n startText: string;\n stopText: string;\n ms: number;\n}\n\nexport const wait = async ({ startText, stopText, ms }: WaitProps) => {\n const { start: startSpinner, stop: stopSpinner } = spinner();\n startSpinner(startText);\n await new Promise(resolve => setTimeout(resolve, ms));\n stopSpinner(stopText);\n};\n","import chalk from 'chalk';\nimport { select, text, log, spinner } from '@clack/prompts';\nimport open from 'open';\n\nimport { DEFAULT_NETWORK, getChainName } from '../../shared/networks';\nimport { wait } from './wait';\nimport { getDepositLink } from '../../shared/utils';\nimport { redeemInviteCode } from '../../shared/redeem-invite';\n\nimport type { GlobalFlags } from '@/types';\nimport type { Address } from 'viem';\n\ninterface PromptDepositProps {\n address: Address;\n flags: GlobalFlags;\n surface: string;\n}\n\nexport const promptDeposit = async (\n props: PromptDepositProps\n): Promise<void> => {\n const { address, flags, surface } = props;\n\n const depositLink = getDepositLink(address, flags);\n\n const depositChoice =\n flags.yes || surface === 'guided'\n ? 'manual'\n : await select({\n message: chalk.bold('How would you like to deposit?'),\n initialValue: 'guided' as string | undefined,\n options: [\n {\n label: 'Guided - Recommended',\n value: 'guided',\n hint: 'Online portal in x402scan',\n },\n {\n label: 'Manual',\n value: 'manual',\n hint: 'Print deposit instructions',\n },\n {\n label: 'Redeem Invite Code',\n value: 'invite',\n hint: 'Enter an invite code for starter money',\n },\n {\n label: 'Skip',\n value: undefined,\n hint: 'Skip deposit process - functionality limited',\n },\n ],\n });\n\n if (depositChoice === 'guided') {\n await wait({\n startText: 'Opening deposit page...',\n stopText: `Opening ${chalk.underline.hex('#2563eb')(depositLink)}`,\n ms: 1000,\n });\n\n await open(depositLink);\n } else if (depositChoice === 'manual') {\n log.step(chalk.bold('Account Information'));\n\n log.message(`Address: ${address}`);\n log.message(`Network: ${getChainName(DEFAULT_NETWORK)}`);\n\n log.step(chalk.bold('Online Portal'));\n log.message(`${chalk.underline(depositLink)}`);\n } else if (depositChoice === 'invite') {\n const code = await text({\n message: 'Enter your invite code',\n placeholder: 'MRT-XXXXX',\n validate: value => {\n if (!value || value.trim().length === 0) {\n return 'Please enter an invite code';\n }\n },\n });\n\n if (typeof code !== 'string') {\n return promptDeposit({ address, flags, surface });\n }\n\n const s = spinner();\n s.start('Redeeming invite code...');\n\n const redeemResult = await redeemInviteCode({\n code,\n dev: flags.dev,\n address,\n surface: 'redeemInvite',\n });\n\n if (redeemResult.isErr()) {\n s.stop('Invite code redemption failed');\n log.error('Failed to redeem invite code');\n return promptDeposit({ address, flags, surface });\n }\n\n s.stop('Invite code redeemed successfully!');\n\n const { amount, txHash } = redeemResult.value;\n\n await wait({\n startText: 'Processing...',\n stopText: chalk.green(\n `${chalk.bold(amount)} USDC has been sent to your wallet!`\n ),\n ms: 1500,\n });\n\n log.success(chalk.bold(`Your wallet has been funded with ${amount} USDC`));\n\n if (txHash) {\n log.info(chalk.dim(`Transaction: https://basescan.org/tx/${txHash}`));\n }\n\n return;\n }\n};\n"]}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
var __create = Object.create;
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
8
|
-
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
9
|
-
}) : x)(function(x) {
|
|
10
|
-
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
11
|
-
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
12
|
-
});
|
|
13
|
-
var __esm = (fn, res) => function __init() {
|
|
14
|
-
return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
|
|
15
|
-
};
|
|
16
|
-
var __commonJS = (cb, mod) => function __require2() {
|
|
17
|
-
return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
|
|
18
|
-
};
|
|
19
|
-
var __export = (target, all) => {
|
|
20
|
-
for (var name in all)
|
|
21
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
22
|
-
};
|
|
23
|
-
var __copyProps = (to, from, except, desc) => {
|
|
24
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
25
|
-
for (let key of __getOwnPropNames(from))
|
|
26
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
27
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
28
|
-
}
|
|
29
|
-
return to;
|
|
30
|
-
};
|
|
31
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
32
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
33
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
34
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
35
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
36
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
37
|
-
mod
|
|
38
|
-
));
|
|
39
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
40
|
-
|
|
41
|
-
export { __commonJS, __esm, __export, __require, __toCommonJS, __toESM };
|
|
42
|
-
//# sourceMappingURL=chunk-PLDDJCW6.js.map
|
|
43
|
-
//# sourceMappingURL=chunk-PLDDJCW6.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-PLDDJCW6.js"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/fund/index.ts"],"names":["clackLog"],"mappings":";;;;;;AAOO,IAAM,aAAA,GAAyB,OAAM,KAAA,KAAS;AACnD,EAAA,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,CAAA,KAAA,EAAQ,KAAA,CAAM,GAAA,CAAI,SAAS,CAAA,CAAE,cAAc,CAAC,CAAA,CAAE,CAAC,CAAA;AAEhE,EAAA,MAAM,YAAA,GAAe,MAAM,SAAA,EAAU;AAErC,EAAA,IAAI,YAAA,CAAa,OAAM,EAAG;AACxB,IAAA,GAAA,CAAI,KAAA,CAAM,YAAA,CAAa,KAAA,CAAM,OAAO,CAAA;AACpC,IAAAA,KAAA,CAAS,KAAA,CAAM,YAAA,CAAa,KAAA,CAAM,OAAO,CAAA;AACzC,IAAA,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,GAAA,CAAI,sBAAsB,CAAC,CAAA;AAC5C,IAAA,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,EAChB;AAEA,EAAA,MAAM;AAAA,IACJ,OAAA,EAAS,EAAE,OAAA;AAAQ,MACjB,YAAA,CAAa,KAAA;AAEjB,EAAA,MAAM,cAAc,EAAE,OAAA,EAAS,KAAA,EAAO,OAAA,EAAS,QAAQ,CAAA;AAEvD,EAAA,KAAA,CAAM,KAAA,CAAM,IAAA,CAAK,KAAA,CAAM,qCAAqC,CAAC,CAAA;AAC/D","file":"fund-DSYKNOMK.js","sourcesContent":["import type { Command } from '@/types';\nimport { intro, log as clackLog, outro } from '@clack/prompts';\nimport chalk from 'chalk';\nimport { getWallet } from '@/shared/wallet';\nimport { promptDeposit } from '@/cli/lib/deposit';\nimport { log } from '@/shared/log';\n\nexport const fundMcpServer: Command = async flags => {\n intro(chalk.bold(`Fund ${chalk.hex('#2563eb')('x402scan MCP')}`));\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(walletResult.error.message);\n clackLog.error(walletResult.error.message);\n outro(chalk.bold.red('Failed to get wallet'));\n process.exit(1);\n }\n\n const {\n account: { address },\n } = walletResult.value;\n\n await promptDeposit({ address, flags, surface: 'fund' });\n\n outro(chalk.bold.green('Your x402scan MCP server is funded!'));\n};\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/install/1-get-client/index.ts","../../src/cli/install/2-add-server/lib/platforms.ts","../../src/cli/install/2-add-server/lib/result.ts","../../src/cli/install/2-add-server/lib/file-types.ts","../../src/cli/install/2-add-server/lib/client-config-file.ts","../../src/cli/install/2-add-server/lib/nested-values.ts","../../src/cli/install/2-add-server/index.ts","../../src/cli/install/3-redeem-invite/index.ts","../../src/cli/install/4-add-funds/index.ts","../../src/cli/install/index.ts"],"names":["parsedClient","log","client","chalk","Platforms","z","process","path","os","clackLog","fs","outro","redeemInviteCode","spinner"],"mappings":"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","file":"install-F5WF4NGY.js","sourcesContent":["import z from 'zod';\n\nimport { select, log, outro } from '@clack/prompts';\n\nimport chalk from 'chalk';\n\nimport { clientMetadata, Clients } from '../clients';\n\nimport type { InstallFlags } from '..';\n\nexport const getClient = async ({ client: flagClient, yes }: InstallFlags) => {\n if (yes) {\n if (!flagClient) {\n throw new Error(\n `Client is required when yes is true. Pass --client as one of these values: ${Object.values(Clients).join(', ')}`\n );\n }\n const parsedClient = z.enum(Clients).safeParse(flagClient);\n if (!parsedClient.success) {\n throw new Error(\n `${flagClient} is not a valid client. Valid options are: ${Object.values(Clients).join(', ')}`\n );\n }\n return parsedClient.data;\n }\n const parsedClient = z.enum(Clients).safeParse(flagClient);\n if (parsedClient.success) {\n return parsedClient.data;\n }\n if (flagClient) {\n log.error(`${flagClient} is not a valid client. Please select a client`);\n }\n const client = await select({\n message: 'Where would you like to install the x402scan MCP server?',\n options: Object.values(Clients).map(client => {\n const metadata = clientMetadata[client];\n return {\n label: metadata.name,\n value: client,\n };\n }),\n maxItems: 7,\n });\n\n const parsedClientSelection = z.enum(Clients).safeParse(client);\n if (parsedClientSelection.success) {\n return parsedClientSelection.data;\n }\n outro(chalk.bold.red('No MCP client selected'));\n process.exit(0);\n};\n","import os from 'os';\nimport path from 'path';\nimport process from 'process';\nimport z from 'zod';\n\nenum Platforms {\n Windows = 'win32',\n MacOS = 'darwin',\n Linux = 'linux',\n}\n\nexport const getPlatformPath = () => {\n const platform = z.enum(Platforms).safeParse(process.platform);\n if (!platform.success) {\n throw new Error(`Invalid platform: ${process.platform}`);\n }\n\n const homeDir = os.homedir();\n\n switch (platform.data) {\n case Platforms.Windows:\n return {\n baseDir:\n process.env.APPDATA ?? path.join(homeDir, 'AppData', 'Roaming'),\n vscodePath: path.join('Code', 'User'),\n };\n case Platforms.MacOS:\n return {\n baseDir: path.join(homeDir, 'Library', 'Application Support'),\n vscodePath: path.join('Code', 'User'),\n };\n case Platforms.Linux:\n return {\n baseDir: process.env.XDG_CONFIG_HOME ?? path.join(homeDir, '.config'),\n vscodePath: path.join('Code/User'),\n };\n default:\n throw new Error(`Invalid platform: ${process.platform}`);\n }\n};\n","import { resultFromThrowable } from '@x402scan/neverthrow';\n\nimport type { BaseConfigError } from '../types';\n\nconst errorType = 'config';\nconst surface = 'config_file';\n\nexport const configResultFromThrowable = <T>(\n fn: () => T,\n error: (e: unknown) => BaseConfigError\n) => resultFromThrowable(errorType, surface, fn, error);\n","import * as TOML from '@iarna/toml';\nimport yaml from 'js-yaml';\nimport * as jsonc from 'jsonc-parser';\n\nimport { safeReadFile } from '@/shared/neverthrow/fs';\nimport { configResultFromThrowable } from './result';\n\nimport type { ClientConfigFile, ClientConfigObject } from '../types';\n\nexport enum FileFormat {\n JSON = 'json',\n YAML = 'yaml',\n TOML = 'toml',\n}\n\nconst parseContent = (\n fileContent: string,\n format: FileFormat,\n path: string\n) => {\n return configResultFromThrowable(\n () => {\n let config: ClientConfigObject;\n if (format === FileFormat.YAML) {\n config = yaml.load(fileContent) as ClientConfigObject;\n } else if (format === FileFormat.TOML) {\n config = TOML.parse(fileContent) as ClientConfigObject;\n } else if (path.endsWith('.jsonc')) {\n config = jsonc.parse(fileContent) as ClientConfigObject;\n } else {\n config = JSON.parse(fileContent) as ClientConfigObject;\n }\n return {\n config,\n fileContent,\n };\n },\n e => ({\n cause: 'parse_config',\n message: e instanceof Error ? e.message : 'Failed to parse config file',\n })\n );\n};\n\n/**\n * Parse file content based on format\n */\nexport const parseClientConfig = async ({ format, path }: ClientConfigFile) => {\n const readResult = await safeReadFile('config_file', path);\n\n if (readResult.isErr()) return readResult;\n\n const parseResult = parseContent(readResult.value, format, path);\n\n if (parseResult.isErr()) return parseResult;\n\n return parseResult;\n};\n\nconst serializeJsonc = (\n config: ClientConfigObject,\n originalContent: string\n) => {\n return configResultFromThrowable<string>(\n () => {\n const modifications: jsonc.Edit[] = [];\n\n for (const key of Object.keys(config)) {\n const keyPath = [key];\n const edits = jsonc.modify(originalContent, keyPath, config[key], {\n formattingOptions: { tabSize: 2, insertSpaces: true },\n });\n modifications.push(...edits);\n }\n\n return jsonc.applyEdits(originalContent, modifications);\n },\n e => ({\n cause: 'serialize_config',\n message: e instanceof Error ? e.message : 'Failed to serialize JSONC',\n })\n );\n};\n\nexport const serializeClientConfig = (\n { format, path }: ClientConfigFile,\n config: ClientConfigObject,\n originalContent?: string\n): string => {\n if (format === FileFormat.YAML) {\n return yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n });\n }\n if (format === FileFormat.TOML) {\n return TOML.stringify(config);\n }\n if (path.endsWith('.jsonc') && originalContent) {\n const result = serializeJsonc(config, originalContent);\n if (result.isOk()) {\n return result.value;\n }\n // Fallback to standard JSON.stringify if edit fails\n console.log(`Error applying JSONC edits: ${result.error.message}`);\n console.log('Falling back to JSON.stringify (comments will be lost)');\n return JSON.stringify(config, null, 2);\n }\n // Default to JSON\n return JSON.stringify(config, null, 2);\n};\n\nexport const stringifyObject = (\n config: ClientConfigObject,\n format: FileFormat\n) => {\n if (format === FileFormat.YAML) {\n return yaml.dump(config, {\n indent: 2,\n lineWidth: -1,\n noRefs: true,\n });\n }\n if (format === FileFormat.TOML) {\n return TOML.stringify(config);\n }\n return JSON.stringify(config, null, 2);\n};\n","import os from 'os';\nimport path from 'path';\nimport process from 'process';\nimport fs from 'fs';\n\nimport { getPlatformPath } from './platforms';\nimport { log } from '@/shared/log';\n\nimport { Clients } from '../../clients';\n\nimport type { ClientConfigFile } from '../types';\nimport { FileFormat } from './file-types';\n\nexport const getClientConfigFile = (client: Clients): ClientConfigFile => {\n const homeDir = os.homedir();\n const { baseDir, vscodePath } = getPlatformPath();\n\n switch (client) {\n case Clients.Claude:\n return {\n path: path.join(baseDir, 'Claude', 'claude_desktop_config.json'),\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.Cline:\n return {\n path: path.join(\n baseDir,\n vscodePath,\n 'globalStorage',\n 'saoudrizwan.claude-dev',\n 'settings',\n 'cline_mcp_settings.json'\n ),\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.RooCline:\n return {\n path: path.join(\n baseDir,\n vscodePath,\n 'globalStorage',\n 'rooveterinaryinc.roo-cline',\n 'settings',\n 'mcp_settings.json'\n ),\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.Windsurf:\n return {\n path: path.join(homeDir, '.codeium', 'windsurf', 'mcp_config.json'),\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.Cursor:\n return {\n path: path.join(homeDir, '.cursor', 'mcp.json'),\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.Warp:\n return {\n path: 'no-local-config', // it's okay this isn't a real path, we never use it\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.GeminiCli:\n return {\n path: path.join(homeDir, '.gemini', 'settings.json'),\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.Vscode:\n return {\n path: path.join(baseDir, vscodePath, 'mcp.json'),\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.ClaudeCode:\n return {\n path: path.join(homeDir, '.claude.json'),\n configKey: 'mcpServers',\n format: FileFormat.JSON,\n };\n case Clients.Goose:\n return {\n path: path.join(homeDir, '.config', 'goose', 'config.yaml'),\n configKey: 'extensions',\n format: FileFormat.YAML,\n };\n case Clients.Zed:\n return {\n path:\n process.platform === 'win32'\n ? path.join(\n process.env.APPDATA ?? path.join(homeDir, 'AppData', 'Roaming'),\n 'Zed',\n 'settings.json'\n )\n : path.join(homeDir, '.config', 'zed', 'settings.json'),\n configKey: 'context_servers',\n format: FileFormat.JSON,\n };\n case Clients.Codex:\n return {\n path: path.join(\n process.env.CODEX_HOME ?? path.join(homeDir, '.codex'),\n 'config.toml'\n ),\n configKey: 'mcp_servers',\n format: FileFormat.TOML,\n };\n case Clients.Opencode: {\n const jsonPath = path.join(\n homeDir,\n '.config',\n 'opencode',\n 'opencode.json'\n );\n const jsoncPath = jsonPath.replace('.json', '.jsonc');\n\n // For OpenCode, check if .jsonc exists and prefer it over .json\n if (fs.existsSync(jsoncPath)) {\n log.info(`Found .jsonc file for OpenCode, using: ${jsoncPath}`);\n return {\n path: jsoncPath,\n configKey: 'mcp',\n format: FileFormat.JSON,\n };\n }\n\n return {\n path: jsonPath,\n configKey: 'mcp',\n format: FileFormat.JSON,\n };\n }\n default:\n throw new Error(`Unknown client: ${String(client)}`);\n }\n};\n","import type { ClientConfigObject } from '../types';\n\nexport const getNestedValue = (obj: ClientConfigObject, path: string) => {\n const keys = path.split('.');\n let current: ClientConfigObject | undefined = obj;\n for (const key of keys) {\n if (current && typeof current === 'object' && key in current) {\n current = current[key] as ClientConfigObject;\n } else {\n return undefined;\n }\n }\n return current;\n};\n\nexport const setNestedValue = (\n obj: ClientConfigObject,\n path: string,\n value: ClientConfigObject\n) => {\n const keys = path.split('.');\n const lastKey = keys.pop();\n if (!lastKey) return;\n const target = keys.reduce((current, key) => {\n current[key] ??= {};\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n return current[key];\n }, obj);\n target[lastKey] = value;\n};\n","import fs from 'fs';\n\nimport chalk from 'chalk';\n\nimport { log as clackLog, confirm, outro, stream } from '@clack/prompts';\n\nimport { err } from '@x402scan/neverthrow';\n\nimport { safeWriteFile } from '@/shared/neverthrow/fs';\nimport { log } from '@/shared/log';\n\nimport { clientMetadata, Clients } from '../clients';\nimport {\n FileFormat,\n parseClientConfig,\n serializeClientConfig,\n stringifyObject,\n getClientConfigFile,\n getNestedValue,\n setNestedValue,\n} from './lib';\n\nimport { DIST_TAG } from '@/server/lib/version';\n\nimport { wait } from '@/cli/lib/wait';\n\nimport type { ClientConfigObject } from './types';\nimport type { GlobalFlags } from '@/types';\n\nconst getMcpConfig = (globalFlags: GlobalFlags) => {\n if (globalFlags.dev) {\n return {\n serverName: 'x402',\n command: 'node',\n args: [`${process.cwd()}/dist/esm/index.js`, '--dev'],\n };\n }\n return {\n serverName: 'x402',\n command: 'npx',\n args: ['-y', `@x402scan/mcp@${DIST_TAG}`],\n };\n};\n\nexport const addServer = async (client: Clients, globalFlags: GlobalFlags) => {\n const { serverName, command, args } = getMcpConfig(globalFlags);\n\n if (client === Clients.Warp) {\n clackLog.info(\n chalk.bold.yellow('Warp requires a manual installation through their UI.')\n );\n clackLog.message(\n 'Please copy the following configuration object and add it to your Warp MCP config:'\n );\n console.log();\n console.log(\n JSON.stringify(\n {\n [serverName]: {\n command,\n args,\n working_directory: null,\n start_on_launch: true,\n },\n },\n null,\n 2\n )\n );\n console.log();\n clackLog.message(\n `Read Warp's documentation at https://docs.warp.dev/knowledge-and-collaboration/mcp`\n );\n const addedToWarp = await confirm({\n message: 'Did you add the MCP server to your Warp config?',\n });\n if (!addedToWarp) {\n return err('user', 'install', {\n cause: 'warp_mcp_server_not_added',\n message: 'Warp MCP server not added',\n });\n }\n }\n\n const clientFileTarget = getClientConfigFile(client);\n const { name } = clientMetadata[client];\n\n let config: ClientConfigObject = {};\n let content: string | undefined = undefined;\n\n log.info(`Checking if config file exists at: ${clientFileTarget.path}`);\n if (!fs.existsSync(clientFileTarget.path)) {\n log.info('Config file not found, creating default empty config');\n setNestedValue(config, clientFileTarget.configKey, {});\n log.info('Config created successfully');\n if (!globalFlags.yes) {\n await wait({\n startText: 'Locating config file',\n stopText: `No config found, creating default empty config`,\n ms: 1000,\n });\n }\n } else {\n log.info('Config file found, reading config file content');\n const parseResult = await parseClientConfig(clientFileTarget);\n\n if (parseResult.isErr()) {\n clackLog.error(\n chalk.bold.red(`Error reading config: ${parseResult.error.message}`)\n );\n outro(chalk.bold.red(`Error adding x402scan MCP to ${name}`));\n process.exit(1);\n }\n\n const { config: rawConfig, fileContent } = parseResult.value;\n config = rawConfig;\n content = fileContent;\n const existingValue = getNestedValue(rawConfig, clientFileTarget.configKey);\n if (!existingValue) {\n setNestedValue(rawConfig, clientFileTarget.configKey, {});\n }\n if (!globalFlags.yes) {\n await wait({\n startText: `Locating config file`,\n stopText: `Config loaded from ${clientFileTarget.path}`,\n ms: 1000,\n });\n }\n }\n\n const servers = getNestedValue(config, clientFileTarget.configKey);\n if (!servers || typeof servers !== 'object') {\n log.error(`Invalid ${clientFileTarget.configKey} structure in config`);\n clackLog.error(\n chalk.bold.red(\n `Invalid ${clientFileTarget.configKey} structure in config`\n )\n );\n outro(chalk.bold.red(`Error adding x402scan MCP to ${name}`));\n process.exit(1);\n }\n\n if (client === Clients.Goose) {\n servers[serverName] = {\n name: serverName,\n cmd: command,\n args,\n enabled: true,\n envs: {},\n type: 'stdio',\n timeout: 300,\n };\n } else if (client === Clients.Zed) {\n // Zed has a different config structure\n servers[serverName] = {\n source: 'custom',\n command,\n args,\n env: {},\n };\n } else if (client === Clients.Opencode) {\n servers[serverName] = {\n type: 'local',\n command,\n args,\n enabled: true,\n environment: {},\n };\n } else {\n servers[serverName] = {\n command,\n args,\n };\n }\n\n if (!globalFlags.yes) {\n await new Promise(resolve => setTimeout(resolve, 1000));\n\n clackLog.step(\n `The following will be added to ${chalk.bold.underline(clientFileTarget.path)}`\n );\n }\n\n const configStr = formatDiffByFormat(\n {\n [clientFileTarget.configKey]: {\n [serverName]: servers[serverName] as object,\n },\n },\n clientFileTarget.format\n );\n\n if (!globalFlags.yes) {\n await stream.message(\n (async function* () {\n for (const num of Array.from(\n { length: configStr.length },\n (_, i) => i\n )) {\n const char = configStr[num]!;\n yield char;\n if (!['\\n', ' ', '─', '╮', '╭', '╰', '╯', '│'].includes(char)) {\n await new Promise(resolve => setTimeout(resolve, 5));\n } else {\n await new Promise(resolve => setTimeout(resolve, 2));\n }\n }\n })()\n );\n\n await new Promise(resolve => setTimeout(resolve, 1000));\n }\n\n const isConfirmed = globalFlags.yes\n ? true\n : await confirm({\n message: `Would you like to proceed?`,\n active: 'Install MCP',\n inactive: 'Cancel',\n });\n if (isConfirmed !== true) {\n outro(chalk.bold.red('Installation cancelled'));\n process.exit(0);\n }\n\n const configContent = serializeClientConfig(\n clientFileTarget,\n config,\n content\n );\n\n const writeResult = await safeWriteFile(\n 'config_file',\n clientFileTarget.path,\n configContent\n );\n\n if (writeResult.isErr()) {\n clackLog.error(\n chalk.bold.red(`Error writing config: ${writeResult.error.message}`)\n );\n outro(chalk.bold.red(`Error adding x402scan MCP to ${name}`));\n process.exit(1);\n }\n\n clackLog.success(chalk.bold.green(`Added x402scan MCP to ${name}`));\n};\n\nconst formatDiffByFormat = (obj: object, format: FileFormat) => {\n const str = stringifyObject(obj, format);\n switch (format) {\n case FileFormat.JSON: {\n const numLines = str.split('\\n').length;\n return str\n .split('\\n')\n .map((line, index) => {\n const diffLines = [0, 1, numLines - 2, numLines - 1];\n const isDiffLine = !diffLines.includes(index);\n if (isDiffLine) {\n return `${chalk.bold.green(`+ ${line.slice(2)}`)}`;\n }\n return line;\n })\n .join('\\n');\n }\n case FileFormat.YAML: {\n return str\n .split('\\n')\n .map((line, index) => {\n const diffLines = [0, 1, str.length - 2, str.length - 1];\n const isDiffLine = !diffLines.includes(index);\n if (isDiffLine) {\n return `${chalk.bold.green(`+ ${line.slice(2)}`)}`;\n }\n return line;\n })\n .join('\\n');\n }\n case FileFormat.TOML: {\n return str\n .split('\\n')\n .filter(line => line.trim() !== '')\n .map(line => {\n return `${chalk.bold.green(`+ ${line.trim()}`)}`;\n })\n .join('\\n');\n }\n }\n};\n","import chalk from 'chalk';\nimport { log, spinner } from '@clack/prompts';\n\nimport { wait } from '@/cli/lib/wait';\n\nimport { redeemInviteCode as redeemInviteCodeLib } from '@/shared/redeem-invite';\n\nimport type { RedeemInviteProps } from '@/shared/redeem-invite';\nimport type { GlobalFlags } from '@/types';\n\nexport const redeemInviteCode = async (\n props: RedeemInviteProps,\n flags: GlobalFlags\n) => {\n const s = spinner();\n\n if (!flags.yes) {\n s.start('Redeeming invite code...');\n }\n\n const result = await redeemInviteCodeLib(props);\n\n return result.match(\n async ({ amount, txHash }) => {\n if (!flags.yes) {\n s.stop('Invite code redeemed successfully!');\n\n await wait({\n startText: 'Processing...',\n stopText: chalk.green(\n `${chalk.bold(amount)} USDC has been sent to your wallet!`\n ),\n ms: 1000,\n });\n }\n\n log.info(chalk.dim(`Transaction: https://basescan.org/tx/${txHash}`));\n\n return true;\n },\n error => {\n if (!flags.yes) {\n s.stop('Invite code redemption failed');\n }\n log.warning(\n chalk.yellow(`Failed to redeem invite code: ${error.message}`)\n );\n return false;\n }\n );\n};\n","import chalk from 'chalk';\nimport { log, spinner } from '@clack/prompts';\n\nimport { getBalance } from '@/shared/balance';\nimport { promptDeposit } from '@/cli/lib/deposit';\n\nimport type { Address } from 'viem';\nimport type { InstallFlags } from '..';\n\ninterface AddFundsProps {\n flags: InstallFlags;\n address: Address;\n isNew: boolean;\n}\n\nexport const addFunds = async ({ flags, address, isNew }: AddFundsProps) => {\n if (isNew) {\n if (!flags.yes) {\n await new Promise(resolve => setTimeout(resolve, 1000));\n }\n log.info('To use paid API tools, you will need USDC in your wallet.');\n await promptDeposit({ address, flags, surface: 'add-funds' });\n } else {\n const { start, stop } = spinner();\n\n start('Checking balance...');\n const balanceResult = await getBalance({\n address,\n flags,\n surface: 'add-funds',\n });\n\n if (balanceResult.isOk()) {\n stop(`Balance: ${chalk.bold(`${balanceResult.value.balance} USDC`)} `);\n } else {\n stop(`Error: ${balanceResult.error.message}`);\n return;\n }\n\n const balance = balanceResult.value;\n if (balance.balance < 1) {\n log.warning(\n chalk.bold(\n `Your balance is low (${balance.balance} USDC). Consider topping up.`\n )\n );\n await promptDeposit({ address, flags, surface: 'install' });\n }\n }\n};\n","import chalk from 'chalk';\nimport { intro, outro } from '@clack/prompts';\n\nimport { getWallet } from '@/shared/wallet';\nimport { log } from '@/shared/log';\n\nimport { getClient } from './1-get-client';\nimport { addServer } from './2-add-server';\nimport { redeemInviteCode } from './3-redeem-invite';\nimport { addFunds } from './4-add-funds';\n\nimport type { Command, GlobalFlags } from '@/types';\n\nexport type InstallFlags = GlobalFlags<{\n client?: string;\n}>;\n\nexport const installMcpServer: Command<InstallFlags> = async flags => {\n intro(chalk.green.bold(`Install x402scan MCP`));\n\n const walletResult = await getWallet();\n\n if (walletResult.isErr()) {\n log.error(JSON.stringify(walletResult.error, null, 2));\n outro(chalk.bold.red('Failed to get wallet'));\n process.exit(1);\n }\n\n const {\n account: { address },\n isNew,\n } = walletResult.value;\n\n const client = await getClient(flags);\n\n await addServer(client, flags);\n\n const inviteRedeemed = flags.invite\n ? await redeemInviteCode(\n {\n code: flags.invite,\n dev: flags.dev,\n address,\n surface: 'install',\n },\n flags\n )\n : false;\n\n if (!inviteRedeemed) {\n await addFunds({ flags, address, isNew });\n }\n\n outro(chalk.bold.green('Your x402scan MCP server is ready to use!'));\n};\n"]}
|