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.
- package/CHANGELOG.md +61 -0
- package/README.md +15 -0
- package/dist/Challenge.js +21 -4
- package/dist/bin.js +3 -3
- package/dist/cli/THIRD-PARTY-LICENSES.txt +328 -0
- package/dist/cli/cli.js +253 -1505
- 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/request.d.ts +2 -0
- package/dist/cli/sessions/request.js +18 -0
- package/dist/cli/sessions/store.js +28 -14
- package/dist/discovery/Discovery.js +2 -1
- package/dist/evm/client/Charge.js +8 -0
- package/dist/server/core.d.ts +9 -0
- package/dist/server/core.js +9 -0
- package/dist/stripe/server/Charge.js +2 -4
- package/dist/stripe/server/Methods.d.ts +2 -2
- package/dist/stripe/server/Methods.js +17 -11
- 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/spt.d.ts +8 -0
- package/dist/stripe/server/spt.js +8 -0
- package/dist/tempo/Methods.d.ts +13 -0
- package/dist/tempo/Methods.js +14 -3
- package/dist/tempo/client/Charge.d.ts +3 -0
- package/dist/tempo/client/Charge.js +31 -9
- package/dist/tempo/client/Methods.d.ts +13 -0
- package/dist/tempo/internal/defaults.d.ts +11 -0
- package/dist/tempo/internal/defaults.js +11 -0
- 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/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 +13 -1
- 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/server/Charge.d.ts +3 -0
- package/dist/tempo/server/Charge.js +58 -17
- package/dist/tempo/server/Methods.d.ts +21 -4
- package/dist/tempo/server/Methods.js +8 -4
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- 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 +17 -2
- 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 +15 -3
- 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 +10 -2
- package/dist/tempo/session/precompile/Chain.js +51 -10
- 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 +3 -1
- package/dist/tempo/session/precompile/Voucher.js +6 -12
- package/dist/tempo/session/server/ChannelStore.d.ts +6 -0
- package/dist/tempo/session/server/ChannelStore.js +11 -4
- package/dist/tempo/session/server/CredentialVerification.d.ts +11 -9
- package/dist/tempo/session/server/CredentialVerification.js +185 -109
- package/dist/tempo/session/server/MeteredStream.d.ts +1 -1
- package/dist/tempo/session/server/MeteredStream.js +5 -4
- 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 +14 -2
- package/dist/tempo/session/server/Session.js +37 -6
- package/dist/tempo/session/server/Settlement.d.ts +11 -4
- package/dist/tempo/session/server/Settlement.js +53 -21
- 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 +23 -1
- package/package.json +15 -37
- 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/attestation/Client.d.ts.map +0 -1
- package/dist/attestation/Client.js.map +0 -1
- package/dist/attestation/Constants.d.ts.map +0 -1
- package/dist/attestation/Constants.js.map +0 -1
- package/dist/attestation/Server.d.ts.map +0 -1
- package/dist/attestation/Server.js.map +0 -1
- package/dist/attestation/Types.d.ts.map +0 -1
- package/dist/attestation/Types.js.map +0 -1
- package/dist/attestation/index.d.ts.map +0 -1
- package/dist/attestation/index.js.map +0 -1
- package/dist/attestation/internal/HttpMessageSignature.d.ts.map +0 -1
- package/dist/attestation/internal/HttpMessageSignature.js.map +0 -1
- package/dist/attestation/internal/SigningContext.d.ts.map +0 -1
- package/dist/attestation/internal/SigningContext.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/discovery/internal/Metadata.d.ts.map +0 -1
- package/dist/discovery/internal/Metadata.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/deposit-address.d.ts.map +0 -1
- package/dist/stripe/server/internal/deposit-address.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/stripe/server/internal/record-payment.d.ts.map +0 -1
- package/dist/stripe/server/internal/record-payment.js.map +0 -1
- package/dist/stripe/server/internal/request.d.ts.map +0 -1
- package/dist/stripe/server/internal/request.js.map +0 -1
- package/dist/tap/Constants.d.ts.map +0 -1
- package/dist/tap/Constants.js.map +0 -1
- package/dist/tap/Types.d.ts.map +0 -1
- package/dist/tap/Types.js.map +0 -1
- package/dist/tap/client/index.d.ts.map +0 -1
- package/dist/tap/client/index.js.map +0 -1
- package/dist/tap/index.d.ts.map +0 -1
- package/dist/tap/index.js.map +0 -1
- package/dist/tap/server/index.d.ts.map +0 -1
- package/dist/tap/server/index.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/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/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/web-bot-auth/Constants.d.ts.map +0 -1
- package/dist/web-bot-auth/Constants.js.map +0 -1
- package/dist/web-bot-auth/Types.d.ts.map +0 -1
- package/dist/web-bot-auth/Types.js.map +0 -1
- package/dist/web-bot-auth/client/index.d.ts.map +0 -1
- package/dist/web-bot-auth/client/index.js.map +0 -1
- package/dist/web-bot-auth/index.d.ts.map +0 -1
- package/dist/web-bot-auth/index.js.map +0 -1
- package/dist/web-bot-auth/internal/JwkThumbprint.d.ts.map +0 -1
- package/dist/web-bot-auth/internal/JwkThumbprint.js.map +0 -1
- package/dist/web-bot-auth/internal/SignatureAgent.d.ts.map +0 -1
- package/dist/web-bot-auth/internal/SignatureAgent.js.map +0 -1
- package/dist/web-bot-auth/server/index.d.ts.map +0 -1
- package/dist/web-bot-auth/server/index.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 -154
- package/src/Challenge.test-d.ts +0 -82
- package/src/Challenge.test.ts +0 -1060
- package/src/Challenge.ts +0 -687
- 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 -631
- 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 -211
- package/src/Store.test.ts +0 -407
- package/src/Store.ts +0 -397
- package/src/attestation/Attestation.integration.test.ts +0 -208
- package/src/attestation/Client.test.ts +0 -83
- package/src/attestation/Client.ts +0 -34
- package/src/attestation/Constants.ts +0 -15
- package/src/attestation/Server.test.ts +0 -60
- package/src/attestation/Server.ts +0 -12
- package/src/attestation/Types.test-d.ts +0 -54
- package/src/attestation/Types.ts +0 -77
- package/src/attestation/index.ts +0 -5
- package/src/attestation/internal/HttpMessageSignature.test.ts +0 -101
- package/src/attestation/internal/HttpMessageSignature.ts +0 -429
- package/src/attestation/internal/SigningContext.ts +0 -13
- package/src/bin.js +0 -2
- 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 -1650
- 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 -287
- package/src/client/Mppx.test.ts +0 -1065
- package/src/client/Mppx.ts +0 -487
- package/src/client/Transport.test.ts +0 -586
- package/src/client/Transport.ts +0 -170
- 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 -1075
- 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 -623
- package/src/discovery/OpenApi.ts +0 -192
- package/src/discovery/Validate.test.ts +0 -305
- package/src/discovery/Validate.ts +0 -77
- package/src/discovery/index.ts +0 -3
- package/src/discovery/internal/Metadata.ts +0 -51
- 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 -295
- 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 -347
- 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 -479
- package/src/mcp/client/McpClient.integration.test.ts +0 -639
- 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 -285
- package/src/middlewares/elysia.ts +0 -116
- package/src/middlewares/express.test.ts +0 -361
- package/src/middlewares/express.ts +0 -140
- package/src/middlewares/hono.test.ts +0 -473
- 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 -359
- package/src/middlewares/nextjs.ts +0 -107
- package/src/proxy/Proxy.test.ts +0 -1038
- package/src/proxy/Proxy.ts +0 -483
- package/src/proxy/Proxy.upstreamError.test.ts +0 -364
- package/src/proxy/Service.test.ts +0 -252
- package/src/proxy/Service.ts +0 -280
- 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 -53
- package/src/proxy/services/hooks.test-d.ts +0 -14
- package/src/proxy/services/hooks.test.ts +0 -44
- package/src/proxy/services/openai.test.ts +0 -157
- package/src/proxy/services/openai.ts +0 -60
- package/src/proxy/services/stripe.test.ts +0 -175
- package/src/proxy/services/stripe.ts +0 -59
- package/src/server/Methods.test-d.ts +0 -88
- package/src/server/Methods.test.ts +0 -69
- package/src/server/Methods.ts +0 -3
- package/src/server/Mppx.authorize.test.ts +0 -210
- package/src/server/Mppx.test-d.ts +0 -494
- package/src/server/Mppx.test.ts +0 -6711
- package/src/server/Mppx.ts +0 -2919
- 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 -47
- package/src/stripe/server/Charge.test-d.ts +0 -81
- package/src/stripe/server/Charge.test.ts +0 -700
- package/src/stripe/server/Charge.ts +0 -487
- package/src/stripe/server/Methods.test-d.ts +0 -157
- package/src/stripe/server/Methods.test.ts +0 -403
- package/src/stripe/server/Methods.ts +0 -441
- package/src/stripe/server/index.ts +0 -2
- package/src/stripe/server/internal/deposit-address.ts +0 -57
- 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/stripe/server/internal/record-payment.ts +0 -66
- package/src/stripe/server/internal/request.ts +0 -49
- package/src/tap/Constants.ts +0 -32
- package/src/tap/Tap.test.ts +0 -125
- package/src/tap/Types.ts +0 -11
- package/src/tap/client/index.ts +0 -54
- package/src/tap/index.ts +0 -4
- package/src/tap/server/index.ts +0 -48
- 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 -271
- 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.test.ts +0 -42
- 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 -145
- 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 -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/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 -63
- package/src/tempo/server/Charge.test.ts +0 -6056
- package/src/tempo/server/Charge.ts +0 -1379
- package/src/tempo/server/Methods.ts +0 -86
- 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 -1336
- 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 -922
- package/src/tempo/server/internal/transport.ts +0 -322
- package/src/tempo/session/README.md +0 -320
- 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 -1269
- 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 -856
- package/src/tempo/session/server/CredentialVerification.test.ts +0 -299
- package/src/tempo/session/server/CredentialVerification.ts +0 -1087
- package/src/tempo/session/server/MeteredStream.ts +0 -99
- 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 -4247
- package/src/tempo/session/server/Session.ts +0 -669
- 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 -634
- package/src/tempo/session/server/Sse.ts +0 -261
- package/src/tempo/session/server/Transports.test.ts +0 -346
- package/src/tempo/session/server/Transports.ts +0 -256
- package/src/tempo/session/server/Ws.test.ts +0 -765
- package/src/tempo/session/server/Ws.ts +0 -391
- 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/web-bot-auth/Constants.ts +0 -24
- package/src/web-bot-auth/Types.ts +0 -9
- package/src/web-bot-auth/WebBotAuth.test.ts +0 -182
- package/src/web-bot-auth/client/index.ts +0 -84
- package/src/web-bot-auth/index.ts +0 -6
- package/src/web-bot-auth/internal/JwkThumbprint.ts +0 -21
- package/src/web-bot-auth/internal/SignatureAgent.ts +0 -18
- package/src/web-bot-auth/server/index.ts +0 -113
- package/src/x402/Assets.test.ts +0 -253
- package/src/x402/Assets.ts +0 -221
- package/src/x402/Exact.e2e.test.ts +0 -488
- 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 -410
- 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,5 +1,6 @@
|
|
|
1
1
|
import { isAddress, isAddressEqual, zeroAddress, } from 'viem';
|
|
2
2
|
import { AmountExceedsDepositError, ChannelClosedError, ChannelNotFoundError, InsufficientBalanceError, InvalidSignatureError, VerificationFailedError, } from '../../../Errors.js';
|
|
3
|
+
import * as MachineTokenSession from '../../internal/machine-token-session.js';
|
|
3
4
|
import * as Chain from '../precompile/Chain.js';
|
|
4
5
|
import { readChannelClosedReceiptFields } from '../precompile/Chain.js';
|
|
5
6
|
import * as Channel from '../precompile/Channel.js';
|
|
@@ -7,20 +8,13 @@ import { createSessionReceipt, uint96, } from '../precompile/Protocol.js';
|
|
|
7
8
|
import * as Voucher from '../precompile/Voucher.js';
|
|
8
9
|
import * as ChannelStore from './ChannelStore.js';
|
|
9
10
|
import { getChallengePaymentFields } from './RequestState.js';
|
|
10
|
-
import { assertSettlementSender, getClientAccount } from './Settlement.js';
|
|
11
|
+
import { assertSettlementSender, getClientAccount, resolveChannelTransactionOptions, } from './Settlement.js';
|
|
11
12
|
/** Returns the effective voucher signer for a TIP-1034 descriptor. */
|
|
12
13
|
export function authorizedSigner(descriptor) {
|
|
13
14
|
return isAddressEqual(descriptor.authorizedSigner, zeroAddress)
|
|
14
15
|
? descriptor.payer
|
|
15
16
|
: descriptor.authorizedSigner;
|
|
16
17
|
}
|
|
17
|
-
/** Asserts that a credential payload includes a TIP-1034 descriptor. */
|
|
18
|
-
export function assertDescriptor(payload) {
|
|
19
|
-
if (!payload.descriptor)
|
|
20
|
-
throw new VerificationFailedError({
|
|
21
|
-
reason: 'descriptor required for TIP-1034 session action',
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
18
|
/** Asserts that two TIP-1034 descriptors identify the same channel. */
|
|
25
19
|
export function assertSameDescriptor(a, b) {
|
|
26
20
|
if (!isAddressEqual(a.payer, b.payer) ||
|
|
@@ -58,6 +52,53 @@ export function validateChannelDescriptor(descriptor, channelId, chainId, escrow
|
|
|
58
52
|
});
|
|
59
53
|
}
|
|
60
54
|
}
|
|
55
|
+
async function resolveCredentialRoute(parameters) {
|
|
56
|
+
const { challenge, chainId, client, escrow, payload } = parameters;
|
|
57
|
+
const { descriptor } = payload;
|
|
58
|
+
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
59
|
+
if (Channel.computeId({ ...descriptor, chainId, escrow }).toLowerCase() !== channelId.toLowerCase())
|
|
60
|
+
throw new VerificationFailedError({ reason: 'channel descriptor does not match channelId' });
|
|
61
|
+
const request = getChallengePaymentFields(challenge);
|
|
62
|
+
const expectedOperator = parameters.expectedOperator ?? zeroAddress;
|
|
63
|
+
const direct = isAddressEqual(descriptor.payee, request.recipient) &&
|
|
64
|
+
isAddressEqual(descriptor.token, request.currency) &&
|
|
65
|
+
isAddressEqual(descriptor.operator, expectedOperator);
|
|
66
|
+
if (direct)
|
|
67
|
+
return {
|
|
68
|
+
allowedFeeTokens: MachineTokenSession.allowedSponsoredFeeTokens({
|
|
69
|
+
chainId,
|
|
70
|
+
override: parameters.feeToken,
|
|
71
|
+
paymentToken: request.currency,
|
|
72
|
+
}),
|
|
73
|
+
expectedOperator,
|
|
74
|
+
payment: request,
|
|
75
|
+
};
|
|
76
|
+
if (payload.action !== 'close' && !MachineTokenSession.isEnabledChallenge(challenge))
|
|
77
|
+
throw new VerificationFailedError({ reason: 'credential descriptor does not match challenge' });
|
|
78
|
+
const route = await MachineTokenSession.matchRoute(client, {
|
|
79
|
+
active: payload.action !== 'close',
|
|
80
|
+
chainId,
|
|
81
|
+
descriptor,
|
|
82
|
+
merchant: request.recipient,
|
|
83
|
+
targetToken: request.currency,
|
|
84
|
+
});
|
|
85
|
+
if (!route)
|
|
86
|
+
throw new VerificationFailedError({
|
|
87
|
+
reason: 'machine-token channel is not bound to the challenged merchant and currency',
|
|
88
|
+
});
|
|
89
|
+
return {
|
|
90
|
+
allowedFeeTokens: [
|
|
91
|
+
MachineTokenSession.resolveFeeToken({
|
|
92
|
+
chainId,
|
|
93
|
+
override: parameters.feeToken,
|
|
94
|
+
paymentToken: route.token,
|
|
95
|
+
}),
|
|
96
|
+
],
|
|
97
|
+
expectedOperator: route.operator,
|
|
98
|
+
machineRouter: route.operator,
|
|
99
|
+
payment: { ...request, currency: route.token, recipient: route.payee },
|
|
100
|
+
};
|
|
101
|
+
}
|
|
61
102
|
/** Validates on-chain channel state before accepting or charging a credential. */
|
|
62
103
|
export function validateChannelState(state, amount) {
|
|
63
104
|
if (state.deposit === 0n) {
|
|
@@ -133,6 +174,9 @@ function readHex(value, field) {
|
|
|
133
174
|
return value;
|
|
134
175
|
throw new VerificationFailedError({ reason: `invalid session credential ${field}` });
|
|
135
176
|
}
|
|
177
|
+
function readOptionalHex(value, field) {
|
|
178
|
+
return value === undefined ? undefined : readHex(value, field);
|
|
179
|
+
}
|
|
136
180
|
function readRawAmount(value, field) {
|
|
137
181
|
if (typeof value === 'string' && /^[0-9]+$/.test(value))
|
|
138
182
|
return value;
|
|
@@ -195,6 +239,7 @@ export function requireSessionCredentialPayload(payload) {
|
|
|
195
239
|
channelId: header.channelId,
|
|
196
240
|
transaction: readHex(candidate.transaction, 'transaction'),
|
|
197
241
|
signature: readHex(candidate.signature, 'signature'),
|
|
242
|
+
authorizationSignature: readOptionalHex(candidate.authorizationSignature, 'authorizationSignature'),
|
|
198
243
|
descriptor: readDescriptor(candidate.descriptor),
|
|
199
244
|
cumulativeAmount: readRawAmount(candidate.cumulativeAmount, 'cumulativeAmount'),
|
|
200
245
|
...(candidate.authorizedSigner === undefined
|
|
@@ -219,6 +264,7 @@ export function requireSessionCredentialPayload(payload) {
|
|
|
219
264
|
descriptor: readDescriptor(candidate.descriptor),
|
|
220
265
|
cumulativeAmount: readRawAmount(candidate.cumulativeAmount, 'cumulativeAmount'),
|
|
221
266
|
signature: readHex(candidate.signature, 'signature'),
|
|
267
|
+
authorizationSignature: readOptionalHex(candidate.authorizationSignature, 'authorizationSignature'),
|
|
222
268
|
};
|
|
223
269
|
case 'close':
|
|
224
270
|
return {
|
|
@@ -227,6 +273,8 @@ export function requireSessionCredentialPayload(payload) {
|
|
|
227
273
|
descriptor: readDescriptor(candidate.descriptor),
|
|
228
274
|
cumulativeAmount: readRawAmount(candidate.cumulativeAmount, 'cumulativeAmount'),
|
|
229
275
|
signature: readHex(candidate.signature, 'signature'),
|
|
276
|
+
authorizationSignature: readOptionalHex(candidate.authorizationSignature, 'authorizationSignature'),
|
|
277
|
+
refundSignature: readOptionalHex(candidate.refundSignature, 'refundSignature'),
|
|
230
278
|
};
|
|
231
279
|
}
|
|
232
280
|
}
|
|
@@ -244,28 +292,26 @@ const refreshOnChainVerificationCache = {
|
|
|
244
292
|
/** Validates all action-specific session credential invariants without changing payment state. */
|
|
245
293
|
export async function validateCredentialPayload(parameters) {
|
|
246
294
|
const { payload } = parameters;
|
|
295
|
+
const context = await resolveCredentialContext(parameters);
|
|
247
296
|
switch (payload.action) {
|
|
248
297
|
case 'open':
|
|
249
|
-
await validateOpenCredential(
|
|
298
|
+
await validateOpenCredential(context, payload);
|
|
250
299
|
break;
|
|
251
300
|
case 'topUp':
|
|
252
|
-
await validateTopUpCredential(
|
|
301
|
+
await validateTopUpCredential(context, payload);
|
|
253
302
|
break;
|
|
254
303
|
case 'voucher':
|
|
255
|
-
await validateVoucherCredential(
|
|
304
|
+
await validateVoucherCredential(context, payload);
|
|
256
305
|
break;
|
|
257
306
|
case 'close':
|
|
258
|
-
await validateCloseCredential(
|
|
307
|
+
await validateCloseCredential(context, payload);
|
|
259
308
|
break;
|
|
260
309
|
}
|
|
261
310
|
return { action: payload.action, channelId: ChannelStore.normalizeChannelId(payload.channelId) };
|
|
262
311
|
}
|
|
263
312
|
async function validateOpenCredential(parameters, payload) {
|
|
264
|
-
const { challenge, chainId, client, escrow } = parameters;
|
|
265
|
-
const request = getChallengePaymentFields(challenge);
|
|
266
|
-
const expectedOperator = parameters.expectedOperator ?? zeroAddress;
|
|
313
|
+
const { challenge, chainId, client, escrow, expectedOperator, payment: request } = parameters;
|
|
267
314
|
const cumulativeAmount = uint96(BigInt(payload.cumulativeAmount));
|
|
268
|
-
assertDescriptor(payload);
|
|
269
315
|
if (payload.authorizedSigner !== undefined &&
|
|
270
316
|
!isAddressEqual(payload.authorizedSigner, payload.descriptor.authorizedSigner))
|
|
271
317
|
throw new VerificationFailedError({
|
|
@@ -274,6 +320,7 @@ async function validateOpenCredential(parameters, payload) {
|
|
|
274
320
|
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
275
321
|
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, request.recipient, request.currency, expectedOperator);
|
|
276
322
|
const transaction = Chain.validateOpenCredentialTransaction({
|
|
323
|
+
allowedFeeTokens: parameters.allowedFeeTokens,
|
|
277
324
|
challengeExpires: challenge.expires,
|
|
278
325
|
chainId,
|
|
279
326
|
escrowContract: escrow,
|
|
@@ -306,11 +353,8 @@ async function validateOpenCredential(parameters, payload) {
|
|
|
306
353
|
});
|
|
307
354
|
}
|
|
308
355
|
async function validateTopUpCredential(parameters, payload) {
|
|
309
|
-
const { challenge, chainId, client, escrow, store } = parameters;
|
|
310
|
-
const request = getChallengePaymentFields(challenge);
|
|
311
|
-
const expectedOperator = parameters.expectedOperator ?? zeroAddress;
|
|
356
|
+
const { challenge, chainId, client, escrow, expectedOperator, payment: request, store, } = parameters;
|
|
312
357
|
const additionalDeposit = uint96(BigInt(payload.additionalDeposit));
|
|
313
|
-
assertDescriptor(payload);
|
|
314
358
|
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
315
359
|
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, request.recipient, request.currency, expectedOperator);
|
|
316
360
|
const channel = await ChannelStore.loadPrecompileChannel({
|
|
@@ -323,6 +367,7 @@ async function validateTopUpCredential(parameters, payload) {
|
|
|
323
367
|
});
|
|
324
368
|
const transaction = Chain.validateTopUpCredentialTransaction({
|
|
325
369
|
additionalDeposit,
|
|
370
|
+
allowedFeeTokens: parameters.allowedFeeTokens,
|
|
326
371
|
challengeExpires: challenge.expires,
|
|
327
372
|
chainId,
|
|
328
373
|
descriptor: channel.descriptor,
|
|
@@ -341,12 +386,10 @@ async function validateTopUpCredential(parameters, payload) {
|
|
|
341
386
|
});
|
|
342
387
|
}
|
|
343
388
|
async function validateVoucherCredential(parameters, payload) {
|
|
344
|
-
const {
|
|
345
|
-
const
|
|
346
|
-
const expectedOperator = parameters.expectedOperator ?? zeroAddress;
|
|
389
|
+
const { chainId, client, credentialSource, escrow, minVoucherDelta, store, channelStateTtl, lastOnChainVerified, payment: request, } = parameters;
|
|
390
|
+
const { expectedOperator } = parameters;
|
|
347
391
|
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
348
|
-
const voucher = Voucher.parseVoucherFromPayload(channelId, payload.cumulativeAmount, payload.signature);
|
|
349
|
-
assertDescriptor(payload);
|
|
392
|
+
const voucher = Voucher.parseVoucherFromPayload(channelId, payload.cumulativeAmount, payload.signature, payload.authorizationSignature);
|
|
350
393
|
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, request.recipient, request.currency, expectedOperator);
|
|
351
394
|
const channel = await ChannelStore.loadPrecompileChannel({
|
|
352
395
|
descriptor: payload.descriptor,
|
|
@@ -387,14 +430,56 @@ async function resolveVoucherChannelState(parameters) {
|
|
|
387
430
|
closeRequestedAt: state?.closeRequestedAt ?? Number(channel.closeRequestedAt),
|
|
388
431
|
};
|
|
389
432
|
}
|
|
390
|
-
|
|
391
|
-
const {
|
|
392
|
-
|
|
393
|
-
|
|
433
|
+
function verifyMachineSessionAuthorization(parameters) {
|
|
434
|
+
const { chainId, payload, router } = parameters;
|
|
435
|
+
if (payload.action === 'topUp')
|
|
436
|
+
return undefined;
|
|
437
|
+
if (!router)
|
|
438
|
+
return undefined;
|
|
439
|
+
// The escrow resolves a zero authorizedSigner to the payer, but the router
|
|
440
|
+
// domain is bound to an explicit signer; reject the delegation up front
|
|
441
|
+
// instead of failing signature verification against the zero address.
|
|
442
|
+
if (isAddressEqual(payload.descriptor.authorizedSigner, zeroAddress))
|
|
443
|
+
throw new VerificationFailedError({
|
|
444
|
+
reason: 'machine-token sessions require an explicit authorizedSigner',
|
|
445
|
+
});
|
|
446
|
+
if (!payload.authorizationSignature)
|
|
447
|
+
throw new VerificationFailedError({
|
|
448
|
+
reason: 'machine-token voucher requires a router authorization',
|
|
449
|
+
});
|
|
450
|
+
const valid = MachineTokenSession.verifyAuthorization({
|
|
451
|
+
authorization: {
|
|
452
|
+
channelId: ChannelStore.normalizeChannelId(payload.channelId),
|
|
453
|
+
cumulativeAmount: uint96(BigInt(payload.cumulativeAmount)),
|
|
454
|
+
},
|
|
455
|
+
chainId,
|
|
456
|
+
expectedSigner: payload.descriptor.authorizedSigner,
|
|
457
|
+
router,
|
|
458
|
+
signature: payload.authorizationSignature,
|
|
459
|
+
});
|
|
460
|
+
if (!valid)
|
|
461
|
+
throw new InvalidSignatureError({ reason: 'invalid machine-token router authorization' });
|
|
462
|
+
}
|
|
463
|
+
async function resolveCredentialContext(parameters) {
|
|
464
|
+
const route = await resolveCredentialRoute(parameters);
|
|
465
|
+
verifyMachineSessionAuthorization({
|
|
466
|
+
chainId: parameters.chainId,
|
|
467
|
+
payload: parameters.payload,
|
|
468
|
+
router: route.machineRouter,
|
|
469
|
+
});
|
|
470
|
+
return { ...parameters, ...route };
|
|
471
|
+
}
|
|
472
|
+
function assertMachineCloseAmount(machineRouter, cumulativeAmount, captureAmount) {
|
|
473
|
+
if (machineRouter && cumulativeAmount !== captureAmount)
|
|
474
|
+
throw new VerificationFailedError({
|
|
475
|
+
reason: `machine-token close voucher amount must equal ${captureAmount} (capture amount)`,
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
async function inspectCloseCredential(parameters, payload) {
|
|
479
|
+
const { account: accountOverride, chainId, client, escrow, expectedOperator, machineRouter, payment, store, } = parameters;
|
|
394
480
|
const cumulativeAmount = uint96(BigInt(payload.cumulativeAmount));
|
|
395
481
|
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
396
|
-
|
|
397
|
-
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, request.recipient, request.currency, expectedOperator);
|
|
482
|
+
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, payment.recipient, payment.currency, expectedOperator);
|
|
398
483
|
const channel = await ChannelStore.loadPrecompileChannel({
|
|
399
484
|
descriptor: payload.descriptor,
|
|
400
485
|
channelId,
|
|
@@ -417,24 +502,47 @@ async function validateCloseCredential(parameters, payload) {
|
|
|
417
502
|
throw new VerificationFailedError({
|
|
418
503
|
reason: `close voucher amount must be >= ${state.settled} (on-chain settled)`,
|
|
419
504
|
});
|
|
420
|
-
|
|
421
|
-
if (!valid)
|
|
505
|
+
if (!(await Voucher.verifyVoucher(escrow, chainId, { channelId, cumulativeAmount, signature: payload.signature }, channel.authorizedSigner)))
|
|
422
506
|
throw new InvalidSignatureError({ reason: 'invalid voucher signature' });
|
|
507
|
+
const refundSignature = machineRouter ? payload.refundSignature : undefined;
|
|
508
|
+
if (machineRouter) {
|
|
509
|
+
if (!refundSignature)
|
|
510
|
+
throw new VerificationFailedError({
|
|
511
|
+
reason: 'machine-token close requires a refund authorization',
|
|
512
|
+
});
|
|
513
|
+
if (!(await Voucher.verifyVoucher(escrow, chainId, { channelId, cumulativeAmount: uint96(state.deposit), signature: refundSignature }, payload.descriptor.authorizedSigner)))
|
|
514
|
+
throw new InvalidSignatureError({ reason: 'invalid machine-token refund authorization' });
|
|
515
|
+
}
|
|
423
516
|
const captureAmount = uint96(channel.spent > state.settled ? channel.spent : state.settled);
|
|
424
517
|
if (captureAmount > state.deposit)
|
|
425
518
|
throw new AmountExceedsDepositError({ reason: 'close capture amount exceeds on-chain deposit' });
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
519
|
+
assertMachineCloseAmount(machineRouter, cumulativeAmount, captureAmount);
|
|
520
|
+
const account = accountOverride ?? getClientAccount(client);
|
|
521
|
+
if (!machineRouter || !account)
|
|
522
|
+
assertSettlementSender({
|
|
523
|
+
operation: 'close',
|
|
524
|
+
channelId,
|
|
525
|
+
operator: channel.operator,
|
|
526
|
+
payee: channel.payee,
|
|
527
|
+
sender: account?.address,
|
|
528
|
+
});
|
|
529
|
+
return {
|
|
530
|
+
account,
|
|
531
|
+
authorizationSignature: machineRouter ? payload.authorizationSignature : undefined,
|
|
532
|
+
captureAmount,
|
|
533
|
+
channel,
|
|
429
534
|
channelId,
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
}
|
|
535
|
+
cumulativeAmount,
|
|
536
|
+
refundSignature,
|
|
537
|
+
state,
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
async function validateCloseCredential(parameters, payload) {
|
|
541
|
+
await inspectCloseCredential(parameters, payload);
|
|
434
542
|
}
|
|
435
543
|
/** Broadcasts a validated session credential payload and applies its state transition. */
|
|
436
544
|
export async function broadcastCredentialPayload(context) {
|
|
437
|
-
const receipt = await broadcastCredentialAction(context);
|
|
545
|
+
const receipt = await broadcastCredentialAction(await resolveCredentialContext(context));
|
|
438
546
|
if (refreshOnChainVerificationCache[context.payload.action])
|
|
439
547
|
context.lastOnChainVerified.set(receipt.channelId, Date.now());
|
|
440
548
|
return receipt;
|
|
@@ -460,11 +568,8 @@ function actionContext(context, payload) {
|
|
|
460
568
|
return { ...context, payload };
|
|
461
569
|
}
|
|
462
570
|
async function handleOpenCredential(parameters) {
|
|
463
|
-
const { store, client, challenge, payload, chainId, escrow } = parameters;
|
|
464
|
-
const request = getChallengePaymentFields(challenge);
|
|
465
|
-
const expectedOperator = parameters.expectedOperator ?? zeroAddress;
|
|
571
|
+
const { store, client, challenge, payload, chainId, escrow, expectedOperator, payment: request, } = parameters;
|
|
466
572
|
const cumulativeAmount = uint96(BigInt(payload.cumulativeAmount));
|
|
467
|
-
assertDescriptor(payload);
|
|
468
573
|
if (payload.authorizedSigner !== undefined &&
|
|
469
574
|
!isAddressEqual(payload.authorizedSigner, payload.descriptor.authorizedSigner))
|
|
470
575
|
throw new VerificationFailedError({
|
|
@@ -473,6 +578,7 @@ async function handleOpenCredential(parameters) {
|
|
|
473
578
|
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
474
579
|
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, request.recipient, request.currency, expectedOperator);
|
|
475
580
|
const result = await Chain.broadcastOpenTransaction({
|
|
581
|
+
allowedFeeTokens: parameters.allowedFeeTokens,
|
|
476
582
|
challengeExpires: challenge.expires,
|
|
477
583
|
chainId,
|
|
478
584
|
client,
|
|
@@ -514,6 +620,7 @@ async function handleOpenCredential(parameters) {
|
|
|
514
620
|
expiringNonceHash: result.expiringNonceHash,
|
|
515
621
|
cumulativeAmount,
|
|
516
622
|
signature: payload.signature,
|
|
623
|
+
authorizationSignature: payload.authorizationSignature,
|
|
517
624
|
state,
|
|
518
625
|
}));
|
|
519
626
|
if (!updated)
|
|
@@ -528,11 +635,8 @@ async function handleOpenCredential(parameters) {
|
|
|
528
635
|
});
|
|
529
636
|
}
|
|
530
637
|
async function handleTopUpCredential(parameters) {
|
|
531
|
-
const { store, client, challenge, payload, chainId, escrow } = parameters;
|
|
532
|
-
const request = getChallengePaymentFields(challenge);
|
|
533
|
-
const expectedOperator = parameters.expectedOperator ?? zeroAddress;
|
|
638
|
+
const { store, client, challenge, payload, chainId, escrow, expectedOperator, payment: request, } = parameters;
|
|
534
639
|
const additionalDeposit = uint96(BigInt(payload.additionalDeposit));
|
|
535
|
-
assertDescriptor(payload);
|
|
536
640
|
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
537
641
|
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, request.recipient, request.currency, expectedOperator);
|
|
538
642
|
const channel = await ChannelStore.loadPrecompileChannel({
|
|
@@ -545,6 +649,7 @@ async function handleTopUpCredential(parameters) {
|
|
|
545
649
|
});
|
|
546
650
|
const result = await Chain.broadcastTopUpTransaction({
|
|
547
651
|
additionalDeposit,
|
|
652
|
+
allowedFeeTokens: parameters.allowedFeeTokens,
|
|
548
653
|
challengeExpires: challenge.expires,
|
|
549
654
|
chainId,
|
|
550
655
|
client,
|
|
@@ -569,12 +674,10 @@ async function handleTopUpCredential(parameters) {
|
|
|
569
674
|
});
|
|
570
675
|
}
|
|
571
676
|
async function handleVoucherCredential(parameters) {
|
|
572
|
-
const { store, client, challenge, credentialSource, payload, chainId, escrow, minVoucherDelta, channelStateTtl, lastOnChainVerified, } = parameters;
|
|
573
|
-
const
|
|
574
|
-
const expectedOperator = parameters.expectedOperator ?? zeroAddress;
|
|
677
|
+
const { store, client, challenge, credentialSource, payload, chainId, escrow, minVoucherDelta, channelStateTtl, lastOnChainVerified, payment: request, } = parameters;
|
|
678
|
+
const { expectedOperator } = parameters;
|
|
575
679
|
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
576
|
-
const voucher = Voucher.parseVoucherFromPayload(channelId, payload.cumulativeAmount, payload.signature);
|
|
577
|
-
assertDescriptor(payload);
|
|
680
|
+
const voucher = Voucher.parseVoucherFromPayload(channelId, payload.cumulativeAmount, payload.signature, payload.authorizationSignature);
|
|
578
681
|
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, request.recipient, request.currency, expectedOperator);
|
|
579
682
|
const channel = await ChannelStore.loadPrecompileChannel({
|
|
580
683
|
descriptor: payload.descriptor,
|
|
@@ -616,41 +719,10 @@ async function handleVoucherCredential(parameters) {
|
|
|
616
719
|
});
|
|
617
720
|
}
|
|
618
721
|
async function handleCloseCredential(parameters) {
|
|
619
|
-
const { store, client, challenge, payload,
|
|
620
|
-
const
|
|
621
|
-
const
|
|
622
|
-
|
|
623
|
-
const channelId = ChannelStore.normalizeChannelId(payload.channelId);
|
|
624
|
-
assertDescriptor(payload);
|
|
625
|
-
validateChannelDescriptor(payload.descriptor, channelId, chainId, escrow, request.recipient, request.currency, expectedOperator);
|
|
626
|
-
const channel = await ChannelStore.loadPrecompileChannel({
|
|
627
|
-
descriptor: payload.descriptor,
|
|
628
|
-
channelId,
|
|
629
|
-
chainId,
|
|
630
|
-
escrow,
|
|
631
|
-
store,
|
|
632
|
-
});
|
|
633
|
-
if (channel.finalized)
|
|
634
|
-
throw new ChannelClosedError({ reason: 'channel is already finalized' });
|
|
635
|
-
const state = await Chain.getChannelState(client, channelId, escrow);
|
|
636
|
-
if (state.closeRequestedAt !== 0)
|
|
637
|
-
throw new ChannelClosedError({ reason: 'channel has a pending close request' });
|
|
638
|
-
if (state.deposit === 0n && (cumulativeAmount !== 0n || channel.spent !== 0n))
|
|
639
|
-
throw new ChannelClosedError({ reason: 'channel deposit is zero (settled)' });
|
|
640
|
-
if (cumulativeAmount < channel.spent)
|
|
641
|
-
throw new VerificationFailedError({
|
|
642
|
-
reason: `close voucher amount must be >= ${channel.spent} (spent)`,
|
|
643
|
-
});
|
|
644
|
-
if (cumulativeAmount < state.settled)
|
|
645
|
-
throw new VerificationFailedError({
|
|
646
|
-
reason: `close voucher amount must be >= ${state.settled} (on-chain settled)`,
|
|
647
|
-
});
|
|
648
|
-
const valid = await Voucher.verifyVoucher(escrow, chainId, { channelId, cumulativeAmount: cumulativeAmount, signature: payload.signature }, channel.authorizedSigner);
|
|
649
|
-
if (!valid)
|
|
650
|
-
throw new InvalidSignatureError({ reason: 'invalid voucher signature' });
|
|
651
|
-
let captureAmount = uint96(channel.spent > state.settled ? channel.spent : state.settled);
|
|
652
|
-
if (captureAmount > state.deposit)
|
|
653
|
-
throw new AmountExceedsDepositError({ reason: 'close capture amount exceeds on-chain deposit' });
|
|
722
|
+
const { store, client, challenge, payload, escrow, machineRouter } = parameters;
|
|
723
|
+
const inspected = await inspectCloseCredential(parameters, payload);
|
|
724
|
+
const { account, authorizationSignature, channel, channelId, cumulativeAmount, refundSignature, state, } = inspected;
|
|
725
|
+
let { captureAmount } = inspected;
|
|
654
726
|
const pendingCloseStartedAt = BigInt(Math.floor(Date.now() / 1000) || 1);
|
|
655
727
|
const previousCloseRequestedAt = channel.closeRequestedAt;
|
|
656
728
|
let pendingCloseMarked = false;
|
|
@@ -663,31 +735,26 @@ async function handleCloseCredential(parameters) {
|
|
|
663
735
|
onChainSettled: state.settled,
|
|
664
736
|
});
|
|
665
737
|
if (next.state) {
|
|
738
|
+
assertMachineCloseAmount(machineRouter, cumulativeAmount, next.captureAmount);
|
|
666
739
|
captureAmount = next.captureAmount;
|
|
667
740
|
pendingCloseMarked = true;
|
|
668
741
|
}
|
|
669
742
|
return next.state;
|
|
670
743
|
});
|
|
671
|
-
const account = parameters.account ?? getClientAccount(client);
|
|
672
744
|
let txHash;
|
|
673
745
|
let receipt;
|
|
674
746
|
try {
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
...(parameters.feePayerPolicy ? { feePayerPolicy: parameters.feePayerPolicy } : {}),
|
|
687
|
-
...(parameters.feeToken ? { feeToken: parameters.feeToken } : {}),
|
|
688
|
-
candidateFeeTokens: [channel.token],
|
|
689
|
-
}
|
|
690
|
-
: undefined);
|
|
747
|
+
const transactionOptions = resolveChannelTransactionOptions(channel, parameters, account, machineRouter);
|
|
748
|
+
if (machineRouter) {
|
|
749
|
+
if (!authorizationSignature || !refundSignature)
|
|
750
|
+
throw new VerificationFailedError({
|
|
751
|
+
reason: 'machine-token close requires router and refund authorizations',
|
|
752
|
+
});
|
|
753
|
+
txHash = await Chain.closeMachineSessionOnChain(client, channel.descriptor, cumulativeAmount, payload.signature, authorizationSignature, refundSignature, machineRouter, transactionOptions);
|
|
754
|
+
}
|
|
755
|
+
else {
|
|
756
|
+
txHash = await Chain.closeOnChain(client, channel.descriptor, cumulativeAmount, captureAmount, payload.signature, escrow, transactionOptions);
|
|
757
|
+
}
|
|
691
758
|
receipt = await Chain.waitForSuccessfulReceipt(client, txHash);
|
|
692
759
|
}
|
|
693
760
|
catch (error) {
|
|
@@ -700,9 +767,18 @@ async function handleCloseCredential(parameters) {
|
|
|
700
767
|
}
|
|
701
768
|
const closed = readChannelClosedReceiptFields(Chain.getChannelEvent(receipt, 'ChannelClosed', channelId));
|
|
702
769
|
const { refundedToPayer, settledToPayee } = closed;
|
|
703
|
-
if (
|
|
770
|
+
if (machineRouter) {
|
|
771
|
+
if (settledToPayee !== state.deposit || refundedToPayer !== 0n)
|
|
772
|
+
throw new VerificationFailedError({
|
|
773
|
+
reason: 'machine-token ChannelClosed amounts are invalid',
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
else if (settledToPayee > captureAmount || settledToPayee + refundedToPayer > state.deposit) {
|
|
704
777
|
throw new VerificationFailedError({ reason: 'ChannelClosed amounts do not match state' });
|
|
778
|
+
}
|
|
779
|
+
const logicalSettled = machineRouter ? captureAmount : settledToPayee;
|
|
705
780
|
const updated = await store.updateChannel(channelId, (current) => ChannelStore.finalizeClosedChannelState({
|
|
781
|
+
authorizationSignature,
|
|
706
782
|
captureAmount,
|
|
707
783
|
channelId,
|
|
708
784
|
cumulativeAmount,
|
|
@@ -715,8 +791,8 @@ async function handleCloseCredential(parameters) {
|
|
|
715
791
|
txHash,
|
|
716
792
|
channelId,
|
|
717
793
|
trigger: 'close',
|
|
718
|
-
amount:
|
|
719
|
-
delta:
|
|
794
|
+
amount: logicalSettled,
|
|
795
|
+
delta: logicalSettled - state.settled,
|
|
720
796
|
}));
|
|
721
797
|
}
|
|
722
798
|
catch {
|
|
@@ -35,7 +35,7 @@ export type MeteredStreamOptions = {
|
|
|
35
35
|
onChargeCommitted?: ((channel: ChannelStore.State) => MaybePromise<unknown>) | undefined;
|
|
36
36
|
/** Store polling interval when `waitForUpdate` is unavailable. */
|
|
37
37
|
pollIntervalMs: number;
|
|
38
|
-
/** Pre-authorized units that may be emitted without
|
|
38
|
+
/** Pre-authorized implicit tick-cost units that may be emitted without a new reservation. */
|
|
39
39
|
prepaidUnits?: number | undefined;
|
|
40
40
|
/** Optional abort signal for stream cancellation. */
|
|
41
41
|
signal?: AbortSignal | undefined;
|
|
@@ -4,22 +4,23 @@ export async function* meterIterable(options) {
|
|
|
4
4
|
let prepaidUnits = options.prepaidUnits ?? 0;
|
|
5
5
|
let reservedAmount = 0n;
|
|
6
6
|
let reservedUnits = 0;
|
|
7
|
-
const charge = async (amount
|
|
8
|
-
if (prepaidUnits > 0) {
|
|
7
|
+
const charge = async (amount) => {
|
|
8
|
+
if (amount === undefined && prepaidUnits > 0) {
|
|
9
9
|
prepaidUnits -= 1;
|
|
10
10
|
return;
|
|
11
11
|
}
|
|
12
|
+
const resolvedAmount = amount ?? options.tickCost;
|
|
12
13
|
await reserveChargeOrWait({
|
|
13
14
|
store: options.store,
|
|
14
15
|
channelId: options.channelId,
|
|
15
|
-
amount,
|
|
16
|
+
amount: resolvedAmount,
|
|
16
17
|
reservedAmount,
|
|
17
18
|
emit: options.emitNeedVoucher,
|
|
18
19
|
formatNeedVoucher: options.formatNeedVoucher,
|
|
19
20
|
pollIntervalMs: options.pollIntervalMs,
|
|
20
21
|
signal: options.signal,
|
|
21
22
|
});
|
|
22
|
-
reservedAmount +=
|
|
23
|
+
reservedAmount += resolvedAmount;
|
|
23
24
|
reservedUnits += 1;
|
|
24
25
|
};
|
|
25
26
|
const signal = options.signal ?? new AbortController().signal;
|
|
@@ -2,6 +2,7 @@ import { type Account as viem_Account, type Address, type Hex } from 'viem';
|
|
|
2
2
|
import * as Constants from '../../../Constants.js';
|
|
3
3
|
import type * as Credential from '../../../Credential.js';
|
|
4
4
|
import type { Challenge } from '../../../index.js';
|
|
5
|
+
import type { MaybePromise } from '../../../internal/types.js';
|
|
5
6
|
import type * as z from '../../../zod.js';
|
|
6
7
|
import * as Methods from '../../Methods.js';
|
|
7
8
|
import { isSessionContentRequest, type RequestBodyProbe } from '../../server/internal/request-body.js';
|
|
@@ -14,10 +15,14 @@ import { type ParameterFeePayer, type ResolvedFeePayer } from './Settlement.js';
|
|
|
14
15
|
export type ResolveSessionSnapshotParameters = {
|
|
15
16
|
/** Raw request amount that must be covered by the next voucher. */
|
|
16
17
|
amount: bigint;
|
|
18
|
+
/** Already-loaded channel for `channelId`, skipping the store read. */
|
|
19
|
+
channel?: ChannelStore.State | null | undefined;
|
|
17
20
|
/** Channel ID from credential or challenge request, when available. */
|
|
18
21
|
channelId: Hex | undefined;
|
|
19
22
|
/** Payment fields the reusable channel must match before it is advertised. */
|
|
20
23
|
expected?: SessionSnapshotPaymentFields | undefined;
|
|
24
|
+
/** Optional alternate-rail matcher when the stored descriptor differs from logical payment fields. */
|
|
25
|
+
matchPaymentFields?: MatchSessionSnapshotPaymentFields | undefined;
|
|
21
26
|
/** Server channel store. */
|
|
22
27
|
store: ChannelStore.ChannelStore;
|
|
23
28
|
};
|
|
@@ -32,6 +37,15 @@ export type SessionSnapshotPaymentFields = {
|
|
|
32
37
|
/** Payee address expected by the challenge. */
|
|
33
38
|
recipient: Address;
|
|
34
39
|
};
|
|
40
|
+
/**
|
|
41
|
+
* Validates an alternate channel descriptor against the logical session payment
|
|
42
|
+
* fields. `options.action` names the credential the snapshot serves: close
|
|
43
|
+
* credentials accept retired routes, so their recovery snapshots match
|
|
44
|
+
* inactive routes too.
|
|
45
|
+
*/
|
|
46
|
+
export type MatchSessionSnapshotPaymentFields = (channel: ChannelStore.StoredPrecompileChannel, expected: SessionSnapshotPaymentFields, options?: {
|
|
47
|
+
action?: SessionCredentialPayload['action'] | undefined;
|
|
48
|
+
} | undefined) => MaybePromise<boolean>;
|
|
35
49
|
/** Request metadata available to `resolveChannelId` without exposing a mutable `Request`. */
|
|
36
50
|
export type SessionChannelIdRequest = {
|
|
37
51
|
/** Request headers, useful for cookies or auth/session headers. */
|
|
@@ -125,6 +139,10 @@ export type SessionMethodDetails = {
|
|
|
125
139
|
escrowContract: Address;
|
|
126
140
|
/** Whether this challenge allows fee-sponsored management transactions. */
|
|
127
141
|
feePayer?: boolean | undefined;
|
|
142
|
+
/** Fee token clients must use for open/top-up transactions. */
|
|
143
|
+
feeToken?: Address | undefined;
|
|
144
|
+
/** Whether clients may fund this logical session through the first-party machine-token rail. */
|
|
145
|
+
machineTokenEnabled?: boolean | undefined;
|
|
128
146
|
/** Minimum raw-unit increase required for voucher credentials. */
|
|
129
147
|
minVoucherDelta?: string | undefined;
|
|
130
148
|
/** Channel operator address the client should encode in new open transactions. */
|
|
@@ -147,6 +165,7 @@ export type ResolveSessionPaymentRequestParameters = {
|
|
|
147
165
|
decimals: number;
|
|
148
166
|
defaultFeePayer?: viem_Account | undefined;
|
|
149
167
|
getClient: ResolveRequestChainIdParameters['getClient'];
|
|
168
|
+
matchSnapshotPaymentFields?: MatchSessionSnapshotPaymentFields | undefined;
|
|
150
169
|
parameterChainId?: number | undefined;
|
|
151
170
|
parameterEscrowContract?: Address | undefined;
|
|
152
171
|
parameterFeePayer?: ParameterFeePayer;
|