package loop

import (
	"fmt"
	"time"
)

type Agent interface {
	Run(todo *ToDo) error
}

type UserAgent struct {
	pr PromptReader
}

func (a *UserAgent) Run(todo *ToDo) error {
	for {
		items := findActionableItems(todo, "user")
		if len(items) == 0 {
			time.Sleep(30 * time.Second)
			continue
		}
		for _, i := range items {
			fmt.Printf("YOU %s %s: ", i.ID, i.Title)
			comment, err := a.pr.Read()
			if err != nil {
				return err
			}
			i.Discussion = append(i.Discussion, Comment{
				Author:  "user",
				Comment: comment,
			})
			i.AssignedTo = "assistant"
		}
	}
}

func findActionableItems(todo *ToDo, assignedTo string) []*ToDo {
	for _, i := range todo.Items {
		ret := findActionableItems(i, assignedTo)
		if len(ret) > 0 {
			return ret
		}
	}
	if todo.AssignedTo == assignedTo && !todo.Done {
		return []*ToDo{todo}
	}
	return nil
}
