@cotal-ai/core 0.3.1 → 0.4.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/README.md +11 -0
- package/dist/agent-file.d.ts +29 -5
- package/dist/agent-file.d.ts.map +1 -1
- package/dist/agent-file.js +64 -11
- package/dist/agent-file.js.map +1 -1
- package/dist/command.d.ts +24 -0
- package/dist/command.d.ts.map +1 -1
- package/dist/connector-config.d.ts +42 -0
- package/dist/connector-config.d.ts.map +1 -0
- package/dist/connector-config.js +103 -0
- package/dist/connector-config.js.map +1 -0
- package/dist/connector.d.ts +11 -0
- package/dist/connector.d.ts.map +1 -1
- package/dist/endpoint.d.ts +123 -8
- package/dist/endpoint.d.ts.map +1 -1
- package/dist/endpoint.js +466 -137
- package/dist/endpoint.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/provision.d.ts +33 -10
- package/dist/provision.d.ts.map +1 -1
- package/dist/provision.js +65 -26
- package/dist/provision.js.map +1 -1
- package/dist/resolve.d.ts +53 -0
- package/dist/resolve.d.ts.map +1 -0
- package/dist/resolve.js +61 -0
- package/dist/resolve.js.map +1 -0
- package/dist/streams.d.ts +23 -0
- package/dist/streams.d.ts.map +1 -1
- package/dist/streams.js +36 -4
- package/dist/streams.js.map +1 -1
- package/dist/subjects.d.ts +42 -2
- package/dist/subjects.d.ts.map +1 -1
- package/dist/subjects.js +61 -3
- package/dist/subjects.js.map +1 -1
- package/package.json +4 -2
package/dist/endpoint.d.ts
CHANGED
|
@@ -48,7 +48,11 @@ export interface ChannelMember {
|
|
|
48
48
|
live: boolean;
|
|
49
49
|
}
|
|
50
50
|
/**
|
|
51
|
-
* Events: "message" (CotalMessage), "presence" (PresenceEvent), "roster" (Presence[]), "error" (Error)
|
|
51
|
+
* Events: "message" (CotalMessage), "presence" (PresenceEvent), "roster" (Presence[]), "error" (Error),
|
|
52
|
+
* "connection" ({ connected: boolean }) — true on every successful (re)bind (initial start, manual
|
|
53
|
+
* reconnect, AND background self-heal), false the moment the connection drops (rebuild null window /
|
|
54
|
+
* terminal close). Lets an in-process agent track connectedness off the endpoint's own (re)binds
|
|
55
|
+
* instead of an imperative flag the self-heal path can't reach.
|
|
52
56
|
*
|
|
53
57
|
* Callers MUST attach an "error" listener before `start()`: async faults (incl. NATS
|
|
54
58
|
* permission denials, surfaced via `watchStatus`) are emitted as "error", and Node throws
|
|
@@ -85,6 +89,9 @@ export declare class CotalEndpoint extends EventEmitter {
|
|
|
85
89
|
* a lagging joiner + dedups the backfill overlap). Keyed by the subscription pattern (may be
|
|
86
90
|
* wildcard), so the drop matches every concrete channel the pattern subsumes. */
|
|
87
91
|
private readonly joinSeq;
|
|
92
|
+
/** Serializes history reads ({@link collectHistory}): they share the fixed per-instance
|
|
93
|
+
* `chathist_<id>` consumer, so overlapping reads would delete/recreate it under one another. */
|
|
94
|
+
private histLock;
|
|
88
95
|
private readonly subs;
|
|
89
96
|
private readonly streamMsgs;
|
|
90
97
|
private heartbeatTimer?;
|
|
@@ -93,9 +100,70 @@ export declare class CotalEndpoint extends EventEmitter {
|
|
|
93
100
|
private status;
|
|
94
101
|
private activity?;
|
|
95
102
|
private stopped;
|
|
103
|
+
/** In-flight rebuild (drain+rebind) — serializes manual reconnect, the supervisor's
|
|
104
|
+
* closed(), and reestablishLoop so only ONE rebuild runs at a time (a second trigger
|
|
105
|
+
* coalesces onto the shared promise, never starts a parallel connectAndBind). */
|
|
106
|
+
private rebuildPromise?;
|
|
107
|
+
/** True only during the null window of a rebuild (this.nc unset) — user-facing ops then
|
|
108
|
+
* throw a "reconnecting" message instead of the misleading "endpoint not started". */
|
|
109
|
+
private reconnecting;
|
|
110
|
+
/** One reestablishLoop at a time; concurrent triggers coalesce via rebuild(). */
|
|
111
|
+
private reestablishing;
|
|
112
|
+
/** Interruptible backoff for reestablishLoop — reconnect()/stop() resolves this to retry
|
|
113
|
+
* now instead of awaiting the full retryMs. */
|
|
114
|
+
private backoffResolve?;
|
|
115
|
+
private backoffTimer?;
|
|
116
|
+
private readonly retryMs;
|
|
96
117
|
constructor(opts: EndpointOptions);
|
|
97
118
|
ref(): EndpointRef;
|
|
98
119
|
start(): Promise<void>;
|
|
120
|
+
/** Open the connection and bind everything that hangs off it: status watch, presence
|
|
121
|
+
* watch + heartbeat, channel registry, and the durable consumers. Re-runnable — a
|
|
122
|
+
* reconnect calls it again after {@link clearConnectionScoped}; every binding is
|
|
123
|
+
* idempotent (durables bind by name, JetStream dedups by msgID, KV opens are idempotent). */
|
|
124
|
+
private connectAndBind;
|
|
125
|
+
/** Tear down everything {@link connectAndBind} (re)creates, so a rebind can't leak a
|
|
126
|
+
* second heartbeat, double-pump a consumer, or keep stale roster ghosts. Caller-owned
|
|
127
|
+
* subs (tap/serve) are left alone — they aren't rebuilt here. */
|
|
128
|
+
private clearConnectionScoped;
|
|
129
|
+
/** If stop() ran during a rebuild's `await connectAndBind`, the just-bound connection +
|
|
130
|
+
* heartbeat + supervisor would be left live on a stopped endpoint. Tear that fresh
|
|
131
|
+
* connection back down and report it. Reads `this.nc` in its own scope (a bare `this.nc`
|
|
132
|
+
* in doRebuild narrows to `never` via TS inlining connectAndBind's assignment). Returns
|
|
133
|
+
* true iff it tore something down (caller bails out of the rebuild). */
|
|
134
|
+
private tearDownIfStopped;
|
|
135
|
+
/** Watch for a terminal close (nats.js has exhausted its own reconnect) and rebuild.
|
|
136
|
+
* Our own stop()/drain also resolves closed(), so the `stopped` guard keeps a clean
|
|
137
|
+
* shutdown from re-establishing. The identity guard (`this.nc !== nc`) no-ops a STALE
|
|
138
|
+
* supervisor — one whose connection reconnect()/rebuild already replaced — so only a
|
|
139
|
+
* close of the CURRENT connection triggers a rebuild. The rebuild itself is serialized
|
|
140
|
+
* with the manual path via {@link rebuild}. */
|
|
141
|
+
private superviseConnection;
|
|
142
|
+
/** Single serialized rebuild: drain the old connection and rebind via {@link connectAndBind},
|
|
143
|
+
* guarded so concurrent triggers (manual {@link reconnect}, the supervisor's closed(), the
|
|
144
|
+
* retry loop) coalesce onto ONE in-flight rebuild instead of racing two connectAndBinds and
|
|
145
|
+
* leaking a connection. Returns the shared promise; a second caller gets the in-flight one. */
|
|
146
|
+
private rebuild;
|
|
147
|
+
/** The transition: stop the connection-scoped timers FIRST (so nothing live touches
|
|
148
|
+
* this.nc during the null window), drop the connection refs, drain the old nc, then
|
|
149
|
+
* rebind + re-arm the supervisor on the fresh connection. clearConnectionScoped is
|
|
150
|
+
* idempotent, so connectAndBind's own call here is a noop. */
|
|
151
|
+
private doRebuild;
|
|
152
|
+
/** Rebuild with backoff until it sticks or we're stopped. Interruptible: a manual
|
|
153
|
+
* {@link reconnect} kicks the backoff so the next attempt runs immediately instead of
|
|
154
|
+
* awaiting the full retryMs. One loop at a time ({@link reestablishing}); concurrent
|
|
155
|
+
* triggers coalesce via {@link rebuild}. */
|
|
156
|
+
private reestablishLoop;
|
|
157
|
+
/** Cut an in-flight reestablish backoff short so the next attempt runs immediately, and
|
|
158
|
+
* clear its timer so it can't fire later on a stopped/restarted loop. */
|
|
159
|
+
private kickBackoff;
|
|
160
|
+
/** Manual reconnect: tear down the current connection and rebuild, WITHOUT the permanent
|
|
161
|
+
* stop (stopped/stopping stay false). Serialized with the self-heal supervisor via
|
|
162
|
+
* {@link rebuild}, and interruptible — if a backoff is in flight, kick it so the attempt
|
|
163
|
+
* is now, not in retryMs. Throws if stopped. On failure, leaves {@link reestablishLoop}
|
|
164
|
+
* running in the background so the endpoint never stays dead, and rethrows so the caller
|
|
165
|
+
* can report it. */
|
|
166
|
+
reconnect(): Promise<void>;
|
|
99
167
|
stop(): Promise<void>;
|
|
100
168
|
/** Multicast: broadcast to everyone on a channel. */
|
|
101
169
|
multicast(text: string, opts?: {
|
|
@@ -154,6 +222,13 @@ export declare class CotalEndpoint extends EventEmitter {
|
|
|
154
222
|
leaveChannel(channel: string): Promise<{
|
|
155
223
|
left: boolean;
|
|
156
224
|
}>;
|
|
225
|
+
/** Move the chat live-tail durable to a new channel set. OPEN mode self-serves the
|
|
226
|
+
* `consumers.update` (the agent owns its durable). AUTH mode is bind-only — the agent has no
|
|
227
|
+
* UPDATE grant — so it sends a mediated control request to the manager, which validates the set
|
|
228
|
+
* ⊆ its `allowSubscribe` before moving the filter. Throws clearly when no privileged responder is
|
|
229
|
+
* present: a manager-less standalone auth session is fixed to its boot subscribe set — a
|
|
230
|
+
* documented limitation, not a silent degrade. */
|
|
231
|
+
private setChatFilter;
|
|
157
232
|
/** One coherent channel model for dashboards: every channel that has messages OR a registry
|
|
158
233
|
* entry (configured-but-empty), each tagged with its {@link ChannelConfig}. Works even on
|
|
159
234
|
* observer endpoints (no consumers needed). */
|
|
@@ -203,10 +278,30 @@ export declare class CotalEndpoint extends EventEmitter {
|
|
|
203
278
|
* denial is never mistaken for absence (which already has a benign cause: MCP reconnect).
|
|
204
279
|
*/
|
|
205
280
|
private watchStatus;
|
|
281
|
+
/** The error message for a guard that finds the endpoint unbound: "reconnecting" during a
|
|
282
|
+
* rebuild's null window OR an inter-retry backoff (so a concurrent op reports the real
|
|
283
|
+
* reason, not "not started" — `reestablishing` spans the whole retry loop incl. backoff),
|
|
284
|
+
* else "endpoint not started" (genuine pre-start). */
|
|
285
|
+
private notLiveMsg;
|
|
206
286
|
private publishMsg;
|
|
207
287
|
/** Create the three backing streams for this space (idempotent). Open-mode lazy create;
|
|
208
288
|
* the same definitions are used by `cotal up` at privileged setup. */
|
|
209
289
|
private ensureStreams;
|
|
290
|
+
/**
|
|
291
|
+
* Privileged: pre-create an agent's bind-only chat live-tail durable (auth mode), filtered to its
|
|
292
|
+
* `subscribe` set, so the agent can BIND it without holding CONSUMER.CREATE/UPDATE on CHAT — its
|
|
293
|
+
* live read can't be self-widened past `allowSubscribe`. The creator sets the filter; the agent
|
|
294
|
+
* never does (mirrors {@link provisionDmInbox}). Idempotent. The caller must be permissive on CHAT.
|
|
295
|
+
*/
|
|
296
|
+
provisionChatDurable(targetId: string, subscribe: string[]): Promise<void>;
|
|
297
|
+
/**
|
|
298
|
+
* Privileged: move an agent's bind-only chat durable to a new channel set — the write half of the
|
|
299
|
+
* mediated join/leave. The manager calls this AFTER validating the set ⊆ the agent's
|
|
300
|
+
* `allowSubscribe`; the agent itself has no UPDATE grant, so this trusted path is the only way its
|
|
301
|
+
* live filter moves. The filter is rebuilt from channel names here (not from agent-supplied
|
|
302
|
+
* subjects) so a caller can't smuggle a hand-built filter.
|
|
303
|
+
*/
|
|
304
|
+
setChatFilterFor(targetId: string, channels: string[]): Promise<void>;
|
|
210
305
|
/**
|
|
211
306
|
* Privileged: pre-create an agent's DM inbox durable (auth mode), so the agent can BIND
|
|
212
307
|
* it without holding CONSUMER.CREATE on DM_<space>. The creator sets the filter to
|
|
@@ -251,11 +346,23 @@ export declare class CotalEndpoint extends EventEmitter {
|
|
|
251
346
|
* — the authoritative read for a join decision (a join is infrequent, and at startup the async
|
|
252
347
|
* cache may not have caught up). Falls to the built-in default only with no registry open. */
|
|
253
348
|
private joinPolicyFresh;
|
|
254
|
-
/**
|
|
255
|
-
*
|
|
256
|
-
*
|
|
349
|
+
/**
|
|
350
|
+
* Read retained chat history on ONE channel subject through a name-scoped, single-filter
|
|
351
|
+
* EPHEMERAL pull consumer — the broker-contained replacement for the removed Direct Get. The
|
|
352
|
+
* create rides `$JS.API.CONSUMER.CREATE.<CHAT>.<chathist_id>.<subject>`, whose trailing filter
|
|
353
|
+
* token nats-server pins to the request body (JSConsumerCreateFilterSubjectMismatchErr, code
|
|
354
|
+
* 10131) — so an agent can only ever replay a channel its `allowSubscribe` grants. Single filter
|
|
355
|
+
* only (plural isn't ACL-constrainable); `AckPolicy.None` + `mem_storage` so it leaves no durable
|
|
356
|
+
* state, and it is deleted right after. Returns raw messages in stream order from `start`,
|
|
357
|
+
* stopping once past `untilSeq` (exclusive of it) or after `limit`. The per-instance name means
|
|
358
|
+
* calls must be serial — every reader here awaits to completion, so they are.
|
|
359
|
+
*/
|
|
360
|
+
private collectHistory;
|
|
361
|
+
private collectHistoryInner;
|
|
362
|
+
/** Read a channel's retained history up to `upToSeq` (the join frontier) and emit each message
|
|
363
|
+
* as a `historical` "message" event. `sinceMs` bounds how far back via a native consumer
|
|
257
364
|
* `start_time` (now − window); unset ⇒ the full retained window. New messages (`seq > upToSeq`)
|
|
258
|
-
* are skipped — the live tail owns them.
|
|
365
|
+
* are skipped — the live tail owns them. Reads through the contained {@link collectHistory}. */
|
|
259
366
|
private backfillChannel;
|
|
260
367
|
/**
|
|
261
368
|
* Replay-gated pull of a channel's retained ambient from `sinceSeq` (exclusive) forward — the
|
|
@@ -266,8 +373,8 @@ export declare class CotalEndpoint extends EventEmitter {
|
|
|
266
373
|
*
|
|
267
374
|
* Honors the **same** per-channel replay gate as join-backfill ({@link joinPolicyFresh}): a
|
|
268
375
|
* `replay=off` channel returns nothing, so `focus` can't become a history bypass for a channel
|
|
269
|
-
* that denies replay to everyone else (
|
|
270
|
-
* app gate
|
|
376
|
+
* that denies replay to everyone else (the read ACL bounds *which* channels recall can touch; this
|
|
377
|
+
* app gate bounds *whether* a permitted channel replays).
|
|
271
378
|
*/
|
|
272
379
|
recallChannel(channel: string, sinceSeq: number): Promise<{
|
|
273
380
|
messages: CotalMessage[];
|
|
@@ -282,7 +389,8 @@ export declare class CotalEndpoint extends EventEmitter {
|
|
|
282
389
|
* traffic.) */
|
|
283
390
|
private channelDropped;
|
|
284
391
|
/** Sequence of the earliest message still retained on a channel subject (any sender), or
|
|
285
|
-
* undefined if nothing is retained. One
|
|
392
|
+
* undefined if nothing is retained. One message through the contained {@link collectHistory} —
|
|
393
|
+
* used for the recall drop marker. */
|
|
286
394
|
private channelOldestSeq;
|
|
287
395
|
private publishPresence;
|
|
288
396
|
private startPresenceWatch;
|
|
@@ -305,6 +413,13 @@ interface AuthOpts {
|
|
|
305
413
|
creds?: string;
|
|
306
414
|
tls?: boolean;
|
|
307
415
|
}
|
|
416
|
+
/** True when a failure is a NATS *permission denial* — the subject is forbidden to this
|
|
417
|
+
* endpoint's creds — rather than a missing responder or a timeout. The two need opposite
|
|
418
|
+
* fixes (grant the capability vs. start/await the service), so callers (e.g. a control
|
|
419
|
+
* request that can't reach the manager) must tell them apart instead of defaulting to
|
|
420
|
+
* "service down". Unwraps a wrapped `cause` and falls back to the server's error text, since
|
|
421
|
+
* a denied publish can surface either as the typed error or inside a request rejection. */
|
|
422
|
+
export declare function isPermissionDenied(e: unknown): boolean;
|
|
308
423
|
/** Whether a NATS server is *running* at `servers`. True on a successful connect AND on an
|
|
309
424
|
* auth rejection — an auth error means a server is there, just refusing these creds (so the
|
|
310
425
|
* caller should surface the real auth failure, not a misleading "server down", and `up`
|
package/dist/endpoint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"endpoint.d.ts","sourceRoot":"","sources":["../src/endpoint.ts"],"names":[],"mappings":"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"}
|