MCPcopy Index your code
hub / github.com/coder/coder / resolveUserProviderAPIKeys

Method resolveUserProviderAPIKeys

coderd/x/chatd/chatd.go:8785–8846  ·  view source on GitHub ↗
(
	ctx context.Context,
	ownerID uuid.UUID,
	selectedAIProviderID uuid.UUID,
)

Source from the content-addressed store, hash-verified

8783}
8784
8785func (p *Server) resolveUserProviderAPIKeys(
8786 ctx context.Context,
8787 ownerID uuid.UUID,
8788 selectedAIProviderID uuid.UUID,
8789) (chatprovider.ProviderAPIKeys, error) {
8790 if selectedAIProviderID != uuid.Nil {
8791 provider, err := p.db.GetAIProviderByID(ctx, selectedAIProviderID)
8792 if err != nil {
8793 return chatprovider.ProviderAPIKeys{}, xerrors.Errorf("get AI provider: %w", err)
8794 }
8795 return p.resolveUserProviderAPIKeysForProvider(ctx, ownerID, provider)
8796 }
8797
8798 providers, err := p.configCache.EnabledProviders(ctx)
8799 if err != nil {
8800 return chatprovider.ProviderAPIKeys{}, xerrors.Errorf(
8801 "get enabled AI providers: %w",
8802 err,
8803 )
8804 }
8805 configuredProviders, err := p.aiProviderConfigs(ctx, providers)
8806 if err != nil {
8807 return chatprovider.ProviderAPIKeys{}, err
8808 }
8809 if err := ensureUniqueConfiguredProviderTypes(configuredProviders); err != nil {
8810 return chatprovider.ProviderAPIKeys{}, err
8811 }
8812
8813 userKeys := []chatprovider.UserProviderKey{}
8814 if p.allowBYOK {
8815 userKeyRows, err := p.db.GetUserAIProviderKeysByUserID(ctx, ownerID)
8816 if err != nil {
8817 return chatprovider.ProviderAPIKeys{}, xerrors.Errorf(
8818 "get user AI provider keys: %w",
8819 err,
8820 )
8821 }
8822 userKeys = make([]chatprovider.UserProviderKey, 0, len(userKeyRows))
8823 for _, userKey := range userKeyRows {
8824 userKeys = append(userKeys, chatprovider.UserProviderKey{
8825 ChatProviderID: userKey.AIProviderID,
8826 APIKey: userKey.APIKey,
8827 })
8828 }
8829 }
8830
8831 keys, _ := chatprovider.ResolveUserProviderKeys(
8832 p.providerAPIKeys,
8833 configuredProviders,
8834 userKeys,
8835 )
8836 enabledProviders := make(map[string]struct{}, len(configuredProviders))
8837 for _, provider := range configuredProviders {
8838 normalizedProvider := chatprovider.NormalizeProvider(provider.Provider)
8839 if normalizedProvider == "" {
8840 continue
8841 }
8842 enabledProviders[normalizedProvider] = struct{}{}

Calls 10

aiProviderConfigsMethod · 0.95
ResolveUserProviderKeysFunction · 0.92
NormalizeProviderFunction · 0.92
EnabledProvidersMethod · 0.80
GetAIProviderByIDMethod · 0.65
ErrorfMethod · 0.45