mppx 0.8.17 → 0.8.19

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 (914) hide show
  1. package/CHANGELOG.md +61 -0
  2. package/README.md +15 -0
  3. package/dist/Challenge.js +21 -4
  4. package/dist/bin.js +3 -3
  5. package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
  6. package/dist/cli/cli.js +253 -1505
  7. package/dist/cli/plugins/index.js +19 -5
  8. package/dist/cli/plugins/tempo.js +7 -3
  9. package/dist/cli/sessions/Manager.js +7 -4
  10. package/dist/cli/sessions/request.d.ts +2 -0
  11. package/dist/cli/sessions/request.js +18 -0
  12. package/dist/cli/sessions/store.js +28 -14
  13. package/dist/discovery/Discovery.js +2 -1
  14. package/dist/evm/client/Charge.js +8 -0
  15. package/dist/server/core.d.ts +9 -0
  16. package/dist/server/core.js +9 -0
  17. package/dist/stripe/server/Charge.js +2 -4
  18. package/dist/stripe/server/Methods.d.ts +2 -2
  19. package/dist/stripe/server/Methods.js +17 -11
  20. package/dist/stripe/server/internal/html.gen.d.ts +1 -1
  21. package/dist/stripe/server/internal/html.gen.js +1 -1
  22. package/dist/stripe/server/spt.d.ts +8 -0
  23. package/dist/stripe/server/spt.js +8 -0
  24. package/dist/tempo/Methods.d.ts +13 -0
  25. package/dist/tempo/Methods.js +14 -3
  26. package/dist/tempo/client/Charge.d.ts +3 -0
  27. package/dist/tempo/client/Charge.js +31 -9
  28. package/dist/tempo/client/Methods.d.ts +13 -0
  29. package/dist/tempo/internal/defaults.d.ts +11 -0
  30. package/dist/tempo/internal/defaults.js +11 -0
  31. package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
  32. package/dist/tempo/internal/machine-token-charge.js +113 -0
  33. package/dist/tempo/internal/machine-token-session.d.ts +88 -0
  34. package/dist/tempo/internal/machine-token-session.js +173 -0
  35. package/dist/tempo/internal/signature-envelope.d.ts +14 -0
  36. package/dist/tempo/internal/signature-envelope.js +28 -0
  37. package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
  38. package/dist/tempo/legacy/client/ChannelOps.js +11 -5
  39. package/dist/tempo/legacy/client/Session.d.ts +13 -1
  40. package/dist/tempo/legacy/client/Session.js +3 -3
  41. package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
  42. package/dist/tempo/legacy/client/SessionManager.js +2 -0
  43. package/dist/tempo/server/Charge.d.ts +3 -0
  44. package/dist/tempo/server/Charge.js +58 -17
  45. package/dist/tempo/server/Methods.d.ts +21 -4
  46. package/dist/tempo/server/Methods.js +8 -4
  47. package/dist/tempo/server/internal/html.gen.d.ts +1 -1
  48. package/dist/tempo/server/internal/html.gen.js +1 -1
  49. package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
  50. package/dist/tempo/session/client/ChannelOps.js +35 -6
  51. package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
  52. package/dist/tempo/session/client/ChannelStore.js +2 -2
  53. package/dist/tempo/session/client/CredentialState.d.ts +17 -2
  54. package/dist/tempo/session/client/CredentialState.js +77 -76
  55. package/dist/tempo/session/client/Runtime.d.ts +4 -2
  56. package/dist/tempo/session/client/Runtime.js +21 -5
  57. package/dist/tempo/session/client/Session.d.ts +15 -3
  58. package/dist/tempo/session/client/Session.js +186 -63
  59. package/dist/tempo/session/client/SessionManager.d.ts +3 -1
  60. package/dist/tempo/session/client/SessionManager.js +35 -11
  61. package/dist/tempo/session/client/Transports.d.ts +2 -0
  62. package/dist/tempo/session/client/Transports.js +12 -2
  63. package/dist/tempo/session/precompile/Chain.d.ts +10 -2
  64. package/dist/tempo/session/precompile/Chain.js +51 -10
  65. package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
  66. package/dist/tempo/session/precompile/Protocol.js +7 -0
  67. package/dist/tempo/session/precompile/Voucher.d.ts +3 -1
  68. package/dist/tempo/session/precompile/Voucher.js +6 -12
  69. package/dist/tempo/session/server/ChannelStore.d.ts +6 -0
  70. package/dist/tempo/session/server/ChannelStore.js +11 -4
  71. package/dist/tempo/session/server/CredentialVerification.d.ts +11 -9
  72. package/dist/tempo/session/server/CredentialVerification.js +185 -109
  73. package/dist/tempo/session/server/MeteredStream.d.ts +1 -1
  74. package/dist/tempo/session/server/MeteredStream.js +5 -4
  75. package/dist/tempo/session/server/RequestState.d.ts +19 -0
  76. package/dist/tempo/session/server/RequestState.js +61 -15
  77. package/dist/tempo/session/server/Session.d.ts +14 -2
  78. package/dist/tempo/session/server/Session.js +37 -6
  79. package/dist/tempo/session/server/Settlement.d.ts +11 -4
  80. package/dist/tempo/session/server/Settlement.js +53 -21
  81. package/dist/x402/client/Exact.d.ts +8 -0
  82. package/dist/x402/client/Exact.js +40 -10
  83. package/dist/x402/server/EvmCharge.d.ts +22 -0
  84. package/dist/x402/server/EvmCharge.js +23 -1
  85. package/package.json +15 -37
  86. package/dist/BodyDigest.d.ts.map +0 -1
  87. package/dist/BodyDigest.js.map +0 -1
  88. package/dist/Challenge.d.ts.map +0 -1
  89. package/dist/Challenge.js.map +0 -1
  90. package/dist/Constants.d.ts.map +0 -1
  91. package/dist/Constants.js.map +0 -1
  92. package/dist/Credential.d.ts.map +0 -1
  93. package/dist/Credential.js.map +0 -1
  94. package/dist/Errors.d.ts.map +0 -1
  95. package/dist/Errors.js.map +0 -1
  96. package/dist/Expires.d.ts.map +0 -1
  97. package/dist/Expires.js.map +0 -1
  98. package/dist/Html.d.ts.map +0 -1
  99. package/dist/Html.js.map +0 -1
  100. package/dist/Mcp.d.ts.map +0 -1
  101. package/dist/Mcp.js.map +0 -1
  102. package/dist/Method.d.ts.map +0 -1
  103. package/dist/Method.js.map +0 -1
  104. package/dist/PaymentRequest.d.ts.map +0 -1
  105. package/dist/PaymentRequest.js.map +0 -1
  106. package/dist/Receipt.d.ts.map +0 -1
  107. package/dist/Receipt.js.map +0 -1
  108. package/dist/Store.d.ts.map +0 -1
  109. package/dist/Store.js.map +0 -1
  110. package/dist/attestation/Client.d.ts.map +0 -1
  111. package/dist/attestation/Client.js.map +0 -1
  112. package/dist/attestation/Constants.d.ts.map +0 -1
  113. package/dist/attestation/Constants.js.map +0 -1
  114. package/dist/attestation/Server.d.ts.map +0 -1
  115. package/dist/attestation/Server.js.map +0 -1
  116. package/dist/attestation/Types.d.ts.map +0 -1
  117. package/dist/attestation/Types.js.map +0 -1
  118. package/dist/attestation/index.d.ts.map +0 -1
  119. package/dist/attestation/index.js.map +0 -1
  120. package/dist/attestation/internal/HttpMessageSignature.d.ts.map +0 -1
  121. package/dist/attestation/internal/HttpMessageSignature.js.map +0 -1
  122. package/dist/attestation/internal/SigningContext.d.ts.map +0 -1
  123. package/dist/attestation/internal/SigningContext.js.map +0 -1
  124. package/dist/bin.d.ts.map +0 -1
  125. package/dist/bin.js.map +0 -1
  126. package/dist/cli/account.d.ts.map +0 -1
  127. package/dist/cli/account.js.map +0 -1
  128. package/dist/cli/cli.d.ts.map +0 -1
  129. package/dist/cli/cli.js.map +0 -1
  130. package/dist/cli/config.d.ts.map +0 -1
  131. package/dist/cli/config.js.map +0 -1
  132. package/dist/cli/internal.d.ts.map +0 -1
  133. package/dist/cli/internal.js.map +0 -1
  134. package/dist/cli/plugins/evm.d.ts.map +0 -1
  135. package/dist/cli/plugins/evm.js.map +0 -1
  136. package/dist/cli/plugins/index.d.ts.map +0 -1
  137. package/dist/cli/plugins/index.js.map +0 -1
  138. package/dist/cli/plugins/plugin.d.ts.map +0 -1
  139. package/dist/cli/plugins/plugin.js.map +0 -1
  140. package/dist/cli/plugins/stripe.d.ts.map +0 -1
  141. package/dist/cli/plugins/stripe.js.map +0 -1
  142. package/dist/cli/plugins/tempo.d.ts.map +0 -1
  143. package/dist/cli/plugins/tempo.js.map +0 -1
  144. package/dist/cli/sessions/Manager.d.ts.map +0 -1
  145. package/dist/cli/sessions/Manager.js.map +0 -1
  146. package/dist/cli/sessions/commands.d.ts.map +0 -1
  147. package/dist/cli/sessions/commands.js.map +0 -1
  148. package/dist/cli/sessions/request.d.ts.map +0 -1
  149. package/dist/cli/sessions/request.js.map +0 -1
  150. package/dist/cli/sessions/store.d.ts.map +0 -1
  151. package/dist/cli/sessions/store.js.map +0 -1
  152. package/dist/cli/utils.d.ts.map +0 -1
  153. package/dist/cli/utils.js.map +0 -1
  154. package/dist/cli/validate/challenge.d.ts.map +0 -1
  155. package/dist/cli/validate/challenge.js.map +0 -1
  156. package/dist/cli/validate/discovery.d.ts.map +0 -1
  157. package/dist/cli/validate/discovery.js.map +0 -1
  158. package/dist/cli/validate/helpers.d.ts.map +0 -1
  159. package/dist/cli/validate/helpers.js.map +0 -1
  160. package/dist/cli/validate/index.d.ts.map +0 -1
  161. package/dist/cli/validate/index.js.map +0 -1
  162. package/dist/cli/validate/messages.d.ts.map +0 -1
  163. package/dist/cli/validate/messages.js.map +0 -1
  164. package/dist/cli/validate/payment.d.ts.map +0 -1
  165. package/dist/cli/validate/payment.js.map +0 -1
  166. package/dist/client/Methods.d.ts.map +0 -1
  167. package/dist/client/Methods.js.map +0 -1
  168. package/dist/client/Mppx.d.ts.map +0 -1
  169. package/dist/client/Mppx.js.map +0 -1
  170. package/dist/client/Transport.d.ts.map +0 -1
  171. package/dist/client/Transport.js.map +0 -1
  172. package/dist/client/index.d.ts.map +0 -1
  173. package/dist/client/index.js.map +0 -1
  174. package/dist/client/internal/Fetch.d.ts.map +0 -1
  175. package/dist/client/internal/Fetch.js.map +0 -1
  176. package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
  177. package/dist/client/internal/MethodChallenge.js.map +0 -1
  178. package/dist/client/internal/MethodResponse.d.ts.map +0 -1
  179. package/dist/client/internal/MethodResponse.js.map +0 -1
  180. package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
  181. package/dist/client/internal/protocols/Mcp.js.map +0 -1
  182. package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
  183. package/dist/client/internal/protocols/Mpp.js.map +0 -1
  184. package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
  185. package/dist/client/internal/protocols/Protocol.js.map +0 -1
  186. package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
  187. package/dist/client/internal/protocols/Shared.js.map +0 -1
  188. package/dist/client/internal/protocols/X402.d.ts.map +0 -1
  189. package/dist/client/internal/protocols/X402.js.map +0 -1
  190. package/dist/client/node.d.ts.map +0 -1
  191. package/dist/client/node.js.map +0 -1
  192. package/dist/discovery/Discovery.d.ts.map +0 -1
  193. package/dist/discovery/Discovery.js.map +0 -1
  194. package/dist/discovery/OpenApi.d.ts.map +0 -1
  195. package/dist/discovery/OpenApi.js.map +0 -1
  196. package/dist/discovery/Validate.d.ts.map +0 -1
  197. package/dist/discovery/Validate.js.map +0 -1
  198. package/dist/discovery/index.d.ts.map +0 -1
  199. package/dist/discovery/index.js.map +0 -1
  200. package/dist/discovery/internal/Metadata.d.ts.map +0 -1
  201. package/dist/discovery/internal/Metadata.js.map +0 -1
  202. package/dist/evm/Assets.d.ts.map +0 -1
  203. package/dist/evm/Assets.js.map +0 -1
  204. package/dist/evm/Chains.d.ts.map +0 -1
  205. package/dist/evm/Chains.js.map +0 -1
  206. package/dist/evm/Methods.d.ts.map +0 -1
  207. package/dist/evm/Methods.js.map +0 -1
  208. package/dist/evm/Types.d.ts.map +0 -1
  209. package/dist/evm/Types.js.map +0 -1
  210. package/dist/evm/client/Charge.d.ts.map +0 -1
  211. package/dist/evm/client/Charge.js.map +0 -1
  212. package/dist/evm/client/Methods.d.ts.map +0 -1
  213. package/dist/evm/client/Methods.js.map +0 -1
  214. package/dist/evm/client/index.d.ts.map +0 -1
  215. package/dist/evm/client/index.js.map +0 -1
  216. package/dist/evm/index.d.ts.map +0 -1
  217. package/dist/evm/index.js.map +0 -1
  218. package/dist/evm/server/Charge.d.ts.map +0 -1
  219. package/dist/evm/server/Charge.js.map +0 -1
  220. package/dist/evm/server/Methods.d.ts.map +0 -1
  221. package/dist/evm/server/Methods.js.map +0 -1
  222. package/dist/evm/server/index.d.ts.map +0 -1
  223. package/dist/evm/server/index.js.map +0 -1
  224. package/dist/index.d.ts.map +0 -1
  225. package/dist/index.js.map +0 -1
  226. package/dist/internal/AcceptPayment.d.ts.map +0 -1
  227. package/dist/internal/AcceptPayment.js.map +0 -1
  228. package/dist/internal/HeaderCodec.d.ts.map +0 -1
  229. package/dist/internal/HeaderCodec.js.map +0 -1
  230. package/dist/internal/constantTimeEqual.d.ts.map +0 -1
  231. package/dist/internal/constantTimeEqual.js.map +0 -1
  232. package/dist/internal/env.d.ts.map +0 -1
  233. package/dist/internal/env.js.map +0 -1
  234. package/dist/internal/types.d.ts.map +0 -1
  235. package/dist/internal/types.js.map +0 -1
  236. package/dist/mcp/client/McpClient.d.ts.map +0 -1
  237. package/dist/mcp/client/McpClient.js.map +0 -1
  238. package/dist/mcp/client/index.d.ts.map +0 -1
  239. package/dist/mcp/client/index.js.map +0 -1
  240. package/dist/mcp/server/Transport.d.ts.map +0 -1
  241. package/dist/mcp/server/Transport.js.map +0 -1
  242. package/dist/mcp/server/index.d.ts.map +0 -1
  243. package/dist/mcp/server/index.js.map +0 -1
  244. package/dist/middlewares/elysia.d.ts.map +0 -1
  245. package/dist/middlewares/elysia.js.map +0 -1
  246. package/dist/middlewares/express.d.ts.map +0 -1
  247. package/dist/middlewares/express.js.map +0 -1
  248. package/dist/middlewares/hono.d.ts.map +0 -1
  249. package/dist/middlewares/hono.js.map +0 -1
  250. package/dist/middlewares/internal/mppx.d.ts.map +0 -1
  251. package/dist/middlewares/internal/mppx.js.map +0 -1
  252. package/dist/middlewares/nextjs.d.ts.map +0 -1
  253. package/dist/middlewares/nextjs.js.map +0 -1
  254. package/dist/proxy/Proxy.d.ts.map +0 -1
  255. package/dist/proxy/Proxy.js.map +0 -1
  256. package/dist/proxy/Service.d.ts.map +0 -1
  257. package/dist/proxy/Service.js.map +0 -1
  258. package/dist/proxy/index.d.ts.map +0 -1
  259. package/dist/proxy/index.js.map +0 -1
  260. package/dist/proxy/internal/Headers.d.ts.map +0 -1
  261. package/dist/proxy/internal/Headers.js.map +0 -1
  262. package/dist/proxy/internal/Route.d.ts.map +0 -1
  263. package/dist/proxy/internal/Route.js.map +0 -1
  264. package/dist/proxy/services/anthropic.d.ts.map +0 -1
  265. package/dist/proxy/services/anthropic.js.map +0 -1
  266. package/dist/proxy/services/openai.d.ts.map +0 -1
  267. package/dist/proxy/services/openai.js.map +0 -1
  268. package/dist/proxy/services/stripe.d.ts.map +0 -1
  269. package/dist/proxy/services/stripe.js.map +0 -1
  270. package/dist/server/Methods.d.ts.map +0 -1
  271. package/dist/server/Methods.js.map +0 -1
  272. package/dist/server/Mppx.d.ts.map +0 -1
  273. package/dist/server/Mppx.js.map +0 -1
  274. package/dist/server/NodeListener.d.ts.map +0 -1
  275. package/dist/server/NodeListener.js.map +0 -1
  276. package/dist/server/Request.d.ts.map +0 -1
  277. package/dist/server/Request.js.map +0 -1
  278. package/dist/server/Response.d.ts.map +0 -1
  279. package/dist/server/Response.js.map +0 -1
  280. package/dist/server/Transport.d.ts.map +0 -1
  281. package/dist/server/Transport.js.map +0 -1
  282. package/dist/server/index.d.ts.map +0 -1
  283. package/dist/server/index.js.map +0 -1
  284. package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
  285. package/dist/server/internal/html/compose.main.gen.js.map +0 -1
  286. package/dist/server/internal/html/config.d.ts.map +0 -1
  287. package/dist/server/internal/html/config.js.map +0 -1
  288. package/dist/server/internal/html/constants.d.ts.map +0 -1
  289. package/dist/server/internal/html/constants.js.map +0 -1
  290. package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
  291. package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
  292. package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
  293. package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
  294. package/dist/server/internal/scope.d.ts.map +0 -1
  295. package/dist/server/internal/scope.js.map +0 -1
  296. package/dist/stripe/Methods.d.ts.map +0 -1
  297. package/dist/stripe/Methods.js.map +0 -1
  298. package/dist/stripe/client/Charge.d.ts.map +0 -1
  299. package/dist/stripe/client/Charge.js.map +0 -1
  300. package/dist/stripe/client/Methods.d.ts.map +0 -1
  301. package/dist/stripe/client/Methods.js.map +0 -1
  302. package/dist/stripe/client/index.d.ts.map +0 -1
  303. package/dist/stripe/client/index.js.map +0 -1
  304. package/dist/stripe/index.d.ts.map +0 -1
  305. package/dist/stripe/index.js.map +0 -1
  306. package/dist/stripe/internal/constants.d.ts.map +0 -1
  307. package/dist/stripe/internal/constants.js.map +0 -1
  308. package/dist/stripe/internal/types.d.ts.map +0 -1
  309. package/dist/stripe/internal/types.js.map +0 -1
  310. package/dist/stripe/server/Charge.d.ts.map +0 -1
  311. package/dist/stripe/server/Charge.js.map +0 -1
  312. package/dist/stripe/server/Methods.d.ts.map +0 -1
  313. package/dist/stripe/server/Methods.js.map +0 -1
  314. package/dist/stripe/server/index.d.ts.map +0 -1
  315. package/dist/stripe/server/index.js.map +0 -1
  316. package/dist/stripe/server/internal/deposit-address.d.ts.map +0 -1
  317. package/dist/stripe/server/internal/deposit-address.js.map +0 -1
  318. package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
  319. package/dist/stripe/server/internal/html/types.js.map +0 -1
  320. package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
  321. package/dist/stripe/server/internal/html.gen.js.map +0 -1
  322. package/dist/stripe/server/internal/record-payment.d.ts.map +0 -1
  323. package/dist/stripe/server/internal/record-payment.js.map +0 -1
  324. package/dist/stripe/server/internal/request.d.ts.map +0 -1
  325. package/dist/stripe/server/internal/request.js.map +0 -1
  326. package/dist/tap/Constants.d.ts.map +0 -1
  327. package/dist/tap/Constants.js.map +0 -1
  328. package/dist/tap/Types.d.ts.map +0 -1
  329. package/dist/tap/Types.js.map +0 -1
  330. package/dist/tap/client/index.d.ts.map +0 -1
  331. package/dist/tap/client/index.js.map +0 -1
  332. package/dist/tap/index.d.ts.map +0 -1
  333. package/dist/tap/index.js.map +0 -1
  334. package/dist/tap/server/index.d.ts.map +0 -1
  335. package/dist/tap/server/index.js.map +0 -1
  336. package/dist/tempo/Attribution.d.ts.map +0 -1
  337. package/dist/tempo/Attribution.js.map +0 -1
  338. package/dist/tempo/Methods.d.ts.map +0 -1
  339. package/dist/tempo/Methods.js.map +0 -1
  340. package/dist/tempo/Proof.d.ts.map +0 -1
  341. package/dist/tempo/Proof.js.map +0 -1
  342. package/dist/tempo/client/Charge.d.ts.map +0 -1
  343. package/dist/tempo/client/Charge.js.map +0 -1
  344. package/dist/tempo/client/Methods.d.ts.map +0 -1
  345. package/dist/tempo/client/Methods.js.map +0 -1
  346. package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
  347. package/dist/tempo/client/ResolveAccount.js.map +0 -1
  348. package/dist/tempo/client/Subscription.d.ts.map +0 -1
  349. package/dist/tempo/client/Subscription.js.map +0 -1
  350. package/dist/tempo/client/index.d.ts.map +0 -1
  351. package/dist/tempo/client/index.js.map +0 -1
  352. package/dist/tempo/index.d.ts.map +0 -1
  353. package/dist/tempo/index.js.map +0 -1
  354. package/dist/tempo/internal/account.d.ts.map +0 -1
  355. package/dist/tempo/internal/account.js.map +0 -1
  356. package/dist/tempo/internal/address.d.ts.map +0 -1
  357. package/dist/tempo/internal/address.js.map +0 -1
  358. package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
  359. package/dist/tempo/internal/auto-swap.js.map +0 -1
  360. package/dist/tempo/internal/charge.d.ts.map +0 -1
  361. package/dist/tempo/internal/charge.js.map +0 -1
  362. package/dist/tempo/internal/defaults.d.ts.map +0 -1
  363. package/dist/tempo/internal/defaults.js.map +0 -1
  364. package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
  365. package/dist/tempo/internal/fee-payer.js.map +0 -1
  366. package/dist/tempo/internal/fee-token.d.ts.map +0 -1
  367. package/dist/tempo/internal/fee-token.js.map +0 -1
  368. package/dist/tempo/internal/proof.d.ts.map +0 -1
  369. package/dist/tempo/internal/proof.js.map +0 -1
  370. package/dist/tempo/internal/selectors.d.ts.map +0 -1
  371. package/dist/tempo/internal/selectors.js.map +0 -1
  372. package/dist/tempo/internal/types.d.ts.map +0 -1
  373. package/dist/tempo/internal/types.js.map +0 -1
  374. package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
  375. package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
  376. package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
  377. package/dist/tempo/legacy/client/Session.js.map +0 -1
  378. package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
  379. package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
  380. package/dist/tempo/legacy/client/index.d.ts.map +0 -1
  381. package/dist/tempo/legacy/client/index.js.map +0 -1
  382. package/dist/tempo/legacy/index.d.ts.map +0 -1
  383. package/dist/tempo/legacy/index.js.map +0 -1
  384. package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
  385. package/dist/tempo/legacy/session/Chain.js.map +0 -1
  386. package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
  387. package/dist/tempo/legacy/session/Channel.js.map +0 -1
  388. package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
  389. package/dist/tempo/legacy/session/Types.js.map +0 -1
  390. package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
  391. package/dist/tempo/legacy/session/Voucher.js.map +0 -1
  392. package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
  393. package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
  394. package/dist/tempo/legacy/session/index.d.ts.map +0 -1
  395. package/dist/tempo/legacy/session/index.js.map +0 -1
  396. package/dist/tempo/server/Charge.d.ts.map +0 -1
  397. package/dist/tempo/server/Charge.js.map +0 -1
  398. package/dist/tempo/server/Methods.d.ts.map +0 -1
  399. package/dist/tempo/server/Methods.js.map +0 -1
  400. package/dist/tempo/server/Relay.d.ts.map +0 -1
  401. package/dist/tempo/server/Relay.js.map +0 -1
  402. package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
  403. package/dist/tempo/server/SponsorBudget.js.map +0 -1
  404. package/dist/tempo/server/Subscription.d.ts.map +0 -1
  405. package/dist/tempo/server/Subscription.js.map +0 -1
  406. package/dist/tempo/server/index.d.ts.map +0 -1
  407. package/dist/tempo/server/index.js.map +0 -1
  408. package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
  409. package/dist/tempo/server/internal/html.gen.js.map +0 -1
  410. package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
  411. package/dist/tempo/server/internal/request-body.js.map +0 -1
  412. package/dist/tempo/server/internal/transport.d.ts.map +0 -1
  413. package/dist/tempo/server/internal/transport.js.map +0 -1
  414. package/dist/tempo/session/Snapshot.d.ts.map +0 -1
  415. package/dist/tempo/session/Snapshot.js.map +0 -1
  416. package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
  417. package/dist/tempo/session/client/ChannelOps.js.map +0 -1
  418. package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
  419. package/dist/tempo/session/client/ChannelStore.js.map +0 -1
  420. package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
  421. package/dist/tempo/session/client/CredentialState.js.map +0 -1
  422. package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
  423. package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
  424. package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
  425. package/dist/tempo/session/client/Runtime.js.map +0 -1
  426. package/dist/tempo/session/client/Session.d.ts.map +0 -1
  427. package/dist/tempo/session/client/Session.js.map +0 -1
  428. package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
  429. package/dist/tempo/session/client/SessionManager.js.map +0 -1
  430. package/dist/tempo/session/client/Transports.d.ts.map +0 -1
  431. package/dist/tempo/session/client/Transports.js.map +0 -1
  432. package/dist/tempo/session/client/index.d.ts.map +0 -1
  433. package/dist/tempo/session/client/index.js.map +0 -1
  434. package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
  435. package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
  436. package/dist/tempo/session/index.d.ts.map +0 -1
  437. package/dist/tempo/session/index.js.map +0 -1
  438. package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
  439. package/dist/tempo/session/precompile/Chain.js.map +0 -1
  440. package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
  441. package/dist/tempo/session/precompile/Channel.js.map +0 -1
  442. package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
  443. package/dist/tempo/session/precompile/Protocol.js.map +0 -1
  444. package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
  445. package/dist/tempo/session/precompile/Voucher.js.map +0 -1
  446. package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
  447. package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
  448. package/dist/tempo/session/precompile/index.d.ts.map +0 -1
  449. package/dist/tempo/session/precompile/index.js.map +0 -1
  450. package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
  451. package/dist/tempo/session/server/ChannelOps.js.map +0 -1
  452. package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
  453. package/dist/tempo/session/server/ChannelStore.js.map +0 -1
  454. package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
  455. package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
  456. package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
  457. package/dist/tempo/session/server/MeteredStream.js.map +0 -1
  458. package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
  459. package/dist/tempo/session/server/RequestState.js.map +0 -1
  460. package/dist/tempo/session/server/Session.d.ts.map +0 -1
  461. package/dist/tempo/session/server/Session.js.map +0 -1
  462. package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
  463. package/dist/tempo/session/server/Settlement.js.map +0 -1
  464. package/dist/tempo/session/server/Sse.d.ts.map +0 -1
  465. package/dist/tempo/session/server/Sse.js.map +0 -1
  466. package/dist/tempo/session/server/Transports.d.ts.map +0 -1
  467. package/dist/tempo/session/server/Transports.js.map +0 -1
  468. package/dist/tempo/session/server/Ws.d.ts.map +0 -1
  469. package/dist/tempo/session/server/Ws.js.map +0 -1
  470. package/dist/tempo/session/server/index.d.ts.map +0 -1
  471. package/dist/tempo/session/server/index.js.map +0 -1
  472. package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
  473. package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
  474. package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
  475. package/dist/tempo/subscription/Receipt.js.map +0 -1
  476. package/dist/tempo/subscription/Store.d.ts.map +0 -1
  477. package/dist/tempo/subscription/Store.js.map +0 -1
  478. package/dist/tempo/subscription/Types.d.ts.map +0 -1
  479. package/dist/tempo/subscription/Types.js.map +0 -1
  480. package/dist/tempo/subscription/index.d.ts.map +0 -1
  481. package/dist/tempo/subscription/index.js.map +0 -1
  482. package/dist/validation/core.d.ts.map +0 -1
  483. package/dist/validation/core.js.map +0 -1
  484. package/dist/validation/index.d.ts.map +0 -1
  485. package/dist/validation/index.js.map +0 -1
  486. package/dist/viem/Account.d.ts.map +0 -1
  487. package/dist/viem/Account.js.map +0 -1
  488. package/dist/viem/Client.d.ts.map +0 -1
  489. package/dist/viem/Client.js.map +0 -1
  490. package/dist/web-bot-auth/Constants.d.ts.map +0 -1
  491. package/dist/web-bot-auth/Constants.js.map +0 -1
  492. package/dist/web-bot-auth/Types.d.ts.map +0 -1
  493. package/dist/web-bot-auth/Types.js.map +0 -1
  494. package/dist/web-bot-auth/client/index.d.ts.map +0 -1
  495. package/dist/web-bot-auth/client/index.js.map +0 -1
  496. package/dist/web-bot-auth/index.d.ts.map +0 -1
  497. package/dist/web-bot-auth/index.js.map +0 -1
  498. package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +0 -1
  499. package/dist/web-bot-auth/internal/JwkThumbprint.js.map +0 -1
  500. package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +0 -1
  501. package/dist/web-bot-auth/internal/SignatureAgent.js.map +0 -1
  502. package/dist/web-bot-auth/server/index.d.ts.map +0 -1
  503. package/dist/web-bot-auth/server/index.js.map +0 -1
  504. package/dist/x402/Assets.d.ts.map +0 -1
  505. package/dist/x402/Assets.js.map +0 -1
  506. package/dist/x402/Header.d.ts.map +0 -1
  507. package/dist/x402/Header.js.map +0 -1
  508. package/dist/x402/Types.d.ts.map +0 -1
  509. package/dist/x402/Types.js.map +0 -1
  510. package/dist/x402/client/Exact.d.ts.map +0 -1
  511. package/dist/x402/client/Exact.js.map +0 -1
  512. package/dist/x402/index.d.ts.map +0 -1
  513. package/dist/x402/index.js.map +0 -1
  514. package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
  515. package/dist/x402/internal/ChallengeBrand.js.map +0 -1
  516. package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
  517. package/dist/x402/internal/RouteBinding.js.map +0 -1
  518. package/dist/x402/server/EvmCharge.d.ts.map +0 -1
  519. package/dist/x402/server/EvmCharge.js.map +0 -1
  520. package/dist/x402/server/Facilitator.d.ts.map +0 -1
  521. package/dist/x402/server/Facilitator.js.map +0 -1
  522. package/dist/zod.d.ts.map +0 -1
  523. package/dist/zod.js.map +0 -1
  524. package/src/BodyDigest.test.ts +0 -43
  525. package/src/BodyDigest.ts +0 -55
  526. package/src/Challenge.fuzz.test.ts +0 -154
  527. package/src/Challenge.test-d.ts +0 -82
  528. package/src/Challenge.test.ts +0 -1060
  529. package/src/Challenge.ts +0 -687
  530. package/src/Constants.ts +0 -58
  531. package/src/Credential.fuzz.test.ts +0 -62
  532. package/src/Credential.test.ts +0 -378
  533. package/src/Credential.ts +0 -217
  534. package/src/Errors.test.ts +0 -520
  535. package/src/Errors.ts +0 -448
  536. package/src/Expires.test.ts +0 -112
  537. package/src/Expires.ts +0 -59
  538. package/src/Html.ts +0 -67
  539. package/src/Mcp.ts +0 -85
  540. package/src/Method.test.ts +0 -177
  541. package/src/Method.ts +0 -631
  542. package/src/PaymentRequest.test.ts +0 -147
  543. package/src/PaymentRequest.ts +0 -108
  544. package/src/Receipt.test.ts +0 -151
  545. package/src/Receipt.ts +0 -146
  546. package/src/Store.test-d.ts +0 -211
  547. package/src/Store.test.ts +0 -407
  548. package/src/Store.ts +0 -397
  549. package/src/attestation/Attestation.integration.test.ts +0 -208
  550. package/src/attestation/Client.test.ts +0 -83
  551. package/src/attestation/Client.ts +0 -34
  552. package/src/attestation/Constants.ts +0 -15
  553. package/src/attestation/Server.test.ts +0 -60
  554. package/src/attestation/Server.ts +0 -12
  555. package/src/attestation/Types.test-d.ts +0 -54
  556. package/src/attestation/Types.ts +0 -77
  557. package/src/attestation/index.ts +0 -5
  558. package/src/attestation/internal/HttpMessageSignature.test.ts +0 -101
  559. package/src/attestation/internal/HttpMessageSignature.ts +0 -429
  560. package/src/attestation/internal/SigningContext.ts +0 -13
  561. package/src/bin.js +0 -2
  562. package/src/bin.ts +0 -4
  563. package/src/cli/account.ts +0 -269
  564. package/src/cli/cli.test.ts +0 -2221
  565. package/src/cli/cli.ts +0 -1650
  566. package/src/cli/config.test.ts +0 -89
  567. package/src/cli/config.ts +0 -50
  568. package/src/cli/internal.ts +0 -114
  569. package/src/cli/mcp.test.ts +0 -262
  570. package/src/cli/plugins/evm.ts +0 -55
  571. package/src/cli/plugins/index.ts +0 -4
  572. package/src/cli/plugins/plugin.ts +0 -84
  573. package/src/cli/plugins/stripe.ts +0 -174
  574. package/src/cli/plugins/tempo.ts +0 -1102
  575. package/src/cli/sessions/Manager.test.ts +0 -249
  576. package/src/cli/sessions/Manager.ts +0 -93
  577. package/src/cli/sessions/commands.ts +0 -444
  578. package/src/cli/sessions/request.test.ts +0 -51
  579. package/src/cli/sessions/request.ts +0 -353
  580. package/src/cli/sessions/store.test.ts +0 -581
  581. package/src/cli/sessions/store.ts +0 -940
  582. package/src/cli/utils.test.ts +0 -156
  583. package/src/cli/utils.ts +0 -394
  584. package/src/cli/validate/challenge.ts +0 -565
  585. package/src/cli/validate/discovery.test.ts +0 -435
  586. package/src/cli/validate/discovery.ts +0 -221
  587. package/src/cli/validate/helpers.ts +0 -166
  588. package/src/cli/validate/index.ts +0 -229
  589. package/src/cli/validate/messages.ts +0 -7
  590. package/src/cli/validate/payment.ts +0 -774
  591. package/src/cli/validate.test.ts +0 -843
  592. package/src/client/Methods.ts +0 -8
  593. package/src/client/Mppx.test-d.ts +0 -287
  594. package/src/client/Mppx.test.ts +0 -1065
  595. package/src/client/Mppx.ts +0 -487
  596. package/src/client/Transport.test.ts +0 -586
  597. package/src/client/Transport.ts +0 -170
  598. package/src/client/index.ts +0 -29
  599. package/src/client/internal/Fetch.browser.test.ts +0 -197
  600. package/src/client/internal/Fetch.test-d.ts +0 -109
  601. package/src/client/internal/Fetch.test.ts +0 -2336
  602. package/src/client/internal/Fetch.ts +0 -1075
  603. package/src/client/internal/MethodChallenge.ts +0 -35
  604. package/src/client/internal/MethodResponse.ts +0 -67
  605. package/src/client/internal/protocols/Mcp.test.ts +0 -220
  606. package/src/client/internal/protocols/Mcp.ts +0 -186
  607. package/src/client/internal/protocols/Mpp.ts +0 -21
  608. package/src/client/internal/protocols/Protocol.ts +0 -10
  609. package/src/client/internal/protocols/Shared.ts +0 -25
  610. package/src/client/internal/protocols/X402.ts +0 -46
  611. package/src/client/node.test.ts +0 -115
  612. package/src/client/node.ts +0 -247
  613. package/src/discovery/Discovery.test.ts +0 -214
  614. package/src/discovery/Discovery.ts +0 -105
  615. package/src/discovery/OpenApi.test.ts +0 -623
  616. package/src/discovery/OpenApi.ts +0 -192
  617. package/src/discovery/Validate.test.ts +0 -305
  618. package/src/discovery/Validate.ts +0 -77
  619. package/src/discovery/index.ts +0 -3
  620. package/src/discovery/internal/Metadata.ts +0 -51
  621. package/src/env.d.ts +0 -12
  622. package/src/evm/Assets.ts +0 -1
  623. package/src/evm/Chains.ts +0 -11
  624. package/src/evm/Methods.ts +0 -44
  625. package/src/evm/PublicInterface.test-d.ts +0 -134
  626. package/src/evm/Types.ts +0 -140
  627. package/src/evm/client/Charge.test.ts +0 -347
  628. package/src/evm/client/Charge.ts +0 -187
  629. package/src/evm/client/Methods.ts +0 -19
  630. package/src/evm/client/index.ts +0 -6
  631. package/src/evm/index.ts +0 -16
  632. package/src/evm/server/Charge.test.ts +0 -339
  633. package/src/evm/server/Charge.ts +0 -295
  634. package/src/evm/server/Methods.ts +0 -22
  635. package/src/evm/server/index.ts +0 -6
  636. package/src/index.ts +0 -14
  637. package/src/internal/AcceptPayment.test.ts +0 -347
  638. package/src/internal/AcceptPayment.ts +0 -366
  639. package/src/internal/HeaderCodec.ts +0 -36
  640. package/src/internal/changeset.test.ts +0 -106
  641. package/src/internal/constantTimeEqual.test.ts +0 -47
  642. package/src/internal/constantTimeEqual.ts +0 -10
  643. package/src/internal/env.test.ts +0 -42
  644. package/src/internal/env.ts +0 -49
  645. package/src/internal/types.test-d.ts +0 -21
  646. package/src/internal/types.ts +0 -479
  647. package/src/mcp/client/McpClient.integration.test.ts +0 -639
  648. package/src/mcp/client/McpClient.test-d.ts +0 -144
  649. package/src/mcp/client/McpClient.test.ts +0 -463
  650. package/src/mcp/client/McpClient.ts +0 -307
  651. package/src/mcp/client/McpClient.unit.test.ts +0 -135
  652. package/src/mcp/client/index.ts +0 -2
  653. package/src/mcp/server/Transport.test.ts +0 -191
  654. package/src/mcp/server/Transport.ts +0 -111
  655. package/src/mcp/server/index.ts +0 -1
  656. package/src/middlewares/elysia.test.ts +0 -285
  657. package/src/middlewares/elysia.ts +0 -116
  658. package/src/middlewares/express.test.ts +0 -361
  659. package/src/middlewares/express.ts +0 -140
  660. package/src/middlewares/hono.test.ts +0 -473
  661. package/src/middlewares/hono.ts +0 -153
  662. package/src/middlewares/internal/mppx.test.ts +0 -177
  663. package/src/middlewares/internal/mppx.ts +0 -67
  664. package/src/middlewares/nextjs.test.ts +0 -359
  665. package/src/middlewares/nextjs.ts +0 -107
  666. package/src/proxy/Proxy.test.ts +0 -1038
  667. package/src/proxy/Proxy.ts +0 -483
  668. package/src/proxy/Proxy.upstreamError.test.ts +0 -364
  669. package/src/proxy/Service.test.ts +0 -252
  670. package/src/proxy/Service.ts +0 -280
  671. package/src/proxy/index.ts +0 -6
  672. package/src/proxy/internal/Headers.test.ts +0 -139
  673. package/src/proxy/internal/Headers.ts +0 -66
  674. package/src/proxy/internal/Route.test.ts +0 -217
  675. package/src/proxy/internal/Route.ts +0 -64
  676. package/src/proxy/services/anthropic.test.ts +0 -132
  677. package/src/proxy/services/anthropic.ts +0 -53
  678. package/src/proxy/services/hooks.test-d.ts +0 -14
  679. package/src/proxy/services/hooks.test.ts +0 -44
  680. package/src/proxy/services/openai.test.ts +0 -157
  681. package/src/proxy/services/openai.ts +0 -60
  682. package/src/proxy/services/stripe.test.ts +0 -175
  683. package/src/proxy/services/stripe.ts +0 -59
  684. package/src/server/Methods.test-d.ts +0 -88
  685. package/src/server/Methods.test.ts +0 -69
  686. package/src/server/Methods.ts +0 -3
  687. package/src/server/Mppx.authorize.test.ts +0 -210
  688. package/src/server/Mppx.test-d.ts +0 -494
  689. package/src/server/Mppx.test.ts +0 -6711
  690. package/src/server/Mppx.ts +0 -2919
  691. package/src/server/NodeListener.test.ts +0 -293
  692. package/src/server/NodeListener.ts +0 -45
  693. package/src/server/Request.test.ts +0 -255
  694. package/src/server/Request.ts +0 -155
  695. package/src/server/Response.test.ts +0 -32
  696. package/src/server/Response.ts +0 -45
  697. package/src/server/Transport.test.ts +0 -598
  698. package/src/server/Transport.ts +0 -320
  699. package/src/server/index.ts +0 -9
  700. package/src/server/internal/html/compose.main.gen.ts +0 -2
  701. package/src/server/internal/html/compose.main.ts +0 -88
  702. package/src/server/internal/html/config.ts +0 -672
  703. package/src/server/internal/html/constants.ts +0 -28
  704. package/src/server/internal/html/serviceWorker.client.ts +0 -28
  705. package/src/server/internal/html/serviceWorker.gen.ts +0 -2
  706. package/src/server/internal/html/serviceWorker.ts +0 -27
  707. package/src/server/internal/html/tsconfig.compose.json +0 -8
  708. package/src/server/internal/html/tsconfig.worker.client.json +0 -8
  709. package/src/server/internal/html/tsconfig.worker.json +0 -8
  710. package/src/server/internal/scope.ts +0 -43
  711. package/src/stripe/Charge.integration.test.ts +0 -329
  712. package/src/stripe/Methods.test.ts +0 -62
  713. package/src/stripe/Methods.ts +0 -44
  714. package/src/stripe/client/Charge.test.ts +0 -205
  715. package/src/stripe/client/Charge.ts +0 -132
  716. package/src/stripe/client/Methods.ts +0 -37
  717. package/src/stripe/client/index.ts +0 -2
  718. package/src/stripe/index.ts +0 -1
  719. package/src/stripe/internal/constants.ts +0 -7
  720. package/src/stripe/internal/types.ts +0 -47
  721. package/src/stripe/server/Charge.test-d.ts +0 -81
  722. package/src/stripe/server/Charge.test.ts +0 -700
  723. package/src/stripe/server/Charge.ts +0 -487
  724. package/src/stripe/server/Methods.test-d.ts +0 -157
  725. package/src/stripe/server/Methods.test.ts +0 -403
  726. package/src/stripe/server/Methods.ts +0 -441
  727. package/src/stripe/server/index.ts +0 -2
  728. package/src/stripe/server/internal/deposit-address.ts +0 -57
  729. package/src/stripe/server/internal/html/main.ts +0 -165
  730. package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
  731. package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
  732. package/src/stripe/server/internal/html/package.json +0 -9
  733. package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
  734. package/src/stripe/server/internal/html/tsconfig.json +0 -8
  735. package/src/stripe/server/internal/html/types.ts +0 -5
  736. package/src/stripe/server/internal/html.gen.ts +0 -2
  737. package/src/stripe/server/internal/record-payment.ts +0 -66
  738. package/src/stripe/server/internal/request.ts +0 -49
  739. package/src/tap/Constants.ts +0 -32
  740. package/src/tap/Tap.test.ts +0 -125
  741. package/src/tap/Types.ts +0 -11
  742. package/src/tap/client/index.ts +0 -54
  743. package/src/tap/index.ts +0 -4
  744. package/src/tap/server/index.ts +0 -48
  745. package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
  746. package/src/tempo/Attribution.test.ts +0 -294
  747. package/src/tempo/Attribution.ts +0 -185
  748. package/src/tempo/Methods.test.ts +0 -425
  749. package/src/tempo/Methods.ts +0 -367
  750. package/src/tempo/Proof.conformance.test.ts +0 -146
  751. package/src/tempo/Proof.test-d.ts +0 -32
  752. package/src/tempo/Proof.test.ts +0 -40
  753. package/src/tempo/Proof.ts +0 -69
  754. package/src/tempo/PublicExports.test-d.ts +0 -130
  755. package/src/tempo/Subscription.integration.test.ts +0 -591
  756. package/src/tempo/client/Charge.test.ts +0 -501
  757. package/src/tempo/client/Charge.ts +0 -271
  758. package/src/tempo/client/Methods.ts +0 -45
  759. package/src/tempo/client/ResolveAccount.ts +0 -46
  760. package/src/tempo/client/Subscription.test.ts +0 -180
  761. package/src/tempo/client/Subscription.ts +0 -156
  762. package/src/tempo/client/index.ts +0 -17
  763. package/src/tempo/index.ts +0 -5
  764. package/src/tempo/internal/account.ts +0 -56
  765. package/src/tempo/internal/address.test.ts +0 -42
  766. package/src/tempo/internal/address.ts +0 -6
  767. package/src/tempo/internal/auto-swap.test.ts +0 -198
  768. package/src/tempo/internal/auto-swap.ts +0 -145
  769. package/src/tempo/internal/charge.test.ts +0 -66
  770. package/src/tempo/internal/charge.ts +0 -43
  771. package/src/tempo/internal/defaults.test.ts +0 -95
  772. package/src/tempo/internal/defaults.ts +0 -53
  773. package/src/tempo/internal/fee-payer.test.ts +0 -1177
  774. package/src/tempo/internal/fee-payer.ts +0 -808
  775. package/src/tempo/internal/fee-token.test.ts +0 -165
  776. package/src/tempo/internal/fee-token.ts +0 -72
  777. package/src/tempo/internal/proof.test.ts +0 -97
  778. package/src/tempo/internal/proof.ts +0 -87
  779. package/src/tempo/internal/selectors.ts +0 -10
  780. package/src/tempo/internal/types.ts +0 -19
  781. package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
  782. package/src/tempo/legacy/README.md +0 -9
  783. package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
  784. package/src/tempo/legacy/client/ChannelOps.ts +0 -271
  785. package/src/tempo/legacy/client/Session.test.ts +0 -800
  786. package/src/tempo/legacy/client/Session.ts +0 -397
  787. package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
  788. package/src/tempo/legacy/client/SessionManager.ts +0 -909
  789. package/src/tempo/legacy/client/index.ts +0 -6
  790. package/src/tempo/legacy/index.ts +0 -4
  791. package/src/tempo/legacy/session/Chain.test.ts +0 -1349
  792. package/src/tempo/legacy/session/Chain.ts +0 -830
  793. package/src/tempo/legacy/session/Channel.test.ts +0 -109
  794. package/src/tempo/legacy/session/Channel.ts +0 -51
  795. package/src/tempo/legacy/session/Types.ts +0 -91
  796. package/src/tempo/legacy/session/Voucher.test.ts +0 -410
  797. package/src/tempo/legacy/session/Voucher.ts +0 -183
  798. package/src/tempo/legacy/session/escrow.abi.ts +0 -760
  799. package/src/tempo/legacy/session/index.ts +0 -8
  800. package/src/tempo/server/AtomicStore.test-d.ts +0 -63
  801. package/src/tempo/server/Charge.test.ts +0 -6056
  802. package/src/tempo/server/Charge.ts +0 -1379
  803. package/src/tempo/server/Methods.ts +0 -86
  804. package/src/tempo/server/Relay.test.ts +0 -677
  805. package/src/tempo/server/Relay.ts +0 -297
  806. package/src/tempo/server/SponsorBudget.test.ts +0 -154
  807. package/src/tempo/server/SponsorBudget.ts +0 -219
  808. package/src/tempo/server/Sse.test.ts +0 -321
  809. package/src/tempo/server/Subscription.test.ts +0 -1944
  810. package/src/tempo/server/Subscription.ts +0 -1336
  811. package/src/tempo/server/index.ts +0 -12
  812. package/src/tempo/server/internal/html/main.ts +0 -115
  813. package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
  814. package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
  815. package/src/tempo/server/internal/html/package.json +0 -10
  816. package/src/tempo/server/internal/html/tsconfig.json +0 -8
  817. package/src/tempo/server/internal/html.gen.ts +0 -2
  818. package/src/tempo/server/internal/request-body.test.ts +0 -210
  819. package/src/tempo/server/internal/request-body.ts +0 -61
  820. package/src/tempo/server/internal/transport.test.ts +0 -922
  821. package/src/tempo/server/internal/transport.ts +0 -322
  822. package/src/tempo/session/README.md +0 -320
  823. package/src/tempo/session/Snapshot.test.ts +0 -41
  824. package/src/tempo/session/Snapshot.ts +0 -95
  825. package/src/tempo/session/client/ChannelOps.test.ts +0 -218
  826. package/src/tempo/session/client/ChannelOps.ts +0 -348
  827. package/src/tempo/session/client/ChannelStore.ts +0 -111
  828. package/src/tempo/session/client/CredentialState.test.ts +0 -789
  829. package/src/tempo/session/client/CredentialState.ts +0 -942
  830. package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
  831. package/src/tempo/session/client/Runtime.test.ts +0 -1104
  832. package/src/tempo/session/client/Runtime.ts +0 -1008
  833. package/src/tempo/session/client/Session.test.ts +0 -1355
  834. package/src/tempo/session/client/Session.ts +0 -420
  835. package/src/tempo/session/client/SessionManager.test.ts +0 -1899
  836. package/src/tempo/session/client/SessionManager.ts +0 -996
  837. package/src/tempo/session/client/Transports.test.ts +0 -1141
  838. package/src/tempo/session/client/Transports.ts +0 -1534
  839. package/src/tempo/session/client/index.ts +0 -40
  840. package/src/tempo/session/client/internal/SessionManager.ts +0 -36
  841. package/src/tempo/session/index.ts +0 -7
  842. package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
  843. package/src/tempo/session/precompile/Chain.test.ts +0 -1641
  844. package/src/tempo/session/precompile/Chain.ts +0 -1269
  845. package/src/tempo/session/precompile/Channel.test.ts +0 -147
  846. package/src/tempo/session/precompile/Channel.ts +0 -108
  847. package/src/tempo/session/precompile/Protocol.test.ts +0 -358
  848. package/src/tempo/session/precompile/Protocol.ts +0 -520
  849. package/src/tempo/session/precompile/Voucher.test.ts +0 -354
  850. package/src/tempo/session/precompile/Voucher.ts +0 -162
  851. package/src/tempo/session/precompile/escrow.abi.ts +0 -226
  852. package/src/tempo/session/precompile/index.ts +0 -33
  853. package/src/tempo/session/server/ChannelOps.test.ts +0 -129
  854. package/src/tempo/session/server/ChannelOps.ts +0 -157
  855. package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
  856. package/src/tempo/session/server/ChannelStore.ts +0 -856
  857. package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
  858. package/src/tempo/session/server/CredentialVerification.ts +0 -1087
  859. package/src/tempo/session/server/MeteredStream.ts +0 -99
  860. package/src/tempo/session/server/RequestState.test.ts +0 -574
  861. package/src/tempo/session/server/RequestState.ts +0 -507
  862. package/src/tempo/session/server/Session.integration.test.ts +0 -449
  863. package/src/tempo/session/server/Session.test.ts +0 -4247
  864. package/src/tempo/session/server/Session.ts +0 -669
  865. package/src/tempo/session/server/Settlement.test.ts +0 -345
  866. package/src/tempo/session/server/Settlement.ts +0 -527
  867. package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
  868. package/src/tempo/session/server/Sse.test.ts +0 -634
  869. package/src/tempo/session/server/Sse.ts +0 -261
  870. package/src/tempo/session/server/Transports.test.ts +0 -346
  871. package/src/tempo/session/server/Transports.ts +0 -256
  872. package/src/tempo/session/server/Ws.test.ts +0 -765
  873. package/src/tempo/session/server/Ws.ts +0 -391
  874. package/src/tempo/session/server/index.ts +0 -12
  875. package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
  876. package/src/tempo/subscription/KeyAuthorization.ts +0 -396
  877. package/src/tempo/subscription/Receipt.ts +0 -28
  878. package/src/tempo/subscription/Store.test.ts +0 -609
  879. package/src/tempo/subscription/Store.ts +0 -449
  880. package/src/tempo/subscription/Types.ts +0 -68
  881. package/src/tempo/subscription/index.ts +0 -23
  882. package/src/tsconfig.json +0 -10
  883. package/src/validation/core.ts +0 -386
  884. package/src/validation/index.ts +0 -11
  885. package/src/viem/Account.test.ts +0 -72
  886. package/src/viem/Account.ts +0 -30
  887. package/src/viem/Client.test.ts +0 -366
  888. package/src/viem/Client.ts +0 -93
  889. package/src/web-bot-auth/Constants.ts +0 -24
  890. package/src/web-bot-auth/Types.ts +0 -9
  891. package/src/web-bot-auth/WebBotAuth.test.ts +0 -182
  892. package/src/web-bot-auth/client/index.ts +0 -84
  893. package/src/web-bot-auth/index.ts +0 -6
  894. package/src/web-bot-auth/internal/JwkThumbprint.ts +0 -21
  895. package/src/web-bot-auth/internal/SignatureAgent.ts +0 -18
  896. package/src/web-bot-auth/server/index.ts +0 -113
  897. package/src/x402/Assets.test.ts +0 -253
  898. package/src/x402/Assets.ts +0 -221
  899. package/src/x402/Exact.e2e.test.ts +0 -488
  900. package/src/x402/Exact.localnet.test.ts +0 -475
  901. package/src/x402/Header.test.ts +0 -73
  902. package/src/x402/Header.ts +0 -79
  903. package/src/x402/PublicInterface.test-d.ts +0 -39
  904. package/src/x402/Types.ts +0 -248
  905. package/src/x402/client/Exact.test.ts +0 -309
  906. package/src/x402/client/Exact.ts +0 -186
  907. package/src/x402/index.ts +0 -6
  908. package/src/x402/internal/ChallengeBrand.ts +0 -14
  909. package/src/x402/internal/RouteBinding.ts +0 -18
  910. package/src/x402/server/EvmCharge.ts +0 -410
  911. package/src/x402/server/Facilitator.test.ts +0 -111
  912. package/src/x402/server/Facilitator.ts +0 -56
  913. package/src/zod.test.ts +0 -169
  914. package/src/zod.ts +0 -71
