package taskboard

import (
	"strings"

	"github.com/tidbcloud/AgentTeam/internal/store/message"
)

func taskSourceContributionSource(sourceThread *TaskSourceThread, createdBy *TaskPrincipalProfile) message.ContributionSource {
	if sourceThread == nil {
		return message.ContributionSource{}
	}
	refID := strings.TrimSpace(sourceThread.ParentMessageID)
	if refID == "" {
		return message.ContributionSource{}
	}
	kind := taskSourceContributionSourceKind(createdBy)
	if kind == "" {
		return message.ContributionSource{}
	}
	return message.ContributionSource{
		Kind:    kind,
		RefType: message.ContributionSourceRefTypeMessage,
		RefID:   refID,
	}.Normalize()
}

func taskSourceContributionSourceKind(createdBy *TaskPrincipalProfile) string {
	if createdBy == nil {
		return message.ContributionSourceKindHumanCompose
	}
	switch createdBy.Normalize().ActorType {
	case message.AuthorActorTypeAgent:
		return message.ContributionSourceKindAgentRuntime
	case message.AuthorActorTypeService:
		return ""
	default:
		return message.ContributionSourceKindHumanCompose
	}
}
