@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,82 @@
|
|
|
1
|
+
import type { StreamV2 } from "@absol-labs/sdk";
|
|
2
|
+
import type { CliReadClient } from "./deps.js";
|
|
3
|
+
/**
|
|
4
|
+
* Why a proof-based reclaim cannot go through right now, read from chain state
|
|
5
|
+
* rather than decoded out of a revert.
|
|
6
|
+
*
|
|
7
|
+
* `metrik reclaim` used to learn this only by sending the simulation and
|
|
8
|
+
* reading what came back. That works exactly as well as the endpoint's revert
|
|
9
|
+
* data does, and on the public Base Sepolia RPC it frequently does not work at
|
|
10
|
+
* all: an already-reclaimed stream, a stream that is still running, and a
|
|
11
|
+
* stream whose stop time is not checkpointed yet ALL came back as
|
|
12
|
+
*
|
|
13
|
+
* reclaim simulation failed: Execution reverted for an unknown reason.
|
|
14
|
+
*
|
|
15
|
+
* Three different situations, three completely different next actions — you
|
|
16
|
+
* already have the money / close it first / wait ~20 seconds — and one message
|
|
17
|
+
* that distinguishes none of them. Worse, the retry loop keys off the same
|
|
18
|
+
* undecoded revert, so the wait that this command advertises never engaged.
|
|
19
|
+
*
|
|
20
|
+
* Every one of these conditions is a pure function of state the CLI already
|
|
21
|
+
* reads elsewhere (`getStreamV2`, `latestCheckpointCheckedAt`, the chain clock,
|
|
22
|
+
* and {@link settlementCoverage}, which `metrik status` has always used to
|
|
23
|
+
* decide the same question). So the condition is named from that state, before
|
|
24
|
+
* a transaction is built, the way `reclaim-unverified` has always named
|
|
25
|
+
* "already reclaimed". No revert data required.
|
|
26
|
+
*/
|
|
27
|
+
export type ReclaimBlocker =
|
|
28
|
+
/** `AlreadyReclaimed()` / `NothingToReclaim()`: the money is already back. */
|
|
29
|
+
{
|
|
30
|
+
readonly kind: "reclaimed";
|
|
31
|
+
}
|
|
32
|
+
/** `StreamNotReclaimable()`: neither closed nor expired, so the clock runs. */
|
|
33
|
+
| {
|
|
34
|
+
readonly kind: "running";
|
|
35
|
+
readonly expiresAt: number;
|
|
36
|
+
readonly secondsRemaining: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* `SettlementWindowOpen()`: the stream has stopped but no checkpoint reaches
|
|
40
|
+
* its stop time yet. The ONLY one of the three that is a wait rather than a
|
|
41
|
+
* refusal — the oracle publishes roughly every 15-22s.
|
|
42
|
+
*/
|
|
43
|
+
| {
|
|
44
|
+
readonly kind: "awaiting-checkpoint";
|
|
45
|
+
readonly stopAt: number;
|
|
46
|
+
readonly coveredUpTo: number | null;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* The blocker implied by this state, or `null` when nothing in the state blocks
|
|
50
|
+
* a reclaim. Pure, so every branch is testable without an RPC — the same reason
|
|
51
|
+
* {@link settlementCoverage} is.
|
|
52
|
+
*
|
|
53
|
+
* Order matters and follows the escrow: a reclaimed stream is terminal, a
|
|
54
|
+
* running stream cannot be reclaimed at any settlement state, and only then
|
|
55
|
+
* does checkpoint coverage decide.
|
|
56
|
+
*/
|
|
57
|
+
export declare function classifyReclaimBlocker(stream: Pick<StreamV2, "status" | "closedAt" | "expiresAt" | "reclaimed">, latestCheckpointCheckedAt: number | null, nowSeconds: number): ReclaimBlocker | null;
|
|
58
|
+
/**
|
|
59
|
+
* Read the state the classifier needs and name the blocker.
|
|
60
|
+
*
|
|
61
|
+
* **Fails open.** A read that does not answer returns `null` — "nothing known
|
|
62
|
+
* to block this" — never a refusal. Refusing to return a buyer's money because
|
|
63
|
+
* a load-balanced endpoint would not answer a view call is the one outcome this
|
|
64
|
+
* command must never produce; the transaction itself remains the authority.
|
|
65
|
+
*/
|
|
66
|
+
export declare function readReclaimBlocker(read: Pick<CliReadClient, "getStreamV2" | "latestCheckpointCheckedAt" | "latestBlockTimestamp">, streamId: `0x${string}`, fallbackNowSeconds: number): Promise<ReclaimBlocker | null>;
|
|
67
|
+
/**
|
|
68
|
+
* The refusal for a blocker that will not clear on its own, as message + hint.
|
|
69
|
+
*
|
|
70
|
+
* `awaiting-checkpoint` has no entry here on purpose: it clears by itself, so
|
|
71
|
+
* it is narrated by {@link describeAwaitingCheckpoint} and waited out, never
|
|
72
|
+
* raised as an error.
|
|
73
|
+
*/
|
|
74
|
+
export declare function describeTerminalBlocker(blocker: ReclaimBlocker, streamId: `0x${string}`): {
|
|
75
|
+
readonly message: string;
|
|
76
|
+
readonly hint: string;
|
|
77
|
+
} | null;
|
|
78
|
+
/** The wait, named: what stopped, how far the oracle has published. */
|
|
79
|
+
export declare function describeAwaitingCheckpoint(blocker: Extract<ReclaimBlocker, {
|
|
80
|
+
kind: "awaiting-checkpoint";
|
|
81
|
+
}>): string;
|
|
82
|
+
//# sourceMappingURL=reclaimability.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reclaimability.d.ts","sourceRoot":"","sources":["../../src/cli/reclaimability.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAKhD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,MAAM,cAAc;AACxB,8EAA8E;AAC5E;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE;AAChC,+EAA+E;GAC7E;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CACnC;AACH;;;;GAIG;GACD;IACE,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC,CAAC;AAEN;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,WAAW,GAAG,WAAW,CAAC,EACzE,yBAAyB,EAAE,MAAM,GAAG,IAAI,EACxC,UAAU,EAAE,MAAM,GACjB,cAAc,GAAG,IAAI,CAsBvB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,IAAI,CACR,aAAa,EACb,aAAa,GAAG,2BAA2B,GAAG,sBAAsB,CACrE,EACD,QAAQ,EAAE,KAAK,MAAM,EAAE,EACvB,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,KAAK,MAAM,EAAE,GACtB;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAiB5D;AAED,uEAAuE;AACvE,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE;IAAE,IAAI,EAAE,qBAAqB,CAAA;CAAE,CAAC,GAChE,MAAM,CAQR"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { formatDuration } from "./amounts.js";
|
|
2
|
+
import { formatTimestamp, readChainNow } from "./escape-hatch.js";
|
|
3
|
+
import { settlementCoverage } from "./status.js";
|
|
4
|
+
/**
|
|
5
|
+
* The blocker implied by this state, or `null` when nothing in the state blocks
|
|
6
|
+
* a reclaim. Pure, so every branch is testable without an RPC — the same reason
|
|
7
|
+
* {@link settlementCoverage} is.
|
|
8
|
+
*
|
|
9
|
+
* Order matters and follows the escrow: a reclaimed stream is terminal, a
|
|
10
|
+
* running stream cannot be reclaimed at any settlement state, and only then
|
|
11
|
+
* does checkpoint coverage decide.
|
|
12
|
+
*/
|
|
13
|
+
export function classifyReclaimBlocker(stream, latestCheckpointCheckedAt, nowSeconds) {
|
|
14
|
+
if (stream.reclaimed)
|
|
15
|
+
return { kind: "reclaimed" };
|
|
16
|
+
if (stream.status !== "closed" && nowSeconds < stream.expiresAt) {
|
|
17
|
+
return {
|
|
18
|
+
kind: "running",
|
|
19
|
+
expiresAt: stream.expiresAt,
|
|
20
|
+
secondsRemaining: stream.expiresAt - nowSeconds,
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
const coverage = settlementCoverage(stream, latestCheckpointCheckedAt, nowSeconds);
|
|
24
|
+
if (coverage.pending && coverage.stopAt !== null) {
|
|
25
|
+
return {
|
|
26
|
+
kind: "awaiting-checkpoint",
|
|
27
|
+
stopAt: coverage.stopAt,
|
|
28
|
+
coveredUpTo: coverage.coveredUpTo,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read the state the classifier needs and name the blocker.
|
|
35
|
+
*
|
|
36
|
+
* **Fails open.** A read that does not answer returns `null` — "nothing known
|
|
37
|
+
* to block this" — never a refusal. Refusing to return a buyer's money because
|
|
38
|
+
* a load-balanced endpoint would not answer a view call is the one outcome this
|
|
39
|
+
* command must never produce; the transaction itself remains the authority.
|
|
40
|
+
*/
|
|
41
|
+
export async function readReclaimBlocker(read, streamId, fallbackNowSeconds) {
|
|
42
|
+
const stream = await read.getStreamV2(streamId).catch(() => null);
|
|
43
|
+
if (stream === null)
|
|
44
|
+
return null;
|
|
45
|
+
const now = await readChainNow(read, fallbackNowSeconds);
|
|
46
|
+
const latestCheckpointCheckedAt = await read
|
|
47
|
+
.latestCheckpointCheckedAt()
|
|
48
|
+
.catch(() => null);
|
|
49
|
+
return classifyReclaimBlocker(stream, latestCheckpointCheckedAt, now.seconds);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The refusal for a blocker that will not clear on its own, as message + hint.
|
|
53
|
+
*
|
|
54
|
+
* `awaiting-checkpoint` has no entry here on purpose: it clears by itself, so
|
|
55
|
+
* it is narrated by {@link describeAwaitingCheckpoint} and waited out, never
|
|
56
|
+
* raised as an error.
|
|
57
|
+
*/
|
|
58
|
+
export function describeTerminalBlocker(blocker, streamId) {
|
|
59
|
+
if (blocker.kind === "reclaimed") {
|
|
60
|
+
return {
|
|
61
|
+
message: "this stream has already been reclaimed — there is nothing left to take back",
|
|
62
|
+
hint: `check where it went: metrik status ${streamId}`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (blocker.kind === "running") {
|
|
66
|
+
return {
|
|
67
|
+
message: `the stream is still running, so there is nothing to reclaim yet — the meter stops at ${formatTimestamp(blocker.expiresAt)}, in ${formatDuration(blocker.secondsRemaining)}`,
|
|
68
|
+
hint: `stop the clock first — \`metrik close ${streamId}\`, or re-run this command with --close-first — or wait for it to expire. (If you closed it moments ago, the RPC endpoint may not have caught up yet: re-run this command.)`,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
/** The wait, named: what stopped, how far the oracle has published. */
|
|
74
|
+
export function describeAwaitingCheckpoint(blocker) {
|
|
75
|
+
const covered = blocker.coveredUpTo === null
|
|
76
|
+
? "how far the oracle has published could not be read"
|
|
77
|
+
: `the oracle has published only to ${formatTimestamp(blocker.coveredUpTo)}`;
|
|
78
|
+
return `the stream stopped at ${formatTimestamp(blocker.stopAt)} and ${covered}. Reclaim reverts until a checkpoint reaches the stop time — the oracle publishes roughly every 15-22s, so this waits.`;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=reclaimability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reclaimability.js","sourceRoot":"","sources":["../../src/cli/reclaimability.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA+CjD;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAyE,EACzE,yBAAwC,EACxC,UAAkB;IAElB,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACnD,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,EAAE,CAAC;QAChE,OAAO;YACL,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,gBAAgB,EAAE,MAAM,CAAC,SAAS,GAAG,UAAU;SAChD,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,kBAAkB,CACjC,MAAM,EACN,yBAAyB,EACzB,UAAU,CACX,CAAC;IACF,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACjD,OAAO;YACL,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;YACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;SAClC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAGC,EACD,QAAuB,EACvB,kBAA0B;IAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;IACzD,MAAM,yBAAyB,GAAG,MAAM,IAAI;SACzC,yBAAyB,EAAE;SAC3B,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACrB,OAAO,sBAAsB,CAAC,MAAM,EAAE,yBAAyB,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;AAChF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAuB,EACvB,QAAuB;IAEvB,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACjC,OAAO;YACL,OAAO,EACL,6EAA6E;YAC/E,IAAI,EAAE,uCAAuC,QAAQ,EAAE;SACxD,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO;YACL,OAAO,EAAE,wFAAwF,eAAe,CAC9G,OAAO,CAAC,SAAS,CAClB,QAAQ,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACnD,IAAI,EAAE,yCAAyC,QAAQ,6KAA6K;SACrO,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,0BAA0B,CACxC,OAAiE;IAEjE,MAAM,OAAO,GACX,OAAO,CAAC,WAAW,KAAK,IAAI;QAC1B,CAAC,CAAC,oDAAoD;QACtD,CAAC,CAAC,oCAAoC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;IACjF,OAAO,yBAAyB,eAAe,CAC7C,OAAO,CAAC,MAAM,CACf,QAAQ,OAAO,wHAAwH,CAAC;AAC3I,CAAC"}
|
package/dist/cli/run.d.ts
CHANGED
|
@@ -3,7 +3,8 @@ import { type CliDependencies } from "./deps.js";
|
|
|
3
3
|
import type { CommandSpec } from "./context.js";
|
|
4
4
|
/**
|
|
5
5
|
* The command surface, in the order the product loop runs:
|
|
6
|
-
* discover -> open -> invoke -> watch/status -> close ->
|
|
6
|
+
* discover -> open (or pay, over x402) -> invoke -> watch/status -> close ->
|
|
7
|
+
* reclaim (or refund, through an x402 seller's gasless relay), then the
|
|
7
8
|
* operator's own redemption (`claim`) and the buyer's last-resort exit
|
|
8
9
|
* (`reclaim-unverified`). `streams` (which of them are mine?) sits inside that
|
|
9
10
|
* loop; `mcp` (run the same loop from an MCP host) sits after it.
|
package/dist/cli/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAcA,OAAO,EAAiB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,WAAW,CAAC;AAQzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAqChD;;;;;;;GAOG;AACH,eAAO,MAAM,QAAQ,EAAE,SAAS,WAAW,EAc1C,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;CACjC;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAiEpE;AAqBD,wBAAgB,UAAU,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAoEvD"}
|
package/dist/cli/run.js
CHANGED
|
@@ -1,25 +1,46 @@
|
|
|
1
|
-
import { assertKnownFlags, booleanFlag, parseArgs } from "./args.js";
|
|
2
|
-
import { CONFIG_FLAGS, GLOBAL_FLAGS,
|
|
1
|
+
import { assertKnownFlags, booleanFlag, jsonOutputRequested, parseArgs, } from "./args.js";
|
|
2
|
+
import { CONFIG_FLAGS, GLOBAL_FLAGS, CLI_NETWORK_POLICY, resolveConfig, } from "./config.js";
|
|
3
|
+
import { describeAllowedNetworks } from "../network.js";
|
|
3
4
|
import { CliError, describeError, usageError } from "./errors.js";
|
|
4
5
|
import { createPrinter } from "./output.js";
|
|
5
6
|
import { startHeartbeat } from "./progress.js";
|
|
6
7
|
import { defaultCliDependencies } from "./deps.js";
|
|
7
8
|
import { packageVersion } from "./version.js";
|
|
8
|
-
import { CDP_ENV_VARS, PRIVATE_KEY_ENV } from "./wallet.js";
|
|
9
|
+
import { CDP_ENV_VARS, PRIVATE_KEY_ENV, PRIVY_SESSION_ENV_VARS, PRIVY_WALLET_KEY_ENV, } from "./wallet.js";
|
|
9
10
|
import { claimCommand } from "./commands/claim.js";
|
|
10
11
|
import { closeCommand } from "./commands/close.js";
|
|
11
12
|
import { discoverCommand } from "./commands/discover.js";
|
|
12
13
|
import { invokeCommand } from "./commands/invoke.js";
|
|
13
14
|
import { mcpCommand } from "./commands/mcp.js";
|
|
14
15
|
import { openCommand } from "./commands/open.js";
|
|
16
|
+
import { payCommand } from "./commands/pay.js";
|
|
15
17
|
import { reclaimCommand } from "./commands/reclaim.js";
|
|
18
|
+
import { refundCommand } from "./commands/refund.js";
|
|
16
19
|
import { reclaimUnverifiedCommand } from "./commands/reclaim-unverified.js";
|
|
17
20
|
import { statusCommand } from "./commands/status.js";
|
|
18
21
|
import { streamsCommand } from "./commands/streams.js";
|
|
19
22
|
import { watchCommand } from "./commands/watch.js";
|
|
23
|
+
/**
|
|
24
|
+
* Every wallet source, named in the order they are resolved. Privy shipped in
|
|
25
|
+
* 0.11.0 as resolution step 3 and worked, but appeared in no user-facing text
|
|
26
|
+
* at all — so the only way to learn the CLI could use it was to read the
|
|
27
|
+
* source or the docs. An external reviewer running the published package
|
|
28
|
+
* concluded it did not exist.
|
|
29
|
+
*/
|
|
30
|
+
const WALLET_SOURCES = `${PRIVATE_KEY_ENV}, ${CDP_ENV_VARS.join(" + ")}, ` +
|
|
31
|
+
`or ${PRIVY_WALLET_KEY_ENV} (Privy; or a broker session via ${PRIVY_SESSION_ENV_VARS.join(" + ")}).`;
|
|
32
|
+
/**
|
|
33
|
+
* Said in the help, not only discovered at runtime. `claim` is the OPERATOR's
|
|
34
|
+
* side and a Privy broker policy allowlists BUYER actions only, so a Privy
|
|
35
|
+
* wallet cannot sign one — the broker refuses, and the client cannot raise its
|
|
36
|
+
* own ceiling. The command already warns when it runs; someone choosing a
|
|
37
|
+
* wallet needs it before that.
|
|
38
|
+
*/
|
|
39
|
+
const PRIVY_CLAIM_NOTE = "`metrik claim` does NOT work on a Privy wallet: the broker's transaction allowlist is buyer-only. Claim with the operator's own key.";
|
|
20
40
|
/**
|
|
21
41
|
* The command surface, in the order the product loop runs:
|
|
22
|
-
* discover -> open -> invoke -> watch/status -> close ->
|
|
42
|
+
* discover -> open (or pay, over x402) -> invoke -> watch/status -> close ->
|
|
43
|
+
* reclaim (or refund, through an x402 seller's gasless relay), then the
|
|
23
44
|
* operator's own redemption (`claim`) and the buyer's last-resort exit
|
|
24
45
|
* (`reclaim-unverified`). `streams` (which of them are mine?) sits inside that
|
|
25
46
|
* loop; `mcp` (run the same loop from an MCP host) sits after it.
|
|
@@ -27,12 +48,14 @@ import { watchCommand } from "./commands/watch.js";
|
|
|
27
48
|
export const COMMANDS = [
|
|
28
49
|
discoverCommand,
|
|
29
50
|
openCommand,
|
|
51
|
+
payCommand,
|
|
30
52
|
statusCommand,
|
|
31
53
|
streamsCommand,
|
|
32
54
|
watchCommand,
|
|
33
55
|
invokeCommand,
|
|
34
56
|
closeCommand,
|
|
35
57
|
reclaimCommand,
|
|
58
|
+
refundCommand,
|
|
36
59
|
reclaimUnverifiedCommand,
|
|
37
60
|
claimCommand,
|
|
38
61
|
mcpCommand,
|
|
@@ -52,7 +75,7 @@ export async function runCli(options) {
|
|
|
52
75
|
let json = false;
|
|
53
76
|
try {
|
|
54
77
|
const args = parseArgs(options.argv);
|
|
55
|
-
json =
|
|
78
|
+
json = jsonOutputRequested(args);
|
|
56
79
|
const out = createPrinter(streams, json);
|
|
57
80
|
// `--version` is checked before the bare-invocation help branch: `metrik
|
|
58
81
|
// --version` parses to no command at all.
|
|
@@ -130,12 +153,13 @@ export function renderHelp(commandName) {
|
|
|
130
153
|
...(command.signs
|
|
131
154
|
? [
|
|
132
155
|
"",
|
|
133
|
-
`Broadcasts a transaction. Requires a wallet in the environment: ${
|
|
156
|
+
`Broadcasts a transaction. Requires a wallet in the environment: ${WALLET_SOURCES}`,
|
|
157
|
+
...(command.name === "claim" ? [PRIVY_CLAIM_NOTE] : []),
|
|
134
158
|
]
|
|
135
159
|
: command.requiresKey === true
|
|
136
160
|
? [
|
|
137
161
|
"",
|
|
138
|
-
`Broadcasts nothing, but signs an off-chain EIP-712 capability, so it requires a wallet in the environment: ${
|
|
162
|
+
`Broadcasts nothing, but signs an off-chain EIP-712 capability, so it requires a wallet in the environment: ${WALLET_SOURCES}`,
|
|
139
163
|
]
|
|
140
164
|
: []),
|
|
141
165
|
].join("\n");
|
|
@@ -157,16 +181,21 @@ export function renderHelp(commandName) {
|
|
|
157
181
|
" --json machine-readable output on stdout",
|
|
158
182
|
" --help this text, or `metrik <command> --help`",
|
|
159
183
|
"",
|
|
160
|
-
"Settlement flags (all default to
|
|
161
|
-
" --chain-id --rpc-url --escrow --usdc --oracle-url --registry-url",
|
|
184
|
+
"Settlement flags (all default to the selected network's registry entry):",
|
|
185
|
+
" --network --chain-id --rpc-url --escrow --usdc --oracle-url --registry-url",
|
|
186
|
+
" --network takes a registry id, chain id or CAIP-2 id (env METRIK_NETWORK).",
|
|
162
187
|
"",
|
|
163
188
|
"Wallet (read from the environment only; never accepted as a flag):",
|
|
164
|
-
` ${PRIVATE_KEY_ENV} a
|
|
189
|
+
` ${PRIVATE_KEY_ENV} a testnet key. Checked first.`,
|
|
165
190
|
` ${CDP_ENV_VARS.join(", ")}`,
|
|
166
191
|
" a Coinbase CDP Server Wallet v2 account. Used when no private key is set.",
|
|
192
|
+
` ${PRIVY_WALLET_KEY_ENV}`,
|
|
193
|
+
" a Privy wallet you provisioned, reached through a broker. Checked third.",
|
|
194
|
+
` A broker session instead: ${PRIVY_SESSION_ENV_VARS.join(", ")}.`,
|
|
195
|
+
` ${PRIVY_CLAIM_NOTE}`,
|
|
167
196
|
" A credential on the command line lands in shell history; these never are.",
|
|
168
197
|
"",
|
|
169
|
-
`TESTNET ONLY: this CLI refuses any chain outside ${
|
|
198
|
+
`TESTNET ONLY: this CLI refuses any chain outside the registered testnets: ${describeAllowedNetworks(CLI_NETWORK_POLICY)},`,
|
|
170
199
|
"and re-checks the chain id the RPC actually serves before signing. There is no override.",
|
|
171
200
|
].join("\n");
|
|
172
201
|
}
|
package/dist/cli/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/scan-range.d.ts
CHANGED
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
* `buyer` and `operator` are INDEXED on `StreamOpened`, so a per-wallet scan is
|
|
20
20
|
* a server-side topic filter whose response is tiny regardless of range. What
|
|
21
21
|
* public RPCs cap is the per-call BLOCK RANGE, and a topic filter does not lift
|
|
22
|
-
* it:
|
|
22
|
+
* it: the public RPC answers a wider range with `-32614 "eth_getLogs is
|
|
23
23
|
* limited to a 10,000 range"`. So the page size is the cap, not a guess below
|
|
24
24
|
* it.
|
|
25
25
|
*/
|
|
26
26
|
/**
|
|
27
27
|
* getLogs page size. The window is `chunk + 1` blocks (bounds inclusive), so
|
|
28
|
-
* 9 999 is the largest page
|
|
28
|
+
* 9 999 is the largest page the public RPC accepts.
|
|
29
29
|
*/
|
|
30
30
|
export declare const LOG_SCAN_CHUNK = 9999n;
|
|
31
31
|
/**
|
package/dist/cli/scan-range.js
CHANGED
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
* `buyer` and `operator` are INDEXED on `StreamOpened`, so a per-wallet scan is
|
|
20
20
|
* a server-side topic filter whose response is tiny regardless of range. What
|
|
21
21
|
* public RPCs cap is the per-call BLOCK RANGE, and a topic filter does not lift
|
|
22
|
-
* it:
|
|
22
|
+
* it: the public RPC answers a wider range with `-32614 "eth_getLogs is
|
|
23
23
|
* limited to a 10,000 range"`. So the page size is the cap, not a guess below
|
|
24
24
|
* it.
|
|
25
25
|
*/
|
|
26
26
|
/**
|
|
27
27
|
* getLogs page size. The window is `chunk + 1` blocks (bounds inclusive), so
|
|
28
|
-
* 9 999 is the largest page
|
|
28
|
+
* 9 999 is the largest page the public RPC accepts.
|
|
29
29
|
*/
|
|
30
30
|
export const LOG_SCAN_CHUNK = 9999n;
|
|
31
31
|
/**
|
package/dist/cli/status.d.ts
CHANGED
|
@@ -84,7 +84,9 @@ export interface StreamReport {
|
|
|
84
84
|
*/
|
|
85
85
|
readonly attesters: AttesterSet;
|
|
86
86
|
}
|
|
87
|
-
export declare function readStreamReport(read: CliReadClient, streamId: `0x${string}`, nowSeconds: number
|
|
87
|
+
export declare function readStreamReport(read: CliReadClient, streamId: `0x${string}`, nowSeconds: number,
|
|
88
|
+
/** The escrow's generation (decides the escape-hatch rule). Default `v2`. */
|
|
89
|
+
escrowGeneration?: string): Promise<StreamReport>;
|
|
88
90
|
export declare function streamReportJson(report: StreamReport): unknown;
|
|
89
91
|
export declare function streamReportRows(report: StreamReport): (readonly [string, string])[];
|
|
90
92
|
//# sourceMappingURL=status.d.ts.map
|
package/dist/cli/status.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAC,EAChD,yBAAyB,EAAE,MAAM,GAAG,IAAI,EACxC,UAAU,EAAE,MAAM,GACjB,kBAAkB,CAgBpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACvC,kDAAkD;IAClD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC;IACxC,qFAAqF;IACrF,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;CACjC;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,KAAK,MAAM,EAAE,EACvB,UAAU,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAGjE,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,0EAA0E;IAC1E,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,uEAAuE;IACvE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAC,EAChD,yBAAyB,EAAE,MAAM,GAAG,IAAI,EACxC,UAAU,EAAE,MAAM,GACjB,kBAAkB,CAgBpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,+EAA+E;IAC/E,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,CAAC;IACvC,kDAAkD;IAClD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,WAAW,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/C;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,kFAAkF;IAClF,QAAQ,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC;IACxC,qFAAqF;IACrF,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC;CACjC;AAED,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,aAAa,EACnB,QAAQ,EAAE,KAAK,MAAM,EAAE,EACvB,UAAU,EAAE,MAAM;AAClB,6EAA6E;AAC7E,gBAAgB,SAAO,GACtB,OAAO,CAAC,YAAY,CAAC,CAyEvB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAqE9D;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,YAAY,GACnB,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CA4F/B"}
|
package/dist/cli/status.js
CHANGED
|
@@ -24,7 +24,9 @@ export function settlementCoverage(stream, latestCheckpointCheckedAt, nowSeconds
|
|
|
24
24
|
pending: stopAt !== null && (coveredUpTo === null || coveredUpTo < stopAt),
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
|
-
export async function readStreamReport(read, streamId, nowSeconds
|
|
27
|
+
export async function readStreamReport(read, streamId, nowSeconds,
|
|
28
|
+
/** The escrow's generation (decides the escape-hatch rule). Default `v2`. */
|
|
29
|
+
escrowGeneration = "v2") {
|
|
28
30
|
const stream = await read.getStreamV2(streamId);
|
|
29
31
|
// Timing is answered against the chain, because every deadline on this screen
|
|
30
32
|
// — expiry, and the escape hatch in particular — is compared against
|
|
@@ -55,7 +57,7 @@ export async function readStreamReport(read, streamId, nowSeconds) {
|
|
|
55
57
|
}
|
|
56
58
|
let escapeHatch = null;
|
|
57
59
|
try {
|
|
58
|
-
escapeHatch = escapeHatchWindow(stream, await read.escapeGraceSeconds(), now.seconds);
|
|
60
|
+
escapeHatch = escapeHatchWindow(stream, await read.escapeGraceSeconds(), now.seconds, escrowGeneration);
|
|
59
61
|
}
|
|
60
62
|
catch {
|
|
61
63
|
escapeHatch = null;
|
|
@@ -93,6 +95,11 @@ export function streamReportJson(report) {
|
|
|
93
95
|
status: stream.status,
|
|
94
96
|
reclaimed: stream.reclaimed,
|
|
95
97
|
buyer: stream.buyer,
|
|
98
|
+
// An x402 stream's `buyer` is the X402StreamOpener contract, not the
|
|
99
|
+
// person who paid; `payer` is who any refund goes to.
|
|
100
|
+
opener: stream.opener ?? null,
|
|
101
|
+
payer: stream.payer ?? stream.buyer,
|
|
102
|
+
boughtVia: (stream.opener ?? null) === null ? "wallet" : "x402-opener",
|
|
96
103
|
operator: stream.operator,
|
|
97
104
|
serviceRef: stream.serviceRef,
|
|
98
105
|
deposit: stream.deposit,
|
|
@@ -152,7 +159,12 @@ export function streamReportRows(report) {
|
|
|
152
159
|
"status",
|
|
153
160
|
stream.reclaimed ? `${stream.status} (reclaimed)` : stream.status,
|
|
154
161
|
],
|
|
155
|
-
|
|
162
|
+
...(stream.opener === null || stream.opener === undefined
|
|
163
|
+
? [["buyer", stream.buyer]]
|
|
164
|
+
: [
|
|
165
|
+
["buyer", `${stream.buyer} (x402 opener contract)`],
|
|
166
|
+
["payer", `${stream.payer} (refunds go here)`],
|
|
167
|
+
]),
|
|
156
168
|
["operator", stream.operator],
|
|
157
169
|
["serviceRef", stream.serviceRef],
|
|
158
170
|
["deposit", formatUsdc(stream.deposit)],
|
package/dist/cli/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAEL,0BAA0B,EAC1B,eAAe,GAEhB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,YAAY,GAEb,MAAM,mBAAmB,CAAC;AAgC3B;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAgD,EAChD,yBAAwC,EACxC,UAAkB;IAElB,MAAM,MAAM,GACV,MAAM,CAAC,QAAQ,GAAG,CAAC;QACjB,CAAC,CAAC,MAAM,CAAC,QAAQ;QACjB,CAAC,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS;YAC9B,CAAC,CAAC,MAAM,CAAC,SAAS;YAClB,CAAC,CAAC,IAAI,CAAC;IACb,MAAM,WAAW,GACf,yBAAyB,KAAK,IAAI,IAAI,yBAAyB,GAAG,CAAC;QACjE,CAAC,CAAC,yBAAyB;QAC3B,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACL,MAAM;QACN,WAAW;QACX,OAAO,EAAE,MAAM,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,IAAI,WAAW,GAAG,MAAM,CAAC;KAC3E,CAAC;AACJ,CAAC;AAiDD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,IAAmB,EACnB,QAAuB,EACvB,UAAkB;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/cli/status.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/wallet.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ import { type PrivyCliWalletSource, type PrivySpendPolicy } from "./privy.js";
|
|
|
12
12
|
*
|
|
13
13
|
* ## Resolution order (first match wins, checked in this order)
|
|
14
14
|
*
|
|
15
|
-
* 1. `METRIK_AGENT_PRIVATE_KEY` — a raw
|
|
15
|
+
* 1. `METRIK_AGENT_PRIVATE_KEY` — a raw testnet key.
|
|
16
16
|
* 2. The `CDP_*` / `METRIK_AGENT_CDP_*` quartet — a Coinbase CDP Server Wallet
|
|
17
17
|
* v2 account, resolved through this package's own `resolveAgentWallet()`.
|
|
18
18
|
* 3. The `METRIK_AGENT_PRIVY_*` variables — a Privy wallet reached through a
|
package/dist/cli/wallet.js
CHANGED
|
@@ -13,7 +13,7 @@ import { PRIVY_ENV_VARS, PRIVY_SESSION_ENV_VARS, PRIVY_WALLET_KEY_ENV, resolvePr
|
|
|
13
13
|
*
|
|
14
14
|
* ## Resolution order (first match wins, checked in this order)
|
|
15
15
|
*
|
|
16
|
-
* 1. `METRIK_AGENT_PRIVATE_KEY` — a raw
|
|
16
|
+
* 1. `METRIK_AGENT_PRIVATE_KEY` — a raw testnet key.
|
|
17
17
|
* 2. The `CDP_*` / `METRIK_AGENT_CDP_*` quartet — a Coinbase CDP Server Wallet
|
|
18
18
|
* v2 account, resolved through this package's own `resolveAgentWallet()`.
|
|
19
19
|
* 3. The `METRIK_AGENT_PRIVY_*` variables — a Privy wallet reached through a
|
|
@@ -57,7 +57,7 @@ const PURPOSE_TEXT = {
|
|
|
57
57
|
transaction: "signs a transaction",
|
|
58
58
|
capability: "signs an off-chain EIP-712 invocation capability (no transaction is broadcast)",
|
|
59
59
|
};
|
|
60
|
-
const WALLET_HINT = `export ${PRIVATE_KEY_ENV}=0x… (a funded
|
|
60
|
+
const WALLET_HINT = `export ${PRIVATE_KEY_ENV}=0x… (a funded testnet key), configure a Coinbase CDP wallet with ` +
|
|
61
61
|
`${CDP_ENV_VARS.join(", ")}, or configure a Privy wallet with ${PRIVY_WALLET_KEY_ENV} (agent-owned) or ` +
|
|
62
62
|
`${PRIVY_SESSION_ENV_VARS.join(", ")} (broker session). All are read from the environment only — never pass a credential as a command-line flag.`;
|
|
63
63
|
/**
|
package/dist/cli/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/cli/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAIpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,GAGtB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,0BAA0B,CAAC;AAE1D,qFAAqF;AACrF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,gBAAgB;IAChB,oBAAoB;IACpB,mBAAmB;IACnB,6BAA6B;CACrB,CAAC;AAEX,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AASpB,MAAM,YAAY,GAA+B;IAC/C,WAAW,EAAE,qBAAqB;IAClC,UAAU,EACR,gFAAgF;CACnF,CAAC;AAwCF,MAAM,WAAW,GACf,UAAU,eAAe,
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/cli/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { SignedRateBoundsError, type SignedRateBounds } from "../gateway/signed-rate-bounds.js";
|
|
2
|
+
/**
|
|
3
|
+
* The buyer-side twin of the gateway's signed-rate check.
|
|
4
|
+
*
|
|
5
|
+
* `StreamEscrowV2.openStream` accepts any non-zero `ratePerSecond`; the band a
|
|
6
|
+
* seller will actually SERVE lives in its operator-signed descriptor
|
|
7
|
+
* (`commercial.minRatePerSecond` / `maxRatePerSecond`), and the seller's
|
|
8
|
+
* capability gateway answers every request on an out-of-band stream with
|
|
9
|
+
* `403 stream-rate-out-of-bounds`. Opening such a stream locks the buyer's
|
|
10
|
+
* deposit in a stream that can never be served, so every buyer surface that
|
|
11
|
+
* takes a caller-chosen rate checks it against the SAME band, with the SAME
|
|
12
|
+
* verification ({@link verifySignedRateBounds}), before anything is broadcast.
|
|
13
|
+
*
|
|
14
|
+
* Nothing here is a second signature implementation: the bounds come only out
|
|
15
|
+
* of `verifySignedRateBounds`, which re-derives the serviceRef from the signed
|
|
16
|
+
* content and recovers the operator's EIP-712 signature.
|
|
17
|
+
*/
|
|
18
|
+
/** A listing as discovery hands it over: the serviceRef and its signed record. */
|
|
19
|
+
export interface RateBandListing {
|
|
20
|
+
readonly serviceRef: string;
|
|
21
|
+
readonly signed: unknown;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The operator-signed rate band of a verified listing.
|
|
25
|
+
*
|
|
26
|
+
* - `null`: the listing is a legacy service BINDING, which carries no
|
|
27
|
+
* commercial terms, so the operator signed no band and there is nothing to
|
|
28
|
+
* enforce (the gateway enforces none either).
|
|
29
|
+
* - a {@link SignedRateBounds}: the descriptor verified. Either bound may still
|
|
30
|
+
* be `null` when the operator signed only one side, or none.
|
|
31
|
+
*
|
|
32
|
+
* Throws {@link SignedRateBoundsError} when the record IS a descriptor but does
|
|
33
|
+
* not verify, or verifies for a different serviceRef than the listing claims.
|
|
34
|
+
* Callers must treat that as a refusal: a band that cannot be verified is not a
|
|
35
|
+
* band that can be assumed absent.
|
|
36
|
+
*/
|
|
37
|
+
export declare function listingRateBand(listing: RateBandListing): Promise<SignedRateBounds | null>;
|
|
38
|
+
/**
|
|
39
|
+
* The signed band in both units, e.g. `100..10000 atomic/s (0.0001..0.01
|
|
40
|
+
* USDC/s)`. A one-sided band reads `at least 100 atomic/s (…)` /
|
|
41
|
+
* `at most 10000 atomic/s (…)`.
|
|
42
|
+
*/
|
|
43
|
+
export declare function describeRateBand(bounds: SignedRateBounds): string;
|
|
44
|
+
/**
|
|
45
|
+
* `undefined` when `rate` is inside the operator-signed band (bounds are
|
|
46
|
+
* inclusive, exactly as the gateway applies them), otherwise an actionable
|
|
47
|
+
* refusal naming the band in atomic units and USDC. `rateLabel` is how the
|
|
48
|
+
* caller supplied the rate (`--rate`, `ratePerSecondUsdc`).
|
|
49
|
+
*/
|
|
50
|
+
export declare function rateBandRefusal(rate: bigint, bounds: SignedRateBounds, rateLabel: string): string | undefined;
|
|
51
|
+
/**
|
|
52
|
+
* Outcome of {@link checkListedRateBand}: `ok: false` is a refusal, and its
|
|
53
|
+
* `message` is safe to hand straight back to the caller.
|
|
54
|
+
*/
|
|
55
|
+
export type ListedRateBandCheck = {
|
|
56
|
+
readonly ok: true;
|
|
57
|
+
/** `unlisted`: no verified listing, so no operator-signed band exists. */
|
|
58
|
+
readonly band: "in-band" | "no-band-signed" | "unlisted";
|
|
59
|
+
} | {
|
|
60
|
+
readonly ok: false;
|
|
61
|
+
readonly message: string;
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Discover the serviceRef's verified listing(s) and check `rate` against every
|
|
65
|
+
* operator-signed band among them, for a surface that has no listing in hand.
|
|
66
|
+
*
|
|
67
|
+
* Fail closed: a registry that cannot be read means a signed band may exist and
|
|
68
|
+
* is unknown, so it is a refusal — never a pass. A serviceRef with no verified
|
|
69
|
+
* listing has no signed band to violate, and is allowed (these surfaces never
|
|
70
|
+
* required a listing to hire).
|
|
71
|
+
*/
|
|
72
|
+
export declare function checkListedRateBand(discover: () => Promise<readonly RateBandListing[]>, serviceRef: string, rate: bigint, rateLabel: string): Promise<ListedRateBandCheck>;
|
|
73
|
+
export { SignedRateBoundsError };
|
|
74
|
+
//# sourceMappingURL=rate-band.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-band.d.ts","sourceRoot":"","sources":["../../src/discovery/rate-band.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,qBAAqB,EAErB,KAAK,gBAAgB,EACtB,MAAM,kCAAkC,CAAC;AAE1C;;;;;;;;;;;;;;;GAeG;AAEH,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAgBlC;AAOD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAYjE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,SAAS,CAIpB;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B;IACE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,0EAA0E;IAC1E,QAAQ,CAAC,IAAI,EAAE,SAAS,GAAG,gBAAgB,GAAG,UAAU,CAAC;CAC1D,GACD;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD;;;;;;;;GAQG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,OAAO,CAAC,SAAS,eAAe,EAAE,CAAC,EACnD,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,mBAAmB,CAAC,CAqC9B;AAED,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|