@absol-labs/agent 0.10.0 → 0.12.0-rc.1
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/README.md +106 -30
- package/dist/capability/invocation-capability.d.ts +20 -8
- package/dist/capability/invocation-capability.d.ts.map +1 -1
- package/dist/capability/invocation-capability.js.map +1 -1
- package/dist/capability/probe-capability.d.ts +225 -0
- package/dist/capability/probe-capability.d.ts.map +1 -0
- package/dist/capability/probe-capability.js +248 -0
- package/dist/capability/probe-capability.js.map +1 -0
- package/dist/cli/args.d.ts +11 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +23 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/claim.d.ts.map +1 -1
- package/dist/cli/commands/claim.js +21 -5
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.d.ts.map +1 -1
- package/dist/cli/commands/close.js +51 -7
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/invoke.d.ts +2 -0
- package/dist/cli/commands/invoke.d.ts.map +1 -1
- package/dist/cli/commands/invoke.js +3 -2
- package/dist/cli/commands/invoke.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +15 -2
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/open.d.ts.map +1 -1
- package/dist/cli/commands/open.js +121 -15
- package/dist/cli/commands/open.js.map +1 -1
- package/dist/cli/commands/pay.d.ts +19 -0
- package/dist/cli/commands/pay.d.ts.map +1 -0
- package/dist/cli/commands/pay.js +355 -0
- package/dist/cli/commands/pay.js.map +1 -0
- package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -1
- package/dist/cli/commands/reclaim-unverified.js +15 -6
- package/dist/cli/commands/reclaim-unverified.js.map +1 -1
- package/dist/cli/commands/reclaim.d.ts +23 -2
- package/dist/cli/commands/reclaim.d.ts.map +1 -1
- package/dist/cli/commands/reclaim.js +200 -21
- package/dist/cli/commands/reclaim.js.map +1 -1
- package/dist/cli/commands/refund.d.ts +13 -0
- package/dist/cli/commands/refund.d.ts.map +1 -0
- package/dist/cli/commands/refund.js +224 -0
- package/dist/cli/commands/refund.js.map +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +10 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/streams.js +9 -13
- package/dist/cli/commands/streams.js.map +1 -1
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +2 -1
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/config.d.ts +44 -26
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +88 -38
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/deps.d.ts +86 -7
- package/dist/cli/deps.d.ts.map +1 -1
- package/dist/cli/deps.js +102 -16
- package/dist/cli/deps.js.map +1 -1
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/errors.js +21 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/escape-hatch.d.ts +6 -4
- package/dist/cli/escape-hatch.d.ts.map +1 -1
- package/dist/cli/escape-hatch.js +6 -2
- package/dist/cli/escape-hatch.js.map +1 -1
- package/dist/cli/listings.d.ts +18 -0
- package/dist/cli/listings.d.ts.map +1 -1
- package/dist/cli/listings.js +22 -12
- package/dist/cli/listings.js.map +1 -1
- package/dist/cli/preflight.d.ts +20 -14
- package/dist/cli/preflight.d.ts.map +1 -1
- package/dist/cli/preflight.js +34 -20
- package/dist/cli/preflight.js.map +1 -1
- package/dist/cli/privy.d.ts +83 -0
- package/dist/cli/privy.d.ts.map +1 -0
- package/dist/cli/privy.js +232 -0
- package/dist/cli/privy.js.map +1 -0
- package/dist/cli/reclaimability.d.ts +82 -0
- package/dist/cli/reclaimability.d.ts.map +1 -0
- package/dist/cli/reclaimability.js +80 -0
- package/dist/cli/reclaimability.js.map +1 -0
- package/dist/cli/run.d.ts +2 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +40 -11
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/scan-range.d.ts +2 -2
- package/dist/cli/scan-range.js +2 -2
- package/dist/cli/spend-policy.d.ts +60 -0
- package/dist/cli/spend-policy.d.ts.map +1 -0
- package/dist/cli/spend-policy.js +65 -0
- package/dist/cli/spend-policy.js.map +1 -0
- package/dist/cli/status.d.ts +3 -1
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +15 -3
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/wallet.d.ts +109 -40
- package/dist/cli/wallet.d.ts.map +1 -1
- package/dist/cli/wallet.js +109 -44
- package/dist/cli/wallet.js.map +1 -1
- package/dist/discovery/rate-band.d.ts +74 -0
- package/dist/discovery/rate-band.d.ts.map +1 -0
- package/dist/discovery/rate-band.js +114 -0
- package/dist/discovery/rate-band.js.map +1 -0
- package/dist/escrow-generation.d.ts +81 -0
- package/dist/escrow-generation.d.ts.map +1 -0
- package/dist/escrow-generation.js +76 -0
- package/dist/escrow-generation.js.map +1 -0
- package/dist/frameworks/agentkit.d.ts +8 -4
- package/dist/frameworks/agentkit.d.ts.map +1 -1
- package/dist/frameworks/agentkit.js +27 -10
- package/dist/frameworks/agentkit.js.map +1 -1
- package/dist/frameworks/eliza.d.ts +3 -3
- package/dist/frameworks/eliza.d.ts.map +1 -1
- package/dist/frameworks/eliza.js +15 -6
- package/dist/frameworks/eliza.js.map +1 -1
- package/dist/frameworks/langchain.d.ts.map +1 -1
- package/dist/frameworks/langchain.js +8 -0
- package/dist/frameworks/langchain.js.map +1 -1
- package/dist/gateway/caller-auth-gateway.d.ts +91 -4
- package/dist/gateway/caller-auth-gateway.d.ts.map +1 -1
- package/dist/gateway/caller-auth-gateway.js +184 -7
- package/dist/gateway/caller-auth-gateway.js.map +1 -1
- package/dist/gateway/http-server.d.ts +121 -1
- package/dist/gateway/http-server.d.ts.map +1 -1
- package/dist/gateway/http-server.js +474 -5
- package/dist/gateway/http-server.js.map +1 -1
- package/dist/gateway/probe-auth.d.ts +112 -0
- package/dist/gateway/probe-auth.d.ts.map +1 -0
- package/dist/gateway/probe-auth.js +127 -0
- package/dist/gateway/probe-auth.js.map +1 -0
- package/dist/gateway/signed-rate-bounds.d.ts +51 -0
- package/dist/gateway/signed-rate-bounds.d.ts.map +1 -0
- package/dist/gateway/signed-rate-bounds.js +94 -0
- package/dist/gateway/signed-rate-bounds.js.map +1 -0
- package/dist/gateway/x402-opener-mode.d.ts +215 -0
- package/dist/gateway/x402-opener-mode.d.ts.map +1 -0
- package/dist/gateway/x402-opener-mode.js +639 -0
- package/dist/gateway/x402-opener-mode.js.map +1 -0
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/mandates/env.d.ts +3 -2
- package/dist/mandates/env.d.ts.map +1 -1
- package/dist/mandates/env.js +3 -2
- package/dist/mandates/env.js.map +1 -1
- package/dist/mcp/server.d.ts +100 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +719 -39
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/service-invoker.d.ts +97 -0
- package/dist/mcp/service-invoker.d.ts.map +1 -0
- package/dist/mcp/service-invoker.js +167 -0
- package/dist/mcp/service-invoker.js.map +1 -0
- package/dist/mcp/x402-tools.d.ts +104 -0
- package/dist/mcp/x402-tools.d.ts.map +1 -0
- package/dist/mcp/x402-tools.js +434 -0
- package/dist/mcp/x402-tools.js.map +1 -0
- package/dist/network.d.ts +119 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +199 -0
- package/dist/network.js.map +1 -0
- package/dist/sdk/invoke.d.ts +23 -4
- package/dist/sdk/invoke.d.ts.map +1 -1
- package/dist/sdk/invoke.js +71 -10
- package/dist/sdk/invoke.js.map +1 -1
- package/dist/wallet/autonomous-wallet-broker.d.ts +3 -0
- package/dist/wallet/autonomous-wallet-broker.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet-broker.js +27 -23
- package/dist/wallet/autonomous-wallet-broker.js.map +1 -1
- package/dist/wallet/autonomous-wallet-protocol.d.ts +8 -2
- package/dist/wallet/autonomous-wallet-protocol.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet-protocol.js +9 -2
- package/dist/wallet/autonomous-wallet-protocol.js.map +1 -1
- package/dist/wallet/autonomous-wallet.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet.js +3 -2
- package/dist/wallet/autonomous-wallet.js.map +1 -1
- package/dist/wallet/broker-escrows.d.ts +222 -0
- package/dist/wallet/broker-escrows.d.ts.map +1 -0
- package/dist/wallet/broker-escrows.js +36 -0
- package/dist/wallet/broker-escrows.js.map +1 -0
- package/dist/wallet/lifecycle.d.ts +21 -5
- package/dist/wallet/lifecycle.d.ts.map +1 -1
- package/dist/wallet/lifecycle.js +32 -12
- package/dist/wallet/lifecycle.js.map +1 -1
- package/dist/wallet/privy-broker-server.d.ts.map +1 -1
- package/dist/wallet/privy-broker-server.js +31 -26
- package/dist/wallet/privy-broker-server.js.map +1 -1
- package/dist/wallet/privy-session-broker.d.ts +14 -5
- package/dist/wallet/privy-session-broker.d.ts.map +1 -1
- package/dist/wallet/privy-session-broker.js +29 -17
- package/dist/wallet/privy-session-broker.js.map +1 -1
- package/dist/wallet/privy-session-provider.d.ts +3 -1
- package/dist/wallet/privy-session-provider.d.ts.map +1 -1
- package/dist/wallet/privy-session-provider.js +5 -3
- package/dist/wallet/privy-session-provider.js.map +1 -1
- package/dist/wallet/provider.d.ts.map +1 -1
- package/dist/wallet/provider.js +15 -8
- package/dist/wallet/provider.js.map +1 -1
- package/dist/x402/facilitator.d.ts +42 -17
- package/dist/x402/facilitator.d.ts.map +1 -1
- package/dist/x402/facilitator.js +49 -33
- package/dist/x402/facilitator.js.map +1 -1
- package/dist/x402-buyer/guarded-fetch.d.ts +51 -0
- package/dist/x402-buyer/guarded-fetch.d.ts.map +1 -0
- package/dist/x402-buyer/guarded-fetch.js +147 -0
- package/dist/x402-buyer/guarded-fetch.js.map +1 -0
- package/dist/x402-buyer/index.d.ts +10 -0
- package/dist/x402-buyer/index.d.ts.map +1 -0
- package/dist/x402-buyer/index.js +10 -0
- package/dist/x402-buyer/index.js.map +1 -0
- package/dist/x402-buyer/pay.d.ts +135 -0
- package/dist/x402-buyer/pay.d.ts.map +1 -0
- package/dist/x402-buyer/pay.js +336 -0
- package/dist/x402-buyer/pay.js.map +1 -0
- package/dist/x402-opener/abi.d.ts +684 -0
- package/dist/x402-opener/abi.d.ts.map +1 -0
- package/dist/x402-opener/abi.js +880 -0
- package/dist/x402-opener/abi.js.map +1 -0
- package/dist/x402-opener/facilitator-entry.d.ts +3 -0
- package/dist/x402-opener/facilitator-entry.d.ts.map +1 -0
- package/dist/x402-opener/facilitator-entry.js +37 -0
- package/dist/x402-opener/facilitator-entry.js.map +1 -0
- package/dist/x402-opener/facilitator-server.d.ts +180 -0
- package/dist/x402-opener/facilitator-server.d.ts.map +1 -0
- package/dist/x402-opener/facilitator-server.js +696 -0
- package/dist/x402-opener/facilitator-server.js.map +1 -0
- package/dist/x402-opener/index.d.ts +14 -0
- package/dist/x402-opener/index.d.ts.map +1 -0
- package/dist/x402-opener/index.js +14 -0
- package/dist/x402-opener/index.js.map +1 -0
- package/dist/x402-opener/listing-resolver.d.ts +55 -0
- package/dist/x402-opener/listing-resolver.d.ts.map +1 -0
- package/dist/x402-opener/listing-resolver.js +125 -0
- package/dist/x402-opener/listing-resolver.js.map +1 -0
- package/dist/x402-opener/refund-relay.d.ts +240 -0
- package/dist/x402-opener/refund-relay.d.ts.map +1 -0
- package/dist/x402-opener/refund-relay.js +1240 -0
- package/dist/x402-opener/refund-relay.js.map +1 -0
- package/dist/x402-opener/relayer-queue.d.ts +14 -0
- package/dist/x402-opener/relayer-queue.d.ts.map +1 -0
- package/dist/x402-opener/relayer-queue.js +18 -0
- package/dist/x402-opener/relayer-queue.js.map +1 -0
- package/dist/x402-opener/scheme.d.ts +217 -0
- package/dist/x402-opener/scheme.d.ts.map +1 -0
- package/dist/x402-opener/scheme.js +749 -0
- package/dist/x402-opener/scheme.js.map +1 -0
- package/dist/x402-opener/terms.d.ts +105 -0
- package/dist/x402-opener/terms.d.ts.map +1 -0
- package/dist/x402-opener/terms.js +212 -0
- package/dist/x402-opener/terms.js.map +1 -0
- package/dist/zktls/reclaim.d.ts +2 -2
- package/docs/agent-layer.md +13 -8
- package/docs/autonomous-privy-wallet.md +188 -0
- package/docs/cli.md +342 -53
- package/docs/langchain.md +5 -0
- package/docs/mcp-hosted.md +4 -3
- package/docs/mcp-reference.md +245 -0
- package/docs/probe-capability.md +191 -0
- package/docs/quickstart.md +54 -5
- package/docs/threat-model.md +24 -3
- package/docs/x402.md +681 -0
- package/package.json +19 -6
- package/src/capability/invocation-capability.ts +17 -1
- package/src/capability/probe-capability.ts +355 -0
- package/src/cli/args.ts +29 -0
- package/src/cli/commands/claim.ts +31 -5
- package/src/cli/commands/close.ts +56 -7
- package/src/cli/commands/invoke.ts +6 -2
- package/src/cli/commands/mcp.ts +18 -2
- package/src/cli/commands/open.ts +151 -14
- package/src/cli/commands/pay.ts +442 -0
- package/src/cli/commands/reclaim-unverified.ts +24 -6
- package/src/cli/commands/reclaim.ts +274 -19
- package/src/cli/commands/refund.ts +277 -0
- package/src/cli/commands/status.ts +17 -1
- package/src/cli/commands/streams.ts +11 -15
- package/src/cli/commands/watch.ts +7 -1
- package/src/cli/config.ts +139 -52
- package/src/cli/deps.ts +189 -25
- package/src/cli/errors.ts +24 -1
- package/src/cli/escape-hatch.ts +19 -5
- package/src/cli/listings.ts +43 -10
- package/src/cli/preflight.ts +36 -21
- package/src/cli/privy.ts +398 -0
- package/src/cli/reclaimability.ts +154 -0
- package/src/cli/run.ts +54 -11
- package/src/cli/scan-range.ts +2 -2
- package/src/cli/spend-policy.ts +139 -0
- package/src/cli/status.ts +14 -1
- package/src/cli/wallet.ts +189 -58
- package/src/discovery/rate-band.ts +172 -0
- package/src/escrow-generation.ts +135 -0
- package/src/frameworks/agentkit.ts +45 -11
- package/src/frameworks/eliza.ts +27 -5
- package/src/frameworks/langchain.ts +14 -0
- package/src/gateway/caller-auth-gateway.ts +336 -13
- package/src/gateway/http-server.ts +690 -7
- package/src/gateway/probe-auth.ts +191 -0
- package/src/gateway/signed-rate-bounds.ts +164 -0
- package/src/gateway/x402-opener-mode.ts +974 -0
- package/src/index.ts +112 -14
- package/src/mandates/env.ts +3 -2
- package/src/mcp/server.ts +973 -44
- package/src/mcp/service-invoker.ts +285 -0
- package/src/mcp/x402-tools.ts +621 -0
- package/src/network.ts +302 -0
- package/src/sdk/invoke.ts +96 -17
- package/src/wallet/autonomous-wallet-broker.ts +46 -20
- package/src/wallet/autonomous-wallet-protocol.ts +11 -2
- package/src/wallet/autonomous-wallet.ts +4 -2
- package/src/wallet/broker-escrows.ts +66 -0
- package/src/wallet/lifecycle.ts +53 -18
- package/src/wallet/privy-broker-server.ts +35 -25
- package/src/wallet/privy-session-broker.ts +58 -25
- package/src/wallet/privy-session-provider.ts +7 -3
- package/src/wallet/provider.ts +20 -15
- package/src/x402/facilitator.ts +85 -46
- package/src/x402-buyer/guarded-fetch.ts +213 -0
- package/src/x402-buyer/index.ts +9 -0
- package/src/x402-buyer/pay.ts +517 -0
- package/src/x402-opener/abi.ts +881 -0
- package/src/x402-opener/facilitator-entry.ts +45 -0
- package/src/x402-opener/facilitator-server.ts +1014 -0
- package/src/x402-opener/index.ts +13 -0
- package/src/x402-opener/listing-resolver.ts +202 -0
- package/src/x402-opener/refund-relay.ts +1743 -0
- package/src/x402-opener/relayer-queue.ts +18 -0
- package/src/x402-opener/scheme.ts +1133 -0
- package/src/x402-opener/terms.ts +300 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/wallet/provider.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/wallet/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/wallet/provider.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
import { networkForChainId, } from "@absol-labs/sdk";
|
|
1
2
|
import { loadCdpSdk } from "./cdp-sdk.js";
|
|
2
3
|
import { custom, toHex, getTypesForEIP712Domain, serializeTypedData, isAddress, } from "viem";
|
|
3
4
|
import { parseAccount, privateKeyToAccount, toAccount } from "viem/accounts";
|
|
4
5
|
import { z } from "zod";
|
|
5
6
|
import { VerifiedStreamAgentClient, } from "../sdk/client.js";
|
|
7
|
+
import { defaultNetwork, requireNetworkForChainId } from "../network.js";
|
|
6
8
|
const privateKeySchema = z
|
|
7
9
|
.string()
|
|
8
10
|
.regex(/^0x[0-9a-fA-F]{64}$/, "must be a 32-byte private key");
|
|
@@ -41,7 +43,7 @@ export async function resolveAgentWallet(input, options = {}) {
|
|
|
41
43
|
};
|
|
42
44
|
}
|
|
43
45
|
if ("privy" in input) {
|
|
44
|
-
const chainId = input.privy.chainId ??
|
|
46
|
+
const chainId = input.privy.chainId ?? defaultNetwork().chain.id;
|
|
45
47
|
const account = await createPrivyEmbeddedAccount(input.privy);
|
|
46
48
|
return {
|
|
47
49
|
source: "privy",
|
|
@@ -84,7 +86,7 @@ export async function resolveAgentWallet(input, options = {}) {
|
|
|
84
86
|
*/
|
|
85
87
|
export async function createPrivyEmbeddedAccount(config) {
|
|
86
88
|
validatePrivyConfig(config);
|
|
87
|
-
const chainId = config.chainId ??
|
|
89
|
+
const chainId = config.chainId ?? defaultNetwork().chain.id;
|
|
88
90
|
await assertPrivySession(config, chainId);
|
|
89
91
|
const account = {
|
|
90
92
|
...parseAccount(config.address),
|
|
@@ -191,7 +193,6 @@ async function defaultCdpClientFactory(config) {
|
|
|
191
193
|
: { walletSecret: config.walletSecret }),
|
|
192
194
|
});
|
|
193
195
|
}
|
|
194
|
-
const BASE_SEPOLIA_CHAIN_ID = 84532;
|
|
195
196
|
function validatePrivyConfig(config) {
|
|
196
197
|
if (config.appId.trim() === "") {
|
|
197
198
|
throw new PrivyEmbeddedWalletError("invalid-config", "Privy public app id is required; an app secret is never accepted by this adapter");
|
|
@@ -199,9 +200,15 @@ function validatePrivyConfig(config) {
|
|
|
199
200
|
if (!isAddress(config.address)) {
|
|
200
201
|
throw new PrivyEmbeddedWalletError("invalid-config", "Privy wallet address is invalid");
|
|
201
202
|
}
|
|
202
|
-
if (config.chainId !== undefined
|
|
203
|
-
|
|
204
|
-
|
|
203
|
+
if (config.chainId !== undefined) {
|
|
204
|
+
// A registered TESTNET network only: the wallet signs with a key the
|
|
205
|
+
// browser holds and Metrik settles real value on a mainnet.
|
|
206
|
+
try {
|
|
207
|
+
requireNetworkForChainId(config.chainId, { testnetOnly: true });
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
throw new PrivyEmbeddedWalletError("invalid-config", `Metrik Privy wallets support registered testnet networks only: ${error instanceof Error ? error.message : String(error)}`);
|
|
211
|
+
}
|
|
205
212
|
}
|
|
206
213
|
}
|
|
207
214
|
async function assertPrivySession(config, expectedChainId) {
|
|
@@ -218,7 +225,7 @@ async function assertPrivySession(config, expectedChainId) {
|
|
|
218
225
|
}
|
|
219
226
|
const chainId = parseChainId(chainResult);
|
|
220
227
|
if (chainId !== expectedChainId) {
|
|
221
|
-
throw new PrivyEmbeddedWalletError("chain-mismatch", `Privy wallet chain ID ${chainId} is not
|
|
228
|
+
throw new PrivyEmbeddedWalletError("chain-mismatch", `Privy wallet chain ID ${chainId} is not ${networkForChainId(expectedChainId)?.name ?? "the configured network"} (${expectedChainId})`);
|
|
222
229
|
}
|
|
223
230
|
if (!Array.isArray(accountsResult) ||
|
|
224
231
|
accountsResult.length === 0 ||
|
|
@@ -236,7 +243,7 @@ async function requestPrivy(provider, method, params) {
|
|
|
236
243
|
}
|
|
237
244
|
}
|
|
238
245
|
function createCheckedPrivyProvider(config) {
|
|
239
|
-
const expectedChainId = config.chainId ??
|
|
246
|
+
const expectedChainId = config.chainId ?? defaultNetwork().chain.id;
|
|
240
247
|
return {
|
|
241
248
|
request: async (args) => {
|
|
242
249
|
if (args.method === "eth_sendTransaction") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/wallet/provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/wallet/provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrik-native HTTP `402` challenge flow.
|
|
3
|
+
*
|
|
4
|
+
* This is NOT an implementation of the x402 protocol. It uses its own scheme
|
|
5
|
+
* string (`streamproof-verified-stream`), its own wire format, and its own
|
|
6
|
+
* request header (`x-metrik-payment`). It does not interoperate with
|
|
7
|
+
* `x402-fetch`, `x402-axios`, `x402-express`, or any other x402 client or
|
|
8
|
+
* facilitator. See `docs/x402.md` for the full explanation of why Metrik's
|
|
9
|
+
* metered-stream settlement does not fit any shipped x402 scheme.
|
|
10
|
+
*
|
|
11
|
+
* The directory name is historical. The deprecated `X402*` / `x402*` alias
|
|
12
|
+
* exports that used to live here were removed with the x402 v1 integration
|
|
13
|
+
* (metrik-agent#115); only the canonical names below are exported.
|
|
14
|
+
*/
|
|
1
15
|
import type { StreamProofClientConfig } from "@absol-labs/sdk";
|
|
2
16
|
import { z } from "zod";
|
|
3
17
|
import { type SignedSpendMandate } from "../mandates/mandate.js";
|
|
4
18
|
import { type VerifiedStreamAgentOpener } from "../sdk/client.js";
|
|
5
19
|
import { type ConsumerDeliveryProofService, type HttpsResponseMatch, type HttpsResponseRedaction, type VerifiedConsumedHttpsResponseProof } from "../zktls/reclaim.js";
|
|
6
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Immutable wire constant for the Metrik-native 402 scheme. The value is
|
|
22
|
+
* historical (`streamproof-*` predates the Metrik rename) and MUST NOT change:
|
|
23
|
+
* the live gateway and deployed callers depend on it.
|
|
24
|
+
*/
|
|
25
|
+
export declare const METRIK_STREAM_SCHEME: "streamproof-verified-stream";
|
|
26
|
+
/**
|
|
27
|
+
* Request header carrying the Metrik verified-stream payload. Deliberately NOT
|
|
28
|
+
* `x-payment`: that header belongs to the x402 protocol, which this flow does
|
|
29
|
+
* not implement.
|
|
30
|
+
*/
|
|
31
|
+
export declare const METRIK_PAYMENT_HEADER: "x-metrik-payment";
|
|
7
32
|
export declare const verifiedStreamRequirementsSchema: z.ZodObject<{
|
|
8
33
|
operator: z.ZodString;
|
|
9
34
|
serviceRef: z.ZodString;
|
|
@@ -31,7 +56,7 @@ export declare const verifiedStreamRequirementsSchema: z.ZodObject<{
|
|
|
31
56
|
}>;
|
|
32
57
|
export interface VerifiedStreamRequirements extends z.infer<typeof verifiedStreamRequirementsSchema> {
|
|
33
58
|
}
|
|
34
|
-
export declare const
|
|
59
|
+
export declare const streamChallengeSchema: z.ZodObject<{
|
|
35
60
|
scheme: z.ZodLiteral<"streamproof-verified-stream">;
|
|
36
61
|
requirements: z.ZodObject<{
|
|
37
62
|
operator: z.ZodString;
|
|
@@ -81,9 +106,9 @@ export declare const x402StreamChallengeSchema: z.ZodObject<{
|
|
|
81
106
|
maxBudgetUsdc: bigint;
|
|
82
107
|
};
|
|
83
108
|
}>;
|
|
84
|
-
export interface
|
|
109
|
+
export interface StreamChallenge extends z.infer<typeof streamChallengeSchema> {
|
|
85
110
|
}
|
|
86
|
-
export declare const
|
|
111
|
+
export declare const streamOpenPayloadSchema: z.ZodObject<{
|
|
87
112
|
challenge: z.ZodObject<{
|
|
88
113
|
scheme: z.ZodLiteral<"streamproof-verified-stream">;
|
|
89
114
|
requirements: z.ZodObject<{
|
|
@@ -248,19 +273,19 @@ export declare const x402OpenPayloadSchema: z.ZodObject<{
|
|
|
248
273
|
};
|
|
249
274
|
};
|
|
250
275
|
}>;
|
|
251
|
-
export interface
|
|
276
|
+
export interface StreamOpenPayload extends z.infer<typeof streamOpenPayloadSchema> {
|
|
252
277
|
}
|
|
253
|
-
export interface
|
|
278
|
+
export interface StreamFacilitator {
|
|
254
279
|
/** Build the 402 challenge a server returns to prompt a verified stream. */
|
|
255
|
-
challenge(req: VerifiedStreamRequirements):
|
|
280
|
+
challenge(req: VerifiedStreamRequirements): StreamChallenge;
|
|
256
281
|
/** Verify + open the stream from an agent's signed payment payload. */
|
|
257
282
|
open(payloadHeader: string): Promise<{
|
|
258
283
|
streamId: `0x${string}`;
|
|
259
284
|
}>;
|
|
260
285
|
/** Prove the HTTPS response consumed after opening a verified stream. */
|
|
261
|
-
proveConsumedHttpsResponse(input:
|
|
286
|
+
proveConsumedHttpsResponse(input: ConsumedHttpsResponseProofInput): Promise<VerifiedConsumedHttpsResponseProof>;
|
|
262
287
|
}
|
|
263
|
-
export interface
|
|
288
|
+
export interface ConsumedHttpsResponseProofInput {
|
|
264
289
|
readonly signedMandate: SignedSpendMandate;
|
|
265
290
|
readonly streamId?: `0x${string}`;
|
|
266
291
|
readonly operator?: `0x${string}`;
|
|
@@ -286,7 +311,7 @@ export interface VerifiedStreamFacilitatorOptions {
|
|
|
286
311
|
readonly resolveSpentSoFarUsdc?: (signedMandate: SignedSpendMandate) => bigint | Promise<bigint>;
|
|
287
312
|
readonly resolveRevokedMandateIds?: (signedMandate: SignedSpendMandate) => Iterable<`0x${string}`> | Promise<Iterable<`0x${string}`>>;
|
|
288
313
|
}
|
|
289
|
-
export declare class
|
|
314
|
+
export declare class StreamPayloadError extends Error {
|
|
290
315
|
constructor(message: string);
|
|
291
316
|
}
|
|
292
317
|
export declare class SettlementTargetMismatchError extends Error {
|
|
@@ -302,10 +327,10 @@ export declare class DeliveryProofUnavailableError extends Error {
|
|
|
302
327
|
* facilitator denies the open in this case (fail-closed, buyer-favoring) rather
|
|
303
328
|
* than proceeding on an unverified assumption of "0 spent / none revoked".
|
|
304
329
|
*/
|
|
305
|
-
export declare class
|
|
330
|
+
export declare class SpendControlUnavailableError extends Error {
|
|
306
331
|
constructor(message: string);
|
|
307
332
|
}
|
|
308
|
-
export declare class
|
|
333
|
+
export declare class VerifiedStreamFacilitator implements StreamFacilitator {
|
|
309
334
|
private readonly agentClient;
|
|
310
335
|
private readonly deliveryProofs;
|
|
311
336
|
private readonly sdkConfig;
|
|
@@ -313,13 +338,13 @@ export declare class VerifiedStreamX402Facilitator implements X402Facilitator {
|
|
|
313
338
|
private readonly resolveSpentSoFarUsdc;
|
|
314
339
|
private readonly resolveRevokedMandateIds;
|
|
315
340
|
constructor(options: VerifiedStreamFacilitatorOptions);
|
|
316
|
-
challenge(req: VerifiedStreamRequirements):
|
|
341
|
+
challenge(req: VerifiedStreamRequirements): StreamChallenge;
|
|
317
342
|
open(payloadHeader: string): Promise<{
|
|
318
343
|
streamId: `0x${string}`;
|
|
319
344
|
}>;
|
|
320
|
-
proveConsumedHttpsResponse(input:
|
|
345
|
+
proveConsumedHttpsResponse(input: ConsumedHttpsResponseProofInput): Promise<VerifiedConsumedHttpsResponseProof>;
|
|
321
346
|
}
|
|
322
|
-
export declare function
|
|
323
|
-
export declare function
|
|
324
|
-
export declare function
|
|
347
|
+
export declare function encodeStreamPayloadHeader(payload: StreamOpenPayload): string;
|
|
348
|
+
export declare function parseStreamChallengeJson(value: unknown): StreamChallenge;
|
|
349
|
+
export declare function parseStreamPayloadHeader(payloadHeader: string): StreamOpenPayload;
|
|
325
350
|
//# sourceMappingURL=facilitator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facilitator.d.ts","sourceRoot":"","sources":["../../src/x402/facilitator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACxC,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"facilitator.d.ts","sourceRoot":"","sources":["../../src/x402/facilitator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,KAAK,yBAAyB,EAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,kCAAkC,EACxC,MAAM,qBAAqB,CAAC;AAE7B;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAG,6BAAsC,CAAC;AAE3E;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,EAAG,kBAA2B,CAAC;AAKjE,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;EAQ3C,CAAC;AAEH,MAAM,WAAW,0BAA2B,SAAQ,CAAC,CAAC,KAAK,CACzD,OAAO,gCAAgC,CACxC;CAAG;AAEJ,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGhC,CAAC;AAEH,MAAM,WAAW,eAAgB,SAAQ,CAAC,CAAC,KAAK,CAC9C,OAAO,qBAAqB,CAC7B;CAAG;AAEJ,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAGlC,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,CAAC,CAAC,KAAK,CAChD,OAAO,uBAAuB,CAC/B;CAAG;AAEJ,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,SAAS,CAAC,GAAG,EAAE,0BAA0B,GAAG,eAAe,CAAC;IAC5D,uEAAuE;IACvE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAClE,yEAAyE;IACzE,0BAA0B,CACxB,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,kCAAkC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,aAAa,EAAE,kBAAkB,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;IACzC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACxD,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAChE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;CACxC;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,SAAS,EAAE,uBAAuB,CAAC;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAC3B,MAAM,EAAE,uBAAuB,KAC5B,yBAAyB,CAAC;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,4BAA4B,CAAC;IACvD,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;IACnC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAC/B,aAAa,EAAE,kBAAkB,KAC9B,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAClC,aAAa,EAAE,kBAAkB,KAC9B,QAAQ,CAAC,KAAK,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC;CACjE;AAaD,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,EAAE,MAAM;CAM5B;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,6BAA8B,SAAQ,KAAK;gBAC1C,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;GAMG;AACH,qBAAa,4BAA6B,SAAQ,KAAK;gBACzC,OAAO,EAAE,MAAM;CAK5B;AAED,qBAAa,yBAA0B,YAAW,iBAAiB;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA2C;IAC1E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAK1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAExB;IACd,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAI3B;gBAEF,OAAO,EAAE,gCAAgC;IA+BrD,SAAS,CAAC,GAAG,EAAE,0BAA0B,GAAG,eAAe;IAMrD,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC;IA2EjE,0BAA0B,CAC9B,KAAK,EAAE,+BAA+B,GACrC,OAAO,CAAC,kCAAkC,CAAC;CAuC/C;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAM5E;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,CAQxE;AAED,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,MAAM,GACpB,iBAAiB,CA8BnB"}
|
package/dist/x402/facilitator.js
CHANGED
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import { signedSpendMandateSchema, } from "../mandates/mandate.js";
|
|
3
3
|
import { VerifiedStreamAgentClient, } from "../sdk/client.js";
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* Immutable wire constant for the Metrik-native 402 scheme. The value is
|
|
6
|
+
* historical (`streamproof-*` predates the Metrik rename) and MUST NOT change:
|
|
7
|
+
* the live gateway and deployed callers depend on it.
|
|
8
|
+
*/
|
|
9
|
+
export const METRIK_STREAM_SCHEME = "streamproof-verified-stream";
|
|
10
|
+
/**
|
|
11
|
+
* Request header carrying the Metrik verified-stream payload. Deliberately NOT
|
|
12
|
+
* `x-payment`: that header belongs to the x402 protocol, which this flow does
|
|
13
|
+
* not implement.
|
|
14
|
+
*/
|
|
15
|
+
export const METRIK_PAYMENT_HEADER = "x-metrik-payment";
|
|
5
16
|
const addressSchema = z.string().regex(/^0x[0-9a-fA-F]{40}$/);
|
|
6
17
|
const bytes32Schema = z.string().regex(/^0x[0-9a-fA-F]{64}$/);
|
|
7
18
|
export const verifiedStreamRequirementsSchema = z.object({
|
|
@@ -13,12 +24,12 @@ export const verifiedStreamRequirementsSchema = z.object({
|
|
|
13
24
|
maxDurationSeconds: z.number().int().positive(),
|
|
14
25
|
maxBudgetUsdc: z.bigint().positive(),
|
|
15
26
|
});
|
|
16
|
-
export const
|
|
17
|
-
scheme: z.literal(
|
|
27
|
+
export const streamChallengeSchema = z.object({
|
|
28
|
+
scheme: z.literal(METRIK_STREAM_SCHEME),
|
|
18
29
|
requirements: verifiedStreamRequirementsSchema,
|
|
19
30
|
});
|
|
20
|
-
export const
|
|
21
|
-
challenge:
|
|
31
|
+
export const streamOpenPayloadSchema = z.object({
|
|
32
|
+
challenge: streamChallengeSchema,
|
|
22
33
|
signedMandate: signedSpendMandateSchema,
|
|
23
34
|
});
|
|
24
35
|
const warnedFacilitatorGaps = new Set();
|
|
@@ -30,9 +41,11 @@ function warnFacilitatorOnce(key, message) {
|
|
|
30
41
|
warnedFacilitatorGaps.add(key);
|
|
31
42
|
console.error(message);
|
|
32
43
|
}
|
|
33
|
-
export class
|
|
44
|
+
export class StreamPayloadError extends Error {
|
|
34
45
|
constructor(message) {
|
|
35
46
|
super(message);
|
|
47
|
+
// Unchanged on purpose: `error.name` is an observable value that existing
|
|
48
|
+
// consumers may match on. The class was renamed; its `name` was not.
|
|
36
49
|
this.name = "X402PayloadError";
|
|
37
50
|
}
|
|
38
51
|
}
|
|
@@ -55,13 +68,14 @@ export class DeliveryProofUnavailableError extends Error {
|
|
|
55
68
|
* facilitator denies the open in this case (fail-closed, buyer-favoring) rather
|
|
56
69
|
* than proceeding on an unverified assumption of "0 spent / none revoked".
|
|
57
70
|
*/
|
|
58
|
-
export class
|
|
71
|
+
export class SpendControlUnavailableError extends Error {
|
|
59
72
|
constructor(message) {
|
|
60
73
|
super(message);
|
|
74
|
+
// Unchanged on purpose: see StreamPayloadError above.
|
|
61
75
|
this.name = "X402SpendControlUnavailableError";
|
|
62
76
|
}
|
|
63
77
|
}
|
|
64
|
-
export class
|
|
78
|
+
export class VerifiedStreamFacilitator {
|
|
65
79
|
agentClient;
|
|
66
80
|
deliveryProofs;
|
|
67
81
|
sdkConfig;
|
|
@@ -87,19 +101,19 @@ export class VerifiedStreamX402Facilitator {
|
|
|
87
101
|
// can NEVER verify the cap. `open()` therefore fails CLOSED (denies) until
|
|
88
102
|
// both resolvers are wired; warn once so the reason is visible at deploy time.
|
|
89
103
|
if (options.resolveSpentSoFarUsdc === undefined) {
|
|
90
|
-
warnFacilitatorOnce("
|
|
104
|
+
warnFacilitatorOnce("metrik-stream-spent", "[metrik] Metrik verified-stream facilitator: no resolveSpentSoFarUsdc wired — the mandate cumulative cap (maxTotalUsdc) cannot be verified, so open() will DENY every spend (fail-closed) until a resolver is wired.");
|
|
91
105
|
}
|
|
92
106
|
if (options.resolveRevokedMandateIds === undefined) {
|
|
93
|
-
warnFacilitatorOnce("
|
|
107
|
+
warnFacilitatorOnce("metrik-stream-revocation", "[metrik] Metrik verified-stream facilitator: no resolveRevokedMandateIds wired — revocation state cannot be verified, so open() will DENY every spend (fail-closed) until a resolver is wired.");
|
|
94
108
|
}
|
|
95
109
|
}
|
|
96
110
|
challenge(req) {
|
|
97
111
|
const requirements = verifiedStreamRequirementsSchema.parse(req);
|
|
98
112
|
assertSettlementTarget(requirements, this.sdkConfig);
|
|
99
|
-
return { scheme:
|
|
113
|
+
return { scheme: METRIK_STREAM_SCHEME, requirements };
|
|
100
114
|
}
|
|
101
115
|
async open(payloadHeader) {
|
|
102
|
-
const payload =
|
|
116
|
+
const payload = parseStreamPayloadHeader(payloadHeader);
|
|
103
117
|
assertSettlementTarget(payload.challenge.requirements, this.sdkConfig);
|
|
104
118
|
// FAIL-CLOSED fund safety (B6). Both the cumulative-cap accounting and the
|
|
105
119
|
// revocation state must be POSITIVELY verified before any spend. A missing
|
|
@@ -107,32 +121,32 @@ export class VerifiedStreamX402Facilitator {
|
|
|
107
121
|
// returns a non-bigint/negative spend is treated as "state cannot be
|
|
108
122
|
// verified" and DENIES the open — never a silent fail-open to 0/none.
|
|
109
123
|
if (this.resolveSpentSoFarUsdc === undefined) {
|
|
110
|
-
throw new
|
|
124
|
+
throw new SpendControlUnavailableError("cannot open verified stream: no resolveSpentSoFarUsdc wired — the mandate cumulative cap (maxTotalUsdc) cannot be verified (fail-closed)");
|
|
111
125
|
}
|
|
112
126
|
if (this.resolveRevokedMandateIds === undefined) {
|
|
113
|
-
throw new
|
|
127
|
+
throw new SpendControlUnavailableError("cannot open verified stream: no resolveRevokedMandateIds wired — mandate revocation state cannot be verified (fail-closed)");
|
|
114
128
|
}
|
|
115
129
|
let spentSoFarUsdc;
|
|
116
130
|
try {
|
|
117
131
|
spentSoFarUsdc = await this.resolveSpentSoFarUsdc(payload.signedMandate);
|
|
118
132
|
}
|
|
119
133
|
catch (error) {
|
|
120
|
-
throw new
|
|
134
|
+
throw new SpendControlUnavailableError(`cannot verify mandate cumulative cap (maxTotalUsdc): ${error instanceof Error ? error.message : String(error)} (fail-closed)`);
|
|
121
135
|
}
|
|
122
136
|
if (typeof spentSoFarUsdc !== "bigint" || spentSoFarUsdc < 0n) {
|
|
123
|
-
throw new
|
|
137
|
+
throw new SpendControlUnavailableError("cannot verify mandate cumulative cap (maxTotalUsdc): resolver returned an invalid spent-so-far value (fail-closed)");
|
|
124
138
|
}
|
|
125
139
|
let revokedMandateIds;
|
|
126
140
|
try {
|
|
127
141
|
revokedMandateIds = await this.resolveRevokedMandateIds(payload.signedMandate);
|
|
128
142
|
}
|
|
129
143
|
catch (error) {
|
|
130
|
-
throw new
|
|
144
|
+
throw new SpendControlUnavailableError(`cannot verify mandate revocation state: ${error instanceof Error ? error.message : String(error)} (fail-closed)`);
|
|
131
145
|
}
|
|
132
146
|
if (revokedMandateIds === null ||
|
|
133
147
|
revokedMandateIds === undefined ||
|
|
134
148
|
typeof revokedMandateIds[Symbol.iterator] !== "function") {
|
|
135
|
-
throw new
|
|
149
|
+
throw new SpendControlUnavailableError("cannot verify mandate revocation state: resolver returned a non-iterable value (fail-closed)");
|
|
136
150
|
}
|
|
137
151
|
const result = await this.agentClient.openVerifiedStream({
|
|
138
152
|
operator: payload.challenge.requirements.operator,
|
|
@@ -149,7 +163,7 @@ export class VerifiedStreamX402Facilitator {
|
|
|
149
163
|
}
|
|
150
164
|
async proveConsumedHttpsResponse(input) {
|
|
151
165
|
if (this.deliveryProofs === undefined) {
|
|
152
|
-
throw new DeliveryProofUnavailableError("zkTLS delivery proofs are not configured on this
|
|
166
|
+
throw new DeliveryProofUnavailableError("zkTLS delivery proofs are not configured on this Metrik verified-stream facilitator");
|
|
153
167
|
}
|
|
154
168
|
return await this.deliveryProofs.proveConsumedHttpsResponse({
|
|
155
169
|
url: input.url,
|
|
@@ -184,33 +198,35 @@ export class VerifiedStreamX402Facilitator {
|
|
|
184
198
|
});
|
|
185
199
|
}
|
|
186
200
|
}
|
|
187
|
-
export function
|
|
188
|
-
const parsed =
|
|
189
|
-
const token = Buffer.from(
|
|
190
|
-
return `${
|
|
201
|
+
export function encodeStreamPayloadHeader(payload) {
|
|
202
|
+
const parsed = streamOpenPayloadSchema.parse(payload);
|
|
203
|
+
const token = Buffer.from(stringifyStreamPayload(parsed)).toString("base64url");
|
|
204
|
+
return `${METRIK_STREAM_SCHEME} ${token}`;
|
|
191
205
|
}
|
|
192
|
-
export function
|
|
193
|
-
const parsed =
|
|
206
|
+
export function parseStreamChallengeJson(value) {
|
|
207
|
+
const parsed = streamChallengeSchema.safeParse(reviveBigInts(value));
|
|
194
208
|
if (!parsed.success) {
|
|
195
|
-
throw new
|
|
209
|
+
throw new StreamPayloadError(parsed.error.issues.map((issue) => issue.message).join("; "));
|
|
196
210
|
}
|
|
197
211
|
return parsed.data;
|
|
198
212
|
}
|
|
199
|
-
export function
|
|
213
|
+
export function parseStreamPayloadHeader(payloadHeader) {
|
|
200
214
|
const [scheme, token] = payloadHeader.split(" ", 2);
|
|
201
|
-
if (scheme !==
|
|
202
|
-
|
|
215
|
+
if (scheme !== METRIK_STREAM_SCHEME ||
|
|
216
|
+
token === undefined ||
|
|
217
|
+
token.trim() === "") {
|
|
218
|
+
throw new StreamPayloadError("invalid Metrik verified-stream payload header");
|
|
203
219
|
}
|
|
204
220
|
let decoded;
|
|
205
221
|
try {
|
|
206
222
|
decoded = JSON.parse(Buffer.from(token, "base64url").toString("utf8"));
|
|
207
223
|
}
|
|
208
224
|
catch (error) {
|
|
209
|
-
throw new
|
|
225
|
+
throw new StreamPayloadError(`invalid Metrik verified-stream payload encoding: ${error instanceof Error ? error.message : String(error)}`);
|
|
210
226
|
}
|
|
211
|
-
const parsed =
|
|
227
|
+
const parsed = streamOpenPayloadSchema.safeParse(reviveBigInts(decoded));
|
|
212
228
|
if (!parsed.success) {
|
|
213
|
-
throw new
|
|
229
|
+
throw new StreamPayloadError(parsed.error.issues.map((issue) => issue.message).join("; "));
|
|
214
230
|
}
|
|
215
231
|
return parsed.data;
|
|
216
232
|
}
|
|
@@ -225,7 +241,7 @@ function assertSettlementTarget(requirements, sdkConfig) {
|
|
|
225
241
|
throw new SettlementTargetMismatchError(`challenge escrow ${requirements.escrow} does not match configured escrow ${sdkConfig.escrow}`);
|
|
226
242
|
}
|
|
227
243
|
}
|
|
228
|
-
function
|
|
244
|
+
function stringifyStreamPayload(payload) {
|
|
229
245
|
return JSON.stringify(payload, (_key, value) => typeof value === "bigint" ? `${value.toString()}n` : value);
|
|
230
246
|
}
|
|
231
247
|
function reviveBigInts(value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../src/x402/facilitator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"facilitator.js","sourceRoot":"","sources":["../../src/x402/facilitator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Outbound-request guard for x402 surfaces where the URL comes from a model
|
|
3
|
+
* (MCP `x402_pay`, `refund`, `refund_status`): without it, those tools are an
|
|
4
|
+
* SSRF probe of whatever network the server runs on.
|
|
5
|
+
*
|
|
6
|
+
* Every request is refused unless:
|
|
7
|
+
* - the URL is `https:` (or `http:` only when private networks are explicitly
|
|
8
|
+
* allowed, i.e. local testing);
|
|
9
|
+
* - its host is on the allowlist, when one is configured
|
|
10
|
+
* (`METRIK_AGENT_X402_ALLOWED_HOSTS`; `*.example.com` matches subdomains);
|
|
11
|
+
* - its host — an IP literal, or EVERY address the name resolves to — is not
|
|
12
|
+
* loopback, private, link-local, unique-local, CGNAT, multicast, reserved or
|
|
13
|
+
* unspecified.
|
|
14
|
+
*
|
|
15
|
+
* Redirects are never followed (`redirect: "manual"`; a 3xx is a refusal), so
|
|
16
|
+
* a public host cannot bounce the request — or a payment signature — onto an
|
|
17
|
+
* internal one.
|
|
18
|
+
*
|
|
19
|
+
* Limitation, stated: the address is checked at lookup time and the platform
|
|
20
|
+
* `fetch` resolves the name again when it connects, so a DNS-rebinding host
|
|
21
|
+
* with a near-zero TTL can still race the check. Use the allowlist where that
|
|
22
|
+
* matters.
|
|
23
|
+
*/
|
|
24
|
+
export type LookupFn = (hostname: string) => Promise<readonly {
|
|
25
|
+
readonly address: string;
|
|
26
|
+
readonly family: number;
|
|
27
|
+
}[]>;
|
|
28
|
+
export interface GuardedFetchOptions {
|
|
29
|
+
/** Exact hostnames, or `*.domain` for subdomains. Unset = any public host. */
|
|
30
|
+
readonly allowedHosts?: readonly string[];
|
|
31
|
+
/** Tests / local development only: permit loopback and private ranges. */
|
|
32
|
+
readonly allowPrivateNetworks?: boolean;
|
|
33
|
+
/** The fetch to wrap. Default `globalThis.fetch`. */
|
|
34
|
+
readonly fetch?: typeof fetch;
|
|
35
|
+
/** DNS resolution. Default `dns.lookup(host, { all: true })`. */
|
|
36
|
+
readonly lookup?: LookupFn;
|
|
37
|
+
}
|
|
38
|
+
/** A request the guard refused; nothing was sent. */
|
|
39
|
+
export declare class OutboundRequestRefusedError extends Error {
|
|
40
|
+
constructor(reason: string);
|
|
41
|
+
}
|
|
42
|
+
/** Whether an IP literal is in a range an outbound x402 request must not reach. */
|
|
43
|
+
export declare function isBlockedAddress(address: string): boolean;
|
|
44
|
+
/** Validate one URL against the guard; throws {@link OutboundRequestRefusedError}. */
|
|
45
|
+
export declare function assertOutboundUrlAllowed(raw: string | URL, options?: GuardedFetchOptions): Promise<URL>;
|
|
46
|
+
/**
|
|
47
|
+
* A `fetch` that applies {@link assertOutboundUrlAllowed} to every request and
|
|
48
|
+
* never follows a redirect.
|
|
49
|
+
*/
|
|
50
|
+
export declare function createGuardedFetch(options?: GuardedFetchOptions): typeof fetch;
|
|
51
|
+
//# sourceMappingURL=guarded-fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"guarded-fetch.d.ts","sourceRoot":"","sources":["../../src/x402-buyer/guarded-fetch.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,MAAM,MAAM,QAAQ,GAAG,CACrB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,SAAS;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,CAAC;AAE/E,MAAM,WAAW,mBAAmB;IAClC,8EAA8E;IAC9E,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,0EAA0E;IAC1E,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IACxC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IAC9B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;CAC5B;AAED,qDAAqD;AACrD,qBAAa,2BAA4B,SAAQ,KAAK;gBACxC,MAAM,EAAE,MAAM;CAI3B;AAyDD,mFAAmF;AACnF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAMzD;AAWD,sFAAsF;AACtF,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,GAAG,CAAC,CAyDd;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,GAAE,mBAAwB,GAChC,OAAO,KAAK,CAoBd"}
|