@cotal-ai/core 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 (152) hide show
  1. package/dist/acls.d.ts +31 -7
  2. package/dist/acls.d.ts.map +1 -1
  3. package/dist/acls.js +105 -17
  4. package/dist/acls.js.map +1 -1
  5. package/dist/agent-file.js +1 -1
  6. package/dist/agent-file.js.map +1 -1
  7. package/dist/auth-provider.d.ts +8 -0
  8. package/dist/auth-provider.d.ts.map +1 -1
  9. package/dist/auth-provider.js.map +1 -1
  10. package/dist/backup.d.ts.map +1 -1
  11. package/dist/backup.js +6 -4
  12. package/dist/backup.js.map +1 -1
  13. package/dist/broker-floor.d.ts +34 -0
  14. package/dist/broker-floor.d.ts.map +1 -0
  15. package/dist/broker-floor.js +39 -0
  16. package/dist/broker-floor.js.map +1 -0
  17. package/dist/canonical.d.ts +24 -0
  18. package/dist/canonical.d.ts.map +1 -0
  19. package/dist/canonical.js +159 -0
  20. package/dist/canonical.js.map +1 -0
  21. package/dist/connector.d.ts +4 -0
  22. package/dist/connector.d.ts.map +1 -1
  23. package/dist/endpoint-action.d.ts +424 -0
  24. package/dist/endpoint-action.d.ts.map +1 -0
  25. package/dist/endpoint-action.js +910 -0
  26. package/dist/endpoint-action.js.map +1 -0
  27. package/dist/endpoint-binding.d.ts +344 -0
  28. package/dist/endpoint-binding.d.ts.map +1 -0
  29. package/dist/endpoint-binding.js +753 -0
  30. package/dist/endpoint-binding.js.map +1 -0
  31. package/dist/endpoint-checkpoint.d.ts +292 -0
  32. package/dist/endpoint-checkpoint.d.ts.map +1 -0
  33. package/dist/endpoint-checkpoint.js +818 -0
  34. package/dist/endpoint-checkpoint.js.map +1 -0
  35. package/dist/endpoint-cluster.d.ts +95 -0
  36. package/dist/endpoint-cluster.d.ts.map +1 -0
  37. package/dist/endpoint-cluster.js +194 -0
  38. package/dist/endpoint-cluster.js.map +1 -0
  39. package/dist/endpoint-contract-store.d.ts +90 -0
  40. package/dist/endpoint-contract-store.d.ts.map +1 -0
  41. package/dist/endpoint-contract-store.js +348 -0
  42. package/dist/endpoint-contract-store.js.map +1 -0
  43. package/dist/endpoint-envelope.d.ts +165 -0
  44. package/dist/endpoint-envelope.d.ts.map +1 -0
  45. package/dist/endpoint-envelope.js +346 -0
  46. package/dist/endpoint-envelope.js.map +1 -0
  47. package/dist/endpoint-grants.d.ts +123 -0
  48. package/dist/endpoint-grants.d.ts.map +1 -0
  49. package/dist/endpoint-grants.js +215 -0
  50. package/dist/endpoint-grants.js.map +1 -0
  51. package/dist/endpoint-guard.d.ts +222 -0
  52. package/dist/endpoint-guard.d.ts.map +1 -0
  53. package/dist/endpoint-guard.js +468 -0
  54. package/dist/endpoint-guard.js.map +1 -0
  55. package/dist/endpoint-handle.d.ts +176 -0
  56. package/dist/endpoint-handle.d.ts.map +1 -0
  57. package/dist/endpoint-handle.js +608 -0
  58. package/dist/endpoint-handle.js.map +1 -0
  59. package/dist/endpoint-journal.d.ts +225 -0
  60. package/dist/endpoint-journal.d.ts.map +1 -0
  61. package/dist/endpoint-journal.js +431 -0
  62. package/dist/endpoint-journal.js.map +1 -0
  63. package/dist/endpoint-receipt.d.ts +225 -0
  64. package/dist/endpoint-receipt.d.ts.map +1 -0
  65. package/dist/endpoint-receipt.js +417 -0
  66. package/dist/endpoint-receipt.js.map +1 -0
  67. package/dist/endpoint-records.d.ts +243 -0
  68. package/dist/endpoint-records.d.ts.map +1 -0
  69. package/dist/endpoint-records.js +591 -0
  70. package/dist/endpoint-records.js.map +1 -0
  71. package/dist/endpoint-serve.d.ts +176 -0
  72. package/dist/endpoint-serve.d.ts.map +1 -0
  73. package/dist/endpoint-serve.js +446 -0
  74. package/dist/endpoint-serve.js.map +1 -0
  75. package/dist/endpoint-service.d.ts +518 -0
  76. package/dist/endpoint-service.d.ts.map +1 -0
  77. package/dist/endpoint-service.js +973 -0
  78. package/dist/endpoint-service.js.map +1 -0
  79. package/dist/endpoint-session.d.ts +398 -0
  80. package/dist/endpoint-session.d.ts.map +1 -0
  81. package/dist/endpoint-session.js +834 -0
  82. package/dist/endpoint-session.js.map +1 -0
  83. package/dist/endpoint-signing.d.ts +105 -0
  84. package/dist/endpoint-signing.d.ts.map +1 -0
  85. package/dist/endpoint-signing.js +190 -0
  86. package/dist/endpoint-signing.js.map +1 -0
  87. package/dist/endpoint-subjects.d.ts +222 -0
  88. package/dist/endpoint-subjects.d.ts.map +1 -0
  89. package/dist/endpoint-subjects.js +381 -0
  90. package/dist/endpoint-subjects.js.map +1 -0
  91. package/dist/endpoint-supervisor.d.ts +19 -0
  92. package/dist/endpoint-supervisor.d.ts.map +1 -0
  93. package/dist/endpoint-supervisor.js +12 -0
  94. package/dist/endpoint-supervisor.js.map +1 -0
  95. package/dist/endpoint-traits.d.ts +225 -0
  96. package/dist/endpoint-traits.d.ts.map +1 -0
  97. package/dist/endpoint-traits.js +469 -0
  98. package/dist/endpoint-traits.js.map +1 -0
  99. package/dist/endpoint-verbs.d.ts +277 -0
  100. package/dist/endpoint-verbs.d.ts.map +1 -0
  101. package/dist/endpoint-verbs.js +576 -0
  102. package/dist/endpoint-verbs.js.map +1 -0
  103. package/dist/endpoint-virtual.d.ts +308 -0
  104. package/dist/endpoint-virtual.d.ts.map +1 -0
  105. package/dist/endpoint-virtual.js +440 -0
  106. package/dist/endpoint-virtual.js.map +1 -0
  107. package/dist/endpoint-work.d.ts +304 -0
  108. package/dist/endpoint-work.d.ts.map +1 -0
  109. package/dist/endpoint-work.js +728 -0
  110. package/dist/endpoint-work.js.map +1 -0
  111. package/dist/endpoint.d.ts +66 -22
  112. package/dist/endpoint.d.ts.map +1 -1
  113. package/dist/endpoint.js +289 -89
  114. package/dist/endpoint.js.map +1 -1
  115. package/dist/evict.d.ts +95 -32
  116. package/dist/evict.d.ts.map +1 -1
  117. package/dist/evict.js +193 -3
  118. package/dist/evict.js.map +1 -1
  119. package/dist/index.d.ts +25 -0
  120. package/dist/index.d.ts.map +1 -1
  121. package/dist/index.js +25 -0
  122. package/dist/index.js.map +1 -1
  123. package/dist/lease.d.ts +4 -0
  124. package/dist/lease.d.ts.map +1 -1
  125. package/dist/lease.js.map +1 -1
  126. package/dist/members.d.ts +4 -4
  127. package/dist/members.d.ts.map +1 -1
  128. package/dist/members.js +12 -12
  129. package/dist/members.js.map +1 -1
  130. package/dist/provision.d.ts +70 -18
  131. package/dist/provision.d.ts.map +1 -1
  132. package/dist/provision.js +194 -33
  133. package/dist/provision.js.map +1 -1
  134. package/dist/safe-pattern.d.ts +33 -0
  135. package/dist/safe-pattern.d.ts.map +1 -0
  136. package/dist/safe-pattern.js +486 -0
  137. package/dist/safe-pattern.js.map +1 -0
  138. package/dist/schema-profile.d.ts +93 -0
  139. package/dist/schema-profile.d.ts.map +1 -0
  140. package/dist/schema-profile.js +284 -0
  141. package/dist/schema-profile.js.map +1 -0
  142. package/dist/streams.d.ts +13 -8
  143. package/dist/streams.d.ts.map +1 -1
  144. package/dist/streams.js +35 -18
  145. package/dist/streams.js.map +1 -1
  146. package/dist/subjects.d.ts +100 -40
  147. package/dist/subjects.d.ts.map +1 -1
  148. package/dist/subjects.js +136 -60
  149. package/dist/subjects.js.map +1 -1
  150. package/dist/types.d.ts +9 -0
  151. package/dist/types.d.ts.map +1 -1
  152. package/package.json +3 -1
