borgmcp 0.9.37 → 0.9.39
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/codex-remote.d.ts.map +1 -1
- package/dist/codex-remote.js +1 -5
- package/dist/codex-remote.js.map +1 -1
- package/dist/direct-log.d.ts +7 -0
- package/dist/direct-log.d.ts.map +1 -0
- package/dist/direct-log.js +26 -0
- package/dist/direct-log.js.map +1 -0
- package/dist/index.js +33 -2
- package/dist/index.js.map +1 -1
- package/dist/lifecycle-log-guard.d.ts +29 -0
- package/dist/lifecycle-log-guard.d.ts.map +1 -0
- package/dist/lifecycle-log-guard.js +93 -0
- package/dist/lifecycle-log-guard.js.map +1 -0
- package/dist/log-stream.d.ts +13 -4
- package/dist/log-stream.d.ts.map +1 -1
- package/dist/log-stream.js +161 -59
- package/dist/log-stream.js.map +1 -1
- package/dist/remote-client.d.ts +38 -1
- package/dist/remote-client.d.ts.map +1 -1
- package/dist/remote-client.js +81 -2
- package/dist/remote-client.js.map +1 -1
- package/package.json +1 -1
package/dist/log-stream.js
CHANGED
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
* per active cube.
|
|
14
14
|
* - On every received `event: log`, a single line is appended to the
|
|
15
15
|
* per-drone inbox file (same format the old poller wrote).
|
|
16
|
-
* - On every `event: heartbeat`,
|
|
17
|
-
* `lastPersistedEventId`;
|
|
18
|
-
*
|
|
16
|
+
* - On every `event: heartbeat`, any carried hwm is compared against
|
|
17
|
+
* `lastPersistedEventId`; divergence starts a short grace timer
|
|
18
|
+
* before reconnect so an in-flight live broadcast can arrive first.
|
|
19
19
|
* - Outer `runLoop` reconnects with exponential backoff on any
|
|
20
20
|
* stream-level error, including heartbeat watchdog firing.
|
|
21
21
|
*
|
|
@@ -32,8 +32,10 @@ import { acquireStreamLease, readOwnershipSnapshot, } from './stream-owner.js';
|
|
|
32
32
|
// ------------------------------------------------------------------
|
|
33
33
|
// Tuning constants
|
|
34
34
|
// ------------------------------------------------------------------
|
|
35
|
-
/** Server emits heartbeats every 20s; allow
|
|
36
|
-
const HEARTBEAT_TIMEOUT_MS =
|
|
35
|
+
/** Server emits heartbeats every 20s; allow several misses before reconnecting. */
|
|
36
|
+
const HEARTBEAT_TIMEOUT_MS = 90_000;
|
|
37
|
+
/** Grace window for a heartbeat HWM that is ahead of the local cursor. */
|
|
38
|
+
const HWM_DIVERGENCE_GRACE_MS = 2_000;
|
|
37
39
|
const RECONNECT_MIN_MS = 500;
|
|
38
40
|
const RECONNECT_MAX_MS = 30_000;
|
|
39
41
|
/**
|
|
@@ -117,9 +119,11 @@ export function startLogStream() {
|
|
|
117
119
|
const defaultDeps = {
|
|
118
120
|
fetchImpl: globalThis.fetch.bind(globalThis),
|
|
119
121
|
appendLine: defaultAppendLine,
|
|
122
|
+
hasInboxEntryId: defaultHasInboxEntryId,
|
|
120
123
|
getToken: getValidToken,
|
|
121
124
|
wakeCodex: wakeCodexViaAppServer,
|
|
122
125
|
heartbeatTimeoutMs: HEARTBEAT_TIMEOUT_MS,
|
|
126
|
+
hwmDivergenceGraceMs: HWM_DIVERGENCE_GRACE_MS,
|
|
123
127
|
abortSignal: new AbortController().signal,
|
|
124
128
|
ownerDeps: {},
|
|
125
129
|
ownerStaleMs: 70_000,
|
|
@@ -227,7 +231,7 @@ async function runLoop() {
|
|
|
227
231
|
}
|
|
228
232
|
}
|
|
229
233
|
export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
230
|
-
const { fetchImpl, appendLine, getToken, wakeCodex, heartbeatTimeoutMs, abortSignal, } = { ...defaultDeps, ...deps };
|
|
234
|
+
const { fetchImpl, appendLine, hasInboxEntryId, getToken, wakeCodex, heartbeatTimeoutMs, hwmDivergenceGraceMs, abortSignal, } = { ...defaultDeps, ...deps };
|
|
231
235
|
const token = await getToken();
|
|
232
236
|
const headers = {
|
|
233
237
|
Authorization: `Bearer ${token}`,
|
|
@@ -268,10 +272,54 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
268
272
|
// disk write (or dedup-recognized replay). Heartbeat-hwm comparison
|
|
269
273
|
// reads this value.
|
|
270
274
|
let lastPersistedEventId = lastEventId;
|
|
275
|
+
let lastBroadcastHwm = null;
|
|
276
|
+
let pendingHwmDivergence = null;
|
|
277
|
+
const clearPendingHwmDivergence = () => {
|
|
278
|
+
if (!pendingHwmDivergence)
|
|
279
|
+
return;
|
|
280
|
+
clearTimeout(pendingHwmDivergence.timer);
|
|
281
|
+
pendingHwmDivergence = null;
|
|
282
|
+
};
|
|
283
|
+
const markEventPersisted = (id) => {
|
|
284
|
+
lastPersistedEventId = id;
|
|
285
|
+
streamState.lastPersistedEventId = id;
|
|
286
|
+
onEventId(id);
|
|
287
|
+
};
|
|
288
|
+
const markBroadcastPersisted = (hwm) => {
|
|
289
|
+
if (!hwm)
|
|
290
|
+
return;
|
|
291
|
+
lastBroadcastHwm =
|
|
292
|
+
!lastBroadcastHwm || compareBroadcastHwm(hwm, lastBroadcastHwm) > 0
|
|
293
|
+
? hwm
|
|
294
|
+
: lastBroadcastHwm;
|
|
295
|
+
if (pendingHwmDivergence &&
|
|
296
|
+
compareBroadcastHwm(lastBroadcastHwm, pendingHwmDivergence.hwm) >= 0) {
|
|
297
|
+
clearPendingHwmDivergence();
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
const scheduleHwmDivergenceReconnect = (hwm) => {
|
|
301
|
+
if (pendingHwmDivergence?.hwm.id === hwm.id)
|
|
302
|
+
return;
|
|
303
|
+
clearPendingHwmDivergence();
|
|
304
|
+
const timer = setTimeout(() => {
|
|
305
|
+
if (lastBroadcastHwm && compareBroadcastHwm(lastBroadcastHwm, hwm) >= 0) {
|
|
306
|
+
clearPendingHwmDivergence();
|
|
307
|
+
return;
|
|
308
|
+
}
|
|
309
|
+
try {
|
|
310
|
+
ac.abort(new Error('hwm divergence — reconnect for catchup'));
|
|
311
|
+
}
|
|
312
|
+
catch {
|
|
313
|
+
// ignore
|
|
314
|
+
}
|
|
315
|
+
}, hwmDivergenceGraceMs);
|
|
316
|
+
pendingHwmDivergence = { hwm, timer };
|
|
317
|
+
};
|
|
271
318
|
// Bounded recent-id set for replay-on-reconnect dedup per spec §(3).
|
|
272
319
|
// Set + FIFO array for O(1) membership + bounded memory.
|
|
273
320
|
const recentIds = new Set();
|
|
274
321
|
const recentIdsOrder = [];
|
|
322
|
+
let isCatchingUp = lastEventId !== null;
|
|
275
323
|
let response;
|
|
276
324
|
try {
|
|
277
325
|
response = await fetchImpl(`${active.apiUrl}/api/drone/stream`, {
|
|
@@ -304,40 +352,40 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
304
352
|
}
|
|
305
353
|
if (event.type === 'heartbeat') {
|
|
306
354
|
streamState.lastHeartbeatAt = nowIso;
|
|
307
|
-
// First
|
|
308
|
-
//
|
|
309
|
-
//
|
|
310
|
-
//
|
|
311
|
-
//
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
if (event.hwm && lastPersistedEventId === null) {
|
|
318
|
-
lastPersistedEventId = event.hwm;
|
|
319
|
-
streamState.lastPersistedEventId = event.hwm;
|
|
320
|
-
onEventId(event.hwm);
|
|
355
|
+
// First/baseline heartbeat absorb: until this session has seen
|
|
356
|
+
// a broadcast entry, the server's broadcast HWM is our baseline.
|
|
357
|
+
// Direct messages may advance the persistence cursor past this
|
|
358
|
+
// value; directional comparison must not treat that mirror case
|
|
359
|
+
// as missed-broadcast evidence.
|
|
360
|
+
if (event.hwm && lastBroadcastHwm === null) {
|
|
361
|
+
markBroadcastPersisted(event.hwm);
|
|
362
|
+
if (lastPersistedEventId === null) {
|
|
363
|
+
markEventPersisted(event.hwm.id);
|
|
364
|
+
}
|
|
321
365
|
continue;
|
|
322
366
|
}
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
367
|
+
if (event.hwm &&
|
|
368
|
+
lastBroadcastHwm &&
|
|
369
|
+
compareBroadcastHwm(event.hwm, lastBroadcastHwm) <= 0) {
|
|
370
|
+
clearPendingHwmDivergence();
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
// §(5) divergence-detection: reconnect only when the server's
|
|
374
|
+
// broadcast HWM is AHEAD of the client's broadcast cursor. A
|
|
375
|
+
// recipient persisting a direct entry legitimately advances
|
|
376
|
+
// lastPersistedEventId beyond the broadcast HWM; strict
|
|
377
|
+
// inequality would reintroduce gh#402 churn for that mirror case.
|
|
378
|
+
if (event.hwm &&
|
|
379
|
+
lastBroadcastHwm &&
|
|
380
|
+
compareBroadcastHwm(event.hwm, lastBroadcastHwm) > 0) {
|
|
381
|
+
scheduleHwmDivergenceReconnect(event.hwm);
|
|
336
382
|
}
|
|
337
383
|
continue;
|
|
338
384
|
}
|
|
339
|
-
if (event.type === 'bookmark')
|
|
385
|
+
if (event.type === 'bookmark') {
|
|
386
|
+
isCatchingUp = false;
|
|
340
387
|
continue;
|
|
388
|
+
}
|
|
341
389
|
if (event.type === 'log') {
|
|
342
390
|
// DEDUP per §(3) recent-ids contract: an out-of-order DO
|
|
343
391
|
// broadcast followed by reconnect+catchup can replay an entry
|
|
@@ -349,12 +397,8 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
349
397
|
// id we've actually got persisted). UUIDs are not ordinally
|
|
350
398
|
// comparable with created_at, so set membership is the check.
|
|
351
399
|
if (recentIds.has(event.id)) {
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
// the actual cursor after a dedup-only event sequence, not a
|
|
355
|
-
// stale one. Matches the persist + absorb branches below.
|
|
356
|
-
streamState.lastPersistedEventId = event.id;
|
|
357
|
-
onEventId(event.id);
|
|
400
|
+
markEventPersisted(event.id);
|
|
401
|
+
markBroadcastPersisted(broadcastHwmFromLogEvent(event));
|
|
358
402
|
continue;
|
|
359
403
|
}
|
|
360
404
|
// OWN-DRONE FILTER: restore the silent-self property — parity
|
|
@@ -394,7 +438,12 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
394
438
|
// semantic takes precedence.
|
|
395
439
|
if (event.data?.kind === 'ack') {
|
|
396
440
|
if (event.data?.author_drone_id === active.droneId) {
|
|
397
|
-
const line = formatInboxLine(event.data);
|
|
441
|
+
const line = formatInboxLine(withSseEventId(event.data, event.id));
|
|
442
|
+
if (isCatchingUp &&
|
|
443
|
+
await hasInboxEntryId(active.cubeId, active.droneId, event.id)) {
|
|
444
|
+
markEventPersisted(event.id);
|
|
445
|
+
continue;
|
|
446
|
+
}
|
|
398
447
|
await appendLine(active.cubeId, active.droneId, line);
|
|
399
448
|
wakeCodex(formatCodexWakePrompt(line));
|
|
400
449
|
}
|
|
@@ -407,14 +456,11 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
407
456
|
if (oldId)
|
|
408
457
|
recentIds.delete(oldId);
|
|
409
458
|
}
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
onEventId(event.id);
|
|
459
|
+
markEventPersisted(event.id);
|
|
460
|
+
markBroadcastPersisted(broadcastHwmFromLogEvent(event));
|
|
413
461
|
continue;
|
|
414
462
|
}
|
|
415
463
|
if (event.data?.drone_id === active.droneId && !isHeartbeatPing) {
|
|
416
|
-
lastPersistedEventId = event.id;
|
|
417
|
-
streamState.lastPersistedEventId = event.id;
|
|
418
464
|
recentIds.add(event.id);
|
|
419
465
|
recentIdsOrder.push(event.id);
|
|
420
466
|
while (recentIdsOrder.length > RECENT_IDS_CAP) {
|
|
@@ -422,7 +468,7 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
422
468
|
if (oldId)
|
|
423
469
|
recentIds.delete(oldId);
|
|
424
470
|
}
|
|
425
|
-
|
|
471
|
+
markEventPersisted(event.id);
|
|
426
472
|
continue;
|
|
427
473
|
}
|
|
428
474
|
// LOAD-BEARING ORDER: disk write must complete before cursor
|
|
@@ -431,7 +477,12 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
431
477
|
// Reversing this order would lose entries on disk-write failure
|
|
432
478
|
// because Last-Event-ID would have already advanced past them.
|
|
433
479
|
// This is the §(3) durability contract — do not refactor.
|
|
434
|
-
const line = formatInboxLine(event.data);
|
|
480
|
+
const line = formatInboxLine(withSseEventId(event.data, event.id));
|
|
481
|
+
if (isCatchingUp &&
|
|
482
|
+
await hasInboxEntryId(active.cubeId, active.droneId, event.id)) {
|
|
483
|
+
markEventPersisted(event.id);
|
|
484
|
+
continue;
|
|
485
|
+
}
|
|
435
486
|
await appendLine(active.cubeId, active.droneId, line);
|
|
436
487
|
wakeCodex(formatCodexWakePrompt(line));
|
|
437
488
|
recentIds.add(event.id);
|
|
@@ -441,9 +492,8 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
441
492
|
if (oldId)
|
|
442
493
|
recentIds.delete(oldId);
|
|
443
494
|
}
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
onEventId(event.id);
|
|
495
|
+
markEventPersisted(event.id);
|
|
496
|
+
markBroadcastPersisted(broadcastHwmFromLogEvent(event));
|
|
447
497
|
}
|
|
448
498
|
}
|
|
449
499
|
}
|
|
@@ -451,6 +501,7 @@ export async function streamOnce(active, lastEventId, onEventId, deps = {}) {
|
|
|
451
501
|
abortSignal.removeEventListener('abort', abortFromExternal);
|
|
452
502
|
if (watchdog)
|
|
453
503
|
clearTimeout(watchdog);
|
|
504
|
+
clearPendingHwmDivergence();
|
|
454
505
|
streamState.connected = false;
|
|
455
506
|
}
|
|
456
507
|
}
|
|
@@ -550,12 +601,7 @@ function parseEventBlock(block) {
|
|
|
550
601
|
try {
|
|
551
602
|
const parsed = JSON.parse(dataStr);
|
|
552
603
|
ts = typeof parsed.ts === 'string' ? parsed.ts : null;
|
|
553
|
-
hwm =
|
|
554
|
-
typeof parsed.hwm === 'string'
|
|
555
|
-
? parsed.hwm
|
|
556
|
-
: parsed.hwm === null
|
|
557
|
-
? null
|
|
558
|
-
: null;
|
|
604
|
+
hwm = parseHeartbeatHwm(parsed.hwm);
|
|
559
605
|
}
|
|
560
606
|
catch {
|
|
561
607
|
// fall through with nulls
|
|
@@ -575,6 +621,44 @@ function parseEventBlock(block) {
|
|
|
575
621
|
}
|
|
576
622
|
return { type: 'unknown', raw: block };
|
|
577
623
|
}
|
|
624
|
+
function parseHeartbeatHwm(value) {
|
|
625
|
+
if (!value || typeof value !== 'object')
|
|
626
|
+
return null;
|
|
627
|
+
const candidate = value;
|
|
628
|
+
return typeof candidate.id === 'string' &&
|
|
629
|
+
candidate.id.length > 0 &&
|
|
630
|
+
typeof candidate.created_at === 'string' &&
|
|
631
|
+
candidate.created_at.length > 0
|
|
632
|
+
? { id: candidate.id, created_at: candidate.created_at }
|
|
633
|
+
: null;
|
|
634
|
+
}
|
|
635
|
+
function compareBroadcastHwm(a, b) {
|
|
636
|
+
const aTime = Date.parse(a.created_at);
|
|
637
|
+
const bTime = Date.parse(b.created_at);
|
|
638
|
+
if (Number.isFinite(aTime) && Number.isFinite(bTime) && aTime !== bTime) {
|
|
639
|
+
return aTime - bTime;
|
|
640
|
+
}
|
|
641
|
+
if (a.created_at !== b.created_at) {
|
|
642
|
+
return a.created_at < b.created_at ? -1 : 1;
|
|
643
|
+
}
|
|
644
|
+
return a.id.localeCompare(b.id);
|
|
645
|
+
}
|
|
646
|
+
function broadcastHwmFromLogEvent(event) {
|
|
647
|
+
if (event.data?.visibility === 'direct' || event.data?.kind === 'ack') {
|
|
648
|
+
return null;
|
|
649
|
+
}
|
|
650
|
+
const createdAt = event.data?.created_at;
|
|
651
|
+
return typeof createdAt === 'string' && createdAt.length > 0
|
|
652
|
+
? { id: event.id, created_at: createdAt }
|
|
653
|
+
: null;
|
|
654
|
+
}
|
|
655
|
+
function withSseEventId(entry, eventId) {
|
|
656
|
+
if (!entry || typeof entry !== 'object')
|
|
657
|
+
return { id: eventId };
|
|
658
|
+
if (typeof entry.id === 'string' && entry.id.length > 0)
|
|
659
|
+
return entry;
|
|
660
|
+
return { ...entry, id: eventId };
|
|
661
|
+
}
|
|
578
662
|
/**
|
|
579
663
|
* Format one inbox-file line. Preserves the long-poll inbox.ts prefix
|
|
580
664
|
* shape (`<iso-ts> <drone-label> (<role-name>): ...`) so existing
|
|
@@ -597,8 +681,13 @@ export function formatInboxLine(entry) {
|
|
|
597
681
|
const label = entry.drone_label ?? '?';
|
|
598
682
|
const role = entry.role_name ?? '?';
|
|
599
683
|
const rawMessage = typeof entry.message === 'string' ? entry.message : '';
|
|
600
|
-
const
|
|
601
|
-
?
|
|
684
|
+
const entryId = typeof entry.id === 'string' && entry.id.length > 0
|
|
685
|
+
? entry.id
|
|
686
|
+
: typeof entry.entry_id === 'string' && entry.entry_id.length > 0
|
|
687
|
+
? entry.entry_id
|
|
688
|
+
: '';
|
|
689
|
+
const idPrefix = entryId
|
|
690
|
+
? `[entry_id: ${entryId}] `
|
|
602
691
|
: '';
|
|
603
692
|
// Normalize \r\n, \r, and \n all to ` ⏎ ` so the entry fits on one
|
|
604
693
|
// physical line regardless of line-ending convention in the source.
|
|
@@ -610,6 +699,19 @@ async function defaultAppendLine(cubeId, droneId, line) {
|
|
|
610
699
|
await fs.mkdir(path.dirname(p), { recursive: true });
|
|
611
700
|
await fs.appendFile(p, line + '\n', 'utf-8');
|
|
612
701
|
}
|
|
702
|
+
async function defaultHasInboxEntryId(cubeId, droneId, entryId) {
|
|
703
|
+
const p = inboxPathForDrone(cubeId, droneId);
|
|
704
|
+
let raw;
|
|
705
|
+
try {
|
|
706
|
+
raw = await fs.readFile(p, 'utf-8');
|
|
707
|
+
}
|
|
708
|
+
catch (err) {
|
|
709
|
+
if (err?.code === 'ENOENT')
|
|
710
|
+
return false;
|
|
711
|
+
throw err;
|
|
712
|
+
}
|
|
713
|
+
return raw.includes(`[entry_id: ${entryId}]`);
|
|
714
|
+
}
|
|
613
715
|
function sleep(ms) {
|
|
614
716
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
615
717
|
}
|
package/dist/log-stream.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-stream.js","sourceRoot":"","sources":["../src/log-stream.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"log-stream.js","sourceRoot":"","sources":["../src/log-stream.ts"],"names":[],"mappings":"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"}
|
package/dist/remote-client.d.ts
CHANGED
|
@@ -9,6 +9,39 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import type { RemoteResponse } from './types.js';
|
|
11
11
|
export declare const API_URL: string;
|
|
12
|
+
/**
|
|
13
|
+
* Parse a `Retry-After` header (delta-seconds form, which the worker
|
|
14
|
+
* emits — mcp-server.ts:382/583) into milliseconds. Returns null when
|
|
15
|
+
* absent or not a non-negative integer count of seconds. (The HTTP-date
|
|
16
|
+
* form is not emitted by the worker, so it is intentionally unhandled.)
|
|
17
|
+
*/
|
|
18
|
+
export declare function parseRetryAfterMs(headerValue: string | null): number | null;
|
|
19
|
+
/**
|
|
20
|
+
* How long to wait before the next 429 retry. Honors the server's
|
|
21
|
+
* Retry-After when present (capped at `capMs` so a full-window reset
|
|
22
|
+
* can't wedge a CLI call); falls back to an escalating 1s·(attempt+1)
|
|
23
|
+
* when absent. Adds jitter (injected for tests) so co-located sibling
|
|
24
|
+
* drones sharing one per-IP bucket don't retry in lockstep.
|
|
25
|
+
*/
|
|
26
|
+
export declare function rateLimitWaitMs(retryAfterMs: number | null, attempt: number, capMs?: number, jitter?: () => number): number;
|
|
27
|
+
/**
|
|
28
|
+
* Given an ALREADY-OBTAINED response, while it is a 429 and retries
|
|
29
|
+
* remain, wait per `rateLimitWaitMs` (honoring the CURRENT response's
|
|
30
|
+
* Retry-After) and THEN re-run `doRequest`. Takes `initialResponse`
|
|
31
|
+
* (not a first request) because the caller has already made the request
|
|
32
|
+
* and read its status — re-fetching first would ignore the first 429's
|
|
33
|
+
* Retry-After and double-fire an immediate extra request (CR blocker
|
|
34
|
+
* d3a564f5). Returns the last Response (200-class on success, or a final
|
|
35
|
+
* 429 if retries exhaust — the caller surfaces that). `sleep` is
|
|
36
|
+
* injected for deterministic tests; no fetch-global mocking required.
|
|
37
|
+
*/
|
|
38
|
+
export declare function retryOn429(initialResponse: Response, doRequest: () => Promise<Response>, opts: {
|
|
39
|
+
maxRetries?: number;
|
|
40
|
+
capMs?: number;
|
|
41
|
+
sleep: (ms: number) => Promise<void>;
|
|
42
|
+
jitter?: () => number;
|
|
43
|
+
log?: (msg: string) => void;
|
|
44
|
+
}): Promise<Response>;
|
|
12
45
|
/**
|
|
13
46
|
* Get valid auth token (refreshes if expired).
|
|
14
47
|
*
|
|
@@ -148,12 +181,16 @@ export declare function regen(sessionToken: string, apiUrl: string, opts?: {
|
|
|
148
181
|
/**
|
|
149
182
|
* Append a message to the cube's shared activity log.
|
|
150
183
|
*/
|
|
151
|
-
export declare function appendLog(sessionToken: string, apiUrl: string, message: string
|
|
184
|
+
export declare function appendLog(sessionToken: string, apiUrl: string, message: string, opts?: {
|
|
185
|
+
visibility?: 'broadcast' | 'direct';
|
|
186
|
+
recipientDroneIds?: string[];
|
|
187
|
+
}): Promise<{
|
|
152
188
|
entry: {
|
|
153
189
|
id: string;
|
|
154
190
|
cube_id: string;
|
|
155
191
|
drone_id: string;
|
|
156
192
|
message: string;
|
|
193
|
+
visibility: 'broadcast' | 'direct';
|
|
157
194
|
created_at: string;
|
|
158
195
|
};
|
|
159
196
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-client.d.ts","sourceRoot":"","sources":["../src/remote-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,OAAO,QAAuD,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-client.d.ts","sourceRoot":"","sources":["../src/remote-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,eAAO,MAAM,OAAO,QAAuD,CAAC;AAY5E;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAK3E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAA+B,EACtC,MAAM,GAAE,MAAM,MAAkC,GAC/C,MAAM,CAGR;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,eAAe,EAAE,QAAQ,EACzB,SAAS,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE;IACJ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B,GACA,OAAO,CAAC,QAAQ,CAAC,CAoBnB;AAqBD;;;;;;GAMG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC,CAiCrD;AAqCD;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,cAAc,CAAC,CA8EzB;AA6ED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAC9B,kBAAkB,EAAE,MAAM,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3G,MAAM,CAAC,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,EACxB,SAAS,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GACpC,OAAO,CAAC;IACT,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,UAAU,EAAE,OAAO,CAAC;QACpB,aAAa,EAAE,OAAO,CAAC;QACvB,UAAU,EAAE,OAAO,GAAG,QAAQ,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAqBD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAOtC;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CAOxB;AAED,wBAAsB,MAAM,CAC1B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAO5H;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAQjE;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAClE,OAAO,CAAC;IAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAe1D;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAOf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,KAAK,CACzB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC5B,OAAO,CAAC;IACT,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,GAAG,CAAC;IACV,KAAK,EAAE,GAAG,CAAC;IACX,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,MAAM,EAAE,GAAG,EAAE,CAAC;IACd,SAAS,EAAE,GAAG,EAAE,CAAC;CAClB,CAAC,CAaD;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAO,GAC/E,OAAO,CAAC;IACT,KAAK,EAAE;QACL,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,WAAW,GAAG,QAAQ,CAAC;QACnC,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH,CAAC,CAiBD;AAED;;;GAGG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC;IAAE,KAAK,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC,CAG3D;AAED;;;GAGG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC;IAAE,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAGxH;AAED;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,WAAW,EAAE,MAAM,EACnB,IAAI,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3B,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC,CAmB9G;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CAOxB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,GAC9J,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CAOxB;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;CAAE,GACpK,OAAO,CAAC;IAAE,IAAI,EAAE,GAAG,CAAA;CAAE,CAAC,CAOxB;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9D;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,GAAG,CAAA;CAAE,CAAC,CAO5F;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,GAAG,EAAE,CAAC;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAAC,CAQlI;AAED;;GAEG;AACH,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,GAAG,CAAC,CAG5D;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,YAAY,GAAE,MAAuB,EACrC,KAAK,GAAE,OAAe,GACrB,OAAO,CAAC,GAAG,CAAC,CAOd;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,CAW1D"}
|
package/dist/remote-client.js
CHANGED
|
@@ -14,6 +14,62 @@ export const API_URL = process.env.BORG_API_URL || 'https://api.borgmcp.ai';
|
|
|
14
14
|
const MAX_RETRIES = 3;
|
|
15
15
|
const INITIAL_BACKOFF_MS = 1000; // 1 second
|
|
16
16
|
const MAX_BACKOFF_MS = 30000; // 30 seconds
|
|
17
|
+
// gh#330: honor the server's Retry-After on 429 instead of failing the
|
|
18
|
+
// (often required) coordination signal outright. Bounded so a CLI call
|
|
19
|
+
// never blocks unboundedly; capped per attempt so a large window-reset
|
|
20
|
+
// retryAfter can't wedge the call.
|
|
21
|
+
const RATE_LIMIT_MAX_RETRIES = 3;
|
|
22
|
+
const RATE_LIMIT_MAX_WAIT_MS = 60_000; // cap a single Retry-After honor
|
|
23
|
+
/**
|
|
24
|
+
* Parse a `Retry-After` header (delta-seconds form, which the worker
|
|
25
|
+
* emits — mcp-server.ts:382/583) into milliseconds. Returns null when
|
|
26
|
+
* absent or not a non-negative integer count of seconds. (The HTTP-date
|
|
27
|
+
* form is not emitted by the worker, so it is intentionally unhandled.)
|
|
28
|
+
*/
|
|
29
|
+
export function parseRetryAfterMs(headerValue) {
|
|
30
|
+
if (headerValue == null)
|
|
31
|
+
return null;
|
|
32
|
+
const trimmed = headerValue.trim();
|
|
33
|
+
if (!/^\d+$/.test(trimmed))
|
|
34
|
+
return null;
|
|
35
|
+
return parseInt(trimmed, 10) * 1000;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* How long to wait before the next 429 retry. Honors the server's
|
|
39
|
+
* Retry-After when present (capped at `capMs` so a full-window reset
|
|
40
|
+
* can't wedge a CLI call); falls back to an escalating 1s·(attempt+1)
|
|
41
|
+
* when absent. Adds jitter (injected for tests) so co-located sibling
|
|
42
|
+
* drones sharing one per-IP bucket don't retry in lockstep.
|
|
43
|
+
*/
|
|
44
|
+
export function rateLimitWaitMs(retryAfterMs, attempt, capMs = RATE_LIMIT_MAX_WAIT_MS, jitter = () => Math.random() * 500) {
|
|
45
|
+
const base = retryAfterMs != null ? retryAfterMs : 1000 * (attempt + 1);
|
|
46
|
+
return Math.min(base, capMs) + jitter();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Given an ALREADY-OBTAINED response, while it is a 429 and retries
|
|
50
|
+
* remain, wait per `rateLimitWaitMs` (honoring the CURRENT response's
|
|
51
|
+
* Retry-After) and THEN re-run `doRequest`. Takes `initialResponse`
|
|
52
|
+
* (not a first request) because the caller has already made the request
|
|
53
|
+
* and read its status — re-fetching first would ignore the first 429's
|
|
54
|
+
* Retry-After and double-fire an immediate extra request (CR blocker
|
|
55
|
+
* d3a564f5). Returns the last Response (200-class on success, or a final
|
|
56
|
+
* 429 if retries exhaust — the caller surfaces that). `sleep` is
|
|
57
|
+
* injected for deterministic tests; no fetch-global mocking required.
|
|
58
|
+
*/
|
|
59
|
+
export async function retryOn429(initialResponse, doRequest, opts) {
|
|
60
|
+
const maxRetries = opts.maxRetries ?? RATE_LIMIT_MAX_RETRIES;
|
|
61
|
+
let response = initialResponse;
|
|
62
|
+
let attempt = 0;
|
|
63
|
+
while (response.status === 429 && attempt < maxRetries) {
|
|
64
|
+
// Honor THIS 429's Retry-After BEFORE issuing the next request.
|
|
65
|
+
const waitMs = rateLimitWaitMs(parseRetryAfterMs(response.headers.get('Retry-After')), attempt, opts.capMs, opts.jitter);
|
|
66
|
+
opts.log?.(`rate limited (429); retrying in ${Math.round(waitMs)}ms (attempt ${attempt + 1}/${maxRetries})`);
|
|
67
|
+
await opts.sleep(waitMs);
|
|
68
|
+
attempt++;
|
|
69
|
+
response = await doRequest();
|
|
70
|
+
}
|
|
71
|
+
return response;
|
|
72
|
+
}
|
|
17
73
|
/**
|
|
18
74
|
* Exponential backoff delay
|
|
19
75
|
*/
|
|
@@ -211,7 +267,23 @@ async function authedFetch(path, init = {}) {
|
|
|
211
267
|
if (response.status === 401) {
|
|
212
268
|
throw new Error('Authentication required. Run: borg assimilate');
|
|
213
269
|
}
|
|
270
|
+
// gh#330: honor the server's Retry-After on 429 instead of failing the
|
|
271
|
+
// (often required) coordination signal — borg:log / read-log / regen /
|
|
272
|
+
// roster / ack all route through here. Bounded + capped + jittered.
|
|
273
|
+
if (response.status === 429) {
|
|
274
|
+
response = await retryOn429(response, () => buildRequest(token), {
|
|
275
|
+
sleep,
|
|
276
|
+
log: (msg) => console.error(`${consolePrefix()}${msg}`),
|
|
277
|
+
});
|
|
278
|
+
}
|
|
214
279
|
if (!response.ok) {
|
|
280
|
+
// Enrich the 429 message with the server's retry guidance so a
|
|
281
|
+
// still-exhausted limit surfaces an actionable wait, not a bare code.
|
|
282
|
+
if (response.status === 429) {
|
|
283
|
+
const retryAfter = response.headers.get('Retry-After');
|
|
284
|
+
const hint = retryAfter ? ` (retry after ${retryAfter}s)` : '';
|
|
285
|
+
throw new Error(`HTTP 429: rate limited${hint}: ${await response.text()}`);
|
|
286
|
+
}
|
|
215
287
|
throw new Error(`HTTP ${response.status}: ${await response.text()}`);
|
|
216
288
|
}
|
|
217
289
|
return response;
|
|
@@ -364,13 +436,20 @@ export async function regen(sessionToken, apiUrl, opts = {}) {
|
|
|
364
436
|
/**
|
|
365
437
|
* Append a message to the cube's shared activity log.
|
|
366
438
|
*/
|
|
367
|
-
export async function appendLog(sessionToken, apiUrl, message) {
|
|
439
|
+
export async function appendLog(sessionToken, apiUrl, message, opts = {}) {
|
|
440
|
+
const body = opts.visibility === 'direct'
|
|
441
|
+
? {
|
|
442
|
+
message,
|
|
443
|
+
visibility: 'direct',
|
|
444
|
+
recipientDroneIds: opts.recipientDroneIds ?? [],
|
|
445
|
+
}
|
|
446
|
+
: { message };
|
|
368
447
|
const response = await authedFetch('/api/drone/log', {
|
|
369
448
|
method: 'POST',
|
|
370
449
|
headers: { 'Content-Type': 'application/json' },
|
|
371
450
|
droneSession: sessionToken,
|
|
372
451
|
apiUrl,
|
|
373
|
-
body: JSON.stringify(
|
|
452
|
+
body: JSON.stringify(body),
|
|
374
453
|
});
|
|
375
454
|
return await response.json();
|
|
376
455
|
}
|