agent-comms 8.3.0 → 8.4.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +27 -16
- package/dist/bridges/user/web/frontend/mesh-client.js +1 -1
- package/dist/bridges/user/web/frontend/mesh-client.js.map +1 -1
- package/dist/bridges/user/web/server.d.ts +1 -1
- package/dist/bridges/user/web/server.d.ts.map +1 -1
- package/dist/bridges/user/web/server.js +6 -12
- package/dist/bridges/user/web/server.js.map +1 -1
- package/dist/bridges/user/web/test/lan-web-server.integration.test.js +30 -1
- package/dist/bridges/user/web/test/lan-web-server.integration.test.js.map +1 -1
- package/dist/bridges/user/web/test/orpc-router.integration.test.js +15 -1
- package/dist/bridges/user/web/test/orpc-router.integration.test.js.map +1 -1
- package/dist/bridges/user/web/test/web-access.unit.test.js +127 -2
- package/dist/bridges/user/web/test/web-access.unit.test.js.map +1 -1
- package/dist/bridges/user/web/web-access.d.ts +9 -6
- package/dist/bridges/user/web/web-access.d.ts.map +1 -1
- package/dist/bridges/user/web/web-access.js +70 -22
- package/dist/bridges/user/web/web-access.js.map +1 -1
- package/dist/core/coordinator-role.d.ts +68 -0
- package/dist/core/coordinator-role.d.ts.map +1 -0
- package/dist/core/coordinator-role.js +161 -0
- package/dist/core/coordinator-role.js.map +1 -0
- package/dist/core/delivery-engine.d.ts.map +1 -1
- package/dist/core/delivery-engine.js +2 -0
- package/dist/core/delivery-engine.js.map +1 -1
- package/dist/core/election-sessions.d.ts +31 -0
- package/dist/core/election-sessions.d.ts.map +1 -0
- package/dist/core/election-sessions.js +59 -0
- package/dist/core/election-sessions.js.map +1 -0
- package/dist/core/loopback-address.d.ts +6 -0
- package/dist/core/loopback-address.d.ts.map +1 -0
- package/dist/core/loopback-address.js +21 -0
- package/dist/core/loopback-address.js.map +1 -0
- package/dist/core/mesh-store-options.d.ts +2 -0
- package/dist/core/mesh-store-options.d.ts.map +1 -1
- package/dist/core/mesh-store.d.ts +8 -2
- package/dist/core/mesh-store.d.ts.map +1 -1
- package/dist/core/mesh-store.js +41 -46
- package/dist/core/mesh-store.js.map +1 -1
- package/dist/core/peer-lifecycle.d.ts +18 -10
- package/dist/core/peer-lifecycle.d.ts.map +1 -1
- package/dist/core/peer-lifecycle.js +50 -9
- package/dist/core/peer-lifecycle.js.map +1 -1
- package/dist/core/pending-connection.d.ts +24 -0
- package/dist/core/pending-connection.d.ts.map +1 -0
- package/dist/core/pending-connection.js +25 -0
- package/dist/core/pending-connection.js.map +1 -0
- package/dist/core/stale-agent-checker.d.ts +4 -2
- package/dist/core/stale-agent-checker.d.ts.map +1 -1
- package/dist/core/stale-agent-checker.js +5 -4
- package/dist/core/stale-agent-checker.js.map +1 -1
- package/dist/core/transport-events.d.ts +2 -0
- package/dist/core/transport-events.d.ts.map +1 -1
- package/dist/core/transport-events.js +8 -0
- package/dist/core/transport-events.js.map +1 -1
- package/dist/core/transport.d.ts +22 -2
- package/dist/core/transport.d.ts.map +1 -1
- package/dist/core/wire-mesh-transport-options.d.ts +14 -0
- package/dist/core/wire-mesh-transport-options.d.ts.map +1 -1
- package/dist/core/wire-mesh-transport-options.js +23 -1
- package/dist/core/wire-mesh-transport-options.js.map +1 -1
- package/dist/core/wire-mesh-transport.d.ts +7 -5
- package/dist/core/wire-mesh-transport.d.ts.map +1 -1
- package/dist/core/wire-mesh-transport.js +53 -52
- package/dist/core/wire-mesh-transport.js.map +1 -1
- package/dist/core/ws-dial.d.ts +3 -1
- package/dist/core/ws-dial.d.ts.map +1 -1
- package/dist/core/ws-dial.js +15 -0
- package/dist/core/ws-dial.js.map +1 -1
- package/dist/test/agent-comms-version-gossip.integration.test.js +2 -0
- package/dist/test/agent-comms-version-gossip.integration.test.js.map +1 -1
- package/dist/test/agent-self-gossip.integration.test.js +2 -0
- package/dist/test/agent-self-gossip.integration.test.js.map +1 -1
- package/dist/test/become-coordinator-actual-port.integration.test.js +2 -0
- package/dist/test/become-coordinator-actual-port.integration.test.js.map +1 -1
- package/dist/test/coordinator-claim-sessions.integration.test.d.ts +5 -0
- package/dist/test/coordinator-claim-sessions.integration.test.d.ts.map +1 -0
- package/dist/test/coordinator-claim-sessions.integration.test.js +276 -0
- package/dist/test/coordinator-claim-sessions.integration.test.js.map +1 -0
- package/dist/test/coordinator-election.integration.test.d.ts +5 -0
- package/dist/test/coordinator-election.integration.test.d.ts.map +1 -0
- package/dist/test/coordinator-election.integration.test.js +182 -0
- package/dist/test/coordinator-election.integration.test.js.map +1 -0
- package/dist/test/coordinator-failover.unit.test.d.ts +1 -1
- package/dist/test/coordinator-failover.unit.test.js +171 -68
- package/dist/test/coordinator-failover.unit.test.js.map +1 -1
- package/dist/test/coordinator-role.unit.test.d.ts +5 -0
- package/dist/test/coordinator-role.unit.test.d.ts.map +1 -0
- package/dist/test/coordinator-role.unit.test.js +296 -0
- package/dist/test/coordinator-role.unit.test.js.map +1 -0
- package/dist/test/data-sync-frame-handling.integration.test.js +2 -0
- package/dist/test/data-sync-frame-handling.integration.test.js.map +1 -1
- package/dist/test/delivery-engine-delivery.unit.test.js +3 -0
- package/dist/test/delivery-engine-delivery.unit.test.js.map +1 -1
- package/dist/test/delivery-engine-directed-notify.unit.test.js +3 -0
- package/dist/test/delivery-engine-directed-notify.unit.test.js.map +1 -1
- package/dist/test/delivery-engine-own-agent.unit.test.js +3 -0
- package/dist/test/delivery-engine-own-agent.unit.test.js.map +1 -1
- package/dist/test/delivery-engine.unit.test.js +12 -0
- package/dist/test/delivery-engine.unit.test.js.map +1 -1
- package/dist/test/gossip-directory-aggregation.integration.test.js +2 -0
- package/dist/test/gossip-directory-aggregation.integration.test.js.map +1 -1
- package/dist/test/gossip-listener-addresses.integration.test.js +2 -0
- package/dist/test/gossip-listener-addresses.integration.test.js.map +1 -1
- package/dist/test/hosted-rooms-gossip.integration.test.js +2 -0
- package/dist/test/hosted-rooms-gossip.integration.test.js.map +1 -1
- package/dist/test/hub-mode-session.integration.test.js +2 -0
- package/dist/test/hub-mode-session.integration.test.js.map +1 -1
- package/dist/test/hub-session-dispatch.unit.test.js +2 -0
- package/dist/test/hub-session-dispatch.unit.test.js.map +1 -1
- package/dist/test/listener-policy.integration.test.js +2 -0
- package/dist/test/listener-policy.integration.test.js.map +1 -1
- package/dist/test/loopback-address.unit.test.d.ts +5 -0
- package/dist/test/loopback-address.unit.test.d.ts.map +1 -0
- package/dist/test/loopback-address.unit.test.js +28 -0
- package/dist/test/loopback-address.unit.test.js.map +1 -0
- package/dist/test/mesh-graph-trace.integration.test.js +2 -0
- package/dist/test/mesh-graph-trace.integration.test.js.map +1 -1
- package/dist/test/mesh-store-orchestration.unit.test.js +23 -6
- package/dist/test/mesh-store-orchestration.unit.test.js.map +1 -1
- package/dist/test/peer-lifecycle.unit.test.js +35 -15
- package/dist/test/peer-lifecycle.unit.test.js.map +1 -1
- package/dist/test/presence-readvertise.integration.test.js +49 -0
- package/dist/test/presence-readvertise.integration.test.js.map +1 -1
- package/dist/test/query-version.integration.test.js +2 -0
- package/dist/test/query-version.integration.test.js.map +1 -1
- package/dist/test/room-join-admission.integration.test.js +3 -0
- package/dist/test/room-join-admission.integration.test.js.map +1 -1
- package/dist/test/room-router.unit.test.js +2 -0
- package/dist/test/room-router.unit.test.js.map +1 -1
- package/dist/test/room-send-retry-queue.integration.test.js +3 -0
- package/dist/test/room-send-retry-queue.integration.test.js.map +1 -1
- package/dist/test/stale-agent-checker.unit.test.js +5 -0
- package/dist/test/stale-agent-checker.unit.test.js.map +1 -1
- package/dist/test/test-transport.d.ts +3 -0
- package/dist/test/test-transport.d.ts.map +1 -1
- package/dist/test/test-transport.js +19 -0
- package/dist/test/test-transport.js.map +1 -1
- package/dist/test/wire-mesh-transport-gateway-trust.integration.test.js +2 -0
- package/dist/test/wire-mesh-transport-gateway-trust.integration.test.js.map +1 -1
- package/dist/test/wire-mesh-transport-hub.integration.test.js +2 -0
- package/dist/test/wire-mesh-transport-hub.integration.test.js.map +1 -1
- package/dist/test/wire-mesh-transport-shutdown-unref.integration.test.js +10 -26
- package/dist/test/wire-mesh-transport-shutdown-unref.integration.test.js.map +1 -1
- package/dist/test/wire-mesh-transport.integration.test.js +51 -51
- package/dist/test/wire-mesh-transport.integration.test.js.map +1 -1
- package/dist/test/wss-remote-connect.integration.test.js +2 -0
- package/dist/test/wss-remote-connect.integration.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoordinatorRole: the elected holder of this machine's coordinator duties (agent-comms#341), the stale-agent PID probe, single-authority departure announcements, and the default cc-peer front. Held by gossiped, term-based claim (wire-mesh-core's CoordinatorElection over the spec's coordinator-frame) rather than by whoever binds the well-known port: a higher term always supersedes a lower one, an equal term breaks by lowest device-id, and any live peer can take the role over by raising the term, so a peer that never bound the port can hold it and the port stays only a compatibility first-contact address.
|
|
3
|
+
*
|
|
4
|
+
* Claims travel as wire-mesh session frames (MeshTransport.broadcastCoordinatorClaim/sendCoordinatorClaim), and only over sessions to peers on this machine, because both duties the role assigns are facts about one machine: a PID probe can only see local processes and the cc-peer front can only reach local Claude Code sessions.
|
|
5
|
+
*
|
|
6
|
+
* When a claim is made: a store claims only when it knows of no incumbent and is the first on the machine as far as it can tell. A store that bound the well-known port with no first-contact presence configured can meet other stores only through that port, so it claims at once; one that may be reachable through first contact (it bound the port, or could neither join nor bind it) first waits one claim wait for an incumbent's announcement, so a store arriving at an existing mesh never takes the role at an equal term before the holder's claim reaches it. Both ends of every machine-local session announce the incumbent they know as the session is enrolled. When the incumbent departs, the lowest device-id among the peers this side has a machine-local session to claims at once at a raised term, and every other survivor claims too if, one claim wait later, the claim it accepts still names a holder it has no session to, which covers a lowest-id peer that is itself gone or was never reachable. The same wait follows accepting a claim whose holder this side has no session to, so a claim naming a device that never joined cannot pin the role vacant.
|
|
7
|
+
*/
|
|
8
|
+
import { CoordinatorElection, compareDeviceIds, } from "wire-mesh-core/domain/coordinator-election";
|
|
9
|
+
import { deviceIdFromHex, deviceIdToHex, } from "wire-mesh-core/domain/device-id";
|
|
10
|
+
function sameClaim(frame, claim) {
|
|
11
|
+
return (frame.term === claim.term &&
|
|
12
|
+
compareDeviceIds(frame.coordinator, claim.coordinator) === 0);
|
|
13
|
+
}
|
|
14
|
+
export class CoordinatorRole {
|
|
15
|
+
deps;
|
|
16
|
+
/** Built on first use rather than at construction, because MeshStore's peerId is assigned after its constructor runs (every bridge sets it to the identity's device-id). */
|
|
17
|
+
electionInstance;
|
|
18
|
+
/** Whether the duties are running here, or are being started; set as each transition begins, so onGained and onLost each fire exactly once per change of holder. */
|
|
19
|
+
holding = false;
|
|
20
|
+
/** Every onGained and onLost, chained so each starts only once the previous one has finished: a role lost and regained in quick succession must not start the duties while they are still being stopped. */
|
|
21
|
+
transitions = Promise.resolve();
|
|
22
|
+
/** Set while this side waits out claimWaitMs for an incumbent it can reach. */
|
|
23
|
+
claimWait;
|
|
24
|
+
stopped = false;
|
|
25
|
+
constructor(deps) {
|
|
26
|
+
this.deps = deps;
|
|
27
|
+
}
|
|
28
|
+
get election() {
|
|
29
|
+
this.electionInstance ??= new CoordinatorElection({
|
|
30
|
+
ownDevice: deviceIdFromHex(this.deps.getPeerId()),
|
|
31
|
+
});
|
|
32
|
+
return this.electionInstance;
|
|
33
|
+
}
|
|
34
|
+
/** Whether this side holds the role now. */
|
|
35
|
+
isHolder() {
|
|
36
|
+
return this.holding;
|
|
37
|
+
}
|
|
38
|
+
/** The claim this side currently accepts, or undefined when it has neither made nor heard one. */
|
|
39
|
+
current() {
|
|
40
|
+
const claim = this.electionInstance?.current();
|
|
41
|
+
if (claim === undefined)
|
|
42
|
+
return undefined;
|
|
43
|
+
return { term: claim.term, holder: deviceIdToHex(claim.coordinator) };
|
|
44
|
+
}
|
|
45
|
+
/** Claims the role at once when this side knows of no incumbent at all. Called by a store that can meet no other store except through the well-known port it just bound; a no-op once any claim has been made or heard. */
|
|
46
|
+
async claimIfVacant() {
|
|
47
|
+
if (this.stopped || this.election.current() !== undefined)
|
|
48
|
+
return;
|
|
49
|
+
await this.claim();
|
|
50
|
+
}
|
|
51
|
+
/** Claims the role one claim wait from now, unless by then this side has accepted a claim naming a holder it can reach. Called by a store that is alone as far as the well-known port tells it but may yet meet an incumbent through first contact, which gets that long to announce itself. */
|
|
52
|
+
claimIfVacantAfterWait() {
|
|
53
|
+
if (this.stopped || this.election.current() !== undefined)
|
|
54
|
+
return;
|
|
55
|
+
this.startClaimWait();
|
|
56
|
+
}
|
|
57
|
+
/** Tells a peer whose machine-local session was just enrolled which claim this side accepts, so a joiner learns the incumbent instead of claiming over it. A no-op while this side knows of none. */
|
|
58
|
+
async announceTo(handle) {
|
|
59
|
+
const frame = this.electionInstance?.announceCurrent();
|
|
60
|
+
if (frame === undefined)
|
|
61
|
+
return;
|
|
62
|
+
await this.deps.requireTransport().sendCoordinatorClaim(handle, frame);
|
|
63
|
+
}
|
|
64
|
+
/** Evaluates a claim a peer gossiped. An accepted claim is gossiped on to every peer so the supersession reaches peers the sender is not connected to, and when it names a holder this side has no session to, this side waits one claim wait for that holder to appear before claiming over it; a stale or tiebreak-losing claim is answered with the incumbent so its sender converges. Receiving the incumbent itself is neither, and is dropped without a reply, which is what stops two peers that agree from echoing it forever. */
|
|
65
|
+
async handleClaim(handle, frame) {
|
|
66
|
+
if (this.stopped)
|
|
67
|
+
return;
|
|
68
|
+
const result = this.election.evaluate(frame);
|
|
69
|
+
if (result.outcome === "accepted") {
|
|
70
|
+
this.cancelClaimWait();
|
|
71
|
+
if (this.incumbentUnreachable())
|
|
72
|
+
this.startClaimWait();
|
|
73
|
+
await this.deps.requireTransport().broadcastCoordinatorClaim(frame);
|
|
74
|
+
}
|
|
75
|
+
else if (!sameClaim(frame, result.incumbent)) {
|
|
76
|
+
const incumbent = this.election.announceCurrent();
|
|
77
|
+
if (incumbent !== undefined) {
|
|
78
|
+
await this.deps
|
|
79
|
+
.requireTransport()
|
|
80
|
+
.sendCoordinatorClaim(handle, incumbent);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
await this.syncHolding();
|
|
84
|
+
}
|
|
85
|
+
/** Recovers the role when the departed peer held it. The lowest device-id among the peers this side has a machine-local session to claims at once at a raised term; every other survivor waits one claim wait and claims itself if the claim it then accepts still names a holder it has no session to, then runs onDelayedTakeover (the caller's single-authority announcement of the departed holder, which a delayed successor makes too). */
|
|
86
|
+
async handleDeparture(peerId, onDelayedTakeover) {
|
|
87
|
+
if (this.stopped || this.current()?.holder !== peerId)
|
|
88
|
+
return;
|
|
89
|
+
if (this.isLowestSurvivor(peerId)) {
|
|
90
|
+
await this.claim();
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
this.startClaimWait(onDelayedTakeover);
|
|
94
|
+
}
|
|
95
|
+
/** Stops taking part and gives the duties up if this side held them, once any transition still running has finished. Idempotent. */
|
|
96
|
+
async stop() {
|
|
97
|
+
this.stopped = true;
|
|
98
|
+
this.cancelClaimWait();
|
|
99
|
+
await this.syncHolding();
|
|
100
|
+
}
|
|
101
|
+
isLowestSurvivor(departedPeerId) {
|
|
102
|
+
const selfId = this.deps.getPeerId();
|
|
103
|
+
const self = deviceIdFromHex(selfId);
|
|
104
|
+
for (const id of this.deps.requireTransport().electionPeerIds()) {
|
|
105
|
+
if (id === departedPeerId || id === selfId)
|
|
106
|
+
continue;
|
|
107
|
+
if (compareDeviceIds(deviceIdFromHex(id), self) < 0)
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
/** Whether the claim this side accepts leaves the role without a holder it can reach: there is no claim at all, or it names a device that is neither this side nor a peer this side has a machine-local session to. */
|
|
113
|
+
incumbentUnreachable() {
|
|
114
|
+
const claim = this.current();
|
|
115
|
+
if (claim === undefined)
|
|
116
|
+
return true;
|
|
117
|
+
if (claim.holder === this.deps.getPeerId())
|
|
118
|
+
return false;
|
|
119
|
+
return !this.deps.requireTransport().electionPeerIds().has(claim.holder);
|
|
120
|
+
}
|
|
121
|
+
/** Waits one claim wait, then claims at a raised term and runs onTakeover (when given) if the incumbent is still unreachable. Replaces any wait already running, since only the latest accepted claim decides whether a takeover is due. */
|
|
122
|
+
startClaimWait(onTakeover) {
|
|
123
|
+
this.cancelClaimWait();
|
|
124
|
+
this.claimWait = setTimeout(() => {
|
|
125
|
+
this.claimWait = undefined;
|
|
126
|
+
if (this.stopped || !this.incumbentUnreachable())
|
|
127
|
+
return;
|
|
128
|
+
void this.claim()
|
|
129
|
+
.then(async () => onTakeover?.())
|
|
130
|
+
.catch(this.deps.onError);
|
|
131
|
+
}, this.deps.claimWaitMs);
|
|
132
|
+
// Never what keeps a process alive: a store shutting down stops the role anyway.
|
|
133
|
+
this.claimWait.unref();
|
|
134
|
+
}
|
|
135
|
+
async claim() {
|
|
136
|
+
const frame = this.election.claim();
|
|
137
|
+
await this.deps.requireTransport().broadcastCoordinatorClaim(frame);
|
|
138
|
+
await this.syncHolding();
|
|
139
|
+
}
|
|
140
|
+
cancelClaimWait() {
|
|
141
|
+
if (this.claimWait === undefined)
|
|
142
|
+
return;
|
|
143
|
+
clearTimeout(this.claimWait);
|
|
144
|
+
this.claimWait = undefined;
|
|
145
|
+
}
|
|
146
|
+
/** Queues a transition to whatever holding should now be. Resolves once that transition has run, and rejects with its failure; the chain itself carries on past a failure, which reaches this call's caller instead. */
|
|
147
|
+
async syncHolding() {
|
|
148
|
+
const next = this.transitions.then(async () => this.applyHolding());
|
|
149
|
+
this.transitions = next.catch(() => undefined);
|
|
150
|
+
await next;
|
|
151
|
+
}
|
|
152
|
+
/** Starts or stops the duties when the incumbent changed to or from this side since the previous transition. Reads the election afresh when the transition actually runs, not when it was queued, so a claim evaluated while an earlier transition was still running is reflected exactly once. */
|
|
153
|
+
async applyHolding() {
|
|
154
|
+
const holds = !this.stopped && this.electionInstance?.isSelf() === true;
|
|
155
|
+
if (holds === this.holding)
|
|
156
|
+
return;
|
|
157
|
+
this.holding = holds;
|
|
158
|
+
await (holds ? this.deps.onGained() : this.deps.onLost());
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=coordinator-role.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator-role.js","sourceRoot":"","sources":["../../src/core/coordinator-role.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-engine.d.ts","sourceRoot":"","sources":["../../src/core/delivery-engine.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"delivery-engine.d.ts","sourceRoot":"","sources":["../../src/core/delivery-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -214,7 +214,9 @@ export class DeliveryEngine {
|
|
|
214
214
|
await this.reassertOwnAgent(agent, agent.version);
|
|
215
215
|
break;
|
|
216
216
|
}
|
|
217
|
+
// Bumped, as every store that sets an agent offline bumps it: left at the revision it had while running, the record would lose to any snapshot of that same revision still showing it running, and a peer that had not yet heard of the departure would turn it back on.
|
|
217
218
|
agent.status = "offline";
|
|
219
|
+
this.bump(agent);
|
|
218
220
|
this.deps.agents.set(patch.agentId, agent);
|
|
219
221
|
break;
|
|
220
222
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delivery-engine.js","sourceRoot":"","sources":["../../src/core/delivery-engine.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"delivery-engine.js","sourceRoot":"","sources":["../../src/core/delivery-engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ElectionSessions: WireMeshTransport's set of live, trusted sessions to peers on this machine, the only sessions coordinator claims are read from and gossiped over (agent-comms#341), since the elected role's duties are per machine. Split out of wire-mesh-transport.ts to keep it under the repo's max-lines cap.
|
|
3
|
+
*
|
|
4
|
+
* A session counts as machine-local when it was accepted on a loopback-only listener (the data server or the default well-known port listener) or dialled at a loopback address (loopback-address.ts), whether at a peer's data server or at the well-known port. A dial at any other address may cross machines, since the dialler knows nothing about the far side's listener beyond the address it dialled, and a peer list or a first-contact beacon heard over LAN broadcast can name any host. A session reached through connectToRemote or an addListener-created listener may cross machines and is never enrolled, and neither is one admitted through an approved connect_request, whose dialling side is a connectToRemote session and so never enrols it either.
|
|
5
|
+
*
|
|
6
|
+
* Every session this transport opens is watched from the moment it opens, whether or not it is ever enrolled: a frame is delivered only when its session is enrolled at the moment the frame is read, and is dropped otherwise. So a quarantined session's claims from before its introduce are discarded rather than replayed once it introduces itself, and a session that is never enrolled does not accumulate the frames its peer sends.
|
|
7
|
+
*/
|
|
8
|
+
import type { AcceptedMeshSession } from "wire-mesh-core/domain/mesh-session";
|
|
9
|
+
import type { CoordinatorFrame } from "wire-mesh-core/generated/protocol";
|
|
10
|
+
import type { ConnectionHandle, TransportEvents } from "./transport.js";
|
|
11
|
+
export declare class ElectionSessions {
|
|
12
|
+
private readonly events;
|
|
13
|
+
/** Each enrolled session, with the handle its claims are reported under. */
|
|
14
|
+
private readonly enrolled;
|
|
15
|
+
constructor(events: Readonly<Pick<TransportEvents, "onCoordinatorClaim" | "onElectionSessionEnrolled" | "onError">>);
|
|
16
|
+
/** Starts reading every coordinator-frame the session's peer gossips, for as long as the session lives, handing each to onCoordinatorClaim only while the session is enrolled. Called exactly once per session, as soon as it is opened and before anything could enrol it. */
|
|
17
|
+
watch(session: AcceptedMeshSession, handle: Readonly<ConnectionHandle>): void;
|
|
18
|
+
/** Enrols a trusted machine-local session, then fires onElectionSessionEnrolled so this side tells the peer which claim it accepts. Both ends of every machine-local session enrol it, so each tells the other. */
|
|
19
|
+
enrol(session: AcceptedMeshSession, handle: Readonly<ConnectionHandle>): void;
|
|
20
|
+
/** Forgets a closed session. A no-op for one never enrolled. */
|
|
21
|
+
delete(session: AcceptedMeshSession): void;
|
|
22
|
+
clear(): void;
|
|
23
|
+
/** The device-ids of every peer this side has at least one enrolled session to: the peers that take part in the election with it. */
|
|
24
|
+
peerIds(): ReadonlySet<string>;
|
|
25
|
+
/** Gossips a claim over every enrolled session. A send fails only on a connection that is already closing, and each failure is reported; the peer is told the incumbent again when its next session is enrolled. */
|
|
26
|
+
broadcast(frame: Readonly<CoordinatorFrame>): Promise<void>;
|
|
27
|
+
/** Sends a claim over every enrolled session to one peer, as an announcement or an answer its peer is waiting to converge on; a peer with no enrolled session is not machine-local and never carries a claim. */
|
|
28
|
+
sendTo(peerId: string, frame: Readonly<CoordinatorFrame>): Promise<void>;
|
|
29
|
+
private sendOver;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=election-sessions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"election-sessions.d.ts","sourceRoot":"","sources":["../../src/core/election-sessions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAExE,qBAAa,gBAAgB;IAQzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,4EAA4E;IAC5E,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGrB;gBAGe,MAAM,EAAE,QAAQ,CAC/B,IAAI,CACF,eAAe,EACf,oBAAoB,GAAG,2BAA2B,GAAG,SAAS,CAC/D,CACF;IAGH,+QAA+Q;IAC/Q,KAAK,CACH,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI;IAUP,mNAAmN;IACnN,KAAK,CACH,OAAO,EAAE,mBAAmB,EAC5B,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GACjC,IAAI;IAKP,gEAAgE;IAChE,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI1C,KAAK,IAAI,IAAI;IAIb,qIAAqI;IACrI,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC;IAI9B,oNAAoN;IAC9M,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjE,iNAAiN;IAC3M,MAAM,CACV,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,QAAQ,CAAC,gBAAgB,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC;YAUF,QAAQ;CAavB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ElectionSessions: WireMeshTransport's set of live, trusted sessions to peers on this machine, the only sessions coordinator claims are read from and gossiped over (agent-comms#341), since the elected role's duties are per machine. Split out of wire-mesh-transport.ts to keep it under the repo's max-lines cap.
|
|
3
|
+
*
|
|
4
|
+
* A session counts as machine-local when it was accepted on a loopback-only listener (the data server or the default well-known port listener) or dialled at a loopback address (loopback-address.ts), whether at a peer's data server or at the well-known port. A dial at any other address may cross machines, since the dialler knows nothing about the far side's listener beyond the address it dialled, and a peer list or a first-contact beacon heard over LAN broadcast can name any host. A session reached through connectToRemote or an addListener-created listener may cross machines and is never enrolled, and neither is one admitted through an approved connect_request, whose dialling side is a connectToRemote session and so never enrols it either.
|
|
5
|
+
*
|
|
6
|
+
* Every session this transport opens is watched from the moment it opens, whether or not it is ever enrolled: a frame is delivered only when its session is enrolled at the moment the frame is read, and is dropped otherwise. So a quarantined session's claims from before its introduce are discarded rather than replayed once it introduces itself, and a session that is never enrolled does not accumulate the frames its peer sends.
|
|
7
|
+
*/
|
|
8
|
+
export class ElectionSessions {
|
|
9
|
+
events;
|
|
10
|
+
/** Each enrolled session, with the handle its claims are reported under. */
|
|
11
|
+
enrolled = new Map();
|
|
12
|
+
constructor(events) {
|
|
13
|
+
this.events = events;
|
|
14
|
+
}
|
|
15
|
+
/** Starts reading every coordinator-frame the session's peer gossips, for as long as the session lives, handing each to onCoordinatorClaim only while the session is enrolled. Called exactly once per session, as soon as it is opened and before anything could enrol it. */
|
|
16
|
+
watch(session, handle) {
|
|
17
|
+
void (async () => {
|
|
18
|
+
for await (const frame of session.coordinatorFrames) {
|
|
19
|
+
if (this.enrolled.has(session)) {
|
|
20
|
+
this.events.onCoordinatorClaim(handle, frame);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
})();
|
|
24
|
+
}
|
|
25
|
+
/** Enrols a trusted machine-local session, then fires onElectionSessionEnrolled so this side tells the peer which claim it accepts. Both ends of every machine-local session enrol it, so each tells the other. */
|
|
26
|
+
enrol(session, handle) {
|
|
27
|
+
this.enrolled.set(session, handle);
|
|
28
|
+
this.events.onElectionSessionEnrolled(handle);
|
|
29
|
+
}
|
|
30
|
+
/** Forgets a closed session. A no-op for one never enrolled. */
|
|
31
|
+
delete(session) {
|
|
32
|
+
this.enrolled.delete(session);
|
|
33
|
+
}
|
|
34
|
+
clear() {
|
|
35
|
+
this.enrolled.clear();
|
|
36
|
+
}
|
|
37
|
+
/** The device-ids of every peer this side has at least one enrolled session to: the peers that take part in the election with it. */
|
|
38
|
+
peerIds() {
|
|
39
|
+
return new Set([...this.enrolled.values()].map((handle) => handle.id));
|
|
40
|
+
}
|
|
41
|
+
/** Gossips a claim over every enrolled session. A send fails only on a connection that is already closing, and each failure is reported; the peer is told the incumbent again when its next session is enrolled. */
|
|
42
|
+
async broadcast(frame) {
|
|
43
|
+
await Promise.all([...this.enrolled].map(async ([session, handle]) => this.sendOver(session, handle, frame)));
|
|
44
|
+
}
|
|
45
|
+
/** Sends a claim over every enrolled session to one peer, as an announcement or an answer its peer is waiting to converge on; a peer with no enrolled session is not machine-local and never carries a claim. */
|
|
46
|
+
async sendTo(peerId, frame) {
|
|
47
|
+
await Promise.all([...this.enrolled]
|
|
48
|
+
.filter(([, handle]) => handle.id === peerId)
|
|
49
|
+
.map(async ([session, handle]) => this.sendOver(session, handle, frame)));
|
|
50
|
+
}
|
|
51
|
+
async sendOver(session, handle, frame) {
|
|
52
|
+
await session.sendCoordinatorClaim(frame).catch((error) => {
|
|
53
|
+
this.events.onError?.(error instanceof Error
|
|
54
|
+
? error
|
|
55
|
+
: new Error(`sendCoordinatorClaim(${handle.id}): ${String(error)}`));
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=election-sessions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"election-sessions.js","sourceRoot":"","sources":["../../src/core/election-sessions.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,OAAO,gBAAgB;IAQR;IAPnB,4EAA4E;IAC3D,QAAQ,GAAG,IAAI,GAAG,EAGhC,CAAC;IAEJ,YACmB,MAKhB;QALgB,WAAM,GAAN,MAAM,CAKtB;IACA,CAAC;IAEJ,+QAA+Q;IAC/Q,KAAK,CACH,OAA4B,EAC5B,MAAkC;QAElC,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;gBACpD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,mNAAmN;IACnN,KAAK,CACH,OAA4B,EAC5B,MAAkC;QAElC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,gEAAgE;IAChE,MAAM,CAAC,OAA4B;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,qIAAqI;IACrI,OAAO;QACL,OAAO,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,oNAAoN;IACpN,KAAK,CAAC,SAAS,CAAC,KAAiC;QAC/C,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CACjD,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CACtC,CACF,CAAC;IACJ,CAAC;IAED,iNAAiN;IACjN,KAAK,CAAC,MAAM,CACV,MAAc,EACd,KAAiC;QAEjC,MAAM,OAAO,CAAC,GAAG,CACf,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;aACf,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC;aAC5C,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,CAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CACtC,CACJ,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,QAAQ,CACpB,OAA4B,EAC5B,MAAkC,EAClC,KAAiC;QAEjC,MAAM,OAAO,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACjE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CACnB,KAAK,YAAY,KAAK;gBACpB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,IAAI,KAAK,CAAC,wBAAwB,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CACtE,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether an address this side dials can only reach this machine, judged from the address literal alone. WireMeshTransport uses it to decide whether a dialled session takes part in the coordinator election (agent-comms#341): the dialler knows nothing about the far side's listener beyond the address it dialled, and a peer list or a first-contact beacon heard over LAN broadcast can name any host.
|
|
3
|
+
*/
|
|
4
|
+
/** True for an IPv4 address in 127.0.0.0/8, the IPv6 loopback address, or an IPv4-mapped IPv6 form of the former. False for every other address and for any hostname, since a name may resolve anywhere and is never evidence of where the far side is. */
|
|
5
|
+
export declare function isLoopbackAddress(host: string): boolean;
|
|
6
|
+
//# sourceMappingURL=loopback-address.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopback-address.d.ts","sourceRoot":"","sources":["../../src/core/loopback-address.ts"],"names":[],"mappings":"AAAA;;GAEG;AAcH,2PAA2P;AAC3P,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAIvD"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether an address this side dials can only reach this machine, judged from the address literal alone. WireMeshTransport uses it to decide whether a dialled session takes part in the coordinator election (agent-comms#341): the dialler knows nothing about the far side's listener beyond the address it dialled, and a peer list or a first-contact beacon heard over LAN broadcast can name any host.
|
|
3
|
+
*/
|
|
4
|
+
import * as net from "node:net";
|
|
5
|
+
/** RFC 1122 section 3.2.1.3 reserves the whole of 127.0.0.0/8 for loopback, not just 127.0.0.1. */
|
|
6
|
+
const IPV4_LOOPBACK_NETWORK = "127.0.0.0";
|
|
7
|
+
const IPV4_LOOPBACK_PREFIX_LENGTH = 8;
|
|
8
|
+
/** RFC 4291 section 2.5.3: IPv6 has a single loopback address. */
|
|
9
|
+
const IPV6_LOOPBACK_ADDRESS = "::1";
|
|
10
|
+
const LOOPBACK = new net.BlockList();
|
|
11
|
+
LOOPBACK.addSubnet(IPV4_LOOPBACK_NETWORK, IPV4_LOOPBACK_PREFIX_LENGTH, "ipv4");
|
|
12
|
+
LOOPBACK.addAddress(IPV6_LOOPBACK_ADDRESS, "ipv6");
|
|
13
|
+
/** True for an IPv4 address in 127.0.0.0/8, the IPv6 loopback address, or an IPv4-mapped IPv6 form of the former. False for every other address and for any hostname, since a name may resolve anywhere and is never evidence of where the far side is. */
|
|
14
|
+
export function isLoopbackAddress(host) {
|
|
15
|
+
if (net.isIPv4(host))
|
|
16
|
+
return LOOPBACK.check(host, "ipv4");
|
|
17
|
+
if (net.isIPv6(host))
|
|
18
|
+
return LOOPBACK.check(host, "ipv6");
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=loopback-address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loopback-address.js","sourceRoot":"","sources":["../../src/core/loopback-address.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAEhC,mGAAmG;AACnG,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAC1C,MAAM,2BAA2B,GAAG,CAAC,CAAC;AACtC,kEAAkE;AAClE,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAEpC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;AACrC,QAAQ,CAAC,SAAS,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,MAAM,CAAC,CAAC;AAC/E,QAAQ,CAAC,UAAU,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAEnD,2PAA2P;AAC3P,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -14,6 +14,8 @@ export interface MeshStoreOptions {
|
|
|
14
14
|
readonly presenceStaleAfterMs?: number | undefined;
|
|
15
15
|
/** The UDP port init() binds the first-contact presence on (agent-comms#341): beacons, probes, and discovered peers fed into the ordinary peer-list flood, so a mesh forms with no coordinator at all. Left out, the store runs no presence: only the bridge entry points set it (bridge-mesh.ts, FIRST_CONTACT_PORT by default), so a store built by anything else, a test included, stays inert and never cross-discovers another store. A bridge-level test overrides it with an OS-assigned free port. */
|
|
16
16
|
readonly firstContactPort?: number | undefined;
|
|
17
|
+
/** How long this store waits for an incumbent's coordinator claim to reach it before claiming the elected role itself (agent-comms#341): after the holder departs, after accepting a claim naming a holder it has no session to, and before a store that may meet others through first contact claims a vacant role. Defaults to ROOM_REQUEST_TIMEOUT_MS; a test shortens it. */
|
|
18
|
+
readonly coordinatorClaimWaitMs?: number | undefined;
|
|
17
19
|
/** Locates this store's persisted bootstrap state. The connectionCodes ledger is per slot. gatewayTrust is shared by every slot in the slot's identity directory, so all stores on a machine (each fronted session included) advertise under one operator decision. */
|
|
18
20
|
readonly slot?: Readonly<IdentitySlot>;
|
|
19
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh-store-options.d.ts","sourceRoot":"","sources":["../../src/core/mesh-store-options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,qGAAqG;IACrG,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,2UAA2U;IAC3U,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,8OAA8O;IAC9O,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxD,uUAAuU;IACvU,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,8eAA8e;IAC9e,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,uQAAuQ;IACvQ,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;CACxC"}
|
|
1
|
+
{"version":3,"file":"mesh-store-options.d.ts","sourceRoot":"","sources":["../../src/core/mesh-store-options.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,qGAAqG;IACrG,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,2UAA2U;IAC3U,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrC,8OAA8O;IAC9O,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxD,uUAAuU;IACvU,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACnD,8eAA8e;IAC9e,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/C,iXAAiX;IACjX,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACrD,uQAAuQ;IACvQ,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,YAAY,CAAC,CAAC;CACxC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* MeshStore — transport-agnostic peer mesh for agent communication.
|
|
3
3
|
*
|
|
4
|
-
* Each bridge instance is a peer in the mesh. Peers
|
|
4
|
+
* Each bridge instance is a peer in the mesh. Peers find each other through first contact (a UDP presence beaconing over loopback multicast to stores on this machine and over limited broadcast to other machines on the LAN) or through the well-known port, whose holder introduces joiners; neither is required for peers to keep talking once connected. The coordinator duties are held by an elected CoordinatorRole, not by the port holder. All state is held in memory and synchronised between peers. Delivery events are pushed directly over the transport, with no polling and no filesystem.
|
|
5
5
|
*
|
|
6
6
|
* Transport is set via setTransport() (e.g. WireMeshTransport for encrypted connections) before init() or any other transport-using method is called -- there is no default, since every real bridge builds its own transport from this store's own events getter, which needs the store to already exist.
|
|
7
7
|
*
|
|
@@ -15,6 +15,7 @@ import { type GenerateConnectionCodeOptions, type RedeemConnectionCodeOptions, t
|
|
|
15
15
|
import type { MeshStoreOptions } from "./mesh-store-options.js";
|
|
16
16
|
import type { IncomingManageRequest } from "wire-mesh-core/domain/mesh-session";
|
|
17
17
|
import type { DeviceId } from "wire-mesh-core/generated/protocol";
|
|
18
|
+
import { type CoordinatorClaimView } from "./coordinator-role.js";
|
|
18
19
|
import type { RoomVerbHandler } from "./room-router.js";
|
|
19
20
|
import type { AgentSelfAdvert, HostedRoomAdvert } from "./gossip-extensions.js";
|
|
20
21
|
import type { MeshStatePatch, SerialisedState } from "./wire-protocol.js";
|
|
@@ -61,7 +62,12 @@ export declare class MeshStore implements CommsStore {
|
|
|
61
62
|
private readonly connectionApproval;
|
|
62
63
|
private readonly capabilityAskAdmission;
|
|
63
64
|
private readonly staleAgentChecker;
|
|
65
|
+
private readonly coordinatorRole;
|
|
64
66
|
private readonly peerLifecycle;
|
|
67
|
+
/** Whether this store holds the elected coordinator role (agent-comms#341), and so runs the stale-agent probe, announces departures, and fronts local Claude Code sessions. Independent of whether its transport holds the well-known port. */
|
|
68
|
+
get holdsCoordinatorRole(): boolean;
|
|
69
|
+
/** The coordinator claim this store currently accepts (the elected holder's device-id and the term that put it there), or undefined before it has made or heard one. */
|
|
70
|
+
get coordinatorClaim(): CoordinatorClaimView | undefined;
|
|
65
71
|
/** This store's own current AgentStatus, synchronously -- the value WireMeshTransport's presence re-advertisement timer reads on every tick. undefined before registerAgent has ever run (no self agent record exists yet), in which case there is nothing yet to advertise. */
|
|
66
72
|
get selfStatus(): AgentStatus | undefined;
|
|
67
73
|
/** This store's own currently-hosted public/private rooms, synchronously, in the lightweight gossip-safe shape WireMeshTransport's own hosted-rooms re-advertisement timer reads on every tick -- the write half of P3.8's room-discovery replacement for createRoom's own broadcastPatch (agent-comms#48). Secret rooms are never included (never worth advertising at all), and a room this store has merely replicated via the legacy room_upsert broadcast, rather than owns, is excluded too -- "hosted" means "this device is the one a joiner should actually reach", which only its own owner is. */
|
|
@@ -94,7 +100,7 @@ export declare class MeshStore implements CommsStore {
|
|
|
94
100
|
*/
|
|
95
101
|
onError: ((error: Error) => void) | undefined;
|
|
96
102
|
/**
|
|
97
|
-
* Fires whenever this store
|
|
103
|
+
* Fires whenever this store gains or loses the elected coordinator role (agent-comms#341): true once a claim naming this store is accepted, false when a superseding claim is accepted or right before shutdown() gives the role up. Holding the well-known port has no bearing on it. A call runs only once the previous one has finished, so a caller stopping something asynchronously is never asked to start it again mid-stop. Left undefined by default (matching onDelivery/onPatch/onError): a caller that wants to react to owning the coordinator role (e.g. bridge-mesh.ts starting/stopping the cc-peer front (agent-comms#157), a Node/filesystem-specific capability that has no place in this transport-agnostic core) sets it, exactly like those three.
|
|
98
104
|
*/
|
|
99
105
|
onCoordinatorRoleChanged: ((isCoordinator: boolean) => void | Promise<void>) | undefined;
|
|
100
106
|
/** This process's own currently-running cc-peer package version, when it is actually fronting a cc-peer session or running the one-shot `bridge cc-peer` command (agent-comms#198) -- undefined by default (matching onDelivery/onPatch/onError/onCoordinatorRoleChanged), since every other bridge never loads the cc-peer package at all. Set once, right after construction, by front-runtime.ts/bridges/cc-peer/run.ts (a plain closure over cc-peer's own exported CC_PEER_VERSION constant) -- read by both this store's own WireMeshTransport construction (bridge-mesh.ts, for the gossiped versions advert) and CommsTool (for whoami/update/list_agents' own self-report), so the one field backs both surfaces. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh-store.d.ts","sourceRoot":"","sources":["../../src/core/mesh-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;
|
|
1
|
+
{"version":3,"file":"mesh-store.d.ts","sourceRoot":"","sources":["../../src/core/mesh-store.ts"],"names":[],"mappings":"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"}
|