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

Method resolvePersonalSubagentModelConfigID

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

Source from the content-addressed store, hash-verified

298}
299
300func (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,

Callers 1

Tested by

no test coverage detected