@claudexor/daemon 3.17.2 → 3.20.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.
Files changed (42) hide show
  1. package/dist/credential-generation.d.ts +18 -0
  2. package/dist/credential-generation.d.ts.map +1 -0
  3. package/dist/credential-generation.js +43 -0
  4. package/dist/credential-generation.js.map +1 -0
  5. package/dist/credential-unusable-ledger.d.ts +23 -14
  6. package/dist/credential-unusable-ledger.d.ts.map +1 -1
  7. package/dist/credential-unusable-ledger.js +173 -30
  8. package/dist/credential-unusable-ledger.js.map +1 -1
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/journal-fold-policy.d.ts.map +1 -1
  14. package/dist/journal-fold-policy.js +15 -2
  15. package/dist/journal-fold-policy.js.map +1 -1
  16. package/dist/pre-progress-refusal-ledger.d.ts +3 -6
  17. package/dist/pre-progress-refusal-ledger.d.ts.map +1 -1
  18. package/dist/pre-progress-refusal-ledger.js +7 -16
  19. package/dist/pre-progress-refusal-ledger.js.map +1 -1
  20. package/dist/project-partitions.d.ts +4 -0
  21. package/dist/project-partitions.d.ts.map +1 -1
  22. package/dist/project-partitions.js +7 -0
  23. package/dist/project-partitions.js.map +1 -1
  24. package/dist/quota-poll-lanes.d.ts +2 -2
  25. package/dist/quota-poll-lanes.d.ts.map +1 -1
  26. package/dist/quota-poll-lanes.js +5 -4
  27. package/dist/quota-poll-lanes.js.map +1 -1
  28. package/dist/quota-registry-support.d.ts.map +1 -1
  29. package/dist/quota-registry-support.js +2 -8
  30. package/dist/quota-registry-support.js.map +1 -1
  31. package/dist/quota-registry.d.ts +6 -3
  32. package/dist/quota-registry.d.ts.map +1 -1
  33. package/dist/quota-registry.js +22 -3
  34. package/dist/quota-registry.js.map +1 -1
  35. package/dist/thread-store-support.d.ts.map +1 -1
  36. package/dist/thread-store-support.js +10 -1
  37. package/dist/thread-store-support.js.map +1 -1
  38. package/dist/threads.d.ts +3 -1
  39. package/dist/threads.d.ts.map +1 -1
  40. package/dist/threads.js +2 -2
  41. package/dist/threads.js.map +1 -1
  42. package/package.json +6 -6
@@ -0,0 +1,18 @@
1
+ import { type CredentialExecutionBinding, type CredentialExecutionSubject } from "@claudexor/core";
2
+ /** Extracted from the pre-progress ledger: one managed lifecycle for all observations. */
3
+ export declare class CredentialGeneration {
4
+ private readonly mutating;
5
+ private changes;
6
+ private everyAccountChangedAt;
7
+ private defaultChangedAt;
8
+ private accountChangedAt;
9
+ private dispatchOrder;
10
+ constructor(mutating?: (harnessId: string) => boolean);
11
+ generation(harnessId: string, profileId: string | null): number;
12
+ bind(subject: CredentialExecutionSubject, startedAt?: string): CredentialExecutionBinding;
13
+ current(binding: CredentialExecutionBinding): boolean;
14
+ noteCredentialChange(): void;
15
+ clearSubject(harnessId: string, profileId: string | null): void;
16
+ clearDefaultSubjects(): void;
17
+ }
18
+ //# sourceMappingURL=credential-generation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-generation.d.ts","sourceRoot":"","sources":["../src/credential-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAChC,MAAM,iBAAiB,CAAC;AAEzB,0FAA0F;AAC1F,qBAAa,oBAAoB;IAQ7B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP3B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,gBAAgB,CAA6B;IACrD,OAAO,CAAC,aAAa,CAAK;IAE1B,YACmB,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAsC,EACtF;IAEJ,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAO9D;IAED,IAAI,CACF,OAAO,EAAE,0BAA0B,EACnC,SAAS,SAA2B,GACnC,0BAA0B,CAO5B;IAED,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAIpD;IAED,oBAAoB,IAAI,IAAI,CAG3B;IAED,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAE9D;IAED,oBAAoB,IAAI,IAAI,CAE3B;CACF"}
@@ -0,0 +1,43 @@
1
+ import { credentialMutationWindowOpen, } from "@claudexor/core";
2
+ /** Extracted from the pre-progress ledger: one managed lifecycle for all observations. */
3
+ export class CredentialGeneration {
4
+ mutating;
5
+ changes = 0;
6
+ everyAccountChangedAt = 0;
7
+ defaultChangedAt = 0;
8
+ accountChangedAt = new Map();
9
+ dispatchOrder = 0;
10
+ constructor(mutating = credentialMutationWindowOpen) {
11
+ this.mutating = mutating;
12
+ }
13
+ generation(harnessId, profileId) {
14
+ if (this.mutating(harnessId))
15
+ return Number.NaN;
16
+ return Math.max(this.everyAccountChangedAt, profileId === null ? this.defaultChangedAt : 0, this.accountChangedAt.get(key(harnessId, profileId)) ?? 0);
17
+ }
18
+ bind(subject, startedAt = new Date().toISOString()) {
19
+ return {
20
+ subject,
21
+ generation: this.generation(subject.harnessId, subject.profileId),
22
+ order: ++this.dispatchOrder,
23
+ startedAt,
24
+ };
25
+ }
26
+ current(binding) {
27
+ return (this.generation(binding.subject.harnessId, binding.subject.profileId) === binding.generation);
28
+ }
29
+ noteCredentialChange() {
30
+ this.accountChangedAt.clear();
31
+ this.everyAccountChangedAt = ++this.changes;
32
+ }
33
+ clearSubject(harnessId, profileId) {
34
+ this.accountChangedAt.set(key(harnessId, profileId), ++this.changes);
35
+ }
36
+ clearDefaultSubjects() {
37
+ this.defaultChangedAt = ++this.changes;
38
+ }
39
+ }
40
+ function key(harnessId, profileId) {
41
+ return `${harnessId}\0${profileId ?? "\u0001"}`;
42
+ }
43
+ //# sourceMappingURL=credential-generation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-generation.js","sourceRoot":"","sources":["../src/credential-generation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,GAG7B,MAAM,iBAAiB,CAAC;AAEzB,0FAA0F;AAC1F,MAAM,OAAO,oBAAoB;IAQZ,QAAQ;IAPnB,OAAO,GAAG,CAAC,CAAC;IACZ,qBAAqB,GAAG,CAAC,CAAC;IAC1B,gBAAgB,GAAG,CAAC,CAAC;IACrB,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,aAAa,GAAG,CAAC,CAAC;IAE1B,YACmB,QAAQ,GAAmC,4BAA4B;wBAAvE,QAAQ;IACxB,CAAC;IAEJ,UAAU,CAAC,SAAiB,EAAE,SAAwB;QACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,qBAAqB,EAC1B,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAC9C,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,CAC1D,CAAC;IACJ,CAAC;IAED,IAAI,CACF,OAAmC,EACnC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAEpC,OAAO;YACL,OAAO;YACP,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;YACjE,KAAK,EAAE,EAAE,IAAI,CAAC,aAAa;YAC3B,SAAS;SACV,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAmC;QACzC,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,UAAU,CAC7F,CAAC;IACJ,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,qBAAqB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,SAAiB,EAAE,SAAwB;QACtD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,gBAAgB,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC;IACzC,CAAC;CACF;AAED,SAAS,GAAG,CAAC,SAAiB,EAAE,SAAwB;IACtD,OAAO,GAAG,SAAS,KAAK,SAAS,IAAI,QAAQ,EAAE,CAAC;AAClD,CAAC"}
@@ -1,4 +1,6 @@
1
- import type { CredentialUnusableObservation, HarnessEvent } from "@claudexor/schema";
1
+ import { type CredentialEvidenceAuthority, type CredentialExecutionBinding, type CredentialExecutionSubject, type CredentialHonoredObservation } from "@claudexor/core";
2
+ import type { CredentialUnusableObservation } from "@claudexor/schema";
3
+ import { CredentialGeneration } from "./credential-generation.js";
2
4
  /**
3
5
  * The daemon's bounded, self-expiring memory of typed `credential_unusable`
4
6
  * observations (A7): "this credential is DEAD, not quota-spent".
@@ -14,7 +16,9 @@ import type { CredentialUnusableObservation, HarnessEvent } from "@claudexor/sch
14
16
  *
15
17
  * Clearing contract (all three, per the design roast):
16
18
  * 1. self-expiry — every row carries `expires_at`, clamped to 24h max;
17
- * 2. a successful model response for the same subject (`observeEvent`);
19
+ * 2. a covering dispatch-bound successful model response hides the live
20
+ * verdict; its bounded negative witnesses remain until expiry, generation
21
+ * clearing or memory eviction so concurrent refusals keep both boundaries;
18
22
  * 3. a credential-generation change voids the verdicts about the changed
19
23
  * generation: a login/logout clears the WHOLE ledger
20
24
  * (`noteCredentialChange`, wired in claudexord's setup lifecycle), while a
@@ -28,24 +32,29 @@ import type { CredentialUnusableObservation, HarnessEvent } from "@claudexor/sch
28
32
  * credential store (the daemon's setup-lifecycle window, #363): it would be
29
33
  * about a credential in flux, and the window's close clears the ledger.
30
34
  */
31
- export declare class CredentialUnusableLedger {
35
+ export declare class CredentialUnusableLedger implements CredentialEvidenceAuthority {
32
36
  private readonly now;
33
37
  private readonly mutating;
38
+ readonly credentials: CredentialGeneration;
34
39
  private rows;
35
- constructor(now?: () => Date, mutating?: (harnessId: string) => boolean);
40
+ private orders;
41
+ private successes;
42
+ constructor(now?: () => Date, mutating?: (harnessId: string) => boolean, credentials?: CredentialGeneration);
43
+ bind(subject: CredentialExecutionSubject): CredentialExecutionBinding;
44
+ current(binding: CredentialExecutionBinding): boolean;
45
+ recordBound(binding: CredentialExecutionBinding, value: CredentialUnusableObservation): void;
46
+ /** A dispatch cannot heal an observation from a newer concurrent dispatch. */
47
+ honorBound(binding: CredentialExecutionBinding, observedModel: string | null, observedAt?: string): void;
36
48
  /** Validate, clamp to the TTL bound, newest-wins per (subject, model). */
37
49
  record(value: CredentialUnusableObservation): void;
38
- /** Every un-expired observation (the read side of the orchestrator deps). */
50
+ private store;
51
+ /** Unhealed observations; hidden witnesses keep their bounds until expiry. */
39
52
  live(): readonly CredentialUnusableObservation[];
40
- /**
41
- * Success telemetry (wired where usage events already flow): a usage event
42
- * with served tokens proves the vendor honored this subject's credential,
43
- * so its credential-wide observations are stale. A model-SCOPED entitlement
44
- * observation clears only when the event's observed model matches exactly —
45
- * vendor display labels are not slugs, so an unprovable match honestly
46
- * leaves the row to its short TTL or a generation change.
47
- */
48
- observeEvent(harnessId: string, event: HarnessEvent): void;
53
+ honored(): readonly CredentialHonoredObservation[];
54
+ /** Exported proof obeys the same scope/order checks as row clearing. */
55
+ private refusesPositive;
56
+ private covers;
57
+ private positivePoints;
49
58
  /** Credential generation changed wholesale (login/logout): every verdict
50
59
  * about the old generation is void. */
51
60
  noteCredentialChange(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"credential-unusable-ledger.d.ts","sourceRoot":"","sources":["../src/credential-unusable-ledger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQrF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,wBAAwB;IAIjC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAJ3B,OAAO,CAAC,IAAI,CAAoD;IAEhE,YACmB,GAAG,GAAE,MAAM,IAAuB,EAClC,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAsC,EACtF;IAEJ,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,6BAA6B,GAAG,IAAI,CAgBjD;IAED,6EAA6E;IAC7E,IAAI,IAAI,SAAS,6BAA6B,EAAE,CAG/C;IAED;;;;;;;OAOG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,IAAI,CASzD;IAED;2CACuC;IACvC,oBAAoB,IAAI,IAAI,CAE3B;IAED;;2DAEuD;IACvD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAI9D;IAED;;;yEAGqE;IACrE,oBAAoB,IAAI,IAAI,CAI3B;IAED,OAAO,CAAC,KAAK;CAOd"}
1
+ {"version":3,"file":"credential-unusable-ledger.d.ts","sourceRoot":"","sources":["../src/credential-unusable-ledger.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,4BAA4B,EAClC,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAclE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,qBAAa,wBAAyB,YAAW,2BAA2B;IAMxE,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,WAAW,EAAE,oBAAoB;IAP5C,OAAO,CAAC,IAAI,CAAoD;IAChE,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,SAAS,CAAgC;IAEjD,YACmB,GAAG,GAAE,MAAM,IAAuB,EAClC,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAsC,EAC/E,WAAW,GAAE,oBAAyD,EAC7E;IAEJ,IAAI,CAAC,OAAO,EAAE,0BAA0B,GAAG,0BAA0B,CAEpE;IAED,OAAO,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAEpD;IAED,WAAW,CAAC,OAAO,EAAE,0BAA0B,EAAE,KAAK,EAAE,6BAA6B,GAAG,IAAI,CAe3F;IAED,8EAA8E;IAC9E,UAAU,CACR,OAAO,EAAE,0BAA0B,EACnC,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,UAAU,SAA2B,GACpC,IAAI,CAmDN;IAED,0EAA0E;IAC1E,MAAM,CAAC,KAAK,EAAE,6BAA6B,GAAG,IAAI,CAQjD;IAED,OAAO,CAAC,KAAK;IA4Bb,8EAA8E;IAC9E,IAAI,IAAI,SAAS,6BAA6B,EAAE,CAM/C;IAED,OAAO,IAAI,SAAS,4BAA4B,EAAE,CAajD;IAED,wEAAwE;IACxE,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,MAAM;IAQd,OAAO,CAAC,cAAc;IAItB;2CACuC;IACvC,oBAAoB,IAAI,IAAI,CAK3B;IAED;;2DAEuD;IACvD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAU9D;IAED;;;yEAGqE;IACrE,oBAAoB,IAAI,IAAI,CAS3B;IAED,OAAO,CAAC,KAAK;CAed"}
@@ -1,5 +1,6 @@
1
- import { credentialMutationWindowOpen } from "@claudexor/core";
1
+ import { credentialMutationWindowOpen, } from "@claudexor/core";
2
2
  import { CredentialUnusableObservation as CredentialUnusableObservationSchema } from "@claudexor/schema";
3
+ import { CredentialGeneration } from "./credential-generation.js";
3
4
  /** No observation may outlive this bound, whatever its producer asked for. */
4
5
  const MAX_TTL_MS = 24 * 60 * 60_000;
5
6
  /** Bounded memory: the ledger holds evidence, not history. */
@@ -19,7 +20,9 @@ const MAX_ROWS = 64;
19
20
  *
20
21
  * Clearing contract (all three, per the design roast):
21
22
  * 1. self-expiry — every row carries `expires_at`, clamped to 24h max;
22
- * 2. a successful model response for the same subject (`observeEvent`);
23
+ * 2. a covering dispatch-bound successful model response hides the live
24
+ * verdict; its bounded negative witnesses remain until expiry, generation
25
+ * clearing or memory eviction so concurrent refusals keep both boundaries;
23
26
  * 3. a credential-generation change voids the verdicts about the changed
24
27
  * generation: a login/logout clears the WHOLE ledger
25
28
  * (`noteCredentialChange`, wired in claudexord's setup lifecycle), while a
@@ -36,13 +39,102 @@ const MAX_ROWS = 64;
36
39
  export class CredentialUnusableLedger {
37
40
  now;
38
41
  mutating;
42
+ credentials;
39
43
  rows = new Map();
40
- constructor(now = () => new Date(), mutating = credentialMutationWindowOpen) {
44
+ orders = new Map();
45
+ successes = new Map();
46
+ constructor(now = () => new Date(), mutating = credentialMutationWindowOpen, credentials = new CredentialGeneration(mutating)) {
41
47
  this.now = now;
42
48
  this.mutating = mutating;
49
+ this.credentials = credentials;
50
+ }
51
+ bind(subject) {
52
+ return this.credentials.bind(subject, this.now().toISOString());
53
+ }
54
+ current(binding) {
55
+ return this.credentials.current(binding);
56
+ }
57
+ recordBound(binding, value) {
58
+ if (!this.current(binding))
59
+ return;
60
+ if (value.harness_id !== binding.subject.harnessId ||
61
+ value.profile_id !== binding.subject.profileId)
62
+ return;
63
+ if (value.credential_route !== undefined &&
64
+ binding.subject.route !== null &&
65
+ value.credential_route !== binding.subject.route)
66
+ return;
67
+ // Even a healed prefix contributes to a later concurrent refusal's bounds.
68
+ this.store(value, binding.order);
69
+ }
70
+ /** A dispatch cannot heal an observation from a newer concurrent dispatch. */
71
+ honorBound(binding, observedModel, observedAt = this.now().toISOString()) {
72
+ if (!this.current(binding))
73
+ return;
74
+ const observedTime = Date.parse(observedAt);
75
+ if (!Number.isFinite(observedTime))
76
+ return;
77
+ // A cached result predating dispatch proves no current-generation contact.
78
+ if (observedTime < Date.parse(binding.startedAt))
79
+ return;
80
+ this.prune();
81
+ for (const model of observedModel === null ? [null] : [null, observedModel]) {
82
+ const k = key({
83
+ harness_id: binding.subject.harnessId,
84
+ profile_id: binding.subject.profileId,
85
+ credential_route: binding.subject.route ?? undefined,
86
+ model,
87
+ });
88
+ const point = {
89
+ binding,
90
+ observation: {
91
+ harness_id: binding.subject.harnessId,
92
+ profile_id: binding.subject.profileId,
93
+ credential_route: binding.subject.route,
94
+ model,
95
+ observed_at: observedAt,
96
+ },
97
+ order: binding.order,
98
+ expires: this.now().getTime() + MAX_TTL_MS,
99
+ };
100
+ const previous = this.successes.get(k) ?? [];
101
+ if (previous.some((item) => dominates(item, point)))
102
+ continue;
103
+ // Keep real incomparable contacts, never a synthetic order/time maximum.
104
+ this.successes.set(k, [...previous.filter((item) => !dominates(point, item)), point]);
105
+ }
106
+ // Count points, not keys: a single subject can have incomparable contacts.
107
+ while (this.positivePoints().length > MAX_ROWS) {
108
+ const oldest = [...this.successes.entries()]
109
+ .flatMap(([k, points]) => points.map((point) => ({ k, point })))
110
+ .reduce((a, b) => (a.point.expires <= b.point.expires ? a : b));
111
+ const remaining = this.positivePoints().filter((point) => point !== oldest.point);
112
+ for (const [k, refusal] of this.rows) {
113
+ if (this.covers(k, refusal, oldest.point) &&
114
+ !remaining.some((point) => this.covers(k, refusal, point))) {
115
+ // Forgetting recovery proof must not resurrect an already-healed refusal.
116
+ this.rows.delete(k);
117
+ this.orders.delete(k);
118
+ }
119
+ }
120
+ const retained = this.successes.get(oldest.k).filter((point) => point !== oldest.point);
121
+ if (retained.length)
122
+ this.successes.set(oldest.k, retained);
123
+ else
124
+ this.successes.delete(oldest.k);
125
+ }
43
126
  }
44
127
  /** Validate, clamp to the TTL bound, newest-wins per (subject, model). */
45
128
  record(value) {
129
+ const binding = this.bind({
130
+ harnessId: value.harness_id,
131
+ profileId: value.profile_id,
132
+ route: value.credential_route ?? null,
133
+ requestedModel: value.model,
134
+ });
135
+ this.recordBound(binding, value);
136
+ }
137
+ store(value, order) {
46
138
  const obs = CredentialUnusableObservationSchema.parse(value);
47
139
  if (this.mutating(obs.harness_id))
48
140
  return;
@@ -56,70 +148,121 @@ export class CredentialUnusableLedger {
56
148
  // Bounded: drop the earliest-expiring row rather than refusing evidence.
57
149
  const earliest = [...this.rows.entries()].reduce((a, b) => Date.parse(a[1].expires_at) <= Date.parse(b[1].expires_at) ? a : b);
58
150
  this.rows.delete(earliest[0]);
151
+ this.orders.delete(earliest[0]);
59
152
  }
60
- this.rows.set(key(obs), { ...obs, expires_at: new Date(expires).toISOString() });
153
+ const k = key(obs);
154
+ const previous = this.rows.get(k);
155
+ const previousTime = previous ? Date.parse(previous.observed_at) : -Infinity;
156
+ const previousOrder = this.orders.get(k) ?? order;
157
+ // A delayed completion cannot lower either independent negative boundary.
158
+ // Provenance and expiry belong to the latest actual observation, not arrival.
159
+ // Preserve the prior equal-time provenance against an older dispatch.
160
+ if (observed > previousTime || (observed === previousTime && order >= previousOrder))
161
+ this.rows.set(k, { ...obs, expires_at: new Date(expires).toISOString() });
162
+ this.orders.set(k, Math.max(previousOrder, order));
61
163
  }
62
- /** Every un-expired observation (the read side of the orchestrator deps). */
164
+ /** Unhealed observations; hidden witnesses keep their bounds until expiry. */
63
165
  live() {
64
166
  this.prune();
65
- return [...this.rows.values()];
66
- }
67
- /**
68
- * Success telemetry (wired where usage events already flow): a usage event
69
- * with served tokens proves the vendor honored this subject's credential,
70
- * so its credential-wide observations are stale. A model-SCOPED entitlement
71
- * observation clears only when the event's observed model matches exactly —
72
- * vendor display labels are not slugs, so an unprovable match honestly
73
- * leaves the row to its short TTL or a generation change.
74
- */
75
- observeEvent(harnessId, event) {
76
- if (event.type !== "usage")
77
- return;
78
- const served = (event.usage?.input_tokens ?? 0) > 0 || (event.usage?.output_tokens ?? 0) > 0;
79
- if (!served)
80
- return;
81
- const profileId = event.credential_profile_id ?? null;
82
- for (const [k, obs] of this.rows) {
83
- if (obs.harness_id !== harnessId || obs.profile_id !== profileId)
167
+ const positives = this.positivePoints();
168
+ return [...this.rows.entries()]
169
+ .filter(([k, obs]) => !positives.some((point) => this.covers(k, obs, point)))
170
+ .map(([, obs]) => obs);
171
+ }
172
+ honored() {
173
+ this.prune();
174
+ return this.positivePoints()
175
+ .filter((entry) => this.current(entry.binding) &&
176
+ !this.refusesPositive(entry.binding, entry.observation.model, Date.parse(entry.observation.observed_at)))
177
+ .map((entry) => ({ ...entry.observation }));
178
+ }
179
+ /** Exported proof obeys the same scope/order checks as row clearing. */
180
+ refusesPositive(binding, model, observedTime) {
181
+ for (const [k, refusal] of this.rows) {
182
+ if (!matches(refusal, binding.subject, model))
84
183
  continue;
85
- if (obs.model === null || obs.model === (event.observed_model ?? null))
86
- this.rows.delete(k);
184
+ if ((this.orders.get(k) ?? Infinity) > binding.order ||
185
+ Date.parse(refusal.observed_at) > observedTime)
186
+ return true;
87
187
  }
188
+ return false;
189
+ }
190
+ covers(k, refusal, point) {
191
+ return (matches(refusal, point.binding.subject, point.observation.model) &&
192
+ (this.orders.get(k) ?? Infinity) <= point.order &&
193
+ Date.parse(refusal.observed_at) <= Date.parse(point.observation.observed_at));
194
+ }
195
+ positivePoints() {
196
+ return [...this.successes.values()].flat();
88
197
  }
89
198
  /** Credential generation changed wholesale (login/logout): every verdict
90
199
  * about the old generation is void. */
91
200
  noteCredentialChange() {
92
201
  this.rows.clear();
202
+ this.orders.clear();
203
+ this.successes.clear();
204
+ this.credentials.noteCredentialChange();
93
205
  }
94
206
  /** ONE subject's credential changed (a control-API profile or profile-secret
95
207
  * mutation): only ITS verdicts are void, across every model scope.
96
208
  * `profileId` null = the harness's default subject. */
97
209
  clearSubject(harnessId, profileId) {
210
+ for (const k of this.successes.keys())
211
+ if (k.startsWith([harnessId, profileId ?? "", ""].join("\0")))
212
+ this.successes.delete(k);
98
213
  for (const [k, obs] of this.rows) {
99
- if (obs.harness_id === harnessId && obs.profile_id === profileId)
214
+ if (obs.harness_id === harnessId && obs.profile_id === profileId) {
100
215
  this.rows.delete(k);
216
+ this.orders.delete(k);
217
+ }
101
218
  }
219
+ this.credentials.clearSubject(harnessId, profileId);
102
220
  }
103
221
  /** A bare managed secret name changed an engine-DEFAULT credential slot.
104
222
  * WHICH harness reads that slot is adapter knowledge the daemon does not
105
223
  * duplicate, so every default subject's verdicts are voided — fail-open by
106
224
  * the clearing contract (costs at most one rediscovered refusal). */
107
225
  clearDefaultSubjects() {
226
+ this.credentials.clearDefaultSubjects();
227
+ for (const k of this.successes.keys())
228
+ if (k.split("\0")[1] === "")
229
+ this.successes.delete(k);
108
230
  for (const [k, obs] of this.rows) {
109
- if (obs.profile_id === null)
231
+ if (obs.profile_id === null) {
110
232
  this.rows.delete(k);
233
+ this.orders.delete(k);
234
+ }
111
235
  }
112
236
  }
113
237
  prune() {
114
238
  const now = this.now().getTime();
239
+ for (const [k, points] of this.successes) {
240
+ const retained = points.filter((point) => point.expires > now && this.current(point.binding));
241
+ if (retained.length)
242
+ this.successes.set(k, retained);
243
+ else
244
+ this.successes.delete(k);
245
+ }
115
246
  for (const [k, obs] of this.rows) {
116
247
  const expires = Date.parse(obs.expires_at);
117
- if (!Number.isFinite(expires) || expires <= now)
248
+ if (!Number.isFinite(expires) || expires <= now) {
118
249
  this.rows.delete(k);
250
+ this.orders.delete(k);
251
+ }
119
252
  }
120
253
  }
121
254
  }
255
+ function matches(refusal, subject, model) {
256
+ return (refusal.harness_id === subject.harnessId &&
257
+ refusal.profile_id === subject.profileId &&
258
+ (refusal.credential_route === undefined || refusal.credential_route === subject.route) &&
259
+ (refusal.model === null || refusal.model === model));
260
+ }
261
+ function dominates(left, right) {
262
+ return (left.order >= right.order &&
263
+ Date.parse(left.observation.observed_at) >= Date.parse(right.observation.observed_at));
264
+ }
122
265
  function key(obs) {
123
- return [obs.harness_id, obs.profile_id ?? "", obs.model ?? ""].join("\0");
266
+ return [obs.harness_id, obs.profile_id ?? "", obs.credential_route ?? "", obs.model ?? ""].join("\0");
124
267
  }
125
268
  //# sourceMappingURL=credential-unusable-ledger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"credential-unusable-ledger.js","sourceRoot":"","sources":["../src/credential-unusable-ledger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"credential-unusable-ledger.js","sourceRoot":"","sources":["../src/credential-unusable-ledger.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -27,6 +27,7 @@ export * from "./quota-projection.js";
27
27
  export * from "./quota-poll-lanes.js";
28
28
  export { quotaPacerFileStore } from "./quota-poll-pacer.js";
29
29
  export * from "./credential-unusable-ledger.js";
30
+ export * from "./credential-generation.js";
30
31
  export * from "./model-substitution-ledger.js";
31
32
  export * from "./pre-progress-refusal-ledger.js";
32
33
  export * from "./project-partitions.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
package/dist/index.js CHANGED
@@ -27,6 +27,7 @@ export * from "./quota-projection.js";
27
27
  export * from "./quota-poll-lanes.js";
28
28
  export { quotaPacerFileStore } from "./quota-poll-pacer.js";
29
29
  export * from "./credential-unusable-ledger.js";
30
+ export * from "./credential-generation.js";
30
31
  export * from "./model-substitution-ledger.js";
31
32
  export * from "./pre-progress-refusal-ledger.js";
32
33
  export * from "./project-partitions.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,iCAAiC,CAAC;AAChD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,0BAA0B,CAAC;AACzC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,0BAA0B,CAAC;AACzC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,cAAc,iCAAiC,CAAC;AAChD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"journal-fold-policy.d.ts","sourceRoot":"","sources":["../src/journal-fold-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,KAAK,EAA2B,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAa/E,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,EAAE,WAA4D,CAAC"}
1
+ {"version":3,"file":"journal-fold-policy.d.ts","sourceRoot":"","sources":["../src/journal-fold-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,OAAO,KAAK,EAA2B,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAc/E,gEAAgE;AAChE,eAAO,MAAM,iBAAiB,EAAE,WAA4D,CAAC"}
@@ -1,4 +1,4 @@
1
- import { CredentialRoute, QuotaSnapshot as QuotaSnapshotSchema, QuotaSource, TERMINAL_CONTROL_SETUP_JOB_STATES, } from "@claudexor/schema";
1
+ import { CredentialRoute, QuotaSnapshot as QuotaSnapshotSchema, QuotaSource, QuotaWindowObservation, TERMINAL_CONTROL_SETUP_JOB_STATES, } from "@claudexor/schema";
2
2
  import { legacyV320Snapshot, snapshotKey } from "./quota-registry-support.js";
3
3
  const KEEP = Object.freeze({});
4
4
  const TERMINAL_RUN_EVENTS = new Set(["run.completed", "run.failed", "run.blocked"]);
@@ -29,6 +29,16 @@ function journalFoldVerdict(record) {
29
29
  return slotOrKeep(scopedPreparedKey(record.payload), (key) => `q:${key}:p`);
30
30
  case "quota.snapshot.upserted":
31
31
  return slotOrKeep(upsertedKey(record.payload), (key) => `q:${key}:u`);
32
+ case "quota.window.observed": {
33
+ const observation = QuotaWindowObservation.safeParse(record.payload);
34
+ if (!observation.success)
35
+ return KEEP;
36
+ const snapshot = observation.data.snapshot;
37
+ return {
38
+ slot: `q:window:${snapshotKey(snapshot)}`,
39
+ group: quotaWindowGroup(snapshot.subject.harness, snapshot.subject.subject_id),
40
+ };
41
+ }
32
42
  case "quota.subject.removed":
33
43
  return removedSubjectVerdict(record.payload);
34
44
  case "thread.head.updated":
@@ -154,7 +164,7 @@ function removedSubjectVerdict(payload) {
154
164
  if (harness === null || (typeof subjectId !== "string" && subjectId !== null))
155
165
  return KEEP;
156
166
  const subject = subjectId ?? "";
157
- const retire = [];
167
+ const retire = [quotaWindowGroup(harness, subjectId)];
158
168
  for (const route of CredentialRoute.options) {
159
169
  for (const source of QuotaSource.options) {
160
170
  const key = [harness, route, subject, source].join("\0");
@@ -163,6 +173,9 @@ function removedSubjectVerdict(payload) {
163
173
  }
164
174
  return { slot: `q:${harness}\0${subject}:removed`, retire };
165
175
  }
176
+ function quotaWindowGroup(harness, subjectId) {
177
+ return `q:windows:${JSON.stringify([harness, subjectId])}`;
178
+ }
166
179
  function setupSavedVerdict(payload) {
167
180
  const job = object(object(payload)?.job);
168
181
  const jobId = stringField(job, "jobId");
@@ -1 +1 @@
1
- {"version":3,"file":"journal-fold-policy.js","sourceRoot":"","sources":["../src/journal-fold-policy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"journal-fold-policy.js","sourceRoot":"","sources":["../src/journal-fold-policy.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { PreProgressRefusalObservation } from "@claudexor/schema";
2
+ import { CredentialGeneration } from "./credential-generation.js";
2
3
  /**
3
4
  * The daemon's bounded, self-expiring memory of typed pre-progress refusals:
4
5
  * "this pool account's vendor session started for model M and ended in a
@@ -34,13 +35,9 @@ import type { PreProgressRefusalObservation } from "@claudexor/schema";
34
35
  export declare class PreProgressRefusalLedger {
35
36
  private readonly now;
36
37
  private readonly mutating;
38
+ readonly credentials: CredentialGeneration;
37
39
  private rows;
38
- /** Monotonic credential-change counter: the last change wholesale and per
39
- * account (only accounts changed since the last wholesale change). */
40
- private changes;
41
- private everyAccountChangedAt;
42
- private accountChangedAt;
43
- constructor(now?: () => Date, mutating?: (harnessId: string) => boolean);
40
+ constructor(now?: () => Date, mutating?: (harnessId: string) => boolean, credentials?: CredentialGeneration);
44
41
  /** Validate and stamp, newest-wins per (subject, requested model). */
45
42
  record(value: Omit<PreProgressRefusalObservation, "observed_at" | "expires_at">): void;
46
43
  /** Every un-expired observation (the read side of account resolution). */
@@ -1 +1 @@
1
- {"version":3,"file":"pre-progress-refusal-ledger.d.ts","sourceRoot":"","sources":["../src/pre-progress-refusal-ledger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAWvE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,wBAAwB;IASjC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAT3B,OAAO,CAAC,IAAI,CAAoD;IAChE;0EACsE;IACtE,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,qBAAqB,CAAK;IAClC,OAAO,CAAC,gBAAgB,CAA6B;IAErD,YACmB,GAAG,GAAE,MAAM,IAAuB,EAClC,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAsC,EACtF;IAEJ,sEAAsE;IACtE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE,aAAa,GAAG,YAAY,CAAC,GAAG,IAAI,CAiBrF;IAED,0EAA0E;IAC1E,IAAI,IAAI,SAAS,6BAA6B,EAAE,CAG/C;IAED,wEAAwE;IACxE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAI/E;IAED;6EACyE;IACzE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAOvD;IAED;2CACuC;IACvC,oBAAoB,IAAI,IAAI,CAI3B;IAED;8DAC0D;IAC1D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAKvD;IAED,OAAO,CAAC,KAAK;CAMd"}
1
+ {"version":3,"file":"pre-progress-refusal-ledger.d.ts","sourceRoot":"","sources":["../src/pre-progress-refusal-ledger.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mBAAmB,CAAC;AAEvE,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAUlE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,wBAAwB;IAGjC,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,QAAQ,CAAC,WAAW,EAAE,oBAAoB;IAJ5C,OAAO,CAAC,IAAI,CAAoD;IAChE,YACmB,GAAG,GAAE,MAAM,IAAuB,EAClC,QAAQ,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAsC,EAC/E,WAAW,GAAE,oBAAyD,EAC7E;IAEJ,sEAAsE;IACtE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,6BAA6B,EAAE,aAAa,GAAG,YAAY,CAAC,GAAG,IAAI,CAiBrF;IAED,0EAA0E;IAC1E,IAAI,IAAI,SAAS,6BAA6B,EAAE,CAG/C;IAED,wEAAwE;IACxE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAI/E;IAED;6EACyE;IACzE,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEvD;IAED;2CACuC;IACvC,oBAAoB,IAAI,IAAI,CAG3B;IAED;8DAC0D;IAC1D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAKvD;IAED,OAAO,CAAC,KAAK;CAMd"}