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

Method resolvePersonalModelOverride

coderd/x/chatd/subagent.go:368–424  ·  view source on GitHub ↗
(
	ctx context.Context,
	overrideContext codersdk.ChatModelOverrideContext,
	ownerID uuid.UUID,
	modelConfigID uuid.UUID,
)

Source from the content-addressed store, hash-verified

366}
367
368func (p *Server) resolvePersonalModelOverride(
369 ctx context.Context,
370 overrideContext codersdk.ChatModelOverrideContext,
371 ownerID uuid.UUID,
372 modelConfigID uuid.UUID,
373) (database.ChatModelConfig, bool, error) {
374 modelConfig, providerName, err := p.resolveModelConfigAndNormalizedProvider(
375 ctx,
376 modelConfigID,
377 )
378 if err != nil {
379 switch {
380 case xerrors.Is(err, sql.ErrNoRows):
381 p.logger.Debug(ctx,
382 "personal model override is unavailable, using deployment default",
383 slog.F("override_context", overrideContext),
384 slog.F("owner_id", ownerID),
385 slog.F("model_config_id", modelConfigID),
386 )
387 case errors.Is(err, errInvalidModelOverrideMetadata):
388 p.logger.Debug(ctx,
389 "personal model override metadata is invalid, using deployment default",
390 slog.F("override_context", overrideContext),
391 slog.F("owner_id", ownerID),
392 slog.F("model_config_id", modelConfigID),
393 slog.Error(err),
394 )
395 default:
396 p.logger.Warn(ctx,
397 "failed to resolve personal model override, using deployment default",
398 slog.F("override_context", overrideContext),
399 slog.F("owner_id", ownerID),
400 slog.F("model_config_id", modelConfigID),
401 slog.Error(err),
402 )
403 }
404 return database.ChatModelConfig{}, false, nil
405 }
406 providerKeys, err := p.resolveUserProviderAPIKeys(ctx, ownerID, modelConfigAIProviderID(modelConfig))
407 if err != nil {
408 return database.ChatModelConfig{}, false, xerrors.Errorf(
409 "resolve provider API keys: %w",
410 err,
411 )
412 }
413 if !userCanUseProviderKeys(providerKeys, providerName) {
414 p.logger.Debug(ctx,
415 "personal model override credentials are unavailable, using deployment default",
416 slog.F("override_context", overrideContext),
417 slog.F("owner_id", ownerID),
418 slog.F("model_config_id", modelConfigID),
419 slog.F("provider", providerName),
420 )
421 return database.ChatModelConfig{}, false, nil
422 }
423 return modelConfig, true, nil
424}
425

Calls 7

modelConfigAIProviderIDFunction · 0.85
userCanUseProviderKeysFunction · 0.85
IsMethod · 0.45
ErrorMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected