agent-comms 3.21.0 → 3.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) 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/user/web/actions.d.ts +59 -0
  5. package/dist/bridges/user/web/actions.d.ts.map +1 -0
  6. package/dist/bridges/user/web/actions.js +109 -0
  7. package/dist/bridges/user/web/actions.js.map +1 -0
  8. package/dist/bridges/user/web/contract.d.ts +2 -0
  9. package/dist/bridges/user/web/contract.d.ts.map +1 -1
  10. package/dist/bridges/user/web/dist/mesh-worker.js +1 -1
  11. package/dist/bridges/user/web/dist/sw.js +1 -1
  12. package/dist/bridges/user/web/event-publisher.d.ts +30 -0
  13. package/dist/bridges/user/web/event-publisher.d.ts.map +1 -0
  14. package/dist/bridges/user/web/event-publisher.js +84 -0
  15. package/dist/bridges/user/web/event-publisher.js.map +1 -0
  16. package/dist/bridges/user/web/frontend/mesh-worker.d.ts +10 -8
  17. package/dist/bridges/user/web/frontend/mesh-worker.d.ts.map +1 -1
  18. package/dist/bridges/user/web/frontend/mesh-worker.js +143 -90
  19. package/dist/bridges/user/web/frontend/mesh-worker.js.map +1 -1
  20. package/dist/bridges/user/web/router.d.ts +696 -0
  21. package/dist/bridges/user/web/router.d.ts.map +1 -0
  22. package/dist/bridges/user/web/router.js +50 -0
  23. package/dist/bridges/user/web/router.js.map +1 -0
  24. package/dist/bridges/user/web/server.d.ts +3 -0
  25. package/dist/bridges/user/web/server.d.ts.map +1 -1
  26. package/dist/bridges/user/web/server.js +95 -114
  27. package/dist/bridges/user/web/server.js.map +1 -1
  28. package/dist/bridges/user/web/test/orpc-router.integration.test.d.ts +7 -0
  29. package/dist/bridges/user/web/test/orpc-router.integration.test.d.ts.map +1 -0
  30. package/dist/bridges/user/web/test/orpc-router.integration.test.js +214 -0
  31. package/dist/bridges/user/web/test/orpc-router.integration.test.js.map +1 -0
  32. package/dist/core/bridge.d.ts +3 -0
  33. package/dist/core/bridge.d.ts.map +1 -1
  34. package/dist/core/bridge.js +14 -0
  35. package/dist/core/bridge.js.map +1 -1
  36. package/dist/core/data-frame-routing.d.ts +14 -0
  37. package/dist/core/data-frame-routing.d.ts.map +1 -0
  38. package/dist/core/data-frame-routing.js +37 -0
  39. package/dist/core/data-frame-routing.js.map +1 -0
  40. package/dist/core/gossip-directory.d.ts +5 -0
  41. package/dist/core/gossip-directory.d.ts.map +1 -1
  42. package/dist/core/gossip-directory.js +7 -0
  43. package/dist/core/gossip-directory.js.map +1 -1
  44. package/dist/core/hub-session.d.ts +5 -1
  45. package/dist/core/hub-session.d.ts.map +1 -1
  46. package/dist/core/hub-session.js +24 -0
  47. package/dist/core/hub-session.js.map +1 -1
  48. package/dist/core/mesh-graph-trace-tool.d.ts +12 -0
  49. package/dist/core/mesh-graph-trace-tool.d.ts.map +1 -0
  50. package/dist/core/mesh-graph-trace-tool.js +60 -0
  51. package/dist/core/mesh-graph-trace-tool.js.map +1 -0
  52. package/dist/core/mesh-graph.d.ts +14 -0
  53. package/dist/core/mesh-graph.d.ts.map +1 -0
  54. package/dist/core/mesh-graph.js +46 -0
  55. package/dist/core/mesh-graph.js.map +1 -0
  56. package/dist/core/mesh-network-actions.d.ts +28 -0
  57. package/dist/core/mesh-network-actions.d.ts.map +1 -0
  58. package/dist/core/mesh-network-actions.js +143 -0
  59. package/dist/core/mesh-network-actions.js.map +1 -0
  60. package/dist/core/mesh-store.d.ts +5 -1
  61. package/dist/core/mesh-store.d.ts.map +1 -1
  62. package/dist/core/mesh-store.js +16 -0
  63. package/dist/core/mesh-store.js.map +1 -1
  64. package/dist/core/tool.d.ts +3 -10
  65. package/dist/core/tool.d.ts.map +1 -1
  66. package/dist/core/tool.js +15 -147
  67. package/dist/core/tool.js.map +1 -1
  68. package/dist/core/transport.d.ts +35 -0
  69. package/dist/core/transport.d.ts.map +1 -1
  70. package/dist/core/types.d.ts +12 -0
  71. package/dist/core/types.d.ts.map +1 -1
  72. package/dist/core/types.js +6 -0
  73. package/dist/core/types.js.map +1 -1
  74. package/dist/core/wire-mesh-transport.d.ts +7 -2
  75. package/dist/core/wire-mesh-transport.d.ts.map +1 -1
  76. package/dist/core/wire-mesh-transport.js +22 -38
  77. package/dist/core/wire-mesh-transport.js.map +1 -1
  78. package/dist/test/mesh-graph-trace-tool.test.d.ts +2 -0
  79. package/dist/test/mesh-graph-trace-tool.test.d.ts.map +1 -0
  80. package/dist/test/mesh-graph-trace-tool.test.js +104 -0
  81. package/dist/test/mesh-graph-trace-tool.test.js.map +1 -0
  82. package/dist/test/mesh-graph-trace.integration.test.d.ts +5 -0
  83. package/dist/test/mesh-graph-trace.integration.test.d.ts.map +1 -0
  84. package/dist/test/mesh-graph-trace.integration.test.js +146 -0
  85. package/dist/test/mesh-graph-trace.integration.test.js.map +1 -0
  86. package/package.json +2 -2
