ftown 0.21.0 → 0.25.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 (107) hide show
  1. package/dist/attention-events.d.ts +1 -1
  2. package/dist/attention-store.d.ts +3 -0
  3. package/dist/attention-store.js +25 -1
  4. package/dist/attention-store.js.map +1 -1
  5. package/dist/centrifugo-client.d.ts +14 -1
  6. package/dist/centrifugo-client.js +38 -4
  7. package/dist/centrifugo-client.js.map +1 -1
  8. package/dist/command-rpc.d.ts +2 -0
  9. package/dist/command-rpc.js +55 -9
  10. package/dist/command-rpc.js.map +1 -1
  11. package/dist/direct-transport/loopback-server.d.ts +10 -3
  12. package/dist/direct-transport/loopback-server.js +20 -4
  13. package/dist/direct-transport/loopback-server.js.map +1 -1
  14. package/dist/direct-transport/peer-manager.d.ts +8 -3
  15. package/dist/direct-transport/peer-manager.js +20 -5
  16. package/dist/direct-transport/peer-manager.js.map +1 -1
  17. package/dist/file-stamp.d.ts +33 -0
  18. package/dist/file-stamp.js +35 -0
  19. package/dist/file-stamp.js.map +1 -0
  20. package/dist/identity-reset.d.ts +3 -1
  21. package/dist/identity-reset.js +27 -5
  22. package/dist/identity-reset.js.map +1 -1
  23. package/dist/index.js +31 -37
  24. package/dist/index.js.map +1 -1
  25. package/dist/ledger-pairing-client.d.ts +1 -1
  26. package/dist/ledger-pairing-client.js +5 -3
  27. package/dist/ledger-pairing-client.js.map +1 -1
  28. package/dist/ledger-relay.d.ts +42 -7
  29. package/dist/ledger-relay.js +175 -33
  30. package/dist/ledger-relay.js.map +1 -1
  31. package/dist/ledger-reoffer.d.ts +56 -0
  32. package/dist/ledger-reoffer.js +210 -0
  33. package/dist/ledger-reoffer.js.map +1 -0
  34. package/dist/ledger-startup.d.ts +30 -5
  35. package/dist/ledger-startup.js +40 -10
  36. package/dist/ledger-startup.js.map +1 -1
  37. package/dist/local-api-server.d.ts +3 -0
  38. package/dist/local-api-server.js +68 -6
  39. package/dist/local-api-server.js.map +1 -1
  40. package/dist/mail-delivery.d.ts +26 -3
  41. package/dist/mail-delivery.js +65 -7
  42. package/dist/mail-delivery.js.map +1 -1
  43. package/dist/mail-store.d.ts +15 -1
  44. package/dist/mail-store.js +78 -16
  45. package/dist/mail-store.js.map +1 -1
  46. package/dist/outbound-pipeline-types.d.ts +5 -2
  47. package/dist/outbound-pipeline-types.js.map +1 -1
  48. package/dist/preview-protocol.d.ts +19 -3
  49. package/dist/preview-protocol.js +14 -0
  50. package/dist/preview-protocol.js.map +1 -1
  51. package/dist/relay-token.d.ts +6 -0
  52. package/dist/relay-token.js +9 -1
  53. package/dist/relay-token.js.map +1 -1
  54. package/dist/security/bridge/ledger-rpc.d.ts +34 -0
  55. package/dist/security/bridge/ledger-rpc.js +58 -0
  56. package/dist/security/bridge/ledger-rpc.js.map +1 -0
  57. package/dist/security/bridge/ledger-store.d.ts +82 -13
  58. package/dist/security/bridge/ledger-store.js +394 -54
  59. package/dist/security/bridge/ledger-store.js.map +1 -1
  60. package/dist/security/bridge/permissions.js +2 -1
  61. package/dist/security/bridge/permissions.js.map +1 -1
  62. package/dist/security/bridge/policy.d.ts +5 -1
  63. package/dist/security/bridge/policy.js +17 -0
  64. package/dist/security/bridge/policy.js.map +1 -1
  65. package/dist/security/bridge/security.d.ts +148 -10
  66. package/dist/security/bridge/security.js +270 -65
  67. package/dist/security/bridge/security.js.map +1 -1
  68. package/dist/security/crypto.d.ts +2 -0
  69. package/dist/security/crypto.js +43 -4
  70. package/dist/security/crypto.js.map +1 -1
  71. package/dist/security/ledger/announce.d.ts +32 -0
  72. package/dist/security/ledger/announce.js +101 -0
  73. package/dist/security/ledger/announce.js.map +1 -0
  74. package/dist/security/ledger/ledger.d.ts +107 -14
  75. package/dist/security/ledger/ledger.js +364 -83
  76. package/dist/security/ledger/ledger.js.map +1 -1
  77. package/dist/security/ledger/proof.d.ts +12 -0
  78. package/dist/security/ledger/proof.js +40 -8
  79. package/dist/security/ledger/proof.js.map +1 -1
  80. package/dist/security/ledger/protocol.d.ts +14 -1
  81. package/dist/security/ledger/protocol.js.map +1 -1
  82. package/dist/session-controller.d.ts +9 -3
  83. package/dist/session-controller.js +120 -20
  84. package/dist/session-controller.js.map +1 -1
  85. package/dist/session-inbox-protocol.d.ts +2 -0
  86. package/dist/session-preview.d.ts +20 -5
  87. package/dist/session-preview.js +185 -37
  88. package/dist/session-preview.js.map +1 -1
  89. package/dist/session-store.d.ts +22 -0
  90. package/dist/session-store.js +180 -13
  91. package/dist/session-store.js.map +1 -1
  92. package/dist/sessions-commands.js +41 -7
  93. package/dist/sessions-commands.js.map +1 -1
  94. package/dist/terminal-manager.d.ts +8 -0
  95. package/dist/terminal-manager.js +23 -1
  96. package/dist/terminal-manager.js.map +1 -1
  97. package/dist/terminal-output.d.ts +34 -0
  98. package/dist/terminal-output.js +68 -0
  99. package/dist/terminal-output.js.map +1 -0
  100. package/dist/terminal-pump.d.ts +48 -5
  101. package/dist/terminal-pump.js +143 -20
  102. package/dist/terminal-pump.js.map +1 -1
  103. package/dist/types.d.ts +1 -1
  104. package/opencode-plugin/ftown.js +15 -2
  105. package/package.json +2 -2
  106. package/skills/ftown/SKILL.md +18 -7
  107. package/skills/ftown/references/sessions.md +35 -10
