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

@@ -5,6 +5,7 @@ import {
_setRegisteredGroupForTests,
_setStoredRoomOwnerAgentTypeForTests,
_initTestDatabase,
assignRoom,
setChannelOwnerLease,
setExplicitRoomMode,
} from './db.js';
@@ -236,6 +237,29 @@ describe('service-routing global failover', () => {
});
});
it('uses room-level reviewer and arbiter agent overrides from assign_room', () => {
assignRoom('dc:room-role-overrides', {
name: 'Room Role Overrides',
roomMode: 'tribunal',
ownerAgentType: 'claude-code',
reviewerAgentType: 'codex',
arbiterAgentType: 'claude-code',
folder: 'room-role-overrides',
});
expect(getEffectiveChannelLease('dc:room-role-overrides')).toMatchObject({
chat_jid: 'dc:room-role-overrides',
owner_agent_type: 'claude-code',
reviewer_agent_type: 'codex',
arbiter_agent_type: 'claude-code',
owner_service_id: 'claude',
reviewer_service_id: 'codex-review',
arbiter_service_id: 'claude',
owner_failover_active: false,
explicit: false,
});
});
it('defaults to the configured owner service for chats without canonical room settings', () => {
expect(getEffectiveChannelLease('dc:unregistered')).toMatchObject({
chat_jid: 'dc:unregistered',