( ctx context.Context, ownerID uuid.UUID, overrideContext codersdk.ChatModelOverrideContext, )
| 298 | } |
| 299 | |
| 300 | func (p *Server) resolvePersonalSubagentModelConfigID( |
| 301 | ctx context.Context, |
| 302 | ownerID uuid.UUID, |
| 303 | overrideContext codersdk.ChatModelOverrideContext, |
| 304 | ) (uuid.UUID, bool, error) { |
| 305 | personalContext, err := personalModelOverrideContextForSubagent(overrideContext) |
| 306 | if err != nil { |
| 307 | return uuid.Nil, false, err |
| 308 | } |
| 309 | raw, err := p.db.GetUserChatPersonalModelOverride( |
| 310 | ctx, |
| 311 | database.GetUserChatPersonalModelOverrideParams{ |
| 312 | UserID: ownerID, |
| 313 | Key: ChatPersonalModelOverrideKey(personalContext), |
| 314 | }, |
| 315 | ) |
| 316 | if err != nil { |
| 317 | if !xerrors.Is(err, sql.ErrNoRows) { |
| 318 | return uuid.Nil, false, xerrors.Errorf( |
| 319 | "get %s personal model override: %w", |
| 320 | subagentModelOverrideLogLabel(overrideContext), |
| 321 | err, |
| 322 | ) |
| 323 | } |
| 324 | raw = "" |
| 325 | } |
| 326 | |
| 327 | parsed := ParseChatPersonalModelOverride( |
| 328 | raw, |
| 329 | codersdk.ChatPersonalModelOverrideModeDeploymentDefault, |
| 330 | ) |
| 331 | if parsed.Malformed { |
| 332 | p.logger.Debug(ctx, |
| 333 | "personal model override is malformed, using deployment default", |
| 334 | slog.F("override_context", overrideContext), |
| 335 | slog.F("owner_id", ownerID), |
| 336 | slog.F("raw_model_config_id", strings.TrimSpace(raw)), |
| 337 | ) |
| 338 | } |
| 339 | switch parsed.Mode { |
| 340 | case codersdk.ChatPersonalModelOverrideModeChatDefault: |
| 341 | return uuid.Nil, true, nil |
| 342 | case codersdk.ChatPersonalModelOverrideModeDeploymentDefault: |
| 343 | case codersdk.ChatPersonalModelOverrideModeModel: |
| 344 | modelConfig, ok, err := p.resolvePersonalModelOverride( |
| 345 | ctx, |
| 346 | overrideContext, |
| 347 | ownerID, |
| 348 | parsed.ModelConfigID, |
| 349 | ) |
| 350 | if err != nil { |
| 351 | return uuid.Nil, false, err |
| 352 | } |
| 353 | if ok { |
| 354 | return modelConfig.ID, true, nil |
| 355 | } |
| 356 | default: |
| 357 | p.logger.Warn(ctx, |
no test coverage detected