| import { describe, test, expect } from 'vitest'; |
| |
| |
| |
| |
| |
| |
| |
|
|
| import { getDefaultAgents } from '@/lib/orchestration/registry/store'; |
| import { AGENT_COLOR_PALETTE, AGENT_DEFAULT_AVATARS } from '@/lib/constants/agent-defaults'; |
|
|
| interface DefaultModeFields { |
| agentIds: string[]; |
| } |
|
|
| interface GenerateModeFields { |
| generatedAgentConfigs: Array<{ |
| id: string; |
| name: string; |
| role: string; |
| persona: string; |
| avatar: string; |
| color: string; |
| priority: number; |
| }>; |
| } |
|
|
| describe('#353: generatedAgentConfigs conditional on agentMode', () => { |
| |
| function buildStageAgentFields( |
| agentMode: 'default' | 'generate', |
| agents: Array<{ id: string; name: string; role: string; persona?: string }>, |
| ): DefaultModeFields | GenerateModeFields { |
| return agentMode === 'generate' |
| ? { |
| generatedAgentConfigs: agents.map((a, i) => ({ |
| id: a.id, |
| name: a.name, |
| role: a.role, |
| persona: a.persona || '', |
| avatar: AGENT_DEFAULT_AVATARS[i % AGENT_DEFAULT_AVATARS.length], |
| color: AGENT_COLOR_PALETTE[i % AGENT_COLOR_PALETTE.length], |
| priority: a.role === 'teacher' ? 10 : a.role === 'assistant' ? 7 : 5, |
| })), |
| } |
| : { |
| agentIds: agents.map((a) => a.id), |
| }; |
| } |
|
|
| test('default mode should set agentIds, NOT generatedAgentConfigs', () => { |
| const agents = getDefaultAgents(); |
| const fields = buildStageAgentFields('default', agents); |
|
|
| |
| expect(fields).toHaveProperty('agentIds'); |
| expect((fields as DefaultModeFields).agentIds).toEqual([ |
| 'default-1', |
| 'default-2', |
| 'default-3', |
| 'default-4', |
| 'default-5', |
| 'default-6', |
| ]); |
|
|
| |
| expect(fields).not.toHaveProperty('generatedAgentConfigs'); |
| }); |
|
|
| test('generate mode should set generatedAgentConfigs, NOT agentIds', () => { |
| const agents = [ |
| { id: 'gen-server-0', name: 'Prof. Li', role: 'teacher', persona: 'An expert' }, |
| { id: 'gen-server-1', name: 'Assistant', role: 'assistant', persona: 'Helpful' }, |
| { id: 'gen-server-2', name: 'Student', role: 'student', persona: 'Curious' }, |
| ]; |
| const fields = buildStageAgentFields('generate', agents); |
|
|
| |
| expect(fields).toHaveProperty('generatedAgentConfigs'); |
| expect((fields as GenerateModeFields).generatedAgentConfigs).toHaveLength(3); |
| expect((fields as GenerateModeFields).generatedAgentConfigs[0].id).toBe('gen-server-0'); |
|
|
| |
| expect(fields).not.toHaveProperty('agentIds'); |
| }); |
|
|
| test('generate mode with LLM fallback should behave like default mode', () => { |
| |
| |
| let agentMode: 'default' | 'generate' = 'generate'; |
| let agents; |
|
|
| try { |
| throw new Error('Simulated LLM failure'); |
| } catch { |
| agents = getDefaultAgents(); |
| agentMode = 'default'; |
| } |
|
|
| const fields = buildStageAgentFields(agentMode, agents); |
|
|
| |
| expect(fields).toHaveProperty('agentIds'); |
| expect(fields).not.toHaveProperty('generatedAgentConfigs'); |
| expect((fields as DefaultModeFields).agentIds).toEqual([ |
| 'default-1', |
| 'default-2', |
| 'default-3', |
| 'default-4', |
| 'default-5', |
| 'default-6', |
| ]); |
| }); |
| }); |
|
|