@agenticprimitives/estate-projection 0.0.0-alpha.11 → 0.0.0-alpha.13

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/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export declare const PACKAGE_NAME = "@agenticprimitives/estate-projection";
2
- export declare const PACKAGE_STATUS = "w3-merkle-presentation";
2
+ export declare const PACKAGE_STATUS = "w3-merkle-presentation+issuer-row";
3
3
  export declare const SPEC_REF = "specs/410-thesis-review-ten-additions.md";
4
4
  export { commitmentOf, buildProjection, projectionDigest, estateIdOf, type EstateProjectionV1, type ProjectionLeafV1, type ProjectionSet, } from './projection.js';
5
5
  export { makeAuthorityPresentation, verifyAuthorityPresentation, type AuthorityPresentationV1, type AnchoredRoots, type PresentationVerdict, } from './presentation.js';
6
+ export { EMPTY_ROOT, ISSUER_ROW_TAG, credentialDigestOf, buildIssuerProjection, issuerRowArgs, issuerRootsOf, makeCredentialStatusPresentation, verifyCredentialStatusPresentation, type IssuerProjectionV1, type IssuerAnchoredRoots, type CredentialStatusPresentationV1, type CredentialStatusVerdict, } from './issuer.js';
6
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,yCAAyC,CAAC;AACnE,eAAO,MAAM,cAAc,2BAA2B,CAAC;AACvD,eAAO,MAAM,QAAQ,6CAA6C,CAAC;AAEnE,OAAO,EACL,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,GAChI,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EAAE,2BAA2B,EAAE,KAAK,uBAAuB,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,GACnI,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,yCAAyC,CAAC;AACnE,eAAO,MAAM,cAAc,sCAAsC,CAAC;AAClE,eAAO,MAAM,QAAQ,6CAA6C,CAAC;AAEnE,OAAO,EACL,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,EAAE,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,KAAK,aAAa,GAChI,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EAAE,2BAA2B,EAAE,KAAK,uBAAuB,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,GACnI,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EACnG,gCAAgC,EAAE,kCAAkC,EACpE,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,KAAK,8BAA8B,EAAE,KAAK,uBAAuB,GACrH,MAAM,aAAa,CAAC"}
package/dist/index.js CHANGED
@@ -13,8 +13,11 @@
13
13
  // needed. Resolution / evidence, NEVER authority (ADR-0056 / ADR-0057): whether the receiving estate lets the agent
14
14
  // ACT is its own mandate, verified per step.
15
15
  export const PACKAGE_NAME = '@agenticprimitives/estate-projection';
16
- export const PACKAGE_STATUS = 'w3-merkle-presentation';
16
+ export const PACKAGE_STATUS = 'w3-merkle-presentation+issuer-row';
17
17
  export const SPEC_REF = 'specs/410-thesis-review-ten-additions.md';
18
18
  export { commitmentOf, buildProjection, projectionDigest, estateIdOf, } from './projection.js';
19
19
  export { makeAuthorityPresentation, verifyAuthorityPresentation, } from './presentation.js';
