Files
claw3d/tests/unit/skillTriggers.test.ts
T
Luke The Dev 3da1694085 feat: add SOUNDCLAW jukebox skill integration (#67)
Add the office jukebox flow so Spotify can be controlled from the SOUNDCLAW skill, manual jukebox UI, and local browser auth bridge during development.

Made-with: Cursor
2026-03-26 18:35:19 -05:00

84 lines
2.8 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
buildOfficeSkillTriggerHoldMaps,
DEFAULT_SKILL_TRIGGER_FALLBACKS_BY_SKILL_KEY,
OFFICE_SKILL_TRIGGER_PLACE_REGISTRY,
} from "@/lib/office/places";
import {
listPackagedSkillTriggerDefinitions,
resolveTriggeredSkillDefinition,
} from "@/lib/skills/triggers";
describe("skill triggers", () => {
it("parses packaged skill trigger definitions from SKILL.md", () => {
const todoTrigger = listPackagedSkillTriggerDefinitions().find(
(entry) => entry.skillKey === "todo-board",
);
expect(todoTrigger).not.toBeUndefined();
expect(todoTrigger?.movementTarget).toBe("desk");
expect(todoTrigger?.activationPhrases).toContain("todo");
expect(todoTrigger?.activationPhrases).toContain("blocked tasks");
});
it("matches the running agent's latest request against enabled skill triggers", () => {
const todoTrigger = listPackagedSkillTriggerDefinitions().find(
(entry) => entry.skillKey === "todo-board",
);
const matched = resolveTriggeredSkillDefinition({
isAgentRunning: true,
lastUserMessage: "On telegram, add this to my todo list.",
transcriptEntries: [],
triggers: todoTrigger ? [todoTrigger] : [],
});
expect(matched?.skillKey).toBe("todo-board");
expect(matched?.movementTarget).toBe("desk");
});
it("does not match triggers when the agent is not running", () => {
const todoTrigger = listPackagedSkillTriggerDefinitions().find(
(entry) => entry.skillKey === "todo-board",
);
const matched = resolveTriggeredSkillDefinition({
isAgentRunning: false,
lastUserMessage: "Add this to my todo list.",
transcriptEntries: [],
triggers: todoTrigger ? [todoTrigger] : [],
});
expect(matched).toBeNull();
});
it("keeps trigger places and fallback definitions in one central registry", () => {
expect(OFFICE_SKILL_TRIGGER_PLACE_REGISTRY.desk.interactionTarget).toBe(
"desk",
);
expect(OFFICE_SKILL_TRIGGER_PLACE_REGISTRY.github.interactionTarget).toBe(
"server_room",
);
expect(
DEFAULT_SKILL_TRIGGER_FALLBACKS_BY_SKILL_KEY["todo-board"]
?.movementTarget,
).toBe("desk");
});
it("builds animation hold maps from the central place registry", () => {
const holdMaps = buildOfficeSkillTriggerHoldMaps({
"agent-a": "desk",
"agent-b": "github",
"agent-c": "gym",
"agent-d": "qa_lab",
});
expect(holdMaps.deskHoldByAgentId).toEqual({ "agent-a": true });
expect(holdMaps.githubHoldByAgentId).toEqual({ "agent-b": true });
expect(holdMaps.gymHoldByAgentId).toEqual({ "agent-c": true });
expect(holdMaps.qaHoldByAgentId).toEqual({ "agent-d": true });
expect(holdMaps.skillGymHoldByAgentId).toEqual({ "agent-c": true });
});
});