use super::Config;
pub fn merge(global: Config, repo: Config) -> Config {
let mut providers = global.providers;
providers.extend(repo.providers);
let mut models = global.models;
models.extend(repo.models);
let mut agents = global.agents;
agents.extend(repo.agents);
let mut images = global.images;
images.extend(repo.images);
let mut workspace = repo.workspace;
let mut mounts = global.workspace.mounts;
mounts.extend(workspace.mounts);
workspace.mounts = mounts;
let mut network = global.network;
if repo.network.is_declared() {
network.mode = repo.network.mode;
network.set_declared(true);
} else {
network.set_declared(false);
}
Config {
default_image: repo.default_image.or(global.default_image),
default_agent: repo.default_agent.or(global.default_agent),
default_model: repo.default_model.or(global.default_model),
session_root: repo.session_root.or(global.session_root),
model_cache_root: repo.model_cache_root.or(global.model_cache_root),
tool_call_max: repo.tool_call_max.or(global.tool_call_max),
tool_result_max: repo.tool_result_max.or(global.tool_result_max),
network,
providers,
models,
agents,
workspace,
images,
}
}