@serfab/cadre-core 0.13.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/README.md +20 -6
  2. package/dist/bootstrap-peer-store-file.js +2 -2
  3. package/dist/bootstrap-peer-store.d.ts +32 -12
  4. package/dist/bootstrap-peer-store.js +41 -15
  5. package/dist/bootstrap-peer-store.js.map +1 -1
  6. package/dist/cadre-node.d.ts +558 -80
  7. package/dist/cadre-node.js +1060 -170
  8. package/dist/cadre-node.js.map +1 -1
  9. package/dist/control-authorization.d.ts +2 -2
  10. package/dist/control-authorization.js +1 -0
  11. package/dist/control-authorization.js.map +1 -1
  12. package/dist/control-cohort.d.ts +13 -26
  13. package/dist/control-cohort.js +0 -26
  14. package/dist/control-cohort.js.map +1 -1
  15. package/dist/control-database.d.ts +299 -44
  16. package/dist/control-database.js +469 -69
  17. package/dist/control-database.js.map +1 -1
  18. package/dist/control-read-retry.d.ts +40 -11
  19. package/dist/control-read-retry.js +48 -15
  20. package/dist/control-read-retry.js.map +1 -1
  21. package/dist/control-retry.d.ts +58 -3
  22. package/dist/control-retry.js +58 -3
  23. package/dist/control-retry.js.map +1 -1
  24. package/dist/control-schema.d.ts +1 -1
  25. package/dist/control-schema.js +103 -19
  26. package/dist/control-schema.js.map +1 -1
  27. package/dist/control-write-retry.d.ts +80 -11
  28. package/dist/control-write-retry.js +168 -29
  29. package/dist/control-write-retry.js.map +1 -1
  30. package/dist/enrolled-machine-store.js +2 -2
  31. package/dist/index.d.ts +14 -7
  32. package/dist/index.js +33 -6
  33. package/dist/index.js.map +1 -1
  34. package/dist/node-local-snapshot.d.ts +15 -7
  35. package/dist/node-local-snapshot.js +23 -8
  36. package/dist/node-local-snapshot.js.map +1 -1
  37. package/dist/peer-dial.d.ts +143 -0
  38. package/dist/peer-dial.js +176 -0
  39. package/dist/peer-dial.js.map +1 -0
  40. package/dist/relay-addrs.d.ts +90 -52
  41. package/dist/relay-addrs.js +91 -59
  42. package/dist/relay-addrs.js.map +1 -1
  43. package/dist/relay-reservation.d.ts +71 -3
  44. package/dist/relay-reservation.js +116 -8
  45. package/dist/relay-reservation.js.map +1 -1
  46. package/dist/seed-bootstrap.d.ts +30 -1
  47. package/dist/seed-bootstrap.js +62 -17
  48. package/dist/seed-bootstrap.js.map +1 -1
  49. package/dist/storage-scope.d.ts +62 -0
  50. package/dist/storage-scope.js +75 -0
  51. package/dist/storage-scope.js.map +1 -0
  52. package/dist/strand-database.d.ts +34 -16
  53. package/dist/strand-database.js +38 -24
  54. package/dist/strand-database.js.map +1 -1
  55. package/dist/strand-first-sync-gate.d.ts +152 -0
  56. package/dist/strand-first-sync-gate.js +208 -0
  57. package/dist/strand-first-sync-gate.js.map +1 -0
  58. package/dist/strand-formation-manager.d.ts +87 -5
  59. package/dist/strand-formation-manager.js +109 -5
  60. package/dist/strand-formation-manager.js.map +1 -1
  61. package/dist/strand-formation-protocol.d.ts +21 -1
  62. package/dist/strand-formation-protocol.js +30 -0
  63. package/dist/strand-formation-protocol.js.map +1 -1
  64. package/dist/strand-instance-manager.d.ts +243 -6
  65. package/dist/strand-instance-manager.js +470 -37
  66. package/dist/strand-instance-manager.js.map +1 -1
  67. package/dist/strand-member-key.d.ts +20 -12
  68. package/dist/strand-member-key.js +20 -12
  69. package/dist/strand-member-key.js.map +1 -1
  70. package/dist/strand-member-registry.js +3 -0
  71. package/dist/strand-member-registry.js.map +1 -1
  72. package/dist/strand-membership-reconciler.d.ts +361 -0
  73. package/dist/strand-membership-reconciler.js +548 -0
  74. package/dist/strand-membership-reconciler.js.map +1 -0
  75. package/dist/strand-membership-writer.d.ts +131 -11
  76. package/dist/strand-membership-writer.js +396 -134
  77. package/dist/strand-membership-writer.js.map +1 -1
  78. package/dist/strand-network-config.d.ts +46 -14
  79. package/dist/strand-network-config.js +79 -23
  80. package/dist/strand-network-config.js.map +1 -1
  81. package/dist/strand-solicitation.d.ts +10 -1
  82. package/dist/strand-solicitation.js +5 -0
  83. package/dist/strand-solicitation.js.map +1 -1
  84. package/dist/strand-wake-protocol.d.ts +11 -7
  85. package/dist/strand-wake-protocol.js +20 -52
  86. package/dist/strand-wake-protocol.js.map +1 -1
  87. package/dist/strand-watcher.js +6 -0
  88. package/dist/strand-watcher.js.map +1 -1
  89. package/dist/timed-step.d.ts +12 -0
  90. package/dist/timed-step.js +28 -0
  91. package/dist/timed-step.js.map +1 -0
  92. package/dist/timeout-scheduler.d.ts +19 -0
  93. package/dist/timeout-scheduler.js +22 -0
  94. package/dist/timeout-scheduler.js.map +1 -0
  95. package/dist/types.d.ts +262 -30
  96. package/dist/types.js.map +1 -1
  97. package/package.json +8 -8
  98. package/src/bootstrap-peer-store-file.ts +2 -2
  99. package/src/bootstrap-peer-store.ts +69 -27
  100. package/src/cadre-node.ts +7301 -6353
  101. package/src/control-authorization.ts +2 -1
  102. package/src/control-cohort.ts +122 -130
  103. package/src/control-database.ts +537 -69
  104. package/src/control-read-retry.ts +202 -167
  105. package/src/control-retry.ts +297 -190
  106. package/src/control-schema.ts +103 -19
  107. package/src/control-write-retry.ts +525 -383
  108. package/src/enrolled-machine-store.ts +2 -2
  109. package/src/index.ts +83 -6
  110. package/src/node-local-snapshot.ts +25 -8
  111. package/src/peer-dial.ts +215 -0
  112. package/src/relay-addrs.ts +458 -436
  113. package/src/relay-reservation.ts +951 -828
  114. package/src/seed-bootstrap.ts +76 -18
  115. package/src/storage-scope.ts +78 -0
  116. package/src/strand-database.ts +50 -27
  117. package/src/strand-first-sync-gate.ts +258 -0
  118. package/src/strand-formation-manager.ts +140 -5
  119. package/src/strand-formation-protocol.ts +43 -1
  120. package/src/strand-instance-manager.ts +577 -37
  121. package/src/strand-member-key.ts +20 -12
  122. package/src/strand-member-registry.ts +3 -0
  123. package/src/strand-membership-reconciler.ts +680 -0
  124. package/src/strand-membership-writer.ts +527 -189
  125. package/src/strand-network-config.ts +102 -24
  126. package/src/strand-solicitation.ts +16 -1
  127. package/src/strand-wake-protocol.ts +21 -66
  128. package/src/strand-watcher.ts +6 -0
  129. package/src/timed-step.ts +28 -0
  130. package/src/timeout-scheduler.ts +28 -0
  131. 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 per-relay `<relay>/p2p-circuit` listen entries