@@ -3,13 +3,20 @@
3
3
  * - the server's public ledger endpoints, bounded (createLedgerServer);
4
4
  * - the relay token by proof (createRelayTokenFetcher) behind the cooldown/caching provider, with the ledger hooks (createAccountRelay);
5
5
  * - the relay's ledger messages and (re)subscriptions, spaced so a relay publisher cannot force back-to-back reads and verifies;
6
+ * - the re-offer of this bridge's chain when a server read shows the server behind it (ledger-reoffer.ts): relay input only ever leads to
7
+ * a paced read, never to a POST, and a refused relay token (plain 401) only to a read that may then re-offer;
8
+ * - signed head announcements (security/ledger/announce.ts, CONTRACT §10/§13): this bridge announces its head after the ledger channel
9
+ * subscribes and after every adopt (at most one per HEAD_ANNOUNCE_SPACING_MS, latest head, best effort); a received one is verified against
10
+ * the trusted checkpoint and, when its head is unknown here, only queues the same paced server read as a ledger notice;
6
11
  * - the last relay URL the server named (security/relay-url.json), for an offline start.
7
- * Nothing here decides trust: every ledger goes to security.offerLedger / refreshLedger, which verify it.
12
+ * Nothing here decides trust: every ledger goes to security.offerLedgerResult / refreshLedger / readServerLedger, which verify it.
8
13
  */
