@absol-labs/agent 0.11.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 +42 -50
- package/dist/capability/invocation-capability.d.ts +2 -2
- 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.js +1 -1
- 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 +35 -3
- 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 +2 -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 +58 -4
- 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 +3 -2
- 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 +184 -16
- 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 +8 -12
- 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 +33 -0
- package/dist/cli/deps.d.ts.map +1 -1
- package/dist/cli/deps.js +37 -1
- 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.map +1 -1
- package/dist/cli/privy.js +4 -2
- package/dist/cli/privy.js.map +1 -1
- 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/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 +1 -1
- package/dist/cli/wallet.js +2 -2
- 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 +83 -31
- package/dist/gateway/caller-auth-gateway.d.ts.map +1 -1
- package/dist/gateway/caller-auth-gateway.js +180 -27
- package/dist/gateway/caller-auth-gateway.js.map +1 -1
- package/dist/gateway/http-server.d.ts +111 -44
- package/dist/gateway/http-server.d.ts.map +1 -1
- package/dist/gateway/http-server.js +439 -155
- 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 +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -5
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +52 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +228 -37
- package/dist/mcp/server.js.map +1 -1
- 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 +4 -0
- package/dist/sdk/invoke.d.ts.map +1 -1
- package/dist/sdk/invoke.js +2 -5
- 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 +3 -30
- package/dist/x402/facilitator.d.ts.map +1 -1
- package/dist/x402/facilitator.js +0 -27
- 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/dist/zktls/t2-delivery-proof.d.ts +6 -6
- package/docs/agent-layer.md +3 -2
- package/docs/autonomous-privy-wallet.md +188 -0
- package/docs/cli.md +184 -31
- package/docs/langchain.md +5 -0
- package/docs/mcp-reference.md +75 -5
- package/docs/probe-capability.md +191 -0
- package/docs/quickstart.md +36 -1
- package/docs/threat-model.md +20 -0
- package/docs/x402.md +628 -595
- package/package.json +19 -17
- package/src/capability/probe-capability.ts +355 -0
- package/src/cli/args.ts +29 -0
- package/src/cli/commands/claim.ts +1 -1
- package/src/cli/commands/close.ts +36 -3
- package/src/cli/commands/invoke.ts +5 -2
- package/src/cli/commands/mcp.ts +18 -2
- package/src/cli/commands/open.ts +75 -4
- package/src/cli/commands/pay.ts +442 -0
- package/src/cli/commands/reclaim-unverified.ts +8 -2
- package/src/cli/commands/reclaim.ts +252 -14
- package/src/cli/commands/refund.ts +277 -0
- package/src/cli/commands/status.ts +17 -1
- package/src/cli/commands/streams.ts +10 -14
- package/src/cli/commands/watch.ts +7 -1
- package/src/cli/config.ts +139 -52
- package/src/cli/deps.ts +74 -1
- 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 +4 -2
- 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/status.ts +14 -1
- package/src/cli/wallet.ts +2 -2
- 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 +320 -68
- package/src/gateway/http-server.ts +629 -220
- 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 +82 -19
- package/src/mcp/server.ts +319 -42
- package/src/mcp/x402-tools.ts +621 -0
- package/src/network.ts +302 -0
- package/src/sdk/invoke.ts +6 -5
- 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 +3 -43
- 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/gateway/x402-mode.d.ts +0 -123
- package/dist/gateway/x402-mode.d.ts.map +0 -1
- package/dist/gateway/x402-mode.js +0 -212
- package/dist/gateway/x402-mode.js.map +0 -1
- package/dist/x402/delivery-oracle.d.ts +0 -108
- package/dist/x402/delivery-oracle.d.ts.map +0 -1
- package/dist/x402/delivery-oracle.js +0 -174
- package/dist/x402/delivery-oracle.js.map +0 -1
- package/dist/x402/facilitator-server-entry.d.ts +0 -3
- package/dist/x402/facilitator-server-entry.d.ts.map +0 -1
- package/dist/x402/facilitator-server-entry.js +0 -27
- package/dist/x402/facilitator-server-entry.js.map +0 -1
- package/dist/x402/facilitator-server.d.ts +0 -73
- package/dist/x402/facilitator-server.d.ts.map +0 -1
- package/dist/x402/facilitator-server.js +0 -305
- package/dist/x402/facilitator-server.js.map +0 -1
- package/dist/x402/payment-requirements.d.ts +0 -106
- package/dist/x402/payment-requirements.d.ts.map +0 -1
- package/dist/x402/payment-requirements.js +0 -138
- package/dist/x402/payment-requirements.js.map +0 -1
- package/dist/x402/relayer.d.ts +0 -41
- package/dist/x402/relayer.d.ts.map +0 -1
- package/dist/x402/relayer.js +0 -64
- package/dist/x402/relayer.js.map +0 -1
- package/dist/x402/resource-index.d.ts +0 -75
- package/dist/x402/resource-index.d.ts.map +0 -1
- package/dist/x402/resource-index.js +0 -126
- package/dist/x402/resource-index.js.map +0 -1
- package/dist/x402/verified-delivery-facilitator.d.ts +0 -285
- package/dist/x402/verified-delivery-facilitator.d.ts.map +0 -1
- package/dist/x402/verified-delivery-facilitator.js +0 -423
- package/dist/x402/verified-delivery-facilitator.js.map +0 -1
- package/src/gateway/x402-mode.ts +0 -350
- package/src/x402/delivery-oracle.ts +0 -285
- package/src/x402/facilitator-server-entry.ts +0 -35
- package/src/x402/facilitator-server.ts +0 -445
- package/src/x402/payment-requirements.ts +0 -231
- package/src/x402/relayer.ts +0 -122
- package/src/x402/resource-index.ts +0 -228
- package/src/x402/verified-delivery-facilitator.ts +0 -744
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import { DEFAULT_SERVER_MANDATE_TTL_SECONDS, parseServerMandateCapsEnv, signServerMandate, } from "../../mandates/env.js";
|
|
2
|
+
import { booleanFlag, integerFlag, jsonBodyFlag, stringFlag, stringFlags, } from "../args.js";
|
|
3
|
+
import { formatDuration, formatUsdc, parseAmountUnits, parseDurationSeconds, parseUsdcAmount, } from "../amounts.js";
|
|
4
|
+
import { assertTestnetRpc } from "../config.js";
|
|
5
|
+
import { rpcTransport } from "../deps.js";
|
|
6
|
+
import { CliError, configError, usageError } from "../errors.js";
|
|
7
|
+
import { usdcFundingHint } from "../../network.js";
|
|
8
|
+
import { isPrivyWalletSource, resolveCliWallet } from "../wallet.js";
|
|
9
|
+
import { hasHeader, parseHeaders } from "./invoke.js";
|
|
10
|
+
/** Default stream window a request-sized mandate allows (one day). */
|
|
11
|
+
const DEFAULT_MAX_DURATION_SECONDS = 86_400;
|
|
12
|
+
/** Longest response body printed in human mode before it is truncated. */
|
|
13
|
+
const MAX_PRINTED_BODY_CHARS = 64 * 1024;
|
|
14
|
+
export const payCommand = {
|
|
15
|
+
name: "pay",
|
|
16
|
+
summary: "Pay an x402 endpoint into a recoverable escrow stream, under a spend mandate",
|
|
17
|
+
usage: 'metrik pay <url> [--json \'{"text":"hi"}\' | --data <body>] [--method POST] [--header "K: V"] --max-amount <usdc> [--max-rate <usdc/s>] [--max-duration <seconds>] [--min-duration <seconds>] [--operator <address>] [--units atomic]',
|
|
18
|
+
flags: [
|
|
19
|
+
"data",
|
|
20
|
+
"json-body",
|
|
21
|
+
"method",
|
|
22
|
+
"header",
|
|
23
|
+
"max-amount",
|
|
24
|
+
"max-rate",
|
|
25
|
+
"max-duration",
|
|
26
|
+
"min-duration",
|
|
27
|
+
"operator",
|
|
28
|
+
"units",
|
|
29
|
+
"allow-legacy-factory",
|
|
30
|
+
],
|
|
31
|
+
// It moves the payer's USDC (an EIP-3009 authorization the facilitator
|
|
32
|
+
// settles into the escrow). The PAYER broadcasts nothing and needs no gas,
|
|
33
|
+
// but it is a fund-moving command and is gated like one.
|
|
34
|
+
signs: true,
|
|
35
|
+
async run(context) {
|
|
36
|
+
const { args, config, env, out, deps } = context;
|
|
37
|
+
const x402 = requireX402(deps.x402);
|
|
38
|
+
const [urlArg] = args.positionals;
|
|
39
|
+
if (urlArg === undefined) {
|
|
40
|
+
throw usageError("metrik pay requires the <url> of an x402 endpoint");
|
|
41
|
+
}
|
|
42
|
+
const url = parseResourceUrl(urlArg);
|
|
43
|
+
const units = parseAmountUnits(stringFlag(args, "units"));
|
|
44
|
+
const maxAmountRaw = stringFlag(args, "max-amount");
|
|
45
|
+
const maxAmount = maxAmountRaw === undefined
|
|
46
|
+
? undefined
|
|
47
|
+
: parseUsdcAmount(maxAmountRaw, units, "max-amount");
|
|
48
|
+
const maxRateRaw = stringFlag(args, "max-rate");
|
|
49
|
+
const maxRate = maxRateRaw === undefined
|
|
50
|
+
? undefined
|
|
51
|
+
: parseUsdcAmount(maxRateRaw, units, "max-rate");
|
|
52
|
+
const maxDurationRaw = stringFlag(args, "max-duration");
|
|
53
|
+
const maxDuration = maxDurationRaw === undefined
|
|
54
|
+
? undefined
|
|
55
|
+
: parseDurationSeconds(maxDurationRaw);
|
|
56
|
+
const minDuration = integerFlag(args, "min-duration");
|
|
57
|
+
const operator = stringFlag(args, "operator");
|
|
58
|
+
if (operator !== undefined && !/^0x[0-9a-fA-F]{40}$/.test(operator)) {
|
|
59
|
+
throw usageError(`--operator must be an EVM address (got "${operator}")`);
|
|
60
|
+
}
|
|
61
|
+
if (maxAmount !== undefined && maxAmount <= 0n) {
|
|
62
|
+
throw usageError("--max-amount must be greater than zero");
|
|
63
|
+
}
|
|
64
|
+
if (maxRate !== undefined && maxRate <= 0n) {
|
|
65
|
+
throw usageError("--max-rate must be greater than zero");
|
|
66
|
+
}
|
|
67
|
+
const init = buildRequest(context);
|
|
68
|
+
// The mandate: an operator-set standing ceiling (METRIK_AGENT_MANDATE_*),
|
|
69
|
+
// or one sized to exactly this payment. Either way it is SIGNED and
|
|
70
|
+
// `checkMandate()` gates the quote before anything is signed for the
|
|
71
|
+
// seller. There is no unbounded path: without standing caps, --max-amount
|
|
72
|
+
// is required.
|
|
73
|
+
const envCaps = parseServerMandateCapsEnv(env);
|
|
74
|
+
if (envCaps === null && maxAmount === undefined) {
|
|
75
|
+
throw usageError("metrik pay needs a spend ceiling: pass --max-amount <usdc> (or configure a standing mandate with METRIK_AGENT_MANDATE_*)", "no spend without a mandate: the seller picks the price, so the buyer must cap it. Nothing was sent.");
|
|
76
|
+
}
|
|
77
|
+
const caps = intersectCaps(envCaps, {
|
|
78
|
+
maxAmount,
|
|
79
|
+
maxRate,
|
|
80
|
+
maxDuration,
|
|
81
|
+
operator: operator,
|
|
82
|
+
});
|
|
83
|
+
const wallet = await resolveCliWallet(env, {
|
|
84
|
+
note: out.note,
|
|
85
|
+
rpcUrl: config.rpcUrl,
|
|
86
|
+
});
|
|
87
|
+
if (isPrivyWalletSource(wallet.source)) {
|
|
88
|
+
throw configError("metrik pay cannot sign with a Privy wallet", "an x402 payment is an EIP-3009 TransferWithAuthorization signature, and the Privy broker's typed-data policy allows only an InvocationCapability. Pay with METRIK_AGENT_PRIVATE_KEY or a CDP wallet.");
|
|
89
|
+
}
|
|
90
|
+
const { account } = wallet;
|
|
91
|
+
const read = deps.createReadClient(config);
|
|
92
|
+
await assertTestnetRpc(config, () => read.getChainId());
|
|
93
|
+
// The payer needs USDC only — no gas: the facilitator's relayer submits
|
|
94
|
+
// the authorization. A zero balance is a knowable fact before signing.
|
|
95
|
+
const balance = await read.usdcBalance(account.address).catch(() => null);
|
|
96
|
+
if (balance === 0n) {
|
|
97
|
+
throw new CliError(`wallet ${account.address} holds 0 USDC on ${config.network.name}, so it cannot pay`, {
|
|
98
|
+
exitCode: 3,
|
|
99
|
+
hint: `${usdcFundingHint(config.network)}, then re-run. (An x402 payer needs USDC only; no gas.)`,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
const signedMandate = await signServerMandate(account, caps, {
|
|
103
|
+
chainId: config.chainId,
|
|
104
|
+
});
|
|
105
|
+
out.note(`paying ${url} (ceiling ${formatUsdc(maxAmount === undefined ? caps.maxPerStreamUsdc : maxAmount < caps.maxPerStreamUsdc ? maxAmount : caps.maxPerStreamUsdc)}, mandate from ${envCaps === null ? "this command" : "METRIK_AGENT_MANDATE_*"}) …`);
|
|
106
|
+
const result = await payOrExplain(x402, {
|
|
107
|
+
url,
|
|
108
|
+
init,
|
|
109
|
+
signer: account,
|
|
110
|
+
network: config.network,
|
|
111
|
+
signedMandate,
|
|
112
|
+
spentSoFarUsdc: 0n,
|
|
113
|
+
nowSeconds: deps.nowSeconds(),
|
|
114
|
+
...(maxAmount === undefined ? {} : { maxAmount }),
|
|
115
|
+
...(maxRate === undefined ? {} : { maxRatePerSecond: maxRate }),
|
|
116
|
+
...(minDuration === undefined ? {} : { minDurationSeconds: minDuration }),
|
|
117
|
+
sdkOptions: {
|
|
118
|
+
transport: rpcTransport(config),
|
|
119
|
+
// A LEGACY deployment's factory is refused by the SDK unless the
|
|
120
|
+
// buyer opts in: streams there can still be closed and reclaimed, but
|
|
121
|
+
// nothing new should open on a generation being retired by default.
|
|
122
|
+
...(booleanFlag(args, "allow-legacy-factory")
|
|
123
|
+
? { allowLegacyFactory: true }
|
|
124
|
+
: {}),
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
const bodyText = await result.response.text();
|
|
128
|
+
const opener = result.metrikStreamOpener;
|
|
129
|
+
const quote = result.quote;
|
|
130
|
+
out.result({
|
|
131
|
+
paid: result.paid,
|
|
132
|
+
httpStatus: result.response.status,
|
|
133
|
+
contentType: result.response.headers.get("content-type"),
|
|
134
|
+
body: bodyText,
|
|
135
|
+
streamId: opener?.streamId ?? null,
|
|
136
|
+
opener: opener?.opener ?? null,
|
|
137
|
+
refundUrl: opener?.refundUrl ?? null,
|
|
138
|
+
escrow: opener?.escrow ?? null,
|
|
139
|
+
deposit: opener?.deposit ?? null,
|
|
140
|
+
ratePerSecond: opener?.ratePerSecond ?? null,
|
|
141
|
+
expiresAt: opener?.expiresAt ?? null,
|
|
142
|
+
operator: quote?.operator ?? null,
|
|
143
|
+
serviceRef: quote?.serviceRef ?? null,
|
|
144
|
+
minEarnSeconds: quote?.minEarnSeconds ?? null,
|
|
145
|
+
mandateSource: envCaps === null ? "request" : "env",
|
|
146
|
+
refundIsAutomatic: false,
|
|
147
|
+
});
|
|
148
|
+
if (!result.paid) {
|
|
149
|
+
out.print(`The endpoint answered ${result.response.status} without asking for payment; nothing was signed or paid.`);
|
|
150
|
+
out.print(truncate(bodyText));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
out.print(`Paid. HTTP ${result.response.status}`);
|
|
154
|
+
out.print(truncate(bodyText));
|
|
155
|
+
out.print("");
|
|
156
|
+
if (opener !== null) {
|
|
157
|
+
out.table([
|
|
158
|
+
["streamId", opener.streamId],
|
|
159
|
+
["opener", opener.opener],
|
|
160
|
+
["payer", account.address],
|
|
161
|
+
...(opener.deposit === null
|
|
162
|
+
? []
|
|
163
|
+
: [["deposit", formatUsdc(opener.deposit)]]),
|
|
164
|
+
...(opener.ratePerSecond === null
|
|
165
|
+
? []
|
|
166
|
+
: [
|
|
167
|
+
["rate", `${formatUsdc(opener.ratePerSecond)} / verified second`],
|
|
168
|
+
]),
|
|
169
|
+
...(quote?.minEarnSeconds === null ||
|
|
170
|
+
quote?.minEarnSeconds === undefined
|
|
171
|
+
? []
|
|
172
|
+
: [
|
|
173
|
+
[
|
|
174
|
+
"fully earned after",
|
|
175
|
+
`${formatDuration(Number(quote.minEarnSeconds))} of verified delivery`,
|
|
176
|
+
],
|
|
177
|
+
]),
|
|
178
|
+
...(opener.expiresAt === null
|
|
179
|
+
? []
|
|
180
|
+
: [
|
|
181
|
+
["expires", new Date(opener.expiresAt * 1000).toISOString()],
|
|
182
|
+
]),
|
|
183
|
+
["refund url", opener.refundUrl ?? "(the seller advertised no relay)"],
|
|
184
|
+
]);
|
|
185
|
+
out.print("");
|
|
186
|
+
// A stream on another (e.g. legacy) registered escrow is reached by
|
|
187
|
+
// naming that escrow; the CLI defaults to the network's current one.
|
|
188
|
+
const escrowFlag = opener.escrow !== null &&
|
|
189
|
+
opener.escrow.toLowerCase() !== config.escrow.toLowerCase()
|
|
190
|
+
? ` --escrow ${opener.escrow}`
|
|
191
|
+
: "";
|
|
192
|
+
out.print("Refunds are NOT automatic. The seller earns only for verified seconds; whatever is unearned stays in the escrow until someone reclaims it for you:");
|
|
193
|
+
out.print(opener.refundUrl === null
|
|
194
|
+
? ` metrik reclaim ${opener.streamId}${escrowFlag} (anyone may send it; the refund always goes to the payer)`
|
|
195
|
+
: ` metrik refund ${opener.streamId} --refund-url ${opener.refundUrl}${escrowFlag} --close --reclaim`);
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
const minBig = (a, b) => b !== undefined && b < a ? b : a;
|
|
200
|
+
/**
|
|
201
|
+
* The mandate this command signs: a standing `METRIK_AGENT_MANDATE_*` ceiling
|
|
202
|
+
* INTERSECTED with every flag (the most restrictive value wins), or, with no
|
|
203
|
+
* standing ceiling, one sized to the flags. A flag can only tighten a
|
|
204
|
+
* standing ceiling, never loosen or bypass it; an `--operator` outside a
|
|
205
|
+
* standing allowlist is refused outright.
|
|
206
|
+
*/
|
|
207
|
+
export function intersectCaps(envCaps, flags) {
|
|
208
|
+
if (envCaps === null) {
|
|
209
|
+
const amount = flags.maxAmount;
|
|
210
|
+
return {
|
|
211
|
+
maxPerStreamUsdc: amount,
|
|
212
|
+
maxTotalUsdc: amount,
|
|
213
|
+
// No --max-rate: the price is the only cap on how fast the seller can
|
|
214
|
+
// earn it. Reported as minEarnSeconds so the buyer can see it.
|
|
215
|
+
maxRatePerSecondUsdc: flags.maxRate ?? amount,
|
|
216
|
+
maxDurationSeconds: flags.maxDuration ?? DEFAULT_MAX_DURATION_SECONDS,
|
|
217
|
+
allowedOperators: flags.operator === undefined ? [] : [flags.operator],
|
|
218
|
+
ttlSeconds: DEFAULT_SERVER_MANDATE_TTL_SECONDS,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
let allowedOperators = envCaps.allowedOperators;
|
|
222
|
+
if (flags.operator !== undefined) {
|
|
223
|
+
if (allowedOperators.length > 0 &&
|
|
224
|
+
!allowedOperators.some((entry) => entry.toLowerCase() === flags.operator?.toLowerCase())) {
|
|
225
|
+
throw new CliError(`--operator ${flags.operator} is not in METRIK_AGENT_MANDATE_ALLOWED_OPERATORS`, {
|
|
226
|
+
exitCode: 3,
|
|
227
|
+
hint: "a flag can only narrow the standing mandate, never widen it. Nothing was sent.",
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
allowedOperators = [flags.operator];
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
maxPerStreamUsdc: minBig(envCaps.maxPerStreamUsdc, flags.maxAmount),
|
|
234
|
+
maxTotalUsdc: minBig(envCaps.maxTotalUsdc, flags.maxAmount),
|
|
235
|
+
maxRatePerSecondUsdc: minBig(envCaps.maxRatePerSecondUsdc, flags.maxRate),
|
|
236
|
+
maxDurationSeconds: flags.maxDuration !== undefined &&
|
|
237
|
+
flags.maxDuration < envCaps.maxDurationSeconds
|
|
238
|
+
? flags.maxDuration
|
|
239
|
+
: envCaps.maxDurationSeconds,
|
|
240
|
+
allowedOperators,
|
|
241
|
+
ttlSeconds: envCaps.ttlSeconds,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
function requireX402(x402) {
|
|
245
|
+
if (x402 === undefined) {
|
|
246
|
+
throw new CliError("this CLI build has no x402 dependency wired (CliDependencies.x402)", { exitCode: 4 });
|
|
247
|
+
}
|
|
248
|
+
return x402;
|
|
249
|
+
}
|
|
250
|
+
function parseResourceUrl(raw) {
|
|
251
|
+
let url;
|
|
252
|
+
try {
|
|
253
|
+
url = new URL(raw);
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
throw usageError(`<url> must be an absolute http(s) URL (got "${raw}")`);
|
|
257
|
+
}
|
|
258
|
+
if (url.protocol !== "https:" && url.protocol !== "http:") {
|
|
259
|
+
throw usageError(`<url> must be http(s) (got "${url.protocol}")`);
|
|
260
|
+
}
|
|
261
|
+
return url.toString();
|
|
262
|
+
}
|
|
263
|
+
function buildRequest(context) {
|
|
264
|
+
const { args } = context;
|
|
265
|
+
const data = stringFlag(args, "data");
|
|
266
|
+
const jsonValue = jsonBodyFlag(args);
|
|
267
|
+
const jsonAlias = stringFlag(args, "json-body");
|
|
268
|
+
if (jsonValue !== undefined && jsonAlias !== undefined) {
|
|
269
|
+
throw usageError("give the JSON body once: --json <body> or --json-body <body>");
|
|
270
|
+
}
|
|
271
|
+
const jsonBody = jsonValue ?? jsonAlias;
|
|
272
|
+
if (data !== undefined && jsonBody !== undefined) {
|
|
273
|
+
throw usageError("give either --data or --json <body>, not both");
|
|
274
|
+
}
|
|
275
|
+
if (jsonBody !== undefined) {
|
|
276
|
+
try {
|
|
277
|
+
JSON.parse(jsonBody);
|
|
278
|
+
}
|
|
279
|
+
catch {
|
|
280
|
+
throw usageError("--json <body> must be valid JSON");
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
const body = jsonBody ?? data;
|
|
284
|
+
const method = (stringFlag(args, "method") ?? (body === undefined ? "GET" : "POST")).toUpperCase();
|
|
285
|
+
const headers = parseHeaders(stringFlags(args, "header"));
|
|
286
|
+
if (jsonBody !== undefined && !hasHeader(headers, "content-type")) {
|
|
287
|
+
headers["content-type"] = "application/json";
|
|
288
|
+
}
|
|
289
|
+
for (const name of Object.keys(headers)) {
|
|
290
|
+
if (name === "payment-signature" || name === "x-payment") {
|
|
291
|
+
throw usageError(`do not set the ${name} header: the payment is signed by this command, after the quote passes the mandate`);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return {
|
|
295
|
+
method,
|
|
296
|
+
headers,
|
|
297
|
+
...(body === undefined ? {} : { body }),
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
function truncate(text) {
|
|
301
|
+
return text.length <= MAX_PRINTED_BODY_CHARS
|
|
302
|
+
? text
|
|
303
|
+
: `${text.slice(0, MAX_PRINTED_BODY_CHARS)}\n… (${text.length - MAX_PRINTED_BODY_CHARS} more characters; use --json for the whole body)`;
|
|
304
|
+
}
|
|
305
|
+
async function payOrExplain(x402, input) {
|
|
306
|
+
try {
|
|
307
|
+
return await x402.pay(input);
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
throw explainPayFailure(error);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/** Map the SDK's and the mandate's typed failures onto CLI exit codes. */
|
|
314
|
+
export function explainPayFailure(error) {
|
|
315
|
+
if (!(error instanceof Error))
|
|
316
|
+
return error;
|
|
317
|
+
switch (error.name) {
|
|
318
|
+
case "X402MandateDeniedError":
|
|
319
|
+
return new CliError(error.message, {
|
|
320
|
+
exitCode: 3,
|
|
321
|
+
hint: "raise --max-amount / --max-rate / --max-duration (or METRIK_AGENT_MANDATE_*) only if you mean to pay that much, that fast, for that long.",
|
|
322
|
+
cause: error,
|
|
323
|
+
});
|
|
324
|
+
case "X402PaymentRefusedError":
|
|
325
|
+
return new CliError(error.message, {
|
|
326
|
+
exitCode: 3,
|
|
327
|
+
hint: /exceeds maxAmount|exceeds maxRatePerSecond/.test(error.message)
|
|
328
|
+
? "that ceiling is your spend mandate's (--max-amount / --max-rate or METRIK_AGENT_MANDATE_*), handed to the SDK as a second gate. Nothing was signed."
|
|
329
|
+
: "the quote failed one of the SDK's protections (wrong network or token, unknown factory, payTo != factory.predict(terms), not an opener payment, ...). Nothing was signed.",
|
|
330
|
+
cause: error,
|
|
331
|
+
});
|
|
332
|
+
case "X402PostSignatureError": {
|
|
333
|
+
// The signature was handed out: never say "nothing moved" unless the
|
|
334
|
+
// chain proves the authorization can never be used.
|
|
335
|
+
const post = error;
|
|
336
|
+
const recover = post.streamId === null
|
|
337
|
+
? ""
|
|
338
|
+
: ` Recover the unearned part: metrik refund ${post.streamId} --refund-url <the seller's relay> --close --reclaim (or metrik reclaim ${post.streamId}).`;
|
|
339
|
+
return new CliError(error.message, {
|
|
340
|
+
exitCode: 4,
|
|
341
|
+
hint: post.state === "used"
|
|
342
|
+
? `the money LEFT the payer.${post.streamId === null ? " Its stream could not be identified on-chain; keep this output as evidence (see docs/x402.md)." : ` It is in stream ${post.streamId} (opener ${post.opener}).`}${recover}`
|
|
343
|
+
: post.state === "possibly-used"
|
|
344
|
+
? "whether the authorization was used could not be established: treat the payment as SPENT and check USDC.authorizationState before paying again (see docs/x402.md)."
|
|
345
|
+
: post.state === "unused-but-valid"
|
|
346
|
+
? "it has not moved yet, but the seller holds a signature valid until its validBefore: treat it as spent, or cancel it with USDC.cancelAuthorization (needs gas). See docs/x402.md."
|
|
347
|
+
: "the authorization was never used and has expired: nothing moved.",
|
|
348
|
+
cause: error,
|
|
349
|
+
});
|
|
350
|
+
}
|
|
351
|
+
default:
|
|
352
|
+
return error;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=pay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pay.js","sourceRoot":"","sources":["../../../src/cli/commands/pay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reclaim-unverified.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/reclaim-unverified.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"reclaim-unverified.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/reclaim-unverified.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AA4CjE,eAAO,MAAM,wBAAwB,EAAE,WA6GtC,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { signRecoveryMandate } from "../mandate.js";
|
|
|
7
7
|
import { assertCanPayGas } from "../preflight.js";
|
|
8
8
|
import { writeClientOptions } from "../deps.js";
|
|
9
9
|
import { isPolicyEnforced, resolveCliWallet } from "../wallet.js";
|
|
10
|
+
import { escrowGenerationFor } from "../../escrow-generation.js";
|
|
10
11
|
/**
|
|
11
12
|
* The acknowledgement this command will not run without.
|
|
12
13
|
*
|
|
@@ -72,7 +73,7 @@ export const reclaimUnverifiedCommand = {
|
|
|
72
73
|
const { account } = wallet;
|
|
73
74
|
const read = deps.createReadClient(config);
|
|
74
75
|
await assertTestnetRpc(config, () => read.getChainId());
|
|
75
|
-
await assertCanPayGas(read, account.address);
|
|
76
|
+
await assertCanPayGas(read, account.address, config.network);
|
|
76
77
|
const stream = await read.getStreamV2(streamId);
|
|
77
78
|
if (stream.reclaimed) {
|
|
78
79
|
throw new CliError("this stream has already been reclaimed — there is nothing left to take back", {
|
|
@@ -86,7 +87,7 @@ export const reclaimUnverifiedCommand = {
|
|
|
86
87
|
// prevent.
|
|
87
88
|
const grace = await readEscapeGrace(read);
|
|
88
89
|
const now = await readChainNow(read, deps.nowSeconds());
|
|
89
|
-
const window = escapeHatchWindow(stream, grace, now.seconds);
|
|
90
|
+
const window = escapeHatchWindow(stream, grace, now.seconds, escrowGenerationFor(config.chainId, config.escrow));
|
|
90
91
|
if (!window.ready) {
|
|
91
92
|
throw notReady(streamId, window, now.source);
|
|
92
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reclaim-unverified.js","sourceRoot":"","sources":["../../../src/cli/commands/reclaim-unverified.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"reclaim-unverified.js","sourceRoot":"","sources":["../../../src/cli/commands/reclaim-unverified.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGlE,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE;;;;;;;;;;;;;;GAcG;AACH,MAAM,oBAAoB,GAAG,mBAAmB,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,eAAe,GAAG;IACtB,wEAAwE;IACxE,gFAAgF;IAChF,0EAA0E;IAC1E,4EAA4E;IAC5E,8DAA8D;IAC9D,EAAE;IACF,+EAA+E;IAC/E,4EAA4E;CAC7E,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAgB;IACnD,IAAI,EAAE,oBAAoB;IAC1B,OAAO,EACL,yEAAyE;IAC3E,KAAK,EAAE,0CAA0C,oBAAoB,EAAE;IACvE,KAAK,EAAE,CAAC,oBAAoB,CAAC;IAC7B,KAAK,EAAE,IAAI;IACX,KAAK,CAAC,GAAG,CAAC,OAAuB;QAC/B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QACjD,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,UAAU,CAAC,iDAAiD,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEzD,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,CAAC,EAAE,CAAC;YAC7C,MAAM,UAAU,CACd,0FAA0F,oBAAoB,EAAE,EAChH;gBACE,GAAG,eAAe;gBAClB,EAAE;gBACF,iBAAiB,oBAAoB,gCAAgC;aACtE,CAAC,IAAI,CAAC,MAAM,CAAC,CACf,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE;YACzC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,CAAC,CAAC;QACH,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACxD,MAAM,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAE7D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,IAAI,QAAQ,CAChB,6EAA6E,EAC7E;gBACE,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,uCAAuC,QAAQ,EAAE;aACxD,CACF,CAAC;QACJ,CAAC;QAED,sEAAsE;QACtE,mEAAmE;QACnE,4EAA4E;QAC5E,WAAW;QACX,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,iBAAiB,CAC9B,MAAM,EACN,KAAK,EACL,GAAG,CAAC,OAAO,EACX,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CACnD,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,6EAA6E;QAC7E,sEAAsE;QACtE,oEAAoE;QACpE,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC1D,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACb,KAAK,MAAM,IAAI,IAAI,eAAe;YAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,GAAG,CAAC,IAAI,CACN,OAAO,KAAK,IAAI;YACd,CAAC,CAAC,6GAA6G;YAC/G,CAAC,CAAC,wCAAwC,UAAU,CAAC,OAAO,CAAC,uDAAuD,CACvH,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEb,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAClC,MAAM,EACN,OAAO,EACP,kBAAkB,CAAC,MAAM,CAAC,CAC3B,CAAC;QACF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,uBAAuB,CAAC;YACjD,QAAQ;YACR,kEAAkE;YAClE,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC;gBACrC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,MAAM,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC;YACtD,cAAc,EAAE,EAAE;YAClB,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC9B,CAAC,CAAC;QAEH,GAAG,CAAC,MAAM,CAAC;YACT,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,IAAI;YAChB,kBAAkB,EAAE,MAAM,CAAC,OAAO;YAClC,kBAAkB,EAAE,MAAM,CAAC,YAAY;YACvC,0BAA0B,EAAE,OAAO;SACpC,CAAC,CAAC;QACH,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC;YACR,CAAC,UAAU,EAAE,QAAQ,CAAC;YACtB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YACrB,CAAC,qBAAqB,EAAE,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACxD;gBACE,6BAA6B;gBAC7B,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;aACxE;SACF,CAAC,CAAC;IACL,CAAC;CACF,CAAC;AAEF,SAAS,QAAQ,CACf,QAAuB,EACvB,MAAyB,EACzB,KAAwB;IAExB,OAAO,IAAI,QAAQ,CACjB,4DAA4D,eAAe,CACzE,MAAM,CAAC,OAAO,CACf,QAAQ,cAAc,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAClD;QACE,QAAQ,EAAE,CAAC;QACX,IAAI,EAAE;YACJ,4DAA4D,MAAM,CAAC,YAAY,+BAC7E,KAAK,KAAK,OAAO;gBACf,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,2EACN,GAAG;YACH,sEAAsE,QAAQ,EAAE;SACjF,CAAC,IAAI,CAAC,GAAG,CAAC;KACZ,CACF,CAAC;AACJ,CAAC;AAED,oFAAoF;AACpF,KAAK,UAAU,eAAe,CAAC,IAAmB;IAChD,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAChB,mGAAmG,EACnG;YACE,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,oFAAoF;YAC1F,KAAK,EAAE,KAAK;SACb,CACF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,mBAAmB,CAChC,IAAmB,EACnB,QAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { CommandSpec } from "../context.js";
|
|
2
2
|
import type { CliReadClient, CliWriteClient } from "../deps.js";
|
|
3
3
|
import type { ReclaimVerifiedStreamResult, StreamProofTransactionResult } from "../../sdk/client.js";
|
|
4
|
+
import { type Log } from "viem";
|
|
4
5
|
export declare const reclaimCommand: CommandSpec;
|
|
5
6
|
/**
|
|
6
7
|
* Send the close that `--close-first` asks for, tolerating the one race that
|
|
@@ -19,15 +20,35 @@ export declare function awaitClosed(read: Pick<CliReadClient, "getStreamV2">, st
|
|
|
19
20
|
* time. That is not an error condition — it is the normal ordering of a
|
|
20
21
|
* checkpoint rail, and it happens on the FIRST attempt essentially every time.
|
|
21
22
|
* A CLI that surfaced the raw revert would teach every user that reclaim is
|
|
22
|
-
* broken, so the wait is built in and narrated.
|
|
23
|
-
*
|
|
23
|
+
* broken, so the wait is built in and narrated.
|
|
24
|
+
*
|
|
25
|
+
* What counts as "wait for the next checkpoint" is decided by `isRetryable`,
|
|
26
|
+
* NOT by this function. It used to be `instanceof SettlementWindowOpenError`
|
|
27
|
+
* alone, which missed the two ways the wait actually shows up in practice: the
|
|
28
|
+
* ORACLE refusing a proof for a stream it has not checkpointed yet (the SDK
|
|
29
|
+
* fetches the proof before it ever simulates, so the escrow's revert never
|
|
30
|
+
* happens), and the endpoint returning revert data the ABI cannot decode. Both
|
|
31
|
+
* killed the advertised retry on its first attempt — the second one right
|
|
32
|
+
* after `--close-first` had already spent the buyer's close.
|
|
24
33
|
*/
|
|
25
34
|
export declare function reclaimWithBoundedRetry(write: CliWriteClient, buildInput: () => Promise<Parameters<CliWriteClient["reclaimStream"]>[0]>, options: {
|
|
26
35
|
readonly attempts: number;
|
|
27
36
|
readonly intervalMs: number;
|
|
28
37
|
readonly sleep: (ms: number) => Promise<void>;
|
|
38
|
+
/** True when this failure is the checkpoint wait and will clear on its own. */
|
|
39
|
+
readonly isRetryable: (error: unknown) => Promise<boolean>;
|
|
40
|
+
/** Turn a failure that will NOT clear into something worth reading. */
|
|
41
|
+
readonly explainFailure: (error: unknown) => Promise<unknown>;
|
|
29
42
|
readonly onRetry: (attempt: number, reason: string) => void;
|
|
30
43
|
/** What to tell the buyer once the budget is spent. See `describeLastResort`. */
|
|
31
44
|
readonly exhaustedHint?: () => Promise<string>;
|
|
32
45
|
}): Promise<ReclaimVerifiedStreamResult>;
|
|
46
|
+
/**
|
|
47
|
+
* The amount the reclaim returned, decoded from its BuyerReclaimed event (same
|
|
48
|
+
* signature on V2 and V3). Null when the receipt carries no matching log, so
|
|
49
|
+
* the CLI prints nothing rather than a guessed figure.
|
|
50
|
+
*/
|
|
51
|
+
export declare function refundFromReceipt(receipt: {
|
|
52
|
+
logs?: readonly Log[];
|
|
53
|
+
} | undefined, escrow: string, streamId: `0x${string}`): bigint | null;
|
|
33
54
|
//# sourceMappingURL=reclaim.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reclaim.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/reclaim.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"reclaim.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/reclaim.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC7B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAkB,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAWhD,eAAO,MAAM,cAAc,EAAE,WAwN5B,CAAC;AAEF;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,GAClD,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAO9C;AA0BD,wBAAsB,WAAW,CAC/B,IAAI,EAAE,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,EACxC,QAAQ,EAAE,KAAK,MAAM,EAAE,EACvB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,EACpC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAcf;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACzE,OAAO,EAAE;IACP,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,+EAA+E;IAC/E,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3D,uEAAuE;IACvE,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5D,iFAAiF;IACjF,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CAChD,GACA,OAAO,CAAC,2BAA2B,CAAC,CAwBtC;AA6LD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,SAAS,GAAG,EAAE,CAAA;CAAE,GAAG,SAAS,EAC9C,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,KAAK,MAAM,EAAE,GACtB,MAAM,GAAG,IAAI,CAcf"}
|