update on the agents and registry side
This commit is contained in:
66
tests/lib/AgentFactory.test.js
Normal file
66
tests/lib/AgentFactory.test.js
Normal file
@@ -0,0 +1,66 @@
|
||||
import { AgentFactory } from '@/lib/assistant/agent/AgentFactory';
|
||||
import { SkillRegistry } from '@/lib/assistant/skills/SkillRegistry';
|
||||
|
||||
describe('AgentFactory', () => {
|
||||
beforeEach(() => {
|
||||
SkillRegistry.clearRegistryConfig();
|
||||
});
|
||||
|
||||
it('synthesizes an agent from active skills with instructions and tools', () => {
|
||||
const agent = AgentFactory.synthesizeDefaultAgent();
|
||||
|
||||
expect(agent.name).toBe('Doormile Fleet Orchestrator');
|
||||
expect(agent.activeSkillCount).toBeGreaterThanOrEqual(5);
|
||||
expect(agent.systemPrompt).toContain('Doormile Autonomous Logistics Fleet Orchestrator');
|
||||
expect(agent.tools.length).toBeGreaterThan(0);
|
||||
});
|
||||
|
||||
it('evaluates telemetry findings across active skills', () => {
|
||||
const agent = AgentFactory.synthesizeDefaultAgent();
|
||||
|
||||
const sampleRows = [
|
||||
{
|
||||
bookingid: 501,
|
||||
bookingno: 'BK-501',
|
||||
orderstatus: 'pending',
|
||||
expecteddeliverytime: '2026-08-31 10:00:00', // overdue compared to 12:00:00
|
||||
orderdate: '2026-08-31 09:00:00'
|
||||
}
|
||||
];
|
||||
|
||||
const findings = agent.evaluateTelemetry(sampleRows, '2026-08-31 12:00:00');
|
||||
expect(findings.length).toBeGreaterThan(0);
|
||||
expect(findings.some((f) => f.id === 'sla_breached')).toBe(true);
|
||||
});
|
||||
|
||||
it('omits disabled skills from telemetry evaluation', () => {
|
||||
SkillRegistry.applyRegistryConfig([{ skillid: 'skill_sla_guardian', enabled: false, thresholds: {} }]);
|
||||
const agent = AgentFactory.synthesizeDefaultAgent();
|
||||
|
||||
const sampleRows = [
|
||||
{
|
||||
bookingid: 501,
|
||||
bookingno: 'BK-501',
|
||||
orderstatus: 'pending',
|
||||
expecteddeliverytime: '2026-08-31 10:00:00',
|
||||
orderdate: '2026-08-31 09:00:00'
|
||||
}
|
||||
];
|
||||
|
||||
const findings = agent.evaluateTelemetry(sampleRows, '2026-08-31 12:00:00');
|
||||
expect(findings.some((f) => f.id === 'sla_breached')).toBe(false);
|
||||
});
|
||||
|
||||
it('executes active skill tools', async () => {
|
||||
const agent = AgentFactory.synthesizeDefaultAgent();
|
||||
const result = await agent.executeSkillTool('reassign_sla_critical_order', {
|
||||
bookingId: 999,
|
||||
targetMilerId: 42,
|
||||
reason: 'Urgent priority'
|
||||
});
|
||||
|
||||
expect(result.success).toBe(true);
|
||||
expect(result.proposal.action).toBe('reassign_miler');
|
||||
expect(result.proposal.bookingId).toBe(999);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user