agent-comms 1.6.0 → 1.8.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.
Files changed (51) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/dist/bridges/claude-code/channel.js +2 -2
  3. package/dist/bridges/claude-code/channel.js.map +1 -1
  4. package/dist/bridges/codex/tool.js +2 -2
  5. package/dist/bridges/codex/tool.js.map +1 -1
  6. package/dist/bridges/mcp/index.js +2 -2
  7. package/dist/bridges/mcp/index.js.map +1 -1
  8. package/dist/bridges/opencode/plugin.js +1 -1
  9. package/dist/bridges/opencode/plugin.js.map +1 -1
  10. package/dist/bridges/pi/index.d.ts.map +1 -1
  11. package/dist/bridges/pi/index.js +14 -3
  12. package/dist/bridges/pi/index.js.map +1 -1
  13. package/dist/bridges/user/controller.d.ts +4 -0
  14. package/dist/bridges/user/controller.d.ts.map +1 -1
  15. package/dist/bridges/user/controller.js +11 -0
  16. package/dist/bridges/user/controller.js.map +1 -1
  17. package/dist/bridges/user/tui.d.ts +1 -0
  18. package/dist/bridges/user/tui.d.ts.map +1 -1
  19. package/dist/bridges/user/tui.js +18 -2
  20. package/dist/bridges/user/tui.js.map +1 -1
  21. package/dist/bridges/user/web/index.html.d.ts +1 -1
  22. package/dist/bridges/user/web/index.html.d.ts.map +1 -1
  23. package/dist/bridges/user/web/index.html.js +7 -2
  24. package/dist/bridges/user/web/index.html.js.map +1 -1
  25. package/dist/bridges/user/web/server.d.ts +14 -9
  26. package/dist/bridges/user/web/server.d.ts.map +1 -1
  27. package/dist/bridges/user/web/server.js +28 -46
  28. package/dist/bridges/user/web/server.js.map +1 -1
  29. package/dist/core/bridge.d.ts +2 -0
  30. package/dist/core/bridge.d.ts.map +1 -1
  31. package/dist/core/bridge.js +17 -2
  32. package/dist/core/bridge.js.map +1 -1
  33. package/dist/core/comms-store.d.ts +1 -0
  34. package/dist/core/comms-store.d.ts.map +1 -1
  35. package/dist/core/mesh-store.d.ts +7 -0
  36. package/dist/core/mesh-store.d.ts.map +1 -1
  37. package/dist/core/mesh-store.js +80 -9
  38. package/dist/core/mesh-store.js.map +1 -1
  39. package/dist/core/store.d.ts +1 -0
  40. package/dist/core/store.d.ts.map +1 -1
  41. package/dist/core/store.js +22 -0
  42. package/dist/core/store.js.map +1 -1
  43. package/dist/core/tool.d.ts +1 -0
  44. package/dist/core/tool.d.ts.map +1 -1
  45. package/dist/core/tool.js +17 -2
  46. package/dist/core/tool.js.map +1 -1
  47. package/dist/core/types.d.ts +28 -0
  48. package/dist/core/types.d.ts.map +1 -1
  49. package/dist/core/types.js +16 -0
  50. package/dist/core/types.js.map +1 -1
  51. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "agent-comms",
3
3
  "description": "Cross-harness LLM agent communication mesh — rooms, DMs, and presence",
4
- "version": "1.6.0",
4
+ "version": "1.8.0",
5
5
  "author": {
6
6
  "name": "ExaDev"
7
7
  },
