package agent

import (
	"strings"

	"github.com/tidbcloud/AgentTeam/desktop/internal/consts"
)

func (d *CodexAppServerDriver) handleCodexAppServerStderrLine(line string) {
	message := codexAppServerStderrRuntimeError(line)
	if message == "" {
		return
	}
	d.enqueueTranslatedEvent(translatedEvent{
		Kind:    consts.ParsedEventKindError,
		Message: message,
	})
}

func (d *CodexAppServerDriver) handleCodexAppServerStderrLineForGeneration(generation uint64, line string) {
	d.withLaunchGeneration(generation, func() {
		d.handleCodexAppServerStderrLine(line)
	})
}

func codexAppServerStderrRuntimeError(line string) string {
	message, ok := codexAppServerStderrLogMessage(line)
	if !ok {
		return ""
	}
	if strings.Contains(message, "Invalid configuration") &&
		strings.Contains(message, "Model provider") &&
		strings.Contains(message, "not found") {
		return "Codex configuration error: " + message
	}
	return ""
}

func codexAppServerStderrLogMessage(line string) (string, bool) {
	const marker = "ERROR codex_app_server:"
	_, after, ok := strings.Cut(strings.TrimSpace(line), marker)
	if !ok {
		return "", false
	}
	message := strings.TrimSpace(after)
	return message, message != ""
}
