(ctx context.Context, chatID uuid.UUID, logger slog.Logger, nextTurn int, phase string)
| 316 | } |
| 317 | |
| 318 | func (r *Runner) sendNextTurn(ctx context.Context, chatID uuid.UUID, logger slog.Logger, nextTurn int, phase string) error { |
| 319 | messageStartedAt := time.Now() |
| 320 | modelConfigID := r.cfg.ModelConfigID |
| 321 | _, err := r.client.CreateChatMessage(ctx, chatID, codersdk.CreateChatMessageRequest{ |
| 322 | Content: []codersdk.ChatInputPart{{ |
| 323 | Type: codersdk.ChatInputPartTypeText, |
| 324 | Text: r.cfg.Prompt, |
| 325 | }}, |
| 326 | ModelConfigID: &modelConfigID, |
| 327 | }) |
| 328 | if err != nil { |
| 329 | return xerrors.Errorf("create chat message for turn %d: %w", nextTurn, err) |
| 330 | } |
| 331 | |
| 332 | r.cfg.Metrics.ChatMessageLatencySeconds.WithLabelValues(phase).Observe(time.Since(messageStartedAt).Seconds()) |
| 333 | logger.Info(ctx, "chat sent message", |
| 334 | slog.F("turn", nextTurn), |
| 335 | slog.F("turns", r.cfg.Turns), |
| 336 | ) |
| 337 | return nil |
| 338 | } |
| 339 | |
| 340 | func (r *Runner) handleMessagePartEvent(ctx context.Context, logger slog.Logger) { |
| 341 | if r.sawTurnFirstOutput { |
no test coverage detected