diff --git a/src/agents/builtin-agents/atlas-agent.ts b/src/agents/builtin-agents/atlas-agent.ts index 50cfc2cf3..d44c50d60 100644 --- a/src/agents/builtin-agents/atlas-agent.ts +++ b/src/agents/builtin-agents/atlas-agent.ts @@ -3,6 +3,7 @@ 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 { log } from "../../shared/logger" import { applyOverrides } from "./agent-overrides" import { applyModelResolution } from "./model-resolution" import { createAtlasAgent } from "../atlas" @@ -52,7 +53,13 @@ export function maybeCreateAtlasConfig(input: { atlasResolution = { model: orchestratorOverride.model, provenance: "override" as const } } - if (!atlasResolution) return undefined + if (!atlasResolution) { + log("[agent-registration] Agent skipped: model resolution returned no result", { + agent: "atlas", + configuredModel: orchestratorOverride?.model, + }) + return undefined + } const { model: atlasModel, variant: atlasResolvedVariant } = atlasResolution let orchestratorConfig = createAtlasAgent({ diff --git a/src/agents/builtin-agents/general-agents.ts b/src/agents/builtin-agents/general-agents.ts index 065e26831..aefcb0f87 100644 --- a/src/agents/builtin-agents/general-agents.ts +++ b/src/agents/builtin-agents/general-agents.ts @@ -66,6 +66,10 @@ export function collectPendingBuiltinAgents(input: { // Check if agent requires a specific model if (requirement?.requiresModel && availableModels) { if (!isModelAvailable(requirement.requiresModel, availableModels)) { + log("[agent-registration] Agent skipped: required model not available", { + agent: agentName, + requiredModel: requirement.requiresModel, + }) continue } } @@ -92,7 +96,13 @@ export function collectPendingBuiltinAgents(input: { resolution = getFirstFallbackModel(requirement) } } - if (!resolution) continue + if (!resolution) { + log("[agent-registration] Agent skipped: model resolution returned no result", { + agent: agentName, + configuredModel: override?.model, + }) + continue + } const { model, variant: resolvedVariant } = resolution let config = buildAgent(source, model, mergedCategories) diff --git a/src/agents/builtin-agents/hephaestus-agent.ts b/src/agents/builtin-agents/hephaestus-agent.ts index c05b1fa71..0b42913f2 100644 --- a/src/agents/builtin-agents/hephaestus-agent.ts +++ b/src/agents/builtin-agents/hephaestus-agent.ts @@ -3,6 +3,7 @@ import type { AgentOverrides } from "../types" import type { CategoryConfig } from "../../config/schema" import type { AvailableAgent, AvailableCategory, AvailableSkill } from "../dynamic-agent-prompt-builder" import { AGENT_MODEL_REQUIREMENTS, isAnyProviderConnected } from "../../shared" +import { log } from "../../shared/logger" import { createHephaestusAgent } from "../hephaestus" import { applyEnvironmentContext } from "./environment-context" import { applyCategoryOverride, mergeAgentConfig } from "./agent-overrides" @@ -51,7 +52,13 @@ export function maybeCreateHephaestusConfig(input: { isFirstRunNoCache || isAnyProviderConnected(hephaestusRequirement.requiresProvider, availableModels) - if (!hasRequiredProvider) return undefined + if (!hasRequiredProvider) { + log("[agent-registration] Agent skipped: required provider not connected", { + agent: "hephaestus", + requiredProvider: hephaestusRequirement?.requiresProvider, + }) + return undefined + } let hephaestusResolution = applyModelResolution({ userModel: hephaestusOverride?.model, @@ -64,7 +71,13 @@ export function maybeCreateHephaestusConfig(input: { hephaestusResolution = getFirstFallbackModel(hephaestusRequirement) } - if (!hephaestusResolution) return undefined + if (!hephaestusResolution) { + log("[agent-registration] Agent skipped: model resolution returned no result", { + agent: "hephaestus", + configuredModel: hephaestusOverride?.model, + }) + return undefined + } const { model: hephaestusModel, variant: hephaestusResolvedVariant } = hephaestusResolution let hephaestusConfig = createHephaestusAgent( diff --git a/src/agents/builtin-agents/sisyphus-agent.ts b/src/agents/builtin-agents/sisyphus-agent.ts index 6cb91370f..6a8d0dc1c 100644 --- a/src/agents/builtin-agents/sisyphus-agent.ts +++ b/src/agents/builtin-agents/sisyphus-agent.ts @@ -3,6 +3,7 @@ import type { AgentOverrides } from "../types" import type { CategoriesConfig, CategoryConfig } from "../../config/schema" import type { AvailableAgent, AvailableCategory, AvailableSkill } from "../dynamic-agent-prompt-builder" import { AGENT_MODEL_REQUIREMENTS, isAnyFallbackModelAvailable } from "../../shared" +import { log } from "../../shared/logger" import { applyEnvironmentContext } from "./environment-context" import { applyOverrides } from "./agent-overrides" import { applyModelResolution, getFirstFallbackModel } from "./model-resolution" @@ -51,6 +52,11 @@ export function maybeCreateSisyphusConfig(input: { isFirstRunNoCache || isAnyFallbackModelAvailable(sisyphusRequirement.fallbackChain, availableModels) + if (!disabledAgents.includes("sisyphus") && !meetsSisyphusAnyModelRequirement) { + log("[agent-registration] Agent skipped: no model in fallback chain is available", { + agent: "sisyphus", + }) + } if (disabledAgents.includes("sisyphus") || !meetsSisyphusAnyModelRequirement) return undefined let sisyphusResolution = applyModelResolution({ @@ -65,7 +71,13 @@ export function maybeCreateSisyphusConfig(input: { sisyphusResolution = getFirstFallbackModel(sisyphusRequirement) } - if (!sisyphusResolution) return undefined + if (!sisyphusResolution) { + log("[agent-registration] Agent skipped: model resolution returned no result", { + agent: "sisyphus", + configuredModel: sisyphusOverride?.model, + }) + return undefined + } const { model: sisyphusModel, variant: sisyphusResolvedVariant } = sisyphusResolution let sisyphusConfig = createSisyphusAgent(