@serfab/cadre-core 1.7.0 → 1.8.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 +8 -6
- package/dist/cadre-node.d.ts +386 -114
- package/dist/cadre-node.js +887 -359
- package/dist/cadre-node.js.map +1 -1
- package/dist/control-authorization.d.ts +2 -2
- package/dist/control-authorization.js +1 -0
- package/dist/control-authorization.js.map +1 -1
- package/dist/control-cohort.d.ts +6 -0
- package/dist/control-cohort.js +6 -0
- package/dist/control-cohort.js.map +1 -1
- package/dist/control-database.d.ts +46 -8
- package/dist/control-database.js +97 -18
- package/dist/control-database.js.map +1 -1
- package/dist/control-formation-recorder.d.ts +37 -14
- package/dist/control-formation-recorder.js +60 -10
- package/dist/control-formation-recorder.js.map +1 -1
- package/dist/control-read-retry.d.ts +13 -12
- package/dist/control-read-retry.js +14 -12
- package/dist/control-read-retry.js.map +1 -1
- package/dist/control-schema.d.ts +1 -1
- package/dist/control-schema.js +67 -5
- package/dist/control-schema.js.map +1 -1
- package/dist/control-stream.d.ts +9 -1
- package/dist/control-stream.js +24 -1
- package/dist/control-stream.js.map +1 -1
- package/dist/control-write-retry.d.ts +12 -2
- package/dist/control-write-retry.js +13 -2
- package/dist/control-write-retry.js.map +1 -1
- package/dist/delegate-admission.d.ts +11 -8
- package/dist/delegate-admission.js +19 -11
- package/dist/delegate-admission.js.map +1 -1
- package/dist/diagnostics/connection-path.d.ts +0 -7
- package/dist/diagnostics/connection-path.js +0 -7
- package/dist/diagnostics/connection-path.js.map +1 -1
- package/dist/formation-approval.d.ts +7 -0
- package/dist/formation-approval.js +9 -3
- package/dist/formation-approval.js.map +1 -1
- package/dist/fs-atomic.d.ts +11 -2
- package/dist/fs-atomic.js +13 -3
- package/dist/fs-atomic.js.map +1 -1
- package/dist/hibernation-manager.d.ts +111 -8
- package/dist/hibernation-manager.js +234 -49
- package/dist/hibernation-manager.js.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.js +15 -9
- package/dist/index.js.map +1 -1
- package/dist/joined-strand-store.d.ts +90 -25
- package/dist/joined-strand-store.js +223 -55
- package/dist/joined-strand-store.js.map +1 -1
- package/dist/key-store-file.js +14 -5
- package/dist/key-store-file.js.map +1 -1
- package/dist/link-budget.d.ts +367 -69
- package/dist/link-budget.js +375 -72
- package/dist/link-budget.js.map +1 -1
- package/dist/membership-connection-gater.d.ts +30 -43
- package/dist/membership-connection-gater.js +31 -42
- package/dist/membership-connection-gater.js.map +1 -1
- package/dist/peer-dial.d.ts +24 -4
- package/dist/peer-dial.js +74 -5
- package/dist/peer-dial.js.map +1 -1
- package/dist/peer-join-backfill.d.ts +2 -1
- package/dist/peer-join-backfill.js +6 -5
- package/dist/peer-join-backfill.js.map +1 -1
- package/dist/push-fanout.d.ts +6 -0
- package/dist/push-fanout.js +6 -0
- package/dist/push-fanout.js.map +1 -1
- package/dist/relay-reservation.d.ts +3 -1
- package/dist/relay-reservation.js +3 -1
- package/dist/relay-reservation.js.map +1 -1
- package/dist/relay-server.d.ts +79 -0
- package/dist/relay-server.js +74 -0
- package/dist/relay-server.js.map +1 -0
- package/dist/seed-bootstrap.d.ts +57 -4
- package/dist/seed-bootstrap.js +107 -83
- package/dist/seed-bootstrap.js.map +1 -1
- package/dist/storage-scope.d.ts +33 -17
- package/dist/storage-scope.js +44 -23
- package/dist/storage-scope.js.map +1 -1
- package/dist/strand-addr-protocol.d.ts +58 -21
- package/dist/strand-addr-protocol.js +133 -85
- package/dist/strand-addr-protocol.js.map +1 -1
- package/dist/strand-database.d.ts +20 -2
- package/dist/strand-database.js +42 -5
- package/dist/strand-database.js.map +1 -1
- package/dist/strand-first-sync-gate.d.ts +59 -21
- package/dist/strand-first-sync-gate.js +58 -19
- package/dist/strand-first-sync-gate.js.map +1 -1
- package/dist/strand-formation-deadlines.d.ts +151 -0
- package/dist/strand-formation-deadlines.js +171 -0
- package/dist/strand-formation-deadlines.js.map +1 -0
- package/dist/strand-formation-manager.d.ts +63 -30
- package/dist/strand-formation-manager.js +67 -41
- package/dist/strand-formation-manager.js.map +1 -1
- package/dist/strand-formation-protocol.d.ts +45 -35
- package/dist/strand-formation-protocol.js +59 -122
- package/dist/strand-formation-protocol.js.map +1 -1
- package/dist/strand-instance-manager.d.ts +113 -6
- package/dist/strand-instance-manager.js +257 -41
- package/dist/strand-instance-manager.js.map +1 -1
- package/dist/strand-membership-writer.d.ts +6 -0
- package/dist/strand-membership-writer.js +11 -0
- package/dist/strand-membership-writer.js.map +1 -1
- package/dist/strand-peer-book-protocol.d.ts +13 -4
- package/dist/strand-peer-book-protocol.js +3 -7
- package/dist/strand-peer-book-protocol.js.map +1 -1
- package/dist/strand-peer-book.d.ts +1 -1
- package/dist/strand-peer-book.js +8 -1
- package/dist/strand-peer-book.js.map +1 -1
- package/dist/strand-peer-observer.js +1 -1
- package/dist/strand-revocation-enforcer.js +2 -1
- package/dist/strand-revocation-enforcer.js.map +1 -1
- package/dist/strand-solicitation.d.ts +36 -20
- package/dist/strand-solicitation.js +4 -4
- package/dist/strand-solicitation.js.map +1 -1
- package/dist/strand-wake-protocol.d.ts +80 -23
- package/dist/strand-wake-protocol.js +89 -64
- package/dist/strand-wake-protocol.js.map +1 -1
- package/dist/types.d.ts +128 -38
- package/dist/types.js +4 -3
- package/dist/types.js.map +1 -1
- package/package.json +7 -7
- package/src/cadre-node.ts +8367 -7776
- package/src/control-authorization.ts +2 -1
- package/src/control-cohort.ts +6 -0
- package/src/control-database.ts +122 -18
- package/src/control-formation-recorder.ts +354 -305
- package/src/control-read-retry.ts +14 -12
- package/src/control-schema.ts +67 -5
- package/src/control-stream.ts +25 -1
- package/src/control-write-retry.ts +13 -2
- package/src/delegate-admission.ts +23 -13
- package/src/diagnostics/connection-path.ts +0 -7
- package/src/formation-approval.ts +610 -604
- package/src/fs-atomic.ts +14 -4
- package/src/hibernation-manager.ts +638 -437
- package/src/index.ts +28 -10
- package/src/joined-strand-store.ts +247 -57
- package/src/key-store-file.ts +14 -5
- package/src/link-budget.ts +393 -74
- package/src/membership-connection-gater.ts +31 -45
- package/src/peer-dial.ts +81 -7
- package/src/peer-join-backfill.ts +8 -6
- package/src/push-fanout.ts +6 -0
- package/src/relay-reservation.ts +3 -1
- package/src/relay-server.ts +98 -0
- package/src/seed-bootstrap.ts +133 -91
- package/src/storage-scope.ts +44 -23
- package/src/strand-addr-protocol.ts +547 -458
- package/src/strand-database.ts +287 -242
- package/src/strand-first-sync-gate.ts +58 -19
- package/src/strand-formation-deadlines.ts +227 -0
- package/src/strand-formation-manager.ts +700 -647
- package/src/strand-formation-protocol.ts +103 -150
- package/src/strand-instance-manager.ts +287 -44
- package/src/strand-membership-writer.ts +12 -0
- package/src/strand-peer-book-protocol.ts +16 -13
- package/src/strand-peer-book.ts +8 -1
- package/src/strand-peer-observer.ts +1 -1
- package/src/strand-revocation-enforcer.ts +2 -1
- package/src/strand-solicitation.ts +519 -500
- package/src/strand-wake-protocol.ts +401 -355
- package/src/types.ts +130 -38
|
@@ -27,6 +27,32 @@ export class HibernationManager {
|
|
|
27
27
|
* concurrent wake.
|
|
28
28
|
*/
|
|
29
29
|
this.wakePromises = new Map();
|
|
30
|
+
/**
|
|
31
|
+
* Hibernating strands whose armed check-in a wake cancelled, held until that wake
|
|
32
|
+
* settles. A wake that leaves the strand hibernating again (a failed rebuild, or a probe's
|
|
33
|
+
* window that re-quiesced it) re-arms the chain from here ({@link rearmAfterWake}); without
|
|
34
|
+
* it the strand is left with no runtime and nothing scheduled to retry.
|
|
35
|
+
*/
|
|
36
|
+
this.checkInsCancelledByWake = new Set();
|
|
37
|
+
/**
|
|
38
|
+
* Strands an on-demand probe (`CadreNode.serviceWake`) holds from its wake to the end of its
|
|
39
|
+
* window, with whether a check-in chain was armed when it began. While held, the probe's end
|
|
40
|
+
* ({@link endProbe}) — not the wake's settle — sets the timers, since the window may
|
|
41
|
+
* re-hibernate the strand after the wake settled.
|
|
42
|
+
*/
|
|
43
|
+
this.probes = new Map();
|
|
44
|
+
/**
|
|
45
|
+
* Strands whose check-in is running (its timer fired, `onCheckIn` not yet returned). A
|
|
46
|
+
* force-hibernate or untrack removes the strand, so the run's return schedules nothing: a
|
|
47
|
+
* check-in already running is part of the chain those calls cancel.
|
|
48
|
+
*/
|
|
49
|
+
this.runningCheckIns = new Set();
|
|
50
|
+
/**
|
|
51
|
+
* Strands whose timer-driven hibernate is running (`onHibernate` not yet returned). A
|
|
52
|
+
* force-hibernate, untrack or stop removes the strand, so the return starts no check-in
|
|
53
|
+
* chain: a force-hibernate that joins the quiesce means "keep it down".
|
|
54
|
+
*/
|
|
55
|
+
this.timerHibernates = new Set();
|
|
30
56
|
this.running = false;
|
|
31
57
|
this.config = config;
|
|
32
58
|
this.callbacks = callbacks;
|
|
@@ -69,13 +95,17 @@ export class HibernationManager {
|
|
|
69
95
|
clearTimeout(timer);
|
|
70
96
|
}
|
|
71
97
|
this.timers.clear();
|
|
72
|
-
for (const timer of this.checkInTimers.values()) {
|
|
98
|
+
for (const { timer } of this.checkInTimers.values()) {
|
|
73
99
|
clearTimeout(timer);
|
|
74
100
|
}
|
|
75
101
|
this.checkInTimers.clear();
|
|
76
102
|
// In-flight wakes clean themselves up via their finally; drop the references
|
|
77
103
|
// so a fresh start coalesces cleanly.
|
|
78
104
|
this.wakePromises.clear();
|
|
105
|
+
this.checkInsCancelledByWake.clear();
|
|
106
|
+
this.probes.clear();
|
|
107
|
+
this.runningCheckIns.clear();
|
|
108
|
+
this.timerHibernates.clear();
|
|
79
109
|
log('HibernationManager stopped');
|
|
80
110
|
}
|
|
81
111
|
/**
|
|
@@ -111,8 +141,14 @@ export class HibernationManager {
|
|
|
111
141
|
}
|
|
112
142
|
// Cancel idle/hibernate + check-in timers BEFORE quiescing so nothing fights
|
|
113
143
|
// the imperative hibernate (a stale hibernate timer firing on the quiesced
|
|
114
|
-
// strand, or a check-in resuming a strand the caller wants kept down)
|
|
144
|
+
// strand, or a check-in resuming a strand the caller wants kept down) — including
|
|
145
|
+
// a chain an in-flight wake or probe would restore when it settles, or one a
|
|
146
|
+
// timer-driven hibernate still quiescing would start when it returns.
|
|
115
147
|
this.clearTimers(instance.strandId);
|
|
148
|
+
this.checkInsCancelledByWake.delete(instance.strandId);
|
|
149
|
+
this.probes.delete(instance.strandId);
|
|
150
|
+
this.runningCheckIns.delete(instance.strandId);
|
|
151
|
+
this.timerHibernates.delete(instance.strandId);
|
|
116
152
|
await this.callbacks.onHibernate(instance.strandId);
|
|
117
153
|
log('forceHibernate: strand %s hibernated (timers cancelled, not re-armed)', instance.strandId);
|
|
118
154
|
return true;
|
|
@@ -138,6 +174,10 @@ export class HibernationManager {
|
|
|
138
174
|
*/
|
|
139
175
|
untrackStrand(strandId) {
|
|
140
176
|
this.clearTimers(strandId);
|
|
177
|
+
this.checkInsCancelledByWake.delete(strandId);
|
|
178
|
+
this.probes.delete(strandId);
|
|
179
|
+
this.runningCheckIns.delete(strandId);
|
|
180
|
+
this.timerHibernates.delete(strandId);
|
|
141
181
|
log('Untracked strand %s from hibernation', strandId);
|
|
142
182
|
}
|
|
143
183
|
/**
|
|
@@ -148,28 +188,15 @@ export class HibernationManager {
|
|
|
148
188
|
return;
|
|
149
189
|
const { strandId, status, latencyHint } = instance;
|
|
150
190
|
instance.lastActivity = new Date();
|
|
151
|
-
// If idle or
|
|
191
|
+
// If idle, hibernating or on its way there, wake up. Coalesce so two near-simultaneous
|
|
152
192
|
// activities don't each fire onWake (which would rebuild two libp2p nodes).
|
|
153
|
-
if (status === 'idle' || status === 'hibernating') {
|
|
193
|
+
if (status === 'idle' || status === 'hibernating' || this.callbacks.isQuiescing(strandId)) {
|
|
154
194
|
log('Activity on %s strand %s - waking', status, strandId);
|
|
155
|
-
this.
|
|
195
|
+
this.clearTimersForWake(strandId);
|
|
156
196
|
// Fire-and-forget; force-wake awaiters see errors, so swallow (and log)
|
|
157
|
-
// here to avoid an unhandled rejection on this best-effort path.
|
|
158
|
-
//
|
|
159
|
-
|
|
160
|
-
// strand `active`), re-arm the idle→hibernate→check-in cycle. Without this
|
|
161
|
-
// a strand that wakes then goes quiet stays `active` forever and never
|
|
162
|
-
// re-hibernates — so the check-in backoff could never restart at base.
|
|
163
|
-
// Guarded on `active` so a wake that did not transition (a coalesced
|
|
164
|
-
// no-op, or a still-mid-flight rebuild) never arms a stray timer.
|
|
165
|
-
void this.beginWake(strandId).then(() => {
|
|
166
|
-
if (this.running && instance.status === 'active') {
|
|
167
|
-
const timeouts = this.getTimeouts(instance.latencyHint);
|
|
168
|
-
if (timeouts.idleTimeout !== Infinity) {
|
|
169
|
-
this.scheduleIdleTransition(instance);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}).catch((err) => {
|
|
197
|
+
// here to avoid an unhandled rejection on this best-effort path. The wake's
|
|
198
|
+
// settle re-arms the timers for the state it leaves (see beginWake).
|
|
199
|
+
void this.beginWake(instance).catch((err) => {
|
|
173
200
|
log('Activity-driven wake failed for strand %s: %o', strandId, err);
|
|
174
201
|
});
|
|
175
202
|
return;
|
|
@@ -183,19 +210,59 @@ export class HibernationManager {
|
|
|
183
210
|
}
|
|
184
211
|
}
|
|
185
212
|
/**
|
|
186
|
-
* Force
|
|
213
|
+
* Force-wake a strand (an explicit or peer-sent wake). Works whether or not hibernation is
|
|
214
|
+
* enabled; once the wake settles the strand has the timers its resulting state calls for
|
|
215
|
+
* ({@link rearmAfterWake}).
|
|
187
216
|
*/
|
|
188
|
-
async wakeStrand(
|
|
189
|
-
this.
|
|
190
|
-
await this.beginWake(
|
|
217
|
+
async wakeStrand(instance) {
|
|
218
|
+
this.clearTimersForWake(instance.strandId);
|
|
219
|
+
await this.beginWake(instance);
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Wake a strand for an on-demand probe (`CadreNode.serviceWake`), holding it until
|
|
223
|
+
* {@link endProbe}: the probe's window runs after the wake settles and may re-hibernate the
|
|
224
|
+
* strand, so the wake's settle arms nothing. Records whether a check-in chain was armed —
|
|
225
|
+
* or already cancelled by a wake this one joins — so the end can restore it.
|
|
226
|
+
*/
|
|
227
|
+
async probeWake(instance) {
|
|
228
|
+
const { strandId } = instance;
|
|
229
|
+
const hadCheckInChain = this.checkInTimers.has(strandId) || this.checkInsCancelledByWake.has(strandId);
|
|
230
|
+
this.probes.set(strandId, { hadCheckInChain });
|
|
231
|
+
this.clearTimersForWake(strandId);
|
|
232
|
+
await this.beginWake(instance);
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* End a probe begun by {@link probeWake}, success or failure: arm the timers the strand's
|
|
236
|
+
* state now calls for. A probe never creates a check-in chain, only restores one it
|
|
237
|
+
* interrupted. No-op when the probe is no longer held (a force-hibernate or untrack during
|
|
238
|
+
* it means "keep it down"). A wake that began during the probe's window — activity during
|
|
239
|
+
* its closing quiesce, say — is still rebuilding the strand, so it takes the chain and its
|
|
240
|
+
* settle decides.
|
|
241
|
+
*/
|
|
242
|
+
endProbe(instance) {
|
|
243
|
+
const { strandId } = instance;
|
|
244
|
+
const probe = this.probes.get(strandId);
|
|
245
|
+
if (!probe)
|
|
246
|
+
return;
|
|
247
|
+
this.probes.delete(strandId);
|
|
248
|
+
if (this.wakePromises.has(strandId)) {
|
|
249
|
+
if (probe.hadCheckInChain) {
|
|
250
|
+
this.checkInsCancelledByWake.add(strandId);
|
|
251
|
+
}
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
this.rearmAfterWake(instance, probe.hadCheckInChain);
|
|
191
255
|
}
|
|
192
256
|
/**
|
|
193
257
|
* Begin a wake for a strand, or coalesce with one already in flight. Ensures
|
|
194
258
|
* `onWake` runs at most once per concurrent wake — the returned promise is
|
|
195
259
|
* shared by all overlapping callers and cleared once it settles. Force-wake
|
|
196
|
-
* callers await it; activity-driven callers fire-and-forget.
|
|
260
|
+
* callers await it; activity-driven callers fire-and-forget. Success or failure,
|
|
261
|
+
* the settle re-arms the strand's timers (unless a probe holds it), and a failure
|
|
262
|
+
* then rejects.
|
|
197
263
|
*/
|
|
198
|
-
beginWake(
|
|
264
|
+
beginWake(instance) {
|
|
265
|
+
const { strandId } = instance;
|
|
199
266
|
const existing = this.wakePromises.get(strandId);
|
|
200
267
|
if (existing) {
|
|
201
268
|
return existing;
|
|
@@ -205,12 +272,53 @@ export class HibernationManager {
|
|
|
205
272
|
await this.callbacks.onWake(strandId);
|
|
206
273
|
}
|
|
207
274
|
finally {
|
|
208
|
-
this.
|
|
275
|
+
this.settleWake(instance);
|
|
209
276
|
}
|
|
210
277
|
})();
|
|
211
278
|
this.wakePromises.set(strandId, wake);
|
|
212
279
|
return wake;
|
|
213
280
|
}
|
|
281
|
+
settleWake(instance) {
|
|
282
|
+
const { strandId } = instance;
|
|
283
|
+
const hadCheckInChain = this.checkInsCancelledByWake.delete(strandId);
|
|
284
|
+
this.wakePromises.delete(strandId);
|
|
285
|
+
if (!this.probes.has(strandId)) {
|
|
286
|
+
this.rearmAfterWake(instance, hadCheckInChain);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* {@link clearTimers} for a wake, first remembering an armed check-in so a wake that leaves
|
|
291
|
+
* the strand hibernating can restore the chain. Only an ARMED chain is remembered: a strand
|
|
292
|
+
* force-hibernated without one (the mobile background path) must not gain one from a wake,
|
|
293
|
+
* and a check-in that is mid-run hands its chain to the wake when it returns
|
|
294
|
+
* ({@link handCheckInChainToHolder}).
|
|
295
|
+
*/
|
|
296
|
+
clearTimersForWake(strandId) {
|
|
297
|
+
if (this.checkInTimers.has(strandId)) {
|
|
298
|
+
this.checkInsCancelledByWake.add(strandId);
|
|
299
|
+
}
|
|
300
|
+
this.clearTimers(strandId);
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Leave a strand whose wake (or probe) settled with the timers its state calls for: the idle
|
|
304
|
+
* countdown if it is live, or — if it reads `hibernating` again (a failed rebuild, or a probe
|
|
305
|
+
* window that re-quiesced it) — the check-in chain it had before, at the base delay. A
|
|
306
|
+
* strand that had no chain gains none, and one in any other state gets nothing.
|
|
307
|
+
*/
|
|
308
|
+
rearmAfterWake(instance, hadCheckInChain) {
|
|
309
|
+
if (!this.config.enabled || !this.running)
|
|
310
|
+
return;
|
|
311
|
+
if (instance.status === 'hibernating') {
|
|
312
|
+
// A hibernating strand has no idle countdown, e.g. one activity armed mid-probe.
|
|
313
|
+
this.clearTimer(instance.strandId);
|
|
314
|
+
if (hadCheckInChain) {
|
|
315
|
+
log('Wake of strand %s left it hibernating; restoring its check-in chain', instance.strandId);
|
|
316
|
+
this.scheduleCheckIn(instance);
|
|
317
|
+
}
|
|
318
|
+
return;
|
|
319
|
+
}
|
|
320
|
+
this.rearmIdleIfLive(instance);
|
|
321
|
+
}
|
|
214
322
|
scheduleIdleTransition(instance) {
|
|
215
323
|
const { strandId, latencyHint } = instance;
|
|
216
324
|
const timeouts = this.getTimeouts(latencyHint);
|
|
@@ -258,22 +366,39 @@ export class HibernationManager {
|
|
|
258
366
|
// Transition to hibernating. onHibernate now releases strand-network
|
|
259
367
|
// resources (quiesce), so its close()/stop() can reject — catch so a failed
|
|
260
368
|
// hibernate logs instead of producing an unhandled rejection.
|
|
369
|
+
this.timerHibernates.add(strandId);
|
|
261
370
|
void this.callbacks.onHibernate(strandId).then(() => {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
371
|
+
if (!this.timerHibernates.delete(strandId)) {
|
|
372
|
+
log('Hibernate of strand %s was force-hibernated or untracked meanwhile; no check-in chain', strandId);
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
if (this.getTimeouts(latencyHint).checkInInterval !== Infinity) {
|
|
376
|
+
this.startCheckInChain(instance);
|
|
266
377
|
}
|
|
267
378
|
}).catch((err) => {
|
|
379
|
+
this.timerHibernates.delete(strandId);
|
|
268
380
|
log('onHibernate failed for strand %s: %o', strandId, err);
|
|
269
381
|
});
|
|
270
382
|
}
|
|
383
|
+
/**
|
|
384
|
+
* Start the check-in chain of a strand the timer path just hibernated. A wake or probe that
|
|
385
|
+
* landed during the quiesce holds the strand and takes the chain instead
|
|
386
|
+
* ({@link handCheckInChainToHolder}); one that already settled left it live with its idle
|
|
387
|
+
* countdown, and a live strand gets no chain.
|
|
388
|
+
*/
|
|
389
|
+
startCheckInChain(instance) {
|
|
390
|
+
if (this.handCheckInChainToHolder(instance))
|
|
391
|
+
return;
|
|
392
|
+
if (instance.status === 'hibernating') {
|
|
393
|
+
this.scheduleCheckIn(instance);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
271
396
|
/**
|
|
272
397
|
* Arm the next check-in for a hibernating strand. Each call is a single-shot
|
|
273
398
|
* `setTimeout` (not a fixed `setInterval`) so the period escalates per
|
|
274
399
|
* {@link runCheckIn} and a slow `onCheckIn` never overlaps the next tick.
|
|
275
400
|
*
|
|
276
|
-
* `delay` is omitted by
|
|
401
|
+
* `delay` is omitted by a chain start ({@link startCheckInChain}, or a wake restoring one),
|
|
277
402
|
* defaulting to the base `checkInInterval` — which is why backoff naturally
|
|
278
403
|
* resets to base each fresh hibernation cycle, with no per-strand counter to
|
|
279
404
|
* clear on wake. Subsequent ticks pass the escalated, capped delay.
|
|
@@ -282,15 +407,15 @@ export class HibernationManager {
|
|
|
282
407
|
const { strandId, latencyHint } = instance;
|
|
283
408
|
const timeouts = this.getTimeouts(latencyHint);
|
|
284
409
|
const currentDelay = delay ?? timeouts.checkInInterval;
|
|
285
|
-
// Replace any existing check-in timer
|
|
286
|
-
|
|
287
|
-
if (existing) {
|
|
288
|
-
clearTimeout(existing);
|
|
289
|
-
}
|
|
410
|
+
// Replace any existing check-in timer.
|
|
411
|
+
this.clearCheckInTimer(strandId);
|
|
290
412
|
const timer = setTimeout(() => {
|
|
413
|
+
// Only ARMED check-ins stay in the map, so a wake during this run does not take it
|
|
414
|
+
// for a chain to restore (see clearTimersForWake) — the run hands it over on return.
|
|
415
|
+
this.checkInTimers.delete(strandId);
|
|
291
416
|
void this.runCheckIn(instance, currentDelay);
|
|
292
417
|
}, currentDelay);
|
|
293
|
-
this.checkInTimers.set(strandId, timer);
|
|
418
|
+
this.checkInTimers.set(strandId, { timer, instance });
|
|
294
419
|
instance.nextCheckIn = new Date(Date.now() + currentDelay);
|
|
295
420
|
}
|
|
296
421
|
/**
|
|
@@ -298,10 +423,12 @@ export class HibernationManager {
|
|
|
298
423
|
* sync window → re-hibernate-if-idle cycle in `CadreNode`) and AWAIT it before
|
|
299
424
|
* deciding the next step.
|
|
300
425
|
*
|
|
426
|
+
* - If a force-hibernate, untrack or stop cancelled the chain while it ran, stop.
|
|
427
|
+
* - If a wake or probe holds the strand, hand the chain to it
|
|
428
|
+
* ({@link handCheckInChainToHolder}).
|
|
301
429
|
* - If the strand woke during the check-in (`onCheckIn` left it non-
|
|
302
|
-
* `hibernating`), stop the chain
|
|
303
|
-
*
|
|
304
|
-
* base delay (backoff reset).
|
|
430
|
+
* `hibernating`), stop the chain and restart the idle countdown; the next
|
|
431
|
+
* hibernation restarts the chain at the base delay (backoff reset).
|
|
305
432
|
* - Otherwise escalate the delay by `checkInBackoffFactor`, capped at
|
|
306
433
|
* `checkInMaxInterval`, and reschedule.
|
|
307
434
|
*/
|
|
@@ -310,6 +437,7 @@ export class HibernationManager {
|
|
|
310
437
|
if (!this.running)
|
|
311
438
|
return;
|
|
312
439
|
log('Check-in for hibernating strand %s (delay=%dms)', strandId, currentDelay);
|
|
440
|
+
this.runningCheckIns.add(strandId);
|
|
313
441
|
try {
|
|
314
442
|
await this.callbacks.onCheckIn(strandId);
|
|
315
443
|
}
|
|
@@ -318,22 +446,74 @@ export class HibernationManager {
|
|
|
318
446
|
// fall through to reschedule the next, longer-delayed attempt.
|
|
319
447
|
log('onCheckIn failed for strand %s: %o', strandId, err);
|
|
320
448
|
}
|
|
321
|
-
if (!this.running)
|
|
449
|
+
if (!this.runningCheckIns.delete(strandId) || !this.running) {
|
|
450
|
+
log('Check-in chain of strand %s was cancelled while it ran; not rescheduling', strandId);
|
|
451
|
+
instance.nextCheckIn = undefined;
|
|
452
|
+
return;
|
|
453
|
+
}
|
|
454
|
+
if (this.handCheckInChainToHolder(instance))
|
|
322
455
|
return;
|
|
323
456
|
// The check-in either woke the strand (CadreNode left it active) or left it
|
|
324
457
|
// hibernating. Inspect the shared instance the callback just mutated.
|
|
325
458
|
if (instance.status !== 'hibernating') {
|
|
326
459
|
log('Check-in woke strand %s; backoff resets on next hibernation', strandId);
|
|
327
|
-
this.
|
|
460
|
+
this.clearCheckInTimer(strandId);
|
|
328
461
|
// The chain is stopping; drop the now-stale next-check-in advertisement so
|
|
329
462
|
// `getStrand` doesn't report a phantom check-in for a strand that is awake.
|
|
330
463
|
instance.nextCheckIn = undefined;
|
|
464
|
+
this.rearmIdleIfLive(instance);
|
|
331
465
|
return;
|
|
332
466
|
}
|
|
333
467
|
const timeouts = this.getTimeouts(latencyHint);
|
|
334
468
|
const nextDelay = Math.min(currentDelay * timeouts.checkInBackoffFactor, timeouts.checkInMaxInterval);
|
|
335
469
|
this.scheduleCheckIn(instance, nextDelay);
|
|
336
470
|
}
|
|
471
|
+
/**
|
|
472
|
+
* Give a check-in chain — a returning check-in's, or the one the timer path starts
|
|
473
|
+
* ({@link startCheckInChain}) — to a wake or probe that holds the strand, as if that
|
|
474
|
+
* wake had cancelled an armed check-in: its settle ({@link settleWake}) or end
|
|
475
|
+
* ({@link endProbe}) restores the chain at the base delay if the strand ends `hibernating`,
|
|
476
|
+
* and starts the idle countdown if it ends live. The status the check-in left says nothing
|
|
477
|
+
* yet: a check-in that failed before its rebuild leaves the strand to a wake still building
|
|
478
|
+
* it (`starting`), and one that ends `hibernating` may be overtaken by a wake still in
|
|
479
|
+
* flight. Deciding here would drop the chain if that wake then fails, or leave a check-in
|
|
480
|
+
* armed on a strand it brings up.
|
|
481
|
+
*
|
|
482
|
+
* @returns whether a wake or probe took the chain.
|
|
483
|
+
*/
|
|
484
|
+
handCheckInChainToHolder(instance) {
|
|
485
|
+
const { strandId } = instance;
|
|
486
|
+
const probe = this.probes.get(strandId);
|
|
487
|
+
if (probe) {
|
|
488
|
+
probe.hadCheckInChain = true;
|
|
489
|
+
}
|
|
490
|
+
else if (this.wakePromises.has(strandId)) {
|
|
491
|
+
this.checkInsCancelledByWake.add(strandId);
|
|
492
|
+
}
|
|
493
|
+
else {
|
|
494
|
+
return false;
|
|
495
|
+
}
|
|
496
|
+
log('Strand %s: a wake holds it, so the wake decides its check-in chain', strandId);
|
|
497
|
+
this.clearCheckInTimer(strandId);
|
|
498
|
+
instance.nextCheckIn = undefined;
|
|
499
|
+
return true;
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* Start the idle countdown for a strand a check-in or wake left live. Activity recorded
|
|
503
|
+
* while the runtime was still rebuilding found the strand neither idle nor active, so it
|
|
504
|
+
* armed nothing — without this the strand would stay up until the next activity. Only for
|
|
505
|
+
* a live status: a strand stopped or failed mid-rebuild must not gain a timer chain. Nor
|
|
506
|
+
* one being quiesced: it reads live until the quiesce ends, e.g. a force-hibernate queued
|
|
507
|
+
* behind the rebuild of the wake settling now, and the countdown would later idle the
|
|
508
|
+
* quiesced strand and start a check-in chain the caller meant to keep off.
|
|
509
|
+
*/
|
|
510
|
+
rearmIdleIfLive(instance) {
|
|
511
|
+
const live = (instance.status === 'active' || instance.status === 'syncing')
|
|
512
|
+
&& !this.callbacks.isQuiescing(instance.strandId);
|
|
513
|
+
if (live && this.getTimeouts(instance.latencyHint).idleTimeout !== Infinity) {
|
|
514
|
+
this.scheduleIdleTransition(instance);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
337
517
|
clearTimer(strandId) {
|
|
338
518
|
const timer = this.timers.get(strandId);
|
|
339
519
|
if (timer) {
|
|
@@ -341,14 +521,19 @@ export class HibernationManager {
|
|
|
341
521
|
this.timers.delete(strandId);
|
|
342
522
|
}
|
|
343
523
|
}
|
|
344
|
-
|
|
345
|
-
this.
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
clearTimeout(checkInTimer);
|
|
524
|
+
clearCheckInTimer(strandId) {
|
|
525
|
+
const pending = this.checkInTimers.get(strandId);
|
|
526
|
+
if (pending) {
|
|
527
|
+
clearTimeout(pending.timer);
|
|
349
528
|
this.checkInTimers.delete(strandId);
|
|
529
|
+
// `getStrand` must not advertise a check-in that is no longer scheduled.
|
|
530
|
+
pending.instance.nextCheckIn = undefined;
|
|
350
531
|
}
|
|
351
532
|
}
|
|
533
|
+
clearTimers(strandId) {
|
|
534
|
+
this.clearTimer(strandId);
|
|
535
|
+
this.clearCheckInTimer(strandId);
|
|
536
|
+
}
|
|
352
537
|
/**
|
|
353
538
|
* Get the current status of hibernation tracking
|
|
354
539
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hibernation-manager.js","sourceRoot":"","sources":["../src/hibernation-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hibernation-manager.js","sourceRoot":"","sources":["../src/hibernation-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,7 +30,7 @@ export { defaultTimeoutScheduler, type TimeoutScheduler } from './timeout-schedu
|
|
|
30
30
|
export { HibernationManager, type HibernationCallbacks } from './hibernation-manager.js';
|
|
31
31
|
export { ArachnodeStub, createArachnodeStub, type RingConfig } from './arachnode-stub.js';
|
|
32
32
|
export { EnrollmentService, type MemberVerifier, type MemberRegistry } from './enrollment.js';
|
|
33
|
-
export { StrandSolicitationService, createDefaultFormationResponseValidator, type DisclosureValidator, type FormationUsageRecorder, type ResolvedHostStrand, type StrandProvisioner, type FormationResponseValidator, type StrandSolicitationServiceOptions } from './strand-solicitation.js';
|
|
33
|
+
export { StrandSolicitationService, createDefaultFormationResponseValidator, type DisclosureValidator, type FormationUsageRecorder, type FormationUsageParams, type AuthorizedFormationUsage, type ResolvedHostStrand, type StrandProvisioner, type FormationResponseValidator, type StrandSolicitationServiceOptions } from './strand-solicitation.js';
|
|
34
34
|
export { createHttpFormationApprover, signFormationApproval, verifyFormationApproval, FormationApprovalError, type FormationApprovalRequest, type FormationVouchFields, type FormationApproval, type FormationApprover, type FormationApprovalFailure } from './formation-approval.js';
|
|
35
35
|
export { ControlFormationUsageRecorder } from './control-formation-recorder.js';
|
|
36
36
|
export { generateStrandMemberKey, strandMemberKeyPair } from './strand-member-key.js';
|
|
@@ -40,7 +40,7 @@ export { StrandMemberRegistry, StrandMemberVerifier, memberRegistrationPayload,
|
|
|
40
40
|
export { SeedBootstrapService, SEED_PROTOCOL, ed25519PublicKeyB64FromPeerId, type SeedBootstrapConfig, type SeedEventCallbacks } from './seed-bootstrap.js';
|
|
41
41
|
export { peerAuthorizationDigest, cadrePeerVoucherDigest, cadrePeerRemoveDigest, deviceTokenAddDigest, deviceTokenRemoveDigest, formationConsentDigest, verifyPeerAuthorization, verifyCadrePeerVoucher, verifyFormationConsent, type DeviceTokenAuthorizedRow } from './peer-authorization.js';
|
|
42
42
|
export { StrandWakeService, dialWake, WAKE_PROTOCOL, DEFAULT_WAKE_DIAL_BUDGET_MS, type StrandWakeServiceOptions, type DialWakeOptions } from './strand-wake-protocol.js';
|
|
43
|
-
export { StrandAddrService, collectStrandAddrs, STRAND_ADDR_PROTOCOL, type StrandAddrServiceOptions, type StrandAddrPeer, type CollectStrandAddrsOptions } from './strand-addr-protocol.js';
|
|
43
|
+
export { StrandAddrService, collectStrandAddrs, STRAND_ADDR_PROTOCOL, type StrandAddrServiceOptions, type StrandAddrPeer, type CollectStrandAddrsOptions, type StrandAddrOutcome, type StrandAddrCollection } from './strand-addr-protocol.js';
|
|
44
44
|
export { peerRecordSignedPayload, signPeerRecord, verifyPeerRecordSignature, isPeerRecordFresh, isSignalingAddr, orderSignalingFirst, withTrailingPeerId, currentMemberTrustPolicy, DEFAULT_PEER_RECORD_MAX_AGE_MS, DEFAULT_PEER_RECORD_HEARTBEAT_MS } from './peer-record.js';
|
|
45
45
|
export { deviceTokenSignedPayload, signDeviceTokenRecord, verifyDeviceTokenSignature, isPushPlatform } from './device-token.js';
|
|
46
46
|
export { STRAND_WAKE_TYPE, type StrandWakePayload } from './strand-wake-payload.js';
|
|
@@ -48,14 +48,16 @@ export type { PushNotifier, PushMessage, PushSendResult } from './push-notifier.
|
|
|
48
48
|
export { validatePushCredentials, redactPushCredentials, REDACTED } from './push-credentials.js';
|
|
49
49
|
export { PushFanoutService, DEFAULT_PUSH_COOLDOWN_MS, DEFAULT_PUSH_DEBOUNCE_MS, type PushFanoutOptions, type FanoutMember } from './push-fanout.js';
|
|
50
50
|
export { selectControlCohortDials, DEFAULT_CONTROL_COHORT_RECONCILE_MS, DEFAULT_CONTROL_COHORT_TARGET_DEGREE, type ControlCohortSelection, type ControlCohortReconcileResult } from './control-cohort.js';
|
|
51
|
-
export { dialPeerAddrs, tryAddrsInTurn, directBeforeRelayed, DEFAULT_CONTROL_COHORT_DIAL_TIMEOUT_MS, DEFAULT_CONTROL_COHORT_PER_ADDRESS_DIAL_TIMEOUT_MS, CONTROL_COHORT_DIAL_ADDRESS_ATTEMPTS, DEFAULT_PEER_DIAL_BUDGET, type PeerDialBudget, type AddrDialer } from './peer-dial.js';
|
|
52
|
-
export { DECLARED_LINK_ROUND_TRIP_MS, RELAYED_DIAL_ROUND_TRIPS, RELAY_RESERVATION_ROUND_TRIPS, CIRCUIT_REQUEST_ROUND_TRIPS, PUSH_TRANSFER_ALLOWANCE_MS, resolveLinkRoundTripMs, relayedDialBudgetMs,
|
|
51
|
+
export { dialPeerAddrs, SelfRelayOnlyError, tryAddrsInTurn, directBeforeRelayed, DEFAULT_CONTROL_COHORT_DIAL_TIMEOUT_MS, DEFAULT_CONTROL_COHORT_PER_ADDRESS_DIAL_TIMEOUT_MS, CONTROL_COHORT_DIAL_ADDRESS_ATTEMPTS, DEFAULT_PEER_DIAL_BUDGET, type PeerDialBudget, type AddrDialer } from './peer-dial.js';
|
|
52
|
+
export { DECLARED_LINK_ROUND_TRIP_MS, RELAYED_DIAL_ROUND_TRIPS, RELAY_RESERVATION_ROUND_TRIPS, CIRCUIT_REQUEST_ROUND_TRIPS, RELAYED_REQUEST_ROUND_TRIPS, PUSH_TRANSFER_ALLOWANCE_MS, ADMISSION_DECISION_TIMEOUT_MS, resolveLinkRoundTripMs, relayedDialBudgetMs, relayReservationBudgetMs, circuitRequestBudgetMs, relayedRequestBudgetMs, peerJoinPushBudget, type PeerJoinPushBudget } from './link-budget.js';
|
|
53
53
|
export { anchoredTrustPolicy, pinnedKeyTrustPolicy, tofuTrustPolicy, type SeedTrustPolicy, type SeedTrustContext, type SeedTrustDecision } from './seed-trust-policy.js';
|
|
54
54
|
export { signSchema, verifySchema, assertSchemaSignature, SchemaVerificationError } from './schema-verification.js';
|
|
55
55
|
export { FormationListener, dialFormation, isValidResponderCreatesResult, isWellFormedMembershipInvite, sanitizeStrandAddrs, FORMATION_PROTOCOL, type FormationParty, type FormationContactMessage, type FormationResultMessage, type FormationProvisionResult, type FormationStrandInfo, type FormationDbConnectionInfo, type FormationListenerOptions, type FormationDialOptions, type FormationDialResult, type ResponderProvisionOutcome } from './strand-formation-protocol.js';
|
|
56
|
-
export {
|
|
57
|
-
export {
|
|
56
|
+
export { formationDeadlines, type FormationDeadlines } from './strand-formation-deadlines.js';
|
|
57
|
+
export { StrandFormationManager, createStrandFormationManager, MEMBERSHIP_INVITE_TTL_MS, MEMBERSHIP_INVITE_UNAVAILABLE_REASON, HOST_STRAND_MUST_BE_RECREATED_REASON, type MembershipInviteIssuer, type StrandFormationManagerConfig, type StrandFormationManagerOptions } from './strand-formation-manager.js';
|
|
58
|
+
export { createMembershipConnectionGater, STRANGER_OPEN_PROTOCOLS, DEFAULT_ENROLLMENT_WINDOW_MS, RELAY_ADMISSION_RESERVE_DEADLINE_MS, RELAY_ADMISSION_CLOSE_TIMEOUT_MS, MAX_UNAUTHORIZED_RELAY_RESERVATIONS, UnauthorizedReservationBudget, type InboundAdmissionPolicy, type InboundConnectionVerdict } from './membership-connection-gater.js';
|
|
58
59
|
export { RelayReservationFailedError, UnbindableListenAddressError, RELAY_SEARCH_LISTEN_ADDR, resolveListenAddrs } from './relay-addrs.js';
|
|
59
60
|
export { strandNodeAddrs, type StrandNodeAddrs } from './strand-network-config.js';
|
|
61
|
+
export { resolveRelayServer, PARTY_RELAY_MAX_RESERVATIONS, PARTY_RELAY_RESERVATION_TTL_MS, type ResolvedRelayServer, type ResolvedRelayReservations } from './relay-server.js';
|
|
60
62
|
export { circuitMultiaddrs, superviseRelayReservation, DEFAULT_RELAY_RESERVE_TIMEOUT_MS, DEFAULT_RELAY_RESERVE_POLL_MS, DEFAULT_RELAY_CHECK_MS, DEFAULT_RELAY_MIN_BACKOFF_MS, DEFAULT_RELAY_MAX_BACKOFF_MS, type RelayReservationStatus, type RelayReservationState, type RelayReserveOptions, type RelayReservationSupervisor, type RelayReservationSupervisorOptions } from './relay-reservation.js';
|
|
61
63
|
export { classifyTransport, classifyConnectionPath, summarizeConnectionPaths, emptyConnectionPathSummary, DEFAULT_SETTLE_WINDOW_MS, type ConnectionPathKind, type ConnectionTransport, type ConnectionPath, type ConnectionPathSummary, type ConnectionLike } from './diagnostics/connection-path.js';
|
package/dist/index.js
CHANGED
|
@@ -49,10 +49,10 @@ export { MemoryBootstrapPeerStore, PersistentBootstrapPeerStore } from './bootst
|
|
|
49
49
|
// DIVERGES from theirs (an unreadable slot cold-starts rather than throwing) —
|
|
50
50
|
// see the module comment before unifying the three.
|
|
51
51
|
export { MemoryEnrolledMachineStore, PersistentEnrolledMachineStore } from './enrolled-machine-store.js';
|
|
52
|
-
// Node-local record of the strands this node joined from ANOTHER party
|
|
53
|
-
// every start as `strand:discovered`.
|
|
54
|
-
// KeyStore seam above (the record carries a
|
|
55
|
-
// no file-backed subpath.
|
|
52
|
+
// Node-local record of the strands this node joined from ANOTHER party and has not yet
|
|
53
|
+
// published party-wide, re-offered on every start as `strand:discovered`.
|
|
54
|
+
// Cross-platform: its durable form rides the KeyStore seam above (the record carries a
|
|
55
|
+
// closed strand's read secret), so there is no file-backed subpath.
|
|
56
56
|
export { MemoryJoinedStrandStore, KeyStoreJoinedStrandStore } from './joined-strand-store.js';
|
|
57
57
|
// Node-local strand peer book: per strand, the strand peers this node has met and
|
|
58
58
|
// their last-known addresses, dialed first on every launch so a restarted machine
|
|
@@ -68,7 +68,8 @@ export { StrandPeerBookSwap, STRAND_PEER_BOOK_SWAP_THROTTLE_MS, OWN_ENTRY_RESIGN
|
|
|
68
68
|
// Storage scope keys — what `CadreNodeConfig.storage.provider` is called with. A
|
|
69
69
|
// strand's key is its strand id; the control database's key carries the party id,
|
|
70
70
|
// so two parties on one device never share a control store. Every key stays within
|
|
71
|
-
// `[
|
|
71
|
+
// `[a-z0-9._-]` — lowercase, so distinct keys stay distinct on a case-insensitive
|
|
72
|
+
// filesystem: the control key by lowercase hex encoding, a strand's by
|
|
72
73
|
// `assertStrandScopeKey`, which every strand launch runs.
|
|
73
74
|
export { controlStorageScope, isControlStorageScope, isValidStrandScopeKey, assertStrandScopeKey, InvalidStrandIdError } from './storage-scope.js';
|
|
74
75
|
// Strand database
|
|
@@ -131,7 +132,7 @@ export { peerAuthorizationDigest, cadrePeerVoucherDigest, cadrePeerRemoveDigest,
|
|
|
131
132
|
// Strand Wake (control-network push-wake protocol)
|
|
132
133
|
export { StrandWakeService, dialWake, WAKE_PROTOCOL, DEFAULT_WAKE_DIAL_BUDGET_MS } from './strand-wake-protocol.js';
|
|
133
134
|
// Strand Address (control-network strand-address RPC) — wire types come via
|
|
134
|
-
// `export * from './types.js'` (StrandAddrRequest / StrandAddrResponse).
|
|
135
|
+
// `export * from './types.js'` (StrandAddrRequest / StrandAddrResponse / StrandAddrStatus).
|
|
135
136
|
export { StrandAddrService, collectStrandAddrs, STRAND_ADDR_PROTOCOL } from './strand-addr-protocol.js';
|
|
136
137
|
// Peer-address record (self-published, signed, freshness-stamped CadrePeer row)
|
|
137
138
|
export { peerRecordSignedPayload, signPeerRecord, verifyPeerRecordSignature, isPeerRecordFresh, isSignalingAddr, orderSignalingFirst, withTrailingPeerId, currentMemberTrustPolicy, DEFAULT_PEER_RECORD_MAX_AGE_MS, DEFAULT_PEER_RECORD_HEARTBEAT_MS } from './peer-record.js';
|
|
@@ -152,20 +153,21 @@ export { PushFanoutService, DEFAULT_PUSH_COOLDOWN_MS, DEFAULT_PUSH_DEBOUNCE_MS }
|
|
|
152
153
|
export { selectControlCohortDials, DEFAULT_CONTROL_COHORT_RECONCILE_MS, DEFAULT_CONTROL_COHORT_TARGET_DEGREE } from './control-cohort.js';
|
|
153
154
|
// Dialing one peer from several candidate addresses, each under its own time
|
|
154
155
|
// limit, so an address that never answers cannot starve the rest.
|
|
155
|
-
export { dialPeerAddrs, tryAddrsInTurn, directBeforeRelayed, DEFAULT_CONTROL_COHORT_DIAL_TIMEOUT_MS, DEFAULT_CONTROL_COHORT_PER_ADDRESS_DIAL_TIMEOUT_MS, CONTROL_COHORT_DIAL_ADDRESS_ATTEMPTS, DEFAULT_PEER_DIAL_BUDGET } from './peer-dial.js';
|
|
156
|
+
export { dialPeerAddrs, SelfRelayOnlyError, tryAddrsInTurn, directBeforeRelayed, DEFAULT_CONTROL_COHORT_DIAL_TIMEOUT_MS, DEFAULT_CONTROL_COHORT_PER_ADDRESS_DIAL_TIMEOUT_MS, CONTROL_COHORT_DIAL_ADDRESS_ATTEMPTS, DEFAULT_PEER_DIAL_BUDGET } from './peer-dial.js';
|
|
156
157
|
// Dial and reservation budgets counted in link round trips rather than fixed milliseconds, so
|
|
157
158
|
// one declared assumption about the link moves them all — see `NetworkConfig.linkRoundTripMs`.
|
|
158
|
-
export { DECLARED_LINK_ROUND_TRIP_MS, RELAYED_DIAL_ROUND_TRIPS, RELAY_RESERVATION_ROUND_TRIPS, CIRCUIT_REQUEST_ROUND_TRIPS, PUSH_TRANSFER_ALLOWANCE_MS, resolveLinkRoundTripMs, relayedDialBudgetMs,
|
|
159
|
+
export { DECLARED_LINK_ROUND_TRIP_MS, RELAYED_DIAL_ROUND_TRIPS, RELAY_RESERVATION_ROUND_TRIPS, CIRCUIT_REQUEST_ROUND_TRIPS, RELAYED_REQUEST_ROUND_TRIPS, PUSH_TRANSFER_ALLOWANCE_MS, ADMISSION_DECISION_TIMEOUT_MS, resolveLinkRoundTripMs, relayedDialBudgetMs, relayReservationBudgetMs, circuitRequestBudgetMs, relayedRequestBudgetMs, peerJoinPushBudget } from './link-budget.js';
|
|
159
160
|
// Seed trust policy (trust anchor for incoming seeds)
|
|
160
161
|
export { anchoredTrustPolicy, pinnedKeyTrustPolicy, tofuTrustPolicy } from './seed-trust-policy.js';
|
|
161
162
|
// Schema Verification
|
|
162
163
|
export { signSchema, verifySchema, assertSchemaSignature, SchemaVerificationError } from './schema-verification.js';
|
|
163
164
|
// Strand Formation transport (native cadre-core protocol)
|
|
164
165
|
export { FormationListener, dialFormation, isValidResponderCreatesResult, isWellFormedMembershipInvite, sanitizeStrandAddrs, FORMATION_PROTOCOL } from './strand-formation-protocol.js';
|
|
166
|
+
export { formationDeadlines } from './strand-formation-deadlines.js';
|
|
165
167
|
// Strand Formation manager (drives the native transport)
|
|
166
168
|
export { StrandFormationManager, createStrandFormationManager, MEMBERSHIP_INVITE_TTL_MS, MEMBERSHIP_INVITE_UNAVAILABLE_REASON, HOST_STRAND_MUST_BE_RECREATED_REASON } from './strand-formation-manager.js';
|
|
167
169
|
// Control-network inbound connection gate (membership defense-in-depth)
|
|
168
|
-
export { createMembershipConnectionGater, STRANGER_OPEN_PROTOCOLS, DEFAULT_ENROLLMENT_WINDOW_MS,
|
|
170
|
+
export { createMembershipConnectionGater, STRANGER_OPEN_PROTOCOLS, DEFAULT_ENROLLMENT_WINDOW_MS, RELAY_ADMISSION_RESERVE_DEADLINE_MS, RELAY_ADMISSION_CLOSE_TIMEOUT_MS, MAX_UNAUTHORIZED_RELAY_RESERVATIONS, UnauthorizedReservationBudget } from './membership-connection-gater.js';
|
|
169
171
|
// Thrown out of `CadreNode.start()` when a `network.relayAddrs` reservation does
|
|
170
172
|
// not land on its first attempt — the fail-fast posture of that config field now
|
|
171
173
|
// that the control node reserves AFTER control-database bring-up (relay-addrs.ts).
|
|
@@ -181,6 +183,10 @@ export { createMembershipConnectionGater, STRANGER_OPEN_PROTOCOLS, DEFAULT_ENROL
|
|
|
181
183
|
// spelling.
|
|
182
184
|
export { RelayReservationFailedError, UnbindableListenAddressError, RELAY_SEARCH_LISTEN_ADDR, resolveListenAddrs } from './relay-addrs.js';
|
|
183
185
|
export { strandNodeAddrs } from './strand-network-config.js';
|
|
186
|
+
// The circuit-relay SERVER a node runs, and with which init — one resolution shared by the
|
|
187
|
+
// control node and every strand node. Exported alongside the listen derivations above for the
|
|
188
|
+
// same reason: an embedder can assert on what its `network` block resolves to.
|
|
189
|
+
export { resolveRelayServer, PARTY_RELAY_MAX_RESERVATIONS, PARTY_RELAY_RESERVATION_TTL_MS } from './relay-server.js';
|
|
184
190
|
// Relay reservation via the bare `/p2p-circuit` search listener — the one route
|
|
185
191
|
// every control node takes; `network.relayAddrs` is its fail-fast posture
|
|
186
192
|
// (see relay-reservation.ts)
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,cAAc,YAAY,CAAC;AAE3B,+DAA+D;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,uBAAuB;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,mBAAmB;AACnB,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,eAAe,EAAwO,MAAM,uBAAuB,CAAC;AAElZ,+EAA+E;AAC/E,qFAAqF;AACrF,yCAAyC;AACzC,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,8BAA8B,EAC9B,4BAA4B,EAC5B,iBAAiB,EAElB,MAAM,0BAA0B,CAAC;AAElC,gFAAgF;AAChF,yFAAyF;AACzF,OAAO,EACL,qBAAqB,EACrB,4BAA4B,EAC5B,4BAA4B,EAC5B,6BAA6B,EAC7B,gBAAgB,EAEjB,MAAM,yBAAyB,CAAC;AAWjC,2FAA2F;AAC3F,OAAO,EAAE,0BAA0B,EAA0C,MAAM,4BAA4B,CAAC;AAEhH,2DAA2D;AAC3D,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,0BAA0B,EAAuB,MAAM,kBAAkB,CAAC;AAE1I,2EAA2E;AAC3E,gFAAgF;AAChF,8EAA8E;AAC9E,+EAA+E;AAC/E,2BAA2B;AAC3B,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,uBAAuB,EAGxB,MAAM,gBAAgB,CAAC;AAExB,8EAA8E;AAC9E,8EAA8E;AAC9E,gFAAgF;AAChF,OAAO,EACL,uBAAuB,EACvB,aAAa,EAEd,MAAM,mBAAmB,CAAC;AAE3B,2EAA2E;AAC3E,+EAA+E;AAC/E,2EAA2E;AAC3E,6CAA6C;AAC7C,mEAAmE;AACnE,wDAAwD;AACxD,OAAO,EACL,uBAAuB,EACvB,2BAA2B,EAG5B,MAAM,0BAA0B,CAAC;AAQlC,gFAAgF;AAChF,gFAAgF;AAChF,iFAAiF;AACjF,8EAA8E;AAC9E,kDAAkD;AAClD,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAG7B,MAAM,2BAA2B,CAAC;AAEnC,8EAA8E;AAC9E,iFAAiF;AACjF,8EAA8E;AAC9E,2EAA2E;AAC3E,2DAA2D;AAC3D,iFAAiF;AACjF,+EAA+E;AAC/E,oDAAoD;AACpD,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAE/B,MAAM,6BAA6B,CAAC;AAErC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|