@cotal-ai/auth 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admission-mediator.d.ts +319 -0
- package/dist/admission-mediator.d.ts.map +1 -0
- package/dist/admission-mediator.js +1033 -0
- package/dist/admission-mediator.js.map +1 -0
- package/dist/auth-admin.d.ts +29 -0
- package/dist/auth-admin.d.ts.map +1 -0
- package/dist/auth-admin.js +224 -0
- package/dist/auth-admin.js.map +1 -0
- package/dist/authority-client.d.ts +215 -0
- package/dist/authority-client.d.ts.map +1 -0
- package/dist/authority-client.js +346 -0
- package/dist/authority-client.js.map +1 -0
- package/dist/barrier-evict.d.ts +16 -0
- package/dist/barrier-evict.d.ts.map +1 -0
- package/dist/barrier-evict.js +100 -0
- package/dist/barrier-evict.js.map +1 -0
- package/dist/connect-reader.d.ts +72 -0
- package/dist/connect-reader.d.ts.map +1 -0
- package/dist/connect-reader.js +154 -0
- package/dist/connect-reader.js.map +1 -0
- package/dist/continuity.d.ts.map +1 -1
- package/dist/continuity.js +3 -0
- package/dist/continuity.js.map +1 -1
- package/dist/credential-ledger.d.ts +343 -0
- package/dist/credential-ledger.d.ts.map +1 -0
- package/dist/credential-ledger.js +732 -0
- package/dist/credential-ledger.js.map +1 -0
- package/dist/drain-repair.d.ts +95 -0
- package/dist/drain-repair.d.ts.map +1 -0
- package/dist/drain-repair.js +305 -0
- package/dist/drain-repair.js.map +1 -0
- package/dist/idp.d.ts +19 -0
- package/dist/idp.d.ts.map +1 -1
- package/dist/idp.js +17 -0
- package/dist/idp.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +29 -2
- package/dist/index.js.map +1 -1
- package/dist/issuer.d.ts +8 -0
- package/dist/issuer.d.ts.map +1 -1
- package/dist/issuer.js +4 -2
- package/dist/issuer.js.map +1 -1
- package/dist/ledger-scanner.d.ts +98 -0
- package/dist/ledger-scanner.d.ts.map +1 -0
- package/dist/ledger-scanner.js +352 -0
- package/dist/ledger-scanner.js.map +1 -0
- package/dist/ledger.d.ts +7 -0
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +53 -5
- package/dist/ledger.js.map +1 -1
- package/dist/lifecycle-registry.d.ts +397 -0
- package/dist/lifecycle-registry.d.ts.map +1 -0
- package/dist/lifecycle-registry.js +819 -0
- package/dist/lifecycle-registry.js.map +1 -0
- package/dist/permissions.d.ts +5 -1
- package/dist/permissions.d.ts.map +1 -1
- package/dist/permissions.js +29 -6
- package/dist/permissions.js.map +1 -1
- package/dist/plane-claim.d.ts +83 -0
- package/dist/plane-claim.d.ts.map +1 -0
- package/dist/plane-claim.js +290 -0
- package/dist/plane-claim.js.map +1 -0
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +2 -1
- package/dist/provider.js.map +1 -1
- package/dist/records-scanner.d.ts +78 -0
- package/dist/records-scanner.d.ts.map +1 -0
- package/dist/records-scanner.js +320 -0
- package/dist/records-scanner.js.map +1 -0
- package/dist/retirement-barrier.d.ts +217 -0
- package/dist/retirement-barrier.d.ts.map +1 -0
- package/dist/retirement-barrier.js +624 -0
- package/dist/retirement-barrier.js.map +1 -0
- package/dist/retirement-cleaner.d.ts +54 -0
- package/dist/retirement-cleaner.d.ts.map +1 -0
- package/dist/retirement-cleaner.js +158 -0
- package/dist/retirement-cleaner.js.map +1 -0
- package/dist/root-credential.d.ts +26 -0
- package/dist/root-credential.d.ts.map +1 -0
- package/dist/root-credential.js +116 -0
- package/dist/root-credential.js.map +1 -0
- package/dist/service.d.ts +60 -0
- package/dist/service.d.ts.map +1 -1
- package/dist/service.js +317 -10
- package/dist/service.js.map +1 -1
- package/dist/session-ledger.d.ts +224 -0
- package/dist/session-ledger.d.ts.map +1 -0
- package/dist/session-ledger.js +713 -0
- package/dist/session-ledger.js.map +1 -0
- package/dist/token.d.ts +17 -0
- package/dist/token.d.ts.map +1 -1
- package/dist/token.js +30 -2
- package/dist/token.js.map +1 -1
- package/package.json +5 -3
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The D13 (5) TERMINAL RETIREMENT BARRIER + the EXACT-POOL TERMINAL CLEANER (SPEC §13.1, as
|
|
3
|
+
* amended; the §13.9 cleaner matrix row). The third sibling of `lifecycle-registry.ts` /
|
|
4
|
+
* `credential-ledger.ts`: the SAME minting authority over the SAME stores, reached only through
|
|
5
|
+
* the sealed registry ({@link registryStores}).
|
|
6
|
+
*
|
|
7
|
+
* The barrier, in the NORMATIVE order (§13.1) — every boundary crash-resumable from the durable
|
|
8
|
+
* `stage.<opId>` intent, and only the SAME operation resumes it:
|
|
9
|
+
* 1. durable retirement intent (create-only, captured BEFORE any movement; it carries only the
|
|
10
|
+
* frontier stream set: the barrier DISCOVERS the whole cleaner inventory from the target's
|
|
11
|
+
* own accepted pool obligations, taking no caller-supplied pool hint, §13.1 #F);
|
|
12
|
+
* 2. CAS the issuance gate `open → frozen` carrying the intent (the bar: a staged mint loses
|
|
13
|
+
* its finalize touch) — a retirement freeze NEVER reopens (§13.1: its only exit is the
|
|
14
|
+
* terminal);
|
|
15
|
+
* 3. CAS the head `active → retiring` bound to the same op (every currency seam now yields no
|
|
16
|
+
* current mapping and no current epoch; the alias is NOT replaceable);
|
|
17
|
+
* 4. the shared containment core ({@link containLifecycleFamily}): revoke every ledger row
|
|
18
|
+
* under `cred.<uid>.>`, reconcile both halves of every session-derived credential, and
|
|
19
|
+
* VERIFIED cluster-wide eviction of every holder principal + the alias principal;
|
|
20
|
+
* 5. drain the target's acceptance obligations to quiescence (§13.8): enumerate
|
|
21
|
+
* `oblig.<targetUid>.>` for endpoint discovery, drive each endpoint's injected drain
|
|
22
|
+
* ({@link drainTargetForEndpoint} over that endpoint's mediator), then RE-ENUMERATE and
|
|
23
|
+
* verify — the barrier OWNS the quiescence check, never the injected seam; then, BEFORE
|
|
24
|
+
* anything else proceeds, fence the drain's per-op repair principals (the commit applier /
|
|
25
|
+
* pool-route reconciler / effects canceller, {@link drainRepairPrincipals}) with a
|
|
26
|
+
* cluster-verified eviction — the APPLIER especially, whose records-KV last-value write is
|
|
27
|
+
* visible to a normal reader regardless of the frontier cutoff (#4);
|
|
28
|
+
* 6. the exact-pool terminal cleaner ({@link runExactPoolCleaner}) under a DISTINCT,
|
|
29
|
+
* separately minted, bounded-lived profile per (op × endpoint), then — BEFORE any frontier
|
|
30
|
+
* records — revoke the cleaner's own credential and cluster-verify eviction of its
|
|
31
|
+
* principal (the §13.1 cleaner fence: no in-flight cleaner can ACK a redelivery or write a
|
|
32
|
+
* terminal after the alias is reused);
|
|
33
|
+
* 7. record the per-stream retirement frontiers (`frontier.<lifecycleUid>`, create-only,
|
|
34
|
+
* never deleted — the cutoffs that bound the predecessor's half-open interval);
|
|
35
|
+
* 8. CAS the gate `frozen → retired` (terminal; unlike takeover, never reopened);
|
|
36
|
+
* 9. CAS the head `retiring → retired` — only now is the alias replaceable, and `retired`
|
|
37
|
+
* ASSERTS the completed barrier.
|
|
38
|
+
*
|
|
39
|
+
* FAIL-CLOSED CONTRACT: any failure after the freeze leaves the gate FROZEN and the head at its
|
|
40
|
+
* current containment state (nothing mints, the alias is not replaceable); eviction failure is
|
|
41
|
+
* `unavailable`; a live, unexpired, FOREIGN-target pool item is never settled or ACKed and the
|
|
42
|
+
* barrier refuses to close frontiers while one remains (§13.9).
|
|
43
|
+
*
|
|
44
|
+
* SURFACE: NOTHING here is exported from the package index (the same discipline as the
|
|
45
|
+
* takeover barrier); production wiring lands with the activation slices. The executor seam is
|
|
46
|
+
* the sealed registry; an `opId` is an identifier, never a bearer capability.
|
|
47
|
+
*/
|
|
48
|
+
import { type JetStreamClient, type JetStreamManager } from "@nats-io/jetstream";
|
|
49
|
+
import { type WorkPoolContext, type WorkItemRef, type WorkTerminalFact } from "@cotal-ai/core";
|
|
50
|
+
import { type LifecycleRegistry } from "./lifecycle-registry.js";
|
|
51
|
+
import { type TakeoverDeps } from "./credential-ledger.js";
|
|
52
|
+
/** One endpoint's EXACT pool list for the cleaner step — the cleaner profile's grant is minted
|
|
53
|
+
* from these (§13.9: never a pool wildcard). The barrier DISCOVERS this inventory from the
|
|
54
|
+
* target's own accepted pool obligations (#F); it takes no caller-supplied hint. */
|
|
55
|
+
export interface RetirementPoolSpec {
|
|
56
|
+
endpoint: string;
|
|
57
|
+
pools: string[];
|
|
58
|
+
}
|
|
59
|
+
/** The durable retirement intent at `stage.<opId>` — captured BEFORE the freeze; every resumed
|
|
60
|
+
* step works from these SAME coordinates ({@link resumeAgentRetirement}). */
|
|
61
|
+
export interface RetirementIntent {
|
|
62
|
+
kind: "retirement";
|
|
63
|
+
lifecycleUid: string;
|
|
64
|
+
owner: string;
|
|
65
|
+
actor: string;
|
|
66
|
+
/** The gate generation the barrier freezes at (a retirement freeze never reopens, so there is
|
|
67
|
+
* no successor generation — the gate terminalizes at this one). */
|
|
68
|
+
fromGeneration: number;
|
|
69
|
+
/** The streams whose last sequence the frontier step records (§13.1: the deployment's
|
|
70
|
+
* lifecycle-bounded streams). */
|
|
71
|
+
frontierStreams: string[];
|
|
72
|
+
}
|
|
73
|
+
/** The cleaner's bind: JS handles over the cleaner's OWN authenticated connection (the
|
|
74
|
+
* separately minted, bounded-lived, exact-pool profile — NEVER the executor's or the revoked
|
|
75
|
+
* owner's connection) plus the CONNZ-attributable principal of that connection, which the
|
|
76
|
+
* barrier verified-evicts at the cleaner fence. */
|
|
77
|
+
export interface PoolCleanerBind {
|
|
78
|
+
jsm: JetStreamManager;
|
|
79
|
+
js: JetStreamClient;
|
|
80
|
+
principal: string;
|
|
81
|
+
}
|
|
82
|
+
/** The settlement executor's bind: a space-bonded {@link WorkPoolContext} DERIVED from the
|
|
83
|
+
* executor's OWN authenticated connection (the separately minted, op-bounded settlement
|
|
84
|
+
* profile, SPEC 13.9 "Retirement settlement"; never the cleaner's bind and never the barrier's
|
|
85
|
+
* standing connection, so the settlement rights and the settlement code sit on ONE connection)
|
|
86
|
+
* plus that connection's CONNZ-attributable principal, which the barrier verified-evicts at
|
|
87
|
+
* the fence alongside the cleaner's. */
|
|
88
|
+
export interface RetirementExecutorBind {
|
|
89
|
+
work: WorkPoolContext;
|
|
90
|
+
principal: string;
|
|
91
|
+
}
|
|
92
|
+
/** The retirement barrier's injected capabilities — the takeover deps plus the retirement-only
|
|
93
|
+
* seams. Every seam is deployment-owned mechanics; the barrier owns the ORDER and the
|
|
94
|
+
* verification. */
|
|
95
|
+
export interface RetirementDeps extends TakeoverDeps {
|
|
96
|
+
/** Drive ONE endpoint's obligations under the retiring target to §13.8 quiescence (wire to
|
|
97
|
+
* `drainTargetForEndpoint` over that endpoint's admission mediator). `opId` is the barrier's
|
|
98
|
+
* own durable operation id: the drain's per-op repair credentials (the confined
|
|
99
|
+
* commit-applier and pool-route reconciler) mint under it, so their principals are
|
|
100
|
+
* op-attributable and op-bounded. The barrier re-checks
|
|
101
|
+
* quiescence itself afterward; a drain that lied fails the barrier, not the invariant. */
|
|
102
|
+
drainTargetObligations: (endpoint: string, targetUid: string, opId: string) => Promise<void>;
|
|
103
|
+
/** Mint + connect the DISTINCT bounded-lived cleaner profile for (op × endpoint), granted
|
|
104
|
+
* exactly the listed pools (§13.9 cleaner row). */
|
|
105
|
+
openCleaner: (args: {
|
|
106
|
+
opId: string;
|
|
107
|
+
endpoint: string;
|
|
108
|
+
pools: string[];
|
|
109
|
+
}) => Promise<PoolCleanerBind>;
|
|
110
|
+
/** Revoke the cleaner bind's credential (the deny-new half) and release its resources. The
|
|
111
|
+
* barrier then verified-evicts the bind's principal itself (the kill-live half). Called on
|
|
112
|
+
* BOTH the success and the failure path — a wedged barrier never leaves a live cleaner. */
|
|
113
|
+
retireCleanerCredential: (bind: PoolCleanerBind) => Promise<void>;
|
|
114
|
+
/** Mint + connect the DISTINCT bounded-lived settlement-executor profile for (op × endpoint),
|
|
115
|
+
* granted exactly the listed pools' settlement rows (§13.9 "Retirement settlement": the lease
|
|
116
|
+
* CAS + `wrk` terminal publish + the leader-served EPF/records fencing reads; NO EPW read, that
|
|
117
|
+
* live-entry probe is unreachable from the settlement path). The barrier builds the settlement
|
|
118
|
+
* seam over THIS bind's work context, never its own standing connection. */
|
|
119
|
+
openExecutor: (args: {
|
|
120
|
+
opId: string;
|
|
121
|
+
endpoint: string;
|
|
122
|
+
pools: string[];
|
|
123
|
+
}) => Promise<RetirementExecutorBind>;
|
|
124
|
+
/** Revoke the executor bind's credential (the deny-new half); the barrier verified-evicts its
|
|
125
|
+
* principal too. Same discipline as the cleaner: called on success AND failure paths. */
|
|
126
|
+
retireExecutorCredential: (bind: RetirementExecutorBind) => Promise<void>;
|
|
127
|
+
/** The executor's clock (the `workExpiry` comparisons and the terminal-fact timestamps). */
|
|
128
|
+
now: () => number;
|
|
129
|
+
/** Cleaner pacing knobs (tests tighten them; production defaults hold). */
|
|
130
|
+
cleaner?: {
|
|
131
|
+
fetchExpiresMs?: number;
|
|
132
|
+
maxStalledPasses?: number;
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
/** What one pool's cleaning pass settled. */
|
|
136
|
+
export interface PoolCleanResult {
|
|
137
|
+
/** Messages ACKed because their item was ALREADY durably terminal. */
|
|
138
|
+
ackedTerminal: number;
|
|
139
|
+
/** Items this run settled `expired` (their own `workExpiry` passed). */
|
|
140
|
+
settledExpired: number;
|
|
141
|
+
/** Items this run settled `retired` (re-bound to the retiring target via their acceptance). */
|
|
142
|
+
settledRetired: number;
|
|
143
|
+
}
|
|
144
|
+
/** Executor-authority settlement seam. The cleaner supplies only delivery identity/bytes and a
|
|
145
|
+
* requested disposition; the implementation is closed over the durable retirement intent and
|
|
146
|
+
* independently re-derives every authority coordinate before touching the lease. */
|
|
147
|
+
export type SettleRetirementPoolItem = (args: {
|
|
148
|
+
ref: WorkItemRef;
|
|
149
|
+
itemBytes: Uint8Array;
|
|
150
|
+
disposition: "expired" | "retired";
|
|
151
|
+
}) => Promise<WorkTerminalFact>;
|
|
152
|
+
/**
|
|
153
|
+
* Run the exact-pool terminal cleaner over ONE named pool (§13.9 matrix row), on the CLEANER's
|
|
154
|
+
* own bind. Bind-time re-proof first: the pre-created durable's filter is exactly the named
|
|
155
|
+
* pool's subtree, pull mode, explicit ack, unlimited delivery ceiling. Then drain to a PROVEN
|
|
156
|
+
* quiescent pool: for each delivered message — ACK only if the item is durably terminal; settle
|
|
157
|
+
* `expired` when its own `workExpiry` passed (any target); settle `retired` ONLY after
|
|
158
|
+
* re-binding the item to THIS operation's retiring target through its acceptance decision fact
|
|
159
|
+
* (the `epw` subject carries no target); a live, unexpired, FOREIGN-target item is never
|
|
160
|
+
* settled or ACKed and quiescence fails loud while one remains. Quiescence is a FRESH consumer
|
|
161
|
+
* read showing zero `num_pending` and zero `num_ack_pending` (pre-existing owner ACKs drain
|
|
162
|
+
* through `AckWait` redelivery into this loop).
|
|
163
|
+
*/
|
|
164
|
+
export declare function runExactPoolCleaner(bind: PoolCleanerBind, args: {
|
|
165
|
+
space: string;
|
|
166
|
+
endpoint: string;
|
|
167
|
+
pool: string;
|
|
168
|
+
/** Executor-authority, effective-inventory-closed lease/terminal seam; never cleaner-owned handles. */
|
|
169
|
+
settleItem: SettleRetirementPoolItem;
|
|
170
|
+
/** The retiring target this operation may re-bind items to. */
|
|
171
|
+
targetUid: string;
|
|
172
|
+
now: () => number;
|
|
173
|
+
fetchExpiresMs?: number;
|
|
174
|
+
maxStalledPasses?: number;
|
|
175
|
+
}): Promise<PoolCleanResult>;
|
|
176
|
+
/** The barrier's outcome (durable facts, re-readable on resume; a resume that found the work
|
|
177
|
+
* already done reports zero counts, exactly the takeover discipline). */
|
|
178
|
+
export interface RetirementResult {
|
|
179
|
+
opId: string;
|
|
180
|
+
lifecycleUid: string;
|
|
181
|
+
revokedRows: number;
|
|
182
|
+
evictedPrincipals: string[];
|
|
183
|
+
/** Endpoints whose obligations the drain step drove (discovery order, sorted). */
|
|
184
|
+
drainedEndpoints: string[];
|
|
185
|
+
/** Per `<endpoint>/<pool>` cleaning counts for the pools THIS run cleaned. */
|
|
186
|
+
cleaned: Record<string, PoolCleanResult>;
|
|
187
|
+
/** The recorded per-stream retirement frontiers. */
|
|
188
|
+
frontiers: Record<string, number>;
|
|
189
|
+
}
|
|
190
|
+
/** Build the effective-inventory-closed executor settlement seam (§13.9): the returned function
|
|
191
|
+
* runs under the barrier's op-bounded authority and refuses any ref outside its effective
|
|
192
|
+
* inventory (the barrier-discovered `spec.pools`, the accepted `oblig.<uid>.>` routes) or
|
|
193
|
+
* this retirement's lifecycle — a foreign endpoint or a pool outside its discovered spec, an
|
|
194
|
+
* unaccepted or non-pool decision, expiring a live item, or retiring an item accepted for a
|
|
195
|
+
* target outside this intent's lifecycle. The cleaner chooses refs; it can never borrow this
|
|
196
|
+
* authority beyond its discovered inventory or this retirement's lifecycle (the confused-deputy
|
|
197
|
+
* closure). */
|
|
198
|
+
export declare function settlementForIntent(work: WorkPoolContext, intent: RetirementIntent, spec: RetirementPoolSpec, space: string, opId: string, now: () => number): SettleRetirementPoolItem;
|
|
199
|
+
/**
|
|
200
|
+
* Run the FULL terminal retirement barrier for a managed-agent lifecycle (SPEC 13.1, in the
|
|
201
|
+
* normative order — module header). Idempotent/crash-resumable: every step re-checks durable
|
|
202
|
+
* state, so calling it again with the SAME `opId` (directly or via
|
|
203
|
+
* {@link resumeAgentRetirement}) finishes the same operation; a different operation's freeze, a
|
|
204
|
+
* foreign generation movement, or a stranger's opId refuses before any CAS.
|
|
205
|
+
*/
|
|
206
|
+
export declare function runAgentRetirementBarrier(reg: LifecycleRegistry, args: {
|
|
207
|
+
owner: string;
|
|
208
|
+
actor: string;
|
|
209
|
+
lifecycleUid: string;
|
|
210
|
+
opId: string;
|
|
211
|
+
frontierStreams: string[];
|
|
212
|
+
}, deps: RetirementDeps): Promise<RetirementResult>;
|
|
213
|
+
/** Resume a crashed retirement from its durable intent alone (`{ opId }` — SPEC 13.1). Re-runs
|
|
214
|
+
* {@link runAgentRetirementBarrier} with the intent's own coordinates; a stranger's opId (no
|
|
215
|
+
* intent) is `not-found`. */
|
|
216
|
+
export declare function resumeAgentRetirement(reg: LifecycleRegistry, opId: string, deps: RetirementDeps): Promise<RetirementResult>;
|
|
217
|
+
//# sourceMappingURL=retirement-barrier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retirement-barrier.d.ts","sourceRoot":"","sources":["../src/retirement-barrier.ts"],"names":[],"mappings":"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"}
|