agent-comms 9.0.9 → 9.0.10

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 (42) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +1 -1
  4. package/dist/bridges/user/web/contract.d.ts +1 -1
  5. package/dist/bridges/user/web/contract.d.ts.map +1 -1
  6. package/dist/bridges/user/web/contract.js +3 -2
  7. package/dist/bridges/user/web/contract.js.map +1 -1
  8. package/dist/bridges/user/web/dist/bundle.js +1 -1
  9. package/dist/bridges/user/web/dist/mesh-worker.js +4 -4
  10. package/dist/bridges/user/web/dist/sw.js +1 -1
  11. package/dist/bridges/user/web/event-id.d.ts +10 -0
  12. package/dist/bridges/user/web/event-id.d.ts.map +1 -0
  13. package/dist/bridges/user/web/event-id.js +14 -0
  14. package/dist/bridges/user/web/event-id.js.map +1 -0
  15. package/dist/bridges/user/web/event-publisher.d.ts +13 -3
  16. package/dist/bridges/user/web/event-publisher.d.ts.map +1 -1
  17. package/dist/bridges/user/web/event-publisher.js +59 -16
  18. package/dist/bridges/user/web/event-publisher.js.map +1 -1
  19. package/dist/bridges/user/web/frontend/event-pump.d.ts +4 -2
  20. package/dist/bridges/user/web/frontend/event-pump.d.ts.map +1 -1
  21. package/dist/bridges/user/web/frontend/event-pump.js +25 -7
  22. package/dist/bridges/user/web/frontend/event-pump.js.map +1 -1
  23. package/dist/bridges/user/web/frontend/mesh-worker.d.ts.map +1 -1
  24. package/dist/bridges/user/web/frontend/mesh-worker.js +4 -3
  25. package/dist/bridges/user/web/frontend/mesh-worker.js.map +1 -1
  26. package/dist/bridges/user/web/router.d.ts.map +1 -1
  27. package/dist/bridges/user/web/router.js +5 -6
  28. package/dist/bridges/user/web/router.js.map +1 -1
  29. package/dist/bridges/user/web/test/event-publisher.unit.test.d.ts +2 -0
  30. package/dist/bridges/user/web/test/event-publisher.unit.test.d.ts.map +1 -0
  31. package/dist/bridges/user/web/test/event-publisher.unit.test.js +245 -0
  32. package/dist/bridges/user/web/test/event-publisher.unit.test.js.map +1 -0
  33. package/dist/bridges/user/web/test/orpc-router.integration.test.js +10 -0
  34. package/dist/bridges/user/web/test/orpc-router.integration.test.js.map +1 -1
  35. package/package.json +2 -2
  36. package/src/bridges/user/web/contract.ts +5 -2
  37. package/src/bridges/user/web/dist/bundle.js +1 -1
  38. package/src/bridges/user/web/dist/mesh-worker.js +4 -4
  39. package/src/bridges/user/web/dist/sw.js +1 -1
  40. package/src/bridges/user/web/event-id.ts +18 -0
  41. package/src/bridges/user/web/event-publisher.ts +68 -18
  42. package/src/bridges/user/web/router.ts +5 -7
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Resume rules of the event publisher: an id is `<instance>.<seq>`, a known id replays exactly the later events, and an id that cannot be resumed from (another instance, or older than the retained events) starts from a snapshot.
3
+ */
4
+ import { getEventMeta } from "@orpc/client";
5
+ import { afterEach, beforeEach, expect, it, vi } from "vitest";
6
+ import { meshContract } from "../contract.js";
7
+ import { INSTANCE_BYTES, MAX_EVENT_ID_LENGTH } from "../event-id.js";
8
+ import { MeshEventPublisher } from "../event-publisher.js";
9
+ /** Retention short enough to age events out by moving the faked clock. */
10
+ const RETENTION_MS = 1_000;
11
+ /** Hex characters of an instance. */
12
+ const INSTANCE_HEX_LENGTH = 16;
13
+ const EVENT_COUNT = 5;
14
+ const THREE = 3;
15
+ const TWO = 2;
16
+ beforeEach(() => {
17
+ vi.useFakeTimers();
18
+ });
19
+ afterEach(() => {
20
+ vi.useRealTimers();
21
+ });
22
+ const snapshot = () => ({
23
+ kind: "state_sync",
24
+ state: { agents: {}, rooms: {}, messages: {}, dms: {} },
25
+ });
26
+ function patch(name) {
27
+ return {
28
+ kind: "state_patch",
29
+ patch: { type: "agent_offline", agentId: name },
30
+ };
31
+ }
32
+ /** What a subscriber sees of an event: the agent id of a patch, or "snapshot". */
33
+ function label(event) {
34
+ if (event.kind === "state_sync")
35
+ return "snapshot";
36
+ if (event.kind === "state_patch" && "agentId" in event.patch) {
37
+ return event.patch.agentId;
38
+ }
39
+ throw new Error("unexpected event");
40
+ }
41
+ /** Takes `count` events of a new subscription (with `lastEventId` when given), then stops it. */
42
+ async function take(publisher, count, lastEventId) {
43
+ const labels = [];
44
+ const ids = [];
45
+ const subscription = publisher.subscribe({
46
+ ...(lastEventId === undefined ? {} : { lastEventId }),
47
+ snapshot,
48
+ });
49
+ while (labels.length < count) {
50
+ const next = await subscription.next();
51
+ if (next.done === true)
52
+ break;
53
+ labels.push(label(next.value));
54
+ ids.push(getEventMeta(next.value)?.id);
55
+ }
56
+ await subscription.return(undefined);
57
+ return { labels, ids };
58
+ }
59
+ /** The first event a new subscription yields, with a live event published right after subscribing: a subscriber that was wrongly treated as caught up gets that live event first, so the assertion fails instead of the test waiting for a snapshot that never comes. */
60
+ async function firstEvent(publisher, lastEventId) {
61
+ const subscription = publisher.subscribe({ lastEventId, snapshot });
62
+ const first = subscription.next();
63
+ publisher.publish(patch("live-probe"));
64
+ const next = await first;
65
+ await subscription.return(undefined);
66
+ if (next.done === true)
67
+ throw new Error("the subscription ended");
68
+ return label(next.value);
69
+ }
70
+ /** Publishes `e1` to `eN` and returns the id each was given, as a live subscriber saw them. */
71
+ async function publishNumbered(publisher, count, firstNumber = 1) {
72
+ const live = publisher.subscribe({ snapshot });
73
+ await live.next(); // snapshot
74
+ for (let n = firstNumber; n < firstNumber + count; n++) {
75
+ publisher.publish(patch(`e${String(n)}`));
76
+ }
77
+ const ids = [];
78
+ for (let n = 0; n < count; n++) {
79
+ const next = await live.next();
80
+ const id = next.done === true ? undefined : getEventMeta(next.value)?.id;
81
+ if (id === undefined)
82
+ throw new Error("expected an id");
83
+ ids.push(id);
84
+ }
85
+ await live.return(undefined);
86
+ return ids;
87
+ }
88
+ function idAt(ids, index) {
89
+ const id = ids[index];
90
+ if (id === undefined)
91
+ throw new Error("no such id");
92
+ return id;
93
+ }
94
+ it("numbers events as a 16 hex character instance and a sequence", async () => {
95
+ const ids = await publishNumbered(new MeshEventPublisher(), 2);
96
+ expect(ids[0]).toMatch(new RegExp(`^[0-9a-f]{${String(INSTANCE_HEX_LENGTH)}}\\.1$`, "u"));
97
+ expect(ids[1]?.split(".")[0]).toBe(ids[0]?.split(".")[0]);
98
+ expect(ids[1]?.endsWith(".2")).toBe(true);
99
+ });
100
+ it("gives two publishers different instances", async () => {
101
+ const [first] = await publishNumbered(new MeshEventPublisher(), 1);
102
+ const [second] = await publishNumbered(new MeshEventPublisher(), 1);
103
+ expect(first?.split(".")[0]).not.toBe(second?.split(".")[0]);
104
+ });
105
+ it("starts a subscriber with no id from a snapshot, then live events", async () => {
106
+ const publisher = new MeshEventPublisher();
107
+ await publishNumbered(publisher, 2);
108
+ const live = publisher.subscribe({ snapshot });
109
+ expect(label((await live.next()).value)).toBe("snapshot");
110
+ publisher.publish(patch("later"));
111
+ expect(label((await live.next()).value)).toBe("later");
112
+ await live.return(undefined);
113
+ });
114
+ it("replays exactly the events after a known id, and no snapshot", async () => {
115
+ const publisher = new MeshEventPublisher();
116
+ const ids = await publishNumbered(publisher, EVENT_COUNT);
117
+ const { labels } = await take(publisher, 2, idAt(ids, 2));
118
+ expect(labels).toEqual(["e4", "e5"]);
119
+ });
120
+ it("replays nothing for the latest id, then delivers live events", async () => {
121
+ const publisher = new MeshEventPublisher();
122
+ const ids = await publishNumbered(publisher, TWO);
123
+ const live = publisher.subscribe({ lastEventId: idAt(ids, 1), snapshot });
124
+ const first = live.next();
125
+ publisher.publish(patch("live"));
126
+ expect(label((await first).value)).toBe("live");
127
+ await live.return(undefined);
128
+ });
129
+ it("loses no event published while a replay is being delivered, and repeats none", async () => {
130
+ const publisher = new MeshEventPublisher();
131
+ const ids = await publishNumbered(publisher, THREE);
132
+ const live = publisher.subscribe({ lastEventId: idAt(ids, 0), snapshot });
133
+ const first = await live.next();
134
+ publisher.publish(patch("during"));
135
+ const rest = [await live.next(), await live.next()];
136
+ await live.return(undefined);
137
+ expect([first, ...rest].map((next) => label(next.value))).toEqual(["e2", "e3", "during"]);
138
+ });
139
+ it("starts from a snapshot when the id is from another instance, as after a restart", async () => {
140
+ const before = new MeshEventPublisher();
141
+ const staleIds = await publishNumbered(before, 2);
142
+ const restarted = new MeshEventPublisher();
143
+ await publishNumbered(restarted, 2);
144
+ expect(await firstEvent(restarted, idAt(staleIds, 0))).toBe("snapshot");
145
+ });
146
+ it("starts from a snapshot when the id is older than the oldest retained event", async () => {
147
+ const publisher = new MeshEventPublisher({ retentionMs: RETENTION_MS });
148
+ const ids = await publishNumbered(publisher, THREE);
149
+ vi.advanceTimersByTime(RETENTION_MS + 1);
150
+ await publishNumbered(publisher, TWO, THREE + 1);
151
+ expect(await firstEvent(publisher, idAt(ids, 0))).toBe("snapshot");
152
+ });
153
+ it("replays every retained event for the id just before the oldest one, since nothing is missing", async () => {
154
+ const publisher = new MeshEventPublisher({ retentionMs: RETENTION_MS });
155
+ const ids = await publishNumbered(publisher, THREE);
156
+ vi.advanceTimersByTime(RETENTION_MS + 1);
157
+ await publishNumbered(publisher, TWO, THREE + 1);
158
+ const { labels } = await take(publisher, 2, idAt(ids, 2));
159
+ expect(labels).toEqual(["e4", "e5"]);
160
+ });
161
+ it("starts from a snapshot when nothing is retained and the id is not the latest", async () => {
162
+ const publisher = new MeshEventPublisher({ retentionMs: RETENTION_MS });
163
+ const ids = await publishNumbered(publisher, TWO);
164
+ vi.advanceTimersByTime(RETENTION_MS + 1);
165
+ expect(await firstEvent(publisher, idAt(ids, 0))).toBe("snapshot");
166
+ });
167
+ it("treats the latest id as caught up when nothing is retained", async () => {
168
+ const publisher = new MeshEventPublisher({ retentionMs: RETENTION_MS });
169
+ const ids = await publishNumbered(publisher, TWO);
170
+ vi.advanceTimersByTime(RETENTION_MS + 1);
171
+ const live = publisher.subscribe({ lastEventId: idAt(ids, 1), snapshot });
172
+ const first = live.next();
173
+ publisher.publish(patch("live"));
174
+ expect(label((await first).value)).toBe("live");
175
+ await live.return(undefined);
176
+ });
177
+ it.each([
178
+ ["not an id", () => "abc"],
179
+ ["an instance with no sequence", (instance) => `${instance}.`],
180
+ ["a non-numeric sequence", (instance) => `${instance}.x`],
181
+ ["a signed sequence", (instance) => `${instance}.-1`],
182
+ ["a fractional sequence", (instance) => `${instance}.1.5`],
183
+ ["a bare number, the old format", () => "1"],
184
+ ])("starts from a snapshot when the id is %s", async (_label, makeId) => {
185
+ const publisher = new MeshEventPublisher();
186
+ const ids = await publishNumbered(publisher, TWO);
187
+ const [instance] = idAt(ids, 0).split(".");
188
+ expect(await firstEvent(publisher, makeId(instance ?? ""))).toBe("snapshot");
189
+ });
190
+ it("starts from a snapshot when the id's sequence is ahead of anything published", async () => {
191
+ const publisher = new MeshEventPublisher();
192
+ const ids = await publishNumbered(publisher, 1);
193
+ const [instance] = idAt(ids, 0).split(".");
194
+ expect(await firstEvent(publisher, `${instance ?? ""}.99`)).toBe("snapshot");
195
+ });
196
+ it("refuses an id longer than any publisher issues before parsing it, even when its parts are valid", async () => {
197
+ const publisher = new MeshEventPublisher();
198
+ const ids = await publishNumbered(publisher, TWO);
199
+ const [instance] = idAt(ids, 0).split(".");
200
+ // Same instance and a sequence that would resume, padded past the longest id with leading zeros.
201
+ const padded = `${instance ?? ""}.${"0".repeat(MAX_EVENT_ID_LENGTH)}1`;
202
+ expect(padded.length).toBeGreaterThan(MAX_EVENT_ID_LENGTH);
203
+ expect(await firstEvent(publisher, padded)).toBe("snapshot");
204
+ });
205
+ it("accepts an id of the longest length a publisher can issue", () => {
206
+ expect(MAX_EVENT_ID_LENGTH).toBe(INSTANCE_BYTES * 2 + 1 + String(Number.MAX_SAFE_INTEGER).length);
207
+ });
208
+ it("bounds what a client may send back as an id in the contract", async () => {
209
+ const schema = meshContract.subscribeEvents["~orpc"].inputSchemas?.[0];
210
+ if (!schema)
211
+ throw new Error("subscribeEvents has no input schema");
212
+ const atLimit = await schema["~standard"].validate({
213
+ lastEventId: "x".repeat(MAX_EVENT_ID_LENGTH),
214
+ });
215
+ const pastLimit = await schema["~standard"].validate({
216
+ lastEventId: "x".repeat(MAX_EVENT_ID_LENGTH + 1),
217
+ });
218
+ expect(atLimit.issues).toBeUndefined();
219
+ expect(pastLimit.issues).toBeDefined();
220
+ });
221
+ it("keeps at most the configured count of events, judging an id that fell off the end as it judges an aged-out one", async () => {
222
+ const publisher = new MeshEventPublisher({ maxBufferedEvents: THREE });
223
+ const ids = await publishNumbered(publisher, THREE);
224
+ // At the cap nothing is evicted: every event after the first replays.
225
+ expect((await take(publisher, TWO, idAt(ids, 0))).labels).toEqual([
226
+ "e2",
227
+ "e3",
228
+ ]);
229
+ // One past it the oldest is gone, but the id just before the oldest retained one is missing nothing.
230
+ await publishNumbered(publisher, 1, THREE + 1);
231
+ expect((await take(publisher, THREE, idAt(ids, 0))).labels).toEqual([
232
+ "e2",
233
+ "e3",
234
+ "e4",
235
+ ]);
236
+ // Two past it the first id is older than anything retained: it starts from a snapshot.
237
+ await publishNumbered(publisher, 1, THREE + TWO);
238
+ expect((await take(publisher, THREE, idAt(ids, 1))).labels).toEqual([
239
+ "e3",
240
+ "e4",
241
+ "e5",
242
+ ]);
243
+ expect(await firstEvent(publisher, idAt(ids, 0))).toBe("snapshot");
244
+ });
245
+ //# sourceMappingURL=event-publisher.unit.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-publisher.unit.test.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/test/event-publisher.unit.test.ts"],"names":[],"mappings":"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"}
@@ -89,6 +89,8 @@ async function nextMeshEvent(iterator) {
89
89
  const result = await iterator.next();
90
90
  return result.done === true ? undefined : result.value;
91
91
  }
