agent-comms 1.28.0 → 1.29.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 +1 -1
- package/dist/core/comms-store.d.ts +4 -37
- package/dist/core/comms-store.d.ts.map +1 -1
- package/dist/core/comms-store.js +3 -3
- package/dist/core/identity-store.d.ts.map +1 -1
- package/dist/core/identity-store.js +2 -1
- package/dist/core/identity-store.js.map +1 -1
- package/dist/core/identity.d.ts +6 -0
- package/dist/core/identity.d.ts.map +1 -1
- package/dist/core/identity.js +17 -0
- package/dist/core/identity.js.map +1 -1
- package/dist/core/mesh-store.d.ts +12 -3
- package/dist/core/mesh-store.d.ts.map +1 -1
- package/dist/core/mesh-store.js +52 -33
- package/dist/core/mesh-store.js.map +1 -1
- package/dist/core/store.d.ts +1 -27
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +0 -62
- package/dist/core/store.js.map +1 -1
- package/dist/core/tls-transport.d.ts +12 -9
- package/dist/core/tls-transport.d.ts.map +1 -1
- package/dist/core/tls-transport.js +62 -25
- package/dist/core/tls-transport.js.map +1 -1
- package/dist/core/tool.d.ts +34 -5
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +41 -0
- package/dist/core/tool.js.map +1 -1
- package/dist/core/wire-protocol.d.ts +3 -2
- package/dist/core/wire-protocol.d.ts.map +1 -1
- package/dist/core/wire-protocol.js +3 -2
- package/dist/core/wire-protocol.js.map +1 -1
- package/dist/test/approval.integration.test.js +320 -285
- package/dist/test/approval.integration.test.js.map +1 -1
- package/dist/test/become-coordinator-actual-port.integration.test.js +0 -19
- package/dist/test/become-coordinator-actual-port.integration.test.js.map +1 -1
- package/dist/test/coordinator-socket-error.integration.test.js +2 -0
- package/dist/test/coordinator-socket-error.integration.test.js.map +1 -1
- package/dist/test/delivery-receipt.helper.js +15 -0
- package/dist/test/delivery-receipt.helper.js.map +1 -1
- package/dist/test/downtime-replay.test.js +5 -2
- package/dist/test/downtime-replay.test.js.map +1 -1
- package/dist/test/federation.integration.test.js +2 -0
- package/dist/test/federation.integration.test.js.map +1 -1
- package/dist/test/identity-device-id.test.d.ts +5 -0
- package/dist/test/identity-device-id.test.d.ts.map +1 -0
- package/dist/test/identity-device-id.test.js +35 -0
- package/dist/test/identity-device-id.test.js.map +1 -0
- package/dist/test/listener-policy.integration.test.js +214 -158
- package/dist/test/listener-policy.integration.test.js.map +1 -1
- package/dist/test/mesh-e2e.integration.test.js +2 -0
- package/dist/test/mesh-e2e.integration.test.js.map +1 -1
- package/dist/test/mesh-smoke.integration.test.d.ts +2 -4
- package/dist/test/mesh-smoke.integration.test.d.ts.map +1 -1
- package/dist/test/mesh-smoke.integration.test.js +28 -5
- package/dist/test/mesh-smoke.integration.test.js.map +1 -1
- package/dist/test/state-sync-convergence.test.js +5 -2
- package/dist/test/state-sync-convergence.test.js.map +1 -1
- package/dist/test/test-transport.d.ts +8 -0
- package/dist/test/test-transport.d.ts.map +1 -0
- package/dist/test/test-transport.js +29 -0
- package/dist/test/test-transport.js.map +1 -0
- package/dist/test/visibility.integration.test.js +6 -0
- package/dist/test/visibility.integration.test.js.map +1 -1
- package/package.json +2 -2
- package/dist/core/tcp-transport.d.ts +0 -85
- package/dist/core/tcp-transport.d.ts.map +0 -1
- package/dist/core/tcp-transport.js +0 -659
- package/dist/core/tcp-transport.js.map +0 -1
- package/dist/core/ws-transport.d.ts +0 -79
- package/dist/core/ws-transport.d.ts.map +0 -1
- package/dist/core/ws-transport.js +0 -622
- package/dist/core/ws-transport.js.map +0 -1
- package/dist/test/ws-broadcast-window.integration.test.d.ts +0 -7
- package/dist/test/ws-broadcast-window.integration.test.d.ts.map +0 -1
- package/dist/test/ws-broadcast-window.integration.test.js +0 -94
- package/dist/test/ws-broadcast-window.integration.test.js.map +0 -1
|
@@ -6,157 +6,205 @@
|
|
|
6
6
|
* removed dynamically.
|
|
7
7
|
*/
|
|
8
8
|
import * as net from "node:net";
|
|
9
|
+
import * as tls from "node:tls";
|
|
9
10
|
import { MeshStore } from "../core/mesh-store.js";
|
|
10
11
|
import { CommsTool } from "../core/tool.js";
|
|
11
12
|
import { buildAction } from "../core/bridge.js";
|
|
13
|
+
import { generateIdentity } from "../core/identity.js";
|
|
12
14
|
import * as assert from "node:assert/strict";
|
|
13
15
|
import { test, describe } from "node:test";
|
|
16
|
+
import { wireTestTransport } from "./test-transport.js";
|
|
14
17
|
const TEST_PORT = 19880;
|
|
15
18
|
describe("listener policy", () => {
|
|
16
19
|
void test("coordinator starts with a single default localhost listener", async () => {
|
|
17
20
|
const store = new MeshStore(TEST_PORT);
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
wireTestTransport(store);
|
|
22
|
+
try {
|
|
23
|
+
await store.init();
|
|
24
|
+
const listeners = store.listListeners();
|
|
25
|
+
assert.equal(listeners.length, 1, "Should have exactly one listener");
|
|
26
|
+
assert.equal(listeners[0]?.policy, "full", "Default listener should have full policy");
|
|
27
|
+
assert.equal(listeners[0]?.isDefault, true, "Default listener should be marked as default");
|
|
28
|
+
assert.equal(listeners[0]?.host, "127.0.0.1", "Default listener should be on localhost");
|
|
29
|
+
assert.equal(listeners[0]?.port, TEST_PORT, "Default listener should be on the coordinator port");
|
|
30
|
+
}
|
|
31
|
+
finally {
|
|
32
|
+
await store.shutdown();
|
|
33
|
+
}
|
|
26
34
|
});
|
|
27
35
|
void test("addListener creates an additional listener", async () => {
|
|
28
36
|
const store = new MeshStore(TEST_PORT);
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
wireTestTransport(store);
|
|
38
|
+
try {
|
|
39
|
+
await store.init();
|
|
40
|
+
const id = await store.addListener("127.0.0.1", 0, "observe");
|
|
41
|
+
assert.ok(id, "Should return a listener ID");
|
|
42
|
+
const listeners = store.listListeners();
|
|
43
|
+
assert.equal(listeners.length, 2, "Should have two listeners");
|
|
44
|
+
const newListener = listeners.find((l) => l.id === id);
|
|
45
|
+
assert.ok(newListener, "New listener should be listed");
|
|
46
|
+
assert.equal(newListener.policy, "observe", "New listener should have observe policy");
|
|
47
|
+
assert.equal(newListener.isDefault, false, "New listener should not be default");
|
|
48
|
+
assert.ok(newListener.port > 0, "Should have an assigned port");
|
|
49
|
+
}
|
|
50
|
+
finally {
|
|
51
|
+
await store.shutdown();
|
|
52
|
+
}
|
|
40
53
|
});
|
|
41
54
|
void test("removeListener removes a non-default listener", async () => {
|
|
42
55
|
const store = new MeshStore(TEST_PORT);
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
56
|
+
wireTestTransport(store);
|
|
57
|
+
try {
|
|
58
|
+
await store.init();
|
|
59
|
+
const id = await store.addListener("127.0.0.1", 0, "observe");
|
|
60
|
+
assert.equal(store.listListeners().length, 2);
|
|
61
|
+
await store.removeListener(id);
|
|
62
|
+
const listeners = store.listListeners();
|
|
63
|
+
assert.equal(listeners.length, 1, "Should be back to one listener");
|
|
64
|
+
assert.equal(listeners[0]?.isDefault, true, "Remaining listener should be the default");
|
|
65
|
+
}
|
|
66
|
+
finally {
|
|
67
|
+
await store.shutdown();
|
|
68
|
+
}
|
|
51
69
|
});
|
|
52
70
|
void test("removeListener rejects removing the default listener", async () => {
|
|
53
71
|
const store = new MeshStore(TEST_PORT);
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
72
|
+
wireTestTransport(store);
|
|
73
|
+
try {
|
|
74
|
+
await store.init();
|
|
75
|
+
const listeners = store.listListeners();
|
|
76
|
+
const defaultId = listeners[0]?.id;
|
|
77
|
+
assert.ok(defaultId, "Should have a default listener");
|
|
78
|
+
await assert.rejects(() => store.removeListener(defaultId), /Cannot remove the default/, "Should reject removing default listener");
|
|
79
|
+
}
|
|
80
|
+
finally {
|
|
81
|
+
await store.shutdown();
|
|
82
|
+
}
|
|
60
83
|
});
|
|
61
84
|
void test("observe listener accepts connections but enforces policy", async () => {
|
|
62
85
|
const store = new MeshStore(TEST_PORT);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
86
|
+
wireTestTransport(store);
|
|
87
|
+
try {
|
|
88
|
+
await store.init();
|
|
89
|
+
const id = await store.addListener("127.0.0.1", 0, "observe");
|
|
90
|
+
const listeners = store.listListeners();
|
|
91
|
+
const observeListener = listeners.find((l) => l.id === id);
|
|
92
|
+
assert.ok(observeListener, "Observe listener should exist");
|
|
93
|
+
// Verify a peer can connect to the observe listener's port
|
|
94
|
+
const canConnect = await new Promise((resolve) => {
|
|
95
|
+
const socket = net.createConnection({
|
|
96
|
+
port: observeListener.port,
|
|
97
|
+
host: "127.0.0.1",
|
|
98
|
+
});
|
|
99
|
+
socket.on("connect", () => {
|
|
100
|
+
socket.destroy();
|
|
101
|
+
resolve(true);
|
|
102
|
+
});
|
|
103
|
+
socket.on("error", () => {
|
|
104
|
+
socket.destroy();
|
|
105
|
+
resolve(false);
|
|
106
|
+
});
|
|
77
107
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
assert.ok(canConnect, "Should be able to connect to observe listener");
|
|
84
|
-
await store.shutdown();
|
|
108
|
+
assert.ok(canConnect, "Should be able to connect to observe listener");
|
|
109
|
+
}
|
|
110
|
+
finally {
|
|
111
|
+
await store.shutdown();
|
|
112
|
+
}
|
|
85
113
|
});
|
|
86
114
|
void test("mesh_listeners action returns all listeners via CommsTool", async () => {
|
|
87
115
|
const store = new MeshStore(TEST_PORT);
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
116
|
+
wireTestTransport(store);
|
|
117
|
+
try {
|
|
118
|
+
await store.init();
|
|
119
|
+
const agent = await store.registerAgent({
|
|
120
|
+
name: "test-agent",
|
|
121
|
+
harness: "test",
|
|
122
|
+
cwd: "/test",
|
|
123
|
+
pid: process.pid,
|
|
124
|
+
visibility: "visible",
|
|
125
|
+
tags: [],
|
|
126
|
+
});
|
|
127
|
+
await store.addListener("127.0.0.1", 0, "rooms-only");
|
|
128
|
+
const tool = new CommsTool(store);
|
|
129
|
+
const result = await tool.handle({ agentId: agent.id, harness: "test", cwd: "/test", pid: process.pid }, { action: "mesh_listeners" });
|
|
130
|
+
assert.ok(!result.isError, "Should not be an error");
|
|
131
|
+
assert.ok(result.content.includes("full"), "Should list the default full listener");
|
|
132
|
+
assert.ok(result.content.includes("rooms-only"), "Should list the rooms-only listener");
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
await store.shutdown();
|
|
136
|
+
}
|
|
104
137
|
});
|
|
105
138
|
void test("mesh_interfaces action returns available network adapters", async () => {
|
|
106
139
|
const store = new MeshStore(TEST_PORT);
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
140
|
+
wireTestTransport(store);
|
|
141
|
+
try {
|
|
142
|
+
await store.init();
|
|
143
|
+
const agent = await store.registerAgent({
|
|
144
|
+
name: "test-agent",
|
|
145
|
+
harness: "test",
|
|
146
|
+
cwd: "/test",
|
|
147
|
+
pid: process.pid,
|
|
148
|
+
visibility: "visible",
|
|
149
|
+
tags: [],
|
|
150
|
+
});
|
|
151
|
+
const tool = new CommsTool(store);
|
|
152
|
+
const result = await tool.handle({ agentId: agent.id, harness: "test", cwd: "/test", pid: process.pid }, { action: "mesh_interfaces" });
|
|
153
|
+
assert.ok(!result.isError, "Should not be an error");
|
|
154
|
+
assert.ok(result.content.includes("lo") || result.content.includes("IPv4"), "Should list network interfaces");
|
|
155
|
+
}
|
|
156
|
+
finally {
|
|
157
|
+
await store.shutdown();
|
|
158
|
+
}
|
|
121
159
|
});
|
|
122
160
|
void test("mesh_unlisten removes listener via CommsTool", async () => {
|
|
123
161
|
const store = new MeshStore(TEST_PORT);
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
162
|
+
wireTestTransport(store);
|
|
163
|
+
try {
|
|
164
|
+
await store.init();
|
|
165
|
+
const agent = await store.registerAgent({
|
|
166
|
+
name: "test-agent",
|
|
167
|
+
harness: "test",
|
|
168
|
+
cwd: "/test",
|
|
169
|
+
pid: process.pid,
|
|
170
|
+
visibility: "visible",
|
|
171
|
+
tags: [],
|
|
172
|
+
});
|
|
173
|
+
const listenerId = await store.addListener("127.0.0.1", 0, "observe");
|
|
174
|
+
const tool = new CommsTool(store);
|
|
175
|
+
const result = await tool.handle({ agentId: agent.id, harness: "test", cwd: "/test", pid: process.pid }, { action: "mesh_unlisten", id: listenerId });
|
|
176
|
+
assert.ok(!result.isError, "Should not be an error");
|
|
177
|
+
assert.ok(result.content.includes("removed"), "Should confirm removal");
|
|
178
|
+
const listeners = store.listListeners();
|
|
179
|
+
assert.equal(listeners.length, 1, "Should be back to one listener");
|
|
180
|
+
}
|
|
181
|
+
finally {
|
|
182
|
+
await store.shutdown();
|
|
183
|
+
}
|
|
141
184
|
});
|
|
142
185
|
void test("mesh_listen adds listener via CommsTool", async () => {
|
|
143
186
|
const store = new MeshStore(TEST_PORT);
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
187
|
+
wireTestTransport(store);
|
|
188
|
+
try {
|
|
189
|
+
await store.init();
|
|
190
|
+
const agent = await store.registerAgent({
|
|
191
|
+
name: "test-agent",
|
|
192
|
+
harness: "test",
|
|
193
|
+
cwd: "/test",
|
|
194
|
+
pid: process.pid,
|
|
195
|
+
visibility: "visible",
|
|
196
|
+
tags: [],
|
|
197
|
+
});
|
|
198
|
+
const tool = new CommsTool(store);
|
|
199
|
+
const result = await tool.handle({ agentId: agent.id, harness: "test", cwd: "/test", pid: process.pid }, { action: "mesh_listen", host: "127.0.0.1", policy: "observe" });
|
|
200
|
+
assert.ok(!result.isError, "Should not be an error");
|
|
201
|
+
assert.ok(result.content.includes("Listener added"), "Should confirm addition");
|
|
202
|
+
const listeners = store.listListeners();
|
|
203
|
+
assert.equal(listeners.length, 2, "Should have two listeners");
|
|
204
|
+
}
|
|
205
|
+
finally {
|
|
206
|
+
await store.shutdown();
|
|
207
|
+
}
|
|
160
208
|
});
|
|
161
209
|
void test("buildAction parses mesh_listen with host and policy", () => {
|
|
162
210
|
const action = buildAction({
|
|
@@ -192,48 +240,56 @@ describe("listener policy", () => {
|
|
|
192
240
|
});
|
|
193
241
|
void test("connections via non-default listener carry policy in handle", async () => {
|
|
194
242
|
const store = new MeshStore(TEST_PORT);
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
243
|
+
wireTestTransport(store);
|
|
244
|
+
try {
|
|
245
|
+
await store.init();
|
|
246
|
+
// Add an observe listener
|
|
247
|
+
const listenerId = await store.addListener("127.0.0.1", 0, "observe");
|
|
248
|
+
const listeners = store.listListeners();
|
|
249
|
+
const observeListener = listeners.find((l) => l.id === listenerId);
|
|
250
|
+
assert.ok(observeListener, "Should find the observe listener");
|
|
251
|
+
// Connect to the observe listener and send an introduce message over a real TLS client connection -- the listener is a TlsTransport server, which requires an actual TLS handshake before any application bytes are readable, and separately verifies the introduce message's claimed peerId against the client certificate's own fingerprint, so the probe needs a real generated identity, not an arbitrary string. The transport should tag the connection handle with policy="observe"
|
|
252
|
+
//
|
|
253
|
+
// We intercept at the transport.events level because store.events is a getter that creates a fresh object each call.
|
|
254
|
+
const probeIdentity = generateIdentity();
|
|
255
|
+
const receivedHandle = await new Promise((resolve) => {
|
|
256
|
+
const timeout = setTimeout(() => resolve(null), 3000);
|
|
257
|
+
const transport = store.transport;
|
|
258
|
+
// Captured by value (bound, so eslint doesn't flag an unsafely-detached method reference), not by a closure that re-reads transport.events.onIntroduction at call time -- a lazy re-lookup would resolve to the wrapper itself once the assignment below replaces it, recursing forever on the very first introduction.
|
|
259
|
+
const originalOnIntroduction = transport.events.onIntroduction.bind(transport.events);
|
|
260
|
+
transport.events.onIntroduction = (handle, msg) => {
|
|
261
|
+
// Capture the handle's policy
|
|
262
|
+
resolve({ policy: handle.policy });
|
|
263
|
+
clearTimeout(timeout);
|
|
264
|
+
// Call the original handler
|
|
265
|
+
originalOnIntroduction(handle, msg);
|
|
266
|
+
};
|
|
267
|
+
const socket = tls.connect({
|
|
268
|
+
port: observeListener.port,
|
|
269
|
+
host: "127.0.0.1",
|
|
270
|
+
key: probeIdentity.privateKey,
|
|
271
|
+
cert: probeIdentity.certificate,
|
|
272
|
+
rejectUnauthorized: false,
|
|
273
|
+
});
|
|
274
|
+
socket.on("secureConnect", () => {
|
|
275
|
+
socket.write(JSON.stringify({
|
|
276
|
+
method: "introduce",
|
|
277
|
+
peerId: probeIdentity.fingerprint,
|
|
278
|
+
dataPort: 19999,
|
|
279
|
+
}) + "\n");
|
|
280
|
+
});
|
|
281
|
+
socket.on("error", () => {
|
|
282
|
+
socket.destroy();
|
|
283
|
+
clearTimeout(timeout);
|
|
284
|
+
resolve(null);
|
|
285
|
+
});
|
|
227
286
|
});
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
}
|
|
234
|
-
assert.ok(receivedHandle, "Should receive an introduction");
|
|
235
|
-
assert.equal(receivedHandle.policy, "observe", "Handle should carry observe policy");
|
|
236
|
-
await store.shutdown();
|
|
287
|
+
assert.ok(receivedHandle, "Should receive an introduction");
|
|
288
|
+
assert.equal(receivedHandle.policy, "observe", "Handle should carry observe policy");
|
|
289
|
+
}
|
|
290
|
+
finally {
|
|
291
|
+
await store.shutdown();
|
|
292
|
+
}
|
|
237
293
|
});
|
|
238
294
|
});
|
|
239
295
|
//# sourceMappingURL=listener-policy.integration.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listener-policy.integration.test.js","sourceRoot":"","sources":["../../src/test/listener-policy.integration.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"listener-policy.integration.test.js","sourceRoot":"","sources":["../../src/test/listener-policy.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,9 +8,11 @@ import { MeshStore } from "../core/mesh-store.js";
|
|
|
8
8
|
import { CommsTool } from "../core/tool.js";
|
|
9
9
|
import { buildAction } from "../core/bridge.js";
|
|
10
10
|
import * as assert from "node:assert/strict";
|
|
11
|
+
import { wireTestTransport } from "./test-transport.js";
|
|
11
12
|
const E2E_PORT = 19878;
|
|
12
13
|
async function createStore(name, harness) {
|
|
13
14
|
const store = new MeshStore(E2E_PORT);
|
|
15
|
+
wireTestTransport(store);
|
|
14
16
|
const deliveries = [];
|
|
15
17
|
store.onDelivery = (_agentId, event) => {
|
|
16
18
|
deliveries.push(event);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh-e2e.integration.test.js","sourceRoot":"","sources":["../../src/test/mesh-e2e.integration.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,KAAK,MAAM,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mesh-e2e.integration.test.js","sourceRoot":"","sources":["../../src/test/mesh-e2e.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Multi-process smoke test for MeshStore
|
|
2
|
+
* Multi-process smoke test for the MeshStore mesh.
|
|
3
3
|
*
|
|
4
|
-
* Spawns two separate Node.js processes running MeshStore instances,
|
|
5
|
-
* verifies they discover each other via the coordinator, exchange
|
|
6
|
-
* messages, and receive push delivery.
|
|
4
|
+
* Spawns two separate Node.js processes running MeshStore instances over TlsTransport, verifies they discover each other via the coordinator, exchange messages, and receive push delivery.
|
|
7
5
|
*/
|
|
8
6
|
export {};
|
|
9
7
|
//# sourceMappingURL=mesh-smoke.integration.test.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mesh-smoke.integration.test.d.ts","sourceRoot":"","sources":["../../src/test/mesh-smoke.integration.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mesh-smoke.integration.test.d.ts","sourceRoot":"","sources":["../../src/test/mesh-smoke.integration.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Multi-process smoke test for MeshStore
|
|
2
|
+
* Multi-process smoke test for the MeshStore mesh.
|
|
3
3
|
*
|
|
4
|
-
* Spawns two separate Node.js processes running MeshStore instances,
|
|
5
|
-
* verifies they discover each other via the coordinator, exchange
|
|
6
|
-
* messages, and receive push delivery.
|
|
4
|
+
* Spawns two separate Node.js processes running MeshStore instances over TlsTransport, verifies they discover each other via the coordinator, exchange messages, and receive push delivery.
|
|
7
5
|
*/
|
|
8
6
|
import * as assert from "node:assert/strict";
|
|
9
7
|
import * as child_process from "node:child_process";
|
|
10
8
|
import * as net from "node:net";
|
|
11
9
|
const SMOKE_PORT = 19877;
|
|
12
10
|
const SMOKE_HOST = "127.0.0.1";
|
|
11
|
+
// A hung child (a mesh operation that never resolves) must not hang this process indefinitely -- the child is killed and the promise rejects with a clear reason instead of Promise.all([...]) waiting forever.
|
|
12
|
+
const PEER_EXIT_TIMEOUT_MS = 15_000;
|
|
13
13
|
// -----------------------------------------------------------------------
|
|
14
14
|
// Child process peer
|
|
15
15
|
// -----------------------------------------------------------------------
|
|
@@ -39,11 +39,29 @@ function spawnPeer(name, actions) {
|
|
|
39
39
|
});
|
|
40
40
|
const exit = new Promise((resolve, reject) => {
|
|
41
41
|
let stderr = "";
|
|
42
|
+
let settled = false;
|
|
43
|
+
const timer = setTimeout(() => {
|
|
44
|
+
if (settled)
|
|
45
|
+
return;
|
|
46
|
+
settled = true;
|
|
47
|
+
child.kill();
|
|
48
|
+
reject(new Error(`${name} did not exit within ${String(PEER_EXIT_TIMEOUT_MS)}ms:\n${stderr}`));
|
|
49
|
+
}, PEER_EXIT_TIMEOUT_MS);
|
|
42
50
|
child.stderr.on("data", (data) => {
|
|
43
51
|
stderr += data.toString();
|
|
44
52
|
});
|
|
45
|
-
child.on("error",
|
|
53
|
+
child.on("error", (err) => {
|
|
54
|
+
if (settled)
|
|
55
|
+
return;
|
|
56
|
+
settled = true;
|
|
57
|
+
clearTimeout(timer);
|
|
58
|
+
reject(err);
|
|
59
|
+
});
|
|
46
60
|
child.on("exit", (code) => {
|
|
61
|
+
if (settled)
|
|
62
|
+
return;
|
|
63
|
+
settled = true;
|
|
64
|
+
clearTimeout(timer);
|
|
47
65
|
if (buffer.trim()) {
|
|
48
66
|
try {
|
|
49
67
|
const parsed = JSON.parse(buffer);
|
|
@@ -73,9 +91,14 @@ function buildScript(name, actions) {
|
|
|
73
91
|
return [
|
|
74
92
|
`const { MeshStore } = require("./dist/core/mesh-store.js");`,
|
|
75
93
|
`const { CommsTool } = require("./dist/core/tool.js");`,
|
|
94
|
+
`const { TlsTransport } = require("./dist/core/tls-transport.js");`,
|
|
95
|
+
`const { generateIdentity } = require("./dist/core/identity.js");`,
|
|
76
96
|
`function log(msg) { process.stdout.write(JSON.stringify(msg) + "\\n"); }`,
|
|
77
97
|
`(async () => {`,
|
|
78
98
|
` const store = new MeshStore(${String(SMOKE_PORT)});`,
|
|
99
|
+
` const identity = generateIdentity();`,
|
|
100
|
+
` store.peerId = identity.fingerprint;`,
|
|
101
|
+
` store.setTransport(new TlsTransport(store.events, identity));`,
|
|
79
102
|
` const tool = new CommsTool(store);`,
|
|
80
103
|
` const deliveries = [];`,
|
|
81
104
|
` store.onDelivery = (_id, event) => {`,
|