@@ -1,843 +0,0 @@
1
- import type * as http from 'node:http'
2
-
3
- import { afterEach, describe, expect, test, vi } from 'vp/test'
4
- import * as Http from '~test/Http.js'
5
-
6
- import * as Challenge from '../Challenge.js'
7
- import * as Constants from '../Constants.js'
8
- import * as Receipt from '../Receipt.js'
9
- import { missingDiscoverySuggestion } from './validate/messages.js'
10
-
11
- // Keep validate tests out of JSON mode by default, even when the suite runs inside an agent.
12
- const isAgentEnvironmentMock = vi.fn(() => false)
13
-
14
- // Keep CLI orchestration tests independent of the public Tempo RPC and faucet.
15
- vi.doMock('viem/tempo', async () => {
16
- const actual = await vi.importActual<typeof import('viem/tempo')>('viem/tempo')
17
- return {
18
- ...actual,
19
- Actions: {
20
- ...actual.Actions,
21
- faucet: { ...actual.Actions.faucet, fund: vi.fn(async () => []) },
22
- },
23
- }
24
- })
25
-
26
- vi.doMock('viem/actions', async () => {
27
- const actual = await vi.importActual<typeof import('viem/actions')>('viem/actions')
28
- return {
29
- ...actual,
30
- prepareTransactionRequest: vi.fn(async () => ({})),
31
- signTransaction: vi.fn(async () => '0xdeadbeef'),
32
- }
33
- })
34
-
35
- vi.doMock('./utils.js', async () => {
36
- const actual = await vi.importActual<typeof import('./utils.js')>('./utils.js')
37
- return {
38
- ...actual,
39
- isAgentEnvironment: isAgentEnvironmentMock,
40
- }
41
- })
42
-
43
- // Auto-cleanup for test servers
44
- const servers: Http.TestServer[] = []
45
- afterEach(() => {
46
- servers.forEach((s) => s.close())
47
- servers.length = 0
48
- isAgentEnvironmentMock.mockReturnValue(false)
49
- })
50
-
51
- async function testServer(handler: http.RequestListener) {
52
- const s = await Http.createServer(handler)
53
- servers.push(s)
54
- return s
55
- }
56
-
57
- async function serve(argv: string[]) {
58
- const { default: validate } = await import('./validate/index.js')
59
- let output = ''
60
- let exitCode: number | undefined
61
- const origLog = console.log
62
- const origStdout = process.stdout.write
63
- const origStderr = process.stderr.write
64
- console.log = (...args: unknown[]) => {
65
- output += `${args.map(String).join(' ')}\n`
66
- }
67
- process.stdout.write = ((chunk: unknown) => {
68
- output += typeof chunk === 'string' ? chunk : String(chunk)
69
- return true
70
- }) as typeof process.stdout.write
71
- process.stderr.write = ((chunk: unknown) => {
72
- output += typeof chunk === 'string' ? chunk : String(chunk)
73
- return true
74
- }) as typeof process.stderr.write
75
- try {
76
- const { Cli } = await import('incur')
77
- const cli = Cli.create('mppx', {})
78
- cli.command(validate)
79
- await cli.serve(argv, {
80
- stdout(s: string) {
81
- output += s
82
- },
83
- exit(code: number) {
84
- exitCode = code
85
- },
86
- })
87
- } finally {
88
- console.log = origLog
89
- process.stdout.write = origStdout
90
- process.stderr.write = origStderr
91
- }
92
- return { output, exitCode }
93
- }
94
-
95
- function makeChallenge(overrides?: Partial<Challenge.Challenge>) {
96
- return {
97
- id: 'test-id-123',
98
- realm: 'localhost',
99
- method: 'tempo',
100
- intent: 'charge',
101
- request: {
102
- amount: '10000',
103
- currency: '0x20c0000000000000000000000000000000000000',
104
- recipient: '0x1234567890123456789012345678901234567890',
105
- methodDetails: { chainId: 42431 },
106
- },
107
- expires: new Date(Date.now() + 300_000).toISOString(),
108
- ...overrides,
109
- } as Challenge.Challenge
110
- }
111
-
112
- function makeDiscoveryDoc(
113
- endpoints: Record<string, { method?: string; amount?: string; requestBody?: unknown }> = {},
114
- ) {
115
- const paths: Record<string, unknown> = {}
116
- for (const [path, opts] of Object.entries(endpoints)) {
117
- const op: Record<string, unknown> = {
118
- 'x-payment-info': { method: 'tempo', intent: 'charge', amount: opts.amount ?? '10000' },
119
- responses: { '402': { description: 'Payment required' } },
120
- }
121
- if (opts.requestBody) op.requestBody = opts.requestBody
122
- paths[path] = { [opts.method?.toLowerCase() ?? 'post']: op }
123
- }
124
- return JSON.stringify({ openapi: '3.1.0', info: { title: 'Test', version: '1.0.0' }, paths })
125
- }
126
-
127
- async function mppServer(
128
- challenge: Challenge.Challenge,
129
- opts?: { errorStatus?: number; postPaymentStatus?: number },
130
- ) {
131
- return testServer((req, res) => {
132
- const url = new URL(req.url!, 'http://localhost')
133
- if (url.pathname === '/openapi.json') {
134
- res.setHeader('Content-Type', 'application/json')
135
- res.end(makeDiscoveryDoc({ '/api/test': {} }))
136
- return
137
- }
138
- const hasAuth = req.headers[Constants.Headers.authorization.toLowerCase()]
139
- if (hasAuth && hasAuth !== `${Constants.Schemes.payment} dGhpcyBpcyBnYXJiYWdl`) {
140
- const status = opts?.postPaymentStatus ?? 200
141
- const receipt = Receipt.serialize({
142
- method: 'tempo',
143
- status: 'success',
144
- reference: '0x' + 'ab'.repeat(32),
145
- timestamp: new Date().toISOString(),
146
- })
147
- res.writeHead(status, {
148
- [Constants.Headers.paymentReceipt]: receipt,
149
- 'content-type': 'application/json',
150
- })
151
- res.end(JSON.stringify({ result: 'ok' }))
152
- } else if (hasAuth) {
153
- const errorStatus = opts?.errorStatus ?? 402
154
- if (errorStatus === 402) {
155
- res.writeHead(402, { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) })
156
- } else {
157
- res.writeHead(errorStatus)
158
- }
159
- res.end()
160
- } else {
161
- res.writeHead(402, { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) })
162
- res.end()
163
- }
164
- })
165
- }
166
-
167
- describe('validate: discovery', () => {
168
- test('succeeds with valid discovery doc', { timeout: 15_000 }, async () => {
169
- const server = await mppServer(makeChallenge())
170
- const { output } = await serve(['validate', server.url])
171
- expect(output).toContain('Document found and parseable')
172
- expect(output).toContain('Valid OpenAPI structure')
173
- expect(output).toContain('Paid endpoints found')
174
- })
175
-
176
- test('reports missing discovery doc', { timeout: 15_000 }, async () => {
177
- const server = await testServer((_req, res) => {
178
- res.writeHead(404)
179
- res.end()
180
- })
181
- const { output, exitCode } = await serve(['validate', server.url])
182
- expect(exitCode).toBe(1)
183
- for (const line of missingDiscoverySuggestion.split('\n').filter(Boolean))
184
- expect(output).toContain(line)
185
- })
186
-
187
- test('strips /openapi.json from input URL', { timeout: 15_000 }, async () => {
188
- const server = await mppServer(makeChallenge())
189
- const { output } = await serve(['validate', `${server.url}/openapi.json`])
190
- expect(output).toContain('Document found and parseable')
191
- })
192
-
193
- test('discovers openapi.json at root when subpath given', { timeout: 15_000 }, async () => {
194
- const server = await mppServer(makeChallenge())
195
- const { output } = await serve(['validate', `${server.url}/mpp`])
196
- expect(output).toContain('Document found and parseable')
197
- })
198
-
199
- test('reports invalid JSON', { timeout: 15_000 }, async () => {
200
- const server = await testServer((req, res) => {
201
- if (req.url?.includes('openapi.json')) {
202
- res.setHeader('Content-Type', 'application/json')
203
- res.end('not json{{{')
204
- } else {
205
- res.writeHead(404)
206
- res.end()
207
- }
208
- })
209
- const { output, exitCode } = await serve(['validate', server.url])
210
- expect(exitCode).toBe(1)
211
- expect(output).toContain('Invalid JSON')
212
- })
213
-
214
- test('handles no paid endpoints in discovery', { timeout: 15_000 }, async () => {
215
- const server = await testServer((req, res) => {
216
- if (req.url?.includes('openapi.json')) {
217
- res.setHeader('Content-Type', 'application/json')
218
- res.end(
219
- JSON.stringify({
220
- openapi: '3.1.0',
221
- info: { title: 'T', version: '1' },
222
- paths: { '/health': { get: { responses: { '200': {} } } } },
223
- }),
224
- )
225
- } else {
226
- res.writeHead(200)
227
- res.end()
228
- }
229
- })
230
- const { output, exitCode } = await serve(['validate', server.url])
231
- expect(exitCode).toBe(1)
232
- expect(output).toContain('Paid endpoints found (No endpoints with x-payment-info)')
233
- expect(output).toContain('Use --endpoint to specify endpoints manually.')
234
- })
235
-
236
- test('falls back to 402 response heuristic', { timeout: 15_000 }, async () => {
237
- const challenge = makeChallenge()
238
- const server = await testServer((req, res) => {
239
- const url = new URL(req.url!, 'http://localhost')
240
- if (url.pathname === '/openapi.json') {
241
- res.setHeader('Content-Type', 'application/json')
242
- res.end(
243
- JSON.stringify({
244
- openapi: '3.1.0',
245
- info: { title: 'T', version: '1' },
246
- paths: {
247
- '/api/data': { get: { responses: { '402': { description: 'Payment required' } } } },
248
- },
249
- }),
250
- )
251
- } else {
252
- res.writeHead(402, { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) })
253
- res.end()
254
- }
255
- })
256
- const { output } = await serve(['validate', server.url])
257
- expect(output).toContain('Paid endpoints found')
258
- expect(output).toContain('Challenge parseable')
259
- })
260
- })
261
-
262
- describe('validate: challenge', () => {
263
- test('validates correct MPP challenge', { timeout: 15_000 }, async () => {
264
- const server = await mppServer(makeChallenge())
265
- const { output } = await serve(['validate', server.url])
266
- expect(output).toContain('Challenge parseable (tempo/charge)')
267
- expect(output).toContain('Challenge has id')
268
- expect(output).toContain('Challenge has realm')
269
- expect(output).toContain('Valid recipient address')
270
- expect(output).toContain('Valid currency address (testnet)')
271
- expect(output).toContain('Amount is valid integer string')
272
- })
273
-
274
- test('fails on expired challenge', { timeout: 15_000 }, async () => {
275
- const server = await mppServer(makeChallenge({ expires: '2020-01-01T00:00:00Z' }))
276
- const { output } = await serve(['validate', server.url])
277
- expect(output).toContain('Challenge expires in the future (Expired at 2020-01-01T00:00:00Z)')
278
- expect(output).toContain('The expires timestamp must be in the future')
279
- })
280
-
281
- test('warns on realm mismatch', { timeout: 15_000 }, async () => {
282
- const server = await mppServer(makeChallenge({ realm: 'other.example.com' }))
283
- const { output } = await serve(['validate', server.url])
284
- expect(output).toContain(
285
- 'Realm matches server hostname (realm="other.example.com" vs host="localhost")',
286
- )
287
- expect(output).toContain('Set the realm to your production hostname')
288
- })
289
-
290
- test('fails on invalid recipient address', { timeout: 15_000 }, async () => {
291
- const challenge = makeChallenge()
292
- ;(challenge.request as Record<string, unknown>).recipient = 'not-an-address'
293
- const server = await mppServer(challenge)
294
- const { output } = await serve(['validate', server.url])
295
- expect(output).toContain('Valid recipient address (Got: not-an-address)')
296
- expect(output).toContain('Set request.recipient to a valid 0x-prefixed 40-hex-char address')
297
- })
298
-
299
- test('fails on invalid amount', { timeout: 15_000 }, async () => {
300
- const challenge = makeChallenge()
301
- ;(challenge.request as Record<string, unknown>).amount = '12.5'
302
- const server = await mppServer(challenge)
303
- const { output } = await serve(['validate', server.url])
304
- expect(output).toContain('Amount is valid integer string (Got: 12.5)')
305
- expect(output).toContain('request.amount must be a string of digits')
306
- })
307
-
308
- test('detects non-MPP endpoint (x402)', { timeout: 15_000 }, async () => {
309
- const server = await testServer((req, res) => {
310
- const url = new URL(req.url!, 'http://localhost')
311
- if (url.pathname === '/openapi.json') {
312
- res.setHeader('Content-Type', 'application/json')
313
- res.end(makeDiscoveryDoc({ '/api/test': {} }))
314
- } else {
315
- res.writeHead(402, { 'payment-required': 'eyJ0ZXN0IjoxfQ==' })
316
- res.end()
317
- }
318
- })
319
- const { output, exitCode } = await serve(['validate', server.url])
320
- expect(output).toContain('Not an MPP endpoint')
321
- expect(output).toContain('x402 protocol detected')
322
- expect(output).toContain('x402 payment challenge')
323
- expect(exitCode).toBe(1)
324
- })
325
-
326
- test('skips 200 response', { timeout: 15_000 }, async () => {
327
- const server = await testServer((req, res) => {
328
- const url = new URL(req.url!, 'http://localhost')
329
- if (url.pathname === '/openapi.json') {
330
- res.setHeader('Content-Type', 'application/json')
331
- res.end(makeDiscoveryDoc({ '/api/test': { method: 'GET' } }))
332
- } else {
333
- res.writeHead(200)
334
- res.end('ok')
335
- }
336
- })
337
- const { output } = await serve(['validate', server.url])
338
- expect(output).toContain(
339
- 'Returns 402 without credentials (Got 200 (endpoint may not require payment in all cases))',
340
- )
341
- })
342
-
343
- test('skips 401 as auth-gated', { timeout: 15_000 }, async () => {
344
- const server = await testServer((req, res) => {
345
- const url = new URL(req.url!, 'http://localhost')
346
- if (url.pathname === '/openapi.json') {
347
- res.setHeader('Content-Type', 'application/json')
348
- res.end(makeDiscoveryDoc({ '/api/test': {} }))
349
- } else {
350
- res.writeHead(401)
351
- res.end()
352
- }
353
- })
354
- const { output } = await serve(['validate', server.url])
355
- expect(output).toContain(
356
- 'Returns 402 without credentials (Got 401 (endpoint requires auth before payment gate))',
357
- )
358
- })
359
-
360
- test('retries with body on 400', { timeout: 15_000 }, async () => {
361
- const challenge = makeChallenge()
362
- const doc = JSON.stringify({
363
- openapi: '3.1.0',
364
- info: { title: 'T', version: '1' },
365
- paths: {
366
- '/api/test': {
367
- post: {
368
- 'x-payment-info': { method: 'tempo', intent: 'charge', amount: '10000' },
369
- responses: { '402': {} },
370
- requestBody: {
371
- required: true,
372
- content: {
373
- 'application/json': {
374
- schema: {
375
- type: 'object',
376
- required: ['q'],
377
- properties: { q: { type: 'string', example: 'hello' } },
378
- },
379
- },
380
- },
381
- },
382
- },
383
- },
384
- },
385
- })
386
- let requestCount = 0
387
- const server = await testServer((req, res) => {
388
- const url = new URL(req.url!, 'http://localhost')
389
- if (url.pathname === '/openapi.json') {
390
- res.setHeader('Content-Type', 'application/json')
391
- res.end(doc)
392
- } else {
393
- requestCount++
394
- const hasAuth = req.headers[Constants.Headers.authorization.toLowerCase()]
395
- if (hasAuth) {
396
- res.writeHead(402, {
397
- [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge),
398
- })
399
- res.end()
400
- } else if (requestCount === 1) {
401
- res.writeHead(400)
402
- res.end()
403
- } else {
404
- res.writeHead(402, {
405
- [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge),
406
- })
407
- res.end()
408
- }
409
- }
410
- })
411
- const { output } = await serve(['validate', server.url])
412
- expect(output).toContain('Challenge parseable')
413
- expect(requestCount).toBeGreaterThan(1)
414
- })
415
- })
416
-
417
- describe('validate: error handling', () => {
418
- test('passes when malformed credential returns 402', { timeout: 15_000 }, async () => {
419
- const server = await mppServer(makeChallenge())
420
- const { output } = await serve(['validate', server.url])
421
- expect(output).toContain('Malformed credential returns 402 (not 500)')
422
- })
423
-
424
- test('fails when malformed credential returns 500', { timeout: 15_000 }, async () => {
425
- const server = await mppServer(makeChallenge(), { errorStatus: 500 })
426
- const { output } = await serve(['validate', server.url])
427
- expect(output).toContain('Malformed credential returns 402 (Got 500 (server error))')
428
- expect(output).toContain(
429
- 'When the Authorization header contains an invalid credential, respond with 402 (not 500)',
430
- )
431
- })
432
-
433
- test('warns when malformed credential returns other status', { timeout: 15_000 }, async () => {
434
- const server = await mppServer(makeChallenge(), { errorStatus: 422 })
435
- const { output } = await serve(['validate', server.url])
436
- expect(output).toContain('Malformed credential returns 402 (Got 422)')
437
- expect(output).toContain('Returning 422 prevents the client from retrying with a valid payment')
438
- })
439
- })
440
-
441
- describe('validate: --endpoint flag', () => {
442
- test('checks discovery even with --endpoint', { timeout: 15_000 }, async () => {
443
- const challenge = makeChallenge()
444
- const server = await testServer((_req, res) => {
445
- res.writeHead(402, { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) })
446
- res.end()
447
- })
448
- const { output } = await serve(['validate', server.url, '--endpoint', 'POST:/api/test'])
449
- expect(output).toContain('Discovery (/openapi.json)')
450
- // Discovery fails (server only returns 402) but doesn't block --endpoint testing
451
- expect(output).toContain('Document found')
452
- expect(output).toContain('Challenge parseable')
453
- })
454
-
455
- test('uses --body directly with --endpoint', { timeout: 15_000 }, async () => {
456
- const challenge = makeChallenge()
457
- const bodies: string[] = []
458
- const server = await testServer((req, res) => {
459
- let body = ''
460
- req.on('data', (chunk) => {
461
- body += chunk
462
- })
463
- req.on('end', () => {
464
- bodies.push(body)
465
- res.writeHead(402, { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) })
466
- res.end()
467
- })
468
- })
469
- await serve(['validate', server.url, '--endpoint', 'POST:/api/test', '--body', '{"test":true}'])
470
- // Challenge phase: bare request first (no body)
471
- expect(bodies[0]).toBe('')
472
- // Payment phase: sends body with the credential request
473
- const paymentRequest = bodies.find((b) => b === '{"test":true}')
474
- expect(paymentRequest).toBe('{"test":true}')
475
- })
476
- })
477
-
478
- describe('validate: no MPP endpoints', () => {
479
- test('exits non-zero when all endpoints are x402', { timeout: 15_000 }, async () => {
480
- const server = await testServer((req, res) => {
481
- const url = new URL(req.url!, 'http://localhost')
482
- if (url.pathname === '/openapi.json') {
483
- res.setHeader('Content-Type', 'application/json')
484
- res.end(makeDiscoveryDoc({ '/api/a': {}, '/api/b': {} }))
485
- } else {
486
- res.writeHead(402, { 'payment-required': 'eyJ0ZXN0IjoxfQ==' })
487
- res.end()
488
- }
489
- })
490
- const { output, exitCode } = await serve(['validate', server.url])
491
- expect(exitCode).toBe(1)
492
- expect(output).toContain('No MPP endpoints found.')
493
- expect(output).toContain('This server may use x402 or another payment protocol.')
494
- })
495
-
496
- test('shows auth-gated message when all return 401', { timeout: 15_000 }, async () => {
497
- const server = await testServer((req, res) => {
498
- const url = new URL(req.url!, 'http://localhost')
499
- if (url.pathname === '/openapi.json') {
500
- res.setHeader('Content-Type', 'application/json')
501
- res.end(makeDiscoveryDoc({ '/api/a': {}, '/api/b': {} }))
502
- } else {
503
- res.writeHead(401)
504
- res.end()
505
- }
506
- })
507
- const { output, exitCode } = await serve(['validate', server.url])
508
- expect(exitCode).toBe(1)
509
- expect(output).toContain(
510
- 'Could not reach payment gate on any endpoint (all returned 401/403/200).',
511
- )
512
- expect(output).toContain('The server may require authentication before payment.')
513
- })
514
-
515
- test(
516
- 'mixed: some MPP, some not -- does not show "no MPP" message',
517
- { timeout: 15_000 },
518
- async () => {
519
- const challenge = makeChallenge()
520
- const server = await testServer((req, res) => {
521
- const url = new URL(req.url!, 'http://localhost')
522
- if (url.pathname === '/openapi.json') {
523
- res.setHeader('Content-Type', 'application/json')
524
- res.end(makeDiscoveryDoc({ '/api/paid': {}, '/api/free': {} }))
525
- } else if (url.pathname === '/api/paid') {
526
- res.writeHead(402, {
527
- [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge),
528
- })
529
- res.end()
530
- } else {
531
- res.writeHead(402, { 'payment-required': 'eyJ0ZXN0IjoxfQ==' })
532
- res.end()
533
- }
534
- })
535
- const { output } = await serve(['validate', server.url])
536
- expect(output).toContain('Challenge parseable')
537
- expect(output).toContain('Not an MPP endpoint')
538
- expect(output).not.toContain('No MPP endpoints found')
539
- },
540
- )
541
- })
542
-
543
- describe('validate: summary', () => {
544
- test('shows pass count in summary', { timeout: 15_000 }, async () => {
545
- const server = await mppServer(makeChallenge())
546
- const { output } = await serve(['validate', server.url])
547
- expect(output).toMatch(/\d+ passed/)
548
- expect(output).toContain('Summary:')
549
- })
550
-
551
- test('shows skipped count when endpoints are skipped', { timeout: 15_000 }, async () => {
552
- const challenge = makeChallenge()
553
- const server = await testServer((req, res) => {
554
- const url = new URL(req.url!, 'http://localhost')
555
- if (url.pathname === '/openapi.json') {
556
- res.setHeader('Content-Type', 'application/json')
557
- res.end(makeDiscoveryDoc({ '/api/mpp': {}, '/api/free': { method: 'GET' } }))
558
- } else if (url.pathname === '/api/mpp') {
559
- res.writeHead(402, { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) })
560
- res.end()
561
- } else {
562
- res.writeHead(200)
563
- res.end('ok')
564
- }
565
- })
566
- const { output } = await serve(['validate', server.url])
567
- expect(output).toContain('skipped')
568
- })
569
-
570
- test('exits non-zero when there are failures', { timeout: 15_000 }, async () => {
571
- const server = await mppServer(makeChallenge(), { errorStatus: 500 })
572
- const { output, exitCode } = await serve(['validate', server.url])
573
- expect(exitCode).toBe(1)
574
- expect(output).toContain('failed')
575
- })
576
- })
577
-
578
- describe('validate: multi-challenge', () => {
579
- function makeStripeChallenge(): Challenge.Challenge {
580
- return {
581
- id: 'stripe-id-123',
582
- realm: 'localhost',
583
- method: 'stripe',
584
- intent: 'charge',
585
- request: {
586
- amount: '100',
587
- currency: 'usd',
588
- methodDetails: {
589
- networkId: 'profile_test123',
590
- paymentMethodTypes: ['card'],
591
- },
592
- },
593
- expires: new Date(Date.now() + 300_000).toISOString(),
594
- } as Challenge.Challenge
595
- }
596
-
597
- function makeEvmChallenge(): Challenge.Challenge {
598
- return {
599
- id: 'evm-id-123',
600
- realm: 'localhost',
601
- method: 'evm',
602
- intent: 'charge',
603
- request: {
604
- amount: '10000',
605
- currency: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
606
- recipient: '0x1234567890123456789012345678901234567890',
607
- methodDetails: { chainId: 8453, credentialTypes: ['authorization'], decimals: 6 },
608
- },
609
- expires: new Date(Date.now() + 300_000).toISOString(),
610
- } as Challenge.Challenge
611
- }
612
-
613
- function multiChallengeServer(challenges: Challenge.Challenge[]) {
614
- const header = challenges.map((c) => Challenge.serialize(c)).join(', ')
615
- return testServer((req, res) => {
616
- const url = new URL(req.url!, 'http://localhost')
617
- if (url.pathname === '/openapi.json') {
618
- res.setHeader('Content-Type', 'application/json')
619
- res.end(makeDiscoveryDoc({ '/api/test': {} }))
620
- return
621
- }
622
- res.writeHead(402, { [Constants.Headers.wwwAuthenticate]: header })
623
- res.end()
624
- })
625
- }
626
-
627
- test('parses multiple challenges', { timeout: 15_000 }, async () => {
628
- const server = await multiChallengeServer([makeChallenge(), makeStripeChallenge()])
629
- const { output } = await serve(['validate', server.url])
630
- expect(output).toContain('2 methods: tempo/charge, stripe/charge')
631
- })
632
-
633
- test('validates Stripe fields', { timeout: 15_000 }, async () => {
634
- const server = await multiChallengeServer([makeStripeChallenge()])
635
- const { output } = await serve(['validate', server.url])
636
- expect(output).toContain('Amount is valid integer string')
637
- expect(output).toContain('Valid currency code (USD)')
638
- expect(output).toContain('Has networkId')
639
- expect(output).toContain('Has paymentMethodTypes (card)')
640
- })
641
-
642
- test('validates EVM fields', { timeout: 15_000 }, async () => {
643
- const server = await multiChallengeServer([makeEvmChallenge()])
644
- const { output } = await serve(['validate', server.url])
645
- expect(output).toContain('Valid recipient address')
646
- expect(output).toContain('Valid currency address')
647
- expect(output).toContain('Amount is valid integer string')
648
- expect(output).toContain('Has chainId (8453)')
649
- })
650
-
651
- test('tags method names when multiple challenges present', { timeout: 15_000 }, async () => {
652
- const server = await multiChallengeServer([
653
- makeChallenge(),
654
- makeStripeChallenge(),
655
- makeEvmChallenge(),
656
- ])
657
- const { output } = await serve(['validate', server.url])
658
- expect(output).toContain('[tempo] Valid recipient address')
659
- expect(output).toContain('[stripe] Valid currency code')
660
- expect(output).toContain('[evm] Has chainId')
661
- })
662
-
663
- test('no tags with single challenge', { timeout: 15_000 }, async () => {
664
- const server = await multiChallengeServer([makeChallenge()])
665
- const { output } = await serve(['validate', server.url])
666
- expect(output).toContain('Valid recipient address')
667
- expect(output).not.toContain('[tempo]')
668
- })
669
-
670
- test('Tempo requires recipient or splits', { timeout: 15_000 }, async () => {
671
- const noRecipient = makeChallenge({
672
- request: {
673
- amount: '10000',
674
- currency: '0x20c0000000000000000000000000000000000000',
675
- methodDetails: { chainId: 42431 },
676
- },
677
- } as Partial<Challenge.Challenge>)
678
- const server = await multiChallengeServer([noRecipient])
679
- const { output } = await serve(['validate', server.url])
680
- expect(output).toContain('Missing recipient (and no splits defined)')
681
- })
682
-
683
- test('Tempo accepts splits without recipient', { timeout: 15_000 }, async () => {
684
- const withSplits = makeChallenge({
685
- request: {
686
- amount: '10000',
687
- currency: '0x20c0000000000000000000000000000000000000',
688
- methodDetails: {
689
- chainId: 42431,
690
- splits: [
691
- { amount: '5000', recipient: '0x1234567890123456789012345678901234567890' },
692
- { amount: '5000', recipient: '0x0987654321098765432109876543210987654321' },
693
- ],
694
- },
695
- },
696
- } as Partial<Challenge.Challenge>)
697
- const server = await multiChallengeServer([withSplits])
698
- const { output } = await serve(['validate', server.url])
699
- expect(output).toContain('Uses splits (no single recipient)')
700
- expect(output).not.toContain('Missing recipient')
701
- })
702
-
703
- test('fails on invalid Stripe amount', { timeout: 15_000 }, async () => {
704
- const bad = makeStripeChallenge()
705
- ;(bad.request as Record<string, unknown>).amount = '1.50'
706
- const server = await multiChallengeServer([bad])
707
- const { output } = await serve(['validate', server.url])
708
- expect(output).toContain('Amount is valid integer string (Got: 1.50)')
709
- })
710
-
711
- test("tempo doesn't block other testnet methods", { timeout: 15_000 }, async () => {
712
- // makeChallenge() defaults to a tempo testnet challenge (chainId 42431),
713
- // which takes the ephemeral-wallet fast path. That path used to return
714
- // immediately, so a server offering evm/stripe alongside tempo would
715
- // never have those methods exercised. It should now fall through and
716
- // try them too, same as it does for tempo mainnet challenges.
717
- const server = await multiChallengeServer([makeChallenge(), makeEvmChallenge()])
718
- const { output } = await serve(['validate', server.url, '--outputJson', '--yes'])
719
- const jsonStart = output.indexOf('{')
720
- const jsonEnd = output.lastIndexOf('}')
721
- const result = JSON.parse(output.slice(jsonStart, jsonEnd + 1))
722
- const paymentLabels = result.endpoints[0].payment.map((r: { label: string }) => r.label)
723
- expect(paymentLabels).toContain('Payment: submitted')
724
- expect(paymentLabels.some((l: string) => l.includes('[evm]'))).toBe(true)
725
- })
726
- })
727
-
728
- describe('validate: payment methods coverage', () => {
729
- test(
730
- 'every method in Constants.Methods produces a payment result',
731
- { timeout: 15_000 },
732
- async () => {
733
- const methods = Object.values(Constants.Methods)
734
- const challenges = methods.map((method) => ({
735
- id: `${method}-id`,
736
- realm: 'localhost',
737
- method,
738
- intent: 'charge',
739
- request: { amount: '100', currency: 'usd', methodDetails: {} },
740
- expires: new Date(Date.now() + 300_000).toISOString(),
741
- })) as Challenge.Challenge[]
742
-
743
- const header = challenges.map((c) => Challenge.serialize(c)).join(', ')
744
- const server = await testServer((req, res) => {
745
- const url = new URL(req.url!, 'http://localhost')
746
- if (url.pathname === '/openapi.json') {
747
- res.setHeader('Content-Type', 'application/json')
748
- res.end(
749
- JSON.stringify({
750
- openapi: '3.1.0',
751
- info: { title: 'T', version: '1' },
752
- paths: {
753
- '/api/test': {
754
- post: { 'x-payment-info': { amount: '100' }, responses: { '402': {} } },
755
- },
756
- },
757
- }),
758
- )
759
- return
760
- }
761
- res.writeHead(402, { [Constants.Headers.wwwAuthenticate]: header })
762
- res.end()
763
- })
764
- const { output } = await serve(['validate', server.url, '--outputJson', '--yes'])
765
- const jsonStart = output.indexOf('{')
766
- const jsonEnd = output.lastIndexOf('}')
767
- const result = JSON.parse(output.slice(jsonStart, jsonEnd + 1))
768
- const paymentLabels = result.endpoints[0].payment.map((r: { label: string }) => r.label)
769
- for (const method of methods) {
770
- expect(paymentLabels.some((l: string) => l.includes(`[${method}]`))).toBe(true)
771
- }
772
- },
773
- )
774
- })
775
-
776
- describe('validate: JSON mode', () => {
777
- function mainnetChallenge() {
778
- return makeChallenge({
779
- request: {
780
- amount: '10000',
781
- currency: '0x20c0000000000000000000000000000000000000',
782
- recipient: '0x1234567890123456789012345678901234567890',
783
- methodDetails: { chainId: 4217 },
784
- },
785
- } as Partial<Challenge.Challenge>)
786
- }
787
-
788
- function parseJson(output: string) {
789
- const jsonStart = output.indexOf('{')
790
- const jsonEnd = output.lastIndexOf('}')
791
- return JSON.parse(output.slice(jsonStart, jsonEnd + 1))
792
- }
793
-
794
- test('does not prompt (non-interactive)', { timeout: 15_000 }, async () => {
795
- const server = await mppServer(mainnetChallenge())
796
- const { output } = await serve(['validate', server.url, '--outputJson'])
797
- const result = parseJson(output)
798
- const allPayment = result.endpoints.flatMap((ep: { payment: unknown[] }) => ep.payment)
799
- expect(allPayment.length).toBeGreaterThan(0)
800
- expect(allPayment.every((r: { severity: string }) => r.severity === 'skip')).toBe(true)
801
- })
802
-
803
- test(
804
- 'auto-enables JSON output when an agent environment is detected',
805
- { timeout: 15_000 },
806
- async () => {
807
- const server = await mppServer(mainnetChallenge())
808
- isAgentEnvironmentMock.mockReturnValue(true)
809
- const { output } = await serve(['validate', server.url])
810
- const result = parseJson(output)
811
- expect(result.summary.skipped).toBeGreaterThan(0)
812
- expect(result.endpoints.length).toBeGreaterThan(0)
813
- },
814
- )
815
-
816
- test('no console leaks before JSON', { timeout: 15_000 }, async () => {
817
- const server = await mppServer(mainnetChallenge())
818
- const { output } = await serve(['validate', server.url, '--outputJson', '--yes'])
819
- const jsonStart = output.indexOf('{')
820
- expect(jsonStart).toBeGreaterThanOrEqual(0)
821
- const beforeJson = output.slice(0, jsonStart)
822
- expect(beforeJson).not.toContain('Using wallet')
823
- expect(beforeJson).not.toContain('Auto-approved')
824
- expect(beforeJson).not.toContain('Attempting')
825
- })
826
-
827
- test('includes suggestions', { timeout: 15_000 }, async () => {
828
- const server = await mppServer(mainnetChallenge())
829
- const { output } = await serve(['validate', server.url, '--outputJson', '--yes'])
830
- const result = parseJson(output)
831
- expect(Array.isArray(result.suggestions)).toBe(true)
832
- })
833
-
834
- test('includes missing discovery suggestions', { timeout: 15_000 }, async () => {
835
- const server = await testServer((_req, res) => {
836
- res.writeHead(404)
837
- res.end()
838
- })
839
- const { output } = await serve(['validate', server.url, '--outputJson'])
840
- const result = parseJson(output)
841
- expect(result.suggestions).toEqual([missingDiscoverySuggestion])
842
- })
843
- })