@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
package/dist/network.js
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { findNetwork, MetrikClient, networkDeployments, getNetwork, listNetworks, networkForCaip2, networkForChainId, } from "@absol-labs/sdk";
|
|
2
|
+
import { defineChain, isAddress, isAddressEqual } from "viem";
|
|
3
|
+
/**
|
|
4
|
+
* The agent layer's ONE view of where Metrik is deployed.
|
|
5
|
+
*
|
|
6
|
+
* Every chain id, CAIP-2 id, contract address, deploy block, default RPC, gas
|
|
7
|
+
* token and oracle origin this package uses comes from the `@absol-labs/sdk`
|
|
8
|
+
* network registry through this module. Nothing under `src/` may hardcode them
|
|
9
|
+
* (`test/no-hardcoded-chain.test.ts` fails the build if anything does), so a new
|
|
10
|
+
* deployment — the V3 escrow and factory included — is a registry/config change,
|
|
11
|
+
* not a code change here.
|
|
12
|
+
*
|
|
13
|
+
* What the agent adds on top of the registry is only what the registry does not
|
|
14
|
+
* describe: which network is the DEFAULT for a surface that is given none, and
|
|
15
|
+
* where a test wallet gets funded (a faucet is an off-chain courtesy, not a
|
|
16
|
+
* deployment fact).
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* The registry id every surface defaults to when no network is selected. An
|
|
20
|
+
* id, not a chain id: the registry resolves it to the chain, addresses and RPC.
|
|
21
|
+
*/
|
|
22
|
+
export const DEFAULT_METRIK_NETWORK_ID = "baseSepolia";
|
|
23
|
+
/** Environment variable that selects the network by id, chain id or CAIP-2 id. */
|
|
24
|
+
export const METRIK_NETWORK_ENV = "METRIK_NETWORK";
|
|
25
|
+
/** A network the registry does not know, or one the build does not allow. */
|
|
26
|
+
export class UnsupportedNetworkError extends Error {
|
|
27
|
+
selector;
|
|
28
|
+
constructor(selector, message) {
|
|
29
|
+
super(message);
|
|
30
|
+
this.name = "UnsupportedNetworkError";
|
|
31
|
+
this.selector = selector;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** The network a surface uses when none is selected. */
|
|
35
|
+
export function defaultNetwork() {
|
|
36
|
+
return getNetwork(DEFAULT_METRIK_NETWORK_ID);
|
|
37
|
+
}
|
|
38
|
+
/** Every registered network the policy allows, in registry order. */
|
|
39
|
+
export function allowedNetworks(policy = {}) {
|
|
40
|
+
return listNetworks().filter((network) => policy.testnetOnly !== true || network.testnet);
|
|
41
|
+
}
|
|
42
|
+
/** `"<chainId> (<name>)"` for every allowed network, for error messages. */
|
|
43
|
+
export function describeAllowedNetworks(policy = {}) {
|
|
44
|
+
const allowed = allowedNetworks(policy);
|
|
45
|
+
if (allowed.length === 0)
|
|
46
|
+
return "(none registered)";
|
|
47
|
+
return allowed
|
|
48
|
+
.map((network) => `${network.chain.id} (${network.name}, "${network.id}")`)
|
|
49
|
+
.join(", ");
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Resolve a network selector — a registry id (e.g. the default
|
|
53
|
+
* {@link DEFAULT_METRIK_NETWORK_ID}), an EVM chain id (as a number or a decimal
|
|
54
|
+
* string), or a CAIP-2 id (`eip155:<chainId>`) — to a registered
|
|
55
|
+
* network the policy allows. `undefined` (or empty) selects the default.
|
|
56
|
+
*
|
|
57
|
+
* Fail closed: an unknown selector, or a known network the policy forbids, is an
|
|
58
|
+
* {@link UnsupportedNetworkError}, never a silent fallback to the default.
|
|
59
|
+
*/
|
|
60
|
+
export function resolveAgentNetwork(selector, policy = {}) {
|
|
61
|
+
const raw = typeof selector === "number" ? String(selector) : selector?.trim();
|
|
62
|
+
const network = raw === undefined || raw.length === 0
|
|
63
|
+
? defaultNetwork()
|
|
64
|
+
: lookupNetwork(raw);
|
|
65
|
+
if (network === undefined) {
|
|
66
|
+
throw new UnsupportedNetworkError(raw ?? "", `unknown Metrik network "${raw}": the SDK network registry knows ${describeAllowedNetworks()}`);
|
|
67
|
+
}
|
|
68
|
+
assertNetworkAllowed(network, policy, raw ?? network.id);
|
|
69
|
+
return network;
|
|
70
|
+
}
|
|
71
|
+
/** The registered network on `chainId` the policy allows; throws otherwise. */
|
|
72
|
+
export function requireNetworkForChainId(chainId, policy = {}, source = "the configured chain id") {
|
|
73
|
+
const network = networkForChainId(chainId);
|
|
74
|
+
if (network === undefined) {
|
|
75
|
+
throw new UnsupportedNetworkError(String(chainId), `${source} ${chainId} is not a network the Metrik registry knows (registered: ${describeAllowedNetworks()})`);
|
|
76
|
+
}
|
|
77
|
+
assertNetworkAllowed(network, policy, source);
|
|
78
|
+
return network;
|
|
79
|
+
}
|
|
80
|
+
/** The registered network with this CAIP-2 id the policy allows; throws otherwise. */
|
|
81
|
+
export function requireNetworkForCaip2(caip2, policy = {}, source = "the configured network") {
|
|
82
|
+
const network = networkForCaip2(caip2);
|
|
83
|
+
if (network === undefined) {
|
|
84
|
+
throw new UnsupportedNetworkError(caip2, `${source} ${caip2} is not a network the Metrik registry knows (registered: ${describeAllowedNetworks()})`);
|
|
85
|
+
}
|
|
86
|
+
assertNetworkAllowed(network, policy, source);
|
|
87
|
+
return network;
|
|
88
|
+
}
|
|
89
|
+
function lookupNetwork(raw) {
|
|
90
|
+
if (/^\d+$/.test(raw))
|
|
91
|
+
return networkForChainId(Number(raw));
|
|
92
|
+
if (raw.startsWith("eip155:"))
|
|
93
|
+
return networkForCaip2(raw);
|
|
94
|
+
return findNetwork(raw);
|
|
95
|
+
}
|
|
96
|
+
function assertNetworkAllowed(network, policy, source) {
|
|
97
|
+
if (policy.testnetOnly === true && !network.testnet) {
|
|
98
|
+
throw new UnsupportedNetworkError(source, `refusing ${network.name} (chain ${network.chain.id}): this surface is testnet-only. Allowed: ${describeAllowedNetworks(policy)}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The network's registered deployment (the CURRENT one, or a `legacy` one that
|
|
103
|
+
* still holds streams) whose escrow is `escrow`, or `undefined`.
|
|
104
|
+
*/
|
|
105
|
+
export function registeredDeployment(network, escrow) {
|
|
106
|
+
if (!isAddress(escrow))
|
|
107
|
+
return undefined;
|
|
108
|
+
const deployments = networkDeployments(network);
|
|
109
|
+
const index = deployments.findIndex((entry) => isAddressEqual(entry.escrow.address, escrow));
|
|
110
|
+
return index < 0
|
|
111
|
+
? undefined
|
|
112
|
+
: { ...deployments[index], legacy: index > 0 };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Whether `escrow` is one of the network's registered escrows — the current
|
|
116
|
+
* one or a legacy one (whose streams can still be read, closed and
|
|
117
|
+
* reclaimed; the SDK refuses NEW opens on it unless explicitly opted in).
|
|
118
|
+
*/
|
|
119
|
+
export function isRegisteredEscrow(network, escrow) {
|
|
120
|
+
return registeredDeployment(network, escrow) !== undefined;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The viem chain for a chain id: the registered network's chain when there is
|
|
124
|
+
* one, otherwise a minimal chain definition around the given RPC (so a custom,
|
|
125
|
+
* explicitly configured deployment still signs with the right chain id).
|
|
126
|
+
*/
|
|
127
|
+
export function chainForChainId(chainId, rpcUrl) {
|
|
128
|
+
const registered = networkForChainId(chainId);
|
|
129
|
+
if (registered !== undefined)
|
|
130
|
+
return registered.chain;
|
|
131
|
+
return defineChain({
|
|
132
|
+
id: chainId,
|
|
133
|
+
name: `eip155:${String(chainId)}`,
|
|
134
|
+
nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
|
|
135
|
+
rpcUrls: { default: { http: [rpcUrl] } },
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* A read-only `MetrikClient` for one escrow on a REGISTERED network (default:
|
|
140
|
+
* the registry's default network). The chain, the default USDC and oracle, and
|
|
141
|
+
* opener-factory detection all come from the registry; the escrow and RPC are
|
|
142
|
+
* the caller's. A chain id the registry does not know is refused — register the
|
|
143
|
+
* network with the SDK's `registerNetwork()` first.
|
|
144
|
+
*/
|
|
145
|
+
export function readOnlyMetrikClient(options) {
|
|
146
|
+
const network = options.chainId === undefined
|
|
147
|
+
? defaultNetwork()
|
|
148
|
+
: requireNetworkForChainId(options.chainId);
|
|
149
|
+
const registered = registeredDeployment(network, options.escrowAddress);
|
|
150
|
+
return MetrikClient.forNetwork(network, {
|
|
151
|
+
escrow: options.escrowAddress,
|
|
152
|
+
rpcUrl: options.rpcUrl,
|
|
153
|
+
...(registered === undefined &&
|
|
154
|
+
options.unregisteredEscrowGeneration !== undefined
|
|
155
|
+
? {
|
|
156
|
+
allowUnregisteredEscrow: true,
|
|
157
|
+
generation: options.unregisteredEscrowGeneration,
|
|
158
|
+
}
|
|
159
|
+
: {}),
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
const NETWORK_FUNDING = {
|
|
163
|
+
baseSepolia: {
|
|
164
|
+
gasFaucetUrl: "https://www.alchemy.com/faucets/base-sepolia",
|
|
165
|
+
usdcFaucetUrl: "https://faucet.circle.com",
|
|
166
|
+
cdpNetwork: "base-sepolia",
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
/** Funding hints for a network; all `null` for a network with none known. */
|
|
170
|
+
export function networkFunding(network) {
|
|
171
|
+
return (NETWORK_FUNDING[network.id] ?? {
|
|
172
|
+
gasFaucetUrl: null,
|
|
173
|
+
usdcFaucetUrl: null,
|
|
174
|
+
cdpNetwork: null,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* One sentence telling a user how to fund GAS on this network, read from the
|
|
179
|
+
* network's gas-token metadata. Where gas is the settlement token (USDC), the
|
|
180
|
+
* USDC faucet is the gas faucet.
|
|
181
|
+
*/
|
|
182
|
+
export function gasFundingHint(network) {
|
|
183
|
+
const funding = networkFunding(network);
|
|
184
|
+
const symbol = network.gasToken.symbol;
|
|
185
|
+
const url = network.gasToken.isSettlementToken
|
|
186
|
+
? funding.usdcFaucetUrl
|
|
187
|
+
: funding.gasFaucetUrl;
|
|
188
|
+
return url === null
|
|
189
|
+
? `acquire ${symbol} on ${network.name}`
|
|
190
|
+
: `fund it with ${symbol} at ${url}`;
|
|
191
|
+
}
|
|
192
|
+
/** One sentence telling a user how to fund the settlement USDC on this network. */
|
|
193
|
+
export function usdcFundingHint(network) {
|
|
194
|
+
const url = networkFunding(network).usdcFaucetUrl;
|
|
195
|
+
return url === null
|
|
196
|
+
? `acquire USDC on ${network.name}`
|
|
197
|
+
: `fund it with USDC at ${url} (${network.name})`;
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../src/network.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/invoke.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type DeliveryReceiptDomainInput } from "@absol-labs/shared";
|
|
|
2
2
|
import type { Address, Hex, LocalAccount } from "viem";
|
|
3
3
|
import type { ServiceListing } from "../discovery/registry.js";
|
|
4
4
|
import { type BuildT2DeliveryProofResult, type DeliveryProofAttestor, type PaidRouteRequestSpec } from "../zktls/t2-delivery-proof.js";
|
|
5
|
-
import { type HttpMethod, type InvocationCapabilityDomainInput, type SignedInvocationCapability } from "../capability/invocation-capability.js";
|
|
5
|
+
import { type HttpMethod, type InvocationCapabilitySigner, type InvocationCapabilityDomainInput, type SignedInvocationCapability } from "../capability/invocation-capability.js";
|
|
6
6
|
/**
|
|
7
7
|
* Buyer half of the pay -> use loop (metrik-agent#64, impl of #62 part 2/2).
|
|
8
8
|
*
|
|
@@ -26,6 +26,10 @@ export interface InvokeStreamReader {
|
|
|
26
26
|
export declare function createSdkInvokeStreamReader(options: {
|
|
27
27
|
readonly escrowAddress: Address;
|
|
28
28
|
readonly rpcUrl: string;
|
|
29
|
+
/** Chain of the escrow; must be a registered network. Default: the registry default. */
|
|
30
|
+
readonly chainId?: number;
|
|
31
|
+
/** See `readOnlyMetrikClient`: only for an escrow the registry does not record. */
|
|
32
|
+
readonly unregisteredEscrowGeneration?: "v2" | "v3";
|
|
29
33
|
}): InvokeStreamReader;
|
|
30
34
|
export declare class InvokeStreamNotActiveError extends Error {
|
|
31
35
|
constructor(streamId: Hex, status: string);
|
|
@@ -43,10 +47,10 @@ export declare class InvokeAccessUrlError extends Error {
|
|
|
43
47
|
constructor(message: string);
|
|
44
48
|
}
|
|
45
49
|
export declare class InvokePathError extends Error {
|
|
46
|
-
constructor(
|
|
50
|
+
constructor(message: string);
|
|
47
51
|
}
|
|
48
52
|
export interface CapabilityForOptions {
|
|
49
|
-
readonly buyer:
|
|
53
|
+
readonly buyer: InvocationCapabilitySigner;
|
|
50
54
|
readonly domain: InvocationCapabilityDomainInput;
|
|
51
55
|
readonly serviceRef: Hex;
|
|
52
56
|
/** Default {@link DEFAULT_CAPABILITY_TTL_SECONDS}. */
|
|
@@ -74,7 +78,7 @@ export interface InvokeOptions {
|
|
|
74
78
|
/** Reads the stream's current serviceRef/operator/status/expiry. Real default: a `MetrikClient` instance. */
|
|
75
79
|
readonly streamReader: InvokeStreamReader;
|
|
76
80
|
/** The buyer's own wallet - signs the capability, never broadcasts a transaction. */
|
|
77
|
-
readonly buyer:
|
|
81
|
+
readonly buyer: InvocationCapabilitySigner;
|
|
78
82
|
/** `{chainId, verifyingContract}` - the `StreamEscrowV2` the stream settles on. */
|
|
79
83
|
readonly domain: InvocationCapabilityDomainInput;
|
|
80
84
|
/** Preferred: a cryptographically verified result from discoverServices(). */
|
|
@@ -133,4 +137,19 @@ export interface InvokeWithT2DeliveryProofResult {
|
|
|
133
137
|
* capability-gated at the gateway.
|
|
134
138
|
*/
|
|
135
139
|
export declare function invokeWithT2DeliveryProof(streamId: Hex, options: InvokeWithT2DeliveryProofOptions): Promise<InvokeWithT2DeliveryProofResult>;
|
|
140
|
+
/**
|
|
141
|
+
* Resolves `path` against the operator-signed base URL and PROVES the result
|
|
142
|
+
* did not leave it.
|
|
143
|
+
*
|
|
144
|
+
* Prefix checks on the raw path are not sufficient and never were: the URL
|
|
145
|
+
* parser decides where a string points, so the only trustworthy check is to
|
|
146
|
+
* resolve first and then compare what came out. `/\evil.com/x` and
|
|
147
|
+
* `/a/../../b` both look origin-relative and both leave the signed base.
|
|
148
|
+
*
|
|
149
|
+
* What escaping would cost, concretely: the buyer's signed EIP-712 capability
|
|
150
|
+
* is handed to an attacker-controlled host, the attacker's response is
|
|
151
|
+
* returned to the caller as if it were the paid service's answer, and the
|
|
152
|
+
* MCP host's own network becomes reachable from a tool argument.
|
|
153
|
+
*/
|
|
154
|
+
export declare function resolveInvocationUrl(serviceBaseUrl: string, path: string): string;
|
|
136
155
|
//# sourceMappingURL=invoke.d.ts.map
|
package/dist/sdk/invoke.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../src/sdk/invoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,0BAA0B,EAChC,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"invoke.d.ts","sourceRoot":"","sources":["../../src/sdk/invoke.ts"],"names":[],"mappings":"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"}
|
package/dist/sdk/invoke.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { deriveServiceRef, recoverServiceBindingSigner, recoverServiceDescriptorSigner, signedServiceBindingSchema, signedServiceDescriptorSchema, } from "@absol-labs/shared";
|
|
2
|
-
import { MetrikClient } from "@absol-labs/sdk";
|
|
3
2
|
import { buildT2DeliveryProofSubmission, } from "../zktls/t2-delivery-proof.js";
|
|
4
3
|
import { CAPABILITY_HEADER_NAME, encodeCapabilityHeader, generateCapabilityNonce, hashInvocationPath, signInvocationCapability, DEFAULT_CAPABILITY_TTL_SECONDS, } from "../capability/invocation-capability.js";
|
|
4
|
+
import { readOnlyMetrikClient } from "../network.js";
|
|
5
5
|
/** Default `InvokeStreamReader`: a real, read-only `MetrikClient` (no wallet, no writes). */
|
|
6
6
|
export function createSdkInvokeStreamReader(options) {
|
|
7
|
-
const metrik =
|
|
8
|
-
escrow: options.escrowAddress,
|
|
9
|
-
rpcUrl: options.rpcUrl,
|
|
10
|
-
});
|
|
7
|
+
const metrik = readOnlyMetrikClient(options);
|
|
11
8
|
return {
|
|
12
9
|
async getStreamV2(streamId) {
|
|
13
10
|
const stream = await metrik.getStreamV2(streamId);
|
|
@@ -52,8 +49,8 @@ export class InvokeAccessUrlError extends Error {
|
|
|
52
49
|
}
|
|
53
50
|
}
|
|
54
51
|
export class InvokePathError extends Error {
|
|
55
|
-
constructor(
|
|
56
|
-
super(
|
|
52
|
+
constructor(message) {
|
|
53
|
+
super(message);
|
|
57
54
|
this.name = "InvokePathError";
|
|
58
55
|
}
|
|
59
56
|
}
|
|
@@ -95,6 +92,10 @@ export async function invoke(streamId, request, options) {
|
|
|
95
92
|
throw new InvokeStreamExpiredError(streamId, stream.expiresAt);
|
|
96
93
|
}
|
|
97
94
|
const serviceBaseUrl = await resolveInvocationBaseUrl(stream.serviceRef, options);
|
|
95
|
+
// Resolve BEFORE signing. A path that escapes the signed base must never
|
|
96
|
+
// cause a buyer-signed capability to exist at all, let alone be sent
|
|
97
|
+
// somewhere the operator did not sign.
|
|
98
|
+
const url = resolveInvocationUrl(serviceBaseUrl, request.path);
|
|
98
99
|
const capability = await capabilityFor(streamId, request, {
|
|
99
100
|
buyer: options.buyer,
|
|
100
101
|
domain: options.domain,
|
|
@@ -106,7 +107,6 @@ export async function invoke(streamId, request, options) {
|
|
|
106
107
|
nowSeconds,
|
|
107
108
|
});
|
|
108
109
|
const header = encodeCapabilityHeader(capability);
|
|
109
|
-
const url = new URL(request.path, ensureTrailingSlash(serviceBaseUrl)).toString();
|
|
110
110
|
const fetchImpl = options.fetchImpl ?? fetch;
|
|
111
111
|
const response = await fetchImpl(url, {
|
|
112
112
|
method: request.method,
|
|
@@ -263,10 +263,71 @@ function requireHttpUrl(value, label) {
|
|
|
263
263
|
}
|
|
264
264
|
return parsed.toString();
|
|
265
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* Characters that must never appear in an invocation path.
|
|
268
|
+
*
|
|
269
|
+
* The backslash is the important one. The WHATWG URL parser treats `\` as `/`
|
|
270
|
+
* for special schemes, so `/\evil.com/x` resolved against `https://good/`
|
|
271
|
+
* yields `https://evil.com/x` — a prefix check for `//` does not see it. C0
|
|
272
|
+
* controls and DEL are rejected alongside it because a header- or log-splitting
|
|
273
|
+
* character has no business in a path either.
|
|
274
|
+
*/
|
|
275
|
+
const FORBIDDEN_PATH_CHARACTERS = /[\\\u0000-\u001f\u007f]/;
|
|
266
276
|
function assertOriginRelativePath(path) {
|
|
267
|
-
if (!path.startsWith("/") || path.startsWith("//")
|
|
268
|
-
throw new InvokePathError(path);
|
|
277
|
+
if (!path.startsWith("/") || path.startsWith("//")) {
|
|
278
|
+
throw new InvokePathError(`invocation path must be origin-relative and start with one slash: ${JSON.stringify(path)}`);
|
|
279
|
+
}
|
|
280
|
+
if (path.includes("#")) {
|
|
281
|
+
throw new InvokePathError(`invocation path must not contain a fragment: ${JSON.stringify(path)}`);
|
|
282
|
+
}
|
|
283
|
+
if (FORBIDDEN_PATH_CHARACTERS.test(path)) {
|
|
284
|
+
throw new InvokePathError(`invocation path must not contain a backslash or a control character: ${JSON.stringify(path)}`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Resolves `path` against the operator-signed base URL and PROVES the result
|
|
289
|
+
* did not leave it.
|
|
290
|
+
*
|
|
291
|
+
* Prefix checks on the raw path are not sufficient and never were: the URL
|
|
292
|
+
* parser decides where a string points, so the only trustworthy check is to
|
|
293
|
+
* resolve first and then compare what came out. `/\evil.com/x` and
|
|
294
|
+
* `/a/../../b` both look origin-relative and both leave the signed base.
|
|
295
|
+
*
|
|
296
|
+
* What escaping would cost, concretely: the buyer's signed EIP-712 capability
|
|
297
|
+
* is handed to an attacker-controlled host, the attacker's response is
|
|
298
|
+
* returned to the caller as if it were the paid service's answer, and the
|
|
299
|
+
* MCP host's own network becomes reachable from a tool argument.
|
|
300
|
+
*/
|
|
301
|
+
export function resolveInvocationUrl(serviceBaseUrl, path) {
|
|
302
|
+
assertOriginRelativePath(path);
|
|
303
|
+
const base = new URL(ensureTrailingSlash(serviceBaseUrl));
|
|
304
|
+
let resolved;
|
|
305
|
+
try {
|
|
306
|
+
resolved = new URL(path, base);
|
|
307
|
+
}
|
|
308
|
+
catch {
|
|
309
|
+
throw new InvokePathError(`invocation path does not resolve against the signed service URL: ${JSON.stringify(path)}`);
|
|
310
|
+
}
|
|
311
|
+
if (resolved.origin !== base.origin || resolved.origin === "null") {
|
|
312
|
+
throw new InvokePathError(`invocation path resolves to ${resolved.origin}, which is not the operator-signed origin ${base.origin}`);
|
|
313
|
+
}
|
|
314
|
+
if (resolved.username !== "" || resolved.password !== "") {
|
|
315
|
+
throw new InvokePathError("invocation path must not carry credentials in the resolved URL");
|
|
316
|
+
}
|
|
317
|
+
// `base.pathname` always ends in `/` (ensureTrailingSlash), so a prefix match
|
|
318
|
+
// on the RESOLVED pathname is a true containment check — `..` segments have
|
|
319
|
+
// already been collapsed by the parser.
|
|
320
|
+
//
|
|
321
|
+
// An absolute-path reference replaces the whole path, so this ALSO rejects a
|
|
322
|
+
// signed base URL carrying a sub-path (`https://host/base/`). That is
|
|
323
|
+
// deliberate: the previous behaviour silently discarded the operator's signed
|
|
324
|
+
// `/base/` and called the origin root instead — an origin path the operator
|
|
325
|
+
// never signed, and one the gateway's own pathHash check could not match.
|
|
326
|
+
// Refusing says so instead of quietly calling the wrong place.
|
|
327
|
+
if (!resolved.pathname.startsWith(base.pathname)) {
|
|
328
|
+
throw new InvokePathError(`invocation path ${JSON.stringify(path)} resolves to ${resolved.pathname}, which is outside the operator-signed base path ${base.pathname}. An origin-relative path replaces the whole path, so a signed base URL with a sub-path cannot be addressed this way.`);
|
|
269
329
|
}
|
|
330
|
+
return resolved.toString();
|
|
270
331
|
}
|
|
271
332
|
function ensureTrailingSlash(value) {
|
|
272
333
|
return value.endsWith("/") ? value : `${value}/`;
|
package/dist/sdk/invoke.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/sdk/invoke.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"invoke.js","sourceRoot":"","sources":["../../src/sdk/invoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import { type PrivyClient } from "@privy-io/node";
|
|
|
2
2
|
import { type Address, type Hex } from "viem";
|
|
3
3
|
import { type AutonomousWalletBroker as AutonomousWalletClientBroker, type PreparedPrivyRequest } from "./autonomous-wallet-protocol.js";
|
|
4
4
|
import { type BrokerStreamReader } from "./privy-session-broker.js";
|
|
5
|
+
import { type BrokerEscrowPolicy } from "./broker-escrows.js";
|
|
5
6
|
export interface AutonomousWalletBrokerStore {
|
|
6
7
|
findProvisionByPublicKey(publicKey: string): Promise<AutonomousWalletProvision | null>;
|
|
7
8
|
findProvisionByNonce(nonce: string): Promise<AutonomousWalletProvision | null>;
|
|
@@ -61,6 +62,8 @@ export interface AutonomousWalletBrokerOptions {
|
|
|
61
62
|
readonly requestTtlSeconds?: number;
|
|
62
63
|
/** Must match the base URL used by the Privy client, without a trailing slash. */
|
|
63
64
|
readonly privyApiBaseUrl?: string;
|
|
65
|
+
/** Current + legacy escrows. Default: from the registries (see `./broker-escrows.ts`). */
|
|
66
|
+
readonly escrows?: BrokerEscrowPolicy;
|
|
64
67
|
}
|
|
65
68
|
/**
|
|
66
69
|
* Broker for the agent-owned path. The server knows the wallet ID and Privy
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"autonomous-wallet-broker.d.ts","sourceRoot":"","sources":["../../src/wallet/autonomous-wallet-broker.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"autonomous-wallet-broker.d.ts","sourceRoot":"","sources":["../../src/wallet/autonomous-wallet-broker.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAIL,KAAK,OAAO,EACZ,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAGd,OAAO,EAKL,KAAK,sBAAsB,IAAI,4BAA4B,EAE3D,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAML,KAAK,kBAAkB,EACxB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,qBAAqB,CAAC;AAuB7B,MAAM,WAAW,2BAA2B;IAC1C,wBAAwB,CACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAC7C,oBAAoB,CAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAC7C,YAAY,CAAC,SAAS,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAC1E,WAAW,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,GAAG,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,yBAA0B,SAAQ,oBAAoB;IACrE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,KAAK,EAAE;QAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;KACjC,GAAG,OAAO,CAAC;QACV,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC,CAAC;IACH,UAAU,CAAC,KAAK,EAAE;QAChB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;KAC5B,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAClB;AAED,qBAAa,2BAA4B,SAAQ,KAAK;IAElD,QAAQ,CAAC,IAAI,EACT,iBAAiB,GACjB,cAAc,GACd,QAAQ,GACR,eAAe,GACf,gBAAgB;gBALX,IAAI,EACT,iBAAiB,GACjB,cAAc,GACd,QAAQ,GACR,eAAe,GACf,gBAAgB,EACpB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKzC;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,uBAAuB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC;IAC5C,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,kFAAkF;IAClF,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC;CACvC;AAED;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,4BAA4B;IAO7D,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAoC;IAC1D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAe;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAEZ,OAAO,EAAE,6BAA6B;IAkC7D,SAAS,CACb,KAAK,EAAE,UAAU,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAQnD,iBAAiB;IA4EzB,OAAO,CACX,KAAK,EAAE,UAAU,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC,oBAAoB,CAAC;IA8C1B,OAAO,CACX,KAAK,EAAE,UAAU,CAAC,4BAA4B,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,GAC5D,OAAO,CAAC,GAAG,CAAC;YA2DD,QAAQ;CAmBvB;AAED,iFAAiF;AACjF,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,WAAW,GAClB,uBAAuB,CAgCzB;AAED,qBAAa,mCAAoC,YAAW,2BAA2B;IACrF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgD;IAC3E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IACnE,wBAAwB,CAAC,GAAG,EAAE,MAAM;IAGpC,oBAAoB,CAAC,KAAK,EAAE,MAAM;IAGlC,YAAY,CAAC,KAAK,EAAE,yBAAyB;IAG7C,WAAW,CAAC,EAAE,EAAE,MAAM;IAGtB,WAAW,CAAC,KAAK,EAAE,yBAAyB;IAG5C,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM;CAQnE"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { createPublicKey, randomUUID, verify } from "node:crypto";
|
|
2
2
|
import { formatRequestForAuthorizationSignature, } from "@privy-io/node";
|
|
3
|
-
import { streamEscrowV2Abi } from "@absol-labs/shared";
|
|
4
3
|
import { decodeFunctionData, getAddress, isAddress, } from "viem";
|
|
5
4
|
import { z } from "zod";
|
|
6
|
-
import { autonomousProofBytes, AUTONOMOUS_WALLET_CHAIN_ID, AUTONOMOUS_WALLET_VERSION, } from "./autonomous-wallet-protocol.js";
|
|
5
|
+
import { autonomousProofBytes, AUTONOMOUS_WALLET_CAIP2, AUTONOMOUS_WALLET_CHAIN_ID, AUTONOMOUS_WALLET_VERSION, } from "./autonomous-wallet-protocol.js";
|
|
7
6
|
import { invocationCapabilitySchema } from "../capability/invocation-capability.js";
|
|
8
7
|
import { invocationCapabilityDomainName, invocationCapabilityDomainVersion, } from "../capability/invocation-capability.js";
|
|
9
|
-
import { PRIVY_POLICY_MAX_DURATION_SECONDS, PRIVY_POLICY_MAX_RATE_USDC, PRIVY_POLICY_MAX_TOTAL_USDC,
|
|
8
|
+
import { PRIVY_POLICY_MAX_DURATION_SECONDS, PRIVY_POLICY_MAX_RATE_USDC, PRIVY_POLICY_MAX_TOTAL_USDC, PRIVY_BROKER_USDC, } from "./privy-session-broker.js";
|
|
9
|
+
import { BROKER_EXIT_METHODS, brokerEscrowPolicy, decodeEscrowCall, escrowRole, } from "./broker-escrows.js";
|
|
10
|
+
import { defaultNetwork } from "../network.js";
|
|
10
11
|
const transactionSchema = z.object({
|
|
11
12
|
from: z.string().refine(isAddress),
|
|
12
13
|
to: z.string().refine(isAddress),
|
|
@@ -122,7 +123,7 @@ export class AutonomousWalletBroker {
|
|
|
122
123
|
const provision = await this.options.store.findProvisionByPublicKey(input.publicKey);
|
|
123
124
|
if (provision === null || provision.walletId !== input.walletId)
|
|
124
125
|
throw new AutonomousWalletBrokerError("unauthorized", "wallet is not bound to this public key");
|
|
125
|
-
const body = await buildRpcBody(input.method, input.params, provision.address, this.options.streamReader, this.nowSeconds());
|
|
126
|
+
const body = await buildRpcBody(input.method, input.params, provision.address, this.options.streamReader, this.nowSeconds(), this.options.escrows ?? brokerEscrowPolicy(defaultNetwork()));
|
|
126
127
|
const requestExpiryMs = (this.nowSeconds() + this.requestTtl) * 1_000;
|
|
127
128
|
const idempotencyKey = randomUUID();
|
|
128
129
|
const requestId = randomUUID();
|
|
@@ -317,19 +318,21 @@ function isStrictBase64(value) {
|
|
|
317
318
|
const decoded = Buffer.from(value, "base64");
|
|
318
319
|
return decoded.length > 0 && decoded.toString("base64") === value;
|
|
319
320
|
}
|
|
320
|
-
async function buildRpcBody(method, params, address, streamReader, now) {
|
|
321
|
+
async function buildRpcBody(method, params, address, streamReader, now, escrows) {
|
|
321
322
|
if (method === "eth_sendTransaction") {
|
|
322
323
|
const tx = transactionSchema.parse(params[0]);
|
|
323
324
|
if (tx.from.toLowerCase() !== address.toLowerCase())
|
|
324
325
|
throw new AutonomousWalletBrokerError("policy-denied", "transaction sender does not match wallet");
|
|
325
326
|
assertChain(tx.chainId);
|
|
326
327
|
assertZeroValue(tx.value);
|
|
327
|
-
const target = getAddress(tx.to)
|
|
328
|
-
|
|
329
|
-
|
|
328
|
+
const target = getAddress(tx.to);
|
|
329
|
+
const role = escrowRole(escrows, target);
|
|
330
|
+
if (target.toLowerCase() === PRIVY_BROKER_USDC.toLowerCase()) {
|
|
331
|
+
// The approval spender must be the CURRENT escrow, never a legacy one.
|
|
332
|
+
assertUsdcApproval(tx.data, escrows.current);
|
|
330
333
|
}
|
|
331
|
-
else if (
|
|
332
|
-
await assertEscrowMethod(tx.data, address, streamReader);
|
|
334
|
+
else if (role !== null) {
|
|
335
|
+
await assertEscrowMethod(tx.data, address, streamReader, target, role);
|
|
333
336
|
}
|
|
334
337
|
else {
|
|
335
338
|
throw new AutonomousWalletBrokerError("policy-denied", "transaction target is not allowlisted");
|
|
@@ -338,7 +341,7 @@ async function buildRpcBody(method, params, address, streamReader, now) {
|
|
|
338
341
|
return {
|
|
339
342
|
method,
|
|
340
343
|
chain_type: "ethereum",
|
|
341
|
-
caip2:
|
|
344
|
+
caip2: AUTONOMOUS_WALLET_CAIP2,
|
|
342
345
|
params: { transaction: normalizeJson(transaction) },
|
|
343
346
|
};
|
|
344
347
|
}
|
|
@@ -356,7 +359,7 @@ async function buildRpcBody(method, params, address, streamReader, now) {
|
|
|
356
359
|
if (parsed.domain.name !== invocationCapabilityDomainName ||
|
|
357
360
|
parsed.domain.version !== invocationCapabilityDomainVersion ||
|
|
358
361
|
parsed.domain.verifyingContract.toLowerCase() !==
|
|
359
|
-
|
|
362
|
+
escrows.current.toLowerCase())
|
|
360
363
|
throw new AutonomousWalletBrokerError("policy-denied", "only Metrik invocation capabilities may be signed");
|
|
361
364
|
const capability = invocationCapabilitySchema.parse({
|
|
362
365
|
...parsed.message,
|
|
@@ -383,7 +386,7 @@ async function buildRpcBody(method, params, address, streamReader, now) {
|
|
|
383
386
|
return {
|
|
384
387
|
method,
|
|
385
388
|
chain_type: "ethereum",
|
|
386
|
-
caip2:
|
|
389
|
+
caip2: AUTONOMOUS_WALLET_CAIP2,
|
|
387
390
|
params: {
|
|
388
391
|
typed_data: normalizeJson({
|
|
389
392
|
...wireTypedData,
|
|
@@ -424,7 +427,7 @@ function assertZeroValue(value) {
|
|
|
424
427
|
throw new AutonomousWalletBrokerError("policy-denied", "native-token transfers are not allowed", { cause: error });
|
|
425
428
|
}
|
|
426
429
|
}
|
|
427
|
-
function assertUsdcApproval(data) {
|
|
430
|
+
function assertUsdcApproval(data, currentEscrow) {
|
|
428
431
|
try {
|
|
429
432
|
const decoded = decodeFunctionData({
|
|
430
433
|
abi: [
|
|
@@ -442,7 +445,7 @@ function assertUsdcApproval(data) {
|
|
|
442
445
|
data,
|
|
443
446
|
});
|
|
444
447
|
const [spender, amount] = decoded.args;
|
|
445
|
-
if (spender.toLowerCase() !==
|
|
448
|
+
if (spender.toLowerCase() !== currentEscrow.toLowerCase() ||
|
|
446
449
|
amount > 1000000n)
|
|
447
450
|
throw new Error("approval outside Metrik policy");
|
|
448
451
|
}
|
|
@@ -450,10 +453,11 @@ function assertUsdcApproval(data) {
|
|
|
450
453
|
throw new AutonomousWalletBrokerError("policy-denied", "USDC approval is not an allowlisted escrow approval", { cause: error });
|
|
451
454
|
}
|
|
452
455
|
}
|
|
453
|
-
async function assertEscrowMethod(data, address, streamReader) {
|
|
456
|
+
async function assertEscrowMethod(data, address, streamReader, escrow, role) {
|
|
454
457
|
try {
|
|
455
|
-
const decoded =
|
|
456
|
-
|
|
458
|
+
const decoded = decodeEscrowCall(data);
|
|
459
|
+
// A legacy escrow is exit-only: openStream there falls through and fails.
|
|
460
|
+
if (decoded.functionName === "openStream" && role === "current") {
|
|
457
461
|
const [, , deposit, rate, duration] = decoded.args;
|
|
458
462
|
if (deposit > PRIVY_POLICY_MAX_TOTAL_USDC ||
|
|
459
463
|
rate > PRIVY_POLICY_MAX_RATE_USDC ||
|
|
@@ -462,12 +466,12 @@ async function assertEscrowMethod(data, address, streamReader) {
|
|
|
462
466
|
}
|
|
463
467
|
return;
|
|
464
468
|
}
|
|
465
|
-
if (decoded.functionName
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
+
if (!BROKER_EXIT_METHODS.has(decoded.functionName)) {
|
|
470
|
+
throw new Error(role === "legacy"
|
|
471
|
+
? "only close, reclaim and reclaimUnverified are allowed on a legacy escrow"
|
|
472
|
+
: "escrow method is not allowlisted");
|
|
469
473
|
}
|
|
470
|
-
const stream = await streamReader.getStream(decoded.args[0]);
|
|
474
|
+
const stream = await streamReader.getStream(decoded.args[0], escrow);
|
|
471
475
|
if (stream.buyer.toLowerCase() !== address.toLowerCase())
|
|
472
476
|
throw new Error("autonomous wallet is not the stream buyer");
|
|
473
477
|
}
|