agent-comms 1.0.0 → 1.0.5
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/README.md +115 -0
- package/bin.js +29 -0
- package/dist/bridges/claude-code/channel.d.ts +17 -0
- package/dist/bridges/claude-code/channel.d.ts.map +1 -0
- package/dist/bridges/claude-code/channel.js +143 -0
- package/dist/bridges/claude-code/channel.js.map +1 -0
- package/dist/bridges/codex/stop_hook.d.ts +13 -0
- package/dist/bridges/codex/stop_hook.d.ts.map +1 -0
- package/dist/bridges/codex/stop_hook.js +99 -0
- package/dist/bridges/codex/stop_hook.js.map +1 -0
- package/dist/bridges/codex/tool.d.ts +14 -0
- package/dist/bridges/codex/tool.d.ts.map +1 -0
- package/dist/bridges/codex/tool.js +71 -0
- package/dist/bridges/codex/tool.js.map +1 -0
- package/dist/bridges/opencode/plugin.d.ts +23 -0
- package/dist/bridges/opencode/plugin.d.ts.map +1 -0
- package/dist/bridges/opencode/plugin.js +73 -0
- package/dist/bridges/opencode/plugin.js.map +1 -0
- package/dist/bridges/pi/index.d.ts +11 -0
- package/dist/bridges/pi/index.d.ts.map +1 -0
- package/dist/bridges/pi/index.js +140 -0
- package/dist/bridges/pi/index.js.map +1 -0
- package/dist/cli.d.ts +16 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +505 -0
- package/dist/cli.js.map +1 -0
- package/dist/core/bridge.d.ts +77 -0
- package/dist/core/bridge.d.ts.map +1 -0
- package/dist/core/bridge.js +224 -0
- package/dist/core/bridge.js.map +1 -0
- package/dist/core/index.d.ts +13 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +11 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/nanoid.d.ts +6 -0
- package/dist/core/nanoid.d.ts.map +1 -0
- package/dist/core/nanoid.js +19 -0
- package/dist/core/nanoid.js.map +1 -0
- package/dist/core/store.d.ts +60 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +431 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/tool.d.ts +40 -0
- package/dist/core/tool.d.ts.map +1 -0
- package/dist/core/tool.js +210 -0
- package/dist/core/tool.js.map +1 -0
- package/dist/core/types.d.ts +308 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +168 -0
- package/dist/core/types.js.map +1 -0
- package/package.json +73 -8
|
@@ -0,0 +1,431 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem layout for the agent bus.
|
|
3
|
+
*
|
|
4
|
+
* All paths are relative to a configurable bus root (default: ~/.agents/bus/).
|
|
5
|
+
* Every operation is a file read/write — no server process needed.
|
|
6
|
+
* JSON.parse boundaries use Zod schemas for type-safe parsing.
|
|
7
|
+
*/
|
|
8
|
+
import * as fs from "node:fs/promises";
|
|
9
|
+
import * as os from "node:os";
|
|
10
|
+
import * as path from "node:path";
|
|
11
|
+
import { nanoid } from "./nanoid.js";
|
|
12
|
+
/** Swallow expected filesystem errors (e.g. file already deleted). */
|
|
13
|
+
function swallow(_error) {
|
|
14
|
+
/* intentionally empty — expected failure */
|
|
15
|
+
}
|
|
16
|
+
import { AgentIdentitySchema, DeliveryEventSchema, RoomMessageSchema, RoomSchema, } from "./types.js";
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// BusError
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
export class BusError extends Error {
|
|
21
|
+
code;
|
|
22
|
+
constructor(message, code) {
|
|
23
|
+
super(message);
|
|
24
|
+
this.code = code;
|
|
25
|
+
this.name = "BusError";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// ---------------------------------------------------------------------------
|
|
29
|
+
// BusStore
|
|
30
|
+
// ---------------------------------------------------------------------------
|
|
31
|
+
export class BusStore {
|
|
32
|
+
root;
|
|
33
|
+
constructor(root = path.join(os.homedir(), ".agents", "bus")) {
|
|
34
|
+
this.root = root;
|
|
35
|
+
}
|
|
36
|
+
// -------------------------------------------------------------------------
|
|
37
|
+
// Paths
|
|
38
|
+
// -------------------------------------------------------------------------
|
|
39
|
+
agentPath(id) {
|
|
40
|
+
return path.join(this.root, "registry", "agents", `${id}.json`);
|
|
41
|
+
}
|
|
42
|
+
roomPath(id) {
|
|
43
|
+
return path.join(this.root, "registry", "rooms", `${id}.json`);
|
|
44
|
+
}
|
|
45
|
+
roomMessagesDir(id) {
|
|
46
|
+
return path.join(this.root, "rooms", id);
|
|
47
|
+
}
|
|
48
|
+
dmDir(a, b) {
|
|
49
|
+
const sorted = [a, b].sort();
|
|
50
|
+
const first = sorted[0] ?? a;
|
|
51
|
+
const second = sorted[1] ?? b;
|
|
52
|
+
return path.join(this.root, "dms", `${first}--${second}`);
|
|
53
|
+
}
|
|
54
|
+
deliveryDir(id) {
|
|
55
|
+
return path.join(this.root, "delivery", id);
|
|
56
|
+
}
|
|
57
|
+
identityPath() {
|
|
58
|
+
return path.join(this.root, "identity.json");
|
|
59
|
+
}
|
|
60
|
+
// -------------------------------------------------------------------------
|
|
61
|
+
// Helpers
|
|
62
|
+
// -------------------------------------------------------------------------
|
|
63
|
+
async readJsonFile(filePath) {
|
|
64
|
+
const raw = await fs.readFile(filePath, "utf-8");
|
|
65
|
+
return JSON.parse(raw);
|
|
66
|
+
}
|
|
67
|
+
async writeJsonFile(filePath, data) {
|
|
68
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
69
|
+
await fs.writeFile(filePath, JSON.stringify(data, null, 2), "utf-8");
|
|
70
|
+
}
|
|
71
|
+
// -------------------------------------------------------------------------
|
|
72
|
+
// Identity
|
|
73
|
+
// -------------------------------------------------------------------------
|
|
74
|
+
async readIdentity() {
|
|
75
|
+
try {
|
|
76
|
+
const raw = await this.readJsonFile(this.identityPath());
|
|
77
|
+
if (typeof raw === "object" && raw !== null && "id" in raw) {
|
|
78
|
+
const id = raw.id;
|
|
79
|
+
if (typeof id === "string")
|
|
80
|
+
return { id };
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
return undefined;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async writeIdentity(id) {
|
|
89
|
+
await this.writeJsonFile(this.identityPath(), { id });
|
|
90
|
+
}
|
|
91
|
+
// -------------------------------------------------------------------------
|
|
92
|
+
// Agent registry
|
|
93
|
+
// -------------------------------------------------------------------------
|
|
94
|
+
async registerAgent(opts) {
|
|
95
|
+
const existing = await this.readIdentity();
|
|
96
|
+
if (existing) {
|
|
97
|
+
return this.updateAgent(existing.id, {
|
|
98
|
+
name: opts.name,
|
|
99
|
+
visibility: opts.visibility,
|
|
100
|
+
tags: opts.tags,
|
|
101
|
+
status: "active",
|
|
102
|
+
pid: opts.pid,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
const id = nanoid(8);
|
|
106
|
+
const agent = {
|
|
107
|
+
id,
|
|
108
|
+
name: opts.name,
|
|
109
|
+
harness: opts.harness,
|
|
110
|
+
pid: opts.pid,
|
|
111
|
+
startedAt: new Date().toISOString(),
|
|
112
|
+
visibility: opts.visibility,
|
|
113
|
+
status: "active",
|
|
114
|
+
tags: opts.tags,
|
|
115
|
+
subscribedRooms: [],
|
|
116
|
+
};
|
|
117
|
+
await this.writeJsonFile(this.agentPath(id), agent);
|
|
118
|
+
await this.writeIdentity(id);
|
|
119
|
+
return agent;
|
|
120
|
+
}
|
|
121
|
+
async getAgent(id) {
|
|
122
|
+
try {
|
|
123
|
+
return AgentIdentitySchema.parse(await this.readJsonFile(this.agentPath(id)));
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return undefined;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async updateAgent(id, patch) {
|
|
130
|
+
const agent = await this.getAgent(id);
|
|
131
|
+
if (!agent)
|
|
132
|
+
throw new BusError(`Agent ${id} not found`, "AGENT_NOT_FOUND");
|
|
133
|
+
Object.assign(agent, patch);
|
|
134
|
+
await this.writeJsonFile(this.agentPath(id), agent);
|
|
135
|
+
return agent;
|
|
136
|
+
}
|
|
137
|
+
async listAgents(requesterId) {
|
|
138
|
+
const dir = path.join(this.root, "registry", "agents");
|
|
139
|
+
try {
|
|
140
|
+
const files = await fs.readdir(dir);
|
|
141
|
+
const agents = [];
|
|
142
|
+
for (const file of files) {
|
|
143
|
+
if (!file.endsWith(".json"))
|
|
144
|
+
continue;
|
|
145
|
+
const agent = AgentIdentitySchema.parse(await this.readJsonFile(path.join(dir, file)));
|
|
146
|
+
if (agent.visibility === "ghost" && agent.id !== requesterId)
|
|
147
|
+
continue;
|
|
148
|
+
agents.push(agent);
|
|
149
|
+
}
|
|
150
|
+
return agents;
|
|
151
|
+
}
|
|
152
|
+
catch {
|
|
153
|
+
return [];
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
async setAgentOffline(id) {
|
|
157
|
+
const agent = await this.getAgent(id);
|
|
158
|
+
if (agent) {
|
|
159
|
+
agent.status = "offline";
|
|
160
|
+
await this.writeJsonFile(this.agentPath(id), agent);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
// -------------------------------------------------------------------------
|
|
164
|
+
// Rooms
|
|
165
|
+
// -------------------------------------------------------------------------
|
|
166
|
+
async createRoom(opts) {
|
|
167
|
+
const id = opts.type === "secret" ? `_${opts.name}` : opts.name;
|
|
168
|
+
const existing = await this.getRoom(id);
|
|
169
|
+
if (existing)
|
|
170
|
+
throw new BusError(`Room ${id} already exists`, "ROOM_EXISTS");
|
|
171
|
+
const room = {
|
|
172
|
+
id,
|
|
173
|
+
name: opts.name,
|
|
174
|
+
type: opts.type,
|
|
175
|
+
owner: opts.owner,
|
|
176
|
+
createdAt: new Date().toISOString(),
|
|
177
|
+
description: opts.description,
|
|
178
|
+
members: [opts.owner],
|
|
179
|
+
invited: [],
|
|
180
|
+
};
|
|
181
|
+
await this.writeJsonFile(this.roomPath(id), room);
|
|
182
|
+
await fs.mkdir(this.roomMessagesDir(id), { recursive: true });
|
|
183
|
+
return room;
|
|
184
|
+
}
|
|
185
|
+
async getRoom(id) {
|
|
186
|
+
try {
|
|
187
|
+
return RoomSchema.parse(await this.readJsonFile(this.roomPath(id)));
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return undefined;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
async listRooms(requesterId) {
|
|
194
|
+
const dir = path.join(this.root, "registry", "rooms");
|
|
195
|
+
try {
|
|
196
|
+
const files = await fs.readdir(dir);
|
|
197
|
+
const rooms = [];
|
|
198
|
+
for (const file of files) {
|
|
199
|
+
if (!file.endsWith(".json"))
|
|
200
|
+
continue;
|
|
201
|
+
const room = RoomSchema.parse(await this.readJsonFile(path.join(dir, file)));
|
|
202
|
+
if (room.type === "secret" && !room.members.includes(requesterId))
|
|
203
|
+
continue;
|
|
204
|
+
rooms.push(room);
|
|
205
|
+
}
|
|
206
|
+
return rooms;
|
|
207
|
+
}
|
|
208
|
+
catch {
|
|
209
|
+
return [];
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
async joinRoom(roomId, agentId) {
|
|
213
|
+
const room = await this.getRoom(roomId);
|
|
214
|
+
if (!room)
|
|
215
|
+
throw new BusError(`Room ${roomId} not found`, "ROOM_NOT_FOUND");
|
|
216
|
+
if (room.type === "public") {
|
|
217
|
+
if (!room.members.includes(agentId)) {
|
|
218
|
+
room.members.push(agentId);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else {
|
|
222
|
+
if (!room.invited.includes(agentId) &&
|
|
223
|
+
room.owner !== agentId &&
|
|
224
|
+
!room.members.includes(agentId)) {
|
|
225
|
+
throw new BusError(`Not invited to room ${roomId}`, "NOT_INVITED");
|
|
226
|
+
}
|
|
227
|
+
room.invited = room.invited.filter((id) => id !== agentId);
|
|
228
|
+
if (!room.members.includes(agentId)) {
|
|
229
|
+
room.members.push(agentId);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
await this.writeJsonFile(this.roomPath(roomId), room);
|
|
233
|
+
const agent = await this.getAgent(agentId);
|
|
234
|
+
if (agent && !agent.subscribedRooms.includes(roomId)) {
|
|
235
|
+
agent.subscribedRooms.push(roomId);
|
|
236
|
+
await this.writeJsonFile(this.agentPath(agentId), agent);
|
|
237
|
+
}
|
|
238
|
+
await this.deliverToMembers(roomId, { type: "member_joined", room: roomId, agent: agentId }, agentId);
|
|
239
|
+
return room;
|
|
240
|
+
}
|
|
241
|
+
async leaveRoom(roomId, agentId) {
|
|
242
|
+
const room = await this.getRoom(roomId);
|
|
243
|
+
if (!room)
|
|
244
|
+
throw new BusError(`Room ${roomId} not found`, "ROOM_NOT_FOUND");
|
|
245
|
+
room.members = room.members.filter((id) => id !== agentId);
|
|
246
|
+
await this.writeJsonFile(this.roomPath(roomId), room);
|
|
247
|
+
const agent = await this.getAgent(agentId);
|
|
248
|
+
if (agent) {
|
|
249
|
+
agent.subscribedRooms = agent.subscribedRooms.filter((id) => id !== roomId);
|
|
250
|
+
await this.writeJsonFile(this.agentPath(agentId), agent);
|
|
251
|
+
}
|
|
252
|
+
await this.deliverToMembers(roomId, { type: "member_left", room: roomId, agent: agentId }, agentId);
|
|
253
|
+
if (room.members.length === 0 && room.owner === agentId) {
|
|
254
|
+
await this.destroyRoom(roomId, agentId);
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async inviteToRoom(roomId, targetId, inviterId) {
|
|
258
|
+
const room = await this.getRoom(roomId);
|
|
259
|
+
if (!room)
|
|
260
|
+
throw new BusError(`Room ${roomId} not found`, "ROOM_NOT_FOUND");
|
|
261
|
+
if (room.owner !== inviterId)
|
|
262
|
+
throw new BusError("Only the room owner can invite", "NOT_OWNER");
|
|
263
|
+
if (!room.invited.includes(targetId) && !room.members.includes(targetId)) {
|
|
264
|
+
room.invited.push(targetId);
|
|
265
|
+
}
|
|
266
|
+
await this.writeJsonFile(this.roomPath(roomId), room);
|
|
267
|
+
await this.deliver(targetId, {
|
|
268
|
+
type: "room_invite",
|
|
269
|
+
room: roomId,
|
|
270
|
+
from: inviterId,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
async kickFromRoom(roomId, targetId, kickerId) {
|
|
274
|
+
const room = await this.getRoom(roomId);
|
|
275
|
+
if (!room)
|
|
276
|
+
throw new BusError(`Room ${roomId} not found`, "ROOM_NOT_FOUND");
|
|
277
|
+
if (room.owner !== kickerId)
|
|
278
|
+
throw new BusError("Only the room owner can kick", "NOT_OWNER");
|
|
279
|
+
room.members = room.members.filter((id) => id !== targetId);
|
|
280
|
+
room.invited = room.invited.filter((id) => id !== targetId);
|
|
281
|
+
await this.writeJsonFile(this.roomPath(roomId), room);
|
|
282
|
+
}
|
|
283
|
+
async destroyRoom(roomId, agentId) {
|
|
284
|
+
const room = await this.getRoom(roomId);
|
|
285
|
+
if (!room)
|
|
286
|
+
throw new BusError(`Room ${roomId} not found`, "ROOM_NOT_FOUND");
|
|
287
|
+
if (room.owner !== agentId)
|
|
288
|
+
throw new BusError("Only the room owner can destroy", "NOT_OWNER");
|
|
289
|
+
for (const memberId of room.members) {
|
|
290
|
+
const member = await this.getAgent(memberId);
|
|
291
|
+
if (member) {
|
|
292
|
+
member.subscribedRooms = member.subscribedRooms.filter((id) => id !== roomId);
|
|
293
|
+
await this.writeJsonFile(this.agentPath(memberId), member);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
await fs.unlink(this.roomPath(roomId)).catch(swallow);
|
|
297
|
+
await fs
|
|
298
|
+
.rm(this.roomMessagesDir(roomId), { recursive: true })
|
|
299
|
+
.catch(swallow);
|
|
300
|
+
}
|
|
301
|
+
// -------------------------------------------------------------------------
|
|
302
|
+
// Messages
|
|
303
|
+
// -------------------------------------------------------------------------
|
|
304
|
+
async sendRoomMessage(roomId, from, content, replyTo) {
|
|
305
|
+
const room = await this.getRoom(roomId);
|
|
306
|
+
if (!room)
|
|
307
|
+
throw new BusError(`Room ${roomId} not found`, "ROOM_NOT_FOUND");
|
|
308
|
+
if (!room.members.includes(from))
|
|
309
|
+
throw new BusError(`Not a member of ${roomId}`, "NOT_MEMBER");
|
|
310
|
+
const id = `${String(Date.now())}-${nanoid(6)}`;
|
|
311
|
+
const message = {
|
|
312
|
+
id,
|
|
313
|
+
from,
|
|
314
|
+
room: roomId,
|
|
315
|
+
content,
|
|
316
|
+
timestamp: new Date().toISOString(),
|
|
317
|
+
replyTo,
|
|
318
|
+
};
|
|
319
|
+
await fs.mkdir(this.roomMessagesDir(roomId), { recursive: true });
|
|
320
|
+
await this.writeJsonFile(path.join(this.roomMessagesDir(roomId), `${id}.json`), message);
|
|
321
|
+
await this.deliverToMembers(roomId, { type: "room_message", message }, from);
|
|
322
|
+
return message;
|
|
323
|
+
}
|
|
324
|
+
async readRoomMessages(roomId, since) {
|
|
325
|
+
const dir = this.roomMessagesDir(roomId);
|
|
326
|
+
try {
|
|
327
|
+
const files = await fs.readdir(dir);
|
|
328
|
+
const messages = [];
|
|
329
|
+
for (const file of files) {
|
|
330
|
+
if (!file.endsWith(".json"))
|
|
331
|
+
continue;
|
|
332
|
+
const msg = RoomMessageSchema.parse(await this.readJsonFile(path.join(dir, file)));
|
|
333
|
+
if (!since || msg.timestamp > since) {
|
|
334
|
+
messages.push(msg);
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
messages.sort((a, b) => a.timestamp.localeCompare(b.timestamp));
|
|
338
|
+
return messages;
|
|
339
|
+
}
|
|
340
|
+
catch {
|
|
341
|
+
return [];
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
// -------------------------------------------------------------------------
|
|
345
|
+
// DMs
|
|
346
|
+
// -------------------------------------------------------------------------
|
|
347
|
+
async sendDm(from, to, content) {
|
|
348
|
+
if (to !== from) {
|
|
349
|
+
const recipient = await this.getAgent(to);
|
|
350
|
+
if (!recipient)
|
|
351
|
+
throw new BusError(`Agent ${to} not found`, "AGENT_NOT_FOUND");
|
|
352
|
+
if (recipient.visibility === "ghost")
|
|
353
|
+
throw new BusError(`Cannot DM agent ${to}`, "AGENT_NOT_FOUND");
|
|
354
|
+
}
|
|
355
|
+
const id = `${String(Date.now())}-${nanoid(6)}`;
|
|
356
|
+
const message = {
|
|
357
|
+
id,
|
|
358
|
+
from,
|
|
359
|
+
to,
|
|
360
|
+
content,
|
|
361
|
+
timestamp: new Date().toISOString(),
|
|
362
|
+
};
|
|
363
|
+
const dir = this.dmDir(from, to);
|
|
364
|
+
await fs.mkdir(dir, { recursive: true });
|
|
365
|
+
await this.writeJsonFile(path.join(dir, `${id}.json`), message);
|
|
366
|
+
await this.deliver(to, { type: "dm", message });
|
|
367
|
+
return message;
|
|
368
|
+
}
|
|
369
|
+
// -------------------------------------------------------------------------
|
|
370
|
+
// Delivery
|
|
371
|
+
// -------------------------------------------------------------------------
|
|
372
|
+
async deliver(agentId, event) {
|
|
373
|
+
const dir = this.deliveryDir(agentId);
|
|
374
|
+
await fs.mkdir(dir, { recursive: true });
|
|
375
|
+
const id = `${String(Date.now())}-${nanoid(6)}`;
|
|
376
|
+
await this.writeJsonFile(path.join(dir, `${id}.json`), event);
|
|
377
|
+
}
|
|
378
|
+
async drainDelivery(agentId) {
|
|
379
|
+
const dir = this.deliveryDir(agentId);
|
|
380
|
+
try {
|
|
381
|
+
const files = await fs.readdir(dir);
|
|
382
|
+
const events = [];
|
|
383
|
+
for (const file of files) {
|
|
384
|
+
if (!file.endsWith(".json"))
|
|
385
|
+
continue;
|
|
386
|
+
const event = DeliveryEventSchema.parse(await this.readJsonFile(path.join(dir, file)));
|
|
387
|
+
events.push(event);
|
|
388
|
+
await fs.unlink(path.join(dir, file));
|
|
389
|
+
}
|
|
390
|
+
events.sort((a, b) => {
|
|
391
|
+
const ta = a.type === "room_message" || a.type === "dm"
|
|
392
|
+
? a.message.timestamp
|
|
393
|
+
: "";
|
|
394
|
+
const tb = b.type === "room_message" || b.type === "dm"
|
|
395
|
+
? b.message.timestamp
|
|
396
|
+
: "";
|
|
397
|
+
return ta.localeCompare(tb);
|
|
398
|
+
});
|
|
399
|
+
return events;
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
return [];
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
async deliverToMembers(roomId, event, excludeAgent) {
|
|
406
|
+
const room = await this.getRoom(roomId);
|
|
407
|
+
if (!room)
|
|
408
|
+
return;
|
|
409
|
+
for (const memberId of room.members) {
|
|
410
|
+
if (memberId !== excludeAgent) {
|
|
411
|
+
await this.deliver(memberId, event);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
// -------------------------------------------------------------------------
|
|
416
|
+
// Bus initialisation
|
|
417
|
+
// -------------------------------------------------------------------------
|
|
418
|
+
async init() {
|
|
419
|
+
const dirs = [
|
|
420
|
+
path.join(this.root, "registry", "agents"),
|
|
421
|
+
path.join(this.root, "registry", "rooms"),
|
|
422
|
+
path.join(this.root, "rooms"),
|
|
423
|
+
path.join(this.root, "dms"),
|
|
424
|
+
path.join(this.root, "delivery"),
|
|
425
|
+
];
|
|
426
|
+
for (const dir of dirs) {
|
|
427
|
+
await fs.mkdir(dir, { recursive: true });
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
//# sourceMappingURL=store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/core/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool handler — processes BusAction objects and returns human-readable results.
|
|
3
|
+
*
|
|
4
|
+
* This is the shared logic that every bridge calls into. Bridges just:
|
|
5
|
+
* 1. Parse the LLM's tool call into a BusAction
|
|
6
|
+
* 2. Call handleAction(action)
|
|
7
|
+
* 3. Return the result string to the LLM
|
|
8
|
+
*/
|
|
9
|
+
import type { AgentId, AgentIdentity, BusAction } from "./types.js";
|
|
10
|
+
import { BusStore } from "./store.js";
|
|
11
|
+
export interface ToolContext {
|
|
12
|
+
agentId: AgentId;
|
|
13
|
+
harness: AgentIdentity["harness"];
|
|
14
|
+
pid: number;
|
|
15
|
+
}
|
|
16
|
+
export interface ToolResult {
|
|
17
|
+
content: string;
|
|
18
|
+
/** If true, the result is an error. */
|
|
19
|
+
isError: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare class BusTool {
|
|
22
|
+
private readonly store;
|
|
23
|
+
constructor(store: BusStore);
|
|
24
|
+
handle(ctx: ToolContext, action: BusAction): Promise<ToolResult>;
|
|
25
|
+
private register;
|
|
26
|
+
private update;
|
|
27
|
+
private whoami;
|
|
28
|
+
private createRoom;
|
|
29
|
+
private listRooms;
|
|
30
|
+
private joinRoom;
|
|
31
|
+
private leaveRoom;
|
|
32
|
+
private send;
|
|
33
|
+
private dm;
|
|
34
|
+
private listAgents;
|
|
35
|
+
private readRoom;
|
|
36
|
+
private invite;
|
|
37
|
+
private kick;
|
|
38
|
+
private destroyRoom;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,aAAa,EACb,SAAS,EAGV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAY,MAAM,YAAY,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,QAAQ;IAEtC,MAAM,CAAC,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC;YAmDxD,QAAQ;YAiBR,MAAM;YAkBN,MAAM;YAiBN,UAAU;YAkBV,SAAS;YAeT,QAAQ;YAYR,SAAS;YAQT,IAAI;YAiBJ,EAAE;YAYF,UAAU;YAeV,QAAQ;YAgBR,MAAM;YAWN,IAAI;YAWJ,WAAW;CAO1B"}
|