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)
|
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 { createAtlasAgent } from "./atlas"
|
||||||
import { createMomusAgent } from "./momus"
|
import { createMomusAgent } from "./momus"
|
||||||
import type { AvailableAgent, AvailableCategory, AvailableSkill } from "./dynamic-agent-prompt-builder"
|
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 { DEFAULT_CATEGORIES, CATEGORY_DESCRIPTIONS } from "../tools/delegate-task/constants"
|
||||||
import { resolveMultipleSkills } from "../features/opencode-skill-loader/skill-content"
|
import { resolveMultipleSkills } from "../features/opencode-skill-loader/skill-content"
|
||||||
import { createBuiltinSkills } from "../features/builtin-skills"
|
import { createBuiltinSkills } from "../features/builtin-skills"
|
||||||
@ -151,7 +151,8 @@ function mergeAgentConfig(
|
|||||||
base: AgentConfig,
|
base: AgentConfig,
|
||||||
override: AgentOverrideConfig
|
override: AgentOverrideConfig
|
||||||
): AgentConfig {
|
): 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>)
|
const merged = deepMerge(base, rest as Partial<AgentConfig>)
|
||||||
|
|
||||||
if (prompt_append && merged.prompt) {
|
if (prompt_append && merged.prompt) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user