Amp-Thread-ID: https://ampcode.com/threads/T-019c848f-b2a8-7037-9eb5-a258df14b683 Co-authored-by: Amp <amp@ampcode.com>
84 lines
2.4 KiB
TypeScript
84 lines
2.4 KiB
TypeScript
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<string, { permission?: Record<string, unknown> }> = {}
|
|
for (const agent of overrides.agents ?? []) {
|
|
agentResult[agent] = { permission: {} }
|
|
}
|
|
|
|
return {
|
|
config: { tools: {}, permission: {} } as Record<string, unknown>,
|
|
pluginConfig: {
|
|
experimental: { task_system: overrides.taskSystem ?? false },
|
|
} as OhMyOpenCodeConfig,
|
|
agentResult: agentResult as Record<string, unknown>,
|
|
}
|
|
}
|
|
|
|
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<string, unknown>
|
|
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<string, unknown>
|
|
}
|
|
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<string, unknown>
|
|
}
|
|
expect(agent.permission.todowrite).toBeUndefined()
|
|
expect(agent.permission.todoread).toBeUndefined()
|
|
})
|
|
})
|
|
})
|
|
})
|