@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.
- package/dist/acls.d.ts +31 -7
- package/dist/acls.d.ts.map +1 -1
- package/dist/acls.js +105 -17
- package/dist/acls.js.map +1 -1
- package/dist/agent-file.js +1 -1
- package/dist/agent-file.js.map +1 -1
- package/dist/auth-provider.d.ts +8 -0
- package/dist/auth-provider.d.ts.map +1 -1
- package/dist/auth-provider.js.map +1 -1
- package/dist/backup.d.ts.map +1 -1
- package/dist/backup.js +6 -4
- package/dist/backup.js.map +1 -1
- package/dist/broker-floor.d.ts +34 -0
- package/dist/broker-floor.d.ts.map +1 -0
- package/dist/broker-floor.js +39 -0
- package/dist/broker-floor.js.map +1 -0
- package/dist/canonical.d.ts +24 -0
- package/dist/canonical.d.ts.map +1 -0
- package/dist/canonical.js +159 -0
- package/dist/canonical.js.map +1 -0
- package/dist/connector.d.ts +4 -0
- package/dist/connector.d.ts.map +1 -1
- package/dist/endpoint-action.d.ts +424 -0
- package/dist/endpoint-action.d.ts.map +1 -0
- package/dist/endpoint-action.js +910 -0
- package/dist/endpoint-action.js.map +1 -0
- package/dist/endpoint-binding.d.ts +344 -0
- package/dist/endpoint-binding.d.ts.map +1 -0
- package/dist/endpoint-binding.js +753 -0
- package/dist/endpoint-binding.js.map +1 -0
- package/dist/endpoint-checkpoint.d.ts +292 -0
- package/dist/endpoint-checkpoint.d.ts.map +1 -0
- package/dist/endpoint-checkpoint.js +818 -0
- package/dist/endpoint-checkpoint.js.map +1 -0
- package/dist/endpoint-cluster.d.ts +95 -0
- package/dist/endpoint-cluster.d.ts.map +1 -0
- package/dist/endpoint-cluster.js +194 -0
- package/dist/endpoint-cluster.js.map +1 -0
- package/dist/endpoint-contract-store.d.ts +90 -0
- package/dist/endpoint-contract-store.d.ts.map +1 -0
- package/dist/endpoint-contract-store.js +348 -0
- package/dist/endpoint-contract-store.js.map +1 -0
- package/dist/endpoint-envelope.d.ts +165 -0
- package/dist/endpoint-envelope.d.ts.map +1 -0
- package/dist/endpoint-envelope.js +346 -0
- package/dist/endpoint-envelope.js.map +1 -0
- package/dist/endpoint-grants.d.ts +123 -0
- package/dist/endpoint-grants.d.ts.map +1 -0
- package/dist/endpoint-grants.js +215 -0
- package/dist/endpoint-grants.js.map +1 -0
- package/dist/endpoint-guard.d.ts +222 -0
- package/dist/endpoint-guard.d.ts.map +1 -0
- package/dist/endpoint-guard.js +468 -0
- package/dist/endpoint-guard.js.map +1 -0
- package/dist/endpoint-handle.d.ts +176 -0
- package/dist/endpoint-handle.d.ts.map +1 -0
- package/dist/endpoint-handle.js +608 -0
- package/dist/endpoint-handle.js.map +1 -0
- package/dist/endpoint-journal.d.ts +225 -0
- package/dist/endpoint-journal.d.ts.map +1 -0
- package/dist/endpoint-journal.js +431 -0
- package/dist/endpoint-journal.js.map +1 -0
- package/dist/endpoint-receipt.d.ts +225 -0
- package/dist/endpoint-receipt.d.ts.map +1 -0
- package/dist/endpoint-receipt.js +417 -0
- package/dist/endpoint-receipt.js.map +1 -0
- package/dist/endpoint-records.d.ts +243 -0
- package/dist/endpoint-records.d.ts.map +1 -0
- package/dist/endpoint-records.js +591 -0
- package/dist/endpoint-records.js.map +1 -0
- package/dist/endpoint-serve.d.ts +176 -0
- package/dist/endpoint-serve.d.ts.map +1 -0
- package/dist/endpoint-serve.js +446 -0
- package/dist/endpoint-serve.js.map +1 -0
- package/dist/endpoint-service.d.ts +518 -0
- package/dist/endpoint-service.d.ts.map +1 -0
- package/dist/endpoint-service.js +973 -0
- package/dist/endpoint-service.js.map +1 -0
- package/dist/endpoint-session.d.ts +398 -0
- package/dist/endpoint-session.d.ts.map +1 -0
- package/dist/endpoint-session.js +834 -0
- package/dist/endpoint-session.js.map +1 -0
- package/dist/endpoint-signing.d.ts +105 -0
- package/dist/endpoint-signing.d.ts.map +1 -0
- package/dist/endpoint-signing.js +190 -0
- package/dist/endpoint-signing.js.map +1 -0
- package/dist/endpoint-subjects.d.ts +222 -0
- package/dist/endpoint-subjects.d.ts.map +1 -0
- package/dist/endpoint-subjects.js +381 -0
- package/dist/endpoint-subjects.js.map +1 -0
- package/dist/endpoint-supervisor.d.ts +19 -0
- package/dist/endpoint-supervisor.d.ts.map +1 -0
- package/dist/endpoint-supervisor.js +12 -0
- package/dist/endpoint-supervisor.js.map +1 -0
- package/dist/endpoint-traits.d.ts +225 -0
- package/dist/endpoint-traits.d.ts.map +1 -0
- package/dist/endpoint-traits.js +469 -0
- package/dist/endpoint-traits.js.map +1 -0
- package/dist/endpoint-verbs.d.ts +277 -0
- package/dist/endpoint-verbs.d.ts.map +1 -0
- package/dist/endpoint-verbs.js +576 -0
- package/dist/endpoint-verbs.js.map +1 -0
- package/dist/endpoint-virtual.d.ts +308 -0
- package/dist/endpoint-virtual.d.ts.map +1 -0
- package/dist/endpoint-virtual.js +440 -0
- package/dist/endpoint-virtual.js.map +1 -0
- package/dist/endpoint-work.d.ts +304 -0
- package/dist/endpoint-work.d.ts.map +1 -0
- package/dist/endpoint-work.js +728 -0
- package/dist/endpoint-work.js.map +1 -0
- package/dist/endpoint.d.ts +66 -22
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +289 -89
- package/dist/endpoint.js.map +1 -1
- package/dist/evict.d.ts +95 -32
- package/dist/evict.d.ts.map +1 -1
- package/dist/evict.js +193 -3
- package/dist/evict.js.map +1 -1
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -1
- package/dist/lease.d.ts +4 -0
- package/dist/lease.d.ts.map +1 -1
- package/dist/lease.js.map +1 -1
- package/dist/members.d.ts +4 -4
- package/dist/members.d.ts.map +1 -1
- package/dist/members.js +12 -12
- package/dist/members.js.map +1 -1
- package/dist/provision.d.ts +70 -18
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +194 -33
- package/dist/provision.js.map +1 -1
- package/dist/safe-pattern.d.ts +33 -0
- package/dist/safe-pattern.d.ts.map +1 -0
- package/dist/safe-pattern.js +486 -0
- package/dist/safe-pattern.js.map +1 -0
- package/dist/schema-profile.d.ts +93 -0
- package/dist/schema-profile.d.ts.map +1 -0
- package/dist/schema-profile.js +284 -0
- package/dist/schema-profile.js.map +1 -0
- package/dist/streams.d.ts +13 -8
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +35 -18
- package/dist/streams.js.map +1 -1
- package/dist/subjects.d.ts +100 -40
- package/dist/subjects.d.ts.map +1 -1
- package/dist/subjects.js +136 -60
- package/dist/subjects.js.map +1 -1
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- 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
|
package/dist/evict.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"evict.d.ts","sourceRoot":"","sources":["../src/evict.ts"],"names":[],"mappings":"
|
|
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
|
-
|
|
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":"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"}
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
package/dist/lease.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
package/dist/members.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|