@tabai/sdk 0.2.2 → 0.2.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.
Files changed (155) hide show
  1. package/README.md +16 -12
  2. package/dist/_shared/abi.d.ts.map +1 -1
  3. package/dist/_shared/abi.js +6 -3
  4. package/dist/_shared/abi.js.map +1 -1
  5. package/dist/_shared/chains.d.ts +4 -6
  6. package/dist/_shared/chains.d.ts.map +1 -1
  7. package/dist/_shared/chains.js +1 -2
  8. package/dist/_shared/chains.js.map +1 -1
  9. package/dist/_shared/keccak256.d.ts +6 -6
  10. package/dist/_shared/keccak256.js +6 -6
  11. package/dist/_shared/keccak256.js.map +1 -1
  12. package/dist/_shared/result.d.ts +5 -6
  13. package/dist/_shared/result.d.ts.map +1 -1
  14. package/dist/_shared/result.js +5 -6
  15. package/dist/_shared/result.js.map +1 -1
  16. package/dist/cli/client-config.d.ts +4 -5
  17. package/dist/cli/client-config.d.ts.map +1 -1
  18. package/dist/cli/client-config.js +4 -5
  19. package/dist/cli/client-config.js.map +1 -1
  20. package/dist/cli/connect.d.ts +1 -3
  21. package/dist/cli/connect.d.ts.map +1 -1
  22. package/dist/cli/connect.js +1 -3
  23. package/dist/cli/connect.js.map +1 -1
  24. package/dist/cli/doctor.d.ts +1 -3
  25. package/dist/cli/doctor.d.ts.map +1 -1
  26. package/dist/cli/doctor.js +1 -3
  27. package/dist/cli/doctor.js.map +1 -1
  28. package/dist/cli/index.d.ts +1 -1
  29. package/dist/cli/index.js +1 -1
  30. package/dist/cli/index.js.map +1 -1
  31. package/dist/cli/main.d.ts +1 -3
  32. package/dist/cli/main.d.ts.map +1 -1
  33. package/dist/cli/main.js +2 -4
  34. package/dist/cli/main.js.map +1 -1
  35. package/dist/errors.d.ts +2 -4
  36. package/dist/errors.d.ts.map +1 -1
  37. package/dist/errors.js +2 -4
  38. package/dist/errors.js.map +1 -1
  39. package/dist/http/client-402.d.ts +11 -13
  40. package/dist/http/client-402.d.ts.map +1 -1
  41. package/dist/http/client-402.js +12 -14
  42. package/dist/http/client-402.js.map +1 -1
  43. package/dist/http/headers.d.ts +9 -11
  44. package/dist/http/headers.d.ts.map +1 -1
  45. package/dist/http/headers.js +9 -11
  46. package/dist/http/headers.js.map +1 -1
  47. package/dist/http/index.d.ts +0 -2
  48. package/dist/http/index.d.ts.map +1 -1
  49. package/dist/http/index.js +0 -2
  50. package/dist/http/index.js.map +1 -1
  51. package/dist/http/metering-claim.d.ts +0 -2
  52. package/dist/http/metering-claim.d.ts.map +1 -1
  53. package/dist/http/metering-claim.js +0 -2
  54. package/dist/http/metering-claim.js.map +1 -1
  55. package/dist/index.d.ts +15 -12
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +15 -12
  58. package/dist/index.js.map +1 -1
  59. package/dist/logger.d.ts +1 -4
  60. package/dist/logger.d.ts.map +1 -1
  61. package/dist/logger.js +1 -4
  62. package/dist/logger.js.map +1 -1
  63. package/dist/mcp/index.d.ts +1 -1
  64. package/dist/mcp/index.js +1 -1
  65. package/dist/mcp/index.js.map +1 -1
  66. package/dist/mcp/json-schema.d.ts +1 -3
  67. package/dist/mcp/json-schema.d.ts.map +1 -1
  68. package/dist/mcp/json-schema.js +1 -3
  69. package/dist/mcp/json-schema.js.map +1 -1
  70. package/dist/mcp/json.d.ts +0 -2
  71. package/dist/mcp/json.d.ts.map +1 -1
  72. package/dist/mcp/json.js +0 -2
  73. package/dist/mcp/json.js.map +1 -1
  74. package/dist/mcp/registry-client.d.ts +0 -2
  75. package/dist/mcp/registry-client.d.ts.map +1 -1
  76. package/dist/mcp/registry-client.js +3 -4
  77. package/dist/mcp/registry-client.js.map +1 -1
  78. package/dist/mcp/schemas.d.ts +10 -8
  79. package/dist/mcp/schemas.d.ts.map +1 -1
  80. package/dist/mcp/schemas.js +5 -7
  81. package/dist/mcp/schemas.js.map +1 -1
  82. package/dist/mcp/server.d.ts +0 -2
  83. package/dist/mcp/server.d.ts.map +1 -1
  84. package/dist/mcp/server.js +4 -7
  85. package/dist/mcp/server.js.map +1 -1
  86. package/dist/mcp/settings.d.ts +0 -2
  87. package/dist/mcp/settings.d.ts.map +1 -1
  88. package/dist/mcp/settings.js +0 -2
  89. package/dist/mcp/settings.js.map +1 -1
  90. package/dist/mcp/toolset.d.ts +2 -5
  91. package/dist/mcp/toolset.d.ts.map +1 -1
  92. package/dist/mcp/toolset.js +3 -6
  93. package/dist/mcp/toolset.js.map +1 -1
  94. package/dist/payments/config.d.ts +6 -8
  95. package/dist/payments/config.d.ts.map +1 -1
  96. package/dist/payments/config.js +5 -7
  97. package/dist/payments/config.js.map +1 -1
  98. package/dist/payments/index.d.ts +0 -2
  99. package/dist/payments/index.d.ts.map +1 -1
  100. package/dist/payments/index.js +0 -2
  101. package/dist/payments/index.js.map +1 -1
  102. package/dist/payments/registry.d.ts +11 -12
  103. package/dist/payments/registry.d.ts.map +1 -1
  104. package/dist/payments/registry.js +11 -12
  105. package/dist/payments/registry.js.map +1 -1
  106. package/dist/payments/strategy.d.ts +9 -5
  107. package/dist/payments/strategy.d.ts.map +1 -1
  108. package/dist/payments/strategy.js +9 -5
  109. package/dist/payments/strategy.js.map +1 -1
  110. package/dist/proxy/hooks.d.ts +3 -5
  111. package/dist/proxy/hooks.d.ts.map +1 -1
  112. package/dist/proxy/hooks.js +2 -4
  113. package/dist/proxy/hooks.js.map +1 -1
  114. package/dist/proxy/index.d.ts +2 -2
  115. package/dist/proxy/index.js +2 -2
  116. package/dist/proxy/index.js.map +1 -1
  117. package/dist/proxy/proxy.d.ts +3 -5
  118. package/dist/proxy/proxy.d.ts.map +1 -1
  119. package/dist/proxy/proxy.js +2 -4
  120. package/dist/proxy/proxy.js.map +1 -1
  121. package/dist/server/adapters/express.d.ts +0 -2
  122. package/dist/server/adapters/express.d.ts.map +1 -1
  123. package/dist/server/adapters/express.js +0 -2
  124. package/dist/server/adapters/express.js.map +1 -1
  125. package/dist/server/adapters/hono.d.ts +0 -2
  126. package/dist/server/adapters/hono.d.ts.map +1 -1
  127. package/dist/server/adapters/hono.js +0 -2
  128. package/dist/server/adapters/hono.js.map +1 -1
  129. package/dist/server/adapters/next.d.ts +0 -2
  130. package/dist/server/adapters/next.d.ts.map +1 -1
  131. package/dist/server/adapters/next.js +0 -2
  132. package/dist/server/adapters/next.js.map +1 -1
  133. package/dist/server/index.d.ts +5 -5
  134. package/dist/server/index.js +5 -5
  135. package/dist/server/index.js.map +1 -1
  136. package/dist/server/metering.d.ts +9 -11
  137. package/dist/server/metering.d.ts.map +1 -1
  138. package/dist/server/metering.js +6 -8
  139. package/dist/server/metering.js.map +1 -1
  140. package/dist/server/post-paid.d.ts +8 -10
  141. package/dist/server/post-paid.d.ts.map +1 -1
  142. package/dist/server/post-paid.js +7 -9
  143. package/dist/server/post-paid.js.map +1 -1
  144. package/dist/x402/client.d.ts +5 -6
  145. package/dist/x402/client.d.ts.map +1 -1
  146. package/dist/x402/client.js +6 -7
  147. package/dist/x402/client.js.map +1 -1
  148. package/dist/x402/server.d.ts +5 -5
  149. package/dist/x402/server.d.ts.map +1 -1
  150. package/dist/x402/server.js +2 -2
  151. package/dist/x402/server.js.map +1 -1
  152. package/dist/x402/wire.d.ts +1 -1
  153. package/dist/x402/wire.js +1 -1
  154. package/dist/x402/wire.js.map +1 -1
  155. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/x402/wire.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The x402 V2 wire format, as this package reads and writes it.\n *\n * x402 is the prepaid model: a resource server answers `402` with a\n * `PAYMENT-REQUIRED` header naming what it accepts, the client signs a payment\n * and repeats the request with `PAYMENT-SIGNATURE`, and the server returns the\n * resource with `PAYMENT-RESPONSE` once a facilitator has settled it on chain.\n * Tab is the opposite model, and the two meet in exactly two places: a Tab\n * Service that has refused an Agent on credit can offer x402 as the way to pay\n * for that one call, and a Tab Service can front an x402 upstream and buy on the\n * Agent's behalf. This module is the shared vocabulary for both.\n *\n * ## What is official and what is not\n *\n * The types and the three header codecs come from `@x402/core`, the reference\n * implementation, so a `PaymentRequired` built here is what an x402 client\n * elsewhere decodes and a `PaymentPayload` decoded here is what one sent. The\n * codecs throw on malformed input; every wrapper below turns that into a\n * `Result`, because nothing exported from this package throws.\n *\n * {@link selectExactRequirement} is this package's own: which of a server's\n * `accepts` an Agent can actually sign. It is narrow on purpose. The only\n * scheme signed here is `exact` with the EIP-3009 asset transfer method, the\n * default the exact EVM scheme names, and the only networks are `eip155:*`.\n *\n * Specification: x402-specification-v2.md sections 5 and 11.1, transports-v2/http.md.\n */\n\nimport {\n decodePaymentRequiredHeader,\n decodePaymentResponseHeader,\n decodePaymentSignatureHeader,\n encodePaymentRequiredHeader,\n encodePaymentResponseHeader,\n encodePaymentSignatureHeader,\n} from \"@x402/core/http\";\nimport type {\n Network,\n PaymentPayload,\n PaymentRequired,\n PaymentRequirements,\n ResourceInfo,\n SettleResponse,\n SupportedResponse,\n VerifyResponse,\n} from \"@x402/core/types\";\nimport { causeOf, isAddress, ok, wrapSync, type Address, type Result } from \"../_shared/index.js\";\n\nimport { validationError } from \"../errors.js\";\nimport { headerReaderOf, type HeaderReader, type HeaderRecord } from \"../http/headers.js\";\n\nexport type {\n Network,\n PaymentPayload,\n PaymentRequired,\n PaymentRequirements,\n ResourceInfo,\n SettleResponse,\n SupportedResponse,\n VerifyResponse,\n};\n\n/** The protocol version this package speaks. V1 is not read and not written. */\nexport const X402_VERSION = 2 as const;\n\n/** The three transport headers, in the casing the HTTP transport specification uses. */\nexport const X402_HEADER = {\n paymentRequired: \"PAYMENT-REQUIRED\",\n paymentSignature: \"PAYMENT-SIGNATURE\",\n paymentResponse: \"PAYMENT-RESPONSE\",\n} as const;\n\n/** The `exact` scheme, the only one this package signs. */\nexport const X402_SCHEME_EXACT = \"exact\" as const;\n\n/** The asset transfer method this package signs: `transferWithAuthorization`. */\nexport const X402_TRANSFER_METHOD_EIP3009 = \"eip3009\" as const;\n\n/** The CAIP-2 network for an EVM chain id. */\nexport const networkOf = (chainId: bigint | number): Network => `eip155:${chainId.toString()}`;\n\n/** The EVM chain id a CAIP-2 network names, or an error for anything that is not `eip155:<id>`. */\nexport function chainIdOfNetwork(network: string): Result<bigint> {\n const match = /^eip155:([0-9]+)$/.exec(network.trim());\n if (match === null || match[1] === undefined) {\n return validationError(\n \"X402_NETWORK_UNSUPPORTED\",\n `\\`${network}\\` is not an EVM network; this package signs on eip155:<chainId> alone`,\n { details: { network } },\n );\n }\n return ok(BigInt(match[1]));\n}\n\nconst decodeFailed = (header: string, code: string) => (error: unknown) => ({\n category: \"VALIDATION\" as const,\n code,\n message: `${header} does not decode to the x402 object it should carry: base64 of a JSON document`,\n retryable: false,\n details: { header },\n cause: causeOf(error),\n});\n\n/** Decodes a `PAYMENT-REQUIRED` header value. */\nexport const decodePaymentRequired = (value: string): Result<PaymentRequired> =>\n wrapSync(() => decodePaymentRequiredHeader(value), decodeFailed(X402_HEADER.paymentRequired, \"X402_PAYMENT_REQUIRED_INVALID\"));\n\n/** Decodes a `PAYMENT-SIGNATURE` header value. */\nexport const decodePaymentSignature = (value: string): Result<PaymentPayload> =>\n wrapSync(() => decodePaymentSignatureHeader(value), decodeFailed(X402_HEADER.paymentSignature, \"X402_PAYMENT_SIGNATURE_INVALID\"));\n\n/** Decodes a `PAYMENT-RESPONSE` header value. */\nexport const decodePaymentResponse = (value: string): Result<SettleResponse> =>\n wrapSync(() => decodePaymentResponseHeader(value), decodeFailed(X402_HEADER.paymentResponse, \"X402_PAYMENT_RESPONSE_INVALID\"));\n\nconst encodeFailed = (header: string, code: string) => (error: unknown) => ({\n category: \"VALIDATION\" as const,\n code,\n message: `${header} could not be encoded; the object is not serialisable`,\n retryable: false,\n details: { header },\n cause: causeOf(error),\n});\n\n/** Encodes a `PaymentRequired` as the `PAYMENT-REQUIRED` header value. */\nexport const encodePaymentRequired = (required: PaymentRequired): Result<string> =>\n wrapSync(() => encodePaymentRequiredHeader(required), encodeFailed(X402_HEADER.paymentRequired, \"X402_PAYMENT_REQUIRED_INVALID\"));\n\n/** Encodes a `PaymentPayload` as the `PAYMENT-SIGNATURE` header value. */\nexport const encodePaymentSignature = (payload: PaymentPayload): Result<string> =>\n wrapSync(() => encodePaymentSignatureHeader(payload), encodeFailed(X402_HEADER.paymentSignature, \"X402_PAYMENT_SIGNATURE_INVALID\"));\n\n/** Encodes a `SettleResponse` as the `PAYMENT-RESPONSE` header value. */\nexport const encodePaymentResponse = (settlement: SettleResponse): Result<string> =>\n wrapSync(() => encodePaymentResponseHeader(settlement), encodeFailed(X402_HEADER.paymentResponse, \"X402_PAYMENT_RESPONSE_INVALID\"));\n\n/** Reads one header, tolerating a reader that throws. */\nfunction read(headers: HeaderReader, name: string): string | undefined {\n try {\n const value = headers.get(name);\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed.length === 0 ? undefined : trimmed;\n } catch {\n return undefined;\n }\n}\n\n/**\n * The `PaymentRequired` a response carries, `ok(undefined)` when it carries none.\n *\n * Absence is not an error: a Tab `402` without this header is an ordinary credit\n * decision, and a `200` never carries one.\n */\nexport function readPaymentRequired(source: HeaderReader | HeaderRecord): Result<PaymentRequired | undefined> {\n const raw = read(headerReaderOf(source), X402_HEADER.paymentRequired);\n if (raw === undefined) return ok(undefined);\n const decoded = decodePaymentRequired(raw);\n if (!decoded.ok) return decoded;\n return validatePaymentRequired(decoded.value);\n}\n\n/** The `PaymentPayload` a request carries, `ok(undefined)` when it carries none. */\nexport function readPaymentSignature(source: HeaderReader | HeaderRecord): Result<PaymentPayload | undefined> {\n const raw = read(headerReaderOf(source), X402_HEADER.paymentSignature);\n if (raw === undefined) return ok(undefined);\n const decoded = decodePaymentSignature(raw);\n if (!decoded.ok) return decoded;\n return validatePaymentPayload(decoded.value);\n}\n\n/** The `SettleResponse` a response carries, `ok(undefined)` when it carries none. */\nexport function readPaymentResponse(source: HeaderReader | HeaderRecord): Result<SettleResponse | undefined> {\n const raw = read(headerReaderOf(source), X402_HEADER.paymentResponse);\n if (raw === undefined) return ok(undefined);\n const decoded = decodePaymentResponse(raw);\n if (!decoded.ok) return decoded;\n return ok(decoded.value);\n}\n\n/**\n * The shape check the codec does not do.\n *\n * `@x402/core`'s decoder parses JSON and nothing more, so a header carrying\n * `{\"x402Version\":2}` decodes without complaint. The fields checked here are\n * the ones the rest of this package reads, and a document missing one is\n * refused by name rather than dereferenced.\n */\nexport function validatePaymentRequired(value: unknown): Result<PaymentRequired> {\n if (typeof value !== \"object\" || value === null) {\n return validationError(\"X402_PAYMENT_REQUIRED_INVALID\", \"PaymentRequired must be an object\");\n }\n const candidate = value as Partial<PaymentRequired>;\n if (candidate.x402Version !== X402_VERSION) {\n return validationError(\n \"X402_VERSION_UNSUPPORTED\",\n `PaymentRequired carries x402Version ${String(candidate.x402Version)}; this package speaks version ${X402_VERSION} alone`,\n { details: { x402Version: String(candidate.x402Version) } },\n );\n }\n if (typeof candidate.resource !== \"object\" || candidate.resource === null || typeof candidate.resource.url !== \"string\") {\n return validationError(\"X402_PAYMENT_REQUIRED_INVALID\", \"PaymentRequired.resource.url must be a string\");\n }\n if (!Array.isArray(candidate.accepts) || candidate.accepts.length === 0) {\n return validationError(\"X402_PAYMENT_REQUIRED_INVALID\", \"PaymentRequired.accepts must be a non-empty array\");\n }\n for (const [index, entry] of candidate.accepts.entries()) {\n const checked = validatePaymentRequirements(entry, `accepts[${index}]`);\n if (!checked.ok) return checked;\n }\n return ok(candidate as PaymentRequired);\n}\n\n/** Checks one `PaymentRequirements` object field by field. */\nexport function validatePaymentRequirements(value: unknown, label = \"PaymentRequirements\"): Result<PaymentRequirements> {\n if (typeof value !== \"object\" || value === null) {\n return validationError(\"X402_REQUIREMENTS_INVALID\", `${label} must be an object`);\n }\n const candidate = value as Partial<PaymentRequirements>;\n for (const field of [\"scheme\", \"network\", \"amount\", \"asset\", \"payTo\"] as const) {\n if (typeof candidate[field] !== \"string\" || candidate[field].length === 0) {\n return validationError(\"X402_REQUIREMENTS_INVALID\", `${label}.${field} must be a non-empty string`, {\n details: { field },\n });\n }\n }\n if (!/^[0-9]+$/.test(candidate.amount as string)) {\n return validationError(\n \"X402_REQUIREMENTS_INVALID\",\n `${label}.amount must be a decimal integer of atomic units, received \\`${String(candidate.amount)}\\``,\n { details: { field: \"amount\" } },\n );\n }\n if (typeof candidate.maxTimeoutSeconds !== \"number\" || !Number.isFinite(candidate.maxTimeoutSeconds) || candidate.maxTimeoutSeconds <= 0) {\n return validationError(\"X402_REQUIREMENTS_INVALID\", `${label}.maxTimeoutSeconds must be a positive number`, {\n details: { field: \"maxTimeoutSeconds\" },\n });\n }\n if (candidate.extra !== undefined && (typeof candidate.extra !== \"object\" || candidate.extra === null)) {\n return validationError(\"X402_REQUIREMENTS_INVALID\", `${label}.extra must be an object when present`, {\n details: { field: \"extra\" },\n });\n }\n return ok({ ...candidate, extra: candidate.extra ?? {} } as PaymentRequirements);\n}\n\n/** Checks a decoded `PaymentPayload` down to the EIP-3009 fields the server reads. */\nexport function validatePaymentPayload(value: unknown): Result<PaymentPayload> {\n if (typeof value !== \"object\" || value === null) {\n return validationError(\"X402_PAYMENT_SIGNATURE_INVALID\", \"PaymentPayload must be an object\");\n }\n const candidate = value as Partial<PaymentPayload>;\n if (candidate.x402Version !== X402_VERSION) {\n return validationError(\n \"X402_VERSION_UNSUPPORTED\",\n `PaymentPayload carries x402Version ${String(candidate.x402Version)}; this package speaks version ${X402_VERSION} alone`,\n { details: { x402Version: String(candidate.x402Version) } },\n );\n }\n const accepted = validatePaymentRequirements(candidate.accepted, \"PaymentPayload.accepted\");\n if (!accepted.ok) return accepted;\n if (typeof candidate.payload !== \"object\" || candidate.payload === null) {\n return validationError(\"X402_PAYMENT_SIGNATURE_INVALID\", \"PaymentPayload.payload must be an object\");\n }\n return ok({ ...candidate, accepted: accepted.value } as PaymentPayload);\n}\n\n/** How {@link selectExactRequirement} narrows a server's `accepts`. */\nexport interface RequirementFilter {\n /** Accept only this chain. Omitted accepts any `eip155:*` network. */\n readonly chainId?: bigint;\n /** Accept only this token, compared case-insensitively. Omitted accepts any. */\n readonly asset?: Address;\n /** Refuse a requirement above this many atomic units. Omitted sets no ceiling. */\n readonly maxAmount?: bigint;\n}\n\n/** Why one `accepts` entry was passed over, for the error when none is usable. */\ninterface Skipped {\n readonly index: number;\n readonly reason: string;\n}\n\n/**\n * The first `accepts` entry this package can sign, in the server's order.\n *\n * The server's order is its preference and is kept. An entry is passed over\n * when it is not `exact`, not on an EVM chain, names a transfer method other\n * than EIP-3009, declares a payment flow other than `authorization`, or fails\n * the caller's filter. Every reason is carried on the error when nothing\n * matches, because \"no usable requirement\" is not actionable and \"the server\n * accepts Base only and this Agent signs on Monad\" is.\n */\nexport function selectExactRequirement(\n required: PaymentRequired,\n filter: RequirementFilter = {},\n): Result<PaymentRequirements> {\n const skipped: Skipped[] = [];\n for (const [index, entry] of required.accepts.entries()) {\n const reason = disqualify(entry, filter);\n if (reason === undefined) return ok(entry);\n skipped.push({ index, reason });\n }\n return validationError(\n \"X402_NO_USABLE_REQUIREMENT\",\n `none of the ${required.accepts.length} payment options for ${required.resource.url} can be signed here: ${skipped\n .map((entry) => `accepts[${entry.index}] ${entry.reason}`)\n .join(\"; \")}`,\n {\n details: {\n url: required.resource.url,\n options: required.accepts.length,\n ...(filter.chainId === undefined ? {} : { chainId: filter.chainId.toString(10) }),\n ...(filter.asset === undefined ? {} : { asset: filter.asset.toLowerCase() }),\n },\n },\n );\n}\n\nfunction disqualify(entry: PaymentRequirements, filter: RequirementFilter): string | undefined {\n if (entry.scheme !== X402_SCHEME_EXACT) return `uses scheme \\`${entry.scheme}\\`, and only \\`exact\\` is signed here`;\n const chainId = chainIdOfNetwork(entry.network);\n if (!chainId.ok) return `is on \\`${entry.network}\\`, which is not an EVM network`;\n if (filter.chainId !== undefined && chainId.value !== filter.chainId) {\n return `is on chain ${chainId.value.toString(10)} and the signer is on chain ${filter.chainId.toString(10)}`;\n }\n const method = entry.extra?.[\"assetTransferMethod\"];\n if (method !== undefined && method !== X402_TRANSFER_METHOD_EIP3009) {\n return `needs asset transfer method \\`${String(method)}\\`, and only \\`${X402_TRANSFER_METHOD_EIP3009}\\` is signed here`;\n }\n const flow = entry.extra?.[\"paymentFlow\"];\n if (flow !== undefined && flow !== \"authorization\") {\n return `declares payment flow \\`${String(flow)}\\`, and only \\`authorization\\` is signed here`;\n }\n if (!isAddress(entry.asset)) return `names asset \\`${entry.asset}\\`, which is not a 20-byte address`;\n if (filter.asset !== undefined && entry.asset.toLowerCase() !== filter.asset.toLowerCase()) {\n return `is priced in ${entry.asset.toLowerCase()} and the signer pays in ${filter.asset.toLowerCase()}`;\n }\n if (!isAddress(entry.payTo)) return `names payTo \\`${entry.payTo}\\`, which is not a 20-byte address`;\n if (typeof entry.extra?.[\"name\"] !== \"string\" || typeof entry.extra?.[\"version\"] !== \"string\") {\n return \"carries no EIP-712 domain name and version in extra, which EIP-3009 signing needs\";\n }\n if (filter.maxAmount !== undefined && BigInt(entry.amount) > filter.maxAmount) {\n return `asks ${entry.amount} atomic units, above the ceiling of ${filter.maxAmount.toString(10)}`;\n }\n return undefined;\n}\n"]}
