@absol-labs/agent 0.10.0 → 0.12.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -30
- package/dist/capability/invocation-capability.d.ts +20 -8
- package/dist/capability/invocation-capability.d.ts.map +1 -1
- package/dist/capability/invocation-capability.js.map +1 -1
- package/dist/capability/probe-capability.d.ts +225 -0
- package/dist/capability/probe-capability.d.ts.map +1 -0
- package/dist/capability/probe-capability.js +248 -0
- package/dist/capability/probe-capability.js.map +1 -0
- package/dist/cli/args.d.ts +11 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +23 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/commands/claim.d.ts.map +1 -1
- package/dist/cli/commands/claim.js +21 -5
- package/dist/cli/commands/claim.js.map +1 -1
- package/dist/cli/commands/close.d.ts.map +1 -1
- package/dist/cli/commands/close.js +51 -7
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/invoke.d.ts +2 -0
- package/dist/cli/commands/invoke.d.ts.map +1 -1
- package/dist/cli/commands/invoke.js +3 -2
- package/dist/cli/commands/invoke.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +15 -2
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/open.d.ts.map +1 -1
- package/dist/cli/commands/open.js +121 -15
- package/dist/cli/commands/open.js.map +1 -1
- package/dist/cli/commands/pay.d.ts +19 -0
- package/dist/cli/commands/pay.d.ts.map +1 -0
- package/dist/cli/commands/pay.js +355 -0
- package/dist/cli/commands/pay.js.map +1 -0
- package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -1
- package/dist/cli/commands/reclaim-unverified.js +15 -6
- package/dist/cli/commands/reclaim-unverified.js.map +1 -1
- package/dist/cli/commands/reclaim.d.ts +23 -2
- package/dist/cli/commands/reclaim.d.ts.map +1 -1
- package/dist/cli/commands/reclaim.js +200 -21
- package/dist/cli/commands/reclaim.js.map +1 -1
- package/dist/cli/commands/refund.d.ts +13 -0
- package/dist/cli/commands/refund.d.ts.map +1 -0
- package/dist/cli/commands/refund.js +224 -0
- package/dist/cli/commands/refund.js.map +1 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +10 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/streams.js +9 -13
- package/dist/cli/commands/streams.js.map +1 -1
- package/dist/cli/commands/watch.d.ts.map +1 -1
- package/dist/cli/commands/watch.js +2 -1
- package/dist/cli/commands/watch.js.map +1 -1
- package/dist/cli/config.d.ts +44 -26
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +88 -38
- package/dist/cli/config.js.map +1 -1
- package/dist/cli/deps.d.ts +86 -7
- package/dist/cli/deps.d.ts.map +1 -1
- package/dist/cli/deps.js +102 -16
- package/dist/cli/deps.js.map +1 -1
- package/dist/cli/errors.d.ts.map +1 -1
- package/dist/cli/errors.js +21 -1
- package/dist/cli/errors.js.map +1 -1
- package/dist/cli/escape-hatch.d.ts +6 -4
- package/dist/cli/escape-hatch.d.ts.map +1 -1
- package/dist/cli/escape-hatch.js +6 -2
- package/dist/cli/escape-hatch.js.map +1 -1
- package/dist/cli/listings.d.ts +18 -0
- package/dist/cli/listings.d.ts.map +1 -1
- package/dist/cli/listings.js +22 -12
- package/dist/cli/listings.js.map +1 -1
- package/dist/cli/preflight.d.ts +20 -14
- package/dist/cli/preflight.d.ts.map +1 -1
- package/dist/cli/preflight.js +34 -20
- package/dist/cli/preflight.js.map +1 -1
- package/dist/cli/privy.d.ts +83 -0
- package/dist/cli/privy.d.ts.map +1 -0
- package/dist/cli/privy.js +232 -0
- package/dist/cli/privy.js.map +1 -0
- package/dist/cli/reclaimability.d.ts +82 -0
- package/dist/cli/reclaimability.d.ts.map +1 -0
- package/dist/cli/reclaimability.js +80 -0
- package/dist/cli/reclaimability.js.map +1 -0
- package/dist/cli/run.d.ts +2 -1
- package/dist/cli/run.d.ts.map +1 -1
- package/dist/cli/run.js +40 -11
- package/dist/cli/run.js.map +1 -1
- package/dist/cli/scan-range.d.ts +2 -2
- package/dist/cli/scan-range.js +2 -2
- package/dist/cli/spend-policy.d.ts +60 -0
- package/dist/cli/spend-policy.d.ts.map +1 -0
- package/dist/cli/spend-policy.js +65 -0
- package/dist/cli/spend-policy.js.map +1 -0
- package/dist/cli/status.d.ts +3 -1
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +15 -3
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/wallet.d.ts +109 -40
- package/dist/cli/wallet.d.ts.map +1 -1
- package/dist/cli/wallet.js +109 -44
- package/dist/cli/wallet.js.map +1 -1
- package/dist/discovery/rate-band.d.ts +74 -0
- package/dist/discovery/rate-band.d.ts.map +1 -0
- package/dist/discovery/rate-band.js +114 -0
- package/dist/discovery/rate-band.js.map +1 -0
- package/dist/escrow-generation.d.ts +81 -0
- package/dist/escrow-generation.d.ts.map +1 -0
- package/dist/escrow-generation.js +76 -0
- package/dist/escrow-generation.js.map +1 -0
- package/dist/frameworks/agentkit.d.ts +8 -4
- package/dist/frameworks/agentkit.d.ts.map +1 -1
- package/dist/frameworks/agentkit.js +27 -10
- package/dist/frameworks/agentkit.js.map +1 -1
- package/dist/frameworks/eliza.d.ts +3 -3
- package/dist/frameworks/eliza.d.ts.map +1 -1
- package/dist/frameworks/eliza.js +15 -6
- package/dist/frameworks/eliza.js.map +1 -1
- package/dist/frameworks/langchain.d.ts.map +1 -1
- package/dist/frameworks/langchain.js +8 -0
- package/dist/frameworks/langchain.js.map +1 -1
- package/dist/gateway/caller-auth-gateway.d.ts +91 -4
- package/dist/gateway/caller-auth-gateway.d.ts.map +1 -1
- package/dist/gateway/caller-auth-gateway.js +184 -7
- package/dist/gateway/caller-auth-gateway.js.map +1 -1
- package/dist/gateway/http-server.d.ts +121 -1
- package/dist/gateway/http-server.d.ts.map +1 -1
- package/dist/gateway/http-server.js +474 -5
- package/dist/gateway/http-server.js.map +1 -1
- package/dist/gateway/probe-auth.d.ts +112 -0
- package/dist/gateway/probe-auth.d.ts.map +1 -0
- package/dist/gateway/probe-auth.js +127 -0
- package/dist/gateway/probe-auth.js.map +1 -0
- package/dist/gateway/signed-rate-bounds.d.ts +51 -0
- package/dist/gateway/signed-rate-bounds.d.ts.map +1 -0
- package/dist/gateway/signed-rate-bounds.js +94 -0
- package/dist/gateway/signed-rate-bounds.js.map +1 -0
- package/dist/gateway/x402-opener-mode.d.ts +215 -0
- package/dist/gateway/x402-opener-mode.d.ts.map +1 -0
- package/dist/gateway/x402-opener-mode.js +639 -0
- package/dist/gateway/x402-opener-mode.js.map +1 -0
- package/dist/index.d.ts +11 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/mandates/env.d.ts +3 -2
- package/dist/mandates/env.d.ts.map +1 -1
- package/dist/mandates/env.js +3 -2
- package/dist/mandates/env.js.map +1 -1
- package/dist/mcp/server.d.ts +100 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +719 -39
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/service-invoker.d.ts +97 -0
- package/dist/mcp/service-invoker.d.ts.map +1 -0
- package/dist/mcp/service-invoker.js +167 -0
- package/dist/mcp/service-invoker.js.map +1 -0
- package/dist/mcp/x402-tools.d.ts +104 -0
- package/dist/mcp/x402-tools.d.ts.map +1 -0
- package/dist/mcp/x402-tools.js +434 -0
- package/dist/mcp/x402-tools.js.map +1 -0
- package/dist/network.d.ts +119 -0
- package/dist/network.d.ts.map +1 -0
- package/dist/network.js +199 -0
- package/dist/network.js.map +1 -0
- package/dist/sdk/invoke.d.ts +23 -4
- package/dist/sdk/invoke.d.ts.map +1 -1
- package/dist/sdk/invoke.js +71 -10
- package/dist/sdk/invoke.js.map +1 -1
- package/dist/wallet/autonomous-wallet-broker.d.ts +3 -0
- package/dist/wallet/autonomous-wallet-broker.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet-broker.js +27 -23
- package/dist/wallet/autonomous-wallet-broker.js.map +1 -1
- package/dist/wallet/autonomous-wallet-protocol.d.ts +8 -2
- package/dist/wallet/autonomous-wallet-protocol.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet-protocol.js +9 -2
- package/dist/wallet/autonomous-wallet-protocol.js.map +1 -1
- package/dist/wallet/autonomous-wallet.d.ts.map +1 -1
- package/dist/wallet/autonomous-wallet.js +3 -2
- package/dist/wallet/autonomous-wallet.js.map +1 -1
- package/dist/wallet/broker-escrows.d.ts +222 -0
- package/dist/wallet/broker-escrows.d.ts.map +1 -0
- package/dist/wallet/broker-escrows.js +36 -0
- package/dist/wallet/broker-escrows.js.map +1 -0
- package/dist/wallet/lifecycle.d.ts +21 -5
- package/dist/wallet/lifecycle.d.ts.map +1 -1
- package/dist/wallet/lifecycle.js +32 -12
- package/dist/wallet/lifecycle.js.map +1 -1
- package/dist/wallet/privy-broker-server.d.ts.map +1 -1
- package/dist/wallet/privy-broker-server.js +31 -26
- package/dist/wallet/privy-broker-server.js.map +1 -1
- package/dist/wallet/privy-session-broker.d.ts +14 -5
- package/dist/wallet/privy-session-broker.d.ts.map +1 -1
- package/dist/wallet/privy-session-broker.js +29 -17
- package/dist/wallet/privy-session-broker.js.map +1 -1
- package/dist/wallet/privy-session-provider.d.ts +3 -1
- package/dist/wallet/privy-session-provider.d.ts.map +1 -1
- package/dist/wallet/privy-session-provider.js +5 -3
- package/dist/wallet/privy-session-provider.js.map +1 -1
- package/dist/wallet/provider.d.ts.map +1 -1
- package/dist/wallet/provider.js +15 -8
- package/dist/wallet/provider.js.map +1 -1
- package/dist/x402/facilitator.d.ts +42 -17
- package/dist/x402/facilitator.d.ts.map +1 -1
- package/dist/x402/facilitator.js +49 -33
- package/dist/x402/facilitator.js.map +1 -1
- package/dist/x402-buyer/guarded-fetch.d.ts +51 -0
- package/dist/x402-buyer/guarded-fetch.d.ts.map +1 -0
- package/dist/x402-buyer/guarded-fetch.js +147 -0
- package/dist/x402-buyer/guarded-fetch.js.map +1 -0
- package/dist/x402-buyer/index.d.ts +10 -0
- package/dist/x402-buyer/index.d.ts.map +1 -0
- package/dist/x402-buyer/index.js +10 -0
- package/dist/x402-buyer/index.js.map +1 -0
- package/dist/x402-buyer/pay.d.ts +135 -0
- package/dist/x402-buyer/pay.d.ts.map +1 -0
- package/dist/x402-buyer/pay.js +336 -0
- package/dist/x402-buyer/pay.js.map +1 -0
- package/dist/x402-opener/abi.d.ts +684 -0
- package/dist/x402-opener/abi.d.ts.map +1 -0
- package/dist/x402-opener/abi.js +880 -0
- package/dist/x402-opener/abi.js.map +1 -0
- package/dist/x402-opener/facilitator-entry.d.ts +3 -0
- package/dist/x402-opener/facilitator-entry.d.ts.map +1 -0
- package/dist/x402-opener/facilitator-entry.js +37 -0
- package/dist/x402-opener/facilitator-entry.js.map +1 -0
- package/dist/x402-opener/facilitator-server.d.ts +180 -0
- package/dist/x402-opener/facilitator-server.d.ts.map +1 -0
- package/dist/x402-opener/facilitator-server.js +696 -0
- package/dist/x402-opener/facilitator-server.js.map +1 -0
- package/dist/x402-opener/index.d.ts +14 -0
- package/dist/x402-opener/index.d.ts.map +1 -0
- package/dist/x402-opener/index.js +14 -0
- package/dist/x402-opener/index.js.map +1 -0
- package/dist/x402-opener/listing-resolver.d.ts +55 -0
- package/dist/x402-opener/listing-resolver.d.ts.map +1 -0
- package/dist/x402-opener/listing-resolver.js +125 -0
- package/dist/x402-opener/listing-resolver.js.map +1 -0
- package/dist/x402-opener/refund-relay.d.ts +240 -0
- package/dist/x402-opener/refund-relay.d.ts.map +1 -0
- package/dist/x402-opener/refund-relay.js +1240 -0
- package/dist/x402-opener/refund-relay.js.map +1 -0
- package/dist/x402-opener/relayer-queue.d.ts +14 -0
- package/dist/x402-opener/relayer-queue.d.ts.map +1 -0
- package/dist/x402-opener/relayer-queue.js +18 -0
- package/dist/x402-opener/relayer-queue.js.map +1 -0
- package/dist/x402-opener/scheme.d.ts +217 -0
- package/dist/x402-opener/scheme.d.ts.map +1 -0
- package/dist/x402-opener/scheme.js +749 -0
- package/dist/x402-opener/scheme.js.map +1 -0
- package/dist/x402-opener/terms.d.ts +105 -0
- package/dist/x402-opener/terms.d.ts.map +1 -0
- package/dist/x402-opener/terms.js +212 -0
- package/dist/x402-opener/terms.js.map +1 -0
- package/dist/zktls/reclaim.d.ts +2 -2
- package/docs/agent-layer.md +13 -8
- package/docs/autonomous-privy-wallet.md +188 -0
- package/docs/cli.md +342 -53
- package/docs/langchain.md +5 -0
- package/docs/mcp-hosted.md +4 -3
- package/docs/mcp-reference.md +245 -0
- package/docs/probe-capability.md +191 -0
- package/docs/quickstart.md +54 -5
- package/docs/threat-model.md +24 -3
- package/docs/x402.md +681 -0
- package/package.json +19 -6
- package/src/capability/invocation-capability.ts +17 -1
- package/src/capability/probe-capability.ts +355 -0
- package/src/cli/args.ts +29 -0
- package/src/cli/commands/claim.ts +31 -5
- package/src/cli/commands/close.ts +56 -7
- package/src/cli/commands/invoke.ts +6 -2
- package/src/cli/commands/mcp.ts +18 -2
- package/src/cli/commands/open.ts +151 -14
- package/src/cli/commands/pay.ts +442 -0
- package/src/cli/commands/reclaim-unverified.ts +24 -6
- package/src/cli/commands/reclaim.ts +274 -19
- package/src/cli/commands/refund.ts +277 -0
- package/src/cli/commands/status.ts +17 -1
- package/src/cli/commands/streams.ts +11 -15
- package/src/cli/commands/watch.ts +7 -1
- package/src/cli/config.ts +139 -52
- package/src/cli/deps.ts +189 -25
- package/src/cli/errors.ts +24 -1
- package/src/cli/escape-hatch.ts +19 -5
- package/src/cli/listings.ts +43 -10
- package/src/cli/preflight.ts +36 -21
- package/src/cli/privy.ts +398 -0
- package/src/cli/reclaimability.ts +154 -0
- package/src/cli/run.ts +54 -11
- package/src/cli/scan-range.ts +2 -2
- package/src/cli/spend-policy.ts +139 -0
- package/src/cli/status.ts +14 -1
- package/src/cli/wallet.ts +189 -58
- package/src/discovery/rate-band.ts +172 -0
- package/src/escrow-generation.ts +135 -0
- package/src/frameworks/agentkit.ts +45 -11
- package/src/frameworks/eliza.ts +27 -5
- package/src/frameworks/langchain.ts +14 -0
- package/src/gateway/caller-auth-gateway.ts +336 -13
- package/src/gateway/http-server.ts +690 -7
- package/src/gateway/probe-auth.ts +191 -0
- package/src/gateway/signed-rate-bounds.ts +164 -0
- package/src/gateway/x402-opener-mode.ts +974 -0
- package/src/index.ts +112 -14
- package/src/mandates/env.ts +3 -2
- package/src/mcp/server.ts +973 -44
- package/src/mcp/service-invoker.ts +285 -0
- package/src/mcp/x402-tools.ts +621 -0
- package/src/network.ts +302 -0
- package/src/sdk/invoke.ts +96 -17
- package/src/wallet/autonomous-wallet-broker.ts +46 -20
- package/src/wallet/autonomous-wallet-protocol.ts +11 -2
- package/src/wallet/autonomous-wallet.ts +4 -2
- package/src/wallet/broker-escrows.ts +66 -0
- package/src/wallet/lifecycle.ts +53 -18
- package/src/wallet/privy-broker-server.ts +35 -25
- package/src/wallet/privy-session-broker.ts +58 -25
- package/src/wallet/privy-session-provider.ts +7 -3
- package/src/wallet/provider.ts +20 -15
- package/src/x402/facilitator.ts +85 -46
- package/src/x402-buyer/guarded-fetch.ts +213 -0
- package/src/x402-buyer/index.ts +9 -0
- package/src/x402-buyer/pay.ts +517 -0
- package/src/x402-opener/abi.ts +881 -0
- package/src/x402-opener/facilitator-entry.ts +45 -0
- package/src/x402-opener/facilitator-server.ts +1014 -0
- package/src/x402-opener/index.ts +13 -0
- package/src/x402-opener/listing-resolver.ts +202 -0
- package/src/x402-opener/refund-relay.ts +1743 -0
- package/src/x402-opener/relayer-queue.ts +18 -0
- package/src/x402-opener/scheme.ts +1133 -0
- package/src/x402-opener/terms.ts +300 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { verifyMandateOwnerSignature } from "../../mandates/mandate.js";
|
|
2
|
+
import { booleanFlag, integerFlag, stringFlag } from "../args.js";
|
|
3
|
+
import { formatUsdc } from "../amounts.js";
|
|
4
|
+
import { assertTestnetRpc, parseBytes32 } from "../config.js";
|
|
5
|
+
import { CliError, configError, usageError } from "../errors.js";
|
|
6
|
+
import { signRecoveryMandate } from "../mandate.js";
|
|
7
|
+
import { isPrivyWalletSource, resolveCliWallet } from "../wallet.js";
|
|
8
|
+
/** Environment fallback for `--refund-url`. */
|
|
9
|
+
export const REFUND_URL_ENV = "METRIK_AGENT_REFUND_URL";
|
|
10
|
+
const DEFAULT_ATTEMPTS = 5;
|
|
11
|
+
const DEFAULT_MAX_WAIT_SECONDS = 60;
|
|
12
|
+
export const refundCommand = {
|
|
13
|
+
name: "refund",
|
|
14
|
+
summary: "Recover the unearned part of an x402 payment through the gasless refund relay",
|
|
15
|
+
usage: "metrik refund <streamId> --refund-url <url> [--close] [--reclaim] [--attempts 5] [--max-wait 60]",
|
|
16
|
+
flags: ["refund-url", "close", "reclaim", "attempts", "max-wait"],
|
|
17
|
+
// `--close` signs the payer's EIP-712 Close (off-chain); the RELAY broadcasts
|
|
18
|
+
// and pays the gas. `--reclaim` needs no wallet at all: `opener.reclaim` is
|
|
19
|
+
// permissionless and always pays `payerOf(streamId)`.
|
|
20
|
+
signs: false,
|
|
21
|
+
requiresKey: false,
|
|
22
|
+
async run(context) {
|
|
23
|
+
const { args, config, env, out, deps } = context;
|
|
24
|
+
if (deps.x402 === undefined) {
|
|
25
|
+
throw new CliError("this CLI build has no x402 dependency wired (CliDependencies.x402)", { exitCode: 4 });
|
|
26
|
+
}
|
|
27
|
+
const x402 = deps.x402;
|
|
28
|
+
const [streamIdArg] = args.positionals;
|
|
29
|
+
if (streamIdArg === undefined) {
|
|
30
|
+
throw usageError("metrik refund requires a <streamId>");
|
|
31
|
+
}
|
|
32
|
+
const streamId = parseBytes32(streamIdArg, "<streamId>");
|
|
33
|
+
const refundUrl = resolveRefundUrl(stringFlag(args, "refund-url") ?? env[REFUND_URL_ENV], streamId);
|
|
34
|
+
const doClose = booleanFlag(args, "close");
|
|
35
|
+
const doReclaim = booleanFlag(args, "reclaim");
|
|
36
|
+
const attempts = integerFlag(args, "attempts") ?? DEFAULT_ATTEMPTS;
|
|
37
|
+
const maxWait = integerFlag(args, "max-wait") ?? DEFAULT_MAX_WAIT_SECONDS;
|
|
38
|
+
if (attempts < 1)
|
|
39
|
+
throw usageError("--attempts must be at least 1");
|
|
40
|
+
const read = deps.createReadClient(config);
|
|
41
|
+
await assertTestnetRpc(config, () => read.getChainId());
|
|
42
|
+
// Bind the relay to the stream AS THE CHAIN SEES IT: the opener comes from
|
|
43
|
+
// `factory.isOpener(buyer)` on-chain, never from the relay's answer.
|
|
44
|
+
const stream = await read.getStreamV2(streamId);
|
|
45
|
+
const opener = stream.opener ?? null;
|
|
46
|
+
if (opener === null) {
|
|
47
|
+
throw configError(`stream ${streamId} was not opened by an x402 opener, so the refund relay does not serve it`, `the buyer is ${stream.buyer}, an ordinary wallet: use \`metrik close ${streamId}\` and \`metrik reclaim ${streamId}\` with that wallet.`);
|
|
48
|
+
}
|
|
49
|
+
const refunds = await x402.refundClient(config, {
|
|
50
|
+
refundUrl,
|
|
51
|
+
streamId,
|
|
52
|
+
opener,
|
|
53
|
+
maxAttempts: attempts,
|
|
54
|
+
maxDelayMs: maxWait * 1_000,
|
|
55
|
+
});
|
|
56
|
+
let closeResult = null;
|
|
57
|
+
if (doClose) {
|
|
58
|
+
const wallet = await resolveCliWallet(env, {
|
|
59
|
+
purpose: "capability",
|
|
60
|
+
note: out.note,
|
|
61
|
+
rpcUrl: config.rpcUrl,
|
|
62
|
+
});
|
|
63
|
+
if (isPrivyWalletSource(wallet.source)) {
|
|
64
|
+
throw configError("metrik refund --close cannot sign with a Privy wallet", "the payer signs the opener's EIP-712 Close, which the Privy broker's typed-data policy does not allow. Use the key that paid.");
|
|
65
|
+
}
|
|
66
|
+
// Buyer recovery: authorized on the mandate OWNER's signature alone, like
|
|
67
|
+
// `metrik close` — never on caps or expiry, so nothing can strand the
|
|
68
|
+
// payer's own money. The SDK then refuses a signer that is not
|
|
69
|
+
// `payerOf(streamId)` before anything is signed for the relay.
|
|
70
|
+
const mandate = await signRecoveryMandate(wallet.account, config.chainId);
|
|
71
|
+
const decision = await verifyMandateOwnerSignature(mandate);
|
|
72
|
+
if (!decision.allowed) {
|
|
73
|
+
throw new CliError(`mandate denied: ${decision.reason}`, {
|
|
74
|
+
exitCode: 3,
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
closeResult = await relay(() => refunds.close({
|
|
78
|
+
signer: wallet.account,
|
|
79
|
+
}));
|
|
80
|
+
out.note(`close relayed in ${closeResult.transaction}${closeResult.verified ? " (receipt verified on-chain)" : ""}`);
|
|
81
|
+
}
|
|
82
|
+
let reclaimResult = null;
|
|
83
|
+
if (doReclaim) {
|
|
84
|
+
reclaimResult = await relay(() => refunds.reclaim());
|
|
85
|
+
}
|
|
86
|
+
const status = await relay(() => refunds.status());
|
|
87
|
+
out.result({
|
|
88
|
+
streamId,
|
|
89
|
+
opener,
|
|
90
|
+
payer: status.payer,
|
|
91
|
+
status: status.status,
|
|
92
|
+
reclaimed: status.reclaimed,
|
|
93
|
+
reclaimable: status.reclaimable,
|
|
94
|
+
next: status.next,
|
|
95
|
+
close: closeResult === null
|
|
96
|
+
? null
|
|
97
|
+
: {
|
|
98
|
+
transaction: closeResult.transaction,
|
|
99
|
+
verified: closeResult.verified,
|
|
100
|
+
},
|
|
101
|
+
reclaim: reclaimResult === null
|
|
102
|
+
? null
|
|
103
|
+
: {
|
|
104
|
+
transaction: reclaimResult.transaction,
|
|
105
|
+
amount: reclaimResult.amount,
|
|
106
|
+
verified: reclaimResult.verified,
|
|
107
|
+
},
|
|
108
|
+
refundIsAutomatic: false,
|
|
109
|
+
});
|
|
110
|
+
out.print(`x402 stream ${streamId}`);
|
|
111
|
+
out.table(statusRows(status, closeResult, reclaimResult));
|
|
112
|
+
out.print("");
|
|
113
|
+
out.print(nextStep(status, streamId, refundUrl));
|
|
114
|
+
},
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* Accepts the relay's full stream URL, a `{streamId}` template, or the relay's
|
|
118
|
+
* base origin (`https://relay.example` -> `https://relay.example/streams/<id>`).
|
|
119
|
+
*/
|
|
120
|
+
export function resolveRefundUrl(raw, streamId) {
|
|
121
|
+
if (raw === undefined || raw.trim().length === 0) {
|
|
122
|
+
throw usageError(`metrik refund needs the seller's refund relay: pass --refund-url (printed by \`metrik pay\`) or set ${REFUND_URL_ENV}`);
|
|
123
|
+
}
|
|
124
|
+
const value = raw.trim();
|
|
125
|
+
if (value.includes("{streamId}"))
|
|
126
|
+
return value;
|
|
127
|
+
let url;
|
|
128
|
+
try {
|
|
129
|
+
url = new URL(value);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
throw usageError(`--refund-url must be an absolute http(s) URL (got "${value}")`);
|
|
133
|
+
}
|
|
134
|
+
if (/\/streams\/0x[0-9a-fA-F]{64}\/?$/.test(url.pathname))
|
|
135
|
+
return value;
|
|
136
|
+
url.pathname = `${url.pathname.replace(/\/+$/, "")}/streams/${streamId}`;
|
|
137
|
+
return url.toString();
|
|
138
|
+
}
|
|
139
|
+
async function relay(task) {
|
|
140
|
+
try {
|
|
141
|
+
return await task();
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
throw explainRefundFailure(error);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
export function explainRefundFailure(error) {
|
|
148
|
+
if (!(error instanceof Error))
|
|
149
|
+
return error;
|
|
150
|
+
switch (error.name) {
|
|
151
|
+
case "RefundNotReadyError": {
|
|
152
|
+
const retryAt = error.retryAt;
|
|
153
|
+
return new CliError(error.message, {
|
|
154
|
+
exitCode: 3,
|
|
155
|
+
hint: retryAt === undefined || retryAt === null
|
|
156
|
+
? "the relay is not ready to reclaim yet (the settlement window is open). Re-run later with --reclaim."
|
|
157
|
+
: `the relay can reclaim from ${new Date(retryAt * 1000).toISOString()}. Re-run then with --reclaim (or raise --max-wait to wait here).`,
|
|
158
|
+
cause: error,
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
case "RefundRelayError":
|
|
162
|
+
return new CliError(error.message, {
|
|
163
|
+
exitCode: 3,
|
|
164
|
+
hint: `relay refusal${error.code === undefined ? "" : ` (${error.code})`}. The payer can always recover on-chain without the relay: \`metrik close\` (as the payer, needs gas) and \`metrik reclaim\` (anyone).`,
|
|
165
|
+
cause: error,
|
|
166
|
+
});
|
|
167
|
+
case "NotStreamPayerError":
|
|
168
|
+
return new CliError(error.message, {
|
|
169
|
+
exitCode: 3,
|
|
170
|
+
hint: "only the address that paid (payerOf(streamId)) can sign the close. Nothing was signed.",
|
|
171
|
+
cause: error,
|
|
172
|
+
});
|
|
173
|
+
default:
|
|
174
|
+
return error;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
function statusRows(status, closeResult, reclaimResult) {
|
|
178
|
+
const rows = [
|
|
179
|
+
[
|
|
180
|
+
"status",
|
|
181
|
+
status.reclaimed ? `${status.status} (reclaimed)` : status.status,
|
|
182
|
+
],
|
|
183
|
+
["payer", status.payer],
|
|
184
|
+
["opener", status.opener],
|
|
185
|
+
[
|
|
186
|
+
"reclaimable",
|
|
187
|
+
status.reclaimable === null ? "-" : formatUsdc(status.reclaimable),
|
|
188
|
+
],
|
|
189
|
+
["next", status.next.action],
|
|
190
|
+
];
|
|
191
|
+
if (closeResult !== null) {
|
|
192
|
+
rows.push([
|
|
193
|
+
"close tx",
|
|
194
|
+
`${closeResult.transaction}${closeResult.verified ? " (verified)" : " (relay-reported)"}`,
|
|
195
|
+
]);
|
|
196
|
+
}
|
|
197
|
+
if (reclaimResult !== null) {
|
|
198
|
+
rows.push([
|
|
199
|
+
"reclaim tx",
|
|
200
|
+
`${reclaimResult.transaction}${reclaimResult.verified ? " (verified)" : " (relay-reported)"}`,
|
|
201
|
+
]);
|
|
202
|
+
if (reclaimResult.amount !== null) {
|
|
203
|
+
rows.push(["refunded to payer", formatUsdc(reclaimResult.amount)]);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return rows;
|
|
207
|
+
}
|
|
208
|
+
function nextStep(status, streamId, refundUrl) {
|
|
209
|
+
if (status.reclaimed) {
|
|
210
|
+
return "Reclaimed: the unearned remainder was returned to the payer.";
|
|
211
|
+
}
|
|
212
|
+
const base = `metrik refund ${streamId} --refund-url ${refundUrl}`;
|
|
213
|
+
switch (status.next.action) {
|
|
214
|
+
case "close":
|
|
215
|
+
return `Refunds are NOT automatic. The stream is still running: stop it with ${base} --close --reclaim`;
|
|
216
|
+
case "reclaim":
|
|
217
|
+
return `Refunds are NOT automatic. Reclaim the unearned remainder with ${base} --reclaim`;
|
|
218
|
+
case "wait":
|
|
219
|
+
return `Refunds are NOT automatic, and the settlement window is still open${status.next.retryAt === undefined ? "" : ` until ${new Date(status.next.retryAt * 1000).toISOString()}`}. Then run ${base} --reclaim`;
|
|
220
|
+
default:
|
|
221
|
+
return `Refunds are NOT automatic. The relay says: ${status.next.message ?? status.next.action}.`;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=refund.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refund.js","sourceRoot":"","sources":["../../../src/cli/commands/refund.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjE,eAAO,MAAM,aAAa,EAAE,WA4D3B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { attesterDisclosure } from "../attesters.js";
|
|
|
2
2
|
import { assertTestnetRpc, parseBytes32 } from "../config.js";
|
|
3
3
|
import { usageError } from "../errors.js";
|
|
4
4
|
import { readStreamReport, streamReportJson, streamReportRows, } from "../status.js";
|
|
5
|
+
import { escrowGenerationFor } from "../../escrow-generation.js";
|
|
5
6
|
export const statusCommand = {
|
|
6
7
|
name: "status",
|
|
7
8
|
summary: "Show a stream's on-chain state and its oracle-verified accrual",
|
|
@@ -21,7 +22,7 @@ export const statusCommand = {
|
|
|
21
22
|
// diverge from index 5 onward, so a wrong-chain read does not revert — it
|
|
22
23
|
// silently decodes something else into fields with the right names.
|
|
23
24
|
await assertTestnetRpc(config, () => read.getChainId());
|
|
24
|
-
const report = await readStreamReport(read, streamId, deps.nowSeconds());
|
|
25
|
+
const report = await readStreamReport(read, streamId, deps.nowSeconds(), escrowGenerationFor(config.chainId, config.escrow));
|
|
25
26
|
out.result(streamReportJson(report));
|
|
26
27
|
// Who attests, before the numbers. Printed on stderr so it survives `--json`
|
|
27
28
|
// and cannot be lost by a consumer that only parses stdout.
|
|
@@ -30,6 +31,14 @@ export const statusCommand = {
|
|
|
30
31
|
out.note(disclosure);
|
|
31
32
|
out.print(`Stream ${streamId}`);
|
|
32
33
|
out.table(streamReportRows(report));
|
|
34
|
+
const opener = report.stream.opener ?? null;
|
|
35
|
+
if (opener !== null) {
|
|
36
|
+
out.print("");
|
|
37
|
+
out.print(`Bought over x402: the escrow accepts close/reclaim only from the opener ${opener}. ` +
|
|
38
|
+
`\`metrik close ${streamId}\` (signed by the payer ${report.stream.payer}) routes through it; ` +
|
|
39
|
+
`\`metrik reclaim ${streamId}\` sends the permissionless opener.reclaim, and the refund always goes to the payer. ` +
|
|
40
|
+
"A payer with no gas can use the seller's relay instead: `metrik refund <streamId> --refund-url <url> --close --reclaim`. Nothing refunds automatically.");
|
|
41
|
+
}
|
|
33
42
|
if (report.settlement.pending) {
|
|
34
43
|
out.print("");
|
|
35
44
|
out.print("This stream has stopped but its final checkpoint has not landed, so there is no settled reclaimable figure yet — reclaim reverts until the oracle publishes a checkpoint reaching the stop time. `metrik reclaim <streamId>` waits for exactly that.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAEjE,MAAM,CAAC,MAAM,aAAa,GAAgB;IACxC,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,gEAAgE;IACzE,KAAK,EAAE,0BAA0B;IACjC,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,KAAK;IACZ,KAAK,CAAC,GAAG,CAAC,OAAuB;QAC/B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAC5C,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACvC,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,MAAM,UAAU,CAAC,qCAAqC,CAAC,CAAC;QAC1D,CAAC;QACD,MAAM,QAAQ,GAAG,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEzD,MAAM,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC3C,6EAA6E;QAC7E,uEAAuE;QACvE,0EAA0E;QAC1E,oEAAoE;QACpE,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CACnC,IAAI,EACJ,QAAQ,EACR,IAAI,CAAC,UAAU,EAAE,EACjB,mBAAmB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CACnD,CAAC;QAEF,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACrC,6EAA6E;QAC7E,4DAA4D;QAC5D,MAAM,UAAU,GAAG,kBAAkB,CACnC,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,MAAM,CAAC,QAAQ,CACvB,CAAC;QACF,IAAI,UAAU,KAAK,IAAI;YAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;QAChC,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QACpC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;QAC5C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CACP,2EAA2E,MAAM,IAAI;gBACnF,kBAAkB,QAAQ,2BAA2B,MAAM,CAAC,MAAM,CAAC,KAAK,uBAAuB;gBAC/F,oBAAoB,QAAQ,uFAAuF;gBACnH,yJAAyJ,CAC5J,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;YAC9B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CACP,sPAAsP,CACvP,CAAC;QACJ,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YAC1B,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACd,GAAG,CAAC,KAAK,CACP,mJAAmJ,CACpJ,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
|
-
import { BASE_SEPOLIA_ESCROW_V2 } from "@absol-labs/sdk";
|
|
2
1
|
import { getAddress, isAddress } from "viem";
|
|
3
2
|
import { integerFlag, stringFlag } from "../args.js";
|
|
4
3
|
import { formatUsdc } from "../amounts.js";
|
|
5
|
-
import {
|
|
4
|
+
import { assertTestnetRpc, escrowDeployBlock, } from "../config.js";
|
|
6
5
|
import { CliError, configError, usageError } from "../errors.js";
|
|
7
6
|
import { escrowScanRange } from "../scan-range.js";
|
|
8
7
|
import { optionalCliWallet, PRIVATE_KEY_ENV } from "../wallet.js";
|
|
@@ -18,7 +17,7 @@ const SCAN_CONCURRENCY = 6;
|
|
|
18
17
|
/**
|
|
19
18
|
* Attempts per window before it is reported as unscanned. A public RPC answers
|
|
20
19
|
* a burst of `eth_getLogs` with an occasional 429 — measured against
|
|
21
|
-
*
|
|
20
|
+
* the network's public RPC, 2 of 212 windows on a full-history scan — and a transient
|
|
22
21
|
* rate-limit is NOT a window that cannot be scanned. Declaring it one would
|
|
23
22
|
* make the "this scan is incomplete" warning routine, and a warning that fires
|
|
24
23
|
* on every healthy run is a warning nobody reads on the run that matters.
|
|
@@ -49,7 +48,7 @@ export const streamsCommand = {
|
|
|
49
48
|
// index 5 onward — a wrong-chain read does not revert, it decodes something
|
|
50
49
|
// else into fields with the right names.
|
|
51
50
|
await assertTestnetRpc(config, () => read.getChainId());
|
|
52
|
-
const anchor = resolveAnchorBlock(args, config
|
|
51
|
+
const anchor = resolveAnchorBlock(args, config);
|
|
53
52
|
const head = await read.blockNumber();
|
|
54
53
|
const range = escrowScanRange(head, anchor.block);
|
|
55
54
|
// Retention canary, before the scan is believed. A node that has pruned its
|
|
@@ -171,7 +170,7 @@ async function resolveScanAddress(context) {
|
|
|
171
170
|
// is simply the default subject.
|
|
172
171
|
const wallet = await optionalCliWallet(env, { note: out.note });
|
|
173
172
|
if (wallet === null) {
|
|
174
|
-
throw configError("metrik streams needs a wallet to know whose streams to list", `pass --address 0x… to list any address's streams without one, or set ${PRIVATE_KEY_ENV} (or the CDP variables).`);
|
|
173
|
+
throw configError("metrik streams needs a wallet to know whose streams to list", `pass --address 0x… to list any address's streams without one, or set ${PRIVATE_KEY_ENV} (or the CDP or Privy variables).`);
|
|
175
174
|
}
|
|
176
175
|
return wallet.account.address;
|
|
177
176
|
}
|
|
@@ -184,19 +183,16 @@ async function resolveScanAddress(context) {
|
|
|
184
183
|
* constant for — so an overridden `--escrow` or `--from-block` scans without a
|
|
185
184
|
* canary rather than with a meaningless one.
|
|
186
185
|
*/
|
|
187
|
-
function resolveAnchorBlock(args,
|
|
186
|
+
function resolveAnchorBlock(args, config) {
|
|
188
187
|
const override = integerFlag(args, "from-block");
|
|
189
|
-
const
|
|
188
|
+
const deployBlock = escrowDeployBlock(config);
|
|
190
189
|
if (override !== undefined) {
|
|
191
190
|
return { block: BigInt(override), canary: null };
|
|
192
191
|
}
|
|
193
|
-
if (
|
|
194
|
-
throw configError(`no scan anchor is known for escrow ${escrow}`,
|
|
192
|
+
if (deployBlock === undefined) {
|
|
193
|
+
throw configError(`no scan anchor is known for escrow ${config.escrow}`, `the scan is anchored at the escrow's deploy block, and the network registry only records it for ${config.network.name}'s registered escrow (${config.network.escrow.address}). Pass --from-block <deploy block> for a different escrow.`);
|
|
195
194
|
}
|
|
196
|
-
return {
|
|
197
|
-
block: BASE_SEPOLIA_ESCROW_V2_DEPLOY_BLOCK,
|
|
198
|
-
canary: BASE_SEPOLIA_ESCROW_V2_DEPLOY_BLOCK,
|
|
199
|
-
};
|
|
195
|
+
return { block: deployBlock, canary: deployBlock };
|
|
200
196
|
}
|
|
201
197
|
/**
|
|
202
198
|
* Page every window for every selected role filter, bounded concurrency.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../src/cli/commands/streams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../src/cli/commands/streams.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAKjE,eAAO,MAAM,YAAY,EAAE,WA8D1B,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { integerFlag } from "../args.js";
|
|
|
2
2
|
import { assertTestnetRpc, parseBytes32 } from "../config.js";
|
|
3
3
|
import { describeError, usageError } from "../errors.js";
|
|
4
4
|
import { readStreamReport, streamReportJson, streamReportRows, } from "../status.js";
|
|
5
|
+
import { escrowGenerationFor } from "../../escrow-generation.js";
|
|
5
6
|
const DEFAULT_INTERVAL_SECONDS = 15;
|
|
6
7
|
export const watchCommand = {
|
|
7
8
|
name: "watch",
|
|
@@ -30,7 +31,7 @@ export const watchCommand = {
|
|
|
30
31
|
await deps.sleep(interval * 1_000);
|
|
31
32
|
let report;
|
|
32
33
|
try {
|
|
33
|
-
report = await readStreamReport(read, streamId, deps.nowSeconds());
|
|
34
|
+
report = await readStreamReport(read, streamId, deps.nowSeconds(), escrowGenerationFor(config.chainId, config.escrow));
|
|
34
35
|
}
|
|
35
36
|
catch (error) {
|
|
36
37
|
// A transient RPC blip must not end a long watch.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/config.d.ts
CHANGED
|
@@ -1,48 +1,66 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { MetrikNetwork } from "@absol-labs/sdk";
|
|
2
|
+
import { type Chain } from "viem";
|
|
2
3
|
import { type ParsedArgs } from "./args.js";
|
|
3
4
|
/**
|
|
4
|
-
* TESTNET ONLY — the
|
|
5
|
+
* TESTNET ONLY — the CLI settles only on registered networks the SDK registry
|
|
6
|
+
* marks `testnet: true`.
|
|
5
7
|
*
|
|
6
8
|
* Metrik's escrow moves real USDC the moment it is pointed at a mainnet chain,
|
|
7
9
|
* and this CLI signs with a raw private key read from the environment. So the
|
|
8
|
-
* chain is an allowlist, not a default:
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* chain is an allowlist, not a default: a chain the registry does not know, or
|
|
11
|
+
* one it knows as a mainnet, is refused outright, with no override flag. There
|
|
12
|
+
* is deliberately no `--allow-mainnet` — an escape hatch that re-enables real
|
|
13
|
+
* funds would defeat the guarantee.
|
|
12
14
|
*
|
|
13
|
-
* The allowlist is enforced TWICE: once against the configured/declared
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* The allowlist is enforced TWICE: once against the configured/declared network,
|
|
16
|
+
* and again against the chain id the RPC endpoint actually reports before any
|
|
17
|
+
* fund-moving command signs anything (see `assertTestnetRpc`). The second check
|
|
18
|
+
* is what stops a testnet `--chain-id` paired with a mainnet `--rpc-url`.
|
|
17
19
|
*/
|
|
18
|
-
export declare const
|
|
20
|
+
export declare const CLI_NETWORK_POLICY: {
|
|
21
|
+
readonly testnetOnly: true;
|
|
22
|
+
};
|
|
23
|
+
/** Chain ids of every registered testnet this CLI will settle against. */
|
|
24
|
+
export declare function testnetChainIds(): number[];
|
|
19
25
|
/**
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
* Verified against Base Sepolia on 2026-09-17: `eth_getLogs` for this single
|
|
24
|
-
* block returns 6 escrow logs (the deployment's own events). History is
|
|
25
|
-
* immutable, so that is a stable known answer forever, which is what lets the
|
|
26
|
-
* same block serve as the log-retention canary in `metrik streams`.
|
|
27
|
-
*
|
|
28
|
-
* It is tied to that ONE address. A run pointed at a different `--escrow` has
|
|
29
|
-
* no anchor and must be given `--from-block`, rather than silently scanning
|
|
30
|
-
* from a block that means nothing for it.
|
|
26
|
+
* @deprecated Snapshot of {@link testnetChainIds} at import time. A network
|
|
27
|
+
* registered later is not in it; call `testnetChainIds()` instead.
|
|
31
28
|
*/
|
|
32
|
-
export declare const
|
|
29
|
+
export declare const TESTNET_CHAIN_IDS: readonly number[];
|
|
33
30
|
export interface CliConfig {
|
|
34
|
-
|
|
31
|
+
/** The registered network this run settles on (from the SDK registry). */
|
|
32
|
+
readonly network: MetrikNetwork;
|
|
33
|
+
readonly chain: Chain;
|
|
35
34
|
readonly chainId: number;
|
|
36
35
|
readonly rpcUrl: string;
|
|
37
36
|
readonly escrow: `0x${string}`;
|
|
38
37
|
readonly usdc: `0x${string}`;
|
|
39
38
|
readonly oracleBaseUrl: string;
|
|
40
39
|
readonly registryUrl: string;
|
|
40
|
+
/**
|
|
41
|
+
* Set ONLY for an `--escrow` the registry does not record, from the explicit
|
|
42
|
+
* `--escrow-generation`: the SDK then opts out of its code-hash pin
|
|
43
|
+
* (`allowUnregisteredEscrow`). A registered escrow's generation comes from
|
|
44
|
+
* the registry.
|
|
45
|
+
*/
|
|
46
|
+
readonly unregisteredEscrowGeneration?: "v2" | "v3";
|
|
41
47
|
}
|
|
42
48
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
49
|
+
* The block the configured escrow was deployed at — the anchor of every escrow
|
|
50
|
+
* log scan — or `undefined` when the escrow is not the network's registered
|
|
51
|
+
* escrow (a run pointed at a different `--escrow` has no anchor and must be
|
|
52
|
+
* given `--from-block`, rather than silently scanning from a block that means
|
|
53
|
+
* nothing for it).
|
|
54
|
+
*/
|
|
55
|
+
export declare function escrowDeployBlock(config: CliConfig): bigint | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* Resolves settlement configuration from flags, then env, then the network's
|
|
58
|
+
* registry defaults — so `metrik discover` works with nothing configured at
|
|
45
59
|
* all, while every value stays overridable.
|
|
60
|
+
*
|
|
61
|
+
* The network is selected by `--network` / `METRIK_NETWORK` (registry id,
|
|
62
|
+
* chain id or CAIP-2 id) or by `--chain-id` / `METRIK_AGENT_CHAIN_ID`; giving
|
|
63
|
+
* both is allowed only when they agree.
|
|
46
64
|
*/
|
|
47
65
|
export declare function resolveConfig(args: ParsedArgs, env: NodeJS.ProcessEnv): CliConfig;
|
|
48
66
|
/** Flags every command accepts for settlement configuration. */
|
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAyB,KAAK,KAAK,EAAE,MAAM,MAAM,CAAC;AAWzD,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAErE;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,kBAAkB;;CAAiC,CAAC;AAEjE,0EAA0E;AAC1E,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAED;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAsB,CAAC;AAEtE,MAAM,WAAW,SAAS;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,4BAA4B,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACrD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,CAGvE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,SAAS,CAwEX;AAkCD,gEAAgE;AAChE,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EASzC,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAqB,CAAC;AAEhE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQ1E;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GACjC,OAAO,CAAC,IAAI,CAAC,CAkBf;AA6CD,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAKxE"}
|