package/dist/evict.d.ts CHANGED
@@ -1,35 +1,3 @@
1
- /**
2
- * D5 slice 4 — BROKER-BACKED LIVE CONNECTION EVICTION.
3
- *
4
- * Revocation has two halves. DENY-NEW (ledger revoke, cred expiry, stripped signer, ACL removal)
5
- * stops the next exchange/connect — but a client that is ALREADY connected with a still-valid JWT
6
- * keeps its live core subscriptions until that JWT expires. KILL-LIVE closes that window now:
7
- * `$SYS.REQ.SERVER.<serverID>.KICK {cid}` disconnects one live client by connection id.
8
- *
9
- * This module is the kill-live primitive and its two credentials, kept deliberately small (the
10
- * simplicity-lane shape: one eviction path, not a parallel subsystem):
11
- * - the OBSERVER read (account CONNZ, `auth:true`) projected to `{cid, serverId, principal}` — a
12
- * DIFFERENT projection than the membership feed's channel-folding (it keeps cid+serverId, which
13
- * the feed discards), so it is its own tiny scan, not duplicated filtering;
14
- * - the kill: `evictPrincipal(observerConn, evictorConn, accountId, principal)` = scan → KICK each
15
- * matching cid on the SERVER THE CID CAME FROM → re-scan to verify, bounded, structured.
16
- *
17
- * Two credentials by design (never one broad sys user that both enumerates and kills):
18
- * - the existing `membership-observer` (CONNZ-read only) does discovery;
19
- * - a NEW kick-only evictor (`$SYS.REQ.SERVER.*.KICK` and nothing else) does the kill.
20
- * Both are system-account users mintable ONLY at the `up` that provisions the account (the $SYS
21
- * signing seed is never persisted) — so the evictor is a standing, high-power, renewable credential,
22
- * classified with the observer, surfaced by the stale-auth diagnostics when absent.
23
- *
24
- * SEMANTICS, stated in the result (never inferred):
25
- * - KICK has NO per-cid ack, so success is proven only by a re-scan showing the principal gone.
26
- * - A PARTIAL/unavailable CONNZ read is `verifiedGone:false` with `scanComplete:false` — NEVER a
27
- * silent success (the membership feed's truthium rule; a caller/flip gate stays blocked).
28
- * - "principal not currently live" is a no-op SUCCESS (`kicked:0, remaining:0, verifiedGone:true`)
29
- * — idempotent, so repair/doctor tooling never needs "already gone" special-casing.
30
- * - This is ALWAYS paired with a committed deny-new by the caller: a kicked client reconnects with
31
- * a fresh cid until its cred dies, so an evict-only loop would chase churn. The name says so.
32
- */
33
1
  import { type NatsConnection } from "@nats-io/transport-node";
34
2
  /** The structured outcome of an eviction attempt — every field a repair/flip gate reads to decide
35
3
  * "done" vs "blocked". `verifiedGone` is the ONLY success signal; it is true only when a COMPLETE
@@ -71,6 +39,101 @@ export interface EvictOptions {
71
39
  * connects; without a committed deny-new a kicked client reconnects with a fresh cid.
72
40
  */
73
41
  export declare function evictDeniedPrincipal(observerConn: NatsConnection, evictorConn: NatsConnection, accountId: string, principal: string, options?: EvictOptions): Promise<EvictionResult>;
