fix(agents): honor tools overrides via permission migration
This commit is contained in:
parent
6c8527f29b
commit
ba129784f5
@ -523,3 +523,49 @@ describe("override.category expansion in createBuiltinAgents", () => {
|
||||
expect(agents.oracle.model).toBe(agentsWithoutOverride.oracle.model)
|
||||
})
|
||||
})
|
||||
|
||||
describe("agent override tools migration", () => {
|
||||
test("tools: { x: false } is migrated to permission: { x: deny }", async () => {
|
||||
// #given
|
||||
const overrides = {
|
||||
explore: { tools: { "jetbrains_*": false } } as any,
|
||||
}
|
||||
|
||||
// #when
|
||||
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL)
|
||||
|
||||
// #then
|
||||
expect(agents.explore).toBeDefined()
|
||||
const permission = agents.explore.permission as Record<string, string>
|
||||
expect(permission["jetbrains_*"]).toBe("deny")
|
||||
})
|
||||
|
||||
test("tools: { x: true } is migrated to permission: { x: allow }", async () => {
|
||||
// #given
|
||||
const overrides = {
|
||||
librarian: { tools: { "jetbrains_get_*": true } } as any,
|
||||
}
|
||||
|
||||
// #when
|
||||
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL)
|
||||
|
||||
// #then
|
||||
expect(agents.librarian).toBeDefined()
|
||||
const permission = agents.librarian.permission as Record<string, string>
|
||||
expect(permission["jetbrains_get_*"]).toBe("allow")
|
||||
})
|
||||
|
||||
test("tools config is removed after migration", async () => {
|
||||
// #given
|
||||
const overrides = {
|
||||
explore: { tools: { "some_tool": false } } as any,
|
||||
}
|
||||
|
||||
// #when
|
||||
const agents = await createBuiltinAgents([], overrides, undefined, TEST_DEFAULT_MODEL)
|
||||
|
||||
// #then
|
||||
expect(agents.explore).toBeDefined()
|
||||
expect((agents.explore as any).tools).toBeUndefined()
|
||||
})
|
||||
})
|
||||
|
||||
@ -10,7 +10,7 @@ import { createMetisAgent } from "./metis"
|
||||
import { createAtlasAgent } from "./atlas"
|
||||
import { createMomusAgent } from "./momus"
|
||||
import type { AvailableAgent, AvailableCategory, AvailableSkill } from "./dynamic-agent-prompt-builder"
|
||||
import { deepMerge, fetchAvailableModels, resolveModelWithFallback, AGENT_MODEL_REQUIREMENTS, findCaseInsensitive, includesCaseInsensitive, readConnectedProvidersCache } from "../shared"
|
||||
import { deepMerge, fetchAvailableModels, resolveModelWithFallback, AGENT_MODEL_REQUIREMENTS, findCaseInsensitive, includesCaseInsensitive, readConnectedProvidersCache, migrateAgentConfig } from "../shared"
|
||||
import { DEFAULT_CATEGORIES, CATEGORY_DESCRIPTIONS } from "../tools/delegate-task/constants"
|
||||
import { resolveMultipleSkills } from "../features/opencode-skill-loader/skill-content"
|
||||
import { createBuiltinSkills } from "../features/builtin-skills"
|
||||
@ -151,7 +151,8 @@ function mergeAgentConfig(
|
||||
base: AgentConfig,
|
||||
override: AgentOverrideConfig
|
||||
): AgentConfig {
|
||||
const { prompt_append, ...rest } = override
|
||||
const migratedOverride = migrateAgentConfig(override as Record<string, unknown>) as AgentOverrideConfig
|
||||
const { prompt_append, ...rest } = migratedOverride
|
||||
const merged = deepMerge(base, rest as Partial<AgentConfig>)
|
||||
|
||||
if (prompt_append && merged.prompt) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user