@cotal-ai/core 0.16.0 → 0.18.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 (145) hide show
  1. package/dist/acls.d.ts +21 -0
  2. package/dist/acls.d.ts.map +1 -1
  3. package/dist/acls.js +44 -1
  4. package/dist/acls.js.map +1 -1
  5. package/dist/artifact.d.ts +45 -0
  6. package/dist/artifact.d.ts.map +1 -0
  7. package/dist/artifact.js +82 -0
  8. package/dist/artifact.js.map +1 -0
  9. package/dist/backup-config.d.ts +9 -2
  10. package/dist/backup-config.d.ts.map +1 -1
  11. package/dist/backup-config.js +6 -2
  12. package/dist/backup-config.js.map +1 -1
  13. package/dist/broker-tls.d.ts +70 -0
  14. package/dist/broker-tls.d.ts.map +1 -0
  15. package/dist/broker-tls.js +195 -0
  16. package/dist/broker-tls.js.map +1 -0
  17. package/dist/canonical.d.ts +14 -1
  18. package/dist/canonical.d.ts.map +1 -1
  19. package/dist/canonical.js +21 -1
  20. package/dist/canonical.js.map +1 -1
  21. package/dist/channels.js +4 -4
  22. package/dist/channels.js.map +1 -1
  23. package/dist/endpoint-action.d.ts +108 -3
  24. package/dist/endpoint-action.d.ts.map +1 -1
  25. package/dist/endpoint-action.js +209 -20
  26. package/dist/endpoint-action.js.map +1 -1
  27. package/dist/endpoint-binding.d.ts +138 -8
  28. package/dist/endpoint-binding.d.ts.map +1 -1
  29. package/dist/endpoint-binding.js +233 -26
  30. package/dist/endpoint-binding.js.map +1 -1
  31. package/dist/endpoint-contract-store.d.ts +30 -1
  32. package/dist/endpoint-contract-store.d.ts.map +1 -1
  33. package/dist/endpoint-contract-store.js +100 -29
  34. package/dist/endpoint-contract-store.js.map +1 -1
  35. package/dist/endpoint-envelope.d.ts +15 -37
  36. package/dist/endpoint-envelope.d.ts.map +1 -1
  37. package/dist/endpoint-envelope.js +93 -44
  38. package/dist/endpoint-envelope.js.map +1 -1
  39. package/dist/endpoint-error.d.ts +33 -0
  40. package/dist/endpoint-error.d.ts.map +1 -0
  41. package/dist/endpoint-error.js +34 -0
  42. package/dist/endpoint-error.js.map +1 -0
  43. package/dist/endpoint-grants.d.ts +63 -7
  44. package/dist/endpoint-grants.d.ts.map +1 -1
  45. package/dist/endpoint-grants.js +118 -9
  46. package/dist/endpoint-grants.js.map +1 -1
  47. package/dist/endpoint-invoke.d.ts +138 -0
  48. package/dist/endpoint-invoke.d.ts.map +1 -0
  49. package/dist/endpoint-invoke.js +393 -0
  50. package/dist/endpoint-invoke.js.map +1 -0
  51. package/dist/endpoint-records.d.ts.map +1 -1
  52. package/dist/endpoint-records.js +17 -0
  53. package/dist/endpoint-records.js.map +1 -1
  54. package/dist/endpoint-serve-kv.d.ts +97 -0
  55. package/dist/endpoint-serve-kv.d.ts.map +1 -0
  56. package/dist/endpoint-serve-kv.js +336 -0
  57. package/dist/endpoint-serve-kv.js.map +1 -0
  58. package/dist/endpoint-serve.d.ts.map +1 -1
  59. package/dist/endpoint-serve.js +21 -1
  60. package/dist/endpoint-serve.js.map +1 -1
  61. package/dist/endpoint-service.d.ts +1 -1
  62. package/dist/endpoint-service.d.ts.map +1 -1
  63. package/dist/endpoint-service.js +34 -10
  64. package/dist/endpoint-service.js.map +1 -1
  65. package/dist/endpoint-session-rail.d.ts +127 -0
  66. package/dist/endpoint-session-rail.d.ts.map +1 -0
  67. package/dist/endpoint-session-rail.js +325 -0
  68. package/dist/endpoint-session-rail.js.map +1 -0
  69. package/dist/endpoint-session.d.ts +1 -115
  70. package/dist/endpoint-session.d.ts.map +1 -1
  71. package/dist/endpoint-session.js +4 -316
  72. package/dist/endpoint-session.js.map +1 -1
  73. package/dist/endpoint-subjects.d.ts +20 -1
  74. package/dist/endpoint-subjects.d.ts.map +1 -1
  75. package/dist/endpoint-subjects.js +20 -1
  76. package/dist/endpoint-subjects.js.map +1 -1
  77. package/dist/endpoint-verbs.d.ts +1 -2
  78. package/dist/endpoint-verbs.d.ts.map +1 -1
  79. package/dist/endpoint-verbs.js +6 -6
  80. package/dist/endpoint-verbs.js.map +1 -1
  81. package/dist/endpoint.d.ts +157 -11
  82. package/dist/endpoint.d.ts.map +1 -1
  83. package/dist/endpoint.js +471 -47
  84. package/dist/endpoint.js.map +1 -1
  85. package/dist/evict.d.ts +47 -0
  86. package/dist/evict.d.ts.map +1 -1
  87. package/dist/evict.js +191 -59
  88. package/dist/evict.js.map +1 -1
  89. package/dist/identity.d.ts +34 -0
  90. package/dist/identity.d.ts.map +1 -1
  91. package/dist/identity.js +46 -0
  92. package/dist/identity.js.map +1 -1
  93. package/dist/index.d.ts +8 -0
  94. package/dist/index.d.ts.map +1 -1
  95. package/dist/index.js +8 -0
  96. package/dist/index.js.map +1 -1
  97. package/dist/kv-scan.d.ts +8 -0
  98. package/dist/kv-scan.d.ts.map +1 -1
  99. package/dist/kv-scan.js +8 -0
  100. package/dist/kv-scan.js.map +1 -1
  101. package/dist/lease.d.ts +12 -5
  102. package/dist/lease.d.ts.map +1 -1
  103. package/dist/lease.js.map +1 -1
  104. package/dist/lifecycle-saga.d.ts +174 -0
  105. package/dist/lifecycle-saga.d.ts.map +1 -0
  106. package/dist/lifecycle-saga.js +418 -0
  107. package/dist/lifecycle-saga.js.map +1 -0
  108. package/dist/lifecycle-state.d.ts +202 -0
  109. package/dist/lifecycle-state.d.ts.map +1 -0
  110. package/dist/lifecycle-state.js +347 -0
  111. package/dist/lifecycle-state.js.map +1 -0
  112. package/dist/parts.d.ts +13 -0
  113. package/dist/parts.d.ts.map +1 -0
  114. package/dist/parts.js +17 -0
  115. package/dist/parts.js.map +1 -0
  116. package/dist/provision.d.ts +124 -15
  117. package/dist/provision.d.ts.map +1 -1
  118. package/dist/provision.js +578 -121
  119. package/dist/provision.js.map +1 -1
  120. package/dist/schema-profile.d.ts +3 -2
  121. package/dist/schema-profile.d.ts.map +1 -1
  122. package/dist/schema-profile.js +242 -18
  123. package/dist/schema-profile.js.map +1 -1
  124. package/dist/session-browser.d.ts +15 -0
  125. package/dist/session-browser.d.ts.map +1 -0
  126. package/dist/session-browser.js +14 -0
  127. package/dist/session-browser.js.map +1 -0
  128. package/dist/session-terminal-frames.d.ts +36 -0
  129. package/dist/session-terminal-frames.d.ts.map +1 -0
  130. package/dist/session-terminal-frames.js +149 -0
  131. package/dist/session-terminal-frames.js.map +1 -0
  132. package/dist/spaces.d.ts.map +1 -1
  133. package/dist/spaces.js +6 -1
  134. package/dist/spaces.js.map +1 -1
  135. package/dist/streams.d.ts +168 -1
  136. package/dist/streams.d.ts.map +1 -1
  137. package/dist/streams.js +299 -21
  138. package/dist/streams.js.map +1 -1
  139. package/dist/subjects.d.ts +34 -36
  140. package/dist/subjects.d.ts.map +1 -1
  141. package/dist/subjects.js +46 -35
  142. package/dist/subjects.js.map +1 -1
  143. package/dist/types.d.ts +27 -1
  144. package/dist/types.d.ts.map +1 -1
  145. package/package.json +6 -1