@@ -40,7 +40,7 @@ export async function run() {
40
40
  description: [
41
41
  "Cross-harness agent communication mesh. Actions:",
42
42
  "register, update, whoami, create_room, list_rooms, join_room, leave_room,",
43
- "send, dm, list_agents, read_room, invite, kick, destroy_room.",
43
+ "send, dm, list_agents, read_room, invite, decline_invite, kick, destroy_room.",
44
44
  'Incoming messages appear as <channel source="agent-comms"> events.',
45
45
  ].join(" "),
46
46
  inputSchema: MCP_TOOL_PARAMS,
@@ -75,7 +75,7 @@ export async function run() {
75
75
  // Startup
76
76
  // -----------------------------------------------------------------------
77
77
  await store.init();
78
- await tryStartWebServer();
78
+ tryStartWebServer();
79
79
  await mcp.connect(new StdioServerTransport());
80
80
  const reg = await ensureRegistered({
81
81
  cwd: process.cwd(),
@@ -1 +1 @@
1
- {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../src/bridges/claude-code/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../src/bridges/claude-code/channel.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export async function run() {
27
27
  description: [
28
28
  "Cross-harness agent communication mesh. Actions:",
29
29
  "register, update, whoami, create_room, list_rooms, join_room, leave_room,",
30
- "send, dm, list_agents, read_room, invite, kick, destroy_room.",
30
+ "send, dm, list_agents, read_room, invite, decline_invite, kick, destroy_room.",
31
31
  "Pending incoming messages are included in every response.",
32
32
  ].join(" "),
33
33
  inputSchema: MCP_TOOL_PARAMS,
@@ -65,7 +65,7 @@ export async function run() {
65
65
  // Startup
66
66
  // -----------------------------------------------------------------------
67
67
  await store.init();
68
- await tryStartWebServer();
68
+ tryStartWebServer();
69
69
  await mcp.connect(new StdioServerTransport());
70
70
  const reg = await ensureRegistered({
71
71
  cwd: process.cwd(),
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/bridges/codex/tool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/bridges/codex/tool.ts"],"names":[],"mappings":"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"}
@@ -27,7 +27,7 @@ export async function run() {
27
27
  description: [
28
28
  "Cross-harness agent communication mesh. Actions:",
29
29
  "register, update, whoami, create_room, list_rooms, join_room, leave_room,",
30
- "send, dm, list_agents, read_room, invite, kick, destroy_room.",
30
+ "send, dm, list_agents, read_room, invite, decline_invite, kick, destroy_room.",
31
31
  "Pending incoming messages are included in every response.",
32
32
  ].join(" "),
33
33
  inputSchema: MCP_TOOL_PARAMS,
@@ -65,7 +65,7 @@ export async function run() {
65
65
  // Startup
66
66
  // -----------------------------------------------------------------------
67
67
  await store.init();
68
- await tryStartWebServer();
68
+ tryStartWebServer();
69
69
  await mcp.connect(new StdioServerTransport());
70
70
  const reg = await ensureRegistered({
71
71
  cwd: process.cwd(),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/mcp/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/mcp/index.ts"],"names":[],"mappings":"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"}
@@ -26,7 +26,7 @@ export const AgentCommsPlugin = async (opts) => {
26
26
  }
27
27
  const client = opts.client;
28
28
  await store.init();
29
- await tryStartWebServer();
29
+ tryStartWebServer();
30
30
  const reg = await ensureRegistered({
31
31
  cwd: process.cwd(),
32
32
  store,
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/bridges/opencode/plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;AAiB9B,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAMtC,EAAE,EAAE;IACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAE3B,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;IACnB,MAAM,iBAAiB,EAAE,CAAC;IAE1B,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC;QACjC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;QAClB,KAAK;QACL,OAAO,EAAE,UAAU;QACnB,WAAW,EAAE,YAAY,MAAM,CAAC,CAAC,CAAC,EAAE;KACrC,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAE5B,kEAAkE;IAClE,KAAK,CAAC,UAAU,GAAG,KAAK,EAAE,SAAiB,EAAE,KAAK,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,mBAAmB,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YACjD,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;YAChD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;oBAC1B,IAAI,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;oBACxB,IAAI,EAAE;wBACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;qBACzC;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAA+B,EAAE,EAAE;YACtD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAClC,mDAAmD;gBACnD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBAClD,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;oBACvB,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBACpC,IAAI,CAAC;wBACH,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;wBACtD,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;oBAClC,CAAC;oBAAC,MAAM,CAAC;wBACP,iBAAiB;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/bridges/opencode/plugin.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bridges/pi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAclE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QAiJxC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/bridges/pi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAclE,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,QA8JxC"}
@@ -15,6 +15,7 @@ export default function (pi) {
15
15
  const store = new MeshStore();
16
16
  const tool = new CommsTool(store);
17
17
  let agentId;
18
+ let webHandle;
18
19
  // Incoming messages arrive via TCP mesh — push immediately
19
20
  store.onDelivery = (_targetId, event) => {
20
21
  const line = formatDeliveryEvent(event);
@@ -25,8 +26,8 @@ export default function (pi) {
25
26
  // -----------------------------------------------------------------------
26
27
  pi.on("session_start", async (_event, ctx) => {
27
28
  await store.init();
28
- // Auto-start web UI (first bridge to bind port 3000 wins)
29
- await tryStartWebServer();
29
+ // Auto-start web UI on a dynamic port
30
+ webHandle = tryStartWebServer();
30
31
  const reg = await ensureRegistered({
31
32
  store,
32
33
  cwd: process.cwd(),
@@ -43,6 +44,12 @@ export default function (pi) {
43
44
  await store.setAgentOffline(agentId);
44
45
  }
45
46
  await store.shutdown();
47
+ if (webHandle) {
48
+ webHandle.wss.close();
49
+ webHandle.server.close();
50
+ await webHandle.controller.shutdown();
51
+ webHandle = undefined;
52
+ }
46
53
  });
47
54
  // -----------------------------------------------------------------------
48
55
  // Tool registration
@@ -53,7 +60,7 @@ export default function (pi) {
53
60
  description: [
54
61
  "Cross-harness agent communication mesh. Send messages to rooms and DM other agents.",
55
62
  "Actions: register, update, whoami, create_room, list_rooms, join_room, leave_room,",
56
- "send, dm, list_agents, read_room, invite, kick, destroy_room.",
63
+ "send, dm, list_agents, read_room, invite, decline_invite, kick, destroy_room.",
57
64
  "Register first, then join or create rooms to communicate.",
58
65
  ].join(" "),
59
66
  promptSnippet: "Communicate with other LLM agents via rooms and DMs",
@@ -74,6 +81,7 @@ export default function (pi) {
74
81
  "list_agents",
75
82
  "read_room",
76
83
  "invite",
84
+ "decline_invite",
77
85
  "kick",
78
86
  "destroy_room",
79
87
  ], { description: "Action to perform" }),
@@ -99,6 +107,9 @@ export default function (pi) {
99
107
  since: Type.Optional(Type.String({
100
108
  description: "ISO timestamp to read messages since",
101
109
  })),
110
+ reason: Type.Optional(Type.String({
111
+ description: "Reason for declining an invite (for decline_invite)",
112
+ })),
102
113
  }),
103
114
  async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
104
115
  if (!agentId) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/pi/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/pi/index.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,14 @@
5
5
  * UIs subscribe to events and call methods — no direct MeshStore access needed.
6
6
  */
7
7
  import { EventEmitter } from "node:events";
8
+ import { MeshStore } from "../../core/index.js";
8
9
  import type { CommsResult } from "../../core/tool.js";
9
10
  import type { AgentIdentity, DeliveryEvent, Room, RoomMessage } from "../../core/types.js";
10
11
  export declare class ChatController extends EventEmitter {
11
12
  private userName;
12
13
  private store;
14
+ /** Expose the underlying MeshStore for handle cleanup. */
15
+ get meshStore(): MeshStore;
13
16
  private tool;
14
17
  private ctx;
15
18
  private currentRoom;
@@ -27,6 +30,7 @@ export declare class ChatController extends EventEmitter {
27
30
  dm(targetAgentId: string, content: string): Promise<CommsResult>;
28
31
  readRoom(roomId?: string, since?: string): Promise<CommsResult>;
29
32
  invite(roomId: string, agentId: string): Promise<CommsResult>;
33
+ declineInvite(roomId: string, reason: string): Promise<CommsResult>;
30
34
  kick(roomId: string, agentId: string): Promise<CommsResult>;
31
35
  destroyRoom(roomId: string): Promise<CommsResult>;
32
36
  switchRoom(roomId: string): Promise<CommsResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/bridges/user/controller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,IAAI,EACJ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAM7B,qBAAa,cAAe,SAAQ,YAAY;IAMlC,OAAO,CAAC,QAAQ;IAL5B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,WAAW,CAAqB;gBAEpB,QAAQ,EAAE,MAAM;IAW9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAMK,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAIlC,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAIjC,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAAQ,GAAG,SAAS,GAAG,QAAmB,EAChD,WAAW,SAAK,GACf,OAAO,CAAC,WAAW,CAAC;IAYjB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAS9C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAehD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3D,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOxD,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQhE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAY/D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ7D,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWjD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBhD,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIrC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI3B,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC;IAIzB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAQnC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAIhC"}
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/bridges/user/controller.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,SAAS,EAIV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAgB,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,IAAI,EACJ,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAM7B,qBAAa,cAAe,SAAQ,YAAY;IAWlC,OAAO,CAAC,QAAQ;IAV5B,OAAO,CAAC,KAAK,CAAY;IAEzB,0DAA0D;IAC1D,IAAI,SAAS,IAAI,SAAS,CAEzB;IACD,OAAO,CAAC,IAAI,CAAY;IACxB,OAAO,CAAC,GAAG,CAAgB;IAC3B,OAAO,CAAC,WAAW,CAAqB;gBAEpB,QAAQ,EAAE,MAAM;IAW9B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoB3B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAMK,UAAU,IAAI,OAAO,CAAC,WAAW,CAAC;IAIlC,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IAIjC,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,QAAQ,GAAG,SAAS,GAAG,QAAmB,EAChD,WAAW,SAAK,GACf,OAAO,CAAC,WAAW,CAAC;IAYjB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAS9C,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAehD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI3D,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOxD,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQhE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAY/D,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ7D,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQnE,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3D,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWjD,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAwBhD,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIrC,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAI3B,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,EAAE,CAAC;IAIzB,WAAW,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM;IAQnC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAIhC"}
@@ -12,6 +12,10 @@ import { MeshStore, CommsTool, ensureRegistered, formatDeliveryEvent, } from "..
12
12
  export class ChatController extends EventEmitter {
13
13
  userName;
14
14
  store;
15
+ /** Expose the underlying MeshStore for handle cleanup. */
16
+ get meshStore() {
17
+ return this.store;
18
+ }
15
19
  tool;
16
20
  ctx;
17
21
  currentRoom;
@@ -124,6 +128,13 @@ export class ChatController extends EventEmitter {
124
128
  agent: agentId,
125
129
  });
126
130
  }
131
+ async declineInvite(roomId, reason) {
132
+ return this.tool.handle(this.ctx, {
133
+ action: "decline_invite",
134
+ room: roomId,
135
+ reason,
136
+ });
137
+ }
127
138
  async kick(roomId, agentId) {
128
139
  return this.tool.handle(this.ctx, {
129
140
  action: "kick",
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/bridges/user/controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/bridges/user/controller.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  * /dm <agent> <msg> Send a direct message
11
11
  * /create <name> Create a public room
12
12
  * /invite <room> <agent> Invite an agent to a room
13
+ * /decline <room> <reason> Decline a room invite
13
14
  * /kick <room> <agent> Kick an agent from a room
14
15
  * /destroy <room> Destroy a room
15
16
  * /help Show commands
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../../src/bridges/user/tui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAsBH,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE5D"}
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../../../src/bridges/user/tui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAsBH,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiE5D"}
@@ -10,6 +10,7 @@
10
10
  * /dm <agent> <msg> Send a direct message
11
11
  * /create <name> Create a public room
12
12
  * /invite <room> <agent> Invite an agent to a room
13
+ * /decline <room> <reason> Decline a room invite
13
14
  * /kick <room> <agent> Kick an agent from a room
14
15
  * /destroy <room> Destroy a room
15
16
  * /help Show commands
@@ -157,6 +158,16 @@ async function handleCommand(input, c) {
157
158
  printResult(result);
158
159
  return;
159
160
  }
161
+ case "decline": {
162
+ const reason = parts.slice(2).join(" ");
163
+ if (!arg1 || !reason) {
164
+ process.stdout.write(`${YELLOW}Usage: /decline <room> <reason>${RESET}\n`);
165
+ return;
166
+ }
167
+ const result = await c.declineInvite(arg1, reason);
168
+ printResult(result);
169
+ return;
170
+ }
160
171
  case "kick": {
161
172
  const agentId = parts[2];
162
173
  if (!arg1 || !agentId) {
@@ -186,6 +197,7 @@ async function handleCommand(input, c) {
186
197
  ${GREEN}/dm${RESET} <agent> <msg> Send a direct message
187
198
  ${GREEN}/create${RESET} <name> Create a public room
188
199
  ${GREEN}/invite${RESET} <room> <id> Invite agent to room
200
+ ${GREEN}/decline${RESET} <room> <reason> Decline a room invite
189
201
  ${GREEN}/kick${RESET} <room> <id> Kick agent from room
190
202
  ${GREEN}/destroy${RESET} <room> Destroy a room
191
203
  ${GREEN}/help${RESET} Show this help
@@ -224,8 +236,12 @@ function formatForTerminal(event) {
224
236
  return `${CYAN}● ${event.agent} is now ${event.status} in ${event.room}${RESET}`;
225
237
  case "delivery_status":
226
238
  return `${DIM}✓ Message ${event.messageId} ${event.status} by ${event.agent}${RESET}`;
227
- case "room_invite":
228
- return `${CYAN}_invite to ${event.room} from ${event.from}${RESET}`;
239
+ case "room_invite": {
240
+ const desc = event.roomDescription ? ` — ${event.roomDescription}` : "";
241
+ return `${CYAN}✉ ${event.fromName} invited you to "${event.room}"${desc}${RESET}`;
242
+ }
243
+ case "invite_declined":
244
+ return `${YELLOW}✗ ${event.agentName} declined invite to ${event.room}: "${event.reason}"${RESET}`;
229
245
  case "room_members": {
230
246
  const names = event.members
231
247
  .map((m) => `${m.name} (${m.status})`)
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/bridges/user/tui.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/bridges/user/tui.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,5 @@
4
4
  * Vanilla JS + CSS, no build step, no framework. Communicates via
5
5
  * REST API + WebSocket.
6
6
  */
7
- export declare const FRONTEND_HTML = "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>Agent Comms</title>\n<style>\n :root {\n --bg: #1a1a2e;\n --surface: #16213e;\n --border: #0f3460;\n --text: #e4e4e4;\n --dim: #888;\n --accent: #00b4d8;\n --green: #06d6a0;\n --red: #ef476f;\n --yellow: #ffd166;\n --purple: #b5838d;\n }\n * { margin: 0; padding: 0; box-sizing: border-box; }\n body {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n background: var(--bg);\n color: var(--text);\n height: 100vh;\n display: flex;\n }\n #sidebar {\n width: 260px;\n background: var(--surface);\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n #sidebar h2 {\n padding: 12px 16px;\n font-size: 14px;\n color: var(--accent);\n border-bottom: 1px solid var(--border);\n }\n .sidebar-section {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n }\n .sidebar-section h3 {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--dim);\n padding: 8px 8px 4px;\n }\n .room-item, .agent-item {\n padding: 6px 10px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .room-item:hover, .agent-item:hover { background: rgba(255,255,255,0.05); }\n .room-item.active { background: var(--border); }\n .status-dot {\n width: 8px; height: 8px;\n border-radius: 50%;\n display: inline-block;\n }\n .status-dot.active { background: var(--green); }\n .status-dot.idle { background: var(--yellow); }\n .status-dot.busy { background: var(--red); }\n .status-dot.offline { background: var(--dim); }\n #main {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n #header {\n padding: 12px 20px;\n border-bottom: 1px solid var(--border);\n font-size: 15px;\n font-weight: 600;\n background: var(--surface);\n }\n #messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n .msg {\n font-size: 13px;\n line-height: 1.5;\n }\n .msg .sender { font-weight: 600; color: var(--accent); }\n .msg .time { color: var(--dim); font-size: 11px; margin-left: 8px; }\n .msg.system { color: var(--dim); font-style: italic; }\n .msg.status { color: var(--yellow); font-size: 12px; }\n .msg.dm { color: var(--purple); }\n .msg .dm-badge {\n background: var(--purple);\n color: #fff;\n font-size: 10px;\n padding: 1px 5px;\n border-radius: 3px;\n font-weight: 600;\n }\n #input-bar {\n display: flex;\n padding: 12px 20px;\n gap: 8px;\n background: var(--surface);\n border-top: 1px solid var(--border);\n }\n #input {\n flex: 1;\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 8px 12px;\n color: var(--text);\n font-size: 13px;\n outline: none;\n }\n #input:focus { border-color: var(--accent); }\n #send-btn {\n background: var(--accent);\n border: none;\n border-radius: 6px;\n padding: 8px 16px;\n color: #fff;\n font-weight: 600;\n cursor: pointer;\n }\n #send-btn:hover { opacity: 0.9; }\n #empty-state {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--dim);\n font-size: 14px;\n }\n</style>\n</head>\n<body>\n\n<div id=\"sidebar\">\n <h2>Agent Comms</h2>\n <div class=\"sidebar-section\">\n <h3>Rooms</h3>\n <div id=\"room-list\"></div>\n <h3>Agents</h3>\n <div id=\"agent-list\"></div>\n </div>\n</div>\n\n<div id=\"main\">\n <div id=\"header\">Select a room</div>\n <div id=\"messages\"></div>\n <div id=\"input-bar\">\n <input id=\"input\" type=\"text\" placeholder=\"Type a message or /command...\" autocomplete=\"off\" />\n <button id=\"send-btn\">Send</button>\n </div>\n</div>\n\n<script>\nconst $ = (s) => document.querySelector(s);\nconst messagesEl = $('#messages');\nconst inputEl = $('#input');\nconst headerEl = $('#header');\nconst roomListEl = $('#room-list');\nconst agentListEl = $('#agent-list');\n\nlet currentRoom = null;\nlet ws = null;\n\n// Connect WebSocket\nfunction connect() {\n const proto = location.protocol === 'https:' ? 'wss:' : 'ws:';\n ws = new WebSocket(proto + '//' + location.host);\n\n ws.onopen = () => { addSystem('Connected to mesh'); };\n ws.onclose = () => { addSystem('Disconnected \u2014 reconnecting...'); setTimeout(connect, 3000); };\n ws.onerror = () => {};\n\n ws.onmessage = (e) => {\n const frame = JSON.parse(e.data);\n if (frame.type === 'delivery') handleDelivery(frame.event);\n if (frame.type === 'result') addSystem(frame.result.content);\n if (frame.type === 'error') addSystem('Error: ' + frame.message);\n if (frame.type === 'state') {\n renderAgents(frame.agents);\n renderRooms(frame.rooms);\n }\n };\n}\n\nfunction sendAction(params) {\n if (ws && ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(params));\n }\n}\n\n// Delivery event handling\nfunction handleDelivery(event) {\n switch (event.type) {\n case 'room_message':\n if (!currentRoom || event.message.room !== currentRoom) return;\n addMessage(event.message.from, event.message.content, event.message.timestamp);\n break;\n case 'dm':\n addDm(event.message.from, event.message.content, event.message.timestamp);\n break;\n case 'member_joined':\n addSystem(event.agent + ' joined ' + event.room);\n refreshState();\n break;\n case 'member_left':\n addSystem(event.agent + ' left ' + event.room);\n refreshState();\n break;\n case 'member_status':\n addStatus(event.agent + ' is now ' + event.status + ' in ' + event.room);\n refreshState();\n break;\n case 'delivery_status':\n addStatus('Message ' + event.messageId + ' ' + event.status + ' by ' + event.agent);\n break;\n case 'room_members':\n if (currentRoom === event.room) {\n addSystem('Members: ' + event.members.map(m => m.name + ' (' + m.status + ')').join(', '));\n }\n break;\n case 'room_invite':\n addSystem('Invited to ' + event.room + ' by ' + event.from);\n break;\n }\n}\n\n// UI rendering\nfunction addMessage(sender, content, timestamp) {\n const time = (timestamp || new Date().toISOString()).slice(11, 19);\n const div = document.createElement('div');\n div.className = 'msg';\n div.innerHTML = '<span class=\"sender\">' + esc(sender) + '</span><span class=\"time\">' + time + '</span>: ' + esc(content);\n messagesEl.appendChild(div);\n messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\nfunction addDm(sender, content, timestamp) {\n const time = (timestamp || new Date().toISOString()).slice(11, 19);\n const div = document.createElement('div');\n div.className = 'msg dm';\n div.innerHTML = '<span class=\"dm-badge\">DM</span> <span class=\"sender\">' + esc(sender) + '</span><span class=\"time\">' + time + '</span>: ' + esc(content);\n messagesEl.appendChild(div);\n messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\nfunction addSystem(text) {\n const div = document.createElement('div');\n div.className = 'msg system';\n div.textContent = text;\n messagesEl.appendChild(div);\n messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\nfunction addStatus(text) {\n const div = document.createElement('div');\n div.className = 'msg status';\n div.textContent = text;\n messagesEl.appendChild(div);\n messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\nfunction clearMessages() {\n messagesEl.innerHTML = '';\n}\n\nfunction esc(s) {\n const d = document.createElement('div');\n d.textContent = s;\n return d.innerHTML;\n}\n\n// State refresh\nasync function refreshState() {\n const [agentsRes, roomsRes] = await Promise.all([\n fetch('/api/agents'), fetch('/api/rooms')\n ]);\n renderAgents(await agentsRes.json());\n renderRooms(await roomsRes.json());\n}\n\nfunction renderAgents(agents) {\n agentListEl.innerHTML = '';\n for (const a of agents) {\n const div = document.createElement('div');\n div.className = 'agent-item';\n const dot = a.status || 'offline';\n div.innerHTML = '<span class=\"status-dot ' + dot + '\"></span> ' + esc(a.name);\n agentListEl.appendChild(div);\n }\n}\n\nfunction renderRooms(rooms) {\n roomListEl.innerHTML = '';\n for (const r of rooms) {\n const div = document.createElement('div');\n div.className = 'room-item' + (currentRoom === r.id ? ' active' : '');\n const joined = r.members.length;\n div.innerHTML = r.type.charAt(0).toUpperCase() + ' ' + esc(r.name) + ' <span style=\"color:var(--dim)\">(' + joined + ')</span>';\n div.onclick = () => joinRoom(r.id);\n roomListEl.appendChild(div);\n }\n}\n\nasync function joinRoom(roomId) {\n currentRoom = roomId;\n headerEl.textContent = roomId;\n clearMessages();\n\n // Highlight in sidebar\n document.querySelectorAll('.room-item').forEach(el => el.classList.remove('active'));\n sendAction({ action: 'join_room', room: roomId });\n\n // Load history\n const res = await fetch('/api/rooms/' + encodeURIComponent(roomId) + '/messages');\n const messages = await res.json();\n for (const m of messages) {\n addMessage(m.from, m.content, m.timestamp);\n }\n addSystem('Joined ' + roomId);\n inputEl.focus();\n}\n\n// Input handling\nfunction handleInput() {\n const text = inputEl.value.trim();\n if (!text) return;\n inputEl.value = '';\n\n if (text.startsWith('/')) {\n const parts = text.slice(1).split(/\\s+/);\n const cmd = parts[0].toLowerCase();\n switch (cmd) {\n case 'join': sendAction({ action: 'join_room', room: parts[1] }); break;\n case 'leave': sendAction({ action: 'leave_room', room: parts[1] || currentRoom }); break;\n case 'rooms': refreshState(); break;\n case 'agents': refreshState(); break;\n case 'dm': sendAction({ action: 'dm', target: parts[1], content: parts.slice(2).join(' ') }); break;\n case 'create': sendAction({ action: 'create_room', name: parts[1], type: 'public' }); break;\n case 'destroy': sendAction({ action: 'destroy_room', room: parts[1] }); break;\n case 'help':\n addSystem('Commands: /join, /leave, /rooms, /agents, /dm, /create, /destroy, /help');\n break;\n default:\n addSystem('Unknown command: /' + cmd);\n }\n } else if (currentRoom) {\n sendAction({ action: 'send', target: currentRoom, content: text });\n } else {\n addSystem('Join a room first (click one in the sidebar)');\n }\n}\n\n$('#send-btn').onclick = handleInput;\ninputEl.addEventListener('keydown', (e) => { if (e.key === 'Enter') handleInput(); });\n\n// Boot\nconnect();\nrefreshState();\ninputEl.focus();\n</script>\n</body>\n</html>";
7
+ export declare const FRONTEND_HTML = "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n<title>Agent Comms</title>\n<style>\n :root {\n --bg: #1a1a2e;\n --surface: #16213e;\n --border: #0f3460;\n --text: #e4e4e4;\n --dim: #888;\n --accent: #00b4d8;\n --green: #06d6a0;\n --red: #ef476f;\n --yellow: #ffd166;\n --purple: #b5838d;\n }\n * { margin: 0; padding: 0; box-sizing: border-box; }\n body {\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n background: var(--bg);\n color: var(--text);\n height: 100vh;\n display: flex;\n }\n #sidebar {\n width: 260px;\n background: var(--surface);\n border-right: 1px solid var(--border);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n #sidebar h2 {\n padding: 12px 16px;\n font-size: 14px;\n color: var(--accent);\n border-bottom: 1px solid var(--border);\n }\n .sidebar-section {\n flex: 1;\n overflow-y: auto;\n padding: 8px;\n }\n .sidebar-section h3 {\n font-size: 11px;\n text-transform: uppercase;\n color: var(--dim);\n padding: 8px 8px 4px;\n }\n .room-item, .agent-item {\n padding: 6px 10px;\n border-radius: 6px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n gap: 6px;\n }\n .room-item:hover, .agent-item:hover { background: rgba(255,255,255,0.05); }\n .room-item.active { background: var(--border); }\n .status-dot {\n width: 8px; height: 8px;\n border-radius: 50%;\n display: inline-block;\n }\n .status-dot.active { background: var(--green); }\n .status-dot.idle { background: var(--yellow); }\n .status-dot.busy { background: var(--red); }\n .status-dot.offline { background: var(--dim); }\n #main {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n }\n #header {\n padding: 12px 20px;\n border-bottom: 1px solid var(--border);\n font-size: 15px;\n font-weight: 600;\n background: var(--surface);\n }\n #messages {\n flex: 1;\n overflow-y: auto;\n padding: 16px 20px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n .msg {\n font-size: 13px;\n line-height: 1.5;\n }\n .msg .sender { font-weight: 600; color: var(--accent); }\n .msg .time { color: var(--dim); font-size: 11px; margin-left: 8px; }\n .msg.system { color: var(--dim); font-style: italic; }\n .msg.status { color: var(--yellow); font-size: 12px; }\n .msg.dm { color: var(--purple); }\n .msg .dm-badge {\n background: var(--purple);\n color: #fff;\n font-size: 10px;\n padding: 1px 5px;\n border-radius: 3px;\n font-weight: 600;\n }\n #input-bar {\n display: flex;\n padding: 12px 20px;\n gap: 8px;\n background: var(--surface);\n border-top: 1px solid var(--border);\n }\n #input {\n flex: 1;\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 8px 12px;\n color: var(--text);\n font-size: 13px;\n outline: none;\n }\n #input:focus { border-color: var(--accent); }\n #send-btn {\n background: var(--accent);\n border: none;\n border-radius: 6px;\n padding: 8px 16px;\n color: #fff;\n font-weight: 600;\n cursor: pointer;\n }\n #send-btn:hover { opacity: 0.9; }\n #empty-state {\n flex: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--dim);\n font-size: 14px;\n }\n</style>\n</head>\n<body>\n\n<div id=\"sidebar\">\n <h2>Agent Comms</h2>\n <div class=\"sidebar-section\">\n <h3>Rooms</h3>\n <div id=\"room-list\"></div>\n <h3>Agents</h3>\n <div id=\"agent-list\"></div>\n </div>\n</div>\n\n<div id=\"main\">\n <div id=\"header\">Select a room</div>\n <div id=\"messages\"></div>\n <div id=\"input-bar\">\n <input id=\"input\" type=\"text\" placeholder=\"Type a message or /command...\" autocomplete=\"off\" />\n <button id=\"send-btn\">Send</button>\n </div>\n</div>\n\n<script>\nconst $ = (s) => document.querySelector(s);\nconst messagesEl = $('#messages');\nconst inputEl = $('#input');\nconst headerEl = $('#header');\nconst roomListEl = $('#room-list');\nconst agentListEl = $('#agent-list');\n\nlet currentRoom = null;\nlet ws = null;\n\n// Connect WebSocket\nfunction connect() {\n const proto = location.protocol === 'https:' ? 'wss:' : 'ws:';\n ws = new WebSocket(proto + '//' + location.host);\n\n ws.onopen = () => { addSystem('Connected to mesh'); };\n ws.onclose = () => { addSystem('Disconnected \u2014 reconnecting...'); setTimeout(connect, 3000); };\n ws.onerror = () => {};\n\n ws.onmessage = (e) => {\n const frame = JSON.parse(e.data);\n if (frame.type === 'delivery') handleDelivery(frame.event);\n if (frame.type === 'result') addSystem(frame.result.content);\n if (frame.type === 'error') addSystem('Error: ' + frame.message);\n if (frame.type === 'state') {\n renderAgents(frame.agents);\n renderRooms(frame.rooms);\n }\n };\n}\n\nfunction sendAction(params) {\n if (ws && ws.readyState === WebSocket.OPEN) {\n ws.send(JSON.stringify(params));\n }\n}\n\n// Delivery event handling\nfunction handleDelivery(event) {\n switch (event.type) {\n case 'room_message':\n if (!currentRoom || event.message.room !== currentRoom) return;\n addMessage(event.message.from, event.message.content, event.message.timestamp);\n break;\n case 'dm':\n addDm(event.message.from, event.message.content, event.message.timestamp);\n break;\n case 'member_joined':\n addSystem(event.agent + ' joined ' + event.room);\n refreshState();\n break;\n case 'member_left':\n addSystem(event.agent + ' left ' + event.room);\n refreshState();\n break;\n case 'member_status':\n addStatus(event.agent + ' is now ' + event.status + ' in ' + event.room);\n refreshState();\n break;\n case 'delivery_status':\n addStatus('Message ' + event.messageId + ' ' + event.status + ' by ' + event.agent);\n break;\n case 'room_members':\n if (currentRoom === event.room) {\n addSystem('Members: ' + event.members.map(m => m.name + ' (' + m.status + ')').join(', '));\n }\n break;\n case 'room_invite': {\n const desc = event.roomDescription ? ' \u2014 ' + event.roomDescription : '';\n addSystem(event.fromName + ' invited you to \"' + event.room + '\"' + desc);\n break;\n }\n case 'invite_declined':\n addSystem(event.agentName + ' declined invite to ' + event.room + ': \"' + event.reason + '\"');\n break;\n }\n}\n\n// UI rendering\nfunction addMessage(sender, content, timestamp) {\n const time = (timestamp || new Date().toISOString()).slice(11, 19);\n const div = document.createElement('div');\n div.className = 'msg';\n div.innerHTML = '<span class=\"sender\">' + esc(sender) + '</span><span class=\"time\">' + time + '</span>: ' + esc(content);\n messagesEl.appendChild(div);\n messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\nfunction addDm(sender, content, timestamp) {\n const time = (timestamp || new Date().toISOString()).slice(11, 19);\n const div = document.createElement('div');\n div.className = 'msg dm';\n div.innerHTML = '<span class=\"dm-badge\">DM</span> <span class=\"sender\">' + esc(sender) + '</span><span class=\"time\">' + time + '</span>: ' + esc(content);\n messagesEl.appendChild(div);\n messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\nfunction addSystem(text) {\n const div = document.createElement('div');\n div.className = 'msg system';\n div.textContent = text;\n messagesEl.appendChild(div);\n messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\nfunction addStatus(text) {\n const div = document.createElement('div');\n div.className = 'msg status';\n div.textContent = text;\n messagesEl.appendChild(div);\n messagesEl.scrollTop = messagesEl.scrollHeight;\n}\n\nfunction clearMessages() {\n messagesEl.innerHTML = '';\n}\n\nfunction esc(s) {\n const d = document.createElement('div');\n d.textContent = s;\n return d.innerHTML;\n}\n\n// State refresh\nasync function refreshState() {\n const [agentsRes, roomsRes] = await Promise.all([\n fetch('/api/agents'), fetch('/api/rooms')\n ]);\n renderAgents(await agentsRes.json());\n renderRooms(await roomsRes.json());\n}\n\nfunction renderAgents(agents) {\n agentListEl.innerHTML = '';\n for (const a of agents) {\n const div = document.createElement('div');\n div.className = 'agent-item';\n const dot = a.status || 'offline';\n div.innerHTML = '<span class=\"status-dot ' + dot + '\"></span> ' + esc(a.name);\n agentListEl.appendChild(div);\n }\n}\n\nfunction renderRooms(rooms) {\n roomListEl.innerHTML = '';\n for (const r of rooms) {\n const div = document.createElement('div');\n div.className = 'room-item' + (currentRoom === r.id ? ' active' : '');\n const joined = r.members.length;\n div.innerHTML = r.type.charAt(0).toUpperCase() + ' ' + esc(r.name) + ' <span style=\"color:var(--dim)\">(' + joined + ')</span>';\n div.onclick = () => joinRoom(r.id);\n roomListEl.appendChild(div);\n }\n}\n\nasync function joinRoom(roomId) {\n currentRoom = roomId;\n headerEl.textContent = roomId;\n clearMessages();\n\n // Highlight in sidebar\n document.querySelectorAll('.room-item').forEach(el => el.classList.remove('active'));\n sendAction({ action: 'join_room', room: roomId });\n\n // Load history\n const res = await fetch('/api/rooms/' + encodeURIComponent(roomId) + '/messages');\n const messages = await res.json();\n for (const m of messages) {\n addMessage(m.from, m.content, m.timestamp);\n }\n addSystem('Joined ' + roomId);\n inputEl.focus();\n}\n\n// Input handling\nfunction handleInput() {\n const text = inputEl.value.trim();\n if (!text) return;\n inputEl.value = '';\n\n if (text.startsWith('/')) {\n const parts = text.slice(1).split(/\\s+/);\n const cmd = parts[0].toLowerCase();\n switch (cmd) {\n case 'join': sendAction({ action: 'join_room', room: parts[1] }); break;\n case 'leave': sendAction({ action: 'leave_room', room: parts[1] || currentRoom }); break;\n case 'rooms': refreshState(); break;\n case 'agents': refreshState(); break;\n case 'dm': sendAction({ action: 'dm', target: parts[1], content: parts.slice(2).join(' ') }); break;\n case 'create': sendAction({ action: 'create_room', name: parts[1], type: 'public' }); break;\n case 'destroy': sendAction({ action: 'destroy_room', room: parts[1] }); break;\n case 'help':\n addSystem('Commands: /join, /leave, /rooms, /agents, /dm, /create, /destroy, /help');\n break;\n default:\n addSystem('Unknown command: /' + cmd);\n }\n } else if (currentRoom) {\n sendAction({ action: 'send', target: currentRoom, content: text });\n } else {\n addSystem('Join a room first (click one in the sidebar)');\n }\n}\n\n$('#send-btn').onclick = handleInput;\ninputEl.addEventListener('keydown', (e) => { if (e.key === 'Enter') handleInput(); });\n\n// Boot\nconnect();\nrefreshState();\ninputEl.focus();\n</script>\n</body>\n</html>";
8
8
  //# sourceMappingURL=index.html.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.html.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/index.html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,aAAa,2xVA0XlB,CAAC"}
1
+ {"version":3,"file":"index.html.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/index.html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,aAAa,4hWA+XlB,CAAC"}
@@ -241,8 +241,13 @@ function handleDelivery(event) {
241
241
  addSystem('Members: ' + event.members.map(m => m.name + ' (' + m.status + ')').join(', '));
242
242
  }
243
243
  break;
244
- case 'room_invite':
245
- addSystem('Invited to ' + event.room + ' by ' + event.from);
244
+ case 'room_invite': {
245
+ const desc = event.roomDescription ? ' ' + event.roomDescription : '';
246
+ addSystem(event.fromName + ' invited you to "' + event.room + '"' + desc);
247
+ break;
248
+ }
249
+ case 'invite_declined':
250
+ addSystem(event.agentName + ' declined invite to ' + event.room + ': "' + event.reason + '"');
246
251
  break;
247
252
  }
248
253
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.html.js","sourceRoot":"","sources":["../../../../src/bridges/user/web/index.html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA0XrB,CAAC"}
1
+ {"version":3,"file":"index.html.js","sourceRoot":"","sources":["../../../../src/bridges/user/web/index.html.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA+XrB,CAAC"}
@@ -16,17 +16,22 @@
16
16
  * Client sends action objects.
17
17
  */
18
18
  import * as http from "node:http";
19
+ import { WebSocketServer } from "ws";
20
+ import { ChatController } from "../controller.js";
21
+ export interface WebServerHandle {
22
+ server: http.Server;
23
+ controller: ChatController;
24
+ wss: WebSocketServer;
25
+ }
19
26
  /**
20
- * Try to start the web UI server on the well-known port.
21
- * Returns the server if this bridge won the race, or undefined if another
22
- * bridge is already serving. The server runs independently with its own
23
- * MeshStore that syncs state from the mesh.
27
+ * Start the web UI server on an OS-assigned port.
28
+ * Returns the server handle, or undefined if port discovery fails.
24
29
  */
25
- export declare function tryStartWebServer(port?: number): Promise<http.Server | undefined>;
30
+ export declare function tryStartWebServer(): WebServerHandle | undefined;
26
31
  /**
27
- * Create and start the web server. Used by tryStartWebServer (auto-start)
28
- * and runWeb (standalone `npx agent-comms chat` mode).
32
+ * Create and start the web server on a dynamic port.
33
+ * Used by tryStartWebServer (auto-start) and runWeb (standalone mode).
29
34
  */
30
- export declare function createWebServer(port?: number): http.Server;
31
- export declare function runWeb(userName: string, port?: number): Promise<void>;
35
+ export declare function createWebServer(port?: number): WebServerHandle;
36
+ export declare function runWeb(userName: string, port?: number): void;
32
37
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAalC;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,SAAmB,GACtB,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAMlC;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,SAAmB,GAAG,IAAI,CAAC,MAAM,CAkBpE;AAoBD,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,IAAI,SAAmB,GACtB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/bridges/user/web/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAkB,MAAM,IAAI,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AASlD,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;IACpB,UAAU,EAAE,cAAc,CAAC;IAC3B,GAAG,EAAE,eAAe,CAAC;CACtB;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,eAAe,GAAG,SAAS,CAE/D;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,SAAI,GAAG,eAAe,CAoBzD;AAMD,wBAAgB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,IAAI,CA0BvD"}