1
+ {"version":3,"file":"wire.js","sourceRoot":"","sources":["../../src/x402/wire.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The x402 V2 wire format, as this package reads and writes it.\n *\n * x402 is the prepaid model: a resource server answers `402` with a\n * `PAYMENT-REQUIRED` header naming what it accepts, the client signs a payment\n * and repeats the request with `PAYMENT-SIGNATURE`, and the server returns the\n * resource with `PAYMENT-RESPONSE` once a facilitator has settled it on chain.\n * Tab is the opposite model, and the two meet in exactly two places: a Tab\n * Service that has refused an Agent on credit can offer x402 as the way to pay\n * for that one call, and a Tab Service can front an x402 upstream and buy on the\n * Agent's behalf. This module is the shared vocabulary for both.\n *\n * ## What is official and what is not\n *\n * The types and the three header codecs come from `@x402/core`, the official\n * implementation, so a `PaymentRequired` built here is what an x402 client\n * elsewhere decodes and a `PaymentPayload` decoded here is what one sent. The\n * codecs throw on malformed input; every wrapper below turns that into a\n * `Result`, because nothing exported from this package throws.\n *\n * {@link selectExactRequirement} is this package's own: which of a server's\n * `accepts` an Agent can actually sign. It is narrow on purpose. The only\n * scheme signed here is `exact` with the EIP-3009 asset transfer method, the\n * default the exact EVM scheme names, and the only networks are `eip155:*`.\n *\n * Specification: x402-specification-v2.md sections 5 and 11.1, transports-v2/http.md.\n */\n\nimport {\n decodePaymentRequiredHeader,\n decodePaymentResponseHeader,\n decodePaymentSignatureHeader,\n encodePaymentRequiredHeader,\n encodePaymentResponseHeader,\n encodePaymentSignatureHeader,\n} from \"@x402/core/http\";\nimport type {\n Network,\n PaymentPayload,\n PaymentRequired,\n PaymentRequirements,\n ResourceInfo,\n SettleResponse,\n SupportedResponse,\n VerifyResponse,\n} from \"@x402/core/types\";\nimport { causeOf, isAddress, ok, wrapSync, type Address, type Result } from \"../_shared/index.js\";\n\nimport { validationError } from \"../errors.js\";\nimport { headerReaderOf, type HeaderReader, type HeaderRecord } from \"../http/headers.js\";\n\nexport type {\n Network,\n PaymentPayload,\n PaymentRequired,\n PaymentRequirements,\n ResourceInfo,\n SettleResponse,\n SupportedResponse,\n VerifyResponse,\n};\n\n/** The protocol version this package speaks. V1 is not read and not written. */\nexport const X402_VERSION = 2 as const;\n\n/** The three transport headers, in the casing the HTTP transport specification uses. */\nexport const X402_HEADER = {\n paymentRequired: \"PAYMENT-REQUIRED\",\n paymentSignature: \"PAYMENT-SIGNATURE\",\n paymentResponse: \"PAYMENT-RESPONSE\",\n} as const;\n\n/** The `exact` scheme, the only one this package signs. */\nexport const X402_SCHEME_EXACT = \"exact\" as const;\n\n/** The asset transfer method this package signs: `transferWithAuthorization`. */\nexport const X402_TRANSFER_METHOD_EIP3009 = \"eip3009\" as const;\n\n/** The CAIP-2 network for an EVM chain id. */\nexport const networkOf = (chainId: bigint | number): Network => `eip155:${chainId.toString()}`;\n\n/** The EVM chain id a CAIP-2 network names, or an error for anything that is not `eip155:<id>`. */\nexport function chainIdOfNetwork(network: string): Result<bigint> {\n const match = /^eip155:([0-9]+)$/.exec(network.trim());\n if (match === null || match[1] === undefined) {\n return validationError(\n \"X402_NETWORK_UNSUPPORTED\",\n `\\`${network}\\` is not an EVM network; this package signs on eip155:<chainId> alone`,\n { details: { network } },\n );\n }\n return ok(BigInt(match[1]));\n}\n\nconst decodeFailed = (header: string, code: string) => (error: unknown) => ({\n category: \"VALIDATION\" as const,\n code,\n message: `${header} does not decode to the x402 object it should carry: base64 of a JSON document`,\n retryable: false,\n details: { header },\n cause: causeOf(error),\n});\n\n/** Decodes a `PAYMENT-REQUIRED` header value. */\nexport const decodePaymentRequired = (value: string): Result<PaymentRequired> =>\n wrapSync(() => decodePaymentRequiredHeader(value), decodeFailed(X402_HEADER.paymentRequired, \"X402_PAYMENT_REQUIRED_INVALID\"));\n\n/** Decodes a `PAYMENT-SIGNATURE` header value. */\nexport const decodePaymentSignature = (value: string): Result<PaymentPayload> =>\n wrapSync(() => decodePaymentSignatureHeader(value), decodeFailed(X402_HEADER.paymentSignature, \"X402_PAYMENT_SIGNATURE_INVALID\"));\n\n/** Decodes a `PAYMENT-RESPONSE` header value. */\nexport const decodePaymentResponse = (value: string): Result<SettleResponse> =>\n wrapSync(() => decodePaymentResponseHeader(value), decodeFailed(X402_HEADER.paymentResponse, \"X402_PAYMENT_RESPONSE_INVALID\"));\n\nconst encodeFailed = (header: string, code: string) => (error: unknown) => ({\n category: \"VALIDATION\" as const,\n code,\n message: `${header} could not be encoded; the object is not serialisable`,\n retryable: false,\n details: { header },\n cause: causeOf(error),\n});\n\n/** Encodes a `PaymentRequired` as the `PAYMENT-REQUIRED` header value. */\nexport const encodePaymentRequired = (required: PaymentRequired): Result<string> =>\n wrapSync(() => encodePaymentRequiredHeader(required), encodeFailed(X402_HEADER.paymentRequired, \"X402_PAYMENT_REQUIRED_INVALID\"));\n\n/** Encodes a `PaymentPayload` as the `PAYMENT-SIGNATURE` header value. */\nexport const encodePaymentSignature = (payload: PaymentPayload): Result<string> =>\n wrapSync(() => encodePaymentSignatureHeader(payload), encodeFailed(X402_HEADER.paymentSignature, \"X402_PAYMENT_SIGNATURE_INVALID\"));\n\n/** Encodes a `SettleResponse` as the `PAYMENT-RESPONSE` header value. */\nexport const encodePaymentResponse = (settlement: SettleResponse): Result<string> =>\n wrapSync(() => encodePaymentResponseHeader(settlement), encodeFailed(X402_HEADER.paymentResponse, \"X402_PAYMENT_RESPONSE_INVALID\"));\n\n/** Reads one header, tolerating a reader that throws. */\nfunction read(headers: HeaderReader, name: string): string | undefined {\n try {\n const value = headers.get(name);\n if (typeof value !== \"string\") return undefined;\n const trimmed = value.trim();\n return trimmed.length === 0 ? undefined : trimmed;\n } catch {\n return undefined;\n }\n}\n\n/**\n * The `PaymentRequired` a response carries, `ok(undefined)` when it carries none.\n *\n * Absence is not an error: a Tab `402` without this header is an ordinary credit\n * decision, and a `200` never carries one.\n */\nexport function readPaymentRequired(source: HeaderReader | HeaderRecord): Result<PaymentRequired | undefined> {\n const raw = read(headerReaderOf(source), X402_HEADER.paymentRequired);\n if (raw === undefined) return ok(undefined);\n const decoded = decodePaymentRequired(raw);\n if (!decoded.ok) return decoded;\n return validatePaymentRequired(decoded.value);\n}\n\n/** The `PaymentPayload` a request carries, `ok(undefined)` when it carries none. */\nexport function readPaymentSignature(source: HeaderReader | HeaderRecord): Result<PaymentPayload | undefined> {\n const raw = read(headerReaderOf(source), X402_HEADER.paymentSignature);\n if (raw === undefined) return ok(undefined);\n const decoded = decodePaymentSignature(raw);\n if (!decoded.ok) return decoded;\n return validatePaymentPayload(decoded.value);\n}\n\n/** The `SettleResponse` a response carries, `ok(undefined)` when it carries none. */\nexport function readPaymentResponse(source: HeaderReader | HeaderRecord): Result<SettleResponse | undefined> {\n const raw = read(headerReaderOf(source), X402_HEADER.paymentResponse);\n if (raw === undefined) return ok(undefined);\n const decoded = decodePaymentResponse(raw);\n if (!decoded.ok) return decoded;\n return ok(decoded.value);\n}\n\n/**\n * The shape check the codec does not do.\n *\n * `@x402/core`'s decoder parses JSON and nothing more, so a header carrying\n * `{\"x402Version\":2}` decodes without complaint. The fields checked here are\n * the ones the rest of this package reads, and a document missing one is\n * refused by name rather than dereferenced.\n */\nexport function validatePaymentRequired(value: unknown): Result<PaymentRequired> {\n if (typeof value !== \"object\" || value === null) {\n return validationError(\"X402_PAYMENT_REQUIRED_INVALID\", \"PaymentRequired must be an object\");\n }\n const candidate = value as Partial<PaymentRequired>;\n if (candidate.x402Version !== X402_VERSION) {\n return validationError(\n \"X402_VERSION_UNSUPPORTED\",\n `PaymentRequired carries x402Version ${String(candidate.x402Version)}; this package speaks version ${X402_VERSION} alone`,\n { details: { x402Version: String(candidate.x402Version) } },\n );\n }\n if (typeof candidate.resource !== \"object\" || candidate.resource === null || typeof candidate.resource.url !== \"string\") {\n return validationError(\"X402_PAYMENT_REQUIRED_INVALID\", \"PaymentRequired.resource.url must be a string\");\n }\n if (!Array.isArray(candidate.accepts) || candidate.accepts.length === 0) {\n return validationError(\"X402_PAYMENT_REQUIRED_INVALID\", \"PaymentRequired.accepts must be a non-empty array\");\n }\n for (const [index, entry] of candidate.accepts.entries()) {\n const checked = validatePaymentRequirements(entry, `accepts[${index}]`);\n if (!checked.ok) return checked;\n }\n return ok(candidate as PaymentRequired);\n}\n\n/** Checks one `PaymentRequirements` object field by field. */\nexport function validatePaymentRequirements(value: unknown, label = \"PaymentRequirements\"): Result<PaymentRequirements> {\n if (typeof value !== \"object\" || value === null) {\n return validationError(\"X402_REQUIREMENTS_INVALID\", `${label} must be an object`);\n }\n const candidate = value as Partial<PaymentRequirements>;\n for (const field of [\"scheme\", \"network\", \"amount\", \"asset\", \"payTo\"] as const) {\n if (typeof candidate[field] !== \"string\" || candidate[field].length === 0) {\n return validationError(\"X402_REQUIREMENTS_INVALID\", `${label}.${field} must be a non-empty string`, {\n details: { field },\n });\n }\n }\n if (!/^[0-9]+$/.test(candidate.amount as string)) {\n return validationError(\n \"X402_REQUIREMENTS_INVALID\",\n `${label}.amount must be a decimal integer of atomic units, received \\`${String(candidate.amount)}\\``,\n { details: { field: \"amount\" } },\n );\n }\n if (typeof candidate.maxTimeoutSeconds !== \"number\" || !Number.isFinite(candidate.maxTimeoutSeconds) || candidate.maxTimeoutSeconds <= 0) {\n return validationError(\"X402_REQUIREMENTS_INVALID\", `${label}.maxTimeoutSeconds must be a positive number`, {\n details: { field: \"maxTimeoutSeconds\" },\n });\n }\n if (candidate.extra !== undefined && (typeof candidate.extra !== \"object\" || candidate.extra === null)) {\n return validationError(\"X402_REQUIREMENTS_INVALID\", `${label}.extra must be an object when present`, {\n details: { field: \"extra\" },\n });\n }\n return ok({ ...candidate, extra: candidate.extra ?? {} } as PaymentRequirements);\n}\n\n/** Checks a decoded `PaymentPayload` down to the EIP-3009 fields the server reads. */\nexport function validatePaymentPayload(value: unknown): Result<PaymentPayload> {\n if (typeof value !== \"object\" || value === null) {\n return validationError(\"X402_PAYMENT_SIGNATURE_INVALID\", \"PaymentPayload must be an object\");\n }\n const candidate = value as Partial<PaymentPayload>;\n if (candidate.x402Version !== X402_VERSION) {\n return validationError(\n \"X402_VERSION_UNSUPPORTED\",\n `PaymentPayload carries x402Version ${String(candidate.x402Version)}; this package speaks version ${X402_VERSION} alone`,\n { details: { x402Version: String(candidate.x402Version) } },\n );\n }\n const accepted = validatePaymentRequirements(candidate.accepted, \"PaymentPayload.accepted\");\n if (!accepted.ok) return accepted;\n if (typeof candidate.payload !== \"object\" || candidate.payload === null) {\n return validationError(\"X402_PAYMENT_SIGNATURE_INVALID\", \"PaymentPayload.payload must be an object\");\n }\n return ok({ ...candidate, accepted: accepted.value } as PaymentPayload);\n}\n\n/** How {@link selectExactRequirement} narrows a server's `accepts`. */\nexport interface RequirementFilter {\n /** Accept only this chain. Omitted accepts any `eip155:*` network. */\n readonly chainId?: bigint;\n /** Accept only this token, compared case-insensitively. Omitted accepts any. */\n readonly asset?: Address;\n /** Refuse a requirement above this many atomic units. Omitted sets no ceiling. */\n readonly maxAmount?: bigint;\n}\n\n/** Why one `accepts` entry was passed over, for the error when none is usable. */\ninterface Skipped {\n readonly index: number;\n readonly reason: string;\n}\n\n/**\n * The first `accepts` entry this package can sign, in the server's order.\n *\n * The server's order is its preference and is kept. An entry is passed over\n * when it is not `exact`, not on an EVM chain, names a transfer method other\n * than EIP-3009, declares a payment flow other than `authorization`, or fails\n * the caller's filter. Every reason is carried on the error when nothing\n * matches, because \"no usable requirement\" is not actionable and \"the server\n * accepts Base only and this Agent signs on Monad\" is.\n */\nexport function selectExactRequirement(\n required: PaymentRequired,\n filter: RequirementFilter = {},\n): Result<PaymentRequirements> {\n const skipped: Skipped[] = [];\n for (const [index, entry] of required.accepts.entries()) {\n const reason = disqualify(entry, filter);\n if (reason === undefined) return ok(entry);\n skipped.push({ index, reason });\n }\n return validationError(\n \"X402_NO_USABLE_REQUIREMENT\",\n `none of the ${required.accepts.length} payment options for ${required.resource.url} can be signed here: ${skipped\n .map((entry) => `accepts[${entry.index}] ${entry.reason}`)\n .join(\"; \")}`,\n {\n details: {\n url: required.resource.url,\n options: required.accepts.length,\n ...(filter.chainId === undefined ? {} : { chainId: filter.chainId.toString(10) }),\n ...(filter.asset === undefined ? {} : { asset: filter.asset.toLowerCase() }),\n },\n },\n );\n}\n\nfunction disqualify(entry: PaymentRequirements, filter: RequirementFilter): string | undefined {\n if (entry.scheme !== X402_SCHEME_EXACT) return `uses scheme \\`${entry.scheme}\\`, and only \\`exact\\` is signed here`;\n const chainId = chainIdOfNetwork(entry.network);\n if (!chainId.ok) return `is on \\`${entry.network}\\`, which is not an EVM network`;\n if (filter.chainId !== undefined && chainId.value !== filter.chainId) {\n return `is on chain ${chainId.value.toString(10)} and the signer is on chain ${filter.chainId.toString(10)}`;\n }\n const method = entry.extra?.[\"assetTransferMethod\"];\n if (method !== undefined && method !== X402_TRANSFER_METHOD_EIP3009) {\n return `needs asset transfer method \\`${String(method)}\\`, and only \\`${X402_TRANSFER_METHOD_EIP3009}\\` is signed here`;\n }\n const flow = entry.extra?.[\"paymentFlow\"];\n if (flow !== undefined && flow !== \"authorization\") {\n return `declares payment flow \\`${String(flow)}\\`, and only \\`authorization\\` is signed here`;\n }\n if (!isAddress(entry.asset)) return `names asset \\`${entry.asset}\\`, which is not a 20-byte address`;\n if (filter.asset !== undefined && entry.asset.toLowerCase() !== filter.asset.toLowerCase()) {\n return `is priced in ${entry.asset.toLowerCase()} and the signer pays in ${filter.asset.toLowerCase()}`;\n }\n if (!isAddress(entry.payTo)) return `names payTo \\`${entry.payTo}\\`, which is not a 20-byte address`;\n if (typeof entry.extra?.[\"name\"] !== \"string\" || typeof entry.extra?.[\"version\"] !== \"string\") {\n return \"carries no EIP-712 domain name and version in extra, which EIP-3009 signing needs\";\n }\n if (filter.maxAmount !== undefined && BigInt(entry.amount) > filter.maxAmount) {\n return `asks ${entry.amount} atomic units, above the ceiling of ${filter.maxAmount.toString(10)}`;\n }\n return undefined;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tabai/sdk",
3
- "version": "0.2.2",
3
+ "version": "0.2.4",
4
4
  "description": "Post-paid billing for autonomous agents on Monad. MCP server, CLI and TypeScript SDK: call a priced tool now, settle in USDC later, and let TabSettlement apply the payment to the tab in the same transaction.",
5
5
  "keywords": [
6
6
  "monad",