42
+ /** One plane-owned connection's broker identity, captured at connect from the protocol INFO and
43
+ * pinned in the auth plane's durable claim row. `serverId` is the broker RUN's ephemeral id (a
44
+ * restart mints a new one), `cid` is that server's connection id, `userNkey` is the connection's
45
+ * stable user public key (the self-minted authority identity). */
46
+ export interface PlaneConnTuple {
47
+ serverId: string;
48
+ cid: number;
49
+ userNkey: string;
50
+ }
51
+ /** The closed plane-liveness query: exactly the TWO ownership-bearing sealed-scanner tuples out of
52
+ * the plane claim row — never a generic CONNZ filter (the delivery daemon derives the allowed
53
+ * connection labels from its own space; a caller cannot probe arbitrary connections). */
54
+ export interface PlaneLivenessQuery {
55
+ ledger: PlaneConnTuple;
56
+ records: PlaneConnTuple;
57
+ }
58
+ /** Per-role verdict. `live` = the claimed identity (or its user nkey anywhere) is connected NOW;
59
+ * `gone` = a COMPLETE sweep conclusively proves it absent; `unknown` = the observation cannot
60
+ * decide (incomplete sweep) — a caller MUST treat unknown as "may still be live" (refuse
61
+ * takeover), never as gone. */
62
+ export type PlaneRoleLiveness = "live" | "gone" | "unknown";
63
+ /** The oracle's bound reply: each queried tuple echoed with its verdict (a reply that does not
64
+ * echo the caller's exact query never authorizes), plus `sweepComplete` — CONNZ OBSERVATION
65
+ * completeness (every round replied, no truncation), NEVER any statement about a sealed scan
66
+ * having finished (the critic's mid-scan-crash wedge; reclaim gates on liveness alone). */
67
+ export interface PlaneLivenessResult {
68
+ ledger: {
69
+ tuple: PlaneConnTuple;
70
+ state: PlaneRoleLiveness;
71
+ };
72
+ records: {
73
+ tuple: PlaneConnTuple;
74
+ state: PlaneRoleLiveness;
75
+ };
76
+ sweepComplete: boolean;
77
+ note?: string;
78
+ }
79
+ /** Structural tuple validation (closed parse — the wire crosses a trust boundary in BOTH
80
+ * directions: the daemon validates the query, the auth plane validates the echo). CLOSED schema:
81
+ * an unknown field refuses (a v1 tuple is exactly these three keys). */
82
+ export declare function isPlaneConnTuple(v: unknown): v is PlaneConnTuple;
83
+ /** Closed parse of a wire-crossing {@link PlaneLivenessResult} (the auth plane validates the
84
+ * delivery-admin rail's reply BEFORE reasoning over it): exactly the v1 keys, both role objects
85
+ * exactly `{ tuple, state }`, states in the enum, tuples closed. Undefined on ANY violation — the
86
+ * caller maps that to `unknown` (a garbled oracle must block takeover, never authorize it). */
87
+ export declare function parsePlaneLivenessResult(v: unknown): PlaneLivenessResult | undefined;
88
+ /**
89
+ * Answer a plane-liveness query over the account's live connections (the delivery daemon's
90
+ * read-only half of the #29 HIGH 3 reclaim protocol; observer cred only, no KICK). Verdict rules,
91
+ * fail-safe by construction:
92
+ *
93
+ * - `live`: a connection carrying the claimed `userNkey` exists ANYWHERE (any server, any cid —
94
+ * wider than the exact tuple on purpose: an identity that still holds ANY connection must block
95
+ * takeover), or the exact `(serverId, cid)` pair is present.
96
+ * - `gone`: the sweep is COMPLETE, the observation PROVES the single-server mode, and the claimed
97
+ * `userNkey` appears nowhere. This includes the claimed `serverId` being absent from the
98
+ * repliers entirely: `server_id` is per-broker-RUN, so after a broker restart the claimed
99
+ * incarnation can never reply again while every connection it held is gone by definition —
100
+ * requiring its reply forever would turn every whole-stack crash into a permanent reclaim
101
+ * wedge (the inverted-lockout class).
102
+ *
103
+ * THE SINGLE-SERVER PROOF (SPEC 13.13): CONNZ absence alone cannot distinguish a RESTARTED
104
+ * claimed server (genuinely gone) from a PARTITIONED one (live, unreachable) — both present as
105
+ * "the claimed serverId did not reply". The discriminator is the responding server's OWN
106
+ * topology declaration, never an inference from who replied: `gone` additionally requires that
107
+ * EVERY reply carried a server envelope declaring NO cluster membership (`server.cluster`
108
+ * absent — nats-server sets it, config-named or dynamically generated, whenever clustering is
109
+ * configured) and that exactly ONE distinct server replied. A standalone process cannot have a
110
+ * silent same-cluster peer holding the claimed connection, so its complete reply is the whole
111
+ * truth; a partitioned cluster member still DECLARES its cluster and reads `unknown`. NAMED
112
+ * RESIDUALS: a leafnode/gateway-extended account is outside the cluster self-report (such
113
+ * topologies are out of contract for the auth account until a multi-server incarnation
114
+ * authority exists), and a backup-restore onto a fresh broker can present a still-running
115
+ * foreign predecessor's `serverId` as dead.
116
+ * - `unknown`: the sweep under-reported (no replies, truncation, an unroutable row) OR the
117
+ * single-server mode is unproven (a cluster self-report, multiple repliers, or a reply without
118
+ * the server envelope) — the caller refuses takeover.
119
+ *
120
+ * Closed surface: the CONNZ request carries no caller-selected filter (account-wide sweep only)
121
+ * and the reply exposes ONLY the two bound verdicts + sweep completeness — never a connection
122
+ * listing. A row matching the claimed nkey under ANY connection name counts live (fail safe);
123
+ * the residual "is this nkey connected" bit the verb leaks is strictly weaker than the kick
124
+ * authority the same rail already carries.
125
+ */
126
+ export declare function observePlaneLiveness(observerConn: NatsConnection, accountId: string, query: PlaneLivenessQuery, options?: EvictOptions): Promise<PlaneLivenessResult>;
127
+ /** Creds-level wrapper for the delivery daemon's admin-rail plane-liveness verb: open the $SYS
128
+ * observer PER CALL (the eviction seam's rule — never a standing $SYS connection), run
129
+ * {@link observePlaneLiveness}, drain. Read-only: no evictor cred enters this path. */
130
+ export declare function observePlaneLivenessWithCreds(opts: {
131
+ servers: string;
132
+ observerCreds: string;
133
+ accountId: string;
134
+ query: PlaneLivenessQuery;
135
+ options?: EvictOptions;
136
+ }): Promise<PlaneLivenessResult>;
74
137
  /** Creds-level wrapper for composition roots that hold the two $SYS creds as FILES/strings (the
75
138
  * delivery daemon's admin-rail executor): open the observer (under its granted inbox prefix) and
76
139
  * the kick-only evictor PER CALL, run {@link evictDeniedPrincipal}, and drain both — eviction is a
@@ -1 +1 @@
1
- {"version":3,"file":"evict.d.ts","sourceRoot":"","sources":["../src/evict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAA+B,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AA0B3F;;sDAEsD;AACtD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,qGAAqG;IACrG,SAAS,EAAE,MAAM,CAAC;IAClB;0FACsF;IACtF,YAAY,EAAE,OAAO,CAAC;IACtB;sDACkD;IAClD,YAAY,EAAE,OAAO,CAAC;IACtB,+FAA+F;IAC/F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;6CAC6C;AAC7C,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4GD;;;;;;;;;GASG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,cAAc,EAC5B,WAAW,EAAE,cAAc,EAC3B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,cAAc,CAAC,CA4CzB;AAED;;;;qGAIqG;AACrG,wBAAsB,6BAA6B,CAAC,IAAI,EAAE;IACxD,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsB1B"}
1
+ {"version":3,"file":"evict.d.ts","sourceRoot":"","sources":["../src/evict.ts"],"names":[],"mappings":"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"}
package/dist/evict.js CHANGED
@@ -30,6 +30,7 @@
30
30
  * - This is ALWAYS paired with a committed deny-new by the caller: a kicked client reconnects with
31
31
  * a fresh cid until its cred dies, so an evict-only loop would chase churn. The name says so.
32
32
  */
33
+ import { randomUUID } from "node:crypto";
33
34
  import { connect, credsAuthenticator } from "@nats-io/transport-node";
34
35
  import { connzRequestSubject, principalFromConnz, serverKickSubject, MEMBERSHIP_INBOX_PREFIX } from "./subjects.js";
35
36
  const enc = (s) => new TextEncoder().encode(s);
