agent-embassy 4.2.0 → 4.3.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 (42) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/README.md +27 -16
  3. package/SECURITY.md +25 -11
  4. package/dist/src/gateway/broker-control.js +9 -2
  5. package/dist/src/gateway/broker-control.js.map +1 -1
  6. package/dist/src/gateway/broker.d.ts +14 -0
  7. package/dist/src/gateway/broker.js +6 -2
  8. package/dist/src/gateway/broker.js.map +1 -1
  9. package/dist/src/gateway/codex-discovery.d.ts +42 -0
  10. package/dist/src/gateway/codex-discovery.js +604 -0
  11. package/dist/src/gateway/codex-discovery.js.map +1 -0
  12. package/dist/src/gateway/codex-stateless-transport.d.ts +1 -1
  13. package/dist/src/gateway/codex-stateless-transport.js +126 -18
  14. package/dist/src/gateway/codex-stateless-transport.js.map +1 -1
  15. package/dist/src/gateway/core-cli.js +8 -5
  16. package/dist/src/gateway/core-cli.js.map +1 -1
  17. package/dist/src/gateway/core-version.d.ts +1 -1
  18. package/dist/src/gateway/core-version.js +1 -1
  19. package/dist/src/gateway/endpoint-directory.d.ts +12 -0
  20. package/dist/src/gateway/endpoint-directory.js +94 -4
  21. package/dist/src/gateway/endpoint-directory.js.map +1 -1
  22. package/dist/src/gateway/ledger-codec.js +11 -6
  23. package/dist/src/gateway/ledger-codec.js.map +1 -1
  24. package/dist/src/gateway/ledger.d.ts +2 -1
  25. package/dist/src/gateway/ledger.js +5 -2
  26. package/dist/src/gateway/ledger.js.map +1 -1
  27. package/dist/src/gateway/local-control.d.ts +1 -1
  28. package/dist/src/gateway/local-control.js +1 -1
  29. package/dist/src/gateway/owned-state.d.ts +1 -0
  30. package/dist/src/gateway/owned-state.js +1 -1
  31. package/dist/src/gateway/owned-state.js.map +1 -1
  32. package/dist/src/gateway/runtime.d.ts +4 -2
  33. package/dist/src/gateway/runtime.js +18 -5
  34. package/dist/src/gateway/runtime.js.map +1 -1
  35. package/dist/src/gateway/tui.d.ts +1 -0
  36. package/dist/src/gateway/tui.js +6 -3
  37. package/dist/src/gateway/tui.js.map +1 -1
  38. package/docs/CONFIGURATION.md +57 -17
  39. package/docs/DELIVERY.md +18 -6
  40. package/docs/GATEWAY-ARCHITECTURE.md +43 -21
  41. package/package.json +2 -2
  42. package/skills/embassy-peer/SKILL.md +6 -6
