@xyo-network/event-kit-protocol 2.1.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,34 +2,38 @@ import type { ChainId, DeploymentId, Hash, NormalizedAddress, WakeId, WakeJwtAud
2
2
  import type { AdmittedWake } from './types.ts';
3
3
  /** Replay records survive token expiry by this amount to cover receiver skew. */
4
4
  export declare const EVENT_KIT_REPLAY_RETENTION_SKEW_SECONDS = 60;
5
- export interface WakeGrantAuthorizationRequest {
6
- /** Must match the independently pinned grant viewer. */
7
- readonly authorizationChainId: ChainId;
5
+ /** Deployment/queue grant scope only; this port does not establish subscription activation. */
6
+ export interface DeploymentGrantAuthorizationRequest {
8
7
  readonly controller: NormalizedAddress;
9
8
  readonly deploymentId: DeploymentId;
10
- /** Required by D-006's activation adapter to select the accepted tuple's exact grant. */
11
9
  readonly exactGrantHash?: Hash;
12
10
  readonly expectedHead: number;
13
- readonly filterHash: Hash;
14
11
  readonly publisher: NormalizedAddress;
15
12
  readonly queueId?: string;
16
- readonly sourceHash: Hash;
17
- readonly subscriptionHash: Hash;
18
13
  }
19
- /** Concrete grant evidence required for every enabled decision. */
20
- export interface WakeGrantEvidence {
14
+ export interface DeploymentGrantEvidence {
21
15
  readonly assertedAtBlock: number;
22
- /** Checked for every authorization decision. */
23
- readonly authorizationChainId: ChainId;
24
16
  readonly controller: NormalizedAddress;
25
17
  readonly deploymentId: DeploymentId;
26
- readonly filterHash: Hash;
27
18
  readonly id: string;
28
19
  readonly objectHash?: Hash;
29
20
  readonly queueId?: string;
21
+ readonly target: NormalizedAddress;
22
+ }
23
+ export interface WakeGrantAuthorizationRequest extends DeploymentGrantAuthorizationRequest {
24
+ /** Must match the independently pinned grant viewer. */
25
+ readonly authorizationChainId: ChainId;
26
+ readonly filterHash: Hash;
27
+ readonly sourceHash: Hash;
28
+ readonly subscriptionHash: Hash;
29
+ }
30
+ /** Complete evidence is produced only after exact finalized subscription activation. */
31
+ export interface WakeGrantEvidence extends DeploymentGrantEvidence {
32
+ readonly authorizationChainId: ChainId;
33
+ readonly authorizationKind: 'activated-subscription';
34
+ readonly filterHash: Hash;
30
35
  readonly sourceHash: Hash;
31
36
  readonly subscriptionHash: Hash;
32
- readonly target: NormalizedAddress;
33
37
  }
34
38
  export interface WakeGrantAuthorizationDisabled {
35
39
  readonly atBlock: number;
@@ -39,6 +43,17 @@ export interface WakeGrantAuthorizationDisabled {
39
43
  /** Optional diagnostics. The core recomputes lag instead of trusting this value. */
40
44
  readonly lag?: number;
41
45
  }
46
+ export interface DeploymentGrantAuthorizationEnabled {
47
+ readonly atBlock: number;
48
+ readonly enabled: true;
49
+ readonly expectedHead?: number;
50
+ readonly grant: DeploymentGrantEvidence;
51
+ readonly lag?: number;
52
+ }
53
+ export type DeploymentGrantAuthorizationDecision = WakeGrantAuthorizationDisabled | DeploymentGrantAuthorizationEnabled;
54
+ export interface DeploymentGrantAuthorizer {
55
+ authorizePublisher: (request: DeploymentGrantAuthorizationRequest) => Promise<DeploymentGrantAuthorizationDecision>;
56
+ }
42
57
  export interface WakeGrantAuthorizationEnabled {
43
58
  readonly atBlock: number;
44
59
  readonly enabled: true;
@@ -1 +1 @@
1
- {"version":3,"file":"admissionTypes.d.ts","sourceRoot":"","sources":["../../src/admissionTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admissionTypes.d.ts","sourceRoot":"","sources":["../../src/admissionTypes.ts"],"names":[],"mappings":"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"}
@@ -1,20 +1,22 @@
1
- import type { WakeGrantAuthorizer } from './admissionTypes.ts';
1
+ import type { DeploymentGrantAuthorizer } from './admissionTypes.ts';
2
2
  import type { StatementGraphGrantReadModel } from './statementGraphPorts.ts';
3
3
  export interface DeploymentGrantAuthorizerOptions {
4
4
  readonly viewer: StatementGraphGrantReadModel;
5
5
  }
6
6
  /**
7
7
  * Adapts a canonical Statement Graph v2 read model to the evidence-bearing
8
- * D-002 grant authorization port. Each decision is bound to one stable head.
8
+ * deployment-only grant authorization port. Each decision is bound to one stable head.
9
9
  *
10
10
  * v2 is append-only with no lifecycle `state`, so this layer owns two things
11
11
  * the protocol used to:
12
12
  *
13
13
  * - **Aboutness.** The requested publisher must match both the Claim's
14
14
  * `subject` and the grant object's `publisher` field.
15
- * - **Negation.** A grant is disabled by a further claim, by the *same pinned
16
- * controller*, of a revocation object referencing that grant's hash.
15
+ * - **Negation.** A grant is disabled when the pinned controller has Claim
16
+ * membership for the recomputed canonical hash of
17
+ * `{ schema: grant.revocation, grant: <object hash> }` under the publisher
18
+ * subject. Declared schema and body resolution are not consulted.
17
19
  * Revocations from any other source are ignored.
18
20
  */
19
- export declare function createDeploymentGrantAuthorizer(options: DeploymentGrantAuthorizerOptions): WakeGrantAuthorizer;
21
+ export declare function createDeploymentGrantAuthorizer(options: DeploymentGrantAuthorizerOptions): DeploymentGrantAuthorizer;
20
22
  //# sourceMappingURL=grantEvidence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"grantEvidence.d.ts","sourceRoot":"","sources":["../../src/grantEvidence.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAGV,mBAAmB,EAEpB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,0BAA0B,CAAA;AAEjC,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;CAC9C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,mBAAmB,CAgDrB"}
1
+ {"version":3,"file":"grantEvidence.d.ts","sourceRoot":"","sources":["../../src/grantEvidence.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,yBAAyB,EAE1B,MAAM,qBAAqB,CAAA;AAE5B,OAAO,KAAK,EAEV,4BAA4B,EAC7B,MAAM,0BAA0B,CAAA;AAEjC,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,MAAM,EAAE,4BAA4B,CAAA;CAC9C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,gCAAgC,GACxC,yBAAyB,CAsD3B"}
@@ -1,4 +1,4 @@
1
- export type { AtomicWakeInbox, AuthorizedWakeGrant, WakeAdmissionAttempt, WakeAdmissionReceipt, WakeAttemptResolution, WakeCommitResult, WakeGrantAuthorizationDecision, WakeGrantAuthorizationDisabled, WakeGrantAuthorizationEnabled, WakeGrantAuthorizationRequest, WakeGrantAuthorizer, WakeGrantEvidence, } from './admissionTypes.ts';
1
+ export type { AtomicWakeInbox, AuthorizedWakeGrant, DeploymentGrantAuthorizationDecision, DeploymentGrantAuthorizationEnabled, DeploymentGrantAuthorizationRequest, DeploymentGrantAuthorizer, DeploymentGrantEvidence, WakeAdmissionAttempt, WakeAdmissionReceipt, WakeAttemptResolution, WakeCommitResult, WakeGrantAuthorizationDecision, WakeGrantAuthorizationDisabled, WakeGrantAuthorizationEnabled, WakeGrantAuthorizationRequest, WakeGrantAuthorizer, WakeGrantEvidence, } from './admissionTypes.ts';
2
2
  export { EVENT_KIT_REPLAY_RETENTION_SKEW_SECONDS } from './admissionTypes.ts';
3
3
  export type { AdmitAndEnqueueFailure, AdmitAndEnqueueFailureReason, AdmitAndEnqueueInput, AdmitAndEnqueueResult, AdmitAndEnqueueSuccess, } from './admitAndEnqueue.ts';
4
4
  export { admitAndEnqueue } from './admitAndEnqueue.ts';
@@ -19,8 +19,11 @@ export { createMemoryWakeQueue } from './memoryWakeQueue.ts';
19
19
  export type { BeginPublisherEndpointChallengeAttemptInput, BeginPublisherEndpointChallengeAttemptResult, CompletePublisherEndpointChallengeInput, CompletePublisherEndpointChallengeResult, IssuePublisherEndpointChallengeInput, IssuePublisherEndpointChallengeResult, PublisherEncryptionKeyLookup, PublisherEncryptionKeyStore, PublisherEndpointChallengeRecord, PublisherEndpointChallengeState, PublisherEndpointChallengeStore, } from './publisherHandshakeStores.ts';
20
20
  export type { BeginPublisherEndpointChallengeAttemptApiInput, BeginPublisherEndpointChallengeAttemptApiResult, CompletePublisherEndpointChallengeApiInput, CompletePublisherEndpointChallengeApiResult, CompletePublisherEndpointChallengeFailure, CompletePublisherEndpointChallengeFailureReason, CompletePublisherEndpointChallengeSuccess, IssuePublisherEndpointChallengeApiInput, IssuePublisherEndpointChallengeApiResult, PublisherEndpointChallengeContext, PublisherSubscriptionCandidate, PublisherSubscriptionValidation, PublisherSubscriptionValidationFailure, PublisherSubscriptionValidationFailureReason, ValidatedPublisherSubscription, } from './publisherSubscription.ts';
21
21
  export { beginPublisherEndpointChallengeAttempt, completePublisherEndpointChallenge, endpointChallengeMatchesPublisherContext, issuePublisherEndpointChallenge, validateAndDecryptPublisherSubscription, } from './publisherSubscription.ts';
22
+ export type { RecomputableRevocationKind } from './revocationRecognition.ts';
23
+ export { recomputableRevocationHash } from './revocationRecognition.ts';
22
24
  export * from './sourceWakeActivation.ts';
23
25
  export * from './sourceWakeIdentity.ts';
26
+ export { StaleWakeLeaseError } from './staleWakeLeaseError.ts';
24
27
  export type { StatementGrantClaim, StatementGrantClaimQuery, StatementGrantObject, StatementGraphGrantReadModel, } from './statementGraphPorts.ts';
25
28
  export type { StatementGraphWakeGrantAuthorizerOptions } from './statementGraphWakeGrantAuthorizer.ts';
26
29
  export { createStatementGraphWakeGrantAuthorizer } from './statementGraphWakeGrantAuthorizer.ts';
@@ -28,7 +31,7 @@ export type { AdmittedWake } from './types.ts';
28
31
  export { AdmittedWakeZod, parseAdmittedWake } from './types.ts';
29
32
  export type { VerifiedWakeRequest, VerifyWakeRequestFailure, VerifyWakeRequestInput, VerifyWakeRequestRejectionReason, VerifyWakeRequestResult, VerifyWakeRequestSuccess, WakeAdmissionRoute, } from './verifyWakeRequest.ts';
30
33
  export { EVENT_KIT_MAX_FUTURE_IAT_SECONDS, EVENT_KIT_MAX_JWT_LIFETIME_SECONDS, verifyWakeRequest, WakeAdmissionRouteZod, } from './verifyWakeRequest.ts';
31
- export type { LeasedWake, WakeHandler, WakeQueue, } from './wakeQueue.ts';
34
+ export type { LeasedWake, RecoverInflightOptions, WakeHandler, WakeQueue, } from './wakeQueue.ts';
32
35
  export { drainQueue } from './wakeQueue.ts';
33
36
  export { wakeSubscriptionAadBytes, wakeSubscriptionPlaintextBytes, wakeSubscriptionPlaintextFromBytes, } from './wakeSubscriptionEncoding.ts';
34
37
  export type { DecryptWakeSubscriptionInput, EncryptWakeSubscriptionInput, WakeSubscriptionEncryptionKeyPair, WakeSubscriptionPrivateKey, WakeSubscriptionPublicKey, } from './wakeSubscriptionHpke.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -133,6 +133,7 @@ function validateGrantEvidence(evidence, verified, atBlock) {
133
133
  if (!isRecord(evidence)) return reject("grant-view-invalid", ["enabled grant decision omitted evidence"]);
134
134
  const requiredFields = [
135
135
  "assertedAtBlock",
136
+ "authorizationKind",
136
137
  "authorizationChainId",
137
138
  "filterHash",
138
139
  "sourceHash",
@@ -145,6 +146,9 @@ function validateGrantEvidence(evidence, verified, atBlock) {
145
146
  if (requiredFields.some((field) => !Object.hasOwn(evidence, field))) {
146
147
  return reject("grant-view-invalid", ["enabled grant evidence requires own canonical fields"]);
147
148
  }
149
+ if (evidence.authorizationKind !== "activated-subscription") {
150
+ return reject("grant-view-invalid", ["enabled authorization requires finalized subscription activation"]);
151
+ }
148
152
  if (typeof evidence.id !== "string" || evidence.id.length === 0) {
149
153
  return reject("grant-view-invalid", ["enabled grant evidence requires a non-empty id"]);
150
154
  }
@@ -180,6 +184,7 @@ function validateReceipt(receipt, attempt) {
180
184
  function snapshotGrantEvidence(evidence) {
181
185
  return Object.freeze({
182
186
  assertedAtBlock: evidence.assertedAtBlock,
187
+ authorizationKind: evidence.authorizationKind,
183
188
  authorizationChainId: evidence.authorizationChainId,
184
189
  sourceHash: evidence.sourceHash,
185
190
  filterHash: evidence.filterHash,
@@ -1588,11 +1593,24 @@ function wakeKey(attempt) {
1588
1593
  return JSON.stringify([attempt.audience, attempt.publisher, attempt.wakeId]);
1589
1594
  }
1590
1595
 
1596
+ // src/staleWakeLeaseError.ts
1597
+ var StaleWakeLeaseError = class extends Error {
1598
+ code = "stale-wake-lease";
1599
+ name = "StaleWakeLeaseError";
1600
+ constructor(message = "Wake lease is no longer current") {
1601
+ super(message);
1602
+ }
1603
+ };
1604
+
1591
1605
  // src/memoryWakeQueue.ts
1592
1606
  function createMemoryWakeQueue() {
1593
1607
  const pending = [];
1594
1608
  const inflight = /* @__PURE__ */ new Map();
1595
1609
  let sequence = 0;
1610
+ function restore(entry) {
1611
+ pending.push(entry);
1612
+ pending.sort((left, right) => left.sequence - right.sequence);
1613
+ }
1596
1614
  return {
1597
1615
  async append(wake) {
1598
1616
  pending.push({ sequence: sequence += 1, wake });
@@ -1600,26 +1618,35 @@ function createMemoryWakeQueue() {
1600
1618
  async claim() {
1601
1619
  const entry = pending.shift();
1602
1620
  if (entry === void 0) return void 0;
1603
- inflight.set(entry.sequence, entry);
1621
+ const token = /* @__PURE__ */ Symbol("wake-lease");
1622
+ let completed2;
1623
+ inflight.set(entry.sequence, { entry, token });
1624
+ const finish = (operation) => {
1625
+ if (completed2 === operation) return;
1626
+ if (completed2 !== void 0 || inflight.get(entry.sequence)?.token !== token) {
1627
+ throw new StaleWakeLeaseError();
1628
+ }
1629
+ inflight.delete(entry.sequence);
1630
+ if (operation === "release") restore(entry);
1631
+ completed2 = operation;
1632
+ };
1604
1633
  return {
1605
1634
  wake: entry.wake,
1606
1635
  async ack() {
1607
- inflight.delete(entry.sequence);
1636
+ finish("ack");
1608
1637
  },
1609
1638
  async release() {
1610
- if (!inflight.delete(entry.sequence)) return;
1611
- pending.push(entry);
1612
- pending.sort((left, right) => left.sequence - right.sequence);
1639
+ finish("release");
1613
1640
  }
1614
1641
  };
1615
1642
  },
1616
1643
  inflightCount: async () => inflight.size,
1617
1644
  pendingCount: async () => pending.length,
1618
- async recoverInflight() {
1645
+ async recoverInflight(options) {
1646
+ if (options?.consumersStopped !== true) throw new TypeError("Recovery requires all consumers to be stopped");
1619
1647
  const recovered = inflight.size;
1620
- for (const entry of inflight.values()) pending.push(entry);
1648
+ for (const { entry } of inflight.values()) restore(entry);
1621
1649
  inflight.clear();
1622
- pending.sort((left, right) => left.sequence - right.sequence);
1623
1650
  return recovered;
1624
1651
  }
1625
1652
  };
@@ -1892,11 +1919,59 @@ function filterWithinServicePolicy(service, plaintext) {
1892
1919
  return service.deliveryMode === filter.deliveryMode && JSON.stringify(service.bestEffort) === JSON.stringify(filter.bestEffort) && filter.maxPositionsPerWake <= service.limits.maxPositionsPerWake && service.events.some((event) => wakeSourcesEqual(event.source, filter.source));
1893
1920
  }
1894
1921
 
1922
+ // src/revocationRecognition.ts
1923
+ import {
1924
+ HashZod as HashZod7,
1925
+ PublisherEncryptionKeyRevocationSchema as PublisherEncryptionKeyRevocationSchema2,
1926
+ PublisherEncryptionKeyRevocationZod as PublisherEncryptionKeyRevocationZod2,
1927
+ PublisherServiceRevocationSchema as PublisherServiceRevocationSchema2,
1928
+ PublisherServiceRevocationZod as PublisherServiceRevocationZod2,
1929
+ WakeGrantRevocationSchema as WakeGrantRevocationSchema3,
1930
+ WakeGrantRevocationZod as WakeGrantRevocationZod2,
1931
+ WakeSubscriptionAcceptanceRevocationSchema as WakeSubscriptionAcceptanceRevocationSchema2,
1932
+ WakeSubscriptionAcceptanceRevocationZod as WakeSubscriptionAcceptanceRevocationZod2,
1933
+ WakeSubscriptionRevocationSchema as WakeSubscriptionRevocationSchema2,
1934
+ WakeSubscriptionRevocationZod as WakeSubscriptionRevocationZod2
1935
+ } from "@xyo-network/event-kit-schemas";
1936
+ import { PayloadBuilder as PayloadBuilder6 } from "@xyo-network/sdk";
1937
+ async function recomputableRevocationHash(kind, targetHash) {
1938
+ return await PayloadBuilder6.dataHash(revocationPayload(kind, HashZod7.parse(targetHash)));
1939
+ }
1940
+ function revocationPayload(kind, target) {
1941
+ switch (kind) {
1942
+ case "acceptance":
1943
+ return WakeSubscriptionAcceptanceRevocationZod2.parse({
1944
+ acceptance: target,
1945
+ schema: WakeSubscriptionAcceptanceRevocationSchema2
1946
+ });
1947
+ case "grant":
1948
+ return WakeGrantRevocationZod2.parse({
1949
+ grant: target,
1950
+ schema: WakeGrantRevocationSchema3
1951
+ });
1952
+ case "key":
1953
+ return PublisherEncryptionKeyRevocationZod2.parse({
1954
+ key: target,
1955
+ schema: PublisherEncryptionKeyRevocationSchema2
1956
+ });
1957
+ case "service":
1958
+ return PublisherServiceRevocationZod2.parse({
1959
+ schema: PublisherServiceRevocationSchema2,
1960
+ service: target
1961
+ });
1962
+ case "subscription":
1963
+ return WakeSubscriptionRevocationZod2.parse({
1964
+ schema: WakeSubscriptionRevocationSchema2,
1965
+ subscription: target
1966
+ });
1967
+ }
1968
+ }
1969
+
1895
1970
  // src/sourceWakeActivation.ts
1896
1971
  import {
1897
1972
  ChainIdZod as ChainIdZod3,
1898
1973
  DeploymentIdZod as DeploymentIdZod3,
1899
- HashZod as HashZod7,
1974
+ HashZod as HashZod8,
1900
1975
  NonnegativeJsonSafeIntegerZod as NonnegativeJsonSafeIntegerZod4,
1901
1976
  NormalizedAddressZod as NormalizedAddressZod7,
1902
1977
  PositiveJsonSafeIntegerZod as PositiveJsonSafeIntegerZod2
@@ -1911,11 +1986,11 @@ var SourceWakeSubscriptionActivationZod = z4.strictObject({
1911
1986
  publisher: NormalizedAddressZod7,
1912
1987
  deploymentId: DeploymentIdZod3,
1913
1988
  queueId: z4.string().min(1).max(255).optional(),
1914
- sourceHash: HashZod7,
1915
- filterHash: HashZod7,
1916
- subscriptionHash: HashZod7,
1917
- serviceHash: HashZod7,
1918
- grantHash: HashZod7
1989
+ sourceHash: HashZod8,
1990
+ filterHash: HashZod8,
1991
+ subscriptionHash: HashZod8,
1992
+ serviceHash: HashZod8,
1993
+ grantHash: HashZod8
1919
1994
  }).refine(
1920
1995
  (value) => value.activeFromBlock <= value.atBlock && value.atBlock < value.expiresAtBlock,
1921
1996
  "Subscription must be active at the exact finalized authorization snapshot"
@@ -1930,12 +2005,10 @@ import {
1930
2005
  // src/grantEvidence.ts
1931
2006
  import {
1932
2007
  asWakeGrantObject,
1933
- asWakeGrantRevocation,
1934
2008
  DeploymentIdZod as DeploymentIdZod4,
1935
- HashZod as HashZod8,
2009
+ HashZod as HashZod9,
1936
2010
  NormalizedAddressZod as NormalizedAddressZod8,
1937
- WakeGrantObjectSchema as WakeGrantObjectSchema3,
1938
- WakeGrantRevocationSchema as WakeGrantRevocationSchema3
2011
+ WakeGrantObjectSchema as WakeGrantObjectSchema3
1939
2012
  } from "@xyo-network/event-kit-schemas";
1940
2013
  function createDeploymentGrantAuthorizer(options) {
1941
2014
  const { viewer } = options;
@@ -1951,7 +2024,13 @@ function createDeploymentGrantAuthorizer(options) {
1951
2024
  ...request.exactGrantHash === void 0 ? {} : { objectHash: request.exactGrantHash },
1952
2025
  subject: request.publisher
1953
2026
  });
1954
- const revokedGrantHashes = await readRevocations(viewer, request.controller, request.publisher, atBlock);
2027
+ const revokedGrantHashes = await readRevocations(
2028
+ viewer,
2029
+ request.controller,
2030
+ request.publisher,
2031
+ atBlock,
2032
+ claims
2033
+ );
1955
2034
  let evidence;
1956
2035
  for (const claim of claims) {
1957
2036
  evidence = await resolveEvidence(viewer, claim, request, atBlock, revokedGrantHashes);
@@ -1980,21 +2059,24 @@ function createDeploymentGrantAuthorizer(options) {
1980
2059
  }
1981
2060
  });
1982
2061
  }
1983
- async function readRevocations(viewer, controller, subject, atBlock) {
2062
+ async function readRevocations(viewer, controller, subject, atBlock, grantClaims) {
1984
2063
  const revoked = /* @__PURE__ */ new Set();
1985
- const claims = await viewer.claims(controller, {
1986
- declaredObjectSchemaPrefix: WakeGrantRevocationSchema3,
1987
- subject
1988
- });
1989
- for (const claim of claims) {
1990
- if (!isLiveClaim(claim, controller, subject, WakeGrantRevocationSchema3, atBlock)) continue;
1991
- const object = await viewer.object(claim.objectHash);
1992
- if (object?.assurance !== "resolved" || object.declaredSchema !== WakeGrantRevocationSchema3 || object.objectHash !== claim.objectHash || !isRecord3(object.params) || Object.hasOwn(object.params, "schema")) continue;
1993
- const revocation = asWakeGrantRevocation({ ...object.params, schema: object.declaredSchema });
1994
- if (revocation !== void 0) revoked.add(revocation.grant);
2064
+ for (const claim of grantClaims) {
2065
+ if (!isLiveClaim(claim, controller, subject, WakeGrantObjectSchema3, atBlock)) continue;
2066
+ if (await controllerRevokedGrant(viewer, controller, subject, claim.objectHash, atBlock)) {
2067
+ revoked.add(claim.objectHash);
2068
+ }
1995
2069
  }
1996
2070
  return revoked;
1997
2071
  }
2072
+ async function controllerRevokedGrant(viewer, controller, subject, grantHash, atBlock) {
2073
+ const objectHash = await recomputableRevocationHash("grant", grantHash);
2074
+ const claims = await viewer.claims(controller, { objectHash, subject });
2075
+ return claims.some((claim) => isRevocationMembership(claim, controller, subject, objectHash, atBlock));
2076
+ }
2077
+ function isRevocationMembership(claim, controller, subject, objectHash, atBlock) {
2078
+ return claim.source === controller && claim.subject === subject && claim.objectHash === objectHash && isNonnegativeSafeInteger5(claim.firstBlock) && claim.firstBlock <= atBlock && isNonnegativeSafeInteger5(claim.lastBlock) && claim.lastBlock >= claim.firstBlock && HashZod9.safeParse(claim.firstEventHash).success && HashZod9.safeParse(claim.objectHash).success;
2079
+ }
1998
2080
  async function resolveEvidence(viewer, claim, request, atBlock, revokedGrantHashes) {
1999
2081
  if (!isLiveClaim(claim, request.controller, request.publisher, WakeGrantObjectSchema3, atBlock)) return void 0;
2000
2082
  if (revokedGrantHashes.has(claim.objectHash)) return void 0;
@@ -2008,10 +2090,6 @@ async function resolveEvidence(viewer, claim, request, atBlock, revokedGrantHash
2008
2090
  if (!grant.permissions.includes("enqueue")) return void 0;
2009
2091
  return Object.freeze({
2010
2092
  assertedAtBlock: claim.firstBlock,
2011
- authorizationChainId: request.authorizationChainId,
2012
- sourceHash: request.sourceHash,
2013
- filterHash: request.filterHash,
2014
- subscriptionHash: request.subscriptionHash,
2015
2093
  controller: request.controller,
2016
2094
  deploymentId: grant.deploymentId,
2017
2095
  id: claim.firstEventHash,
@@ -2021,7 +2099,7 @@ async function resolveEvidence(viewer, claim, request, atBlock, revokedGrantHash
2021
2099
  });
2022
2100
  }
2023
2101
  function isLiveClaim(claim, controller, subject, declaredObjectSchema, atBlock) {
2024
- return claim.source === controller && claim.subject === subject && claim.declaredObjectSchema === declaredObjectSchema && isNonnegativeSafeInteger5(claim.firstBlock) && claim.firstBlock <= atBlock && isNonnegativeSafeInteger5(claim.lastBlock) && claim.lastBlock >= claim.firstBlock && HashZod8.safeParse(claim.firstEventHash).success && HashZod8.safeParse(claim.objectHash).success;
2102
+ return claim.source === controller && claim.subject === subject && claim.declaredObjectSchema === declaredObjectSchema && isNonnegativeSafeInteger5(claim.firstBlock) && claim.firstBlock <= atBlock && isNonnegativeSafeInteger5(claim.lastBlock) && claim.lastBlock >= claim.firstBlock && HashZod9.safeParse(claim.firstEventHash).success && HashZod9.safeParse(claim.objectHash).success;
2025
2103
  }
2026
2104
  function parseExactGrantObject(object, expectedObjectHash) {
2027
2105
  if (object?.assurance !== "resolved") return void 0;
@@ -2033,7 +2111,7 @@ function parseExactGrantObject(object, expectedObjectHash) {
2033
2111
  });
2034
2112
  }
2035
2113
  function assertValidRequest(request) {
2036
- if (request.exactGrantHash !== void 0 && !HashZod8.safeParse(request.exactGrantHash).success) {
2114
+ if (request.exactGrantHash !== void 0 && !HashZod9.safeParse(request.exactGrantHash).success) {
2037
2115
  throw new TypeError("Exact grant hash must be canonical lowercase hexadecimal");
2038
2116
  }
2039
2117
  if (!NormalizedAddressZod8.safeParse(request.controller).success) {
@@ -2091,6 +2169,7 @@ function createStatementGraphWakeGrantAuthorizer(options) {
2091
2169
  ...decision,
2092
2170
  grant: Object.freeze({
2093
2171
  ...decision.grant,
2172
+ authorizationKind: "activated-subscription",
2094
2173
  authorizationChainId,
2095
2174
  sourceHash,
2096
2175
  filterHash: activation.filterHash,
@@ -2110,7 +2189,11 @@ async function drainQueue(queue, handler) {
2110
2189
  try {
2111
2190
  await handler(leased.wake);
2112
2191
  } catch (error) {
2113
- await leased.release();
2192
+ try {
2193
+ await leased.release();
2194
+ } catch (releaseError) {
2195
+ throw new AggregateError([error, releaseError], "Wake handler and lease release both failed", { cause: releaseError });
2196
+ }
2114
2197
  throw error;
2115
2198
  }
2116
2199
  await leased.ack();
@@ -2125,6 +2208,7 @@ export {
2125
2208
  EVENT_KIT_MAX_JWT_LIFETIME_SECONDS,
2126
2209
  EVENT_KIT_REPLAY_RETENTION_SKEW_SECONDS,
2127
2210
  SourceWakeSubscriptionActivationZod,
2211
+ StaleWakeLeaseError,
2128
2212
  WakeAdmissionRouteZod,
2129
2213
  WakeSubscriptionDecryptionError,
2130
2214
  admitAndEnqueue,
@@ -2163,6 +2247,7 @@ export {
2163
2247
  issuePublisherEndpointChallenge,
2164
2248
  parseAdmittedWake,
2165
2249
  parseBestEffortSecurityState,
2250
+ recomputableRevocationHash,
2166
2251
  resolvePreferredEncryptionKey,
2167
2252
  selectPublisherService,
2168
2253
  selectSubscriptionActivation,