@absol-labs/agent 0.11.0 → 0.12.0-rc.2

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 (366) hide show
  1. package/README.md +43 -51
  2. package/dist/capability/invocation-capability.d.ts +2 -2
  3. package/dist/capability/probe-capability.d.ts +225 -0
  4. package/dist/capability/probe-capability.d.ts.map +1 -0
  5. package/dist/capability/probe-capability.js +248 -0
  6. package/dist/capability/probe-capability.js.map +1 -0
  7. package/dist/cli/args.d.ts +11 -0
  8. package/dist/cli/args.d.ts.map +1 -1
  9. package/dist/cli/args.js +23 -0
  10. package/dist/cli/args.js.map +1 -1
  11. package/dist/cli/commands/claim.d.ts +32 -0
  12. package/dist/cli/commands/claim.d.ts.map +1 -1
  13. package/dist/cli/commands/claim.js +116 -28
  14. package/dist/cli/commands/claim.js.map +1 -1
  15. package/dist/cli/commands/close.d.ts.map +1 -1
  16. package/dist/cli/commands/close.js +35 -3
  17. package/dist/cli/commands/close.js.map +1 -1
  18. package/dist/cli/commands/invoke.d.ts +2 -0
  19. package/dist/cli/commands/invoke.d.ts.map +1 -1
  20. package/dist/cli/commands/invoke.js +2 -2
  21. package/dist/cli/commands/invoke.js.map +1 -1
  22. package/dist/cli/commands/mcp.d.ts.map +1 -1
  23. package/dist/cli/commands/mcp.js +15 -2
  24. package/dist/cli/commands/mcp.js.map +1 -1
  25. package/dist/cli/commands/open.d.ts.map +1 -1
  26. package/dist/cli/commands/open.js +58 -4
  27. package/dist/cli/commands/open.js.map +1 -1
  28. package/dist/cli/commands/pay.d.ts +34 -0
  29. package/dist/cli/commands/pay.d.ts.map +1 -0
  30. package/dist/cli/commands/pay.js +479 -0
  31. package/dist/cli/commands/pay.js.map +1 -0
  32. package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -1
  33. package/dist/cli/commands/reclaim-unverified.js +3 -2
  34. package/dist/cli/commands/reclaim-unverified.js.map +1 -1
  35. package/dist/cli/commands/reclaim.d.ts +23 -2
  36. package/dist/cli/commands/reclaim.d.ts.map +1 -1
  37. package/dist/cli/commands/reclaim.js +204 -20
  38. package/dist/cli/commands/reclaim.js.map +1 -1
  39. package/dist/cli/commands/refund.d.ts +31 -0
  40. package/dist/cli/commands/refund.d.ts.map +1 -0
  41. package/dist/cli/commands/refund.js +397 -0
  42. package/dist/cli/commands/refund.js.map +1 -0
  43. package/dist/cli/commands/status.d.ts.map +1 -1
  44. package/dist/cli/commands/status.js +21 -2
  45. package/dist/cli/commands/status.js.map +1 -1
  46. package/dist/cli/commands/streams.js +8 -12
  47. package/dist/cli/commands/streams.js.map +1 -1
  48. package/dist/cli/commands/watch.d.ts.map +1 -1
  49. package/dist/cli/commands/watch.js +4 -1
  50. package/dist/cli/commands/watch.js.map +1 -1
  51. package/dist/cli/config.d.ts +44 -26
  52. package/dist/cli/config.d.ts.map +1 -1
  53. package/dist/cli/config.js +88 -38
  54. package/dist/cli/config.js.map +1 -1
  55. package/dist/cli/context.d.ts +19 -0
  56. package/dist/cli/context.d.ts.map +1 -1
  57. package/dist/cli/deps.d.ts +53 -0
  58. package/dist/cli/deps.d.ts.map +1 -1
  59. package/dist/cli/deps.js +51 -1
  60. package/dist/cli/deps.js.map +1 -1
  61. package/dist/cli/errors.d.ts.map +1 -1
  62. package/dist/cli/errors.js +21 -1
  63. package/dist/cli/errors.js.map +1 -1
  64. package/dist/cli/escape-hatch.d.ts +6 -4
  65. package/dist/cli/escape-hatch.d.ts.map +1 -1
  66. package/dist/cli/escape-hatch.js +6 -2
  67. package/dist/cli/escape-hatch.js.map +1 -1
  68. package/dist/cli/listings.d.ts +18 -0
  69. package/dist/cli/listings.d.ts.map +1 -1
  70. package/dist/cli/listings.js +22 -12
  71. package/dist/cli/listings.js.map +1 -1
  72. package/dist/cli/preflight.d.ts +20 -14
  73. package/dist/cli/preflight.d.ts.map +1 -1
  74. package/dist/cli/preflight.js +34 -20
  75. package/dist/cli/preflight.js.map +1 -1
  76. package/dist/cli/privy.d.ts.map +1 -1
  77. package/dist/cli/privy.js +4 -2
  78. package/dist/cli/privy.js.map +1 -1
  79. package/dist/cli/progress.d.ts +13 -1
  80. package/dist/cli/progress.d.ts.map +1 -1
  81. package/dist/cli/progress.js +7 -1
  82. package/dist/cli/progress.js.map +1 -1
  83. package/dist/cli/reclaimability.d.ts +82 -0
  84. package/dist/cli/reclaimability.d.ts.map +1 -0
  85. package/dist/cli/reclaimability.js +80 -0
  86. package/dist/cli/reclaimability.js.map +1 -0
  87. package/dist/cli/run.d.ts +2 -1
  88. package/dist/cli/run.d.ts.map +1 -1
  89. package/dist/cli/run.js +62 -21
  90. package/dist/cli/run.js.map +1 -1
  91. package/dist/cli/scan-range.d.ts +2 -2
  92. package/dist/cli/scan-range.js +2 -2
  93. package/dist/cli/status.d.ts +106 -1
  94. package/dist/cli/status.d.ts.map +1 -1
  95. package/dist/cli/status.js +325 -44
  96. package/dist/cli/status.js.map +1 -1
  97. package/dist/cli/wallet.d.ts +2 -2
  98. package/dist/cli/wallet.d.ts.map +1 -1
  99. package/dist/cli/wallet.js +29 -5
  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 +83 -31
  121. package/dist/gateway/caller-auth-gateway.d.ts.map +1 -1
  122. package/dist/gateway/caller-auth-gateway.js +180 -27
  123. package/dist/gateway/caller-auth-gateway.js.map +1 -1
  124. package/dist/gateway/http-server.d.ts +128 -44
  125. package/dist/gateway/http-server.d.ts.map +1 -1
  126. package/dist/gateway/http-server.js +506 -155
  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 +252 -0
  137. package/dist/gateway/x402-opener-mode.d.ts.map +1 -0
  138. package/dist/gateway/x402-opener-mode.js +772 -0
  139. package/dist/gateway/x402-opener-mode.js.map +1 -0
  140. package/dist/index.d.ts +6 -2
  141. package/dist/index.d.ts.map +1 -1
  142. package/dist/index.js +10 -5
  143. package/dist/index.js.map +1 -1
  144. package/dist/mcp/server.d.ts +64 -1
  145. package/dist/mcp/server.d.ts.map +1 -1
  146. package/dist/mcp/server.js +247 -37
  147. package/dist/mcp/server.js.map +1 -1
  148. package/dist/mcp/x402-tools.d.ts +109 -0
  149. package/dist/mcp/x402-tools.d.ts.map +1 -0
  150. package/dist/mcp/x402-tools.js +554 -0
  151. package/dist/mcp/x402-tools.js.map +1 -0
  152. package/dist/network.d.ts +119 -0
  153. package/dist/network.d.ts.map +1 -0
  154. package/dist/network.js +199 -0
  155. package/dist/network.js.map +1 -0
  156. package/dist/sdk/client.d.ts +13 -0
  157. package/dist/sdk/client.d.ts.map +1 -1
  158. package/dist/sdk/client.js +15 -0
  159. package/dist/sdk/client.js.map +1 -1
  160. package/dist/sdk/invoke.d.ts +4 -0
  161. package/dist/sdk/invoke.d.ts.map +1 -1
  162. package/dist/sdk/invoke.js +2 -5
  163. package/dist/sdk/invoke.js.map +1 -1
  164. package/dist/wallet/autonomous-wallet-broker.d.ts +3 -0
  165. package/dist/wallet/autonomous-wallet-broker.d.ts.map +1 -1
  166. package/dist/wallet/autonomous-wallet-broker.js +27 -23
  167. package/dist/wallet/autonomous-wallet-broker.js.map +1 -1
  168. package/dist/wallet/autonomous-wallet-protocol.d.ts +8 -2
  169. package/dist/wallet/autonomous-wallet-protocol.d.ts.map +1 -1
  170. package/dist/wallet/autonomous-wallet-protocol.js +9 -2
  171. package/dist/wallet/autonomous-wallet-protocol.js.map +1 -1
  172. package/dist/wallet/autonomous-wallet.d.ts.map +1 -1
  173. package/dist/wallet/autonomous-wallet.js +3 -2
  174. package/dist/wallet/autonomous-wallet.js.map +1 -1
  175. package/dist/wallet/broker-escrows.d.ts +222 -0
  176. package/dist/wallet/broker-escrows.d.ts.map +1 -0
  177. package/dist/wallet/broker-escrows.js +36 -0
  178. package/dist/wallet/broker-escrows.js.map +1 -0
  179. package/dist/wallet/lifecycle.d.ts +21 -5
  180. package/dist/wallet/lifecycle.d.ts.map +1 -1
  181. package/dist/wallet/lifecycle.js +32 -12
  182. package/dist/wallet/lifecycle.js.map +1 -1
  183. package/dist/wallet/privy-broker-server.d.ts.map +1 -1
  184. package/dist/wallet/privy-broker-server.js +31 -26
  185. package/dist/wallet/privy-broker-server.js.map +1 -1
  186. package/dist/wallet/privy-session-broker.d.ts +14 -5
  187. package/dist/wallet/privy-session-broker.d.ts.map +1 -1
  188. package/dist/wallet/privy-session-broker.js +29 -17
  189. package/dist/wallet/privy-session-broker.js.map +1 -1
  190. package/dist/wallet/privy-session-provider.d.ts +3 -1
  191. package/dist/wallet/privy-session-provider.d.ts.map +1 -1
  192. package/dist/wallet/privy-session-provider.js +5 -3
  193. package/dist/wallet/privy-session-provider.js.map +1 -1
  194. package/dist/wallet/provider.d.ts.map +1 -1
  195. package/dist/wallet/provider.js +15 -8
  196. package/dist/wallet/provider.js.map +1 -1
  197. package/dist/x402/facilitator.d.ts +3 -30
  198. package/dist/x402/facilitator.d.ts.map +1 -1
  199. package/dist/x402/facilitator.js +0 -27
  200. package/dist/x402/facilitator.js.map +1 -1
  201. package/dist/x402-buyer/guarded-fetch.d.ts +51 -0
  202. package/dist/x402-buyer/guarded-fetch.d.ts.map +1 -0
  203. package/dist/x402-buyer/guarded-fetch.js +147 -0
  204. package/dist/x402-buyer/guarded-fetch.js.map +1 -0
  205. package/dist/x402-buyer/index.d.ts +10 -0
  206. package/dist/x402-buyer/index.d.ts.map +1 -0
  207. package/dist/x402-buyer/index.js +10 -0
  208. package/dist/x402-buyer/index.js.map +1 -0
  209. package/dist/x402-buyer/pay.d.ts +157 -0
  210. package/dist/x402-buyer/pay.d.ts.map +1 -0
  211. package/dist/x402-buyer/pay.js +366 -0
  212. package/dist/x402-buyer/pay.js.map +1 -0
  213. package/dist/x402-opener/abi.d.ts +684 -0
  214. package/dist/x402-opener/abi.d.ts.map +1 -0
  215. package/dist/x402-opener/abi.js +880 -0
  216. package/dist/x402-opener/abi.js.map +1 -0
  217. package/dist/x402-opener/facilitator-entry.d.ts +3 -0
  218. package/dist/x402-opener/facilitator-entry.d.ts.map +1 -0
  219. package/dist/x402-opener/facilitator-entry.js +40 -0
  220. package/dist/x402-opener/facilitator-entry.js.map +1 -0
  221. package/dist/x402-opener/facilitator-server.d.ts +209 -0
  222. package/dist/x402-opener/facilitator-server.d.ts.map +1 -0
  223. package/dist/x402-opener/facilitator-server.js +762 -0
  224. package/dist/x402-opener/facilitator-server.js.map +1 -0
  225. package/dist/x402-opener/index.d.ts +14 -0
  226. package/dist/x402-opener/index.d.ts.map +1 -0
  227. package/dist/x402-opener/index.js +14 -0
  228. package/dist/x402-opener/index.js.map +1 -0
  229. package/dist/x402-opener/listing-resolver.d.ts +55 -0
  230. package/dist/x402-opener/listing-resolver.d.ts.map +1 -0
  231. package/dist/x402-opener/listing-resolver.js +125 -0
  232. package/dist/x402-opener/listing-resolver.js.map +1 -0
  233. package/dist/x402-opener/refund-relay.d.ts +266 -0
  234. package/dist/x402-opener/refund-relay.d.ts.map +1 -0
  235. package/dist/x402-opener/refund-relay.js +1341 -0
  236. package/dist/x402-opener/refund-relay.js.map +1 -0
  237. package/dist/x402-opener/relayer-queue.d.ts +14 -0
  238. package/dist/x402-opener/relayer-queue.d.ts.map +1 -0
  239. package/dist/x402-opener/relayer-queue.js +18 -0
  240. package/dist/x402-opener/relayer-queue.js.map +1 -0
  241. package/dist/x402-opener/scheme.d.ts +296 -0
  242. package/dist/x402-opener/scheme.d.ts.map +1 -0
  243. package/dist/x402-opener/scheme.js +1035 -0
  244. package/dist/x402-opener/scheme.js.map +1 -0
  245. package/dist/x402-opener/terms.d.ts +165 -0
  246. package/dist/x402-opener/terms.d.ts.map +1 -0
  247. package/dist/x402-opener/terms.js +304 -0
  248. package/dist/x402-opener/terms.js.map +1 -0
  249. package/dist/zktls/reclaim.d.ts +2 -2
  250. package/dist/zktls/t2-delivery-proof.d.ts +6 -6
  251. package/docs/agent-layer.md +3 -2
  252. package/docs/autonomous-privy-wallet.md +188 -0
  253. package/docs/cli.md +265 -34
  254. package/docs/langchain.md +5 -0
  255. package/docs/mcp-reference.md +91 -5
  256. package/docs/probe-capability.md +191 -0
  257. package/docs/quickstart.md +39 -4
  258. package/docs/threat-model.md +20 -0
  259. package/docs/x402.md +766 -593
  260. package/package.json +19 -17
  261. package/src/capability/probe-capability.ts +355 -0
  262. package/src/cli/args.ts +29 -0
  263. package/src/cli/commands/claim.ts +168 -33
  264. package/src/cli/commands/close.ts +36 -3
  265. package/src/cli/commands/invoke.ts +5 -2
  266. package/src/cli/commands/mcp.ts +18 -2
  267. package/src/cli/commands/open.ts +75 -4
  268. package/src/cli/commands/pay.ts +584 -0
  269. package/src/cli/commands/reclaim-unverified.ts +8 -2
  270. package/src/cli/commands/reclaim.ts +277 -19
  271. package/src/cli/commands/refund.ts +475 -0
  272. package/src/cli/commands/status.ts +28 -2
  273. package/src/cli/commands/streams.ts +10 -14
  274. package/src/cli/commands/watch.ts +11 -1
  275. package/src/cli/config.ts +139 -52
  276. package/src/cli/context.ts +16 -0
  277. package/src/cli/deps.ts +111 -1
  278. package/src/cli/errors.ts +24 -1
  279. package/src/cli/escape-hatch.ts +19 -5
  280. package/src/cli/listings.ts +43 -10
  281. package/src/cli/preflight.ts +36 -21
  282. package/src/cli/privy.ts +4 -2
  283. package/src/cli/progress.ts +21 -2
  284. package/src/cli/reclaimability.ts +154 -0
  285. package/src/cli/run.ts +77 -21
  286. package/src/cli/scan-range.ts +2 -2
  287. package/src/cli/status.ts +454 -44
  288. package/src/cli/wallet.ts +45 -8
  289. package/src/discovery/rate-band.ts +172 -0
  290. package/src/escrow-generation.ts +135 -0
  291. package/src/frameworks/agentkit.ts +45 -11
  292. package/src/frameworks/eliza.ts +27 -5
  293. package/src/frameworks/langchain.ts +14 -0
  294. package/src/gateway/caller-auth-gateway.ts +320 -68
  295. package/src/gateway/http-server.ts +717 -220
  296. package/src/gateway/probe-auth.ts +191 -0
  297. package/src/gateway/signed-rate-bounds.ts +164 -0
  298. package/src/gateway/x402-opener-mode.ts +1171 -0
  299. package/src/index.ts +82 -19
  300. package/src/mcp/server.ts +351 -42
  301. package/src/mcp/x402-tools.ts +785 -0
  302. package/src/network.ts +302 -0
  303. package/src/sdk/client.ts +25 -0
  304. package/src/sdk/invoke.ts +6 -5
  305. package/src/wallet/autonomous-wallet-broker.ts +46 -20
  306. package/src/wallet/autonomous-wallet-protocol.ts +11 -2
  307. package/src/wallet/autonomous-wallet.ts +4 -2
  308. package/src/wallet/broker-escrows.ts +66 -0
  309. package/src/wallet/lifecycle.ts +53 -18
  310. package/src/wallet/privy-broker-server.ts +35 -25
  311. package/src/wallet/privy-session-broker.ts +58 -25
  312. package/src/wallet/privy-session-provider.ts +7 -3
  313. package/src/wallet/provider.ts +20 -15
  314. package/src/x402/facilitator.ts +3 -43
  315. package/src/x402-buyer/guarded-fetch.ts +213 -0
  316. package/src/x402-buyer/index.ts +9 -0
  317. package/src/x402-buyer/pay.ts +555 -0
  318. package/src/x402-opener/abi.ts +881 -0
  319. package/src/x402-opener/facilitator-entry.ts +48 -0
  320. package/src/x402-opener/facilitator-server.ts +1114 -0
  321. package/src/x402-opener/index.ts +13 -0
  322. package/src/x402-opener/listing-resolver.ts +202 -0
  323. package/src/x402-opener/refund-relay.ts +1873 -0
  324. package/src/x402-opener/relayer-queue.ts +18 -0
  325. package/src/x402-opener/scheme.ts +1551 -0
  326. package/src/x402-opener/terms.ts +453 -0
  327. package/dist/gateway/x402-mode.d.ts +0 -123
  328. package/dist/gateway/x402-mode.d.ts.map +0 -1
  329. package/dist/gateway/x402-mode.js +0 -212
  330. package/dist/gateway/x402-mode.js.map +0 -1
  331. package/dist/x402/delivery-oracle.d.ts +0 -108
  332. package/dist/x402/delivery-oracle.d.ts.map +0 -1
  333. package/dist/x402/delivery-oracle.js +0 -174
  334. package/dist/x402/delivery-oracle.js.map +0 -1
  335. package/dist/x402/facilitator-server-entry.d.ts +0 -3
  336. package/dist/x402/facilitator-server-entry.d.ts.map +0 -1
  337. package/dist/x402/facilitator-server-entry.js +0 -27
  338. package/dist/x402/facilitator-server-entry.js.map +0 -1
  339. package/dist/x402/facilitator-server.d.ts +0 -73
  340. package/dist/x402/facilitator-server.d.ts.map +0 -1
  341. package/dist/x402/facilitator-server.js +0 -305
  342. package/dist/x402/facilitator-server.js.map +0 -1
  343. package/dist/x402/payment-requirements.d.ts +0 -106
  344. package/dist/x402/payment-requirements.d.ts.map +0 -1
  345. package/dist/x402/payment-requirements.js +0 -138
  346. package/dist/x402/payment-requirements.js.map +0 -1
  347. package/dist/x402/relayer.d.ts +0 -41
  348. package/dist/x402/relayer.d.ts.map +0 -1
  349. package/dist/x402/relayer.js +0 -64
  350. package/dist/x402/relayer.js.map +0 -1
  351. package/dist/x402/resource-index.d.ts +0 -75
  352. package/dist/x402/resource-index.d.ts.map +0 -1
  353. package/dist/x402/resource-index.js +0 -126
  354. package/dist/x402/resource-index.js.map +0 -1
  355. package/dist/x402/verified-delivery-facilitator.d.ts +0 -285
  356. package/dist/x402/verified-delivery-facilitator.d.ts.map +0 -1
  357. package/dist/x402/verified-delivery-facilitator.js +0 -423
  358. package/dist/x402/verified-delivery-facilitator.js.map +0 -1
  359. package/src/gateway/x402-mode.ts +0 -350
  360. package/src/x402/delivery-oracle.ts +0 -285
  361. package/src/x402/facilitator-server-entry.ts +0 -35
  362. package/src/x402/facilitator-server.ts +0 -445
  363. package/src/x402/payment-requirements.ts +0 -231
  364. package/src/x402/relayer.ts +0 -122
  365. package/src/x402/resource-index.ts +0 -228
  366. package/src/x402/verified-delivery-facilitator.ts +0 -744
