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.
- package/.claude-plugin/plugin.json +1 -1
- package/dist/bridges/claude-code/channel.js +2 -2
- package/dist/bridges/claude-code/channel.js.map +1 -1
- package/dist/bridges/codex/tool.js +2 -2
- package/dist/bridges/codex/tool.js.map +1 -1
- package/dist/bridges/mcp/index.js +2 -2
- package/dist/bridges/mcp/index.js.map +1 -1
- package/dist/bridges/opencode/plugin.js +1 -1
- package/dist/bridges/opencode/plugin.js.map +1 -1
- package/dist/bridges/pi/index.d.ts.map +1 -1
- package/dist/bridges/pi/index.js +14 -3
- package/dist/bridges/pi/index.js.map +1 -1
- package/dist/bridges/user/controller.d.ts +4 -0
- package/dist/bridges/user/controller.d.ts.map +1 -1
- package/dist/bridges/user/controller.js +11 -0
- package/dist/bridges/user/controller.js.map +1 -1
- package/dist/bridges/user/tui.d.ts +1 -0
- package/dist/bridges/user/tui.d.ts.map +1 -1
- package/dist/bridges/user/tui.js +18 -2
- package/dist/bridges/user/tui.js.map +1 -1
- package/dist/bridges/user/web/index.html.d.ts +1 -1
- package/dist/bridges/user/web/index.html.d.ts.map +1 -1
- package/dist/bridges/user/web/index.html.js +7 -2
- package/dist/bridges/user/web/index.html.js.map +1 -1
- package/dist/bridges/user/web/server.d.ts +14 -9
- package/dist/bridges/user/web/server.d.ts.map +1 -1
- package/dist/bridges/user/web/server.js +28 -46
- package/dist/bridges/user/web/server.js.map +1 -1
- package/dist/core/bridge.d.ts +2 -0
- package/dist/core/bridge.d.ts.map +1 -1
- package/dist/core/bridge.js +17 -2
- package/dist/core/bridge.js.map +1 -1
- package/dist/core/comms-store.d.ts +1 -0
- package/dist/core/comms-store.d.ts.map +1 -1
- package/dist/core/mesh-store.d.ts +7 -0
- package/dist/core/mesh-store.d.ts.map +1 -1
- package/dist/core/mesh-store.js +80 -9
- package/dist/core/mesh-store.js.map +1 -1
- package/dist/core/store.d.ts +1 -0
- package/dist/core/store.d.ts.map +1 -1
- package/dist/core/store.js +22 -0
- package/dist/core/store.js.map +1 -1
- package/dist/core/tool.d.ts +1 -0
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +17 -2
- package/dist/core/tool.js.map +1 -1
- package/dist/core/types.d.ts +28 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +16 -0
- package/dist/core/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
-
|
|
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":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,OAA2B,CAAC;IAEhC,MAAM,GAAG,GAAG,IAAI,SAAS,CACvB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,EACzC;QACE,YAAY,EAAE;YACZ,YAAY,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE;SACvC;KACF,CACF,CAAC;IAEF,wEAAwE;IACxE,KAAK,CAAC,UAAU,GAAG,KAAK,EAAE,SAAiB,EAAE,KAAK,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC;YAC5B,MAAM,EAAE,8BAA8B;YACtC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE;SACpC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,0EAA0E;IAC1E,oBAAoB;IACpB,0EAA0E;IAE1E,GAAG,CAAC,YAAY,CACd,aAAa,EACb;QACE,WAAW,EAAE;YACX,kDAAkD;YAClD,2EAA2E;YAC3E,+
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,OAA2B,CAAC;IAEhC,MAAM,GAAG,GAAG,IAAI,SAAS,CACvB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,EACzC,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB,CAAC;IAEF,0EAA0E;IAC1E,oBAAoB;IACpB,0EAA0E;IAE1E,GAAG,CAAC,YAAY,CACd,aAAa,EACb;QACE,WAAW,EAAE;YACX,kDAAkD;YAClD,2EAA2E;YAC3E,+
|
|
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
|
-
|
|
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,cAAc,EACd,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,GAAG;IACvB,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,OAA2B,CAAC;IAEhC,MAAM,GAAG,GAAG,IAAI,SAAS,CACvB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,EACzC,EAAE,YAAY,EAAE,EAAE,EAAE,CACrB,CAAC;IAEF,0EAA0E;IAC1E,oBAAoB;IACpB,0EAA0E;IAE1E,GAAG,CAAC,YAAY,CACd,aAAa,EACb;QACE,WAAW,EAAE;YACX,kDAAkD;YAClD,2EAA2E;YAC3E,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/mcp/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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,
|
|
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"}
|
package/dist/bridges/pi/index.js
CHANGED
|
@@ -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
|
|
29
|
-
|
|
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":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/bridges/pi/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEjD,OAAO,EACL,SAAS,EACT,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,iBAAiB,EAAwB,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,MAAM,CAAC,OAAO,WAAW,EAAgB;IACvC,MAAM,KAAK,GAAG,IAAI,SAAS,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;IAElC,IAAI,OAA2B,CAAC;IAChC,IAAI,SAAsC,CAAC;IAE3C,2DAA2D;IAC3D,KAAK,CAAC,UAAU,GAAG,CAAC,SAAiB,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,IAAI,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACxC,EAAE,CAAC,eAAe,CAAC,MAAM,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,CAAC,CAAC;IAEF,0EAA0E;IAC1E,YAAY;IACZ,0EAA0E;IAE1E,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC3C,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAEnB,sCAAsC;QACtC,SAAS,GAAG,iBAAiB,EAAE,CAAC;QAEhC,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC;YACjC,KAAK;YACL,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,MAAM,MAAM,CAAC,CAAC,CAAC,EAAE;SAC/B,CAAC,CAAC;QACH,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAEtB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACf,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QACnC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvB,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YACtB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,MAAM,SAAS,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtC,SAAS,GAAG,SAAS,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,0EAA0E;IAC1E,oBAAoB;IACpB,0EAA0E;IAE1E,EAAE,CAAC,YAAY,CAAC;QACd,IAAI,EAAE,aAAa;QACnB,KAAK,EAAE,aAAa;QACpB,WAAW,EAAE;YACX,qFAAqF;YACrF,oFAAoF;YACpF,+EAA+E;YAC/E,2DAA2D;SAC5D,CAAC,IAAI,CAAC,GAAG,CAAC;QACX,aAAa,EAAE,qDAAqD;QACpE,gBAAgB,EAAE;YAChB,mHAAmH;SACpH;QACD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YACtB,MAAM,EAAE,UAAU,CAChB;gBACE,UAAU;gBACV,QAAQ;gBACR,QAAQ;gBACR,aAAa;gBACb,YAAY;gBACZ,WAAW;gBACX,YAAY;gBACZ,MAAM;gBACN,IAAI;gBACJ,aAAa;gBACb,WAAW;gBACX,QAAQ;gBACR,gBAAgB;gBAChB,MAAM;gBACN,cAAc;aACf,EACD,EAAE,WAAW,EAAE,mBAAmB,EAAE,CACrC;YACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,MAAM,CAAC;gBACV,WAAW,EAAE,0CAA0C;aACxD,CAAC,CACH;YACD,UAAU,EAAE,IAAI,CAAC,QAAQ,CACvB,UAAU,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;gBACzC,WAAW,EAAE,4BAA4B;aAC1C,CAAC,CACH;YACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,CACpE;YACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,UAAU,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE;gBACrC,WAAW,EAAE,2BAA2B;aACzC,CAAC,CACH;YACD,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAC;YACjE,IAAI,EAAE,IAAI,CAAC,QAAQ,CACjB,UAAU,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE;gBAC1C,WAAW,EAAE,6BAA6B;aAC3C,CAAC,CACH;YACD,WAAW,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,oCAAoC,EAAE,CAAC,CACnE;YACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,8BAA8B,EAAE,CAAC,CAC7D;YACD,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wBAAwB,EAAE,CAAC,CACvD;YACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,mCAAmC,EAAE,CAAC,CAClE;YACD,KAAK,EAAE,IAAI,CAAC,QAAQ,CAClB,IAAI,CAAC,MAAM,CAAC;gBACV,WAAW,EAAE,sCAAsC;aACpD,CAAC,CACH;YACD,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,MAAM,CAAC;gBACV,WAAW,EAAE,qDAAqD;aACnE,CAAC,CACH;SACF,CAAC;QAEF,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI;YACzD,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;oBAC1D,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAC9B,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAChE,MAAM,CACP,CAAC;YAEF,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjD,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;gBAClC,OAAO,EAAE,MAAM,CAAC,OAAO;aACxB,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -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;
|
|
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAS7B,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,OAAO,cAAe,SAAQ,YAAY;
|
|
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
|
|
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"}
|
package/dist/bridges/user/tui.js
CHANGED
|
@@ -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
|
-
|
|
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":"AAAA
|
|
1
|
+
{"version":3,"file":"tui.js","sourceRoot":"","sources":["../../../src/bridges/user/tui.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,eAAe;AACf,MAAM,IAAI,GAAG,SAAS,CAAC;AACvB,MAAM,GAAG,GAAG,SAAS,CAAC;AACtB,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,MAAM,KAAK,GAAG,UAAU,CAAC;AACzB,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,GAAG,GAAG,UAAU,CAAC;AACvB,MAAM,OAAO,GAAG,UAAU,CAAC;AAC3B,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,UAAU,GAAG,WAAW,CAAC;AAE/B,SAAS,MAAM,CAAC,UAA0B;IACxC,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC;IACnC,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,KAAK,GAAG,CAAC;AAClE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAgB;IAC3C,MAAM,UAAU,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEhD,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;IACxB,OAAO,CAAC,GAAG,CACT,GAAG,IAAI,gBAAgB,IAAI,GAAG,QAAQ,UAAU,KAAK,KAAK,UAAU,CAAC,OAAO,GAAG,CAChF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,GAAG,GAAG,mEAAmE,KAAK,IAAI,CACnF,CAAC;IAEF,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC;IAEH,kDAAkD;IAClD,SAAS,SAAS,CAAC,KAAoB;QACrC,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,UAAU,GAAG,IAAI,KAAK,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IACD,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAEpC,SAAS,OAAO,CAAC,GAAU;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,UAAU,GAAG,GAAG,UAAU,GAAG,CAAC,OAAO,GAAG,KAAK,KAAK,MAAM,CAAC,UAAU,CAAC,EAAE,CAC1E,CAAC;IACJ,CAAC;IACD,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAEhC,aAAa;IACb,KAAK,UAAU,WAAW,CAAC,KAAa;QACtC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAEjC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,UAAU,CAAC,UAAU,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,MAAM,iDAAiD,KAAK,IAAI,CACpE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,SAAS,GAAG;QACV,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE;YACxC,KAAK,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBAChC,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED,GAAG,EAAE,CAAC;IAEN,oBAAoB;IACpB,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QAClB,UAAU,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjC,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,KAAK,UAAU,aAAa,CAAC,KAAa,EAAE,CAAiB;IAC3D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEtC,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,sBAAsB,KAAK,IAAI,CAAC,CAAC;gBAC/D,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;gBAChC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,cAAc,EAAE,CAAC;oBACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACvC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,SAAS,EAAE,CAAC;YACnC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC;YACpC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,+BAA+B,KAAK,IAAI,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACtC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,wBAAwB,KAAK,IAAI,CAAC,CAAC;gBACjE,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;YACxD,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,MAAM,gCAAgC,KAAK,IAAI,CACnD,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC7C,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,MAAM,kCAAkC,KAAK,IAAI,CACrD,CAAC;gBACF,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACnD,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,8BAA8B,KAAK,IAAI,CAAC,CAAC;gBACvE,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC3C,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,yBAAyB,KAAK,IAAI,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzC,WAAW,CAAC,MAAM,CAAC,CAAC;YACpB,OAAO;QACT,CAAC;QACD,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,YAAY,KAAK;IAC/C,KAAK,QAAQ,KAAK;IAClB,KAAK,SAAS,KAAK;IACnB,KAAK,SAAS,KAAK;IACnB,KAAK,UAAU,KAAK;IACpB,KAAK,QAAQ,KAAK;IAClB,KAAK,MAAM,KAAK;IAChB,KAAK,UAAU,KAAK;IACpB,KAAK,UAAU,KAAK;IACpB,KAAK,WAAW,KAAK;IACrB,KAAK,QAAQ,KAAK;IAClB,KAAK,WAAW,KAAK;IACrB,KAAK,QAAQ,KAAK;IAClB,KAAK,QAAQ,KAAK;IAClB,GAAG,kDAAkD,KAAK,IAAI,CAAC,CAAC;YAC9D,OAAO;QACT,KAAK,MAAM;YACT,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,WAAW,KAAK,IAAI,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB;YACE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,MAAM,qBAAqB,MAAM,CAAC,GAAG,CAAC,6BAA6B,KAAK,IAAI,CAChF,CAAC;IACN,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,SAAS,WAAW,CAAC,MAA6C;IAChE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,GAAG,KAAK,IAAI,CAAC,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAoB;IAC7C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,cAAc;YACjB,OAAO,GAAG,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QAClG,KAAK,IAAI;YACP,OAAO,GAAG,OAAO,WAAW,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrF,KAAK,eAAe;YAClB,OAAO,GAAG,KAAK,KAAK,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;QACjE,KAAK,aAAa;YAChB,OAAO,GAAG,MAAM,KAAK,KAAK,CAAC,KAAK,SAAS,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;QAChE,KAAK,eAAe;YAClB,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;QACnF,KAAK,iBAAiB;YACpB,OAAO,GAAG,GAAG,aAAa,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,MAAM,OAAO,KAAK,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;QACxF,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxE,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC,QAAQ,oBAAoB,KAAK,CAAC,IAAI,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACpF,CAAC;QACD,KAAK,iBAAiB;YACpB,OAAO,GAAG,MAAM,KAAK,KAAK,CAAC,SAAS,uBAAuB,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE,CAAC;QACrG,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO;iBACxB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;iBACrC,IAAI,CAAC,IAAI,CAAC,CAAC;YACd,OAAO,GAAG,GAAG,cAAc,KAAK,CAAC,IAAI,KAAK,KAAK,GAAG,KAAK,EAAE,CAAC;QAC5D,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -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,
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
21
|
-
* Returns the server
|
|
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(
|
|
30
|
+
export declare function tryStartWebServer(): WebServerHandle | undefined;
|
|
26
31
|
/**
|
|
27
|
-
* Create and start the web server
|
|
28
|
-
* and runWeb (standalone
|
|
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):
|
|
31
|
-
export declare function runWeb(userName: string, port?: number):
|
|
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;
|
|
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"}
|