kitty-hive 0.1.1 → 0.3.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 (63) hide show
  1. package/README.md +121 -126
  2. package/README.zh.md +153 -105
  3. package/channel.ts +194 -431
  4. package/dist/auth.d.ts +10 -6
  5. package/dist/auth.js +32 -17
  6. package/dist/auth.js.map +1 -1
  7. package/dist/db.d.ts +47 -17
  8. package/dist/db.js +268 -123
  9. package/dist/db.js.map +1 -1
  10. package/dist/federation-heartbeat.d.ts +7 -0
  11. package/dist/federation-heartbeat.js +45 -0
  12. package/dist/federation-heartbeat.js.map +1 -0
  13. package/dist/federation-http.d.ts +7 -0
  14. package/dist/federation-http.js +287 -0
  15. package/dist/federation-http.js.map +1 -0
  16. package/dist/index.js +336 -114
  17. package/dist/index.js.map +1 -1
  18. package/dist/log.d.ts +3 -0
  19. package/dist/log.js +10 -0
  20. package/dist/log.js.map +1 -0
  21. package/dist/mcp/agent-tools.d.ts +2 -0
  22. package/dist/mcp/agent-tools.js +66 -0
  23. package/dist/mcp/agent-tools.js.map +1 -0
  24. package/dist/mcp/dm-tools.d.ts +2 -0
  25. package/dist/mcp/dm-tools.js +54 -0
  26. package/dist/mcp/dm-tools.js.map +1 -0
  27. package/dist/mcp/federation-tools.d.ts +2 -0
  28. package/dist/mcp/federation-tools.js +44 -0
  29. package/dist/mcp/federation-tools.js.map +1 -0
  30. package/dist/mcp/server.d.ts +2 -0
  31. package/dist/mcp/server.js +62 -0
  32. package/dist/mcp/server.js.map +1 -0
  33. package/dist/mcp/task-tools.d.ts +2 -0
  34. package/dist/mcp/task-tools.js +128 -0
  35. package/dist/mcp/task-tools.js.map +1 -0
  36. package/dist/mcp/team-tools.d.ts +2 -0
  37. package/dist/mcp/team-tools.js +95 -0
  38. package/dist/mcp/team-tools.js.map +1 -0
  39. package/dist/models.d.ts +28 -10
  40. package/dist/models.js +1 -3
  41. package/dist/models.js.map +1 -1
  42. package/dist/server.d.ts +2 -3
  43. package/dist/server.js +56 -761
  44. package/dist/server.js.map +1 -1
  45. package/dist/sessions.d.ts +15 -0
  46. package/dist/sessions.js +107 -0
  47. package/dist/sessions.js.map +1 -0
  48. package/dist/tools/dm.d.ts +3 -2
  49. package/dist/tools/dm.js +35 -32
  50. package/dist/tools/dm.js.map +1 -1
  51. package/dist/tools/start.d.ts +3 -3
  52. package/dist/tools/start.js +18 -15
  53. package/dist/tools/start.js.map +1 -1
  54. package/dist/tools/task.d.ts +7 -2
  55. package/dist/tools/task.js +113 -15
  56. package/dist/tools/task.js.map +1 -1
  57. package/dist/tools/team.d.ts +62 -13
  58. package/dist/tools/team.js +102 -30
  59. package/dist/tools/team.js.map +1 -1
  60. package/package.json +4 -3
  61. package/dist/tools/room.d.ts +0 -39
  62. package/dist/tools/room.js +0 -35
  63. package/dist/tools/room.js.map +0 -1