@@ -0,0 +1,397 @@
1
+ import { verifyMandateOwnerSignature } from "../../mandates/mandate.js";
2
+ import { booleanFlag, integerFlag, stringFlag } from "../args.js";
3
+ import { formatUsdc } from "../amounts.js";
4
+ import { assertTestnetRpc, parseBytes32 } from "../config.js";
5
+ import { CliError, configError, usageError } from "../errors.js";
6
+ import { signRecoveryMandate } from "../mandate.js";
7
+ import { CDP_ENV_VARS, PRIVATE_KEY_ENV, isPrivyWalletSource, resolveCliWallet, } from "../wallet.js";
8
+ /** Environment fallback for `--refund-url`. */
9
+ export const REFUND_URL_ENV = "METRIK_AGENT_REFUND_URL";
10
+ const DEFAULT_ATTEMPTS = 5;
11
+ const DEFAULT_MAX_WAIT_SECONDS = 60;
12
+ export const refundCommand = {
13
+ name: "refund",
14
+ summary: "Recover the unearned part of an x402 payment through the gasless refund relay",
15
+ usage: "metrik refund <streamId> --refund-url <url> [--close] [--reclaim] [--attempts 5] [--max-wait 60]",
16
+ flags: ["refund-url", "close", "reclaim", "attempts", "max-wait"],
17
+ // `--close` signs the payer's EIP-712 Close (off-chain); the RELAY broadcasts
18
+ // and pays the gas. `--reclaim` needs no wallet at all: `opener.reclaim` is
19
+ // permissionless and always pays `payerOf(streamId)`.
20
+ signs: false,
21
+ requiresKey: false,
22
+ walletHelp: {
23
+ tag: "[--close needs the payer's key]",
24
+ text: "Broadcasts nothing itself: the seller's refund relay broadcasts and pays the gas. Status and --reclaim need no wallet. " +
25
+ "--close signs the payer's off-chain EIP-712 Close message, so it needs the key that paid (no ETH or USDC needed) in the environment: " +
26
+ `${PRIVATE_KEY_ENV} or ${CDP_ENV_VARS.join(" + ")}. A Privy wallet cannot sign the Close.`,
27
+ },
28
+ async run(context) {
29
+ const { args, config, env, out, deps } = context;
30
+ if (deps.x402 === undefined) {
31
+ throw new CliError("this CLI build has no x402 dependency wired (CliDependencies.x402)", { exitCode: 4 });
32
+ }
33
+ const x402 = deps.x402;
34
+ const [streamIdArg] = args.positionals;
35
+ if (streamIdArg === undefined) {
36
+ throw usageError("metrik refund requires a <streamId>");
37
+ }
38
+ const streamId = parseBytes32(streamIdArg, "<streamId>");
39
+ if (/^0x0{64}$/i.test(streamId)) {
40
+ // Stream id 0 = an upfront-only payment (`metrik pay` printed no stream):
41
+ // nothing was escrowed. A FINISHED state, not a failure — and nothing is
42
+ // read, requested, signed or sent for it.
43
+ reportNothingToRefund(context, streamId);
44
+ return;
45
+ }
46
+ const refundUrl = resolveRefundUrl(stringFlag(args, "refund-url") ?? env[REFUND_URL_ENV], streamId);
47
+ const doClose = booleanFlag(args, "close");
48
+ const doReclaim = booleanFlag(args, "reclaim");
49
+ const attempts = integerFlag(args, "attempts") ?? DEFAULT_ATTEMPTS;
50
+ const maxWait = integerFlag(args, "max-wait") ?? DEFAULT_MAX_WAIT_SECONDS;
51
+ if (attempts < 1)
52
+ throw usageError("--attempts must be at least 1");
53
+ const read = deps.createReadClient(config);
54
+ await assertTestnetRpc(config, () => read.getChainId());
55
+ // Bind the relay to the stream AS THE CHAIN SEES IT: the opener comes from
56
+ // `factory.isOpener(buyer)` on-chain, never from the relay's answer.
57
+ const stream = await read.getStreamV2(streamId);
58
+ const opener = stream.opener ?? null;
59
+ if (opener === null) {
60
+ throw configError(`stream ${streamId} was not opened by an x402 opener, so the refund relay does not serve it`, `the buyer is ${stream.buyer}, an ordinary wallet: use \`metrik close ${streamId}\` and \`metrik reclaim ${streamId}\` with that wallet.`);
61
+ }
62
+ const refunds = await x402.refundClient(config, {
63
+ refundUrl,
64
+ streamId,
65
+ opener,
66
+ maxAttempts: attempts,
67
+ maxDelayMs: maxWait * 1_000,
68
+ });
69
+ let closeResult = null;
70
+ let closeSkipped = null;
71
+ // Set when the relay itself says there is nothing left: the stream was
72
+ // already reclaimed, or the verified delivery covers the whole deposit.
73
+ // Those are FINISHED recoveries, not failures — a second
74
+ // `--close --reclaim` on a done stream must exit 0 and must never point
75
+ // the payer at a gas-spending on-chain recovery that cannot recover a cent.
76
+ let finishedByRelay = null;
77
+ if (doClose) {
78
+ // Ask first: a stream that is already closed (or already finished) needs
79
+ // no Close, so there is nothing to sign and no wallet is needed.
80
+ const before = await relay(() => refunds.status());
81
+ const finishedBefore = finishedReason(before);
82
+ if (finishedBefore !== null || before.status === "closed") {
83
+ closeSkipped = finishedBefore ?? "already-closed";
84
+ finishedByRelay = finishedBefore;
85
+ out.note(finishedBefore === null
86
+ ? "stream is already closed — no Close to sign."
87
+ : `stream is already closed and ${finishedBefore === "reclaimed" ? "reclaimed" : "has nothing left to reclaim"} — no Close to sign.`);
88
+ }
89
+ else {
90
+ const wallet = await resolveCliWallet(env, {
91
+ purpose: "payer-close",
92
+ note: out.note,
93
+ rpcUrl: config.rpcUrl,
94
+ });
95
+ if (isPrivyWalletSource(wallet.source)) {
96
+ throw configError("metrik refund --close cannot sign with a Privy wallet", "the payer signs the opener's EIP-712 Close, which the Privy broker's typed-data policy does not allow. Use the key that paid.");
97
+ }
98
+ // Buyer recovery: authorized on the mandate OWNER's signature alone,
99
+ // like `metrik close` — never on caps or expiry, so nothing can strand
100
+ // the payer's own money. The SDK then refuses a signer that is not
101
+ // `payerOf(streamId)` before anything is signed for the relay.
102
+ const mandate = await signRecoveryMandate(wallet.account, config.chainId);
103
+ const decision = await verifyMandateOwnerSignature(mandate);
104
+ if (!decision.allowed) {
105
+ throw new CliError(`mandate denied: ${decision.reason}`, {
106
+ exitCode: 3,
107
+ });
108
+ }
109
+ try {
110
+ closeResult = await relay(() => refunds.close({
111
+ signer: wallet.account,
112
+ }));
113
+ out.note(`close relayed in ${closeResult.transaction}${closeResult.verified ? " (receipt verified on-chain)" : ""}`);
114
+ }
115
+ catch (error) {
116
+ // The status read above said "active", but the stream closed in the
117
+ // meantime (it reached expiresAt, or another close landed): the
118
+ // state the payer asked for. Anything else is a real failure.
119
+ if (relayCode(error) !== "already-closed")
120
+ throw error;
121
+ closeSkipped = "already-closed";
122
+ out.note("stream was already closed — no Close was needed.");
123
+ }
124
+ }
125
+ }
126
+ let reclaimResult = null;
127
+ let reclaimSkipped = null;
128
+ if (doReclaim) {
129
+ if (finishedByRelay !== null) {
130
+ reclaimSkipped = finishedByRelay;
131
+ }
132
+ else {
133
+ context.progress?.setActivity(`waiting on the refund relay's reclaim (it retries up to ${attempts} time${attempts === 1 ? "" : "s"} while the settlement window is open, at most ${maxWait}s per wait)`);
134
+ try {
135
+ reclaimResult = await relay(() => refunds.reclaim());
136
+ }
137
+ catch (error) {
138
+ const finished = finishedFromRelayCode(relayCode(error));
139
+ if (finished === null)
140
+ throw error;
141
+ reclaimSkipped = finished;
142
+ finishedByRelay = finished;
143
+ }
144
+ finally {
145
+ context.progress?.setActivity(null);
146
+ }
147
+ }
148
+ }
149
+ const status = await relay(() => refunds.status());
150
+ // A reclaim THIS run performed is reported as a reclaim, not as "already
151
+ // finished".
152
+ const finished = reclaimResult === null
153
+ ? (finishedReason(status) ?? finishedByRelay)
154
+ : null;
155
+ out.result({
156
+ streamId,
157
+ opener,
158
+ payer: status.payer,
159
+ status: status.status,
160
+ reclaimed: status.reclaimed,
161
+ reclaimable: status.reclaimable,
162
+ next: status.next,
163
+ close: closeResult === null
164
+ ? null
165
+ : {
166
+ transaction: closeResult.transaction,
167
+ verified: closeResult.verified,
168
+ },
169
+ reclaim: reclaimResult === null
170
+ ? null
171
+ : {
172
+ transaction: reclaimResult.transaction,
173
+ amount: reclaimResult.amount,
174
+ verified: reclaimResult.verified,
175
+ },
176
+ // Why a requested `--close` / `--reclaim` sent nothing (null when it was
177
+ // sent, or not requested).
178
+ closeSkipped,
179
+ reclaimSkipped,
180
+ // True when the recovery is over: nothing is left for the payer to get
181
+ // back (already reclaimed, or the verified delivery covers the deposit).
182
+ finished: finished !== null,
183
+ finishedReason: finished,
184
+ nothingToRecover: finished !== null,
185
+ refundIsAutomatic: false,
186
+ });
187
+ out.print(`x402 stream ${streamId}`);
188
+ out.table(statusRows(status, closeResult, reclaimResult, closeSkipped, finished));
189
+ out.print("");
190
+ out.print(finished === null
191
+ ? nextStep(status, streamId, refundUrl)
192
+ : describeFinished(finished));
193
+ },
194
+ };
195
+ /**
196
+ * Whether the relay's status says nothing is left to recover. `reclaimed` is
197
+ * the chain's one-reclaim-per-stream flag; `next: none` with `reclaimable: 0`
198
+ * is the relay's "the verified delivery covers the whole deposit".
199
+ */
200
+ export function finishedReason(status) {
201
+ if (status.reclaimed)
202
+ return "reclaimed";
203
+ if (status.next.action === "none" && status.reclaimable === 0n) {
204
+ return "nothing-to-reclaim";
205
+ }
206
+ return null;
207
+ }
208
+ /** The relay's 409 codes that mean "finished", not "failed". */
209
+ function finishedFromRelayCode(code) {
210
+ if (code === "already-reclaimed")
211
+ return "reclaimed";
212
+ if (code === "nothing-to-reclaim")
213
+ return "nothing-to-reclaim";
214
+ return null;
215
+ }
216
+ function relayCode(error) {
217
+ for (let current = error, depth = 0; depth < 4; depth++) {
218
+ if (!(current instanceof Error))
219
+ return null;
220
+ const code = current.code;
221
+ if (current.name === "RefundRelayError" && typeof code === "string") {
222
+ return code;
223
+ }
224
+ current = current.cause;
225
+ }
226
+ return null;
227
+ }
228
+ /** The `metrik refund` answer for an upfront-only payment (exit 0). */
229
+ function reportNothingToRefund(context, streamId) {
230
+ context.out.result({
231
+ streamId,
232
+ opener: null,
233
+ payer: null,
234
+ status: null,
235
+ reclaimed: false,
236
+ reclaimable: null,
237
+ next: { action: "none" },
238
+ close: null,
239
+ reclaim: null,
240
+ closeSkipped: null,
241
+ reclaimSkipped: null,
242
+ finished: true,
243
+ finishedReason: "upfront-only",
244
+ nothingToRecover: true,
245
+ nothingToRefund: true,
246
+ refundIsAutomatic: false,
247
+ });
248
+ context.out.print("Nothing to refund: this was an upfront-only payment. The whole price was a non-refundable per-call charge paid to the seller at settlement, no escrow stream was opened, and the payment is final. Nothing was requested, signed or sent.");
249
+ }
250
+ export function describeFinished(reason) {
251
+ return reason === "reclaimed"
252
+ ? "Already finished: the stream is closed and was already reclaimed — the unearned remainder went to the payer. Nothing left to recover."
253
+ : "Already finished: nothing to recover — the verified delivery covers the whole deposit, so none of it is unearned.";
254
+ }
255
+ /**
256
+ * Accepts the relay's full stream URL, a `{streamId}` template, or the relay's
257
+ * base origin (`https://relay.example` -> `https://relay.example/streams/<id>`).
258
+ */
259
+ export function resolveRefundUrl(raw, streamId) {
260
+ if (raw === undefined || raw.trim().length === 0) {
261
+ throw usageError(`metrik refund needs the seller's refund relay: pass --refund-url (printed by \`metrik pay\`) or set ${REFUND_URL_ENV}`);
262
+ }
263
+ const value = raw.trim();
264
+ if (value.includes("{streamId}"))
265
+ return value;
266
+ let url;
267
+ try {
268
+ url = new URL(value);
269
+ }
270
+ catch {
271
+ throw usageError(`--refund-url must be an absolute http(s) URL (got "${value}")`);
272
+ }
273
+ if (/\/streams\/0x[0-9a-fA-F]{64}\/?$/.test(url.pathname))
274
+ return value;
275
+ url.pathname = `${url.pathname.replace(/\/+$/, "")}/streams/${streamId}`;
276
+ return url.toString();
277
+ }
278
+ async function relay(task) {
279
+ try {
280
+ return await task();
281
+ }
282
+ catch (error) {
283
+ throw explainRefundFailure(error);
284
+ }
285
+ }
286
+ export function explainRefundFailure(error) {
287
+ if (!(error instanceof Error))
288
+ return error;
289
+ switch (error.name) {
290
+ case "NothingToRefundError":
291
+ return new CliError(error.message, {
292
+ exitCode: 3,
293
+ hint: "this is an upfront-only payment (stream id 0): nothing was escrowed and there is nothing to refund. Run `metrik refund 0x0000…0000` to confirm; it exits 0.",
294
+ cause: error,
295
+ });
296
+ case "RefundNotReadyError": {
297
+ const retryAt = error.retryAt;
298
+ return new CliError(error.message, {
299
+ exitCode: 3,
300
+ hint: retryAt === undefined || retryAt === null
301
+ ? "the relay is not ready to reclaim yet (the settlement window is open). Re-run later with --reclaim."
302
+ : `the relay can reclaim from ${new Date(retryAt * 1000).toISOString()}. Re-run then with --reclaim (or raise --max-wait to wait here).`,
303
+ cause: error,
304
+ });
305
+ }
306
+ case "RefundRelayError": {
307
+ const code = error.code;
308
+ return new CliError(error.message, {
309
+ exitCode: 3,
310
+ hint: relayRefusalHint(code),
311
+ cause: error,
312
+ });
313
+ }
314
+ case "NotStreamPayerError":
315
+ return new CliError(error.message, {
316
+ exitCode: 3,
317
+ hint: "only the address that paid (payerOf(streamId)) can sign the close. Nothing was signed.",
318
+ cause: error,
319
+ });
320
+ default:
321
+ return error;
322
+ }
323
+ }
324
+ /**
325
+ * What to do after a relay refusal. The on-chain fallback is only offered
326
+ * where it can still recover something: never "close it (needs gas)" for a
327
+ * stream that is already closed, and never any recovery at all for one with
328
+ * nothing left in it.
329
+ */
330
+ export function relayRefusalHint(code) {
331
+ const label = `relay refusal${code === undefined ? "" : ` (${code})`}`;
332
+ switch (code) {
333
+ case "already-reclaimed":
334
+ case "nothing-to-reclaim":
335
+ return `${label}. Nothing is left to recover for this stream, on-chain or through the relay.`;
336
+ case "already-closed":
337
+ return `${label}. The stream is already closed, so no close is needed: reclaim the unearned remainder with --reclaim (no wallet, no gas), or \`metrik reclaim\` (anyone).`;
338
+ case "not-closable":
339
+ return `${label}. The relay's next step is not a close (the stream may have reached expiresAt by itself): run without --close to see the next step.`;
340
+ default:
341
+ return `${label}. The payer can always recover on-chain without the relay: \`metrik close\` (as the payer, needs gas) and \`metrik reclaim\` (anyone).`;
342
+ }
343
+ }
344
+ function statusRows(status, closeResult, reclaimResult, closeSkipped, finished) {
345
+ const rows = [
346
+ [
347
+ "status",
348
+ status.reclaimed ? `${status.status} (reclaimed)` : status.status,
349
+ ],
350
+ ...(finished === null
351
+ ? []
352
+ : [["recovery", "finished — nothing to recover"]]),
353
+ ["payer", status.payer],
354
+ ["opener", status.opener],
355
+ [
356
+ "reclaimable",
357
+ status.reclaimable === null ? "-" : formatUsdc(status.reclaimable),
358
+ ],
359
+ ["next", status.next.action],
360
+ ];
361
+ if (closeResult === null && closeSkipped !== null) {
362
+ rows.push(["close", "skipped — already closed"]);
363
+ }
364
+ if (closeResult !== null) {
365
+ rows.push([
366
+ "close tx",
367
+ `${closeResult.transaction}${closeResult.verified ? " (verified)" : " (relay-reported)"}`,
368
+ ]);
369
+ }
370
+ if (reclaimResult !== null) {
371
+ rows.push([
372
+ "reclaim tx",
373
+ `${reclaimResult.transaction}${reclaimResult.verified ? " (verified)" : " (relay-reported)"}`,
374
+ ]);
375
+ if (reclaimResult.amount !== null) {
376
+ rows.push(["refunded to payer", formatUsdc(reclaimResult.amount)]);
377
+ }
378
+ }
379
+ return rows;
380
+ }
381
+ function nextStep(status, streamId, refundUrl) {
382
+ if (status.reclaimed) {
383
+ return "Reclaimed: the unearned remainder was returned to the payer.";
384
+ }
385
+ const base = `metrik refund ${streamId} --refund-url ${refundUrl}`;
386
+ switch (status.next.action) {
387
+ case "close":
388
+ return `Refunds are NOT automatic. The stream is still running: stop it with ${base} --close --reclaim`;
389
+ case "reclaim":
390
+ return `Refunds are NOT automatic. Reclaim the unearned remainder with ${base} --reclaim`;
391
+ case "wait":
392
+ return `Refunds are NOT automatic, and the settlement window is still open${status.next.retryAt === undefined ? "" : ` until ${new Date(status.next.retryAt * 1000).toISOString()}`}. Then run ${base} --reclaim`;
393
+ default:
394
+ return `Refunds are NOT automatic. The relay says: ${status.next.message ?? status.next.action}.`;
395
+ }
396
+ }
397
+ //# sourceMappingURL=refund.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refund.js","sourceRoot":"","sources":["../../../src/cli/commands/refund.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjE,eAAO,MAAM,aAAa,EAAE,WA6C3B,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjE,eAAO,MAAM,aAAa,EAAE,WAsE3B,CAAC"}
@@ -2,6 +2,7 @@ import { attesterDisclosure } from "../attesters.js";
2
2
  import { assertTestnetRpc, parseBytes32 } from "../config.js";
