fix: union disabled_tools in mergeConfigs() like other disabled_* arrays

disabled_tools was defined in the Zod schema but omitted from
mergeConfigs(), causing project-level config to shadow user-level
disabled_tools instead of merging both sets. Add Set union and
regression test.

Closes #2555
This commit is contained in:
MoerAI
2026-03-13 21:35:46 +09:00
parent 6625670079
commit 9a774f1db2
2 changed files with 23 additions and 0 deletions

View File

@@ -115,6 +115,23 @@ describe("mergeConfigs", () => {
expect(result.disabled_hooks).toContain("session-recovery");
expect(result.disabled_hooks?.length).toBe(3);
});
it("should union disabled_tools from base and override without duplicates", () => {
const base: OhMyOpenCodeConfig = {
disabled_tools: ["todowrite", "interactive_bash"],
};
const override: OhMyOpenCodeConfig = {
disabled_tools: ["interactive_bash", "look_at"],
};
const result = mergeConfigs(base, override);
expect(result.disabled_tools).toContain("todowrite");
expect(result.disabled_tools).toContain("interactive_bash");
expect(result.disabled_tools).toContain("look_at");
expect(result.disabled_tools?.length).toBe(3);
});
});
});

View File

@@ -146,6 +146,12 @@ export function mergeConfigs(
...(override.disabled_skills ?? []),
]),
],
disabled_tools: [
...new Set([
...(base.disabled_tools ?? []),
...(override.disabled_tools ?? []),
]),
],
claude_code: deepMerge(base.claude_code, override.claude_code),
};
}