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

Method resolveConfiguredModelOverride

coderd/x/chatd/subagent.go:193–298  ·  view source on GitHub ↗

resolveConfiguredModelOverride returns ok when a usable override is resolved. In hard failure mode, ok is also true for configured but unusable overrides so callers can distinguish them from unset or malformed values.

(
	ctx context.Context,
	overrideContext string,
	raw string,
	ownerID uuid.UUID,
	resolveModelConfig modelOverrideConfigResolver,
	resolveProviderKeys modelOverrideProviderKeysResolver,
	failureMode modelOverrideFailureMode,
)

Source from the content-addressed store, hash-verified

191// resolved. In hard failure mode, ok is also true for configured but unusable
192// overrides so callers can distinguish them from unset or malformed values.
193func (p *Server) resolveConfiguredModelOverride(
194 ctx context.Context,
195 overrideContext string,
196 raw string,
197 ownerID uuid.UUID,
198 resolveModelConfig modelOverrideConfigResolver,
199 resolveProviderKeys modelOverrideProviderKeysResolver,
200 failureMode modelOverrideFailureMode,
201) (database.ChatModelConfig, bool, error) {
202 trimmed := strings.TrimSpace(raw)
203 if trimmed == "" {
204 return database.ChatModelConfig{}, false, nil
205 }
206 configuredModelConfigID, err := uuid.Parse(trimmed)
207 if err != nil {
208 p.logger.Info(ctx,
209 "invalid model override, ignoring",
210 slog.F("override_context", overrideContext),
211 slog.F("raw_model_config_id", trimmed),
212 slog.Error(err),
213 )
214 return database.ChatModelConfig{}, false, nil
215 }
216
217 modelConfig, providerName, err := resolveModelConfig(
218 ctx,
219 configuredModelConfigID,
220 )
221 if err != nil {
222 if failureMode == modelOverrideFailureModeHard {
223 label := modelOverrideErrorLabel(overrideContext)
224 switch {
225 case errors.Is(err, sql.ErrNoRows):
226 return database.ChatModelConfig{}, true, xerrors.Errorf(
227 "%s model override is unavailable: %s",
228 label,
229 configuredModelConfigID,
230 )
231 case errors.Is(err, errInvalidModelOverrideMetadata):
232 return database.ChatModelConfig{}, true, xerrors.Errorf(
233 "%s model override metadata is invalid for %s: %w",
234 label,
235 configuredModelConfigID,
236 err,
237 )
238 default:
239 return database.ChatModelConfig{}, true, xerrors.Errorf(
240 "resolve %s model override %s: %w",
241 label,
242 configuredModelConfigID,
243 err,
244 )
245 }
246 }
247
248 switch {
249 case errors.Is(err, sql.ErrNoRows):
250 p.logger.Info(ctx,

Calls 8

modelOverrideErrorLabelFunction · 0.85
modelConfigAIProviderIDFunction · 0.85
userCanUseProviderKeysFunction · 0.85
ParseMethod · 0.65
InfoMethod · 0.45
ErrorMethod · 0.45
IsMethod · 0.45
ErrorfMethod · 0.45