fix(config): deep merge agent overrides with reusable deepMerge utility (#27)

This commit is contained in:
Junho Yeo
2025-12-13 12:00:38 +09:00
committed by GitHub
parent 2cab36f06d
commit 3b129f11c4
4 changed files with 59 additions and 19 deletions

View File

@@ -42,7 +42,7 @@ import { builtinTools, createCallOmoAgent, createBackgroundTools } from "./tools
import { BackgroundManager } from "./features/background-agent";
import { createBuiltinMcps } from "./mcp";
import { OhMyOpenCodeConfigSchema, type OhMyOpenCodeConfig } from "./config";
import { log } from "./shared/logger";
import { log, deepMerge } from "./shared";
import * as fs from "fs";
import * as path from "path";
import * as os from "os";
@@ -89,10 +89,7 @@ function mergeConfigs(
return {
...base,
...override,
agents:
override.agents !== undefined
? { ...(base.agents ?? {}), ...override.agents }
: base.agents,
agents: deepMerge(base.agents, override.agents),
disabled_agents: [
...new Set([
...(base.disabled_agents ?? []),
@@ -105,10 +102,7 @@ function mergeConfigs(
...(override.disabled_mcps ?? []),
]),
],
claude_code:
override.claude_code !== undefined || base.claude_code !== undefined
? { ...(base.claude_code ?? {}), ...(override.claude_code ?? {}) }
: undefined,
claude_code: deepMerge(base.claude_code, override.claude_code),
};
}