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.
- package/README.md +121 -126
- package/README.zh.md +153 -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 +47 -17
- package/dist/db.js +268 -123
- package/dist/db.js.map +1 -1
- package/dist/federation-heartbeat.d.ts +7 -0
- package/dist/federation-heartbeat.js +45 -0
- package/dist/federation-heartbeat.js.map +1 -0
- package/dist/federation-http.d.ts +7 -0
- package/dist/federation-http.js +287 -0
- package/dist/federation-http.js.map +1 -0
- package/dist/index.js +336 -114
- 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 +44 -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 +28 -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 +56 -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 +35 -32
- 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 +7 -2
- package/dist/tools/task.js +113 -15
- 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 +4 -3
- 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/auth.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
1
2
|
import type { Agent } from './models.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
export declare const asParam: z.ZodOptional<z.ZodString>;
|
|
4
|
+
export declare function resolveAgent(extra: any, asValue?: string): Agent | null;
|
|
5
|
+
export declare function authError(): {
|
|
6
|
+
content: {
|
|
7
|
+
type: "text";
|
|
8
|
+
text: string;
|
|
9
|
+
}[];
|
|
10
|
+
isError: boolean;
|
|
11
|
+
};
|
package/dist/auth.js
CHANGED
|
@@ -1,19 +1,34 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
if (
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { getAgentById, touchAgent } from './db.js';
|
|
3
|
+
import { sessionAgents } from './sessions.js';
|
|
4
|
+
export const asParam = z.string().optional().describe('Your agent id (from hive.start). Optional — session binding takes precedence.');
|
|
5
|
+
export function resolveAgent(extra, asValue) {
|
|
6
|
+
// 1) Session binding (preferred)
|
|
7
|
+
const sessionId = extra?.sessionId;
|
|
8
|
+
if (sessionId) {
|
|
9
|
+
const agentId = sessionAgents.get(sessionId);
|
|
10
|
+
if (agentId) {
|
|
11
|
+
const agent = getAgentById(agentId);
|
|
12
|
+
if (agent) {
|
|
13
|
+
touchAgent(agent.id);
|
|
14
|
+
return agent;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// 2) `as` param fallback (id only — names not unique)
|
|
19
|
+
if (asValue) {
|
|
20
|
+
const agent = getAgentById(asValue);
|
|
21
|
+
if (agent) {
|
|
22
|
+
touchAgent(agent.id);
|
|
23
|
+
return agent;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
export function authError() {
|
|
29
|
+
return {
|
|
30
|
+
content: [{ type: 'text', text: 'Error: Not authenticated. Call hive.start first.' }],
|
|
31
|
+
isError: true,
|
|
32
|
+
};
|
|
18
33
|
}
|
|
19
34
|
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+EAA+E,CAAC,CAAC;AAEvI,MAAM,UAAU,YAAY,CAAC,KAAU,EAAE,OAAgB;IACvD,iCAAiC;IACjC,MAAM,SAAS,GAAG,KAAK,EAAE,SAAS,CAAC;IACnC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,KAAK,EAAE,CAAC;gBAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBAAC,OAAO,KAAK,CAAC;YAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,sDAAsD;IACtD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,KAAK,EAAE,CAAC;YAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IACpD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kDAAkD,EAAE,CAAC;QAC9F,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
|
package/dist/db.d.ts
CHANGED
|
@@ -1,26 +1,53 @@
|
|
|
1
1
|
import Database from 'better-sqlite3';
|
|
2
|
-
import type { Agent,
|
|
2
|
+
import type { Agent, Team, TeamMember, TeamEvent, TeamEventType, DMMessage, Task, TaskEvent, TaskEventType } from './models.js';
|
|
3
3
|
export declare function initDB(dbPath?: string): Database.Database;
|
|
4
4
|
export declare function getDB(): Database.Database;
|
|
5
|
-
export declare function createAgent(displayName: string, tool: string, roles: string, expertise: string): Agent;
|
|
5
|
+
export declare function createAgent(displayName: string, tool: string, roles: string, expertise: string, originPeer?: string, remoteId?: string): Agent;
|
|
6
|
+
export declare function ensureRemoteAgentByRemoteId(remoteId: string, peerName: string, displayName: string): Agent;
|
|
6
7
|
export declare function getAgentByToken(token: string): Agent | undefined;
|
|
7
8
|
export declare function getAgentById(id: string): Agent | undefined;
|
|
8
|
-
export declare function
|
|
9
|
+
export declare function getAgentsByName(name: string): Agent[];
|
|
10
|
+
export declare function listAllAgents(activeOnly?: boolean): Agent[];
|
|
9
11
|
export declare function findAgentByRole(role: string): Agent | undefined;
|
|
10
12
|
export declare function touchAgent(id: string): void;
|
|
11
|
-
export declare function
|
|
12
|
-
export
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
export declare function
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
export declare function
|
|
20
|
-
export declare function
|
|
21
|
-
export declare function
|
|
22
|
-
export declare function
|
|
23
|
-
export declare function
|
|
13
|
+
export declare function renameAgent(id: string, newName: string): void;
|
|
14
|
+
export interface ResolvedAgent {
|
|
15
|
+
agent?: Agent;
|
|
16
|
+
source: 'id' | 'team-nickname' | 'display-name';
|
|
17
|
+
}
|
|
18
|
+
export declare function resolveAddressee(callerAgentId: string, target: string): ResolvedAgent | {
|
|
19
|
+
error: string;
|
|
20
|
+
};
|
|
21
|
+
export declare function createTeam(name: string, hostAgentId: string | null): Team;
|
|
22
|
+
export declare function getTeamById(id: string): Team | undefined;
|
|
23
|
+
export declare function getTeamByName(name: string): Team | undefined;
|
|
24
|
+
export declare function listTeams(activeOnly?: boolean): Team[];
|
|
25
|
+
export declare function getAgentTeams(agentId: string, activeOnly?: boolean): Team[];
|
|
26
|
+
export declare function addTeamMember(teamId: string, agentId: string, nickname?: string | null): TeamMember;
|
|
27
|
+
export declare function removeTeamMember(teamId: string, agentId: string): void;
|
|
28
|
+
export declare function isTeamMember(teamId: string, agentId: string): boolean;
|
|
29
|
+
export declare function getTeamMembers(teamId: string): TeamMember[];
|
|
30
|
+
export declare function getTeamMemberAgentIds(teamId: string): string[];
|
|
31
|
+
export declare function setTeamNickname(teamId: string, agentId: string, nickname: string | null): void;
|
|
32
|
+
export declare function getTeamMember(teamId: string, agentId: string): TeamMember | undefined;
|
|
33
|
+
export declare function getTeamDisplayName(teamId: string, agentId: string): string;
|
|
34
|
+
export declare function appendTeamEvent(teamId: string, type: TeamEventType, actorAgentId: string | null, payload?: object): TeamEvent;
|
|
35
|
+
export declare function getTeamEvents(teamId: string, since?: number, limit?: number): TeamEvent[];
|
|
36
|
+
export declare function getLatestTeamEvents(teamId: string, limit?: number): TeamEvent[];
|
|
37
|
+
export declare function appendDM(fromAgentId: string, toAgentId: string, content: string): DMMessage;
|
|
38
|
+
export declare function getMaxIncomingDMId(toAgentId: string, fromAgentId: string): number;
|
|
39
|
+
export declare function getDMConversation(agentA: string, agentB: string, since?: number, limit?: number): DMMessage[];
|
|
40
|
+
export interface CreateTaskOptions {
|
|
41
|
+
assigneeId?: string;
|
|
42
|
+
sourceTeamId?: string;
|
|
43
|
+
input?: object;
|
|
44
|
+
originatorPeer?: string;
|
|
45
|
+
originatorTaskId?: string;
|
|
46
|
+
delegatedPeer?: string;
|
|
47
|
+
delegatedTaskId?: string;
|
|
48
|
+
}
|
|
49
|
+
export declare function createTask(title: string, creatorId: string, opts?: CreateTaskOptions): Task;
|
|
50
|
+
export declare function setTaskDelegation(taskId: string, delegatedPeer: string, delegatedTaskId: string): void;
|
|
24
51
|
export declare function getTaskById(id: string): Task | undefined;
|
|
25
52
|
export declare function updateTaskStatus(id: string, status: string, extras?: Record<string, any>): void;
|
|
26
53
|
export declare function getAgentTasks(agentId: string, status?: string): Task[];
|
|
@@ -29,7 +56,7 @@ export declare function getTaskEvents(taskId: string, since?: number, limit?: nu
|
|
|
29
56
|
export declare function getReadCursor(agentId: string, targetType: string, targetId: string): number;
|
|
30
57
|
export declare function setReadCursor(agentId: string, targetType: string, targetId: string, seq: number): void;
|
|
31
58
|
export interface UnreadSummary {
|
|
32
|
-
type: '
|
|
59
|
+
type: 'team' | 'task' | 'dm';
|
|
33
60
|
id: string;
|
|
34
61
|
name: string | null;
|
|
35
62
|
kind: string;
|
|
@@ -51,6 +78,7 @@ export interface Peer {
|
|
|
51
78
|
status: string;
|
|
52
79
|
created_at: string;
|
|
53
80
|
last_seen: string | null;
|
|
81
|
+
node_name: string;
|
|
54
82
|
}
|
|
55
83
|
export declare function addPeer(name: string, url: string, secret: string, exposed?: string): Peer;
|
|
56
84
|
export declare function getPeerByName(name: string): Peer | undefined;
|
|
@@ -59,5 +87,7 @@ export declare function listPeers(): Peer[];
|
|
|
59
87
|
export declare function removePeer(name: string): boolean;
|
|
60
88
|
export declare function updatePeerExposed(name: string, exposed: string): void;
|
|
61
89
|
export declare function touchPeer(name: string): void;
|
|
90
|
+
export declare function setPeerStatus(name: string, status: 'active' | 'inactive'): void;
|
|
91
|
+
export declare function setPeerNodeName(name: string, nodeName: string): void;
|
|
62
92
|
export declare function isPeerExposed(peerName: string, agentName: string): boolean;
|
|
63
93
|
export declare function cleanupStaleTasks(maxAgeDays?: number): number;
|