feat: add model-availability validation to agentic insight generation (T009-T011)

- Verify custom model exists on at least one configured server before starting agentic loop; returns HTTP 400 with descriptive error if not found
- has_tool_calling field auto-serialised in GET /insights/models via existing ModelCapabilities Serialize derive
- model_version stored from OllamaClient.primary_model (already correct in T006 implementation)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Cameron
2026-03-18 23:07:43 -04:00
parent 091327e5d9
commit 5c9f5c7d0b
2 changed files with 31 additions and 1 deletions

View File

@@ -1803,7 +1803,32 @@ Return ONLY the summary, nothing else."#,
let insight_cx = current_cx.with_span(span);
// 2. Check tool calling capability
// 2a. Verify the model exists on at least one server before checking capabilities
if let Some(ref model_name) = custom_model {
let available_on_primary = OllamaClient::is_model_available(
&ollama_client.primary_url,
model_name,
)
.await
.unwrap_or(false);
let available_on_fallback = if let Some(ref fallback_url) = ollama_client.fallback_url {
OllamaClient::is_model_available(fallback_url, model_name)
.await
.unwrap_or(false)
} else {
false
};
if !available_on_primary && !available_on_fallback {
anyhow::bail!(
"model not available: '{}' not found on any configured server",
model_name
);
}
}
// 2b. Check tool calling capability
let capabilities = OllamaClient::check_model_capabilities(
&ollama_client.primary_url,
&ollama_client.primary_model,