@@ -44,10 +45,11 @@ async function scanLive(observerConn, accountId, opts) {
44
45
  let gotAnyReply = false;
45
46
  let truncated = false;
46
47
  let unroutable = false; // a reply named no server id → its conns can't be KICKed → scan is not complete
48
+ const sweep = randomUUID(); // per-sweep reply-inbox nonce: concurrent sweeps must never cross-talk
47
49
  let seq = 0;
48
50
  for (let page = 0; page < MAX_PAGES; page++) {
49
51
  const offset = page * opts.pageLimit;
50
- const replies = await connzRound(observerConn, accountId, offset, opts, seq++);
52
+ const replies = await connzRound(observerConn, accountId, offset, opts, sweep, seq++);
51
53
  if (replies.length)
52
54
  gotAnyReply = true;
53
55
  let fullPageSomewhere = false;
@@ -88,12 +90,15 @@ async function scanLive(observerConn, accountId, opts) {
88
90
  return { conns, complete: gotAnyReply && !truncated && !unroutable };
89
91
  }
90
92
  /** One CONNZ round: fan out the account request, collect every server's reply within the window. */
91
- function connzRound(observerConn, accountId, offset, opts, seq) {
93
+ function connzRound(observerConn, accountId, offset, opts, sweep, seq) {
92
94
  return new Promise((resolve) => {
93
95
  // The reply inbox MUST sit under the prefix the observer cred (`membership-observer`) grants sub
94
96
  // on — its ACL allows only `${MEMBERSHIP_INBOX_PREFIX}.>`, so a distinct `_INBOX.cotal-evict.*`
95
97
  // subject is broker-denied and the scan gets ZERO replies (a fail-closed under-report).
96
- const inbox = `${MEMBERSHIP_INBOX_PREFIX}.evict.${seq}`;
98
+ // `sweep` is a per-call collision-resistant nonce: concurrent sweeps (a plane reclaim next to an
99
+ // eviction verify) subscribe to DISJOINT inboxes, so one sweep's page reply can never satisfy —
100
+ // or falsely complete — another's round.
101
+ const inbox = `${MEMBERSHIP_INBOX_PREFIX}.evict.${sweep}.${seq}`;
97
102
  const out = [];
98
103
  let settle;
99
104
  let done = false;
@@ -198,6 +203,191 @@ export async function evictDeniedPrincipal(observerConn, evictorConn, accountId,
198
203
  // Unreachable (the loop returns), but satisfies the type checker.
199
204
  return { principal, kicked, remaining: 0, verifiedGone: false, scanComplete: true, note };
200
205
  }
206
+ /** Structural tuple validation (closed parse — the wire crosses a trust boundary in BOTH
207
+ * directions: the daemon validates the query, the auth plane validates the echo). CLOSED schema:
208
+ * an unknown field refuses (a v1 tuple is exactly these three keys). */
209
+ export function isPlaneConnTuple(v) {
210
+ if (v === null || typeof v !== "object")
211
+ return false;
212
+ for (const k of Object.keys(v))
213
+ if (k !== "serverId" && k !== "cid" && k !== "userNkey")
214
+ return false;
215
+ const t = v;
216
+ return (typeof t.serverId === "string" && t.serverId.length > 0 && t.serverId.length <= 128 &&
217
+ typeof t.cid === "number" && Number.isSafeInteger(t.cid) && t.cid > 0 &&
218
+ typeof t.userNkey === "string" && /^U[A-Z2-7]{55}$/.test(t.userNkey));
219
+ }
220
+ /** Closed parse of a wire-crossing {@link PlaneLivenessResult} (the auth plane validates the
221
+ * delivery-admin rail's reply BEFORE reasoning over it): exactly the v1 keys, both role objects
222
+ * exactly `{ tuple, state }`, states in the enum, tuples closed. Undefined on ANY violation — the
223
+ * caller maps that to `unknown` (a garbled oracle must block takeover, never authorize it). */
224
+ export function parsePlaneLivenessResult(v) {
225
+ if (v === null || typeof v !== "object")
226
+ return undefined;
227
+ for (const k of Object.keys(v))
228
+ if (!["ledger", "records", "sweepComplete", "note"].includes(k))
229
+ return undefined;
230
+ const r = v;
231
+ const role = (x) => {
232
+ if (x === null || typeof x !== "object")
233
+ return undefined;
234
+ for (const k of Object.keys(x))
235
+ if (k !== "tuple" && k !== "state")
236
+ return undefined;
237
+ const y = x;
238
+ if (!isPlaneConnTuple(y.tuple))
239
+ return undefined;
240
+ if (y.state !== "live" && y.state !== "gone" && y.state !== "unknown")
241
+ return undefined;
242
+ return { tuple: y.tuple, state: y.state };
243
+ };
244
+ const ledger = role(r.ledger);
245
+ const records = role(r.records);
246
+ if (ledger === undefined || records === undefined)
247
+ return undefined;
248
+ if (typeof r.sweepComplete !== "boolean")
249
+ return undefined;
250
+ if (r.note !== undefined && (typeof r.note !== "string" || r.note.length === 0 || r.note.length > 2048))
251
+ return undefined;
252
+ return { ledger, records, sweepComplete: r.sweepComplete, ...(r.note !== undefined ? { note: r.note } : {}) };
253
+ }
254
+ /**
255
+ * Answer a plane-liveness query over the account's live connections (the delivery daemon's
256
+ * read-only half of the #29 HIGH 3 reclaim protocol; observer cred only, no KICK). Verdict rules,
257
+ * fail-safe by construction:
258
+ *
259
+ * - `live`: a connection carrying the claimed `userNkey` exists ANYWHERE (any server, any cid —
260
+ * wider than the exact tuple on purpose: an identity that still holds ANY connection must block
261
+ * takeover), or the exact `(serverId, cid)` pair is present.
262
+ * - `gone`: the sweep is COMPLETE, the observation PROVES the single-server mode, and the claimed
263
+ * `userNkey` appears nowhere. This includes the claimed `serverId` being absent from the
264
+ * repliers entirely: `server_id` is per-broker-RUN, so after a broker restart the claimed
265
+ * incarnation can never reply again while every connection it held is gone by definition —
266
+ * requiring its reply forever would turn every whole-stack crash into a permanent reclaim
267
+ * wedge (the inverted-lockout class).
268
+ *
269
+ * THE SINGLE-SERVER PROOF (SPEC 13.13): CONNZ absence alone cannot distinguish a RESTARTED
270
+ * claimed server (genuinely gone) from a PARTITIONED one (live, unreachable) — both present as
271
+ * "the claimed serverId did not reply". The discriminator is the responding server's OWN
272
+ * topology declaration, never an inference from who replied: `gone` additionally requires that
273
+ * EVERY reply carried a server envelope declaring NO cluster membership (`server.cluster`
274
+ * absent — nats-server sets it, config-named or dynamically generated, whenever clustering is
275
+ * configured) and that exactly ONE distinct server replied. A standalone process cannot have a
276
+ * silent same-cluster peer holding the claimed connection, so its complete reply is the whole
277
+ * truth; a partitioned cluster member still DECLARES its cluster and reads `unknown`. NAMED
278
+ * RESIDUALS: a leafnode/gateway-extended account is outside the cluster self-report (such
279
+ * topologies are out of contract for the auth account until a multi-server incarnation
280
+ * authority exists), and a backup-restore onto a fresh broker can present a still-running
281
+ * foreign predecessor's `serverId` as dead.
282
+ * - `unknown`: the sweep under-reported (no replies, truncation, an unroutable row) OR the
283
+ * single-server mode is unproven (a cluster self-report, multiple repliers, or a reply without
284
+ * the server envelope) — the caller refuses takeover.
285
+ *
286
+ * Closed surface: the CONNZ request carries no caller-selected filter (account-wide sweep only)
287
+ * and the reply exposes ONLY the two bound verdicts + sweep completeness — never a connection
288
+ * listing. A row matching the claimed nkey under ANY connection name counts live (fail safe);
289
+ * the residual "is this nkey connected" bit the verb leaks is strictly weaker than the kick
290
+ * authority the same rail already carries.
291
+ */
292
+ export async function observePlaneLiveness(observerConn, accountId, query, options = {}) {
293
+ const opts = {
294
+ settleMs: options.settleMs ?? 250,
295
+ maxWaitMs: options.maxWaitMs ?? 2000,
296
+ pageLimit: options.pageLimit ?? 1024,
297
+ };
298
+ const conns = [];
299
+ let gotAnyReply = false;
300
+ let truncated = false;
301
+ let malformed = false;
302
+ let clusterDeclared = false; // any responder DECLARED cluster membership — single-server unproven
303
+ const repliers = new Set();
304
+ const sweep = randomUUID(); // per-sweep reply-inbox nonce: concurrent sweeps must never cross-talk
305
+ let seq = 0;
306
+ for (let page = 0; page < MAX_PAGES; page++) {
307
+ const offset = page * opts.pageLimit;
308
+ const replies = await connzRound(observerConn, accountId, offset, opts, sweep, seq++);
309
+ if (replies.length)
310
+ gotAnyReply = true;
311
+ let fullPageSomewhere = false;
312
+ for (const r of replies) {
313
+ // FAIL-CLOSED reply validation: only a SUCCESSFUL, well-formed CONNZ page may count toward a
314
+ // reclaim-authorizing sweep. An API error, a missing/empty server envelope, a present but
315
+ // non-string (or empty-string) cluster declaration, an envelope/data server-id mismatch, or a
316
+ // structurally incomplete data page each mark the sweep malformed (=> every verdict unknown).
317
+ const envId = r.server?.id;
318
+ const cluster = r.server?.cluster;
319
+ if (r.error !== undefined ||
320
+ typeof envId !== "string" || envId.length === 0 ||
321
+ (cluster !== undefined && (typeof cluster !== "string" || cluster.length === 0)) ||
322
+ (r.data?.server_id !== undefined && r.data.server_id !== envId) ||
323
+ r.data === undefined || !Array.isArray(r.data.connections) ||
324
+ typeof r.data.total !== "number" || !Number.isSafeInteger(r.data.total) || r.data.total < 0 ||
325
+ (r.data.offset !== undefined && (typeof r.data.offset !== "number" || !Number.isSafeInteger(r.data.offset) || r.data.offset < 0))) {
326
+ malformed = true;
327
+ continue;
328
+ }
329
+ const serverId = envId;
330
+ repliers.add(serverId);
331
+ if (typeof cluster === "string")
332
+ clusterDeclared = true;
333
+ const cs = r.data.connections;
334
+ for (const c of cs) {
335
+ if (typeof c.cid !== "number") {
336
+ malformed = true; // an id-less row could BE the claimed connection — fail safe
337
+ continue;
338
+ }
339
+ conns.push({ serverId, cid: c.cid, ...(typeof c.authorized_user === "string" ? { userNkey: c.authorized_user } : {}) });
340
+ }
341
+ const total = r.data.total;
342
+ if (cs.length >= opts.pageLimit && offset + cs.length < total)
343
+ fullPageSomewhere = true;
344
+ }
345
+ if (!fullPageSomewhere)
346
+ break;
347
+ if (page === MAX_PAGES - 1)
348
+ truncated = true;
349
+ }
350
+ const sweepComplete = gotAnyReply && !truncated && !malformed;
351
+ // The single-server proof (see the doc): `gone` is sound ONLY when every responder declared
352
+ // standalone topology and exactly one server replied — a declaration, never a reply-count guess.
353
+ const singleServerProven = sweepComplete && !clusterDeclared && repliers.size === 1;
354
+ const verdict = (tuple) => {
355
+ const live = conns.some((c) => c.userNkey === tuple.userNkey || (c.serverId === tuple.serverId && c.cid === tuple.cid));
356
+ if (live)
357
+ return "live";
358
+ return singleServerProven ? "gone" : "unknown";
359
+ };
360
+ const note = !sweepComplete
361
+ ? "CONNZ sweep under-reported (no responder, truncation, an API error, or a malformed reply) - liveness UNKNOWN"
362
+ : !singleServerProven
363
+ ? clusterDeclared
364
+ ? "the broker DECLARES cluster membership - a partitioned member could still hold the claimed connections, so CONNZ liveness cannot adjudicate a plane reclaim outside the single-server mode (SPEC 13.13) - liveness UNKNOWN"
365
+ : `${repliers.size} distinct servers replied - the single-server mode the reclaim verdict requires is unproven (SPEC 13.13) - liveness UNKNOWN`
366
+ : undefined;
367
+ return {
368
+ ledger: { tuple: query.ledger, state: verdict(query.ledger) },
369
+ records: { tuple: query.records, state: verdict(query.records) },
370
+ sweepComplete,
371
+ ...(note === undefined ? {} : { note }),
372
+ };
373
+ }
374
+ /** Creds-level wrapper for the delivery daemon's admin-rail plane-liveness verb: open the $SYS
375
+ * observer PER CALL (the eviction seam's rule — never a standing $SYS connection), run
376
+ * {@link observePlaneLiveness}, drain. Read-only: no evictor cred enters this path. */
377
+ export async function observePlaneLivenessWithCreds(opts) {
378
+ const observer = await connect({
379
+ servers: opts.servers,
380
+ authenticator: credsAuthenticator(enc(opts.observerCreds)),
381
+ inboxPrefix: MEMBERSHIP_INBOX_PREFIX,
382
+ maxReconnectAttempts: 0,
383
+ });
384
+ try {
385
+ return await observePlaneLiveness(observer, opts.accountId, opts.query, opts.options ?? {});
386
+ }
387
+ finally {
388
+ await observer.drain().catch(() => { });
389
+ }
390
+ }
201
391
  /** Creds-level wrapper for composition roots that hold the two $SYS creds as FILES/strings (the
202
392
  * delivery daemon's admin-rail executor): open the observer (under its granted inbox prefix) and
203
393
  * the kick-only evictor PER CALL, run {@link evictDeniedPrincipal}, and drain both — eviction is a
package/dist/evict.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"evict.js","sourceRoot":"","sources":["../src/evict.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evict.js","sourceRoot":"","sources":["../src/evict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAuB,MAAM,yBAAyB,CAAC;AAC3F,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAEpH,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACvD,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,gFAAgF;AA2DtG;;;;wBAIwB;AACxB,KAAK,UAAU,QAAQ,CACrB,YAA4B,EAC5B,SAAiB,EACjB,IAA0E;IAE1E,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,gFAAgF;IACxG,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC,uEAAuE;IACnG,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,MAAM;YAAE,WAAW,GAAG,IAAI,CAAC;QACvC,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,6FAA6F;gBAC7F,0FAA0F;gBAC1F,mFAAmF;gBACnF,UAAU,GAAG,IAAI,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;YACrC,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,mFAAmF;gBACnF,sFAAsF;gBACtF,MAAM,SAAS,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;gBACxC,IAAI,CAAC,SAAS;oBAAE,SAAS,CAAC,mEAAmE;gBAC7F,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC9B,wFAAwF;oBACxF,0FAA0F;oBAC1F,wFAAwF;oBACxF,UAAU,GAAG,IAAI,CAAC;oBAClB,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC;YAClD,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC;YACjC,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,KAAK;gBAAE,iBAAiB,GAAG,IAAI,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,iBAAiB;YAAE,MAAM,CAAC,yCAAyC;QACxE,IAAI,IAAI,KAAK,SAAS,GAAG,CAAC;YAAE,SAAS,GAAG,IAAI,CAAC;IAC/C,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;AACvE,CAAC;AAED,oGAAoG;AACpG,SAAS,UAAU,CACjB,YAA4B,EAC5B,SAAiB,EACjB,MAAc,EACd,IAA0E,EAC1E,KAAa,EACb,GAAW;IAEX,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,iGAAiG;QACjG,gGAAgG;QAChG,wFAAwF;QACxF,iGAAiG;QACjG,gGAAgG;QAChG,yCAAyC;QACzC,MAAM,KAAK,GAAG,GAAG,uBAAuB,UAAU,KAAK,IAAI,GAAG,EAAE,CAAC;QACjE,MAAM,GAAG,GAAiB,EAAE,CAAC;QAC7B,IAAI,MAAiD,CAAC;QACtD,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,IAAI;gBAAE,OAAO;YACjB,IAAI,GAAG,IAAI,CAAC;YACZ,IAAI,MAAM;gBAAE,YAAY,CAAC,MAAM,CAAC,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,IAAI,CAAC;gBAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,cAAc,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE;YACxC,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;gBACrB,IAAI,GAAG;oBAAE,OAAO;gBAChB,IAAI,CAAC;oBAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAc,CAAC,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,CAAC;gBAC1E,IAAI,MAAM;oBAAE,YAAY,CAAC,MAAM,CAAC,CAAC;gBACjC,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAChD,YAAY,CAAC,OAAO,CAClB,mBAAmB,CAAC,SAAS,CAAC,EAC9B,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EACxF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;2EAE2E;AAC3E,KAAK,UAAU,IAAI,CAAC,WAA2B,EAAE,IAAc;IAC7D,gGAAgG;IAChG,gGAAgG;IAChG,wFAAwF;IACxF,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACnI,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAwC,CAAC;IAC9D,IAAI,IAAI,EAAE,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,CAAC,GAAG,OAAO,IAAI,CAAC,QAAQ,aAAa,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,SAAS,EAAE,CAAC,CAAC;AAC/H,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAA4B,EAC5B,WAA2B,EAC3B,SAAiB,EACjB,SAAiB,EACjB,UAAwB,EAAE;IAE1B,MAAM,IAAI,GAAG;QACX,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,CAAC;QAC7C,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;KACrC,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,KAAK,CAAC,QAAQ;QACjB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,yFAAyF,EAAE,CAAC;IAE3L,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;IACrE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QACtB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,iDAAiD,EAAE,CAAC;IAEjJ,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,IAAwB,CAAC;IAC7B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;YAC3B,MAAM,EAAE,CAAC;QACX,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,kGAAkG;IAClG,uFAAuF;IACvF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,KAAK,EAAE,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,QAAQ;YAClB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,IAAI,kDAAkD,EAAE,CAAC;QACzJ,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YACpB,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3F,+EAA+E;QAC/E,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC;gBAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAAC,MAAM,EAAE,CAAC;YAAC,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBAAC,IAAI,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAAC,CAAC;QAChH,CAAC;QACD,IAAI,KAAK,KAAK,IAAI,CAAC,eAAe,GAAG,CAAC;YACpC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,mCAAmC,IAAI,CAAC,eAAe,yCAAyC,EAAE,CAAC;IAClO,CAAC;IACD,kEAAkE;IAClE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC5F,CAAC;AAuCD;;yEAEyE;AACzE,MAAM,UAAU,gBAAgB,CAAC,CAAU;IACzC,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,UAAU;YAAE,OAAO,KAAK,CAAC;IACtG,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,OAAO,CACL,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG;QACnF,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;QACrE,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,IAAI,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CACrE,CAAC;AACJ,CAAC;AAED;;;gGAGgG;AAChG,MAAM,UAAU,wBAAwB,CAAC,CAAU;IACjD,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,OAAO,SAAS,CAAC;IAClH,MAAM,CAAC,GAAG,CAAiC,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,CAAU,EAAmE,EAAE;QAC3F,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO;gBAAE,OAAO,SAAS,CAAC;QACrF,MAAM,CAAC,GAAG,CAAyC,CAAC;QACpD,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,SAAS,CAAC;QACjD,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QACxF,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACpE,IAAI,OAAO,CAAC,CAAC,aAAa,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3D,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1H,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;AAChH,CAAC;AASD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,YAA4B,EAC5B,SAAiB,EACjB,KAAyB,EACzB,UAAwB,EAAE;IAE1B,MAAM,IAAI,GAAG;QACX,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,GAAG;QACjC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;KACrC,CAAC;IACF,MAAM,KAAK,GAA2D,EAAE,CAAC;IACzE,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,eAAe,GAAG,KAAK,CAAC,CAAC,qEAAqE;IAClG,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC,uEAAuE;IACnG,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QACtF,IAAI,OAAO,CAAC,MAAM;YAAE,WAAW,GAAG,IAAI,CAAC;QACvC,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,6FAA6F;YAC7F,0FAA0F;YAC1F,8FAA8F;YAC9F,8FAA8F;YAC9F,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAI,CAAC,CAAC,MAA4C,EAAE,OAAO,CAAC;YACzE,IACE,CAAC,CAAC,KAAK,KAAK,SAAS;gBACrB,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAC/C,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;gBAChF,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC;gBAC/D,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;gBAC1D,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC;gBAC3F,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EACjI,CAAC;gBACD,SAAS,GAAG,IAAI,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,GAAG,KAAK,CAAC;YACvB,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvB,IAAI,OAAO,OAAO,KAAK,QAAQ;gBAAE,eAAe,GAAG,IAAI,CAAC;YACxD,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,WAA+B,CAAC;YAClD,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;gBACnB,IAAI,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC9B,SAAS,GAAG,IAAI,CAAC,CAAC,6DAA6D;oBAC/E,SAAS;gBACX,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,eAAe,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1H,CAAC;YACD,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC3B,IAAI,EAAE,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,KAAK;gBAAE,iBAAiB,GAAG,IAAI,CAAC;QAC1F,CAAC;QACD,IAAI,CAAC,iBAAiB;YAAE,MAAM;QAC9B,IAAI,IAAI,KAAK,SAAS,GAAG,CAAC;YAAE,SAAS,GAAG,IAAI,CAAC;IAC/C,CAAC;IACD,MAAM,aAAa,GAAG,WAAW,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC;IAC9D,4FAA4F;IAC5F,iGAAiG;IACjG,MAAM,kBAAkB,GAAG,aAAa,IAAI,CAAC,eAAe,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,CAAC;IACpF,MAAM,OAAO,GAAG,CAAC,KAAqB,EAAqB,EAAE;QAC3D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACxH,IAAI,IAAI;YAAE,OAAO,MAAM,CAAC;QACxB,OAAO,kBAAkB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IACjD,CAAC,CAAC;IACF,MAAM,IAAI,GAAG,CAAC,aAAa;QACzB,CAAC,CAAC,8GAA8G;QAChH,CAAC,CAAC,CAAC,kBAAkB;YACnB,CAAC,CAAC,eAAe;gBACf,CAAC,CAAC,4NAA4N;gBAC9N,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,6HAA6H;YACjJ,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAC7D,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;QAChE,aAAa;QACb,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED;;wFAEwF;AACxF,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,IAMnD;IACC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,WAAW,EAAE,uBAAuB;QACpC,oBAAoB,EAAE,CAAC;KACxB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,OAAO,MAAM,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC9F,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;qGAIqG;AACrG,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,IAOnD;IACC,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,WAAW,EAAE,uBAAuB;QACpC,oBAAoB,EAAE,CAAC;KACxB,CAAC,CAAC;IACH,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,oBAAoB,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,CAAC;YACH,OAAO,MAAM,oBAAoB,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC3G,CAAC;gBAAS,CAAC;YACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,27 @@
1
1
  export * from "./types.js";
2
2
  export * from "./subjects.js";
3
+ export * from "./endpoint-subjects.js";
4
+ export * from "./endpoint-grants.js";
5
+ export * from "./endpoint-envelope.js";
6
+ export * from "./endpoint-records.js";
7
+ export * from "./endpoint-cluster.js";
8
+ export * from "./endpoint-journal.js";
9
+ export * from "./endpoint-binding.js";
10
+ export * from "./endpoint-service.js";
11
+ export * from "./endpoint-serve.js";
12
+ export * from "./endpoint-verbs.js";
13
+ export * from "./endpoint-work.js";
14
+ export * from "./endpoint-action.js";
15
+ export * from "./endpoint-checkpoint.js";
16
+ export * from "./endpoint-contract-store.js";
17
+ export * from "./endpoint-guard.js";
18
+ export * from "./endpoint-handle.js";
19
+ export * from "./endpoint-session.js";
20
+ export * from "./endpoint-virtual.js";
21
+ export * from "./endpoint-receipt.js";
22
+ export * from "./endpoint-signing.js";
23
+ export * from "./endpoint-traits.js";
24
+ export * from "./safe-pattern.js";
3
25
  export * from "./resolve.js";
4
26
  export * from "./link.js";
5
27
  export * from "./identity.js";
@@ -28,4 +50,7 @@ export * from "./runtime.js";
28
50
  export * from "./terminal.js";
29
51
  export * from "./registry.js";
30
52
  export * from "./auth-provider.js";
53
+ export * from "./canonical.js";
54
+ export * from "./schema-profile.js";
55
+ export * from "./broker-floor.js";
31
56
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
package/dist/index.js CHANGED
@@ -1,5 +1,27 @@
1
1
  export * from "./types.js";
2
2
  export * from "./subjects.js";
3
+ export * from "./endpoint-subjects.js";
4
+ export * from "./endpoint-grants.js";
5
+ export * from "./endpoint-envelope.js";
6
+ export * from "./endpoint-records.js";
7
+ export * from "./endpoint-cluster.js";
8
+ export * from "./endpoint-journal.js";
9
+ export * from "./endpoint-binding.js";
10
+ export * from "./endpoint-service.js";
11
+ export * from "./endpoint-serve.js";
12
+ export * from "./endpoint-verbs.js";
13
+ export * from "./endpoint-work.js";
14
+ export * from "./endpoint-action.js";
15
+ export * from "./endpoint-checkpoint.js";
16
+ export * from "./endpoint-contract-store.js";
17
+ export * from "./endpoint-guard.js";
18
+ export * from "./endpoint-handle.js";
19
+ export * from "./endpoint-session.js";
20
+ export * from "./endpoint-virtual.js";
21
+ export * from "./endpoint-receipt.js";
22
+ export * from "./endpoint-signing.js";
23
+ export * from "./endpoint-traits.js";
24
+ export * from "./safe-pattern.js";
3
25
  export * from "./resolve.js";
4
26
  export * from "./link.js";
5
27
  export * from "./identity.js";
@@ -28,4 +50,7 @@ export * from "./runtime.js";
28
50
  export * from "./terminal.js";
29
51
  export * from "./registry.js";
30
52
  export * from "./auth-provider.js";
53
+ export * from "./canonical.js";
54
+ export * from "./schema-profile.js";
55
+ export * from "./broker-floor.js";
31
56
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,WAAW,CAAC;AAC1B,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC"}
package/dist/lease.d.ts CHANGED
@@ -27,6 +27,10 @@ export interface DeliveryLeaseInfo {
27
27
  * manager (no fallbacks); `pid` is a diagnostics + targeted-stop hint. Acquired by an ATOMIC CAS
28
28
  * create — a second manager's create THROWS, a loud refusal-to-bind. */
29
29
  export interface ManagerLeaseInfo {
30
+ /** The manager endpoint id — `principalKey(owner, actor).key` dot-form (the endpoint card's
31
+ * id), so it is DIRECTLY comparable to a control subject's `<owner>.<actor>` attribution:
32
+ * the auth service's retirement rail (#29 piece 3) leader-reads this row and requires
33
+ * holder == the subject-attributed requester principal, fresh per request. */
30
34
  holder: string;
31
35
  runtime: string;
32
36
  root: string;
@@ -1 +1 @@
1
- {"version":3,"file":"lease.d.ts","sourceRoot":"","sources":["../src/lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAO,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;qEAIqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;yEAGyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;6GAC6G;AAC7G,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,OAAO,yBAAyB,EAAE,cAAc,EACpD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,EAAE,CAAC,CAEb;AAED;;;;8GAI8G;AAC9G,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BnB"}
1
+ {"version":3,"file":"lease.d.ts","sourceRoot":"","sources":["../src/lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAO,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAI3C;;;;qEAIqE;AACrE,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;yEAGyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B;;;mFAG+E;IAC/E,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED;6GAC6G;AAC7G,wBAAsB,oBAAoB,CACxC,EAAE,EAAE,OAAO,yBAAyB,EAAE,cAAc,EACpD,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,EAAE,CAAC,CAEb;AAED;;;;8GAI8G;AAC9G,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BnB"}
package/dist/lease.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"lease.js","sourceRoot":"","sources":["../src/lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,GAAG,EAAW,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAyBzD;6GAC6G;AAC7G,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAoD,EACpD,KAAa;IAEb,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;8GAI8G;AAC9G,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAM1C;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IACvD,IAAI,EAAmD,CAAC;IACxD,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,OAAO,CAAC;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvE,WAAW,EAAE,UAAU,IAAI,CAAC,EAAE,EAAE;YAChC,oBAAoB,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;gBAC1D,2FAA2F;gBAC3F,IAAI,CAAC;oBAAC,IAAI,CAAC,CAAC,IAAI,EAAqB,CAAC,KAAK,KAAK,IAAI;wBAAE,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"lease.js","sourceRoot":"","sources":["../src/lease.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,GAAG,EAAW,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AA6BzD;6GAC6G;AAC7G,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAoD,EACpD,KAAa;IAEb,OAAO,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC;AAED;;;;8GAI8G;AAC9G,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAM1C;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;IACvD,IAAI,EAAmD,CAAC;IACxD,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,OAAO,CAAC;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,aAAa,EAAE,kBAAkB,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvE,WAAW,EAAE,UAAU,IAAI,CAAC,EAAE,EAAE;YAChC,oBAAoB,EAAE,CAAC;SACxB,CAAC,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,MAAM,CAAC,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,CAAC,CAAC,SAAS,KAAK,OAAO,EAAE,CAAC;gBAC1D,2FAA2F;gBAC3F,IAAI,CAAC;oBAAC,IAAI,CAAC,CAAC,IAAI,EAAqB,CAAC,KAAK,KAAK,IAAI;wBAAE,OAAO,IAAI,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAC,aAAa,CAAC,CAAC;YAC9F,CAAC;YACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;YAAS,CAAC;QACT,IAAI,CAAC;YACH,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
package/dist/members.d.ts CHANGED
@@ -27,7 +27,7 @@ export declare function openMembersRegistry(nc: import("@nats-io/transport-node"
27
27
  /** Read one membership record (incl. a tombstone — `leaveCursor` set), or undefined if no record /
28
28
  * the key was deleted. The CAS revision is returned alongside so a caller can do its own
29
29
  * read-modify-write; most callers use {@link commitMember}/{@link tombstoneMember} instead. */
30
- export declare function readMember(kv: KV, channel: string, owner: string): Promise<{
30
+ export declare function readMember(kv: KV, channel: string, owner: string, lifecycleUid: string): Promise<{
31
31
  record: MembershipRecord;
32
32
  revision: number;
33
33
  } | undefined>;
@@ -47,7 +47,7 @@ export declare function commitMember(kv: KV, next: MembershipRecord): Promise<Me
47
47
  * generation than what's stored, e.g. the agent already rejoined) is rejected. A no-op if there is
48
48
  * no record (already gone) or it is already tombstoned at/below this cursor.
49
49
  */
50
- export declare function tombstoneMember(kv: KV, channel: string, owner: string, leaveCursor: number, writerIdentity: string, expectedGeneration?: number): Promise<MembershipRecord | undefined>;
50
+ export declare function tombstoneMember(kv: KV, channel: string, owner: string, lifecycleUid: string, leaveCursor: number, writerIdentity: string, expectedGeneration?: number): Promise<MembershipRecord | undefined>;
51
51
  /**
52
52
  * Complete an activation: flip a pending join (generation `expectedGeneration`, `joinCursor` =
53
53
  * `expectedJoinCursor`, `activated:false`, open) to `activated:true`. ATOMIC via revision CAS, and
@@ -58,11 +58,11 @@ export declare function tombstoneMember(kv: KV, channel: string, owner: string,
58
58
  * reopen the SPEC §7 leave boundary. Idempotent: an already-activated open record at the same generation
59
59
  * is returned unchanged.
60
60
  */
61
- export declare function activateMember(kv: KV, channel: string, owner: string, expectedGeneration: number, expectedJoinCursor: number): Promise<MembershipRecord | undefined>;
61
+ export declare function activateMember(kv: KV, channel: string, owner: string, lifecycleUid: string, expectedGeneration: number, expectedJoinCursor: number): Promise<MembershipRecord | undefined>;
62
62
  /** Permanently remove a membership record (GC / footprint deletion — revocation deletes the footprint
63
63
  * AFTER invalidating creds). Distinct from {@link tombstoneMember}, which keeps the record so late
64
64
  * durable entries are denied by the cursor; only call this past the retention horizon. */
65
- export declare function deleteMember(kv: KV, channel: string, owner: string): Promise<void>;
65
+ export declare function deleteMember(kv: KV, channel: string, owner: string, lifecycleUid: string): Promise<void>;
66
66
  /**
67
67
  * Scan the registry, yielding every live (non-deleted) record matching the filter. `channel` →
68
68
  * that channel's members (fan-out's per-channel list); `owner` → that owner's memberships. With no
@@ -1 +1 @@
1
- {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../src/members.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAO,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;oFACoF;AACpF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAM/E;AAED;mEACmE;AACnE,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,OAAO,yBAAyB,EAAE,cAAc,EACpD,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,OAAO,CAAC,EAAE,CAAC,CAGb;AAED;;gGAEgG;AAChG,wBAAsB,UAAU,CAC9B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAQrE;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuB5F;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAoBvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAoBvC;AAED;;2FAE2F;AAC3F,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,EAAE,EACN,MAAM,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAc7B;AAED;;;;;;;;;;;;;gEAagE;AAChE,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAI3E"}
1
+ {"version":3,"file":"members.d.ts","sourceRoot":"","sources":["../src/members.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAO,KAAK,EAAE,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD;oFACoF;AACpF,qBAAa,oBAAqB,SAAQ,KAAK;gBACjC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAM/E;AAED;mEACmE;AACnE,wBAAsB,mBAAmB,CACvC,EAAE,EAAE,OAAO,yBAAyB,EAAE,cAAc,EACpD,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9B,OAAO,CAAC,EAAE,CAAC,CAGb;AAED;;gGAEgG;AAChG,wBAAsB,UAAU,CAC9B,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,MAAM,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAC,CAQrE;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAuB5F;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAoBvC;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,kBAAkB,EAAE,MAAM,EAC1B,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAoBvC;AAED;;2FAE2F;AAC3F,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9G;AAED;;;;;;;GAOG;AACH,wBAAsB,WAAW,CAC/B,EAAE,EAAE,EAAE,EACN,MAAM,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAc7B;AAED;;;;;;;;;;;;;gEAagE;AAChE,wBAAgB,eAAe,CAAC,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAI3E"}