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:
@@ -115,6 +115,23 @@ describe("mergeConfigs", () => {
|
|||||||
expect(result.disabled_hooks).toContain("session-recovery");
|
expect(result.disabled_hooks).toContain("session-recovery");
|
||||||
expect(result.disabled_hooks?.length).toBe(3);
|
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);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -146,6 +146,12 @@ export function mergeConfigs(
|
|||||||
...(override.disabled_skills ?? []),
|
...(override.disabled_skills ?? []),
|
||||||
]),
|
]),
|
||||||
],
|
],
|
||||||
|
disabled_tools: [
|
||||||
|
...new Set([
|
||||||
|
...(base.disabled_tools ?? []),
|
||||||
|
...(override.disabled_tools ?? []),
|
||||||
|
]),
|
||||||
|
],
|
||||||
claude_code: deepMerge(base.claude_code, override.claude_code),
|
claude_code: deepMerge(base.claude_code, override.claude_code),
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user