20
+ // Spec 305 W2 / zkID alignment §4 (Z3) — THE ISSUER ROW: a credential issuer's live-credential root anchored on the
21
+ // same registry, and the status presentation a holder brings beside a credential presentation.
22
+ export { EMPTY_ROOT, ISSUER_ROW_TAG, credentialDigestOf, buildIssuerProjection, issuerRowArgs, issuerRootsOf, makeCredentialStatusPresentation, verifyCredentialStatusPresentation, } from './issuer.js';
20
23
  //# 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,4EAA4E;AAC5E,EAAE;AACF,mHAAmH;AACnH,oHAAoH;AACpH,8GAA8G;AAC9G,kHAAkH;AAClH,iHAAiH;AACjH,EAAE;AACF,mHAAmH;AACnH,qHAAqH;AACrH,kHAAkH;AAClH,iHAAiH;AACjH,oHAAoH;AACpH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,sCAAsC,CAAC;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,wBAAwB,CAAC;AACvD,MAAM,CAAC,MAAM,QAAQ,GAAG,0CAA0C,CAAC;AAEnE,OAAO,EACL,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,GAC5D,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EAAE,2BAA2B,GACvD,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,mHAAmH;AACnH,oHAAoH;AACpH,8GAA8G;AAC9G,kHAAkH;AAClH,iHAAiH;AACjH,EAAE;AACF,mHAAmH;AACnH,qHAAqH;AACrH,kHAAkH;AAClH,iHAAiH;AACjH,oHAAoH;AACpH,6CAA6C;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,sCAAsC,CAAC;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,mCAAmC,CAAC;AAClE,MAAM,CAAC,MAAM,QAAQ,GAAG,0CAA0C,CAAC;AAEnE,OAAO,EACL,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,UAAU,GAC5D,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,yBAAyB,EAAE,2BAA2B,GACvD,MAAM,mBAAmB,CAAC;AAC3B,oHAAoH;AACpH,+FAA+F;AAC/F,OAAO,EACL,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EACnG,gCAAgC,EAAE,kCAAkC,GAErE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,96 @@
