@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 @@
|
|
|
1
|
+
{"version":3,"file":"credential-ledger.js","sourceRoot":"","sources":["../src/credential-ledger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import type { ApplyCommit, CancelEffectsRoute, ReconcilePoolRoute } from "./admission-mediator.js";
|
|
2
|
+
/**
|
|
3
|
+
* The THREE per-op drain-repair principals (applier/reconciler/canceller) as their CONNZ
|
|
4
|
+
* `owner.actor` keys. The retirement barrier fences ALL THREE at the DRAIN FENCE (SPEC 13.1, #4):
|
|
5
|
+
* a CLUSTER-VERIFIED EVICTION of each principal BEFORE any frontier records. What that guarantees,
|
|
6
|
+
* exactly: no LIVE repair connection under the principal survives the instant the frontier closes —
|
|
7
|
+
* an in-flight publish, or a close() whose socket error was swallowed, is KICKed and confirmed gone.
|
|
8
|
+
* These connections are minted `noReconnect` (see the mint sites), so a KICK is durable in one round
|
|
9
|
+
* and there is no auto-reconnect to defeat the verify.
|
|
10
|
+
*
|
|
11
|
+
* NOT a deny-new. These are self-minted data-account bearers with NO ledger row (the authority-client
|
|
12
|
+
* model: a `cred.`/`epcred.` row would create no enforcement point), so there is nothing to revoke;
|
|
13
|
+
* `retire` in the barrier's fence is a documented no-op. Kill-live is the whole containment.
|
|
14
|
+
*
|
|
15
|
+
* The APPLIER is the load-bearing case: its guarded records-KV LAST-VALUE write (`last_by_subj` on
|
|
16
|
+
* goal/cp) is returned to a normal reader REGARDLESS of the per-stream frontier cutoff, so a LIVE
|
|
17
|
+
* post-frontier applier write would be an OBSERVABLE overwrite/DEL — unlike the reconciler/canceller
|
|
18
|
+
* epw/epf appends, which land past the interval and are excluded by the interval reader.
|
|
19
|
+
*
|
|
20
|
+
* NAMED RESIDUAL (SPEC 13.9, cs-rev-sec-ruled ACCEPTED, seed-dominated): the fence is a POINT-IN-TIME
|
|
21
|
+
* scan, not a deny-new, so a holder of a still-unexpired repair JWT+seed could open a FRESH connection
|
|
22
|
+
* AFTER the verify — the reconnect vector the `noReconnect` mint removes for the plane's OWN
|
|
23
|
+
* connections, but not for an exfiltrated bearer. It is confined by the exact ONE-coordinate grant
|
|
24
|
+
* (the applier/reconciler/canceller each publish exactly one subject), the short JWT TTL, and the
|
|
25
|
+
* material never leaving authority-plane process memory; and it is STRICTLY DOMINATED by data-account
|
|
26
|
+
* signing-seed compromise (co-resident, strictly stronger authority — the ANALOGOUS residual class
|
|
27
|
+
* §13.13 defines for the non-expiring plane-candidate connections; this repair residual is NAMED here
|
|
28
|
+
* and in the §13.9 D32 rows, with §13.13 supplying only the same class). Rotation of the data-account
|
|
29
|
+
* signing key is the only true deny-new for this family.
|
|
30
|
+
*
|
|
31
|
+
* Deterministic on opId (the SAME digest {@link opActor} stamps the live connections' principal
|
|
32
|
+
* tags from), so the barrier fences them WITHOUT the drain reporting back, and a crash-resume
|
|
33
|
+
* re-derives and re-fences the same three principals idempotently.
|
|
34
|
+
*/
|
|
35
|
+
export declare function drainRepairPrincipals(opId: string): Array<{
|
|
36
|
+
what: "applier" | "reconciler" | "canceller";
|
|
37
|
+
principal: string;
|
|
38
|
+
}>;
|
|
39
|
+
/**
|
|
40
|
+
* Validate one commit key against the CLOSED self-commit class (fact pin 2). Returns the exact
|
|
41
|
+
* key (unchanged) or throws `permission-denied` with the refused reason. The class is derived
|
|
42
|
+
* from the SAME canonical frozen collections the record-reader seam consults — a new authority
|
|
43
|
+
* kind is excluded by construction, never by a parallel hand-kept list.
|
|
44
|
+
*/
|
|
45
|
+
export declare function assertAppliableCommitKey(commitKey: string): string;
|
|
46
|
+
/** Validate one pool-route repair's subject shape (defense in depth over the mediator's
|
|
47
|
+
* derivation): exactly `<space-prefix>.epw.<endpoint>.<pool>.<cO>.<cA>.<cUid>.<id>` for THIS
|
|
48
|
+
* space. Returns the subject or throws `permission-denied`. */
|
|
49
|
+
export declare function assertPoolRepairSubject(space: string, subject: string): string;
|
|
50
|
+
/** The COMMIT APPLIER's grant (SPEC 13.9 "Drain commit applier" row): ONE exact records-KV
|
|
51
|
+
* subject for the validated commit key + the connection-scoped inbox. No reads, no wildcards.
|
|
52
|
+
* The commitKey MUST have passed {@link assertAppliableCommitKey} before this builder runs. */
|
|
53
|
+
export declare function drainApplierGrants(space: string, commitKey: string, connId: string): {
|
|
54
|
+
publish: string[];
|
|
55
|
+
subscribe: string[];
|
|
56
|
+
};
|
|
57
|
+
/** The POOL-ROUTE RECONCILER's grant (SPEC 13.9 "Drain route reconciler" row): ONE exact EPW
|
|
58
|
+
* item subject + the connection-scoped inbox. No reads, no wildcards. The subject MUST have
|
|
59
|
+
* passed {@link assertPoolRepairSubject} before this builder runs. */
|
|
60
|
+
export declare function drainReconcilerGrants(space: string, itemSubject: string, connId: string): {
|
|
61
|
+
publish: string[];
|
|
62
|
+
subscribe: string[];
|
|
63
|
+
};
|
|
64
|
+
/** Validate one effects-cancel completion subject (defense in depth over the mediator's
|
|
65
|
+
* derivation): exactly this space's `epf.<endpoint>.eff.<owner>.<actor>.<uid>.<id>` marker or
|
|
66
|
+
* `epf.<endpoint>.goal.<owner>.<actor>.<uid>.<goalId>.result` coordinate — the two completion
|
|
67
|
+
* subjects the drain's established() reads. Returns the subject or throws `permission-denied`. */
|
|
68
|
+
export declare function assertEffectsCancelSubject(space: string, subject: string): string;
|
|
69
|
+
/** The EFFECTS CANCELLER's grant (SPEC 13.9 "Drain effects canceller" row): ONE exact completion
|
|
70
|
+
* subject + the connection-scoped inbox. No reads, no wildcards. The subject MUST have passed
|
|
71
|
+
* {@link assertEffectsCancelSubject} before this builder runs. */
|
|
72
|
+
export declare function drainCancellerGrants(space: string, completionSubject: string, connId: string): {
|
|
73
|
+
publish: string[];
|
|
74
|
+
subscribe: string[];
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Build the two per-op repair executors over the data-account seed (the cleaner/executor
|
|
78
|
+
* substrate). Each returned function mints its per-repair credential, executes the ONE handed
|
|
79
|
+
* command, and closes — fail-closed on any mint/validation failure (the drain's row stays
|
|
80
|
+
* frozen, loud).
|
|
81
|
+
*/
|
|
82
|
+
export declare function makeDrainRepairers(opts: {
|
|
83
|
+
server: string;
|
|
84
|
+
space: string;
|
|
85
|
+
dataAccount: {
|
|
86
|
+
pub: string;
|
|
87
|
+
signingSeed: string;
|
|
88
|
+
};
|
|
89
|
+
log: (line: string) => void;
|
|
90
|
+
}): {
|
|
91
|
+
applyCommitFor: (opId: string) => ApplyCommit;
|
|
92
|
+
reconcilePoolRouteFor: (opId: string) => ReconcilePoolRoute;
|
|
93
|
+
cancelEffectsRouteFor: (opId: string) => CancelEffectsRoute;
|
|
94
|
+
};
|
|
95
|
+
//# sourceMappingURL=drain-repair.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drain-repair.d.ts","sourceRoot":"","sources":["../src/drain-repair.ts"],"names":[],"mappings":"AAwDA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAwC,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAWzI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAM9H;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAiClE;AAED;;gEAEgE;AAChE,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ9E;AAED;;gGAEgG;AAChG,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAK/H;AAED;;uEAEuE;AACvE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAKpI;AAED;;;mGAGmG;AACnG,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAYjF;AAED;;mEAEmE;AACnE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAA;CAAE,CAKzI;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAClD,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;2BAI+B,MAAM,KAAG,WAAW;kCAmCb,MAAM,KAAG,kBAAkB;kCA+B3B,MAAM,KAAG,kBAAkB;EAkCjE"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The per-op CONFINED DRAIN-REPAIR executors (#29 HIGH 1, the functional closure of the
|
|
3
|
+
* retirement drain's accepted-work boundary): the COMMIT APPLIER and the POOL-ROUTE RECONCILER,
|
|
4
|
+
* each a short-lived, per-repair, exact-coordinate credential — never a broad records-write
|
|
5
|
+
* grant bolted onto the drain (the shortcut the panel scoped out of 84cd08f).
|
|
6
|
+
*
|
|
7
|
+
* THE SPLIT (fact pin 1): two DISTINCT principals per retirement op, `local.epapl_<opId-hash>`
|
|
8
|
+
* (applier: the guarded record-write of an accepted self-class commit) and
|
|
9
|
+
* `local.eprec_<opId-hash>` (reconciler: the create-only EPW enqueue of an accepted pool route).
|
|
10
|
+
* Their authorities and failure/revocation domains are disjoint; kill-live is by CONNZ principal
|
|
11
|
+
* tag, so the two roles are two principals (the cleaner/executor precedent).
|
|
12
|
+
*
|
|
13
|
+
* THE CONFUSED-DEPUTY CLOSURE (fact pin 2): a grant coordinate is NEVER minted from a raw
|
|
14
|
+
* `ObligationRow.commitKey`. Before any applier mint the key must parse under the CLOSED
|
|
15
|
+
* self-commit class derived from the canonical frozen kind collections: its kind token must be a
|
|
16
|
+
* registered NON-authority record kind ({@link callerReadableRecordKind} over the same
|
|
17
|
+
* single-source registry the reader seam consults), the key arity must match that kind's
|
|
18
|
+
* definition exactly (which structurally excludes the 3-token lifecycle HEAD — the dual-token
|
|
19
|
+
* trap), the split tail must be `spec`/`status`, and every qualifier token must pass its own
|
|
20
|
+
* validator. A forged accepted-self row naming `oblig.`/`lifecycle` head/`govern.`/`policy.`/
|
|
21
|
+
* `uid.`/`frontier.` (or any unregistered kind) refuses BEFORE a credential exists. Registered
|
|
22
|
+
* THIRD-PARTY kinds are deliberately OUTSIDE the applier class in this slice (none exist in
|
|
23
|
+
* production; widening past the core caller kinds is its own reviewed decision, not a default).
|
|
24
|
+
* NAMED RESIDUAL (stated per fact): subject ACLs cannot enforce CAS headers, so within its
|
|
25
|
+
* granted exact key a compromised applier can overwrite/DEL/PURGE that one key for the
|
|
26
|
+
* credential's short life — the confinement is the exact-key set + the op lifetime + the closed
|
|
27
|
+
* class, never write semantics.
|
|
28
|
+
*
|
|
29
|
+
* THE CLOSED-COMMAND BOUNDARY (fact pin 3): the executors receive already-validated commands.
|
|
30
|
+
* The applier's (commitKey, bytes, baseRevision) comes from `recoverSelfCore` AFTER intent
|
|
31
|
+
* resolution + canonical-digest verification + at-base confirmation; the reconciler's
|
|
32
|
+
* {@link PoolRouteRepair} is constructed by the MEDIATOR from the durable acceptance decision
|
|
33
|
+
* fact (read + parsed + row-bound), its bytes the canonical `workItemBytesOf` derivation. The
|
|
34
|
+
* executors re-validate shape (defense in depth) but hold no derivation authority.
|
|
35
|
+
*
|
|
36
|
+
* Lifecycle: one credential per REPAIR CALL — minted, connected non-standing, executed, closed
|
|
37
|
+
* in a finally. A retirement typically repairs zero or a handful of rows; the tighter lifetime
|
|
38
|
+
* beats connection reuse.
|
|
39
|
+
*/
|
|
40
|
+
import { createHash } from "node:crypto";
|
|
41
|
+
import { jetstream } from "@nats-io/jetstream";
|
|
42
|
+
import { headers as natsHeaders } from "@nats-io/transport-node";
|
|
43
|
+
import { AUTHORITY_KIND_DEFS, EpEnvelopeError, RECORD_KINDS, callerReadableRecordKind, effectCancelledFactOf, goalCancelledResultOf, isCasLoss, principalKey, publishFactCreateOnly, recordsBucket, spacePrefix, } from "@cotal-ai/core";
|
|
44
|
+
import { openAuthorityClient } from "./authority-client.js";
|
|
45
|
+
/** The infra owner for repair principals: CONNZ-attributable, reserved (the cleaner precedent). */
|
|
46
|
+
const INFRA_OWNER = "local";
|
|
47
|
+
/** `epapl_<16-hex-of-sha256(opId)>` / `eprec_<...>`: distinct prefixes per role, unique per op —
|
|
48
|
+
* an evict of one role's principal never touches the other's (the epcln_/epexe_ pattern). */
|
|
49
|
+
function opActor(prefix, opId) {
|
|
50
|
+
return `${prefix}_${createHash("sha256").update(opId).digest("hex").slice(0, 16)}`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The THREE per-op drain-repair principals (applier/reconciler/canceller) as their CONNZ
|
|
54
|
+
* `owner.actor` keys. The retirement barrier fences ALL THREE at the DRAIN FENCE (SPEC 13.1, #4):
|
|
55
|
+
* a CLUSTER-VERIFIED EVICTION of each principal BEFORE any frontier records. What that guarantees,
|
|
56
|
+
* exactly: no LIVE repair connection under the principal survives the instant the frontier closes —
|
|
57
|
+
* an in-flight publish, or a close() whose socket error was swallowed, is KICKed and confirmed gone.
|
|
58
|
+
* These connections are minted `noReconnect` (see the mint sites), so a KICK is durable in one round
|
|
59
|
+
* and there is no auto-reconnect to defeat the verify.
|
|
60
|
+
*
|
|
61
|
+
* NOT a deny-new. These are self-minted data-account bearers with NO ledger row (the authority-client
|
|
62
|
+
* model: a `cred.`/`epcred.` row would create no enforcement point), so there is nothing to revoke;
|
|
63
|
+
* `retire` in the barrier's fence is a documented no-op. Kill-live is the whole containment.
|
|
64
|
+
*
|
|
65
|
+
* The APPLIER is the load-bearing case: its guarded records-KV LAST-VALUE write (`last_by_subj` on
|
|
66
|
+
* goal/cp) is returned to a normal reader REGARDLESS of the per-stream frontier cutoff, so a LIVE
|
|
67
|
+
* post-frontier applier write would be an OBSERVABLE overwrite/DEL — unlike the reconciler/canceller
|
|
68
|
+
* epw/epf appends, which land past the interval and are excluded by the interval reader.
|
|
69
|
+
*
|
|
70
|
+
* NAMED RESIDUAL (SPEC 13.9, cs-rev-sec-ruled ACCEPTED, seed-dominated): the fence is a POINT-IN-TIME
|
|
71
|
+
* scan, not a deny-new, so a holder of a still-unexpired repair JWT+seed could open a FRESH connection
|
|
72
|
+
* AFTER the verify — the reconnect vector the `noReconnect` mint removes for the plane's OWN
|
|
73
|
+
* connections, but not for an exfiltrated bearer. It is confined by the exact ONE-coordinate grant
|
|
74
|
+
* (the applier/reconciler/canceller each publish exactly one subject), the short JWT TTL, and the
|
|
75
|
+
* material never leaving authority-plane process memory; and it is STRICTLY DOMINATED by data-account
|
|
76
|
+
* signing-seed compromise (co-resident, strictly stronger authority — the ANALOGOUS residual class
|
|
77
|
+
* §13.13 defines for the non-expiring plane-candidate connections; this repair residual is NAMED here
|
|
78
|
+
* and in the §13.9 D32 rows, with §13.13 supplying only the same class). Rotation of the data-account
|
|
79
|
+
* signing key is the only true deny-new for this family.
|
|
80
|
+
*
|
|
81
|
+
* Deterministic on opId (the SAME digest {@link opActor} stamps the live connections' principal
|
|
82
|
+
* tags from), so the barrier fences them WITHOUT the drain reporting back, and a crash-resume
|
|
83
|
+
* re-derives and re-fences the same three principals idempotently.
|
|
84
|
+
*/
|
|
85
|
+
export function drainRepairPrincipals(opId) {
|
|
86
|
+
return [
|
|
87
|
+
{ what: "applier", principal: principalKey(INFRA_OWNER, opActor("epapl", opId)).key },
|
|
88
|
+
{ what: "reconciler", principal: principalKey(INFRA_OWNER, opActor("eprec", opId)).key },
|
|
89
|
+
{ what: "canceller", principal: principalKey(INFRA_OWNER, opActor("epcan", opId)).key },
|
|
90
|
+
];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Validate one commit key against the CLOSED self-commit class (fact pin 2). Returns the exact
|
|
94
|
+
* key (unchanged) or throws `permission-denied` with the refused reason. The class is derived
|
|
95
|
+
* from the SAME canonical frozen collections the record-reader seam consults — a new authority
|
|
96
|
+
* kind is excluded by construction, never by a parallel hand-kept list.
|
|
97
|
+
*/
|
|
98
|
+
export function assertAppliableCommitKey(commitKey) {
|
|
99
|
+
if (typeof commitKey !== "string" || commitKey.length === 0 || commitKey.length > 512)
|
|
100
|
+
throw new EpEnvelopeError("permission-denied", `the commit key is not a bounded non-empty string; no applier credential mints for it (SPEC 13.8/13.9)`);
|
|
101
|
+
const tokens = commitKey.split(".");
|
|
102
|
+
const kind = tokens[0];
|
|
103
|
+
// Registered AND non-authority (the reader seam's single-source predicate): a pure authority
|
|
104
|
+
// kind (oblig/uid/govern/policy/frontier) and any unregistered kind both refuse here.
|
|
105
|
+
if (!callerReadableRecordKind(kind))
|
|
106
|
+
throw new EpEnvelopeError("permission-denied", `the commit key "${commitKey}" targets "${kind}", which is not a registered non-authority record kind; an accepted self-commit can only name the closed caller-record class, so no applier credential mints for it (SPEC 13.8/13.9; the confused-deputy closure)`);
|
|
107
|
+
const def = RECORD_KINDS[kind] ?? undefined;
|
|
108
|
+
if (def === undefined || AUTHORITY_KIND_DEFS.some((d) => d === def))
|
|
109
|
+
throw new EpEnvelopeError("permission-denied", `the commit key "${commitKey}" has no caller-record definition for "${kind}"; no applier credential mints for it (SPEC 13.8/13.9)`);
|
|
110
|
+
const expected = 1 + def.qualifiers.length + (def.split ? 1 : 0);
|
|
111
|
+
if (tokens.length !== expected)
|
|
112
|
+
throw new EpEnvelopeError("permission-denied", `the commit key "${commitKey}" has ${tokens.length} tokens but the "${kind}" definition requires exactly ${expected}; a shallower or deeper coordinate (including an authority HEAD arity) never mints (SPEC 13.8/13.9)`);
|
|
113
|
+
if (def.split && tokens[expected - 1] !== "spec" && tokens[expected - 1] !== "status")
|
|
114
|
+
throw new EpEnvelopeError("permission-denied", `the commit key "${commitKey}" does not end in spec/status; the "${kind}" kind is split (SPEC 13.7)`);
|
|
115
|
+
// The targeted half's REGISTERED WRITER must be the §13.8 commit path itself: a self-commit is
|
|
116
|
+
// the writer's own guarded record write, so the applier acts only for kinds the canonical
|
|
117
|
+
// writer metadata assigns to "commit-path" (goal/cp today). A kind owned by another writer
|
|
118
|
+
// (provisioner registration, the minting manager, an issuer, the pool-owner lease command)
|
|
119
|
+
// never mints an applier credential, however caller-readable it is.
|
|
120
|
+
const half = def.split ? tokens[expected - 1] : "spec";
|
|
121
|
+
if (def.writers[half] !== "commit-path")
|
|
122
|
+
throw new EpEnvelopeError("permission-denied", `the commit key "${commitKey}" targets a "${kind}" ${half} whose registered writer is "${def.writers[half]}", not the SPEC 13.8 commit path; an accepted self-commit can only name commit-path kinds, so no applier credential mints for it (SPEC 13.8/13.9)`);
|
|
123
|
+
for (let q = 0; q < def.qualifiers.length; q++) {
|
|
124
|
+
try {
|
|
125
|
+
def.qualifiers[q].assert(tokens[1 + q]);
|
|
126
|
+
}
|
|
127
|
+
catch (e) {
|
|
128
|
+
throw new EpEnvelopeError("permission-denied", `the commit key "${commitKey}" fails the "${def.qualifiers[q].name}" qualifier: ${e instanceof Error ? e.message : String(e)}; no applier credential mints for it (SPEC 13.8/13.9)`);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return commitKey;
|
|
132
|
+
}
|
|
133
|
+
/** Validate one pool-route repair's subject shape (defense in depth over the mediator's
|
|
134
|
+
* derivation): exactly `<space-prefix>.epw.<endpoint>.<pool>.<cO>.<cA>.<cUid>.<id>` for THIS
|
|
135
|
+
* space. Returns the subject or throws `permission-denied`. */
|
|
136
|
+
export function assertPoolRepairSubject(space, subject) {
|
|
137
|
+
const prefix = `${spacePrefix(space)}.epw.`;
|
|
138
|
+
if (!subject.startsWith(prefix))
|
|
139
|
+
throw new EpEnvelopeError("permission-denied", `the pool repair subject "${subject}" is not this space's EPW rail; no reconciler credential mints for it (SPEC 13.6/13.9)`);
|
|
140
|
+
const tokens = subject.slice(prefix.length).split(".");
|
|
141
|
+
if (tokens.length !== 6 || tokens.some((t) => t.length === 0 || t.includes(">") || t.includes("*")))
|
|
142
|
+
throw new EpEnvelopeError("permission-denied", `the pool repair subject "${subject}" is not an exact <endpoint>.<pool>.<owner>.<actor>.<uid>.<id> item coordinate (no wildcards, six tokens); no reconciler credential mints for it (SPEC 13.6/13.9)`);
|
|
143
|
+
return subject;
|
|
144
|
+
}
|
|
145
|
+
/** The COMMIT APPLIER's grant (SPEC 13.9 "Drain commit applier" row): ONE exact records-KV
|
|
146
|
+
* subject for the validated commit key + the connection-scoped inbox. No reads, no wildcards.
|
|
147
|
+
* The commitKey MUST have passed {@link assertAppliableCommitKey} before this builder runs. */
|
|
148
|
+
export function drainApplierGrants(space, commitKey, connId) {
|
|
149
|
+
return {
|
|
150
|
+
publish: [`$KV.${recordsBucket(space)}.${assertAppliableCommitKey(commitKey)}`],
|
|
151
|
+
subscribe: [`_INBOX_${connId}.>`],
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/** The POOL-ROUTE RECONCILER's grant (SPEC 13.9 "Drain route reconciler" row): ONE exact EPW
|
|
155
|
+
* item subject + the connection-scoped inbox. No reads, no wildcards. The subject MUST have
|
|
156
|
+
* passed {@link assertPoolRepairSubject} before this builder runs. */
|
|
157
|
+
export function drainReconcilerGrants(space, itemSubject, connId) {
|
|
158
|
+
return {
|
|
159
|
+
publish: [assertPoolRepairSubject(space, itemSubject)],
|
|
160
|
+
subscribe: [`_INBOX_${connId}.>`],
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
/** Validate one effects-cancel completion subject (defense in depth over the mediator's
|
|
164
|
+
* derivation): exactly this space's `epf.<endpoint>.eff.<owner>.<actor>.<uid>.<id>` marker or
|
|
165
|
+
* `epf.<endpoint>.goal.<owner>.<actor>.<uid>.<goalId>.result` coordinate — the two completion
|
|
166
|
+
* subjects the drain's established() reads. Returns the subject or throws `permission-denied`. */
|
|
167
|
+
export function assertEffectsCancelSubject(space, subject) {
|
|
168
|
+
const prefix = `${spacePrefix(space)}.epf.`;
|
|
169
|
+
const refuse = (why) => {
|
|
170
|
+
throw new EpEnvelopeError("permission-denied", `the effects-cancel subject "${subject}" ${why}; no canceller credential mints for it (SPEC 13.8/13.9)`);
|
|
171
|
+
};
|
|
172
|
+
if (!subject.startsWith(prefix))
|
|
173
|
+
refuse("is not this space's EPF rail");
|
|
174
|
+
const tokens = subject.slice(prefix.length).split(".");
|
|
175
|
+
if (tokens.some((t) => t.length === 0 || t.includes(">") || t.includes("*")))
|
|
176
|
+
refuse("carries a wildcard or empty token");
|
|
177
|
+
const isEff = tokens.length === 6 && tokens[1] === "eff";
|
|
178
|
+
const isGoalResult = tokens.length === 7 && tokens[1] === "goal" && tokens[6] === "result";
|
|
179
|
+
if (!isEff && !isGoalResult)
|
|
180
|
+
refuse("is neither an exact eff completion marker nor an exact goal result coordinate");
|
|
181
|
+
return subject;
|
|
182
|
+
}
|
|
183
|
+
/** The EFFECTS CANCELLER's grant (SPEC 13.9 "Drain effects canceller" row): ONE exact completion
|
|
184
|
+
* subject + the connection-scoped inbox. No reads, no wildcards. The subject MUST have passed
|
|
185
|
+
* {@link assertEffectsCancelSubject} before this builder runs. */
|
|
186
|
+
export function drainCancellerGrants(space, completionSubject, connId) {
|
|
187
|
+
return {
|
|
188
|
+
publish: [assertEffectsCancelSubject(space, completionSubject)],
|
|
189
|
+
subscribe: [`_INBOX_${connId}.>`],
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Build the two per-op repair executors over the data-account seed (the cleaner/executor
|
|
194
|
+
* substrate). Each returned function mints its per-repair credential, executes the ONE handed
|
|
195
|
+
* command, and closes — fail-closed on any mint/validation failure (the drain's row stays
|
|
196
|
+
* frozen, loud).
|
|
197
|
+
*/
|
|
198
|
+
export function makeDrainRepairers(opts) {
|
|
199
|
+
const { server, space, dataAccount, log } = opts;
|
|
200
|
+
const kvPrefix = `$KV.${recordsBucket(space)}`;
|
|
201
|
+
const applyCommitFor = (opId) => async (commitKey, valueBytes, baseRevision) => {
|
|
202
|
+
assertAppliableCommitKey(commitKey);
|
|
203
|
+
if (!Number.isSafeInteger(baseRevision) || baseRevision < 0)
|
|
204
|
+
throw new EpEnvelopeError("permission-denied", `the commit base revision ${String(baseRevision)} is not a non-negative integer; no applier credential mints (SPEC 13.8)`);
|
|
205
|
+
const subject = `${kvPrefix}.${commitKey}`;
|
|
206
|
+
const client = await openAuthorityClient({
|
|
207
|
+
server, space, dataAccount,
|
|
208
|
+
label: `cotal:ep-apply:${space}:${commitKey}`,
|
|
209
|
+
principal: { owner: INFRA_OWNER, actor: opActor("epapl", opId) },
|
|
210
|
+
grants: (id) => drainApplierGrants(space, commitKey, id),
|
|
211
|
+
// Per-call, never standing: no auto-reconnect, so the barrier's drain-repair fence KICK is
|
|
212
|
+
// durable in one round (an auto-reconnect with the still-valid bearer would defeat the
|
|
213
|
+
// verified-eviction) and a mid-write drop fails loud for the next drain pass to re-mint (#4).
|
|
214
|
+
noReconnect: true,
|
|
215
|
+
log,
|
|
216
|
+
});
|
|
217
|
+
try {
|
|
218
|
+
// The guarded CAS the acceptance promised: create at 0 / update at the pinned base. A CAS
|
|
219
|
+
// loss means another writer advanced the record; the drain's next pass re-classifies
|
|
220
|
+
// (landed / superseded) — never a blind retry here.
|
|
221
|
+
const h = natsHeaders();
|
|
222
|
+
h.set("Nats-Expected-Last-Subject-Sequence", String(baseRevision));
|
|
223
|
+
try {
|
|
224
|
+
await jetstream(client.nc).publish(subject, valueBytes, { headers: h });
|
|
225
|
+
}
|
|
226
|
+
catch (e) {
|
|
227
|
+
if (isCasLoss(e))
|
|
228
|
+
throw new EpEnvelopeError("conflict", `another writer moved ${commitKey} past base revision ${baseRevision}; this accepted commit's CAS can no longer land and the next drain pass re-classifies it (landed or superseded, SPEC 13.8)`);
|
|
229
|
+
throw e;
|
|
230
|
+
}
|
|
231
|
+
log(`drain-repair: applied the accepted self-commit ${commitKey} at base ${baseRevision} (op ${opId})`);
|
|
232
|
+
}
|
|
233
|
+
finally {
|
|
234
|
+
await client.close();
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
const reconcilePoolRouteFor = (opId) => async (repair) => {
|
|
238
|
+
if (repair.kind !== "pool")
|
|
239
|
+
throw new EpEnvelopeError("permission-denied", `the pool reconciler received a "${String(repair.kind)}" repair; it executes pool enqueues only (SPEC 13.8/13.9)`);
|
|
240
|
+
assertPoolRepairSubject(space, repair.subject);
|
|
241
|
+
if (!(repair.bytes instanceof Uint8Array) || repair.bytes.length === 0)
|
|
242
|
+
throw new EpEnvelopeError("permission-denied", `the pool repair for ${repair.subject} carries no item bytes; no reconciler credential mints (SPEC 13.6)`);
|
|
243
|
+
const client = await openAuthorityClient({
|
|
244
|
+
server, space, dataAccount,
|
|
245
|
+
label: `cotal:ep-reenqueue:${space}`,
|
|
246
|
+
principal: { owner: INFRA_OWNER, actor: opActor("eprec", opId) },
|
|
247
|
+
grants: (id) => drainReconcilerGrants(space, repair.subject, id),
|
|
248
|
+
noReconnect: true, // per-call: the fence KICK must be durable, not auto-reconnected (#4)
|
|
249
|
+
log,
|
|
250
|
+
});
|
|
251
|
+
try {
|
|
252
|
+
// CREATE-ONLY (the §13.6 idempotent bridge): a lost create means a concurrent repair or a
|
|
253
|
+
// late canonicalizer won — benign, the drain re-reads establishment either way.
|
|
254
|
+
const h = natsHeaders();
|
|
255
|
+
h.set("Nats-Expected-Last-Subject-Sequence", "0");
|
|
256
|
+
try {
|
|
257
|
+
await jetstream(client.nc).publish(repair.subject, repair.bytes, { headers: h });
|
|
258
|
+
log(`drain-repair: re-enqueued the accepted pool item ${repair.subject} (op ${opId})`);
|
|
259
|
+
}
|
|
260
|
+
catch (e) {
|
|
261
|
+
if (!isCasLoss(e))
|
|
262
|
+
throw e;
|
|
263
|
+
log(`drain-repair: the create for ${repair.subject} lost (a concurrent enqueue won); the drain re-reads establishment (op ${opId})`);
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
finally {
|
|
267
|
+
await client.close();
|
|
268
|
+
}
|
|
269
|
+
};
|
|
270
|
+
const cancelEffectsRouteFor = (opId) => async (repair) => {
|
|
271
|
+
if (repair.kind !== "effects-cancel")
|
|
272
|
+
throw new EpEnvelopeError("permission-denied", `the effects canceller received a "${String(repair.kind)}" repair; it executes completion cancels only (SPEC 13.8/13.9)`);
|
|
273
|
+
assertEffectsCancelSubject(space, repair.subject);
|
|
274
|
+
const target = repair.acceptance.target;
|
|
275
|
+
if (target === undefined)
|
|
276
|
+
throw new EpEnvelopeError("permission-denied", `the accepted work at ${repair.key} binds no target, so no retirement owns it; a target-less acceptance is never retirement-cancelled (SPEC 13.8)`);
|
|
277
|
+
// The core builders refuse a foreign target (a retirement cancels only ITS OWN target's work)
|
|
278
|
+
// and never fabricate success: an action terminalizes through the goal union's FIRST-CLASS
|
|
279
|
+
// `cancelled` state; a non-action effect through the EffectCancelledFact union member.
|
|
280
|
+
const fact = repair.goal
|
|
281
|
+
? goalCancelledResultOf(repair.acceptance, { opId, target }, Date.now())
|
|
282
|
+
: effectCancelledFactOf(repair.acceptance, { opId, target }, Date.now());
|
|
283
|
+
const client = await openAuthorityClient({
|
|
284
|
+
server, space, dataAccount,
|
|
285
|
+
label: `cotal:ep-cancel:${space}`,
|
|
286
|
+
principal: { owner: INFRA_OWNER, actor: opActor("epcan", opId) },
|
|
287
|
+
grants: (id) => drainCancellerGrants(space, repair.subject, id),
|
|
288
|
+
noReconnect: true, // per-call: the fence KICK must be durable, not auto-reconnected (#4)
|
|
289
|
+
log,
|
|
290
|
+
});
|
|
291
|
+
try {
|
|
292
|
+
// CREATE-ONLY (first-terminal-wins, §13.8): a racing real completion that landed first
|
|
293
|
+
// WINS and this cancel loses its create harmlessly — the drain re-reads either way.
|
|
294
|
+
const res = await publishFactCreateOnly(jetstream(client.nc), repair.subject, new TextEncoder().encode(JSON.stringify(fact)));
|
|
295
|
+
log(res.won
|
|
296
|
+
? `drain-repair: the in-flight effect was cancelled by this retirement (${repair.key}, op ${opId})`
|
|
297
|
+
: `drain-repair: the cancel for ${repair.key} lost its create (a real completion landed first); the drain re-reads the winner (op ${opId})`);
|
|
298
|
+
}
|
|
299
|
+
finally {
|
|
300
|
+
await client.close();
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
return { applyCommitFor, reconcilePoolRouteFor, cancelEffectsRouteFor };
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=drain-repair.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drain-repair.js","sourceRoot":"","sources":["../src/drain-repair.ts"],"names":[],"mappings":"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"}
|
package/dist/idp.d.ts
CHANGED
|
@@ -21,6 +21,9 @@ export interface ActorGrant {
|
|
|
21
21
|
scope?: string[];
|
|
22
22
|
/** The spawning principal (`<owner>.<actor>` dot-form), when the ledger records one. */
|
|
23
23
|
parent?: string;
|
|
24
|
+
/** The row's lifecycle UID (SPEC 13.1) — stamped into the bearer so a predecessor incarnation's
|
|
25
|
+
* still-unexpired bearer can never be minted the successor's broker authority at connect. */
|
|
26
|
+
lifecycleUid?: string;
|
|
24
27
|
}
|
|
25
28
|
export interface CreateIdpBridgeOpts {
|
|
26
29
|
/** The one IdP this bridge trusts. */
|
|
@@ -35,6 +38,22 @@ export interface CreateIdpBridgeOpts {
|
|
|
35
38
|
* it get? MUST return an {@link ActorGrant} object to allow; throw to deny. There is no
|
|
36
39
|
* allow-by-default — a hook that returns anything else fails the exchange. */
|
|
37
40
|
authorizeActor: (owner: string, actor: string) => ActorGrant | Promise<ActorGrant>;
|
|
41
|
+
/** The ROOT-credential ensure (R1, SPEC 13.1): returns the incarnation's live root credential
|
|
42
|
+
* id, minting it release-last on first exchange; throws to deny. Its result rides
|
|
43
|
+
* `act.credentialId`, which the connect arm requires against the LIVE `cred.` row. REQUIRED and
|
|
44
|
+
* construction-validated (like {@link authorizeActor}): a bridge that could mint a CLAIMLESS
|
|
45
|
+
* bearer is a silent-degrade hazard — in ANY composition that wires this public bridge without
|
|
46
|
+
* the v0.4 deny-new arm, a claimless bearer means the credential-liveness check has nothing to
|
|
47
|
+
* bite and deny-new never engages at all. The public v0.4 mint API therefore MUST NOT be able
|
|
48
|
+
* to emit a claimless shape whose safety depends on a separate component being wired. A
|
|
49
|
+
* genuinely different connect-authority model gets its own explicit constructor that still
|
|
50
|
+
* emits a conformant credential id. (`validateUserToken` stays tolerant of an absent claim so
|
|
51
|
+
* the CONNECT boundary owns the signed deny-new denial for pre-cut/forged tokens.) */
|
|
52
|
+
mintConnectCredential: (args: {
|
|
53
|
+
owner: string;
|
|
54
|
+
actor: string;
|
|
55
|
+
lifecycleUid: string;
|
|
56
|
+
}) => Promise<string>;
|
|
38
57
|
}
|
|
39
58
|
/** A successful exchange: the minted bearer plus what a caller needs to cache/refresh it. */
|
|
40
59
|
export interface ExchangeResult {
|
package/dist/idp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idp.d.ts","sourceRoot":"","sources":["../src/idp.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAGvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAA4D,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1G;wCACwC;AACxC,MAAM,WAAW,SAAS;IACxB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB;4FACwF;IACxF,GAAG,EAAE,eAAe,GAAG,SAAS,CAAC;IACjC,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;eAEe;AACf,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"idp.d.ts","sourceRoot":"","sources":["../src/idp.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,MAAM,CAAC;AAGvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAA4D,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAE1G;wCACwC;AACxC,MAAM,WAAW,SAAS;IACxB,4EAA4E;IAC5E,MAAM,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB;4FACwF;IACxF,GAAG,EAAE,eAAe,GAAG,SAAS,CAAC;IACjC,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;eAEe;AACf,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,wFAAwF;IACxF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;kGAC8F;IAC9F,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,sCAAsC;IACtC,GAAG,EAAE,SAAS,CAAC;IACf,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,WAAW,EAAE,MAAM,GAAG,UAAU,CAAC;IACjC,sDAAsD;IACtD,MAAM,EAAE,eAAe,CAAC;IACxB;;mFAE+E;IAC/E,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnF;;;;;;;;;;2FAUuF;IACvF,qBAAqB,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAC1G;AAED,6FAA6F;AAC7F,MAAM,WAAW,cAAc;IAC7B,8EAA8E;IAC9E,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,SAAS;IACxB;;;;uEAImE;IACnE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,aAAa,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;CACpH;AAkCD;gFACgF;AAChF,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS,CA4EpE"}
|
package/dist/idp.js
CHANGED
|
@@ -74,6 +74,8 @@ export function createIdpBridge(opts) {
|
|
|
74
74
|
throw new Error("idp bridge: idp.key (the pinned JWKS resolver / public key) is required");
|
|
75
75
|
if (typeof opts.authorizeActor !== "function")
|
|
76
76
|
throw new Error("idp bridge: an authorizeActor ledger hook is required - there is no allow-by-default");
|
|
77
|
+
if (typeof opts.mintConnectCredential !== "function")
|
|
78
|
+
throw new Error("idp bridge: a mintConnectCredential hook is required (SPEC 13.1, R1) - the v0.4 bridge must stamp every bearer's incarnation root credential; a claimless mint would silently disable deny-new in any composition without the connect arm");
|
|
77
79
|
return {
|
|
78
80
|
exchange: async (idpToken, req) => {
|
|
79
81
|
assertValidOwnerToken(req.actor);
|
|
@@ -97,6 +99,13 @@ export function createIdpBridge(opts) {
|
|
|
97
99
|
throw new Error(`the "${req.view}" view needs scope "${need}", which your grant lacks. Ask the mesh operator to re-grant with "${need}" ADDED to your current scope: ` +
|
|
98
100
|
`cotal actor grant ${req.actor} --owner ${owner} --scope ${[...(grant.scope ?? []), need].join(",")} (the upsert replaces the scope list; the operator can confirm with \`cotal actor list\`)`);
|
|
99
101
|
}
|
|
102
|
+
// Lifecycle-BIND every human bearer at the MINT boundary (SPEC 13.1), views included: the
|
|
103
|
+
// grant row's uid rides act.lifecycleUid and the callout requires exact equality with the
|
|
104
|
+
// CURRENT row at every connect, so a predecessor's still-unexpired bearer (agent OR
|
|
105
|
+
// elevated view) dies at the alias's re-grant. A grant without a uid is a pre-cut row and
|
|
106
|
+
// cannot mint - minting claimless would only defer the same refusal to every connect.
|
|
107
|
+
if (typeof grant.lifecycleUid !== "string" || !grant.lifecycleUid)
|
|
108
|
+
throw new Error(`idp bridge: the grant for actor "${req.actor}" carries no lifecycleUid - re-grant it (bearers are lifecycle-bound from v0.4)`);
|
|
100
109
|
// Cap the minted bearer's lifetime to the IdP proof's REMAINING life: the Cotal bearer must not
|
|
101
110
|
// outlive the session proof it rests on. Otherwise a near-expired (or stolen just-before-expiry)
|
|
102
111
|
// IdP JWT would exchange for a full MAX_TOKEN_TTL_SEC bearer, widening authority past the upstream
|
|
@@ -106,12 +115,20 @@ export function createIdpBridge(opts) {
|
|
|
106
115
|
if (idpRemaining <= 0)
|
|
107
116
|
throw new Error("idp bridge: the IdP session proof has expired - cannot mint a bearer");
|
|
108
117
|
const ttlSec = Math.min(req.ttlSec ?? MAX_TOKEN_TTL_SEC, idpRemaining);
|
|
118
|
+
// Credential-BIND the bearer (SPEC 13.1, R1): the incarnation's live root credential id
|
|
119
|
+
// rides act.credentialId — ensured (minted release-last on first exchange) BEFORE the
|
|
120
|
+
// bearer bytes are signed, so the row the connect arm requires is durable before any
|
|
121
|
+
// bearer naming it exists. Views included: EVERY bearer carries the claim. The hook is
|
|
122
|
+
// required at construction, so this never mints a claimless bearer.
|
|
123
|
+
const credentialId = await opts.mintConnectCredential({ owner, actor: req.actor, lifecycleUid: grant.lifecycleUid });
|
|
109
124
|
const token = await opts.issuer.issue({
|
|
110
125
|
owner,
|
|
111
126
|
space: opts.space,
|
|
112
127
|
actor: req.actor,
|
|
113
128
|
scope: grant.scope,
|
|
114
129
|
parent: grant.parent,
|
|
130
|
+
lifecycleUid: grant.lifecycleUid,
|
|
131
|
+
credentialId,
|
|
115
132
|
view: req.view,
|
|
116
133
|
ttlSec,
|
|
117
134
|
});
|
package/dist/idp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"idp.js","sourceRoot":"","sources":["../src/idp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,mBAAmB,EAAsB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"idp.js","sourceRoot":"","sources":["../src/idp.ts"],"names":[],"mappings":"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"}
|