@serfab/cadre-core 0.13.0 → 1.1.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 +20 -6
- package/dist/bootstrap-peer-store-file.js +2 -2
- package/dist/bootstrap-peer-store.d.ts +32 -12
- package/dist/bootstrap-peer-store.js +41 -15
- package/dist/bootstrap-peer-store.js.map +1 -1
- package/dist/cadre-node.d.ts +558 -80
- package/dist/cadre-node.js +1060 -170
- 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 +13 -26
- package/dist/control-cohort.js +0 -26
- package/dist/control-cohort.js.map +1 -1
- package/dist/control-database.d.ts +299 -44
- package/dist/control-database.js +469 -69
- package/dist/control-database.js.map +1 -1
- package/dist/control-read-retry.d.ts +40 -11
- package/dist/control-read-retry.js +48 -15
- package/dist/control-read-retry.js.map +1 -1
- package/dist/control-retry.d.ts +58 -3
- package/dist/control-retry.js +58 -3
- package/dist/control-retry.js.map +1 -1
- package/dist/control-schema.d.ts +1 -1
- package/dist/control-schema.js +103 -19
- package/dist/control-schema.js.map +1 -1
- package/dist/control-write-retry.d.ts +80 -11
- package/dist/control-write-retry.js +176 -29
- package/dist/control-write-retry.js.map +1 -1
- package/dist/enrolled-machine-store.js +2 -2
- package/dist/index.d.ts +14 -7
- package/dist/index.js +33 -6
- package/dist/index.js.map +1 -1
- package/dist/node-local-snapshot.d.ts +15 -7
- package/dist/node-local-snapshot.js +23 -8
- package/dist/node-local-snapshot.js.map +1 -1
- package/dist/peer-dial.d.ts +143 -0
- package/dist/peer-dial.js +176 -0
- package/dist/peer-dial.js.map +1 -0
- package/dist/relay-addrs.d.ts +90 -52
- package/dist/relay-addrs.js +91 -59
- package/dist/relay-addrs.js.map +1 -1
- package/dist/relay-reservation.d.ts +71 -3
- package/dist/relay-reservation.js +116 -8
- package/dist/relay-reservation.js.map +1 -1
- package/dist/seed-bootstrap.d.ts +30 -1
- package/dist/seed-bootstrap.js +62 -17
- package/dist/seed-bootstrap.js.map +1 -1
- package/dist/storage-scope.d.ts +62 -0
- package/dist/storage-scope.js +75 -0
- package/dist/storage-scope.js.map +1 -0
- package/dist/strand-database.d.ts +34 -16
- package/dist/strand-database.js +38 -24
- package/dist/strand-database.js.map +1 -1
- package/dist/strand-first-sync-gate.d.ts +152 -0
- package/dist/strand-first-sync-gate.js +208 -0
- package/dist/strand-first-sync-gate.js.map +1 -0
- package/dist/strand-formation-manager.d.ts +87 -5
- package/dist/strand-formation-manager.js +109 -5
- package/dist/strand-formation-manager.js.map +1 -1
- package/dist/strand-formation-protocol.d.ts +21 -1
- package/dist/strand-formation-protocol.js +30 -0
- package/dist/strand-formation-protocol.js.map +1 -1
- package/dist/strand-instance-manager.d.ts +243 -6
- package/dist/strand-instance-manager.js +470 -37
- package/dist/strand-instance-manager.js.map +1 -1
- package/dist/strand-member-key.d.ts +20 -12
- package/dist/strand-member-key.js +20 -12
- package/dist/strand-member-key.js.map +1 -1
- package/dist/strand-member-registry.js +3 -0
- package/dist/strand-member-registry.js.map +1 -1
- package/dist/strand-membership-reconciler.d.ts +361 -0
- package/dist/strand-membership-reconciler.js +548 -0
- package/dist/strand-membership-reconciler.js.map +1 -0
- package/dist/strand-membership-writer.d.ts +131 -11
- package/dist/strand-membership-writer.js +396 -134
- package/dist/strand-membership-writer.js.map +1 -1
- package/dist/strand-network-config.d.ts +46 -14
- package/dist/strand-network-config.js +79 -23
- package/dist/strand-network-config.js.map +1 -1
- package/dist/strand-solicitation.d.ts +10 -1
- package/dist/strand-solicitation.js +5 -0
- package/dist/strand-solicitation.js.map +1 -1
- package/dist/strand-wake-protocol.d.ts +11 -7
- package/dist/strand-wake-protocol.js +20 -52
- package/dist/strand-wake-protocol.js.map +1 -1
- package/dist/strand-watcher.js +6 -0
- package/dist/strand-watcher.js.map +1 -1
- package/dist/timed-step.d.ts +12 -0
- package/dist/timed-step.js +28 -0
- package/dist/timed-step.js.map +1 -0
- package/dist/timeout-scheduler.d.ts +19 -0
- package/dist/timeout-scheduler.js +22 -0
- package/dist/timeout-scheduler.js.map +1 -0
- package/dist/types.d.ts +262 -30
- package/dist/types.js.map +1 -1
- package/package.json +8 -8
- package/src/bootstrap-peer-store-file.ts +2 -2
- package/src/bootstrap-peer-store.ts +69 -27
- package/src/cadre-node.ts +7301 -6353
- package/src/control-authorization.ts +2 -1
- package/src/control-cohort.ts +122 -130
- package/src/control-database.ts +537 -69
- package/src/control-read-retry.ts +202 -167
- package/src/control-retry.ts +297 -190
- package/src/control-schema.ts +103 -19
- package/src/control-write-retry.ts +533 -383
- package/src/enrolled-machine-store.ts +2 -2
- package/src/index.ts +83 -6
- package/src/node-local-snapshot.ts +25 -8
- package/src/peer-dial.ts +215 -0
- package/src/relay-addrs.ts +458 -436
- package/src/relay-reservation.ts +951 -828
- package/src/seed-bootstrap.ts +76 -18
- package/src/storage-scope.ts +78 -0
- package/src/strand-database.ts +50 -27
- package/src/strand-first-sync-gate.ts +258 -0
- package/src/strand-formation-manager.ts +140 -5
- package/src/strand-formation-protocol.ts +43 -1
- package/src/strand-instance-manager.ts +577 -37
- package/src/strand-member-key.ts +20 -12
- package/src/strand-member-registry.ts +3 -0
- package/src/strand-membership-reconciler.ts +680 -0
- package/src/strand-membership-writer.ts +527 -189
- package/src/strand-network-config.ts +102 -24
- package/src/strand-solicitation.ts +16 -1
- package/src/strand-wake-protocol.ts +21 -66
- package/src/strand-watcher.ts +6 -0
- package/src/timed-step.ts +28 -0
- package/src/timeout-scheduler.ts +28 -0
- package/src/types.ts +1789 -1554
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-membership-writer.js","sourceRoot":"","sources":["../src/strand-membership-writer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"strand-membership-writer.js","sourceRoot":"","sources":["../src/strand-membership-writer.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,16 +19,32 @@
|
|
|
19
19
|
* The reachability model this rests on: **a strand node is not separately dialable
|
|
20
20
|
* at a published fixed address.** It is reached through (a) its ephemeral direct
|
|
21
21
|
* listener plus the addresses peers observe for it, and (b) circuit relay —
|
|
22
|
-
* `network.relayAddrs` resolves to
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* `network.relayAddrs` resolves to ONE bare `/p2p-circuit` SEARCH listen entry PER
|
|
23
|
+
* relay, and the strand runtime (`strand-instance-manager.ts`) runs one
|
|
24
|
+
* reservation supervisor per relay over the dial addrs this module returns beside
|
|
25
|
+
* them ({@link StrandNodeAddrs.relayAddrs}). The same route the control node takes,
|
|
26
|
+
* for the same reason the configured `<relay>/p2p-circuit` shape was retired
|
|
27
|
+
* everywhere (`relay-addrs.ts`): a configured listener loses its address on a relay
|
|
28
|
+
* restart, on either side hanging up, and on libp2p's own reservation refresh, and
|
|
29
|
+
* recovers from none of them. One search entry per relay rather than one for all,
|
|
30
|
+
* because a search listener registers exactly ONE pending reservation and libp2p
|
|
31
|
+
* fills a pending reservation with exactly one relay — so N relays need N listeners,
|
|
32
|
+
* each with a supervisor that owns it.
|
|
25
33
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
34
|
+
* A hand-written `<relay>/p2p-circuit` entry in `listenAddrs` counts as a relay
|
|
35
|
+
* (its dial prefix is supervised like a `relayAddrs` entry) — the control node
|
|
36
|
+
* rejects that entry outright, so in production it never reaches here, but a
|
|
37
|
+
* strand built straight from such a config must not get an unsupervised configured
|
|
38
|
+
* listener either. A hand-written BARE `/p2p-circuit` (the browser shape,
|
|
39
|
+
* `reference-app-web`) passes through unchanged when no relay is named, and is
|
|
40
|
+
* absorbed by the per-relay entries when one is.
|
|
41
|
+
*
|
|
42
|
+
* Everything else in `NetworkConfig` — `transports`, `connectionGater`,
|
|
43
|
+
* `enableRelay` — is inherited by the caller; this module only owns the two
|
|
44
|
+
* host-endpoint fields above and the relay listen shape. One caveat on
|
|
45
|
+
* `connectionGater`: an OPEN strand's node gets it unchanged, while a CLOSED strand's
|
|
46
|
+
* node composes revoked-peer denial onto it in `strand-instance-manager.ts` (every
|
|
47
|
+
* supplied hook still honored — see `strand-revocation-enforcer.ts`).
|
|
32
48
|
*
|
|
33
49
|
* It does carry one non-address option out with them: the WebSocket transport switch
|
|
34
50
|
* a `/ws` listen entry implies (`relay-addrs.ts` → `resolveTransportOptions`). That is
|
|
@@ -55,7 +71,9 @@ export interface StrandNodeAddrs {
|
|
|
55
71
|
/**
|
|
56
72
|
* Listen entries for this strand node, or `undefined` when the operator
|
|
57
73
|
* configured neither `listenAddrs` nor `relayAddrs` — in which case the caller
|
|
58
|
-
* omits the option and inherits `@optimystic/db-p2p`'s own default.
|
|
74
|
+
* omits the option and inherits `@optimystic/db-p2p`'s own default. Carries one
|
|
75
|
+
* bare `/p2p-circuit` entry per entry of {@link relayAddrs}, deliberately NOT
|
|
76
|
+
* deduplicated: each one is its own listener with its own pending reservation.
|
|
59
77
|
*/
|
|
60
78
|
listenAddrs?: string[];
|
|
61
79
|
/**
|
|
@@ -66,13 +84,27 @@ export interface StrandNodeAddrs {
|
|
|
66
84
|
* `/ws` strand listen entry binds nothing and libp2p reports nothing.
|
|
67
85
|
*/
|
|
68
86
|
wsPort?: number;
|
|
87
|
+
/**
|
|
88
|
+
* The relays this strand node reserves through, as DIRECT dial addrs
|
|
89
|
+
* (`<host>/p2p/<relayPeerId>`, no `/p2p-circuit`), one per relay, in config order,
|
|
90
|
+
* deduplicated by relay peer id — the union of `network.relayAddrs` and any
|
|
91
|
+
* hand-written `<relay>/p2p-circuit` entry in `network.listenAddrs`. Present only
|
|
92
|
+
* when at least one relay is named.
|
|
93
|
+
*
|
|
94
|
+
* NOT a `createLibp2pNode` option: the caller (`strand-instance-manager.ts`)
|
|
95
|
+
* destructures it off before spreading the rest, and starts one
|
|
96
|
+
* `superviseRelayReservation` per entry over the node it built.
|
|
97
|
+
*/
|
|
98
|
+
relayAddrs?: string[];
|
|
69
99
|
}
|
|
70
100
|
/**
|
|
71
|
-
* The strand-node view of `network`: the
|
|
72
|
-
*
|
|
101
|
+
* The strand-node view of `network`: the operator's direct listen entries with every
|
|
102
|
+
* fixed port rewritten to an ephemeral one, one bare `/p2p-circuit` search entry per
|
|
103
|
+
* relay, the relay dial addrs those entries are supervised against, and no announce
|
|
104
|
+
* fields.
|
|
73
105
|
*
|
|
74
|
-
* Validation is
|
|
75
|
-
* malformed `relayAddrs` entry
|
|
106
|
+
* Validation is fail-fast exactly as it is for the control node — `relayCircuitAddrs`
|
|
107
|
+
* throws here on a malformed `relayAddrs` entry.
|
|
76
108
|
*
|
|
77
109
|
* NOTE: announce entries are no longer validated on this path at all; the CONTROL
|
|
78
110
|
* node's own build (`cadre-node.ts`) is the only thing that parses them, and it runs
|
|
@@ -19,16 +19,32 @@
|
|
|
19
19
|
* The reachability model this rests on: **a strand node is not separately dialable
|
|
20
20
|
* at a published fixed address.** It is reached through (a) its ephemeral direct
|
|
21
21
|
* listener plus the addresses peers observe for it, and (b) circuit relay —
|
|
22
|
-
* `network.relayAddrs` resolves to
|
|
23
|
-
*
|
|
24
|
-
*
|
|
22
|
+
* `network.relayAddrs` resolves to ONE bare `/p2p-circuit` SEARCH listen entry PER
|
|
23
|
+
* relay, and the strand runtime (`strand-instance-manager.ts`) runs one
|
|
24
|
+
* reservation supervisor per relay over the dial addrs this module returns beside
|
|
25
|
+
* them ({@link StrandNodeAddrs.relayAddrs}). The same route the control node takes,
|
|
26
|
+
* for the same reason the configured `<relay>/p2p-circuit` shape was retired
|
|
27
|
+
* everywhere (`relay-addrs.ts`): a configured listener loses its address on a relay
|
|
28
|
+
* restart, on either side hanging up, and on libp2p's own reservation refresh, and
|
|
29
|
+
* recovers from none of them. One search entry per relay rather than one for all,
|
|
30
|
+
* because a search listener registers exactly ONE pending reservation and libp2p
|
|
31
|
+
* fills a pending reservation with exactly one relay — so N relays need N listeners,
|
|
32
|
+
* each with a supervisor that owns it.
|
|
25
33
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
34
|
+
* A hand-written `<relay>/p2p-circuit` entry in `listenAddrs` counts as a relay
|
|
35
|
+
* (its dial prefix is supervised like a `relayAddrs` entry) — the control node
|
|
36
|
+
* rejects that entry outright, so in production it never reaches here, but a
|
|
37
|
+
* strand built straight from such a config must not get an unsupervised configured
|
|
38
|
+
* listener either. A hand-written BARE `/p2p-circuit` (the browser shape,
|
|
39
|
+
* `reference-app-web`) passes through unchanged when no relay is named, and is
|
|
40
|
+
* absorbed by the per-relay entries when one is.
|
|
41
|
+
*
|
|
42
|
+
* Everything else in `NetworkConfig` — `transports`, `connectionGater`,
|
|
43
|
+
* `enableRelay` — is inherited by the caller; this module only owns the two
|
|
44
|
+
* host-endpoint fields above and the relay listen shape. One caveat on
|
|
45
|
+
* `connectionGater`: an OPEN strand's node gets it unchanged, while a CLOSED strand's
|
|
46
|
+
* node composes revoked-peer denial onto it in `strand-instance-manager.ts` (every
|
|
47
|
+
* supplied hook still honored — see `strand-revocation-enforcer.ts`).
|
|
32
48
|
*
|
|
33
49
|
* It does carry one non-address option out with them: the WebSocket transport switch
|
|
34
50
|
* a `/ws` listen entry implies (`relay-addrs.ts` → `resolveTransportOptions`). That is
|
|
@@ -37,13 +53,16 @@
|
|
|
37
53
|
* would bind no WebSocket listener and report nothing.
|
|
38
54
|
*/
|
|
39
55
|
import { multiaddr } from '@multiformats/multiaddr';
|
|
40
|
-
import {
|
|
56
|
+
import { DEFAULT_DIRECT_LISTEN_ADDR, RELAY_SEARCH_LISTEN_ADDR, isConfiguredCircuitListenAddr, relayCircuitAddrs, resolveTransportOptions } from './relay-addrs.js';
|
|
57
|
+
import { extractCircuitRelayTargets } from './delegate-admission.js';
|
|
41
58
|
/**
|
|
42
|
-
* The strand-node view of `network`: the
|
|
43
|
-
*
|
|
59
|
+
* The strand-node view of `network`: the operator's direct listen entries with every
|
|
60
|
+
* fixed port rewritten to an ephemeral one, one bare `/p2p-circuit` search entry per
|
|
61
|
+
* relay, the relay dial addrs those entries are supervised against, and no announce
|
|
62
|
+
* fields.
|
|
44
63
|
*
|
|
45
|
-
* Validation is
|
|
46
|
-
* malformed `relayAddrs` entry
|
|
64
|
+
* Validation is fail-fast exactly as it is for the control node — `relayCircuitAddrs`
|
|
65
|
+
* throws here on a malformed `relayAddrs` entry.
|
|
47
66
|
*
|
|
48
67
|
* NOTE: announce entries are no longer validated on this path at all; the CONTROL
|
|
49
68
|
* node's own build (`cadre-node.ts`) is the only thing that parses them, and it runs
|
|
@@ -53,22 +72,59 @@ import { resolveListenAddrs, resolveTransportOptions } from './relay-addrs.js';
|
|
|
53
72
|
* would then go unreported until the control node's own build.
|
|
54
73
|
*/
|
|
55
74
|
export function strandNodeAddrs(network) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
// and leave every NAT'd strand node undialable. See `relay-addrs.ts`.
|
|
60
|
-
const listenAddrs = resolveListenAddrs(network);
|
|
61
|
-
if (!listenAddrs) {
|
|
75
|
+
const relayAddrs = strandRelayAddrs(network);
|
|
76
|
+
const configured = network?.listenAddrs;
|
|
77
|
+
if (!configured && relayAddrs.length === 0) {
|
|
62
78
|
return {};
|
|
63
79
|
}
|
|
64
80
|
// An explicitly empty `listenAddrs` (the React Native "cannot listen" case) stays
|
|
65
81
|
// empty — rewriting must never resurrect a direct listener that was opted out of.
|
|
66
|
-
|
|
82
|
+
// Naming a relay with no `listenAddrs` keeps the direct listener the control node
|
|
83
|
+
// keeps in that case (`relay-addrs.ts`), so a relay ADDS reachability rather than
|
|
84
|
+
// replacing it.
|
|
85
|
+
const direct = configured ?? [DEFAULT_DIRECT_LISTEN_ADDR];
|
|
86
|
+
// Every circuit entry — the configured shape (now a relay in `relayAddrs`) and a
|
|
87
|
+
// hand-written bare search entry alike — is replaced by the per-relay search entries
|
|
88
|
+
// once a relay is named; with none, the operator's entries pass through as written.
|
|
89
|
+
const kept = relayAddrs.length > 0 ? direct.filter((addr) => !isCircuitListenAddr(addr)) : direct;
|
|
90
|
+
// The search entries are appended AFTER the dedupe on purpose: they are identical
|
|
91
|
+
// strings, and each one must survive as its own listener (see the module doc).
|
|
92
|
+
//
|
|
93
|
+
// NOTE: every bare entry also makes libp2p start its own relay discovery whenever
|
|
94
|
+
// that listener's slot is empty (launch, and every loss). Measured on a node with
|
|
95
|
+
// no peer router: one peer-store scan plus a random walk that fails at once
|
|
96
|
+
// (`NoPeerRoutersError`) per loss event — no dial churn. If strand nodes ever get
|
|
97
|
+
// a peer router (a DHT), that walk turns into real dials on every relay loss;
|
|
98
|
+
// cap or disable `circuitRelayTransport`'s discovery then.
|
|
99
|
+
const listenAddrs = [
|
|
100
|
+
...dedupe(kept.map(ephemeralPortListenAddr)),
|
|
101
|
+
...relayAddrs.map(() => RELAY_SEARCH_LISTEN_ADDR)
|
|
102
|
+
];
|
|
67
103
|
// Classified AFTER the ephemeral rewrite, so the check reads what this strand node
|
|
68
104
|
// will actually bind. Zeroing a port cannot change an entry's transport — only the
|
|
69
105
|
// `tcp`/`udp` component's value moves — so `/ip4/0.0.0.0/tcp/4002/ws` still resolves
|
|
70
|
-
// to WebSocket as `/ip4/0.0.0.0/tcp/0/ws`.
|
|
71
|
-
return {
|
|
106
|
+
// to WebSocket as `/ip4/0.0.0.0/tcp/0/ws`; a bare `/p2p-circuit` is `'circuit'`.
|
|
107
|
+
return {
|
|
108
|
+
listenAddrs,
|
|
109
|
+
...resolveTransportOptions(network, listenAddrs),
|
|
110
|
+
...(relayAddrs.length > 0 && { relayAddrs })
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* The relays a strand node built from `network` reserves through, as direct dial
|
|
115
|
+
* addrs: every `relayAddrs` entry (validated — a malformed one throws, naming the
|
|
116
|
+
* field) plus the relay named by any hand-written `<relay>/p2p-circuit` listen entry,
|
|
117
|
+
* deduplicated by relay PEER ID with the first spelling winning — two spellings of one
|
|
118
|
+
* relay would otherwise get two supervisors fighting over one reservation slot.
|
|
119
|
+
*/
|
|
120
|
+
function strandRelayAddrs(network) {
|
|
121
|
+
const configured = relayCircuitAddrs(network?.relayAddrs ?? []);
|
|
122
|
+
const handWritten = (network?.listenAddrs ?? []).filter(isConfiguredCircuitListenAddr);
|
|
123
|
+
return extractCircuitRelayTargets([...configured, ...handWritten]).map((relay) => relay.relayAddr);
|
|
124
|
+
}
|
|
125
|
+
/** Any `/p2p-circuit` listen entry — bare or configured; an unparsable entry is not one. */
|
|
126
|
+
function isCircuitListenAddr(listenAddr) {
|
|
127
|
+
return listenAddr === RELAY_SEARCH_LISTEN_ADDR || isConfiguredCircuitListenAddr(listenAddr);
|
|
72
128
|
}
|
|
73
129
|
/**
|
|
74
130
|
* One listen entry with its fixed direct port rewritten to `0`, so the OS assigns a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-network-config.js","sourceRoot":"","sources":["../src/strand-network-config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"strand-network-config.js","sourceRoot":"","sources":["../src/strand-network-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Libp2p } from '@libp2p/interface';
|
|
2
|
-
import type { OpenInvitation, FormStrandResult, StrandFormationDisclosure } from './types.js';
|
|
2
|
+
import type { OpenInvitation, FormStrandResult, StrandFormationDisclosure, StrandMembershipInvite } from './types.js';
|
|
3
3
|
import { type StrandFormationManagerConfig } from './strand-formation-manager.js';
|
|
4
4
|
import { type FormationResultMessage } from './strand-formation-protocol.js';
|
|
5
5
|
/**
|
|
@@ -170,6 +170,14 @@ export interface StrandSolicitationServiceOptions {
|
|
|
170
170
|
* by `CadreNode`; unwired, the responder discloses no strand addresses.
|
|
171
171
|
*/
|
|
172
172
|
resolveStrandAddrs?: (strandId: string) => string[];
|
|
173
|
+
/**
|
|
174
|
+
* Issue a single-use strand membership invitation against the live host strand a
|
|
175
|
+
* bound closed-strand redemption resolved to (responder side). Wired by `CadreNode`;
|
|
176
|
+
* see `StrandFormationManagerOptions.issueMembershipInvite` for the full contract
|
|
177
|
+
* (null = open strand, throw = reject the redemption retryably, unwired = mock/test
|
|
178
|
+
* posture: approve with no invitation).
|
|
179
|
+
*/
|
|
180
|
+
issueMembershipInvite?: (strandId: string) => Promise<StrandMembershipInvite | null>;
|
|
173
181
|
/** Configuration for the formation manager */
|
|
174
182
|
formationConfig?: StrandFormationManagerConfig;
|
|
175
183
|
}
|
|
@@ -194,6 +202,7 @@ export declare class StrandSolicitationService {
|
|
|
194
202
|
private readonly partyId;
|
|
195
203
|
private readonly cadrePeerAddrs;
|
|
196
204
|
private readonly resolveStrandAddrs?;
|
|
205
|
+
private readonly issueMembershipInvite?;
|
|
197
206
|
private formationManager?;
|
|
198
207
|
private readonly formationConfig?;
|
|
199
208
|
/**
|
|
@@ -59,6 +59,7 @@ export class StrandSolicitationService {
|
|
|
59
59
|
this.partyId = options?.partyId ?? `party-${Date.now()}`;
|
|
60
60
|
this.cadrePeerAddrs = options?.cadrePeerAddrs ?? [];
|
|
61
61
|
this.resolveStrandAddrs = options?.resolveStrandAddrs;
|
|
62
|
+
this.issueMembershipInvite = options?.issueMembershipInvite;
|
|
62
63
|
this.formationConfig = options?.formationConfig;
|
|
63
64
|
log('StrandSolicitationService created for party: %s', this.partyId);
|
|
64
65
|
}
|
|
@@ -76,6 +77,7 @@ export class StrandSolicitationService {
|
|
|
76
77
|
partyId: this.partyId,
|
|
77
78
|
cadrePeerAddrs: this.cadrePeerAddrs,
|
|
78
79
|
resolveStrandAddrs: this.resolveStrandAddrs,
|
|
80
|
+
issueMembershipInvite: this.issueMembershipInvite,
|
|
79
81
|
config: this.formationConfig
|
|
80
82
|
});
|
|
81
83
|
}
|
|
@@ -141,6 +143,9 @@ export class StrandSolicitationService {
|
|
|
141
143
|
// Carry the host strand's membership key delivered over the protocol (closed-strand
|
|
142
144
|
// provision-then-record). invitePrivateKey stays the initiator's generated signing key.
|
|
143
145
|
memberPrivateKey: result.memberPrivateKey,
|
|
146
|
+
// The joiner's own single-use membership invitation into a closed host strand
|
|
147
|
+
// (already shape-checked by the manager); absent for open/unbound.
|
|
148
|
+
membershipInvite: result.membershipInvite,
|
|
144
149
|
// The responder's live strand-network addresses, or `[]` when it had none to give.
|
|
145
150
|
strandAddrs: result.strandAddrs
|
|
146
151
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-solicitation.js","sourceRoot":"","sources":["../src/strand-solicitation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"strand-solicitation.js","sourceRoot":"","sources":["../src/strand-solicitation.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,8 +42,10 @@ export declare const WAKE_PROTOCOL = "/sereus/strand-wake/1.0.0";
|
|
|
42
42
|
*
|
|
43
43
|
* This makes the TARGET PEER the unit rather than the address — the same
|
|
44
44
|
* decision, for the same reason, as
|
|
45
|
-
* `DEFAULT_CONTROL_COHORT_DIAL_TIMEOUT_MS` in `
|
|
46
|
-
*
|
|
45
|
+
* `DEFAULT_CONTROL_COHORT_DIAL_TIMEOUT_MS` in `peer-dial.ts`, though not the same
|
|
46
|
+
* number: that one is sized to fit several dead addresses ahead of a working one,
|
|
47
|
+
* while a wake target is expected to be awake and reachable on its first or second
|
|
48
|
+
* address. 20 s is deliberately wider than one attempt timeout so a
|
|
47
49
|
* reachable peer whose signaling address is stale still gets a genuine try at
|
|
48
50
|
* its direct one; a peer needing longer than that is not "asleep and reachable",
|
|
49
51
|
* which is the only case a wake is for. The last attempt inside the budget gets
|
|
@@ -147,15 +149,17 @@ export interface DialWakeOptions {
|
|
|
147
149
|
* dropped.
|
|
148
150
|
*
|
|
149
151
|
* Throws if no address is dialable — with an error naming EVERY candidate and
|
|
150
|
-
* why it failed, not merely the last one. That
|
|
151
|
-
* with only the last candidate's message the
|
|
152
|
-
* signaling address, tried first) is
|
|
153
|
-
*
|
|
152
|
+
* why it failed, not merely the last one ({@link tryAddrsInTurn}). That
|
|
153
|
+
* distinction is not cosmetic: with only the last candidate's message the
|
|
154
|
+
* failure that mattered (usually the signaling address, tried first) is
|
|
155
|
+
* invisible outside a debug log, and the surfaced message points at whichever
|
|
156
|
+
* address happened to be tried last.
|
|
154
157
|
*
|
|
155
158
|
* The candidate loop is deliberately explicit rather than one
|
|
156
159
|
* `dialProtocol(addrs)` call. libp2p sorts any multi-address dial with
|
|
157
160
|
* `defaultAddressSorter`, whose `circuitRelayAddressesLast` pass would demote
|
|
158
161
|
* exactly the signaling address this ordering puts first — silently inverting
|
|
159
|
-
* it, with no per-dial sorter override to opt out of.
|
|
162
|
+
* it, with no per-dial sorter override to opt out of. For the same reason this
|
|
163
|
+
* does not use `dialPeerAddrs`, which puts relayed addresses last.
|
|
160
164
|
*/
|
|
161
165
|
export declare function dialWake(node: Libp2p, addrs: Multiaddr[], request: WakeRequest, options?: DialWakeOptions): Promise<WakeAck>;
|
|
@@ -26,7 +26,8 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import debug from 'debug';
|
|
28
28
|
import { decodeLengthPrefixedFrame } from './seed-bootstrap.js';
|
|
29
|
-
import { writeFrame,
|
|
29
|
+
import { writeFrame, exchangeFrame, readStreamToEnd } from './control-stream.js';
|
|
30
|
+
import { tryAddrsInTurn } from './peer-dial.js';
|
|
30
31
|
const log = debug('sereus:cadre:strand-wake');
|
|
31
32
|
/** Protocol id for control-network push-wake (parallel to `/sereus/seed/1.0.0`). */
|
|
32
33
|
export const WAKE_PROTOCOL = '/sereus/strand-wake/1.0.0';
|
|
@@ -51,8 +52,10 @@ const DEFAULT_WAKE_TIMEOUT_MS = 10000;
|
|
|
51
52
|
*
|
|
52
53
|
* This makes the TARGET PEER the unit rather than the address — the same
|
|
53
54
|
* decision, for the same reason, as
|
|
54
|
-
* `DEFAULT_CONTROL_COHORT_DIAL_TIMEOUT_MS` in `
|
|
55
|
-
*
|
|
55
|
+
* `DEFAULT_CONTROL_COHORT_DIAL_TIMEOUT_MS` in `peer-dial.ts`, though not the same
|
|
56
|
+
* number: that one is sized to fit several dead addresses ahead of a working one,
|
|
57
|
+
* while a wake target is expected to be awake and reachable on its first or second
|
|
58
|
+
* address. 20 s is deliberately wider than one attempt timeout so a
|
|
56
59
|
* reachable peer whose signaling address is stale still gets a genuine try at
|
|
57
60
|
* its direct one; a peer needing longer than that is not "asleep and reachable",
|
|
58
61
|
* which is the only case a wake is for. The last attempt inside the budget gets
|
|
@@ -220,66 +223,31 @@ export class StrandWakeService {
|
|
|
220
223
|
* dropped.
|
|
221
224
|
*
|
|
222
225
|
* Throws if no address is dialable — with an error naming EVERY candidate and
|
|
223
|
-
* why it failed, not merely the last one. That
|
|
224
|
-
* with only the last candidate's message the
|
|
225
|
-
* signaling address, tried first) is
|
|
226
|
-
*
|
|
226
|
+
* why it failed, not merely the last one ({@link tryAddrsInTurn}). That
|
|
227
|
+
* distinction is not cosmetic: with only the last candidate's message the
|
|
228
|
+
* failure that mattered (usually the signaling address, tried first) is
|
|
229
|
+
* invisible outside a debug log, and the surfaced message points at whichever
|
|
230
|
+
* address happened to be tried last.
|
|
227
231
|
*
|
|
228
232
|
* The candidate loop is deliberately explicit rather than one
|
|
229
233
|
* `dialProtocol(addrs)` call. libp2p sorts any multi-address dial with
|
|
230
234
|
* `defaultAddressSorter`, whose `circuitRelayAddressesLast` pass would demote
|
|
231
235
|
* exactly the signaling address this ordering puts first — silently inverting
|
|
232
|
-
* it, with no per-dial sorter override to opt out of.
|
|
236
|
+
* it, with no per-dial sorter override to opt out of. For the same reason this
|
|
237
|
+
* does not use `dialPeerAddrs`, which puts relayed addresses last.
|
|
233
238
|
*/
|
|
234
239
|
export async function dialWake(node, addrs, request, options = {}) {
|
|
235
240
|
if (addrs.length === 0) {
|
|
236
241
|
throw new Error('No dialable address for wake target');
|
|
237
242
|
}
|
|
238
243
|
const protocolId = options.protocolId ?? WAKE_PROTOCOL;
|
|
239
|
-
const
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
const remaining = deadline - Date.now();
|
|
247
|
-
if (remaining <= 0) {
|
|
248
|
-
failures.push({ addr, error: new Error(`not tried — the ${budgetMs}ms wake dial budget was spent on earlier addresses`) });
|
|
249
|
-
continue;
|
|
250
|
-
}
|
|
251
|
-
const attemptMs = Math.min(timeoutMs, remaining);
|
|
252
|
-
try {
|
|
253
|
-
// One deadline per attempt: its signal aborts the in-flight dialProtocol and
|
|
254
|
-
// resets the live stream, so neither the connect nor the ack-read leaks.
|
|
255
|
-
return await withDeadline(attemptMs, `Wake dial ${addr.toString()}`, (signal) => sendWake(node, addr, protocolId, request, attemptMs, signal));
|
|
256
|
-
}
|
|
257
|
-
catch (err) {
|
|
258
|
-
failures.push({ addr, error: err instanceof Error ? err : new Error(String(err)) });
|
|
259
|
-
log('Wake dial to %s failed: %o', addr.toString(), err);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
throw wakeDialError(failures);
|
|
263
|
-
}
|
|
264
|
-
/**
|
|
265
|
-
* Fold every candidate's failure into the one error {@link dialWake} throws.
|
|
266
|
-
*
|
|
267
|
-
* A single candidate throws its own error unchanged, so a one-address wake reads
|
|
268
|
-
* exactly as it always has (and `rejects.toThrow(/timed out/)` still means what
|
|
269
|
-
* it says). Several candidates produce one message naming each address and its
|
|
270
|
-
* cause, with the FIRST failure as `cause` — the first candidate is the
|
|
271
|
-
* signaling address, which is the one that matters when a relayed peer goes
|
|
272
|
-
* unreachable.
|
|
273
|
-
*/
|
|
274
|
-
function wakeDialError(failures) {
|
|
275
|
-
if (failures.length === 0) {
|
|
276
|
-
return new Error('Wake dial failed');
|
|
277
|
-
}
|
|
278
|
-
if (failures.length === 1) {
|
|
279
|
-
return failures[0].error;
|
|
280
|
-
}
|
|
281
|
-
const detail = failures.map((f) => `${f.addr.toString()} — ${f.error.message}`).join('; ');
|
|
282
|
-
return new Error(`Wake dial failed for all ${failures.length} candidate addresses: ${detail}`, { cause: failures[0].error });
|
|
244
|
+
const budget = {
|
|
245
|
+
perAddressMs: options.timeoutMs ?? DEFAULT_WAKE_TIMEOUT_MS,
|
|
246
|
+
totalMs: options.budgetMs ?? DEFAULT_WAKE_DIAL_BUDGET_MS,
|
|
247
|
+
};
|
|
248
|
+
// The attempt's signal aborts the in-flight dialProtocol and resets the live
|
|
249
|
+
// stream, so neither the connect nor the ack-read leaks.
|
|
250
|
+
return await tryAddrsInTurn(addrs, budget, 'Wake dial', (addr, signal, attemptMs) => sendWake(node, addr, protocolId, request, attemptMs, signal));
|
|
283
251
|
}
|
|
284
252
|
/**
|
|
285
253
|
* Open one stream, send the request, half-close, and read the ack.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strand-wake-protocol.js","sourceRoot":"","sources":["../src/strand-wake-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAsB,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"strand-wake-protocol.js","sourceRoot":"","sources":["../src/strand-wake-protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/strand-watcher.js
CHANGED
|
@@ -171,6 +171,12 @@ export class StrandWatcher {
|
|
|
171
171
|
}
|
|
172
172
|
}
|
|
173
173
|
catch (error) {
|
|
174
|
+
// NOTE: a machine cut off from its party before it ever received the `Strand` block
|
|
175
|
+
// fails this read `cohort-unreachable` on every poll and logs here (observed in
|
|
176
|
+
// `control-cohort-edge-carries-data`). Harmless: nothing was ever launched from a block
|
|
177
|
+
// this machine never held, and this catch keeps the known set. Do not answer it as
|
|
178
|
+
// empty the way `ControlDatabase.queryRevokedStamps` does for `Revocation` — an empty
|
|
179
|
+
// answer here runs the removed-strand loop above. Revisit if the log volume matters.
|
|
174
180
|
log('Error polling strands: %o', error);
|
|
175
181
|
}
|
|
176
182
|
}
|