feat: support room-level reviewer and arbiter agent selection

This commit is contained in:
ejclaw
2026-04-15 23:47:46 +09:00
parent 1846d59d2f
commit a59813dee6
15 changed files with 618 additions and 52 deletions

View File

@@ -17,6 +17,7 @@ import {
normalizeStoredAgentType,
resolveAssignedRoomFolder,
resolveStoredRoomCapabilityTypes,
resolveStoredRoomRoleAgentPlan,
syncRoomRoleOverridesForRoom,
updateStoredRoomMetadata,
upsertRoomRoleOverride,
@@ -31,6 +32,8 @@ export interface AssignRoomInput {
name: string;
roomMode?: RoomMode;
ownerAgentType?: AgentType;
reviewerAgentType?: AgentType;
arbiterAgentType?: AgentType | null;
folder?: string;
isMain?: boolean;
workDir?: string;
@@ -233,6 +236,8 @@ export function assignRoomInDatabase(
syncRoomRoleOverridesForRoom(database, chatJid, roomMode, ownerAgentType, {
ownerAgentConfig: input.ownerAgentConfig,
ownerCreatedAt: input.addedAt ?? now,
reviewerAgentType: input.reviewerAgentType,
arbiterAgentType: input.arbiterAgentType,
updatedAt: input.addedAt ?? now,
});
})();
@@ -294,6 +299,14 @@ export function getStoredRoomSettingsFromDatabase(
return getStoredRoomSettingsRowFromDatabase(database, chatJid);
}
export function getStoredRoomRoleAgentPlanFromDatabase(
database: Database,
chatJid: string,
): ReturnType<typeof resolveStoredRoomRoleAgentPlan> | undefined {
const stored = getStoredRoomSettingsRowFromDatabase(database, chatJid);
return stored ? resolveStoredRoomRoleAgentPlan(database, stored) : undefined;
}
function getStoredRoomModeRowFromDatabase(
database: Database,
chatJid: string,