import type { AgentConfig } from "@opencode-ai/sdk" import type { BuiltinAgentName, AgentOverrideConfig, AgentOverrides } from "./types" import { omoAgent } from "./omo" import { oracleAgent } from "./oracle" import { librarianAgent } from "./librarian" import { exploreAgent } from "./explore" import { frontendUiUxEngineerAgent } from "./frontend-ui-ux-engineer" import { documentWriterAgent } from "./document-writer" import { multimodalLookerAgent } from "./multimodal-looker" import { deepMerge } from "../shared" const allBuiltinAgents: Record = { OmO: omoAgent, oracle: oracleAgent, librarian: librarianAgent, explore: exploreAgent, "frontend-ui-ux-engineer": frontendUiUxEngineerAgent, "document-writer": documentWriterAgent, "multimodal-looker": multimodalLookerAgent, } function mergeAgentConfig( base: AgentConfig, override: AgentOverrideConfig ): AgentConfig { return deepMerge(base, override as Partial) } export function createBuiltinAgents( disabledAgents: BuiltinAgentName[] = [], agentOverrides: AgentOverrides = {} ): Record { const result: Record = {} for (const [name, config] of Object.entries(allBuiltinAgents)) { const agentName = name as BuiltinAgentName if (disabledAgents.includes(agentName)) { continue } const override = agentOverrides[agentName] if (override) { result[name] = mergeAgentConfig(config, override) } else { result[name] = config } } return result }