(provider database.AIProvider, keys []database.AIProviderKey)
| 8646 | } |
| 8647 | |
| 8648 | func (p *Server) aiProviderConfigFromKeys(provider database.AIProvider, keys []database.AIProviderKey) (chatprovider.ConfiguredProvider, error) { |
| 8649 | if !provider.Enabled { |
| 8650 | return chatprovider.ConfiguredProvider{}, xerrors.Errorf("AI provider %s is disabled", provider.ID) |
| 8651 | } |
| 8652 | apiKey := "" |
| 8653 | // GetAIProviderKeysByProviderID orders keys oldest first. chatd consumes |
| 8654 | // one provider-scoped key because runtime provider config has one API key slot. |
| 8655 | for _, key := range keys { |
| 8656 | if key.APIKey != "" { |
| 8657 | apiKey = key.APIKey |
| 8658 | break |
| 8659 | } |
| 8660 | } |
| 8661 | return chatprovider.ConfiguredProvider{ |
| 8662 | ProviderID: provider.ID, |
| 8663 | Provider: string(provider.Type), |
| 8664 | APIKey: apiKey, |
| 8665 | BaseURL: provider.BaseUrl, |
| 8666 | CentralAPIKeyEnabled: true, |
| 8667 | AllowUserAPIKey: p.allowBYOK, |
| 8668 | AllowCentralAPIKeyFallback: true, |
| 8669 | }, nil |
| 8670 | } |
| 8671 | |
| 8672 | func (p *Server) aiProviderConfigs(ctx context.Context, providers []database.AIProvider) ([]chatprovider.ConfiguredProvider, error) { |
| 8673 | if len(providers) == 0 { |
no test coverage detected