@@ -0,0 +1,325 @@
1
+ import { EpEnvelopeError } from "./endpoint-error.js";
2
+ import { epsSubject } from "./endpoint-subjects.js";
3
+ const isRec = (v) => v !== null && typeof v === "object" && !Array.isArray(v);
4
+ function invalid(what) {
5
+ throw new EpEnvelopeError("contract-invalid", `${what} (SPEC 13.6 session)`);
6
+ }
7
+ /** The bounded flow window (§13.6: declared in the grant; overflow is `resource-exhausted`). */
8
+ export const SESSION_WINDOW_DEFAULT = 64;
9
+ export const SESSION_WINDOW_MAX = 1024;
10
+ /** Validate a flow window (1..MAX). Exported so the grant mint/verify in endpoint-session.ts share
11
+ * the single definition (it lives here, the browser-safe module). */
12
+ export function assertWindow(v) {
13
+ if (typeof v !== "number" || !Number.isSafeInteger(v) || v < 1 || v > SESSION_WINDOW_MAX)
14
+ invalid(`window ${String(v)} is not an integer in 1..${SESSION_WINDOW_MAX}`);
15
+ return v;
16
+ }
17
+ export function encodeSessionFrame(frame) {
18
+ return new TextEncoder().encode(JSON.stringify(frame));
19
+ }
20
+ /** Fail-loud frame parse (closed schema): a garbled frame is a PROTOCOL error the rail
21
+ * surfaces via `onProtocolError` — never silently skipped, never a crash. */
22
+ export function parseSessionFrame(bytes) {
23
+ let raw;
24
+ try {
25
+ raw = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
26
+ }
27
+ catch {
28
+ invalid("session frame is not UTF-8 JSON");
29
+ }
30
+ if (!isRec(raw))
31
+ invalid("session frame is not an object");
32
+ const o = raw;
33
+ if (o.t === "f") {
34
+ for (const k of Object.keys(o))
35
+ if (k !== "t" && k !== "seq" && k !== "data" && k !== "ack")
36
+ invalid(`data frame carries unknown field "${k}"`);
37
+ if (typeof o.seq !== "number" || !Number.isSafeInteger(o.seq) || o.seq < 1)
38
+ invalid("data frame seq is not a positive integer");
39
+ if (!("data" in o))
40
+ invalid("data frame carries no data");
41
+ if (o.ack !== undefined && (typeof o.ack !== "number" || !Number.isSafeInteger(o.ack) || o.ack < 0))
42
+ invalid("data frame ack is not a non-negative integer");
43
+ return { t: "f", seq: o.seq, data: o.data, ...(o.ack !== undefined ? { ack: o.ack } : {}) };
44
+ }
45
+ if (o.t === "credit") {
46
+ for (const k of Object.keys(o))
47
+ if (k !== "t" && k !== "ack")
48
+ invalid(`credit frame carries unknown field "${k}"`);
49
+ if (typeof o.ack !== "number" || !Number.isSafeInteger(o.ack) || o.ack < 0)
50
+ invalid("credit frame ack is not a non-negative integer");
51
+ return { t: "credit", ack: o.ack };
52
+ }
53
+ if (o.t === "close") {
54
+ for (const k of Object.keys(o))
55
+ if (k !== "t")
56
+ invalid(`close frame carries unknown field "${k}"`);
57
+ return { t: "close" };
58
+ }
59
+ invalid(`unknown session frame type ${String(o.t)}`);
60
+ }
61
+ /**
62
+ * Open one side of an established session over its two core rails. The credentials the
63
+ * redemption released confine each side to exactly its pub/sub pair; this helper only speaks
64
+ * the framed protocol and enforces the bounded window — it grants nothing.
65
+ *
66
+ * FLOW CONTROL (panel-locked): the data window is bounded and per-direction; control frames
67
+ * (`credit`, `close`) are EXEMPT (a full window never blocks the credits that reopen it).
68
+ * RECEIVE-side acceptance is serialized and the (possibly async) handler AWAITED — credit
69
+ * emits only for frames the application actually accepted — and the pending-frame queue is
70
+ * bounded by the same window (`flood` past it), so neither side ever buffers unboundedly.
71
+ * Credits carry an ABSOLUTE cumulative watermark, PIGGYBACKED on reverse data frames, so a lost
72
+ * dedicated credit self-heals on the next reverse traffic; ANY deeper loss (including loss of
73
+ * already-emitted threshold credits) recovers on the KEEPALIVE re-emit; sustained loss or a
74
+ * dead peer surfaces the TIMER-driven `stall` fault (never a silent hang, even for a sender
75
+ * that stopped calling send). A dropped DATA frame is unrecoverable at this transport (EPS is
76
+ * at-most-once, core-only) and shows as a seq gap the app reacts to — reliability layers
77
+ * inside `data` or uses the journal/checkpoint composites.
78
+ */
79
+ export function openSessionRail(opts) {
80
+ const { grant, role } = opts;
81
+ const window = assertWindow(grant.window);
82
+ const maxPayload = opts.maxPayloadBytes ?? 1024 * 1024;
83
+ const idleCreditMs = opts.idleCreditMs ?? 1000;
84
+ const stallTimeoutMs = opts.stallTimeoutMs ?? 30_000;
85
+ const now = opts.now ?? (() => Date.now());
86
+ const setIntervalFn = opts.setIntervalFn ?? ((fn, ms) => setInterval(fn, ms));
87
+ const clearIntervalFn = opts.clearIntervalFn ?? ((h) => clearInterval(h));
88
+ const egressDir = role === "caller" ? "in" : "out";
89
+ const ingressDir = role === "caller" ? "out" : "in";
90
+ const egress = epsSubject(grant.space, grant.endpoint, grant.sessionId, grant.serving.epoch, egressDir);
91
+ const ingress = epsSubject(grant.space, grant.endpoint, grant.sessionId, grant.serving.epoch, ingressDir);
92
+ let seq = 0; // last sent
93
+ let ackedThrough = 0; // peer's contiguous ack for OUR egress (absolute)
94
+ let windowFullSince = 0; // when the window became full with no ack advance (0 = not blocked)
95
+ let expected = 1; // next ingress data seq we can deliver contiguously
96
+ let deliveredSinceCredit = 0;
97
+ let dataSinceIdleTick = false; // did ingress data arrive since the last idle tick?
98
+ let delivered = 0;
99
+ let closed = false;
100
+ let broken = false;
101
+ let tornDown = false;
102
+ let idleTimer;
103
+ let sub;
104
+ const creditEvery = Math.max(1, Math.ceil(window / 2));
105
+ // EXACTLY-ONCE local cleanup, whoever triggers it (local close, PEER close, or a protocol
106
+ // fault): a remote peer must never be able to leave this side holding a dangling
107
+ // subscription + interval per session (a remotely triggerable resource leak).
108
+ const teardown = () => {
109
+ if (tornDown)
110
+ return;
111
+ tornDown = true;
112
+ if (idleTimer)
113
+ clearIntervalFn(idleTimer);
114
+ sub?.unsubscribe();
115
+ };
116
+ const protocolError = (reason, detail) => {
117
+ broken = true;
118
+ teardown(); // a broken rail holds no resources
119
+ opts.onProtocolError?.(reason, detail);
120
+ };
121
+ // Absorb an absolute watermark from a credit frame OR a piggybacked data ack. Monotonic — a
122
+ // stale/duplicated advertisement never narrows the window; an ack past what we ever sent is a
123
+ // protocol violation (fail-loud, never silently widen).
124
+ const applyAck = (ack) => {
125
+ if (ack > seq) {
126
+ protocolError("credit-overrun", { ack, sent: seq });
127
+ return;
128
+ }
129
+ if (ack > ackedThrough) {
130
+ ackedThrough = ack;
131
+ windowFullSince = 0; // progress — reset the stall watchdog
132
+ }
133
+ };
134
+ const emitCredit = () => {
135
+ try {
136
+ opts.nc.publish(egress, encodeSessionFrame({ t: "credit", ack: expected - 1 }));
137
+ }
138
+ catch (e) {
139
+ protocolError("publish", e?.message ?? String(e));
140
+ }
141
+ };
142
+ // SERIALIZED data acceptance: the application accepts FIRST and may be ASYNC — NATS does not
143
+ // serialize callback promises, so the callback only enqueues and this single drain loop runs
144
+ // one handler at a time in seq order. The watermark advances and credit emits only after the
145
+ // handler RESOLVES (credit == the receiver's buffer actually freed: the §13.6 back-pressure
146
+ // semantic), so an async rejection refuses the frame exactly like a synchronous throw. The
147
+ // HEAD frame stays queued while its handler runs, so the window bound below counts it; a
148
+ // handler that resolves into a rail that closed or broke meanwhile advances NOTHING.
149
+ const ingressQueue = [];
150
+ let draining = false;
151
+ const drain = async () => {
152
+ if (draining)
153
+ return;
154
+ draining = true;
155
+ try {
156
+ while (!closed && !broken && ingressQueue.length > 0) {
157
+ const head = ingressQueue[0];
158
+ try {
159
+ await opts.onData(head.data, head.seq);
160
+ }
161
+ catch (e) {
162
+ // A rejection landing in a rail that closed or broke DURING the await reports
163
+ // NOTHING: the rail is already terminal (its fault, if any, was already surfaced),
164
+ // and a second protocolError would double-fault a dead rail.
165
+ if (closed || broken)
166
+ return;
167
+ protocolError("handler", e?.message ?? String(e));
168
+ return;
169
+ }
170
+ if (closed || broken)
171
+ return;
172
+ ingressQueue.shift();
173
+ expected++;
174
+ delivered++;
175
+ deliveredSinceCredit++;
176
+ if (deliveredSinceCredit >= creditEvery) {
177
+ deliveredSinceCredit = 0;
178
+ emitCredit();
179
+ }
180
+ }
181
+ }
182
+ finally {
183
+ draining = false;
184
+ }
185
+ };
186
+ sub = opts.nc.subscribe(ingress, {
187
+ callback: (err, msg) => {
188
+ if (closed || broken)
189
+ return;
190
+ if (err) {
191
+ protocolError("subscription", err.message);
192
+ return;
193
+ }
194
+ let frame;
195
+ try {
196
+ frame = parseSessionFrame(msg.data);
197
+ }
198
+ catch (e) {
199
+ protocolError("garbled-frame", e.message);
200
+ return;
201
+ }
202
+ if (frame.t === "credit") {
203
+ applyAck(frame.ack);
204
+ return;
205
+ }
206
+ if (frame.t === "close") {
207
+ closed = true;
208
+ teardown();
209
+ opts.onClose?.();
210
+ return;
211
+ }
212
+ // Data. Its piggybacked ack refreshes OUR credit first (self-heals a lost dedicated
213
+ // credit) — and an OVERRUNNING piggyback breaks the rail BEFORE the frame's data can
214
+ // reach the application: a protocol-invalid frame must have no application effect.
215
+ if (frame.ack !== undefined) {
216
+ applyAck(frame.ack);
217
+ if (broken)
218
+ return;
219
+ }
220
+ dataSinceIdleTick = true;
221
+ // Contiguity is judged against the queue's tail (the head may still be in its handler):
222
+ // a peer sending in order while an earlier handler is pending is NOT a gap.
223
+ const nextIngress = expected + ingressQueue.length;
224
+ if (frame.seq < nextIngress)
225
+ return; // duplicate — idempotent drop
226
+ if (frame.seq > nextIngress) {
227
+ protocolError("gap", { expected: nextIngress, got: frame.seq });
228
+ return;
229
+ }
230
+ // The ingress queue is bounded by the grant WINDOW (an honest peer can never have more
231
+ // unacknowledged frames in flight): a peer that ignores flow control while a handler is
232
+ // pending cannot pile promises here — the rail breaks instead (§13.6: never unbounded).
233
+ if (ingressQueue.length >= window) {
234
+ protocolError("flood", { queued: ingressQueue.length, window });
235
+ return;
236
+ }
237
+ ingressQueue.push({ seq: frame.seq, data: frame.data });
238
+ void drain();
239
+ },
240
+ });
241
+ // One tick drives BOTH recovery legs:
242
+ // - the KEEPALIVE credit re-emit: while this side has delivered anything and the peer went
243
+ // quiet, re-advertise the absolute watermark — deliberately NOT gated on what was already
244
+ // advertised (see idleCreditMs docs: the double-credit-loss counterexample).
245
+ // - the STALL WATCHDOG: a window that stays full past stallTimeoutMs with no ack advance
246
+ // breaks the rail with a DETECTABLE fault even if the sender never calls send() again.
247
+ if (idleCreditMs > 0 || stallTimeoutMs > 0) {
248
+ idleTimer = setIntervalFn(() => {
249
+ if (closed || broken)
250
+ return;
251
+ if (stallTimeoutMs > 0 && windowFullSince !== 0) {
252
+ const blockedMs = now() - windowFullSince;
253
+ if (blockedMs > stallTimeoutMs) {
254
+ protocolError("stall", { window, ackedThrough, sent: seq, blockedMs });
255
+ return;
256
+ }
257
+ }
258
+ if (idleCreditMs > 0 && !dataSinceIdleTick && expected > 1)
259
+ emitCredit();
260
+ dataSinceIdleTick = false;
261
+ }, idleCreditMs > 0 ? idleCreditMs : 1000);
262
+ idleTimer.unref?.();
263
+ }
264
+ return {
265
+ send(data) {
266
+ if (closed || broken)
267
+ throw new EpEnvelopeError("failed-precondition", "session rail is closed/broken; establish a new session (SPEC 13.6)");
268
+ if (seq >= Number.MAX_SAFE_INTEGER - 1) {
269
+ protocolError("seq-exhausted", { seq });
270
+ throw new EpEnvelopeError("failed-precondition", "session rail exhausted its sequence space; establish a new session (SPEC 13.6)");
271
+ }
272
+ if (seq - ackedThrough >= window) {
273
+ // The window is full. The timer is the primary stall detector; this path double-checks
274
+ // (belt for a caller running with timers disabled) and otherwise refuses TRANSIENTLY.
275
+ const t = now();
276
+ if (windowFullSince === 0)
277
+ windowFullSince = t;
278
+ else if (stallTimeoutMs > 0 && t - windowFullSince > stallTimeoutMs) {
279
+ protocolError("stall", { window, ackedThrough, sent: seq, blockedMs: t - windowFullSince });
280
+ throw new EpEnvelopeError("failed-precondition", `session rail stalled: the window stayed full ${t - windowFullSince}ms with no credit; the peer is unreachable, re-establish (SPEC 13.6)`);
281
+ }
282
+ throw new EpEnvelopeError("resource-exhausted", `session window is full (${window} unacknowledged frames); the flow window is bounded and nothing buffers (SPEC 13.6)`);
283
+ }
284
+ // Piggyback our absolute reverse-rail watermark so a lost dedicated credit self-heals.
285
+ const ack = expected - 1;
286
+ const frame = encodeSessionFrame({ t: "f", seq: seq + 1, data, ...(ack > 0 ? { ack } : {}) });
287
+ if (frame.byteLength > maxPayload)
288
+ throw new EpEnvelopeError("contract-invalid", `session frame is ${frame.byteLength} bytes, over the ${maxPayload}-byte payload ceiling`);
289
+ // Publish BEFORE advancing: a synchronous publish failure must not consume the seq (the
290
+ // peer would otherwise see a permanent gap from a frame that never left this process,
291
+ // and the local stats would count it in flight). A failed publish breaks the rail.
292
+ try {
293
+ opts.nc.publish(egress, frame);
294
+ }
295
+ catch (e) {
296
+ protocolError("publish", e?.message ?? String(e));
297
+ throw new EpEnvelopeError("failed-precondition", `session rail publish failed; the rail is broken, re-establish (SPEC 13.6): ${e?.message ?? String(e)}`);
298
+ }
299
+ seq++;
300
+ // Arm the watchdog the moment the window BECOMES full: a sender that now only waits
301
+ // (never calling send again) is still covered by the timer-driven stall check.
302
+ if (seq - ackedThrough >= window && windowFullSince === 0)
303
+ windowFullSince = now();
304
+ return seq;
305
+ },
306
+ close() {
307
+ if (closed) {
308
+ teardown(); // idempotent; also covers close-after-broken
309
+ return;
310
+ }
311
+ closed = true;
312
+ try {
313
+ opts.nc.publish(egress, encodeSessionFrame({ t: "close" }));
314
+ }
315
+ catch {
316
+ /* advisory only — the ledger is the authority */
317
+ }
318
+ teardown();
319
+ },
320
+ stats() {
321
+ return { sent: seq, ackedThrough, delivered, inFlight: seq - ackedThrough };
322
+ },
323
+ };
324
+ }
325
+ //# sourceMappingURL=endpoint-session-rail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"endpoint-session-rail.js","sourceRoot":"","sources":["../src/endpoint-session-rail.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,9 @@
1
- import type { NatsConnection } from "@nats-io/transport-node";
2
1
  import { type AnchorResolver } from "./endpoint-signing.js";