1
+ import { type Hex } from 'viem';
2
+ import { type CorpusTree } from '@agenticprimitives/content-primitives';
3
+ import { type ProjectionLeafV1 } from './projection.js';
4
+ export declare const EMPTY_ROOT: Hex;
5
+ /** The `charterHash` slot of an issuer row: a reader that finds this tag knows the first root is a LIVE-CREDENTIAL root. */
6
+ export declare const ISSUER_ROW_TAG: Hex;
7
+ export interface IssuerProjectionV1 {
8
+ type: 'ap.issuer-projection.v1';
9
+ /** `estateIdOf(chainId, issuerSA)` — the issuer's row key on the registry; the only thing public ground learns. */
10
+ issuerId: Hex;
11
+ sequence: number;
12
+ liveCredentialRoot: Hex;
13
+ builtAt: string;
14
+ leaves: ProjectionLeafV1[];
15
+ tree: CorpusTree;
16
+ }
17
+ /** The digest an issuer commits to in a credential: keccak256 over the issuer-signed compact JWT bytes (header.payload.
18
+ * signature — never the disclosures, which the holder chooses per presentation). Issuer and holder compute the same. */
19
+ export declare function credentialDigestOf(issuerJwt: string): Hex;
20
+ export declare function buildIssuerProjection(input: {
21
+ chainId: number;
22
+ issuer: `0x${string}`;
23
+ sequence: number;
24
+ now?: () => Date;
25
+ liveCredentials: ReadonlyArray<{
26
+ digest: Hex;
27
+ blind: Hex;
28
+ subject: `0x${string}`;
29
+ }>;
30
+ }): IssuerProjectionV1;
31
+ /** The registry call an issuer row is anchored with — `setRoots(issuerId, liveCredentialRoot, EMPTY_ROOT, ISSUER_ROW_TAG, sequence)`
32
+ * — and the digest its signer signs: the SAME preimage `projectionDigest` uses for an estate, so one registry, one
33
+ * signature rule. */
34
+ export declare function issuerRowArgs(p: Pick<IssuerProjectionV1, 'issuerId' | 'sequence' | 'liveCredentialRoot'>): {
35
+ estateId: Hex;
36
+ liveGrantRoot: Hex;
37
+ membershipRoot: Hex;
38
+ charterHash: Hex;
39
+ sequence: number;
40
+ };
41
+ /** What the verifier READ from the registry under the issuer's row. `charterHash` must be the issuer tag. */
42
+ export interface IssuerAnchoredRoots {
43
+ issuerId: Hex;
44
+ sequence: number;
45
+ liveCredentialRoot: Hex;
46
+ charterHash: Hex;
47
+ anchoredAt: number;
48
+ }
49
+ /** A read of `roots(issuerId)` → the issuer's anchored root, or null when the row is not an issuer row. */
50
+ export declare function issuerRootsOf(read: {
51
+ estateId: Hex;
52
+ liveGrantRoot: Hex;
53
+ membershipRoot: Hex;
54
+ charterHash: Hex;
55
+ sequence: number;
56
+ anchoredAt: number;
57
+ }): IssuerAnchoredRoots | null;
58
+ /** What a holder shows beside a credential presentation when the verifier asks for status: one leaf of the issuer's
59
+ * live set, its opening, a proof, the sequence; bound to the verifier's challenge. No subject — a credential is not
60
+ * about an address. */
61
+ export interface CredentialStatusPresentationV1 {
62
+ type: 'ap.credential-status-presentation.v1';
63
+ suite: 'merkle-membership-v1' | 'zk-membership-v1';
64
+ issuerId: Hex;
65
+ sequence: number;
66
+ opening?: {
67
+ digest: Hex;
68
+ blind: Hex;
69
+ };
70
+ commitment: Hex;
71
+ proof: Hex[];
72
+ nonce: string;
73
+ audience: string;
74
+ }
75
+ export declare function makeCredentialStatusPresentation(p: IssuerProjectionV1, credentialDigest: Hex, challenge: {
76
+ nonce: string;
77
+ audience: string;
78
+ }): CredentialStatusPresentationV1 | null;
79
+ export type CredentialStatusVerdict = {
80
+ ok: true;
81
+ issuerId: Hex;
82
+ sequence: number;
83
+ } | {
84
+ ok: false;
85
+ code: 'suite_unsupported' | 'malformed' | 'issuer_mismatch' | 'not_an_issuer_row' | 'stale' | 'ahead_of_anchor' | 'opening_mismatch' | 'not_live' | 'challenge_mismatch';
86
+ reason: string;
87
+ };
88
+ /** Against the roots the verifier READ itself. `not_live` is the one answer a revoked credential gets: it is no longer in
89
+ * the set the issuer vouches for. A sequence the registry has not anchored is refused, not fetched. */
90
+ export declare function verifyCredentialStatusPresentation(pres: CredentialStatusPresentationV1, anchored: IssuerAnchoredRoots, expect: {
91
+ nonce: string;
92
+ audience: string;
93
+ now: number;
94
+ maxAgeSeconds: number;
95
+ }): CredentialStatusVerdict;
96
+ //# sourceMappingURL=issuer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issuer.d.ts","sourceRoot":"","sources":["../src/issuer.ts"],"names":[],"mappings":"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"}
package/dist/issuer.js ADDED
@@ -0,0 +1,83 @@
1
+ // THE ISSUER ROW — a credential issuer's revocation root on neutral ground (spec 305 W2 / zkID alignment §4, Z3).
2
+ //
3
+ // OpenAC leaves revocation unspecified and the field converges on "a root the verifier reads, a proof the holder
4
+ // brings" (2/ZK-PROOF-OF-PERSONHOOD's SMT; PSE's non-membership tree). We already run that arena for authority:
5
+ // `EstateProjectionRegistry` anchors two roots per row, signed, sequenced, read by the verifier itself. An issuer is
6
+ // a row of its own on the same registry — `issuerId = estateIdOf(chainId, issuerSA)` — carrying ONE root, the
7
+ // LIVE-CREDENTIAL root, in the first slot, the empty root in the second, and a tag in `charterHash` that says "this
8
+ // is an issuer row, not an estate". No contract change, no second registry: the registry anchors bytes32s it does
9
+ // not interpret; the meaning is the row's, declared by its tag.
10
+ //
11
+ // Inclusion in the live set proves not-revoked (spec 410 §4.2's choice, for the same reason: the live set is what the
12
+ // issuer vouches for). The holder was handed the leaf's opening at issuance (digest, blind) and keeps it in the vault
13
+ // beside the credential. A stale anchor is a refusal, never a cached acceptance.
14
+ //
15
+ // WHAT THIS GRADE DISCLOSES, said plainly: under the merkle suite the opening reveals the credential digest to the
16
+ // verifier — two verifiers comparing openings can link a holder. That is the "public flows may keep the list" grade
17
+ // of zkID alignment §4; the zk suite (`zk-membership-v1`: the same claim inside the proof, no opening) is reserved,
18
+ // and is what an OpenAC Show would carry once the profile admits a status input. A verifier that needs unlinkability
19
+ // MUST NOT demand this presentation; one that would otherwise phone the issuer's status list may.
20
+ import { keccak256, toBytes } from 'viem';
21
+ import { buildCorpusTree, merkleProof, verifyInclusion } from '@agenticprimitives/content-primitives';
22
+ import { commitmentOf, estateIdOf } from './projection.js';
23
+ export const EMPTY_ROOT = `0x${'00'.repeat(32)}`;
24
+ /** The `charterHash` slot of an issuer row: a reader that finds this tag knows the first root is a LIVE-CREDENTIAL root. */
25
+ export const ISSUER_ROW_TAG = keccak256(toBytes('ap.issuer-projection.v1'));
26
+ /** The digest an issuer commits to in a credential: keccak256 over the issuer-signed compact JWT bytes (header.payload.
27
+ * signature — never the disclosures, which the holder chooses per presentation). Issuer and holder compute the same. */
28
+ export function credentialDigestOf(issuerJwt) {
29
+ const compact = issuerJwt.split('~')[0] ?? issuerJwt;
30
+ return keccak256(toBytes(compact));
31
+ }
32
+ export function buildIssuerProjection(input) {
33
+ const leaves = input.liveCredentials
34
+ .map((r) => ({ set: 'live-credential', digest: r.digest, blind: r.blind, subject: r.subject, commitment: commitmentOf(r.digest, r.blind) }))
35
+ .sort((a, b) => (a.commitment < b.commitment ? -1 : a.commitment > b.commitment ? 1 : 0));
36
+ const tree = buildCorpusTree(leaves.map((l) => l.commitment));
37
+ return { type: 'ap.issuer-projection.v1', issuerId: estateIdOf(input.chainId, input.issuer), sequence: input.sequence, liveCredentialRoot: tree.root, builtAt: (input.now ?? (() => new Date()))().toISOString(), leaves, tree };
38
+ }
39
+ /** The registry call an issuer row is anchored with — `setRoots(issuerId, liveCredentialRoot, EMPTY_ROOT, ISSUER_ROW_TAG, sequence)`
40
+ * — and the digest its signer signs: the SAME preimage `projectionDigest` uses for an estate, so one registry, one
41
+ * signature rule. */
42
+ export function issuerRowArgs(p) {
43
+ return { estateId: p.issuerId, liveGrantRoot: p.liveCredentialRoot, membershipRoot: EMPTY_ROOT, charterHash: ISSUER_ROW_TAG, sequence: p.sequence };
44
+ }
45
+ /** A read of `roots(issuerId)` → the issuer's anchored root, or null when the row is not an issuer row. */
46
+ export function issuerRootsOf(read) {
47
+ if (read.charterHash.toLowerCase() !== ISSUER_ROW_TAG.toLowerCase())
48
+ return null;
49
+ return { issuerId: read.estateId, sequence: read.sequence, liveCredentialRoot: read.liveGrantRoot, charterHash: read.charterHash, anchoredAt: read.anchoredAt };
50
+ }
51
+ export function makeCredentialStatusPresentation(p, credentialDigest, challenge) {
52
+ const i = p.leaves.findIndex((l) => l.digest.toLowerCase() === credentialDigest.toLowerCase());
53
+ if (i < 0)
54
+ return null;
55
+ const leaf = p.leaves[i];
56
+ return { type: 'ap.credential-status-presentation.v1', suite: 'merkle-membership-v1', issuerId: p.issuerId, sequence: p.sequence, opening: { digest: leaf.digest, blind: leaf.blind }, commitment: leaf.commitment, proof: merkleProof(p.tree, i), nonce: challenge.nonce, audience: challenge.audience };
57
+ }
58
+ /** Against the roots the verifier READ itself. `not_live` is the one answer a revoked credential gets: it is no longer in
59
+ * the set the issuer vouches for. A sequence the registry has not anchored is refused, not fetched. */
60
+ export function verifyCredentialStatusPresentation(pres, anchored, expect) {
61
+ if (pres.type !== 'ap.credential-status-presentation.v1')
62
+ return { ok: false, code: 'malformed', reason: 'not a credential status presentation' };
63
+ if (pres.suite !== 'merkle-membership-v1')
64
+ return { ok: false, code: 'suite_unsupported', reason: `suite ${pres.suite} is not verified here` };
65
+ if (!pres.opening)
66
+ return { ok: false, code: 'malformed', reason: 'the merkle suite needs the opening' };
67
+ if (anchored.charterHash.toLowerCase() !== ISSUER_ROW_TAG.toLowerCase())
68
+ return { ok: false, code: 'not_an_issuer_row', reason: 'the anchored row is not an issuer row' };
69
+ if (pres.issuerId.toLowerCase() !== anchored.issuerId.toLowerCase())
70
+ return { ok: false, code: 'issuer_mismatch', reason: 'the presentation names another issuer' };
71
+ if (pres.nonce !== expect.nonce || pres.audience !== expect.audience)
72
+ return { ok: false, code: 'challenge_mismatch', reason: 'the presentation does not answer this challenge' };
73
+ if (pres.sequence !== anchored.sequence)
74
+ return { ok: false, code: pres.sequence > anchored.sequence ? 'ahead_of_anchor' : 'stale', reason: `the presentation is against sequence ${pres.sequence}; the anchor is ${anchored.sequence}` };
75
+ if (expect.now - anchored.anchoredAt > expect.maxAgeSeconds)
76
+ return { ok: false, code: 'stale', reason: `the anchored projection is older than ${expect.maxAgeSeconds}s` };
77
+ if (commitmentOf(pres.opening.digest, pres.opening.blind).toLowerCase() !== pres.commitment.toLowerCase())
78
+ return { ok: false, code: 'opening_mismatch', reason: 'the opening does not commit to the leaf' };
79
+ if (!verifyInclusion(pres.commitment, pres.proof, anchored.liveCredentialRoot))
80
+ return { ok: false, code: 'not_live', reason: 'the credential is not in the issuer\'s live set at this sequence' };
81
+ return { ok: true, issuerId: pres.issuerId, sequence: pres.sequence };
82
+ }
83
+ //# sourceMappingURL=issuer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issuer.js","sourceRoot":"","sources":["../src/issuer.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,7 @@ export interface AnchoredRoots {
39
39
  export type PresentationVerdict = {
40
40
  ok: true;
41
41
  estateId: Hex;
42
- set: ProjectionSet;
42
+ set: Exclude<ProjectionSet, 'live-credential'>;
43
43
  sequence: number;
44
44
  subject: `0x${string}`;
45
45
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAA0B,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEtG;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,8BAA8B,CAAC;IACrC,KAAK,EAAE,sBAAsB,GAAG,kBAAkB,CAAC;IACnD,QAAQ,EAAE,GAAG,CAAC;IACd,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,uGAAuG;IACvG,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC;IACtC,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,8EAA8E;IAC9E,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,sDAAsD;IACtD,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,uBAAuB,GAAG,IAAI,CAI7K;AAED,kIAAkI;AAClI,MAAM,WAAW,aAAa;IAAG,QAAQ,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,GAAG,CAAC;IAAC,cAAc,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAE/H,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,GACzF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW,GAAG,iBAAiB,GAAG,OAAO,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,aAAa,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9M;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE;IAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,mBAAmB,CAa7N"}
1
+ {"version":3,"file":"presentation.d.ts","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAA0B,KAAK,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEtG;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,8BAA8B,CAAC;IACrC,KAAK,EAAE,sBAAsB,GAAG,kBAAkB,CAAC;IACnD,QAAQ,EAAE,GAAG,CAAC;IACd,GAAG,EAAE,aAAa,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,uGAAuG;IACvG,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAA;KAAE,CAAC;IACtC,UAAU,EAAE,GAAG,CAAC;IAChB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,8EAA8E;IAC9E,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,sDAAsD;IACtD,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,uBAAuB,GAAG,IAAI,CAI7K;AAED,kIAAkI;AAClI,MAAM,WAAW,aAAa;IAAG,QAAQ,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,GAAG,CAAC;IAAC,cAAc,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE;AAE/H,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;CAAE,GACrH;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,mBAAmB,GAAG,WAAW,GAAG,iBAAiB,GAAG,OAAO,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,aAAa,GAAG,oBAAoB,GAAG,kBAAkB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9M;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,uBAAuB,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,EAAE;IAAE,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAAG,mBAAmB,CAc7N"}
@@ -30,6 +30,8 @@ export function verifyAuthorityPresentation(pres, anchored, expect) {
30
30
  return { ok: false, code: 'stale', reason: `the anchored projection is older than ${expect.maxAgeSeconds}s` };
31
31
  if (commitmentOf(pres.opening.digest, pres.opening.blind).toLowerCase() !== pres.commitment.toLowerCase())
32
32
  return { ok: false, code: 'opening_mismatch', reason: 'the opening does not commit to the leaf' };
33
+ if (pres.set === 'live-credential')
34
+ return { ok: false, code: 'malformed', reason: 'a live-credential leaf is an ISSUER row\'s — verify it with verifyCredentialStatusPresentation against the issuer\'s anchor' };
33
35
  const root = pres.set === 'live-grant' ? anchored.liveGrantRoot : anchored.membershipRoot;
34
36
  if (!verifyInclusion(pres.commitment, pres.proof, root))
35
37
  return { ok: false, code: 'not_in_root', reason: `the leaf is not in the anchored ${pres.set} root` };
@@ -1 +1 @@
1
- {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"presentation.js","sourceRoot":"","sources":["../src/presentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAExE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAA+C,MAAM,iBAAiB,CAAC;AAwBtG,MAAM,UAAU,yBAAyB,CAAC,CAAqB,EAAE,GAAkB,EAAE,MAAW,EAAE,SAA2C;IAC3I,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC;AACnU,CAAC;AASD;;;;GAIG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAA6B,EAAE,QAAuB,EAAE,MAAoG;IACtM,IAAI,IAAI,CAAC,IAAI,KAAK,8BAA8B;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,+BAA+B,EAAE,CAAC;IACnI,IAAI,IAAI,CAAC,KAAK,KAAK,sBAAsB;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,mBAAmB,EAAE,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,uBAAuB,EAAE,CAAC;IAC/I,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;IACzG,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,uCAAuC,EAAE,CAAC;IACpK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,iDAAiD,EAAE,CAAC;IAC9M,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,wCAAwC,EAAE,CAAC;IAClK,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,wCAAwC,IAAI,CAAC,QAAQ,sBAAsB,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;IAC7O,IAAI,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,yCAAyC,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;IAC3K,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,yCAAyC,EAAE,CAAC;IAC7M,IAAI,IAAI,CAAC,GAAG,KAAK,iBAAiB;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,6HAA6H,EAAE,CAAC;IACnN,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,KAAK,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC;IAC1F,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,mCAAmC,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC;IAC/J,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9G,CAAC"}
@@ -1,6 +1,9 @@
1
1
  import { type Hex } from 'viem';
2
2
  import { type CorpusTree } from '@agenticprimitives/content-primitives';
3
- export type ProjectionSet = 'live-grant' | 'membership';
3
+ /** The estate's two sets, and (spec 305 W2 Z3) an ISSUER's one: `live-credential` — the credentials an issuer currently
4
+ * vouches for (issued, unexpired, unrevoked). Inclusion proves not-revoked; a revocation is a removal and a new root —
5
+ * the live-set construction spec 410 §4.2 chose over non-membership of a revoked set, applied to credentials. */
6
+ export type ProjectionSet = 'live-grant' | 'membership' | 'live-credential';
4
7
  /** One thing the estate vouches for: a grant hash or a relationship credential digest, blinded. The estate keeps the
5
8
  * pair (`digest`, `blind`) so the holder can be handed its opening; only `commitment` reaches the tree. */
6
9
  export interface ProjectionLeafV1 {
@@ -1 +1 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEtG,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,YAAY,CAAC;AAExD;4GAC4G;AAC5G,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,aAAa,CAAC;IACnB,2FAA2F;IAC3F,MAAM,EAAE,GAAG,CAAC;IACZ,qGAAqG;IACrG,KAAK,EAAE,GAAG,CAAC;IACX,yGAAyG;IACzG,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,GAAG,CAAC;CACjB;AAED,+GAA+G;AAC/G,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,CAGzD;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,6GAA6G;IAC7G,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC;IACnB,cAAc,EAAE,GAAG,CAAC;IACpB,wEAAwE;IACxE,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,MAAM,EAAE;QAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;IAC1E,yCAAyC;IACzC,KAAK,EAAE;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,CAE1E;AAED;+EAC+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAClG,UAAU,EAAE,aAAa,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/E,WAAW,EAAE,aAAa,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACjF,GAAG,kBAAkB,CAWrB;AAED,uHAAuH;AACvH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,gBAAgB,GAAG,aAAa,CAAC,GAAG,GAAG,CAG/I;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,GAAG,IAAI,CAMhI"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC3C,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEtG;;kHAEkH;AAClH,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,iBAAiB,CAAC;AAE5E;4GAC4G;AAC5G,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,aAAa,CAAC;IACnB,2FAA2F;IAC3F,MAAM,EAAE,GAAG,CAAC;IACZ,qGAAqG;IACrG,KAAK,EAAE,GAAG,CAAC;IACX,yGAAyG;IACzG,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,GAAG,CAAC;CACjB;AAED,+GAA+G;AAC/G,wBAAgB,YAAY,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,CAGzD;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,yBAAyB,CAAC;IAChC,6GAA6G;IAC7G,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,GAAG,CAAC;IACnB,cAAc,EAAE,GAAG,CAAC;IACpB,wEAAwE;IACxE,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,iGAAiG;IACjG,MAAM,EAAE;QAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAAC,UAAU,EAAE,gBAAgB,EAAE,CAAA;KAAE,CAAC;IAC1E,yCAAyC;IACzC,KAAK,EAAE;QAAE,SAAS,EAAE,UAAU,CAAC;QAAC,UAAU,EAAE,UAAU,CAAA;KAAE,CAAC;CAC1D;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,MAAM,EAAE,GAAG,GAAG,CAE1E;AAED;+EAC+E;AAC/E,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACrC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,KAAK,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAClG,UAAU,EAAE,aAAa,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC/E,WAAW,EAAE,aAAa,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,GAAG,CAAC;QAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACjF,GAAG,kBAAkB,CAWrB;AAED,uHAAuH;AACvH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,UAAU,GAAG,eAAe,GAAG,gBAAgB,GAAG,aAAa,CAAC,GAAG,GAAG,CAG/I;AAED,iDAAiD;AACjD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,GAAG;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,GAAG,IAAI,CAMhI"}
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agenticprimitives/estate-projection",
3
- "version": "0.0.0-alpha.11",
3
+ "version": "0.0.0-alpha.13",
4
4
  "description": "An estate's public projection of its authority (spec 410 §4): the live-grant root and the membership root over blinded commitments, anchored on public ground; the authority presentation a verifier in another estate checks against them, learning that a grant is live or an agent is a member and nothing else.",
5
5
  "homepage": "https://agenticprimitives.dev",
6
6
  "bugs": {
@@ -35,8 +35,8 @@
35
35
  },
36
36
  "dependencies": {
37
37
  "viem": "^2.52.2",
38
- "@agenticprimitives/content-primitives": "1.0.0-alpha.33",
39
- "@agenticprimitives/types": "1.0.0-alpha.36"
38
+ "@agenticprimitives/content-primitives": "1.0.0-alpha.35",
39
+ "@agenticprimitives/types": "1.0.0-alpha.38"
40
40
  },
41
41
  "devDependencies": {
42
42
  "vitest": "^4.1.11",