3
3
  import { usageError } from "../errors.js";
4
4
  import { readStreamReport, streamReportJson, streamReportRows, } from "../status.js";
5
+ import { escrowGenerationFor } from "../../escrow-generation.js";
5
6
  export const statusCommand = {
6
7
  name: "status",
7
8
  summary: "Show a stream's on-chain state and its oracle-verified accrual",
@@ -21,7 +22,7 @@ export const statusCommand = {
21
22
  // diverge from index 5 onward, so a wrong-chain read does not revert — it
22
23
  // silently decodes something else into fields with the right names.
23
24
  await assertTestnetRpc(config, () => read.getChainId());
24
- const report = await readStreamReport(read, streamId, deps.nowSeconds());
25
+ const report = await readStreamReport(read, streamId, deps.nowSeconds(), escrowGenerationFor(config.chainId, config.escrow));
25
26
  out.result(streamReportJson(report));
26
27
  // Who attests, before the numbers. Printed on stderr so it survives `--json`
27
28
  // and cannot be lost by a consumer that only parses stdout.
@@ -30,11 +31,29 @@ export const statusCommand = {
30
31
  out.note(disclosure);
31
32
  out.print(`Stream ${streamId}`);
32
33
  out.table(streamReportRows(report));
34
+ // A finished stream — reclaimed, or stopped with the whole deposit already
35
+ // the operator's — has nothing pending on the buyer's side: the close /
36
+ // reclaim / refund guidance and the "no checkpoint yet" note below would all
37
+ // read as money still pending.
38
+ if (report.finalSettlement !== null)
39
+ return;
40
+ const opener = report.stream.opener ?? null;
41
+ if (opener !== null) {
42
+ out.print("");
43
+ out.print(`Bought over x402: the escrow accepts close/reclaim only from the opener ${opener}. ` +
44
+ `\`metrik close ${streamId}\` (signed by the payer ${report.stream.payer}) routes through it; ` +
45
+ `\`metrik reclaim ${streamId}\` sends the permissionless opener.reclaim, and the refund always goes to the payer. ` +
46
+ "A payer with no gas can use the seller's relay instead: `metrik refund <streamId> --refund-url <url> --close --reclaim`. Nothing refunds automatically.");
47
+ }
33
48
  if (report.settlement.pending) {
34
49
  out.print("");
35
50
  out.print("This stream has stopped but its final checkpoint has not landed, so there is no settled reclaimable figure yet — reclaim reverts until the oracle publishes a checkpoint reaching the stop time. `metrik reclaim <streamId>` waits for exactly that.");
36
51
  }
37
- if (report.proof === null) {
52
+ // A V3 stream the latest checkpoint no longer lists may still have value
53
+ // proven on-chain; the verified-accrual row states it, so "no checkpoint
54
+ // covers this stream yet" would contradict the row above it.
55
+ const provenOnChain = report.provenCumulative !== null && report.provenCumulative > 0n;
56
+ if (report.proof === null && !provenOnChain) {
38
57
  out.print("");
39
58
  out.print("No checkpoint covers this stream yet. Accrual is published by the oracle roughly every 15-22s; funds are earned only for intervals that verified.");
40
59
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAGtB,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,gEAAgE;IACzE,KAAK,EAAE,0BAA0B;IACjC,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,KAAK;IACZ,KAAK,CAAC,GAAG,CAAC,OAAuB;QAC/B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,UAAU,CAAC,qCAAqC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,6EAA6E;QAC7E,uEAAuE;QACvE,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAEzE,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,6EAA6E;QAC7E,4DAA4D;QAC5D,MAAM,UAAU,GAAG,kBAAkB,CACnC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,CAAC,QAAQ,CACvB,CAAC;QACF,IAAI,UAAU,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CACP,sPAAsP,CACvP,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CACP,mJAAmJ,CACpJ,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,7 @@
1
- import { BASE_SEPOLIA_ESCROW_V2 } from "@absol-labs/sdk";
2
1
  import { getAddress, isAddress } from "viem";
3
2
  import { integerFlag, stringFlag } from "../args.js";
4
3
  import { formatUsdc } from "../amounts.js";
5
- import { BASE_SEPOLIA_ESCROW_V2_DEPLOY_BLOCK, assertTestnetRpc, } from "../config.js";
4
+ import { assertTestnetRpc, escrowDeployBlock, } from "../config.js";
6
5
  import { CliError, configError, usageError } from "../errors.js";
7
6
  import { escrowScanRange } from "../scan-range.js";
8
7
  import { optionalCliWallet, PRIVATE_KEY_ENV } from "../wallet.js";
@@ -18,7 +17,7 @@ const SCAN_CONCURRENCY = 6;
18
17
  /**
19
18
  * Attempts per window before it is reported as unscanned. A public RPC answers
20
19
  * a burst of `eth_getLogs` with an occasional 429 — measured against
21
- * `sepolia.base.org`, 2 of 212 windows on a full-history scan — and a transient
20
+ * the network's public RPC, 2 of 212 windows on a full-history scan — and a transient
22
21
  * rate-limit is NOT a window that cannot be scanned. Declaring it one would
23
22
  * make the "this scan is incomplete" warning routine, and a warning that fires
24
23
  * on every healthy run is a warning nobody reads on the run that matters.
@@ -49,7 +48,7 @@ export const streamsCommand = {
49
48
  // index 5 onward — a wrong-chain read does not revert, it decodes something
50
49
  // else into fields with the right names.
51
50
  await assertTestnetRpc(config, () => read.getChainId());
52
- const anchor = resolveAnchorBlock(args, config.escrow);
51
+ const anchor = resolveAnchorBlock(args, config);
53
52
  const head = await read.blockNumber();
54
53
  const range = escrowScanRange(head, anchor.block);
55
54
  // Retention canary, before the scan is believed. A node that has pruned its
@@ -184,19 +183,16 @@ async function resolveScanAddress(context) {
184
183
  * constant for — so an overridden `--escrow` or `--from-block` scans without a
185
184
  * canary rather than with a meaningless one.
186
185
  */
187
- function resolveAnchorBlock(args, escrow) {
186
+ function resolveAnchorBlock(args, config) {
188
187
  const override = integerFlag(args, "from-block");
189
- const isKnownEscrow = escrow.toLowerCase() === BASE_SEPOLIA_ESCROW_V2.toLowerCase();
188
+ const deployBlock = escrowDeployBlock(config);
190
189
  if (override !== undefined) {
191
190
  return { block: BigInt(override), canary: null };
192
191
  }
193
- if (!isKnownEscrow) {
194
- throw configError(`no scan anchor is known for escrow ${escrow}`, "the scan is anchored at the escrow's deploy block, and this CLI only ships that block for its default Base Sepolia escrow. Pass --from-block <deploy block> for a different escrow.");
192
+ if (deployBlock === undefined) {
193
+ throw configError(`no scan anchor is known for escrow ${config.escrow}`, `the scan is anchored at the escrow's deploy block, and the network registry only records it for ${config.network.name}'s registered escrow (${config.network.escrow.address}). Pass --from-block <deploy block> for a different escrow.`);
195
194
  }
196
- return {
197
- block: BASE_SEPOLIA_ESCROW_V2_DEPLOY_BLOCK,
198
- canary: BASE_SEPOLIA_ESCROW_V2_DEPLOY_BLOCK,
199
- };
195
+ return { block: deployBlock, canary: deployBlock };
200
196
  }
201
197
  /**
202
198
  * Page every window for every selected role filter, bounded concurrency.
@@ -1 +1 @@
1
- {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../src/cli/commands/streams.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../src/cli/commands/streams.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjE,eAAO,MAAM,YAAY,EAAE,WAyD1B,CAAC"}
1
+ {"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjE,eAAO,MAAM,YAAY,EAAE,WAkE1B,CAAC"}
@@ -2,6 +2,7 @@ import { integerFlag } from "../args.js";
2
2
  import { assertTestnetRpc, parseBytes32 } from "../config.js";
3
3
  import { describeError, usageError } from "../errors.js";
4
4
  import { readStreamReport, streamReportJson, streamReportRows, } from "../status.js";
5
+ import { escrowGenerationFor } from "../../escrow-generation.js";
5
6
  const DEFAULT_INTERVAL_SECONDS = 15;
6
7
  export const watchCommand = {
7
8
  name: "watch",
@@ -25,12 +26,14 @@ export const watchCommand = {
25
26
  // Same chain allowlist as the signing paths — see `status`.
26
27
  await assertTestnetRpc(config, () => read.getChainId());
27
28
  out.note(`watching ${streamId} every ${interval}s — the oracle checkpoints roughly every 15-22s.`);
29
+ // `watch` IS a poll: the heartbeat says so rather than blaming a slow RPC.
30
+ context.progress?.setActivity(`polling ${streamId} every ${interval}s until it closes${maxPolls === undefined ? "" : ` (at most ${maxPolls} polls)`}`);
28
31
  for (let poll = 0; maxPolls === undefined || poll < maxPolls; poll++) {
29
32
  if (poll > 0)
30
33
  await deps.sleep(interval * 1_000);
31
34
  let report;
32
35
  try {
33
- report = await readStreamReport(read, streamId, deps.nowSeconds());
36
+ report = await readStreamReport(read, streamId, deps.nowSeconds(), escrowGenerationFor(config.chainId, config.escrow));
34
37
  }
35
38
  catch (error) {
36
39
  // A transient RPC blip must not end a long watch.
@@ -1 +1 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}