92
+ /** An event id of an instance no publisher of this run has. */
93
+ const FOREIGN_EVENT_ID = "0000000000000000.1";
92
94
  /** A device-id is a hex-encoded SHA-256 hash: 32 bytes, 64 hex characters. */
93
95
  const DEVICE_ID_HEX_LENGTH = 64;
94
96
  const DRAIN_IDLE_MS = 300;
@@ -223,6 +225,14 @@ describe("oRPC router over /ws/mesh", () => {
223
225
  expect(replayedRoomNames).not.toContain("before-disconnect-room");
224
226
  await resumed.return?.(undefined);
225
227
  });
228
+ it("starts a subscription whose lastEventId belongs to another instance from a state_sync, not a replay", async () => {
229
+ const { client } = await setup();
230
+ await client.createRoom({ name: "events-before", type: "public" });
231
+ const iterator = toMeshIterator(await client.subscribeEvents({ lastEventId: FOREIGN_EVENT_ID }));
232
+ const first = await nextMeshEvent(iterator);
233
+ expect(first?.kind).toBe("state_sync");
234
+ await iterator.return?.(undefined);
235
+ });
226
236
  it("getRoomMessages returns a sent message's structured history, not an ActionResult", async () => {
227
237
  const { client } = await setup();
228
238
  const created = await client.createRoom({
@@ -1 +1 @@
1
- {"version":3,"file":"orpc-router.integration.test.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/test/orpc-router.integration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orpc-router.integration.test.js","sourceRoot":"","sources":["../../../../../src/bridges/user/web/test/orpc-router.integration.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-comms",
3
3
  "description": "Cross-harness communication mesh for LLM agents — rooms, DMs, presence, and real-time push delivery over TCP",
4
- "version": "9.0.9",
4
+ "version": "9.0.10",
5
5
  "bin": {
6
6
  "agent-comms": "dist/cli.js"
7
7
  },
@@ -23,7 +23,7 @@
23
23
  "react-dom": "19.3.0",
24
24
  "typebox": "1.3.6",
25
25
  "web-ui-primitives": "1.1.4",
26
- "wire-mesh-core": "4.1.2",
26
+ "wire-mesh-core": "4.1.3",
27
27
  "ws": "8.21.1",
28
28
  "zod": "4.4.3"
29
29
  },
@@ -6,6 +6,7 @@
6
6
 
7
7
  import { z } from "zod";
8
8
  import { oc, eventIterator } from "@orpc/contract";
9
+ import { MAX_EVENT_ID_LENGTH } from "./event-id.js";
9
10
  import {
10
11
  AgentIdentitySchema,
11
12
  RoomSchema,
@@ -100,7 +101,7 @@ const SerialisedStateSchema = z.object({
100
101
  });
101
102
 
102
103
  /**
103
- * The one stream every tab subscribes to. Unifies state_sync (a full snapshot, sent once on connect or resume-without-lastEventId), state_update (an incremental patch), and the old chat socket's delivery frames -- today three separate wire concepts -- into a single ordered event stream a tab can resume by lastEventId.
104
+ * The one stream every tab subscribes to. Unifies state_sync (a full snapshot, sent on connect and whenever the lastEventId a subscriber resumes with cannot be resumed from: another publisher's, aged out, or malformed), state_update (an incremental patch), and the old chat socket's delivery frames -- today three separate wire concepts -- into a single ordered event stream a tab can resume by lastEventId.
104
105
  */
105
106
  const MeshEventSchema = z.discriminatedUnion("kind", [
106
107
  z.object({ kind: z.literal("state_sync"), state: SerialisedStateSchema }),
@@ -166,7 +167,9 @@ export const meshContract = {
166
167
  .output(ActionResultSchema),
167
168
 
168
169
  subscribeEvents: oc
169
- .input(z.object({ lastEventId: z.string().optional() }))
170
+ .input(
171
+ z.object({ lastEventId: z.string().max(MAX_EVENT_ID_LENGTH).optional() }),
172
+ )
170
173
  .output(eventIterator(MeshEventSchema)),
171
174
 
172
175
  // -------------------------------------------------------------------------