fix: handle both string[] and object[] formats in provider-models cache

Category delegation fails when provider-models.json contains model objects
with metadata (id, provider, context, output) instead of plain strings.
Line 196 in model-availability.ts assumes string[] format, causing:
  - Object concatenation: `${providerId}/${modelId}` becomes "ollama/[object Object]"
  - Empty availableModels Set passed to resolveModelPipeline()
  - Error: "Model not configured for category"

This is the root cause of issue #1508 where delegate_task(category='quick')
fails despite direct agent routing (delegate_task(subagent_type='explore'))
working correctly.

Changes:
- model-availability.ts: Add type check to handle both string and object formats
- connected-providers-cache.ts: Update ProviderModelsCache interface to accept both formats
- model-availability.test.ts: Add 4 test cases for object[] format handling

Direct agent routing bypasses fetchAvailableModels() entirely, explaining why
it works while category routing fails. This fix enables category delegation
to work with manually-populated Ollama model caches.

Fixes #1508
This commit is contained in:
rooftop-Owl
2026-02-05 15:32:08 +09:00
parent 291f41f7f9
commit bd3a3bcfb9
3 changed files with 90 additions and 9 deletions
+9 -1
View File
@@ -11,8 +11,16 @@ interface ConnectedProvidersCache {
updatedAt: string
}
interface ModelMetadata {
id: string
provider?: string
context?: number
output?: number
name?: string
}
interface ProviderModelsCache {
models: Record<string, string[]>
models: Record<string, string[] | ModelMetadata[]>
connected: string[]
updatedAt: string
}