mppx 0.8.15 → 0.8.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +91 -0
- package/README.md +15 -0
- package/dist/Challenge.js +61 -39
- package/dist/Constants.d.ts +17 -17
- package/dist/Errors.d.ts +3 -3
- package/dist/Method.d.ts +35 -5
- package/dist/Method.js +7 -22
- package/dist/Store.d.ts +19 -0
- package/dist/Store.js +43 -0
- package/dist/attestation/Client.d.ts +17 -0
- package/dist/attestation/Client.js +28 -0
- package/dist/attestation/Constants.d.ts +15 -0
- package/dist/attestation/Constants.js +15 -0
- package/dist/attestation/Server.d.ts +4 -0
- package/dist/attestation/Server.js +8 -0
- package/dist/attestation/Types.d.ts +76 -0
- package/dist/attestation/Types.js +2 -0
- package/dist/attestation/index.d.ts +6 -0
- package/dist/attestation/index.js +6 -0
- package/dist/attestation/internal/HttpMessageSignature.d.ts +73 -0
- package/dist/attestation/internal/HttpMessageSignature.js +320 -0
- package/dist/attestation/internal/SigningContext.d.ts +4 -0
- package/dist/attestation/internal/SigningContext.js +11 -0
- package/dist/bin.js +3 -3
- package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
- package/dist/cli/account.d.ts +14 -14
- package/dist/cli/cli.d.ts +6 -6
- package/dist/cli/cli.js +253 -1504
- package/dist/cli/plugins/index.js +19 -5
- package/dist/cli/plugins/tempo.js +7 -3
- package/dist/cli/sessions/Manager.js +7 -4
- package/dist/cli/sessions/commands.d.ts +4 -4
- package/dist/cli/sessions/request.d.ts +2 -0
- package/dist/cli/sessions/request.js +18 -0
- package/dist/cli/sessions/store.js +28 -14
- package/dist/cli/utils.d.ts +1 -1
- package/dist/cli/validate/index.d.ts +3 -3
- package/dist/client/Mppx.d.ts +3 -0
- package/dist/client/Mppx.js +13 -5
- package/dist/client/Transport.d.ts +3 -5
- package/dist/client/Transport.js +1 -17
- package/dist/client/internal/Fetch.js +2 -6
- package/dist/discovery/Discovery.js +2 -1
- package/dist/discovery/OpenApi.d.ts +3 -5
- package/dist/discovery/OpenApi.js +13 -34
- package/dist/discovery/internal/Metadata.d.ts +20 -0
- package/dist/discovery/internal/Metadata.js +36 -0
- package/dist/evm/Methods.d.ts +11 -11
- package/dist/evm/Types.d.ts +17 -17
- package/dist/evm/client/Charge.d.ts +11 -11
- package/dist/evm/client/Charge.js +8 -0
- package/dist/evm/client/Methods.d.ts +11 -11
- package/dist/evm/server/Charge.d.ts +1 -1
- package/dist/evm/server/Charge.js +2 -0
- package/dist/evm/server/Methods.d.ts +11 -11
- package/dist/internal/HeaderCodec.d.ts +2 -2
- package/dist/internal/types.d.ts +6 -0
- package/dist/proxy/Proxy.d.ts +2 -0
- package/dist/proxy/Proxy.js +117 -9
- package/dist/proxy/Service.d.ts +36 -1
- package/dist/proxy/Service.js +9 -8
- package/dist/proxy/services/anthropic.js +1 -0
- package/dist/proxy/services/openai.js +1 -0
- package/dist/proxy/services/stripe.js +1 -0
- package/dist/server/Mppx.d.ts +75 -13
- package/dist/server/Mppx.js +201 -23
- package/dist/server/core.d.ts +9 -0
- package/dist/server/core.js +9 -0
- package/dist/server/internal/html/config.d.ts +9 -9
- package/dist/server/internal/html/constants.d.ts +17 -17
- package/dist/stripe/Methods.d.ts +10 -10
- package/dist/stripe/client/Charge.d.ts +10 -10
- package/dist/stripe/client/Methods.d.ts +10 -10
- package/dist/stripe/internal/constants.d.ts +1 -1
- package/dist/stripe/internal/constants.js +1 -1
- package/dist/stripe/internal/types.d.ts +1 -0
- package/dist/stripe/server/Charge.d.ts +11 -11
- package/dist/stripe/server/Charge.js +51 -5
- package/dist/stripe/server/Methods.d.ts +137 -48
- package/dist/stripe/server/Methods.js +265 -4
- package/dist/stripe/server/internal/deposit-address.d.ts +13 -0
- package/dist/stripe/server/internal/deposit-address.js +28 -0
- package/dist/stripe/server/internal/html.gen.d.ts +1 -1
- package/dist/stripe/server/internal/html.gen.js +1 -1
- package/dist/stripe/server/internal/record-payment.d.ts +15 -0
- package/dist/stripe/server/internal/record-payment.js +42 -0
- package/dist/stripe/server/internal/request.d.ts +25 -0
- package/dist/stripe/server/internal/request.js +29 -0
- package/dist/stripe/server/spt.d.ts +8 -0
- package/dist/stripe/server/spt.js +8 -0
- package/dist/tap/Constants.d.ts +28 -0
- package/dist/tap/Constants.js +32 -0
- package/dist/tap/Types.d.ts +11 -0
- package/dist/tap/Types.js +2 -0
- package/dist/tap/client/index.d.ts +26 -0
- package/dist/tap/client/index.js +33 -0
- package/dist/tap/index.d.ts +5 -0
- package/dist/tap/index.js +5 -0
- package/dist/tap/server/index.d.ts +20 -0
- package/dist/tap/server/index.js +36 -0
- package/dist/tempo/Attribution.d.ts +1 -1
- package/dist/tempo/Methods.d.ts +73 -60
- package/dist/tempo/Methods.js +14 -3
- package/dist/tempo/Proof.d.ts +16 -16
- package/dist/tempo/client/Charge.d.ts +22 -19
- package/dist/tempo/client/Charge.js +32 -16
- package/dist/tempo/client/Methods.d.ts +51 -38
- package/dist/tempo/client/Subscription.d.ts +23 -23
- package/dist/tempo/internal/address.d.ts +2 -1
- package/dist/tempo/internal/address.js +3 -1
- package/dist/tempo/internal/auto-swap.js +4 -19
- package/dist/tempo/internal/defaults.d.ts +17 -6
- package/dist/tempo/internal/defaults.js +11 -0
- package/dist/tempo/internal/fee-payer.d.ts +12 -12
- package/dist/tempo/internal/machine-token-charge.d.ts +51 -0
- package/dist/tempo/internal/machine-token-charge.js +113 -0
- package/dist/tempo/internal/machine-token-session.d.ts +88 -0
- package/dist/tempo/internal/machine-token-session.js +173 -0
- package/dist/tempo/internal/proof.d.ts +17 -17
- package/dist/tempo/internal/signature-envelope.d.ts +14 -0
- package/dist/tempo/internal/signature-envelope.js +28 -0
- package/dist/tempo/legacy/client/ChannelOps.d.ts +2 -2
- package/dist/tempo/legacy/client/ChannelOps.js +11 -5
- package/dist/tempo/legacy/client/Session.d.ts +33 -21
- package/dist/tempo/legacy/client/Session.js +3 -3
- package/dist/tempo/legacy/client/SessionManager.d.ts +3 -1
- package/dist/tempo/legacy/client/SessionManager.js +2 -0
- package/dist/tempo/legacy/index.d.ts +1 -3
- package/dist/tempo/legacy/index.js +1 -3
- package/dist/tempo/legacy/session/escrow.abi.d.ts +374 -374
- package/dist/tempo/server/Charge.d.ts +28 -11
- package/dist/tempo/server/Charge.js +101 -55
- package/dist/tempo/server/Methods.d.ts +58 -56
- package/dist/tempo/server/Methods.js +8 -18
- package/dist/tempo/server/Relay.d.ts +1 -1
- package/dist/tempo/server/Relay.js +2 -2
- package/dist/tempo/server/Subscription.d.ts +25 -25
- package/dist/tempo/server/Subscription.js +2 -0
- package/dist/tempo/server/index.d.ts +1 -1
- package/dist/tempo/server/index.js +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/server/internal/transport.d.ts +2 -0
- package/dist/tempo/server/internal/transport.js +9 -2
- package/dist/tempo/session/client/ChannelOps.d.ts +18 -3
- package/dist/tempo/session/client/ChannelOps.js +35 -6
- package/dist/tempo/session/client/ChannelStore.d.ts +0 -5
- package/dist/tempo/session/client/ChannelStore.js +2 -2
- package/dist/tempo/session/client/CredentialState.d.ts +18 -3
- package/dist/tempo/session/client/CredentialState.js +77 -76
- package/dist/tempo/session/client/Runtime.d.ts +4 -2
- package/dist/tempo/session/client/Runtime.js +21 -5
- package/dist/tempo/session/client/Session.d.ts +34 -22
- package/dist/tempo/session/client/Session.js +186 -63
- package/dist/tempo/session/client/SessionManager.d.ts +3 -1
- package/dist/tempo/session/client/SessionManager.js +35 -11
- package/dist/tempo/session/client/Transports.d.ts +2 -0
- package/dist/tempo/session/client/Transports.js +12 -2
- package/dist/tempo/session/precompile/Chain.d.ts +37 -2
- package/dist/tempo/session/precompile/Chain.js +116 -15
- package/dist/tempo/session/precompile/Protocol.d.ts +15 -0
- package/dist/tempo/session/precompile/Protocol.js +7 -0
- package/dist/tempo/session/precompile/Voucher.d.ts +7 -5
- package/dist/tempo/session/precompile/Voucher.js +6 -12
- package/dist/tempo/session/precompile/escrow.abi.d.ts +306 -306
- package/dist/tempo/session/server/ChannelStore.d.ts +15 -0
- package/dist/tempo/session/server/ChannelStore.js +27 -12
- package/dist/tempo/session/server/CredentialVerification.d.ts +39 -20
- package/dist/tempo/session/server/CredentialVerification.js +359 -89
- package/dist/tempo/session/server/MeteredStream.d.ts +4 -1
- package/dist/tempo/session/server/MeteredStream.js +8 -5
- package/dist/tempo/session/server/RequestState.d.ts +19 -0
- package/dist/tempo/session/server/RequestState.js +61 -15
- package/dist/tempo/session/server/Session.d.ts +46 -23
- package/dist/tempo/session/server/Session.js +150 -56
- package/dist/tempo/session/server/Settlement.d.ts +11 -4
- package/dist/tempo/session/server/Settlement.js +53 -21
- package/dist/tempo/session/server/Sse.d.ts +3 -1
- package/dist/tempo/session/server/Sse.js +2 -1
- package/dist/tempo/session/server/Transports.d.ts +1 -1
- package/dist/tempo/session/server/Transports.js +1 -0
- package/dist/tempo/session/server/Ws.d.ts +6 -1
- package/dist/tempo/session/server/Ws.js +1 -0
- package/dist/tempo/subscription/KeyAuthorization.d.ts +39 -39
- package/dist/web-bot-auth/Constants.d.ts +20 -0
- package/dist/web-bot-auth/Constants.js +24 -0
- package/dist/web-bot-auth/Types.d.ts +10 -0
- package/dist/web-bot-auth/Types.js +2 -0
- package/dist/web-bot-auth/client/index.d.ts +29 -0
- package/dist/web-bot-auth/client/index.js +64 -0
- package/dist/web-bot-auth/index.d.ts +7 -0
- package/dist/web-bot-auth/index.js +7 -0
- package/dist/web-bot-auth/internal/JwkThumbprint.d.ts +5 -0
- package/dist/web-bot-auth/internal/JwkThumbprint.js +20 -0
- package/dist/web-bot-auth/internal/SignatureAgent.d.ts +3 -0
- package/dist/web-bot-auth/internal/SignatureAgent.js +18 -0
- package/dist/web-bot-auth/server/index.d.ts +35 -0
- package/dist/web-bot-auth/server/index.js +88 -0
- package/dist/x402/Types.d.ts +6 -6
- package/dist/x402/client/Exact.d.ts +8 -0
- package/dist/x402/client/Exact.js +40 -10
- package/dist/x402/server/EvmCharge.d.ts +22 -0
- package/dist/x402/server/EvmCharge.js +54 -20
- package/package.json +28 -34
- package/dist/BodyDigest.d.ts.map +0 -1
- package/dist/BodyDigest.js.map +0 -1
- package/dist/Challenge.d.ts.map +0 -1
- package/dist/Challenge.js.map +0 -1
- package/dist/Constants.d.ts.map +0 -1
- package/dist/Constants.js.map +0 -1
- package/dist/Credential.d.ts.map +0 -1
- package/dist/Credential.js.map +0 -1
- package/dist/Errors.d.ts.map +0 -1
- package/dist/Errors.js.map +0 -1
- package/dist/Expires.d.ts.map +0 -1
- package/dist/Expires.js.map +0 -1
- package/dist/Html.d.ts.map +0 -1
- package/dist/Html.js.map +0 -1
- package/dist/Mcp.d.ts.map +0 -1
- package/dist/Mcp.js.map +0 -1
- package/dist/Method.d.ts.map +0 -1
- package/dist/Method.js.map +0 -1
- package/dist/PaymentRequest.d.ts.map +0 -1
- package/dist/PaymentRequest.js.map +0 -1
- package/dist/Receipt.d.ts.map +0 -1
- package/dist/Receipt.js.map +0 -1
- package/dist/Store.d.ts.map +0 -1
- package/dist/Store.js.map +0 -1
- package/dist/bin.d.ts.map +0 -1
- package/dist/bin.js.map +0 -1
- package/dist/cli/account.d.ts.map +0 -1
- package/dist/cli/account.js.map +0 -1
- package/dist/cli/cli.d.ts.map +0 -1
- package/dist/cli/cli.js.map +0 -1
- package/dist/cli/config.d.ts.map +0 -1
- package/dist/cli/config.js.map +0 -1
- package/dist/cli/internal.d.ts.map +0 -1
- package/dist/cli/internal.js.map +0 -1
- package/dist/cli/plugins/evm.d.ts.map +0 -1
- package/dist/cli/plugins/evm.js.map +0 -1
- package/dist/cli/plugins/index.d.ts.map +0 -1
- package/dist/cli/plugins/index.js.map +0 -1
- package/dist/cli/plugins/plugin.d.ts.map +0 -1
- package/dist/cli/plugins/plugin.js.map +0 -1
- package/dist/cli/plugins/stripe.d.ts.map +0 -1
- package/dist/cli/plugins/stripe.js.map +0 -1
- package/dist/cli/plugins/tempo.d.ts.map +0 -1
- package/dist/cli/plugins/tempo.js.map +0 -1
- package/dist/cli/sessions/Manager.d.ts.map +0 -1
- package/dist/cli/sessions/Manager.js.map +0 -1
- package/dist/cli/sessions/commands.d.ts.map +0 -1
- package/dist/cli/sessions/commands.js.map +0 -1
- package/dist/cli/sessions/request.d.ts.map +0 -1
- package/dist/cli/sessions/request.js.map +0 -1
- package/dist/cli/sessions/store.d.ts.map +0 -1
- package/dist/cli/sessions/store.js.map +0 -1
- package/dist/cli/utils.d.ts.map +0 -1
- package/dist/cli/utils.js.map +0 -1
- package/dist/cli/validate/challenge.d.ts.map +0 -1
- package/dist/cli/validate/challenge.js.map +0 -1
- package/dist/cli/validate/discovery.d.ts.map +0 -1
- package/dist/cli/validate/discovery.js.map +0 -1
- package/dist/cli/validate/helpers.d.ts.map +0 -1
- package/dist/cli/validate/helpers.js.map +0 -1
- package/dist/cli/validate/index.d.ts.map +0 -1
- package/dist/cli/validate/index.js.map +0 -1
- package/dist/cli/validate/messages.d.ts.map +0 -1
- package/dist/cli/validate/messages.js.map +0 -1
- package/dist/cli/validate/payment.d.ts.map +0 -1
- package/dist/cli/validate/payment.js.map +0 -1
- package/dist/client/Methods.d.ts.map +0 -1
- package/dist/client/Methods.js.map +0 -1
- package/dist/client/Mppx.d.ts.map +0 -1
- package/dist/client/Mppx.js.map +0 -1
- package/dist/client/Transport.d.ts.map +0 -1
- package/dist/client/Transport.js.map +0 -1
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js.map +0 -1
- package/dist/client/internal/Fetch.d.ts.map +0 -1
- package/dist/client/internal/Fetch.js.map +0 -1
- package/dist/client/internal/MethodChallenge.d.ts.map +0 -1
- package/dist/client/internal/MethodChallenge.js.map +0 -1
- package/dist/client/internal/MethodResponse.d.ts.map +0 -1
- package/dist/client/internal/MethodResponse.js.map +0 -1
- package/dist/client/internal/protocols/Mcp.d.ts.map +0 -1
- package/dist/client/internal/protocols/Mcp.js.map +0 -1
- package/dist/client/internal/protocols/Mpp.d.ts.map +0 -1
- package/dist/client/internal/protocols/Mpp.js.map +0 -1
- package/dist/client/internal/protocols/Protocol.d.ts.map +0 -1
- package/dist/client/internal/protocols/Protocol.js.map +0 -1
- package/dist/client/internal/protocols/Shared.d.ts.map +0 -1
- package/dist/client/internal/protocols/Shared.js.map +0 -1
- package/dist/client/internal/protocols/X402.d.ts.map +0 -1
- package/dist/client/internal/protocols/X402.js.map +0 -1
- package/dist/client/node.d.ts.map +0 -1
- package/dist/client/node.js.map +0 -1
- package/dist/discovery/Discovery.d.ts.map +0 -1
- package/dist/discovery/Discovery.js.map +0 -1
- package/dist/discovery/OpenApi.d.ts.map +0 -1
- package/dist/discovery/OpenApi.js.map +0 -1
- package/dist/discovery/Validate.d.ts.map +0 -1
- package/dist/discovery/Validate.js.map +0 -1
- package/dist/discovery/index.d.ts.map +0 -1
- package/dist/discovery/index.js.map +0 -1
- package/dist/evm/Assets.d.ts.map +0 -1
- package/dist/evm/Assets.js.map +0 -1
- package/dist/evm/Chains.d.ts.map +0 -1
- package/dist/evm/Chains.js.map +0 -1
- package/dist/evm/Methods.d.ts.map +0 -1
- package/dist/evm/Methods.js.map +0 -1
- package/dist/evm/Types.d.ts.map +0 -1
- package/dist/evm/Types.js.map +0 -1
- package/dist/evm/client/Charge.d.ts.map +0 -1
- package/dist/evm/client/Charge.js.map +0 -1
- package/dist/evm/client/Methods.d.ts.map +0 -1
- package/dist/evm/client/Methods.js.map +0 -1
- package/dist/evm/client/index.d.ts.map +0 -1
- package/dist/evm/client/index.js.map +0 -1
- package/dist/evm/index.d.ts.map +0 -1
- package/dist/evm/index.js.map +0 -1
- package/dist/evm/server/Charge.d.ts.map +0 -1
- package/dist/evm/server/Charge.js.map +0 -1
- package/dist/evm/server/Methods.d.ts.map +0 -1
- package/dist/evm/server/Methods.js.map +0 -1
- package/dist/evm/server/index.d.ts.map +0 -1
- package/dist/evm/server/index.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/AcceptPayment.d.ts.map +0 -1
- package/dist/internal/AcceptPayment.js.map +0 -1
- package/dist/internal/HeaderCodec.d.ts.map +0 -1
- package/dist/internal/HeaderCodec.js.map +0 -1
- package/dist/internal/constantTimeEqual.d.ts.map +0 -1
- package/dist/internal/constantTimeEqual.js.map +0 -1
- package/dist/internal/env.d.ts.map +0 -1
- package/dist/internal/env.js.map +0 -1
- package/dist/internal/types.d.ts.map +0 -1
- package/dist/internal/types.js.map +0 -1
- package/dist/mcp/client/McpClient.d.ts.map +0 -1
- package/dist/mcp/client/McpClient.js.map +0 -1
- package/dist/mcp/client/index.d.ts.map +0 -1
- package/dist/mcp/client/index.js.map +0 -1
- package/dist/mcp/server/Transport.d.ts.map +0 -1
- package/dist/mcp/server/Transport.js.map +0 -1
- package/dist/mcp/server/index.d.ts.map +0 -1
- package/dist/mcp/server/index.js.map +0 -1
- package/dist/middlewares/elysia.d.ts.map +0 -1
- package/dist/middlewares/elysia.js.map +0 -1
- package/dist/middlewares/express.d.ts.map +0 -1
- package/dist/middlewares/express.js.map +0 -1
- package/dist/middlewares/hono.d.ts.map +0 -1
- package/dist/middlewares/hono.js.map +0 -1
- package/dist/middlewares/internal/mppx.d.ts.map +0 -1
- package/dist/middlewares/internal/mppx.js.map +0 -1
- package/dist/middlewares/nextjs.d.ts.map +0 -1
- package/dist/middlewares/nextjs.js.map +0 -1
- package/dist/proxy/Proxy.d.ts.map +0 -1
- package/dist/proxy/Proxy.js.map +0 -1
- package/dist/proxy/Service.d.ts.map +0 -1
- package/dist/proxy/Service.js.map +0 -1
- package/dist/proxy/index.d.ts.map +0 -1
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/internal/Headers.d.ts.map +0 -1
- package/dist/proxy/internal/Headers.js.map +0 -1
- package/dist/proxy/internal/Route.d.ts.map +0 -1
- package/dist/proxy/internal/Route.js.map +0 -1
- package/dist/proxy/services/anthropic.d.ts.map +0 -1
- package/dist/proxy/services/anthropic.js.map +0 -1
- package/dist/proxy/services/openai.d.ts.map +0 -1
- package/dist/proxy/services/openai.js.map +0 -1
- package/dist/proxy/services/stripe.d.ts.map +0 -1
- package/dist/proxy/services/stripe.js.map +0 -1
- package/dist/server/Methods.d.ts.map +0 -1
- package/dist/server/Methods.js.map +0 -1
- package/dist/server/Mppx.d.ts.map +0 -1
- package/dist/server/Mppx.js.map +0 -1
- package/dist/server/NodeListener.d.ts.map +0 -1
- package/dist/server/NodeListener.js.map +0 -1
- package/dist/server/Request.d.ts.map +0 -1
- package/dist/server/Request.js.map +0 -1
- package/dist/server/Response.d.ts.map +0 -1
- package/dist/server/Response.js.map +0 -1
- package/dist/server/Transport.d.ts.map +0 -1
- package/dist/server/Transport.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/internal/html/compose.main.gen.d.ts.map +0 -1
- package/dist/server/internal/html/compose.main.gen.js.map +0 -1
- package/dist/server/internal/html/config.d.ts.map +0 -1
- package/dist/server/internal/html/config.js.map +0 -1
- package/dist/server/internal/html/constants.d.ts.map +0 -1
- package/dist/server/internal/html/constants.js.map +0 -1
- package/dist/server/internal/html/serviceWorker.client.d.ts.map +0 -1
- package/dist/server/internal/html/serviceWorker.client.js.map +0 -1
- package/dist/server/internal/html/serviceWorker.gen.d.ts.map +0 -1
- package/dist/server/internal/html/serviceWorker.gen.js.map +0 -1
- package/dist/server/internal/scope.d.ts.map +0 -1
- package/dist/server/internal/scope.js.map +0 -1
- package/dist/stripe/Methods.d.ts.map +0 -1
- package/dist/stripe/Methods.js.map +0 -1
- package/dist/stripe/client/Charge.d.ts.map +0 -1
- package/dist/stripe/client/Charge.js.map +0 -1
- package/dist/stripe/client/Methods.d.ts.map +0 -1
- package/dist/stripe/client/Methods.js.map +0 -1
- package/dist/stripe/client/index.d.ts.map +0 -1
- package/dist/stripe/client/index.js.map +0 -1
- package/dist/stripe/index.d.ts.map +0 -1
- package/dist/stripe/index.js.map +0 -1
- package/dist/stripe/internal/constants.d.ts.map +0 -1
- package/dist/stripe/internal/constants.js.map +0 -1
- package/dist/stripe/internal/types.d.ts.map +0 -1
- package/dist/stripe/internal/types.js.map +0 -1
- package/dist/stripe/server/Charge.d.ts.map +0 -1
- package/dist/stripe/server/Charge.js.map +0 -1
- package/dist/stripe/server/Methods.d.ts.map +0 -1
- package/dist/stripe/server/Methods.js.map +0 -1
- package/dist/stripe/server/index.d.ts.map +0 -1
- package/dist/stripe/server/index.js.map +0 -1
- package/dist/stripe/server/internal/html/types.d.ts.map +0 -1
- package/dist/stripe/server/internal/html/types.js.map +0 -1
- package/dist/stripe/server/internal/html.gen.d.ts.map +0 -1
- package/dist/stripe/server/internal/html.gen.js.map +0 -1
- package/dist/tempo/Attribution.d.ts.map +0 -1
- package/dist/tempo/Attribution.js.map +0 -1
- package/dist/tempo/Methods.d.ts.map +0 -1
- package/dist/tempo/Methods.js.map +0 -1
- package/dist/tempo/Proof.d.ts.map +0 -1
- package/dist/tempo/Proof.js.map +0 -1
- package/dist/tempo/client/Charge.d.ts.map +0 -1
- package/dist/tempo/client/Charge.js.map +0 -1
- package/dist/tempo/client/Methods.d.ts.map +0 -1
- package/dist/tempo/client/Methods.js.map +0 -1
- package/dist/tempo/client/ResolveAccount.d.ts.map +0 -1
- package/dist/tempo/client/ResolveAccount.js.map +0 -1
- package/dist/tempo/client/Subscription.d.ts.map +0 -1
- package/dist/tempo/client/Subscription.js.map +0 -1
- package/dist/tempo/client/index.d.ts.map +0 -1
- package/dist/tempo/client/index.js.map +0 -1
- package/dist/tempo/index.d.ts.map +0 -1
- package/dist/tempo/index.js.map +0 -1
- package/dist/tempo/internal/account.d.ts.map +0 -1
- package/dist/tempo/internal/account.js.map +0 -1
- package/dist/tempo/internal/address.d.ts.map +0 -1
- package/dist/tempo/internal/address.js.map +0 -1
- package/dist/tempo/internal/auto-swap.d.ts.map +0 -1
- package/dist/tempo/internal/auto-swap.js.map +0 -1
- package/dist/tempo/internal/charge.d.ts.map +0 -1
- package/dist/tempo/internal/charge.js.map +0 -1
- package/dist/tempo/internal/defaults.d.ts.map +0 -1
- package/dist/tempo/internal/defaults.js.map +0 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +0 -1
- package/dist/tempo/internal/fee-payer.js.map +0 -1
- package/dist/tempo/internal/fee-token.d.ts.map +0 -1
- package/dist/tempo/internal/fee-token.js.map +0 -1
- package/dist/tempo/internal/proof.d.ts.map +0 -1
- package/dist/tempo/internal/proof.js.map +0 -1
- package/dist/tempo/internal/selectors.d.ts.map +0 -1
- package/dist/tempo/internal/selectors.js.map +0 -1
- package/dist/tempo/internal/types.d.ts.map +0 -1
- package/dist/tempo/internal/types.js.map +0 -1
- package/dist/tempo/legacy/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/legacy/client/ChannelOps.js.map +0 -1
- package/dist/tempo/legacy/client/Session.d.ts.map +0 -1
- package/dist/tempo/legacy/client/Session.js.map +0 -1
- package/dist/tempo/legacy/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/legacy/client/SessionManager.js.map +0 -1
- package/dist/tempo/legacy/client/index.d.ts.map +0 -1
- package/dist/tempo/legacy/client/index.js.map +0 -1
- package/dist/tempo/legacy/index.d.ts.map +0 -1
- package/dist/tempo/legacy/index.js.map +0 -1
- package/dist/tempo/legacy/server/Session.d.ts +0 -208
- package/dist/tempo/legacy/server/Session.d.ts.map +0 -1
- package/dist/tempo/legacy/server/Session.js +0 -698
- package/dist/tempo/legacy/server/Session.js.map +0 -1
- package/dist/tempo/legacy/server/index.d.ts +0 -5
- package/dist/tempo/legacy/server/index.d.ts.map +0 -1
- package/dist/tempo/legacy/server/index.js +0 -5
- package/dist/tempo/legacy/server/index.js.map +0 -1
- package/dist/tempo/legacy/session/Chain.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Chain.js.map +0 -1
- package/dist/tempo/legacy/session/Channel.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Channel.js.map +0 -1
- package/dist/tempo/legacy/session/ChannelStore.d.ts +0 -22
- package/dist/tempo/legacy/session/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/legacy/session/ChannelStore.js +0 -6
- package/dist/tempo/legacy/session/ChannelStore.js.map +0 -1
- package/dist/tempo/legacy/session/Types.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Types.js.map +0 -1
- package/dist/tempo/legacy/session/Voucher.d.ts.map +0 -1
- package/dist/tempo/legacy/session/Voucher.js.map +0 -1
- package/dist/tempo/legacy/session/escrow.abi.d.ts.map +0 -1
- package/dist/tempo/legacy/session/escrow.abi.js.map +0 -1
- package/dist/tempo/legacy/session/index.d.ts.map +0 -1
- package/dist/tempo/legacy/session/index.js.map +0 -1
- package/dist/tempo/server/Charge.d.ts.map +0 -1
- package/dist/tempo/server/Charge.js.map +0 -1
- package/dist/tempo/server/Methods.d.ts.map +0 -1
- package/dist/tempo/server/Methods.js.map +0 -1
- package/dist/tempo/server/Relay.d.ts.map +0 -1
- package/dist/tempo/server/Relay.js.map +0 -1
- package/dist/tempo/server/SponsorBudget.d.ts.map +0 -1
- package/dist/tempo/server/SponsorBudget.js.map +0 -1
- package/dist/tempo/server/Subscription.d.ts.map +0 -1
- package/dist/tempo/server/Subscription.js.map +0 -1
- package/dist/tempo/server/index.d.ts.map +0 -1
- package/dist/tempo/server/index.js.map +0 -1
- package/dist/tempo/server/internal/html.gen.d.ts.map +0 -1
- package/dist/tempo/server/internal/html.gen.js.map +0 -1
- package/dist/tempo/server/internal/request-body.d.ts.map +0 -1
- package/dist/tempo/server/internal/request-body.js.map +0 -1
- package/dist/tempo/server/internal/transport.d.ts.map +0 -1
- package/dist/tempo/server/internal/transport.js.map +0 -1
- package/dist/tempo/session/Snapshot.d.ts.map +0 -1
- package/dist/tempo/session/Snapshot.js.map +0 -1
- package/dist/tempo/session/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/session/client/ChannelOps.js.map +0 -1
- package/dist/tempo/session/client/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/client/ChannelStore.js.map +0 -1
- package/dist/tempo/session/client/CredentialState.d.ts.map +0 -1
- package/dist/tempo/session/client/CredentialState.js.map +0 -1
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +0 -1
- package/dist/tempo/session/client/ReceiptCoordinator.js.map +0 -1
- package/dist/tempo/session/client/Runtime.d.ts.map +0 -1
- package/dist/tempo/session/client/Runtime.js.map +0 -1
- package/dist/tempo/session/client/Session.d.ts.map +0 -1
- package/dist/tempo/session/client/Session.js.map +0 -1
- package/dist/tempo/session/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/session/client/SessionManager.js.map +0 -1
- package/dist/tempo/session/client/Transports.d.ts.map +0 -1
- package/dist/tempo/session/client/Transports.js.map +0 -1
- package/dist/tempo/session/client/index.d.ts.map +0 -1
- package/dist/tempo/session/client/index.js.map +0 -1
- package/dist/tempo/session/client/internal/SessionManager.d.ts.map +0 -1
- package/dist/tempo/session/client/internal/SessionManager.js.map +0 -1
- package/dist/tempo/session/index.d.ts.map +0 -1
- package/dist/tempo/session/index.js.map +0 -1
- package/dist/tempo/session/precompile/Chain.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Chain.js.map +0 -1
- package/dist/tempo/session/precompile/Channel.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Channel.js.map +0 -1
- package/dist/tempo/session/precompile/Protocol.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Protocol.js.map +0 -1
- package/dist/tempo/session/precompile/Voucher.d.ts.map +0 -1
- package/dist/tempo/session/precompile/Voucher.js.map +0 -1
- package/dist/tempo/session/precompile/escrow.abi.d.ts.map +0 -1
- package/dist/tempo/session/precompile/escrow.abi.js.map +0 -1
- package/dist/tempo/session/precompile/index.d.ts.map +0 -1
- package/dist/tempo/session/precompile/index.js.map +0 -1
- package/dist/tempo/session/server/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/session/server/ChannelOps.js.map +0 -1
- package/dist/tempo/session/server/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/server/ChannelStore.js.map +0 -1
- package/dist/tempo/session/server/CredentialVerification.d.ts.map +0 -1
- package/dist/tempo/session/server/CredentialVerification.js.map +0 -1
- package/dist/tempo/session/server/MeteredStream.d.ts.map +0 -1
- package/dist/tempo/session/server/MeteredStream.js.map +0 -1
- package/dist/tempo/session/server/RequestState.d.ts.map +0 -1
- package/dist/tempo/session/server/RequestState.js.map +0 -1
- package/dist/tempo/session/server/Session.d.ts.map +0 -1
- package/dist/tempo/session/server/Session.js.map +0 -1
- package/dist/tempo/session/server/Settlement.d.ts.map +0 -1
- package/dist/tempo/session/server/Settlement.js.map +0 -1
- package/dist/tempo/session/server/Sse.d.ts.map +0 -1
- package/dist/tempo/session/server/Sse.js.map +0 -1
- package/dist/tempo/session/server/Transports.d.ts.map +0 -1
- package/dist/tempo/session/server/Transports.js.map +0 -1
- package/dist/tempo/session/server/Ws.d.ts.map +0 -1
- package/dist/tempo/session/server/Ws.js.map +0 -1
- package/dist/tempo/session/server/index.d.ts.map +0 -1
- package/dist/tempo/session/server/index.js.map +0 -1
- package/dist/tempo/subscription/KeyAuthorization.d.ts.map +0 -1
- package/dist/tempo/subscription/KeyAuthorization.js.map +0 -1
- package/dist/tempo/subscription/Receipt.d.ts.map +0 -1
- package/dist/tempo/subscription/Receipt.js.map +0 -1
- package/dist/tempo/subscription/Store.d.ts.map +0 -1
- package/dist/tempo/subscription/Store.js.map +0 -1
- package/dist/tempo/subscription/Types.d.ts.map +0 -1
- package/dist/tempo/subscription/Types.js.map +0 -1
- package/dist/tempo/subscription/index.d.ts.map +0 -1
- package/dist/tempo/subscription/index.js.map +0 -1
- package/dist/validation/core.d.ts.map +0 -1
- package/dist/validation/core.js.map +0 -1
- package/dist/validation/index.d.ts.map +0 -1
- package/dist/validation/index.js.map +0 -1
- package/dist/viem/Account.d.ts.map +0 -1
- package/dist/viem/Account.js.map +0 -1
- package/dist/viem/Client.d.ts.map +0 -1
- package/dist/viem/Client.js.map +0 -1
- package/dist/x402/Assets.d.ts.map +0 -1
- package/dist/x402/Assets.js.map +0 -1
- package/dist/x402/Header.d.ts.map +0 -1
- package/dist/x402/Header.js.map +0 -1
- package/dist/x402/Types.d.ts.map +0 -1
- package/dist/x402/Types.js.map +0 -1
- package/dist/x402/client/Exact.d.ts.map +0 -1
- package/dist/x402/client/Exact.js.map +0 -1
- package/dist/x402/index.d.ts.map +0 -1
- package/dist/x402/index.js.map +0 -1
- package/dist/x402/internal/ChallengeBrand.d.ts.map +0 -1
- package/dist/x402/internal/ChallengeBrand.js.map +0 -1
- package/dist/x402/internal/RouteBinding.d.ts.map +0 -1
- package/dist/x402/internal/RouteBinding.js.map +0 -1
- package/dist/x402/server/EvmCharge.d.ts.map +0 -1
- package/dist/x402/server/EvmCharge.js.map +0 -1
- package/dist/x402/server/Facilitator.d.ts.map +0 -1
- package/dist/x402/server/Facilitator.js.map +0 -1
- package/dist/zod.d.ts.map +0 -1
- package/dist/zod.js.map +0 -1
- package/src/BodyDigest.test.ts +0 -43
- package/src/BodyDigest.ts +0 -55
- package/src/Challenge.fuzz.test.ts +0 -121
- package/src/Challenge.test-d.ts +0 -82
- package/src/Challenge.test.ts +0 -995
- package/src/Challenge.ts +0 -683
- package/src/Constants.ts +0 -58
- package/src/Credential.fuzz.test.ts +0 -62
- package/src/Credential.test.ts +0 -378
- package/src/Credential.ts +0 -217
- package/src/Errors.test.ts +0 -520
- package/src/Errors.ts +0 -448
- package/src/Expires.test.ts +0 -112
- package/src/Expires.ts +0 -59
- package/src/Html.ts +0 -67
- package/src/Mcp.ts +0 -85
- package/src/Method.test.ts +0 -177
- package/src/Method.ts +0 -617
- package/src/PaymentRequest.test.ts +0 -147
- package/src/PaymentRequest.ts +0 -108
- package/src/Receipt.test.ts +0 -151
- package/src/Receipt.ts +0 -146
- package/src/Store.test-d.ts +0 -195
- package/src/Store.test.ts +0 -357
- package/src/Store.ts +0 -329
- package/src/bin.ts +0 -4
- package/src/cli/account.ts +0 -269
- package/src/cli/cli.test.ts +0 -2221
- package/src/cli/cli.ts +0 -1649
- package/src/cli/config.test.ts +0 -89
- package/src/cli/config.ts +0 -50
- package/src/cli/internal.ts +0 -114
- package/src/cli/mcp.test.ts +0 -262
- package/src/cli/plugins/evm.ts +0 -55
- package/src/cli/plugins/index.ts +0 -4
- package/src/cli/plugins/plugin.ts +0 -84
- package/src/cli/plugins/stripe.ts +0 -174
- package/src/cli/plugins/tempo.ts +0 -1102
- package/src/cli/sessions/Manager.test.ts +0 -249
- package/src/cli/sessions/Manager.ts +0 -93
- package/src/cli/sessions/commands.ts +0 -444
- package/src/cli/sessions/request.test.ts +0 -51
- package/src/cli/sessions/request.ts +0 -353
- package/src/cli/sessions/store.test.ts +0 -581
- package/src/cli/sessions/store.ts +0 -940
- package/src/cli/utils.test.ts +0 -156
- package/src/cli/utils.ts +0 -394
- package/src/cli/validate/challenge.ts +0 -565
- package/src/cli/validate/discovery.test.ts +0 -435
- package/src/cli/validate/discovery.ts +0 -221
- package/src/cli/validate/helpers.ts +0 -166
- package/src/cli/validate/index.ts +0 -229
- package/src/cli/validate/messages.ts +0 -7
- package/src/cli/validate/payment.ts +0 -774
- package/src/cli/validate.test.ts +0 -843
- package/src/client/Methods.ts +0 -8
- package/src/client/Mppx.test-d.ts +0 -270
- package/src/client/Mppx.test.ts +0 -1065
- package/src/client/Mppx.ts +0 -466
- package/src/client/Transport.test.ts +0 -619
- package/src/client/Transport.ts +0 -191
- package/src/client/index.ts +0 -29
- package/src/client/internal/Fetch.browser.test.ts +0 -197
- package/src/client/internal/Fetch.test-d.ts +0 -109
- package/src/client/internal/Fetch.test.ts +0 -2336
- package/src/client/internal/Fetch.ts +0 -1079
- package/src/client/internal/MethodChallenge.ts +0 -35
- package/src/client/internal/MethodResponse.ts +0 -67
- package/src/client/internal/protocols/Mcp.test.ts +0 -220
- package/src/client/internal/protocols/Mcp.ts +0 -186
- package/src/client/internal/protocols/Mpp.ts +0 -21
- package/src/client/internal/protocols/Protocol.ts +0 -10
- package/src/client/internal/protocols/Shared.ts +0 -25
- package/src/client/internal/protocols/X402.ts +0 -46
- package/src/client/node.test.ts +0 -115
- package/src/client/node.ts +0 -247
- package/src/discovery/Discovery.test.ts +0 -214
- package/src/discovery/Discovery.ts +0 -105
- package/src/discovery/OpenApi.test.ts +0 -453
- package/src/discovery/OpenApi.ts +0 -224
- package/src/discovery/Validate.test.ts +0 -305
- package/src/discovery/Validate.ts +0 -77
- package/src/discovery/index.ts +0 -3
- package/src/env.d.ts +0 -12
- package/src/evm/Assets.ts +0 -1
- package/src/evm/Chains.ts +0 -11
- package/src/evm/Methods.ts +0 -44
- package/src/evm/PublicInterface.test-d.ts +0 -134
- package/src/evm/Types.ts +0 -140
- package/src/evm/client/Charge.test.ts +0 -347
- package/src/evm/client/Charge.ts +0 -187
- package/src/evm/client/Methods.ts +0 -19
- package/src/evm/client/index.ts +0 -6
- package/src/evm/index.ts +0 -16
- package/src/evm/server/Charge.test.ts +0 -339
- package/src/evm/server/Charge.ts +0 -290
- package/src/evm/server/Methods.ts +0 -22
- package/src/evm/server/index.ts +0 -6
- package/src/index.ts +0 -14
- package/src/internal/AcceptPayment.test.ts +0 -343
- package/src/internal/AcceptPayment.ts +0 -366
- package/src/internal/HeaderCodec.ts +0 -36
- package/src/internal/changeset.test.ts +0 -106
- package/src/internal/constantTimeEqual.test.ts +0 -47
- package/src/internal/constantTimeEqual.ts +0 -10
- package/src/internal/env.test.ts +0 -42
- package/src/internal/env.ts +0 -49
- package/src/internal/types.test-d.ts +0 -21
- package/src/internal/types.ts +0 -470
- package/src/mcp/client/McpClient.integration.test.ts +0 -652
- package/src/mcp/client/McpClient.test-d.ts +0 -144
- package/src/mcp/client/McpClient.test.ts +0 -463
- package/src/mcp/client/McpClient.ts +0 -307
- package/src/mcp/client/McpClient.unit.test.ts +0 -135
- package/src/mcp/client/index.ts +0 -2
- package/src/mcp/server/Transport.test.ts +0 -191
- package/src/mcp/server/Transport.ts +0 -111
- package/src/mcp/server/index.ts +0 -1
- package/src/middlewares/elysia.test.ts +0 -295
- package/src/middlewares/elysia.ts +0 -116
- package/src/middlewares/express.test.ts +0 -371
- package/src/middlewares/express.ts +0 -140
- package/src/middlewares/hono.test.ts +0 -476
- package/src/middlewares/hono.ts +0 -153
- package/src/middlewares/internal/mppx.test.ts +0 -177
- package/src/middlewares/internal/mppx.ts +0 -67
- package/src/middlewares/nextjs.test.ts +0 -369
- package/src/middlewares/nextjs.ts +0 -107
- package/src/proxy/Proxy.test.ts +0 -1031
- package/src/proxy/Proxy.ts +0 -345
- package/src/proxy/Service.test.ts +0 -182
- package/src/proxy/Service.ts +0 -253
- package/src/proxy/index.ts +0 -6
- package/src/proxy/internal/Headers.test.ts +0 -139
- package/src/proxy/internal/Headers.ts +0 -66
- package/src/proxy/internal/Route.test.ts +0 -217
- package/src/proxy/internal/Route.ts +0 -64
- package/src/proxy/services/anthropic.test.ts +0 -132
- package/src/proxy/services/anthropic.ts +0 -52
- package/src/proxy/services/openai.test.ts +0 -157
- package/src/proxy/services/openai.ts +0 -59
- package/src/proxy/services/stripe.test.ts +0 -175
- package/src/proxy/services/stripe.ts +0 -58
- package/src/server/Methods.ts +0 -3
- package/src/server/Mppx.authorize.test.ts +0 -210
- package/src/server/Mppx.test-d.ts +0 -360
- package/src/server/Mppx.test.ts +0 -5813
- package/src/server/Mppx.ts +0 -2623
- package/src/server/NodeListener.test.ts +0 -293
- package/src/server/NodeListener.ts +0 -45
- package/src/server/Request.test.ts +0 -255
- package/src/server/Request.ts +0 -155
- package/src/server/Response.test.ts +0 -32
- package/src/server/Response.ts +0 -45
- package/src/server/Transport.test.ts +0 -598
- package/src/server/Transport.ts +0 -320
- package/src/server/index.ts +0 -9
- package/src/server/internal/html/compose.main.gen.ts +0 -2
- package/src/server/internal/html/compose.main.ts +0 -88
- package/src/server/internal/html/config.ts +0 -672
- package/src/server/internal/html/constants.ts +0 -28
- package/src/server/internal/html/serviceWorker.client.ts +0 -28
- package/src/server/internal/html/serviceWorker.gen.ts +0 -2
- package/src/server/internal/html/serviceWorker.ts +0 -27
- package/src/server/internal/html/tsconfig.compose.json +0 -8
- package/src/server/internal/html/tsconfig.worker.client.json +0 -8
- package/src/server/internal/html/tsconfig.worker.json +0 -8
- package/src/server/internal/scope.ts +0 -43
- package/src/stripe/Charge.integration.test.ts +0 -329
- package/src/stripe/Methods.test.ts +0 -62
- package/src/stripe/Methods.ts +0 -44
- package/src/stripe/client/Charge.test.ts +0 -205
- package/src/stripe/client/Charge.ts +0 -132
- package/src/stripe/client/Methods.ts +0 -37
- package/src/stripe/client/index.ts +0 -2
- package/src/stripe/index.ts +0 -1
- package/src/stripe/internal/constants.ts +0 -7
- package/src/stripe/internal/types.ts +0 -46
- package/src/stripe/server/Charge.test-d.ts +0 -66
- package/src/stripe/server/Charge.test.ts +0 -621
- package/src/stripe/server/Charge.ts +0 -434
- package/src/stripe/server/Methods.ts +0 -24
- package/src/stripe/server/index.ts +0 -2
- package/src/stripe/server/internal/html/main.ts +0 -165
- package/src/stripe/server/internal/html/node_modules/.bin/mppx +0 -22
- package/src/stripe/server/internal/html/node_modules/.bin/mppx.src +0 -22
- package/src/stripe/server/internal/html/package.json +0 -9
- package/src/stripe/server/internal/html/stripe-js-pure.d.ts +0 -7
- package/src/stripe/server/internal/html/tsconfig.json +0 -8
- package/src/stripe/server/internal/html/types.ts +0 -5
- package/src/stripe/server/internal/html.gen.ts +0 -2
- package/src/tempo/AccessKeyAuthorization.test.ts +0 -141
- package/src/tempo/Attribution.test.ts +0 -294
- package/src/tempo/Attribution.ts +0 -185
- package/src/tempo/Methods.test.ts +0 -425
- package/src/tempo/Methods.ts +0 -367
- package/src/tempo/Proof.conformance.test.ts +0 -146
- package/src/tempo/Proof.test-d.ts +0 -32
- package/src/tempo/Proof.test.ts +0 -40
- package/src/tempo/Proof.ts +0 -69
- package/src/tempo/PublicExports.test-d.ts +0 -130
- package/src/tempo/Subscription.integration.test.ts +0 -591
- package/src/tempo/client/Charge.test.ts +0 -501
- package/src/tempo/client/Charge.ts +0 -289
- package/src/tempo/client/Methods.ts +0 -45
- package/src/tempo/client/ResolveAccount.ts +0 -46
- package/src/tempo/client/Subscription.test.ts +0 -180
- package/src/tempo/client/Subscription.ts +0 -156
- package/src/tempo/client/index.ts +0 -17
- package/src/tempo/index.ts +0 -5
- package/src/tempo/internal/account.ts +0 -56
- package/src/tempo/internal/address.ts +0 -6
- package/src/tempo/internal/auto-swap.test.ts +0 -198
- package/src/tempo/internal/auto-swap.ts +0 -188
- package/src/tempo/internal/charge.test.ts +0 -66
- package/src/tempo/internal/charge.ts +0 -43
- package/src/tempo/internal/defaults.test.ts +0 -95
- package/src/tempo/internal/defaults.ts +0 -53
- package/src/tempo/internal/fee-payer.test.ts +0 -1177
- package/src/tempo/internal/fee-payer.ts +0 -808
- package/src/tempo/internal/fee-token.test.ts +0 -165
- package/src/tempo/internal/fee-token.ts +0 -72
- package/src/tempo/internal/proof.test.ts +0 -97
- package/src/tempo/internal/proof.ts +0 -87
- package/src/tempo/internal/selectors.ts +0 -10
- package/src/tempo/internal/types.ts +0 -19
- package/src/tempo/legacy/AccessKeyAuthorization.test.ts +0 -162
- package/src/tempo/legacy/README.md +0 -9
- package/src/tempo/legacy/client/ChannelOps.test.ts +0 -379
- package/src/tempo/legacy/client/ChannelOps.ts +0 -271
- package/src/tempo/legacy/client/Session.test.ts +0 -800
- package/src/tempo/legacy/client/Session.ts +0 -397
- package/src/tempo/legacy/client/SessionManager.test.ts +0 -468
- package/src/tempo/legacy/client/SessionManager.ts +0 -909
- package/src/tempo/legacy/client/index.ts +0 -6
- package/src/tempo/legacy/index.ts +0 -6
- package/src/tempo/legacy/server/Defaults.test-d.ts +0 -9
- package/src/tempo/legacy/server/Session.test.ts +0 -6370
- package/src/tempo/legacy/server/Session.ts +0 -1024
- package/src/tempo/legacy/server/index.ts +0 -4
- package/src/tempo/legacy/session/Chain.test.ts +0 -1349
- package/src/tempo/legacy/session/Chain.ts +0 -830
- package/src/tempo/legacy/session/Channel.test.ts +0 -109
- package/src/tempo/legacy/session/Channel.ts +0 -51
- package/src/tempo/legacy/session/ChannelStore.test.ts +0 -58
- package/src/tempo/legacy/session/ChannelStore.ts +0 -39
- package/src/tempo/legacy/session/Types.ts +0 -91
- package/src/tempo/legacy/session/Voucher.test.ts +0 -410
- package/src/tempo/legacy/session/Voucher.ts +0 -183
- package/src/tempo/legacy/session/escrow.abi.ts +0 -760
- package/src/tempo/legacy/session/index.ts +0 -8
- package/src/tempo/server/AtomicStore.test-d.ts +0 -50
- package/src/tempo/server/Charge.test.ts +0 -6121
- package/src/tempo/server/Charge.ts +0 -1351
- package/src/tempo/server/Methods.ts +0 -106
- package/src/tempo/server/Relay.test.ts +0 -677
- package/src/tempo/server/Relay.ts +0 -297
- package/src/tempo/server/SponsorBudget.test.ts +0 -154
- package/src/tempo/server/SponsorBudget.ts +0 -219
- package/src/tempo/server/Sse.test.ts +0 -321
- package/src/tempo/server/Subscription.test.ts +0 -1944
- package/src/tempo/server/Subscription.ts +0 -1333
- package/src/tempo/server/index.ts +0 -12
- package/src/tempo/server/internal/html/main.ts +0 -115
- package/src/tempo/server/internal/html/node_modules/.bin/mppx +0 -22
- package/src/tempo/server/internal/html/node_modules/.bin/mppx.src +0 -22
- package/src/tempo/server/internal/html/package.json +0 -10
- package/src/tempo/server/internal/html/tsconfig.json +0 -8
- package/src/tempo/server/internal/html.gen.ts +0 -2
- package/src/tempo/server/internal/request-body.test.ts +0 -210
- package/src/tempo/server/internal/request-body.ts +0 -61
- package/src/tempo/server/internal/transport.test.ts +0 -903
- package/src/tempo/server/internal/transport.ts +0 -310
- package/src/tempo/session/README.md +0 -208
- package/src/tempo/session/Snapshot.test.ts +0 -41
- package/src/tempo/session/Snapshot.ts +0 -95
- package/src/tempo/session/client/ChannelOps.test.ts +0 -218
- package/src/tempo/session/client/ChannelOps.ts +0 -348
- package/src/tempo/session/client/ChannelStore.ts +0 -111
- package/src/tempo/session/client/CredentialState.test.ts +0 -789
- package/src/tempo/session/client/CredentialState.ts +0 -942
- package/src/tempo/session/client/ReceiptCoordinator.ts +0 -95
- package/src/tempo/session/client/Runtime.test.ts +0 -1104
- package/src/tempo/session/client/Runtime.ts +0 -1008
- package/src/tempo/session/client/Session.test.ts +0 -1355
- package/src/tempo/session/client/Session.ts +0 -420
- package/src/tempo/session/client/SessionManager.test.ts +0 -1899
- package/src/tempo/session/client/SessionManager.ts +0 -996
- package/src/tempo/session/client/Transports.test.ts +0 -1141
- package/src/tempo/session/client/Transports.ts +0 -1534
- package/src/tempo/session/client/index.ts +0 -40
- package/src/tempo/session/client/internal/SessionManager.ts +0 -36
- package/src/tempo/session/index.ts +0 -7
- package/src/tempo/session/precompile/Chain.integration.test.ts +0 -339
- package/src/tempo/session/precompile/Chain.test.ts +0 -1641
- package/src/tempo/session/precompile/Chain.ts +0 -1149
- package/src/tempo/session/precompile/Channel.test.ts +0 -147
- package/src/tempo/session/precompile/Channel.ts +0 -108
- package/src/tempo/session/precompile/Protocol.test.ts +0 -358
- package/src/tempo/session/precompile/Protocol.ts +0 -520
- package/src/tempo/session/precompile/Voucher.test.ts +0 -354
- package/src/tempo/session/precompile/Voucher.ts +0 -162
- package/src/tempo/session/precompile/escrow.abi.ts +0 -226
- package/src/tempo/session/precompile/index.ts +0 -33
- package/src/tempo/session/server/ChannelOps.test.ts +0 -129
- package/src/tempo/session/server/ChannelOps.ts +0 -157
- package/src/tempo/session/server/ChannelStore.test.ts +0 -1093
- package/src/tempo/session/server/ChannelStore.ts +0 -835
- package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
- package/src/tempo/session/server/CredentialVerification.ts +0 -775
- package/src/tempo/session/server/MeteredStream.ts +0 -95
- package/src/tempo/session/server/RequestState.test.ts +0 -574
- package/src/tempo/session/server/RequestState.ts +0 -507
- package/src/tempo/session/server/Session.integration.test.ts +0 -449
- package/src/tempo/session/server/Session.test.ts +0 -3862
- package/src/tempo/session/server/Session.ts +0 -570
- package/src/tempo/session/server/Settlement.test.ts +0 -345
- package/src/tempo/session/server/Settlement.ts +0 -527
- package/src/tempo/session/server/Sse.fuzz.test.ts +0 -138
- package/src/tempo/session/server/Sse.test.ts +0 -557
- package/src/tempo/session/server/Sse.ts +0 -254
- package/src/tempo/session/server/Transports.test.ts +0 -346
- package/src/tempo/session/server/Transports.ts +0 -255
- package/src/tempo/session/server/Ws.test.ts +0 -594
- package/src/tempo/session/server/Ws.ts +0 -385
- package/src/tempo/session/server/index.ts +0 -12
- package/src/tempo/subscription/KeyAuthorization.test.ts +0 -282
- package/src/tempo/subscription/KeyAuthorization.ts +0 -396
- package/src/tempo/subscription/Receipt.ts +0 -28
- package/src/tempo/subscription/Store.test.ts +0 -609
- package/src/tempo/subscription/Store.ts +0 -449
- package/src/tempo/subscription/Types.ts +0 -68
- package/src/tempo/subscription/index.ts +0 -23
- package/src/tsconfig.json +0 -10
- package/src/validation/core.ts +0 -386
- package/src/validation/index.ts +0 -11
- package/src/viem/Account.test.ts +0 -72
- package/src/viem/Account.ts +0 -30
- package/src/viem/Client.test.ts +0 -366
- package/src/viem/Client.ts +0 -93
- package/src/x402/Assets.test.ts +0 -253
- package/src/x402/Assets.ts +0 -221
- package/src/x402/Exact.e2e.test.ts +0 -448
- package/src/x402/Exact.localnet.test.ts +0 -475
- package/src/x402/Header.test.ts +0 -73
- package/src/x402/Header.ts +0 -79
- package/src/x402/PublicInterface.test-d.ts +0 -39
- package/src/x402/Types.ts +0 -248
- package/src/x402/client/Exact.test.ts +0 -309
- package/src/x402/client/Exact.ts +0 -186
- package/src/x402/index.ts +0 -6
- package/src/x402/internal/ChallengeBrand.ts +0 -14
- package/src/x402/internal/RouteBinding.ts +0 -18
- package/src/x402/server/EvmCharge.ts +0 -394
- package/src/x402/server/Facilitator.test.ts +0 -111
- package/src/x402/server/Facilitator.ts +0 -56
- package/src/zod.test.ts +0 -169
- package/src/zod.ts +0 -71
|
@@ -1,310 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tempo-specific SSE transport that wraps the base HTTP transport
|
|
3
|
-
* with metering logic (context capture from verified credentials, per-token
|
|
4
|
-
* charging via Sse.serve).
|
|
5
|
-
*
|
|
6
|
-
* @internal
|
|
7
|
-
*/
|
|
8
|
-
import * as Challenge from '../../../Challenge.js'
|
|
9
|
-
import * as Constants from '../../../Constants.js'
|
|
10
|
-
import * as Errors from '../../../Errors.js'
|
|
11
|
-
import * as Transport from '../../../server/Transport.js'
|
|
12
|
-
import type { SessionReceipt } from '../../session/precompile/Protocol.js'
|
|
13
|
-
import { requireSessionCredentialContext } from '../../session/precompile/Protocol.js'
|
|
14
|
-
import * as ChannelStore from '../../session/server/ChannelStore.js'
|
|
15
|
-
import * as Sse_core from '../../session/server/Sse.js'
|
|
16
|
-
import { captureRequestBodyProbe, shouldChargePlainResponse } from './request-body.js'
|
|
17
|
-
|
|
18
|
-
const prepaidSessionTick = Symbol('mppx.prepaidSessionTick')
|
|
19
|
-
|
|
20
|
-
/** SSE transport with Tempo session controller. */
|
|
21
|
-
export type Sse = Transport.Sse<Sse_core.SessionController>
|
|
22
|
-
|
|
23
|
-
/** Receipt marker used to avoid double-charging a request already charged during verification. */
|
|
24
|
-
export type PrepaidSessionReceipt = SessionReceipt & {
|
|
25
|
-
[prepaidSessionTick]?: true | undefined
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/** Marks a session receipt as already charged for the current request. */
|
|
29
|
-
export function markPrepaidSessionTick(receipt: SessionReceipt): SessionReceipt {
|
|
30
|
-
Object.defineProperty(receipt, prepaidSessionTick, {
|
|
31
|
-
configurable: false,
|
|
32
|
-
enumerable: false,
|
|
33
|
-
value: true,
|
|
34
|
-
})
|
|
35
|
-
return receipt
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
function hasPrepaidSessionTick(receipt: SessionReceipt): boolean {
|
|
39
|
-
return (receipt as PrepaidSessionReceipt)[prepaidSessionTick] === true
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Creates a Tempo-metered SSE transport.
|
|
44
|
-
*
|
|
45
|
-
* Wraps an HTTP transport with:
|
|
46
|
-
* - Context capture from credentials (channelId, tickCost)
|
|
47
|
-
* - Per-token charging via Sse.serve for generator/iterable responses
|
|
48
|
-
* - Auto-detection of upstream SSE responses
|
|
49
|
-
* - Fallback to standard HTTP receipt handling for plain Response
|
|
50
|
-
*/
|
|
51
|
-
export function sse(options: sse.Options & { store: ChannelStore.ChannelStore }): Sse {
|
|
52
|
-
const { pollingInterval, poll } = options
|
|
53
|
-
|
|
54
|
-
// When `poll` is true, strip `waitForUpdate` so the SSE charge loop
|
|
55
|
-
// falls back to polling. This is needed for runtimes like Cloudflare Workers
|
|
56
|
-
// where resolving promises across request contexts is not supported.
|
|
57
|
-
const store = (() => {
|
|
58
|
-
if (!poll) return options.store
|
|
59
|
-
const { waitForUpdate: _, ...store } = options.store
|
|
60
|
-
return store
|
|
61
|
-
})()
|
|
62
|
-
|
|
63
|
-
const base = Transport.http()
|
|
64
|
-
return Transport.from<Request, Response, Transport.ReceiptResponseOf<Sse>, Response>({
|
|
65
|
-
name: 'sse',
|
|
66
|
-
|
|
67
|
-
captureRequest(request) {
|
|
68
|
-
return (
|
|
69
|
-
base.captureRequest?.(request) ?? {
|
|
70
|
-
headers: new Headers(request.headers),
|
|
71
|
-
hasBody: request.body !== null,
|
|
72
|
-
method: request.method,
|
|
73
|
-
url: new URL(request.url),
|
|
74
|
-
}
|
|
75
|
-
)
|
|
76
|
-
},
|
|
77
|
-
|
|
78
|
-
getCredential(request) {
|
|
79
|
-
return base.getCredential(request)
|
|
80
|
-
},
|
|
81
|
-
|
|
82
|
-
respondChallenge(options) {
|
|
83
|
-
return base.respondChallenge(options) as Response
|
|
84
|
-
},
|
|
85
|
-
|
|
86
|
-
respondReceipt({ credential, envelope, receipt, response, challengeId, input }) {
|
|
87
|
-
const verifiedCredential = envelope?.credential ?? credential
|
|
88
|
-
const verifiedChallengeId = envelope?.challenge.id ?? challengeId
|
|
89
|
-
const verifiedRequest = envelope?.request ?? verifiedCredential.challenge.request
|
|
90
|
-
const payload = requireSessionCredentialContext(
|
|
91
|
-
verifiedCredential.payload,
|
|
92
|
-
'No SSE context available',
|
|
93
|
-
)
|
|
94
|
-
const channelId = payload.channelId
|
|
95
|
-
const tickCost = BigInt(verifiedCredential.challenge.request.amount as string)
|
|
96
|
-
const unitType =
|
|
97
|
-
typeof verifiedRequest.unitType === 'string' ? verifiedRequest.unitType : undefined
|
|
98
|
-
|
|
99
|
-
// Auto-detect upstream SSE responses and parse them into an
|
|
100
|
-
// AsyncIterable so they flow through the metered pipeline.
|
|
101
|
-
// This lets proxy consumers simply pass `result.withReceipt(upstreamRes)`
|
|
102
|
-
// and get per-event charging automatically.
|
|
103
|
-
const resolved =
|
|
104
|
-
response instanceof Response && Sse_core.isEventStream(response) && response.body
|
|
105
|
-
? Sse_core.iterateData(response, { skip: (d) => d === '[DONE]' })
|
|
106
|
-
: response
|
|
107
|
-
|
|
108
|
-
if (isAsyncGeneratorFunction(resolved) || isAsyncIterable(resolved)) {
|
|
109
|
-
// Pass async generator functions directly so Sse.serve gives them
|
|
110
|
-
// a SessionController for manual charge(). Pass raw AsyncIterables
|
|
111
|
-
// as-is so Sse.serve auto-charges per yielded value.
|
|
112
|
-
const generate = resolveMeteredGenerate(resolved, unitType)
|
|
113
|
-
const stream = Sse_core.serve({
|
|
114
|
-
store,
|
|
115
|
-
channelId,
|
|
116
|
-
challengeId: verifiedChallengeId,
|
|
117
|
-
tickCost,
|
|
118
|
-
pollIntervalMs: pollingInterval,
|
|
119
|
-
generate,
|
|
120
|
-
prepaidUnits: hasPrepaidSessionTick(receipt as SessionReceipt) ? 1 : 0,
|
|
121
|
-
signal: input.signal,
|
|
122
|
-
})
|
|
123
|
-
return Sse_core.toResponse(stream)
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
const baseResponse = base.respondReceipt({
|
|
127
|
-
credential: verifiedCredential,
|
|
128
|
-
envelope,
|
|
129
|
-
input,
|
|
130
|
-
receipt,
|
|
131
|
-
response: response as Response,
|
|
132
|
-
challengeId: verifiedChallengeId,
|
|
133
|
-
})
|
|
134
|
-
|
|
135
|
-
const request = envelope?.capturedRequest ?? captureRequestBodyProbe(input)
|
|
136
|
-
if (!shouldChargePlainResponse(request, payload)) {
|
|
137
|
-
return baseResponse
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
const currentReceipt = receipt as SessionReceipt
|
|
141
|
-
if (hasPrepaidSessionTick(currentReceipt)) {
|
|
142
|
-
return baseResponse
|
|
143
|
-
}
|
|
144
|
-
const available = BigInt(currentReceipt.acceptedCumulative) - BigInt(currentReceipt.spent)
|
|
145
|
-
if (available < tickCost) {
|
|
146
|
-
const error = new Errors.InsufficientBalanceError({
|
|
147
|
-
reason: `requested ${tickCost}, available ${available}`,
|
|
148
|
-
})
|
|
149
|
-
return new Response(
|
|
150
|
-
JSON.stringify(error.toProblemDetails(verifiedCredential.challenge.id)),
|
|
151
|
-
{
|
|
152
|
-
status: error.status,
|
|
153
|
-
headers: {
|
|
154
|
-
[Constants.Headers.wwwAuthenticate]: Challenge.serialize(
|
|
155
|
-
verifiedCredential.challenge,
|
|
156
|
-
),
|
|
157
|
-
'Cache-Control': 'no-store',
|
|
158
|
-
'Content-Type': 'application/problem+json',
|
|
159
|
-
},
|
|
160
|
-
},
|
|
161
|
-
)
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
const chargedReceipt: SessionReceipt = {
|
|
165
|
-
...currentReceipt,
|
|
166
|
-
spent: (BigInt(currentReceipt.spent) + tickCost).toString(),
|
|
167
|
-
units: (currentReceipt.units ?? 0) + 1,
|
|
168
|
-
}
|
|
169
|
-
const chargedResponse = base.respondReceipt({
|
|
170
|
-
credential: verifiedCredential,
|
|
171
|
-
envelope,
|
|
172
|
-
input,
|
|
173
|
-
receipt: chargedReceipt,
|
|
174
|
-
response: response as Response,
|
|
175
|
-
challengeId: verifiedChallengeId,
|
|
176
|
-
})
|
|
177
|
-
|
|
178
|
-
// Non-SSE response (e.g. upstream returned JSON instead of event-stream).
|
|
179
|
-
// Need to deduct tickCost so request isn't free.
|
|
180
|
-
// For null-body statuses, the request shape determines whether the
|
|
181
|
-
// response is management (no charge) or plain content (charge one tick).
|
|
182
|
-
if (isNullBodyStatus(chargedResponse.status)) {
|
|
183
|
-
void ChannelStore.deductFromChannel(store, channelId, tickCost)
|
|
184
|
-
return chargedResponse
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
const stream = new ReadableStream<Uint8Array>({
|
|
188
|
-
async start(controller) {
|
|
189
|
-
// deduction completes before consumer reads
|
|
190
|
-
const result = await ChannelStore.deductFromChannel(store, channelId, tickCost)
|
|
191
|
-
if (!result.ok) {
|
|
192
|
-
controller.error(
|
|
193
|
-
new Errors.InsufficientBalanceError({
|
|
194
|
-
reason: `requested ${tickCost}, available ${
|
|
195
|
-
result.channel.highestVoucherAmount - result.channel.spent
|
|
196
|
-
}`,
|
|
197
|
-
}),
|
|
198
|
-
)
|
|
199
|
-
return
|
|
200
|
-
}
|
|
201
|
-
if (!chargedResponse.body) {
|
|
202
|
-
controller.close()
|
|
203
|
-
return
|
|
204
|
-
}
|
|
205
|
-
const reader = chargedResponse.body.getReader()
|
|
206
|
-
try {
|
|
207
|
-
while (true) {
|
|
208
|
-
const { done, value } = await reader.read()
|
|
209
|
-
if (done) break
|
|
210
|
-
controller.enqueue(value)
|
|
211
|
-
}
|
|
212
|
-
} finally {
|
|
213
|
-
reader.releaseLock()
|
|
214
|
-
controller.close()
|
|
215
|
-
}
|
|
216
|
-
},
|
|
217
|
-
})
|
|
218
|
-
return new Response(stream, {
|
|
219
|
-
status: chargedResponse.status,
|
|
220
|
-
statusText: chargedResponse.statusText,
|
|
221
|
-
headers: chargedResponse.headers,
|
|
222
|
-
})
|
|
223
|
-
},
|
|
224
|
-
})
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/** Type helpers for the Tempo SSE transport adapter. */
|
|
228
|
-
export declare namespace sse {
|
|
229
|
-
type Options = {
|
|
230
|
-
/**
|
|
231
|
-
* When true, the charge loop uses polling instead of `waitForUpdate()`.
|
|
232
|
-
*
|
|
233
|
-
* Required for runtimes like Cloudflare Workers where resolving promises
|
|
234
|
-
* across request contexts is not supported. Without this flag, a mid-stream
|
|
235
|
-
* voucher POST (Request B) would resolve a waiter created in the streaming
|
|
236
|
-
* request context (Request A), causing a Workers error.
|
|
237
|
-
*
|
|
238
|
-
* @default false
|
|
239
|
-
*/
|
|
240
|
-
poll?: boolean | undefined
|
|
241
|
-
/** Polling interval (in milliseconds). @default 10 */
|
|
242
|
-
pollingInterval?: number | undefined
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
type DefaultServeGenerate = AsyncIterable<string> | (() => AsyncIterable<string>)
|
|
247
|
-
|
|
248
|
-
/** Default SSE serve: iterates values and emits `event: message` per value. */
|
|
249
|
-
export function defaultServe(options: {
|
|
250
|
-
generate: DefaultServeGenerate
|
|
251
|
-
challengeId: string
|
|
252
|
-
}): Response {
|
|
253
|
-
const iterable = typeof options.generate === 'function' ? options.generate() : options.generate
|
|
254
|
-
const encoder = new TextEncoder()
|
|
255
|
-
const stream = new ReadableStream<Uint8Array>({
|
|
256
|
-
async start(controller) {
|
|
257
|
-
try {
|
|
258
|
-
for await (const value of iterable) {
|
|
259
|
-
controller.enqueue(encoder.encode(Sse_core.formatMessageEvent(value)))
|
|
260
|
-
}
|
|
261
|
-
} catch (e) {
|
|
262
|
-
controller.error(e)
|
|
263
|
-
} finally {
|
|
264
|
-
controller.close()
|
|
265
|
-
}
|
|
266
|
-
},
|
|
267
|
-
})
|
|
268
|
-
return new Response(stream, {
|
|
269
|
-
headers: {
|
|
270
|
-
'Content-Type': 'text/event-stream; charset=utf-8',
|
|
271
|
-
'Cache-Control': 'no-cache, no-transform',
|
|
272
|
-
Connection: 'keep-alive',
|
|
273
|
-
},
|
|
274
|
-
})
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
function isAsyncGeneratorFunction(
|
|
278
|
-
value: unknown,
|
|
279
|
-
): value is (...args: unknown[]) => AsyncIterable<string> {
|
|
280
|
-
if (typeof value !== 'function') return false
|
|
281
|
-
return value.constructor?.name === 'AsyncGeneratorFunction'
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
function isAsyncIterable(value: unknown): value is AsyncIterable<string> {
|
|
285
|
-
return value !== null && typeof value === 'object' && Symbol.asyncIterator in (value as object)
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
function resolveMeteredGenerate(
|
|
289
|
-
value: AsyncIterable<string> | ((...args: unknown[]) => AsyncIterable<string>),
|
|
290
|
-
unitType: string | undefined,
|
|
291
|
-
): Sse_core.serve.Options['generate'] {
|
|
292
|
-
if (isAsyncGeneratorFunction(value)) return value as Sse_core.serve.Options['generate']
|
|
293
|
-
if (unitType !== 'request') return value as AsyncIterable<string>
|
|
294
|
-
|
|
295
|
-
const iterable = value as AsyncIterable<string>
|
|
296
|
-
return async function* chargeOnce(stream) {
|
|
297
|
-
let charged = false
|
|
298
|
-
for await (const chunk of iterable) {
|
|
299
|
-
if (!charged) {
|
|
300
|
-
await stream.charge()
|
|
301
|
-
charged = true
|
|
302
|
-
}
|
|
303
|
-
yield chunk
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
function isNullBodyStatus(status: number): boolean {
|
|
309
|
-
return [101, 204, 205, 304].includes(status)
|
|
310
|
-
}
|
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
# Tempo Sessions design
|
|
2
|
-
|
|
3
|
-
Tempo Sessions implements TIP-1034 payment channels for repeated HTTP and
|
|
4
|
-
streaming payments. A session is a channel, not an application login session.
|
|
5
|
-
|
|
6
|
-
A payer authorizes a cumulative amount with a signed voucher. The server
|
|
7
|
-
accepts that authorization, records delivered spend, and settles on-chain under
|
|
8
|
-
server-owned policy.
|
|
9
|
-
|
|
10
|
-
## Design principles
|
|
11
|
-
|
|
12
|
-
1. A channel has distinct on-chain, server, and client state. No copy replaces
|
|
13
|
-
another authority.
|
|
14
|
-
2. Vouchers authorize value; server accounting records delivered value; chain
|
|
15
|
-
settlement captures value. These are separate operations.
|
|
16
|
-
3. The server atomically accepts vouchers and records charges. Multiple server
|
|
17
|
-
instances share one linearizable channel store.
|
|
18
|
-
4. Client persistence and server snapshots accelerate recovery. Neither is
|
|
19
|
-
proof of a reusable channel until cryptographic and chain validation pass.
|
|
20
|
-
5. Management credentials never invoke application content handlers.
|
|
21
|
-
6. Settlement policy belongs to the server. A client authorizes value but does
|
|
22
|
-
not choose when it is settled.
|
|
23
|
-
|
|
24
|
-
```mermaid
|
|
25
|
-
flowchart LR
|
|
26
|
-
client["Client"]
|
|
27
|
-
cache["Client ChannelStore\nrecovery cache"]
|
|
28
|
-
server["Server session method\nverification and accounting"]
|
|
29
|
-
ledger["Server AtomicStore\naccepted vouchers and spend"]
|
|
30
|
-
chain["Tempo escrow precompile\ndeposit, settlement, close state"]
|
|
31
|
-
|
|
32
|
-
client <--> cache
|
|
33
|
-
client -->|"transactions and vouchers"| server
|
|
34
|
-
client -->|"channel state reads"| chain
|
|
35
|
-
server <--> ledger
|
|
36
|
-
server -->|"validates, funds, settles"| chain
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
## Authority model
|
|
40
|
-
|
|
41
|
-
| State | Meaning | Authority |
|
|
42
|
-
| ---------------------------------- | ------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
43
|
-
| Channel descriptor and `channelId` | Immutable payer, payee, token, signer, operator, nonce, and salt identity. | Derived from descriptor, chain ID, and escrow address. Every boundary validates it. |
|
|
44
|
-
| On-chain channel state | Deposit, settled amount, and close state. | Tempo escrow precompile. |
|
|
45
|
-
| Signed voucher | Payer authorization of a cumulative amount for one channel. | Client signer; server verifies before accepting. |
|
|
46
|
-
| Server channel record | Highest accepted signed voucher, delivered `spent`, `units`, and settlement progress. | Server `AtomicStore`. |
|
|
47
|
-
| Client channel entry | Latest locally usable channel descriptor, deposit, and cumulative authorization. | Client `ChannelStore`; a cache. |
|
|
48
|
-
| `SessionSnapshot` | Server-provided recovery hint. | Untrusted until client validation. |
|
|
49
|
-
|
|
50
|
-
The amounts below have intentionally different meanings.
|
|
51
|
-
|
|
52
|
-
| Amount | Meaning | Rule |
|
|
53
|
-
| --------------------------------------------- | -------------------------------------------- | -------------------------------------------------------- |
|
|
54
|
-
| `acceptedCumulative` / `highestVoucherAmount` | Highest voucher the server accepted. | Never decreases. |
|
|
55
|
-
| `spent` | Value charged for content. | Never decreases; does not exceed accepted authorization. |
|
|
56
|
-
| `settled` / `settledOnChain` | Value captured by escrow. | Never decreases; chain-authoritative. |
|
|
57
|
-
| `requiredCumulative` | Authorization required for the next request. | It is a boundary, not a signed voucher. |
|
|
58
|
-
|
|
59
|
-
## Request lifecycle
|
|
60
|
-
|
|
61
|
-
The session method owns payment control flow. The route handler owns content.
|
|
62
|
-
|
|
63
|
-
```mermaid
|
|
64
|
-
sequenceDiagram
|
|
65
|
-
participant C as Client
|
|
66
|
-
participant S as Server session
|
|
67
|
-
participant L as AtomicStore
|
|
68
|
-
participant T as Tempo chain
|
|
69
|
-
participant H as Route handler
|
|
70
|
-
|
|
71
|
-
C->>S: protected request
|
|
72
|
-
S-->>C: 402 session challenge
|
|
73
|
-
C->>S: open or voucher credential
|
|
74
|
-
S->>T: validate channel state; broadcast management transaction when needed
|
|
75
|
-
S->>L: atomically accept voucher and record channel state
|
|
76
|
-
S->>L: charge billable HTTP content
|
|
77
|
-
S->>H: invoke only for a content credential
|
|
78
|
-
H-->>C: response with Payment-Receipt
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
`open` and `voucher` credentials may pay for a billable request. `topUp` and
|
|
82
|
-
`close` are management credentials: they return `204` and never invoke the
|
|
83
|
-
route handler. `open` and `voucher` used on non-billable requests are also
|
|
84
|
-
management updates.
|
|
85
|
-
|
|
86
|
-
When `Fetch.from` creates an automatic `open`, it keeps the channel entry
|
|
87
|
-
provisional until the server accepts the response or acknowledges the open with
|
|
88
|
-
a matching receipt or session snapshot. Rejected or unacknowledged opens are
|
|
89
|
-
discarded so the next request retries `open`; concurrent automatic opens for the
|
|
90
|
-
same payment scope are serialized. Direct credential creation and
|
|
91
|
-
`SessionManager` retain their existing lifecycle ownership.
|
|
92
|
-
|
|
93
|
-
The current HTTP contract is deliberately pre-handler: voucher acceptance and
|
|
94
|
-
default request charging occur before the handler runs. A handler failure can
|
|
95
|
-
therefore follow an accepted voucher and recorded `spent`. Sessions does not
|
|
96
|
-
promise an atomic “charge only after a successful handler” transaction.
|
|
97
|
-
|
|
98
|
-
Applications with irreversible work define their own idempotency and failure
|
|
99
|
-
behavior. SDK changes must preserve this boundary or introduce an explicit
|
|
100
|
-
prepare/commit contract rather than changing it implicitly.
|
|
101
|
-
|
|
102
|
-
## Recovery lifecycle
|
|
103
|
-
|
|
104
|
-
The application owns durable mapping from its authenticated request identity to
|
|
105
|
-
a channel ID. The SDK owns channel lookup, snapshot construction, and recovery
|
|
106
|
-
validation.
|
|
107
|
-
|
|
108
|
-
`resolveChannelId` is the only application-defined recovery boundary. It maps a
|
|
109
|
-
verified request identity to an existing channel ID. It does not authorize a
|
|
110
|
-
channel, recreate accounting, or trust a client-provided channel ID.
|
|
111
|
-
|
|
112
|
-
### Bootstrap configuration
|
|
113
|
-
|
|
114
|
-
Enable `bootstrap` when a client should recover an existing channel before its
|
|
115
|
-
first paid request:
|
|
116
|
-
|
|
117
|
-
```ts
|
|
118
|
-
tempo.session({
|
|
119
|
-
bootstrap: true,
|
|
120
|
-
resolveChannelId({ source, paymentRequest }) {
|
|
121
|
-
return db.findChannelId({
|
|
122
|
-
payer: parseSource(source),
|
|
123
|
-
payee: paymentRequest.recipient,
|
|
124
|
-
token: paymentRequest.currency,
|
|
125
|
-
// Include chain and escrow when the application supports more than one.
|
|
126
|
-
})
|
|
127
|
-
},
|
|
128
|
-
})
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
The hook resolves application identity and payment scope. The channel store
|
|
132
|
-
loads the returned primary key only; MPPx does not scan the store or define a
|
|
133
|
-
secondary-index format. If the request supplies a channel ID, MPPx uses it and
|
|
134
|
-
does not call the hook.
|
|
135
|
-
|
|
136
|
-
```mermaid
|
|
137
|
-
sequenceDiagram
|
|
138
|
-
participant C as Cold client
|
|
139
|
-
participant S as Server session
|
|
140
|
-
participant R as resolveChannelId
|
|
141
|
-
participant L as AtomicStore
|
|
142
|
-
participant T as Tempo chain
|
|
143
|
-
|
|
144
|
-
C->>S: HEAD protected resource
|
|
145
|
-
S-->>C: 402 zero-amount identity challenge
|
|
146
|
-
C->>S: HEAD with signed proof
|
|
147
|
-
S->>S: verify proof and recover source
|
|
148
|
-
S->>R: resolve source and payment scope to channelId
|
|
149
|
-
R-->>S: channelId or no result
|
|
150
|
-
S->>L: load compatible channel record
|
|
151
|
-
S->>S: validate chain, token, escrow, payee, and signed voucher
|
|
152
|
-
S-->>C: 204 with session snapshot when available
|
|
153
|
-
C->>T: read live channel state
|
|
154
|
-
C->>C: validate descriptor, signer, voucher, and state
|
|
155
|
-
C->>C: hydrate Client ChannelStore
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
A snapshot is never authorization. Before caching it, the client validates the
|
|
159
|
-
descriptor-derived ID, payer, authorized signer, signed voucher when present,
|
|
160
|
-
and live on-chain state. A snapshot that lacks a usable signed voucher cannot
|
|
161
|
-
create higher client authorization; the client reuses persisted state or opens
|
|
162
|
-
a channel instead.
|
|
163
|
-
|
|
164
|
-
## Streaming lifecycle
|
|
165
|
-
|
|
166
|
-
SSE and WebSocket are stream-metered. They do not reuse normal HTTP response
|
|
167
|
-
accounting. The server emits a voucher boundary as content is consumed; the
|
|
168
|
-
client submits the next signed cumulative voucher; the server accepts it and
|
|
169
|
-
emits a receipt before content continues.
|
|
170
|
-
|
|
171
|
-
```mermaid
|
|
172
|
-
sequenceDiagram
|
|
173
|
-
participant S as Metered server stream
|
|
174
|
-
participant C as Client transport driver
|
|
175
|
-
participant L as AtomicStore
|
|
176
|
-
|
|
177
|
-
S->>C: content
|
|
178
|
-
S->>C: need-voucher(requiredCumulative)
|
|
179
|
-
C->>C: enforce max deposit; top up when required
|
|
180
|
-
C->>S: signed voucher
|
|
181
|
-
S->>L: atomically accept voucher
|
|
182
|
-
S->>C: receipt
|
|
183
|
-
S->>C: continue content
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
The initial SSE POST is excluded from default HTTP charging to prevent double
|
|
187
|
-
counting. Stream accounting remains owned by the transport driver.
|
|
188
|
-
|
|
189
|
-
## Extension boundaries
|
|
190
|
-
|
|
191
|
-
| Change | Preserve |
|
|
192
|
-
| ------------------------------ | ----------------------------------------------------------------------------------------------- |
|
|
193
|
-
| Credential action or payload | Descriptor validation, source binding, action gate, receipt semantics, and atomic store update. |
|
|
194
|
-
| Voucher or accounting rule | Monotonic accepted/spent/settled values and linearizable updates. |
|
|
195
|
-
| Client planning or persistence | Channel scope key, recovery validation, max-deposit enforcement, and manual context behavior. |
|
|
196
|
-
| Bootstrap or snapshot | `resolveChannelId` ownership and client-side validation before cache hydration. |
|
|
197
|
-
| SSE or WebSocket transport | Transport-owned metering and receipt coordination; no HTTP double charge. |
|
|
198
|
-
|
|
199
|
-
The module boundaries implement these contracts:
|
|
200
|
-
|
|
201
|
-
| Module | Responsibility |
|
|
202
|
-
| --------------------------------------------------------------- | ----------------------------------------------------------------------------- |
|
|
203
|
-
| `precompile/` | Channel identity, chain calls, vouchers, and wire primitives. |
|
|
204
|
-
| `client/CredentialState.ts` and `client/ChannelOps.ts` | Credential planning, recovery validation, and client cache updates. |
|
|
205
|
-
| `server/CredentialVerification.ts` and `server/ChannelStore.ts` | Credential verification and authoritative atomic channel state. |
|
|
206
|
-
| `server/Settlement.ts` | Content accounting and server-owned settlement cadence. |
|
|
207
|
-
| `server/RequestState.ts` | Challenge context, bootstrap identity lookup, snapshots, and response gating. |
|
|
208
|
-
| `client/Transports.ts` and `server/Transports.ts` | SSE and WebSocket payment control messages. |
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { Base64 } from 'ox'
|
|
2
|
-
import { describe, expect, test } from 'vp/test'
|
|
3
|
-
|
|
4
|
-
import { deserializeSnapshot, serializeSnapshot, type SessionSnapshot } from './Snapshot.js'
|
|
5
|
-
|
|
6
|
-
const descriptor = {
|
|
7
|
-
authorizedSigner: '0x0000000000000000000000000000000000000001',
|
|
8
|
-
expiringNonceHash: `0x${'11'.repeat(32)}`,
|
|
9
|
-
operator: '0x0000000000000000000000000000000000000000',
|
|
10
|
-
payee: '0x0000000000000000000000000000000000000002',
|
|
11
|
-
payer: '0x0000000000000000000000000000000000000003',
|
|
12
|
-
salt: `0x${'22'.repeat(32)}`,
|
|
13
|
-
token: '0x20c0000000000000000000000000000000000001',
|
|
14
|
-
} as const
|
|
15
|
-
|
|
16
|
-
const snapshot = {
|
|
17
|
-
acceptedCumulative: '100',
|
|
18
|
-
chainId: 4217,
|
|
19
|
-
channelId: `0x${'aa'.repeat(32)}`,
|
|
20
|
-
deposit: '1000',
|
|
21
|
-
descriptor,
|
|
22
|
-
escrow: '0x4d50500000000000000000000000000000000000',
|
|
23
|
-
requiredCumulative: '100',
|
|
24
|
-
settled: '0',
|
|
25
|
-
spent: '50',
|
|
26
|
-
units: 5,
|
|
27
|
-
} satisfies SessionSnapshot
|
|
28
|
-
|
|
29
|
-
describe('SessionSnapshot', () => {
|
|
30
|
-
test('round-trips a valid snapshot header', () => {
|
|
31
|
-
expect(deserializeSnapshot(serializeSnapshot(snapshot))).toEqual(snapshot)
|
|
32
|
-
})
|
|
33
|
-
|
|
34
|
-
test('rejects malformed channel descriptors', () => {
|
|
35
|
-
const value = serializeSnapshot(snapshot)
|
|
36
|
-
const encoded = JSON.parse(Base64.toString(value)) as SessionSnapshot
|
|
37
|
-
encoded.descriptor = { ...descriptor, payee: 'not-an-address' as never }
|
|
38
|
-
|
|
39
|
-
expect(() => deserializeSnapshot(Base64.fromString(JSON.stringify(encoded)))).toThrow()
|
|
40
|
-
})
|
|
41
|
-
})
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import { isAddress, type Address, type Hex } from 'viem'
|
|
2
|
-
|
|
3
|
-
import * as HeaderCodec from '../../internal/HeaderCodec.js'
|
|
4
|
-
import * as z from '../../zod.js'
|
|
5
|
-
import type { ChannelDescriptor, RawAmountString } from './precompile/Protocol.js'
|
|
6
|
-
|
|
7
|
-
/** Server-provided reusable channel state used to bootstrap a client session. */
|
|
8
|
-
export type SessionSnapshot = {
|
|
9
|
-
/** Highest cumulative voucher amount the server has accepted for this channel. */
|
|
10
|
-
acceptedCumulative: RawAmountString
|
|
11
|
-
/** Tempo chain ID used to derive the channel ID and voucher domain. */
|
|
12
|
-
chainId: number
|
|
13
|
-
/** TIP-1034 channel ID derived from descriptor, escrow address, and chain ID. */
|
|
14
|
-
channelId: Hex
|
|
15
|
-
/** Timestamp when unilateral close was requested, when the channel is closing. */
|
|
16
|
-
closeRequestedAt?: RawAmountString | undefined
|
|
17
|
-
/** Current on-chain deposit ceiling for cumulative voucher authorization. */
|
|
18
|
-
deposit: RawAmountString
|
|
19
|
-
/** Full descriptor needed to recover the channel without client-side persistence. */
|
|
20
|
-
descriptor: ChannelDescriptor
|
|
21
|
-
/** Escrow precompile address used to derive the channel ID. */
|
|
22
|
-
escrow: Address
|
|
23
|
-
/** Minimum cumulative authorization needed for the challenged request or stream continuation. */
|
|
24
|
-
requiredCumulative: RawAmountString
|
|
25
|
-
/** Highest client-signed voucher accepted by the server. */
|
|
26
|
-
highestVoucher?:
|
|
27
|
-
| {
|
|
28
|
-
/** Channel identifier bound into the voucher signature. */
|
|
29
|
-
channelId: Hex
|
|
30
|
-
/** Cumulative authorization bound into the voucher signature. */
|
|
31
|
-
cumulativeAmount: RawAmountString
|
|
32
|
-
/** Original client signature proving the accepted cumulative authorization. */
|
|
33
|
-
signature: Hex
|
|
34
|
-
}
|
|
35
|
-
| undefined
|
|
36
|
-
/** Amount already settled on-chain. */
|
|
37
|
-
settled: RawAmountString
|
|
38
|
-
/** Amount consumed by delivered content according to server accounting. */
|
|
39
|
-
spent: RawAmountString
|
|
40
|
-
/** Paid units delivered by the server, when the transport reports them. */
|
|
41
|
-
units?: number | undefined
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
const addressSchema = z.custom<Address>(
|
|
45
|
-
(value) => typeof value === 'string' && isAddress(value, { strict: false }),
|
|
46
|
-
)
|
|
47
|
-
const hashSchema = z.custom<Hex>(
|
|
48
|
-
(value) => typeof value === 'string' && /^0x[0-9a-fA-F]{64}$/.test(value),
|
|
49
|
-
)
|
|
50
|
-
const hexSchema = z.custom<Hex>(
|
|
51
|
-
(value) => typeof value === 'string' && /^0x[0-9a-fA-F]+$/.test(value),
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
const channelDescriptorSchema = z.object({
|
|
55
|
-
authorizedSigner: addressSchema,
|
|
56
|
-
expiringNonceHash: hashSchema,
|
|
57
|
-
operator: addressSchema,
|
|
58
|
-
payee: addressSchema,
|
|
59
|
-
payer: addressSchema,
|
|
60
|
-
salt: hashSchema,
|
|
61
|
-
token: addressSchema,
|
|
62
|
-
})
|
|
63
|
-
|
|
64
|
-
const sessionSnapshotSchema = z.object({
|
|
65
|
-
acceptedCumulative: z.string(),
|
|
66
|
-
chainId: z.number(),
|
|
67
|
-
channelId: hashSchema,
|
|
68
|
-
closeRequestedAt: z.optional(z.string()),
|
|
69
|
-
deposit: z.string(),
|
|
70
|
-
descriptor: channelDescriptorSchema,
|
|
71
|
-
escrow: addressSchema,
|
|
72
|
-
highestVoucher: z.optional(
|
|
73
|
-
z.object({
|
|
74
|
-
channelId: hashSchema,
|
|
75
|
-
cumulativeAmount: z.string(),
|
|
76
|
-
signature: hexSchema,
|
|
77
|
-
}),
|
|
78
|
-
),
|
|
79
|
-
requiredCumulative: z.string(),
|
|
80
|
-
settled: z.string(),
|
|
81
|
-
spent: z.string(),
|
|
82
|
-
units: z.optional(z.number()),
|
|
83
|
-
})
|
|
84
|
-
|
|
85
|
-
const sessionSnapshotHeader = HeaderCodec.createJson(sessionSnapshotSchema)
|
|
86
|
-
|
|
87
|
-
/** Serializes a session snapshot for the `Payment-Session-Snapshot` header. */
|
|
88
|
-
export function serializeSnapshot(snapshot: SessionSnapshot): string {
|
|
89
|
-
return sessionSnapshotHeader.encode(snapshot)
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/** Deserializes a session snapshot from the `Payment-Session-Snapshot` header. */
|
|
93
|
-
export function deserializeSnapshot(value: string): SessionSnapshot {
|
|
94
|
-
return sessionSnapshotHeader.decode(value) as SessionSnapshot
|
|
95
|
-
}
|