inamprotocol 0.20.0 → 0.21.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 +42 -0
- package/dist/aiSdk.d.ts +16 -16
- package/dist/check.d.ts +115 -0
- package/dist/check.js +391 -0
- package/dist/check.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +40 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +3 -2
- package/dist/client.js +19 -9
- package/dist/client.js.map +1 -1
- package/dist/core/schemas.d.ts +4 -4
- package/dist/index.d.ts +3 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/webBotAuth.d.ts +12 -0
- package/dist/webBotAuth.js +51 -1
- package/dist/webBotAuth.js.map +1 -1
- package/package.json +8 -1
package/README.md
CHANGED
|
@@ -10,6 +10,48 @@ This package is a standalone build of the same crypto/client code the [Node refe
|
|
|
10
10
|
npm install inamprotocol
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
+
## inam check before you pay
|
|
14
|
+
|
|
15
|
+
One command, no key, no INAM account, and useful even when nobody involved uses INAM:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
npx inamprotocol check https://x402.coinstats.app/markets # an x402 resource
|
|
19
|
+
npx inamprotocol check 0x89e9e1ab11dd1b138b1dce6d6a4a0926aafd5029 # a payTo wallet
|
|
20
|
+
npx inamprotocol check did:key:z6MkpSvw1Yuc3ReWhCmt5RwY5LVZqMRY9p8NvpA2TSQCPPyK # an INAM agent
|
|
21
|
+
npx inamprotocol check https://seller.example/api --method POST --json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
inam check https://x402.coinstats.app/markets
|
|
26
|
+
|
|
27
|
+
verdict CAUTION nothing failed, but some signals are missing; read the [warn] lines before paying
|
|
28
|
+
|
|
29
|
+
payment requirements
|
|
30
|
+
resource https://x402.coinstats.app/markets
|
|
31
|
+
about CoinStats global cryptocurrency market data — total market cap, 24h volume, BTC dominance, % changes
|
|
32
|
+
payTo 0xa2AD8183209E5d2F7f0d8F995f5601a0bb5100c7 0.001 USD Coin on Base (eip155:8453)
|
|
33
|
+
|
|
34
|
+
checks
|
|
35
|
+
[ ok ] HTTPS, certificate accepted
|
|
36
|
+
[ ok ] 402 with 1 payment option (x402 v2)
|
|
37
|
+
[warn] No ERC-8004 identity owned by 0xa2AD81…00c7 (on-chain on Base: 0)
|
|
38
|
+
[warn] 0xa2AD81…00c7 is not linked to any INAM ID
|
|
39
|
+
[info] No Web Bot Auth key directory (HTTP 404)
|
|
40
|
+
[ ok ] coinstats.app registered 2018-05-08 (3076 days ago)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
What it checks:
|
|
44
|
+
|
|
45
|
+
| Target | Signals |
|
|
46
|
+
| --- | --- |
|
|
47
|
+
| x402 URL | Fetches it without paying and parses the 402 (v2 `PAYMENT-REQUIRED` header or v1 body): payTo, network, asset, amount, resource, description. Then, per EVM payTo, everything a wallet gets. Plus: the `inam` extension's ID must have proven that payTo (else FAIL), HTTPS, a Web Bot Auth key directory at `/.well-known/http-message-signatures-directory` (signature verified), and the domain's RDAP registration date (shared hosts like `*.workers.dev` are labelled as such). |
|
|
48
|
+
| `0x` wallet | ERC-8004: agents it owns (8004scan index, all chains) and `balanceOf` on the chain's Identity Registry; feedback from the Reputation Registry, with feedback tagged `inam-receipt` counted as tied to a delivered task (SPEC.md §11.1). INAM: whether an INAM ID proved control of the wallet, and that ID's receipts and evidence level. |
|
|
49
|
+
| `did:key` | INAM registration, revocation, evidence level and receipts (`checkTrust`'s allow / escrow / deny), and ERC-8004 for its proven wallet. |
|
|
50
|
+
|
|
51
|
+
The verdict is the worst line, not a score: `FAIL` (exit 1) when a key check fails, such as no 402, unreadable payment requirements, plain http, an unknown or revoked ID, or a borrowed INAM ID whose proven wallet is not the payTo. `CAUTION` (exit 0, exit 1 with `--strict`) when signals are missing. `PASS` otherwise. Exit 2 on bad usage.
|
|
52
|
+
|
|
53
|
+
Use it as a gate before paying or in CI: `npx inamprotocol check "$URL" --strict || exit 1`. Programmatic use: `checkTarget(target, opts)` returns the same report (`formatReport(report)` prints it). On-chain reads use keyless public RPCs (Ethereum, Base, Base Sepolia); set `INAM_RPC_<chainId>` to use your own. `npx inam check` also works once `inamprotocol` is installed in the project or globally; without it, `npx inam` would fetch an unrelated package of that name.
|
|
54
|
+
|
|
13
55
|
## Usage
|
|
14
56
|
|
|
15
57
|
```ts
|
package/dist/aiSdk.d.ts
CHANGED
|
@@ -509,19 +509,19 @@ export declare function inamTools(options?: {
|
|
|
509
509
|
};
|
|
510
510
|
output: NoInfer<{
|
|
511
511
|
receipt: import("./types.js").ExecutionReceipt;
|
|
512
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
512
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
513
513
|
}>;
|
|
514
514
|
}) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
|
|
515
515
|
} & {
|
|
516
516
|
outputSchema?: import("ai").FlexibleSchema<{
|
|
517
517
|
receipt: import("./types.js").ExecutionReceipt;
|
|
518
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
518
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
519
519
|
}> | undefined;
|
|
520
520
|
execute: import("ai").ToolExecuteFunction<{
|
|
521
521
|
receiptId: string;
|
|
522
522
|
}, {
|
|
523
523
|
receipt: import("./types.js").ExecutionReceipt;
|
|
524
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
524
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
525
525
|
}, NoInfer<import("@ai-sdk/provider-utils").Context>>;
|
|
526
526
|
} & {
|
|
527
527
|
description?: string | ((options: {
|
|
@@ -545,7 +545,7 @@ export declare function inamTools(options?: {
|
|
|
545
545
|
receiptId: string;
|
|
546
546
|
}, {
|
|
547
547
|
receipt: import("./types.js").ExecutionReceipt;
|
|
548
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
548
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
549
549
|
}, NoInfer<import("@ai-sdk/provider-utils").Context>>;
|
|
550
550
|
}) | ({
|
|
551
551
|
deferLoading?: boolean;
|
|
@@ -575,19 +575,19 @@ export declare function inamTools(options?: {
|
|
|
575
575
|
};
|
|
576
576
|
output: NoInfer<{
|
|
577
577
|
receipt: import("./types.js").ExecutionReceipt;
|
|
578
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
578
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
579
579
|
}>;
|
|
580
580
|
}) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
|
|
581
581
|
} & {
|
|
582
582
|
outputSchema?: import("ai").FlexibleSchema<{
|
|
583
583
|
receipt: import("./types.js").ExecutionReceipt;
|
|
584
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
584
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
585
585
|
}> | undefined;
|
|
586
586
|
execute: import("ai").ToolExecuteFunction<{
|
|
587
587
|
receiptId: string;
|
|
588
588
|
}, {
|
|
589
589
|
receipt: import("./types.js").ExecutionReceipt;
|
|
590
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
590
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
591
591
|
}, NoInfer<import("@ai-sdk/provider-utils").Context>>;
|
|
592
592
|
} & {
|
|
593
593
|
description?: string | ((options: {
|
|
@@ -611,7 +611,7 @@ export declare function inamTools(options?: {
|
|
|
611
611
|
receiptId: string;
|
|
612
612
|
}, {
|
|
613
613
|
receipt: import("./types.js").ExecutionReceipt;
|
|
614
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
614
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
615
615
|
}, NoInfer<import("@ai-sdk/provider-utils").Context>>;
|
|
616
616
|
}) | ({
|
|
617
617
|
deferLoading?: boolean;
|
|
@@ -641,19 +641,19 @@ export declare function inamTools(options?: {
|
|
|
641
641
|
};
|
|
642
642
|
output: NoInfer<{
|
|
643
643
|
receipt: import("./types.js").ExecutionReceipt;
|
|
644
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
644
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
645
645
|
}>;
|
|
646
646
|
}) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
|
|
647
647
|
} & {
|
|
648
648
|
outputSchema?: import("ai").FlexibleSchema<{
|
|
649
649
|
receipt: import("./types.js").ExecutionReceipt;
|
|
650
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
650
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
651
651
|
}> | undefined;
|
|
652
652
|
execute: import("ai").ToolExecuteFunction<{
|
|
653
653
|
receiptId: string;
|
|
654
654
|
}, {
|
|
655
655
|
receipt: import("./types.js").ExecutionReceipt;
|
|
656
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
656
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
657
657
|
}, NoInfer<import("@ai-sdk/provider-utils").Context>>;
|
|
658
658
|
} & {
|
|
659
659
|
type: "provider";
|
|
@@ -670,7 +670,7 @@ export declare function inamTools(options?: {
|
|
|
670
670
|
receiptId: string;
|
|
671
671
|
}, {
|
|
672
672
|
receipt: import("./types.js").ExecutionReceipt;
|
|
673
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
673
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
674
674
|
}, NoInfer<import("@ai-sdk/provider-utils").Context>>;
|
|
675
675
|
}) | ({
|
|
676
676
|
deferLoading?: boolean;
|
|
@@ -700,19 +700,19 @@ export declare function inamTools(options?: {
|
|
|
700
700
|
};
|
|
701
701
|
output: NoInfer<{
|
|
702
702
|
receipt: import("./types.js").ExecutionReceipt;
|
|
703
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
703
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
704
704
|
}>;
|
|
705
705
|
}) => import("@ai-sdk/provider-utils").ToolResultOutput | PromiseLike<import("@ai-sdk/provider-utils").ToolResultOutput>) | undefined;
|
|
706
706
|
} & {
|
|
707
707
|
outputSchema?: import("ai").FlexibleSchema<{
|
|
708
708
|
receipt: import("./types.js").ExecutionReceipt;
|
|
709
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
709
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
710
710
|
}> | undefined;
|
|
711
711
|
execute: import("ai").ToolExecuteFunction<{
|
|
712
712
|
receiptId: string;
|
|
713
713
|
}, {
|
|
714
714
|
receipt: import("./types.js").ExecutionReceipt;
|
|
715
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
715
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
716
716
|
}, NoInfer<import("@ai-sdk/provider-utils").Context>>;
|
|
717
717
|
} & {
|
|
718
718
|
type: "provider";
|
|
@@ -729,7 +729,7 @@ export declare function inamTools(options?: {
|
|
|
729
729
|
receiptId: string;
|
|
730
730
|
}, {
|
|
731
731
|
receipt: import("./types.js").ExecutionReceipt;
|
|
732
|
-
verifications: import("./types.js").VerificationRecord[]
|
|
732
|
+
verifications: never[] | import("./types.js").VerificationRecord[];
|
|
733
733
|
}, NoInfer<import("@ai-sdk/provider-utils").Context>>;
|
|
734
734
|
});
|
|
735
735
|
};
|
package/dist/check.d.ts
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/** `inam check <url | 0x wallet | did:key>`: a pre-payment check built from public signals.
|
|
2
|
+
*
|
|
3
|
+
* Useful with no INAM data at all: it reads the x402 402 response, asks ERC-8004 (on-chain
|
|
4
|
+
* through a public RPC, plus the 8004scan indexer for the reverse lookup by owner), looks for a
|
|
5
|
+
* Web Bot Auth key directory and the domain's RDAP registration date, and adds INAM's wallet
|
|
6
|
+
* link and receipts when they exist. It reports what it found, not a score. */
|
|
7
|
+
export type CheckStatus = "pass" | "warn" | "fail" | "info";
|
|
8
|
+
export interface CheckItem {
|
|
9
|
+
id: string;
|
|
10
|
+
status: CheckStatus;
|
|
11
|
+
label: string;
|
|
12
|
+
detail?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface PaymentOption {
|
|
15
|
+
scheme?: string;
|
|
16
|
+
network: string;
|
|
17
|
+
chainId: number | null;
|
|
18
|
+
asset?: string;
|
|
19
|
+
amount?: string;
|
|
20
|
+
/** Human price when the asset is a known 6-decimal USD stablecoin. */
|
|
21
|
+
price?: string;
|
|
22
|
+
payTo: string;
|
|
23
|
+
testnet: boolean;
|
|
24
|
+
}
|
|
25
|
+
export interface CheckReport {
|
|
26
|
+
target: string;
|
|
27
|
+
kind: "url" | "wallet" | "did";
|
|
28
|
+
/** Worst status among the checks: any fail is "fail", any warn is "caution". */
|
|
29
|
+
verdict: "pass" | "caution" | "fail";
|
|
30
|
+
checkedAt: string;
|
|
31
|
+
payment?: {
|
|
32
|
+
x402Version?: number;
|
|
33
|
+
status: number;
|
|
34
|
+
resource?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
accepts: PaymentOption[];
|
|
37
|
+
inamDid?: string;
|
|
38
|
+
};
|
|
39
|
+
checks: CheckItem[];
|
|
40
|
+
}
|
|
41
|
+
export interface CheckOptions {
|
|
42
|
+
registryUrl?: string;
|
|
43
|
+
/** ERC-8004 indexer used for the reverse lookup by owner (no on-chain index exists). */
|
|
44
|
+
indexerUrl?: string;
|
|
45
|
+
/** chainId -> JSON-RPC URL; merged over the public defaults. */
|
|
46
|
+
rpc?: Record<number, string>;
|
|
47
|
+
method?: string;
|
|
48
|
+
timeoutMs?: number;
|
|
49
|
+
/** wallet (lowercase) -> INAM ID, if the caller already listed linked agents (the bulk scan does). */
|
|
50
|
+
linkedWallets?: Map<string, string>;
|
|
51
|
+
/** Skip the RDAP domain-age lookup. */
|
|
52
|
+
noRdap?: boolean;
|
|
53
|
+
/** Retries after HTTP 429 from the indexer and RDAP (default 1). The bulk scan raises it. */
|
|
54
|
+
retries?: number;
|
|
55
|
+
}
|
|
56
|
+
export declare const ERC8004: {
|
|
57
|
+
identity: {
|
|
58
|
+
mainnet: string;
|
|
59
|
+
testnet: string;
|
|
60
|
+
};
|
|
61
|
+
reputation: {
|
|
62
|
+
mainnet: string;
|
|
63
|
+
testnet: string;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
/** Keyless public RPCs. Other chains are covered by the indexer only, or by `rpc` / INAM_RPC_<chainId>. */
|
|
67
|
+
export declare const DEFAULT_RPC: Record<number, string>;
|
|
68
|
+
export declare const SHARED_HOSTING: RegExp;
|
|
69
|
+
export declare const isEvmAddress: (a: string) => boolean;
|
|
70
|
+
export declare const chainIdOf: (network: string) => number | null;
|
|
71
|
+
/** Payment requirements from a 402: the v2 PAYMENT-REQUIRED header, or the v1 JSON body. */
|
|
72
|
+
export declare function parsePaymentRequired(headers: Headers, body: string): any | null;
|
|
73
|
+
export declare function paymentOptions(required: any): PaymentOption[];
|
|
74
|
+
export declare function erc8004Balance(rpc: string, chainId: number, wallet: string, timeoutMs?: number): Promise<number>;
|
|
75
|
+
/** Feedback on one agent from the Reputation Registry: all of it, and the part tagged as INAM-receipt-backed (SPEC.md §11.1). */
|
|
76
|
+
export declare function erc8004Feedback(rpc: string, chainId: number, agentId: number, timeoutMs?: number): Promise<{
|
|
77
|
+
total: number;
|
|
78
|
+
receiptBacked: number;
|
|
79
|
+
}>;
|
|
80
|
+
export interface Erc8004Agent {
|
|
81
|
+
chainId: number;
|
|
82
|
+
agentId: number;
|
|
83
|
+
name?: string;
|
|
84
|
+
feedbacks: number;
|
|
85
|
+
testnet: boolean;
|
|
86
|
+
}
|
|
87
|
+
/** Agents a wallet owns, from the indexer (on-chain ERC-721 has no enumeration by owner). */
|
|
88
|
+
export declare function erc8004AgentsByOwner(indexerUrl: string, wallet: string, timeoutMs?: number, retries?: number): Promise<Erc8004Agent[]>;
|
|
89
|
+
export interface WalletErc8004 {
|
|
90
|
+
agents: Erc8004Agent[] | null;
|
|
91
|
+
onchain: {
|
|
92
|
+
chainId: number;
|
|
93
|
+
balance: number;
|
|
94
|
+
} | null;
|
|
95
|
+
feedback: {
|
|
96
|
+
total: number;
|
|
97
|
+
receiptBacked: number;
|
|
98
|
+
source: "onchain" | "indexer";
|
|
99
|
+
} | null;
|
|
100
|
+
errors: string[];
|
|
101
|
+
}
|
|
102
|
+
export declare function walletErc8004(wallet: string, chainId: number | null, opts?: CheckOptions): Promise<WalletErc8004>;
|
|
103
|
+
/** Every INAM agent with a proven EVM wallet (`linked.erc8004_id`), keyed by lowercase wallet. The registry has no lookup by wallet. */
|
|
104
|
+
export declare function inamLinkedWallets(registryUrl?: string, timeoutMs?: number): Promise<Map<string, string>>;
|
|
105
|
+
export declare function directoryItem(origin: string, timeoutMs?: number): Promise<CheckItem>;
|
|
106
|
+
/** Last two labels, or three under a two-letter ccTLD's co/com/org/net/ac/gov/edu. */
|
|
107
|
+
export declare function registrableDomain(host: string): string;
|
|
108
|
+
export declare function domainItem(host: string, timeoutMs?: number, retries?: number): Promise<CheckItem>;
|
|
109
|
+
export declare function checkWallet(wallet: string, opts?: CheckOptions & {
|
|
110
|
+
chainId?: number | null;
|
|
111
|
+
}): Promise<CheckReport>;
|
|
112
|
+
export declare function checkDid(did: string, opts?: CheckOptions): Promise<CheckReport>;
|
|
113
|
+
export declare function checkUrl(url: string, opts?: CheckOptions): Promise<CheckReport>;
|
|
114
|
+
export declare function checkTarget(target: string, opts?: CheckOptions): Promise<CheckReport>;
|
|
115
|
+
export declare function formatReport(r: CheckReport): string;
|
package/dist/check.js
ADDED
|
@@ -0,0 +1,391 @@
|
|
|
1
|
+
import { keccak_256 } from "@noble/hashes/sha3.js";
|
|
2
|
+
import { InamClient } from "./client.js";
|
|
3
|
+
import { decideTrust } from "./trust.js";
|
|
4
|
+
import { decideX402, INAM_X402_EXTENSION } from "./x402.js";
|
|
5
|
+
import { DIRECTORY_PATH, verifyDirectoryResponse } from "./webBotAuth.js";
|
|
6
|
+
export const ERC8004 = {
|
|
7
|
+
identity: { mainnet: "0x8004A169FB4a3325136EB29fA0ceB6D2e539a432", testnet: "0x8004A818BFB912233c491871b3d84c89A494BD9e" },
|
|
8
|
+
reputation: { mainnet: "0x8004BAa17C55a88189AE136b182e5fdA19dE9b63", testnet: "0x8004B663056A597Dffe9eCcC1965A193B7388713" },
|
|
9
|
+
};
|
|
10
|
+
/** Keyless public RPCs. Other chains are covered by the indexer only, or by `rpc` / INAM_RPC_<chainId>. */
|
|
11
|
+
export const DEFAULT_RPC = {
|
|
12
|
+
1: "https://ethereum-rpc.publicnode.com",
|
|
13
|
+
8453: "https://mainnet.base.org",
|
|
14
|
+
84532: "https://sepolia.base.org",
|
|
15
|
+
};
|
|
16
|
+
const TESTNET_CHAINS = new Set([84532, 11155111, 80002, 43113, 421614, 11155420]);
|
|
17
|
+
const CHAIN_NAMES = { 1: "Ethereum", 8453: "Base", 84532: "Base Sepolia", 137: "Polygon", 43114: "Avalanche", 11155111: "Sepolia" };
|
|
18
|
+
// x402 v1 network names.
|
|
19
|
+
const V1_NETWORKS = { base: 8453, "base-sepolia": 84532, ethereum: 1, sepolia: 11155111, polygon: 137, "polygon-amoy": 80002, avalanche: 43114, "avalanche-fuji": 43113 };
|
|
20
|
+
const USDC_ASSETS = new Set(["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", "0x036cbd53842c5426634e7929541ec2318f3dcf7e", "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU"]);
|
|
21
|
+
export const SHARED_HOSTING = /(^|\.)(workers\.dev|pages\.dev|vercel\.app|netlify\.app|onrender\.com|herokuapp\.com|fly\.dev|railway\.app|replit\.app|repl\.co|github\.io|deno\.dev|run\.app|azurewebsites\.net|ngrok-free\.app|ngrok\.app|trycloudflare\.com|amazonaws\.com|cloudfront\.net|web\.app|firebaseapp\.com|supabase\.co|modal\.run|lovable\.app|up\.railway\.app|ngrok-free\.dev|ondigitalocean\.app|convex\.site|chatgpt\.site|hstgr\.cloud|zuplo\.dev|deno\.net|val\.run|duckdns\.org|ddns\.net|servehttp\.com|contaboserver\.net|sslip\.io|nip\.io)$/i;
|
|
22
|
+
const UA = "inam-check/1 (+https://github.com/inamprotocol/inam-protocol)";
|
|
23
|
+
const STATUS_RANK = { info: 0, pass: 0, warn: 1, fail: 2 };
|
|
24
|
+
export const isEvmAddress = (a) => /^0x[0-9a-fA-F]{40}$/.test(a);
|
|
25
|
+
export const chainIdOf = (network) => {
|
|
26
|
+
const m = /^eip155:(\d+)$/.exec(network);
|
|
27
|
+
return m ? Number(m[1]) : (V1_NETWORKS[network.toLowerCase()] ?? null);
|
|
28
|
+
};
|
|
29
|
+
const chainName = (id) => CHAIN_NAMES[id] ?? `chain ${id}`;
|
|
30
|
+
const short = (a) => (a.length > 14 ? `${a.slice(0, 8)}…${a.slice(-4)}` : a);
|
|
31
|
+
function timedFetch(url, init = {}, timeoutMs = 10000) {
|
|
32
|
+
return fetch(url, { ...init, headers: { "user-agent": UA, ...init.headers }, signal: AbortSignal.timeout(timeoutMs) });
|
|
33
|
+
}
|
|
34
|
+
/** GET JSON; on 429 waits (Retry-After, else 15 s, doubling) and retries up to `retries` times. */
|
|
35
|
+
async function getJson(url, timeoutMs, retries = 1) {
|
|
36
|
+
for (let i = 0;; i++) {
|
|
37
|
+
const res = await timedFetch(url, { headers: { accept: "application/json" } }, timeoutMs);
|
|
38
|
+
if (res.ok)
|
|
39
|
+
return res.json();
|
|
40
|
+
if (res.status !== 429 || i >= retries)
|
|
41
|
+
throw new Error(`GET ${url} -> ${res.status}`);
|
|
42
|
+
await new Promise((r) => setTimeout(r, (Number(res.headers.get("retry-after")) || 15 * 2 ** i) * 1000));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// ---------- x402 ----------
|
|
46
|
+
/** Payment requirements from a 402: the v2 PAYMENT-REQUIRED header, or the v1 JSON body. */
|
|
47
|
+
export function parsePaymentRequired(headers, body) {
|
|
48
|
+
const h = headers.get("payment-required");
|
|
49
|
+
if (h) {
|
|
50
|
+
try {
|
|
51
|
+
return JSON.parse(new TextDecoder().decode(Uint8Array.from(atob(h), (c) => c.charCodeAt(0))));
|
|
52
|
+
}
|
|
53
|
+
catch { }
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
const j = JSON.parse(body);
|
|
57
|
+
return Array.isArray(j?.accepts) ? j : null;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function paymentOptions(required) {
|
|
64
|
+
return (required?.accepts ?? [])
|
|
65
|
+
.filter((a) => typeof a?.payTo === "string")
|
|
66
|
+
.map((a) => {
|
|
67
|
+
const network = String(a.network ?? "unknown");
|
|
68
|
+
const chainId = chainIdOf(network);
|
|
69
|
+
const amount = a.amount ?? a.maxAmountRequired;
|
|
70
|
+
const stable = /^(usdc|usd coin|usdt|tether usd|usdt0)$/i.test(a.extra?.name ?? "") || USDC_ASSETS.has(isEvmAddress(a.asset ?? "") ? a.asset.toLowerCase() : a.asset);
|
|
71
|
+
const testnet = (chainId !== null && TESTNET_CHAINS.has(chainId)) || /sepolia|devnet|testnet|fuji|amoy/i.test(network);
|
|
72
|
+
return {
|
|
73
|
+
scheme: a.scheme,
|
|
74
|
+
network,
|
|
75
|
+
chainId,
|
|
76
|
+
asset: a.asset,
|
|
77
|
+
amount: amount === undefined ? undefined : String(amount),
|
|
78
|
+
price: stable && amount !== undefined && Number.isFinite(Number(amount)) ? `${Number(amount) / 1e6} ${a.extra?.name ?? "USDC"}` : undefined,
|
|
79
|
+
payTo: a.payTo,
|
|
80
|
+
testnet,
|
|
81
|
+
};
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
// ---------- ERC-8004 ----------
|
|
85
|
+
const word = (hex) => hex.replace(/^0x/, "").toLowerCase().padStart(64, "0");
|
|
86
|
+
const uintWord = (n) => BigInt(n).toString(16).padStart(64, "0");
|
|
87
|
+
const selector = (sig) => Buffer.from(keccak_256(new TextEncoder().encode(sig))).toString("hex").slice(0, 8);
|
|
88
|
+
function strTail(s) {
|
|
89
|
+
const hex = Buffer.from(s, "utf8").toString("hex");
|
|
90
|
+
return uintWord(s.length) + (hex ? hex.padEnd(Math.ceil(hex.length / 64) * 64, "0") : "");
|
|
91
|
+
}
|
|
92
|
+
async function ethCall(rpc, to, data, timeoutMs) {
|
|
93
|
+
const res = await timedFetch(rpc, { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "eth_call", params: [{ to, data: `0x${data}` }, "latest"] }) }, timeoutMs);
|
|
94
|
+
const j = await res.json();
|
|
95
|
+
if (j.error || typeof j.result !== "string")
|
|
96
|
+
throw new Error(`eth_call: ${j.error?.message ?? res.status}`);
|
|
97
|
+
return j.result.slice(2);
|
|
98
|
+
}
|
|
99
|
+
const readWord = (hex, i) => BigInt(`0x${hex.slice(i * 64, i * 64 + 64) || "0"}`);
|
|
100
|
+
export async function erc8004Balance(rpc, chainId, wallet, timeoutMs) {
|
|
101
|
+
const reg = TESTNET_CHAINS.has(chainId) ? ERC8004.identity.testnet : ERC8004.identity.mainnet;
|
|
102
|
+
return Number(readWord(await ethCall(rpc, reg, selector("balanceOf(address)") + word(wallet), timeoutMs), 0));
|
|
103
|
+
}
|
|
104
|
+
/** Feedback on one agent from the Reputation Registry: all of it, and the part tagged as INAM-receipt-backed (SPEC.md §11.1). */
|
|
105
|
+
export async function erc8004Feedback(rpc, chainId, agentId, timeoutMs) {
|
|
106
|
+
const reg = TESTNET_CHAINS.has(chainId) ? ERC8004.reputation.testnet : ERC8004.reputation.mainnet;
|
|
107
|
+
const raw = await ethCall(rpc, reg, selector("getClients(uint256)") + uintWord(agentId), timeoutMs);
|
|
108
|
+
const n = Number(readWord(raw, 1));
|
|
109
|
+
const clients = Array.from({ length: n }, (_, i) => `0x${raw.slice((2 + i) * 64 + 24, (3 + i) * 64)}`);
|
|
110
|
+
if (!clients.length)
|
|
111
|
+
return { total: 0, receiptBacked: 0 };
|
|
112
|
+
const summary = async (tag1) => {
|
|
113
|
+
const arr = uintWord(clients.length) + clients.map(word).join("");
|
|
114
|
+
const t1 = strTail(tag1);
|
|
115
|
+
const t2 = strTail("");
|
|
116
|
+
const head = uintWord(agentId) + uintWord(128) + uintWord(128 + arr.length / 2) + uintWord(128 + arr.length / 2 + t1.length / 2);
|
|
117
|
+
return Number(readWord(await ethCall(rpc, reg, selector("getSummary(uint256,address[],string,string)") + head + arr + t1 + t2, timeoutMs), 0));
|
|
118
|
+
};
|
|
119
|
+
const [total, receiptBacked] = await Promise.all([summary(""), summary("inam-receipt")]);
|
|
120
|
+
return { total, receiptBacked };
|
|
121
|
+
}
|
|
122
|
+
/** Agents a wallet owns, from the indexer (on-chain ERC-721 has no enumeration by owner). */
|
|
123
|
+
export async function erc8004AgentsByOwner(indexerUrl, wallet, timeoutMs, retries) {
|
|
124
|
+
const j = await getJson(`${indexerUrl}/api/v1/agents?owner_address=${wallet.toLowerCase()}&limit=100`, timeoutMs, retries);
|
|
125
|
+
return (j.items ?? [])
|
|
126
|
+
.filter((i) => String(i.owner_address).toLowerCase() === wallet.toLowerCase())
|
|
127
|
+
.map((i) => ({ chainId: Number(i.chain_id), agentId: Number(i.token_id), name: i.name, feedbacks: Number(i.total_feedbacks ?? 0), testnet: Boolean(i.is_testnet) }));
|
|
128
|
+
}
|
|
129
|
+
export async function walletErc8004(wallet, chainId, opts = {}) {
|
|
130
|
+
const indexer = opts.indexerUrl ?? "https://api.8004scan.io";
|
|
131
|
+
const rpcs = { ...DEFAULT_RPC, ...opts.rpc };
|
|
132
|
+
const chain = chainId ?? 8453;
|
|
133
|
+
const rpc = (typeof process !== "undefined" && process.env?.[`INAM_RPC_${chain}`]) || rpcs[chain];
|
|
134
|
+
const errors = [];
|
|
135
|
+
const [agents, balance] = await Promise.all([
|
|
136
|
+
erc8004AgentsByOwner(indexer, wallet, opts.timeoutMs, opts.retries).catch((e) => (errors.push(`indexer: ${e.message}`), null)),
|
|
137
|
+
rpc ? erc8004Balance(rpc, chain, wallet, opts.timeoutMs).catch((e) => (errors.push(`rpc ${chainName(chain)}: ${e.message}`), null)) : null,
|
|
138
|
+
]);
|
|
139
|
+
let feedback = null;
|
|
140
|
+
const onChain = (agents ?? []).filter((a) => a.chainId === chain).slice(0, 3); // ponytail: first 3 agents on the payment chain
|
|
141
|
+
if (rpc && onChain.length) {
|
|
142
|
+
try {
|
|
143
|
+
const rows = await Promise.all(onChain.map((a) => erc8004Feedback(rpc, chain, a.agentId, opts.timeoutMs)));
|
|
144
|
+
feedback = { total: rows.reduce((s, r) => s + r.total, 0), receiptBacked: rows.reduce((s, r) => s + r.receiptBacked, 0), source: "onchain" };
|
|
145
|
+
}
|
|
146
|
+
catch (e) {
|
|
147
|
+
errors.push(`rpc feedback: ${e.message}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (!feedback && agents?.length)
|
|
151
|
+
feedback = { total: agents.reduce((s, a) => s + a.feedbacks, 0), receiptBacked: 0, source: "indexer" };
|
|
152
|
+
return { agents, onchain: balance === null ? null : { chainId: chain, balance }, feedback, errors };
|
|
153
|
+
}
|
|
154
|
+
function erc8004Items(wallet, r) {
|
|
155
|
+
const owned = Math.max(r.agents?.length ?? 0, r.onchain?.balance ?? 0);
|
|
156
|
+
const chains = [...new Set((r.agents ?? []).map((a) => chainName(a.chainId)))];
|
|
157
|
+
const where = r.onchain ? ` (on-chain on ${chainName(r.onchain.chainId)}: ${r.onchain.balance})` : "";
|
|
158
|
+
if (r.agents === null && r.onchain === null)
|
|
159
|
+
return [{ id: "erc8004.identity", status: "info", label: "ERC-8004 identity: could not check", detail: r.errors.join("; ") }];
|
|
160
|
+
if (!owned)
|
|
161
|
+
return [{ id: "erc8004.identity", status: "warn", label: `No ERC-8004 identity owned by ${short(wallet)}${where}`, detail: "Only ownership is reverse-indexed; an agent that set this as agentWallet without owning it is not found." }];
|
|
162
|
+
const items = [{ id: "erc8004.identity", status: "pass", label: `ERC-8004: owns ${owned} agent${owned > 1 ? "s" : ""}${chains.length ? ` on ${chains.slice(0, 4).join(", ")}${chains.length > 4 ? "…" : ""}` : ""}${where}`, detail: (r.agents ?? []).slice(0, 5).map((a) => `${a.chainId}:${a.agentId}${a.name ? ` ${a.name}` : ""}`).join(", ") || undefined }];
|
|
163
|
+
const f = r.feedback;
|
|
164
|
+
if (!f)
|
|
165
|
+
items.push({ id: "erc8004.feedback", status: "info", label: "ERC-8004 feedback: not checked", detail: r.errors.join("; ") || undefined });
|
|
166
|
+
else if (f.receiptBacked > 0)
|
|
167
|
+
items.push({ id: "erc8004.feedback", status: "pass", label: `ERC-8004 feedback: ${f.total}, of which ${f.receiptBacked} backed by a signed INAM receipt` });
|
|
168
|
+
else if (f.total > 0)
|
|
169
|
+
items.push({ id: "erc8004.feedback", status: "warn", label: `ERC-8004 feedback: ${f.total}, none tied to a task receipt`, detail: "Bare scores: any wallet can send them, nothing links them to delivered work." });
|
|
170
|
+
else
|
|
171
|
+
items.push({ id: "erc8004.feedback", status: "warn", label: "ERC-8004 feedback: none" });
|
|
172
|
+
return items;
|
|
173
|
+
}
|
|
174
|
+
// ---------- INAM ----------
|
|
175
|
+
/** Every INAM agent with a proven EVM wallet (`linked.erc8004_id`), keyed by lowercase wallet. The registry has no lookup by wallet. */
|
|
176
|
+
export async function inamLinkedWallets(registryUrl = "https://api.inamprotocol.org", timeoutMs) {
|
|
177
|
+
const out = new Map();
|
|
178
|
+
for (let offset = 0;; offset += 200) {
|
|
179
|
+
const page = await getJson(`${registryUrl}/v1/agents/search?supports=erc8004_id&include_demo=true&include_revoked=true&limit=200&offset=${offset}`, timeoutMs);
|
|
180
|
+
for (const a of page.agents ?? [])
|
|
181
|
+
if (a.linked?.erc8004_id)
|
|
182
|
+
out.set(String(a.linked.erc8004_id).toLowerCase(), a.id);
|
|
183
|
+
if (!page.hasMore)
|
|
184
|
+
return out;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
async function agentAndReputation(registryUrl, did) {
|
|
188
|
+
const c = new InamClient(registryUrl);
|
|
189
|
+
try {
|
|
190
|
+
return await Promise.all([c.getAgent(did), c.getReputation(did)]);
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function reputationItem(agent, rep) {
|
|
197
|
+
const d = decideTrust(agent, rep);
|
|
198
|
+
const c = rep.components;
|
|
199
|
+
const label = `INAM reputation: evidence ${rep.evidenceLevel}, ${c.finalizedReceipts} countersigned receipt${c.finalizedReceipts === 1 ? "" : "s"}, ${c.attestedReceipts} independently verified, trustScore ${rep.trustScore}`;
|
|
200
|
+
return { id: "inam.reputation", status: d.decision === "allow" ? "pass" : d.decision === "escrow" ? "warn" : "fail", label, detail: [`decision: ${d.decision}`, ...d.reasons, ...(rep.flags.length ? [`flags: ${rep.flags.join(", ")}`] : [])].join("; ") };
|
|
201
|
+
}
|
|
202
|
+
async function walletInam(wallet, opts) {
|
|
203
|
+
const registry = opts.registryUrl ?? "https://api.inamprotocol.org";
|
|
204
|
+
let linked;
|
|
205
|
+
try {
|
|
206
|
+
linked = opts.linkedWallets ?? (await inamLinkedWallets(registry, opts.timeoutMs));
|
|
207
|
+
}
|
|
208
|
+
catch (e) {
|
|
209
|
+
return [{ id: "inam.link", status: "info", label: "INAM wallet link: registry unreachable", detail: e.message }];
|
|
210
|
+
}
|
|
211
|
+
const did = linked.get(wallet.toLowerCase());
|
|
212
|
+
if (!did)
|
|
213
|
+
return [{ id: "inam.link", status: "warn", label: `${short(wallet)} is not linked to any INAM ID`, detail: "No INAM ID proved control of this wallet, so there are no receipts to read." }];
|
|
214
|
+
const items = [{ id: "inam.link", status: "pass", label: `${short(wallet)} is proven by INAM ID ${did}` }];
|
|
215
|
+
const ar = await agentAndReputation(registry, did);
|
|
216
|
+
if (ar)
|
|
217
|
+
items.push(reputationItem(...ar));
|
|
218
|
+
return items;
|
|
219
|
+
}
|
|
220
|
+
// ---------- web: directory, domain ----------
|
|
221
|
+
export async function directoryItem(origin, timeoutMs) {
|
|
222
|
+
const host = new URL(origin).host;
|
|
223
|
+
try {
|
|
224
|
+
const res = await timedFetch(`${origin}${DIRECTORY_PATH}`, { headers: { accept: "application/http-message-signatures-directory+json, application/json" }, redirect: "manual" }, timeoutMs);
|
|
225
|
+
if (res.status !== 200)
|
|
226
|
+
return { id: "webbotauth.directory", status: "info", label: `No Web Bot Auth key directory (HTTP ${res.status})`, detail: "Common for sellers: Web Bot Auth mostly identifies callers." };
|
|
227
|
+
const v = verifyDirectoryResponse(host, res.headers, await res.text());
|
|
228
|
+
if (!v.keys)
|
|
229
|
+
return { id: "webbotauth.directory", status: "info", label: "No Web Bot Auth key directory (HTTP 200, but not a JWKS of Ed25519 keys)" };
|
|
230
|
+
return v.valid
|
|
231
|
+
? { id: "webbotauth.directory", status: "pass", label: `Web Bot Auth key directory: ${v.keys} key${v.keys === 1 ? "" : "s"}, signature valid`, detail: `keyid ${v.keyid}` }
|
|
232
|
+
: { id: "webbotauth.directory", status: "warn", label: "Web Bot Auth key directory present but not validly signed", detail: v.reason };
|
|
233
|
+
}
|
|
234
|
+
catch (e) {
|
|
235
|
+
return { id: "webbotauth.directory", status: "info", label: "Web Bot Auth key directory: could not fetch", detail: e.message };
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
/** Last two labels, or three under a two-letter ccTLD's co/com/org/net/ac/gov/edu. */
|
|
239
|
+
// ponytail: not the Public Suffix List; good enough to pick an RDAP query, wrong for rare suffixes.
|
|
240
|
+
export function registrableDomain(host) {
|
|
241
|
+
const p = host.toLowerCase().split(".");
|
|
242
|
+
const n = p.length >= 3 && p.at(-1).length === 2 && /^(co|com|org|net|ac|gov|edu)$/.test(p.at(-2)) ? 3 : 2;
|
|
243
|
+
return p.slice(-n).join(".");
|
|
244
|
+
}
|
|
245
|
+
export async function domainItem(host, timeoutMs, retries) {
|
|
246
|
+
if (/^(localhost|[\d.]+|\[.*\])$/.test(host))
|
|
247
|
+
return { id: "domain.age", status: "info", label: `Domain age: n/a for ${host}` };
|
|
248
|
+
if (SHARED_HOSTING.test(host))
|
|
249
|
+
return { id: "domain.age", status: "info", label: `${host} is a subdomain of a shared hosting platform`, detail: "Anyone can create one in minutes; the platform domain's age says nothing about the seller." };
|
|
250
|
+
const domain = registrableDomain(host);
|
|
251
|
+
try {
|
|
252
|
+
const j = await getJson(`https://rdap.org/domain/${domain}`, timeoutMs, retries);
|
|
253
|
+
const reg = (j.events ?? []).find((e) => e.eventAction === "registration")?.eventDate;
|
|
254
|
+
if (!reg)
|
|
255
|
+
return { id: "domain.age", status: "info", label: `Domain age: RDAP has no registration date for ${domain}` };
|
|
256
|
+
const days = Math.floor((Date.now() - Date.parse(reg)) / 86400000);
|
|
257
|
+
return { id: "domain.age", status: days < 30 ? "warn" : "pass", label: `${domain} registered ${String(reg).slice(0, 10)} (${days} days ago)` };
|
|
258
|
+
}
|
|
259
|
+
catch (e) {
|
|
260
|
+
const noService = /-> 404$/.test(e.message);
|
|
261
|
+
return { id: "domain.age", status: "info", label: noService ? `Domain age: no public RDAP record for ${domain} (common for .io, .co, .ch, .ru)` : `Domain age: RDAP lookup failed for ${domain}`, detail: e.message };
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
// ---------- targets ----------
|
|
265
|
+
function finish(target, kind, checks, payment) {
|
|
266
|
+
const worst = Math.max(0, ...checks.map((c) => STATUS_RANK[c.status]));
|
|
267
|
+
return { target, kind, verdict: worst === 2 ? "fail" : worst === 1 ? "caution" : "pass", checkedAt: new Date().toISOString(), ...(payment ? { payment } : {}), checks };
|
|
268
|
+
}
|
|
269
|
+
export async function checkWallet(wallet, opts = {}) {
|
|
270
|
+
if (!isEvmAddress(wallet))
|
|
271
|
+
return finish(wallet, "wallet", [{ id: "target", status: "fail", label: "Not an EVM address (0x + 40 hex)" }]);
|
|
272
|
+
const [erc, inam] = await Promise.all([walletErc8004(wallet, opts.chainId ?? null, opts), walletInam(wallet, opts)]);
|
|
273
|
+
return finish(wallet, "wallet", [...erc8004Items(wallet, erc), ...inam]);
|
|
274
|
+
}
|
|
275
|
+
export async function checkDid(did, opts = {}) {
|
|
276
|
+
const ar = await agentAndReputation(opts.registryUrl ?? "https://api.inamprotocol.org", did);
|
|
277
|
+
if (!ar)
|
|
278
|
+
return finish(did, "did", [{ id: "inam.agent", status: "fail", label: "INAM ID not found in the registry" }]);
|
|
279
|
+
const [agent, rep] = ar;
|
|
280
|
+
const checks = [agent.revokedAt ? { id: "inam.agent", status: "fail", label: `INAM ID revoked at ${agent.revokedAt}` } : { id: "inam.agent", status: "pass", label: `INAM ID registered ${agent.createdAt ?? ""}`.trim() }, reputationItem(agent, rep)];
|
|
281
|
+
const wallet = agent.linked?.erc8004_id;
|
|
282
|
+
if (wallet) {
|
|
283
|
+
checks.push({ id: "inam.link", status: "pass", label: `Proven EVM wallet ${wallet}` });
|
|
284
|
+
checks.push(...erc8004Items(wallet, await walletErc8004(wallet, null, opts)));
|
|
285
|
+
}
|
|
286
|
+
else
|
|
287
|
+
checks.push({ id: "inam.link", status: "info", label: "No proven EVM wallet: an x402 payee using this ID cannot be bound to its payTo" });
|
|
288
|
+
return finish(did, "did", checks);
|
|
289
|
+
}
|
|
290
|
+
export async function checkUrl(url, opts = {}) {
|
|
291
|
+
const u = new URL(url);
|
|
292
|
+
const checks = [];
|
|
293
|
+
const local = /^(localhost|127\.|\[::1\])/.test(u.hostname);
|
|
294
|
+
const method = (opts.method ?? "GET").toUpperCase();
|
|
295
|
+
const side = Promise.all([directoryItem(u.origin, opts.timeoutMs), opts.noRdap ? null : domainItem(u.hostname, opts.timeoutMs)]);
|
|
296
|
+
let res;
|
|
297
|
+
let body = "";
|
|
298
|
+
try {
|
|
299
|
+
res = await timedFetch(url, { method, headers: { accept: "application/json", ...(method === "GET" || method === "HEAD" ? {} : { "content-type": "application/json" }) }, body: method === "GET" || method === "HEAD" ? undefined : "{}" }, opts.timeoutMs ?? 15000);
|
|
300
|
+
body = await res.text().catch(() => "");
|
|
301
|
+
}
|
|
302
|
+
catch (e) {
|
|
303
|
+
if (u.protocol !== "https:" && !local)
|
|
304
|
+
checks.push({ id: "tls", status: "fail", label: "Not HTTPS: the 402 and its payTo can be rewritten in transit" });
|
|
305
|
+
checks.push({ id: "x402.response", status: "fail", label: "Endpoint unreachable", detail: e.message });
|
|
306
|
+
const [dir, dom] = await side;
|
|
307
|
+
return finish(url, "url", [...checks, dir, ...(dom ? [dom] : [])]);
|
|
308
|
+
}
|
|
309
|
+
const final = new URL(res.url || url);
|
|
310
|
+
if (final.protocol === "https:")
|
|
311
|
+
checks.push(u.protocol === "https:" ? { id: "tls", status: "pass", label: "HTTPS, certificate accepted" } : { id: "tls", status: "warn", label: `Listed as http; redirects to ${final.origin}`, detail: "The first request is unprotected; use the https URL." });
|
|
312
|
+
else if (!local)
|
|
313
|
+
checks.push({ id: "tls", status: "fail", label: "Not HTTPS: the 402 and its payTo can be rewritten in transit" });
|
|
314
|
+
const required = res.status === 402 ? parsePaymentRequired(res.headers, body) : null;
|
|
315
|
+
const accepts = paymentOptions(required);
|
|
316
|
+
if (res.status !== 402)
|
|
317
|
+
checks.push({ id: "x402.response", status: "fail", label: `Not an x402 paywall: HTTP ${res.status}${method === "GET" ? " (try --method POST)" : ""}` });
|
|
318
|
+
else if (!accepts.length)
|
|
319
|
+
checks.push({ id: "x402.response", status: "fail", label: "402 without readable payment requirements (no PAYMENT-REQUIRED header or accepts[].payTo)" });
|
|
320
|
+
else
|
|
321
|
+
checks.push({ id: "x402.response", status: "pass", label: `402 with ${accepts.length} payment option${accepts.length > 1 ? "s" : ""} (x402 v${required.x402Version ?? "?"})` });
|
|
322
|
+
if (accepts.length && accepts.every((a) => a.testnet))
|
|
323
|
+
checks.push({ id: "x402.testnet", status: "info", label: "Testnet-only payment options" });
|
|
324
|
+
const inamDid = typeof required?.extensions?.[INAM_X402_EXTENSION]?.info?.did === "string" ? required.extensions[INAM_X402_EXTENSION].info.did : undefined;
|
|
325
|
+
const payment = required
|
|
326
|
+
? { x402Version: required.x402Version, status: res.status, resource: required.resource?.url ?? required.resource ?? required.accepts?.[0]?.resource, description: required.resource?.description ?? required.accepts?.[0]?.description, accepts, ...(inamDid ? { inamDid } : {}) }
|
|
327
|
+
: { status: res.status, accepts };
|
|
328
|
+
const registry = opts.registryUrl ?? "https://api.inamprotocol.org";
|
|
329
|
+
const linked = opts.linkedWallets ?? (await inamLinkedWallets(registry, opts.timeoutMs).catch(() => undefined));
|
|
330
|
+
// One check per distinct payTo; the last entry wins, so sort the chains we can read on-chain last.
|
|
331
|
+
const rpcs = { ...DEFAULT_RPC, ...opts.rpc };
|
|
332
|
+
const payTos = [...new Map([...accepts].sort((a, b) => Number(Boolean(rpcs[a.chainId ?? -1])) - Number(Boolean(rpcs[b.chainId ?? -1]))).map((a) => [isEvmAddress(a.payTo) ? a.payTo.toLowerCase() : a.payTo, a])).values()];
|
|
333
|
+
const perPayTo = await Promise.all(payTos.map(async (a) => {
|
|
334
|
+
if (!isEvmAddress(a.payTo))
|
|
335
|
+
return [{ id: "payto.nonevm", status: "info", label: `payTo ${short(a.payTo)} on ${a.network}: not an EVM address, so ERC-8004 and INAM wallet links do not apply` }];
|
|
336
|
+
const [erc, inam] = await Promise.all([walletErc8004(a.payTo, a.chainId, opts), linked ? walletInam(a.payTo, { ...opts, linkedWallets: linked }) : walletInam(a.payTo, opts)]);
|
|
337
|
+
return [...erc8004Items(a.payTo, erc), ...inam];
|
|
338
|
+
}));
|
|
339
|
+
checks.push(...perPayTo.flat());
|
|
340
|
+
if (inamDid) {
|
|
341
|
+
const ar = await agentAndReputation(registry, inamDid);
|
|
342
|
+
if (!ar)
|
|
343
|
+
checks.push({ id: "inam.extension", status: "fail", label: `402 names INAM ID ${inamDid}, which the registry does not know` });
|
|
344
|
+
else {
|
|
345
|
+
const d = decideX402(ar[0], ar[1], accepts.map((a) => a.payTo), { minEvidence: "none" });
|
|
346
|
+
checks.push(d.allow ? { id: "inam.extension", status: "pass", label: `402 names INAM ID ${inamDid} and payTo is its proven wallet` } : { id: "inam.extension", status: "fail", label: `402 names INAM ID ${inamDid}: ${d.reason}`, detail: "A seller can name a reputable ID while routing the money elsewhere; do not pay." });
|
|
347
|
+
if (!checks.some((c) => c.id === "inam.reputation"))
|
|
348
|
+
checks.push(reputationItem(...ar));
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
const [dir, dom] = await side;
|
|
352
|
+
checks.push(dir, ...(dom ? [dom] : []));
|
|
353
|
+
return finish(url, "url", checks, payment);
|
|
354
|
+
}
|
|
355
|
+
export function checkTarget(target, opts = {}) {
|
|
356
|
+
if (/^https?:\/\//i.test(target))
|
|
357
|
+
return checkUrl(target, opts);
|
|
358
|
+
if (isEvmAddress(target))
|
|
359
|
+
return checkWallet(target, opts);
|
|
360
|
+
if (/^did:key:z/.test(target))
|
|
361
|
+
return checkDid(target, opts);
|
|
362
|
+
throw new Error(`unrecognized target ${JSON.stringify(target)}: expected an http(s) URL, a 0x wallet address, or a did:key`);
|
|
363
|
+
}
|
|
364
|
+
const MARK = { pass: "[ ok ]", warn: "[warn]", fail: "[FAIL]", info: "[info]" };
|
|
365
|
+
const VERDICT = {
|
|
366
|
+
pass: "PASS nothing failed and nothing needs a second look",
|
|
367
|
+
caution: "CAUTION nothing failed, but some signals are missing; read the [warn] lines before paying",
|
|
368
|
+
fail: "FAIL a key check failed; do not pay this endpoint as it stands",
|
|
369
|
+
};
|
|
370
|
+
export function formatReport(r) {
|
|
371
|
+
const out = [`inam check ${r.target}`, "", ` verdict ${VERDICT[r.verdict]}`];
|
|
372
|
+
if (r.payment?.accepts.length) {
|
|
373
|
+
out.push("", " payment requirements");
|
|
374
|
+
if (r.payment.resource)
|
|
375
|
+
out.push(` resource ${r.payment.resource}`);
|
|
376
|
+
if (r.payment.description)
|
|
377
|
+
out.push(` about ${String(r.payment.description).slice(0, 100)}`);
|
|
378
|
+
for (const a of r.payment.accepts)
|
|
379
|
+
out.push(` payTo ${a.payTo} ${a.price ?? `${a.amount ?? "?"} of ${a.asset ? short(a.asset) : "?"}`} on ${a.chainId ? `${chainName(a.chainId)} (${a.network})` : a.network}`);
|
|
380
|
+
if (r.payment.inamDid)
|
|
381
|
+
out.push(` inam ${r.payment.inamDid}`);
|
|
382
|
+
}
|
|
383
|
+
out.push("", " checks");
|
|
384
|
+
for (const c of r.checks) {
|
|
385
|
+
out.push(` ${MARK[c.status]} ${c.label}`);
|
|
386
|
+
if (c.detail && c.status !== "pass")
|
|
387
|
+
out.push(` ${c.detail}`);
|
|
388
|
+
}
|
|
389
|
+
return out.join("\n");
|
|
390
|
+
}
|
|
391
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../src/check.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
package/dist/cli.js
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { checkTarget, formatReport } from "./check.js";
|
|
3
|
+
const USAGE = `Usage: inam check <target> [--json] [--strict] [--method POST] [--registry URL] [--no-rdap]
|
|
4
|
+
|
|
5
|
+
<target> an x402 resource URL, an EVM wallet (0x...), or an INAM did:key
|
|
6
|
+
|
|
7
|
+
Checks public signals before you pay: the 402's payment requirements, ERC-8004 identity
|
|
8
|
+
and feedback for payTo, the INAM wallet link and receipts, a Web Bot Auth key directory,
|
|
9
|
+
and the domain's registration date. No API keys.
|
|
10
|
+
|
|
11
|
+
Exit codes: 0 pass or caution, 1 a key check failed (or caution with --strict), 2 usage or crash.
|
|
12
|
+
Env: INAM_RPC_<chainId> overrides the public JSON-RPC for that chain.`;
|
|
13
|
+
const args = process.argv.slice(2);
|
|
14
|
+
const flag = (name) => {
|
|
15
|
+
const i = args.indexOf(name);
|
|
16
|
+
return i === -1 ? undefined : (args.splice(i, 2)[1] ?? "");
|
|
17
|
+
};
|
|
18
|
+
const bool = (name) => {
|
|
19
|
+
const i = args.indexOf(name);
|
|
20
|
+
return i !== -1 && (args.splice(i, 1), true);
|
|
21
|
+
};
|
|
22
|
+
if (bool("--help") || bool("-h") || args[0] !== "check" || !args[1]) {
|
|
23
|
+
console.error(USAGE);
|
|
24
|
+
process.exit(args.length ? 2 : 0);
|
|
25
|
+
}
|
|
26
|
+
const json = bool("--json");
|
|
27
|
+
const strict = bool("--strict");
|
|
28
|
+
const noRdap = bool("--no-rdap");
|
|
29
|
+
const method = flag("--method") ?? flag("-X");
|
|
30
|
+
const registryUrl = flag("--registry");
|
|
31
|
+
try {
|
|
32
|
+
const report = await checkTarget(args[1], { method, registryUrl, noRdap });
|
|
33
|
+
console.log(json ? JSON.stringify(report, null, 2) : formatReport(report));
|
|
34
|
+
process.exit(report.verdict === "fail" || (strict && report.verdict === "caution") ? 1 : 0);
|
|
35
|
+
}
|
|
36
|
+
catch (e) {
|
|
37
|
+
console.error(`inam check: ${e.message}`);
|
|
38
|
+
process.exit(2);
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEvD,MAAM,KAAK,GAAG;;;;;;;;;sEASwD,CAAC;AAEvE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7D,CAAC,CAAC;AACF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;IAC5B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;AAChC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;AACjC,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,IAAI,CAAC;IACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,MAAM,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,OAAO,CAAC,KAAK,CAAC,eAAgB,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -12,9 +12,10 @@ import type { AgentRecord, ExecutionReceipt, ExternalKeyType, JobOffer, JobRecor
|
|
|
12
12
|
*/
|
|
13
13
|
export declare class InamClient {
|
|
14
14
|
private readonly baseUrl;
|
|
15
|
-
private readonly
|
|
15
|
+
private readonly signer?;
|
|
16
16
|
private readonly host;
|
|
17
|
-
constructor(baseUrl: string,
|
|
17
|
+
constructor(baseUrl: string, signer?: Keypair | undefined);
|
|
18
|
+
private get keypair();
|
|
18
19
|
get did(): string;
|
|
19
20
|
/** Web Bot Auth request headers for `url`, signed with this agent's key (see webBotAuth.ts). */
|
|
20
21
|
webBotAuthHeaders(url: string | URL, opts: SignatureOptions & {
|
package/dist/client.js
CHANGED
|
@@ -13,16 +13,25 @@ import { directoryResponseHeaders, httpMessageSignaturesDirectory, webBotAuthHea
|
|
|
13
13
|
*/
|
|
14
14
|
export class InamClient {
|
|
15
15
|
baseUrl;
|
|
16
|
-
|
|
16
|
+
signer;
|
|
17
17
|
host;
|
|
18
|
-
constructor(baseUrl,
|
|
18
|
+
constructor(baseUrl, signer) {
|
|
19
19
|
this.baseUrl = baseUrl;
|
|
20
|
-
this.
|
|
20
|
+
this.signer = signer;
|
|
21
21
|
// Signed for automatically (SPEC.md v0.28, host-binding) -- derived from
|
|
22
22
|
// the same baseUrl the request actually goes to, so this can't drift
|
|
23
23
|
// from what the server sees as the request's real Host header.
|
|
24
24
|
this.host = new URL(baseUrl).host;
|
|
25
25
|
}
|
|
26
|
+
// Reads are public (GETs are optionally signed), so a client with no keypair
|
|
27
|
+
// can still look up reputations, receipts and jobs. Anything that signs
|
|
28
|
+
// needs one.
|
|
29
|
+
get keypair() {
|
|
30
|
+
if (!this.signer) {
|
|
31
|
+
throw new Error("This InamClient has no keypair, so it can only read. To sign, pass one: new InamClient(url, generateKeypair())");
|
|
32
|
+
}
|
|
33
|
+
return this.signer;
|
|
34
|
+
}
|
|
26
35
|
get did() {
|
|
27
36
|
return this.keypair.did;
|
|
28
37
|
}
|
|
@@ -41,19 +50,20 @@ export class InamClient {
|
|
|
41
50
|
const rawBody = body !== undefined ? JSON.stringify(body) : "";
|
|
42
51
|
const timestamp = Date.now().toString();
|
|
43
52
|
const bodyHash = sha256Hex(rawBody);
|
|
44
|
-
const signingString = buildSigningStringV2(method, path, this.host, timestamp, bodyHash);
|
|
45
|
-
const signature = toBase64(sign(new TextEncoder().encode(signingString), this.keypair.privateKey));
|
|
46
53
|
const headers = {
|
|
47
54
|
"content-type": "application/json",
|
|
48
|
-
"inam-agent": this.keypair.did,
|
|
49
|
-
"inam-timestamp": timestamp,
|
|
50
|
-
"inam-signature": signature,
|
|
51
|
-
[SIG_VERSION_HEADER]: CURRENT_SIG_VERSION,
|
|
52
55
|
// Same as the Python SDK: Cloudflare's bot protection challenges
|
|
53
56
|
// anonymous-looking clients from datacenter IPs (e.g. CI runners), so
|
|
54
57
|
// identify honestly. Browsers ignore this header, which is fine.
|
|
55
58
|
"user-agent": "inamprotocol-js-sdk",
|
|
56
59
|
};
|
|
60
|
+
if (this.signer || method !== "GET") {
|
|
61
|
+
const signingString = buildSigningStringV2(method, path, this.host, timestamp, bodyHash);
|
|
62
|
+
headers["inam-agent"] = this.keypair.did;
|
|
63
|
+
headers["inam-timestamp"] = timestamp;
|
|
64
|
+
headers["inam-signature"] = toBase64(sign(new TextEncoder().encode(signingString), this.keypair.privateKey));
|
|
65
|
+
headers[SIG_VERSION_HEADER] = CURRENT_SIG_VERSION;
|
|
66
|
+
}
|
|
57
67
|
if (opts?.idempotencyKey)
|
|
58
68
|
headers["idempotency-key"] = opts.idempotencyKey;
|
|
59
69
|
const res = await fetch(`${this.baseUrl}${path}`, {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/core/schemas.d.ts
CHANGED
|
@@ -186,8 +186,8 @@ export declare const draftReceiptSchema: z.ZodObject<{
|
|
|
186
186
|
outcome: "success" | "partial" | "failed";
|
|
187
187
|
verifier?: string | undefined;
|
|
188
188
|
};
|
|
189
|
-
agentAId: string;
|
|
190
189
|
signature: string;
|
|
190
|
+
agentAId: string;
|
|
191
191
|
settlement?: {
|
|
192
192
|
amount?: string | undefined;
|
|
193
193
|
currency?: string | undefined;
|
|
@@ -211,8 +211,8 @@ export declare const draftReceiptSchema: z.ZodObject<{
|
|
|
211
211
|
outcome: "success" | "partial" | "failed";
|
|
212
212
|
verifier?: string | undefined;
|
|
213
213
|
};
|
|
214
|
-
agentAId: string;
|
|
215
214
|
signature: string;
|
|
215
|
+
agentAId: string;
|
|
216
216
|
settlement?: {
|
|
217
217
|
amount?: string | undefined;
|
|
218
218
|
currency?: string | undefined;
|
|
@@ -260,19 +260,19 @@ export declare const submitVerificationSchema: z.ZodObject<{
|
|
|
260
260
|
}, "strip", z.ZodTypeAny, {
|
|
261
261
|
receiptId: string;
|
|
262
262
|
result: "verified" | "rejected";
|
|
263
|
+
signature: string;
|
|
263
264
|
method: "deterministic" | "agent_attestation";
|
|
264
265
|
outputHash: string;
|
|
265
266
|
verifier: string;
|
|
266
|
-
signature: string;
|
|
267
267
|
score?: number | undefined;
|
|
268
268
|
evidenceUri?: string | undefined;
|
|
269
269
|
}, {
|
|
270
270
|
receiptId: string;
|
|
271
271
|
result: "verified" | "rejected";
|
|
272
|
+
signature: string;
|
|
272
273
|
method: "deterministic" | "agent_attestation";
|
|
273
274
|
outputHash: string;
|
|
274
275
|
verifier: string;
|
|
275
|
-
signature: string;
|
|
276
276
|
score?: number | undefined;
|
|
277
277
|
evidenceUri?: string | undefined;
|
|
278
278
|
}>;
|
package/dist/index.d.ts
CHANGED
|
@@ -20,4 +20,6 @@ export type { TrustPolicy, TrustDecision, TrustDecisionKind } from "./trust.js";
|
|
|
20
20
|
export { INAM_FEEDBACK_TAG, buildErc8004Feedback, verifyErc8004Feedback } from "./erc8004.js";
|
|
21
21
|
export type { Erc8004Target, Erc8004Feedback, Erc8004FeedbackCheck } from "./erc8004.js";
|
|
22
22
|
export { inamReceipts, inamFetch, httpSpecHash, httpOutputHash, INAM_REQUESTER_HEADER, INAM_RECEIPT_HEADER } from "./http.js";
|
|
23
|
-
export { webBotAuthHeaders, directoryResponseHeaders, httpMessageSignaturesDirectory, jwkThumbprint, ed25519Jwk, WEB_BOT_AUTH_TAG, DIRECTORY_TAG, DIRECTORY_PATH, DIRECTORY_CONTENT_TYPE, type Ed25519Jwk, type SignatureOptions, } from "./webBotAuth.js";
|
|
23
|
+
export { webBotAuthHeaders, directoryResponseHeaders, httpMessageSignaturesDirectory, jwkThumbprint, ed25519Jwk, WEB_BOT_AUTH_TAG, DIRECTORY_TAG, DIRECTORY_PATH, DIRECTORY_CONTENT_TYPE, type Ed25519Jwk, type SignatureOptions, verifyDirectoryResponse, } from "./webBotAuth.js";
|
|
24
|
+
export { checkTarget, checkUrl, checkWallet, checkDid, formatReport, parsePaymentRequired, paymentOptions, inamLinkedWallets, walletErc8004, erc8004AgentsByOwner, erc8004Balance, erc8004Feedback, ERC8004, DEFAULT_RPC } from "./check.js";
|
|
25
|
+
export type { CheckReport, CheckItem, CheckStatus, CheckOptions, PaymentOption, WalletErc8004, Erc8004Agent } from "./check.js";
|
package/dist/index.js
CHANGED
|
@@ -25,5 +25,6 @@ export { INAM_A2A_EXTENSION_URI, inamA2AExtension, decideA2A, verifyA2ACard, car
|
|
|
25
25
|
export { decideTrust, checkTrust, DEFAULT_ESCROW_FLAGS } from "./trust.js";
|
|
26
26
|
export { INAM_FEEDBACK_TAG, buildErc8004Feedback, verifyErc8004Feedback } from "./erc8004.js";
|
|
27
27
|
export { inamReceipts, inamFetch, httpSpecHash, httpOutputHash, INAM_REQUESTER_HEADER, INAM_RECEIPT_HEADER } from "./http.js";
|
|
28
|
-
export { webBotAuthHeaders, directoryResponseHeaders, httpMessageSignaturesDirectory, jwkThumbprint, ed25519Jwk, WEB_BOT_AUTH_TAG, DIRECTORY_TAG, DIRECTORY_PATH, DIRECTORY_CONTENT_TYPE, } from "./webBotAuth.js";
|
|
28
|
+
export { webBotAuthHeaders, directoryResponseHeaders, httpMessageSignaturesDirectory, jwkThumbprint, ed25519Jwk, WEB_BOT_AUTH_TAG, DIRECTORY_TAG, DIRECTORY_PATH, DIRECTORY_CONTENT_TYPE, verifyDirectoryResponse, } from "./webBotAuth.js";
|
|
29
|
+
export { checkTarget, checkUrl, checkWallet, checkDid, formatReport, parsePaymentRequired, paymentOptions, inamLinkedWallets, walletErc8004, erc8004AgentsByOwner, erc8004Balance, erc8004Feedback, ERC8004, DEFAULT_RPC } from "./check.js";
|
|
29
30
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,GAER,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,mCAAmC,EACnC,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAE5G,qEAAqE;AACrE,yEAAyE;AACzE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAEvI,2EAA2E;AAC3E,0EAA0E;AAC1E,sEAAsE;AACtE,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAA8B,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGpF,4EAA4E;AAC5E,2EAA2E;AAC3E,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAuB3B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhL,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7G,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE9F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC9H,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,8BAA8B,EAC9B,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,sBAAsB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,IAAI,EACJ,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,QAAQ,EACR,UAAU,EACV,KAAK,EACL,OAAO,GAER,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAE/F,OAAO,EACL,wBAAwB,EACxB,aAAa,EACb,eAAe,EACf,mCAAmC,EACnC,qBAAqB,GAEtB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAA4B,MAAM,0BAA0B,CAAC;AAE5G,qEAAqE;AACrE,yEAAyE;AACzE,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAExF,OAAO,EAAE,qBAAqB,EAAE,gCAAgC,EAAiC,MAAM,+BAA+B,CAAC;AAEvI,2EAA2E;AAC3E,0EAA0E;AAC1E,sEAAsE;AACtE,0CAA0C;AAC1C,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAA8B,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAGpF,4EAA4E;AAC5E,2EAA2E;AAC3E,sEAAsE;AACtE,wEAAwE;AACxE,oEAAoE;AACpE,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,UAAU,EACV,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAuB3B,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAEhL,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE7G,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE3E,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE9F,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC9H,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,8BAA8B,EAC9B,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,sBAAsB,EAGtB,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,oBAAoB,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,oBAAoB,EAAE,cAAc,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/webBotAuth.d.ts
CHANGED
|
@@ -39,3 +39,15 @@ export declare function webBotAuthHeaders(url: string | URL, privateKey: Uint8Ar
|
|
|
39
39
|
* directory was requested on.
|
|
40
40
|
*/
|
|
41
41
|
export declare function directoryResponseHeaders(authority: string, privateKey: Uint8Array, opts?: SignatureOptions): Record<"Content-Type" | "Signature-Input" | "Signature", string>;
|
|
42
|
+
/**
|
|
43
|
+
* Checks a fetched key directory the way a verifier would: the body is a JWKS
|
|
44
|
+
* of Ed25519 keys, and the response carries an RFC 9421 signature tagged
|
|
45
|
+
* `http-message-signatures-directory`, covering `"@authority";req`, by a key
|
|
46
|
+
* the directory lists (matched by JWK thumbprint), not expired.
|
|
47
|
+
*/
|
|
48
|
+
export declare function verifyDirectoryResponse(authority: string, headers: Headers, body: string, now?: number): {
|
|
49
|
+
valid: boolean;
|
|
50
|
+
keys: number;
|
|
51
|
+
keyid?: string;
|
|
52
|
+
reason?: string;
|
|
53
|
+
};
|
package/dist/webBotAuth.js
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `Signature-Agent` is sent as a structured-field string, the form Cloudflare
|
|
8
8
|
* requires today; the draft's newer dictionary form is rejected there.
|
|
9
9
|
*/
|
|
10
|
-
import { didToPublicKey, keypairFromPrivateKey, sign } from "./crypto/keys.js";
|
|
10
|
+
import { didToPublicKey, keypairFromPrivateKey, sign, verifyRawEd25519 } from "./crypto/keys.js";
|
|
11
11
|
import { sha256 } from "@noble/hashes/sha256";
|
|
12
12
|
export const WEB_BOT_AUTH_TAG = "web-bot-auth";
|
|
13
13
|
export const DIRECTORY_TAG = "http-message-signatures-directory";
|
|
@@ -74,4 +74,54 @@ export function directoryResponseHeaders(authority, privateKey, opts = {}) {
|
|
|
74
74
|
...signComponents(privateKey, [['"@authority";req', authority.toLowerCase()]], DIRECTORY_TAG, opts),
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Checks a fetched key directory the way a verifier would: the body is a JWKS
|
|
79
|
+
* of Ed25519 keys, and the response carries an RFC 9421 signature tagged
|
|
80
|
+
* `http-message-signatures-directory`, covering `"@authority";req`, by a key
|
|
81
|
+
* the directory lists (matched by JWK thumbprint), not expired.
|
|
82
|
+
*/
|
|
83
|
+
export function verifyDirectoryResponse(authority, headers, body, now = Math.floor(Date.now() / 1000)) {
|
|
84
|
+
let keys;
|
|
85
|
+
try {
|
|
86
|
+
keys = (JSON.parse(body).keys ?? []).filter((k) => k?.kty === "OKP" && k.crv === "Ed25519").map((k) => new Uint8Array(Buffer.from(k.x, "base64url")));
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return { valid: false, keys: 0, reason: "body is not a JWKS" };
|
|
90
|
+
}
|
|
91
|
+
if (!keys.length)
|
|
92
|
+
return { valid: false, keys: 0, reason: "no Ed25519 keys" };
|
|
93
|
+
const input = headers.get("signature-input");
|
|
94
|
+
const sigHeader = headers.get("signature");
|
|
95
|
+
if (!input || !sigHeader)
|
|
96
|
+
return { valid: false, keys: keys.length, reason: "response is not signed" };
|
|
97
|
+
// ponytail: reads the first signature label only; directories carry one per key, the first is enough to show control.
|
|
98
|
+
const m = /^\s*([\w-]+)=(\(([^)]*)\)(.*))$/.exec(input.split(/,(?=\s*[\w-]+=\()/)[0]);
|
|
99
|
+
if (!m)
|
|
100
|
+
return { valid: false, keys: keys.length, reason: "unreadable Signature-Input" };
|
|
101
|
+
const [, label, params, components, rest] = m;
|
|
102
|
+
const sig = new RegExp(`(?:^|,)[ ]*${label}=:([^:]+):`).exec(sigHeader)?.[1];
|
|
103
|
+
const param = (k) => new RegExp(`;${k}=("([^"]*)"|([0-9]+))`).exec(rest)?.slice(2).find((x) => x !== undefined);
|
|
104
|
+
if (!sig)
|
|
105
|
+
return { valid: false, keys: keys.length, reason: `no Signature for ${label}` };
|
|
106
|
+
if (param("tag") !== DIRECTORY_TAG)
|
|
107
|
+
return { valid: false, keys: keys.length, reason: `tag is not ${DIRECTORY_TAG}` };
|
|
108
|
+
const expires = param("expires");
|
|
109
|
+
if (expires && Number(expires) < now)
|
|
110
|
+
return { valid: false, keys: keys.length, reason: "signature expired" };
|
|
111
|
+
const lines = [];
|
|
112
|
+
for (const c of components.trim().split(/\s+/)) {
|
|
113
|
+
if (c !== '"@authority";req' && c !== '"@authority"')
|
|
114
|
+
return { valid: false, keys: keys.length, reason: `unsupported component ${c}` };
|
|
115
|
+
lines.push(`${c}: ${authority.toLowerCase()}`);
|
|
116
|
+
}
|
|
117
|
+
const base = new TextEncoder().encode([...lines, `"@signature-params": ${params}`].join("\n"));
|
|
118
|
+
const keyid = param("keyid");
|
|
119
|
+
const signature = new Uint8Array(Buffer.from(sig, "base64"));
|
|
120
|
+
const key = keys.find((k) => jwkThumbprint(k) === keyid);
|
|
121
|
+
if (!key)
|
|
122
|
+
return { valid: false, keys: keys.length, keyid, reason: "keyid matches no listed key" };
|
|
123
|
+
return verifyRawEd25519(signature, base, key)
|
|
124
|
+
? { valid: true, keys: keys.length, keyid }
|
|
125
|
+
: { valid: false, keys: keys.length, keyid, reason: "signature does not verify" };
|
|
126
|
+
}
|
|
77
127
|
//# sourceMappingURL=webBotAuth.js.map
|
package/dist/webBotAuth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webBotAuth.js","sourceRoot":"","sources":["../src/webBotAuth.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"webBotAuth.js","sourceRoot":"","sources":["../src/webBotAuth.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "inamprotocol",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0",
|
|
4
4
|
"description": "Reference TypeScript/JavaScript SDK for the INAM Protocol — agent identity, execution receipts, jobs, and reputation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -15,6 +15,10 @@
|
|
|
15
15
|
"import": "./dist/aiSdk.js"
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
|
+
"bin": {
|
|
19
|
+
"inam": "dist/cli.js",
|
|
20
|
+
"inamprotocol": "dist/cli.js"
|
|
21
|
+
},
|
|
18
22
|
"files": [
|
|
19
23
|
"dist"
|
|
20
24
|
],
|
|
@@ -23,6 +27,9 @@
|
|
|
23
27
|
},
|
|
24
28
|
"license": "Apache-2.0",
|
|
25
29
|
"keywords": [
|
|
30
|
+
"x402",
|
|
31
|
+
"erc-8004",
|
|
32
|
+
"cli",
|
|
26
33
|
"inam",
|
|
27
34
|
"agent",
|
|
28
35
|
"ai-agent",
|