@cello-protocol/transport 0.0.63 → 0.0.65
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/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/node.d.ts +137 -0
- package/dist/node.d.ts.map +1 -1
- package/dist/node.js +281 -0
- package/dist/node.js.map +1 -1
- package/dist/types.d.ts +75 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
*/
|
|
6
6
|
export { createNode, isValidMultiaddr, buildConfiguredHosts } from "./node.js";
|
|
7
7
|
export { resolveConnectionMonitorConfig, WAN_PING_TIMEOUT_FLOOR_MS } from "./node.js";
|
|
8
|
+
export { resolveConnectionLimits, selectIdleConnections, recordStreamActivity, IDLE_CONNECTION_GRACE_MS, IDLE_CONNECTION_SWEEP_MS, DECLARED_MAX_CONNECTIONS, DECLARED_INBOUND_CONNECTION_THRESHOLD, DECLARED_MAX_INCOMING_PENDING, DECLARED_INBOUND_UPGRADE_TIMEOUT_MS, } from "./node.js";
|
|
9
|
+
export type { ResolvedConnectionLimits, IdleConnectionCandidate, IdleReapEvent, ConnectionCounts, } from "./node.js";
|
|
8
10
|
export type { ResolvedConnectionMonitorConfig } from "./node.js";
|
|
9
11
|
export type { CelloNode, CreateNodeOptions, CelloStreamHandler } from "./types.js";
|
|
10
12
|
export type { CelloTransportError, ProtocolNotSupportedError, ConnectionLostError, NodeStoppedError, ListenFailedError, } from "./types.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAI/E,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAI/E,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtF,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,qCAAqC,EACrC,6BAA6B,EAC7B,mCAAmC,GACpC,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,aAAa,EACb,gBAAgB,GACjB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,+BAA+B,EAAE,MAAM,WAAW,CAAC;AACjE,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACnF,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,iBAAiB,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrI,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,YAAY,EACV,aAAa,EACb,eAAe,EACf,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,YAAY,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EACjB,2BAA2B,EAC3B,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,kCAAkC,EAClC,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,eAAe,EACf,MAAM,IAAI,yBAAyB,EACnC,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,8 @@ export { createNode, isValidMultiaddr, buildConfiguredHosts } from "./node.js";
|
|
|
8
8
|
// capability marker a consumer can test for — the relay refuses to start on a transport that
|
|
9
9
|
// predates the policy, because there the connectionMonitor option is silently ignored.
|
|
10
10
|
export { resolveConnectionMonitorConfig, WAN_PING_TIMEOUT_FLOOR_MS } from "./node.js";
|
|
11
|
+
// DOD-M15-IDLE-CONNS-1 — the declared connection posture and the idle-connection judgement.
|
|
12
|
+
export { resolveConnectionLimits, selectIdleConnections, recordStreamActivity, IDLE_CONNECTION_GRACE_MS, IDLE_CONNECTION_SWEEP_MS, DECLARED_MAX_CONNECTIONS, DECLARED_INBOUND_CONNECTION_THRESHOLD, DECLARED_MAX_INCOMING_PENDING, DECLARED_INBOUND_UPGRADE_TIMEOUT_MS, } from "./node.js";
|
|
11
13
|
export { CELLO_PROTOCOL_ID, CIRCUIT_RELAY_V2_HOP_PROTOCOL_ID, CELLO_CONTENT_PROTOCOL_ID, AUTONAT_PROTOCOL_ID } from "./protocols.js";
|
|
12
14
|
export { LocalAutoNatStub, DEFAULT_DIALABILITY } from "./autonat.js";
|
|
13
15
|
// CELLO-M7-TRANSPORT-001: real IAutoNatService over a live CelloNode (emits the
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC/E,iGAAiG;AACjG,6FAA6F;AAC7F,uFAAuF;AACvF,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC/E,iGAAiG;AACjG,6FAA6F;AAC7F,uFAAuF;AACvF,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtF,4FAA4F;AAC5F,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EACxB,qCAAqC,EACrC,6BAA6B,EAC7B,mCAAmC,GACpC,MAAM,WAAW,CAAC;AAgBnB,OAAO,EAAE,iBAAiB,EAAE,gCAAgC,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAIrI,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,gFAAgF;AAChF,kFAAkF;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,yDAAyD;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAgB1D,iDAAiD;AACjD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,8BAA8B,EAC9B,kCAAkC,EAClC,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,8EAA8E;AAC9E,OAAO,EACL,gBAAgB,EAChB,8BAA8B,EAC9B,aAAa,GACd,MAAM,wBAAwB,CAAC"}
|
package/dist/node.d.ts
CHANGED
|
@@ -120,6 +120,143 @@ export interface ResolvedConnectionMonitorConfig {
|
|
|
120
120
|
* the unilateral-seal gate. Only a node with no liveness duty toward its peers — the relay,
|
|
121
121
|
* whose client liveness is the reservation TTL's job — should turn it off.
|
|
122
122
|
*/
|
|
123
|
+
/**
|
|
124
|
+
* ─── DOD-M15-IDLE-CONNS-1 — the connection posture is DECLARED HERE, not inherited ─────────────
|
|
125
|
+
*
|
|
126
|
+
* `createNode` passed no `connectionManager` block at all, so every one of these came from
|
|
127
|
+
* libp2p's own constants. They were correct; nobody had chosen them. A minor version bump
|
|
128
|
+
* re-prices what an unauthenticated peer can spend on an operator's machine, and no test in this
|
|
129
|
+
* repo would go red.
|
|
130
|
+
*
|
|
131
|
+
* The four values below are libp2p@3.3.2's defaults, adopted deliberately rather than changed. The
|
|
132
|
+
* DoD line is explicit that caps must not be guessed — *"a cap set without measurement breaks
|
|
133
|
+
* REACHABILITY, the one property this milestone must not trade away"* — and there is no
|
|
134
|
+
* measurement yet, because until this unit nothing reported a connection count at all. So the
|
|
135
|
+
* change here is **authorship, not tuning**: pin what runs today, make it visible, and let
|
|
136
|
+
* `getConnectionLimits()` supply the number a later tuning pass needs.
|
|
137
|
+
*/
|
|
138
|
+
/** Total connections before libp2p prunes. libp2p@3.3.2 `MAX_CONNECTIONS`. */
|
|
139
|
+
export declare const DECLARED_MAX_CONNECTIONS = 300;
|
|
140
|
+
/** Inbound connections per remote host per window before refusal. `INBOUND_CONNECTION_THRESHOLD`. */
|
|
141
|
+
export declare const DECLARED_INBOUND_CONNECTION_THRESHOLD = 5;
|
|
142
|
+
/** Inbound connections mid-upgrade before new ones are refused. `MAX_INCOMING_PENDING_CONNECTIONS`. */
|
|
143
|
+
export declare const DECLARED_MAX_INCOMING_PENDING = 10;
|
|
144
|
+
/** How long an inbound connection may sit un-upgraded. `INBOUND_UPGRADE_TIMEOUT`. */
|
|
145
|
+
export declare const DECLARED_INBOUND_UPGRADE_TIMEOUT_MS = 10000;
|
|
146
|
+
/**
|
|
147
|
+
* How long an inbound connection that has NEVER carried a stream may live.
|
|
148
|
+
*
|
|
149
|
+
* ─── THIS MEASURES "NEVER SPOKE", NOT "IS QUIET RIGHT NOW" ─────────────────────────────────────
|
|
150
|
+
*
|
|
151
|
+
* The first version compared `now - openedAt` and ANDed it with `streamCount === 0` at the instant
|
|
152
|
+
* of the sweep — i.e. it measured connection AGE and sampled business. Review flagged that as
|
|
153
|
+
* fatal on the grounds that CELLO content streams are per-message and ephemeral, so a busy session
|
|
154
|
+
* would sit at zero streams almost all of the time and be reaped mid-conversation.
|
|
155
|
+
*
|
|
156
|
+
* **MEASURED BEFORE ACCEPTING IT, and the stated mechanism does NOT reproduce on libp2p@3.3.2.**
|
|
157
|
+
* A stream closed by the dialer stays in the listener's `connection.streams` — `streamCount` was
|
|
158
|
+
* still 1 after 10s (25 samples, 400ms apart), and under the reviewer's own scenario (a stream
|
|
159
|
+
* every 400ms, 1000ms grace) it CLIMBED 1→8 across 3.2s and nothing was reaped. So the specific
|
|
160
|
+
* claim "a busy session sits at zero streams" is false here, and the reported hang-up at t≈1200ms
|
|
161
|
+
* did not occur when the scenario was re-run against that predicate.
|
|
162
|
+
*
|
|
163
|
+
* **The fix stays anyway, and the reason is the honest one:** the old predicate was correct only
|
|
164
|
+
* BECAUSE libp2p happens to retain closed streams. That is an implementation detail of a
|
|
165
|
+
* dependency, undocumented and free to change in a patch release — precisely the kind of inherited
|
|
166
|
+
* behaviour the other half of this unit exists to stop relying on. `hasEverCarriedStream` is the
|
|
167
|
+
* literal reading of the DoD's "authenticates to nothing" and it holds whatever libp2p does with
|
|
168
|
+
* closed streams.
|
|
169
|
+
*/
|
|
170
|
+
export declare const IDLE_CONNECTION_GRACE_MS = 90000;
|
|
171
|
+
/** How often the sweep runs. A third of the grace period, so nothing lives much past it. */
|
|
172
|
+
export declare const IDLE_CONNECTION_SWEEP_MS = 30000;
|
|
173
|
+
/** What the sweep reports when it acts, or fails to. Consumed by the daemon's logger. */
|
|
174
|
+
export interface IdleReapEvent {
|
|
175
|
+
peerId: string;
|
|
176
|
+
ageMs: number;
|
|
177
|
+
reason: "never_carried_a_stream" | "hangup_failed" | "sweep_failed";
|
|
178
|
+
error?: string;
|
|
179
|
+
}
|
|
180
|
+
/** The connection census, emitted every sweep — the measurement the DoD line demands. */
|
|
181
|
+
export interface ConnectionCounts {
|
|
182
|
+
total: number;
|
|
183
|
+
inbound: number;
|
|
184
|
+
/** Inbound connections that have not carried a stream since they opened. */
|
|
185
|
+
neverSpoke: number;
|
|
186
|
+
maxConnections: number;
|
|
187
|
+
}
|
|
188
|
+
/** The connection-manager block handed to libp2p, resolved once. */
|
|
189
|
+
export interface ResolvedConnectionLimits {
|
|
190
|
+
maxConnections: number;
|
|
191
|
+
inboundConnectionThreshold: number;
|
|
192
|
+
maxIncomingPendingConnections: number;
|
|
193
|
+
inboundUpgradeTimeout: number;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Resolve the declared limits, honouring per-node overrides.
|
|
197
|
+
*
|
|
198
|
+
* Spreads the declared block FIRST so an override that names one key keeps the other three. An
|
|
199
|
+
* override that returned only what it was given would re-inherit the rest from libp2p — this
|
|
200
|
+
* unit's own defect, reintroduced by its fix.
|
|
201
|
+
*/
|
|
202
|
+
export declare function resolveConnectionLimits(opts: {
|
|
203
|
+
connectionLimits?: Partial<ResolvedConnectionLimits>;
|
|
204
|
+
}): ResolvedConnectionLimits;
|
|
205
|
+
/** What the reaper needs to judge one connection. */
|
|
206
|
+
export interface IdleConnectionCandidate {
|
|
207
|
+
/** libp2p's per-CONNECTION id. A peer may hold several; the activity bit is per connection. */
|
|
208
|
+
id: string;
|
|
209
|
+
peerId: string;
|
|
210
|
+
direction: "inbound" | "outbound";
|
|
211
|
+
streamCount: number;
|
|
212
|
+
openedAt: number;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Which connections should be hung up — pure, so the judgement is testable apart from the sweep.
|
|
216
|
+
*
|
|
217
|
+
* FOUR THINGS ARE SPARED, and each is spared for a reason that costs something real if forgotten:
|
|
218
|
+
*
|
|
219
|
+
* - **Anything carrying a stream.** That is the definition of in use.
|
|
220
|
+
* - **Anything inside the grace period.** A connection is silent for a moment on every dial.
|
|
221
|
+
* - **Every INBOUND connection that has ever carried a stream** (see the grace constant). A peer
|
|
222
|
+
* that has spoken is not "authenticating to nothing", however quiet it is now.
|
|
223
|
+
* - **Every OUTBOUND connection** — as a SELECTION rule. This node chose those: the content-park
|
|
224
|
+
* deposit and pull, the restart-seal submission to a prior session's relay. Reaping one cancels
|
|
225
|
+
* our own errand to bound someone else's connection. **Note the honest bound:** `hangUp` is
|
|
226
|
+
* PEER-scoped and drops every connection to that peer, so a peer holding one idle inbound AND
|
|
227
|
+
* one live outbound connection loses both. Nothing reaches that state today (the gater denies
|
|
228
|
+
* inbound from any peer that is not the named counterparty or the reserved relay, and both are
|
|
229
|
+
* spared), but the rule is "outbound connections are never SELECTED", not "outbound connections
|
|
230
|
+
* are never closed". This project has already paid once for a comment claiming the stronger
|
|
231
|
+
* version — `session-node-manager.ts` records a sweep that hung up the content-park dials and
|
|
232
|
+
* surfaced as `relay_unavailable`, a transport label for a local decision.
|
|
233
|
+
* - **Whatever `isSpared` names.** In production: the relay this node holds a live reservation
|
|
234
|
+
* with, and the counterparty the gate currently names. A relay reservation is IDLE BY NATURE
|
|
235
|
+
* between refreshes, which is exactly the shape hunted here — a reaper without it takes an
|
|
236
|
+
* agent's inbound reachability away and reports nothing.
|
|
237
|
+
*/
|
|
238
|
+
/**
|
|
239
|
+
* Fold this sweep's observation into the activity set: mark anything carrying a stream, and forget
|
|
240
|
+
* connections that have gone.
|
|
241
|
+
*
|
|
242
|
+
* EXTRACTED so it can be attacked directly. Mutation testing showed that deleting the recording
|
|
243
|
+
* left every test green, because no live test can reach the state where it matters — libp2p retains
|
|
244
|
+
* closed streams, so `streamCount` does not fall back to 0 within any window a test can wait for.
|
|
245
|
+
* The bit is still the thing that makes the judgement independent of that libp2p behaviour, so it
|
|
246
|
+
* needs coverage that does not depend on it.
|
|
247
|
+
*/
|
|
248
|
+
export declare function recordStreamActivity(seen: Set<string>, connections: readonly {
|
|
249
|
+
id: string;
|
|
250
|
+
streamCount: number;
|
|
251
|
+
}[]): void;
|
|
252
|
+
export declare function selectIdleConnections(args: {
|
|
253
|
+
connections: readonly IdleConnectionCandidate[];
|
|
254
|
+
now: number;
|
|
255
|
+
isSpared: (peerId: string) => boolean;
|
|
256
|
+
/** Has this CONNECTION carried a stream at any point since it opened? Never a candidate if so. */
|
|
257
|
+
hasEverCarriedStream: (connectionId: string) => boolean;
|
|
258
|
+
graceMs?: number;
|
|
259
|
+
}): string[];
|
|
123
260
|
export declare function resolveConnectionMonitorConfig(opts: {
|
|
124
261
|
keepAliveIntervalMs?: number;
|
|
125
262
|
connectionMonitor?: {
|
package/dist/node.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,OAAO,KAAK,EACV,SAAS,EAET,iBAAiB,EAClB,MAAM,YAAY,CAAC;AAiDpB;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,eAAe,EAAE,MAAM,EAAE,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAOzG;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOtD;
|
|
1
|
+
{"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/node.js
CHANGED
|
@@ -182,6 +182,26 @@ class CelloNodeImpl {
|
|
|
182
182
|
// zero-listener refusal in start()).
|
|
183
183
|
#hasCircuitListen;
|
|
184
184
|
#dropAutonatResponder;
|
|
185
|
+
/**
|
|
186
|
+
* DOD-M15-IDLE-CONNS-1. Set once by createNode from the SAME object libp2p was given, so the
|
|
187
|
+
* reported policy cannot drift from the configured one — the discipline
|
|
188
|
+
* `resolveConnectionMonitorConfig` already states: what libp2p is configured with is what the
|
|
189
|
+
* node reports, by construction rather than by two call sites agreeing.
|
|
190
|
+
*/
|
|
191
|
+
#connectionLimits = resolveConnectionLimits({});
|
|
192
|
+
/** The idle-connection sweep, when this node runs one. Cleared in stop() so it cannot outlive it. */
|
|
193
|
+
#idleReaperTimer = null;
|
|
194
|
+
#idleReaperConfig = null;
|
|
195
|
+
/** Peers the reaper must never hang up — the reserved relay and the named counterparty. */
|
|
196
|
+
#idleReaperSpared = () => false;
|
|
197
|
+
/**
|
|
198
|
+
* Connection ids observed carrying at least one stream. The activity bit F1 was missing.
|
|
199
|
+
*
|
|
200
|
+
* Keyed on CONNECTION id, not peer id: a peer may hold several connections and the question is
|
|
201
|
+
* about this one. Pruned to live connections on every sweep so a long-lived node does not
|
|
202
|
+
* accumulate ids for connections that closed months ago.
|
|
203
|
+
*/
|
|
204
|
+
#everCarriedStream = new Set();
|
|
185
205
|
constructor(libp2p, keyProvider, configuredHosts, expectsDirectListener, hasCircuitListen, dropAutonatResponder = false) {
|
|
186
206
|
this.#libp2p = libp2p;
|
|
187
207
|
this.keyProvider = keyProvider;
|
|
@@ -257,10 +277,122 @@ class CelloNodeImpl {
|
|
|
257
277
|
message: "no listener of any kind materialised for a circuit-only listen set (every relay unreachable)",
|
|
258
278
|
};
|
|
259
279
|
}
|
|
280
|
+
// Armed by createNode; started here so the interval's lifetime is exactly the node's running
|
|
281
|
+
// lifetime, and a node that was built but never started leaves nothing behind.
|
|
282
|
+
this.#startIdleReaper();
|
|
260
283
|
}
|
|
261
284
|
async stop() {
|
|
285
|
+
// Before libp2p, so a sweep cannot fire against a stopping node and log a hangUp failure that
|
|
286
|
+
// reads like a fault. A timer that outlives its node is how a "stopped" daemon keeps working.
|
|
287
|
+
if (this.#idleReaperTimer !== null) {
|
|
288
|
+
clearInterval(this.#idleReaperTimer);
|
|
289
|
+
this.#idleReaperTimer = null;
|
|
290
|
+
}
|
|
262
291
|
await this.#libp2p.stop();
|
|
263
292
|
}
|
|
293
|
+
/** The connection-manager policy libp2p was actually given. */
|
|
294
|
+
getConnectionLimits() {
|
|
295
|
+
return this.#connectionLimits;
|
|
296
|
+
}
|
|
297
|
+
/** Set by createNode with the resolved object — never a second copy. */
|
|
298
|
+
setConnectionLimits(limits) {
|
|
299
|
+
this.#connectionLimits = limits;
|
|
300
|
+
}
|
|
301
|
+
/**
|
|
302
|
+
* DOD-M15-IDLE-CONNS-1 — name the peers the idle reaper must never hang up.
|
|
303
|
+
*
|
|
304
|
+
* The daemon calls this with the gater's reserved-relay slot and the directory peers. Left as a
|
|
305
|
+
* setter rather than a constructor argument because the reserved relay CHANGES: a reservation is
|
|
306
|
+
* lost and retaken against a different relay, and a predicate captured once at construction would
|
|
307
|
+
* go on sparing a relay this node no longer talks to while reaping the one it does.
|
|
308
|
+
*/
|
|
309
|
+
setIdleReaperSpared(isSpared) {
|
|
310
|
+
this.#idleReaperSpared = isSpared;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Arm the idle sweep. The TIMER does not start here — `start()` starts it, so a node that is
|
|
314
|
+
* built and never started leaves no interval behind, and a stop()/start() cycle gets a fresh one.
|
|
315
|
+
*/
|
|
316
|
+
enableIdleReaper(config) {
|
|
317
|
+
this.#idleReaperConfig = config;
|
|
318
|
+
}
|
|
319
|
+
#startIdleReaper() {
|
|
320
|
+
const config = this.#idleReaperConfig;
|
|
321
|
+
if (config === null || this.#idleReaperTimer !== null)
|
|
322
|
+
return;
|
|
323
|
+
this.#idleReaperTimer = setInterval(() => {
|
|
324
|
+
// Review F5: `getConnections()` and `isSpared` both sit outside the try below, and `isSpared`
|
|
325
|
+
// reaches into the daemon's gater. An unhandled rejection here takes the whole daemon down —
|
|
326
|
+
// a hazard `session-node-manager.ts` already names in exactly those words.
|
|
327
|
+
void this.#sweepIdleConnections().catch((err) => {
|
|
328
|
+
config.onReaped?.({
|
|
329
|
+
peerId: "",
|
|
330
|
+
ageMs: 0,
|
|
331
|
+
reason: "sweep_failed",
|
|
332
|
+
error: err instanceof Error ? err.message : String(err),
|
|
333
|
+
});
|
|
334
|
+
});
|
|
335
|
+
}, config.sweepIntervalMs);
|
|
336
|
+
// Node keeps the event loop alive for a pending interval; a daemon that has stopped serving
|
|
337
|
+
// must still be able to exit.
|
|
338
|
+
this.#idleReaperTimer.unref?.();
|
|
339
|
+
}
|
|
340
|
+
async #sweepIdleConnections() {
|
|
341
|
+
const config = this.#idleReaperConfig;
|
|
342
|
+
if (config === null)
|
|
343
|
+
return;
|
|
344
|
+
const now = Date.now();
|
|
345
|
+
const connections = this.getConnections();
|
|
346
|
+
// Record activity BEFORE judging. A connection seen carrying a stream even once is never a
|
|
347
|
+
// candidate again, whatever libp2p later does with its closed streams.
|
|
348
|
+
recordStreamActivity(this.#everCarriedStream, connections);
|
|
349
|
+
// C4: the count the DoD asks for, reported every sweep. Emitted BEFORE any hang-up so the
|
|
350
|
+
// number describes what was observed, not what survived.
|
|
351
|
+
config.onObserved?.({
|
|
352
|
+
total: connections.length,
|
|
353
|
+
inbound: connections.filter((c) => c.direction === "inbound").length,
|
|
354
|
+
neverSpoke: connections.filter((c) => c.direction === "inbound" && !this.#everCarriedStream.has(c.id)).length,
|
|
355
|
+
maxConnections: this.#connectionLimits.maxConnections,
|
|
356
|
+
});
|
|
357
|
+
const oldestByPeer = new Map();
|
|
358
|
+
for (const c of connections) {
|
|
359
|
+
const prior = oldestByPeer.get(c.peerId);
|
|
360
|
+
if (prior === undefined || c.openedAt < prior)
|
|
361
|
+
oldestByPeer.set(c.peerId, c.openedAt);
|
|
362
|
+
}
|
|
363
|
+
const doomed = selectIdleConnections({
|
|
364
|
+
connections,
|
|
365
|
+
now,
|
|
366
|
+
isSpared: this.#idleReaperSpared,
|
|
367
|
+
hasEverCarriedStream: (id) => this.#everCarriedStream.has(id),
|
|
368
|
+
graceMs: config.graceMs,
|
|
369
|
+
});
|
|
370
|
+
for (const peerId of doomed) {
|
|
371
|
+
try {
|
|
372
|
+
await this.hangUp(peerId);
|
|
373
|
+
// Review F3: a hang-up that tells nobody is indistinguishable from the thing simply not
|
|
374
|
+
// happening — which is what the operator concludes when their next send returns
|
|
375
|
+
// `no_connection` and nothing anywhere names the local sweep.
|
|
376
|
+
config.onReaped?.({
|
|
377
|
+
peerId,
|
|
378
|
+
ageMs: now - (oldestByPeer.get(peerId) ?? now),
|
|
379
|
+
reason: "never_carried_a_stream",
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
catch (err) {
|
|
383
|
+
// NOT swallowed. `hangUp` throws a NAMED `invalid_peer_id` written precisely so a malformed
|
|
384
|
+
// id is not read as a connection problem; an empty catch destroys that distinction and
|
|
385
|
+
// returns this code to the error substitution it was written to prevent. Reported and the
|
|
386
|
+
// loop continues, so one bad peer does not cancel the sweep for every other connection.
|
|
387
|
+
config.onReaped?.({
|
|
388
|
+
peerId,
|
|
389
|
+
ageMs: now - (oldestByPeer.get(peerId) ?? now),
|
|
390
|
+
reason: "hangup_failed",
|
|
391
|
+
error: err instanceof Error ? err.message : String(err),
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
}
|
|
264
396
|
listenAddresses() {
|
|
265
397
|
return this.#libp2p.getMultiaddrs().map((ma) => ma.toString());
|
|
266
398
|
}
|
|
@@ -349,8 +481,17 @@ class CelloNodeImpl {
|
|
|
349
481
|
}
|
|
350
482
|
getConnections() {
|
|
351
483
|
return this.#libp2p.getConnections().map((c) => ({
|
|
484
|
+
// Per-CONNECTION id. A peer may hold several and the activity bit is about one of them.
|
|
485
|
+
id: c.id,
|
|
352
486
|
peerId: c.remotePeer.toString(),
|
|
353
487
|
encryption: c.encryption,
|
|
488
|
+
// DOD-M15-IDLE-CONNS-1: the three fields a reaper needs, and the three an operator needs to
|
|
489
|
+
// see a flood instead of inferring one. Nothing reported a connection count before this —
|
|
490
|
+
// which is why the DoD's own instruction to "measure a healthy daemon's connection count
|
|
491
|
+
// first" could not be followed: the measurement did not exist.
|
|
492
|
+
direction: c.direction,
|
|
493
|
+
openedAt: c.timeline.open,
|
|
494
|
+
streamCount: c.streams.length,
|
|
354
495
|
// DOD-M12-CONN-OBSERVE-1: the SOCKET status, which is not the muxer's. libp2p checks the two
|
|
355
496
|
// separately in `newStream` — muxer first — so a stream failing with
|
|
356
497
|
// `The connection muxer is "closed" and not "open"` returns before the socket is looked at,
|
|
@@ -586,6 +727,129 @@ export const WAN_PING_TIMEOUT_FLOOR_MS = 30_000;
|
|
|
586
727
|
* the unilateral-seal gate. Only a node with no liveness duty toward its peers — the relay,
|
|
587
728
|
* whose client liveness is the reservation TTL's job — should turn it off.
|
|
588
729
|
*/
|
|
730
|
+
/**
|
|
731
|
+
* ─── DOD-M15-IDLE-CONNS-1 — the connection posture is DECLARED HERE, not inherited ─────────────
|
|
732
|
+
*
|
|
733
|
+
* `createNode` passed no `connectionManager` block at all, so every one of these came from
|
|
734
|
+
* libp2p's own constants. They were correct; nobody had chosen them. A minor version bump
|
|
735
|
+
* re-prices what an unauthenticated peer can spend on an operator's machine, and no test in this
|
|
736
|
+
* repo would go red.
|
|
737
|
+
*
|
|
738
|
+
* The four values below are libp2p@3.3.2's defaults, adopted deliberately rather than changed. The
|
|
739
|
+
* DoD line is explicit that caps must not be guessed — *"a cap set without measurement breaks
|
|
740
|
+
* REACHABILITY, the one property this milestone must not trade away"* — and there is no
|
|
741
|
+
* measurement yet, because until this unit nothing reported a connection count at all. So the
|
|
742
|
+
* change here is **authorship, not tuning**: pin what runs today, make it visible, and let
|
|
743
|
+
* `getConnectionLimits()` supply the number a later tuning pass needs.
|
|
744
|
+
*/
|
|
745
|
+
/** Total connections before libp2p prunes. libp2p@3.3.2 `MAX_CONNECTIONS`. */
|
|
746
|
+
export const DECLARED_MAX_CONNECTIONS = 300;
|
|
747
|
+
/** Inbound connections per remote host per window before refusal. `INBOUND_CONNECTION_THRESHOLD`. */
|
|
748
|
+
export const DECLARED_INBOUND_CONNECTION_THRESHOLD = 5;
|
|
749
|
+
/** Inbound connections mid-upgrade before new ones are refused. `MAX_INCOMING_PENDING_CONNECTIONS`. */
|
|
750
|
+
export const DECLARED_MAX_INCOMING_PENDING = 10;
|
|
751
|
+
/** How long an inbound connection may sit un-upgraded. `INBOUND_UPGRADE_TIMEOUT`. */
|
|
752
|
+
export const DECLARED_INBOUND_UPGRADE_TIMEOUT_MS = 10_000;
|
|
753
|
+
/**
|
|
754
|
+
* How long an inbound connection that has NEVER carried a stream may live.
|
|
755
|
+
*
|
|
756
|
+
* ─── THIS MEASURES "NEVER SPOKE", NOT "IS QUIET RIGHT NOW" ─────────────────────────────────────
|
|
757
|
+
*
|
|
758
|
+
* The first version compared `now - openedAt` and ANDed it with `streamCount === 0` at the instant
|
|
759
|
+
* of the sweep — i.e. it measured connection AGE and sampled business. Review flagged that as
|
|
760
|
+
* fatal on the grounds that CELLO content streams are per-message and ephemeral, so a busy session
|
|
761
|
+
* would sit at zero streams almost all of the time and be reaped mid-conversation.
|
|
762
|
+
*
|
|
763
|
+
* **MEASURED BEFORE ACCEPTING IT, and the stated mechanism does NOT reproduce on libp2p@3.3.2.**
|
|
764
|
+
* A stream closed by the dialer stays in the listener's `connection.streams` — `streamCount` was
|
|
765
|
+
* still 1 after 10s (25 samples, 400ms apart), and under the reviewer's own scenario (a stream
|
|
766
|
+
* every 400ms, 1000ms grace) it CLIMBED 1→8 across 3.2s and nothing was reaped. So the specific
|
|
767
|
+
* claim "a busy session sits at zero streams" is false here, and the reported hang-up at t≈1200ms
|
|
768
|
+
* did not occur when the scenario was re-run against that predicate.
|
|
769
|
+
*
|
|
770
|
+
* **The fix stays anyway, and the reason is the honest one:** the old predicate was correct only
|
|
771
|
+
* BECAUSE libp2p happens to retain closed streams. That is an implementation detail of a
|
|
772
|
+
* dependency, undocumented and free to change in a patch release — precisely the kind of inherited
|
|
773
|
+
* behaviour the other half of this unit exists to stop relying on. `hasEverCarriedStream` is the
|
|
774
|
+
* literal reading of the DoD's "authenticates to nothing" and it holds whatever libp2p does with
|
|
775
|
+
* closed streams.
|
|
776
|
+
*/
|
|
777
|
+
export const IDLE_CONNECTION_GRACE_MS = 90_000;
|
|
778
|
+
/** How often the sweep runs. A third of the grace period, so nothing lives much past it. */
|
|
779
|
+
export const IDLE_CONNECTION_SWEEP_MS = 30_000;
|
|
780
|
+
/**
|
|
781
|
+
* Resolve the declared limits, honouring per-node overrides.
|
|
782
|
+
*
|
|
783
|
+
* Spreads the declared block FIRST so an override that names one key keeps the other three. An
|
|
784
|
+
* override that returned only what it was given would re-inherit the rest from libp2p — this
|
|
785
|
+
* unit's own defect, reintroduced by its fix.
|
|
786
|
+
*/
|
|
787
|
+
export function resolveConnectionLimits(opts) {
|
|
788
|
+
return {
|
|
789
|
+
maxConnections: DECLARED_MAX_CONNECTIONS,
|
|
790
|
+
inboundConnectionThreshold: DECLARED_INBOUND_CONNECTION_THRESHOLD,
|
|
791
|
+
maxIncomingPendingConnections: DECLARED_MAX_INCOMING_PENDING,
|
|
792
|
+
inboundUpgradeTimeout: DECLARED_INBOUND_UPGRADE_TIMEOUT_MS,
|
|
793
|
+
...(opts.connectionLimits ?? {}),
|
|
794
|
+
};
|
|
795
|
+
}
|
|
796
|
+
/**
|
|
797
|
+
* Which connections should be hung up — pure, so the judgement is testable apart from the sweep.
|
|
798
|
+
*
|
|
799
|
+
* FOUR THINGS ARE SPARED, and each is spared for a reason that costs something real if forgotten:
|
|
800
|
+
*
|
|
801
|
+
* - **Anything carrying a stream.** That is the definition of in use.
|
|
802
|
+
* - **Anything inside the grace period.** A connection is silent for a moment on every dial.
|
|
803
|
+
* - **Every INBOUND connection that has ever carried a stream** (see the grace constant). A peer
|
|
804
|
+
* that has spoken is not "authenticating to nothing", however quiet it is now.
|
|
805
|
+
* - **Every OUTBOUND connection** — as a SELECTION rule. This node chose those: the content-park
|
|
806
|
+
* deposit and pull, the restart-seal submission to a prior session's relay. Reaping one cancels
|
|
807
|
+
* our own errand to bound someone else's connection. **Note the honest bound:** `hangUp` is
|
|
808
|
+
* PEER-scoped and drops every connection to that peer, so a peer holding one idle inbound AND
|
|
809
|
+
* one live outbound connection loses both. Nothing reaches that state today (the gater denies
|
|
810
|
+
* inbound from any peer that is not the named counterparty or the reserved relay, and both are
|
|
811
|
+
* spared), but the rule is "outbound connections are never SELECTED", not "outbound connections
|
|
812
|
+
* are never closed". This project has already paid once for a comment claiming the stronger
|
|
813
|
+
* version — `session-node-manager.ts` records a sweep that hung up the content-park dials and
|
|
814
|
+
* surfaced as `relay_unavailable`, a transport label for a local decision.
|
|
815
|
+
* - **Whatever `isSpared` names.** In production: the relay this node holds a live reservation
|
|
816
|
+
* with, and the counterparty the gate currently names. A relay reservation is IDLE BY NATURE
|
|
817
|
+
* between refreshes, which is exactly the shape hunted here — a reaper without it takes an
|
|
818
|
+
* agent's inbound reachability away and reports nothing.
|
|
819
|
+
*/
|
|
820
|
+
/**
|
|
821
|
+
* Fold this sweep's observation into the activity set: mark anything carrying a stream, and forget
|
|
822
|
+
* connections that have gone.
|
|
823
|
+
*
|
|
824
|
+
* EXTRACTED so it can be attacked directly. Mutation testing showed that deleting the recording
|
|
825
|
+
* left every test green, because no live test can reach the state where it matters — libp2p retains
|
|
826
|
+
* closed streams, so `streamCount` does not fall back to 0 within any window a test can wait for.
|
|
827
|
+
* The bit is still the thing that makes the judgement independent of that libp2p behaviour, so it
|
|
828
|
+
* needs coverage that does not depend on it.
|
|
829
|
+
*/
|
|
830
|
+
export function recordStreamActivity(seen, connections) {
|
|
831
|
+
const live = new Set(connections.map((c) => c.id));
|
|
832
|
+
for (const id of seen)
|
|
833
|
+
if (!live.has(id))
|
|
834
|
+
seen.delete(id);
|
|
835
|
+
for (const c of connections)
|
|
836
|
+
if (c.streamCount > 0)
|
|
837
|
+
seen.add(c.id);
|
|
838
|
+
}
|
|
839
|
+
export function selectIdleConnections(args) {
|
|
840
|
+
const grace = args.graceMs ?? IDLE_CONNECTION_GRACE_MS;
|
|
841
|
+
const doomed = args.connections
|
|
842
|
+
.filter((c) => c.direction === "inbound" &&
|
|
843
|
+
c.streamCount === 0 &&
|
|
844
|
+
!args.hasEverCarriedStream(c.id) &&
|
|
845
|
+
args.now - c.openedAt >= grace &&
|
|
846
|
+
!args.isSpared(c.peerId))
|
|
847
|
+
.map((c) => c.peerId);
|
|
848
|
+
// DEDUPLICATED because `hangUp` is PEER-scoped: two idle connections to one peer would otherwise
|
|
849
|
+
// yield the same id twice and hang it up twice. Harmless but noisy, and it would double-count in
|
|
850
|
+
// whatever the caller reports.
|
|
851
|
+
return [...new Set(doomed)];
|
|
852
|
+
}
|
|
589
853
|
export function resolveConnectionMonitorConfig(opts) {
|
|
590
854
|
const override = opts.connectionMonitor;
|
|
591
855
|
return {
|
|
@@ -618,6 +882,8 @@ export async function createNode(opts) {
|
|
|
618
882
|
// Resolved ONCE and shared: what libp2p is configured with is what the node reports, by
|
|
619
883
|
// construction rather than by two call sites agreeing.
|
|
620
884
|
const connectionMonitorPolicy = resolveConnectionMonitorConfig(opts);
|
|
885
|
+
// Same discipline, same reason: resolved ONCE and handed to both libp2p and the node.
|
|
886
|
+
const connectionLimits = resolveConnectionLimits(opts);
|
|
621
887
|
const libp2p = await createLibp2p({
|
|
622
888
|
start: false,
|
|
623
889
|
privateKey: transportKey,
|
|
@@ -670,6 +936,8 @@ export async function createNode(opts) {
|
|
|
670
936
|
dcutr: dcutr(),
|
|
671
937
|
},
|
|
672
938
|
...(opts.connectionGater ? { connectionGater: opts.connectionGater } : {}),
|
|
939
|
+
// DOD-M15-IDLE-CONNS-1: declared, not inherited. Same object the node reports.
|
|
940
|
+
connectionManager: connectionLimits,
|
|
673
941
|
// DOD-RELAY-KEEPALIVE-1: the monitor's policy is ours now, not libp2p's defaults.
|
|
674
942
|
// Keepalive pings still detect a peer that vanished without a clean close, but the deadline
|
|
675
943
|
// a ping must meet is a WAN deadline rather than 5 seconds.
|
|
@@ -683,6 +951,19 @@ export async function createNode(opts) {
|
|
|
683
951
|
const expectsDirectListener = hasCircuitListen && opts.listenAddresses.some((a) => !a.includes("/p2p-circuit"));
|
|
684
952
|
const node = new CelloNodeImpl(libp2p, opts.keyProvider, configuredHosts, expectsDirectListener, hasCircuitListen, !includeAutonatResponder);
|
|
685
953
|
node.setConnectionMonitorPolicy(connectionMonitorPolicy);
|
|
954
|
+
node.setConnectionLimits(connectionLimits);
|
|
955
|
+
if (opts.idleConnectionReaper) {
|
|
956
|
+
node.enableIdleReaper({
|
|
957
|
+
graceMs: opts.idleConnectionReaper.graceMs ?? IDLE_CONNECTION_GRACE_MS,
|
|
958
|
+
sweepIntervalMs: opts.idleConnectionReaper.sweepIntervalMs ?? IDLE_CONNECTION_SWEEP_MS,
|
|
959
|
+
// Forwarded EXPLICITLY. The first version of this call built the config from the two numbers
|
|
960
|
+
// and silently dropped both callbacks, so the daemon's logging and its connection census were
|
|
961
|
+
// declared, honoured by the node, and reachable by nobody — the same shape as `wait_for_seal`
|
|
962
|
+
// being declared, honoured and never forwarded by the shim.
|
|
963
|
+
...(opts.idleConnectionReaper.onReaped ? { onReaped: opts.idleConnectionReaper.onReaped } : {}),
|
|
964
|
+
...(opts.idleConnectionReaper.onObserved ? { onObserved: opts.idleConnectionReaper.onObserved } : {}),
|
|
965
|
+
});
|
|
966
|
+
}
|
|
686
967
|
return node;
|
|
687
968
|
}
|
|
688
969
|
//# sourceMappingURL=node.js.map
|
package/dist/node.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ import type { KeyProvider } from "@cello-protocol/crypto";
|
|
|
16
16
|
import type { ConnectionGater, Stream } from "@libp2p/interface";
|
|
17
17
|
import type { Dialability, Unsubscribe } from "./autonat.js";
|
|
18
18
|
import type { ResolvedConnectionMonitorConfig as ConnectionMonitorPolicy } from "./node.js";
|
|
19
|
+
import type { IdleReapEvent, ConnectionCounts } from "./node.js";
|
|
19
20
|
export interface CreateNodeOptions {
|
|
20
21
|
/**
|
|
21
22
|
* The CELLO KeyProvider holding K_local (Ed25519 signing key).
|
|
@@ -145,6 +146,47 @@ export interface CreateNodeOptions {
|
|
|
145
146
|
*/
|
|
146
147
|
pingTimeoutMinMs?: number;
|
|
147
148
|
};
|
|
149
|
+
/**
|
|
150
|
+
* DOD-M15-IDLE-CONNS-1 — override the DECLARED connection-manager limits for this node.
|
|
151
|
+
*
|
|
152
|
+
* Omit it and the declared block applies. Values live in `resolveConnectionLimits`; they are
|
|
153
|
+
* libp2p's own defaults adopted deliberately, so this changes nothing today and makes a future
|
|
154
|
+
* libp2p bump visible instead of silent. A relay legitimately carries far more connections than
|
|
155
|
+
* an operator's laptop, which is what the override is for.
|
|
156
|
+
*/
|
|
157
|
+
connectionLimits?: {
|
|
158
|
+
maxConnections?: number;
|
|
159
|
+
inboundConnectionThreshold?: number;
|
|
160
|
+
maxIncomingPendingConnections?: number;
|
|
161
|
+
inboundUpgradeTimeout?: number;
|
|
162
|
+
};
|
|
163
|
+
/**
|
|
164
|
+
* DOD-M15-IDLE-CONNS-1 — run the idle-connection sweep on this node.
|
|
165
|
+
*
|
|
166
|
+
* OPT-IN, and deliberately so: the node that needs it is the one accepting inbound dials from
|
|
167
|
+
* peers it did not choose (the standing receiver). A directory-signaling node's connections are
|
|
168
|
+
* ones it dialled, and a relay's clients are governed by the reservation TTL — sweeping either
|
|
169
|
+
* would hang up links their own subsystem is responsible for.
|
|
170
|
+
*/
|
|
171
|
+
idleConnectionReaper?: {
|
|
172
|
+
/**
|
|
173
|
+
* How long a connection that has NEVER carried a stream may live. Default
|
|
174
|
+
* `IDLE_CONNECTION_GRACE_MS`. NOT an idle timer: a connection that has ever spoken is never a
|
|
175
|
+
* candidate again, because CELLO's per-message streams leave a busy session at zero streams
|
|
176
|
+
* almost all of the time.
|
|
177
|
+
*/
|
|
178
|
+
graceMs?: number;
|
|
179
|
+
/** How often to look. Default `IDLE_CONNECTION_SWEEP_MS`. */
|
|
180
|
+
sweepIntervalMs?: number;
|
|
181
|
+
/**
|
|
182
|
+
* Told when a connection is hung up, and when a sweep or a hang-up FAILS. Without it the reaper
|
|
183
|
+
* is a guard nobody hears — the operator's next send returns `no_connection` and nothing names
|
|
184
|
+
* the local timer that caused it.
|
|
185
|
+
*/
|
|
186
|
+
onReaped?: (event: IdleReapEvent) => void;
|
|
187
|
+
/** Told the connection census every sweep — the count the DoD line requires before any tuning. */
|
|
188
|
+
onObserved?: (counts: ConnectionCounts) => void;
|
|
189
|
+
};
|
|
148
190
|
}
|
|
149
191
|
/**
|
|
150
192
|
* Handler called when a remote peer opens a stream on a registered protocol.
|
|
@@ -222,6 +264,8 @@ export interface CelloNode {
|
|
|
222
264
|
* tell "dead muxer on a live socket" from "dead through" — see hangUp (DOD-M12-CONN-EVICT-1).
|
|
223
265
|
*/
|
|
224
266
|
getConnections(): Array<{
|
|
267
|
+
/** libp2p's per-CONNECTION id — a peer may hold several, and the activity bit is per connection. */
|
|
268
|
+
id: string;
|
|
225
269
|
peerId: string;
|
|
226
270
|
encryption: string | undefined;
|
|
227
271
|
remoteAddr?: string;
|
|
@@ -233,7 +277,38 @@ export interface CelloNode {
|
|
|
233
277
|
* defaulted, because inventing "open" here would recreate the blindness it exists to remove.
|
|
234
278
|
*/
|
|
235
279
|
muxerStatus?: string;
|
|
280
|
+
/**
|
|
281
|
+
* DOD-M15-IDLE-CONNS-1. Who dialled whom. The reaper only ever touches `inbound`: an outbound
|
|
282
|
+
* connection is an errand this agent started, and hanging one up cancels our own work.
|
|
283
|
+
*/
|
|
284
|
+
direction: "inbound" | "outbound";
|
|
285
|
+
/** Epoch-ms the connection opened, from libp2p's own timeline. The reaper's clock. */
|
|
286
|
+
openedAt: number;
|
|
287
|
+
/** Live streams on this connection. Zero is what "authenticates to nothing" actually looks like. */
|
|
288
|
+
streamCount: number;
|
|
236
289
|
}>;
|
|
290
|
+
/**
|
|
291
|
+
* The connection-manager limits libp2p was given — the SAME object, not a rebuilt copy.
|
|
292
|
+
*
|
|
293
|
+
* Answerable at runtime for the reason the DoD line insists on: a cap set without measurement
|
|
294
|
+
* breaks reachability, and until this existed there was no way to measure a healthy daemon's
|
|
295
|
+
* connection count at all.
|
|
296
|
+
*/
|
|
297
|
+
getConnectionLimits(): {
|
|
298
|
+
maxConnections: number;
|
|
299
|
+
inboundConnectionThreshold: number;
|
|
300
|
+
maxIncomingPendingConnections: number;
|
|
301
|
+
inboundUpgradeTimeout: number;
|
|
302
|
+
};
|
|
303
|
+
/**
|
|
304
|
+
* Name the peers the idle sweep must never hang up — the relay this node holds a live reservation
|
|
305
|
+
* with, and the peer the gate currently names (the admitted dialer, then the counterparty).
|
|
306
|
+
*
|
|
307
|
+
* A reservation connection is idle BY NATURE between refreshes, which is precisely the shape the
|
|
308
|
+
* sweep hunts. And the node is REUSED across promotion, so without the second the sweep reaps the
|
|
309
|
+
* counterparty mid-conversation. Settable rather than fixed at construction because both change.
|
|
310
|
+
*/
|
|
311
|
+
setIdleReaperSpared(isSpared: (peerId: string) => boolean): void;
|
|
237
312
|
/**
|
|
238
313
|
* DOD-M12-CONN-EVICT-1: drop every connection to this peer.
|
|
239
314
|
*
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,KAAK,EAAE,+BAA+B,IAAI,uBAAuB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cello-protocol/transport",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.65",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"it-pipe": "^3.0.1",
|
|
40
40
|
"libp2p": "^3.2.3",
|
|
41
41
|
"uint8arrays": "^5.1.1",
|
|
42
|
-
"@cello-protocol/crypto": "0.0.
|
|
43
|
-
"@cello-protocol/protocol-types": "0.0.
|
|
42
|
+
"@cello-protocol/crypto": "0.0.59",
|
|
43
|
+
"@cello-protocol/protocol-types": "0.0.63"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@claude-flow/testing": "3.0.0-alpha.6",
|