agent-comms 1.32.1 → 1.33.1

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 (75) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/bridges/claude-code/channel.d.ts.map +1 -1
  5. package/dist/bridges/claude-code/channel.js +4 -10
  6. package/dist/bridges/claude-code/channel.js.map +1 -1
  7. package/dist/bridges/codex/tool.d.ts.map +1 -1
  8. package/dist/bridges/codex/tool.js +3 -11
  9. package/dist/bridges/codex/tool.js.map +1 -1
  10. package/dist/bridges/opencode/plugin.d.ts.map +1 -1
  11. package/dist/bridges/opencode/plugin.js +3 -10
  12. package/dist/bridges/opencode/plugin.js.map +1 -1
  13. package/dist/bridges/pi/index.d.ts.map +1 -1
  14. package/dist/bridges/pi/index.js +4 -10
  15. package/dist/bridges/pi/index.js.map +1 -1
  16. package/dist/bridges/user/controller.d.ts.map +1 -1
  17. package/dist/bridges/user/controller.js +6 -10
  18. package/dist/bridges/user/controller.js.map +1 -1
  19. package/dist/core/mesh-store.d.ts +2 -2
  20. package/dist/core/mesh-store.d.ts.map +1 -1
  21. package/dist/core/mesh-store.js +2 -2
  22. package/dist/core/mesh-store.js.map +1 -1
  23. package/dist/core/wire-mesh-transport.d.ts +1 -1
  24. package/dist/core/wire-mesh-transport.d.ts.map +1 -1
  25. package/dist/core/wire-mesh-transport.js +11 -9
  26. package/dist/core/wire-mesh-transport.js.map +1 -1
  27. package/dist/core/wire-protocol.d.ts +1 -12
  28. package/dist/core/wire-protocol.d.ts.map +1 -1
  29. package/dist/core/wire-protocol.js +1 -1
  30. package/dist/core/wire-protocol.js.map +1 -1
  31. package/dist/test/approval.integration.test.js +63 -13
  32. package/dist/test/approval.integration.test.js.map +1 -1
  33. package/dist/test/become-coordinator-actual-port.integration.test.d.ts +2 -2
  34. package/dist/test/become-coordinator-actual-port.integration.test.js +38 -15
  35. package/dist/test/become-coordinator-actual-port.integration.test.js.map +1 -1
  36. package/dist/test/bridge-mesh.test.js +1 -1
  37. package/dist/test/bridge-mesh.test.js.map +1 -1
  38. package/dist/test/broadcast-window.integration.test.d.ts +2 -2
  39. package/dist/test/broadcast-window.integration.test.js +7 -6
  40. package/dist/test/broadcast-window.integration.test.js.map +1 -1
  41. package/dist/test/downtime-replay.integration.test.js +6 -5
  42. package/dist/test/downtime-replay.integration.test.js.map +1 -1
  43. package/dist/test/identity-restart.integration.test.d.ts +1 -1
  44. package/dist/test/identity-restart.integration.test.js +7 -6
  45. package/dist/test/identity-restart.integration.test.js.map +1 -1
  46. package/dist/test/listener-policy.integration.test.js +45 -44
  47. package/dist/test/listener-policy.integration.test.js.map +1 -1
  48. package/dist/test/mesh-smoke.runner.d.ts +1 -1
  49. package/dist/test/mesh-smoke.runner.js +5 -4
  50. package/dist/test/mesh-smoke.runner.js.map +1 -1
  51. package/dist/test/test-transport.d.ts +1 -5
  52. package/dist/test/test-transport.d.ts.map +1 -1
  53. package/dist/test/test-transport.js +3 -15
  54. package/dist/test/test-transport.js.map +1 -1
  55. package/package.json +1 -1
  56. package/dist/core/tls-transport.d.ts +0 -86
  57. package/dist/core/tls-transport.d.ts.map +0 -1
  58. package/dist/core/tls-transport.js +0 -758
  59. package/dist/core/tls-transport.js.map +0 -1
  60. package/dist/test/peer-id-verification.integration.test.d.ts +0 -7
  61. package/dist/test/peer-id-verification.integration.test.d.ts.map +0 -1
  62. package/dist/test/peer-id-verification.integration.test.js +0 -176
  63. package/dist/test/peer-id-verification.integration.test.js.map +0 -1
  64. package/dist/test/tls-transport.integration.test.d.ts +0 -9
  65. package/dist/test/tls-transport.integration.test.d.ts.map +0 -1
  66. package/dist/test/tls-transport.integration.test.js +0 -160
  67. package/dist/test/tls-transport.integration.test.js.map +0 -1
  68. package/dist/test/wire-mesh-transport-approval.integration.test.d.ts +0 -5
  69. package/dist/test/wire-mesh-transport-approval.integration.test.d.ts.map +0 -1
  70. package/dist/test/wire-mesh-transport-approval.integration.test.js +0 -214
  71. package/dist/test/wire-mesh-transport-approval.integration.test.js.map +0 -1
  72. package/dist/test/wire-mesh-transport.integration.test.d.ts +0 -5
  73. package/dist/test/wire-mesh-transport.integration.test.d.ts.map +0 -1
  74. package/dist/test/wire-mesh-transport.integration.test.js +0 -89
  75. package/dist/test/wire-mesh-transport.integration.test.js.map +0 -1
