agent-comms 2.21.14 → 2.21.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/test/room-messaging.test.d.ts +2 -0
- package/dist/test/room-messaging.test.d.ts.map +1 -0
- package/dist/test/room-messaging.test.js +328 -0
- package/dist/test/room-messaging.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/ExaDev/agent-comms)
|
|
4
4
|
[](https://www.npmjs.com/package/agent-comms)
|
|
5
|
-
[](https://github.com/ExaDev/agent-comms/releases/tag/v2.21.15)
|
|
6
6
|
[](https://github.com/ExaDev/agent-comms/actions)
|
|
7
7
|
|
|
8
8
|
Cross-harness communication mesh for LLM agents: rooms, DMs, presence, and visibility over TCP with zero filesystem dependencies.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-messaging.test.d.ts","sourceRoot":"","sources":["../../src/test/room-messaging.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,328 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Direct, DI-based unit tests for RoomMessaging -- it was previously exercised only indirectly through end-to-end room-send integration tests, leaving many individual branches (optional-field spreads, error message text, since-filtering boundaries, self-DM vs cross-DM key derivation) unobserved. RoomMessagingDeps is a narrow, injectable surface built exactly for this. loadRoomTokens is a free function reading a real identity file, not part of the injectable deps -- mocked here since RoomMessaging only ever forwards its return value opaquely, never inspects or verifies it.
|
|
3
|
+
*
|
|
4
|
+
* Two mutants Stryker raises against readRoomMessages' `since === undefined || since === ""` check are practical equivalents, not gaps -- documented here rather than chased with a contrived test. Both replace the `since === ""` comparison (one with the literal `false`, one with `since === "Stryker was here!"`) and both share the identical root cause: whenever the real code's early-return branch would fire on `since === ""`, the mutant instead falls through to `arr.filter(m => m.timestamp > since)` with `since` still `""` -- and every RoomMessage in this codebase is constructed with `new Date().toISOString()`, never an empty string, so `m.timestamp > ""` is true for every real message regardless of which branch runs. The early-return and the filter produce identical output for any timestamp this codebase can actually produce; only a RoomMessage with an empty-string timestamp (violating that invariant) would distinguish them, and fabricating one would be exactly the kind of contrived test this repo's own convention (see stale-agent-checker.test.ts) says to document instead of force.
|
|
5
|
+
*/
|
|
6
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
7
|
+
import { dmRoomPath } from "../core/room-path.js";
|
|
8
|
+
import { loadRoomTokens } from "../core/identity-store.js";
|
|
9
|
+
import { RoomMessaging, } from "../core/room-messaging.js";
|
|
10
|
+
vi.mock("../core/identity-store.js", () => ({
|
|
11
|
+
loadRoomTokens: vi.fn(),
|
|
12
|
+
}));
|
|
13
|
+
// Opaque placeholder: RoomMessaging never inspects a token's own COSE_Sign1 structure, only forwards whatever loadRoomTokens returns to sendRoomRequestToMember -- so any distinguishable value stands in for a real one in these tests.
|
|
14
|
+
const FAKE_TOKEN = "fake-token";
|
|
15
|
+
/** A device-id is a 64-character lowercase hex SHA-256 digest; room-path.ts's assertDeviceIdHex rejects anything shorter. */
|
|
16
|
+
const DEVICE_ID_HEX_LENGTH = 64;
|
|
17
|
+
/** A message/token id is 16 random bytes, hex-encoded to 32 characters -- randomId()'s own convention, matched here so bytesFromHex doesn't reject the fixture. */
|
|
18
|
+
const MESSAGE_ID_BYTE_LENGTH = 16;
|
|
19
|
+
const FROM_DEVICE_ID = "a".repeat(DEVICE_ID_HEX_LENGTH);
|
|
20
|
+
const TO_DEVICE_ID = "b".repeat(DEVICE_ID_HEX_LENGTH);
|
|
21
|
+
const NOW_MS = 1_700_000_000_000;
|
|
22
|
+
function room(overrides = {}) {
|
|
23
|
+
return {
|
|
24
|
+
id: "room-1",
|
|
25
|
+
version: 1,
|
|
26
|
+
name: "room-name",
|
|
27
|
+
type: "public",
|
|
28
|
+
owner: FROM_DEVICE_ID,
|
|
29
|
+
createdAt: "2026-01-01T00:00:00.000Z",
|
|
30
|
+
description: "",
|
|
31
|
+
members: [FROM_DEVICE_ID],
|
|
32
|
+
invited: [],
|
|
33
|
+
memberJoins: {},
|
|
34
|
+
memberLeaves: {},
|
|
35
|
+
invitedJoins: {},
|
|
36
|
+
invitedLeaves: {},
|
|
37
|
+
...overrides,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
function agent(overrides = {}) {
|
|
41
|
+
return {
|
|
42
|
+
id: TO_DEVICE_ID,
|
|
43
|
+
version: 1,
|
|
44
|
+
name: "recipient",
|
|
45
|
+
harness: "pi",
|
|
46
|
+
cwd: "/tmp",
|
|
47
|
+
pid: 111,
|
|
48
|
+
startedAt: "2026-01-01T00:00:00.000Z",
|
|
49
|
+
visibility: "visible",
|
|
50
|
+
status: "active",
|
|
51
|
+
tags: [],
|
|
52
|
+
subscribedRooms: [],
|
|
53
|
+
...overrides,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function makeHarness() {
|
|
57
|
+
const sendRoomRequestToMember = vi.fn().mockResolvedValue(undefined);
|
|
58
|
+
const forwardRoomMessage = vi.fn().mockResolvedValue(undefined);
|
|
59
|
+
const deps = {
|
|
60
|
+
rooms: new Map(),
|
|
61
|
+
messages: new Map(),
|
|
62
|
+
dms: new Map(),
|
|
63
|
+
agents: new Map(),
|
|
64
|
+
requireIdentity: () => ({
|
|
65
|
+
slot: { harness: "pi", cwd: "/tmp" },
|
|
66
|
+
clock: { now: () => NOW_MS },
|
|
67
|
+
identity: {},
|
|
68
|
+
revocation: {},
|
|
69
|
+
}),
|
|
70
|
+
roomProtocol: { sendRoomRequestToMember },
|
|
71
|
+
federation: { forwardRoomMessage },
|
|
72
|
+
};
|
|
73
|
+
return {
|
|
74
|
+
deps,
|
|
75
|
+
messaging: new RoomMessaging(deps),
|
|
76
|
+
sendRoomRequestToMember,
|
|
77
|
+
forwardRoomMessage,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
beforeEach(() => {
|
|
81
|
+
vi.mocked(loadRoomTokens).mockReset();
|
|
82
|
+
vi.mocked(loadRoomTokens).mockReturnValue({ "room-1": FAKE_TOKEN });
|
|
83
|
+
});
|
|
84
|
+
describe("RoomMessaging — sendRoomMessage", () => {
|
|
85
|
+
it("throws ROOM_NOT_FOUND naming the exact room id when the room doesn't exist", async () => {
|
|
86
|
+
const h = makeHarness();
|
|
87
|
+
await expect(h.messaging.sendRoomMessage("no-such-room", FROM_DEVICE_ID, "hi")).rejects.toMatchObject({
|
|
88
|
+
message: "Room no-such-room not found",
|
|
89
|
+
code: "ROOM_NOT_FOUND",
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
it("throws NOT_MEMBER naming the exact room id when the sender isn't a member", async () => {
|
|
93
|
+
const h = makeHarness();
|
|
94
|
+
h.deps.rooms.set("room-1", room({ members: [] }));
|
|
95
|
+
await expect(h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi")).rejects.toMatchObject({
|
|
96
|
+
message: "Not a member of room-1",
|
|
97
|
+
code: "NOT_MEMBER",
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
it("throws NOT_MEMBER naming the exact room id when no room:member token is persisted", async () => {
|
|
101
|
+
const h = makeHarness();
|
|
102
|
+
h.deps.rooms.set("room-1", room());
|
|
103
|
+
vi.mocked(loadRoomTokens).mockReturnValue({});
|
|
104
|
+
await expect(h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi")).rejects.toMatchObject({
|
|
105
|
+
message: "No room:member token for room-1",
|
|
106
|
+
code: "NOT_MEMBER",
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
it("stores the message and records it in the room's history", async () => {
|
|
110
|
+
const h = makeHarness();
|
|
111
|
+
h.deps.rooms.set("room-1", room());
|
|
112
|
+
const message = await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hello");
|
|
113
|
+
expect(h.deps.messages.get("room-1")).toEqual([message]);
|
|
114
|
+
expect(message.content).toBe("hello");
|
|
115
|
+
expect(message.readBy).toEqual([FROM_DEVICE_ID]);
|
|
116
|
+
});
|
|
117
|
+
it("includes replyTo only when explicitly given", async () => {
|
|
118
|
+
const h = makeHarness();
|
|
119
|
+
h.deps.rooms.set("room-1", room());
|
|
120
|
+
const replyToId = "aa".repeat(MESSAGE_ID_BYTE_LENGTH);
|
|
121
|
+
const withReply = await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi", replyToId);
|
|
122
|
+
expect(withReply.replyTo).toBe(replyToId);
|
|
123
|
+
const withoutReply = await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi");
|
|
124
|
+
expect(withoutReply).not.toHaveProperty("replyTo");
|
|
125
|
+
});
|
|
126
|
+
it("includes streamingBehavior on the stored message only when given", async () => {
|
|
127
|
+
const h = makeHarness();
|
|
128
|
+
h.deps.rooms.set("room-1", room());
|
|
129
|
+
const withBehavior = await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi", undefined, "steer");
|
|
130
|
+
expect(withBehavior.streamingBehavior).toBe("steer");
|
|
131
|
+
const withoutBehavior = await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi");
|
|
132
|
+
expect(withoutBehavior).not.toHaveProperty("streamingBehavior");
|
|
133
|
+
});
|
|
134
|
+
it("forwards to federated links only when the room is federated", async () => {
|
|
135
|
+
const federated = makeHarness();
|
|
136
|
+
federated.deps.rooms.set("room-1", room({ federated: true }));
|
|
137
|
+
await federated.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi");
|
|
138
|
+
expect(federated.forwardRoomMessage).toHaveBeenCalledTimes(1);
|
|
139
|
+
const plain = makeHarness();
|
|
140
|
+
plain.deps.rooms.set("room-1", room({ federated: false }));
|
|
141
|
+
await plain.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi");
|
|
142
|
+
expect(plain.forwardRoomMessage).not.toHaveBeenCalled();
|
|
143
|
+
});
|
|
144
|
+
it("sends a directed request to every other member, never to the sender itself", async () => {
|
|
145
|
+
const h = makeHarness();
|
|
146
|
+
h.deps.rooms.set("room-1", room({ members: [FROM_DEVICE_ID, "member-b", "member-c"] }));
|
|
147
|
+
await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi");
|
|
148
|
+
expect(h.sendRoomRequestToMember).toHaveBeenCalledTimes(2);
|
|
149
|
+
expect(h.sendRoomRequestToMember).toHaveBeenCalledWith("member-b", "room-1", FAKE_TOKEN, expect.anything());
|
|
150
|
+
expect(h.sendRoomRequestToMember).toHaveBeenCalledWith("member-c", "room-1", FAKE_TOKEN, expect.anything());
|
|
151
|
+
});
|
|
152
|
+
it('includes a refs entry with relation "reply" in the wire params only when replyTo is given', async () => {
|
|
153
|
+
const h = makeHarness();
|
|
154
|
+
h.deps.rooms.set("room-1", room({ members: [FROM_DEVICE_ID, "member-b"] }));
|
|
155
|
+
const replyToId = "aa".repeat(MESSAGE_ID_BYTE_LENGTH);
|
|
156
|
+
await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi", replyToId);
|
|
157
|
+
const params = h.sendRoomRequestToMember.mock.calls[0]?.[3];
|
|
158
|
+
expect(params.refs).toEqual([
|
|
159
|
+
{ id: expect.any(Uint8Array), relation: "reply" },
|
|
160
|
+
]);
|
|
161
|
+
});
|
|
162
|
+
it("omits refs from the wire params when no replyTo is given", async () => {
|
|
163
|
+
const h = makeHarness();
|
|
164
|
+
h.deps.rooms.set("room-1", room({ members: [FROM_DEVICE_ID, "member-b"] }));
|
|
165
|
+
await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi");
|
|
166
|
+
const params = h.sendRoomRequestToMember.mock.calls[0]?.[3];
|
|
167
|
+
expect(params).not.toHaveProperty("refs");
|
|
168
|
+
});
|
|
169
|
+
it("includes streaming-behavior in the wire params only when given", async () => {
|
|
170
|
+
const h = makeHarness();
|
|
171
|
+
h.deps.rooms.set("room-1", room({ members: [FROM_DEVICE_ID, "member-b"] }));
|
|
172
|
+
await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi", undefined, "steer");
|
|
173
|
+
const params = h.sendRoomRequestToMember.mock.calls[0]?.[3];
|
|
174
|
+
expect(params["streaming-behavior"]).toBe("steer");
|
|
175
|
+
});
|
|
176
|
+
it("omits streaming-behavior from the wire params when not given", async () => {
|
|
177
|
+
const h = makeHarness();
|
|
178
|
+
h.deps.rooms.set("room-1", room({ members: [FROM_DEVICE_ID, "member-b"] }));
|
|
179
|
+
await h.messaging.sendRoomMessage("room-1", FROM_DEVICE_ID, "hi");
|
|
180
|
+
const params = h.sendRoomRequestToMember.mock.calls[0]?.[3];
|
|
181
|
+
expect(params).not.toHaveProperty("streaming-behavior");
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
describe("RoomMessaging — readRoomMessages", () => {
|
|
185
|
+
const OLDER = "2026-01-01T00:00:00.000Z";
|
|
186
|
+
const MIDDLE = "2026-01-01T00:05:00.000Z";
|
|
187
|
+
const NEWER = "2026-01-01T00:10:00.000Z";
|
|
188
|
+
function seeded(h) {
|
|
189
|
+
h.deps.messages.set("room-1", [
|
|
190
|
+
{
|
|
191
|
+
id: "m1",
|
|
192
|
+
from: "a",
|
|
193
|
+
room: "room-1",
|
|
194
|
+
content: "old",
|
|
195
|
+
timestamp: OLDER,
|
|
196
|
+
readBy: [],
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
id: "m2",
|
|
200
|
+
from: "a",
|
|
201
|
+
room: "room-1",
|
|
202
|
+
content: "mid",
|
|
203
|
+
timestamp: MIDDLE,
|
|
204
|
+
readBy: [],
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
id: "m3",
|
|
208
|
+
from: "a",
|
|
209
|
+
room: "room-1",
|
|
210
|
+
content: "new",
|
|
211
|
+
timestamp: NEWER,
|
|
212
|
+
readBy: [],
|
|
213
|
+
},
|
|
214
|
+
]);
|
|
215
|
+
}
|
|
216
|
+
it("returns the full history when since is omitted", async () => {
|
|
217
|
+
const h = makeHarness();
|
|
218
|
+
seeded(h);
|
|
219
|
+
const result = await h.messaging.readRoomMessages("room-1");
|
|
220
|
+
expect(result.map((m) => m.id)).toEqual(["m1", "m2", "m3"]);
|
|
221
|
+
});
|
|
222
|
+
it("returns the full history when since is an empty string", async () => {
|
|
223
|
+
const h = makeHarness();
|
|
224
|
+
seeded(h);
|
|
225
|
+
const result = await h.messaging.readRoomMessages("room-1", "");
|
|
226
|
+
expect(result.map((m) => m.id)).toEqual(["m1", "m2", "m3"]);
|
|
227
|
+
});
|
|
228
|
+
it("returns only messages strictly newer than a real since timestamp", async () => {
|
|
229
|
+
const h = makeHarness();
|
|
230
|
+
seeded(h);
|
|
231
|
+
const result = await h.messaging.readRoomMessages("room-1", MIDDLE);
|
|
232
|
+
expect(result.map((m) => m.id)).toEqual(["m3"]);
|
|
233
|
+
});
|
|
234
|
+
it("returns an empty array for a room with no history", async () => {
|
|
235
|
+
const h = makeHarness();
|
|
236
|
+
const result = await h.messaging.readRoomMessages("no-such-room");
|
|
237
|
+
expect(result).toEqual([]);
|
|
238
|
+
});
|
|
239
|
+
it("filters out every message for an arbitrary since lexically greater than any real timestamp", async () => {
|
|
240
|
+
const h = makeHarness();
|
|
241
|
+
seeded(h);
|
|
242
|
+
// Lexically greater than any real ISO timestamp (which starts with a digit) -- proves filtering genuinely runs and genuinely excludes messages for a since value that isn't "" or undefined, distinct from the empty-string shortcut covered (and its equivalent mutants documented) above.
|
|
243
|
+
const result = await h.messaging.readRoomMessages("room-1", "not-a-real-timestamp");
|
|
244
|
+
expect(result).toEqual([]);
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
describe("RoomMessaging — sendDm", () => {
|
|
248
|
+
it("throws AGENT_NOT_FOUND naming the exact recipient id when the recipient doesn't exist", async () => {
|
|
249
|
+
const h = makeHarness();
|
|
250
|
+
await expect(h.messaging.sendDm(FROM_DEVICE_ID, TO_DEVICE_ID, "hi")).rejects.toMatchObject({
|
|
251
|
+
message: `Agent ${TO_DEVICE_ID} not found`,
|
|
252
|
+
code: "AGENT_NOT_FOUND",
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
it("throws AGENT_NOT_FOUND naming the exact recipient id when the recipient has ghost visibility", async () => {
|
|
256
|
+
const h = makeHarness();
|
|
257
|
+
h.deps.agents.set(TO_DEVICE_ID, agent({ visibility: "ghost" }));
|
|
258
|
+
await expect(h.messaging.sendDm(FROM_DEVICE_ID, TO_DEVICE_ID, "hi")).rejects.toMatchObject({
|
|
259
|
+
message: `Cannot DM agent ${TO_DEVICE_ID}`,
|
|
260
|
+
code: "AGENT_NOT_FOUND",
|
|
261
|
+
});
|
|
262
|
+
});
|
|
263
|
+
it("skips recipient validation entirely for a self-DM", async () => {
|
|
264
|
+
const h = makeHarness();
|
|
265
|
+
const message = await h.messaging.sendDm(FROM_DEVICE_ID, FROM_DEVICE_ID, "note to self");
|
|
266
|
+
expect(message.content).toBe("note to self");
|
|
267
|
+
});
|
|
268
|
+
it("stores a self-DM under a self:<id> key and never dials out", async () => {
|
|
269
|
+
const h = makeHarness();
|
|
270
|
+
const message = await h.messaging.sendDm(FROM_DEVICE_ID, FROM_DEVICE_ID, "note to self");
|
|
271
|
+
expect(h.deps.dms.get(`self:${FROM_DEVICE_ID}`)).toEqual([message]);
|
|
272
|
+
expect(h.sendRoomRequestToMember).not.toHaveBeenCalled();
|
|
273
|
+
});
|
|
274
|
+
it("stores a cross-agent DM under the sorted dmRoomPath key and dials the recipient", async () => {
|
|
275
|
+
const h = makeHarness();
|
|
276
|
+
h.deps.agents.set(TO_DEVICE_ID, agent());
|
|
277
|
+
vi.mocked(loadRoomTokens).mockReturnValue({
|
|
278
|
+
[dmRoomPath(FROM_DEVICE_ID, TO_DEVICE_ID)]: FAKE_TOKEN,
|
|
279
|
+
});
|
|
280
|
+
const message = await h.messaging.sendDm(FROM_DEVICE_ID, TO_DEVICE_ID, "hi");
|
|
281
|
+
const key = dmRoomPath(FROM_DEVICE_ID, TO_DEVICE_ID);
|
|
282
|
+
expect(h.deps.dms.get(key)).toEqual([message]);
|
|
283
|
+
expect(h.sendRoomRequestToMember).toHaveBeenCalledWith(TO_DEVICE_ID, key, FAKE_TOKEN, expect.anything());
|
|
284
|
+
});
|
|
285
|
+
it("sets readBy to exactly the sender on a new DM", async () => {
|
|
286
|
+
const h = makeHarness();
|
|
287
|
+
const message = await h.messaging.sendDm(FROM_DEVICE_ID, FROM_DEVICE_ID, "hi");
|
|
288
|
+
expect(message.readBy).toEqual([FROM_DEVICE_ID]);
|
|
289
|
+
});
|
|
290
|
+
it("includes streamingBehavior on the stored message only when given", async () => {
|
|
291
|
+
const h = makeHarness();
|
|
292
|
+
const withBehavior = await h.messaging.sendDm(FROM_DEVICE_ID, FROM_DEVICE_ID, "hi", "followUp");
|
|
293
|
+
expect(withBehavior.streamingBehavior).toBe("followUp");
|
|
294
|
+
const withoutBehavior = await h.messaging.sendDm(FROM_DEVICE_ID, FROM_DEVICE_ID, "hi");
|
|
295
|
+
expect(withoutBehavior).not.toHaveProperty("streamingBehavior");
|
|
296
|
+
});
|
|
297
|
+
it("throws NOT_MEMBER naming the exact dm key when no room:member token is persisted for a cross-agent DM", async () => {
|
|
298
|
+
const h = makeHarness();
|
|
299
|
+
h.deps.agents.set(TO_DEVICE_ID, agent());
|
|
300
|
+
vi.mocked(loadRoomTokens).mockReturnValue({});
|
|
301
|
+
const key = dmRoomPath(FROM_DEVICE_ID, TO_DEVICE_ID);
|
|
302
|
+
await expect(h.messaging.sendDm(FROM_DEVICE_ID, TO_DEVICE_ID, "hi")).rejects.toMatchObject({
|
|
303
|
+
message: `No room:member token for ${key}`,
|
|
304
|
+
code: "NOT_MEMBER",
|
|
305
|
+
});
|
|
306
|
+
});
|
|
307
|
+
it("includes streaming-behavior in the wire params only when given, for a cross-agent DM", async () => {
|
|
308
|
+
const h = makeHarness();
|
|
309
|
+
h.deps.agents.set(TO_DEVICE_ID, agent());
|
|
310
|
+
vi.mocked(loadRoomTokens).mockReturnValue({
|
|
311
|
+
[dmRoomPath(FROM_DEVICE_ID, TO_DEVICE_ID)]: FAKE_TOKEN,
|
|
312
|
+
});
|
|
313
|
+
await h.messaging.sendDm(FROM_DEVICE_ID, TO_DEVICE_ID, "hi", "info");
|
|
314
|
+
const params = h.sendRoomRequestToMember.mock.calls[0]?.[3];
|
|
315
|
+
expect(params["streaming-behavior"]).toBe("info");
|
|
316
|
+
});
|
|
317
|
+
it("omits streaming-behavior from the wire params when not given, for a cross-agent DM", async () => {
|
|
318
|
+
const h = makeHarness();
|
|
319
|
+
h.deps.agents.set(TO_DEVICE_ID, agent());
|
|
320
|
+
vi.mocked(loadRoomTokens).mockReturnValue({
|
|
321
|
+
[dmRoomPath(FROM_DEVICE_ID, TO_DEVICE_ID)]: FAKE_TOKEN,
|
|
322
|
+
});
|
|
323
|
+
await h.messaging.sendDm(FROM_DEVICE_ID, TO_DEVICE_ID, "hi");
|
|
324
|
+
const params = h.sendRoomRequestToMember.mock.calls[0]?.[3];
|
|
325
|
+
expect(params).not.toHaveProperty("streaming-behavior");
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
//# sourceMappingURL=room-messaging.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-messaging.test.js","sourceRoot":"","sources":["../../src/test/room-messaging.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": "2.21.
|
|
3
|
+
"version": "2.21.15",
|
|
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",
|