fix(skill-loader): filter discovered skills by browserProvider (#1563)
This commit is contained in:
parent
8e92704316
commit
747edcb6e6
@ -389,3 +389,33 @@ describe("resolveMultipleSkills with browserProvider", () => {
|
|||||||
expect(result.notFound).toContain("agent-browser")
|
expect(result.notFound).toContain("agent-browser")
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe("resolveMultipleSkillsAsync with browserProvider filtering", () => {
|
||||||
|
it("should exclude discovered agent-browser when browserProvider is playwright", async () => {
|
||||||
|
// given: playwright is the selected browserProvider (default)
|
||||||
|
const skillNames = ["playwright", "git-master"]
|
||||||
|
const options = { browserProvider: "playwright" as const }
|
||||||
|
|
||||||
|
// when: resolving multiple skills
|
||||||
|
const result = await resolveMultipleSkillsAsync(skillNames, options)
|
||||||
|
|
||||||
|
// then: playwright resolved, agent-browser would be excluded if discovered
|
||||||
|
expect(result.resolved.has("playwright")).toBe(true)
|
||||||
|
expect(result.resolved.has("git-master")).toBe(true)
|
||||||
|
expect(result.notFound).not.toContain("playwright")
|
||||||
|
})
|
||||||
|
|
||||||
|
it("should exclude discovered playwright when browserProvider is agent-browser", async () => {
|
||||||
|
// given: agent-browser is the selected browserProvider
|
||||||
|
const skillNames = ["agent-browser", "git-master"]
|
||||||
|
const options = { browserProvider: "agent-browser" as const }
|
||||||
|
|
||||||
|
// when: resolving multiple skills
|
||||||
|
const result = await resolveMultipleSkillsAsync(skillNames, options)
|
||||||
|
|
||||||
|
// then: agent-browser resolved, playwright would be excluded if discovered
|
||||||
|
expect(result.resolved.has("agent-browser")).toBe(true)
|
||||||
|
expect(result.resolved.has("git-master")).toBe(true)
|
||||||
|
expect(result.notFound).not.toContain("agent-browser")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|||||||
@ -55,10 +55,23 @@ async function getAllSkills(options?: SkillResolutionOptions): Promise<LoadedSki
|
|||||||
mcpConfig: skill.mcpConfig,
|
mcpConfig: skill.mcpConfig,
|
||||||
}))
|
}))
|
||||||
|
|
||||||
const discoveredNames = new Set(discoveredSkills.map((s) => s.name))
|
// Provider-gated skill names that should be filtered based on browserProvider
|
||||||
|
const providerGatedSkillNames = new Set(["agent-browser", "playwright"])
|
||||||
|
const browserProvider = options?.browserProvider ?? "playwright"
|
||||||
|
|
||||||
|
// Filter discovered skills to exclude provider-gated names that don't match the selected provider
|
||||||
|
const filteredDiscoveredSkills = discoveredSkills.filter((skill) => {
|
||||||
|
if (!providerGatedSkillNames.has(skill.name)) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
// For provider-gated skills, only include if it matches the selected provider
|
||||||
|
return skill.name === browserProvider
|
||||||
|
})
|
||||||
|
|
||||||
|
const discoveredNames = new Set(filteredDiscoveredSkills.map((s) => s.name))
|
||||||
const uniqueBuiltins = builtinSkillsAsLoaded.filter((s) => !discoveredNames.has(s.name))
|
const uniqueBuiltins = builtinSkillsAsLoaded.filter((s) => !discoveredNames.has(s.name))
|
||||||
|
|
||||||
let allSkills = [...discoveredSkills, ...uniqueBuiltins]
|
let allSkills = [...filteredDiscoveredSkills, ...uniqueBuiltins]
|
||||||
|
|
||||||
// Filter discovered skills by disabledSkills (builtin skills are already filtered by createBuiltinSkills)
|
// Filter discovered skills by disabledSkills (builtin skills are already filtered by createBuiltinSkills)
|
||||||
if (hasDisabledSkills) {
|
if (hasDisabledSkills) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user