@@ -8,9 +8,14 @@
8
8
  import * as net from "node:net";
9
9
  import * as assert from "node:assert/strict";
10
10
  import { test, describe } from "node:test";
11
+ import { createTlsTransport } from "@exadev/wire-mesh-core/adapters/tls-transport";
12
+ import { acceptMeshSession } from "@exadev/wire-mesh-core/domain/mesh-session";
11
13
  import { MeshStore } from "../core/mesh-store.js";
12
14
  import { CommsTool } from "../core/tool.js";
13
15
  import { buildAction } from "../core/bridge.js";
16
+ import { generateIdentity } from "../core/identity.js";
17
+ import { toIdentityPort } from "../core/wire-mesh-identity.js";
18
+ import { DOMAIN, FRAME_SCOPE, buildCommand, } from "../core/wire-mesh-transport.js";
14
19
  import { waitFor, wireTestTransport } from "./test-transport.js";
15
20
  /** Find a free port on localhost by binding to port 0. */
16
21
  function findFreePort() {
@@ -24,13 +29,9 @@ function findFreePort() {
24
29
  server.on("error", reject);
25
30
  });
26
31
  }
27
- /** Unique port counter to avoid reusing ports across sequential tests. */
28
- let portOffset = 0;
29
- /** Find a free port with a unique offset to avoid conflicts. */
30
- async function uniquePort() {
31
- portOffset += 10;
32
- const base = await findFreePort();
33
- return base + portOffset;
32
+ /** Find a free port for a single test's use. An alias for findFreePort(): asking the OS for a fresh ephemeral port each call already guarantees distinctness from any other currently-bound port, so no arithmetic offset is layered on top -- a prior +offset scheme could push an already-high OS-assigned port past 65535 and fail with ERR_SOCKET_BAD_PORT. */
33
+ function uniquePort() {
34
+ return findFreePort();
34
35
  }
35
36
  function sleep(ms) {
36
37
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -38,7 +39,7 @@ function sleep(ms) {
38
39
  describe("connection approval", () => {
39
40
  void test("coordinator receives connection_request from connecting peer", async () => {
40
41
  const portA = await uniquePort();
41
- const portB = portA + 100;
42
+ const portB = await uniquePort();
42
43
  // Set up coordinator (store A)
43
44
  const storeA = new MeshStore(portA);
44
45
  wireTestTransport(storeA);
@@ -90,7 +91,7 @@ describe("connection approval", () => {
90
91
  });
91
92
  void test("accept establishes the peer connection", async () => {
92
93
  const portA = await uniquePort();
93
- const portB = portA + 100;
94
+ const portB = await uniquePort();
94
95
  const storeA = new MeshStore(portA);
95
96
  wireTestTransport(storeA);
96
97
  const storeB = new MeshStore(portB);
@@ -142,7 +143,7 @@ describe("connection approval", () => {
142
143
  });
143
144
  void test("reject closes with reason", async () => {
144
145
  const portA = await uniquePort();
145
- const portB = portA + 100;
146
+ const portB = await uniquePort();
146
147
  const storeA = new MeshStore(portA);
147
148
  wireTestTransport(storeA);
148
149
  const storeB = new MeshStore(portB);
@@ -193,7 +194,7 @@ describe("connection approval", () => {
193
194
  });
194
195
  void test("mesh_pending lists pending connections", async () => {
195
196
  const portA = await uniquePort();
196
- const portB = portA + 100;
197
+ const portB = await uniquePort();
197
198
  const storeA = new MeshStore(portA);
198
199
  wireTestTransport(storeA);
199
200
  const storeB = new MeshStore(portB);
@@ -236,6 +237,8 @@ describe("connection approval", () => {
236
237
  await storeA.acceptConnection(connectionId);
237
238
  // No more pending connections after acceptance
238
239
  await waitFor(() => storeA.listPendingConnections().length === 0, "pending connection is cleared after accept");
240
+ // connectToRemote (storeB) and acceptConnection's own introduction handling (storeA) both continue asynchronously after this point (state_sync's own connectToPeer round trip) -- shutting down before that settles races storeB's still-in-flight session setup against its own teardown, leaving a session that gets tracked into an already-shut-down transport and never closed. Wait for real convergence first, the same way "accept establishes the peer connection" above already does.
241
+ await waitFor(() => storeB.serialise().agents[storeA.peerId] !== undefined, "connector sees the coordinator agent");
239
242
  }
240
243
  finally {
241
244
  await storeB.shutdown();
@@ -244,7 +247,7 @@ describe("connection approval", () => {
244
247
  });
245
248
  void test("tool handles mesh_connect/mesh_accept/mesh_reject/mesh_pending actions", async () => {
246
249
  const portA = await uniquePort();
247
- const portB = portA + 100;
250
+ const portB = await uniquePort();
248
251
  const storeA = new MeshStore(portA);
249
252
  wireTestTransport(storeA);
250
253
  const storeB = new MeshStore(portB);
@@ -336,7 +339,7 @@ describe("connection approval", () => {
336
339
  });
337
340
  void test("tool mesh_reject returns error message", async () => {
338
341
  const portA = await uniquePort();
339
- const portB = portA + 100;
342
+ const portB = await uniquePort();
340
343
  const storeA = new MeshStore(portA);
341
344
  wireTestTransport(storeA);
342
345
  const storeB = new MeshStore(portB);
@@ -392,5 +395,52 @@ describe("connection approval", () => {
392
395
  await storeA.shutdown();
393
396
  }
394
397
  });
398
+ void test("a message other than introduce/connect_request from an unapproved connection is refused, not routed", async () => {
399
+ const portA = await uniquePort();
400
+ const storeA = new MeshStore(portA);
401
+ wireTestTransport(storeA);
402
+ try {
403
+ await storeA.init();
404
+ await storeA.registerAgent({
405
+ name: "coordinator",
406
+ harness: "test",
407
+ cwd: "/test/a",
408
+ pid: process.pid,
409
+ visibility: "visible",
410
+ tags: [],
411
+ });
412
+ // A hostile client that completes a TLS handshake (proving only which key it holds, not that a human approved it) and skips connect_request entirely, going straight for a forged state_update.
413
+ const attackerIdentity = generateIdentity();
414
+ const attackerTransport = createTlsTransport({
415
+ certificatePem: attackerIdentity.certificate,
416
+ privateKeyPem: attackerIdentity.privateKey,
417
+ });
418
+ const connection = await attackerTransport.connect(`127.0.0.1:${String(portA)}`);
419
+ const attackerIdentityPort = await toIdentityPort(attackerIdentity);
420
+ const session = await acceptMeshSession(connection, attackerIdentityPort, [DOMAIN]);
421
+ const forgedAgent = {
422
+ id: "forged-attacker-agent",
423
+ version: 1,
424
+ name: "forged",
425
+ harness: "test",
426
+ cwd: "/forged",
427
+ pid: 1,
428
+ startedAt: new Date().toISOString(),
429
+ visibility: "visible",
430
+ status: "active",
431
+ tags: [],
432
+ subscribedRooms: [],
433
+ };
434
+ const outcome = await session.sendManageRequest(buildCommand({
435
+ method: "state_update",
436
+ patch: { type: "agent_upsert", agent: forgedAgent },
437
+ }), FRAME_SCOPE);
438
+ assert.equal(outcome.result, "error", "an unapproved connection's message must be refused, not routed");
439
+ assert.equal(storeA.serialise().agents[forgedAgent.id], undefined, "a forged state_update from an unapproved connection must never reach mesh-store's own state");
440
+ }
441
+ finally {
442
+ await storeA.shutdown();
443
+ }
444
+ });
395
445
  });
396
446
  //# sourceMappingURL=approval.integration.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"approval.integration.test.js","sourceRoot":"","sources":["../../src/test/approval.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"approval.integration.test.js","sourceRoot":"","sources":["../../src/test/approval.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * becomeCoordinator actual-port regression test (#42) — becomeCoordinator(host, 0) must report the OS-assigned port it actually bound, not the literal 0 it was called with, on every transport whose listener bookkeeping goes through listListeners().
2
+ * becomeCoordinator/addListener actual-port regression test (#42) — becomeCoordinator(host, 0) and addListener(host, 0, policy) must report the OS-assigned port they actually bound, not the literal 0 they were called with, on every transport whose listener bookkeeping goes through listListeners().
3
3
  *
4
- * Run: node dist/test/become-coordinator-actual-port.integration.test.js [test-name] With no argument, every scenario runs in order.
4
+ * Run directly with a specific scenario name as an argument, or with none to run every scenario in order.
5
5
  */
6
6
  export {};
7
7
  //# sourceMappingURL=become-coordinator-actual-port.integration.test.d.ts.map
@@ -1,12 +1,14 @@
1
1
  /**
2
- * becomeCoordinator actual-port regression test (#42) — becomeCoordinator(host, 0) must report the OS-assigned port it actually bound, not the literal 0 it was called with, on every transport whose listener bookkeeping goes through listListeners().
2
+ * becomeCoordinator/addListener actual-port regression test (#42) — becomeCoordinator(host, 0) and addListener(host, 0, policy) must report the OS-assigned port they actually bound, not the literal 0 they were called with, on every transport whose listener bookkeeping goes through listListeners().
3
3
  *
4
- * Run: node dist/test/become-coordinator-actual-port.integration.test.js [test-name] With no argument, every scenario runs in order.
4
+ * Run directly with a specific scenario name as an argument, or with none to run every scenario in order.
5
5
  */
6
- import * as tls from "node:tls";
7
6
  import * as assert from "node:assert/strict";
8
- import { TlsTransport } from "../core/tls-transport.js";
7
+ import { createTlsTransport } from "@exadev/wire-mesh-core/adapters/tls-transport";
8
+ import { acceptMeshSession } from "@exadev/wire-mesh-core/domain/mesh-session";
9
+ import { WireMeshTransport, DOMAIN } from "../core/wire-mesh-transport.js";
9
10
  import { generateIdentity } from "../core/identity.js";
11
+ import { toIdentityPort } from "../core/wire-mesh-identity.js";
10
12
  function noopEvents() {
11
13
  return {
12
14
  onMessage: () => undefined,
@@ -19,21 +21,41 @@ function noopEvents() {
19
21
  onBecomeCoordinator: () => undefined,
20
22
  };
21
23
  }
22
- async function testTlsReportsActualPort() {
24
+ /** Connects a real client session to the given port to confirm it's genuinely live, not merely non-zero. */
25
+ async function connectAndClose(port) {
26
+ const clientIdentity = generateIdentity();
27
+ const clientTransport = createTlsTransport({
28
+ certificatePem: clientIdentity.certificate,
29
+ privateKeyPem: clientIdentity.privateKey,
30
+ });
31
+ const connection = await clientTransport.connect(`127.0.0.1:${String(port)}`);
32
+ const clientIdentityPort = await toIdentityPort(clientIdentity);
33
+ const session = await acceptMeshSession(connection, clientIdentityPort, [
34
+ DOMAIN,
35
+ ]);
36
+ await session.close();
37
+ }
38
+ async function testBecomeCoordinatorReportsActualPort() {
23
39
  const identity = generateIdentity();
24
- const transport = new TlsTransport(noopEvents(), identity);
40
+ const transport = new WireMeshTransport(noopEvents(), identity);
25
41
  await transport.becomeCoordinator("127.0.0.1", 0);
26
42
  const [listener] = transport.listListeners();
27
43
  assert.ok(listener);
28
44
  assert.notStrictEqual(listener.port, 0);
29
- await new Promise((resolve, reject) => {
30
- const socket = tls.connect({ host: "127.0.0.1", port: listener.port, rejectUnauthorized: false }, () => {
31
- socket.destroy();
32
- resolve();
33
- });
34
- socket.once("error", reject);
35
- });
36
- console.log(` ✓ TlsTransport reported and bound the same port (${listener.port})`);
45
+ await connectAndClose(listener.port);
46
+ console.log(` ✓ becomeCoordinator reported and bound the same port (${listener.port})`);
47
+ await transport.shutdown();
48
+ }
49
+ async function testAddListenerReportsActualPort() {
50
+ const identity = generateIdentity();
51
+ const transport = new WireMeshTransport(noopEvents(), identity);
52
+ await transport.becomeCoordinator("127.0.0.1", 0);
53
+ const id = await transport.addListener("127.0.0.1", 0, "observe");
54
+ const added = transport.listListeners().find((l) => l.id === id);
55
+ assert.ok(added);
56
+ assert.notStrictEqual(added.port, 0);
57
+ await connectAndClose(added.port);
58
+ console.log(` ✓ addListener reported and bound the same port (${added.port})`);
37
59
  await transport.shutdown();
38
60
  }
39
61
  // ---------------------------------------------------------------------------
@@ -41,7 +63,8 @@ async function testTlsReportsActualPort() {
41
63
  // ---------------------------------------------------------------------------
42
64
  const testName = process.argv[2];
43
65
  const tests = {
44
- "tls-reports-actual-port": testTlsReportsActualPort,
66
+ "become-coordinator-reports-actual-port": testBecomeCoordinatorReportsActualPort,
67
+ "add-listener-reports-actual-port": testAddListenerReportsActualPort,
45
68
  };
46
69
  const selected = testName === undefined
47
70
  ? Object.entries(tests)
@@ -1 +1 @@
1
- {"version":3,"file":"become-coordinator-actual-port.integration.test.js","sourceRoot":"","sources":["../../src/test/become-coordinator-actual-port.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"become-coordinator-actual-port.integration.test.js","sourceRoot":"","sources":["../../src/test/become-coordinator-actual-port.integration.test.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ void test("createBridgeMesh sets peerId to deviceIdToHex(identity.deviceId), not
26
26
  await store.shutdown();
27
27
  }
28
28
  });
29
- void test("createBridgeMesh wires a WireMeshTransport, not TlsTransport", async () => {
29
+ void test("createBridgeMesh wires a WireMeshTransport", async () => {
30
30
  const slot = tempSlot("test-harness");
31
31
  const { store } = createBridgeMesh(slot);
32
32
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-mesh.test.js","sourceRoot":"","sources":["../../src/test/bridge-mesh.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge-mesh.test.js","sourceRoot":"","sources":["../../src/test/bridge-mesh.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Integration test for issue #23: state patches broadcast before the TLS data connections are established must not be silently lost.
2
+ * Integration test for issue #23: state patches broadcast before the mesh data connections are established must not be silently lost.
3
3
  *
4
- * Every production bridge calls registerAgent() immediately after store.init() returns, while the fire-and-forget peer dials are still in flight. Broadcasts landing in that window used to have nowhere to go, so the joining peer stayed invisible in established peers' list_agents until some later patch happened to arrive. The transports now queue broadcasts for dialling peers and flush them when the connection registers.
4
+ * Every production bridge calls registerAgent() immediately after store.init() returns, while the fire-and-forget peer dials are still in flight. Broadcasts landing in that window used to have nowhere to go, so the joining peer stayed invisible in established peers' list_agents until some later patch happened to arrive. The transport now queues broadcasts for dialling peers and flushes them when the connection registers.
5
5
  */
6
6
  export {};
7
7
  //# sourceMappingURL=broadcast-window.integration.test.d.ts.map
@@ -1,19 +1,20 @@
1
1
  /**
2
- * Integration test for issue #23: state patches broadcast before the TLS data connections are established must not be silently lost.
2
+ * Integration test for issue #23: state patches broadcast before the mesh data connections are established must not be silently lost.
3
3
  *
4
- * Every production bridge calls registerAgent() immediately after store.init() returns, while the fire-and-forget peer dials are still in flight. Broadcasts landing in that window used to have nowhere to go, so the joining peer stayed invisible in established peers' list_agents until some later patch happened to arrive. The transports now queue broadcasts for dialling peers and flush them when the connection registers.
4
+ * Every production bridge calls registerAgent() immediately after store.init() returns, while the fire-and-forget peer dials are still in flight. Broadcasts landing in that window used to have nowhere to go, so the joining peer stayed invisible in established peers' list_agents until some later patch happened to arrive. The transport now queues broadcasts for dialling peers and flushes them when the connection registers.
5
5
  */
6
6
  import * as assert from "node:assert/strict";
7
+ import { deviceIdToHex } from "@exadev/wire-mesh-core/domain/device-id";
7
8
  import { MeshStore } from "../core/mesh-store.js";
8
- import { TlsTransport } from "../core/tls-transport.js";
9
+ import { WireMeshTransport } from "../core/wire-mesh-transport.js";
9
10
  import { generateIdentity } from "../core/identity.js";
10
11
  const TEST_PORT = 19890;
11
12
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
12
- /** A peer wired like a real bridge: TLS transport, fingerprint peer ID. */
13
+ /** A peer wired like a real bridge: WireMeshTransport, device-id peer ID. */
13
14
  function makePeer(identity) {
14
15
  const store = new MeshStore(TEST_PORT);
15
- store.peerId = identity.fingerprint;
16
- store.setTransport(new TlsTransport(store.events, identity));
16
+ store.peerId = deviceIdToHex(Uint8Array.from(identity.deviceId));
17
+ store.setTransport(new WireMeshTransport(store.events, identity));
17
18
  return store;
18
19
  }
19
20
  /** Poll until the predicate holds, or fail with the message. */
@@ -1 +1 @@
1
- {"version":3,"file":"broadcast-window.integration.test.js","sourceRoot":"","sources":["../../src/test/broadcast-window.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broadcast-window.integration.test.js","sourceRoot":"","sources":["../../src/test/broadcast-window.integration.test.ts"],"names":[],"mappings":"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"}
@@ -7,17 +7,18 @@ import * as assert from "node:assert/strict";
7
7
  import * as fs from "node:fs";
8
8
  import { tmpdir } from "node:os";
9
9
  import path from "node:path";
10
+ import { deviceIdToHex } from "@exadev/wire-mesh-core/domain/device-id";
10
11
  import { MeshStore } from "../core/mesh-store.js";
11
- import { TlsTransport } from "../core/tls-transport.js";
12
+ import { WireMeshTransport } from "../core/wire-mesh-transport.js";
12
13
  import { generateIdentity } from "../core/identity.js";
13
14
  import { loadOrCreateIdentity, releaseIdentityLock, } from "../core/identity-store.js";
14
15
  const TEST_PORT = 19896;
15
16
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
16
- /** A peer wired like a real bridge: TLS transport, fingerprint peer ID. */
17
+ /** A peer wired like a real bridge: WireMeshTransport, device-id peer ID. */
17
18
  function makePeer(identity) {
18
19
  const store = new MeshStore(TEST_PORT);
19
- store.peerId = identity.fingerprint;
20
- store.setTransport(new TlsTransport(store.events, identity));
20
+ store.peerId = deviceIdToHex(Uint8Array.from(identity.deviceId));
21
+ store.setTransport(new WireMeshTransport(store.events, identity));
21
22
  const deliveries = [];
22
23
  return { store, deliveries };
23
24
  }
@@ -82,7 +83,7 @@ async function main() {
82
83
  await sleep(200);
83
84
  // B restarts in the same slot: same identity, same agent ID.
84
85
  const identityB2 = loadOrCreateIdentity(slot);
85
- assert.equal(identityB2.fingerprint, identityB.fingerprint);
86
+ assert.equal(deviceIdToHex(Uint8Array.from(identityB2.deviceId)), deviceIdToHex(Uint8Array.from(identityB.deviceId)));
86
87
  const b2 = makePeer(identityB2);
87
88
  b2.store.onDelivery = (_id, ev) => {
88
89
  b2.deliveries.push(ev);
@@ -1 +1 @@
1
- {"version":3,"file":"downtime-replay.integration.test.js","sourceRoot":"","sources":["../../src/test/downtime-replay.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"downtime-replay.integration.test.js","sourceRoot":"","sources":["../../src/test/downtime-replay.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Integration test for issue #14: a bridge restarted with a persisted identity must keep its agent ID, room membership, and push delivery.
3
3
  *
4
- * Before persistent identities, every restart generated a fresh TLS certificate, so the fingerprint-derived agent ID changed and peers kept targeting the old ID: their messages queued for an agent whose local handler (gated on agentId === peerId) never fired again.
4
+ * Before persistent identities, every restart generated a fresh keypair, so the device-id-derived agent ID changed and peers kept targeting the old ID: their messages queued for an agent whose local handler (gated on agentId === peerId) never fired again.
5
5
  */
6
6
  export {};
7
7
  //# sourceMappingURL=identity-restart.integration.test.d.ts.map
@@ -1,23 +1,24 @@
1
1
  /**
2
2
  * Integration test for issue #14: a bridge restarted with a persisted identity must keep its agent ID, room membership, and push delivery.
3
3
  *
4
- * Before persistent identities, every restart generated a fresh TLS certificate, so the fingerprint-derived agent ID changed and peers kept targeting the old ID: their messages queued for an agent whose local handler (gated on agentId === peerId) never fired again.
4
+ * Before persistent identities, every restart generated a fresh keypair, so the device-id-derived agent ID changed and peers kept targeting the old ID: their messages queued for an agent whose local handler (gated on agentId === peerId) never fired again.
5
5
  */
6
6
  import * as assert from "node:assert/strict";
7
7
  import * as fs from "node:fs";
8
8
  import { tmpdir } from "node:os";
9
9
  import path from "node:path";
10
+ import { deviceIdToHex } from "@exadev/wire-mesh-core/domain/device-id";
10
11
  import { MeshStore } from "../core/mesh-store.js";
11
- import { TlsTransport } from "../core/tls-transport.js";
12
+ import { WireMeshTransport } from "../core/wire-mesh-transport.js";
12
13
  import { generateIdentity } from "../core/identity.js";
13
14
  import { loadOrCreateIdentity, releaseIdentityLock, } from "../core/identity-store.js";
14
15
  const TEST_PORT = 19889;
15
16
  const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
16
- /** A peer wired like a real bridge: TLS transport, fingerprint peer ID. */
17
+ /** A peer wired like a real bridge: WireMeshTransport, device-id peer ID. */
17
18
  function makePeer(identity) {
18
19
  const store = new MeshStore(TEST_PORT);
19
- store.peerId = identity.fingerprint;
20
- store.setTransport(new TlsTransport(store.events, identity));
20
+ store.peerId = deviceIdToHex(Uint8Array.from(identity.deviceId));
21
+ store.setTransport(new WireMeshTransport(store.events, identity));
21
22
  const deliveries = [];
22
23
  return { store, deliveries };
23
24
  }
@@ -76,7 +77,7 @@ async function main() {
76
77
  await sleep(200);
77
78
  // A restarts in the same slot: same key material, same agent ID.
78
79
  const identityA2 = loadOrCreateIdentity(slot);
79
- assert.equal(identityA2.fingerprint, identityA.fingerprint);
80
+ assert.equal(deviceIdToHex(Uint8Array.from(identityA2.deviceId)), deviceIdToHex(Uint8Array.from(identityA.deviceId)));
80
81
  const a2 = makePeer(identityA2);
81
82
  a2.store.onDelivery = (_id, ev) => {
82
83
  a2.deliveries.push(ev);
@@ -1 +1 @@
1
- {"version":3,"file":"identity-restart.integration.test.js","sourceRoot":"","sources":["../../src/test/identity-restart.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"identity-restart.integration.test.js","sourceRoot":"","sources":["../../src/test/identity-restart.integration.test.ts"],"names":[],"mappings":"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"}