package/dist/db.js CHANGED
@@ -28,26 +28,45 @@ export function initDB(dbPath) {
28
28
  CREATE INDEX IF NOT EXISTS idx_agents_token ON agents(token);
29
29
  CREATE INDEX IF NOT EXISTS idx_agents_roles ON agents(roles);
30
30
 
31
- CREATE TABLE IF NOT EXISTS rooms (
31
+ CREATE TABLE IF NOT EXISTS teams (
32
32
  id TEXT PRIMARY KEY,
33
- name TEXT,
34
- kind TEXT NOT NULL CHECK(kind IN ('lobby','dm','team')),
33
+ name TEXT NOT NULL UNIQUE,
35
34
  host_agent_id TEXT REFERENCES agents(id),
36
35
  created_at TEXT NOT NULL,
37
36
  closed_at TEXT
38
37
  );
39
- CREATE INDEX IF NOT EXISTS idx_rooms_kind ON rooms(kind);
40
38
 
41
- CREATE TABLE IF NOT EXISTS room_events (
39
+ CREATE TABLE IF NOT EXISTS team_members (
40
+ team_id TEXT NOT NULL REFERENCES teams(id),
41
+ agent_id TEXT NOT NULL REFERENCES agents(id),
42
+ nickname TEXT,
43
+ joined_at TEXT NOT NULL,
44
+ PRIMARY KEY (team_id, agent_id),
45
+ UNIQUE (team_id, nickname)
46
+ );
47
+ CREATE INDEX IF NOT EXISTS idx_team_members_agent ON team_members(agent_id);
48
+
49
+ CREATE TABLE IF NOT EXISTS team_events (
42
50
  id INTEGER PRIMARY KEY AUTOINCREMENT,
43
- room_id TEXT NOT NULL REFERENCES rooms(id),
51
+ team_id TEXT NOT NULL REFERENCES teams(id),
44
52
  seq INTEGER NOT NULL,
45
- type TEXT NOT NULL CHECK(type IN ('join','leave','message')),
53
+ type TEXT NOT NULL CHECK(type IN ('join','leave','message','rename')),
46
54
  actor_agent_id TEXT REFERENCES agents(id),
47
55
  payload_json TEXT DEFAULT '{}',
48
56
  ts TEXT NOT NULL
49
57
  );
50
- CREATE INDEX IF NOT EXISTS idx_room_events_room_seq ON room_events(room_id, seq);
58
+ CREATE INDEX IF NOT EXISTS idx_team_events_team_seq ON team_events(team_id, seq);
59
+
60
+ CREATE TABLE IF NOT EXISTS dm_messages (
61
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
62
+ seq INTEGER NOT NULL,
63
+ from_agent_id TEXT NOT NULL REFERENCES agents(id),
64
+ to_agent_id TEXT NOT NULL REFERENCES agents(id),
65
+ content TEXT NOT NULL,
66
+ ts TEXT NOT NULL
67
+ );
68
+ CREATE INDEX IF NOT EXISTS idx_dm_to_seq ON dm_messages(to_agent_id, seq);
69
+ CREATE INDEX IF NOT EXISTS idx_dm_from_seq ON dm_messages(from_agent_id, seq);
51
70
 
52
71
  CREATE TABLE IF NOT EXISTS tasks (
53
72
  id TEXT PRIMARY KEY,
@@ -58,7 +77,7 @@ export function initDB(dbPath) {
58
77
  CHECK(status IN ('created','proposing','approved','in_progress','completed','failed','canceled')),
59
78
  workflow_json TEXT,
60
79
  current_step INTEGER DEFAULT 0,
61
- source_room_id TEXT REFERENCES rooms(id),
80
+ source_team_id TEXT REFERENCES teams(id),
62
81
  input_json TEXT DEFAULT '{}',
63
82
  created_at TEXT NOT NULL,
64
83
  completed_at TEXT
@@ -80,7 +99,7 @@ export function initDB(dbPath) {
80
99
 
81
100
  CREATE TABLE IF NOT EXISTS read_cursors (
82
101
  agent_id TEXT NOT NULL REFERENCES agents(id),
83
- target_type TEXT NOT NULL CHECK(target_type IN ('room','task')),
102
+ target_type TEXT NOT NULL CHECK(target_type IN ('team','task','dm')),
84
103
  target_id TEXT NOT NULL,
85
104
  last_seq INTEGER NOT NULL DEFAULT 0,
86
105
  PRIMARY KEY (agent_id, target_type, target_id)
@@ -96,6 +115,24 @@ export function initDB(dbPath) {
96
115
  created_at TEXT NOT NULL,
97
116
  last_seen TEXT
98
117
  );
118
+ `);
119
+ // Idempotent column migrations for federation fields
120
+ function addColumnIfMissing(table, column, decl) {
121
+ const cols = db.prepare(`PRAGMA table_info(${table})`).all().map(c => c.name);
122
+ if (!cols.includes(column))
123
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${decl}`);
124
+ }
125
+ addColumnIfMissing('agents', 'origin_peer', "TEXT NOT NULL DEFAULT ''");
126
+ addColumnIfMissing('agents', 'remote_id', "TEXT NOT NULL DEFAULT ''");
127
+ addColumnIfMissing('tasks', 'originator_peer', "TEXT NOT NULL DEFAULT ''");
128
+ addColumnIfMissing('tasks', 'originator_task_id', "TEXT NOT NULL DEFAULT ''");
129
+ addColumnIfMissing('tasks', 'delegated_peer', "TEXT NOT NULL DEFAULT ''");
130
+ addColumnIfMissing('tasks', 'delegated_task_id', "TEXT NOT NULL DEFAULT ''");
131
+ addColumnIfMissing('peers', 'node_name', "TEXT NOT NULL DEFAULT ''");
132
+ db.exec(`
133
+ CREATE INDEX IF NOT EXISTS idx_agents_remote ON agents(origin_peer, remote_id);
134
+ CREATE INDEX IF NOT EXISTS idx_tasks_delegated ON tasks(delegated_peer, delegated_task_id);
135
+ CREATE INDEX IF NOT EXISTS idx_tasks_originator ON tasks(originator_peer, originator_task_id);
99
136
  `);
100
137
  return db;
101
138
  }
@@ -105,26 +142,49 @@ export function getDB() {
105
142
  return db;
106
143
  }
107
144
  // --- Agent queries ---
108
- export function createAgent(displayName, tool, roles, expertise) {
145
+ export function createAgent(displayName, tool, roles, expertise, originPeer = '', remoteId = '') {
109
146
  const agent = {
110
147
  id: ulid(), display_name: displayName, token: generateToken(),
111
148
  tool, roles, expertise, status: 'active',
112
149
  created_at: nowISO(), last_seen: nowISO(),
150
+ origin_peer: originPeer, remote_id: remoteId,
113
151
  };
114
152
  getDB().prepare(`
115
- INSERT INTO agents (id, display_name, token, tool, roles, expertise, status, created_at, last_seen)
116
- VALUES (@id, @display_name, @token, @tool, @roles, @expertise, @status, @created_at, @last_seen)
153
+ INSERT INTO agents (id, display_name, token, tool, roles, expertise, status, created_at, last_seen, origin_peer, remote_id)
154
+ VALUES (@id, @display_name, @token, @tool, @roles, @expertise, @status, @created_at, @last_seen, @origin_peer, @remote_id)
117
155
  `).run(agent);
118
156
  return agent;
119
157
  }
158
+ // Find or create a placeholder agent representing a remote peer's agent.
159
+ // Looked up by (origin_peer, remote_id) — stable across rename/restart.
160
+ export function ensureRemoteAgentByRemoteId(remoteId, peerName, displayName) {
161
+ const existing = getDB().prepare('SELECT * FROM agents WHERE origin_peer = ? AND remote_id = ?').get(peerName, remoteId);
162
+ if (existing) {
163
+ if (existing.display_name !== displayName) {
164
+ getDB().prepare('UPDATE agents SET display_name = ?, last_seen = ? WHERE id = ?').run(displayName, nowISO(), existing.id);
165
+ existing.display_name = displayName;
166
+ }
167
+ else {
168
+ touchAgent(existing.id);
169
+ }
170
+ return existing;
171
+ }
172
+ return createAgent(displayName, 'remote', `peer:${peerName}`, '', peerName, remoteId);
173
+ }
120
174
  export function getAgentByToken(token) {
121
175
  return getDB().prepare('SELECT * FROM agents WHERE token = ?').get(token);
122
176
  }
123
177
  export function getAgentById(id) {
124
178
  return getDB().prepare('SELECT * FROM agents WHERE id = ?').get(id);
125
179
  }
126
- export function getAgentByName(name) {
127
- return getDB().prepare('SELECT * FROM agents WHERE display_name = ?').get(name);
180
+ export function getAgentsByName(name) {
181
+ return getDB().prepare('SELECT * FROM agents WHERE display_name = ?').all(name);
182
+ }
183
+ export function listAllAgents(activeOnly = false) {
184
+ const sql = activeOnly
185
+ ? "SELECT * FROM agents WHERE status = 'active' ORDER BY last_seen DESC"
186
+ : 'SELECT * FROM agents ORDER BY last_seen DESC';
187
+ return getDB().prepare(sql).all();
128
188
  }
129
189
  export function findAgentByRole(role) {
130
190
  return getDB().prepare("SELECT * FROM agents WHERE roles LIKE ? AND status = 'active' ORDER BY last_seen DESC LIMIT 1").get(`%${role}%`);
@@ -132,109 +192,168 @@ export function findAgentByRole(role) {
132
192
  export function touchAgent(id) {
133
193
  getDB().prepare('UPDATE agents SET last_seen = ? WHERE id = ?').run(nowISO(), id);
134
194
  }
135
- // --- Room queries ---
136
- export function createRoom(kind, hostAgentId, name) {
137
- const room = {
138
- id: ulid(), name: name ?? null, kind: kind,
139
- host_agent_id: hostAgentId, created_at: nowISO(), closed_at: null,
195
+ export function renameAgent(id, newName) {
196
+ getDB().prepare('UPDATE agents SET display_name = ? WHERE id = ?').run(newName, id);
197
+ }
198
+ export function resolveAddressee(callerAgentId, target) {
199
+ // 1) direct id
200
+ const byId = getAgentById(target);
201
+ if (byId)
202
+ return { agent: byId, source: 'id' };
203
+ // 2) nickname in caller's teams
204
+ const nickMatches = getDB().prepare(`
205
+ SELECT DISTINCT a.* FROM agents a
206
+ JOIN team_members tm ON tm.agent_id = a.id
207
+ WHERE tm.nickname = ?
208
+ AND tm.team_id IN (SELECT team_id FROM team_members WHERE agent_id = ?)
209
+ `).all(target, callerAgentId);
210
+ if (nickMatches.length === 1)
211
+ return { agent: nickMatches[0], source: 'team-nickname' };
212
+ if (nickMatches.length > 1)
213
+ return { error: `Nickname "${target}" matches multiple agents in your teams. Use agent id instead.` };
214
+ // 3) global display_name
215
+ const nameMatches = getAgentsByName(target);
216
+ if (nameMatches.length === 1)
217
+ return { agent: nameMatches[0], source: 'display-name' };
218
+ if (nameMatches.length > 1)
219
+ return { error: `Display name "${target}" matches multiple agents. Use agent id instead.` };
220
+ return { error: `No agent found matching "${target}".` };
221
+ }
222
+ // --- Team queries ---
223
+ export function createTeam(name, hostAgentId) {
224
+ const team = {
225
+ id: ulid(), name,
226
+ host_agent_id: hostAgentId,
227
+ created_at: nowISO(), closed_at: null,
140
228
  };
141
229
  getDB().prepare(`
142
- INSERT INTO rooms (id, name, kind, host_agent_id, created_at, closed_at)
143
- VALUES (@id, @name, @kind, @host_agent_id, @created_at, @closed_at)
144
- `).run(room);
145
- return room;
230
+ INSERT INTO teams (id, name, host_agent_id, created_at, closed_at)
231
+ VALUES (@id, @name, @host_agent_id, @created_at, @closed_at)
232
+ `).run(team);
233
+ return team;
234
+ }
235
+ export function getTeamById(id) {
236
+ return getDB().prepare('SELECT * FROM teams WHERE id = ?').get(id);
237
+ }
238
+ export function getTeamByName(name) {
239
+ return getDB().prepare('SELECT * FROM teams WHERE name = ?').get(name);
240
+ }
241
+ export function listTeams(activeOnly = true) {
242
+ const sql = activeOnly
243
+ ? 'SELECT * FROM teams WHERE closed_at IS NULL ORDER BY created_at DESC'
244
+ : 'SELECT * FROM teams ORDER BY created_at DESC';
245
+ return getDB().prepare(sql).all();
246
+ }
247
+ export function getAgentTeams(agentId, activeOnly = true) {
248
+ const sql = activeOnly
249
+ ? `SELECT t.* FROM teams t JOIN team_members tm ON tm.team_id = t.id WHERE tm.agent_id = ? AND t.closed_at IS NULL ORDER BY tm.joined_at DESC`
250
+ : `SELECT t.* FROM teams t JOIN team_members tm ON tm.team_id = t.id WHERE tm.agent_id = ? ORDER BY tm.joined_at DESC`;
251
+ return getDB().prepare(sql).all(agentId);
252
+ }
253
+ // --- Team membership ---
254
+ export function addTeamMember(teamId, agentId, nickname = null) {
255
+ const member = { team_id: teamId, agent_id: agentId, nickname, joined_at: nowISO() };
256
+ getDB().prepare(`
257
+ INSERT INTO team_members (team_id, agent_id, nickname, joined_at)
258
+ VALUES (@team_id, @agent_id, @nickname, @joined_at)
259
+ ON CONFLICT(team_id, agent_id) DO NOTHING
260
+ `).run(member);
261
+ return member;
146
262
  }
147
- export function getRoomById(id) {
148
- return getDB().prepare('SELECT * FROM rooms WHERE id = ?').get(id);
263
+ export function removeTeamMember(teamId, agentId) {
264
+ getDB().prepare('DELETE FROM team_members WHERE team_id = ? AND agent_id = ?').run(teamId, agentId);
149
265
  }
150
- export function getLobby() {
151
- return getDB().prepare("SELECT * FROM rooms WHERE kind = 'lobby' LIMIT 1").get();
266
+ export function isTeamMember(teamId, agentId) {
267
+ const row = getDB().prepare('SELECT 1 FROM team_members WHERE team_id = ? AND agent_id = ?').get(teamId, agentId);
268
+ return !!row;
152
269
  }
153
- export function findDMRoom(agentA, agentB) {
154
- return getDB().prepare(`
155
- SELECT r.* FROM rooms r
156
- WHERE r.kind = 'dm'
157
- AND EXISTS (SELECT 1 FROM room_events e WHERE e.room_id = r.id AND e.type = 'join' AND e.actor_agent_id = ?)
158
- AND EXISTS (SELECT 1 FROM room_events e WHERE e.room_id = r.id AND e.type = 'join' AND e.actor_agent_id = ?)
159
- LIMIT 1
160
- `).get(agentA, agentB);
161
- }
162
- export function listTeams() {
163
- return getDB().prepare("SELECT * FROM rooms WHERE kind = 'team' AND closed_at IS NULL ORDER BY created_at DESC").all();
164
- }
165
- // --- Room event queries ---
166
- export function appendRoomEvent(roomId, type, actorAgentId, payload = {}) {
270
+ export function getTeamMembers(teamId) {
271
+ return getDB().prepare('SELECT * FROM team_members WHERE team_id = ?').all(teamId);
272
+ }
273
+ export function getTeamMemberAgentIds(teamId) {
274
+ return getDB().prepare('SELECT agent_id FROM team_members WHERE team_id = ?').all(teamId).map(r => r.agent_id);
275
+ }
276
+ export function setTeamNickname(teamId, agentId, nickname) {
277
+ getDB().prepare('UPDATE team_members SET nickname = ? WHERE team_id = ? AND agent_id = ?').run(nickname, teamId, agentId);
278
+ }
279
+ export function getTeamMember(teamId, agentId) {
280
+ return getDB().prepare('SELECT * FROM team_members WHERE team_id = ? AND agent_id = ?').get(teamId, agentId);
281
+ }
282
+ // Display name for an agent in a team context (nickname || display_name)
283
+ export function getTeamDisplayName(teamId, agentId) {
284
+ const member = getTeamMember(teamId, agentId);
285
+ if (member?.nickname)
286
+ return member.nickname;
287
+ const agent = getAgentById(agentId);
288
+ return agent?.display_name ?? 'unknown';
289
+ }
290
+ // --- Team event queries ---
291
+ export function appendTeamEvent(teamId, type, actorAgentId, payload = {}) {
167
292
  const d = getDB();
168
293
  const ts = nowISO();
169
294
  const payloadJson = JSON.stringify(payload);
170
295
  const insert = d.transaction(() => {
171
- const maxSeq = d.prepare('SELECT COALESCE(MAX(seq), 0) as max_seq FROM room_events WHERE room_id = ?').get(roomId);
296
+ const maxSeq = d.prepare('SELECT COALESCE(MAX(seq), 0) as max_seq FROM team_events WHERE team_id = ?').get(teamId);
172
297
  const seq = maxSeq.max_seq + 1;
173
- const result = d.prepare('INSERT INTO room_events (room_id, seq, type, actor_agent_id, payload_json, ts) VALUES (?, ?, ?, ?, ?, ?)').run(roomId, seq, type, actorAgentId, payloadJson, ts);
298
+ const result = d.prepare('INSERT INTO team_events (team_id, seq, type, actor_agent_id, payload_json, ts) VALUES (?, ?, ?, ?, ?, ?)').run(teamId, seq, type, actorAgentId, payloadJson, ts);
174
299
  return { id: result.lastInsertRowid, seq };
175
300
  });
176
301
  const { id, seq } = insert();
177
- return { id, room_id: roomId, seq, type, actor_agent_id: actorAgentId, payload_json: payloadJson, ts };
178
- }
179
- export function getRoomEvents(roomId, since = 0, limit = 50) {
180
- return getDB().prepare('SELECT * FROM room_events WHERE room_id = ? AND seq > ? ORDER BY seq ASC LIMIT ?').all(roomId, since, limit);
181
- }
182
- export function getLastRoomEventTs(roomId) {
183
- const row = getDB().prepare('SELECT ts FROM room_events WHERE room_id = ? ORDER BY seq DESC LIMIT 1').get(roomId);
184
- return row?.ts ?? null;
185
- }
186
- export function getLatestRoomEvents(roomId, limit = 10) {
187
- return getDB().prepare('SELECT * FROM (SELECT * FROM room_events WHERE room_id = ? ORDER BY seq DESC LIMIT ?) ORDER BY seq ASC').all(roomId, limit);
188
- }
189
- export function getRoomMembers(roomId) {
190
- const events = getDB().prepare("SELECT type, actor_agent_id FROM room_events WHERE room_id = ? AND type IN ('join', 'leave') ORDER BY seq ASC").all(roomId);
191
- const members = new Set();
192
- for (const e of events) {
193
- if (e.type === 'join')
194
- members.add(e.actor_agent_id);
195
- if (e.type === 'leave')
196
- members.delete(e.actor_agent_id);
197
- }
198
- return [...members];
199
- }
200
- export function isMember(roomId, agentId) {
201
- return getRoomMembers(roomId).includes(agentId);
202
- }
203
- export function getAgentRooms(agentId, kind, activeOnly) {
204
- let sql = `
205
- SELECT DISTINCT r.* FROM rooms r
206
- JOIN room_events e ON e.room_id = r.id AND e.type = 'join' AND e.actor_agent_id = ?
207
- WHERE NOT EXISTS (
208
- SELECT 1 FROM room_events e2
209
- WHERE e2.room_id = r.id AND e2.type = 'leave' AND e2.actor_agent_id = ? AND e2.seq > e.seq
210
- )
211
- `;
212
- const params = [agentId, agentId];
213
- if (kind) {
214
- sql += ' AND r.kind = ?';
215
- params.push(kind);
216
- }
217
- if (activeOnly) {
218
- sql += ' AND r.closed_at IS NULL';
219
- }
220
- return getDB().prepare(sql).all(...params);
302
+ return { id, team_id: teamId, seq, type, actor_agent_id: actorAgentId, payload_json: payloadJson, ts };
303
+ }
304
+ export function getTeamEvents(teamId, since = 0, limit = 50) {
305
+ return getDB().prepare('SELECT * FROM team_events WHERE team_id = ? AND seq > ? ORDER BY seq ASC LIMIT ?').all(teamId, since, limit);
306
+ }
307
+ export function getLatestTeamEvents(teamId, limit = 10) {
308
+ return getDB().prepare('SELECT * FROM (SELECT * FROM team_events WHERE team_id = ? ORDER BY seq DESC LIMIT ?) ORDER BY seq ASC').all(teamId, limit);
221
309
  }
222
- // --- Task queries ---
223
- export function createTask(title, creatorId, assigneeId, sourceRoomId, input) {
310
+ // --- DM queries ---
311
+ export function appendDM(fromAgentId, toAgentId, content) {
312
+ const d = getDB();
313
+ const ts = nowISO();
314
+ const insert = d.transaction(() => {
315
+ const maxSeq = d.prepare('SELECT COALESCE(MAX(seq), 0) as max_seq FROM dm_messages WHERE to_agent_id = ?').get(toAgentId);
316
+ const seq = maxSeq.max_seq + 1;
317
+ const result = d.prepare('INSERT INTO dm_messages (seq, from_agent_id, to_agent_id, content, ts) VALUES (?, ?, ?, ?, ?)').run(seq, fromAgentId, toAgentId, content, ts);
318
+ return { id: result.lastInsertRowid, seq };
319
+ });
320
+ const { id, seq } = insert();
321
+ return { id, seq, from_agent_id: fromAgentId, to_agent_id: toAgentId, content, ts };
322
+ }
323
+ export function getMaxIncomingDMId(toAgentId, fromAgentId) {
324
+ const row = getDB().prepare('SELECT MAX(id) AS max_id FROM dm_messages WHERE to_agent_id = ? AND from_agent_id = ?').get(toAgentId, fromAgentId);
325
+ return row?.max_id ?? 0;
326
+ }
327
+ export function getDMConversation(agentA, agentB, since = 0, limit = 50) {
328
+ return getDB().prepare(`
329
+ SELECT * FROM dm_messages
330
+ WHERE ((from_agent_id = ? AND to_agent_id = ?) OR (from_agent_id = ? AND to_agent_id = ?))
331
+ AND id > ?
332
+ ORDER BY id ASC LIMIT ?
333
+ `).all(agentA, agentB, agentB, agentA, since, limit);
334
+ }
335
+ export function createTask(title, creatorId, opts = {}) {
224
336
  const task = {
225
337
  id: ulid(), title, creator_agent_id: creatorId,
226
- assignee_agent_id: assigneeId ?? null,
338
+ assignee_agent_id: opts.assigneeId ?? null,
227
339
  status: 'created', workflow_json: null, current_step: 0,
228
- source_room_id: sourceRoomId ?? null,
229
- input_json: JSON.stringify(input ?? {}),
340
+ source_team_id: opts.sourceTeamId ?? null,
341
+ input_json: JSON.stringify(opts.input ?? {}),
230
342
  created_at: nowISO(), completed_at: null,
343
+ originator_peer: opts.originatorPeer ?? '',
344
+ originator_task_id: opts.originatorTaskId ?? '',
345
+ delegated_peer: opts.delegatedPeer ?? '',
346
+ delegated_task_id: opts.delegatedTaskId ?? '',
231
347
  };
232
348
  getDB().prepare(`
233
- INSERT INTO tasks (id, title, creator_agent_id, assignee_agent_id, status, workflow_json, current_step, source_room_id, input_json, created_at, completed_at)
234
- VALUES (@id, @title, @creator_agent_id, @assignee_agent_id, @status, @workflow_json, @current_step, @source_room_id, @input_json, @created_at, @completed_at)
349
+ INSERT INTO tasks (id, title, creator_agent_id, assignee_agent_id, status, workflow_json, current_step, source_team_id, input_json, created_at, completed_at, originator_peer, originator_task_id, delegated_peer, delegated_task_id)
350
+ VALUES (@id, @title, @creator_agent_id, @assignee_agent_id, @status, @workflow_json, @current_step, @source_team_id, @input_json, @created_at, @completed_at, @originator_peer, @originator_task_id, @delegated_peer, @delegated_task_id)
235
351
  `).run(task);
236
352
  return task;
237
353
  }
354
+ export function setTaskDelegation(taskId, delegatedPeer, delegatedTaskId) {
355
+ getDB().prepare('UPDATE tasks SET delegated_peer = ?, delegated_task_id = ? WHERE id = ?').run(delegatedPeer, delegatedTaskId, taskId);
356
+ }
238
357
  export function getTaskById(id) {
239
358
  return getDB().prepare('SELECT * FROM tasks WHERE id = ?').get(id);
240
359
  }
@@ -291,29 +410,38 @@ export function setReadCursor(agentId, targetType, targetId, seq) {
291
410
  }
292
411
  export function getUnreadForAgent(agentId) {
293
412
  const result = [];
294
- // Room unread
295
- const rooms = getAgentRooms(agentId, undefined, true);
296
- for (const room of rooms) {
297
- const cursor = getReadCursor(agentId, 'room', room.id);
298
- const unread = getDB().prepare('SELECT * FROM room_events WHERE room_id = ? AND seq > ? AND actor_agent_id != ? ORDER BY seq ASC LIMIT 10').all(room.id, cursor, agentId);
413
+ const d = getDB();
414
+ // Team unread
415
+ const teams = getAgentTeams(agentId, true);
416
+ for (const team of teams) {
417
+ const cursor = getReadCursor(agentId, 'team', team.id);
418
+ const unread = d.prepare('SELECT * FROM team_events WHERE team_id = ? AND seq > ? AND actor_agent_id != ? ORDER BY seq ASC LIMIT 10').all(team.id, cursor, agentId);
299
419
  if (unread.length === 0)
300
420
  continue;
301
- const totalUnread = getDB().prepare('SELECT COUNT(*) as cnt FROM room_events WHERE room_id = ? AND seq > ? AND actor_agent_id != ?').get(room.id, cursor, agentId).cnt;
302
- const latest = unread.slice(-5).map(e => {
303
- const actor = getAgentById(e.actor_agent_id ?? '');
304
- let preview = '';
305
- try {
306
- const p = JSON.parse(e.payload_json);
307
- preview = p.content || '';
308
- }
309
- catch { }
310
- return {
311
- from: actor?.display_name ?? 'unknown', type: e.type,
312
- preview: preview.length > 200 ? preview.slice(0, 200) + ' [summary this is a preview, not a broken message]' : preview,
313
- ts: e.ts,
314
- };
315
- });
316
- result.push({ type: 'room', id: room.id, name: room.name, kind: room.kind, unread_count: totalUnread, latest });
421
+ const totalUnread = d.prepare('SELECT COUNT(*) as cnt FROM team_events WHERE team_id = ? AND seq > ? AND actor_agent_id != ?').get(team.id, cursor, agentId).cnt;
422
+ const latest = unread.slice(-5).map(e => ({
423
+ from: e.actor_agent_id ? getTeamDisplayName(team.id, e.actor_agent_id) : 'system',
424
+ type: e.type,
425
+ preview: previewFromPayload(e.payload_json),
426
+ ts: e.ts,
427
+ }));
428
+ result.push({ type: 'team', id: team.id, name: team.name, kind: 'team', unread_count: totalUnread, latest });
429
+ }
430
+ // DM unread (per-sender cursor: target_id = sender_agent_id)
431
+ const senders = d.prepare('SELECT DISTINCT from_agent_id FROM dm_messages WHERE to_agent_id = ?').all(agentId);
432
+ for (const { from_agent_id: senderId } of senders) {
433
+ const cursor = getReadCursor(agentId, 'dm', senderId);
434
+ const msgs = d.prepare('SELECT * FROM dm_messages WHERE to_agent_id = ? AND from_agent_id = ? AND id > ? ORDER BY id ASC').all(agentId, senderId, cursor);
435
+ if (msgs.length === 0)
436
+ continue;
437
+ const sender = getAgentById(senderId);
438
+ const latest = msgs.slice(-5).map(m => ({
439
+ from: sender?.display_name ?? 'unknown',
440
+ type: 'dm',
441
+ preview: m.content.length > 200 ? m.content.slice(0, 200) + ' [summary]' : m.content,
442
+ ts: m.ts,
443
+ }));
444
+ result.push({ type: 'dm', id: senderId, name: sender?.display_name ?? null, kind: 'dm', unread_count: msgs.length, latest });
317
445
  }
318
446
  // Task unread
319
447
  const tasks = getAgentTasks(agentId);
@@ -321,12 +449,12 @@ export function getUnreadForAgent(agentId) {
321
449
  if (['completed', 'failed', 'canceled'].includes(task.status))
322
450
  continue;
323
451
  const cursor = getReadCursor(agentId, 'task', task.id);
324
- const unread = getDB().prepare('SELECT * FROM task_events WHERE task_id = ? AND seq > ? AND actor_agent_id != ? ORDER BY seq ASC LIMIT 10').all(task.id, cursor, agentId);
452
+ const unread = d.prepare('SELECT * FROM task_events WHERE task_id = ? AND seq > ? AND actor_agent_id != ? ORDER BY seq ASC LIMIT 10').all(task.id, cursor, agentId);
325
453
  if (unread.length === 0)
326
454
  continue;
327
- const totalUnread = getDB().prepare('SELECT COUNT(*) as cnt FROM task_events WHERE task_id = ? AND seq > ? AND actor_agent_id != ?').get(task.id, cursor, agentId).cnt;
455
+ const totalUnread = d.prepare('SELECT COUNT(*) as cnt FROM task_events WHERE task_id = ? AND seq > ? AND actor_agent_id != ?').get(task.id, cursor, agentId).cnt;
328
456
  const latest = unread.slice(-5).map(e => {
329
- const actor = getAgentById(e.actor_agent_id ?? '');
457
+ const actor = e.actor_agent_id ? getAgentById(e.actor_agent_id) : null;
330
458
  let preview = '';
331
459
  try {
332
460
  const p = JSON.parse(e.payload_json);
@@ -343,14 +471,24 @@ export function getUnreadForAgent(agentId) {
343
471
  }
344
472
  return result;
345
473
  }
474
+ function previewFromPayload(payloadJson) {
475
+ try {
476
+ const p = JSON.parse(payloadJson);
477
+ const text = p.content || p.message || p.preview || '';
478
+ return text.length > 200 ? text.slice(0, 200) + ' [summary]' : text;
479
+ }
480
+ catch {
481
+ return '';
482
+ }
483
+ }
346
484
  export function addPeer(name, url, secret, exposed = '') {
347
485
  const peer = {
348
486
  id: ulid(), name, url, secret, exposed, status: 'active',
349
- created_at: nowISO(), last_seen: null,
487
+ created_at: nowISO(), last_seen: null, node_name: '',
350
488
  };
351
489
  getDB().prepare(`
352
- INSERT INTO peers (id, name, url, secret, exposed, status, created_at, last_seen)
353
- VALUES (@id, @name, @url, @secret, @exposed, @status, @created_at, @last_seen)
490
+ INSERT INTO peers (id, name, url, secret, exposed, status, created_at, last_seen, node_name)
491
+ VALUES (@id, @name, @url, @secret, @exposed, @status, @created_at, @last_seen, @node_name)
354
492
  `).run(peer);
355
493
  return peer;
356
494
  }
@@ -358,7 +496,8 @@ export function getPeerByName(name) {
358
496
  return getDB().prepare('SELECT * FROM peers WHERE name = ?').get(name);
359
497
  }
360
498
  export function getPeerBySecret(secret) {
361
- return getDB().prepare('SELECT * FROM peers WHERE secret = ? AND status = ?').get(secret, 'active');
499
+ // Status is informational (reachability); auth is by secret match only.
500
+ return getDB().prepare('SELECT * FROM peers WHERE secret = ?').get(secret);
362
501
  }
363
502
  export function listPeers() {
364
503
  return getDB().prepare('SELECT * FROM peers ORDER BY created_at DESC').all();
@@ -373,6 +512,12 @@ export function updatePeerExposed(name, exposed) {
373
512
  export function touchPeer(name) {
374
513
  getDB().prepare('UPDATE peers SET last_seen = ? WHERE name = ?').run(nowISO(), name);
375
514
  }
515
+ export function setPeerStatus(name, status) {
516
+ getDB().prepare('UPDATE peers SET status = ? WHERE name = ?').run(status, name);
517
+ }
518
+ export function setPeerNodeName(name, nodeName) {
519
+ getDB().prepare('UPDATE peers SET node_name = ? WHERE name = ?').run(nodeName, name);
520
+ }
376
521
  export function isPeerExposed(peerName, agentName) {
377
522
  const peer = getPeerByName(peerName);
378
523
  if (!peer || !peer.exposed)
package/dist/db.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare function pingPeer(name: string, url: string, secret: string, timeoutMs?: number): Promise<{
2
+ ok: boolean;
3
+ node?: string;
4
+ error?: string;
5
+ }>;
6
+ export declare function pingAllPeers(): Promise<void>;
7
+ export declare function startHeartbeat(intervalMs?: number): NodeJS.Timeout;