df03300211
- Split 25+ index.ts files into hook.ts + extracted modules - Rename all catch-all utils.ts/helpers.ts to domain-specific names - Split src/tools/lsp/ into ~15 focused modules - Split src/tools/delegate-task/ into ~18 focused modules - Separate shared types from implementation - 155 files changed, 60+ new files created - All typecheck clean, 61 tests pass
64 lines
2.0 KiB
TypeScript
64 lines
2.0 KiB
TypeScript
import type { AgentConfig } from "@opencode-ai/sdk"
|
|
import type { AgentOverrides } from "../types"
|
|
import type { CategoriesConfig, CategoryConfig } from "../../config/schema"
|
|
import type { AvailableAgent, AvailableSkill } from "../dynamic-agent-prompt-builder"
|
|
import { AGENT_MODEL_REQUIREMENTS } from "../../shared"
|
|
import { applyOverrides } from "./agent-overrides"
|
|
import { applyModelResolution } from "./model-resolution"
|
|
import { createAtlasAgent } from "../atlas"
|
|
|
|
export function maybeCreateAtlasConfig(input: {
|
|
disabledAgents: string[]
|
|
agentOverrides: AgentOverrides
|
|
uiSelectedModel?: string
|
|
availableModels: Set<string>
|
|
systemDefaultModel?: string
|
|
availableAgents: AvailableAgent[]
|
|
availableSkills: AvailableSkill[]
|
|
mergedCategories: Record<string, CategoryConfig>
|
|
userCategories?: CategoriesConfig
|
|
}): AgentConfig | undefined {
|
|
const {
|
|
disabledAgents,
|
|
agentOverrides,
|
|
uiSelectedModel,
|
|
availableModels,
|
|
systemDefaultModel,
|
|
availableAgents,
|
|
availableSkills,
|
|
mergedCategories,
|
|
userCategories,
|
|
} = input
|
|
|
|
if (disabledAgents.includes("atlas")) return undefined
|
|
|
|
const orchestratorOverride = agentOverrides["atlas"]
|
|
const atlasRequirement = AGENT_MODEL_REQUIREMENTS["atlas"]
|
|
|
|
const atlasResolution = applyModelResolution({
|
|
uiSelectedModel: orchestratorOverride?.model ? undefined : uiSelectedModel,
|
|
userModel: orchestratorOverride?.model,
|
|
requirement: atlasRequirement,
|
|
availableModels,
|
|
systemDefaultModel,
|
|
})
|
|
|
|
if (!atlasResolution) return undefined
|
|
const { model: atlasModel, variant: atlasResolvedVariant } = atlasResolution
|
|
|
|
let orchestratorConfig = createAtlasAgent({
|
|
model: atlasModel,
|
|
availableAgents,
|
|
availableSkills,
|
|
userCategories,
|
|
})
|
|
|
|
if (atlasResolvedVariant) {
|
|
orchestratorConfig = { ...orchestratorConfig, variant: atlasResolvedVariant }
|
|
}
|
|
|
|
orchestratorConfig = applyOverrides(orchestratorConfig, orchestratorOverride, mergedCategories)
|
|
|
|
return orchestratorConfig
|
|
}
|