9
14
  import { randomUUID } from 'node:crypto';
10
15
  import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from 'node:fs';
11
16
  import { join } from 'node:path';
12
17
  import { UnauthorizedError } from 'centrifuge';
18
+ import { signHeadAnnouncement } from './security/ledger/announce.js';
19
+ import { createLedgerReoffer } from './ledger-reoffer.js';
13
20
  import { createRelayTokenFetcher } from './relay-token.js';
14
21
  import { createTokenProvider } from './token-provider.js';
15
22
  export const LEDGER_REQUEST_TIMEOUT_MS = 15_000;
@@ -22,6 +29,23 @@ export const RELAY_LEDGER_MIN_SPACING_MS = 1_000;
22
29
  export const RELAY_LEDGER_MAX_SPACING_MS = 60_000;
23
30
  /** Refreshes pulled by requests from endpoints the replica does not list run at most this often (single-flight, trailing). */
24
31
  export const UNKNOWN_ENDPOINT_REFRESH_SPACING_MS = 2_000;
32
+ /** This bridge announces its head at most this often; a pending announcement is replaced by the latest head, never queued. */
33
+ export const HEAD_ANNOUNCE_SPACING_MS = 5_000;
34
+ /** A failed announcement (best effort) is logged at most this often. */
35
+ export const HEAD_ANNOUNCE_WARN_SPACING_MS = 60_000;
36
+ /** Retry-After as ms from `now`: delta-seconds or an HTTP date; null when absent or unreadable. */
37
+ export function parseRetryAfter(value, now = Date.now()) {
38
+ if (value === null)
39
+ return null;
40
+ const text = value.trim();
41
+ if (/^\d{1,9}$/.test(text))
42
+ return Number(text) * 1000;
43
+ // An HTTP date starts with the day name ("Sun, 06 Nov 1994 08:49:37 GMT"); anything else is not a date here.
44
+ if (!/^[A-Za-z]{3}/.test(text))
45
+ return null;
46
+ const at = Date.parse(text);
47
+ return Number.isNaN(at) ? null : Math.max(0, at - now);
48
+ }
25
49
  /** An HTTP answer that is not a success, with its status. */
26
50
  export class HttpStatusError extends Error {
27
51
  status;
@@ -90,18 +114,35 @@ export function createLedgerServer(input) {
90
114
  throw new Error('Ledger response malformed');
91
115
  return ledger;
92
116
  },
93
- async postLedger(ledger) {
117
+ async postLedger(ledger, expectHead) {
118
+ let status;
119
+ let retryAfterMs;
120
+ let text = null;
94
121
  try {
95
122
  const response = await fetchImpl(`${base}/api/account/ledger`, {
96
123
  method: 'POST', headers: { 'Content-Type': 'application/json', accept: 'application/json' }, cache: 'no-store',
97
- body: JSON.stringify({ ledger }), signal: AbortSignal.timeout(timeoutMs),
124
+ body: JSON.stringify({ ledger, expectHead }), signal: AbortSignal.timeout(timeoutMs),
98
125
  });
99
- await response.body?.cancel().catch(() => undefined);
100
- return response.status;
126
+ status = response.status;
127
+ retryAfterMs = parseRetryAfter(response.headers.get('retry-after'));
128
+ if (Number(response.headers.get('content-length')) > maxBytes)
129
+ await response.body?.cancel().catch(() => undefined);
130
+ else
131
+ text = await response.text();
101
132
  }
102
133
  catch (error) {
103
134
  throw timeoutError(error, timeoutMs);
104
135
  }
136
+ let body = null;
137
+ if (text !== null && Buffer.byteLength(text, 'utf8') <= maxBytes) {
138
+ try {
139
+ body = JSON.parse(text);
140
+ }
141
+ catch {
142
+ body = null;
143
+ }
144
+ }
145
+ return { status, body, retryAfterMs };
105
146
  },
106
147
  };
107
148
  }
