@absol-labs/agent 0.9.1 → 0.10.0
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 +77 -3
- package/dist/cli/amounts.d.ts +26 -0
- package/dist/cli/amounts.d.ts.map +1 -0
- package/dist/cli/amounts.js +71 -0
- package/dist/cli/amounts.js.map +1 -0
- package/dist/cli/args.d.ts +32 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +119 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/attesters.d.ts +51 -0
- package/dist/cli/attesters.d.ts.map +1 -0
- package/dist/cli/attesters.js +58 -0
- package/dist/cli/attesters.js.map +1 -0
- package/dist/cli/bin.d.ts +3 -0
- package/dist/cli/bin.d.ts.map +1 -0
- package/dist/cli/bin.js +5 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/claim.d.ts +13 -0
- package/dist/cli/commands/claim.d.ts.map +1 -0
- package/dist/cli/commands/claim.js +86 -0
- package/dist/cli/commands/claim.js.map +1 -0
- package/dist/cli/commands/close.d.ts +3 -0
- package/dist/cli/commands/close.d.ts.map +1 -0
- package/dist/cli/commands/close.js +43 -0
- package/dist/cli/commands/close.js.map +1 -0
- package/dist/cli/commands/discover.d.ts +3 -0
- package/dist/cli/commands/discover.d.ts.map +1 -0
- package/dist/cli/commands/discover.js +183 -0
- package/dist/cli/commands/discover.js.map +1 -0
- package/dist/cli/commands/invoke.d.ts +3 -0
- package/dist/cli/commands/invoke.d.ts.map +1 -0
- package/dist/cli/commands/invoke.js +141 -0
- package/dist/cli/commands/invoke.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +3 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +113 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/open.d.ts +3 -0
- package/dist/cli/commands/open.d.ts.map +1 -0
- package/dist/cli/commands/open.js +279 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/reclaim-unverified.d.ts +3 -0
- package/dist/cli/commands/reclaim-unverified.d.ts.map +1 -0
- package/dist/cli/commands/reclaim-unverified.js +164 -0
- package/dist/cli/commands/reclaim-unverified.js.map +1 -0
- package/dist/cli/commands/reclaim.d.ts +33 -0
- package/dist/cli/commands/reclaim.d.ts.map +1 -0
- package/dist/cli/commands/reclaim.js +297 -0
- package/dist/cli/commands/reclaim.js.map +1 -0
- package/dist/cli/commands/status.d.ts +3 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +43 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/streams.d.ts +3 -0
- package/dist/cli/commands/streams.d.ts.map +1 -0
- package/dist/cli/commands/streams.js +257 -0
- package/dist/cli/commands/streams.js.map +1 -0
- package/dist/cli/commands/watch.d.ts +3 -0
- package/dist/cli/commands/watch.d.ts.map +1 -0
- package/dist/cli/commands/watch.js +55 -0
- package/dist/cli/commands/watch.js.map +1 -0
- package/dist/cli/config.d.ts +61 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +140 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/context.d.ts +29 -0
- package/dist/cli/context.d.ts.map +1 -0
- package/dist/cli/context.js +2 -0
- package/dist/cli/context.js.map +1 -0
- package/dist/cli/deps.d.ts +145 -0
- package/dist/cli/deps.d.ts.map +1 -0
- package/dist/cli/deps.js +227 -0
- package/dist/cli/deps.js.map +1 -0
- package/dist/cli/descriptor.d.ts +61 -0
- package/dist/cli/descriptor.d.ts.map +1 -0
- package/dist/cli/descriptor.js +78 -0
- package/dist/cli/descriptor.js.map +1 -0
- package/dist/cli/errors.d.ts +48 -0
- package/dist/cli/errors.d.ts.map +1 -0
- package/dist/cli/errors.js +129 -0
- package/dist/cli/errors.js.map +1 -0
- package/dist/cli/escape-hatch.d.ts +50 -0
- package/dist/cli/escape-hatch.d.ts.map +1 -0
- package/dist/cli/escape-hatch.js +45 -0
- package/dist/cli/escape-hatch.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +7 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/listings.d.ts +15 -0
- package/dist/cli/listings.d.ts.map +1 -0
- package/dist/cli/listings.js +56 -0
- package/dist/cli/listings.js.map +1 -0
- package/dist/cli/mandate.d.ts +66 -0
- package/dist/cli/mandate.d.ts.map +1 -0
- package/dist/cli/mandate.js +61 -0
- package/dist/cli/mandate.js.map +1 -0
- package/dist/cli/output.d.ts +33 -0
- package/dist/cli/output.d.ts.map +1 -0
- package/dist/cli/output.js +34 -0
- package/dist/cli/output.js.map +1 -0
- package/dist/cli/preflight.d.ts +38 -0
- package/dist/cli/preflight.d.ts.map +1 -0
- package/dist/cli/preflight.js +72 -0
- package/dist/cli/preflight.js.map +1 -0
- package/dist/cli/progress.d.ts +36 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +40 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/run.d.ts +25 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +173 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/scan-range.d.ts +55 -0
- package/dist/cli/scan-range.d.ts.map +1 -0
- package/dist/cli/scan-range.js +57 -0
- package/dist/cli/scan-range.js.map +1 -0
- package/dist/cli/status.d.ts +90 -0
- package/dist/cli/status.d.ts.map +1 -0
- package/dist/cli/status.js +252 -0
- package/dist/cli/status.js.map +1 -0
- package/dist/cli/timeout.d.ts +30 -0
- package/dist/cli/timeout.d.ts.map +1 -0
- package/dist/cli/timeout.js +55 -0
- package/dist/cli/timeout.js.map +1 -0
- package/dist/cli/version.d.ts +12 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +22 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/cli/wallet.d.ts +95 -0
- package/dist/cli/wallet.d.ts.map +1 -0
- package/dist/cli/wallet.js +169 -0
- package/dist/cli/wallet.js.map +1 -0
- package/dist/frameworks/crewai.d.ts +10 -0
- package/dist/frameworks/crewai.d.ts.map +1 -1
- package/dist/frameworks/crewai.js +12 -2
- package/dist/frameworks/crewai.js.map +1 -1
- package/dist/gateway/server-entry.d.ts +1 -0
- package/dist/gateway/server-entry.js +1 -0
- package/dist/gateway/server-entry.js.map +1 -1
- package/dist/mcp/http-server.d.ts +1 -0
- package/dist/mcp/http-server.js +1 -0
- package/dist/mcp/http-server.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +20 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/stdio.d.ts +1 -0
- package/dist/mcp/stdio.js +1 -0
- package/dist/mcp/stdio.js.map +1 -1
- package/dist/sdk/client.d.ts +25 -1
- package/dist/sdk/client.d.ts.map +1 -1
- package/dist/sdk/client.js +20 -1
- package/dist/sdk/client.js.map +1 -1
- package/docs/agent-layer.md +2 -1
- package/docs/cli.md +569 -0
- package/docs/crewai.md +6 -2
- package/docs/eliza.md +6 -1
- package/docs/mcp-hosted.md +3 -2
- package/docs/quickstart.md +18 -5
- package/package.json +17 -5
- package/src/cli/amounts.ts +102 -0
- package/src/cli/args.ts +150 -0
- package/src/cli/attesters.ts +86 -0
- package/src/cli/bin.ts +5 -0
- package/src/cli/commands/claim.ts +100 -0
- package/src/cli/commands/close.ts +53 -0
- package/src/cli/commands/discover.ts +228 -0
- package/src/cli/commands/invoke.ts +177 -0
- package/src/cli/commands/mcp.ts +135 -0
- package/src/cli/commands/open.ts +331 -0
- package/src/cli/commands/reclaim-unverified.ts +206 -0
- package/src/cli/commands/reclaim.ts +360 -0
- package/src/cli/commands/status.ts +56 -0
- package/src/cli/commands/streams.ts +344 -0
- package/src/cli/commands/watch.ts +70 -0
- package/src/cli/config.ts +208 -0
- package/src/cli/context.ts +30 -0
- package/src/cli/deps.ts +437 -0
- package/src/cli/descriptor.ts +133 -0
- package/src/cli/errors.ts +162 -0
- package/src/cli/escape-hatch.ts +92 -0
- package/src/cli/index.ts +27 -0
- package/src/cli/listings.ts +77 -0
- package/src/cli/mandate.ts +126 -0
- package/src/cli/output.ts +63 -0
- package/src/cli/preflight.ts +88 -0
- package/src/cli/progress.ts +75 -0
- package/src/cli/run.ts +209 -0
- package/src/cli/scan-range.ts +76 -0
- package/src/cli/status.ts +381 -0
- package/src/cli/timeout.ts +64 -0
- package/src/cli/version.ts +21 -0
- package/src/cli/wallet.ts +241 -0
- package/src/frameworks/crewai.ts +13 -2
- package/src/gateway/server-entry.ts +1 -0
- package/src/mcp/http-server.ts +1 -0
- package/src/mcp/server.ts +25 -1
- package/src/mcp/stdio.ts +1 -0
- package/src/sdk/client.ts +33 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streams.js","sourceRoot":"","sources":["../../../src/cli/commands/streams.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAkB,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjE,eAAO,MAAM,YAAY,EAAE,WAyD1B,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { integerFlag } from "../args.js";
|
|
2
|
+
import { assertTestnetRpc, parseBytes32 } from "../config.js";
|
|
3
|
+
import { describeError, usageError } from "../errors.js";
|
|
4
|
+
import { readStreamReport, streamReportJson, streamReportRows, } from "../status.js";
|
|
5
|
+
const DEFAULT_INTERVAL_SECONDS = 15;
|
|
6
|
+
export const watchCommand = {
|
|
7
|
+
name: "watch",
|
|
8
|
+
summary: "Poll a stream's verified accrual until it is closed (Ctrl-C to stop)",
|
|
9
|
+
usage: "metrik watch <streamId> [--interval 15] [--max-polls N (default: unbounded)]",
|
|
10
|
+
flags: ["interval", "max-polls"],
|
|
11
|
+
signs: false,
|
|
12
|
+
async run(context) {
|
|
13
|
+
const { args, config, out, deps } = context;
|
|
14
|
+
const [streamIdArg] = args.positionals;
|
|
15
|
+
if (streamIdArg === undefined) {
|
|
16
|
+
throw usageError("metrik watch requires a <streamId>");
|
|
17
|
+
}
|
|
18
|
+
const streamId = parseBytes32(streamIdArg, "<streamId>");
|
|
19
|
+
const interval = integerFlag(args, "interval") ?? DEFAULT_INTERVAL_SECONDS;
|
|
20
|
+
if (interval <= 0) {
|
|
21
|
+
throw usageError("--interval must be a positive number of seconds");
|
|
22
|
+
}
|
|
23
|
+
const maxPolls = integerFlag(args, "max-polls");
|
|
24
|
+
const read = deps.createReadClient(config);
|
|
25
|
+
// Same chain allowlist as the signing paths — see `status`.
|
|
26
|
+
await assertTestnetRpc(config, () => read.getChainId());
|
|
27
|
+
out.note(`watching ${streamId} every ${interval}s — the oracle checkpoints roughly every 15-22s.`);
|
|
28
|
+
for (let poll = 0; maxPolls === undefined || poll < maxPolls; poll++) {
|
|
29
|
+
if (poll > 0)
|
|
30
|
+
await deps.sleep(interval * 1_000);
|
|
31
|
+
let report;
|
|
32
|
+
try {
|
|
33
|
+
report = await readStreamReport(read, streamId, deps.nowSeconds());
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
// A transient RPC blip must not end a long watch.
|
|
37
|
+
out.note(`read failed, retrying: ${describeError(error)}`);
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
// `--json` streams one COMPACT JSON object per poll — JSON Lines, as the
|
|
41
|
+
// docs promise. The pretty-printed form used by the single-shot commands
|
|
42
|
+
// would put one object across ~30 lines, none of which parses on its own,
|
|
43
|
+
// which is useless to the line-at-a-time consumer this mode exists for.
|
|
44
|
+
out.resultLine(streamReportJson(report));
|
|
45
|
+
out.print(`[${new Date(report.nowSeconds * 1000).toISOString()}] ${streamId}`);
|
|
46
|
+
out.table(streamReportRows(report));
|
|
47
|
+
out.print("");
|
|
48
|
+
if (report.stream.status === "closed") {
|
|
49
|
+
out.note("stream is closed — watch complete.");
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=watch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"watch.js","sourceRoot":"","sources":["../../../src/cli/commands/watch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { baseSepolia } from "viem/chains";
|
|
2
|
+
import { type ParsedArgs } from "./args.js";
|
|
3
|
+
/**
|
|
4
|
+
* TESTNET ONLY — the single allowlist this CLI will settle against.
|
|
5
|
+
*
|
|
6
|
+
* Metrik's escrow moves real USDC the moment it is pointed at a mainnet chain,
|
|
7
|
+
* and this CLI signs with a raw private key read from the environment. So the
|
|
8
|
+
* chain is an allowlist, not a default: any other chain id is refused outright,
|
|
9
|
+
* with no override flag. There is deliberately no `--allow-mainnet` — an escape
|
|
10
|
+
* hatch that re-enables real funds would defeat the guarantee, and a mainnet
|
|
11
|
+
* deployment is not something a flag can conjure (there is none).
|
|
12
|
+
*
|
|
13
|
+
* The allowlist is enforced TWICE: once against the configured/declared chain
|
|
14
|
+
* id, and again against the chain id the RPC endpoint actually reports before
|
|
15
|
+
* any fund-moving command signs anything (see `assertTestnetRpc`). The second
|
|
16
|
+
* check is what stops `--chain-id 84532 --rpc-url <a mainnet RPC>`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const TESTNET_CHAIN_IDS: readonly number[];
|
|
19
|
+
/**
|
|
20
|
+
* The block `BASE_SEPOLIA_ESCROW_V2` was deployed at — the anchor of every
|
|
21
|
+
* escrow log scan, because the contract has no history before it.
|
|
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.
|
|
31
|
+
*/
|
|
32
|
+
export declare const BASE_SEPOLIA_ESCROW_V2_DEPLOY_BLOCK = 45892018n;
|
|
33
|
+
export interface CliConfig {
|
|
34
|
+
readonly chain: typeof baseSepolia;
|
|
35
|
+
readonly chainId: number;
|
|
36
|
+
readonly rpcUrl: string;
|
|
37
|
+
readonly escrow: `0x${string}`;
|
|
38
|
+
readonly usdc: `0x${string}`;
|
|
39
|
+
readonly oracleBaseUrl: string;
|
|
40
|
+
readonly registryUrl: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Resolves settlement configuration from flags, then env, then the baked-in
|
|
44
|
+
* Base Sepolia defaults — so `metrik discover` works with nothing configured at
|
|
45
|
+
* all, while every value stays overridable.
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveConfig(args: ParsedArgs, env: NodeJS.ProcessEnv): CliConfig;
|
|
48
|
+
/** Flags every command accepts for settlement configuration. */
|
|
49
|
+
export declare const CONFIG_FLAGS: readonly string[];
|
|
50
|
+
/** Flags every command accepts for output shape. */
|
|
51
|
+
export declare const GLOBAL_FLAGS: readonly string[];
|
|
52
|
+
export declare function assertTestnetChainId(chainId: number, source: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Second half of the testnet guard: the chain the RPC ACTUALLY serves. Called
|
|
55
|
+
* before any command that can move funds, because a declared chain id is just a
|
|
56
|
+
* number the caller typed — the endpoint is the thing that settles.
|
|
57
|
+
*/
|
|
58
|
+
export declare function assertTestnetRpc(config: CliConfig, readChainId: () => Promise<number>): Promise<void>;
|
|
59
|
+
/** Parses a `0x`-prefixed 32-byte hex id (stream id / serviceRef). */
|
|
60
|
+
export declare function parseBytes32(value: string, label: string): `0x${string}`;
|
|
61
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAA2B,KAAK,UAAU,EAAE,MAAM,WAAW,CAAC;AAErE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,EAAE,SAAS,MAAM,EAAqB,CAAC;AAErE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,mCAAmC,YAAc,CAAC;AAE/D,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,WAAW,CAAC;IACnC,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;CAC9B;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,SAAS,CA2CX;AAED,gEAAgE;AAChE,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAOzC,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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { BASE_SEPOLIA_ESCROW_V2, BASE_SEPOLIA_USDC, DEFAULT_ORACLE_BASE_URL, DEFAULT_PUBLIC_REGISTRY_URL, } from "@absol-labs/sdk";
|
|
2
|
+
import { isAddress, getAddress } from "viem";
|
|
3
|
+
import { baseSepolia } from "viem/chains";
|
|
4
|
+
import { CliError, configError, usageError } from "./errors.js";
|
|
5
|
+
import { stringFlag, integerFlag } from "./args.js";
|
|
6
|
+
/**
|
|
7
|
+
* TESTNET ONLY — the single allowlist this CLI will settle against.
|
|
8
|
+
*
|
|
9
|
+
* Metrik's escrow moves real USDC the moment it is pointed at a mainnet chain,
|
|
10
|
+
* and this CLI signs with a raw private key read from the environment. So the
|
|
11
|
+
* chain is an allowlist, not a default: any other chain id is refused outright,
|
|
12
|
+
* with no override flag. There is deliberately no `--allow-mainnet` — an escape
|
|
13
|
+
* hatch that re-enables real funds would defeat the guarantee, and a mainnet
|
|
14
|
+
* deployment is not something a flag can conjure (there is none).
|
|
15
|
+
*
|
|
16
|
+
* The allowlist is enforced TWICE: once against the configured/declared chain
|
|
17
|
+
* id, and again against the chain id the RPC endpoint actually reports before
|
|
18
|
+
* any fund-moving command signs anything (see `assertTestnetRpc`). The second
|
|
19
|
+
* check is what stops `--chain-id 84532 --rpc-url <a mainnet RPC>`.
|
|
20
|
+
*/
|
|
21
|
+
export const TESTNET_CHAIN_IDS = [baseSepolia.id];
|
|
22
|
+
/**
|
|
23
|
+
* The block `BASE_SEPOLIA_ESCROW_V2` was deployed at — the anchor of every
|
|
24
|
+
* escrow log scan, because the contract has no history before it.
|
|
25
|
+
*
|
|
26
|
+
* Verified against Base Sepolia on 2026-09-17: `eth_getLogs` for this single
|
|
27
|
+
* block returns 6 escrow logs (the deployment's own events). History is
|
|
28
|
+
* immutable, so that is a stable known answer forever, which is what lets the
|
|
29
|
+
* same block serve as the log-retention canary in `metrik streams`.
|
|
30
|
+
*
|
|
31
|
+
* It is tied to that ONE address. A run pointed at a different `--escrow` has
|
|
32
|
+
* no anchor and must be given `--from-block`, rather than silently scanning
|
|
33
|
+
* from a block that means nothing for it.
|
|
34
|
+
*/
|
|
35
|
+
export const BASE_SEPOLIA_ESCROW_V2_DEPLOY_BLOCK = 45892018n;
|
|
36
|
+
/**
|
|
37
|
+
* Resolves settlement configuration from flags, then env, then the baked-in
|
|
38
|
+
* Base Sepolia defaults — so `metrik discover` works with nothing configured at
|
|
39
|
+
* all, while every value stays overridable.
|
|
40
|
+
*/
|
|
41
|
+
export function resolveConfig(args, env) {
|
|
42
|
+
const chainId = integerFlag(args, "chain-id") ??
|
|
43
|
+
parseEnvChainId(env.METRIK_AGENT_CHAIN_ID) ??
|
|
44
|
+
baseSepolia.id;
|
|
45
|
+
assertTestnetChainId(chainId, "the configured chain id");
|
|
46
|
+
const rpcUrl = stringFlag(args, "rpc-url") ??
|
|
47
|
+
env.METRIK_AGENT_RPC_URL ??
|
|
48
|
+
baseSepolia.rpcUrls.default.http[0];
|
|
49
|
+
if (rpcUrl === undefined || !isHttpUrl(rpcUrl)) {
|
|
50
|
+
throw configError(`RPC URL must be an http(s) URL (got "${rpcUrl ?? "undefined"}")`, "set --rpc-url or METRIK_AGENT_RPC_URL.");
|
|
51
|
+
}
|
|
52
|
+
return {
|
|
53
|
+
chain: baseSepolia,
|
|
54
|
+
chainId,
|
|
55
|
+
rpcUrl,
|
|
56
|
+
escrow: resolveAddress(stringFlag(args, "escrow") ?? env.METRIK_AGENT_ESCROW, BASE_SEPOLIA_ESCROW_V2, "escrow"),
|
|
57
|
+
usdc: resolveAddress(stringFlag(args, "usdc") ?? env.METRIK_AGENT_USDC, BASE_SEPOLIA_USDC, "usdc"),
|
|
58
|
+
oracleBaseUrl: resolveHttpUrl(stringFlag(args, "oracle-url") ?? env.METRIK_AGENT_ORACLE_URL, DEFAULT_ORACLE_BASE_URL, "oracle-url"),
|
|
59
|
+
registryUrl: resolveHttpUrl(stringFlag(args, "registry-url") ?? env.METRIK_AGENT_REGISTRY_URL, DEFAULT_PUBLIC_REGISTRY_URL, "registry-url"),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
/** Flags every command accepts for settlement configuration. */
|
|
63
|
+
export const CONFIG_FLAGS = [
|
|
64
|
+
"chain-id",
|
|
65
|
+
"rpc-url",
|
|
66
|
+
"escrow",
|
|
67
|
+
"usdc",
|
|
68
|
+
"oracle-url",
|
|
69
|
+
"registry-url",
|
|
70
|
+
];
|
|
71
|
+
/** Flags every command accepts for output shape. */
|
|
72
|
+
export const GLOBAL_FLAGS = ["json", "help"];
|
|
73
|
+
export function assertTestnetChainId(chainId, source) {
|
|
74
|
+
if (TESTNET_CHAIN_IDS.includes(chainId))
|
|
75
|
+
return;
|
|
76
|
+
throw configError(`refusing to run against chain ${chainId}: ${source} is not a supported testnet`, `this CLI signs with a raw private key and settles real value, so it is testnet-only. Supported: ${TESTNET_CHAIN_IDS.join(", ")} (Base Sepolia). There is no override flag.`);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Second half of the testnet guard: the chain the RPC ACTUALLY serves. Called
|
|
80
|
+
* before any command that can move funds, because a declared chain id is just a
|
|
81
|
+
* number the caller typed — the endpoint is the thing that settles.
|
|
82
|
+
*/
|
|
83
|
+
export async function assertTestnetRpc(config, readChainId) {
|
|
84
|
+
let observed;
|
|
85
|
+
try {
|
|
86
|
+
observed = await readChainId();
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
throw new CliError(`could not read the chain id from ${config.rpcUrl}`, {
|
|
90
|
+
exitCode: 3,
|
|
91
|
+
hint: "the RPC endpoint must be reachable before a fund-moving command runs.",
|
|
92
|
+
cause: error,
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
assertTestnetChainId(observed, `the RPC endpoint ${config.rpcUrl}`);
|
|
96
|
+
if (observed !== config.chainId) {
|
|
97
|
+
throw configError(`RPC chain id ${observed} does not match the configured chain id ${config.chainId}`, "point --rpc-url at the configured chain, or fix --chain-id.");
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
function parseEnvChainId(raw) {
|
|
101
|
+
if (raw === undefined || raw.length === 0)
|
|
102
|
+
return undefined;
|
|
103
|
+
if (!/^\d+$/.test(raw)) {
|
|
104
|
+
throw configError(`METRIK_AGENT_CHAIN_ID must be a positive integer (got "${raw}")`);
|
|
105
|
+
}
|
|
106
|
+
return Number(raw);
|
|
107
|
+
}
|
|
108
|
+
function resolveAddress(candidate, fallback, label) {
|
|
109
|
+
if (candidate === undefined || candidate.length === 0)
|
|
110
|
+
return fallback;
|
|
111
|
+
if (!isAddress(candidate)) {
|
|
112
|
+
throw configError(`--${label} must be an EVM address (got "${candidate}")`);
|
|
113
|
+
}
|
|
114
|
+
return getAddress(candidate);
|
|
115
|
+
}
|
|
116
|
+
function resolveHttpUrl(candidate, fallback, label) {
|
|
117
|
+
if (candidate === undefined || candidate.length === 0)
|
|
118
|
+
return fallback;
|
|
119
|
+
if (!isHttpUrl(candidate)) {
|
|
120
|
+
throw configError(`--${label} must be an http(s) URL (got "${candidate}")`);
|
|
121
|
+
}
|
|
122
|
+
return candidate.replace(/\/+$/, "");
|
|
123
|
+
}
|
|
124
|
+
function isHttpUrl(value) {
|
|
125
|
+
try {
|
|
126
|
+
const url = new URL(value);
|
|
127
|
+
return url.protocol === "http:" || url.protocol === "https:";
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/** Parses a `0x`-prefixed 32-byte hex id (stream id / serviceRef). */
|
|
134
|
+
export function parseBytes32(value, label) {
|
|
135
|
+
if (!/^0x[0-9a-fA-F]{64}$/.test(value)) {
|
|
136
|
+
throw usageError(`${label} must be a 0x-prefixed 32-byte hex value`);
|
|
137
|
+
}
|
|
138
|
+
return value.toLowerCase();
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { ParsedArgs } from "./args.js";
|
|
2
|
+
import type { CliConfig } from "./config.js";
|
|
3
|
+
import type { CliDependencies } from "./deps.js";
|
|
4
|
+
import type { Printer } from "./output.js";
|
|
5
|
+
/** Everything a command needs, assembled once by the runner. */
|
|
6
|
+
export interface CommandContext {
|
|
7
|
+
readonly args: ParsedArgs;
|
|
8
|
+
readonly config: CliConfig;
|
|
9
|
+
readonly env: NodeJS.ProcessEnv;
|
|
10
|
+
readonly out: Printer;
|
|
11
|
+
readonly deps: CliDependencies;
|
|
12
|
+
}
|
|
13
|
+
export interface CommandSpec {
|
|
14
|
+
readonly name: string;
|
|
15
|
+
readonly summary: string;
|
|
16
|
+
readonly usage: string;
|
|
17
|
+
/** Command-specific flags, on top of the global + config flags. */
|
|
18
|
+
readonly flags: readonly string[];
|
|
19
|
+
/** True when the command broadcasts a transaction that can move funds. */
|
|
20
|
+
readonly signs: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* True when the command needs `METRIK_AGENT_PRIVATE_KEY` even though it
|
|
23
|
+
* broadcasts nothing — `invoke` signs an off-chain capability. Defaults to
|
|
24
|
+
* `signs`, since everything that broadcasts obviously needs a key.
|
|
25
|
+
*/
|
|
26
|
+
readonly requiresKey?: boolean;
|
|
27
|
+
readonly run: (context: CommandContext) => Promise<void>;
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAE3C,gEAAgE;AAChE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAChC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,0EAA0E;IAC1E,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/cli/context.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { type CheckpointProof, type HireComputeInput, type HireComputeResult, type HireTxPreview, type StreamV2, type StreamProofTransactionResult } from "@absol-labs/sdk";
|
|
2
|
+
import { type LocalAccount } from "viem";
|
|
3
|
+
import { type DiscoverResult, type DiscoverServicesOptions, type ServiceListing } from "../discovery/registry.js";
|
|
4
|
+
import { type InvokeOptions, type InvokeResult, type InvokeServiceInput, type InvokeStreamReader } from "../sdk/invoke.js";
|
|
5
|
+
import { type MandateAuthorizedStreamActionInput, type OpenVerifiedStreamInput, type ReclaimAuthorizedStreamInput, type ReclaimVerifiedStreamResult } from "../sdk/client.js";
|
|
6
|
+
import type { CliConfig } from "./config.js";
|
|
7
|
+
/**
|
|
8
|
+
* Everything the CLI touches that is not pure computation, behind one
|
|
9
|
+
* injectable surface. Commands are written against these interfaces so the test
|
|
10
|
+
* suite exercises the real argument parsing, config resolution, testnet guard,
|
|
11
|
+
* retry logic and rendering against doubles — without a key, an RPC, or a
|
|
12
|
+
* single transaction.
|
|
13
|
+
*/
|
|
14
|
+
export interface CliReadClient {
|
|
15
|
+
/** The chain id the RPC endpoint actually serves (half of the testnet guard). */
|
|
16
|
+
getChainId(): Promise<number>;
|
|
17
|
+
getStreamV2(streamId: `0x${string}`): Promise<StreamV2>;
|
|
18
|
+
/**
|
|
19
|
+
* The ONLY live reading of accrual. `StreamEscrowV2.getStream` reports
|
|
20
|
+
* `claimedCumulative = 0` and `settledCumulative = 0` for a stream's entire
|
|
21
|
+
* active life — `settledCumulative` is written by `reclaim`, not by accrual —
|
|
22
|
+
* so a status command that reads a stream field would always print zero. The
|
|
23
|
+
* oracle's checkpoint proof carries the real earned-so-far figure.
|
|
24
|
+
*/
|
|
25
|
+
checkpointProof(streamId: `0x${string}`): Promise<CheckpointProof>;
|
|
26
|
+
claimableForV2(streamId: `0x${string}`, cumulativeAmount: bigint): Promise<bigint>;
|
|
27
|
+
reclaimableForV2(streamId: `0x${string}`, cumulativeAmount: bigint): Promise<bigint>;
|
|
28
|
+
/** Live protocol fee, read from the escrow rather than hardcoded. */
|
|
29
|
+
protocolFeeBps(): Promise<number>;
|
|
30
|
+
/**
|
|
31
|
+
* `StreamEscrowV2.escapeGraceSeconds` (public immutable). The buyer's no-proof
|
|
32
|
+
* escape hatch unlocks at `expiresAt + escapeGraceSeconds`, so this is half of
|
|
33
|
+
* every readiness answer the CLI gives about it.
|
|
34
|
+
*/
|
|
35
|
+
escapeGraceSeconds(): Promise<number>;
|
|
36
|
+
/**
|
|
37
|
+
* `StreamEscrowV2.latestCheckpointCheckedAt` — how far the oracle has
|
|
38
|
+
* published. A buyer reading "the last checkpoint is two hours old" is reading
|
|
39
|
+
* the reason their proof-based reclaim is blocked.
|
|
40
|
+
*/
|
|
41
|
+
latestCheckpointCheckedAt(): Promise<number>;
|
|
42
|
+
/**
|
|
43
|
+
* `StreamEscrowV2.getOracleSigners` — every address whose signature can carry
|
|
44
|
+
* a checkpoint into the escrow.
|
|
45
|
+
*
|
|
46
|
+
* Read so the CLI can say who attests. A buyer told a listing is
|
|
47
|
+
* "cryptographically verified" is entitled to know whether the operator they
|
|
48
|
+
* are about to pay is ALSO one of the parties attesting that the delivery
|
|
49
|
+
* happened; on the live deployment that overlap exists. Disclosure only — the
|
|
50
|
+
* CLI does not refuse such a listing, it names the fact.
|
|
51
|
+
*/
|
|
52
|
+
oracleSigners(): Promise<readonly `0x${string}`[]>;
|
|
53
|
+
/**
|
|
54
|
+
* The timestamp of the latest block. The escape hatch is gated on
|
|
55
|
+
* `block.timestamp`, not on the caller's clock, so readiness is answered
|
|
56
|
+
* against the chain rather than against a laptop that may be skewed.
|
|
57
|
+
*/
|
|
58
|
+
latestBlockTimestamp(): Promise<number>;
|
|
59
|
+
/**
|
|
60
|
+
* Native balance of an address, in wei. Read before a fund-moving command so
|
|
61
|
+
* an unfunded wallet is reported as an unfunded wallet, rather than as the
|
|
62
|
+
* raw node error `gas required exceeds allowance (0)`.
|
|
63
|
+
*/
|
|
64
|
+
nativeBalance(address: `0x${string}`): Promise<bigint>;
|
|
65
|
+
/**
|
|
66
|
+
* USDC balance of an address, in base units. Gas and deposit are SEPARATE
|
|
67
|
+
* balances, so `assertCanPayGas` passing says nothing about whether the hire
|
|
68
|
+
* can be funded — see `assertCanFundStream`.
|
|
69
|
+
*/
|
|
70
|
+
usdcBalance(address: `0x${string}`): Promise<bigint>;
|
|
71
|
+
/** Current chain head, the upper bound of every log scan. */
|
|
72
|
+
blockNumber(): Promise<bigint>;
|
|
73
|
+
/**
|
|
74
|
+
* `StreamOpened` logs for one indexed party over one inclusive block window.
|
|
75
|
+
*
|
|
76
|
+
* `buyer` and `operator` are INDEXED on the event, so `role` becomes an
|
|
77
|
+
* `eth_getLogs` topic filter the NODE evaluates: the response carries only
|
|
78
|
+
* that wallet's streams regardless of how wide the window is. What bounds a
|
|
79
|
+
* window is the endpoint's per-call BLOCK RANGE cap, not the response size —
|
|
80
|
+
* see `./scan-range.ts`.
|
|
81
|
+
*/
|
|
82
|
+
streamOpenedLogs(query: StreamOpenedQuery): Promise<readonly OpenedStream[]>;
|
|
83
|
+
/**
|
|
84
|
+
* Count of ANY escrow log in a single block. Used as a known-answer retention
|
|
85
|
+
* canary: a node that has pruned its log index answers a range it no longer
|
|
86
|
+
* retains with a SUCCESSFUL EMPTY result, so an empty scan is only honest
|
|
87
|
+
* from an endpoint that demonstrably still serves the oldest block in range.
|
|
88
|
+
*/
|
|
89
|
+
escrowLogCountAt(block: bigint): Promise<number>;
|
|
90
|
+
}
|
|
91
|
+
/** One indexed party filter over one inclusive block window. */
|
|
92
|
+
export interface StreamOpenedQuery {
|
|
93
|
+
readonly role: "buyer" | "operator";
|
|
94
|
+
readonly address: `0x${string}`;
|
|
95
|
+
readonly fromBlock: bigint;
|
|
96
|
+
readonly toBlock: bigint;
|
|
97
|
+
}
|
|
98
|
+
/** The immutable facts `StreamOpened` carries, which later state cannot restate. */
|
|
99
|
+
export interface OpenedStream {
|
|
100
|
+
readonly streamId: `0x${string}`;
|
|
101
|
+
readonly buyer: `0x${string}`;
|
|
102
|
+
readonly operator: `0x${string}`;
|
|
103
|
+
readonly serviceRef: `0x${string}`;
|
|
104
|
+
/**
|
|
105
|
+
* The amount originally escrowed. V2 MUTATES `Stream.deposit` on reclaim, so
|
|
106
|
+
* the event is the only place the opening figure survives.
|
|
107
|
+
*/
|
|
108
|
+
readonly deposit: bigint;
|
|
109
|
+
readonly ratePerSecond: bigint;
|
|
110
|
+
readonly expiresAt: number;
|
|
111
|
+
readonly blockNumber: bigint;
|
|
112
|
+
}
|
|
113
|
+
export interface CliWriteClient {
|
|
114
|
+
/** Build + best-effort simulate the hire WITHOUT broadcasting (`--dry-run`). */
|
|
115
|
+
buildHireTx(input: HireComputeInput): Promise<HireTxPreview>;
|
|
116
|
+
openVerifiedStream(input: OpenVerifiedStreamInput): Promise<HireComputeResult>;
|
|
117
|
+
closeStream(input: MandateAuthorizedStreamActionInput): Promise<StreamProofTransactionResult>;
|
|
118
|
+
reclaimStream(input: ReclaimAuthorizedStreamInput): Promise<ReclaimVerifiedStreamResult>;
|
|
119
|
+
/**
|
|
120
|
+
* The no-proof escape hatch. Separate from {@link reclaimStream} because it is
|
|
121
|
+
* a different transaction with a different outcome, not a mode of the same one
|
|
122
|
+
* — see `VerifiedStreamAgentClient.reclaimUnverifiedStream`.
|
|
123
|
+
*/
|
|
124
|
+
reclaimUnverifiedStream(input: MandateAuthorizedStreamActionInput): Promise<StreamProofTransactionResult>;
|
|
125
|
+
/** Operator-only: redeem the verified-earned balance for a stream. */
|
|
126
|
+
claimStream(input: MandateAuthorizedStreamActionInput): Promise<StreamProofTransactionResult>;
|
|
127
|
+
}
|
|
128
|
+
export interface CliDependencies {
|
|
129
|
+
readonly createReadClient: (config: CliConfig) => CliReadClient;
|
|
130
|
+
/**
|
|
131
|
+
* `account` is nullable because `open --dry-run` broadcasts nothing and must
|
|
132
|
+
* work for someone who has no key yet. Without one the SDK still builds the
|
|
133
|
+
* calldata and simply reports that the allowance read and simulation were
|
|
134
|
+
* skipped; every fund-moving method throws rather than inventing a signer.
|
|
135
|
+
*/
|
|
136
|
+
readonly createWriteClient: (config: CliConfig, account: LocalAccount | null) => CliWriteClient;
|
|
137
|
+
readonly discover: (options: DiscoverServicesOptions) => Promise<DiscoverResult>;
|
|
138
|
+
readonly invoke: (streamId: `0x${string}`, request: InvokeServiceInput, options: InvokeOptions) => Promise<InvokeResult>;
|
|
139
|
+
readonly createInvokeStreamReader: (config: CliConfig) => InvokeStreamReader;
|
|
140
|
+
readonly nowSeconds: () => number;
|
|
141
|
+
readonly sleep: (ms: number) => Promise<void>;
|
|
142
|
+
}
|
|
143
|
+
export declare const defaultCliDependencies: CliDependencies;
|
|
144
|
+
export type { DiscoverResult, ServiceListing };
|
|
145
|
+
//# sourceMappingURL=deps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deps.d.ts","sourceRoot":"","sources":["../../src/cli/deps.ts"],"names":[],"mappings":"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"}
|