23
- * that strand nodes DO inherit correctly, because the port inside such an entry is
24
- * the relay's, not a local bind (`relay-addrs.ts`).
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
- * Everything else in `NetworkConfig` — `relayAddrs`, `transports`,
27
- * `connectionGater`, `enableRelay` — is inherited by the caller; this module
28
- * only owns the two host-endpoint fields above. One caveat on `connectionGater`:
29
- * an OPEN strand's node gets it unchanged, while a CLOSED strand's node composes
30
- * revoked-peer denial onto it in `strand-instance-manager.ts` (every supplied
31
- * hook still honored — see `strand-revocation-enforcer.ts`).
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 control node's resolved listen entries with
72
- * every fixed direct port rewritten to an ephemeral one, and no announce fields.
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 unchanged and still fail-fast — `resolveListenAddrs` throws here on a
75
- * malformed `relayAddrs` entry exactly as it does for the control node.
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 per-relay `<relay>/p2p-circuit` listen entries
23
- * that strand nodes DO inherit correctly, because the port inside such an entry is
24
- * the relay's, not a local bind (`relay-addrs.ts`).
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
- * Everything else in `NetworkConfig` — `relayAddrs`, `transports`,
27
- * `connectionGater`, `enableRelay` — is inherited by the caller; this module
28
- * only owns the two host-endpoint fields above. One caveat on `connectionGater`:
29
- * an OPEN strand's node gets it unchanged, while a CLOSED strand's node composes
30
- * revoked-peer denial onto it in `strand-instance-manager.ts` (every supplied
31
- * hook still honored — see `strand-revocation-enforcer.ts`).
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 { resolveListenAddrs, resolveTransportOptions } from './relay-addrs.js';
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 control node's resolved listen entries with
43
- * every fixed direct port rewritten to an ephemeral one, and no announce fields.
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 unchanged and still fail-fast — `resolveListenAddrs` throws here on a
46
- * malformed `relayAddrs` entry exactly as it does for the control node.
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
- // The default `'configured'` relay route, deliberately NOT the control node's
57
- // `'search'` route: nothing drives an explicit reservation for a strand node, so a
58
- // bare `/p2p-circuit` search entry would register a pending reservation nobody fills
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
- const rewritten = dedupe(listenAddrs.map(ephemeralPortListenAddr));
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 { listenAddrs: rewritten, ...resolveTransportOptions(network, rewritten) };
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,SAAS,EAAkB,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAkC/E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,OAAkC;IAChE,8EAA8E;IAC9E,mFAAmF;IACnF,qFAAqF;IACrF,sEAAsE;IACtE,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,kFAAkF;IAClF,kFAAkF;IAClF,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,CAAC;IACnE,mFAAmF;IACnF,mFAAmF;IACnF,qFAAqF;IACrF,2CAA2C;IAC3C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,uBAAuB,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;AACpF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,SAAS,uBAAuB,CAAC,UAAkB;IACjD,IAAI,UAAuB,CAAC;IAC5B,IAAI,CAAC;QACH,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,aAAa,EAAE,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;QACrD,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACjE,CAAC;AAED,mEAAmE;AACnE,SAAS,WAAW,CAAC,SAAoB;IACvC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC;WACxD,SAAS,CAAC,KAAK,KAAK,SAAS;WAC7B,SAAS,CAAC,KAAK,KAAK,GAAG,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CAAC,SAAoB;IAC7C,OAAO,WAAW,CAAC,SAAS,CAAC;QAC3B,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;QAC5D,CAAC,CAAC,SAAS,CAAC;AAChB,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAS,MAAM,CAAC,KAAwB;IACtC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC"}
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":"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"}
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;AAOzD,sFAAsF;AACtF,OAAO,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EACL,sBAAsB,EAEvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,6BAA6B,EAE9B,MAAM,gCAAgC,CAAC;AAExC,MAAM,GAAG,GAAG,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAiJ/C;;;;;;;GAOG;AACH,MAAM,UAAU,uCAAuC;IACrD,OAAO;QACL,KAAK,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE;YACjC,OAAO,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QACjD,CAAC;KACF,CAAC;AACJ,CAAC;AA8BD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,yBAAyB;IAwBpC,YAAY,OAA0C;QAbtD;;;;;;;;;;WAUG;QACc,sBAAiB,GAAG,IAAI,GAAG,EAAkB,CAAC;QAG7D,IAAI,CAAC,mBAAmB,GAAG,OAAO,EAAE,mBAAmB,CAAC;QACxD,IAAI,CAAC,sBAAsB,GAAG,OAAO,EAAE,sBAAsB,CAAC;QAC9D,IAAI,CAAC,iBAAiB,GAAG,OAAO,EAAE,iBAAiB,CAAC;QACpD,IAAI,CAAC,0BAA0B,GAAG,OAAO,EAAE,0BAA0B,CAAC;QACtE,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QACzD,IAAI,CAAC,cAAc,GAAG,OAAO,EAAE,cAAc,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,kBAAkB,GAAG,OAAO,EAAE,kBAAkB,CAAC;QACtD,IAAI,CAAC,qBAAqB,GAAG,OAAO,EAAE,qBAAqB,CAAC;QAC5D,IAAI,CAAC,eAAe,GAAG,OAAO,EAAE,eAAe,CAAC;QAChD,GAAG,CAAC,iDAAiD,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED;;;OAGG;IACK,mBAAmB;QACzB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3B,IAAI,CAAC,gBAAgB,GAAG,IAAI,sBAAsB,CAAC;gBACjD,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;gBAC7C,sBAAsB,EAAE,IAAI,CAAC,sBAAsB;gBACnD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;gBACzC,0BAA0B,EAAE,IAAI,CAAC,0BAA0B;gBAC3D,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;gBAC3C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;gBACjD,MAAM,EAAE,IAAI,CAAC,eAAe;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACH,iBAAiB,CAAC,IAAY;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACnD,GAAG,CAAC,yBAAyB,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,IAAY;QAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACrD,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACnC,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,UAAU,CACd,UAA0B,EAC1B,UAAqC,EACrC,IAAa;QAEb,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC/B,GAAG,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QAE5C,oDAAoD;QACpD,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAChD,MAAM,eAAe,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAEzD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpC,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;QAEvE,GAAG,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;QAE3C,2CAA2C;QAC3C,IAAI,IAAI,EAAE,CAAC;YACT,GAAG,CAAC,6CAA6C,CAAC,CAAC;YACnD,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,wBAAwB,CAAC,UAAU,CAAC,CAAC;YAC7E,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;YAChD,2EAA2E;YAC3E,gFAAgF;YAChF,4EAA4E;YAC5E,MAAM,cAAc,GAAG,EAAE,GAAG,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;YAC7D,MAAM,aAAa,GAAG,IAAI,CACxB,uBAAuB,CAAC;gBACtB,KAAK;gBACL,YAAY;gBACZ,OAAO,EAAE,YAAY;gBACrB,UAAU,EAAE,aAAa,CAAC,cAAc,CAAC;aAC1C,CAAC,EACF,aAAa,EACb,SAAS,EACT,OAAO,EACP,WAAW,EACX,WAAW,CACF,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,UAAU,CACxD,UAAU,EACV,cAAc,EACd,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,EACtD,IAAI,CACL,CAAC;YACF,OAAO;gBACL,SAAS;gBACT,gBAAgB;gBAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;gBACzB,oFAAoF;gBACpF,wFAAwF;gBACxF,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,8EAA8E;gBAC9E,mEAAmE;gBACnE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gBACzC,mFAAmF;gBACnF,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC;QACJ,CAAC;QAED,+DAA+D;QAC/D,GAAG,CAAC,8CAA8C,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAElF,OAAO;YACL,SAAS;YACT,gBAAgB;YAChB,QAAQ;YACR,mEAAmE;YACnE,WAAW,EAAE,EAAE;SAChB,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,oBAAoB,CACxB,MAAc,EACd,YAAoB,EACpB,SAAmB;QAEnB,0BAA0B;QAC1B,MAAM,KAAK,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;QAChF,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QAE3D,GAAG,CAAC,0CAA0C,EAAE,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAEjF,OAAO;YACL,KAAK;YACL,MAAM;YACN,UAAU;YACV,SAAS;SACV,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CAAC,KAAa,EAAE,WAAmB;QACzD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAC/C,GAAG,CAAC,8CAA8C,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC1E,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACH,KAAK,CAAC,wBAAwB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC1D,IAAI,WAAW,IAAI,GAAG,EAAE,CAAC;gBACvB,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBACrC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAC5D,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,CAAC,MAAM,IAAI,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC;IACpF,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,uBAAuB,CAC3B,KAAa,EACb,OAAe,EACf,QAAgB,EAChB,OAAwD,EACxD,UAAU,GAAG,EAAE;QAEf,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;gBAC5C,KAAK;gBACL,OAAO;gBACP,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,YAAY,EAAE,OAAO,CAAC,YAAY;gBAClC,QAAQ;gBACR,UAAU;aACX,CAAC,CAAC;YACH,GAAG,CAAC,8CAA8C,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;CACF"}
@@ -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 `control-cohort.ts`, and the same
46
- * chosen number. 20 s is deliberately wider than one attempt timeout so a
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 distinction is not cosmetic:
151
- * with only the last candidate's message the failure that mattered (usually the
152
- * signaling address, tried first) is invisible outside a debug log, and the
153
- * surfaced message points at whichever address happened to be tried last.
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, withDeadline, exchangeFrame, readStreamToEnd } from './control-stream.js';
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 `control-cohort.ts`, and the same
55
- * chosen number. 20 s is deliberately wider than one attempt timeout so a
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 distinction is not cosmetic:
224
- * with only the last candidate's message the failure that mattered (usually the
225
- * signaling address, tried first) is invisible outside a debug log, and the
226
- * surfaced message points at whichever address happened to be tried last.
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 timeoutMs = options.timeoutMs ?? DEFAULT_WAKE_TIMEOUT_MS;
240
- const budgetMs = options.budgetMs ?? DEFAULT_WAKE_DIAL_BUDGET_MS;
241
- const deadline = Date.now() + budgetMs;
242
- const failures = [];
243
- for (const addr of addrs) {
244
- // Whatever is left of the whole-call budget caps this attempt, so the last
245
- // candidate inside the budget still gets a real (if shortened) try.
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":"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"}
1
+ {"version":3,"file":"strand-wake-protocol.js","sourceRoot":"","sources":["../src/strand-wake-protocol.ts"],"names":[],"mappings":"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"}
@@ -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
  }