kitty-hive 0.7.2 → 0.7.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/codex-channel.ts +45 -9
- package/dist/db.d.ts +25 -0
- package/dist/db.js +48 -0
- package/dist/db.js.map +1 -1
- package/dist/index.js +175 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/team-tools.js +50 -1
- package/dist/mcp/team-tools.js.map +1 -1
- package/dist/tools/team.d.ts +15 -0
- package/dist/tools/team.js +79 -1
- package/dist/tools/team.js.map +1 -1
- package/package.json +1 -1
package/dist/tools/team.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createTeam, getTeamById, getTeamByName, listTeams, getAgentTeams, addTeamMember, isTeamMember, getTeamMembers, getTeamMember, appendTeamEvent, getTeamEvents, getLatestTeamEvents, getAgentById, setTeamRules, } from '../db.js';
|
|
1
|
+
import { createTeam, getTeamById, getTeamByName, listTeams, getAgentTeams, addTeamMember, removeTeamMember, renameTeamMember, isTeamMember, getTeamMembers, getTeamMember, appendTeamEvent, getTeamEvents, getLatestTeamEvents, getAgentById, setTeamRules, } from '../db.js';
|
|
2
2
|
// --- hive_team_create ---
|
|
3
3
|
export function handleTeamCreate(actorId, input) {
|
|
4
4
|
const existing = getTeamByName(input.name);
|
|
@@ -101,11 +101,89 @@ export function handleTeamEvents(actorId, input) {
|
|
|
101
101
|
}
|
|
102
102
|
// --- hive_team_message ---
|
|
103
103
|
export function handleTeamMessage(actorId, input) {
|
|
104
|
+
const team = getTeamById(input.team_id);
|
|
105
|
+
if (!team)
|
|
106
|
+
throw new Error(`Team not found: ${input.team_id}`);
|
|
107
|
+
if (team.closed_at)
|
|
108
|
+
throw new Error('Team is closed');
|
|
104
109
|
if (!isTeamMember(input.team_id, actorId))
|
|
105
110
|
throw new Error('Not a member of this team');
|
|
106
111
|
const event = appendTeamEvent(input.team_id, 'message', actorId, { content: input.content });
|
|
107
112
|
return { team_id: input.team_id, event_id: event.id, seq: event.seq };
|
|
108
113
|
}
|
|
114
|
+
// --- hive_team_rename_nickname ---
|
|
115
|
+
//
|
|
116
|
+
// Self-only: changes the caller's nickname in a team they belong to. Useful
|
|
117
|
+
// when the agent joined without a nickname (and now wants one) or wants to
|
|
118
|
+
// rename the existing one. Pass empty string to clear (display_name fallback
|
|
119
|
+
// then takes over). Writes a 'rename' team event so other members see the
|
|
120
|
+
// change in their team-events stream.
|
|
121
|
+
//
|
|
122
|
+
// Validation:
|
|
123
|
+
// - caller must be a team member
|
|
124
|
+
// - new nickname must not collide with another existing member's nickname
|
|
125
|
+
// (SQLite UNIQUE on (team_id, nickname) — we check up-front for a
|
|
126
|
+
// clearer error than the raw constraint violation)
|
|
127
|
+
export function handleTeamRenameNickname(actorId, input) {
|
|
128
|
+
const team = getTeamById(input.team_id);
|
|
129
|
+
if (!team)
|
|
130
|
+
throw new Error(`Team not found: ${input.team_id}`);
|
|
131
|
+
if (team.closed_at)
|
|
132
|
+
throw new Error('Team is closed');
|
|
133
|
+
const me = getTeamMember(team.id, actorId);
|
|
134
|
+
if (!me)
|
|
135
|
+
throw new Error(`You are not a member of team "${team.name}"`);
|
|
136
|
+
const normalized = input.nickname.trim();
|
|
137
|
+
if (normalized) {
|
|
138
|
+
const conflict = getTeamMembers(team.id).find(m => m.agent_id !== actorId && m.nickname === normalized);
|
|
139
|
+
if (conflict)
|
|
140
|
+
throw new Error(`Nickname "${normalized}" already taken in this team`);
|
|
141
|
+
}
|
|
142
|
+
const ok = renameTeamMember(team.id, actorId, normalized);
|
|
143
|
+
if (!ok)
|
|
144
|
+
throw new Error('Failed to update nickname (member row missing)');
|
|
145
|
+
appendTeamEvent(team.id, 'rename', actorId, {
|
|
146
|
+
previous: me.nickname,
|
|
147
|
+
nickname: normalized || null,
|
|
148
|
+
});
|
|
149
|
+
return {
|
|
150
|
+
team_id: team.id,
|
|
151
|
+
team_name: team.name,
|
|
152
|
+
previous_nickname: me.nickname,
|
|
153
|
+
nickname: normalized || null,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// --- hive_team_leave ---
|
|
157
|
+
//
|
|
158
|
+
// Self-only: caller leaves a team they belong to. Writes a 'leave' team
|
|
159
|
+
// event before removing the member row so other members see the departure
|
|
160
|
+
// in their team-events stream (and the actor_agent_id resolves through
|
|
161
|
+
// agents table for display).
|
|
162
|
+
//
|
|
163
|
+
// Constraint: the team's host cannot leave (would orphan host responsibility,
|
|
164
|
+
// including the host-only hive_team_set_rules). Host must transfer host
|
|
165
|
+
// first — but host-transfer is not yet implemented either, so for now the
|
|
166
|
+
// host of a team they want to dissolve has to remove via admin / future tool.
|
|
167
|
+
export function handleTeamLeave(actorId, input) {
|
|
168
|
+
const team = getTeamById(input.team_id);
|
|
169
|
+
if (!team)
|
|
170
|
+
throw new Error(`Team not found: ${input.team_id}`);
|
|
171
|
+
if (team.closed_at)
|
|
172
|
+
throw new Error('Team is closed');
|
|
173
|
+
if (!isTeamMember(team.id, actorId)) {
|
|
174
|
+
throw new Error(`You are not a member of team "${team.name}"`);
|
|
175
|
+
}
|
|
176
|
+
if (team.host_agent_id === actorId) {
|
|
177
|
+
throw new Error(`You are the host of "${team.name}" and cannot leave. ` +
|
|
178
|
+
`Transfer host first (not yet supported via MCP) or dissolve the team out-of-band.`);
|
|
179
|
+
}
|
|
180
|
+
// Append event BEFORE removing — once the member row is gone, this still
|
|
181
|
+
// references the actor by agent_id (team_events.actor_agent_id is the
|
|
182
|
+
// agents.id, not team_members.id), so display lookups still work.
|
|
183
|
+
appendTeamEvent(team.id, 'leave', actorId, {});
|
|
184
|
+
removeTeamMember(team.id, actorId);
|
|
185
|
+
return { team_id: team.id, team_name: team.name };
|
|
186
|
+
}
|
|
109
187
|
// --- hive_team_list (mine) ---
|
|
110
188
|
export function handleMyTeams(actorId) {
|
|
111
189
|
const teams = getAgentTeams(actorId, true);
|
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,EACL,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAChE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../src/tools/team.ts"],"names":[],"mappings":"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"}
|