agent-comms 2.27.0 → 2.29.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.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +1 -1
- package/dist/core/agent-registry.d.ts +6 -0
- package/dist/core/agent-registry.d.ts.map +1 -1
- package/dist/core/agent-registry.js +59 -0
- package/dist/core/agent-registry.js.map +1 -1
- package/dist/core/bridge-mesh.d.ts.map +1 -1
- package/dist/core/bridge-mesh.js +1 -1
- package/dist/core/bridge-mesh.js.map +1 -1
- package/dist/core/delivery-engine.d.ts +3 -0
- package/dist/core/delivery-engine.d.ts.map +1 -1
- package/dist/core/delivery-engine.js +17 -1
- package/dist/core/delivery-engine.js.map +1 -1
- package/dist/core/mesh-store.d.ts +3 -1
- package/dist/core/mesh-store.d.ts.map +1 -1
- package/dist/core/mesh-store.js +16 -0
- package/dist/core/mesh-store.js.map +1 -1
- package/dist/core/room-protocol.d.ts +4 -0
- package/dist/core/room-protocol.d.ts.map +1 -1
- package/dist/core/room-protocol.js +40 -1
- package/dist/core/room-protocol.js.map +1 -1
- package/dist/core/wire-mesh-transport.d.ts +13 -1
- package/dist/core/wire-mesh-transport.d.ts.map +1 -1
- package/dist/core/wire-mesh-transport.js +12 -2
- package/dist/core/wire-mesh-transport.js.map +1 -1
- package/dist/test/agent-registry.test.js +68 -0
- package/dist/test/agent-registry.test.js.map +1 -1
- package/dist/test/agent-self-gossip.integration.test.d.ts +5 -0
- package/dist/test/agent-self-gossip.integration.test.d.ts.map +1 -0
- package/dist/test/agent-self-gossip.integration.test.js +96 -0
- package/dist/test/agent-self-gossip.integration.test.js.map +1 -0
- package/dist/test/delivery-engine-delivery.test.js +0 -23
- package/dist/test/delivery-engine-delivery.test.js.map +1 -1
- package/dist/test/delivery-engine-directed-notify.test.d.ts +2 -0
- package/dist/test/delivery-engine-directed-notify.test.d.ts.map +1 -0
- package/dist/test/delivery-engine-directed-notify.test.js +170 -0
- package/dist/test/delivery-engine-directed-notify.test.js.map +1 -0
- package/dist/test/room-protocol-notify.test.d.ts +2 -0
- package/dist/test/room-protocol-notify.test.d.ts.map +1 -0
- package/dist/test/room-protocol-notify.test.js +178 -0
- package/dist/test/room-protocol-notify.test.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Direct, DI-based unit tests for RoomProtocol's handleRoomNotify (P3.8's directed-delivery replacement for informational events, agent-comms#48) -- moved into its own file to stay under the repo's max-lines cap once room-protocol.test.ts and room-protocol-admission.test.ts were already at capacity. Real identities and real minted tokens throughout, matching those two files' own established convention (handleRoomNotify genuinely verifies tokens cryptographically, so an opaque placeholder string fails the mint/verify outright).
|
|
3
|
+
*/
|
|
4
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
5
|
+
import * as fs from "node:fs";
|
|
6
|
+
import * as path from "node:path";
|
|
7
|
+
import { tmpdir } from "node:os";
|
|
8
|
+
import { bytesToHex, deviceIdFromHex } from "wire-mesh-core/domain/device-id";
|
|
9
|
+
import { mintCapabilityToken } from "wire-mesh-core/domain/tokens";
|
|
10
|
+
import { createSystemClock } from "wire-mesh-core/adapters/system-clock";
|
|
11
|
+
import { createRevocationView } from "wire-mesh-core/domain/revocation-view";
|
|
12
|
+
import { generateIdentity } from "../core/identity.js";
|
|
13
|
+
import { loadOrCreateIdentity } from "../core/identity-store.js";
|
|
14
|
+
import { toIdentityPort } from "../core/wire-mesh-identity.js";
|
|
15
|
+
import { ownerNamedRoomPath } from "../core/room-path.js";
|
|
16
|
+
import { RoomProtocol } from "../core/room-protocol.js";
|
|
17
|
+
import { randomId } from "../core/random-id.js";
|
|
18
|
+
const TOKEN_TTL_MS = 60_000;
|
|
19
|
+
function room(overrides = {}) {
|
|
20
|
+
return {
|
|
21
|
+
id: "room-1",
|
|
22
|
+
version: 1,
|
|
23
|
+
name: "room-name",
|
|
24
|
+
type: "public",
|
|
25
|
+
owner: "",
|
|
26
|
+
createdAt: "2026-01-01T00:00:00.000Z",
|
|
27
|
+
description: "a room",
|
|
28
|
+
members: [],
|
|
29
|
+
invited: [],
|
|
30
|
+
memberJoins: {},
|
|
31
|
+
memberLeaves: {},
|
|
32
|
+
invitedJoins: {},
|
|
33
|
+
invitedLeaves: {},
|
|
34
|
+
...overrides,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
async function makeIdentities() {
|
|
38
|
+
const owner = generateIdentity();
|
|
39
|
+
const member = generateIdentity();
|
|
40
|
+
return {
|
|
41
|
+
ownerId: bytesToHex(Uint8Array.from(owner.deviceId)),
|
|
42
|
+
ownerPort: await toIdentityPort(owner),
|
|
43
|
+
memberId: bytesToHex(Uint8Array.from(member.deviceId)),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
async function mintRoomToken(issuerPort, bearerHex, roomPath) {
|
|
47
|
+
const clock = createSystemClock();
|
|
48
|
+
const verdict = await mintCapabilityToken({
|
|
49
|
+
identity: issuerPort,
|
|
50
|
+
clock,
|
|
51
|
+
tokenId: randomId(),
|
|
52
|
+
bearer: deviceIdFromHex(bearerHex),
|
|
53
|
+
capability: "room:member",
|
|
54
|
+
scope: { kind: "room", path: roomPath },
|
|
55
|
+
expires: clock.now() + TOKEN_TTL_MS,
|
|
56
|
+
delegationsRemaining: 0,
|
|
57
|
+
});
|
|
58
|
+
if (!verdict.ok)
|
|
59
|
+
throw new Error("expected the fixture token to mint successfully");
|
|
60
|
+
return verdict.token;
|
|
61
|
+
}
|
|
62
|
+
async function makeHarness() {
|
|
63
|
+
const ids = await makeIdentities();
|
|
64
|
+
const slotDir = fs.mkdtempSync(path.join(tmpdir(), "room-protocol-notify-test-"));
|
|
65
|
+
const slot = { harness: "test", cwd: "room-protocol-notify", dir: slotDir };
|
|
66
|
+
loadOrCreateIdentity(slot);
|
|
67
|
+
const queueDelivery = vi.fn();
|
|
68
|
+
const fireLocalDelivery = vi.fn();
|
|
69
|
+
const deps = {
|
|
70
|
+
rooms: new Map(),
|
|
71
|
+
messages: new Map(),
|
|
72
|
+
dms: new Map(),
|
|
73
|
+
agents: new Map(),
|
|
74
|
+
dmRequestsInitiatedByMe: new Set(),
|
|
75
|
+
getPeerId: () => ids.ownerId,
|
|
76
|
+
requireIdentity: () => ({
|
|
77
|
+
identity: ids.ownerPort,
|
|
78
|
+
clock: createSystemClock(),
|
|
79
|
+
slot,
|
|
80
|
+
revocation: createRevocationView(),
|
|
81
|
+
dataStorage: {},
|
|
82
|
+
}),
|
|
83
|
+
requireTransport: () => ({}),
|
|
84
|
+
deliveryEngine: {
|
|
85
|
+
queueDelivery,
|
|
86
|
+
fireLocalDelivery,
|
|
87
|
+
bump: vi.fn(),
|
|
88
|
+
recordMemberOp: vi.fn(),
|
|
89
|
+
refreshMembership: vi.fn(),
|
|
90
|
+
broadcastPatch: vi.fn().mockResolvedValue(undefined),
|
|
91
|
+
deliverToRoom: vi.fn().mockResolvedValue(undefined),
|
|
92
|
+
},
|
|
93
|
+
revokeMemberGrant: vi.fn().mockResolvedValue(undefined),
|
|
94
|
+
};
|
|
95
|
+
return {
|
|
96
|
+
deps,
|
|
97
|
+
protocol: new RoomProtocol(deps),
|
|
98
|
+
ids,
|
|
99
|
+
queueDelivery,
|
|
100
|
+
fireLocalDelivery,
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
function handle(deviceHex) {
|
|
104
|
+
return { id: deviceHex };
|
|
105
|
+
}
|
|
106
|
+
function manageRequest(overrides = {}) {
|
|
107
|
+
return {
|
|
108
|
+
requestId: 1,
|
|
109
|
+
command: { verb: "room:member", params: overrides.params ?? {} },
|
|
110
|
+
scope: overrides.scope ?? { kind: "room" },
|
|
111
|
+
token: overrides.token,
|
|
112
|
+
respond: vi.fn().mockResolvedValue(undefined),
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
describe("RoomProtocol — handleRoomNotify", () => {
|
|
116
|
+
let h;
|
|
117
|
+
let ownerNamedRoom;
|
|
118
|
+
beforeEach(async () => {
|
|
119
|
+
h = await makeHarness();
|
|
120
|
+
ownerNamedRoom = ownerNamedRoomPath(h.ids.ownerId, "general");
|
|
121
|
+
h.deps.rooms.set(ownerNamedRoom, room({
|
|
122
|
+
id: ownerNamedRoom,
|
|
123
|
+
owner: h.ids.ownerId,
|
|
124
|
+
members: [h.ids.ownerId, h.ids.memberId],
|
|
125
|
+
}));
|
|
126
|
+
});
|
|
127
|
+
async function notify(params, token) {
|
|
128
|
+
const handler = h.protocol.roomVerbHandlers["room.notify"];
|
|
129
|
+
if (handler === undefined)
|
|
130
|
+
throw new Error("expected room.notify handler");
|
|
131
|
+
return handler(manageRequest({
|
|
132
|
+
scope: { kind: "room", path: ownerNamedRoom },
|
|
133
|
+
token,
|
|
134
|
+
params,
|
|
135
|
+
}), handle(h.ids.memberId));
|
|
136
|
+
}
|
|
137
|
+
it("returns missing_scope_path when the request carries no room path", async () => {
|
|
138
|
+
const handler = h.protocol.roomVerbHandlers["room.notify"];
|
|
139
|
+
if (handler === undefined)
|
|
140
|
+
throw new Error("expected room.notify handler");
|
|
141
|
+
const outcome = await handler(manageRequest({ scope: { kind: "room" } }), handle(h.ids.memberId));
|
|
142
|
+
expect(outcome).toEqual({ result: "error", code: "missing_scope_path" });
|
|
143
|
+
});
|
|
144
|
+
it("returns unauthorized when no token is presented", async () => {
|
|
145
|
+
const outcome = await notify({ verb: "room.notify", event: { type: "member_joined" } }, undefined);
|
|
146
|
+
expect(outcome).toEqual({ result: "error", code: "unauthorized" });
|
|
147
|
+
});
|
|
148
|
+
it("returns malformed_params for an event that doesn't parse as a real DeliveryEvent", async () => {
|
|
149
|
+
const token = await mintRoomToken(h.ids.ownerPort, h.ids.memberId, ownerNamedRoom);
|
|
150
|
+
const outcome = await notify({ verb: "room.notify", event: { type: "not-a-real-type" } }, token);
|
|
151
|
+
expect(outcome).toEqual({ result: "error", code: "malformed_params" });
|
|
152
|
+
});
|
|
153
|
+
it("returns malformed_params when the event's own room field doesn't match the token's verified scope", async () => {
|
|
154
|
+
const token = await mintRoomToken(h.ids.ownerPort, h.ids.memberId, ownerNamedRoom);
|
|
155
|
+
const event = {
|
|
156
|
+
type: "member_status",
|
|
157
|
+
room: "a-different-room-entirely",
|
|
158
|
+
agent: h.ids.memberId,
|
|
159
|
+
status: "idle",
|
|
160
|
+
};
|
|
161
|
+
const outcome = await notify({ verb: "room.notify", event }, token);
|
|
162
|
+
expect(outcome).toEqual({ result: "error", code: "malformed_params" });
|
|
163
|
+
});
|
|
164
|
+
it("queues and fires local delivery for a well-formed, correctly-scoped event", async () => {
|
|
165
|
+
const token = await mintRoomToken(h.ids.ownerPort, h.ids.memberId, ownerNamedRoom);
|
|
166
|
+
const event = {
|
|
167
|
+
type: "member_status",
|
|
168
|
+
room: ownerNamedRoom,
|
|
169
|
+
agent: h.ids.memberId,
|
|
170
|
+
status: "busy",
|
|
171
|
+
};
|
|
172
|
+
const outcome = await notify({ verb: "room.notify", event }, token);
|
|
173
|
+
expect(outcome).toEqual({ result: "ok" });
|
|
174
|
+
expect(h.queueDelivery).toHaveBeenCalledWith(h.ids.ownerId, event);
|
|
175
|
+
expect(h.fireLocalDelivery).toHaveBeenCalledWith(h.ids.ownerId, event);
|
|
176
|
+
});
|
|
177
|
+
});
|
|
178
|
+
//# sourceMappingURL=room-protocol-notify.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-protocol-notify.test.js","sourceRoot":"","sources":["../../src/test/room-protocol-notify.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.
|
|
3
|
+
"version": "2.29.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",
|