@@ -0,0 +1,146 @@
1
+ /**
2
+ * Real end-to-end coverage for agent-comms#199's mesh_graph/mesh_trace, against two genuine WireMeshTransport instances joined by a real connectToPeer session -- the same pattern wire-mesh-transport.test.ts's own "WireMeshTransport connectToPeer" describe block already uses, chosen for the identical reason: this needs the transport's own gossip/topology-self-advertisement and path.trace request/response to actually cross the wire, not a mocked session layer.
3
+ */
4
+ import { test, describe, expect } from "vitest";
5
+ import { generateIdentity } from "../core/identity.js";
6
+ import { toIdentityPort } from "../core/wire-mesh-identity.js";
7
+ import { deviceIdToHex } from "wire-mesh-core/domain/device-id";
8
+ import { MeshStore } from "../core/mesh-store.js";
9
+ import { WireMeshTransport } from "../core/wire-mesh-transport.js";
10
+ import { waitFor, wireTestTransportWithHub } from "./test-transport.js";
11
+ import { realHubOverWs, waitForCondition } from "./hub-helpers.js";
12
+ function noopEvents() {
13
+ return {
14
+ onMessage: () => undefined,
15
+ onPeerConnected: () => undefined,
16
+ onPeerDisconnected: () => undefined,
17
+ onIntroduction: () => undefined,
18
+ onConnectionRequest: () => undefined,
19
+ onPeerList: () => undefined,
20
+ onPeerJoined: () => undefined,
21
+ onBecomeCoordinator: () => undefined,
22
+ onRevocationAnnounce: () => undefined,
23
+ onPresenceAdvert: () => undefined,
24
+ };
25
+ }
26
+ async function peerId(identity) {
27
+ return deviceIdToHex(Uint8Array.from(identity.deviceId));
28
+ }
29
+ /** A device-id is SHA-256(public key) -- 32 raw bytes, 64 hex characters. */
30
+ const DEVICE_ID_BYTE_LENGTH = 32;
31
+ describe("WireMeshTransport meshGraph/meshTrace (agent-comms#199)", () => {
32
+ test("meshGraph reports the other side's own self-advertised direct edge once gossip has propagated", async () => {
33
+ const identityA = generateIdentity();
34
+ const identityB = generateIdentity();
35
+ const idA = await peerId(await toIdentityPort(identityA));
36
+ const idB = await peerId(await toIdentityPort(identityB));
37
+ const transportA = new WireMeshTransport(noopEvents(), identityA);
38
+ const transportB = new WireMeshTransport(noopEvents(), identityB);
39
+ try {
40
+ await transportA.startDataServer();
41
+ await transportB.connectToPeer({
42
+ id: idA,
43
+ port: transportA.dataPort,
44
+ startedAt: new Date().toISOString(),
45
+ }, idB);
46
+ await waitFor(() => transportA.meshGraph().nodes.includes(idB), "A learns B's own device-id via gossip");
47
+ await waitFor(() => transportB.meshGraph().nodes.includes(idA), "B learns A's own device-id via gossip");
48
+ // A's own knownDevices holds B's self-advert (never A's own), and B's own topology/peers self-report says its direct peer is A -- the connection each side authenticated over TLS.
49
+ const graphFromA = transportA.meshGraph();
50
+ expect(graphFromA.nodes).toContain(idB);
51
+ expect(graphFromA.edges).toContainEqual({
52
+ kind: "direct",
53
+ from: idB,
54
+ to: idA,
55
+ });
56
+ const graphFromB = transportB.meshGraph();
57
+ expect(graphFromB.nodes).toContain(idA);
58
+ expect(graphFromB.edges).toContainEqual({
59
+ kind: "direct",
60
+ from: idA,
61
+ to: idB,
62
+ });
63
+ }
64
+ finally {
65
+ await transportB.shutdown();
66
+ await transportA.shutdown();
67
+ }
68
+ });
69
+ test("meshTrace sends a real path.trace over the direct peer session and reports a real RTT", async () => {
70
+ const identityA = generateIdentity();
71
+ const identityB = generateIdentity();
72
+ const idA = await peerId(await toIdentityPort(identityA));
73
+ const idB = await peerId(await toIdentityPort(identityB));
74
+ const transportA = new WireMeshTransport(noopEvents(), identityA);
75
+ const transportB = new WireMeshTransport(noopEvents(), identityB);
76
+ try {
77
+ await transportA.startDataServer();
78
+ await transportB.connectToPeer({
79
+ id: idA,
80
+ port: transportA.dataPort,
81
+ startedAt: new Date().toISOString(),
82
+ }, idB);
83
+ const result = await transportB.meshTrace(idA);
84
+ expect(result.outcome.result, JSON.stringify(result)).toBe("ok");
85
+ expect(result.rttMs).toBeGreaterThanOrEqual(0);
86
+ expect(result.local.relayed).toBe(false);
87
+ expect(result.remote?.relayed).toBe(false);
88
+ }
89
+ finally {
90
+ await transportB.shutdown();
91
+ await transportA.shutdown();
92
+ }
93
+ });
94
+ test("meshTrace resolves a not_connected outcome for a device with no known path", async () => {
95
+ const identityA = generateIdentity();
96
+ const transportA = new WireMeshTransport(noopEvents(), identityA);
97
+ const unknownDeviceHex = "ab".repeat(DEVICE_ID_BYTE_LENGTH);
98
+ try {
99
+ const result = await transportA.meshTrace(unknownDeviceHex);
100
+ expect(result.outcome).toEqual({
101
+ result: "error",
102
+ code: "not_connected",
103
+ });
104
+ }
105
+ finally {
106
+ await transportA.shutdown();
107
+ }
108
+ });
109
+ test("meshGraph reports no nodes before any gossip has been received", async () => {
110
+ const identityA = generateIdentity();
111
+ const transportA = new WireMeshTransport(noopEvents(), identityA);
112
+ try {
113
+ expect(transportA.meshGraph()).toEqual({ nodes: [], edges: [] });
114
+ }
115
+ finally {
116
+ await transportA.shutdown();
117
+ }
118
+ });
119
+ test("meshTrace routes via the hub's own relay pairing when no direct peer session exists, reporting relayed on both sides", async () => {
120
+ const hub = await realHubOverWs();
121
+ try {
122
+ const storeA = new MeshStore();
123
+ const { transport: transportA } = await wireTestTransportWithHub(storeA);
124
+ const storeB = new MeshStore();
125
+ const { transport: transportB } = await wireTestTransportWithHub(storeB);
126
+ try {
127
+ await transportA.connectHub?.(hub.url);
128
+ await transportB.connectHub?.(hub.url);
129
+ await waitForCondition(() => transportA.hub.isConnected && transportB.hub.isConnected);
130
+ const result = await transportA.meshTrace(storeB.peerId);
131
+ expect(result.outcome.result, JSON.stringify(result)).toBe("ok");
132
+ expect(result.local.relayed).toBe(true);
133
+ expect(result.local.hubAddress).toBe(hub.url);
134
+ expect(result.remote?.relayed).toBe(true);
135
+ }
136
+ finally {
137
+ await storeA.shutdown();
138
+ await storeB.shutdown();
139
+ }
140
+ }
141
+ finally {
142
+ await hub.close();
143
+ }
144
+ });
145
+ });
146
+ //# sourceMappingURL=mesh-graph-trace.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mesh-graph-trace.integration.test.js","sourceRoot":"","sources":["../../src/test/mesh-graph-trace.integration.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-comms",
3
- "version": "3.21.0",
3
+ "version": "3.23.0",
4
4
  "description": "Cross-harness communication mesh for LLM agents — rooms, DMs, presence, and real-time push delivery over TCP",
5
5
  "type": "module",
6
6
  "packageManager": "pnpm@12.4.1+sha512.2e81e399d73fe8390dab25e06aa788ab7a5908248d2f5a370f82b481147a6a7a367bf8048f9a6fdb6460f21a66f0542dedb8b94ca2c8723596741920b1656d4c",
@@ -127,7 +127,7 @@
127
127
  "react": "19.3.0",
128
128
  "react-dom": "19.3.0",
129
129
  "typebox": "1.3.6",
130
- "wire-mesh-core": "1.57.0",
130
+ "wire-mesh-core": "1.58.0",
131
131
  "ws": "8.21.1",
132
132
  "zod": "4.4.3"
133
133
  },