@@ -0,0 +1,604 @@
1
+ import { CORE_VERSION } from "./core-version.js";
2
+ import { createLocalCodexTransportFactory, LocalCodexTransportError, } from "./codex-local-transport.js";
3
+ const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
4
+ const SOURCE_KINDS = [
5
+ "cli", "vscode", "exec", "appServer",
6
+ ];
7
+ const OPT_OUTS = [
8
+ "item/started", "item/completed", "item/agentMessage/delta",
9
+ "item/reasoning/textDelta", "item/reasoning/summaryTextDelta",
10
+ "item/commandExecution/outputDelta", "thread/tokenUsage/updated",
11
+ "turn/diff/updated", "turn/plan/updated",
12
+ ];
13
+ const DEFAULT_RECONNECT_DELAYS = [250, 1_000, 5_000];
14
+ class DiscoveryError extends Error {
15
+ code;
16
+ constructor(code) {
17
+ super(code);
18
+ this.code = code;
19
+ }
20
+ }
21
+ const record = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
22
+ function rootThread(value) {
23
+ if (!record(value) || value.source === undefined)
24
+ throw new DiscoveryError("PROTOCOL_ERROR");
25
+ return value.parentThreadId == null && ["cli", "vscode", "exec", "mcp"].includes(String(value.source));
26
+ }
27
+ function status(value) {
28
+ if (!record(value) || typeof value.type !== "string")
29
+ return "unknown";
30
+ if (value.type === "notLoaded")
31
+ return "dormant";
32
+ if (value.type === "idle" || value.type === "systemError") {
33
+ return value.type;
34
+ }
35
+ if (value.type !== "active")
36
+ return "unknown";
37
+ if (value.activeFlags === undefined)
38
+ return "busy";
39
+ if (!Array.isArray(value.activeFlags) || value.activeFlags.length > 32 ||
40
+ !value.activeFlags.every((flag) => typeof flag === "string" && flag.length <= 128)) {
41
+ throw new DiscoveryError("PROTOCOL_ERROR");
42
+ }
43
+ if (value.activeFlags.includes("waitingOnApproval") || value.activeFlags.includes("waitingOnUserInput"))
44
+ return "waiting";
45
+ return "busy";
46
+ }
47
+ function optionalText(value) {
48
+ if (value === undefined || value === null)
49
+ return undefined;
50
+ if (typeof value !== "string" || value.length > 256 || value.includes("\0")) {
51
+ throw new DiscoveryError("PROTOCOL_ERROR");
52
+ }
53
+ return value;
54
+ }
55
+ function parseThread(value) {
56
+ if (!record(value) || typeof value.id !== "string" || !UUID.test(value.id)) {
57
+ throw new DiscoveryError("PROTOCOL_ERROR");
58
+ }
59
+ const observedStatus = status(value.status);
60
+ const thread = { id: value.id.toLowerCase(), status: observedStatus, loaded: observedStatus !== "dormant" && observedStatus !== "unknown" };
61
+ const name = optionalText(value.name);
62
+ if (name !== undefined)
63
+ thread.name = name;
64
+ return Object.freeze(thread);
65
+ }
66
+ class RpcSession {
67
+ transport;
68
+ requestTimeoutMs;
69
+ setTimer;
70
+ clearTimer;
71
+ notification;
72
+ lost;
73
+ #nextId = 1;
74
+ #pending;
75
+ #lost = false;
76
+ #remove;
77
+ constructor(transport, requestTimeoutMs, setTimer, clearTimer, notification, lost) {
78
+ this.transport = transport;
79
+ this.requestTimeoutMs = requestTimeoutMs;
80
+ this.setTimer = setTimer;
81
+ this.clearTimer = clearTimer;
82
+ this.notification = notification;
83
+ this.lost = lost;
84
+ this.#remove = [
85
+ transport.onMessage((payload) => this.#message(payload)),
86
+ transport.onClose(() => this.#fail("TRANSPORT_CLOSED")),
87
+ transport.onError(() => this.#fail("TRANSPORT_CLOSED")),
88
+ ];
89
+ }
90
+ async initialize() {
91
+ const result = await this.request("initialize", {
92
+ capabilities: { experimentalApi: true, optOutNotificationMethods: OPT_OUTS },
93
+ clientInfo: { name: "embassy", title: "Embassy", version: CORE_VERSION },
94
+ });
95
+ if (!record(result))
96
+ throw new DiscoveryError("PROTOCOL_ERROR");
97
+ void this.transport.send(JSON.stringify({ method: "initialized", params: {} }))
98
+ .catch(() => this.#fail("TRANSPORT_CLOSED"));
99
+ }
100
+ async request(method, params) {
101
+ if (this.#lost)
102
+ throw new DiscoveryError("TRANSPORT_CLOSED");
103
+ if (this.#pending !== undefined)
104
+ throw new DiscoveryError("PROTOCOL_ERROR");
105
+ const id = this.#nextId++;
106
+ const response = new Promise((resolve, reject) => {
107
+ const timer = this.setTimer(() => {
108
+ if (this.#pending?.id !== id)
109
+ return;
110
+ this.#pending = undefined;
111
+ reject(new DiscoveryError("REQUEST_TIMEOUT"));
112
+ }, this.requestTimeoutMs);
113
+ this.#pending = { id, reject, resolve, timer };
114
+ });
115
+ void Promise.resolve().then(() => this.transport.send(JSON.stringify({ id, method, params })))
116
+ .catch(() => this.#reject("TRANSPORT_CLOSED"));
117
+ return await response;
118
+ }
119
+ dispose() {
120
+ this.#lost = true;
121
+ for (const remove of this.#remove.splice(0))
122
+ remove();
123
+ this.#reject("TRANSPORT_CLOSED");
124
+ }
125
+ #message(payload) {
126
+ if (Buffer.byteLength(payload) > 1024 * 1024) {
127
+ this.#fail("PROTOCOL_ERROR");
128
+ return;
129
+ }
130
+ let parsed;
131
+ try {
132
+ parsed = JSON.parse(payload);
133
+ }
134
+ catch {
135
+ this.#fail("PROTOCOL_ERROR");
136
+ return;
137
+ }
138
+ if (!record(parsed)) {
139
+ this.#fail("PROTOCOL_ERROR");
140
+ return;
141
+ }
142
+ if (typeof parsed.method === "string") {
143
+ if (parsed.id === undefined)
144
+ this.notification(parsed.method, parsed.params);
145
+ return; // Server requests and unwanted deltas are drained, never answered or retained.
146
+ }
147
+ if (typeof parsed.id !== "number" || parsed.id !== this.#pending?.id) {
148
+ this.#fail("PROTOCOL_ERROR");
149
+ return;
150
+ }
151
+ const pending = this.#pending;
152
+ this.#pending = undefined;
153
+ this.clearTimer(pending.timer);
154
+ if (Object.hasOwn(parsed, "result") === Object.hasOwn(parsed, "error")) {
155
+ pending.reject(new DiscoveryError("PROTOCOL_ERROR"));
156
+ return;
157
+ }
158
+ if (Object.hasOwn(parsed, "error")) {
159
+ pending.reject(new DiscoveryError("RPC_REJECTED"));
160
+ return;
161
+ }
162
+ pending.resolve(parsed.result);
163
+ }
164
+ #reject(code) {
165
+ const pending = this.#pending;
166
+ if (pending === undefined)
167
+ return;
168
+ this.#pending = undefined;
169
+ this.clearTimer(pending.timer);
170
+ pending.reject(new DiscoveryError(code));
171
+ }
172
+ #fail(code) {
173
+ if (this.#lost)
174
+ return;
175
+ this.#lost = true;
176
+ this.#reject(code);
177
+ this.lost();
178
+ }
179
+ }
180
+ class Observer {
181
+ options;
182
+ #max;
183
+ #refreshMs;
184
+ #requestMs;
185
+ #delays;
186
+ #now;
187
+ #setTimer;
188
+ #clearTimer;
189
+ #createFactory;
190
+ #threads = new Map();
191
+ #removals = new Set();
192
+ #events = [];
193
+ #sequence = 0;
194
+ #snapshot = Object.freeze({
195
+ threads: [], removedIds: [], observation: { truncated: false, complete: false },
196
+ });
197
+ #factory;
198
+ #session;
199
+ #timer;
200
+ #running;
201
+ #publishPending;
202
+ #publishRunning;
203
+ #unsubscribe = new Set();
204
+ #unsubscribeRunning;
205
+ #cleanup;
206
+ #cleanupFailed = false;
207
+ #epoch = 0;
208
+ #started = false;
209
+ #closed = false;
210
+ #retry = 0;
211
+ constructor(options, dependencies) {
212
+ this.options = options;
213
+ this.#max = Math.min(integer(options.maxEndpoints, 20), 20);
214
+ this.#refreshMs = integer(options.refreshIntervalMs, 5_000);
215
+ this.#requestMs = integer(options.requestTimeoutMs, 15_000);
216
+ this.#delays = options.reconnectDelaysMs ?? DEFAULT_RECONNECT_DELAYS;
217
+ if (this.#delays.length === 0 || this.#delays.some((delay) => !Number.isSafeInteger(delay) || delay < 0))
218
+ throw new DiscoveryError("INVALID_CONFIGURATION");
219
+ this.#now = dependencies.now ?? (() => new Date());
220
+ this.#setTimer = dependencies.setTimer ?? setTimeout;
221
+ this.#clearTimer = dependencies.clearTimer ?? clearTimeout;
222
+ this.#createFactory = dependencies.createFactory ?? ((factoryOptions) => createLocalCodexTransportFactory(factoryOptions));
223
+ }
224
+ start() {
225
+ if (this.#closed || this.#started)
226
+ return;
227
+ this.#started = true;
228
+ void this.refresh().catch(() => undefined);
229
+ }
230
+ refresh() {
231
+ if (this.#closed)
232
+ return Promise.reject(new DiscoveryError("TRANSPORT_CLOSED"));
233
+ this.#cancelTimer();
234
+ if (this.#running !== undefined)
235
+ return this.#running;
236
+ this.#running = this.#run().finally(() => { this.#running = undefined; });
237
+ return this.#running;
238
+ }
239
+ snapshot() { return this.#snapshot; }
240
+ async close() {
241
+ if (this.#closed)
242
+ return;
243
+ this.#closed = true;
244
+ this.#epoch += 1;
245
+ this.#cancelTimer();
246
+ const running = this.#running;
247
+ await this.#disconnect();
248
+ await running?.catch(() => undefined);
249
+ await this.#publishRunning?.catch(() => undefined);
250
+ }
251
+ async #run() {
252
+ try {
253
+ if (this.#session === undefined)
254
+ await this.#connect();
255
+ await this.#scan(this.#session);
256
+ this.#retry = 0;
257
+ this.#schedule(this.#refreshMs);
258
+ }
259
+ catch (error) {
260
+ await this.#disconnect();
261
+ await this.#observeError(error);
262
+ this.#schedule(this.#delays[Math.min(this.#retry++, this.#delays.length - 1)]);
263
+ throw error;
264
+ }
265
+ }
266
+ async #connect() {
267
+ await this.#cleanup;
268
+ if (this.#cleanupFailed)
269
+ throw new DiscoveryError("CLEANUP_FAILED");
270
+ const epoch = this.#epoch;
271
+ const factory = await this.#createFactory({ ...this.options.local, hostId: this.options.hostId });
272
+ if (this.#closed || epoch !== this.#epoch) {
273
+ await factory.close();
274
+ throw new DiscoveryError("TRANSPORT_CLOSED");
275
+ }
276
+ let session;
277
+ this.#factory = factory;
278
+ try {
279
+ const transport = await factory.connectTransport();
280
+ if (this.#closed || epoch !== this.#epoch) {
281
+ await transport.close();
282
+ throw new DiscoveryError("TRANSPORT_CLOSED");
283
+ }
284
+ session = new RpcSession(transport, this.#requestMs, this.#setTimer, this.#clearTimer, (method, params) => this.#event(method, params), () => this.#connectionLost(session));
285
+ this.#session = session;
286
+ this.#serial = session.initialize();
287
+ await this.#serial;
288
+ }
289
+ catch (error) {
290
+ await this.#disconnect();
291
+ throw error;
292
+ }
293
+ }
294
+ async #scan(session) {
295
+ const startSequence = this.#sequence;
296
+ const scanned = new Map();
297
+ let cursor, truncated = false;
298
+ const cursors = new Set();
299
+ do {
300
+ const page = await this.#serialRequest(session, "thread/list", {
301
+ archived: false, limit: 20, sortKey: "recency_at", sourceKinds: SOURCE_KINDS, useStateDbOnly: true,
302
+ ...(cursor === undefined ? {} : { cursor }),
303
+ });
304
+ if (!record(page) || !Array.isArray(page.data))
305
+ throw new DiscoveryError("PROTOCOL_ERROR");
306
+ for (const value of page.data) {
307
+ if (!rootThread(value))
308
+ continue;
309
+ const thread = parseThread(value);
310
+ if (!scanned.has(thread.id))
311
+ scanned.set(thread.id, thread);
312
+ if (scanned.size >= this.#max) {
313
+ truncated = this.#max < 20;
314
+ break;
315
+ }
316
+ }
317
+ if (scanned.size >= this.#max || page.nextCursor == null)
318
+ break;
319
+ if (typeof page.nextCursor !== "string" || !page.nextCursor || page.nextCursor.length > 256 || cursors.has(page.nextCursor))
320
+ throw new DiscoveryError("PROTOCOL_ERROR");
321
+ cursor = page.nextCursor;
322
+ cursors.add(cursor);
323
+ if (cursors.size >= 21) {
324
+ truncated = true;
325
+ break;
326
+ }
327
+ } while (true);
328
+ // Pinned thread/list enriches each row with live ThreadWatchManager status;
329
+ // no whole-daemon loaded-ID enumeration is needed for this root-only window.
330
+ const firstEvent = this.#events[0]?.sequence ?? this.#sequence + 1;
331
+ const eventOverflow = firstEvent > startSequence + 1;
332
+ if (!eventOverflow) {
333
+ const merged = new Map();
334
+ for (const thread of scanned.values()) {
335
+ if (merged.size === this.#max)
336
+ break;
337
+ merged.set(thread.id, thread);
338
+ }
339
+ if (truncated)
340
+ for (const thread of this.#threads.values()) {
341
+ if (!merged.has(thread.id) && merged.size < this.#max)
342
+ merged.set(thread.id, { ...thread, status: "unknown", loaded: false });
343
+ }
344
+ for (const event of this.#events) {
345
+ if (event.sequence > startSequence)
346
+ truncated = this.#apply(event, merged) || truncated;
347
+ }
348
+ this.#threads = merged;
349
+ }
350
+ await this.#setSnapshot({
351
+ observedAt: this.#now().toISOString(),
352
+ truncated: truncated || eventOverflow,
353
+ complete: !truncated && !eventOverflow,
354
+ });
355
+ }
356
+ #event(method, params) {
357
+ // Initialization subscribes us to every new thread, including internal
358
+ // sources outside thread/list's root filters. Release those subscriptions too.
359
+ if (method === "thread/started" && record(params) && record(params.thread) &&
360
+ typeof params.thread.id === "string" && UUID.test(params.thread.id)) {
361
+ const id = params.thread.id.toLowerCase();
362
+ if (!this.#unsubscribe.has(id) && this.#unsubscribe.size >= this.#max) {
363
+ this.#connectionLost(this.#session, new DiscoveryError("OBSERVER_BACKPRESSURE"));
364
+ return;
365
+ }
366
+ this.#unsubscribe.add(id);
367
+ this.#drainUnsubscribe();
368
+ }
369
+ let event;
370
+ try {
371
+ event = this.#parseEvent(method, params);
372
+ }
373
+ catch (error) {
374
+ this.#session?.dispose();
375
+ this.#connectionLost(this.#session, error);
376
+ return;
377
+ }
378
+ if (event === undefined)
379
+ return;
380
+ this.#events.push(event);
381
+ if (this.#events.length > 512)
382
+ this.#events.shift();
383
+ let overflow;
384
+ try {
385
+ overflow = this.#apply(event, this.#threads);
386
+ }
387
+ catch (error) {
388
+ this.#connectionLost(this.#session, error);
389
+ return;
390
+ }
391
+ void this.#setSnapshot({
392
+ ...this.#snapshot.observation,
393
+ complete: this.#snapshot.observation.complete && !overflow,
394
+ truncated: this.#snapshot.observation.truncated || overflow,
395
+ }).catch(() => undefined);
396
+ }
397
+ #parseEvent(method, params) {
398
+ if (method === "thread/started") {
399
+ if (!record(params))
400
+ throw new DiscoveryError("PROTOCOL_ERROR");
401
+ const thread = parseThread(params.thread);
402
+ if (!rootThread(params.thread))
403
+ return undefined;
404
+ return Object.freeze({
405
+ kind: "upsert", sequence: ++this.#sequence,
406
+ thread: Object.freeze({ ...thread, loaded: true }),
407
+ });
408
+ }
409
+ if (!["thread/status/changed", "thread/name/updated", "thread/archived",
410
+ "thread/deleted", "thread/closed"].includes(method))
411
+ return undefined;
412
+ const sequence = ++this.#sequence;
413
+ if (!record(params) || typeof params.threadId !== "string" || !UUID.test(params.threadId)) {
414
+ throw new DiscoveryError("PROTOCOL_ERROR");
415
+ }
416
+ const id = params.threadId.toLowerCase();
417
+ if (method === "thread/archived" || method === "thread/deleted") {
418
+ return Object.freeze({ kind: "remove", sequence, id });
419
+ }
420
+ if (method === "thread/closed")
421
+ return Object.freeze({ kind: "closed", sequence, id });
422
+ if (method === "thread/status/changed") {
423
+ return Object.freeze({ kind: "status", sequence, id, status: status(params.status) });
424
+ }
425
+ const name = optionalText(params.threadName);
426
+ return name === undefined
427
+ ? Object.freeze({ kind: "name", sequence, id })
428
+ : Object.freeze({ kind: "name", sequence, id, name });
429
+ }
430
+ #apply(event, target) {
431
+ if (event.kind === "upsert") {
432
+ if (target.has(event.thread.id))
433
+ target.set(event.thread.id, event.thread);
434
+ return false; // Only the next recency query can admit a root to the window.
435
+ }
436
+ if (event.kind === "remove") {
437
+ if (!this.#removals.has(event.id) && this.#removals.size >= this.#max * 4)
438
+ throw new DiscoveryError("PROTOCOL_ERROR");
439
+ target.delete(event.id);
440
+ this.#removals.add(event.id);
441
+ return false;
442
+ }
443
+ const existing = target.get(event.id);
444
+ if (existing === undefined)
445
+ return false;
446
+ if (event.kind === "closed") {
447
+ target.set(event.id, Object.freeze({ ...existing, status: "dormant", loaded: false }));
448
+ }
449
+ else if (event.kind === "status") {
450
+ target.set(event.id, Object.freeze({ ...existing, status: event.status, loaded: true }));
451
+ }
452
+ else {
453
+ const next = { ...existing };
454
+ if (event.name === undefined)
455
+ delete next.name;
456
+ else
457
+ next.name = event.name;
458
+ target.set(event.id, Object.freeze(next));
459
+ }
460
+ return false;
461
+ }
462
+ #serial = Promise.resolve(undefined);
463
+ #serialRequest(session, method, params) {
464
+ if (session === undefined)
465
+ return Promise.reject(new DiscoveryError("TRANSPORT_CLOSED"));
466
+ const request = this.#serial.then(() => session.request(method, params));
467
+ this.#serial = request.catch(() => undefined);
468
+ return request;
469
+ }
470
+ #drainUnsubscribe() {
471
+ if (this.#unsubscribeRunning !== undefined || this.#closed)
472
+ return;
473
+ const session = this.#session;
474
+ if (session === undefined)
475
+ return;
476
+ this.#unsubscribeRunning = (async () => {
477
+ while (this.#session === session) {
478
+ const id = this.#unsubscribe.values().next().value;
479
+ if (id === undefined)
480
+ break;
481
+ this.#unsubscribe.delete(id);
482
+ await this.#serialRequest(session, "thread/unsubscribe", { threadId: id });
483
+ }
484
+ })().catch((error) => {
485
+ this.#connectionLost(session, error);
486
+ }).finally(() => {
487
+ this.#unsubscribeRunning = undefined;
488
+ if (this.#unsubscribe.size > 0)
489
+ this.#drainUnsubscribe();
490
+ });
491
+ }
492
+ #connectionLost(session, error = new DiscoveryError("TRANSPORT_CLOSED")) {
493
+ if (session === undefined || session !== this.#session || this.#closed)
494
+ return;
495
+ this.#cancelTimer();
496
+ void this.#observeError(error).catch(() => undefined);
497
+ void this.#disconnect().then(() => this.#schedule(this.#delays[Math.min(this.#retry++, this.#delays.length - 1)]), () => { void this.#observeError(new DiscoveryError("CLEANUP_FAILED")).catch(() => undefined); });
498
+ }
499
+ async #disconnect() {
500
+ const session = this.#session;
501
+ const factory = this.#factory;
502
+ this.#session = undefined;
503
+ this.#factory = undefined;
504
+ session?.dispose();
505
+ this.#unsubscribe.clear();
506
+ if (factory !== undefined) {
507
+ this.#cleanup = (async () => {
508
+ let failure;
509
+ try {
510
+ await session?.transport.close();
511
+ }
512
+ catch (error) {
513
+ failure = error;
514
+ }
515
+ try {
516
+ await factory.close();
517
+ }
518
+ catch (error) {
519
+ failure ??= error;
520
+ }
521
+ if (failure !== undefined) {
522
+ this.#cleanupFailed = true;
523
+ throw failure;
524
+ }
525
+ })();
526
+ }
527
+ await this.#cleanup;
528
+ }
529
+ #observeError(error) {
530
+ const safeErrorCode = error instanceof LocalCodexTransportError || error instanceof DiscoveryError
531
+ ? error.code : "PROTOCOL_ERROR";
532
+ return this.#setSnapshot({ ...this.#snapshot.observation, safeErrorCode, complete: false });
533
+ }
534
+ #setSnapshot(observation) {
535
+ const normalized = { ...observation };
536
+ if (normalized.safeErrorCode === undefined)
537
+ delete normalized.safeErrorCode;
538
+ this.#snapshot = Object.freeze({
539
+ threads: Object.freeze([...this.#threads.values()]),
540
+ removedIds: Object.freeze([...this.#removals]),
541
+ observation: Object.freeze(normalized),
542
+ });
543
+ this.#publishPending = this.#snapshot;
544
+ if (this.#publishRunning === undefined) {
545
+ this.#publishRunning = Promise.resolve().then(() => this.#publish()).finally(() => {
546
+ this.#publishRunning = undefined;
547
+ if (this.#publishPending !== undefined)
548
+ void this.#setSnapshot(this.#snapshot.observation).catch(() => undefined);
549
+ });
550
+ return this.#publishRunning;
551
+ }
552
+ return this.#publishRunning;
553
+ }
554
+ async #publish() {
555
+ let failure;
556
+ while (this.#publishPending !== undefined) {
557
+ const delivered = this.#publishPending;
558
+ this.#publishPending = undefined;
559
+ try {
560
+ await this.options.onSnapshot(delivered);
561
+ for (const id of delivered.removedIds) {
562
+ if (!this.#threads.has(id))
563
+ this.#removals.delete(id);
564
+ }
565
+ }
566
+ catch (error) {
567
+ failure ??= error;
568
+ }
569
+ if (this.#snapshot === delivered &&
570
+ this.#removals.size !== delivered.removedIds.length) {
571
+ this.#snapshot = Object.freeze({
572
+ ...delivered, removedIds: Object.freeze([...this.#removals]),
573
+ });
574
+ }
575
+ }
576
+ if (failure !== undefined)
577
+ throw failure;
578
+ }
579
+ #schedule(milliseconds) {
580
+ if (!this.#started || this.#closed || this.#timer !== undefined)
581
+ return;
582
+ this.#timer = this.#setTimer(() => {
583
+ this.#timer = undefined;
584
+ void this.refresh().catch(() => undefined);
585
+ }, milliseconds);
586
+ }
587
+ #cancelTimer() {
588
+ if (this.#timer === undefined)
589
+ return;
590
+ this.#clearTimer(this.#timer);
591
+ this.#timer = undefined;
592
+ }
593
+ }
594
+ function integer(value, fallback) {
595
+ const candidate = value ?? fallback;
596
+ if (!Number.isSafeInteger(candidate) || candidate <= 0) {
597
+ throw new DiscoveryError("INVALID_CONFIGURATION");
598
+ }
599
+ return candidate;
600
+ }
601
+ export function createCodexDiscoveryObserver(options, dependencies = {}) {
602
+ return new Observer(options, dependencies);
603
+ }
604
+ //# sourceMappingURL=codex-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-discovery.js","sourceRoot":"","sources":["../../../src/gateway/codex-discovery.ts"],"names":[],"mappings":"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"}
@@ -55,7 +55,7 @@ export type StatelessCodexOperationInput = StatelessCodexOperationCommon & Reado
55
55
  /** Exact-operation lifecycle only; never sends an App Server interrupt. */
