agent-comms 4.1.2 → 4.1.4

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 (82) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +3 -1
  4. package/dist/bridges/cc-peer/bridge.d.ts +14 -0
  5. package/dist/bridges/cc-peer/bridge.d.ts.map +1 -1
  6. package/dist/bridges/cc-peer/bridge.js +37 -11
  7. package/dist/bridges/cc-peer/bridge.js.map +1 -1
  8. package/dist/bridges/cc-peer/default-front.d.ts +4 -0
  9. package/dist/bridges/cc-peer/default-front.d.ts.map +1 -1
  10. package/dist/bridges/cc-peer/default-front.js +2 -0
  11. package/dist/bridges/cc-peer/default-front.js.map +1 -1
  12. package/dist/bridges/cc-peer/front-controller.d.ts +2 -0
  13. package/dist/bridges/cc-peer/front-controller.d.ts.map +1 -1
  14. package/dist/bridges/cc-peer/front-controller.js +1 -1
  15. package/dist/bridges/cc-peer/front-controller.js.map +1 -1
  16. package/dist/bridges/cc-peer/front-runtime.d.ts +13 -1
  17. package/dist/bridges/cc-peer/front-runtime.d.ts.map +1 -1
  18. package/dist/bridges/cc-peer/front-runtime.js +22 -13
  19. package/dist/bridges/cc-peer/front-runtime.js.map +1 -1
  20. package/dist/bridges/cc-peer/run.d.ts.map +1 -1
  21. package/dist/bridges/cc-peer/run.js +10 -4
  22. package/dist/bridges/cc-peer/run.js.map +1 -1
  23. package/dist/bridges/cc-peer/shared-peer.d.ts +16 -0
  24. package/dist/bridges/cc-peer/shared-peer.d.ts.map +1 -0
  25. package/dist/bridges/cc-peer/shared-peer.js +28 -0
  26. package/dist/bridges/cc-peer/shared-peer.js.map +1 -0
  27. package/dist/bridges/claude-code/channel.d.ts.map +1 -1
  28. package/dist/bridges/claude-code/channel.js +2 -1
  29. package/dist/bridges/claude-code/channel.js.map +1 -1
  30. package/dist/bridges/codex/tool.d.ts.map +1 -1
  31. package/dist/bridges/codex/tool.js +2 -1
  32. package/dist/bridges/codex/tool.js.map +1 -1
  33. package/dist/bridges/mcp/server.d.ts.map +1 -1
  34. package/dist/bridges/mcp/server.js +2 -1
  35. package/dist/bridges/mcp/server.js.map +1 -1
  36. package/dist/bridges/opencode/plugin.d.ts.map +1 -1
  37. package/dist/bridges/opencode/plugin.js +2 -1
  38. package/dist/bridges/opencode/plugin.js.map +1 -1
  39. package/dist/bridges/pi/extension.d.ts.map +1 -1
  40. package/dist/bridges/pi/extension.js +5 -1
  41. package/dist/bridges/pi/extension.js.map +1 -1
  42. package/dist/bridges/user/controller.d.ts.map +1 -1
  43. package/dist/bridges/user/controller.js +9 -1
  44. package/dist/bridges/user/controller.js.map +1 -1
  45. package/dist/core/error-reporting.d.ts +8 -0
  46. package/dist/core/error-reporting.d.ts.map +1 -0
  47. package/dist/core/error-reporting.js +16 -0
  48. package/dist/core/error-reporting.js.map +1 -0
  49. package/dist/core/identity-store.d.ts.map +1 -1
  50. package/dist/core/identity-store.js +4 -2
  51. package/dist/core/identity-store.js.map +1 -1
  52. package/dist/core/index.d.ts +1 -0
  53. package/dist/core/index.d.ts.map +1 -1
  54. package/dist/core/index.js +1 -0
  55. package/dist/core/index.js.map +1 -1
  56. package/dist/test/cc-peer-bridge.unit.test.js +121 -8
  57. package/dist/test/cc-peer-bridge.unit.test.js.map +1 -1
  58. package/dist/test/cc-peer-default-front.unit.test.js +12 -0
  59. package/dist/test/cc-peer-default-front.unit.test.js.map +1 -1
  60. package/dist/test/cc-peer-front-controller.unit.test.js +30 -0
  61. package/dist/test/cc-peer-front-controller.unit.test.js.map +1 -1
  62. package/dist/test/cc-peer-front-runtime.unit.test.d.ts +2 -0
  63. package/dist/test/cc-peer-front-runtime.unit.test.d.ts.map +1 -0
  64. package/dist/test/cc-peer-front-runtime.unit.test.js +72 -0
  65. package/dist/test/cc-peer-front-runtime.unit.test.js.map +1 -0
  66. package/dist/test/cc-peer-shared-peer.unit.test.d.ts +2 -0
  67. package/dist/test/cc-peer-shared-peer.unit.test.d.ts.map +1 -0
  68. package/dist/test/cc-peer-shared-peer.unit.test.js +48 -0
  69. package/dist/test/cc-peer-shared-peer.unit.test.js.map +1 -0
  70. package/dist/test/chat-controller-mesh-errors.integration.test.d.ts +2 -0
  71. package/dist/test/chat-controller-mesh-errors.integration.test.d.ts.map +1 -0
  72. package/dist/test/chat-controller-mesh-errors.integration.test.js +49 -0
  73. package/dist/test/chat-controller-mesh-errors.integration.test.js.map +1 -0
  74. package/dist/test/error-reporting.unit.test.d.ts +2 -0
  75. package/dist/test/error-reporting.unit.test.d.ts.map +1 -0
  76. package/dist/test/error-reporting.unit.test.js +35 -0
  77. package/dist/test/error-reporting.unit.test.js.map +1 -0
  78. package/dist/test/identity-store-wait.unit.test.d.ts +2 -0
  79. package/dist/test/identity-store-wait.unit.test.d.ts.map +1 -0
  80. package/dist/test/identity-store-wait.unit.test.js +75 -0
  81. package/dist/test/identity-store-wait.unit.test.js.map +1 -0
  82. package/package.json +1 -1
