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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +3 -1
- package/dist/bridges/cc-peer/bridge.d.ts +14 -0
- package/dist/bridges/cc-peer/bridge.d.ts.map +1 -1
- package/dist/bridges/cc-peer/bridge.js +37 -11
- package/dist/bridges/cc-peer/bridge.js.map +1 -1
- package/dist/bridges/cc-peer/default-front.d.ts +4 -0
- package/dist/bridges/cc-peer/default-front.d.ts.map +1 -1
- package/dist/bridges/cc-peer/default-front.js +2 -0
- package/dist/bridges/cc-peer/default-front.js.map +1 -1
- package/dist/bridges/cc-peer/front-controller.d.ts +2 -0
- package/dist/bridges/cc-peer/front-controller.d.ts.map +1 -1
- package/dist/bridges/cc-peer/front-controller.js +1 -1
- package/dist/bridges/cc-peer/front-controller.js.map +1 -1
- package/dist/bridges/cc-peer/front-runtime.d.ts +13 -1
- package/dist/bridges/cc-peer/front-runtime.d.ts.map +1 -1
- package/dist/bridges/cc-peer/front-runtime.js +22 -13
- package/dist/bridges/cc-peer/front-runtime.js.map +1 -1
- package/dist/bridges/cc-peer/run.d.ts.map +1 -1
- package/dist/bridges/cc-peer/run.js +10 -4
- package/dist/bridges/cc-peer/run.js.map +1 -1
- package/dist/bridges/cc-peer/shared-peer.d.ts +16 -0
- package/dist/bridges/cc-peer/shared-peer.d.ts.map +1 -0
- package/dist/bridges/cc-peer/shared-peer.js +28 -0
- package/dist/bridges/cc-peer/shared-peer.js.map +1 -0
- package/dist/bridges/claude-code/channel.d.ts.map +1 -1
- package/dist/bridges/claude-code/channel.js +2 -1
- package/dist/bridges/claude-code/channel.js.map +1 -1
- package/dist/bridges/codex/tool.d.ts.map +1 -1
- package/dist/bridges/codex/tool.js +2 -1
- package/dist/bridges/codex/tool.js.map +1 -1
- package/dist/bridges/mcp/server.d.ts.map +1 -1
- package/dist/bridges/mcp/server.js +2 -1
- package/dist/bridges/mcp/server.js.map +1 -1
- package/dist/bridges/opencode/plugin.d.ts.map +1 -1
- package/dist/bridges/opencode/plugin.js +2 -1
- package/dist/bridges/opencode/plugin.js.map +1 -1
- package/dist/bridges/pi/extension.d.ts.map +1 -1
- package/dist/bridges/pi/extension.js +5 -1
- package/dist/bridges/pi/extension.js.map +1 -1
- package/dist/bridges/user/controller.d.ts.map +1 -1
- package/dist/bridges/user/controller.js +9 -1
- package/dist/bridges/user/controller.js.map +1 -1
- package/dist/core/error-reporting.d.ts +8 -0
- package/dist/core/error-reporting.d.ts.map +1 -0
- package/dist/core/error-reporting.js +16 -0
- package/dist/core/error-reporting.js.map +1 -0
- package/dist/core/identity-store.d.ts.map +1 -1
- package/dist/core/identity-store.js +4 -2
- package/dist/core/identity-store.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/test/cc-peer-bridge.unit.test.js +121 -8
- package/dist/test/cc-peer-bridge.unit.test.js.map +1 -1
- package/dist/test/cc-peer-default-front.unit.test.js +12 -0
- package/dist/test/cc-peer-default-front.unit.test.js.map +1 -1
- package/dist/test/cc-peer-front-controller.unit.test.js +30 -0
- package/dist/test/cc-peer-front-controller.unit.test.js.map +1 -1
- package/dist/test/cc-peer-front-runtime.unit.test.d.ts +2 -0
- package/dist/test/cc-peer-front-runtime.unit.test.d.ts.map +1 -0
- package/dist/test/cc-peer-front-runtime.unit.test.js +72 -0
- package/dist/test/cc-peer-front-runtime.unit.test.js.map +1 -0
- package/dist/test/cc-peer-shared-peer.unit.test.d.ts +2 -0
- package/dist/test/cc-peer-shared-peer.unit.test.d.ts.map +1 -0
- package/dist/test/cc-peer-shared-peer.unit.test.js +48 -0
- package/dist/test/cc-peer-shared-peer.unit.test.js.map +1 -0
- package/dist/test/chat-controller-mesh-errors.integration.test.d.ts +2 -0
- package/dist/test/chat-controller-mesh-errors.integration.test.d.ts.map +1 -0
- package/dist/test/chat-controller-mesh-errors.integration.test.js +49 -0
- package/dist/test/chat-controller-mesh-errors.integration.test.js.map +1 -0
- package/dist/test/error-reporting.unit.test.d.ts +2 -0
- package/dist/test/error-reporting.unit.test.d.ts.map +1 -0
- package/dist/test/error-reporting.unit.test.js +35 -0
- package/dist/test/error-reporting.unit.test.js.map +1 -0
- package/dist/test/identity-store-wait.unit.test.d.ts +2 -0
- package/dist/test/identity-store-wait.unit.test.d.ts.map +1 -0
- package/dist/test/identity-store-wait.unit.test.js +75 -0
- package/dist/test/identity-store-wait.unit.test.js.map +1 -0
- 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 = {
|
|
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
|
-
|
|
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 = {
|
|
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 = {
|
|
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 = {
|
|
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":"AAAA;;GAEG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAClD,OAAO,
|
|
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":"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"}
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|