@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.
Files changed (331) hide show
  1. package/README.md +106 -30
  2. package/dist/capability/invocation-capability.d.ts +20 -8
  3. package/dist/capability/invocation-capability.d.ts.map +1 -1
  4. package/dist/capability/invocation-capability.js.map +1 -1
  5. package/dist/capability/probe-capability.d.ts +225 -0
  6. package/dist/capability/probe-capability.d.ts.map +1 -0
  7. package/dist/capability/probe-capability.js +248 -0
  8. package/dist/capability/probe-capability.js.map +1 -0
  9. package/dist/cli/args.d.ts +11 -0
  10. package/dist/cli/args.d.ts.map +1 -1
  11. package/dist/cli/args.js +23 -0
  12. package/dist/cli/args.js.map +1 -1
  13. package/dist/cli/commands/claim.d.ts.map +1 -1
  14. package/dist/cli/commands/claim.js +21 -5
  15. package/dist/cli/commands/claim.js.map +1 -1
  16. package/dist/cli/commands/close.d.ts.map +1 -1
  17. package/dist/cli/commands/close.js +51 -7
  18. package/dist/cli/commands/close.js.map +1 -1
  19. package/dist/cli/commands/invoke.d.ts +2 -0
  20. package/dist/cli/commands/invoke.d.ts.map +1 -1
  21. package/dist/cli/commands/invoke.js +3 -2
  22. package/dist/cli/commands/invoke.js.map +1 -1
  23. package/dist/cli/commands/mcp.d.ts.map +1 -1
  24. package/dist/cli/commands/mcp.js +15 -2
  25. package/dist/cli/commands/mcp.js.map +1 -1
  26. package/dist/cli/commands/open.d.ts.map +1 -1
  27. package/dist/cli/commands/open.js +121 -15
  28. package/dist/cli/commands/open.js.map +1 -1
  29. package/dist/cli/commands/pay.d.ts +19 -0
  30. package/dist/cli/commands/pay.d.ts.map +1 -0
  31. package/dist/cli/commands/pay.js +355 -0
  32. package/dist/cli/commands/pay.js.map +1 -0
  33. package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -1
  34. package/dist/cli/commands/reclaim-unverified.js +15 -6
  35. package/dist/cli/commands/reclaim-unverified.js.map +1 -1
  36. package/dist/cli/commands/reclaim.d.ts +23 -2
  37. package/dist/cli/commands/reclaim.d.ts.map +1 -1
  38. package/dist/cli/commands/reclaim.js +200 -21
  39. package/dist/cli/commands/reclaim.js.map +1 -1
  40. package/dist/cli/commands/refund.d.ts +13 -0
  41. package/dist/cli/commands/refund.d.ts.map +1 -0
  42. package/dist/cli/commands/refund.js +224 -0
  43. package/dist/cli/commands/refund.js.map +1 -0
  44. package/dist/cli/commands/status.d.ts.map +1 -1
  45. package/dist/cli/commands/status.js +10 -1
  46. package/dist/cli/commands/status.js.map +1 -1
  47. package/dist/cli/commands/streams.js +9 -13
  48. package/dist/cli/commands/streams.js.map +1 -1
  49. package/dist/cli/commands/watch.d.ts.map +1 -1
  50. package/dist/cli/commands/watch.js +2 -1
  51. package/dist/cli/commands/watch.js.map +1 -1
  52. package/dist/cli/config.d.ts +44 -26
  53. package/dist/cli/config.d.ts.map +1 -1
  54. package/dist/cli/config.js +88 -38
  55. package/dist/cli/config.js.map +1 -1
  56. package/dist/cli/deps.d.ts +86 -7
  57. package/dist/cli/deps.d.ts.map +1 -1
  58. package/dist/cli/deps.js +102 -16
  59. package/dist/cli/deps.js.map +1 -1
  60. package/dist/cli/errors.d.ts.map +1 -1
  61. package/dist/cli/errors.js +21 -1
  62. package/dist/cli/errors.js.map +1 -1
  63. package/dist/cli/escape-hatch.d.ts +6 -4
  64. package/dist/cli/escape-hatch.d.ts.map +1 -1
  65. package/dist/cli/escape-hatch.js +6 -2
  66. package/dist/cli/escape-hatch.js.map +1 -1
  67. package/dist/cli/listings.d.ts +18 -0
  68. package/dist/cli/listings.d.ts.map +1 -1
  69. package/dist/cli/listings.js +22 -12
  70. package/dist/cli/listings.js.map +1 -1
  71. package/dist/cli/preflight.d.ts +20 -14
  72. package/dist/cli/preflight.d.ts.map +1 -1
  73. package/dist/cli/preflight.js +34 -20
  74. package/dist/cli/preflight.js.map +1 -1
  75. package/dist/cli/privy.d.ts +83 -0
  76. package/dist/cli/privy.d.ts.map +1 -0
  77. package/dist/cli/privy.js +232 -0
  78. package/dist/cli/privy.js.map +1 -0
  79. package/dist/cli/reclaimability.d.ts +82 -0
  80. package/dist/cli/reclaimability.d.ts.map +1 -0
  81. package/dist/cli/reclaimability.js +80 -0
  82. package/dist/cli/reclaimability.js.map +1 -0
  83. package/dist/cli/run.d.ts +2 -1
  84. package/dist/cli/run.d.ts.map +1 -1
  85. package/dist/cli/run.js +40 -11
  86. package/dist/cli/run.js.map +1 -1
  87. package/dist/cli/scan-range.d.ts +2 -2
  88. package/dist/cli/scan-range.js +2 -2
  89. package/dist/cli/spend-policy.d.ts +60 -0
  90. package/dist/cli/spend-policy.d.ts.map +1 -0
  91. package/dist/cli/spend-policy.js +65 -0
  92. package/dist/cli/spend-policy.js.map +1 -0
  93. package/dist/cli/status.d.ts +3 -1
  94. package/dist/cli/status.d.ts.map +1 -1
  95. package/dist/cli/status.js +15 -3
  96. package/dist/cli/status.js.map +1 -1
  97. package/dist/cli/wallet.d.ts +109 -40
  98. package/dist/cli/wallet.d.ts.map +1 -1
  99. package/dist/cli/wallet.js +109 -44
  100. package/dist/cli/wallet.js.map +1 -1
  101. package/dist/discovery/rate-band.d.ts +74 -0
  102. package/dist/discovery/rate-band.d.ts.map +1 -0
  103. package/dist/discovery/rate-band.js +114 -0
  104. package/dist/discovery/rate-band.js.map +1 -0
  105. package/dist/escrow-generation.d.ts +81 -0
  106. package/dist/escrow-generation.d.ts.map +1 -0
  107. package/dist/escrow-generation.js +76 -0
  108. package/dist/escrow-generation.js.map +1 -0
  109. package/dist/frameworks/agentkit.d.ts +8 -4
  110. package/dist/frameworks/agentkit.d.ts.map +1 -1
  111. package/dist/frameworks/agentkit.js +27 -10
  112. package/dist/frameworks/agentkit.js.map +1 -1
  113. package/dist/frameworks/eliza.d.ts +3 -3
  114. package/dist/frameworks/eliza.d.ts.map +1 -1
  115. package/dist/frameworks/eliza.js +15 -6
  116. package/dist/frameworks/eliza.js.map +1 -1
  117. package/dist/frameworks/langchain.d.ts.map +1 -1
  118. package/dist/frameworks/langchain.js +8 -0
  119. package/dist/frameworks/langchain.js.map +1 -1
  120. package/dist/gateway/caller-auth-gateway.d.ts +91 -4
  121. package/dist/gateway/caller-auth-gateway.d.ts.map +1 -1
  122. package/dist/gateway/caller-auth-gateway.js +184 -7
  123. package/dist/gateway/caller-auth-gateway.js.map +1 -1
  124. package/dist/gateway/http-server.d.ts +121 -1
  125. package/dist/gateway/http-server.d.ts.map +1 -1
  126. package/dist/gateway/http-server.js +474 -5
  127. package/dist/gateway/http-server.js.map +1 -1
  128. package/dist/gateway/probe-auth.d.ts +112 -0
  129. package/dist/gateway/probe-auth.d.ts.map +1 -0
  130. package/dist/gateway/probe-auth.js +127 -0
  131. package/dist/gateway/probe-auth.js.map +1 -0
  132. package/dist/gateway/signed-rate-bounds.d.ts +51 -0
  133. package/dist/gateway/signed-rate-bounds.d.ts.map +1 -0
  134. package/dist/gateway/signed-rate-bounds.js +94 -0
  135. package/dist/gateway/signed-rate-bounds.js.map +1 -0
  136. package/dist/gateway/x402-opener-mode.d.ts +215 -0
  137. package/dist/gateway/x402-opener-mode.d.ts.map +1 -0
  138. package/dist/gateway/x402-opener-mode.js +639 -0
  139. package/dist/gateway/x402-opener-mode.js.map +1 -0
  140. package/dist/index.d.ts +11 -5
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +15 -5
  143. package/dist/index.js.map +1 -1
  144. package/dist/mandates/env.d.ts +3 -2
  145. package/dist/mandates/env.d.ts.map +1 -1
  146. package/dist/mandates/env.js +3 -2
  147. package/dist/mandates/env.js.map +1 -1
  148. package/dist/mcp/server.d.ts +100 -0
  149. package/dist/mcp/server.d.ts.map +1 -1
  150. package/dist/mcp/server.js +719 -39
  151. package/dist/mcp/server.js.map +1 -1
  152. package/dist/mcp/service-invoker.d.ts +97 -0
  153. package/dist/mcp/service-invoker.d.ts.map +1 -0
  154. package/dist/mcp/service-invoker.js +167 -0
  155. package/dist/mcp/service-invoker.js.map +1 -0
  156. package/dist/mcp/x402-tools.d.ts +104 -0
  157. package/dist/mcp/x402-tools.d.ts.map +1 -0
  158. package/dist/mcp/x402-tools.js +434 -0
  159. package/dist/mcp/x402-tools.js.map +1 -0
  160. package/dist/network.d.ts +119 -0
  161. package/dist/network.d.ts.map +1 -0
  162. package/dist/network.js +199 -0
  163. package/dist/network.js.map +1 -0
  164. package/dist/sdk/invoke.d.ts +23 -4
  165. package/dist/sdk/invoke.d.ts.map +1 -1
  166. package/dist/sdk/invoke.js +71 -10
  167. package/dist/sdk/invoke.js.map +1 -1
  168. package/dist/wallet/autonomous-wallet-broker.d.ts +3 -0
  169. package/dist/wallet/autonomous-wallet-broker.d.ts.map +1 -1
  170. package/dist/wallet/autonomous-wallet-broker.js +27 -23
  171. package/dist/wallet/autonomous-wallet-broker.js.map +1 -1
  172. package/dist/wallet/autonomous-wallet-protocol.d.ts +8 -2
  173. package/dist/wallet/autonomous-wallet-protocol.d.ts.map +1 -1
  174. package/dist/wallet/autonomous-wallet-protocol.js +9 -2
  175. package/dist/wallet/autonomous-wallet-protocol.js.map +1 -1
  176. package/dist/wallet/autonomous-wallet.d.ts.map +1 -1
  177. package/dist/wallet/autonomous-wallet.js +3 -2
  178. package/dist/wallet/autonomous-wallet.js.map +1 -1
  179. package/dist/wallet/broker-escrows.d.ts +222 -0
  180. package/dist/wallet/broker-escrows.d.ts.map +1 -0
  181. package/dist/wallet/broker-escrows.js +36 -0
  182. package/dist/wallet/broker-escrows.js.map +1 -0
  183. package/dist/wallet/lifecycle.d.ts +21 -5
  184. package/dist/wallet/lifecycle.d.ts.map +1 -1
  185. package/dist/wallet/lifecycle.js +32 -12
  186. package/dist/wallet/lifecycle.js.map +1 -1
  187. package/dist/wallet/privy-broker-server.d.ts.map +1 -1
  188. package/dist/wallet/privy-broker-server.js +31 -26
  189. package/dist/wallet/privy-broker-server.js.map +1 -1
  190. package/dist/wallet/privy-session-broker.d.ts +14 -5
  191. package/dist/wallet/privy-session-broker.d.ts.map +1 -1
  192. package/dist/wallet/privy-session-broker.js +29 -17
  193. package/dist/wallet/privy-session-broker.js.map +1 -1
  194. package/dist/wallet/privy-session-provider.d.ts +3 -1
  195. package/dist/wallet/privy-session-provider.d.ts.map +1 -1
  196. package/dist/wallet/privy-session-provider.js +5 -3
  197. package/dist/wallet/privy-session-provider.js.map +1 -1
  198. package/dist/wallet/provider.d.ts.map +1 -1
  199. package/dist/wallet/provider.js +15 -8
  200. package/dist/wallet/provider.js.map +1 -1
  201. package/dist/x402/facilitator.d.ts +42 -17
  202. package/dist/x402/facilitator.d.ts.map +1 -1
  203. package/dist/x402/facilitator.js +49 -33
  204. package/dist/x402/facilitator.js.map +1 -1
  205. package/dist/x402-buyer/guarded-fetch.d.ts +51 -0
  206. package/dist/x402-buyer/guarded-fetch.d.ts.map +1 -0
  207. package/dist/x402-buyer/guarded-fetch.js +147 -0
  208. package/dist/x402-buyer/guarded-fetch.js.map +1 -0
  209. package/dist/x402-buyer/index.d.ts +10 -0
  210. package/dist/x402-buyer/index.d.ts.map +1 -0
  211. package/dist/x402-buyer/index.js +10 -0
  212. package/dist/x402-buyer/index.js.map +1 -0
  213. package/dist/x402-buyer/pay.d.ts +135 -0
  214. package/dist/x402-buyer/pay.d.ts.map +1 -0
  215. package/dist/x402-buyer/pay.js +336 -0
  216. package/dist/x402-buyer/pay.js.map +1 -0
  217. package/dist/x402-opener/abi.d.ts +684 -0
  218. package/dist/x402-opener/abi.d.ts.map +1 -0
  219. package/dist/x402-opener/abi.js +880 -0
  220. package/dist/x402-opener/abi.js.map +1 -0
  221. package/dist/x402-opener/facilitator-entry.d.ts +3 -0
  222. package/dist/x402-opener/facilitator-entry.d.ts.map +1 -0
  223. package/dist/x402-opener/facilitator-entry.js +37 -0
  224. package/dist/x402-opener/facilitator-entry.js.map +1 -0
  225. package/dist/x402-opener/facilitator-server.d.ts +180 -0
  226. package/dist/x402-opener/facilitator-server.d.ts.map +1 -0
  227. package/dist/x402-opener/facilitator-server.js +696 -0
  228. package/dist/x402-opener/facilitator-server.js.map +1 -0
  229. package/dist/x402-opener/index.d.ts +14 -0
  230. package/dist/x402-opener/index.d.ts.map +1 -0
  231. package/dist/x402-opener/index.js +14 -0
  232. package/dist/x402-opener/index.js.map +1 -0
  233. package/dist/x402-opener/listing-resolver.d.ts +55 -0
  234. package/dist/x402-opener/listing-resolver.d.ts.map +1 -0
  235. package/dist/x402-opener/listing-resolver.js +125 -0
  236. package/dist/x402-opener/listing-resolver.js.map +1 -0
  237. package/dist/x402-opener/refund-relay.d.ts +240 -0
  238. package/dist/x402-opener/refund-relay.d.ts.map +1 -0
  239. package/dist/x402-opener/refund-relay.js +1240 -0
  240. package/dist/x402-opener/refund-relay.js.map +1 -0
  241. package/dist/x402-opener/relayer-queue.d.ts +14 -0
  242. package/dist/x402-opener/relayer-queue.d.ts.map +1 -0
  243. package/dist/x402-opener/relayer-queue.js +18 -0
  244. package/dist/x402-opener/relayer-queue.js.map +1 -0
  245. package/dist/x402-opener/scheme.d.ts +217 -0
  246. package/dist/x402-opener/scheme.d.ts.map +1 -0
  247. package/dist/x402-opener/scheme.js +749 -0
  248. package/dist/x402-opener/scheme.js.map +1 -0
  249. package/dist/x402-opener/terms.d.ts +105 -0
  250. package/dist/x402-opener/terms.d.ts.map +1 -0
  251. package/dist/x402-opener/terms.js +212 -0
  252. package/dist/x402-opener/terms.js.map +1 -0
  253. package/dist/zktls/reclaim.d.ts +2 -2
  254. package/docs/agent-layer.md +13 -8
  255. package/docs/autonomous-privy-wallet.md +188 -0
  256. package/docs/cli.md +342 -53
  257. package/docs/langchain.md +5 -0
  258. package/docs/mcp-hosted.md +4 -3
  259. package/docs/mcp-reference.md +245 -0
  260. package/docs/probe-capability.md +191 -0
  261. package/docs/quickstart.md +54 -5
  262. package/docs/threat-model.md +24 -3
  263. package/docs/x402.md +681 -0
  264. package/package.json +19 -6
  265. package/src/capability/invocation-capability.ts +17 -1
  266. package/src/capability/probe-capability.ts +355 -0
  267. package/src/cli/args.ts +29 -0
  268. package/src/cli/commands/claim.ts +31 -5
  269. package/src/cli/commands/close.ts +56 -7
  270. package/src/cli/commands/invoke.ts +6 -2
  271. package/src/cli/commands/mcp.ts +18 -2
  272. package/src/cli/commands/open.ts +151 -14
  273. package/src/cli/commands/pay.ts +442 -0
  274. package/src/cli/commands/reclaim-unverified.ts +24 -6
  275. package/src/cli/commands/reclaim.ts +274 -19
  276. package/src/cli/commands/refund.ts +277 -0
  277. package/src/cli/commands/status.ts +17 -1
  278. package/src/cli/commands/streams.ts +11 -15
  279. package/src/cli/commands/watch.ts +7 -1
  280. package/src/cli/config.ts +139 -52
  281. package/src/cli/deps.ts +189 -25
  282. package/src/cli/errors.ts +24 -1
  283. package/src/cli/escape-hatch.ts +19 -5
  284. package/src/cli/listings.ts +43 -10
  285. package/src/cli/preflight.ts +36 -21
  286. package/src/cli/privy.ts +398 -0
  287. package/src/cli/reclaimability.ts +154 -0
  288. package/src/cli/run.ts +54 -11
  289. package/src/cli/scan-range.ts +2 -2
  290. package/src/cli/spend-policy.ts +139 -0
  291. package/src/cli/status.ts +14 -1
  292. package/src/cli/wallet.ts +189 -58
  293. package/src/discovery/rate-band.ts +172 -0
  294. package/src/escrow-generation.ts +135 -0
  295. package/src/frameworks/agentkit.ts +45 -11
  296. package/src/frameworks/eliza.ts +27 -5
  297. package/src/frameworks/langchain.ts +14 -0
  298. package/src/gateway/caller-auth-gateway.ts +336 -13
  299. package/src/gateway/http-server.ts +690 -7
  300. package/src/gateway/probe-auth.ts +191 -0
  301. package/src/gateway/signed-rate-bounds.ts +164 -0
  302. package/src/gateway/x402-opener-mode.ts +974 -0
  303. package/src/index.ts +112 -14
  304. package/src/mandates/env.ts +3 -2
  305. package/src/mcp/server.ts +973 -44
  306. package/src/mcp/service-invoker.ts +285 -0
  307. package/src/mcp/x402-tools.ts +621 -0
  308. package/src/network.ts +302 -0
  309. package/src/sdk/invoke.ts +96 -17
  310. package/src/wallet/autonomous-wallet-broker.ts +46 -20
  311. package/src/wallet/autonomous-wallet-protocol.ts +11 -2
  312. package/src/wallet/autonomous-wallet.ts +4 -2
  313. package/src/wallet/broker-escrows.ts +66 -0
  314. package/src/wallet/lifecycle.ts +53 -18
  315. package/src/wallet/privy-broker-server.ts +35 -25
  316. package/src/wallet/privy-session-broker.ts +58 -25
  317. package/src/wallet/privy-session-provider.ts +7 -3
  318. package/src/wallet/provider.ts +20 -15
  319. package/src/x402/facilitator.ts +85 -46
  320. package/src/x402-buyer/guarded-fetch.ts +213 -0
  321. package/src/x402-buyer/index.ts +9 -0
  322. package/src/x402-buyer/pay.ts +517 -0
  323. package/src/x402-opener/abi.ts +881 -0
  324. package/src/x402-opener/facilitator-entry.ts +45 -0
  325. package/src/x402-opener/facilitator-server.ts +1014 -0
  326. package/src/x402-opener/index.ts +13 -0
  327. package/src/x402-opener/listing-resolver.ts +202 -0
  328. package/src/x402-opener/refund-relay.ts +1743 -0
  329. package/src/x402-opener/relayer-queue.ts +18 -0
  330. package/src/x402-opener/scheme.ts +1133 -0
  331. package/src/x402-opener/terms.ts +300 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheme.js","sourceRoot":"","sources":["../../src/x402-opener/scheme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ import { type Address, type Hex } from "viem";
