@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.
Files changed (95) hide show
  1. package/dist/admission-mediator.d.ts +319 -0
  2. package/dist/admission-mediator.d.ts.map +1 -0
  3. package/dist/admission-mediator.js +1033 -0
  4. package/dist/admission-mediator.js.map +1 -0
  5. package/dist/auth-admin.d.ts +29 -0
  6. package/dist/auth-admin.d.ts.map +1 -0
  7. package/dist/auth-admin.js +224 -0
  8. package/dist/auth-admin.js.map +1 -0
  9. package/dist/authority-client.d.ts +215 -0
  10. package/dist/authority-client.d.ts.map +1 -0
  11. package/dist/authority-client.js +346 -0
  12. package/dist/authority-client.js.map +1 -0
  13. package/dist/barrier-evict.d.ts +16 -0
  14. package/dist/barrier-evict.d.ts.map +1 -0
  15. package/dist/barrier-evict.js +100 -0
  16. package/dist/barrier-evict.js.map +1 -0
  17. package/dist/connect-reader.d.ts +72 -0
  18. package/dist/connect-reader.d.ts.map +1 -0
  19. package/dist/connect-reader.js +154 -0
  20. package/dist/connect-reader.js.map +1 -0
  21. package/dist/continuity.d.ts.map +1 -1
  22. package/dist/continuity.js +3 -0
  23. package/dist/continuity.js.map +1 -1
  24. package/dist/credential-ledger.d.ts +343 -0
  25. package/dist/credential-ledger.d.ts.map +1 -0
  26. package/dist/credential-ledger.js +732 -0
  27. package/dist/credential-ledger.js.map +1 -0
  28. package/dist/drain-repair.d.ts +95 -0
  29. package/dist/drain-repair.d.ts.map +1 -0
  30. package/dist/drain-repair.js +305 -0
  31. package/dist/drain-repair.js.map +1 -0
  32. package/dist/idp.d.ts +19 -0
  33. package/dist/idp.d.ts.map +1 -1
  34. package/dist/idp.js +17 -0
  35. package/dist/idp.js.map +1 -1
  36. package/dist/index.d.ts +5 -2
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +29 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/issuer.d.ts +8 -0
  41. package/dist/issuer.d.ts.map +1 -1
  42. package/dist/issuer.js +4 -2
  43. package/dist/issuer.js.map +1 -1
  44. package/dist/ledger-scanner.d.ts +98 -0
  45. package/dist/ledger-scanner.d.ts.map +1 -0
  46. package/dist/ledger-scanner.js +352 -0
  47. package/dist/ledger-scanner.js.map +1 -0
  48. package/dist/ledger.d.ts +7 -0
  49. package/dist/ledger.d.ts.map +1 -1
  50. package/dist/ledger.js +53 -5
  51. package/dist/ledger.js.map +1 -1
  52. package/dist/lifecycle-registry.d.ts +397 -0
  53. package/dist/lifecycle-registry.d.ts.map +1 -0
  54. package/dist/lifecycle-registry.js +819 -0
  55. package/dist/lifecycle-registry.js.map +1 -0
  56. package/dist/permissions.d.ts +5 -1
  57. package/dist/permissions.d.ts.map +1 -1
  58. package/dist/permissions.js +29 -6
  59. package/dist/permissions.js.map +1 -1
  60. package/dist/plane-claim.d.ts +83 -0
  61. package/dist/plane-claim.d.ts.map +1 -0
  62. package/dist/plane-claim.js +290 -0
  63. package/dist/plane-claim.js.map +1 -0
  64. package/dist/provider.d.ts.map +1 -1
  65. package/dist/provider.js +2 -1
  66. package/dist/provider.js.map +1 -1
  67. package/dist/records-scanner.d.ts +78 -0
  68. package/dist/records-scanner.d.ts.map +1 -0
  69. package/dist/records-scanner.js +320 -0
  70. package/dist/records-scanner.js.map +1 -0
  71. package/dist/retirement-barrier.d.ts +217 -0
  72. package/dist/retirement-barrier.d.ts.map +1 -0
  73. package/dist/retirement-barrier.js +624 -0
  74. package/dist/retirement-barrier.js.map +1 -0
  75. package/dist/retirement-cleaner.d.ts +54 -0
  76. package/dist/retirement-cleaner.d.ts.map +1 -0
  77. package/dist/retirement-cleaner.js +158 -0
  78. package/dist/retirement-cleaner.js.map +1 -0
  79. package/dist/root-credential.d.ts +26 -0
  80. package/dist/root-credential.d.ts.map +1 -0
  81. package/dist/root-credential.js +116 -0
  82. package/dist/root-credential.js.map +1 -0
  83. package/dist/service.d.ts +60 -0
  84. package/dist/service.d.ts.map +1 -1
  85. package/dist/service.js +317 -10
  86. package/dist/service.js.map +1 -1
  87. package/dist/session-ledger.d.ts +224 -0
  88. package/dist/session-ledger.d.ts.map +1 -0
  89. package/dist/session-ledger.js +713 -0
  90. package/dist/session-ledger.js.map +1 -0
  91. package/dist/token.d.ts +17 -0
  92. package/dist/token.d.ts.map +1 -1
  93. package/dist/token.js +30 -2
  94. package/dist/token.js.map +1 -1
  95. 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;CACjB;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;CACpF;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,CAyDpE"}
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;AA2D1G;;;qGAGqG;AACrG,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,GAAc;IACzD,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS;QAC9G,MAAM,IAAI,KAAK,CAAC,wGAAwG,CAAC,CAAC;IAC5H,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAExG,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACvC,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,GAAsB,EAAE;QACrE,UAAU,EAAE,CAAC,OAAO,CAAC;QACrB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,cAAc,EAAE,GAAG;KACpB,CAAC,CAAC;IAEH,yFAAyF;IACzF,+FAA+F;IAC/F,6FAA6F;IAC7F,4BAA4B;IAC5B,IAAI,OAAO,CAAC,GAAG,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC;QAC9H,MAAM,IAAI,KAAK,CAAC,qGAAqG,CAAC,CAAC;IACzH,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;IACtH,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IACnF,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IAC1G,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,GAAG;QACjD,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;IACzG,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;AAChD,CAAC;AAED;gFACgF;AAChF,MAAM,UAAU,eAAe,CAAC,IAAyB;IACvD,IAAI,CAAC,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACpE,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,MAAM,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM;QAC1D,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;IAC5E,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ;QAC7D,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC9G,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,UAAU;QAC3C,MAAM,IAAI,KAAK,CAAC,sFAAsF,CAAC,CAAC;IAC1G,OAAO;QACL,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE;YAChC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACtE,+FAA+F;YAC/F,+FAA+F;YAC/F,+DAA+D;YAC/D,MAAM,KAAK,GAAG,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC/E,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrE,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;YACrG,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC3B,oFAAoF;gBACpF,yFAAyF;gBACzF,mFAAmF;gBACnF,mBAAmB;gBACnB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC;oBACtC,MAAM,IAAI,KAAK,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrG,MAAM,IAAI,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3C,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACrC,MAAM,IAAI,KAAK,CACb,QAAQ,GAAG,CAAC,IAAI,uBAAuB,IAAI,sEAAsE,IAAI,iCAAiC;wBACpJ,qBAAqB,GAAG,CAAC,KAAK,YAAY,KAAK,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,4FAA4F,CAClM,CAAC;YACN,CAAC;YACD,gGAAgG;YAChG,iGAAiG;YACjG,mGAAmG;YACnG,kGAAkG;YAClG,0CAA0C;YAC1C,MAAM,YAAY,GAAG,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC5D,IAAI,YAAY,IAAI,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;YAC1F,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,iBAAiB,EAAE,YAAY,CAAC,CAAC;YACvE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpC,KAAK;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;gBACpB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM;aACP,CAAC,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;YACjC,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;YACpH,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"idp.js","sourceRoot":"","sources":["../src/idp.ts"],"names":[],"mappings":"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"}