import { describe, test, expect, mock } from "bun:test" import type { PluginInput } from "@opencode-ai/plugin" import type { BackgroundManager } from "../../features/background-agent" import { createCallOmoAgent } from "./tools" describe("createCallOmoAgent", () => { const mockCtx = { client: {}, directory: "/test", } as unknown as PluginInput const mockBackgroundManager = { launch: mock(() => Promise.resolve({ id: "test-task-id", sessionID: null, description: "Test task", agent: "test-agent", status: "pending", })), } as unknown as BackgroundManager test("should reject agent in disabled_agents list", async () => { //#given const toolDef = createCallOmoAgent(mockCtx, mockBackgroundManager, ["explore"]) const executeFunc = toolDef.execute as Function //#when const result = await executeFunc( { description: "Test", prompt: "Test prompt", subagent_type: "explore", run_in_background: true, }, { sessionID: "test", messageID: "msg", agent: "test", abort: new AbortController().signal } ) //#then expect(result).toContain("disabled via disabled_agents") }) test("should reject agent in disabled_agents list with case-insensitive matching", async () => { //#given const toolDef = createCallOmoAgent(mockCtx, mockBackgroundManager, ["Explore"]) const executeFunc = toolDef.execute as Function //#when const result = await executeFunc( { description: "Test", prompt: "Test prompt", subagent_type: "explore", run_in_background: true, }, { sessionID: "test", messageID: "msg", agent: "test", abort: new AbortController().signal } ) //#then expect(result).toContain("disabled via disabled_agents") }) test("should allow agent not in disabled_agents list", async () => { //#given const toolDef = createCallOmoAgent(mockCtx, mockBackgroundManager, ["librarian"]) const executeFunc = toolDef.execute as Function //#when const result = await executeFunc( { description: "Test", prompt: "Test prompt", subagent_type: "explore", run_in_background: true, }, { sessionID: "test", messageID: "msg", agent: "test", abort: new AbortController().signal } ) //#then // Should not contain disabled error - may fail for other reasons but disabled check should pass expect(result).not.toContain("disabled via disabled_agents") }) test("should allow all agents when disabled_agents is empty", async () => { //#given const toolDef = createCallOmoAgent(mockCtx, mockBackgroundManager, []) const executeFunc = toolDef.execute as Function //#when const result = await executeFunc( { description: "Test", prompt: "Test prompt", subagent_type: "explore", run_in_background: true, }, { sessionID: "test", messageID: "msg", agent: "test", abort: new AbortController().signal } ) //#then expect(result).not.toContain("disabled via disabled_agents") }) })