@@ -223,9 +264,26 @@ export function createAccountRelay(deps) {
223
264
  const head = () => deps.security.ledgerStatus().head;
224
265
  /** The relay connection was refused (terminal for centrifuge-js) and has not been reconnected since. */
225
266
  let relayRefused = false;
226
- /** The local head whose chain was last POSTed after a plain 401 (at most once per head). */
227
- let postedHead;
228
267
  let stopped = false;
268
+ // Our chain goes back to the server only after a fresh read shows the server holding a strict prefix of it, with that head as expectHead.
269
+ const reoffer = createLedgerReoffer({
270
+ read: () => deps.security.readServerLedger(),
271
+ local: async () => {
272
+ // Like a browser, a bridge that is not an active member of its own chain sends nothing.
273
+ if (deps.security.ledgerStatus().own !== 'active')
274
+ return null;
275
+ const state = await deps.store.read();
276
+ return state === null ? null : { ledger: state.ledger, head: state.checkpoint.head };
277
+ },
278
+ post: (ledger, expectHead) => deps.server.postLedger(ledger, expectHead),
279
+ offer: ledger => deps.security.offerLedgerResult(ledger, 'server'),
280
+ now: monotonic, random: deps.random ?? Math.random, schedule, log,
281
+ });
282
+ /** After any server read: the server is behind us, so re-offer (paced; it reads again first). */
283
+ const afterServerRead = () => {
284
+ if (!stopped && deps.security.ledgerStatus().serverBehind)
285
+ reoffer.noteServerBehind();
286
+ };
229
287
  const reconnectIfRefused = () => {
230
288
  if (!relayRefused || stopped)
231
289
  return;
@@ -267,44 +325,42 @@ export function createAccountRelay(deps) {
267
325
  bridgeId: deps.bridgeId,
268
326
  authPrivateKey: deps.authPrivateKey,
269
327
  head,
270
- // A newer server ledger rides the token response. An invalid one is only logged: the token is still returned.
328
+ // A newer server ledger rides the token response. An invalid one is only logged: the token is still returned. One the server holds
329
+ // as a strict prefix of ours (a rolled-back server) starts the re-offer.
271
330
  onLedger: async (ledger) => {
272
331
  try {
273
- if (await deps.security.offerLedger(ledger, 'server') === 'reject')
332
+ const outcome = await deps.security.offerLedgerResult(ledger, 'server');
333
+ if (outcome.decision === 'reject')
274
334
  log('[Bridge] Ignored an account ledger from the relay-token response.');
335
+ if (outcome.relation === 'behind')
336
+ reoffer.noteServerBehind();
275
337
  }
276
338
  catch (error) {
277
339
  log(`[Bridge] Account ledger from the relay-token response failed: ${messageOf(error)}`);
278
340
  }
279
341
  },
280
- // Evidence of a revoked key: only a ledger that verifies and revokes this bridge triggers the reset (security's onBridgeRevoked).
342
+ // No chain in the answer: the server's head is the one we sent (or the one it names). Behind -> re-offer; unknown -> read it.
343
+ onServerHead: server => {
344
+ const relation = deps.security.noteServerHead(server);
345
+ if (relation === 'behind')
346
+ reoffer.noteServerBehind();
347
+ else if (relation === 'unknown')
348
+ submit({ kind: 'refresh', head: null });
349
+ },
350
+ // Evidence of a revoked key: the replica's append-only rule decides. Only a chain that is AHEAD of ours (or an owner-chosen history)
351
+ // and revokes this bridge triggers the reset (security's onBridgeRevoked); a diverged one is refused and recorded, never evidence.
281
352
  onRevoked: async (ledger) => {
282
353
  try {
283
- await deps.security.offerLedger(ledger, 'server');
354
+ await deps.security.offerLedgerResult(ledger, 'server');
284
355
  }
285
356
  catch (error) {
286
357
  log(`[Bridge] Revocation evidence failed: ${messageOf(error)}`);
287
358
  }
288
359
  },
289
- // The server may be missing our add_bridge (e.g. the approving browser's write was lost): offer it our chain once per local head,
290
- // then retry once.
291
- onUnauthorized: async () => {
292
- const current = head();
293
- if (postedHead !== undefined && postedHead === current)
294
- return false;
295
- try {
296
- const state = await deps.store.read();
297
- if (state === null)
298
- return false;
299
- const status = await deps.server.postLedger(state.ledger);
300
- postedHead = current;
301
- return status === 200 || status === 201;
302
- }
303
- catch (error) {
304
- log(`[Bridge] Could not send the account ledger to the server: ${messageOf(error)}`);
305
- return false;
306
- }
307
- },
360
+ // A plain 401: the server may lack our records (a rolled-back server missing our add_bridge). Nothing is posted blindly: the
361
+ // re-offer reads the server first and posts our chain (expectHead, never creating an account) only if the server is behind it.
362
+ // The token is retried once only when the server took our chain.
363
+ onUnauthorized: async () => (await reoffer.check()) === 'posted',
308
364
  hostname: deps.hostname,
309
365
  localPort: deps.localPort,
310
366
  fetchImpl,
@@ -334,13 +390,19 @@ export function createAccountRelay(deps) {
334
390
  const before = head();
335
391
  try {
336
392
  if (work.kind === 'offer') {
337
- if (await deps.security.offerLedger(work.ledger, 'relay') !== 'adopt')
393
+ const outcome = await deps.security.offerLedgerResult(work.ledger, 'relay');
394
+ // A relayed chain that is a prefix of ours hints that the server may be behind: read the server (paced). A relay message is never
395
+ // proof of the server's state, so it never leads to a POST by itself.
396
+ if (outcome.relation === 'behind' && pending === null)
397
+ pending = { kind: 'refresh', head: null };
398
+ if (outcome.decision !== 'adopt')
338
399
  return 'idle';
339
400
  }
340
401
  else {
341
402
  if (work.head !== null && work.head === before)
342
403
  return 'skipped';
343
404
  await deps.security.refreshLedger();
405
+ afterServerRead();
344
406
  if (head() === before)
345
407
  return 'idle';
346
408
  }
@@ -408,7 +470,7 @@ export function createAccountRelay(deps) {
408
470
  unknownReadyAt = monotonic() + UNKNOWN_ENDPOINT_REFRESH_SPACING_MS;
409
471
  const before = head();
410
472
  deps.security.refreshLedger()
411
- .then(() => { if (head() !== before)
473
+ .then(() => { afterServerRead(); if (head() !== before)
412
474
  reconnectIfRefused(); })
413
475
  .catch((error) => log(`[Bridge] Account ledger refresh failed: ${messageOf(error)}`))
414
476
  .finally(() => {
@@ -419,6 +481,75 @@ export function createAccountRelay(deps) {
419
481
  }
420
482
  });
421
483
  };
484
+ // This bridge's head announcements: best effort, never awaited by a caller, at most one per HEAD_ANNOUNCE_SPACING_MS. A request while one
485
+ // is pending only marks it wanted; the head is read when it is signed, so the latest head is the one announced.
486
+ const wallClock = deps.wallClock ?? Date.now;
487
+ let publisher = null;
488
+ let announceWanted = false;
489
+ let announcing = false;
490
+ let announceCancel = null;
491
+ let lastAnnounceAt = Number.NEGATIVE_INFINITY;
492
+ let lastAnnounceWarnAt = Number.NEGATIVE_INFINITY;
493
+ const sendAnnouncement = async () => {
494
+ const publish = publisher;
495
+ const status = deps.security.ledgerStatus();
496
+ // Only an active member of its own chain speaks for it (not unpaired, absent or revoked).
497
+ if (publish === null || status.own !== 'active' || status.head === null || status.revision === null)
498
+ return;
499
+ try {
500
+ const announcement = await signHeadAnnouncement(deps.authPrivateKey, {
501
+ accountId: deps.accountId, kind: 'bridge', keyId: deps.bridgeId, head: status.head, revision: status.revision, at: Math.floor(wallClock()),
502
+ });
503
+ if (!stopped)
504
+ await publish(announcement);
505
+ }
506
+ catch (error) {
507
+ const at = monotonic();
508
+ if (at - lastAnnounceWarnAt >= HEAD_ANNOUNCE_WARN_SPACING_MS) {
509
+ lastAnnounceWarnAt = at;
510
+ log(`[Bridge] Could not announce the ledger head: ${messageOf(error)}`);
511
+ }
512
+ }
513
+ };
514
+ const pumpAnnounce = () => {
515
+ if (stopped || !announceWanted || announcing || announceCancel !== null)
516
+ return;
517
+ const wait = lastAnnounceAt + HEAD_ANNOUNCE_SPACING_MS - monotonic();
518
+ if (wait > 0) {
519
+ announceCancel = schedule(() => { announceCancel = null; pumpAnnounce(); }, wait);
520
+ return;
521
+ }
522
+ announceWanted = false;
523
+ announcing = true;
524
+ lastAnnounceAt = monotonic();
525
+ void sendAnnouncement().finally(() => { announcing = false; pumpAnnounce(); });
526
+ };
527
+ const announce = () => {
528
+ // Not wired to a relay client (yet): nothing to announce on, nothing scheduled.
529
+ if (stopped || publisher === null)
530
+ return;
531
+ announceWanted = true;
532
+ pumpAnnounce();
533
+ };
534
+ // Every adopt (and an own-status change, e.g. paired again) is announced.
535
+ const stopHeadListener = deps.security.onLedgerHead(announce);
536
+ // A received announcement: the owner filter and the strict shape ran in the client. Verified against the trusted checkpoint (one signature
537
+ // check); an unknown head only queues the paced server read. An announcement is never proof: no POST, nothing fetched from its sender.
538
+ const judge = async (announcement) => {
539
+ if (stopped || (announcement.kind === 'bridge' && announcement.keyId === deps.bridgeId))
540
+ return;
541
+ let relation;
542
+ try {
543
+ relation = await deps.security.judgeHeadAnnouncement(announcement);
544
+ }
545
+ catch {
546
+ return;
547
+ }
548
+ if (relation === 'unknown')
549
+ submit({ kind: 'refresh', head: announcement.head });
550
+ };
551
+ // The startup read (security.startLedger) may already have shown the server behind.
552
+ afterServerRead();
422
553
  return {
423
554
  tokens,
424
555
  async connectionToken() {
@@ -435,18 +566,29 @@ export function createAccountRelay(deps) {
435
566
  onLedgerMessage(message) {
436
567
  if (message.type === 'ledger')
437
568
  submit({ kind: 'offer', ledger: message.ledger });
569
+ else if (message.type === 'head_announcement')
570
+ void judge(message.announcement);
438
571
  else if (message.head !== head())
439
572
  submit({ kind: 'refresh', head: message.head });
440
573
  },
441
- onLedgerSubscribed: () => submit({ kind: 'refresh', head: null }),
574
+ onLedgerSubscribed: () => {
575
+ submit({ kind: 'refresh', head: null });
576
+ announce();
577
+ },
578
+ setLedgerPublisher(publish) { publisher = publish; },
442
579
  onUnknownEndpoint: refreshForUnknown,
443
580
  stop() {
444
581
  stopped = true;
582
+ reoffer.stop();
445
583
  pending = null;
446
584
  cancelTimer?.();
447
585
  cancelTimer = null;
448
586
  unknownCancel?.();
449
587
  unknownCancel = null;
588
+ announceWanted = false;
589
+ announceCancel?.();
590
+ announceCancel = null;
591
+ stopHeadListener();
450
592
  },
451
593
  };
452
594
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ledger-relay.js","sourceRoot":"","sources":["../src/ledger-relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ledger-relay.js","sourceRoot":"","sources":["../src/ledger-relay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { LedgerOfferOutcome, ServerLedgerRead } from './security/bridge/security.js';
2
+ export declare const REOFFER_PAIR_WINDOW_MS = 30000;
3
+ /** At most one POST per this interval, whatever the (our head, server head) pair. */
4
+ export declare const REOFFER_MIN_POST_SPACING_MS = 30000;
5
+ /** After a 404 (the server does not know the account), nothing is posted for this long unless a read finds the account again. */
6
+ export declare const REOFFER_UNKNOWN_ACCOUNT_PAUSE_MS = 3600000;
7
+ export declare const REOFFER_FIRST_BACKOFF_MS = 30000;
8
+ export declare const REOFFER_MAX_BACKOFF_MS = 600000;
9
+ export declare const REOFFER_MAX_RETRY_AFTER_MS = 3600000;
10
+ /** Each backoff wait is multiplied by 1 - REOFFER_JITTER + 2 * REOFFER_JITTER * random(). */
11
+ export declare const REOFFER_JITTER = 0.2;
12
+ /** The server's answer to POST /api/account/ledger { ledger, expectHead }. */
13
+ export interface LedgerPostAnswer {
14
+ status: number;
15
+ /** The parsed JSON body, or null when it is absent, oversized or not JSON. */
16
+ body: unknown;
17
+ /** Retry-After in ms (seconds or an HTTP date), or null. */
18
+ retryAfterMs: number | null;
19
+ }
20
+ export interface LedgerReofferDeps {
21
+ /** A fresh read of the server's chain, offered to the replica as 'server' (BridgeSecurityService.readServerLedger). */
22
+ read(): Promise<ServerLedgerRead>;
23
+ /** The stored chain and its head; null when there is nothing this bridge may send (no chain, or this bridge is not active in it). */
24
+ local(): Promise<{
25
+ ledger: unknown;
26
+ head: string;
27
+ } | null>;
28
+ /** POST /api/account/ledger { ledger, expectHead }. Throws on a network failure. */
29
+ post(ledger: unknown, expectHead: string): Promise<LedgerPostAnswer>;
30
+ /** Offers a chain the server answered with to the replica as 'server'. */
31
+ offer(ledger: unknown): Promise<LedgerOfferOutcome>;
32
+ /** Monotonic clock (ms). */
33
+ now(): number;
34
+ /** [0, 1), for the jitter. */
35
+ random(): number;
36
+ /** Timer; returns a cancel function. */
37
+ schedule(run: () => void, ms: number): () => void;
38
+ log(line: string): void;
39
+ }
40
+ /** posted: the server answered 2xx (the next read confirms it). not_behind: nothing to send. skipped: the pair, or any POST, was sent less
41
+ * than 30 s ago. failed: backing off. deferred: an earlier failure's wait has not passed (a retry is scheduled). stopped: shut down, or
42
+ * paused after the server said it does not know the account. */
43
+ export type ReofferOutcome = 'posted' | 'not_behind' | 'skipped' | 'failed' | 'deferred' | 'stopped';
44
+ export interface LedgerReoffer {
45
+ /** A server read showed the server holding a strict prefix of our chain (so the server knows the account: a 404 pause ends): start one
46
+ * paced attempt (it reads again before it posts). */
47
+ noteServerBehind(): void;
48
+ /** Runs an attempt now unless one is running (joined) or a backoff wait is pending ('deferred'); for a relay token refused with a plain
49
+ * 401, which may mean the server lacks our records. It posts only when its own fresh read says 'behind'. */
50
+ check(): Promise<ReofferOutcome>;
51
+ /** Cancels the retry timer; nothing runs afterwards. */
52
+ stop(): void;
53
+ }
54
+ /** The backoff wait after `failures` failed attempts in a row (>= 1), for a given random() draw. */
55
+ export declare function reofferBackoffMs(failures: number, random: number): number;
56
+ export declare function createLedgerReoffer(deps: LedgerReofferDeps): LedgerReoffer;