mppx 0.6.31 → 0.8.0
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 +50 -0
- package/README.md +20 -11
- package/dist/Challenge.d.ts.map +1 -1
- package/dist/Challenge.js +27 -13
- package/dist/Challenge.js.map +1 -1
- package/dist/Constants.d.ts +46 -0
- package/dist/Constants.d.ts.map +1 -0
- package/dist/Constants.js +46 -0
- package/dist/Constants.js.map +1 -0
- package/dist/Credential.d.ts.map +1 -1
- package/dist/Credential.js +5 -4
- package/dist/Credential.js.map +1 -1
- package/dist/Mcp.d.ts +3 -0
- package/dist/Mcp.d.ts.map +1 -1
- package/dist/Mcp.js +2 -0
- package/dist/Mcp.js.map +1 -1
- package/dist/Method.d.ts +32 -4
- package/dist/Method.d.ts.map +1 -1
- package/dist/Method.js +5 -2
- package/dist/Method.js.map +1 -1
- package/dist/PaymentRequest.d.ts +10 -10
- package/dist/PaymentRequest.js +8 -8
- package/dist/Receipt.d.ts.map +1 -1
- package/dist/Receipt.js +3 -2
- package/dist/Receipt.js.map +1 -1
- package/dist/cli/cli.d.ts.map +1 -1
- package/dist/cli/cli.js +19 -11
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/plugins/tempo.d.ts.map +1 -1
- package/dist/cli/plugins/tempo.js +17 -6
- package/dist/cli/plugins/tempo.js.map +1 -1
- package/dist/cli/utils.d.ts +5 -0
- package/dist/cli/utils.d.ts.map +1 -1
- package/dist/cli/utils.js +10 -0
- package/dist/cli/utils.js.map +1 -1
- package/dist/client/Methods.d.ts +5 -2
- package/dist/client/Methods.d.ts.map +1 -1
- package/dist/client/Methods.js +5 -2
- package/dist/client/Methods.js.map +1 -1
- package/dist/client/Mppx.js +2 -2
- package/dist/client/Mppx.js.map +1 -1
- package/dist/client/Transport.d.ts +11 -16
- package/dist/client/Transport.d.ts.map +1 -1
- package/dist/client/Transport.js +55 -76
- package/dist/client/Transport.js.map +1 -1
- package/dist/client/index.d.ts +5 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +3 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/internal/Fetch.d.ts.map +1 -1
- package/dist/client/internal/Fetch.js +60 -13
- package/dist/client/internal/Fetch.js.map +1 -1
- package/dist/client/internal/protocols/Mcp.d.ts +7 -0
- package/dist/client/internal/protocols/Mcp.d.ts.map +1 -0
- package/dist/client/internal/protocols/Mcp.js +159 -0
- package/dist/client/internal/protocols/Mcp.js.map +1 -0
- package/dist/client/internal/protocols/Mpp.d.ts +4 -0
- package/dist/client/internal/protocols/Mpp.d.ts.map +1 -0
- package/dist/client/internal/protocols/Mpp.js +18 -0
- package/dist/client/internal/protocols/Mpp.js.map +1 -0
- package/dist/client/internal/protocols/Protocol.d.ts +10 -0
- package/dist/client/internal/protocols/Protocol.d.ts.map +1 -0
- package/dist/client/internal/protocols/Protocol.js +2 -0
- package/dist/client/internal/protocols/Protocol.js.map +1 -0
- package/dist/client/internal/protocols/Shared.d.ts +5 -0
- package/dist/client/internal/protocols/Shared.d.ts.map +1 -0
- package/dist/client/internal/protocols/Shared.js +20 -0
- package/dist/client/internal/protocols/Shared.js.map +1 -0
- package/dist/client/internal/protocols/X402.d.ts +8 -0
- package/dist/client/internal/protocols/X402.d.ts.map +1 -0
- package/dist/client/internal/protocols/X402.js +39 -0
- package/dist/client/internal/protocols/X402.js.map +1 -0
- package/dist/evm/client/index.d.ts +1 -0
- package/dist/evm/client/index.d.ts.map +1 -1
- package/dist/evm/client/index.js +1 -0
- package/dist/evm/client/index.js.map +1 -1
- package/dist/evm/index.d.ts +2 -0
- package/dist/evm/index.d.ts.map +1 -1
- package/dist/evm/index.js +2 -0
- package/dist/evm/index.js.map +1 -1
- package/dist/evm/server/Methods.d.ts +1 -1
- package/dist/evm/server/Methods.d.ts.map +1 -1
- package/dist/evm/server/index.d.ts +1 -0
- package/dist/evm/server/index.d.ts.map +1 -1
- package/dist/evm/server/index.js +1 -0
- package/dist/evm/server/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/AcceptPayment.d.ts +3 -0
- package/dist/internal/AcceptPayment.d.ts.map +1 -1
- package/dist/internal/AcceptPayment.js +15 -11
- package/dist/internal/AcceptPayment.js.map +1 -1
- package/dist/mcp/client/McpClient.d.ts +101 -0
- package/dist/mcp/client/McpClient.d.ts.map +1 -0
- package/dist/mcp/client/McpClient.js +162 -0
- package/dist/mcp/client/McpClient.js.map +1 -0
- package/dist/mcp/client/index.d.ts.map +1 -0
- package/dist/mcp/client/index.js.map +1 -0
- package/dist/mcp/server/Transport.d.ts.map +1 -0
- package/dist/mcp/server/Transport.js.map +1 -0
- package/dist/mcp/server/index.d.ts.map +1 -0
- package/dist/mcp/server/index.js.map +1 -0
- package/dist/server/Mppx.d.ts +12 -4
- package/dist/server/Mppx.d.ts.map +1 -1
- package/dist/server/Mppx.js +85 -27
- package/dist/server/Mppx.js.map +1 -1
- package/dist/server/Response.d.ts.map +1 -1
- package/dist/server/Response.js +2 -1
- package/dist/server/Response.js.map +1 -1
- package/dist/server/Transport.d.ts +1 -1
- package/dist/server/Transport.d.ts.map +1 -1
- package/dist/server/Transport.js +5 -4
- package/dist/server/Transport.js.map +1 -1
- package/dist/server/index.d.ts +1 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/stripe/client/Charge.d.ts +1 -1
- package/dist/stripe/client/Charge.d.ts.map +1 -1
- package/dist/stripe/client/Charge.js +3 -1
- package/dist/stripe/client/Charge.js.map +1 -1
- package/dist/stripe/server/Charge.d.ts +1 -1
- package/dist/stripe/server/Charge.d.ts.map +1 -1
- package/dist/stripe/server/Charge.js +9 -2
- package/dist/stripe/server/Charge.js.map +1 -1
- package/dist/stripe/server/Methods.d.ts +1 -1
- package/dist/stripe/server/Methods.d.ts.map +1 -1
- package/dist/stripe/server/internal/html.gen.d.ts +1 -1
- package/dist/stripe/server/internal/html.gen.d.ts.map +1 -1
- package/dist/stripe/server/internal/html.gen.js +1 -1
- package/dist/stripe/server/internal/html.gen.js.map +1 -1
- package/dist/tempo/Methods.d.ts +18 -0
- package/dist/tempo/Methods.d.ts.map +1 -1
- package/dist/tempo/Methods.js +16 -1
- package/dist/tempo/Methods.js.map +1 -1
- package/dist/tempo/Proof.d.ts +85 -1
- package/dist/tempo/Proof.d.ts.map +1 -1
- package/dist/tempo/Proof.js +35 -0
- package/dist/tempo/Proof.js.map +1 -1
- package/dist/tempo/client/Charge.d.ts +19 -1
- package/dist/tempo/client/Charge.d.ts.map +1 -1
- package/dist/tempo/client/Charge.js +47 -27
- package/dist/tempo/client/Charge.js.map +1 -1
- package/dist/tempo/client/Methods.d.ts +41 -10
- package/dist/tempo/client/Methods.d.ts.map +1 -1
- package/dist/tempo/client/Methods.js +16 -7
- package/dist/tempo/client/Methods.js.map +1 -1
- package/dist/tempo/client/ResolveAccount.d.ts +40 -0
- package/dist/tempo/client/ResolveAccount.d.ts.map +1 -0
- package/dist/tempo/client/ResolveAccount.js +2 -0
- package/dist/tempo/client/ResolveAccount.js.map +1 -0
- package/dist/tempo/client/index.d.ts +7 -4
- package/dist/tempo/client/index.d.ts.map +1 -1
- package/dist/tempo/client/index.js +5 -3
- package/dist/tempo/client/index.js.map +1 -1
- package/dist/tempo/index.d.ts +1 -0
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +1 -0
- package/dist/tempo/index.js.map +1 -1
- package/dist/tempo/internal/fee-payer.d.ts +29 -1
- package/dist/tempo/internal/fee-payer.d.ts.map +1 -1
- package/dist/tempo/internal/fee-payer.js +138 -4
- package/dist/tempo/internal/fee-payer.js.map +1 -1
- package/dist/tempo/internal/proof.d.ts +71 -5
- package/dist/tempo/internal/proof.d.ts.map +1 -1
- package/dist/tempo/internal/proof.js +42 -6
- package/dist/tempo/internal/proof.js.map +1 -1
- package/dist/tempo/{client → legacy/client}/ChannelOps.d.ts +19 -6
- package/dist/tempo/legacy/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/ChannelOps.js +9 -3
- package/dist/tempo/legacy/client/ChannelOps.js.map +1 -0
- package/dist/tempo/{client → legacy/client}/Session.d.ts +23 -4
- package/dist/tempo/legacy/client/Session.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/Session.js +14 -7
- package/dist/tempo/legacy/client/Session.js.map +1 -0
- package/dist/tempo/{client → legacy/client}/SessionManager.d.ts +20 -5
- package/dist/tempo/legacy/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/{client → legacy/client}/SessionManager.js +30 -19
- package/dist/tempo/legacy/client/SessionManager.js.map +1 -0
- package/dist/tempo/legacy/client/index.d.ts +7 -0
- package/dist/tempo/legacy/client/index.d.ts.map +1 -0
- package/dist/tempo/legacy/client/index.js +5 -0
- package/dist/tempo/legacy/client/index.js.map +1 -0
- package/dist/tempo/legacy/index.d.ts +7 -0
- package/dist/tempo/legacy/index.d.ts.map +1 -0
- package/dist/tempo/legacy/index.js +7 -0
- package/dist/tempo/legacy/index.js.map +1 -0
- package/dist/tempo/{server → legacy/server}/Session.d.ts +28 -11
- package/dist/tempo/legacy/server/Session.d.ts.map +1 -0
- package/dist/tempo/{server → legacy/server}/Session.js +12 -10
- package/dist/tempo/legacy/server/Session.js.map +1 -0
- package/dist/tempo/legacy/server/index.d.ts +5 -0
- package/dist/tempo/legacy/server/index.d.ts.map +1 -0
- package/dist/tempo/legacy/server/index.js +5 -0
- package/dist/tempo/legacy/server/index.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Chain.d.ts +30 -23
- package/dist/tempo/legacy/session/Chain.d.ts.map +1 -0
- package/dist/tempo/{session → legacy/session}/Chain.js +12 -11
- package/dist/tempo/legacy/session/Chain.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Channel.d.ts +1 -0
- package/dist/tempo/legacy/session/Channel.d.ts.map +1 -0
- package/dist/tempo/legacy/session/Channel.js.map +1 -0
- package/dist/tempo/legacy/session/ChannelStore.d.ts +22 -0
- package/dist/tempo/legacy/session/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/legacy/session/ChannelStore.js +6 -0
- package/dist/tempo/legacy/session/ChannelStore.js.map +1 -0
- package/dist/tempo/legacy/session/Types.d.ts +73 -0
- package/dist/tempo/legacy/session/Types.d.ts.map +1 -0
- package/dist/tempo/legacy/session/Types.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/Voucher.d.ts +4 -4
- package/dist/tempo/legacy/session/Voucher.d.ts.map +1 -0
- package/dist/tempo/{session → legacy/session}/Voucher.js +1 -1
- package/dist/tempo/legacy/session/Voucher.js.map +1 -0
- package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts +1 -0
- package/dist/tempo/{session → legacy/session}/escrow.abi.d.ts.map +1 -1
- package/dist/tempo/{session → legacy/session}/escrow.abi.js +1 -0
- package/dist/tempo/legacy/session/escrow.abi.js.map +1 -0
- package/dist/tempo/legacy/session/index.d.ts +9 -0
- package/dist/tempo/legacy/session/index.d.ts.map +1 -0
- package/dist/tempo/legacy/session/index.js +9 -0
- package/dist/tempo/legacy/session/index.js.map +1 -0
- package/dist/tempo/server/Charge.d.ts +1 -1
- package/dist/tempo/server/Charge.d.ts.map +1 -1
- package/dist/tempo/server/Charge.js +51 -30
- package/dist/tempo/server/Charge.js.map +1 -1
- package/dist/tempo/server/Methods.d.ts +67 -8
- package/dist/tempo/server/Methods.d.ts.map +1 -1
- package/dist/tempo/server/Methods.js +40 -10
- package/dist/tempo/server/Methods.js.map +1 -1
- package/dist/tempo/server/Subscription.d.ts +11 -1
- package/dist/tempo/server/Subscription.d.ts.map +1 -1
- package/dist/tempo/server/Subscription.js +135 -23
- package/dist/tempo/server/Subscription.js.map +1 -1
- package/dist/tempo/server/index.d.ts +6 -5
- package/dist/tempo/server/index.d.ts.map +1 -1
- package/dist/tempo/server/index.js +5 -5
- package/dist/tempo/server/index.js.map +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts +1 -1
- package/dist/tempo/server/internal/html.gen.d.ts.map +1 -1
- package/dist/tempo/server/internal/html.gen.js +1 -1
- package/dist/tempo/server/internal/html.gen.js.map +1 -1
- package/dist/tempo/server/internal/request-body.d.ts +7 -2
- package/dist/tempo/server/internal/request-body.d.ts.map +1 -1
- package/dist/tempo/server/internal/request-body.js +20 -3
- package/dist/tempo/server/internal/request-body.js.map +1 -1
- package/dist/tempo/server/internal/transport.d.ts +8 -4
- package/dist/tempo/server/internal/transport.d.ts.map +1 -1
- package/dist/tempo/server/internal/transport.js +8 -7
- package/dist/tempo/server/internal/transport.js.map +1 -1
- package/dist/tempo/session/Snapshot.d.ts +32 -0
- package/dist/tempo/session/Snapshot.d.ts.map +1 -0
- package/dist/tempo/session/Snapshot.js +37 -0
- package/dist/tempo/session/Snapshot.js.map +1 -0
- package/dist/tempo/session/client/ChannelOps.d.ts +81 -0
- package/dist/tempo/session/client/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/session/client/ChannelOps.js +201 -0
- package/dist/tempo/session/client/ChannelOps.js.map +1 -0
- package/dist/tempo/session/client/ChannelStore.d.ts +51 -0
- package/dist/tempo/session/client/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/session/client/ChannelStore.js +63 -0
- package/dist/tempo/session/client/ChannelStore.js.map +1 -0
- package/dist/tempo/session/client/CredentialState.d.ts +245 -0
- package/dist/tempo/session/client/CredentialState.d.ts.map +1 -0
- package/dist/tempo/session/client/CredentialState.js +419 -0
- package/dist/tempo/session/client/CredentialState.js.map +1 -0
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts +26 -0
- package/dist/tempo/session/client/ReceiptCoordinator.d.ts.map +1 -0
- package/dist/tempo/session/client/ReceiptCoordinator.js +61 -0
- package/dist/tempo/session/client/ReceiptCoordinator.js.map +1 -0
- package/dist/tempo/session/client/Runtime.d.ts +464 -0
- package/dist/tempo/session/client/Runtime.d.ts.map +1 -0
- package/dist/tempo/session/client/Runtime.js +499 -0
- package/dist/tempo/session/client/Runtime.js.map +1 -0
- package/dist/tempo/session/client/Session.d.ts +138 -0
- package/dist/tempo/session/client/Session.d.ts.map +1 -0
- package/dist/tempo/session/client/Session.js +69 -0
- package/dist/tempo/session/client/Session.js.map +1 -0
- package/dist/tempo/session/client/SessionManager.d.ts +84 -0
- package/dist/tempo/session/client/SessionManager.d.ts.map +1 -0
- package/dist/tempo/session/client/SessionManager.js +577 -0
- package/dist/tempo/session/client/SessionManager.js.map +1 -0
- package/dist/tempo/session/client/Transports.d.ts +449 -0
- package/dist/tempo/session/client/Transports.d.ts.map +1 -0
- package/dist/tempo/session/client/Transports.js +721 -0
- package/dist/tempo/session/client/Transports.js.map +1 -0
- package/dist/tempo/session/client/index.d.ts +11 -0
- package/dist/tempo/session/client/index.d.ts.map +1 -0
- package/dist/tempo/session/client/index.js +6 -0
- package/dist/tempo/session/client/index.js.map +1 -0
- package/dist/tempo/session/index.d.ts +7 -8
- package/dist/tempo/session/index.d.ts.map +1 -1
- package/dist/tempo/session/index.js +7 -8
- package/dist/tempo/session/index.js.map +1 -1
- package/dist/tempo/session/precompile/Chain.d.ts +319 -0
- package/dist/tempo/session/precompile/Chain.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Chain.js +492 -0
- package/dist/tempo/session/precompile/Chain.js.map +1 -0
- package/dist/tempo/session/precompile/Channel.d.ts +46 -0
- package/dist/tempo/session/precompile/Channel.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Channel.js +56 -0
- package/dist/tempo/session/precompile/Channel.js.map +1 -0
- package/dist/tempo/session/precompile/Protocol.d.ts +308 -0
- package/dist/tempo/session/precompile/Protocol.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Protocol.js +264 -0
- package/dist/tempo/session/precompile/Protocol.js.map +1 -0
- package/dist/tempo/session/precompile/Voucher.d.ts +40 -0
- package/dist/tempo/session/precompile/Voucher.d.ts.map +1 -0
- package/dist/tempo/session/precompile/Voucher.js +125 -0
- package/dist/tempo/session/precompile/Voucher.js.map +1 -0
- package/dist/tempo/session/precompile/escrow.abi.d.ts +522 -0
- package/dist/tempo/session/precompile/escrow.abi.d.ts.map +1 -0
- package/dist/tempo/session/precompile/escrow.abi.js +224 -0
- package/dist/tempo/session/precompile/escrow.abi.js.map +1 -0
- package/dist/tempo/session/precompile/index.d.ts +24 -0
- package/dist/tempo/session/precompile/index.d.ts.map +1 -0
- package/dist/tempo/session/precompile/index.js +22 -0
- package/dist/tempo/session/precompile/index.js.map +1 -0
- package/dist/tempo/session/server/ChannelOps.d.ts +56 -0
- package/dist/tempo/session/server/ChannelOps.d.ts.map +1 -0
- package/dist/tempo/session/server/ChannelOps.js +91 -0
- package/dist/tempo/session/server/ChannelOps.js.map +1 -0
- package/dist/tempo/session/server/ChannelStore.d.ts +347 -0
- package/dist/tempo/session/server/ChannelStore.d.ts.map +1 -0
- package/dist/tempo/session/server/ChannelStore.js +404 -0
- package/dist/tempo/session/server/ChannelStore.js.map +1 -0
- package/dist/tempo/session/server/CredentialVerification.d.ts +85 -0
- package/dist/tempo/session/server/CredentialVerification.d.ts.map +1 -0
- package/dist/tempo/session/server/CredentialVerification.js +494 -0
- package/dist/tempo/session/server/CredentialVerification.js.map +1 -0
- package/dist/tempo/session/server/MeteredStream.d.ts +40 -0
- package/dist/tempo/session/server/MeteredStream.d.ts.map +1 -0
- package/dist/tempo/session/server/MeteredStream.js +42 -0
- package/dist/tempo/session/server/MeteredStream.js.map +1 -0
- package/dist/tempo/session/server/RequestState.d.ts +208 -0
- package/dist/tempo/session/server/RequestState.d.ts.map +1 -0
- package/dist/tempo/session/server/RequestState.js +252 -0
- package/dist/tempo/session/server/RequestState.js.map +1 -0
- package/dist/tempo/session/server/Session.d.ts +169 -0
- package/dist/tempo/session/server/Session.d.ts.map +1 -0
- package/dist/tempo/session/server/Session.js +351 -0
- package/dist/tempo/session/server/Session.js.map +1 -0
- package/dist/tempo/session/server/Settlement.d.ts +185 -0
- package/dist/tempo/session/server/Settlement.d.ts.map +1 -0
- package/dist/tempo/session/server/Settlement.js +252 -0
- package/dist/tempo/session/server/Settlement.js.map +1 -0
- package/dist/tempo/session/{Sse.d.ts → server/Sse.d.ts} +9 -56
- package/dist/tempo/session/server/Sse.d.ts.map +1 -0
- package/dist/tempo/session/server/Sse.js +184 -0
- package/dist/tempo/session/server/Sse.js.map +1 -0
- package/dist/tempo/session/server/Transports.d.ts +89 -0
- package/dist/tempo/session/server/Transports.d.ts.map +1 -0
- package/dist/tempo/session/server/Transports.js +149 -0
- package/dist/tempo/session/server/Transports.js.map +1 -0
- package/dist/tempo/session/server/Ws.d.ts +48 -0
- package/dist/tempo/session/server/Ws.d.ts.map +1 -0
- package/dist/tempo/session/server/Ws.js +244 -0
- package/dist/tempo/session/server/Ws.js.map +1 -0
- package/dist/tempo/session/server/index.d.ts +4 -0
- package/dist/tempo/session/server/index.d.ts.map +1 -0
- package/dist/tempo/session/server/index.js +2 -0
- package/dist/tempo/session/server/index.js.map +1 -0
- package/dist/tempo/subscription/KeyAuthorization.d.ts +712 -1
- package/dist/tempo/subscription/KeyAuthorization.d.ts.map +1 -1
- package/dist/tempo/subscription/Store.d.ts +2 -0
- package/dist/tempo/subscription/Store.d.ts.map +1 -1
- package/dist/tempo/subscription/Store.js +16 -1
- package/dist/tempo/subscription/Store.js.map +1 -1
- package/dist/x402/index.d.ts +1 -0
- package/dist/x402/index.d.ts.map +1 -1
- package/dist/x402/index.js +1 -0
- package/dist/x402/index.js.map +1 -1
- package/package.json +25 -9
- package/src/Challenge.test.ts +40 -0
- package/src/Challenge.ts +28 -13
- package/src/Constants.ts +58 -0
- package/src/Credential.ts +5 -4
- package/src/Mcp.ts +4 -0
- package/src/Method.ts +46 -5
- package/src/PaymentRequest.ts +10 -10
- package/src/Receipt.ts +3 -2
- package/src/cli/cli.test.ts +38 -43
- package/src/cli/cli.ts +23 -10
- package/src/cli/mcp.test.ts +21 -7
- package/src/cli/plugins/tempo.ts +21 -8
- package/src/cli/utils.test.ts +25 -1
- package/src/cli/utils.ts +10 -0
- package/src/client/Methods.ts +5 -2
- package/src/client/Mppx.test-d.ts +31 -1
- package/src/client/Mppx.test.ts +76 -1
- package/src/client/Mppx.ts +2 -2
- package/src/client/Transport.test.ts +225 -178
- package/src/client/Transport.ts +77 -84
- package/src/client/index.ts +25 -1
- package/src/client/internal/Fetch.test.ts +236 -6
- package/src/client/internal/Fetch.ts +69 -11
- package/src/client/internal/protocols/Mcp.test.ts +220 -0
- package/src/client/internal/protocols/Mcp.ts +162 -0
- package/src/client/internal/protocols/Mpp.ts +21 -0
- package/src/client/internal/protocols/Protocol.ts +10 -0
- package/src/client/internal/protocols/Shared.ts +25 -0
- package/src/client/internal/protocols/X402.ts +42 -0
- package/src/discovery/OpenApi.test.ts +1 -1
- package/src/env.d.ts +1 -1
- package/src/evm/PublicInterface.test-d.ts +1 -1
- package/src/evm/client/index.ts +1 -0
- package/src/evm/index.ts +2 -0
- package/src/evm/server/Charge.test.ts +1 -1
- package/src/evm/server/index.ts +1 -0
- package/src/index.ts +1 -0
- package/src/internal/AcceptPayment.test.ts +61 -0
- package/src/internal/AcceptPayment.ts +21 -14
- package/src/{mcp-sdk → mcp}/client/McpClient.integration.test.ts +18 -11
- package/src/{mcp-sdk → mcp}/client/McpClient.test-d.ts +45 -11
- package/src/{mcp-sdk → mcp}/client/McpClient.test.ts +211 -5
- package/src/mcp/client/McpClient.ts +307 -0
- package/src/mcp/client/McpClient.unit.test.ts +135 -0
- package/src/middlewares/elysia.test.ts +9 -5
- package/src/middlewares/express.test.ts +9 -5
- package/src/middlewares/hono.test.ts +5 -5
- package/src/middlewares/internal/mppx.test.ts +1 -1
- package/src/middlewares/nextjs.test.ts +9 -5
- package/src/proxy/Proxy.test.ts +9 -9
- package/src/proxy/services/anthropic.test.ts +1 -1
- package/src/proxy/services/openai.test.ts +1 -1
- package/src/proxy/services/stripe.test.ts +1 -1
- package/src/server/Mppx.authorize.test.ts +1 -1
- package/src/server/Mppx.test-d.ts +55 -1
- package/src/server/Mppx.test.ts +220 -9
- package/src/server/Mppx.ts +501 -407
- package/src/server/Response.ts +2 -1
- package/src/server/Transport.test.ts +6 -6
- package/src/server/Transport.ts +5 -4
- package/src/server/index.ts +1 -0
- package/src/stripe/Charge.integration.test.ts +1 -1
- package/src/stripe/client/Charge.test.ts +21 -6
- package/src/stripe/client/Charge.ts +6 -2
- package/src/stripe/server/Charge.test.ts +115 -2
- package/src/stripe/server/Charge.ts +13 -2
- package/src/stripe/server/internal/html/package.json +1 -1
- package/src/stripe/server/internal/html.gen.ts +1 -1
- package/src/tempo/AccessKeyAuthorization.test.ts +4 -94
- package/src/tempo/Methods.test.ts +45 -17
- package/src/tempo/Methods.ts +22 -0
- package/src/tempo/Proof.conformance.test.ts +146 -0
- package/src/tempo/Proof.test-d.ts +15 -0
- package/src/tempo/Proof.ts +52 -1
- package/src/tempo/PublicExports.test-d.ts +105 -0
- package/src/tempo/Subscription.integration.test.ts +1 -1
- package/src/tempo/client/Charge.test.ts +258 -0
- package/src/tempo/client/Charge.ts +84 -38
- package/src/tempo/client/Methods.ts +22 -8
- package/src/tempo/client/ResolveAccount.ts +46 -0
- package/src/tempo/client/index.ts +15 -4
- package/src/tempo/index.ts +1 -0
- package/src/tempo/internal/fee-payer.test.ts +296 -17
- package/src/tempo/internal/fee-payer.ts +186 -4
- package/src/tempo/internal/fee-token.test.ts +14 -9
- package/src/tempo/internal/proof.test.ts +12 -4
- package/src/tempo/internal/proof.ts +55 -6
- package/src/tempo/legacy/AccessKeyAuthorization.test.ts +162 -0
- package/src/tempo/legacy/README.md +9 -0
- package/src/tempo/{client → legacy/client}/ChannelOps.test.ts +6 -7
- package/src/tempo/{client → legacy/client}/ChannelOps.ts +22 -9
- package/src/tempo/{client → legacy/client}/Session.test.ts +51 -9
- package/src/tempo/{client → legacy/client}/Session.ts +25 -11
- package/src/tempo/{client → legacy/client}/SessionManager.test.ts +81 -9
- package/src/tempo/{client → legacy/client}/SessionManager.ts +52 -23
- package/src/tempo/legacy/client/index.ts +6 -0
- package/src/tempo/legacy/index.ts +6 -0
- package/src/tempo/{server → legacy/server}/Session.test.ts +136 -71
- package/src/tempo/{server → legacy/server}/Session.ts +32 -23
- package/src/tempo/legacy/server/index.ts +4 -0
- package/src/tempo/{session → legacy/session}/Chain.test.ts +3 -4
- package/src/tempo/{session → legacy/session}/Chain.ts +94 -63
- package/src/tempo/{session → legacy/session}/Channel.ts +1 -0
- package/src/tempo/legacy/session/ChannelStore.test.ts +58 -0
- package/src/tempo/legacy/session/ChannelStore.ts +39 -0
- package/src/tempo/legacy/session/Types.ts +91 -0
- package/src/tempo/{session → legacy/session}/Voucher.ts +12 -8
- package/src/tempo/{session → legacy/session}/escrow.abi.ts +1 -0
- package/src/tempo/legacy/session/index.ts +8 -0
- package/src/tempo/server/AtomicStore.test-d.ts +16 -11
- package/src/tempo/server/Charge.test.ts +480 -31
- package/src/tempo/server/Charge.ts +54 -30
- package/src/tempo/server/Methods.ts +58 -10
- package/src/tempo/server/Sse.test.ts +2 -2
- package/src/tempo/server/Subscription.test.ts +465 -3
- package/src/tempo/server/Subscription.ts +174 -19
- package/src/tempo/server/index.ts +6 -5
- package/src/tempo/server/internal/html/package.json +2 -2
- package/src/tempo/server/internal/html.gen.ts +1 -1
- package/src/tempo/server/internal/request-body.test.ts +37 -4
- package/src/tempo/server/internal/request-body.ts +25 -6
- package/src/tempo/server/internal/transport.test.ts +4 -4
- package/src/tempo/server/internal/transport.ts +19 -10
- package/src/tempo/session/Snapshot.test.ts +41 -0
- package/src/tempo/session/Snapshot.ts +74 -0
- package/src/tempo/session/client/ChannelOps.test.ts +163 -0
- package/src/tempo/session/client/ChannelOps.ts +330 -0
- package/src/tempo/session/client/ChannelStore.ts +111 -0
- package/src/tempo/session/client/CredentialState.test.ts +789 -0
- package/src/tempo/session/client/CredentialState.ts +799 -0
- package/src/tempo/session/client/ReceiptCoordinator.ts +95 -0
- package/src/tempo/session/client/Runtime.test.ts +1092 -0
- package/src/tempo/session/client/Runtime.ts +986 -0
- package/src/tempo/session/client/Session.test.ts +774 -0
- package/src/tempo/session/client/Session.ts +123 -0
- package/src/tempo/session/client/SessionManager.test.ts +1397 -0
- package/src/tempo/session/client/SessionManager.ts +751 -0
- package/src/tempo/session/client/Transports.test.ts +837 -0
- package/src/tempo/session/client/Transports.ts +1292 -0
- package/src/tempo/session/client/index.ts +40 -0
- package/src/tempo/session/index.ts +7 -8
- package/src/tempo/session/precompile/Chain.integration.test.ts +321 -0
- package/src/tempo/session/precompile/Chain.test.ts +1258 -0
- package/src/tempo/session/precompile/Chain.ts +979 -0
- package/src/tempo/session/precompile/Channel.test.ts +138 -0
- package/src/tempo/session/precompile/Channel.ts +103 -0
- package/src/tempo/session/precompile/Protocol.test.ts +358 -0
- package/src/tempo/session/precompile/Protocol.ts +520 -0
- package/src/tempo/session/precompile/Voucher.test.ts +354 -0
- package/src/tempo/session/precompile/Voucher.ts +162 -0
- package/src/tempo/session/precompile/escrow.abi.ts +226 -0
- package/src/tempo/session/precompile/index.ts +33 -0
- package/src/tempo/session/server/ChannelOps.test.ts +129 -0
- package/src/tempo/session/server/ChannelOps.ts +157 -0
- package/src/tempo/session/{ChannelStore.test.ts → server/ChannelStore.test.ts} +536 -29
- package/src/tempo/session/server/ChannelStore.ts +835 -0
- package/src/tempo/session/server/CredentialVerification.test.ts +146 -0
- package/src/tempo/session/server/CredentialVerification.ts +710 -0
- package/src/tempo/session/server/MeteredStream.ts +88 -0
- package/src/tempo/session/server/RequestState.test.ts +531 -0
- package/src/tempo/session/server/RequestState.ts +499 -0
- package/src/tempo/session/server/Session.integration.test.ts +444 -0
- package/src/tempo/session/server/Session.test.ts +3253 -0
- package/src/tempo/session/server/Session.ts +543 -0
- package/src/tempo/session/server/Settlement.test.ts +329 -0
- package/src/tempo/session/server/Settlement.ts +471 -0
- package/src/tempo/session/{Sse.test.ts → server/Sse.test.ts} +37 -3
- package/src/tempo/session/server/Sse.ts +254 -0
- package/src/tempo/session/server/Transports.test.ts +346 -0
- package/src/tempo/session/server/Transports.ts +255 -0
- package/src/tempo/session/{Ws.test.ts → server/Ws.test.ts} +4 -4
- package/src/tempo/session/server/Ws.ts +380 -0
- package/src/tempo/session/server/index.ts +8 -0
- package/src/tempo/subscription/Store.ts +27 -9
- package/src/x402/Exact.e2e.test.ts +1 -1
- package/src/x402/PublicInterface.test-d.ts +1 -1
- package/src/x402/index.ts +1 -0
- package/dist/mcp-sdk/client/McpClient.d.ts +0 -78
- package/dist/mcp-sdk/client/McpClient.d.ts.map +0 -1
- package/dist/mcp-sdk/client/McpClient.js +0 -105
- package/dist/mcp-sdk/client/McpClient.js.map +0 -1
- package/dist/mcp-sdk/client/index.d.ts.map +0 -1
- package/dist/mcp-sdk/client/index.js.map +0 -1
- package/dist/mcp-sdk/server/Transport.d.ts.map +0 -1
- package/dist/mcp-sdk/server/Transport.js.map +0 -1
- package/dist/mcp-sdk/server/index.d.ts.map +0 -1
- package/dist/mcp-sdk/server/index.js.map +0 -1
- package/dist/tempo/client/ChannelOps.d.ts.map +0 -1
- package/dist/tempo/client/ChannelOps.js.map +0 -1
- package/dist/tempo/client/Session.d.ts.map +0 -1
- package/dist/tempo/client/Session.js.map +0 -1
- package/dist/tempo/client/SessionManager.d.ts.map +0 -1
- package/dist/tempo/client/SessionManager.js.map +0 -1
- package/dist/tempo/server/Session.d.ts.map +0 -1
- package/dist/tempo/server/Session.js.map +0 -1
- package/dist/tempo/session/Chain.d.ts.map +0 -1
- package/dist/tempo/session/Chain.js.map +0 -1
- package/dist/tempo/session/Channel.d.ts.map +0 -1
- package/dist/tempo/session/Channel.js.map +0 -1
- package/dist/tempo/session/ChannelStore.d.ts +0 -117
- package/dist/tempo/session/ChannelStore.d.ts.map +0 -1
- package/dist/tempo/session/ChannelStore.js +0 -172
- package/dist/tempo/session/ChannelStore.js.map +0 -1
- package/dist/tempo/session/Receipt.d.ts +0 -22
- package/dist/tempo/session/Receipt.d.ts.map +0 -1
- package/dist/tempo/session/Receipt.js +0 -34
- package/dist/tempo/session/Receipt.js.map +0 -1
- package/dist/tempo/session/Sse.d.ts.map +0 -1
- package/dist/tempo/session/Sse.js +0 -363
- package/dist/tempo/session/Sse.js.map +0 -1
- package/dist/tempo/session/Types.d.ts +0 -78
- package/dist/tempo/session/Types.d.ts.map +0 -1
- package/dist/tempo/session/Types.js.map +0 -1
- package/dist/tempo/session/Voucher.d.ts.map +0 -1
- package/dist/tempo/session/Voucher.js.map +0 -1
- package/dist/tempo/session/Ws.d.ts +0 -87
- package/dist/tempo/session/Ws.d.ts.map +0 -1
- package/dist/tempo/session/Ws.js +0 -443
- package/dist/tempo/session/Ws.js.map +0 -1
- package/dist/tempo/session/escrow.abi.js.map +0 -1
- package/src/mcp-sdk/client/McpClient.ts +0 -196
- package/src/tempo/session/ChannelStore.ts +0 -308
- package/src/tempo/session/Receipt.test.ts +0 -89
- package/src/tempo/session/Receipt.ts +0 -46
- package/src/tempo/session/Sse.ts +0 -462
- package/src/tempo/session/Types.ts +0 -86
- package/src/tempo/session/Ws.ts +0 -576
- /package/dist/{mcp-sdk → mcp}/client/index.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/client/index.js +0 -0
- /package/dist/{mcp-sdk → mcp}/server/Transport.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/server/Transport.js +0 -0
- /package/dist/{mcp-sdk → mcp}/server/index.d.ts +0 -0
- /package/dist/{mcp-sdk → mcp}/server/index.js +0 -0
- /package/dist/tempo/{session → legacy/session}/Channel.js +0 -0
- /package/dist/tempo/{session → legacy/session}/Types.js +0 -0
- /package/src/{mcp-sdk → mcp}/client/index.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/Transport.test.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/Transport.ts +0 -0
- /package/src/{mcp-sdk → mcp}/server/index.ts +0 -0
- /package/src/tempo/{session → legacy/session}/Channel.test.ts +0 -0
- /package/src/tempo/{session → legacy/session}/Voucher.test.ts +0 -0
- /package/src/tempo/session/{Sse.fuzz.test.ts → server/Sse.fuzz.test.ts} +0 -0
|
@@ -3,14 +3,11 @@ import { privateKeyToAccount } from 'viem/accounts'
|
|
|
3
3
|
import { Account as TempoAccount } from 'viem/tempo'
|
|
4
4
|
import { describe, expect, test, vi } from 'vp/test'
|
|
5
5
|
|
|
6
|
-
import * as Challenge from '
|
|
7
|
-
import * as PaymentCredential from '
|
|
8
|
-
import {
|
|
9
|
-
import
|
|
10
|
-
|
|
11
|
-
SessionCredentialPayload,
|
|
12
|
-
SessionReceipt,
|
|
13
|
-
} from '../session/Types.js'
|
|
6
|
+
import * as Challenge from '../../../Challenge.js'
|
|
7
|
+
import * as PaymentCredential from '../../../Credential.js'
|
|
8
|
+
import type { NeedVoucherEvent, SessionReceipt } from '../../session/precompile/Protocol.js'
|
|
9
|
+
import { formatNeedVoucherEvent, parseEvent } from '../../session/precompile/Protocol.js'
|
|
10
|
+
import type { LegacySessionCredentialPayload } from '../session/Types.js'
|
|
14
11
|
import { sessionManager } from './SessionManager.js'
|
|
15
12
|
|
|
16
13
|
const channelId = '0x0000000000000000000000000000000000000000000000000000000000000001' as Hex
|
|
@@ -140,7 +137,8 @@ describe('Session', () => {
|
|
|
140
137
|
expect(response.status).toBe(200)
|
|
141
138
|
expect(authorization).toBeDefined()
|
|
142
139
|
if (!authorization) throw new Error('missing authorization header')
|
|
143
|
-
const credential =
|
|
140
|
+
const credential =
|
|
141
|
+
PaymentCredential.deserialize<LegacySessionCredentialPayload>(authorization)
|
|
144
142
|
expect(credential.payload.action).toBe('open')
|
|
145
143
|
if (credential.payload.action !== 'open') throw new Error('unexpected action')
|
|
146
144
|
expect(credential.payload.authorizedSigner).toBe(voucherSigner.accessKeyAddress)
|
|
@@ -273,6 +271,80 @@ describe('Session', () => {
|
|
|
273
271
|
})
|
|
274
272
|
|
|
275
273
|
describe('.sse() event parsing', () => {
|
|
274
|
+
test('sends SSE Accept header on voucher POST updates', async () => {
|
|
275
|
+
vi.resetModules()
|
|
276
|
+
vi.doMock('viem/actions', () => ({
|
|
277
|
+
prepareTransactionRequest: vi.fn(async () => ({})),
|
|
278
|
+
sendCallsSync: vi.fn(),
|
|
279
|
+
signTransaction: vi.fn(async () => '0xdeadbeef'),
|
|
280
|
+
signTypedData: vi.fn(),
|
|
281
|
+
}))
|
|
282
|
+
|
|
283
|
+
try {
|
|
284
|
+
const { sessionManager: sessionManagerWithMocks } = await import('./SessionManager.js')
|
|
285
|
+
const account = privateKeyToAccount(
|
|
286
|
+
'0x0000000000000000000000000000000000000000000000000000000000000001',
|
|
287
|
+
)
|
|
288
|
+
const voucherSigner = TempoAccount.fromSecp256k1(
|
|
289
|
+
'0x0000000000000000000000000000000000000000000000000000000000000002',
|
|
290
|
+
{ access: account },
|
|
291
|
+
)
|
|
292
|
+
const client = createClient({
|
|
293
|
+
account,
|
|
294
|
+
transport: http('http://127.0.0.1'),
|
|
295
|
+
})
|
|
296
|
+
const challenge = makeChallenge({
|
|
297
|
+
recipient: '0x742d35cc6634c0532925a3b844bc9e7595f8fe00',
|
|
298
|
+
methodDetails: {
|
|
299
|
+
escrowContract: '0x9d136eea063ede5418a6bc7beaff009bbb6cfa70',
|
|
300
|
+
chainId: 4217,
|
|
301
|
+
},
|
|
302
|
+
})
|
|
303
|
+
const needVoucher: NeedVoucherEvent = {
|
|
304
|
+
channelId,
|
|
305
|
+
requiredCumulative: '2000000',
|
|
306
|
+
acceptedCumulative: '1000000',
|
|
307
|
+
deposit: '10000000',
|
|
308
|
+
}
|
|
309
|
+
const mockFetch = vi
|
|
310
|
+
.fn()
|
|
311
|
+
.mockResolvedValueOnce(make402Response(challenge))
|
|
312
|
+
.mockResolvedValueOnce(
|
|
313
|
+
makeSseResponse([
|
|
314
|
+
formatNeedVoucherEvent(needVoucher),
|
|
315
|
+
'event: message\ndata: chunk\n\n',
|
|
316
|
+
]),
|
|
317
|
+
)
|
|
318
|
+
.mockResolvedValueOnce(makeOkResponse())
|
|
319
|
+
|
|
320
|
+
const s = sessionManagerWithMocks({
|
|
321
|
+
account,
|
|
322
|
+
client,
|
|
323
|
+
fetch: mockFetch as typeof globalThis.fetch,
|
|
324
|
+
maxDeposit: '10',
|
|
325
|
+
voucherSigner,
|
|
326
|
+
})
|
|
327
|
+
|
|
328
|
+
const iterable = await s.sse('https://api.example.com/stream')
|
|
329
|
+
|
|
330
|
+
const messages: string[] = []
|
|
331
|
+
for await (const msg of iterable) {
|
|
332
|
+
messages.push(msg)
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
const voucherRequest = mockFetch.mock.calls[2]![1] as RequestInit
|
|
336
|
+
const voucherHeaders = new Headers(voucherRequest.headers)
|
|
337
|
+
|
|
338
|
+
expect(messages).toEqual(['chunk'])
|
|
339
|
+
expect(voucherRequest.method).toBe('POST')
|
|
340
|
+
expect(voucherHeaders.get('accept')).toBe('text/event-stream')
|
|
341
|
+
expect(voucherHeaders.get('authorization')).toBeTruthy()
|
|
342
|
+
} finally {
|
|
343
|
+
vi.doUnmock('viem/actions')
|
|
344
|
+
vi.resetModules()
|
|
345
|
+
}
|
|
346
|
+
})
|
|
347
|
+
|
|
276
348
|
test('yields only message data from SSE stream', async () => {
|
|
277
349
|
const events = [
|
|
278
350
|
'event: message\ndata: chunk1\n\n',
|
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
import type { Hex } from 'ox'
|
|
2
2
|
import { parseUnits, type Account as viem_Account, type Address } from 'viem'
|
|
3
3
|
|
|
4
|
-
import * as Challenge from '
|
|
5
|
-
import * as Fetch from '
|
|
6
|
-
import * as
|
|
7
|
-
import * as
|
|
8
|
-
import
|
|
9
|
-
import type * as
|
|
10
|
-
import
|
|
11
|
-
import {
|
|
12
|
-
import type {
|
|
13
|
-
import
|
|
4
|
+
import * as Challenge from '../../../Challenge.js'
|
|
5
|
+
import * as Fetch from '../../../client/internal/Fetch.js'
|
|
6
|
+
import * as Constants from '../../../Constants.js'
|
|
7
|
+
import * as PaymentCredential from '../../../Credential.js'
|
|
8
|
+
import * as AcceptPayment from '../../../internal/AcceptPayment.js'
|
|
9
|
+
import type * as Account from '../../../viem/Account.js'
|
|
10
|
+
import type * as Client from '../../../viem/Client.js'
|
|
11
|
+
import { deserializeSessionReceipt } from '../../session/precompile/Protocol.js'
|
|
12
|
+
import type { SessionReceipt } from '../../session/precompile/Protocol.js'
|
|
13
|
+
import { parseEvent } from '../../session/precompile/Protocol.js'
|
|
14
|
+
import * as Ws from '../../session/precompile/Protocol.js'
|
|
15
|
+
import type { LegacySessionCredentialPayload } from '../session/Types.js'
|
|
14
16
|
import type { ChannelEntry } from './ChannelOps.js'
|
|
15
17
|
import { session as sessionPlugin } from './Session.js'
|
|
16
18
|
|
|
@@ -46,13 +48,20 @@ const WebSocketReadyState = {
|
|
|
46
48
|
// Keep protocol/policy close codes on the server side and use an app-defined code here.
|
|
47
49
|
const ClientWebSocketProtocolErrorCloseCode = 3008
|
|
48
50
|
|
|
51
|
+
/** Auto-driving legacy client manager for HTTP, SSE, and WebSocket sessions. */
|
|
49
52
|
export type SessionManager = {
|
|
53
|
+
/** Active legacy channel ID, when opened or recovered. */
|
|
50
54
|
readonly channelId: Hex.Hex | undefined
|
|
55
|
+
/** Local cumulative voucher authorization in raw token units. */
|
|
51
56
|
readonly cumulative: bigint
|
|
57
|
+
/** Whether the manager currently has an open local channel. */
|
|
52
58
|
readonly opened: boolean
|
|
53
59
|
|
|
60
|
+
/** Opens a legacy contract-backed channel before the first paid request. */
|
|
54
61
|
open(options?: { deposit?: bigint }): Promise<void>
|
|
62
|
+
/** Performs the HTTP 402 challenge/retry flow and returns receipt metadata. */
|
|
55
63
|
fetch(input: RequestInfo | URL, init?: SessionRequestInit): Promise<PaymentResponse>
|
|
64
|
+
/** Opens a paid SSE stream and responds to voucher requests. */
|
|
56
65
|
sse(
|
|
57
66
|
input: RequestInfo | URL,
|
|
58
67
|
init?: SessionRequestInit & {
|
|
@@ -60,6 +69,7 @@ export type SessionManager = {
|
|
|
60
69
|
signal?: AbortSignal | undefined
|
|
61
70
|
},
|
|
62
71
|
): Promise<AsyncIterable<string>>
|
|
72
|
+
/** Opens a paid WebSocket session and manages in-band payment frames. */
|
|
63
73
|
ws(
|
|
64
74
|
input: string | URL,
|
|
65
75
|
init?: {
|
|
@@ -69,13 +79,19 @@ export type SessionManager = {
|
|
|
69
79
|
signal?: AbortSignal | undefined
|
|
70
80
|
},
|
|
71
81
|
): Promise<WebSocket>
|
|
82
|
+
/** Cooperatively closes the active legacy channel. */
|
|
72
83
|
close(): Promise<SessionReceipt | undefined>
|
|
73
84
|
}
|
|
74
85
|
|
|
86
|
+
/** HTTP response enriched with latest legacy session metadata. */
|
|
75
87
|
export type PaymentResponse = Response & {
|
|
88
|
+
/** Parsed payment receipt, when the response included one. */
|
|
76
89
|
receipt: SessionReceipt | null
|
|
90
|
+
/** Last session challenge observed by the manager. */
|
|
77
91
|
challenge: Challenge.Challenge | null
|
|
92
|
+
/** Active channel ID, when available. */
|
|
78
93
|
channelId: Hex.Hex | null
|
|
94
|
+
/** Local cumulative voucher authorization in raw token units. */
|
|
79
95
|
cumulative: bigint
|
|
80
96
|
}
|
|
81
97
|
|
|
@@ -111,6 +127,7 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
111
127
|
let channel: ChannelEntry | null = null
|
|
112
128
|
let lastChallenge: Challenge.Challenge | null = null
|
|
113
129
|
let lastUrl: RequestInfo | URL | null = null
|
|
130
|
+
let acceptedCumulative = 0n
|
|
114
131
|
let spent = 0n
|
|
115
132
|
let activeSocketChallenge: Challenge.Challenge | null = null
|
|
116
133
|
let activeSocketChannelId: Hex.Hex | null = null
|
|
@@ -130,7 +147,10 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
130
147
|
decimals: parameters.decimals,
|
|
131
148
|
maxDeposit: parameters.maxDeposit,
|
|
132
149
|
onChannelUpdate(entry) {
|
|
133
|
-
if (entry.channelId !== channel?.channelId)
|
|
150
|
+
if (entry.channelId !== channel?.channelId) {
|
|
151
|
+
acceptedCumulative = 0n
|
|
152
|
+
spent = 0n
|
|
153
|
+
}
|
|
134
154
|
channel = entry
|
|
135
155
|
},
|
|
136
156
|
})
|
|
@@ -148,7 +168,10 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
148
168
|
function updateSpentFromReceipt(receipt: SessionReceipt | null | undefined) {
|
|
149
169
|
if (!receipt || receipt.channelId !== channel?.channelId) return
|
|
150
170
|
assertReceiptWithinLocalState(receipt)
|
|
171
|
+
const nextAcceptedCumulative = BigInt(receipt.acceptedCumulative)
|
|
151
172
|
const next = BigInt(receipt.spent)
|
|
173
|
+
acceptedCumulative =
|
|
174
|
+
acceptedCumulative > nextAcceptedCumulative ? acceptedCumulative : nextAcceptedCumulative
|
|
152
175
|
spent = spent > next ? spent : next
|
|
153
176
|
}
|
|
154
177
|
|
|
@@ -237,8 +260,9 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
237
260
|
return (bestSpent > cumulative ? cumulative : bestSpent).toString()
|
|
238
261
|
}
|
|
239
262
|
|
|
240
|
-
//
|
|
241
|
-
|
|
263
|
+
// Some legacy servers report receipt.spent as a per-request delta while
|
|
264
|
+
// still requiring close at the highest accepted cumulative voucher.
|
|
265
|
+
return (spent > acceptedCumulative ? spent : acceptedCumulative).toString()
|
|
242
266
|
}
|
|
243
267
|
|
|
244
268
|
function assertVoucherWithinLocalLimit(cumulativeAmount: bigint) {
|
|
@@ -250,7 +274,7 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
250
274
|
}
|
|
251
275
|
|
|
252
276
|
function toPaymentResponse(response: Response): PaymentResponse {
|
|
253
|
-
const receiptHeader = response.headers.get(
|
|
277
|
+
const receiptHeader = response.headers.get(Constants.Headers.paymentReceipt)
|
|
254
278
|
const receipt = receiptHeader ? deserializeSessionReceipt(receiptHeader) : null
|
|
255
279
|
updateSpentFromReceipt(receipt)
|
|
256
280
|
return Object.assign(response, {
|
|
@@ -425,13 +449,13 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
425
449
|
if (!lastUrl) throw new Error('No URL available — call fetch() or sse() before open().')
|
|
426
450
|
const response = await fetchFn(lastUrl, {
|
|
427
451
|
method: 'POST',
|
|
428
|
-
headers: {
|
|
452
|
+
headers: { [Constants.Headers.authorization]: credential },
|
|
429
453
|
})
|
|
430
454
|
if (!response.ok) {
|
|
431
455
|
const body = await response.text().catch(() => '')
|
|
432
|
-
const wwwAuth = response.headers.get(
|
|
456
|
+
const wwwAuth = response.headers.get(Constants.Headers.wwwAuthenticate) ?? ''
|
|
433
457
|
throw new Error(
|
|
434
|
-
`Open request failed with status ${response.status}${body ? `: ${body}` : ''}${wwwAuth ? ` [
|
|
458
|
+
`Open request failed with status ${response.status}${body ? `: ${body}` : ''}${wwwAuth ? ` [${Constants.Headers.wwwAuthenticate}: ${wwwAuth}]` : ''}`,
|
|
435
459
|
)
|
|
436
460
|
}
|
|
437
461
|
},
|
|
@@ -504,7 +528,10 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
504
528
|
})
|
|
505
529
|
const voucherResponse = await fetchFn(input, {
|
|
506
530
|
method: 'POST',
|
|
507
|
-
headers: {
|
|
531
|
+
headers: {
|
|
532
|
+
Accept: 'text/event-stream',
|
|
533
|
+
[Constants.Headers.authorization]: credential,
|
|
534
|
+
},
|
|
508
535
|
})
|
|
509
536
|
if (!voucherResponse.ok) {
|
|
510
537
|
throw new Error(`Voucher POST failed with status ${voucherResponse.status}`)
|
|
@@ -575,7 +602,8 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
575
602
|
activeSocketChallenge = challenge
|
|
576
603
|
wsDeliveredChunks = 0n
|
|
577
604
|
wsTickCost = BigInt(challenge.request.amount as string)
|
|
578
|
-
const openCredential =
|
|
605
|
+
const openCredential =
|
|
606
|
+
PaymentCredential.deserialize<LegacySessionCredentialPayload>(credential)
|
|
579
607
|
activeSocketChannelId = openCredential.payload.channelId
|
|
580
608
|
const rawSocket = new WebSocketImpl(wsUrl, protocols)
|
|
581
609
|
activeSocket = rawSocket
|
|
@@ -819,7 +847,7 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
819
847
|
|
|
820
848
|
const response = await fetchFn(lastUrl, {
|
|
821
849
|
method: 'POST',
|
|
822
|
-
headers: {
|
|
850
|
+
headers: { [Constants.Headers.authorization]: credential },
|
|
823
851
|
})
|
|
824
852
|
if (!response.ok) {
|
|
825
853
|
const body = await response.text().catch(() => '')
|
|
@@ -835,12 +863,12 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
835
863
|
return body
|
|
836
864
|
}
|
|
837
865
|
})()
|
|
838
|
-
const wwwAuth = response.headers.get(
|
|
866
|
+
const wwwAuth = response.headers.get(Constants.Headers.wwwAuthenticate) ?? ''
|
|
839
867
|
throw new Error(
|
|
840
|
-
`Close request failed with status ${response.status}${detail ? `: ${detail}` : ''}${wwwAuth ? ` [
|
|
868
|
+
`Close request failed with status ${response.status}${detail ? `: ${detail}` : ''}${wwwAuth ? ` [${Constants.Headers.wwwAuthenticate}: ${wwwAuth}]` : ''}`,
|
|
841
869
|
)
|
|
842
870
|
}
|
|
843
|
-
const receiptHeader = response.headers.get(
|
|
871
|
+
const receiptHeader = response.headers.get(Constants.Headers.paymentReceipt)
|
|
844
872
|
const receipt = receiptHeader ? deserializeSessionReceipt(receiptHeader) : undefined
|
|
845
873
|
|
|
846
874
|
return receipt
|
|
@@ -850,6 +878,7 @@ export function sessionManager(parameters: sessionManager.Parameters): SessionMa
|
|
|
850
878
|
return self
|
|
851
879
|
}
|
|
852
880
|
|
|
881
|
+
/** Type helpers for the legacy auto-driving session manager. */
|
|
853
882
|
export declare namespace sessionManager {
|
|
854
883
|
type Parameters = Account.getResolver.Parameters &
|
|
855
884
|
Client.getResolver.Parameters & {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Legacy contract-backed session client method. */
|
|
2
|
+
export { session } from './Session.js'
|
|
3
|
+
/** Legacy contract-backed session manager. */
|
|
4
|
+
export { sessionManager } from './SessionManager.js'
|
|
5
|
+
/** Legacy client session manager types. */
|
|
6
|
+
export type { PaymentResponse, SessionManager } from './SessionManager.js'
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Legacy contract-backed session client surface. */
|
|
2
|
+
export * as Client from './client/index.js'
|
|
3
|
+
/** Legacy contract-backed session server surface. */
|
|
4
|
+
export * as Server from './server/index.js'
|
|
5
|
+
/** Legacy contract-backed session channel primitives. */
|
|
6
|
+
export * as Session from './session/index.js'
|