2
+ export * from "./endpoint-session-rail.js";
3
3
  /** Grant validity ceiling — a session grant is LIVE-class authority (§13.6 "expiry per the
4
4
  * handle rules"; it is one-use and epoch-bound on both sides, never sturdy). */
5
5
  export declare const SESSION_GRANT_MAX_TTL_MS: number;
6
6
  export declare const SESSION_GRANT_MAX_BYTES: number;
7
- /** The bounded flow window (§13.6: declared in the grant; overflow is `resource-exhausted`). */
8
- export declare const SESSION_WINDOW_DEFAULT = 64;
9
- export declare const SESSION_WINDOW_MAX = 1024;
10
7
  /** §13.6 "fresh unguessable sessionId": at least 22 base64url chars (≥128 bits) — enforced on
11
8
  * CALLER-SUPPLIED ids too, so a short guessable id cannot ride in through the mint arg. */
12
9
  export declare const SESSION_ID_MIN_CHARS = 22;
@@ -284,115 +281,4 @@ export declare function sweepSessionRow(row: SessionLedgerRow, hooks: Pick<Sessi
284
281
  now: number;
285
282
  marginMs?: number;
286
283
  }): Promise<boolean>;
287
- /** The composite's own tiny framed protocol; `data` is OPAQUE (any JSON value — binary rides
288
- * the application's own encoding). `credit`/`close` are CONTROL frames, EXEMPT from the data
289
- * window (a full data window must never block the credits that reopen it, else instant
290
- * deadlock). `ack` is an ABSOLUTE cumulative watermark (the sender's contiguous-received count
291
- * on the OTHER rail): a data frame PIGGYBACKS it, so a lost dedicated credit self-heals on the
292
- * next reverse data frame, and any deeper loss recovers on the keepalive re-emit; absolute
293
- * (not delta) so any single credit re-advertises the whole position and a duplicate is
294
- * harmless. The in-band `close` is advisory (§13.6): revocation authority is the ledger,
295
- * never this frame. */
296
- export type SessionFrame = {
297
- t: "f";
298
- seq: number;
299
- data: unknown;
300
- ack?: number;
301
- } | {
302
- t: "credit";
303
- ack: number;
304
- } | {
305
- t: "close";
306
- };
307
- export declare function encodeSessionFrame(frame: SessionFrame): Uint8Array;
308
- /** Fail-loud frame parse (closed schema): a garbled frame is a PROTOCOL error the rail
309
- * surfaces via `onProtocolError` — never silently skipped, never a crash. */
310
- export declare function parseSessionFrame(bytes: Uint8Array): SessionFrame;
311
- /** Which rail each role sends on (§13.6: `in` = caller → endpoint; `out` = the reverse). */
312
- export type SessionRole = "caller" | "serving";
313
- export interface SessionRailOpts {
314
- nc: NatsConnection;
315
- grant: Pick<SessionGrant, "space" | "endpoint" | "sessionId" | "window"> & {
316
- serving: {
317
- epoch: number;
318
- };
319
- };
320
- role: SessionRole;
321
- /** Delivered in-order for CONTIGUOUS frames, and the application accepts FIRST: the handler
322
- * may be async — it is AWAITED, and the watermark advances and credit emits only after it
323
- * RESOLVES, so credit means the receiver's buffer actually freed (back-pressure) and a
324
- * rejection refuses the frame exactly like a synchronous throw: the rail breaks (`handler`)
325
- * and the refused frame is neither counted delivered nor credited. Acceptance is SERIALIZED
326
- * in seq order (one handler in flight; NATS does not serialize callback promises); frames
327
- * arriving while a handler is pending queue up to the grant WINDOW — past it the rail breaks
328
- * (`flood`), never an unbounded backlog. A handler wedged forever stalls credit, so the
329
- * SENDER's window fills and its stall watchdog surfaces the fault. A gap surfaces via
330
- * onProtocolError("gap"). */
331
- onData(data: unknown, seq: number): void | Promise<void>;
332
- /** The peer's advisory close frame arrived (authoritative close is the ledger's). The local
333
- * subscription and timer are torn down before this fires. */
334
- onClose?(): void;
335
- /** The session is broken — close and re-establish. `reason` is one of `garbled-frame` |
336
- * `gap` | `credit-overrun` | `flood` | `subscription` | `stall` | `handler` | `publish` |
337
- * `seq-exhausted`. The rail's subscription and timer are torn down before this fires (a
338
- * broken rail holds no resources). */
339
- onProtocolError?(reason: string, detail?: unknown): void;
340
- /** Broker payload ceiling for the SEND preflight (like assertFactFits). Default 1 MiB. */
341
- maxPayloadBytes?: number;
342
- /** Keepalive credit re-emit interval (ms): while this side has delivered ANY data and the
343
- * peer has gone quiet, re-advertise the absolute watermark every tick — including
344
- * watermarks already advertised, because this side cannot observe whether an emitted
345
- * credit ARRIVED (gating on "newer than last emitted" turns loss of the advertisement
346
- * itself into a permanent stall). Absolute acks are idempotent, so the honest recovery is
347
- * repetition; the cost is one control frame per quiet tick. 0 disables. Default 1000. */
348
- idleCreditMs?: number;
349
- /** Sender stall watchdog (ms): if the data window stays full this long with NO ack advance
350
- * (sustained credit loss or a dead peer), the rail breaks with a DETECTABLE `stall` fault —
351
- * TIMER-driven, so a sender that stops calling send() still learns its peer is gone; the
352
- * send path double-checks as a belt. 0 disables. Default 30000. */
353
- stallTimeoutMs?: number;
354
- /** Injectable clock (testability); default Date.now. */
355
- now?: () => number;
356
- /** Injectable interval timer (testability); defaults to Node setInterval/clearInterval. */
357
- setIntervalFn?: (fn: () => void, ms: number) => {
358
- unref?: () => void;
359
- };
360
- clearIntervalFn?: (h: unknown) => void;
361
- }
362
- export interface SessionRail {
363
- /** Send one opaque data frame (piggybacking this side's absolute reverse-rail watermark).
364
- * Throws `resource-exhausted` when the window is full (no buffering, §13.6), `contract-invalid`
365
- * when the encoded frame exceeds the payload ceiling, and `failed-precondition` once the rail
366
- * is closed/broken (including a detected stall or a failed publish). Returns the frame's seq. */
367
- send(data: unknown): number;
368
- /** Send the advisory close frame and stop the rail locally. Idempotent. */
369
- close(): void;
370
- /** In-memory window state (observability + smoke assertions). */
371
- stats(): {
372
- sent: number;
373
- ackedThrough: number;
374
- delivered: number;
375
- inFlight: number;
376
- };
377
- }
378
- /**
379
- * Open one side of an established session over its two core rails. The credentials the
380
- * redemption released confine each side to exactly its pub/sub pair; this helper only speaks
381
- * the framed protocol and enforces the bounded window — it grants nothing.
382
- *
383
- * FLOW CONTROL (panel-locked): the data window is bounded and per-direction; control frames
384
- * (`credit`, `close`) are EXEMPT (a full window never blocks the credits that reopen it).
385
- * RECEIVE-side acceptance is serialized and the (possibly async) handler AWAITED — credit
386
- * emits only for frames the application actually accepted — and the pending-frame queue is
387
- * bounded by the same window (`flood` past it), so neither side ever buffers unboundedly.
388
- * Credits carry an ABSOLUTE cumulative watermark, PIGGYBACKED on reverse data frames, so a lost
389
- * dedicated credit self-heals on the next reverse traffic; ANY deeper loss (including loss of
390
- * already-emitted threshold credits) recovers on the KEEPALIVE re-emit; sustained loss or a
391
- * dead peer surfaces the TIMER-driven `stall` fault (never a silent hang, even for a sender
392
- * that stopped calling send). A dropped DATA frame is unrecoverable at this transport (EPS is
393
- * at-most-once, core-only) and shows as a seq gap the app reacts to — reliability layers
394
- * inside `data` or uses the journal/checkpoint composites.
395
- */
396
- export declare function openSessionRail(opts: SessionRailOpts): SessionRail;
397
- export {};
398
284
  //# sourceMappingURL=endpoint-session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"endpoint-session.d.ts","sourceRoot":"","sources":["../src/endpoint-session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoint-session.d.ts","sourceRoot":"","sources":["../src/endpoint-session.ts"],"names":[],"mappings":"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"}