2
+ /**
3
+ * Shared vocabulary of the x402 v2 escrow-opener path (metrik-agent#116).
4
+ *
5
+ * A standard x402 v2 `exact` payment (an EIP-3009 `transferWithAuthorization`)
6
+ * is settled through the ownerless `X402StreamOpenerFactory`
7
+ * (metrik-contracts#48): the x402 `payTo` is the CREATE2 address of the opener
8
+ * for one immutable set of stream {@link OpenerTerms}, so the payer's signature
9
+ * (which binds `to`) commits to those terms, and the opener turns the payment
10
+ * into an ordinary `StreamEscrowV2` stream with `deposit = amount`.
11
+ *
12
+ * This module has no network or package side effects: it is the pure,
13
+ * dependency-free part shared by the facilitator and the gateway.
14
+ */
15
+ /** Scheme name. The standard x402 `exact` scheme, nothing Metrik-specific. */
16
+ export declare const OPENER_SCHEME: "exact";
17
+ /** Public docs for the x402 opener path, linked from the 402. */
18
+ export declare const DEFAULT_OPENER_DOCS_URL = "https://github.com/Absol-Labs/metrik-agent/blob/main/docs/x402.md";
19
+ /**
20
+ * Key under `PaymentRequirements.extra` that carries the opener terms. The
21
+ * facilitator reads the terms ONLY from here, recomputes the opener address
22
+ * on-chain and requires it to equal `payTo`, so a tampered value can never
23
+ * redirect funds: it just fails verification.
24
+ */
25
+ export declare const OPENER_EXTRA_KEY: "metrikStreamOpener";
26
+ /** Immutable per-listing stream terms, mirroring the Solidity `Terms` struct. */
27
+ export interface OpenerTerms {
28
+ readonly operator: Address;
29
+ readonly serviceRef: Hex;
30
+ /** USDC base units per second. */
31
+ readonly ratePerSecond: bigint;
32
+ /** Seconds. */
33
+ readonly maxDuration: bigint;
34
+ }
35
+ /** JSON-safe projection of {@link OpenerTerms} plus the factory that prices them. */
36
+ export interface OpenerTermsExtra {
37
+ readonly factory: Address;
38
+ readonly operator: Address;
39
+ readonly serviceRef: Hex;
40
+ readonly ratePerSecond: string;
41
+ readonly maxDuration: string;
42
+ /**
43
+ * Informational only (metrik-agent#119): where the payer gets unearned money
44
+ * back without ETH, as a template containing `{streamId}`. Never used for
45
+ * settlement; the facilitator validates it is an http(s) link and ignores it.
46
+ */
47
+ readonly refundUrl?: string;
48
+ /** Informational only: docs for this payment path. */
49
+ readonly docsUrl?: string;
50
+ }
51
+ /** True for an absolute http(s) URL of sane length. */
52
+ export declare function isHttpLink(value: unknown): value is string;
53
+ export declare class InvalidOpenerTermsError extends Error {
54
+ constructor(message: string);
55
+ }
56
+ /** Parses a non-negative base-10 integer string. Throws on anything else. */
57
+ export declare function parseUintString(value: unknown, field: string): bigint;
58
+ /**
59
+ * Validates terms the way the factory's `deploy` does (non-zero operator, rate
60
+ * and duration, `maxDuration` within `uint64`) plus the shape checks the
61
+ * contract cannot do for us (32-byte serviceRef).
62
+ */
63
+ export declare function assertValidTerms(terms: OpenerTerms): void;
64
+ /** The largest deposit a stream on these terms can ever earn out: `rate * maxDuration`. */
65
+ export declare function maxEarnable(terms: OpenerTerms): bigint;
66
+ /**
67
+ * The price (= stream deposit) must be positive and must not exceed what the
68
+ * stream can ever accrue. A deposit above `rate * maxDuration` would lock money
69
+ * the seller can never earn, reclaimable only by a second buyer action.
70
+ */
71
+ export declare function assertValidPrice(price: bigint, terms: OpenerTerms): void;
72
+ export declare function termsToExtra(factory: Address, terms: OpenerTerms): OpenerTermsExtra;
73
+ /**
74
+ * Reads opener terms from an untrusted `PaymentRequirements.extra`. Every field
75
+ * is re-validated; unknown keys under the opener object are rejected so the
76
+ * wire shape cannot drift silently.
77
+ */
78
+ export declare function termsFromExtra(extra: unknown): {
79
+ readonly factory: Address;
80
+ readonly terms: OpenerTerms;
81
+ };
82
+ /** Chain id encoded in an `eip155:<id>` CAIP-2 identifier. Throws otherwise. */
83
+ export declare function chainIdFromNetwork(network: string): number;
84
+ /** Solidity-tuple view of terms for viem contract calls. */
85
+ export declare function termsTuple(terms: OpenerTerms): {
86
+ readonly operator: Address;
87
+ readonly serviceRef: Hex;
88
+ readonly ratePerSecond: bigint;
89
+ readonly maxDuration: bigint;
90
+ };
91
+ /** A bazaar-shaped `{info: {input, output?}, schema?}` declaration. */
92
+ export interface X402SchemaDeclaration {
93
+ readonly info: {
94
+ readonly input: {
95
+ readonly type: "http";
96
+ } & Record<string, unknown>;
97
+ readonly output?: Record<string, unknown>;
98
+ };
99
+ readonly schema?: Record<string, unknown>;
100
+ }
101
+ /** Largest accepted schema declaration, serialized bytes. */
102
+ export declare const MAX_SCHEMA_DECLARATION_BYTES: number;
103
+ /** Validates a bazaar-shaped schema declaration. Throws on anything else. */
104
+ export declare function assertSchemaDeclaration(value: unknown): asserts value is X402SchemaDeclaration;
105
+ //# sourceMappingURL=terms.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terms.d.ts","sourceRoot":"","sources":["../../src/x402-opener/terms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,212 @@
1
+ import { getAddress, isAddress, isHex } from "viem";
2
+ /**
3
+ * Shared vocabulary of the x402 v2 escrow-opener path (metrik-agent#116).
4
+ *
5
+ * A standard x402 v2 `exact` payment (an EIP-3009 `transferWithAuthorization`)
6
+ * is settled through the ownerless `X402StreamOpenerFactory`
7
+ * (metrik-contracts#48): the x402 `payTo` is the CREATE2 address of the opener
8
+ * for one immutable set of stream {@link OpenerTerms}, so the payer's signature
9
+ * (which binds `to`) commits to those terms, and the opener turns the payment
10
+ * into an ordinary `StreamEscrowV2` stream with `deposit = amount`.
11
+ *
12
+ * This module has no network or package side effects: it is the pure,
13
+ * dependency-free part shared by the facilitator and the gateway.
14
+ */
15
+ /** Scheme name. The standard x402 `exact` scheme, nothing Metrik-specific. */
16
+ export const OPENER_SCHEME = "exact";
17
+ /*
18
+ * Network, USDC, escrow, factory and oracle defaults are NOT constants here:
19
+ * they come from the `@absol-labs/sdk` network registry (see `../network.ts`),
20
+ * so a new deployment is a registry change, never an edit to this module.
21
+ */
22
+ /** Public docs for the x402 opener path, linked from the 402. */
23
+ export const DEFAULT_OPENER_DOCS_URL = "https://github.com/Absol-Labs/metrik-agent/blob/main/docs/x402.md";
24
+ /** Longest informational link accepted in `extra.metrikStreamOpener`. */
25
+ const MAX_LINK_LENGTH = 2048;
26
+ /**
27
+ * Key under `PaymentRequirements.extra` that carries the opener terms. The
28
+ * facilitator reads the terms ONLY from here, recomputes the opener address
29
+ * on-chain and requires it to equal `payTo`, so a tampered value can never
30
+ * redirect funds: it just fails verification.
31
+ */
32
+ export const OPENER_EXTRA_KEY = "metrikStreamOpener";
33
+ /** `uint64` ceiling for `maxDuration`. */
34
+ const MAX_UINT64 = (1n << 64n) - 1n;
35
+ /** True for an absolute http(s) URL of sane length. */
36
+ export function isHttpLink(value) {
37
+ if (typeof value !== "string" || value.length > MAX_LINK_LENGTH)
38
+ return false;
39
+ try {
40
+ const url = new URL(value);
41
+ return url.protocol === "https:" || url.protocol === "http:";
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ export class InvalidOpenerTermsError extends Error {
48
+ constructor(message) {
49
+ super(message);
50
+ this.name = "InvalidOpenerTermsError";
51
+ }
52
+ }
53
+ /** Parses a non-negative base-10 integer string. Throws on anything else. */
54
+ export function parseUintString(value, field) {
55
+ if (typeof value !== "string" || !/^(0|[1-9]\d*)$/.test(value)) {
56
+ throw new InvalidOpenerTermsError(`${field} must be a base-10 integer string without sign or leading zeros`);
57
+ }
58
+ return BigInt(value);
59
+ }
60
+ /**
61
+ * Validates terms the way the factory's `deploy` does (non-zero operator, rate
62
+ * and duration, `maxDuration` within `uint64`) plus the shape checks the
63
+ * contract cannot do for us (32-byte serviceRef).
64
+ */
65
+ export function assertValidTerms(terms) {
66
+ if (!isAddress(terms.operator, { strict: false })) {
67
+ throw new InvalidOpenerTermsError("operator must be an EVM address");
68
+ }
69
+ if (/^0x0{40}$/i.test(terms.operator)) {
70
+ throw new InvalidOpenerTermsError("operator must not be the zero address");
71
+ }
72
+ if (!isHex(terms.serviceRef, { strict: true }) ||
73
+ terms.serviceRef.length !== 66) {
74
+ throw new InvalidOpenerTermsError("serviceRef must be a 32-byte hex value");
75
+ }
76
+ if (terms.ratePerSecond <= 0n) {
77
+ throw new InvalidOpenerTermsError("ratePerSecond must be > 0");
78
+ }
79
+ if (terms.maxDuration <= 0n || terms.maxDuration > MAX_UINT64) {
80
+ throw new InvalidOpenerTermsError("maxDuration must be > 0 and fit in uint64");
81
+ }
82
+ }
83
+ /** The largest deposit a stream on these terms can ever earn out: `rate * maxDuration`. */
84
+ export function maxEarnable(terms) {
85
+ return terms.ratePerSecond * terms.maxDuration;
86
+ }
87
+ /**
88
+ * The price (= stream deposit) must be positive and must not exceed what the
89
+ * stream can ever accrue. A deposit above `rate * maxDuration` would lock money
90
+ * the seller can never earn, reclaimable only by a second buyer action.
91
+ */
92
+ export function assertValidPrice(price, terms) {
93
+ if (price <= 0n) {
94
+ throw new InvalidOpenerTermsError("price must be > 0");
95
+ }
96
+ if (price > maxEarnable(terms)) {
97
+ throw new InvalidOpenerTermsError(`price ${price} exceeds ratePerSecond * maxDuration (${maxEarnable(terms)})`);
98
+ }
99
+ }
100
+ export function termsToExtra(factory, terms) {
101
+ return {
102
+ factory: getAddress(factory),
103
+ operator: getAddress(terms.operator),
104
+ serviceRef: terms.serviceRef.toLowerCase(),
105
+ ratePerSecond: terms.ratePerSecond.toString(),
106
+ maxDuration: terms.maxDuration.toString(),
107
+ };
108
+ }
109
+ /**
110
+ * Reads opener terms from an untrusted `PaymentRequirements.extra`. Every field
111
+ * is re-validated; unknown keys under the opener object are rejected so the
112
+ * wire shape cannot drift silently.
113
+ */
114
+ export function termsFromExtra(extra) {
115
+ if (typeof extra !== "object" || extra === null) {
116
+ throw new InvalidOpenerTermsError("requirements.extra is missing");
117
+ }
118
+ const raw = extra[OPENER_EXTRA_KEY];
119
+ if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
120
+ throw new InvalidOpenerTermsError(`requirements.extra.${OPENER_EXTRA_KEY} is missing`);
121
+ }
122
+ const record = raw;
123
+ const allowed = new Set([
124
+ "factory",
125
+ "operator",
126
+ "serviceRef",
127
+ "ratePerSecond",
128
+ "maxDuration",
129
+ "refundUrl",
130
+ "docsUrl",
131
+ ]);
132
+ for (const key of Object.keys(record)) {
133
+ if (!allowed.has(key)) {
134
+ throw new InvalidOpenerTermsError(`unknown key ${key} in requirements.extra.${OPENER_EXTRA_KEY}`);
135
+ }
136
+ }
137
+ for (const link of ["refundUrl", "docsUrl"]) {
138
+ if (record[link] !== undefined && !isHttpLink(record[link])) {
139
+ throw new InvalidOpenerTermsError(`${link} in requirements.extra.${OPENER_EXTRA_KEY} must be an http(s) URL`);
140
+ }
141
+ }
142
+ const { factory, operator, serviceRef } = record;
143
+ if (typeof factory !== "string" || !isAddress(factory, { strict: false })) {
144
+ throw new InvalidOpenerTermsError("factory must be an EVM address");
145
+ }
146
+ if (typeof operator !== "string" || !isAddress(operator, { strict: false })) {
147
+ throw new InvalidOpenerTermsError("operator must be an EVM address");
148
+ }
149
+ if (typeof serviceRef !== "string") {
150
+ throw new InvalidOpenerTermsError("serviceRef must be a string");
151
+ }
152
+ const terms = {
153
+ operator: getAddress(operator),
154
+ serviceRef: serviceRef,
155
+ ratePerSecond: parseUintString(record.ratePerSecond, "ratePerSecond"),
156
+ maxDuration: parseUintString(record.maxDuration, "maxDuration"),
157
+ };
158
+ assertValidTerms(terms);
159
+ return { factory: getAddress(factory), terms };
160
+ }
161
+ /** Chain id encoded in an `eip155:<id>` CAIP-2 identifier. Throws otherwise. */
162
+ export function chainIdFromNetwork(network) {
163
+ const match = /^eip155:([1-9]\d*)$/.exec(network);
164
+ if (match === null) {
165
+ throw new InvalidOpenerTermsError(`network must be an eip155 CAIP-2 identifier, got ${network}`);
166
+ }
167
+ const chainId = Number(match[1]);
168
+ if (!Number.isSafeInteger(chainId)) {
169
+ throw new InvalidOpenerTermsError(`unsupported chain id in ${network}`);
170
+ }
171
+ return chainId;
172
+ }
173
+ /** Solidity-tuple view of terms for viem contract calls. */
174
+ export function termsTuple(terms) {
175
+ return {
176
+ operator: getAddress(terms.operator),
177
+ serviceRef: terms.serviceRef,
178
+ ratePerSecond: terms.ratePerSecond,
179
+ maxDuration: terms.maxDuration,
180
+ };
181
+ }
182
+ /** Largest accepted schema declaration, serialized bytes. */
183
+ export const MAX_SCHEMA_DECLARATION_BYTES = 16 * 1024;
184
+ /** Validates a bazaar-shaped schema declaration. Throws on anything else. */
185
+ export function assertSchemaDeclaration(value) {
186
+ if (JSON.stringify(value ?? null).length > MAX_SCHEMA_DECLARATION_BYTES) {
187
+ throw new Error(`the schema declaration exceeds ${MAX_SCHEMA_DECLARATION_BYTES} bytes`);
188
+ }
189
+ const record = value;
190
+ const info = record?.info;
191
+ const input = info?.input;
192
+ if (typeof record !== "object" ||
193
+ record === null ||
194
+ Array.isArray(record) ||
195
+ typeof info !== "object" ||
196
+ info === null ||
197
+ typeof input !== "object" ||
198
+ input === null ||
199
+ input.type !== "http" ||
200
+ (info.output !== undefined &&
201
+ (typeof info.output !== "object" || info.output === null)) ||
202
+ (record.schema !== undefined &&
203
+ (typeof record.schema !== "object" || record.schema === null))) {
204
+ throw new Error('the schema declaration must be {info: {input: {type: "http", ...}, output?}, schema?}');
205
+ }
206
+ for (const key of Object.keys(record)) {
207
+ if (key !== "info" && key !== "schema") {
208
+ throw new Error(`unknown key ${key} in the schema declaration`);
209
+ }
210
+ }
211
+ }
212
+ //# sourceMappingURL=terms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terms.js","sourceRoot":"","sources":["../../src/x402-opener/terms.ts"],"names":[],"mappings":"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"}
@@ -178,8 +178,8 @@ export declare const deliveryContextEnvelopeV2Schema: z.ZodObject<{
178
178
  intervalIndex: z.ZodNumber;
179
179
  issuedAt: z.ZodNumber;
180
180
  }, "strict", z.ZodTypeAny, {
181
- issuedAt: number;
182
181
  streamId: string;
182
+ issuedAt: number;
183
183
  operator: string;
184
184
  serviceRef: string;
185
185
  kind: "metrik-l2-http-response/v2";
@@ -187,8 +187,8 @@ export declare const deliveryContextEnvelopeV2Schema: z.ZodObject<{
187
187
  intervalIndex: number;
188
188
  mandateId?: string | undefined;
189
189
  }, {
190
- issuedAt: number;
191
190
  streamId: string;
191
+ issuedAt: number;
192
192
  operator: string;
193
193
  serviceRef: string;
194
194
  kind: "metrik-l2-http-response/v2";
@@ -15,14 +15,19 @@ fills exactly that gap, and the agent layer is where an agent experiences it.
15
15
 
16
16
  ## The four components
17
17
 
18
- ### 1. x402 verified-streaming scheme
18
+ ### 1. Metrik verified-streaming `402` flow
19
19
 
20
- A StreamProof-flavored x402 scheme/facilitator: an agent hits an HTTP `402`, receives
21
- a _verified-streaming_ requirement (operator, serviceRef, rate, budget, settlement
20
+ A Metrik-native HTTP `402` challenge flow: an agent hits a `402`, receives a
21
+ _verified-streaming_ requirement (operator, serviceRef, rate, budget, settlement
22
22
  chain/escrow), responds with a signed-mandate payload, and a stream opens through the
23
- SDK — paying only for oracle-verified delivery, pausing on failure. The integration
24
- reuses the `402` challenge/response shape and the protocol's existing settlement path.
25
- (`src/x402/`)
23
+ SDK — paying only for oracle-verified delivery. It borrows the _shape_ of an x402
24
+ challenge/response and reuses the protocol's existing settlement path. (`src/x402/`)
25
+
26
+ It is **not the x402 protocol**: its scheme string, challenge body, payload and
27
+ `X-METRIK-PAYMENT` header are all Metrik's own, and it does not interoperate with
28
+ `x402-fetch`, `x402-axios`, or `x402-express`. Standard x402 v2 `exact` payments are
29
+ handled by a separate, opt-in path — the opener facilitator and the gateway's x402 v2
30
+ mode — described in [docs/x402.md](./x402.md).
26
31
 
27
32
  ### 2. MCP server
28
33
 
@@ -125,7 +130,7 @@ proven live. Tracked separately if/when a paymaster is provisioned.
125
130
 
126
131
  ```mermaid
127
132
  flowchart LR
128
- AGENT[AI agent] -->|MCP tool / x402 402| AL[Agent layer]
133
+ AGENT[AI agent] -->|MCP tool / Metrik 402| AL[Agent layer]
129
134
  AL -->|checkMandate| MND[Spend mandate]
130
135
  MND -->|allowed| SDK[@absol-labs/sdk]
131
136
  SDK --> ESC[Escrow on settlement chain]
@@ -147,5 +152,5 @@ flowchart LR
147
152
 
148
153
  ## Roadmap (see issues)
149
154
 
150
- x402 scheme → MCP server → framework adapters → example agents
155
+ Metrik `402` flow → MCP server → framework adapters → example agents
151
156
  (hire + monitor + close on verification gaps) → wallet/provider integration.
@@ -131,3 +131,191 @@ capability typed-data requests only. It does not claim ERC-4337, EIP-1271,
131
131
  smart-account, or gas-sponsorship support. The broker deployment and its real
132
132
  Privy policy remain integration dependencies and must be health-checked before
133
133
  use.
134
+
135
+ ## Escrow cutover (V2 → V3): what the broker allows, and the Privy policy change it needs
136
+
137
+ The broker (both the agent-owned and the session paths) sends transactions to
138
+ exactly two kinds of escrow, read from the registries rather than hardcoded
139
+ (`src/wallet/broker-escrows.ts`):
140
+
141
+ | Target | Allowed calls |
142
+ | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
143
+ | **Current escrow** (the SDK network registry's escrow for the broker's network) | `openStream`, `close`, `reclaim`, `reclaimUnverified` |
144
+ | **Legacy escrow(s)** (`@absol-labs/shared` deployments with `status: "legacy"`, other than the current one) | `close`, `reclaim`, `reclaimUnverified` **only** — no `openStream` |
145
+ | **USDC** | `approve(spender, amount)` with `spender` = the **current** escrow only (never a legacy escrow), `amount` within the existing cap |
146
+
147
+ Everything else is unchanged: chain id, zero `value`, `from` = the wallet, the
148
+ mandate/spend-cap checks on `openStream`, `stream.buyer == wallet` on every exit
149
+ (read from the escrow the exit targets), and invocation-capability typed data
150
+ bound to the current escrow. V2 and V3 share the selectors of every allowed
151
+ method, so one decoder (the union of the V2/V3 ABIs) serves both.
152
+
153
+ While the SDK default is still `StreamEscrowV2` (`@absol-labs/sdk@0.10.0-rc.1`),
154
+ V2 is current and nothing is legacy: behaviour is identical to before. With
155
+ `0.10.0-rc.2` the default becomes `StreamEscrowV3` and V2 becomes exit-only, so
156
+ agents holding open V2 streams can still close and reclaim them.
157
+
158
+ ### Privy policy rules to apply at cutover
159
+
160
+ The broker's checks are a second line; the Privy policy is what Privy itself
161
+ enforces. At the V3 cutover, the policy (`PRIVY_POLICY_ID`) must change as
162
+ follows. Base Sepolia addresses (from `@absol-labs/shared` `escrowDeployments`
163
+ and the SDK registry):
164
+
165
+ - current escrow (V3): `0x0643ba482C6A7aF31a1f8225e7e7e79Cfc467b13`
166
+ - legacy escrow (V2): `0x0f09f36Ccc05A7c9882F438721C08De314dFd46C`
167
+ - USDC: `0x036CbD53842c5426634e7929541eC2318f3dCF7e`
168
+
169
+ Keep every existing numeric bound exactly as it is (`openStream`
170
+ `deposit <= 1000000`, `ratePerSecond <= 1000`, `maxDuration <= 3600`; USDC
171
+ `approve` `amount <= 1000000`; chain `eip155:84532`; `value == 0`).
172
+
173
+ 1. **Contract allowlist, escrow — `openStream`**: change the target from the V2
174
+ escrow to the **V3** escrow only. The legacy V2 escrow must NOT be allowed
175
+ `openStream`.
176
+ 2. **Contract allowlist, escrow — exits** (`close(bytes32)` `0x39c79e0c`,
177
+ `reclaim(bytes32,uint256,bytes32[])` `0x2c307c9c`,
178
+ `reclaimUnverified(bytes32)` `0x5fcdce22`): allow them on **both** the V3
179
+ escrow and the V2 escrow (`to` IN [V3, V2]).
180
+ 3. **USDC `approve`** (`0x095ea7b3`): change the allowed `spender` from the V2
181
+ escrow to the **V3** escrow only. No approval to V2.
182
+ 4. Remove any rule that allows the V2 escrow for a method other than the three
183
+ exits above.
184
+
185
+ The same, as Privy policy rules (ALLOW rules, `eth_sendTransaction`,
186
+ `chain_type: "ethereum"`; DENY is the default):
187
+
188
+ ```json
189
+ [
190
+ {
191
+ "name": "metrik-open-stream-current-escrow",
192
+ "method": "eth_sendTransaction",
193
+ "action": "ALLOW",
194
+ "conditions": [
195
+ {
196
+ "field_source": "ethereum_transaction",
197
+ "field": "chain_id",
198
+ "operator": "eq",
199
+ "value": "84532"
200
+ },
201
+ {
202
+ "field_source": "ethereum_transaction",
203
+ "field": "to",
204
+ "operator": "eq",
205
+ "value": "0x0643ba482C6A7aF31a1f8225e7e7e79Cfc467b13"
206
+ },
207
+ {
208
+ "field_source": "ethereum_transaction",
209
+ "field": "value",
210
+ "operator": "eq",
211
+ "value": "0"
212
+ },
213
+ {
214
+ "field_source": "ethereum_calldata",
215
+ "field": "openStream.deposit",
216
+ "operator": "lte",
217
+ "value": "1000000",
218
+ "abi": "<StreamEscrowV3 openStream ABI>"
219
+ },
220
+ {
221
+ "field_source": "ethereum_calldata",
222
+ "field": "openStream.ratePerSecond",
223
+ "operator": "lte",
224
+ "value": "1000",
225
+ "abi": "<StreamEscrowV3 openStream ABI>"
226
+ },
227
+ {
228
+ "field_source": "ethereum_calldata",
229
+ "field": "openStream.maxDuration",
230
+ "operator": "lte",
231
+ "value": "3600",
232
+ "abi": "<StreamEscrowV3 openStream ABI>"
233
+ }
234
+ ]
235
+ },
236
+ {
237
+ "name": "metrik-exits-current-and-legacy-escrow",
238
+ "method": "eth_sendTransaction",
239
+ "action": "ALLOW",
240
+ "conditions": [
241
+ {
242
+ "field_source": "ethereum_transaction",
243
+ "field": "chain_id",
244
+ "operator": "eq",
245
+ "value": "84532"
246
+ },
247
+ {
248
+ "field_source": "ethereum_transaction",
249
+ "field": "to",
250
+ "operator": "in",
251
+ "value": [
252
+ "0x0643ba482C6A7aF31a1f8225e7e7e79Cfc467b13",
253
+ "0x0f09f36Ccc05A7c9882F438721C08De314dFd46C"
254
+ ]
255
+ },
256
+ {
257
+ "field_source": "ethereum_transaction",
258
+ "field": "value",
259
+ "operator": "eq",
260
+ "value": "0"
261
+ },
262
+ {
263
+ "field_source": "ethereum_calldata",
264
+ "field": "function_selector",
265
+ "operator": "in",
266
+ "value": ["0x39c79e0c", "0x2c307c9c", "0x5fcdce22"]
267
+ }
268
+ ]
269
+ },
270
+ {
271
+ "name": "metrik-usdc-approve-current-escrow",
272
+ "method": "eth_sendTransaction",
273
+ "action": "ALLOW",
274
+ "conditions": [
275
+ {
276
+ "field_source": "ethereum_transaction",
277
+ "field": "chain_id",
278
+ "operator": "eq",
279
+ "value": "84532"
280
+ },
281
+ {
282
+ "field_source": "ethereum_transaction",
283
+ "field": "to",
284
+ "operator": "eq",
285
+ "value": "0x036CbD53842c5426634e7929541eC2318f3dCF7e"
286
+ },
287
+ {
288
+ "field_source": "ethereum_transaction",
289
+ "field": "value",
290
+ "operator": "eq",
291
+ "value": "0"
292
+ },
293
+ {
294
+ "field_source": "ethereum_calldata",
295
+ "field": "approve.spender",
296
+ "operator": "eq",
297
+ "value": "0x0643ba482C6A7aF31a1f8225e7e7e79Cfc467b13",
298
+ "abi": "<ERC-20 approve ABI>"
299
+ },
300
+ {
301
+ "field_source": "ethereum_calldata",
302
+ "field": "approve.amount",
303
+ "operator": "lte",
304
+ "value": "1000000",
305
+ "abi": "<ERC-20 approve ABI>"
306
+ }
307
+ ]
308
+ }
309
+ ]
310
+ ```
311
+
312
+ Express the selector restriction in whatever form the live policy already uses
313
+ (a `function_selector` condition, or one calldata-field rule per exit method
314
+ with its ABI). What matters is the set: `openStream` → V3 only; the three exits
315
+ → V3 and V2; `approve.spender` → V3 only. The existing invocation-capability
316
+ typed-data rule must change its `verifyingContract` to the V3 escrow at the
317
+ same time (the broker already binds it to the current escrow).
318
+
319
+ Apply the policy change and the `@absol-labs/sdk@0.10.0-rc.2` bump together: the
320
+ broker refuses a V2 `openStream` as soon as the registry default is V3, and the
321
+ policy should too.