import { describe, it, expect } from "bun:test" import { applyToolConfig } from "./tool-config-handler" import type { OhMyOpenCodeConfig } from "../config" function createParams(overrides: { taskSystem?: boolean agents?: string[] }) { const agentResult: Record }> = {} for (const agent of overrides.agents ?? []) { agentResult[agent] = { permission: {} } } return { config: { tools: {}, permission: {} } as Record, pluginConfig: { experimental: { task_system: overrides.taskSystem ?? false }, } as OhMyOpenCodeConfig, agentResult: agentResult as Record, } } describe("applyToolConfig", () => { describe("#given task_system is enabled", () => { describe("#when applying tool config", () => { it("#then should deny todowrite and todoread globally", () => { const params = createParams({ taskSystem: true }) applyToolConfig(params) const tools = params.config.tools as Record expect(tools.todowrite).toBe(false) expect(tools.todoread).toBe(false) }) it.each([ "atlas", "sisyphus", "hephaestus", "prometheus", "sisyphus-junior", ])("#then should deny todo tools for %s agent", (agentName) => { const params = createParams({ taskSystem: true, agents: [agentName], }) applyToolConfig(params) const agent = params.agentResult[agentName] as { permission: Record } expect(agent.permission.todowrite).toBe("deny") expect(agent.permission.todoread).toBe("deny") }) }) }) describe("#given task_system is disabled", () => { describe("#when applying tool config", () => { it.each([ "atlas", "sisyphus", "hephaestus", "prometheus", "sisyphus-junior", ])("#then should NOT deny todo tools for %s agent", (agentName) => { const params = createParams({ taskSystem: false, agents: [agentName], }) applyToolConfig(params) const agent = params.agentResult[agentName] as { permission: Record } expect(agent.permission.todowrite).toBeUndefined() expect(agent.permission.todoread).toBeUndefined() }) }) }) })