kitty-hive 0.1.1 → 0.2.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/README.md +106 -129
- package/README.zh.md +136 -105
- package/channel.ts +194 -431
- package/dist/auth.d.ts +10 -6
- package/dist/auth.js +32 -17
- package/dist/auth.js.map +1 -1
- package/dist/db.d.ts +32 -16
- package/dist/db.js +210 -113
- package/dist/db.js.map +1 -1
- package/dist/federation-http.d.ts +2 -0
- package/dist/federation-http.js +233 -0
- package/dist/federation-http.js.map +1 -0
- package/dist/index.js +79 -76
- package/dist/index.js.map +1 -1
- package/dist/log.d.ts +3 -0
- package/dist/log.js +10 -0
- package/dist/log.js.map +1 -0
- package/dist/mcp/agent-tools.d.ts +2 -0
- package/dist/mcp/agent-tools.js +66 -0
- package/dist/mcp/agent-tools.js.map +1 -0
- package/dist/mcp/dm-tools.d.ts +2 -0
- package/dist/mcp/dm-tools.js +54 -0
- package/dist/mcp/dm-tools.js.map +1 -0
- package/dist/mcp/federation-tools.d.ts +2 -0
- package/dist/mcp/federation-tools.js +30 -0
- package/dist/mcp/federation-tools.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.js +62 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/task-tools.d.ts +2 -0
- package/dist/mcp/task-tools.js +128 -0
- package/dist/mcp/task-tools.js.map +1 -0
- package/dist/mcp/team-tools.d.ts +2 -0
- package/dist/mcp/team-tools.js +95 -0
- package/dist/mcp/team-tools.js.map +1 -0
- package/dist/models.d.ts +22 -10
- package/dist/models.js +1 -3
- package/dist/models.js.map +1 -1
- package/dist/server.d.ts +2 -3
- package/dist/server.js +38 -761
- package/dist/server.js.map +1 -1
- package/dist/sessions.d.ts +15 -0
- package/dist/sessions.js +107 -0
- package/dist/sessions.js.map +1 -0
- package/dist/tools/dm.d.ts +3 -2
- package/dist/tools/dm.js +14 -29
- package/dist/tools/dm.js.map +1 -1
- package/dist/tools/start.d.ts +3 -3
- package/dist/tools/start.js +18 -15
- package/dist/tools/start.js.map +1 -1
- package/dist/tools/task.d.ts +1 -1
- package/dist/tools/task.js +6 -5
- package/dist/tools/task.js.map +1 -1
- package/dist/tools/team.d.ts +62 -13
- package/dist/tools/team.js +102 -30
- package/dist/tools/team.js.map +1 -1
- package/package.json +2 -2
- package/dist/tools/room.d.ts +0 -39
- package/dist/tools/room.js +0 -35
- package/dist/tools/room.js.map +0 -1
package/dist/tools/team.js
CHANGED
|
@@ -1,43 +1,115 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createTeam, getTeamById, getTeamByName, listTeams, getAgentTeams, addTeamMember, isTeamMember, getTeamMembers, getTeamMember, setTeamNickname, appendTeamEvent, getTeamEvents, getLatestTeamEvents, getAgentById, } from '../db.js';
|
|
2
|
+
// --- hive.team.create ---
|
|
2
3
|
export function handleTeamCreate(actorId, input) {
|
|
3
|
-
|
|
4
|
-
const existing = listTeams().find(t => t.name === input.name);
|
|
4
|
+
const existing = getTeamByName(input.name);
|
|
5
5
|
if (existing)
|
|
6
|
-
throw new Error(`Team "${input.name}" already exists (
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
throw new Error(`Team "${input.name}" already exists (team_id: ${existing.id})`);
|
|
7
|
+
const team = createTeam(input.name, actorId);
|
|
8
|
+
addTeamMember(team.id, actorId, input.nickname ?? null);
|
|
9
|
+
appendTeamEvent(team.id, 'join', actorId, { nickname: input.nickname ?? null });
|
|
10
|
+
return { team_id: team.id, name: team.name };
|
|
10
11
|
}
|
|
12
|
+
// --- hive.team.join ---
|
|
11
13
|
export function handleTeamJoin(actorId, input) {
|
|
12
|
-
let
|
|
13
|
-
if (input.
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
if (!room)
|
|
21
|
-
throw new Error(`Team not found: ${input.room_id || input.name}`);
|
|
22
|
-
if (room.kind !== 'team')
|
|
23
|
-
throw new Error('Not a team room');
|
|
24
|
-
if (room.closed_at)
|
|
14
|
+
let team;
|
|
15
|
+
if (input.team_id)
|
|
16
|
+
team = getTeamById(input.team_id);
|
|
17
|
+
else if (input.name)
|
|
18
|
+
team = getTeamByName(input.name);
|
|
19
|
+
if (!team)
|
|
20
|
+
throw new Error(`Team not found: ${input.team_id || input.name}`);
|
|
21
|
+
if (team.closed_at)
|
|
25
22
|
throw new Error('Team is closed');
|
|
26
|
-
if (
|
|
23
|
+
if (isTeamMember(team.id, actorId))
|
|
27
24
|
throw new Error('Already a member');
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
// Check nickname conflict before insert
|
|
26
|
+
if (input.nickname) {
|
|
27
|
+
const conflict = getTeamMembers(team.id).find(m => m.nickname === input.nickname);
|
|
28
|
+
if (conflict)
|
|
29
|
+
throw new Error(`Nickname "${input.nickname}" already taken in this team`);
|
|
30
|
+
}
|
|
31
|
+
addTeamMember(team.id, actorId, input.nickname ?? null);
|
|
32
|
+
appendTeamEvent(team.id, 'join', actorId, { nickname: input.nickname ?? null });
|
|
33
|
+
return { team_id: team.id, name: team.name };
|
|
30
34
|
}
|
|
31
35
|
export function handleTeamList() {
|
|
32
|
-
const teams = listTeams();
|
|
36
|
+
const teams = listTeams(true);
|
|
37
|
+
return {
|
|
38
|
+
teams: teams.map(t => {
|
|
39
|
+
const members = getTeamMembers(t.id).map(m => ({
|
|
40
|
+
id: m.agent_id,
|
|
41
|
+
display_name: m.nickname ?? (getAgentById(m.agent_id)?.display_name ?? m.agent_id),
|
|
42
|
+
}));
|
|
43
|
+
return { team_id: t.id, name: t.name, member_count: members.length, members };
|
|
44
|
+
}),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function handleTeamInfo(actorId, input) {
|
|
48
|
+
const team = getTeamById(input.team_id);
|
|
49
|
+
if (!team)
|
|
50
|
+
throw new Error(`Team not found: ${input.team_id}`);
|
|
51
|
+
if (!isTeamMember(input.team_id, actorId))
|
|
52
|
+
throw new Error('Not a member of this team');
|
|
53
|
+
const members = getTeamMembers(input.team_id).map(m => {
|
|
54
|
+
const agent = getAgentById(m.agent_id);
|
|
55
|
+
return {
|
|
56
|
+
id: m.agent_id,
|
|
57
|
+
nickname: m.nickname,
|
|
58
|
+
display_name: agent?.display_name ?? 'unknown',
|
|
59
|
+
status: agent?.status ?? 'offline',
|
|
60
|
+
};
|
|
61
|
+
});
|
|
62
|
+
return {
|
|
63
|
+
team, members,
|
|
64
|
+
latest_events: getLatestTeamEvents(input.team_id, 10),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// --- hive.team.events ---
|
|
68
|
+
export function handleTeamEvents(actorId, input) {
|
|
69
|
+
if (!isTeamMember(input.team_id, actorId))
|
|
70
|
+
throw new Error('Not a member of this team');
|
|
71
|
+
const limit = Math.min(input.limit ?? 50, 200);
|
|
72
|
+
const events = getTeamEvents(input.team_id, input.since ?? 0, limit + 1);
|
|
73
|
+
const hasMore = events.length > limit;
|
|
74
|
+
if (hasMore)
|
|
75
|
+
events.pop();
|
|
76
|
+
return { events, has_more: hasMore };
|
|
77
|
+
}
|
|
78
|
+
// --- hive.team.message ---
|
|
79
|
+
export function handleTeamMessage(actorId, input) {
|
|
80
|
+
if (!isTeamMember(input.team_id, actorId))
|
|
81
|
+
throw new Error('Not a member of this team');
|
|
82
|
+
const event = appendTeamEvent(input.team_id, 'message', actorId, { content: input.content });
|
|
83
|
+
return { team_id: input.team_id, event_id: event.id, seq: event.seq };
|
|
84
|
+
}
|
|
85
|
+
// --- hive.team.nickname ---
|
|
86
|
+
export function handleTeamNickname(actorId, input) {
|
|
87
|
+
if (!isTeamMember(input.team_id, actorId))
|
|
88
|
+
throw new Error('Not a member of this team');
|
|
89
|
+
const member = getTeamMember(input.team_id, actorId);
|
|
90
|
+
if (input.nickname) {
|
|
91
|
+
const conflict = getTeamMembers(input.team_id).find(m => m.nickname === input.nickname && m.agent_id !== actorId);
|
|
92
|
+
if (conflict)
|
|
93
|
+
throw new Error(`Nickname "${input.nickname}" already taken in this team`);
|
|
94
|
+
}
|
|
95
|
+
setTeamNickname(input.team_id, actorId, input.nickname);
|
|
96
|
+
appendTeamEvent(input.team_id, 'rename', actorId, {
|
|
97
|
+
old_nickname: member.nickname, new_nickname: input.nickname,
|
|
98
|
+
});
|
|
99
|
+
return { team_id: input.team_id, nickname: input.nickname, old_nickname: member.nickname };
|
|
100
|
+
}
|
|
101
|
+
// --- hive.team.list (mine) ---
|
|
102
|
+
export function handleMyTeams(actorId) {
|
|
103
|
+
const teams = getAgentTeams(actorId, true);
|
|
33
104
|
return {
|
|
34
105
|
teams: teams.map(t => {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
106
|
+
const me = getTeamMember(t.id, actorId);
|
|
107
|
+
return {
|
|
108
|
+
team_id: t.id,
|
|
109
|
+
name: t.name,
|
|
110
|
+
nickname: me?.nickname ?? null,
|
|
111
|
+
member_count: getTeamMembers(t.id).length,
|
|
112
|
+
};
|
|
41
113
|
}),
|
|
42
114
|
};
|
|
43
115
|
}
|
package/dist/tools/team.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "kitty-hive",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "MCP server for multi-agent collaboration — DM, tasks, workflow, federation",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
package/dist/tools/room.d.ts
DELETED
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import type { Room, RoomEvent } from '../models.js';
|
|
2
|
-
interface EventsInput {
|
|
3
|
-
room_id: string;
|
|
4
|
-
since?: number;
|
|
5
|
-
limit?: number;
|
|
6
|
-
}
|
|
7
|
-
interface EventsOutput {
|
|
8
|
-
events: RoomEvent[];
|
|
9
|
-
has_more: boolean;
|
|
10
|
-
}
|
|
11
|
-
export declare function handleEvents(actorId: string, input: EventsInput): EventsOutput;
|
|
12
|
-
interface ListInput {
|
|
13
|
-
kind?: string;
|
|
14
|
-
active_only?: boolean;
|
|
15
|
-
}
|
|
16
|
-
interface RoomSummary {
|
|
17
|
-
id: string;
|
|
18
|
-
name: string | null;
|
|
19
|
-
kind: string;
|
|
20
|
-
member_count: number;
|
|
21
|
-
last_event_ts: string | null;
|
|
22
|
-
}
|
|
23
|
-
export declare function handleList(actorId: string, input: ListInput): {
|
|
24
|
-
rooms: RoomSummary[];
|
|
25
|
-
};
|
|
26
|
-
interface InfoInput {
|
|
27
|
-
room_id: string;
|
|
28
|
-
}
|
|
29
|
-
interface InfoOutput {
|
|
30
|
-
room: Room;
|
|
31
|
-
members: Array<{
|
|
32
|
-
id: string;
|
|
33
|
-
display_name: string;
|
|
34
|
-
status: string;
|
|
35
|
-
}>;
|
|
36
|
-
latest_events: RoomEvent[];
|
|
37
|
-
}
|
|
38
|
-
export declare function handleInfo(actorId: string, input: InfoInput): InfoOutput;
|
|
39
|
-
export {};
|
package/dist/tools/room.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { getRoomById, getRoomEvents, getLastRoomEventTs, getLatestRoomEvents, isMember, getAgentRooms, getRoomMembers, getAgentById, } from '../db.js';
|
|
2
|
-
export function handleEvents(actorId, input) {
|
|
3
|
-
if (!isMember(input.room_id, actorId))
|
|
4
|
-
throw new Error('Not a member of this room');
|
|
5
|
-
const limit = Math.min(input.limit ?? 50, 200);
|
|
6
|
-
const events = getRoomEvents(input.room_id, input.since ?? 0, limit + 1);
|
|
7
|
-
const hasMore = events.length > limit;
|
|
8
|
-
if (hasMore)
|
|
9
|
-
events.pop();
|
|
10
|
-
return { events, has_more: hasMore };
|
|
11
|
-
}
|
|
12
|
-
export function handleList(actorId, input) {
|
|
13
|
-
const rooms = getAgentRooms(actorId, input.kind, input.active_only ?? true);
|
|
14
|
-
const summaries = rooms.map(r => {
|
|
15
|
-
const members = getRoomMembers(r.id);
|
|
16
|
-
const lastTs = getLastRoomEventTs(r.id);
|
|
17
|
-
return { id: r.id, name: r.name, kind: r.kind, member_count: members.length, last_event_ts: lastTs };
|
|
18
|
-
});
|
|
19
|
-
return { rooms: summaries };
|
|
20
|
-
}
|
|
21
|
-
export function handleInfo(actorId, input) {
|
|
22
|
-
const room = getRoomById(input.room_id);
|
|
23
|
-
if (!room)
|
|
24
|
-
throw new Error(`Room not found: ${input.room_id}`);
|
|
25
|
-
if (!isMember(input.room_id, actorId))
|
|
26
|
-
throw new Error('Not a member of this room');
|
|
27
|
-
const memberIds = getRoomMembers(input.room_id);
|
|
28
|
-
const members = memberIds.map(id => {
|
|
29
|
-
const agent = getAgentById(id);
|
|
30
|
-
return { id, display_name: agent?.display_name ?? 'Unknown', status: agent?.status ?? 'offline' };
|
|
31
|
-
});
|
|
32
|
-
const latestEvents = getLatestRoomEvents(input.room_id, 10);
|
|
33
|
-
return { room, members, latest_events: latestEvents };
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=room.js.map
|
package/dist/tools/room.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"room.js","sourceRoot":"","sources":["../../src/tools/room.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EAAE,aAAa,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,QAAQ,EAC7E,aAAa,EAAE,cAAc,EAAE,YAAY,GAC5C,MAAM,UAAU,CAAC;AAgBlB,MAAM,UAAU,YAAY,CAAC,OAAe,EAAE,KAAkB;IAC9D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IACpF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;IACtC,IAAI,OAAO;QAAE,MAAM,CAAC,GAAG,EAAE,CAAC;IAC1B,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AACvC,CAAC;AAiBD,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,KAAgB;IAC1D,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC;IAC5E,MAAM,SAAS,GAAkB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;QAC7C,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC;IACvG,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AAC9B,CAAC;AAcD,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,KAAgB;IAC1D,MAAM,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAEpF,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QACjC,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;QAC/B,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,IAAI,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,SAAS,EAAE,CAAC;IACpG,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAE5D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAC;AACxD,CAAC"}
|