@@ -2,7 +2,7 @@
2
2
  * Direct, DI-based unit tests for wireCcPeerBridge -- the pure relay wiring cc-peer's own bridge.ts exposes, tested against a fake CcPeer/tool/store rather than a real local Claude Code session (no such session exists in a test environment; run.ts's own real CcPeer.create() construction is exercised only by actually running the bridge).
3
3
  */
4
4
  import { describe, expect, it, vi } from "vitest";
5
- import { wireCcPeerBridge } from "../bridges/cc-peer/bridge.js";
5
+ import { createTargetSenderMatcher, targetMatchesEntry, wireCcPeerBridge, } from "../bridges/cc-peer/bridge.js";
6
6
  function fakePeer() {
7
7
  const peer = {
8
8
  messageListener: undefined,
@@ -40,10 +40,13 @@ function roomMessage(overrides = {}) {
40
40
  };
41
41
  }
42
42
  describe("wireCcPeerBridge — inbound (cc-peer -> mesh)", () => {
43
- it("posts an inbound cc-peer message into this agent's own project room, prefixed with the sender's name", () => {
43
+ it("posts an inbound cc-peer message into this agent's own project room, prefixed with the sender's name", async () => {
44
44
  const peer = fakePeer();
45
45
  const tool = fakeTool();
46
- const store = { onDelivery: undefined };
46
+ const store = {
47
+ onDelivery: undefined,
48
+ onError: undefined,
49
+ };
47
50
  wireCcPeerBridge({
48
51
  store,
49
52
  tool,
@@ -52,13 +55,16 @@ describe("wireCcPeerBridge — inbound (cc-peer -> mesh)", () => {
52
55
  roomId: "owner/project",
53
56
  target: { name: "local-session" },
54
57
  cwd: "/tmp/project",
58
+ isFromTarget: async () => Promise.resolve(true),
55
59
  });
56
60
  peer.messageListener?.({
57
61
  from: "local-session",
58
62
  fromName: "my-local-session",
59
63
  body: "hello from cc-peer",
60
64
  });
61
- expect(tool.handleCalls).toHaveLength(1);
65
+ await vi.waitFor(() => {
66
+ expect(tool.handleCalls).toHaveLength(1);
67
+ });
62
68
  expect(tool.handleCalls[0]).toEqual({
63
69
  ctx: {
64
70
  agentId: "agent-1",
@@ -73,10 +79,13 @@ describe("wireCcPeerBridge — inbound (cc-peer -> mesh)", () => {
73
79
  },
74
80
  });
75
81
  });
76
- it("falls back to the raw from id when the local peer has no registered display name", () => {
82
+ it("falls back to the raw from id when the local peer has no registered display name", async () => {
77
83
  const peer = fakePeer();
78
84
  const tool = fakeTool();
79
- const store = { onDelivery: undefined };
85
+ const store = {
86
+ onDelivery: undefined,
87
+ onError: undefined,
88
+ };
80
89
  wireCcPeerBridge({
81
90
  store,
82
91
  tool,
@@ -85,8 +94,12 @@ describe("wireCcPeerBridge — inbound (cc-peer -> mesh)", () => {
85
94
  roomId: "owner/project",
86
95
  target: { name: "local-session" },
87
96
  cwd: "/tmp/project",
97
+ isFromTarget: async () => Promise.resolve(true),
88
98
  });
89
99
  peer.messageListener?.({ from: "local-session", body: "hi" });
100
+ await vi.waitFor(() => {
101
+ expect(tool.handleCalls).toHaveLength(1);
102
+ });
90
103
  const call = tool.handleCalls[0];
91
104
  expect(call.action.content).toBe("local-session: hi");
92
105
  });
@@ -95,7 +108,10 @@ describe("wireCcPeerBridge — outbound (mesh -> cc-peer)", () => {
95
108
  it("relays a mesh delivery to the configured cc-peer target", () => {
96
109
  const peer = fakePeer();
97
110
  const tool = fakeTool();
98
- const store = { onDelivery: undefined };
111
+ const store = {
112
+ onDelivery: undefined,
113
+ onError: undefined,
114
+ };
99
115
  wireCcPeerBridge({
100
116
  store,
101
117
  tool,
@@ -104,6 +120,7 @@ describe("wireCcPeerBridge — outbound (mesh -> cc-peer)", () => {
104
120
  roomId: "owner/project",
105
121
  target: { name: "local-session" },
106
122
  cwd: "/tmp/project",
123
+ isFromTarget: async () => Promise.resolve(true),
107
124
  });
108
125
  expect(store.onDelivery).toBeDefined();
109
126
  const event = {
@@ -121,7 +138,10 @@ describe("wireCcPeerBridge — outbound (mesh -> cc-peer)", () => {
121
138
  it("relays to a pid-addressed target exactly as configured", () => {
122
139
  const peer = fakePeer();
123
140
  const tool = fakeTool();
124
- const store = { onDelivery: undefined };
141
+ const store = {
142
+ onDelivery: undefined,
143
+ onError: undefined,
144
+ };
125
145
  wireCcPeerBridge({
126
146
  store,
127
147
  tool,
@@ -130,6 +150,7 @@ describe("wireCcPeerBridge — outbound (mesh -> cc-peer)", () => {
130
150
  roomId: "owner/project",
131
151
  target: { pid: 4242 },
132
152
  cwd: "/tmp/project",
153
+ isFromTarget: async () => Promise.resolve(true),
133
154
  });
134
155
  void store.onDelivery?.("agent-1", {
135
156
  type: "room_message",
@@ -138,4 +159,96 @@ describe("wireCcPeerBridge — outbound (mesh -> cc-peer)", () => {
138
159
  expect(peer.sendCalls[0]?.target).toEqual({ pid: 4242 });
139
160
  });
140
161
  });
162
+ describe("wireCcPeerBridge — inbound from anyone but the target", () => {
163
+ it("ignores a message whose sender is not the target", async () => {
164
+ const peer = fakePeer();
165
+ const tool = fakeTool();
166
+ const isFromTarget = vi.fn(async () => Promise.resolve(false));
167
+ wireCcPeerBridge({
168
+ store: { onDelivery: undefined, onError: undefined },
169
+ tool,
170
+ peer,
171
+ agentId: "agent-1",
172
+ roomId: "owner/project",
173
+ target: { name: "local-session" },
174
+ cwd: "/tmp/project",
175
+ isFromTarget,
176
+ });
177
+ peer.messageListener?.({ from: "uds:/tmp/other.sock", body: "not for us" });
178
+ await vi.waitFor(() => {
179
+ expect(isFromTarget).toHaveBeenCalledTimes(1);
180
+ });
181
+ await Promise.resolve();
182
+ expect(tool.handleCalls).toEqual([]);
183
+ });
184
+ });
185
+ describe("wireCcPeerBridge — relay failures", () => {
186
+ it("reports a failed target check through the store's error channel instead of leaving an unhandled rejection", async () => {
187
+ const peer = fakePeer();
188
+ const onError = vi.fn();
189
+ wireCcPeerBridge({
190
+ store: { onDelivery: undefined, onError },
191
+ tool: fakeTool(),
192
+ peer,
193
+ agentId: "agent-1",
194
+ roomId: "owner/project",
195
+ target: { name: "local-session" },
196
+ cwd: "/tmp/project",
197
+ isFromTarget: async () => Promise.reject(new Error("roster unreadable")),
198
+ });
199
+ peer.messageListener?.({ from: "uds:/tmp/x.sock", body: "x" });
200
+ await vi.waitFor(() => {
201
+ expect(onError).toHaveBeenCalledWith(new Error("roster unreadable"));
202
+ });
203
+ });
204
+ });
205
+ const ENTRY = {
206
+ pid: 4242,
207
+ name: "local-session",
208
+ messagingSocketPath: "/tmp/cc-socks/4242.sock",
209
+ };
210
+ describe("targetMatchesEntry", () => {
211
+ it("matches a pid target by pid", () => {
212
+ expect(targetMatchesEntry({ pid: 4242 }, ENTRY)).toBe(true);
213
+ expect(targetMatchesEntry({ pid: 1 }, ENTRY)).toBe(false);
214
+ });
215
+ it("matches a name target by the session's registered name", () => {
216
+ expect(targetMatchesEntry({ name: "local-session" }, ENTRY)).toBe(true);
217
+ expect(targetMatchesEntry({ name: "someone-else" }, ENTRY)).toBe(false);
218
+ expect(targetMatchesEntry({ name: "local-session" }, { ...ENTRY, name: undefined })).toBe(false);
219
+ });
220
+ it("matches an address target against the session's own uds address", () => {
221
+ expect(targetMatchesEntry({ address: `uds:${ENTRY.messagingSocketPath}` }, ENTRY)).toBe(true);
222
+ expect(targetMatchesEntry({ address: "uds:/tmp/other.sock" }, ENTRY)).toBe(false);
223
+ });
224
+ });
225
+ describe("createTargetSenderMatcher", () => {
226
+ const roster = async () => Promise.resolve([ENTRY]);
227
+ it("accepts a message sent from the target session's socket", async () => {
228
+ const matches = createTargetSenderMatcher({ name: "local-session" }, roster);
229
+ expect(await matches({ from: `uds:${ENTRY.messagingSocketPath}`, body: "x" })).toBe(true);
230
+ });
231
+ it("rejects a message from a different session, and one with no sender at all", async () => {
232
+ const matches = createTargetSenderMatcher({ name: "local-session" }, roster);
233
+ expect(await matches({ from: "uds:/tmp/cc-socks/9.sock", body: "x" })).toBe(false);
234
+ expect(await matches({ body: "x" })).toBe(false);
235
+ });
236
+ it("re-reads the roster for every message, so a session that restarts under the same name is still recognised", async () => {
237
+ const listRoster = vi
238
+ .fn()
239
+ .mockResolvedValueOnce([ENTRY])
240
+ .mockResolvedValueOnce([
241
+ { ...ENTRY, pid: 5555, messagingSocketPath: "/tmp/cc-socks/5555.sock" },
242
+ ]);
243
+ const matches = createTargetSenderMatcher({ name: "local-session" }, listRoster);
244
+ expect(await matches({ from: "uds:/tmp/cc-socks/4242.sock", body: "a" })).toBe(true);
245
+ expect(await matches({ from: "uds:/tmp/cc-socks/5555.sock", body: "b" })).toBe(true);
246
+ });
247
+ it("matches an address target on the message's from alone, without reading the roster", async () => {
248
+ const listRoster = vi.fn(async () => Promise.resolve([ENTRY]));
249
+ const matches = createTargetSenderMatcher({ address: "uds:/tmp/x.sock" }, listRoster);
250
+ expect(await matches({ from: "uds:/tmp/x.sock", body: "x" })).toBe(true);
251
+ expect(listRoster).not.toHaveBeenCalled();
252
+ });
253
+ });
141
254
  //# sourceMappingURL=cc-peer-bridge.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cc-peer-bridge.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-bridge.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cc-peer-bridge.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-bridge.unit.test.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,18 @@ describe("wireDefaultCcPeerFront", () => {
52
52
  hubUrl: "wss://example.test/hub",
53
53
  }));
54
54
  });
55
+ it("passes a lent peer and the excludeSession predicate through to the front builder", () => {
56
+ const peer = {
57
+ roster: async () => Promise.resolve([]),
58
+ on: () => undefined,
59
+ send: async () => Promise.resolve({ msgId: "m" }),
60
+ stop: async () => Promise.resolve(),
61
+ };
62
+ const excludeSession = vi.fn(() => false);
63
+ const createFront = vi.fn(() => fakeFront());
64
+ wireDefaultCcPeerFront(fakeStore(), { peer, excludeSession, createFront });
65
+ expect(createFront).toHaveBeenCalledWith(expect.objectContaining({ peer, excludeSession }));
66
+ });
55
67
  it("forwards a front error to the store's own onError, when one is set", () => {
56
68
  const store = fakeStore();
57
69
  const onError = vi.fn();
@@ -1 +1 @@
1
- {"version":3,"file":"cc-peer-default-front.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-default-front.unit.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAI7E,SAAS,SAAS;IAChB,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,SAAS;IAIhB,OAAO;QACL,KAAK,EAAE,EAAE,CAAC,EAAE,EAAc;QAC1B,IAAI,EAAE,EAAE,CAAC,EAAE,CAAsB,KAAK,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KAChE,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,sBAAsB,CAAC,SAAS,EAAE,EAAE;YACxD,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;SACzB,CAAC,CAAC;QAEH,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;QAC1B,MAAM,aAAa,GAAG,sBAAsB,CAAC,SAAS,EAAE,EAAE;YACxD,WAAW,EAAE,GAAG,EAAE,CAAC,KAAK;SACzB,CAAC,CAAC;QAEH,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAE3B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,MAAM,aAAa,GAAG,sBAAsB,CAAC,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;QAE3E,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;QAE1B,MAAM,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAkC;YAC7C,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE,wBAAwB;YAChC,WAAW;SACZ,CAAC;QACF,sBAAsB,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;QAE7C,MAAM,CAAC,WAAW,CAAC,CAAC,oBAAoB,CACtC,MAAM,CAAC,gBAAgB,CAAC;YACtB,eAAe,EAAE,KAAK;YACtB,MAAM,EAAE,wBAAwB;SACjC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,EAA0B,CAAC;QAChD,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QACxB,IAAI,eAAqD,CAAC;QAC1D,sBAAsB,CAAC,KAAK,EAAE;YAC5B,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE;gBACpB,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC/B,OAAO,SAAS,EAAE,CAAC;YACrB,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QACtD,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC;QAEzB,MAAM,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"cc-peer-default-front.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-default-front.unit.test.ts"],"names":[],"mappings":"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"}
@@ -167,6 +167,36 @@ describe("CcPeerFront — attach/detach diffing across ticks", () => {
167
167
  expect(h.attach).toHaveBeenCalledTimes(2);
168
168
  await h.front.stop();
169
169
  });
170
+ it("never fronts a session the excludeSession predicate names, while still fronting the rest", async () => {
171
+ const h = harness([
172
+ rosterEntry({ pid: 1, cwd: "/tmp/relayed-elsewhere" }),
173
+ rosterEntry({ pid: 2, cwd: "/tmp/other" }),
174
+ ]);
175
+ const front = new CcPeerFront({
176
+ ...h.deps,
177
+ excludeSession: (entry) => entry.pid === 1,
178
+ });
179
+ front.start();
180
+ await vi.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
181
+ expect(h.attach).toHaveBeenCalledTimes(1);
182
+ expect(h.attach).toHaveBeenCalledWith(expect.objectContaining({ pid: 2 }));
183
+ await front.stop();
184
+ });
185
+ it("detaches a fronted session once the excludeSession predicate starts naming it", async () => {
186
+ const h = harness([rosterEntry({ pid: 1, cwd: "/tmp/soon-relayed" })]);
187
+ const excludedPids = new Set();
188
+ const front = new CcPeerFront({
189
+ ...h.deps,
190
+ excludeSession: (entry) => excludedPids.has(entry.pid),
191
+ });
192
+ front.start();
193
+ await vi.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
194
+ expect(h.attach).toHaveBeenCalledTimes(1);
195
+ excludedPids.add(1);
196
+ await vi.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
197
+ expect(h.detach).toHaveBeenCalledTimes(1);
198
+ await front.stop();
199
+ });
170
200
  it("routes an inbound message to the fronted session it came from", async () => {
171
201
  const h = harness([
172
202
  rosterEntry({ pid: 1, messagingSocketPath: "/tmp/sock-1" }),
@@ -1 +1 @@
1
- {"version":3,"file":"cc-peer-front-controller.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-front-controller.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cc-peer-front-controller.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-front-controller.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cc-peer-front-runtime.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-peer-front-runtime.unit.test.d.ts","sourceRoot":"","sources":["../../src/test/cc-peer-front-runtime.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Unit tests for createDefaultCcPeerFront's peer ownership: a peer lent by the host process is used for the roster, never stopped by the front, and given the front's inbound listener exactly once. Every roster entry here is excluded, so nothing is ever attached and no mesh or identity is created.
3
+ */
4
+ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
+ import { createDefaultCcPeerFront, } from "../bridges/cc-peer/front-runtime.js";
6
+ const POLL_INTERVAL_MS = 1000;
7
+ /** Full start/stop cycles the listener-registration test runs -- more than one, since a single cycle cannot show a listener being added again on restart. */
8
+ const RESTART_CYCLES = 3;
9
+ const SESSION = {
10
+ pid: 4242,
11
+ cwd: "/tmp/front-runtime-unit-test",
12
+ version: "2.1.278",
13
+ messagingSocketPath: "/tmp/cc-socks/4242.sock",
14
+ };
15
+ function borrowedPeer() {
16
+ return {
17
+ roster: vi.fn(async () => Promise.resolve([SESSION])),
18
+ on: vi.fn(),
19
+ send: vi.fn(async () => Promise.resolve({ msgId: "m" })),
20
+ stop: vi.fn(async () => Promise.resolve()),
21
+ };
22
+ }
23
+ describe("createDefaultCcPeerFront with a borrowed peer", () => {
24
+ beforeEach(() => {
25
+ vi.useFakeTimers();
26
+ });
27
+ afterEach(() => {
28
+ vi.useRealTimers();
29
+ });
30
+ it("reads the roster from the borrowed peer and consults excludeSession for each session", async () => {
31
+ const peer = borrowedPeer();
32
+ const excludeSession = vi.fn(() => true);
33
+ const front = createDefaultCcPeerFront({
34
+ peer,
35
+ excludeSession,
36
+ pollIntervalMs: POLL_INTERVAL_MS,
37
+ });
38
+ front.start();
39
+ await vi.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
40
+ expect(peer.roster).toHaveBeenCalledTimes(1);
41
+ expect(excludeSession).toHaveBeenCalledWith(SESSION);
42
+ await front.stop();
43
+ });
44
+ it("never stops a peer it only borrowed", async () => {
45
+ const peer = borrowedPeer();
46
+ const front = createDefaultCcPeerFront({
47
+ peer,
48
+ excludeSession: () => true,
49
+ pollIntervalMs: POLL_INTERVAL_MS,
50
+ });
51
+ front.start();
52
+ await vi.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
53
+ await front.stop();
54
+ expect(peer.stop).not.toHaveBeenCalled();
55
+ });
56
+ it("attaches its inbound listener to the borrowed peer once, however many times the front is restarted", async () => {
57
+ const peer = borrowedPeer();
58
+ const front = createDefaultCcPeerFront({
59
+ peer,
60
+ excludeSession: () => true,
61
+ pollIntervalMs: POLL_INTERVAL_MS,
62
+ });
63
+ for (let cycle = 0; cycle < RESTART_CYCLES; cycle += 1) {
64
+ front.start();
65
+ await vi.advanceTimersByTimeAsync(POLL_INTERVAL_MS);
66
+ await front.stop();
67
+ }
68
+ expect(peer.on).toHaveBeenCalledTimes(1);
69
+ expect(peer.on).toHaveBeenCalledWith("message", expect.any(Function));
70
+ });
71
+ });
72
+ //# sourceMappingURL=cc-peer-front-runtime.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-peer-front-runtime.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-front-runtime.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cc-peer-shared-peer.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-peer-shared-peer.unit.test.d.ts","sourceRoot":"","sources":["../../src/test/cc-peer-shared-peer.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Direct unit tests for SharedPeer -- the lazily-created, process-wide holder of a cc-peer peer, exercised against a fake factory so no real socket is opened.
3
+ */
4
+ import { describe, expect, it, vi } from "vitest";
5
+ import { SharedPeer } from "../bridges/cc-peer/shared-peer.js";
6
+ describe("SharedPeer", () => {
7
+ it("does not create the peer until it is first asked for", () => {
8
+ const create = vi.fn(async () => Promise.resolve("peer"));
9
+ new SharedPeer(create);
10
+ expect(create).not.toHaveBeenCalled();
11
+ });
12
+ it("creates the peer once and hands every caller the same instance, including concurrent callers", async () => {
13
+ const create = vi.fn(async () => Promise.resolve({ id: 1 }));
14
+ const shared = new SharedPeer(create);
15
+ const [a, b] = await Promise.all([shared.get(), shared.get()]);
16
+ const c = await shared.get();
17
+ expect(create).toHaveBeenCalledTimes(1);
18
+ expect(a).toBe(b);
19
+ expect(a).toBe(c);
20
+ });
21
+ it("retries creation on the next request after a failed attempt instead of caching the rejection", async () => {
22
+ const create = vi
23
+ .fn()
24
+ .mockRejectedValueOnce(new Error("listen EADDRINUSE"))
25
+ .mockResolvedValue("peer");
26
+ const shared = new SharedPeer(create);
27
+ await expect(shared.get()).rejects.toThrow("listen EADDRINUSE");
28
+ await expect(shared.get()).resolves.toBe("peer");
29
+ expect(create).toHaveBeenCalledTimes(2);
30
+ });
31
+ it("release() returns the created peer and forgets it, so a later get() creates a fresh one", async () => {
32
+ const create = vi
33
+ .fn()
34
+ .mockResolvedValueOnce({ id: 1 })
35
+ .mockResolvedValueOnce({ id: 2 });
36
+ const shared = new SharedPeer(create);
37
+ const first = await shared.get();
38
+ expect(await shared.release()).toBe(first);
39
+ expect(await shared.get()).toEqual({ id: 2 });
40
+ });
41
+ it("release() returns undefined when no peer was ever created, or the creation failed", async () => {
42
+ const shared = new SharedPeer(async () => Promise.reject(new Error("boom")));
43
+ expect(await shared.release()).toBeUndefined();
44
+ await expect(shared.get()).rejects.toThrow("boom");
45
+ expect(await shared.release()).toBeUndefined();
46
+ });
47
+ });
48
+ //# sourceMappingURL=cc-peer-shared-peer.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cc-peer-shared-peer.unit.test.js","sourceRoot":"","sources":["../../src/test/cc-peer-shared-peer.unit.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chat-controller-mesh-errors.integration.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-controller-mesh-errors.integration.test.d.ts","sourceRoot":"","sources":["../../src/test/chat-controller-mesh-errors.integration.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Integration test for how a ChatController's own mesh store reports errors: to a listener on the controller's "error" event when the host UI has one (the TUI), and to stderr otherwise, since an "error" event nobody listens for would throw out of the store's callback.
3
+ */
4
+ import { afterEach, describe, expect, it, vi } from "vitest";
5
+ import { ChatController } from "../bridges/user/controller.js";
6
+ import { unreachableHubUrl } from "./hub-helpers.js";
7
+ import { waitFor } from "./test-transport.js";
8
+ let nextPort = 22_450;
9
+ function freshPort() {
10
+ nextPort += 1;
11
+ return nextPort;
12
+ }
13
+ describe("ChatController mesh errors", () => {
14
+ const controllers = [];
15
+ afterEach(async () => {
16
+ vi.restoreAllMocks();
17
+ for (const controller of controllers.splice(0)) {
18
+ await controller.shutdown();
19
+ }
20
+ });
21
+ async function startController() {
22
+ // Becoming coordinator dials the hub unconditionally, and this hub URL refuses connections, so the store reports a real error.
23
+ const controller = new ChatController("errors-test", {
24
+ coordinatorPort: freshPort(),
25
+ hubUrl: await unreachableHubUrl(),
26
+ });
27
+ controllers.push(controller);
28
+ return controller;
29
+ }
30
+ it("emits a mesh error on the controller's error event when a listener is attached", async () => {
31
+ const controller = await startController();
32
+ const errors = [];
33
+ controller.on("error", (error) => {
34
+ errors.push(error);
35
+ });
36
+ await controller.init();
37
+ await waitFor(() => errors.length > 0, "the hub dial failure is reported");
38
+ expect(errors[0]).toBeInstanceOf(Error);
39
+ });
40
+ it("writes a mesh error to stderr instead of throwing when nothing listens for the error event", async () => {
41
+ const controller = await startController();
42
+ const stderr = vi
43
+ .spyOn(process.stderr, "write")
44
+ .mockImplementation(() => true);
45
+ await controller.init();
46
+ await waitFor(() => stderr.mock.calls.some(([line]) => String(line).startsWith("agent-comms: ")), "the hub dial failure reaches stderr");
47
+ });
48
+ });
49
+ //# sourceMappingURL=chat-controller-mesh-errors.integration.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-controller-mesh-errors.integration.test.js","sourceRoot":"","sources":["../../src/test/chat-controller-mesh-errors.integration.test.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,IAAI,QAAQ,GAAG,MAAM,CAAC;AACtB,SAAS,SAAS;IAChB,QAAQ,IAAI,CAAC,CAAC;IACd,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,MAAM,WAAW,GAAqB,EAAE,CAAC;IAEzC,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,KAAK,MAAM,UAAU,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC9B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,KAAK,UAAU,eAAe;QAC5B,+HAA+H;QAC/H,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,aAAa,EAAE;YACnD,eAAe,EAAE,SAAS,EAAE;YAC5B,MAAM,EAAE,MAAM,iBAAiB,EAAE;SAClC,CAAC,CAAC;QACH,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,EAAE,CAAC,gFAAgF,EAAE,KAAK,IAAI,EAAE;QAC9F,MAAM,UAAU,GAAG,MAAM,eAAe,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAY,EAAE,CAAC;QAC3B,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAY,EAAE,EAAE;YACtC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QAExB,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,kCAAkC,CAAC,CAAC;QAC3E,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;QAC1G,MAAM,UAAU,GAAG,MAAM,eAAe,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG,EAAE;aACd,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC;aAC9B,kBAAkB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QAExB,MAAM,OAAO,CACX,GAAG,EAAE,CACH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAChC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,CACzC,EACH,qCAAqC,CACtC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=error-reporting.unit.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-reporting.unit.test.d.ts","sourceRoot":"","sources":["../../src/test/error-reporting.unit.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Unit tests for createMeshErrorReporter -- the default sink for a mesh store's error channel in the bridges that have no UI of their own.
3
+ */
4
+ import { describe, expect, it, vi } from "vitest";
5
+ import { createMeshErrorReporter, formatMeshError, } from "../core/error-reporting.js";
6
+ describe("formatMeshError", () => {
7
+ it("reports an error as one prefixed, newline-terminated line", () => {
8
+ expect(formatMeshError(new Error("listen EADDRINUSE"))).toBe("agent-comms: listen EADDRINUSE\n");
9
+ });
10
+ });
11
+ describe("createMeshErrorReporter", () => {
12
+ it("writes each error to the sink as one prefixed line", () => {
13
+ const write = vi.fn();
14
+ const report = createMeshErrorReporter(write);
15
+ report(new Error("listen EADDRINUSE"));
16
+ report(new Error("hub unreachable"));
17
+ expect(write.mock.calls).toEqual([
18
+ ["agent-comms: listen EADDRINUSE\n"],
19
+ ["agent-comms: hub unreachable\n"],
20
+ ]);
21
+ });
22
+ it("writes to the real process stderr by default", () => {
23
+ const stderr = vi
24
+ .spyOn(process.stderr, "write")
25
+ .mockImplementation(() => true);
26
+ try {
27
+ createMeshErrorReporter()(new Error("boom"));
28
+ expect(stderr).toHaveBeenCalledWith("agent-comms: boom\n");
29
+ }
30
+ finally {
31
+ stderr.mockRestore();
32
+ }
33
+ });
34
+ });
35
+ //# sourceMappingURL=error-reporting.unit.test.js.map