inamprotocol 0.12.0 → 0.14.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/dist/core/attestation.d.ts +26 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +3 -1
- package/dist/x402.d.ts +57 -0
- package/dist/x402.js +94 -0
- package/dist/x402.js.map +1 -0
- package/package.json +1 -1
|
@@ -12,3 +12,29 @@ export declare function netVerdict(verifiedCount: number, rejectedCount: number)
|
|
|
12
12
|
*/
|
|
13
13
|
export type EvidenceLevel = "none" | "countersigned" | "independently_verified";
|
|
14
14
|
export declare function evidenceLevel(finalizedReceipts: number, attestedReceipts: number): EvidenceLevel;
|
|
15
|
+
/**
|
|
16
|
+
* SPEC.md §5.3 (v0.35) — the evidence behind a reputation, reported along
|
|
17
|
+
* separate dimensions instead of one ordered scale (the AAIF Identity & Trust
|
|
18
|
+
* WG's evidence-strength vocabulary). Counts, not a verdict: this is the
|
|
19
|
+
* registry's appraisal, a hint a relying party can re-derive itself (§5.4).
|
|
20
|
+
*/
|
|
21
|
+
export interface EvidenceDimensions {
|
|
22
|
+
/** Who asserts the work happened. */
|
|
23
|
+
source: {
|
|
24
|
+
/** Drafts signed only by the provider; never counted toward reputation. */
|
|
25
|
+
declared: number;
|
|
26
|
+
/** Countersigned by the counterparty and counted. */
|
|
27
|
+
corroborated: number;
|
|
28
|
+
/** Of those, receipts whose counted Verifications net out to verified. */
|
|
29
|
+
independentlyVerified: number;
|
|
30
|
+
};
|
|
31
|
+
/** How the record is held: counted receipts with a transparency-log leaf (§13). */
|
|
32
|
+
construction: {
|
|
33
|
+
anchored: number;
|
|
34
|
+
};
|
|
35
|
+
freshness: {
|
|
36
|
+
evaluatedAt: string;
|
|
37
|
+
/** Verifications ignored because their verifier is no longer authorized or was revoked. */
|
|
38
|
+
excludedAttestations: number;
|
|
39
|
+
};
|
|
40
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,8 @@ export { disputeWindowClosesAt, isDisputeWindowOpen } from "./core/disputeLifecy
|
|
|
8
8
|
export { computeVerificationId, buildSignableVerificationContent, type VerificationContentInput } from "./core/verificationContent.js";
|
|
9
9
|
export { verifyInclusion, verifyConsistency } from "./core/merkleLog.js";
|
|
10
10
|
export { type TransparencyEntryType, payloadHash } from "./core/transparencyLog.js";
|
|
11
|
-
export { type AttestationVerdict, type EvidenceLevel } from "./core/attestation.js";
|
|
11
|
+
export { type AttestationVerdict, type EvidenceLevel, type EvidenceDimensions } from "./core/attestation.js";
|
|
12
12
|
export { registerAgentSchema, linkChallengeSchema, linkSchema, postJobSchema, offerSchema, acceptOfferSchema, draftReceiptSchema, countersignSchema, disputeSchema, submitVerificationSchema, setVerifierStatusSchema, } from "./core/schemas.js";
|
|
13
13
|
export type { LinkedIdentities, ExternalKeyType, LinkChallenge, AgentRecord, VerificationMethod, ReceiptOutcome, ReceiptStatus, DisputeStatus, ExecutionReceipt, SignableReceiptContent, ReputationComponents, ReputationRoleBreakdown, ReputationResult, JobStatus, JobOffer, JobRecord, IndependentVerificationMethod, VerificationResult, VerificationRecord, } from "./types.js";
|
|
14
|
+
export { INAM_X402_EXTENSION, inamX402Extension, decideX402, withInamX402Gate, X402PaymentBlocked } from "./x402.js";
|
|
15
|
+
export type { X402Policy, X402Decision } from "./x402.js";
|
package/dist/index.js
CHANGED
|
@@ -20,4 +20,5 @@ export { payloadHash } from "./core/transparencyLog.js";
|
|
|
20
20
|
// publicly too: a caller building requests by hand (rather than through
|
|
21
21
|
// InamClient) can validate a payload client-side before sending it.
|
|
22
22
|
export { registerAgentSchema, linkChallengeSchema, linkSchema, postJobSchema, offerSchema, acceptOfferSchema, draftReceiptSchema, countersignSchema, disputeSchema, submitVerificationSchema, setVerifierStatusSchema, } from "./core/schemas.js";
|
|
23
|
+
export { INAM_X402_EXTENSION, inamX402Extension, decideX402, withInamX402Gate, X402PaymentBlocked } from "./x402.js";
|
|
23
24
|
//# 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"}
|
|
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,MAAM,WAAW,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { EvidenceLevel } from "./core/attestation.js";
|
|
1
|
+
import type { EvidenceLevel, EvidenceDimensions } from "./core/attestation.js";
|
|
2
2
|
/**
|
|
3
3
|
* Wire-format types for the INAM Protocol REST API. This is the JS/TS SDK's
|
|
4
4
|
* own copy — parity with `sdk-python/inamprotocol/types` and the registry
|
|
@@ -205,6 +205,8 @@ export interface ReputationResult {
|
|
|
205
205
|
/** v0.32 (SPEC.md §5.3): strongest evidence behind this history — read
|
|
206
206
|
* this, not `trustScore` alone, before relying on the score. */
|
|
207
207
|
evidenceLevel: EvidenceLevel;
|
|
208
|
+
/** v0.35 (SPEC.md §5.3): the same evidence as separate dimensions; a registry hint (§5.4). */
|
|
209
|
+
evidence: EvidenceDimensions;
|
|
208
210
|
components: ReputationComponents;
|
|
209
211
|
flags: string[];
|
|
210
212
|
}
|
package/dist/x402.d.ts
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { InamClient } from "./client.js";
|
|
2
|
+
import type { AgentRecord, ReputationResult } from "./types.js";
|
|
3
|
+
import type { EvidenceLevel } from "./core/attestation.js";
|
|
4
|
+
/** "Verify before you pay" for x402 v2 (SPEC.md §11.2).
|
|
5
|
+
*
|
|
6
|
+
* A paid resource names its INAM ID in the 402's `extensions.inam`. Before any
|
|
7
|
+
* payment is signed, the gate checks that this ID proved control of the
|
|
8
|
+
* `payTo` address (`linked.erc8004_id`, SPEC.md §2.1), and that its
|
|
9
|
+
* reputation meets the caller's policy. Without that binding a server could
|
|
10
|
+
* borrow a reputable agent's DID while routing the money elsewhere. */
|
|
11
|
+
export declare const INAM_X402_EXTENSION = "inam";
|
|
12
|
+
export interface X402Policy {
|
|
13
|
+
/** Minimum `trustScore` (0-100, SPEC.md §5.3). Default 0. */
|
|
14
|
+
minTrustScore?: number;
|
|
15
|
+
/** Minimum evidence behind the history. Default "countersigned". */
|
|
16
|
+
minEvidence?: EvidenceLevel;
|
|
17
|
+
}
|
|
18
|
+
export interface X402Decision {
|
|
19
|
+
allow: boolean;
|
|
20
|
+
reason: string;
|
|
21
|
+
did?: string;
|
|
22
|
+
reputation?: ReputationResult;
|
|
23
|
+
}
|
|
24
|
+
/** The `extensions` entry a paid server adds to its PaymentRequired object. */
|
|
25
|
+
export declare function inamX402Extension(did: string): {
|
|
26
|
+
inam: {
|
|
27
|
+
info: {
|
|
28
|
+
did: string;
|
|
29
|
+
};
|
|
30
|
+
schema: {
|
|
31
|
+
$schema: string;
|
|
32
|
+
type: string;
|
|
33
|
+
properties: {
|
|
34
|
+
did: {
|
|
35
|
+
type: string;
|
|
36
|
+
pattern: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
required: string[];
|
|
40
|
+
};
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
/** Pure policy check, usable without the fetch wrapper. */
|
|
44
|
+
export declare function decideX402(agent: AgentRecord, reputation: ReputationResult, payTo: string[], policy?: X402Policy): X402Decision;
|
|
45
|
+
export declare class X402PaymentBlocked extends Error {
|
|
46
|
+
readonly decision: X402Decision;
|
|
47
|
+
constructor(decision: X402Decision);
|
|
48
|
+
}
|
|
49
|
+
/** Wraps `fetch` so x402 402 responses are checked before a payment wrapper
|
|
50
|
+
* sees them. Compose it *inside* the payment wrapper:
|
|
51
|
+
*
|
|
52
|
+
* const pay = wrapFetchWithPayment(withInamX402Gate(fetch, inam, policy), signer);
|
|
53
|
+
*
|
|
54
|
+
* Blocked payees throw `X402PaymentBlocked`, so nothing is signed. Allowed
|
|
55
|
+
* ones are passed on with `accepts` narrowed to the bound `payTo`, so the
|
|
56
|
+
* payment wrapper can't pick an unverified destination. */
|
|
57
|
+
export declare function withInamX402Gate(inner: typeof fetch, inam: InamClient, policy?: X402Policy): typeof fetch;
|
package/dist/x402.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/** "Verify before you pay" for x402 v2 (SPEC.md §11.2).
|
|
2
|
+
*
|
|
3
|
+
* A paid resource names its INAM ID in the 402's `extensions.inam`. Before any
|
|
4
|
+
* payment is signed, the gate checks that this ID proved control of the
|
|
5
|
+
* `payTo` address (`linked.erc8004_id`, SPEC.md §2.1), and that its
|
|
6
|
+
* reputation meets the caller's policy. Without that binding a server could
|
|
7
|
+
* borrow a reputable agent's DID while routing the money elsewhere. */
|
|
8
|
+
export const INAM_X402_EXTENSION = "inam";
|
|
9
|
+
const EVIDENCE_RANK = { none: 0, countersigned: 1, independently_verified: 2 };
|
|
10
|
+
/** The `extensions` entry a paid server adds to its PaymentRequired object. */
|
|
11
|
+
export function inamX402Extension(did) {
|
|
12
|
+
return {
|
|
13
|
+
[INAM_X402_EXTENSION]: {
|
|
14
|
+
info: { did },
|
|
15
|
+
schema: {
|
|
16
|
+
$schema: "https://json-schema.org/draft/2020-12/schema",
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: { did: { type: "string", pattern: "^did:key:" } },
|
|
19
|
+
required: ["did"],
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** Pure policy check, usable without the fetch wrapper. */
|
|
25
|
+
export function decideX402(agent, reputation, payTo, policy = {}) {
|
|
26
|
+
const base = { did: agent.id, reputation };
|
|
27
|
+
if (agent.revokedAt)
|
|
28
|
+
return { ...base, allow: false, reason: "payee INAM ID is revoked" };
|
|
29
|
+
const bound = agent.linked.erc8004_id?.toLowerCase();
|
|
30
|
+
if (!bound || !payTo.some((a) => a.toLowerCase() === bound)) {
|
|
31
|
+
return { ...base, allow: false, reason: "payTo is not an address this INAM ID proved control of" };
|
|
32
|
+
}
|
|
33
|
+
const minEvidence = policy.minEvidence ?? "countersigned";
|
|
34
|
+
if (EVIDENCE_RANK[reputation.evidenceLevel] < EVIDENCE_RANK[minEvidence]) {
|
|
35
|
+
return { ...base, allow: false, reason: `evidence ${reputation.evidenceLevel} is below ${minEvidence}` };
|
|
36
|
+
}
|
|
37
|
+
if (reputation.trustScore < (policy.minTrustScore ?? 0)) {
|
|
38
|
+
return { ...base, allow: false, reason: `trustScore ${reputation.trustScore} is below ${policy.minTrustScore}` };
|
|
39
|
+
}
|
|
40
|
+
return { ...base, allow: true, reason: "ok" };
|
|
41
|
+
}
|
|
42
|
+
export class X402PaymentBlocked extends Error {
|
|
43
|
+
decision;
|
|
44
|
+
constructor(decision) {
|
|
45
|
+
super(`x402 payment blocked by INAM: ${decision.reason}`);
|
|
46
|
+
this.decision = decision;
|
|
47
|
+
this.name = "X402PaymentBlocked";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const b64decode = (s) => new TextDecoder().decode(Uint8Array.from(atob(s), (c) => c.charCodeAt(0)));
|
|
51
|
+
const b64encode = (s) => btoa(String.fromCharCode(...new TextEncoder().encode(s)));
|
|
52
|
+
/** Wraps `fetch` so x402 402 responses are checked before a payment wrapper
|
|
53
|
+
* sees them. Compose it *inside* the payment wrapper:
|
|
54
|
+
*
|
|
55
|
+
* const pay = wrapFetchWithPayment(withInamX402Gate(fetch, inam, policy), signer);
|
|
56
|
+
*
|
|
57
|
+
* Blocked payees throw `X402PaymentBlocked`, so nothing is signed. Allowed
|
|
58
|
+
* ones are passed on with `accepts` narrowed to the bound `payTo`, so the
|
|
59
|
+
* payment wrapper can't pick an unverified destination. */
|
|
60
|
+
// ponytail: x402 v2 header only; v1 (body JSON, X-PAYMENT) servers get treated as having no INAM ID.
|
|
61
|
+
export function withInamX402Gate(inner, inam, policy = {}) {
|
|
62
|
+
return async (input, init) => {
|
|
63
|
+
const res = await inner(input, init);
|
|
64
|
+
if (res.status !== 402)
|
|
65
|
+
return res;
|
|
66
|
+
const header = res.headers.get("payment-required");
|
|
67
|
+
let required;
|
|
68
|
+
try {
|
|
69
|
+
required = JSON.parse(b64decode(header ?? ""));
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
throw new X402PaymentBlocked({ allow: false, reason: "no readable PAYMENT-REQUIRED header" });
|
|
73
|
+
}
|
|
74
|
+
const did = required.extensions?.[INAM_X402_EXTENSION]?.info?.did;
|
|
75
|
+
if (typeof did !== "string")
|
|
76
|
+
throw new X402PaymentBlocked({ allow: false, reason: "payee names no INAM ID" });
|
|
77
|
+
let agent, reputation;
|
|
78
|
+
try {
|
|
79
|
+
[agent, reputation] = await Promise.all([inam.getAgent(did), inam.getReputation(did)]);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
throw new X402PaymentBlocked({ allow: false, did, reason: "payee INAM ID not found in the registry" });
|
|
83
|
+
}
|
|
84
|
+
const accepts = required.accepts ?? [];
|
|
85
|
+
const decision = decideX402(agent, reputation, accepts.map((a) => a.payTo), policy);
|
|
86
|
+
if (!decision.allow)
|
|
87
|
+
throw new X402PaymentBlocked(decision);
|
|
88
|
+
const bound = agent.linked.erc8004_id.toLowerCase();
|
|
89
|
+
const headers = new Headers(res.headers);
|
|
90
|
+
headers.set("payment-required", b64encode(JSON.stringify({ ...required, accepts: accepts.filter((a) => a.payTo.toLowerCase() === bound) })));
|
|
91
|
+
return new Response(res.body, { status: 402, statusText: res.statusText, headers });
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=x402.js.map
|
package/dist/x402.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x402.js","sourceRoot":"","sources":["../src/x402.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED