Menu
popagent
publicLatest change 4565eb356975518dfc0202eab29b56dff51e8f71 - add deterministic agent health validation by AkurAI Build
import { describe, expect, test } from "bun:test";
import type { AgentSettings, AgentSkill } from "./api-types";
import { validateAgentHealth } from "./agent-health";
const agent = (overrides: Partial<AgentSettings> = {}): AgentSettings => ({
id: "researcher",
name: "Researcher",
description: "Researches evidence",
instructions: "# Role: Researcher",
model: "codex/gpt-5.6-luna-medium",
workspaceAccess: "read-only",
browserAccess: "read-only",
delegationEnabled: false,
tools: ["webSearch"],
sourceUrls: ["https://example.com"],
createdAt: "2026-08-16T00:00:00Z",
updatedAt: "2026-08-16T00:00:00Z",
...overrides,
});
const skill = (overrides: Partial<AgentSkill> = {}): AgentSkill => ({
id: "skill-1",
agentId: "researcher",
name: "source-research",
description: "Research primary sources",
instructions: "Read primary sources and cite evidence.",
references: {},
sourceUrls: [],
enabled: true,
userInvocable: false,
evolutionManaged: false,
createdAt: "2026-08-16T00:00:00Z",
updatedAt: "2026-08-16T00:00:00Z",
...overrides,
});
describe("validateAgentHealth", () => {
test("reports deterministic configuration errors and bloat warnings", () => {
const duplicated = skill({ id: "skill-2" });
const report = validateAgentHealth(
[agent({ tools: ["webSearch", "webSearch"] })],
[skill(), duplicated, skill({ id: "skill-3", name: "researcher-practice", instructions: "Confirm ownership. Verify evidence." })],
);
expect(report.summary).toEqual({ agents: 1, skills: 3, errors: 2, warnings: 1 });
expect(report.findings.map(({ code }) => code)).toEqual([
"duplicate-agent-tool",
"duplicate-skill-name",
"generic-practice-skill",
]);
});
test("accepts a narrow healthy profile", () => {
expect(validateAgentHealth([agent()], [skill()])).toMatchObject({
status: "ok",
summary: { agents: 1, skills: 1, errors: 0, warnings: 0 },
findings: [],
});
});
});