agentcash 0.3.4 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/cjs/run-server.cjs +93839 -93640
  2. package/dist/esm/{chunk-FJSHGCIM.js → chunk-DZC5MTYY.js} +2 -2
  3. package/dist/esm/{chunk-GCS3RSLB.js → chunk-EVE4PTLY.js} +6 -6
  4. package/dist/esm/chunk-EVE4PTLY.js.map +1 -0
  5. package/dist/esm/chunk-FM2E2QVT.js +716 -0
  6. package/dist/esm/chunk-FM2E2QVT.js.map +1 -0
  7. package/dist/esm/{chunk-MOO4ZEGR.js → chunk-PCCYUD6X.js} +3 -3
  8. package/dist/esm/{chunk-KD2ZZXT7.js → chunk-PJFATGPH.js} +43 -2
  9. package/dist/esm/chunk-PJFATGPH.js.map +1 -0
  10. package/dist/esm/chunk-QCFNW6VN.js +22 -0
  11. package/dist/esm/chunk-QCFNW6VN.js.map +1 -0
  12. package/dist/esm/chunk-VVTMCXSK.js +309 -0
  13. package/dist/esm/chunk-VVTMCXSK.js.map +1 -0
  14. package/dist/esm/{commands-DUIGMEXV.js → commands-DE2RIAL5.js} +60 -111
  15. package/dist/esm/commands-DE2RIAL5.js.map +1 -0
  16. package/dist/esm/{fund-Y2STNDHA.js → fund-IALSHTLH.js} +4 -5
  17. package/dist/esm/{fund-Y2STNDHA.js.map → fund-IALSHTLH.js.map} +1 -1
  18. package/dist/esm/index.js +19 -13
  19. package/dist/esm/index.js.map +1 -1
  20. package/dist/esm/{install-GFY4JNNJ.js → install-Q4KN5XCP.js} +6 -8
  21. package/dist/esm/{install-GFY4JNNJ.js.map → install-Q4KN5XCP.js.map} +1 -1
  22. package/dist/esm/lib.d.ts +68 -3
  23. package/dist/esm/lib.js +6 -2
  24. package/dist/esm/{server-7D6YY3KG.js → server-WCNK52XR.js} +153 -531
  25. package/dist/esm/server-WCNK52XR.js.map +1 -0
  26. package/dist/esm/shared/operations/index.d.ts +12 -53
  27. package/dist/esm/shared/operations/index.js +6 -7
  28. package/package.json +3 -3
  29. package/dist/esm/chunk-CZBCIWYU.js +0 -48
  30. package/dist/esm/chunk-CZBCIWYU.js.map +0 -1
  31. package/dist/esm/chunk-GCS3RSLB.js.map +0 -1
  32. package/dist/esm/chunk-GIYROB7O.js +0 -210
  33. package/dist/esm/chunk-GIYROB7O.js.map +0 -1
  34. package/dist/esm/chunk-KD2ZZXT7.js.map +0 -1
  35. package/dist/esm/chunk-NQNMVKGY.js +0 -382
  36. package/dist/esm/chunk-NQNMVKGY.js.map +0 -1
  37. package/dist/esm/chunk-XXKBL2AC.js +0 -31
  38. package/dist/esm/chunk-XXKBL2AC.js.map +0 -1
  39. package/dist/esm/commands-DUIGMEXV.js.map +0 -1
  40. package/dist/esm/lib-DIhoN8bW.d.ts +0 -115
  41. package/dist/esm/server-7D6YY3KG.js.map +0 -1
  42. /package/dist/esm/{chunk-FJSHGCIM.js.map → chunk-DZC5MTYY.js.map} +0 -0
  43. /package/dist/esm/{chunk-MOO4ZEGR.js.map → chunk-PCCYUD6X.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/operations/check-endpoint.ts","../../src/shared/neverthrow/x402/index.ts","../../src/shared/neverthrow/mpp/index.ts","../../src/shared/protocol.ts","../../src/shared/openapi-cache.ts","../../src/shared/token.ts","../../src/server/lib/x402-extensions.ts","../../src/shared/operations/discover.ts","../../src/shared/operations/wallet-info.ts","../../src/shared/tempo.ts","../../src/shared/tempo-balance.ts","../../src/shared/operations/report-error.ts"],"sourcesContent":["import { resultFromPromise } from '@agentcash/neverthrow';\nimport { x402Client, x402HTTPClient } from '@x402/core/client';\n\nimport { log } from '@/shared/log';\nimport { safeFetch } from '@/shared/neverthrow/fetch';\nimport { safeGetPaymentRequired } from '@/shared/neverthrow/x402';\nimport { safeGetMppChallenge } from '@/shared/neverthrow/mpp';\nimport { detectPaymentProtocols } from '@/shared/protocol';\nimport { getEndpointSchema, getIndexEntry, getSpecMethods } from '@/shared/openapi-cache';\nimport { tokenStringToNumber } from '@/shared/token';\nimport { getInputSchema } from '@/server/lib/x402-extensions';\n\nimport type { JsonObject } from '@/shared/neverthrow/json/types';\nimport type { PaymentProtocol } from '@/shared/protocol';\n\n// ─── Public types ────────────────────────────────────────────────\n\nexport const SUPPORTED_METHODS = [\n 'GET',\n 'POST',\n 'PUT',\n 'DELETE',\n 'PATCH',\n] as const;\n\nexport type SupportedMethod = (typeof SUPPORTED_METHODS)[number];\n\n/** A single method's probe outcome (only 402 or 2xx responses are kept). */\nexport interface ProbeMethodResult {\n method: SupportedMethod;\n source: 'openapi' | 'probe';\n requiresPayment: boolean;\n statusCode?: number;\n protocols?: PaymentProtocol[];\n paymentMethods?: JsonObject[];\n schema?: JsonObject;\n estimatedPrice?: string;\n summary?: string;\n}\n\nexport interface CheckEndpointResult {\n url: string;\n results: ProbeMethodResult[];\n}\n\nexport interface CheckEndpointOptions {\n surface: string;\n url: string;\n /** Methods to probe. Defaults to spec-defined methods, or all if no spec / probeAllMethods is set. */\n methods?: SupportedMethod[];\n body?: unknown;\n headers?: Record<string, string>;\n /** When true, include 404/405 responses in results. Useful when a specific method is targeted. */\n includeMethodErrors?: boolean;\n /** When true, probe all HTTP methods regardless of what the OpenAPI spec declares. */\n probeAllMethods?: boolean;\n}\n\n// ─── Public entry point ──────────────────────────────────────────\n\n/**\n * Probe an endpoint across one or more HTTP methods in parallel.\n * Returns only the methods that responded with 402 or 2xx.\n * Does not make any payment.\n */\nexport async function checkEndpoint({\n surface,\n url,\n methods,\n body,\n headers = {},\n includeMethodErrors = false,\n probeAllMethods = false,\n}: CheckEndpointOptions): Promise<CheckEndpointResult> {\n let methodsToCheck: SupportedMethod[];\n if (methods) {\n methodsToCheck = methods;\n } else if (probeAllMethods) {\n methodsToCheck = [...SUPPORTED_METHODS];\n } else {\n const specMethods = await getSpecMethods(url);\n if (specMethods?.length) {\n methodsToCheck = specMethods.filter(\n (m): m is SupportedMethod => SUPPORTED_METHODS.includes(m as SupportedMethod)\n );\n } else {\n methodsToCheck = [...SUPPORTED_METHODS];\n }\n }\n\n log.info('Checking endpoint', { url, methods: methodsToCheck });\n\n const results = await Promise.all(\n methodsToCheck.map(method =>\n probeMethod({ surface, method, url, body, headers, includeMethodErrors })\n )\n );\n\n return {\n url,\n results: results.filter((r): r is ProbeMethodResult => r !== null),\n };\n}\n\n// ─── Per-method probe (private) ──────────────────────────────────\n\ninterface ProbeMethodOptions {\n surface: string;\n method: SupportedMethod;\n url: string;\n body?: unknown;\n headers: Record<string, string>;\n includeMethodErrors: boolean;\n}\n\nasync function probeMethod({\n surface,\n method,\n url,\n body,\n headers,\n includeMethodErrors,\n}: ProbeMethodOptions): Promise<ProbeMethodResult | null> {\n // ── Cache-first: try OpenAPI spec ──\n const cachedSchemaResult = await resultFromPromise(\n 'openapi',\n surface,\n getEndpointSchema(url, method),\n e => ({\n cause: 'cache_lookup' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n\n if (cachedSchemaResult.isOk() && cachedSchemaResult.value) {\n const cachedSchema = cachedSchemaResult.value;\n const origin = new URL(url).origin;\n const path = new URL(url).pathname || '/';\n const indexEntry = getIndexEntry(origin, path, method);\n\n return {\n method,\n source: 'openapi',\n requiresPayment: true,\n schema: cachedSchema,\n ...(indexEntry?.price ? { estimatedPrice: indexEntry.price } : {}),\n ...(indexEntry?.protocols\n ? { protocols: indexEntry.protocols as PaymentProtocol[] }\n : {}),\n ...(indexEntry?.summary ? { summary: indexEntry.summary } : {}),\n };\n }\n\n if (cachedSchemaResult.isErr()) {\n log.debug(\n `Cache lookup failed for ${method} ${url}, falling back to 402 probe`\n );\n }\n\n // ── Fallback: 402 probe ──\n const request = buildProbeRequest(url, method, body, headers);\n const responseResult = await safeFetch(surface, request);\n\n if (responseResult.isErr()) {\n log.debug(`${method} ${url} probe failed`, responseResult.error);\n return null;\n }\n\n const response = responseResult.value;\n\n // Non-402 error\n if (!response.ok && response.status !== 402) {\n if (\n includeMethodErrors &&\n (response.status === 404 || response.status === 405)\n ) {\n return {\n method,\n source: 'probe',\n requiresPayment: false,\n statusCode: response.status,\n };\n }\n log.debug(`${method} ${url} returned ${response.status} — skipping`);\n return null;\n }\n\n // 2xx success — include (no payment required)\n if (response.status !== 402) {\n return {\n method,\n source: 'probe',\n requiresPayment: false,\n statusCode: response.status,\n };\n }\n\n // 402 — extract payment details\n const protocols = detectPaymentProtocols(response);\n const paymentMethods: JsonObject[] = [];\n\n if (protocols.includes('mpp')) {\n const challengeResult = safeGetMppChallenge(surface, response);\n\n if (challengeResult.isOk()) {\n const challenge = challengeResult.value;\n\n const currency = challenge.request.currency as string | undefined;\n const amount = challenge.request.amount as string | undefined;\n const decimals = (challenge.request.decimals as number | undefined) ?? 6;\n\n // Try to enrich with OpenAPI schema\n let schema: JsonObject | undefined;\n const endpointSchemaResult = await resultFromPromise(\n 'openapi',\n surface,\n getEndpointSchema(url, method),\n e => ({\n cause: 'schema_fetch' as const,\n message: e instanceof Error ? e.message : String(e),\n })\n );\n if (endpointSchemaResult.isOk() && endpointSchemaResult.value) {\n schema = endpointSchemaResult.value;\n } else if (endpointSchemaResult.isErr()) {\n log.debug(`Failed to fetch OpenAPI schema for: ${url}`);\n }\n\n paymentMethods.push({\n protocol: 'mpp',\n method: challenge.method,\n intent: challenge.intent,\n realm: challenge.realm,\n ...(challenge.description\n ? { description: challenge.description }\n : {}),\n ...(amount ? { price: tokenStringToNumber(amount, decimals) } : {}),\n ...(currency ? { currency } : {}),\n ...(schema ? { schema } : {}),\n network: `tempo:${challenge.method}`,\n } as unknown as JsonObject);\n }\n }\n\n if (protocols.includes('x402')) {\n const client = new x402HTTPClient(new x402Client());\n\n const paymentRequiredResult = await safeGetPaymentRequired(\n surface,\n client,\n response\n );\n\n if (paymentRequiredResult.isOk()) {\n const { resource, extensions, accepts } = paymentRequiredResult.value;\n\n for (const accept of accepts) {\n paymentMethods.push({\n protocol: 'x402',\n ...resource,\n schema: getInputSchema(extensions) as JsonObject,\n price: tokenStringToNumber(accept.amount),\n network: accept.network,\n asset: accept.asset,\n } as unknown as JsonObject);\n }\n }\n }\n\n return {\n method,\n source: 'probe',\n requiresPayment: true,\n statusCode: response.status,\n protocols,\n paymentMethods,\n };\n}\n\n// ─── Request builder (private) ───────────────────────────────────\n\nfunction buildProbeRequest(\n url: string,\n method: string,\n body: unknown,\n headers: Record<string, string>\n): Request {\n const supportsBody = ['POST', 'PUT', 'PATCH'].includes(method);\n const requestBody =\n supportsBody && body\n ? typeof body === 'string'\n ? body\n : JSON.stringify(body)\n : undefined;\n\n return new Request(url, {\n method,\n body: requestBody,\n headers: {\n ...(requestBody ? { 'Content-Type': 'application/json' } : {}),\n ...headers,\n },\n });\n}\n","import {\n err,\n ok,\n resultFromPromise,\n resultFromThrowable,\n} from '@agentcash/neverthrow';\nimport { createSIWxPayload } from '@x402/extensions/sign-in-with-x';\n\nimport type { BaseX402Error } from './types';\nimport type { x402HTTPClient } from '@x402/core/http';\nimport type { PaymentRequired } from '@x402/core/types';\nimport type { CompleteSIWxInfo } from '@x402/extensions/sign-in-with-x';\nimport type { PrivateKeyAccount } from 'viem';\n\nconst errorType = 'x402';\n\nexport const x402Ok = <T>(value: T) => ok(value);\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: CompleteSIWxInfo,\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 { Challenge, Receipt } from 'mpay';\nimport {\n err,\n ok,\n resultFromPromise,\n resultFromThrowable,\n} from '@agentcash/neverthrow';\n\nimport type { BaseMppError } from './types';\nimport type { Mpay as MpayNs } from 'mpay/client';\n\nconst errorType = 'mpp';\n\nexport const mppOk = <T>(value: T) => ok(value);\nexport const mppErr = (surface: string, error: BaseMppError) =>\n err(errorType, surface, error);\n\nconst mppResultFromPromise = <T>(\n surface: string,\n promise: Promise<T>,\n error: (e: unknown) => BaseMppError\n) => resultFromPromise(errorType, surface, promise, error);\n\nconst mppResultFromThrowable = <T>(\n surface: string,\n fn: () => T,\n error: (e: unknown) => BaseMppError\n) => resultFromThrowable(errorType, surface, fn, error);\n\nexport const safeGetMppChallenge = (surface: string, response: Response) => {\n return mppResultFromThrowable(\n surface,\n () => Challenge.fromResponse(response),\n error => ({\n cause: 'parse_mpp_challenge',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to parse MPP challenge from response',\n })\n );\n};\n\nexport const safeCreateMppCredential = (\n surface: string,\n mpayClient: MpayNs.Mpay,\n response: Response\n) => {\n return mppResultFromPromise(\n surface,\n mpayClient.createCredential(response),\n error => ({\n cause: 'create_mpp_credential',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to create MPP credential',\n })\n );\n};\n\nexport const safeGetMppReceipt = (surface: string, response: Response) => {\n return mppResultFromThrowable(\n surface,\n () => Receipt.fromResponse(response),\n error => ({\n cause: 'parse_mpp_receipt',\n message:\n error instanceof Error\n ? error.message\n : 'Failed to parse MPP receipt from response',\n })\n );\n};\n","export type PaymentProtocol = 'x402' | 'mpp';\n\n/**\n * Detects all payment protocols present in a 402 response.\n * MPP responses include a `WWW-Authenticate` header starting with \"Payment\".\n * x402 responses include a `payment-required` header.\n * If neither is explicitly detected, defaults to x402.\n */\nexport function detectPaymentProtocols(response: Response): PaymentProtocol[] {\n const protocols: PaymentProtocol[] = [];\n const wwwAuth = response.headers.get('WWW-Authenticate');\n if (wwwAuth?.startsWith('Payment')) {\n protocols.push('mpp');\n }\n const paymentRequired = response.headers.get('payment-required');\n if (paymentRequired) {\n protocols.push('x402');\n }\n // If we couldn't detect either explicitly, default to x402\n if (protocols.length === 0) {\n protocols.push('x402');\n }\n return protocols;\n}\n\n/**\n * Convenience: returns the first/preferred protocol from a 402 response.\n * Useful when a single protocol must be chosen (e.g. for payment).\n */\nexport function detectPaymentProtocol(response: Response): PaymentProtocol {\n return detectPaymentProtocols(response)[0]!;\n}\n","import { resultFromPromise } from '@agentcash/neverthrow';\n\nimport { safeFetch } from './neverthrow/fetch';\nimport { log } from './log';\n\nimport type { JsonObject, JsonValue } from './neverthrow/json/types';\n\nexport interface EndpointSummary {\n path: string; // \"/api/apollo/people/search\"\n method: string; // \"POST\"\n summary: string; // \"Search for people by name, email, or domain\"\n price?: string; // \"$0.02\" — from x-payment-info, advisory only\n protocols?: string[]; // [\"x402\", \"mpp\"] — from x-payment-info\n}\n\n/**\n * In-memory cache for OpenAPI specs per origin.\n * Populated during discovery or on-demand when check_endpoint needs schema info.\n */\nconst specCache = new Map<string, JsonObject>();\n\n/**\n * Fetch and cache an OpenAPI spec for an origin.\n * Tries multiple well-known locations in order.\n */\nexport async function fetchOpenApiSpec(\n origin: string\n): Promise<JsonObject | null> {\n const cached = specCache.get(origin);\n if (cached) return cached;\n\n const uniqueUrls = [\n `${origin}/openapi.json`,\n `${origin}/.well-known/openapi.json`,\n `${origin}/.well-known/x402`,\n `${origin}/.well-known/mpp`,\n ];\n\n for (const url of uniqueUrls) {\n log.debug(`Fetching OpenAPI spec from: ${url}`);\n const fetchResult = await safeFetch(\n 'fetchOpenApiSpec',\n new Request(url, { headers: { Accept: 'application/json' } })\n );\n\n if (fetchResult.isErr()) {\n log.debug(`Failed to fetch OpenAPI spec from: ${url}`);\n continue;\n }\n\n const response = fetchResult.value;\n if (!response.ok) continue;\n\n const jsonResult = await resultFromPromise(\n 'json',\n 'fetchOpenApiSpec',\n response.json() as Promise<JsonObject>,\n () => ({\n cause: 'parse' as const,\n message: `Failed to parse JSON from: ${url}`,\n })\n );\n\n if (jsonResult.isErr()) {\n log.debug(`Failed to fetch OpenAPI spec from: ${url}`);\n continue;\n }\n\n const spec = jsonResult.value;\n\n // Basic validation - must have paths\n if (spec && typeof spec === 'object' && spec.paths) {\n specCache.set(origin, spec);\n log.info(`Cached OpenAPI spec for origin: ${origin}`);\n return spec;\n }\n }\n\n log.debug(`No OpenAPI spec found for origin: ${origin}`);\n return null;\n}\n\n/**\n * Resolve a JSON $ref pointer within the spec.\n * Only supports local refs: \"#/components/schemas/Foo\"\n */\nfunction resolveRef(\n spec: JsonObject,\n ref: string,\n seen: Set<string>\n): JsonValue | undefined {\n if (!ref.startsWith('#/')) return undefined;\n if (seen.has(ref)) return { $circular: ref } as unknown as JsonValue;\n seen.add(ref);\n\n const parts = ref.slice(2).split('/');\n let current: JsonValue = spec;\n\n for (const part of parts) {\n if (\n current == null ||\n typeof current !== 'object' ||\n Array.isArray(current)\n )\n return undefined;\n const next: JsonValue | undefined = current[part];\n if (next === undefined) return undefined;\n current = next;\n }\n\n if (\n current != null &&\n typeof current === 'object' &&\n !Array.isArray(current)\n ) {\n return resolveRefs(spec, current, seen);\n }\n return current;\n}\n\n/**\n * Recursively resolve all $ref pointers in a JSON object.\n * Keeps it shallow enough to avoid context bloat - max depth 4.\n */\nfunction resolveRefs(\n spec: JsonObject,\n obj: JsonObject,\n seen: Set<string>,\n depth = 0\n): JsonObject {\n if (depth > 4) return obj;\n\n const result: JsonObject = {};\n\n for (const [key, value] of Object.entries(obj)) {\n if (key === '$ref' && typeof value === 'string') {\n const resolved = resolveRef(spec, value, seen);\n if (\n resolved != null &&\n typeof resolved === 'object' &&\n !Array.isArray(resolved)\n ) {\n Object.assign(result, resolved);\n } else {\n result[key] = value;\n }\n } else if (\n value != null &&\n typeof value === 'object' &&\n !Array.isArray(value)\n ) {\n result[key] = resolveRefs(spec, value, seen, depth + 1);\n } else if (Array.isArray(value)) {\n result[key] = value.map(item => {\n if (item != null && typeof item === 'object' && !Array.isArray(item)) {\n return resolveRefs(spec, item, seen, depth + 1);\n }\n return item;\n });\n } else {\n result[key] = value;\n }\n }\n\n return result;\n}\n\n/**\n * Normalize a URL path for matching against OpenAPI spec paths.\n * e.g. \"https://example.com/api/foo\" -> \"/api/foo\"\n */\nfunction extractPath(url: string, origin: string): string {\n if (url.startsWith(origin)) {\n return url.slice(origin.length) || '/';\n }\n return URL.canParse(url) ? new URL(url).pathname : url;\n}\n\n/**\n * Extract the schema for a specific endpoint from the OpenAPI spec.\n * Returns the operation object with resolved $refs, or null if not found.\n */\nexport async function getEndpointSchema(\n endpointUrl: string,\n method?: string\n): Promise<JsonObject | null> {\n if (!URL.canParse(endpointUrl)) return null;\n const origin = new URL(endpointUrl).origin;\n\n const spec = await fetchOpenApiSpec(origin);\n if (!spec) return null;\n\n const paths = spec.paths as JsonObject | undefined;\n if (!paths) return null;\n\n const path = extractPath(endpointUrl, origin);\n const httpMethod = (method ?? 'post').toLowerCase();\n\n // Try exact match first, then try path patterns\n let pathEntry = paths[path] as JsonObject | undefined;\n\n if (!pathEntry) {\n // Try matching against parameterized paths like /api/foo/{id}\n for (const [specPath, specEntry] of Object.entries(paths)) {\n if (specEntry == null || typeof specEntry !== 'object') continue;\n\n const pattern = specPath.replace(/\\{[^}]+\\}/g, '[^/]+');\n const regex = new RegExp(`^${pattern}$`);\n if (regex.test(path)) {\n pathEntry = specEntry as JsonObject;\n break;\n }\n }\n }\n\n if (!pathEntry) {\n log.debug(`No OpenAPI path entry found for: ${path}`);\n return null;\n }\n\n const operation = pathEntry[httpMethod] as JsonObject | undefined;\n if (!operation) {\n log.debug(`No OpenAPI operation found for ${httpMethod.toUpperCase()} ${path}`);\n return null;\n }\n\n const resolved = resolveRefs(spec, operation, new Set());\n return { path, method: httpMethod, ...resolved };\n}\n\n// ── Lightweight Endpoint Index ──\n\nconst indexCache = new Map<string, EndpointSummary[]>();\n\n/**\n * Lazily build a lightweight index for an origin.\n * Fetches the OpenAPI spec if not cached, then extracts\n * path + method + summary + x-payment-info for each operation.\n */\nexport async function getOriginIndex(\n origin: string\n): Promise<EndpointSummary[] | null> {\n const cached = indexCache.get(origin);\n if (cached) return cached;\n\n const spec = await fetchOpenApiSpec(origin);\n if (!spec?.paths) return null;\n\n const endpoints: EndpointSummary[] = [];\n for (const [path, methods] of Object.entries(\n spec.paths as Record<string, JsonObject>\n )) {\n for (const [method, operation] of Object.entries(methods)) {\n if (typeof operation === 'object' && operation !== null) {\n const op = operation as Record<string, unknown>;\n const paymentInfo = op['x-payment-info'] as\n | Record<string, unknown>\n | undefined;\n const entry: EndpointSummary = {\n path,\n method: method.toUpperCase(),\n summary: (op.summary as string) || (op.description as string) || '',\n };\n if (paymentInfo?.price != null) {\n entry.price = `$${paymentInfo.price as number}`;\n }\n if (Array.isArray(paymentInfo?.protocols)) {\n entry.protocols = paymentInfo.protocols as string[];\n }\n endpoints.push(entry);\n }\n }\n }\n\n indexCache.set(origin, endpoints);\n return endpoints;\n}\n\n/** HTTP methods that represent operations in an OpenAPI path entry. */\nconst OPENAPI_HTTP_METHODS = new Set([\n 'get', 'post', 'put', 'delete', 'patch', 'head', 'options', 'trace',\n]);\n\n/**\n * Return the HTTP methods defined in the OpenAPI spec for a given endpoint URL.\n * Returns null if no spec or path entry is available (caller should fall back to probing all methods).\n */\nexport async function getSpecMethods(\n endpointUrl: string\n): Promise<string[] | null> {\n if (!URL.canParse(endpointUrl)) return null;\n const origin = new URL(endpointUrl).origin;\n\n const spec = await fetchOpenApiSpec(origin);\n if (!spec?.paths) return null;\n\n const paths = spec.paths as JsonObject;\n const path = extractPath(endpointUrl, origin);\n\n let pathEntry = paths[path] as JsonObject | undefined;\n\n if (!pathEntry) {\n for (const [specPath, specEntry] of Object.entries(paths)) {\n if (specEntry == null || typeof specEntry !== 'object') continue;\n const pattern = specPath.replace(/\\{[^}]+\\}/g, '[^/]+');\n const regex = new RegExp(`^${pattern}$`);\n if (regex.test(path)) {\n pathEntry = specEntry as JsonObject;\n break;\n }\n }\n }\n\n if (!pathEntry) return null;\n\n return Object.keys(pathEntry)\n .filter(k => OPENAPI_HTTP_METHODS.has(k))\n .map(k => k.toUpperCase());\n}\n\n/**\n * Look up a single endpoint entry from the lightweight index cache.\n * Returns the matching EndpointSummary (with pricing hints) or undefined.\n * Synchronous — only checks what's already cached.\n */\nexport function getIndexEntry(\n origin: string,\n path: string,\n method: string\n): EndpointSummary | undefined {\n const entries = indexCache.get(origin);\n if (!entries) return undefined;\n\n const m = method.toUpperCase();\n return entries.find(e => e.path === path && e.method === m);\n}\n","import { formatUnits } from 'viem';\n\nexport const tokenStringToNumber = (amount: string, decimals = 6) => {\n return Number(formatUnits(BigInt(amount), decimals));\n};\n","import type { PaymentRequired } from '@x402/core/types';\nimport type { DiscoveryExtension } from '@x402/extensions/bazaar';\nimport type {\n CompleteSIWxInfo,\n SIWxExtensionInfo,\n SupportedChain,\n} from '@x402/extensions/sign-in-with-x';\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 = (\n extensions: PaymentRequired['extensions']\n): CompleteSIWxInfo | undefined => {\n const siwx = extensions?.['sign-in-with-x'] as\n | { info?: SIWxExtensionInfo; supportedChains?: SupportedChain[] }\n | undefined;\n\n if (!siwx?.info) {\n return undefined;\n }\n\n // Pick the first EVM chain from supportedChains, falling back to defaults\n const chain = siwx.supportedChains?.find(c =>\n c.chainId.startsWith('eip155:')\n );\n\n return {\n ...siwx.info,\n chainId: chain?.chainId ?? 'eip155:8453',\n type: chain?.type ?? 'eip191',\n signatureScheme: chain?.signatureScheme,\n };\n};\n","import { log } from '@/shared/log';\nimport { safeFetch, safeParseResponse } from '@/shared/neverthrow/fetch';\nimport { fetchOpenApiSpec, getOriginIndex } from '@/shared/openapi-cache';\n\nimport type { EndpointSummary } from '@/shared/openapi-cache';\n\nexport interface DiscoveryResult {\n origin: string;\n source: 'openapi';\n endpoints: EndpointSummary[];\n instructions?: string;\n}\n\n/**\n * Fetch llms.txt instructions from an origin (best-effort).\n */\nasync function fetchLlmsTxt(\n surface: string,\n origin: string\n): Promise<string | null> {\n const llmsTxtUrl = `${origin}/llms.txt`;\n log.debug(`Fetching llms.txt from: ${llmsTxtUrl}`);\n\n const result = await safeFetch(\n surface,\n new Request(llmsTxtUrl, { headers: { Accept: 'text/plain' } })\n );\n\n if (result.isErr()) return null;\n\n const parseResult = await safeParseResponse(surface, result.value);\n if (parseResult.isErr() || parseResult.value.type !== 'text') return null;\n\n return parseResult.value.data;\n}\n\n/**\n * Discover payment-protected resources on an origin.\n * Fetches OpenAPI spec, builds endpoint index, and fetches llms.txt instructions.\n *\n * Returns DiscoveryResult on success, null if no spec/endpoints found.\n */\nexport async function discoverResources(\n surface: string,\n url: string\n): Promise<DiscoveryResult | null> {\n const origin = URL.canParse(url) ? new URL(url).origin : url;\n\n log.info(`Discovering resources for origin: ${origin}`);\n\n // Fetch OpenAPI spec and llms.txt in parallel\n const [spec, instructions] = await Promise.all([\n fetchOpenApiSpec(origin),\n fetchLlmsTxt(surface, origin),\n ]);\n\n if (!spec?.paths) {\n log.debug(\n `No OpenAPI spec found for ${origin}. Tried: /openapi.json, /.well-known/openapi.json, /.well-known/x402, /.well-known/mpp`\n );\n return null;\n }\n\n // Build the lightweight endpoint index\n const endpoints = await getOriginIndex(origin);\n\n if (!endpoints || endpoints.length === 0) {\n log.debug(`OpenAPI spec found for ${origin} but no endpoints extracted`);\n return null;\n }\n\n log.info(`Found ${endpoints.length} endpoints for: ${origin}`);\n\n return {\n origin,\n source: 'openapi',\n endpoints: endpoints.map(({ path, method, summary, price, protocols }) => ({\n path,\n method,\n summary,\n ...(price ? { price } : {}),\n ...(protocols ? { protocols } : {}),\n })),\n ...(instructions ? { instructions } : {}),\n };\n}\n","import { formatUnits } from 'viem';\n\nimport { ok } from '@agentcash/neverthrow';\n\nimport { getBalance } from '@/shared/balance';\nimport { getDepositLink } from '@/shared/utils';\nimport { TEMPO_TOKEN_ADDRESS } from '@/shared/tempo';\nimport { getTempoBalance } from '@/shared/tempo-balance';\nimport { log } from '@/shared/log';\n\nimport type { GlobalFlags } from '@/types';\nimport type { Address } from 'viem';\n\ninterface ChainBalance {\n chain: string;\n balance: number;\n}\n\nexport interface WalletInfoResult {\n address: Address;\n balance: number;\n chains: ChainBalance[];\n isNewWallet: boolean;\n depositLink: string;\n message?: string;\n}\n\n/**\n * Get wallet info including balance and deposit link.\n * Returns summed balance across Base and Tempo, with per-chain breakdown.\n */\nexport async function getWalletInfo(\n surface: string,\n address: Address,\n flags: GlobalFlags\n) {\n const [balanceResult, tempoResult] = await Promise.all([\n getBalance({ address, flags, surface }),\n getTempoBalance({ address, tokenAddress: TEMPO_TOKEN_ADDRESS })\n .then(r => Number(formatUnits(r.balance, 6)))\n .catch(e => {\n log.info(`Failed to fetch Tempo balance: ${e}`);\n return null;\n }),\n ]);\n\n if (balanceResult.isErr()) {\n return balanceResult;\n }\n\n const baseBalance = balanceResult.value.balance;\n const tempoBalance = tempoResult ?? 0;\n const totalBalance = baseBalance + tempoBalance;\n\n const chains: ChainBalance[] = [\n { chain: 'Base', balance: baseBalance },\n { chain: 'Tempo', balance: tempoBalance },\n ];\n\n return ok<WalletInfoResult>({\n address,\n balance: totalBalance,\n chains,\n isNewWallet: totalBalance === 0,\n depositLink: getDepositLink(address, flags),\n ...(totalBalance < 2.5 && totalBalance > 0\n ? { message: 'Your balance is low. Consider topping it up' }\n : {}),\n });\n}\n","import type { Address } from 'viem';\n\n/** Authenticated RPC for Tempo Mainnet */\nexport const TEMPO_RPC_URL =\n 'https://eng:acard-melody-fashion-finish@rpc.mainnet.tempo.xyz';\n\n/** pathUSD token on Tempo Mainnet */\nexport const TEMPO_TOKEN_ADDRESS: Address =\n '0x20c0000000000000000000000000000000000000';\n","import { tempo } from 'viem/chains';\n\nimport type { Address } from 'viem';\n\nconst MPPSCAN_BASE = 'https://mppscan.com';\n\ninterface GetTempoBalanceResult {\n chainId: number;\n chainName: string;\n balance: bigint;\n tokenAddress: Address;\n}\n\nexport async function getTempoBalance({\n address,\n tokenAddress,\n}: {\n address: Address;\n tokenAddress: Address;\n}): Promise<GetTempoBalanceResult> {\n const url = `${MPPSCAN_BASE}/api/balance/${address}`;\n\n const res = await fetch(url, {\n method: 'GET',\n headers: { accept: 'application/json' },\n });\n\n if (!res.ok) {\n throw new Error(`mppscan balance request failed: ${res.status}`);\n }\n\n const data = (await res.json()) as { balance: string };\n\n return {\n chainId: tempo.id,\n chainName: tempo.name,\n balance: BigInt(data.balance),\n tokenAddress,\n };\n}\n","import { z } from 'zod';\nimport { ok } from '@agentcash/neverthrow';\n\nimport { safeFetchJson } from '@/shared/neverthrow/fetch';\nimport { getBaseUrl } from '@/shared/utils';\nimport { MCP_VERSION } from '@/shared/version';\n\nimport type { Address } from 'viem';\n\n/**\n * Error report input\n */\ninterface ErrorReportInput {\n tool: string;\n summary: string;\n errorMessage: string;\n resource?: string;\n stack?: string;\n fullReport?: string;\n}\n\n/**\n * Error report result\n */\nexport interface ErrorReportResult {\n submitted: true;\n reportId: string;\n message: string;\n}\n\n/**\n * Submit an error report to agentcash telemetry.\n */\nexport async function submitErrorReport(\n surface: string,\n input: ErrorReportInput,\n address: Address,\n dev: boolean\n) {\n const telemetryResult = await safeFetchJson(\n surface,\n new Request(`${getBaseUrl(dev)}/api/telemetry`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n tool: input.tool,\n summary: input.summary,\n errorMessage: input.errorMessage,\n resource: input.resource,\n stack: input.stack,\n fullReport: input.fullReport,\n walletAddress: address,\n mcpVersion: MCP_VERSION,\n reportedAt: new Date().toISOString(),\n }),\n }),\n z.object({\n reportId: z.string(),\n })\n );\n\n if (telemetryResult.isErr()) {\n return telemetryResult;\n }\n\n const { reportId } = telemetryResult.value;\n\n return ok<ErrorReportResult>({\n submitted: true,\n reportId,\n message:\n 'Error report submitted successfully. The agentcash team will investigate.',\n });\n}\n"],"mappings":"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","names":["errorType","formatUnits","formatUnits"]}
@@ -2,10 +2,10 @@ import {
2
2
  DEFAULT_NETWORK,
3
3
  getChainName,
4
4
  redeemInviteCode
5
- } from "./chunk-GCS3RSLB.js";
5
+ } from "./chunk-EVE4PTLY.js";
6
6
  import {
7
7
  getDepositLink
8
- } from "./chunk-CZBCIWYU.js";
8
+ } from "./chunk-PJFATGPH.js";
9
9
 
10
10
  // src/cli/lib/deposit.ts
11
11
  import chalk from "chalk";
@@ -111,4 +111,4 @@ export {
111
111
  wait,
112
112
  promptDeposit
113
113
  };
114
- //# sourceMappingURL=chunk-MOO4ZEGR.js.map
114
+ //# sourceMappingURL=chunk-PCCYUD6X.js.map
@@ -725,6 +725,43 @@ var isFetchError = (error) => {
725
725
  return error.type === errorType2;
726
726
  };
727
727
 
728
+ // src/shared/utils.ts
729
+ import open from "open";
730
+ var getBaseUrl = (dev) => {
731
+ return dev ? "http://localhost:3000" : "https://x402scan.com";
732
+ };
733
+ var getDepositLink = (address, flags) => {
734
+ return `${getBaseUrl(flags.dev)}/mcp/deposit/${address}`;
735
+ };
736
+ var openDepositLink = async (address, flags) => {
737
+ const depositLink = getDepositLink(address, flags);
738
+ await open(depositLink);
739
+ };
740
+
741
+ // src/shared/balance.ts
742
+ import z2 from "zod";
743
+ var getBalance = async ({
744
+ address,
745
+ flags,
746
+ surface
747
+ }) => {
748
+ const url = `${getBaseUrl(flags.dev)}/api/rpc/balance/${address}`;
749
+ const res = await safeFetchJson(
750
+ surface,
751
+ new Request(url, {
752
+ method: "GET",
753
+ headers: {
754
+ accept: "application/json"
755
+ }
756
+ }),
757
+ z2.object({
758
+ chain: z2.number(),
759
+ balance: z2.coerce.number()
760
+ })
761
+ );
762
+ return res;
763
+ };
764
+
728
765
  export {
729
766
  resultFromPromise,
730
767
  resultFromThrowable,
@@ -744,6 +781,10 @@ export {
744
781
  safeChmod,
745
782
  LEGACY_DIRECTORY,
746
783
  configFile,
747
- log
784
+ log,
785
+ getBaseUrl,
786
+ getDepositLink,
787
+ openDepositLink,
788
+ getBalance
748
789
  };
749
- //# sourceMappingURL=chunk-KD2ZZXT7.js.map
790
+ //# sourceMappingURL=chunk-PJFATGPH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/neverthrow/fs/index.ts","../../../../../node_modules/.pnpm/neverthrow@8.2.0/node_modules/neverthrow/dist/index.es.js","../../../../internal/neverthrow/src/index.ts","../../src/shared/fs.ts","../../src/shared/log.ts","../../src/shared/neverthrow/parse/index.ts","../../src/shared/neverthrow/fetch/index.ts","../../src/shared/utils.ts","../../src/shared/balance.ts"],"sourcesContent":["import { readFile, writeFile, appendFile, chmod } from 'fs/promises';\n\nimport { err, resultFromPromise } from '@agentcash/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, 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, 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, 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, chmod(path, mode), () => ({\n cause: 'file_not_chmodable',\n message: 'Failed to chmod file',\n }));\n","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 { join } from 'path';\nimport { homedir } from 'os';\nimport * as fs from 'fs';\n\nimport { resultFromThrowable } from '@agentcash/neverthrow';\n\nconst BASE_DIRECTORY = join(homedir(), '.agentcash');\nexport const LEGACY_DIRECTORY = join(homedir(), '.x402scan-mcp');\n\n/**\n * Auto-migrate files from ~/.x402scan-mcp/ to ~/.agentcash/\n * Copies wallet.json (and any other config) on first run after upgrade.\n * Only copies files that don't already exist in the new location.\n */\nfunction migrateFromLegacy(): void {\n if (!fs.existsSync(LEGACY_DIRECTORY)) return;\n\n const result = resultFromThrowable(\n 'migration',\n 'fs',\n () => {\n const files = fs.readdirSync(LEGACY_DIRECTORY);\n for (const file of files) {\n // Skip logs — not worth migrating\n if (file.endsWith('.log')) continue;\n\n const src = join(LEGACY_DIRECTORY, file);\n const dest = join(BASE_DIRECTORY, file);\n\n if (!fs.existsSync(dest) && fs.statSync(src).isFile()) {\n fs.copyFileSync(src, dest);\n // Preserve original permissions (wallet.json is 0600)\n const { mode } = fs.statSync(src);\n fs.chmodSync(dest, mode);\n }\n }\n },\n e => ({\n cause: 'migration_failed' as const,\n message: `Failed to migrate: ${e instanceof Error ? e.message : String(e)}`,\n })\n );\n\n if (result.isErr()) {\n console.error(\n `[agentcash] Warning: failed to migrate files from ${LEGACY_DIRECTORY} to ${BASE_DIRECTORY}. ` +\n `Your wallet may still be at ${join(LEGACY_DIRECTORY, 'wallet.json')} — copy it manually to ${join(BASE_DIRECTORY, 'wallet.json')}. ` +\n `Error: ${result.error.message}`\n );\n }\n}\n\nif (!fs.existsSync(BASE_DIRECTORY)) {\n fs.mkdirSync(BASE_DIRECTORY, { recursive: true });\n}\n\nmigrateFromLegacy();\n\nexport const configFile = (name: `${string}.${string}`) => {\n if (!fs.existsSync(BASE_DIRECTORY)) {\n fs.mkdirSync(BASE_DIRECTORY, { recursive: true });\n }\n const filePath = join(BASE_DIRECTORY, name);\n return filePath;\n};\n","import { safeAppendFile } from '@/shared/neverthrow/fs';\n\nimport { configFile } from './fs';\nimport { isVerbose } from './cli-context';\n\nconst LOG_FILE = configFile('mcp.log');\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 (isVerbose()) {\n console.error(`[agentcash] ${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 isVerbose() && write('DEBUG', msg, args),\n path: LOG_FILE,\n};\n","import z from 'zod';\n\nimport { err, ok } from '@agentcash/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 contentType from 'content-type';\nimport { err, ok, resultFromPromise } from '@agentcash/neverthrow';\n\nimport type z from 'zod';\n\nimport type { BaseError, Error } from '@agentcash/neverthrow/types';\nimport type { BaseFetchError, FetchError, ParsedResponse } from './types';\nimport type { JsonObject } from '../json/types';\nimport { safeParse } from '../parse';\n\nconst IMAGE_TYPES = new Set([\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/svg+xml',\n 'image/tiff',\n 'image/bmp',\n 'image/ico',\n]);\n\nconst errorType = 'fetch';\n\nexport const fetchErr = (surface: string, error: BaseFetchError) =>\n err(errorType, surface, error);\nexport const fetchOk = <T>(value: T) => ok(value);\n\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>(\n surface: string,\n request: Request,\n schema: z.ZodSchema<T>\n) => {\n return safeFetch(surface, request)\n .andThen(response => {\n if (!response.ok) {\n return fetchHttpErr(surface, response);\n }\n\n return resultFromPromise(errorType, surface, response.json(), () => ({\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 .andThen(data => safeParse(surface, schema, data));\n};\n\nexport const safeParseResponse = (surface: string, response: Response) => {\n return resultFromPromise(\n errorType,\n surface,\n (async (): Promise<ParsedResponse> => {\n const header = response.headers.get('content-type');\n const { type: mimeType } = header\n ? contentType.parse(header)\n : { type: 'application/octet-stream' };\n\n switch (mimeType) {\n case 'application/json':\n return {\n type: 'json' as const,\n data: (await response.json()) as JsonObject,\n };\n case 'application/pdf':\n return {\n type: 'pdf' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n case 'application/octet-stream':\n return {\n type: 'octet-stream' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n case 'multipart/form-data':\n return { type: 'formData' as const, data: await response.formData() };\n }\n\n if (IMAGE_TYPES.has(mimeType)) {\n return {\n type: 'image' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n }\n\n if (mimeType.startsWith('audio/')) {\n return {\n type: 'audio' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n }\n\n if (mimeType.startsWith('video/')) {\n return {\n type: 'video' as const,\n mimeType,\n data: await response.arrayBuffer(),\n };\n }\n\n if (mimeType.startsWith('text/')) {\n return { type: 'text' as const, data: await response.text() };\n }\n\n throw new Error(`Unsupported content type: ${header}`);\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';\n\nimport { getBaseUrl } from '@/shared/utils';\nimport { safeFetchJson } from '@/shared/neverthrow/fetch';\n\nimport type { Address } from 'viem';\nimport type { GlobalFlags } from '@/types';\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(\n surface,\n new Request(url, {\n method: 'GET',\n headers: {\n accept: 'application/json',\n },\n }),\n z.object({\n chain: z.number(),\n balance: z.coerce.number(),\n })\n );\n\n return res;\n};\n"],"mappings":"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","names":["v","ok","err","Result","fromThrowable","ok","err","type","ok","err","type","err","err","ok","errorType","err","ok","z","z"]}
@@ -0,0 +1,22 @@
1
+ import {
2
+ getWalletInfo,
3
+ submitErrorReport
4
+ } from "./chunk-FM2E2QVT.js";
5
+
6
+ // src/shared/operations/index.ts
7
+ async function getWalletInfo2(surface, address, flags) {
8
+ const result = await getWalletInfo(surface, address, flags);
9
+ if (result.isErr()) throw new Error(result.error.message);
10
+ return result.value;
11
+ }
12
+ async function submitErrorReport2(surface, input, address, dev) {
13
+ const result = await submitErrorReport(surface, input, address, dev);
14
+ if (result.isErr()) throw new Error(result.error.message);
15
+ return result.value;
16
+ }
17
+
18
+ export {
19
+ getWalletInfo2 as getWalletInfo,
20
+ submitErrorReport2 as submitErrorReport
21
+ };
22
+ //# sourceMappingURL=chunk-QCFNW6VN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/shared/operations/index.ts"],"sourcesContent":["/**\n * Published entry point: `agentcash/operations`\n *\n * All exports return plain types (no Result<> from neverthrow) to avoid\n * leaking @agentcash/neverthrow/types into published .d.ts files.\n */\n\nimport type { Address } from 'viem';\nimport type { GlobalFlags } from '@/types';\n\n// ── Discover ──\n// Already returns plain type (DiscoveryResult | null)\nexport { discoverResources, type DiscoveryResult } from './discover';\n\n// ── Check Endpoint ──\nexport {\n checkEndpoint,\n type CheckEndpointOptions,\n type CheckEndpointResult,\n type ProbeMethodResult,\n type SupportedMethod,\n SUPPORTED_METHODS,\n} from './check-endpoint';\n\n// ── Wallet Info ──\nimport { getWalletInfo as _getWalletInfo } from './wallet-info';\nexport type { WalletInfoResult } from './wallet-info';\n\nexport async function getWalletInfo(\n surface: string,\n address: Address,\n flags: GlobalFlags\n) {\n const result = await _getWalletInfo(surface, address, flags);\n if (result.isErr()) throw new Error(result.error.message);\n return result.value;\n}\n\n// ── Report Error ──\nimport { submitErrorReport as _submitErrorReport } from './report-error';\nexport type { ErrorReportResult } from './report-error';\n\nexport async function submitErrorReport(\n surface: string,\n input: {\n tool: string;\n summary: string;\n errorMessage: string;\n resource?: string;\n stack?: string;\n fullReport?: string;\n },\n address: Address,\n dev: boolean\n) {\n const result = await _submitErrorReport(surface, input, address, dev);\n if (result.isErr()) throw new Error(result.error.message);\n return result.value;\n}\n"],"mappings":";;;;;;AA4BA,eAAsBA,eACpB,SACA,SACA,OACA;AACA,QAAM,SAAS,MAAM,cAAe,SAAS,SAAS,KAAK;AAC3D,MAAI,OAAO,MAAM,EAAG,OAAM,IAAI,MAAM,OAAO,MAAM,OAAO;AACxD,SAAO,OAAO;AAChB;AAMA,eAAsBC,mBACpB,SACA,OAQA,SACA,KACA;AACA,QAAM,SAAS,MAAM,kBAAmB,SAAS,OAAO,SAAS,GAAG;AACpE,MAAI,OAAO,MAAM,EAAG,OAAM,IAAI,MAAM,OAAO,MAAM,OAAO;AACxD,SAAO,OAAO;AAChB;","names":["getWalletInfo","submitErrorReport"]}