56
56
  signal?: AbortSignal;
57
57
  }>;
58
- export type StatelessCodexSafeErrorCode = LocalCodexTransportErrorCode | "ACCEPTANCE_UNCONFIRMED" | "APPROVAL_REQUIRED" | "INPUT_INVALID" | "MESSAGE_EXPIRED" | "PROTOCOL_ERROR" | "REQUEST_TIMEOUT" | "RESULT_SCHEMA_MISMATCH" | "ROUTE_BUSY" | "RPC_REJECTED" | "THREAD_NOT_OBSERVED" | "TRANSPORT_CLOSED" | "TRANSPORT_WRITE_FAILED" | "WRITE_AUTHORIZATION_DENIED" | "WRITE_AUTHORIZATION_UNCERTAIN";
58
+ export type StatelessCodexSafeErrorCode = LocalCodexTransportErrorCode | "ACCEPTANCE_UNCONFIRMED" | "APPROVAL_REQUIRED" | "INPUT_INVALID" | "MESSAGE_EXPIRED" | "OBSERVER_BACKPRESSURE" | "PROTOCOL_ERROR" | "REQUEST_TIMEOUT" | "RESULT_SCHEMA_MISMATCH" | "ROUTE_BUSY" | "RPC_REJECTED" | "THREAD_NOT_OBSERVED" | "TRANSPORT_CLOSED" | "TRANSPORT_WRITE_FAILED" | "WRITE_AUTHORIZATION_DENIED" | "WRITE_AUTHORIZATION_UNCERTAIN";
59
59
  type ResultCommon = Readonly<{
60
60
  attemptId: string;
61
61
  cleanupConfirmed: boolean;