91 lines
2.5 KiB
TypeScript
91 lines
2.5 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import {
|
|
resolveAgentTypeForRole,
|
|
resolveRoleAgentPlan,
|
|
} from './role-agent-plan.js';
|
|
|
|
describe('resolveRoleAgentPlan', () => {
|
|
it('uses the group agent type as owner in single rooms', () => {
|
|
expect(
|
|
resolveRoleAgentPlan({
|
|
paired: false,
|
|
groupAgentType: 'codex',
|
|
configuredReviewer: 'claude-code',
|
|
configuredArbiter: 'claude-code',
|
|
}),
|
|
).toEqual({
|
|
ownerAgentType: 'codex',
|
|
reviewerAgentType: null,
|
|
arbiterAgentType: null,
|
|
});
|
|
});
|
|
|
|
it('falls back to claude-code when group agent type is undefined', () => {
|
|
expect(
|
|
resolveRoleAgentPlan({
|
|
paired: false,
|
|
groupAgentType: undefined,
|
|
configuredReviewer: 'codex',
|
|
}),
|
|
).toEqual({
|
|
ownerAgentType: 'claude-code',
|
|
reviewerAgentType: null,
|
|
arbiterAgentType: null,
|
|
});
|
|
});
|
|
|
|
it('uses configured reviewer and arbiter when paired room roles differ', () => {
|
|
expect(
|
|
resolveRoleAgentPlan({
|
|
paired: true,
|
|
groupAgentType: 'codex',
|
|
configuredReviewer: 'claude-code',
|
|
configuredArbiter: 'claude-code',
|
|
}),
|
|
).toEqual({
|
|
ownerAgentType: 'codex',
|
|
reviewerAgentType: 'claude-code',
|
|
arbiterAgentType: 'claude-code',
|
|
});
|
|
});
|
|
|
|
it('collapses reviewer to owner and keeps arbiter null when absent', () => {
|
|
expect(
|
|
resolveRoleAgentPlan({
|
|
paired: true,
|
|
groupAgentType: 'claude-code',
|
|
configuredReviewer: 'claude-code',
|
|
}),
|
|
).toEqual({
|
|
ownerAgentType: 'claude-code',
|
|
reviewerAgentType: 'claude-code',
|
|
arbiterAgentType: null,
|
|
});
|
|
});
|
|
|
|
it('falls back to owner when reviewer or arbiter are absent in the plan', () => {
|
|
const plan = resolveRoleAgentPlan({
|
|
paired: false,
|
|
groupAgentType: 'codex',
|
|
configuredReviewer: 'claude-code',
|
|
});
|
|
|
|
expect(resolveAgentTypeForRole(plan, 'owner')).toBe('codex');
|
|
expect(resolveAgentTypeForRole(plan, 'reviewer')).toBe('codex');
|
|
expect(resolveAgentTypeForRole(plan, 'arbiter')).toBe('codex');
|
|
});
|
|
|
|
it('returns explicit reviewer and arbiter agent types when present', () => {
|
|
const plan = resolveRoleAgentPlan({
|
|
paired: true,
|
|
groupAgentType: 'codex',
|
|
configuredReviewer: 'claude-code',
|
|
configuredArbiter: 'claude-code',
|
|
});
|
|
|
|
expect(resolveAgentTypeForRole(plan, 'reviewer')).toBe('claude-code');
|
|
expect(resolveAgentTypeForRole(plan, 'arbiter')).toBe('claude-code');
|
|
});
|
|
});
|