feat(registry): add client model support check for executor filtering

- Introduced `ClientSupportsModel` function to `ModelRegistry` for verifying client support for specific models.
- Integrated model support validation into executor candidate filtering logic.
- Updated CLIProxy registry interface to include the new support check method.
This commit is contained in:
Luis Pater
2025-10-31 09:15:14 +08:00
parent af3fbd134d
commit 07da781336
3 changed files with 31 additions and 0 deletions

View File

@@ -523,6 +523,31 @@ func (r *ModelRegistry) ResumeClientModel(clientID, modelID string) {
log.Debugf("Resumed client %s for model %s", clientID, modelID)
}
// ClientSupportsModel reports whether the client registered support for modelID.
func (r *ModelRegistry) ClientSupportsModel(clientID, modelID string) bool {
clientID = strings.TrimSpace(clientID)
modelID = strings.TrimSpace(modelID)
if clientID == "" || modelID == "" {
return false
}
r.mutex.RLock()
defer r.mutex.RUnlock()
models, exists := r.clientModels[clientID]
if !exists || len(models) == 0 {
return false
}
for _, id := range models {
if strings.EqualFold(strings.TrimSpace(id), modelID) {
return true
}
}
return false
}
// GetAvailableModels returns all models that have at least one available client
// Parameters:
// - handlerType: The handler type to filter models for (e.g., "openai", "claude", "gemini")