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
package/src/Method.ts
CHANGED
|
@@ -59,6 +59,7 @@ export type Client<
|
|
|
59
59
|
method extends Method = Method,
|
|
60
60
|
context extends z.ZodMiniType | undefined = z.ZodMiniType | undefined,
|
|
61
61
|
> = method & {
|
|
62
|
+
canHandleChallenge?: CanHandleChallengeFn | undefined
|
|
62
63
|
context?: context
|
|
63
64
|
createCredential: CreateCredentialFn<
|
|
64
65
|
method,
|
|
@@ -130,18 +131,21 @@ export type Server<
|
|
|
130
131
|
defaults extends ExactPartial<z.input<method['schema']['request']>> = {},
|
|
131
132
|
transportOverride = undefined,
|
|
132
133
|
extensions extends object = {},
|
|
134
|
+
alias extends string | undefined = string | undefined,
|
|
133
135
|
> = method & {
|
|
136
|
+
alias?: alias | undefined
|
|
134
137
|
authorize?: AuthorizeFn<method> | undefined
|
|
135
138
|
defaults?: defaults | undefined
|
|
136
139
|
extensions?: extensions | undefined
|
|
137
140
|
html?: Html.Options | undefined
|
|
141
|
+
preflight?: PreflightFn<method> | undefined
|
|
138
142
|
request?: RequestFn<method> | undefined
|
|
139
143
|
respond?: RespondFn<method> | undefined
|
|
140
144
|
stableBinding?: StableBindingFn<method> | undefined
|
|
141
145
|
transport?: transportOverride | undefined
|
|
142
146
|
verify: VerifyFn<method>
|
|
143
147
|
}
|
|
144
|
-
export type AnyServer = Server<any, any, any, any>
|
|
148
|
+
export type AnyServer = Server<any, any, any, any, any>
|
|
145
149
|
|
|
146
150
|
/** Credential creation function for a single method. */
|
|
147
151
|
export type CreateCredentialFn<method extends Method, context = unknown> = (
|
|
@@ -154,6 +158,9 @@ export type CreateCredentialFn<method extends Method, context = unknown> = (
|
|
|
154
158
|
} & ([keyof context] extends [never] ? unknown : { context: context }),
|
|
155
159
|
) => Promise<string>
|
|
156
160
|
|
|
161
|
+
/** Predicate used when multiple client implementations share a wire method/intent. */
|
|
162
|
+
export type CanHandleChallengeFn = (parameters: { challenge: Challenge.Challenge }) => boolean
|
|
163
|
+
|
|
157
164
|
/** Request transform function for a single method. */
|
|
158
165
|
export type RequestFn<method extends Method> = (
|
|
159
166
|
options: RequestContext<method>,
|
|
@@ -188,6 +195,22 @@ export type AuthorizeResult = {
|
|
|
188
195
|
response?: globalThis.Response | undefined
|
|
189
196
|
}
|
|
190
197
|
|
|
198
|
+
/**
|
|
199
|
+
* Optional HTTP preflight hook for method-specific management requests.
|
|
200
|
+
*
|
|
201
|
+
* Called before the normal challenge/verification path. Returning a response
|
|
202
|
+
* fully handles the request.
|
|
203
|
+
*/
|
|
204
|
+
export type PreflightFn<method extends Method> = (parameters: {
|
|
205
|
+
capturedRequest?: CapturedRequest | undefined
|
|
206
|
+
credential: Credential.Credential | null
|
|
207
|
+
expires?: string | undefined
|
|
208
|
+
input: globalThis.Request
|
|
209
|
+
options: z.input<method['schema']['request']>
|
|
210
|
+
realm: string
|
|
211
|
+
secretKey: string
|
|
212
|
+
}) => MaybePromise<globalThis.Response | undefined>
|
|
213
|
+
|
|
191
214
|
/**
|
|
192
215
|
* Produces the stable request fields used to bind credentials to a route.
|
|
193
216
|
*
|
|
@@ -252,9 +275,10 @@ export function toClient<
|
|
|
252
275
|
const method extends Method,
|
|
253
276
|
const context extends z.ZodMiniType | undefined = undefined,
|
|
254
277
|
>(method: method, options: toClient.Options<method, context>): Client<method, context> {
|
|
255
|
-
const { context, createCredential } = options
|
|
278
|
+
const { canHandleChallenge, context, createCredential } = options
|
|
256
279
|
return {
|
|
257
280
|
...method,
|
|
281
|
+
canHandleChallenge,
|
|
258
282
|
context,
|
|
259
283
|
createCredential,
|
|
260
284
|
} as Client<method, context>
|
|
@@ -262,6 +286,7 @@ export function toClient<
|
|
|
262
286
|
|
|
263
287
|
export declare namespace toClient {
|
|
264
288
|
type Options<method extends Method, context extends z.ZodMiniType | undefined = undefined> = {
|
|
289
|
+
canHandleChallenge?: CanHandleChallengeFn | undefined
|
|
265
290
|
context?: context
|
|
266
291
|
createCredential: CreateCredentialFn<
|
|
267
292
|
method,
|
|
@@ -291,15 +316,24 @@ export function toServer<
|
|
|
291
316
|
const defaults extends RequestDefaults<method> = {},
|
|
292
317
|
const transportOverride extends Transport.AnyTransport | undefined = undefined,
|
|
293
318
|
const extensions extends object = {},
|
|
319
|
+
const options extends toServer.Options<
|
|
320
|
+
method,
|
|
321
|
+
defaults,
|
|
322
|
+
transportOverride,
|
|
323
|
+
extensions,
|
|
324
|
+
string | undefined
|
|
325
|
+
> = toServer.Options<method, defaults, transportOverride, extensions, string | undefined>,
|
|
294
326
|
>(
|
|
295
327
|
method: method,
|
|
296
|
-
options:
|
|
297
|
-
): Server<method, defaults, transportOverride, extensions
|
|
328
|
+
options: options,
|
|
329
|
+
): Server<method, defaults, transportOverride, extensions, toServer.Alias<options>> {
|
|
298
330
|
const {
|
|
331
|
+
alias,
|
|
299
332
|
authorize,
|
|
300
333
|
defaults,
|
|
301
334
|
extensions,
|
|
302
335
|
html,
|
|
336
|
+
preflight,
|
|
303
337
|
request,
|
|
304
338
|
respond,
|
|
305
339
|
stableBinding,
|
|
@@ -308,29 +342,36 @@ export function toServer<
|
|
|
308
342
|
} = options
|
|
309
343
|
return {
|
|
310
344
|
...method,
|
|
345
|
+
alias,
|
|
311
346
|
authorize,
|
|
312
347
|
defaults,
|
|
313
348
|
extensions,
|
|
314
349
|
html,
|
|
350
|
+
preflight,
|
|
315
351
|
request,
|
|
316
352
|
respond,
|
|
317
353
|
stableBinding,
|
|
318
354
|
transport,
|
|
319
355
|
verify,
|
|
320
|
-
} as Server<method, defaults, transportOverride, extensions
|
|
356
|
+
} as Server<method, defaults, transportOverride, extensions, toServer.Alias<options>>
|
|
321
357
|
}
|
|
322
358
|
|
|
323
359
|
export declare namespace toServer {
|
|
360
|
+
type Alias<options> = options extends { alias: infer alias extends string } ? alias : undefined
|
|
361
|
+
|
|
324
362
|
type Options<
|
|
325
363
|
method extends Method,
|
|
326
364
|
defaults extends RequestDefaults<method> = {},
|
|
327
365
|
transportOverride extends Transport.AnyTransport | undefined = undefined,
|
|
328
366
|
extensions extends object = {},
|
|
367
|
+
alias extends string | undefined = undefined,
|
|
329
368
|
> = {
|
|
369
|
+
alias?: alias | undefined
|
|
330
370
|
authorize?: AuthorizeFn<method> | undefined
|
|
331
371
|
defaults?: defaults | undefined
|
|
332
372
|
extensions?: extensions | undefined
|
|
333
373
|
html?: Html.Options | undefined
|
|
374
|
+
preflight?: PreflightFn<method> | undefined
|
|
334
375
|
request?: RequestFn<method> | undefined
|
|
335
376
|
respond?: RespondFn<method> | undefined
|
|
336
377
|
stableBinding?: StableBindingFn<method> | undefined
|
package/src/PaymentRequest.ts
CHANGED
|
@@ -9,9 +9,9 @@ import type * as z from './zod.js'
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```ts
|
|
12
|
-
* import {
|
|
12
|
+
* import { PaymentRequest } from 'mppx'
|
|
13
13
|
*
|
|
14
|
-
* const request:
|
|
14
|
+
* const request: PaymentRequest.Request = {
|
|
15
15
|
* amount: '1000000',
|
|
16
16
|
* currency: '0x20c0000000000000000000000000000000000001',
|
|
17
17
|
* recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00',
|
|
@@ -29,9 +29,9 @@ export type Request<request extends Record<string, unknown> = Record<string, unk
|
|
|
29
29
|
*
|
|
30
30
|
* @example
|
|
31
31
|
* ```ts
|
|
32
|
-
* import {
|
|
32
|
+
* import { PaymentRequest } from 'mppx'
|
|
33
33
|
*
|
|
34
|
-
* const request =
|
|
34
|
+
* const request = PaymentRequest.deserialize(serialized)
|
|
35
35
|
* ```
|
|
36
36
|
*/
|
|
37
37
|
export function deserialize(encoded: string): Request {
|
|
@@ -47,9 +47,9 @@ export function deserialize(encoded: string): Request {
|
|
|
47
47
|
*
|
|
48
48
|
* @example
|
|
49
49
|
* ```ts
|
|
50
|
-
* import {
|
|
50
|
+
* import { PaymentRequest } from 'mppx'
|
|
51
51
|
*
|
|
52
|
-
* const request =
|
|
52
|
+
* const request = PaymentRequest.from({
|
|
53
53
|
* amount: '1000000',
|
|
54
54
|
* currency: '0x20c0000000000000000000000000000000000001',
|
|
55
55
|
* recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00',
|
|
@@ -69,10 +69,10 @@ export function from<const request extends Request>(request: request): request {
|
|
|
69
69
|
*
|
|
70
70
|
* @example
|
|
71
71
|
* ```ts
|
|
72
|
-
* import {
|
|
72
|
+
* import { PaymentRequest } from 'mppx'
|
|
73
73
|
* import { Methods } from 'mppx/tempo'
|
|
74
74
|
*
|
|
75
|
-
* const request =
|
|
75
|
+
* const request = PaymentRequest.fromMethod(Methods.charge, {
|
|
76
76
|
* amount: '1000000',
|
|
77
77
|
* currency: '0x20c0000000000000000000000000000000000001',
|
|
78
78
|
* recipient: '0x742d35Cc6634C0532925a3b844Bc9e7595f8fE00',
|
|
@@ -96,9 +96,9 @@ export function fromMethod<const method extends Method.Method>(
|
|
|
96
96
|
*
|
|
97
97
|
* @example
|
|
98
98
|
* ```ts
|
|
99
|
-
* import {
|
|
99
|
+
* import { PaymentRequest } from 'mppx'
|
|
100
100
|
*
|
|
101
|
-
* const serialized =
|
|
101
|
+
* const serialized = PaymentRequest.serialize(request)
|
|
102
102
|
* // => "eyJhbW91bnQiOiIxMDAwMDAwIiwiY3VycmVuY3kiOiIweC4uLiJ9"
|
|
103
103
|
* ```
|
|
104
104
|
*/
|
package/src/Receipt.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Base64 } from 'ox'
|
|
2
2
|
|
|
3
|
+
import * as Constants from './Constants.js'
|
|
3
4
|
import * as z from './zod.js'
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -126,7 +127,7 @@ export function serialize(receipt: Receipt): string {
|
|
|
126
127
|
* ```
|
|
127
128
|
*/
|
|
128
129
|
export function fromResponse(response: Response): Receipt {
|
|
129
|
-
const header = response.headers.get(
|
|
130
|
-
if (!header) throw new Error(
|
|
130
|
+
const header = response.headers.get(Constants.Headers.paymentReceipt)
|
|
131
|
+
if (!header) throw new Error(`Missing ${Constants.Headers.paymentReceipt} header.`)
|
|
131
132
|
return deserialize(header)
|
|
132
133
|
}
|
package/src/cli/cli.test.ts
CHANGED
|
@@ -4,16 +4,16 @@ import * as os from 'node:os'
|
|
|
4
4
|
import * as path from 'node:path'
|
|
5
5
|
import { pathToFileURL } from 'node:url'
|
|
6
6
|
|
|
7
|
-
import { decodeFunctionData,
|
|
7
|
+
import { decodeFunctionData, parseUnits, type Address } from 'viem'
|
|
8
8
|
import { generatePrivateKey, privateKeyToAccount } from 'viem/accounts'
|
|
9
9
|
import { Addresses, Transaction } from 'viem/tempo'
|
|
10
10
|
import { afterAll, describe, expect, test } from 'vp/test'
|
|
11
11
|
import * as Http from '~test/Http.js'
|
|
12
|
-
import { rpcUrl } from '~test/tempo/
|
|
13
|
-
import { deployEscrow, escrowAbi } from '~test/tempo/session.js'
|
|
12
|
+
import { rpcUrl } from '~test/tempo/rpc.js'
|
|
14
13
|
import { accounts, asset, chain, client, fundAccount } from '~test/tempo/viem.js'
|
|
15
14
|
|
|
16
15
|
import * as Challenge from '../Challenge.js'
|
|
16
|
+
import * as Constants from '../Constants.js'
|
|
17
17
|
import * as Credential from '../Credential.js'
|
|
18
18
|
import * as Method from '../Method.js'
|
|
19
19
|
import * as Receipt from '../Receipt.js'
|
|
@@ -22,7 +22,9 @@ import { toNodeListener } from '../server/Mppx.js'
|
|
|
22
22
|
import * as Store from '../Store.js'
|
|
23
23
|
import { stripe as stripe_server } from '../stripe/server/Methods.js'
|
|
24
24
|
import { tempo } from '../tempo/server/Methods.js'
|
|
25
|
-
import
|
|
25
|
+
import { escrowAbi } from '../tempo/session/precompile/escrow.abi.js'
|
|
26
|
+
import { tip20ChannelEscrow } from '../tempo/session/precompile/Protocol.js'
|
|
27
|
+
import type { SessionCredentialPayload } from '../tempo/session/precompile/Protocol.js'
|
|
26
28
|
import * as z from '../zod.js'
|
|
27
29
|
import cli from './cli.js'
|
|
28
30
|
|
|
@@ -440,7 +442,7 @@ describe('basic charge (examples/basic)', () => {
|
|
|
440
442
|
const server = Mppx_server.create({
|
|
441
443
|
methods: [tempo.charge({ getClient: () => client })],
|
|
442
444
|
realm: 'cli-test-basic',
|
|
443
|
-
secretKey: 'cli-test-secret',
|
|
445
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
444
446
|
})
|
|
445
447
|
|
|
446
448
|
const httpServer = await Http.createServer(async (req, res) => {
|
|
@@ -482,7 +484,7 @@ describe('basic charge (examples/basic)', () => {
|
|
|
482
484
|
const server = Mppx_server.create({
|
|
483
485
|
methods: [unsupportedMethod, tempoMethod],
|
|
484
486
|
realm: 'cli-test-multi-offer',
|
|
485
|
-
secretKey: 'cli-test-secret',
|
|
487
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
486
488
|
})
|
|
487
489
|
|
|
488
490
|
const httpServer = await Http.createServer(async (req, res) => {
|
|
@@ -561,7 +563,7 @@ describe('basic charge (examples/basic)', () => {
|
|
|
561
563
|
const server = Mppx_server.create({
|
|
562
564
|
methods: [betaMethod, alphaMethod],
|
|
563
565
|
realm: 'cli-test-config-offers',
|
|
564
|
-
secretKey: 'cli-test-secret',
|
|
566
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
565
567
|
})
|
|
566
568
|
|
|
567
569
|
const configDir = fs.mkdtempSync(path.join(os.tmpdir(), 'mppx-cli-config-'))
|
|
@@ -665,7 +667,7 @@ export default defineConfig({
|
|
|
665
667
|
const server = Mppx_server.create({
|
|
666
668
|
methods: [tempo.charge({ getClient: () => client })],
|
|
667
669
|
realm: 'localhost',
|
|
668
|
-
secretKey: 'cli-test-secret',
|
|
670
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
669
671
|
})
|
|
670
672
|
let authorization: string | undefined
|
|
671
673
|
|
|
@@ -719,7 +721,7 @@ export default defineConfig({
|
|
|
719
721
|
}),
|
|
720
722
|
],
|
|
721
723
|
realm: 'localhost',
|
|
722
|
-
secretKey: 'cli-test-secret',
|
|
724
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
723
725
|
})
|
|
724
726
|
let authorization: string | undefined
|
|
725
727
|
|
|
@@ -763,7 +765,7 @@ export default defineConfig({
|
|
|
763
765
|
const server = Mppx_server.create({
|
|
764
766
|
methods: [tempo.charge({ getClient: () => client })],
|
|
765
767
|
realm: 'cli-test-no-account',
|
|
766
|
-
secretKey: 'cli-test-secret',
|
|
768
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
767
769
|
})
|
|
768
770
|
|
|
769
771
|
const httpServer = await Http.createServer(async (req, res) => {
|
|
@@ -798,7 +800,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
798
800
|
await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
|
|
799
801
|
await fundAccount({ address: testAccount.address, token: asset })
|
|
800
802
|
|
|
801
|
-
const escrow =
|
|
803
|
+
const escrow = tip20ChannelEscrow
|
|
802
804
|
const store = Store.memory()
|
|
803
805
|
const server = Mppx_server.create({
|
|
804
806
|
methods: [
|
|
@@ -814,7 +816,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
814
816
|
}),
|
|
815
817
|
],
|
|
816
818
|
realm: 'cli-test-multifetch',
|
|
817
|
-
secretKey: 'cli-test-secret',
|
|
819
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
818
820
|
})
|
|
819
821
|
|
|
820
822
|
const httpServer = await Http.createServer(async (req, res) => {
|
|
@@ -840,11 +842,11 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
840
842
|
}
|
|
841
843
|
})
|
|
842
844
|
|
|
843
|
-
test('
|
|
845
|
+
test('uses server suggestedDeposit within CLI max deposit', { timeout: 120_000 }, async () => {
|
|
844
846
|
await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
|
|
845
847
|
await fundAccount({ address: testAccount.address, token: asset })
|
|
846
848
|
|
|
847
|
-
const escrow =
|
|
849
|
+
const escrow = tip20ChannelEscrow
|
|
848
850
|
let openCredential: SessionCredentialPayload | undefined
|
|
849
851
|
|
|
850
852
|
const httpServer = await Http.createServer(async (req, res) => {
|
|
@@ -867,6 +869,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
867
869
|
methodDetails: {
|
|
868
870
|
chainId: chain.id,
|
|
869
871
|
escrowContract: escrow,
|
|
872
|
+
sessionProtocol: Constants.SessionProtocols.v2,
|
|
870
873
|
},
|
|
871
874
|
},
|
|
872
875
|
}),
|
|
@@ -897,27 +900,18 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
897
900
|
|
|
898
901
|
const transaction = Transaction.deserialize(openCredential.transaction)
|
|
899
902
|
if (!('calls' in transaction)) throw new Error('unexpected transaction type')
|
|
900
|
-
const [
|
|
901
|
-
{ to?: Address; data?: `0x${string}` },
|
|
902
|
-
{ to?: Address; data?: `0x${string}` },
|
|
903
|
-
]
|
|
904
|
-
const approve = decodeFunctionData({ abi: erc20Abi, data: approveCall.data ?? '0x' })
|
|
903
|
+
const [openCall] = transaction.calls as readonly [{ to?: Address; data?: `0x${string}` }]
|
|
905
904
|
const open = decodeFunctionData({ abi: escrowAbi, data: openCall.data ?? '0x' })
|
|
906
|
-
const
|
|
907
|
-
const openArgs = open.args as readonly [Address, Address, bigint, string, Address]
|
|
908
|
-
|
|
909
|
-
expect(approveCall.to).toBe(asset)
|
|
910
|
-
expect(approve.functionName).toBe('approve')
|
|
911
|
-
expect(approveArgs[0].toLowerCase()).toBe(escrow.toLowerCase())
|
|
912
|
-
expect(approveArgs[1]).toBe(10_000_000n)
|
|
905
|
+
const openArgs = open.args as readonly [Address, Address, Address, bigint, string, Address]
|
|
913
906
|
|
|
914
907
|
expect(openCall.to?.toLowerCase()).toBe(escrow.toLowerCase())
|
|
915
908
|
expect(open.functionName).toBe('open')
|
|
916
909
|
expect(openArgs[0].toLowerCase()).toBe(accounts[0].address.toLowerCase())
|
|
917
|
-
expect(openArgs[1]
|
|
918
|
-
expect(openArgs[2]).toBe(
|
|
919
|
-
expect(openArgs[3]).
|
|
920
|
-
expect(openArgs[4]
|
|
910
|
+
expect(openArgs[1]).toBe('0x0000000000000000000000000000000000000000')
|
|
911
|
+
expect(openArgs[2].toLowerCase()).toBe(asset.toLowerCase())
|
|
912
|
+
expect(openArgs[3]).toBe(7_000_000n)
|
|
913
|
+
expect(openArgs[4]).toEqual(expect.any(String))
|
|
914
|
+
expect(openArgs[5].toLowerCase()).toBe(testAccount.address.toLowerCase())
|
|
921
915
|
} finally {
|
|
922
916
|
httpServer.close()
|
|
923
917
|
}
|
|
@@ -927,7 +921,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
927
921
|
await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
|
|
928
922
|
await fundAccount({ address: testAccount.address, token: asset })
|
|
929
923
|
|
|
930
|
-
const escrow =
|
|
924
|
+
const escrow = tip20ChannelEscrow
|
|
931
925
|
const store = Store.memory()
|
|
932
926
|
const tickAmount = '0.001'
|
|
933
927
|
const server = Mppx_server.create({
|
|
@@ -944,7 +938,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
944
938
|
}),
|
|
945
939
|
],
|
|
946
940
|
realm: 'cli-test-double-charge',
|
|
947
|
-
secretKey: 'cli-test-secret',
|
|
941
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
948
942
|
})
|
|
949
943
|
|
|
950
944
|
// Track voucher cumulative amounts from credential payloads
|
|
@@ -991,7 +985,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
991
985
|
await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
|
|
992
986
|
await fundAccount({ address: testAccount.address, token: asset })
|
|
993
987
|
|
|
994
|
-
const escrow =
|
|
988
|
+
const escrow = tip20ChannelEscrow
|
|
995
989
|
const store = Store.memory()
|
|
996
990
|
const server = Mppx_server.create({
|
|
997
991
|
methods: [
|
|
@@ -1007,7 +1001,7 @@ describe('session multi-fetch (examples/session/multi-fetch)', () => {
|
|
|
1007
1001
|
}),
|
|
1008
1002
|
],
|
|
1009
1003
|
realm: 'cli-test-close-action',
|
|
1010
|
-
secretKey: 'cli-test-secret',
|
|
1004
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
1011
1005
|
})
|
|
1012
1006
|
|
|
1013
1007
|
// Track the credential payload action from the close request
|
|
@@ -1069,7 +1063,7 @@ describe('session sse (examples/session/sse)', () => {
|
|
|
1069
1063
|
await fundAccount({ address: testAccount.address, token: Addresses.pathUsd })
|
|
1070
1064
|
await fundAccount({ address: testAccount.address, token: asset })
|
|
1071
1065
|
|
|
1072
|
-
const escrow =
|
|
1066
|
+
const escrow = tip20ChannelEscrow
|
|
1073
1067
|
const store = Store.memory()
|
|
1074
1068
|
const server = Mppx_server.create({
|
|
1075
1069
|
methods: [
|
|
@@ -1085,7 +1079,7 @@ describe('session sse (examples/session/sse)', () => {
|
|
|
1085
1079
|
}),
|
|
1086
1080
|
],
|
|
1087
1081
|
realm: 'cli-test-sse',
|
|
1088
|
-
secretKey: 'cli-test-secret',
|
|
1082
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
1089
1083
|
})
|
|
1090
1084
|
|
|
1091
1085
|
const httpServer = await Http.createServer(async (req, res) => {
|
|
@@ -1152,7 +1146,7 @@ describe('stripe charge', () => {
|
|
|
1152
1146
|
}),
|
|
1153
1147
|
],
|
|
1154
1148
|
realm: 'cli-test-stripe',
|
|
1155
|
-
secretKey: 'cli-test-secret',
|
|
1149
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
1156
1150
|
})
|
|
1157
1151
|
|
|
1158
1152
|
const sptServer = await Http.createServer(async (_req, res) => {
|
|
@@ -1192,7 +1186,7 @@ describe('stripe charge', () => {
|
|
|
1192
1186
|
}),
|
|
1193
1187
|
],
|
|
1194
1188
|
realm: 'cli-test-stripe-nokey',
|
|
1195
|
-
secretKey: 'cli-test-secret',
|
|
1189
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
1196
1190
|
})
|
|
1197
1191
|
|
|
1198
1192
|
const appServer = await Http.createServer(async (req, res) => {
|
|
@@ -1225,7 +1219,7 @@ describe('stripe charge', () => {
|
|
|
1225
1219
|
}),
|
|
1226
1220
|
],
|
|
1227
1221
|
realm: 'cli-test-stripe-live',
|
|
1228
|
-
secretKey: 'cli-test-secret',
|
|
1222
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
1229
1223
|
})
|
|
1230
1224
|
|
|
1231
1225
|
const appServer = await Http.createServer(async (req, res) => {
|
|
@@ -1251,9 +1245,10 @@ describe('stripe charge', () => {
|
|
|
1251
1245
|
|
|
1252
1246
|
// ---------------------------------------------------------------------------
|
|
1253
1247
|
// account [action]
|
|
1254
|
-
//
|
|
1248
|
+
// Keychain tests are opt-in because macOS/Linux keychain commands can block on
|
|
1249
|
+
// developer machines without an unlocked keychain daemon.
|
|
1255
1250
|
// ---------------------------------------------------------------------------
|
|
1256
|
-
describe.
|
|
1251
|
+
describe.runIf(process.env.MPPX_TEST_KEYCHAIN === 'true')('account', () => {
|
|
1257
1252
|
const binPath = path.resolve(import.meta.dirname, '../bin.ts')
|
|
1258
1253
|
const cwd = path.resolve(import.meta.dirname, '../..')
|
|
1259
1254
|
const accountEnv = {
|
|
@@ -1675,7 +1670,7 @@ export default defineConfig({
|
|
|
1675
1670
|
const server = Mppx_server.create({
|
|
1676
1671
|
methods: [tempo.charge({ getClient: () => client })],
|
|
1677
1672
|
realm: 'cli-sign-zero',
|
|
1678
|
-
secretKey: 'cli-test-secret',
|
|
1673
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
1679
1674
|
})
|
|
1680
1675
|
|
|
1681
1676
|
const httpServer = await Http.createServer(async (req, res) => {
|
|
@@ -1741,7 +1736,7 @@ export default defineConfig({
|
|
|
1741
1736
|
}),
|
|
1742
1737
|
],
|
|
1743
1738
|
realm: 'cli-sign-zero-testnet',
|
|
1744
|
-
secretKey: 'cli-test-secret',
|
|
1739
|
+
secretKey: 'cli-test-secret-cli-test-secret-32',
|
|
1745
1740
|
})
|
|
1746
1741
|
|
|
1747
1742
|
const httpServer = await Http.createServer(async (req, res) => {
|
package/src/cli/cli.ts
CHANGED
|
@@ -11,6 +11,7 @@ import { tempo as tempoMainnet } from 'viem/tempo/chains'
|
|
|
11
11
|
import * as Challenge from '../Challenge.js'
|
|
12
12
|
import { normalizeHeaders } from '../client/internal/Fetch.js'
|
|
13
13
|
import * as Mppx from '../client/Mppx.js'
|
|
14
|
+
import * as Constants from '../Constants.js'
|
|
14
15
|
import { validate as validateDiscovery } from '../discovery/Validate.js'
|
|
15
16
|
import { createDefaultStore, createKeychain, resolveAccountName } from './account.js'
|
|
16
17
|
import { loadConfig, resolveAcceptPayment, selectChallenge } from './internal.js'
|
|
@@ -32,6 +33,7 @@ import {
|
|
|
32
33
|
printResponseHeaders,
|
|
33
34
|
prompt,
|
|
34
35
|
resolveChain,
|
|
36
|
+
resolveFundingNetwork,
|
|
35
37
|
resolveRpcUrl,
|
|
36
38
|
} from './utils.js'
|
|
37
39
|
|
|
@@ -373,7 +375,7 @@ const cli = Cli.create('mppx', {
|
|
|
373
375
|
const { challenge, plugin, method: configMethod } = selected
|
|
374
376
|
const selectedChallengeResponse = new Response(null, {
|
|
375
377
|
status: 402,
|
|
376
|
-
headers: {
|
|
378
|
+
headers: { [Constants.Headers.wwwAuthenticate]: Challenge.serialize(challenge) },
|
|
377
379
|
})
|
|
378
380
|
|
|
379
381
|
let tokenSymbol = (challenge.request.currency as string | undefined) ?? ''
|
|
@@ -547,7 +549,7 @@ const cli = Cli.create('mppx', {
|
|
|
547
549
|
|
|
548
550
|
if (!handled) {
|
|
549
551
|
// Default: print receipt + body
|
|
550
|
-
const receiptHeader = credentialResponse.headers.get(
|
|
552
|
+
const receiptHeader = credentialResponse.headers.get(Constants.Headers.paymentReceipt)
|
|
551
553
|
if (receiptHeader && c.options.verbose >= 1) {
|
|
552
554
|
try {
|
|
553
555
|
const receiptJson = JSON.parse(Base64.toString(receiptHeader)) as Record<
|
|
@@ -704,8 +706,9 @@ const account = Cli.create('account', {
|
|
|
704
706
|
const addrDisplay = explorerUrl
|
|
705
707
|
? link(`${explorerUrl}/address/${acct.address}`, acct.address)
|
|
706
708
|
: acct.address
|
|
707
|
-
const
|
|
708
|
-
|
|
709
|
+
const fundingNetwork = resolveFundingNetwork(c.options)
|
|
710
|
+
const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: fundingNetwork })
|
|
711
|
+
resolveChain({ network: fundingNetwork, rpcUrl })
|
|
709
712
|
.then((chain) => createClient({ chain, transport: http(rpcUrl) }))
|
|
710
713
|
.then((client) =>
|
|
711
714
|
import('viem/tempo').then(({ Actions }) =>
|
|
@@ -715,6 +718,11 @@ const account = Cli.create('account', {
|
|
|
715
718
|
return outputResult(c, { address: acct.address, name: resolvedName }, () => {
|
|
716
719
|
console.log(`Account "${resolvedName}" saved to keychain.`)
|
|
717
720
|
console.log(pc.dim(`Address ${addrDisplay}`))
|
|
721
|
+
console.log(
|
|
722
|
+
pc.dim(
|
|
723
|
+
`Fund testnet tokens: mppx account fund --account ${resolvedName} --network testnet`,
|
|
724
|
+
),
|
|
725
|
+
)
|
|
718
726
|
})
|
|
719
727
|
},
|
|
720
728
|
})
|
|
@@ -840,8 +848,9 @@ const account = Cli.create('account', {
|
|
|
840
848
|
return c.error({ code: 'ACCOUNT_NOT_FOUND', message: 'No account found.', exitCode: 69 })
|
|
841
849
|
}
|
|
842
850
|
const acct = privateKeyToAccount(key as `0x${string}`)
|
|
843
|
-
const
|
|
844
|
-
const
|
|
851
|
+
const fundingNetwork = resolveFundingNetwork(c.options)
|
|
852
|
+
const rpcUrl = resolveRpcUrl(c.options.rpcUrl, { network: fundingNetwork })
|
|
853
|
+
const chain = await resolveChain({ network: fundingNetwork, rpcUrl })
|
|
845
854
|
const client = createClient({ chain, transport: http(rpcUrl) })
|
|
846
855
|
if (!structured) console.log(`Funding "${accountName}" on ${chainName(chain)}`)
|
|
847
856
|
try {
|
|
@@ -864,14 +873,18 @@ const account = Cli.create('account', {
|
|
|
864
873
|
},
|
|
865
874
|
)
|
|
866
875
|
} catch (err) {
|
|
876
|
+
const message = err instanceof Error ? err.message : String(err)
|
|
867
877
|
if (structured)
|
|
868
878
|
return c.error({
|
|
869
879
|
code: 'FUNDING_FAILED',
|
|
870
|
-
message
|
|
880
|
+
message,
|
|
871
881
|
exitCode: 1,
|
|
872
882
|
})
|
|
873
|
-
|
|
874
|
-
|
|
883
|
+
return c.error({
|
|
884
|
+
code: 'FUNDING_FAILED',
|
|
885
|
+
message: `Funding failed: ${message}`,
|
|
886
|
+
exitCode: 1,
|
|
887
|
+
})
|
|
875
888
|
}
|
|
876
889
|
},
|
|
877
890
|
})
|
|
@@ -1145,7 +1158,7 @@ const sign = Cli.create('sign', {
|
|
|
1145
1158
|
const wwwAuth = Challenge.serialize(challenge)
|
|
1146
1159
|
const fakeResponse = new Response(null, {
|
|
1147
1160
|
status: 402,
|
|
1148
|
-
headers: {
|
|
1161
|
+
headers: { [Constants.Headers.wwwAuthenticate]: wwwAuth },
|
|
1149
1162
|
})
|
|
1150
1163
|
|
|
1151
1164
|
let credential: string
|
package/src/cli/mcp.test.ts
CHANGED
|
@@ -48,6 +48,14 @@ function createLineClient(child: ChildProcessWithoutNullStreams) {
|
|
|
48
48
|
child.stderr.setEncoding('utf8')
|
|
49
49
|
child.stdout.on('data', (chunk) => {
|
|
50
50
|
buffer += chunk
|
|
51
|
+
drainLines()
|
|
52
|
+
drainJsonBuffer()
|
|
53
|
+
})
|
|
54
|
+
child.stderr.on('data', (chunk) => {
|
|
55
|
+
stderr += chunk
|
|
56
|
+
})
|
|
57
|
+
|
|
58
|
+
function drainLines() {
|
|
51
59
|
for (;;) {
|
|
52
60
|
const index = buffer.indexOf('\n')
|
|
53
61
|
if (index === -1) break
|
|
@@ -60,10 +68,16 @@ function createLineClient(child: ChildProcessWithoutNullStreams) {
|
|
|
60
68
|
nonJsonLines.push(line)
|
|
61
69
|
}
|
|
62
70
|
}
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
function drainJsonBuffer() {
|
|
74
|
+
const text = buffer.trim()
|
|
75
|
+
if (!text) return
|
|
76
|
+
try {
|
|
77
|
+
messages.push(JSON.parse(text))
|
|
78
|
+
buffer = ''
|
|
79
|
+
} catch {}
|
|
80
|
+
}
|
|
67
81
|
|
|
68
82
|
return {
|
|
69
83
|
get nonJsonLines() {
|
|
@@ -88,9 +102,9 @@ function createLineClient(child: ChildProcessWithoutNullStreams) {
|
|
|
88
102
|
await new Promise((resolve) => setTimeout(resolve, 20))
|
|
89
103
|
}
|
|
90
104
|
throw new Error(
|
|
91
|
-
`Timed out waiting for MCP response ${id}. stderr=${stderr}
|
|
92
|
-
|
|
93
|
-
)}`,
|
|
105
|
+
`Timed out waiting for MCP response ${id}. stderr=${stderr} buffer=${JSON.stringify(
|
|
106
|
+
buffer,
|
|
107
|
+
)} nonJson=${JSON.stringify(nonJsonLines)}`,
|
|
94
108
|
)
|
|
95
109
|
},
|
|
96
110
|
}
|