mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 18:01:22 +00:00
fix(coding-agent): user filters now layer on top of manifest filters
Previously, user filters completely replaced manifest filtering. Now: 1. Manifest patterns are applied first (defines what package provides) 2. User patterns are applied on top (narrows down further) This means if a manifest excludes 10 extensions and user adds one more exclusion, all 11 are excluded (not just the user's one).
This commit is contained in:
parent
f63a353779
commit
375d0bc4d6
2 changed files with 68 additions and 29 deletions
|
|
@ -285,6 +285,44 @@ Content`,
|
|||
});
|
||||
|
||||
describe("pattern filtering in package filters", () => {
|
||||
it("should apply user filters on top of manifest filters (not replace)", async () => {
|
||||
// Manifest excludes baz.ts, user excludes bar.ts
|
||||
// Result should exclude BOTH
|
||||
const pkgDir = join(tempDir, "layered-pkg");
|
||||
mkdirSync(join(pkgDir, "extensions"), { recursive: true });
|
||||
writeFileSync(join(pkgDir, "extensions", "foo.ts"), "export default function() {}");
|
||||
writeFileSync(join(pkgDir, "extensions", "bar.ts"), "export default function() {}");
|
||||
writeFileSync(join(pkgDir, "extensions", "baz.ts"), "export default function() {}");
|
||||
writeFileSync(
|
||||
join(pkgDir, "package.json"),
|
||||
JSON.stringify({
|
||||
name: "layered-pkg",
|
||||
pi: {
|
||||
extensions: ["extensions", "!**/baz.ts"],
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
// User filter adds exclusion for bar.ts
|
||||
settingsManager.setPackages([
|
||||
{
|
||||
source: pkgDir,
|
||||
extensions: ["!**/bar.ts"],
|
||||
skills: [],
|
||||
prompts: [],
|
||||
themes: [],
|
||||
},
|
||||
]);
|
||||
|
||||
const result = await packageManager.resolve();
|
||||
// foo.ts should be included (not excluded by anyone)
|
||||
expect(result.extensions.some((p) => p.endsWith("foo.ts"))).toBe(true);
|
||||
// bar.ts should be excluded (by user)
|
||||
expect(result.extensions.some((p) => p.endsWith("bar.ts"))).toBe(false);
|
||||
// baz.ts should be excluded (by manifest)
|
||||
expect(result.extensions.some((p) => p.endsWith("baz.ts"))).toBe(false);
|
||||
});
|
||||
|
||||
it("should exclude extensions from package with ! pattern", async () => {
|
||||
const pkgDir = join(tempDir, "pattern-pkg");
|
||||
mkdirSync(join(pkgDir, "extensions"), { recursive: true });
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue