Add todo mode and replace the plan with TODO.md

This commit is contained in:
Ian Gulliver
2026-10-15 07:23:17 -07:00
parent 60a1d221f4
commit 1f44bc6d91
25 changed files with 1259 additions and 637 deletions
+52
View File
@@ -20,6 +20,7 @@ import (
"g.fc.run/misc/byre/internal/git"
"g.fc.run/misc/byre/internal/push"
"g.fc.run/misc/byre/internal/store"
"g.fc.run/misc/byre/internal/todo"
)
type Server struct {
@@ -272,6 +273,57 @@ func (s *Server) CreateTask(w http.ResponseWriter, r *http.Request, projectID st
writeJSON(w, http.StatusCreated, t)
}
func (s *Server) GetTodo(w http.ResponseWriter, r *http.Request, projectID string) {
p, err := s.store.GetProject(r.Context(), projectID)
if err != nil {
writeStoreError(w, err)
return
}
src, found, err := git.ReadFile(p.RepoPath, p.DefaultBranch, todo.File)
if err != nil {
writeError(w, http.StatusInternalServerError, err)
return
}
writeJSON(w, http.StatusOK, api.Todo{Exists: found, Items: todo.Parse(src)})
}
func (s *Server) StartTodoItem(w http.ResponseWriter, r *http.Request, projectID string) {
req := api.TodoStart{}
if !readJSON(w, r, &req) {
return
}
if strings.TrimSpace(req.Title) == "" {
writeError(w, http.StatusBadRequest, errors.New("title is required"))
return
}
p, err := s.store.GetProject(r.Context(), projectID)
if err != nil {
writeStoreError(w, err)
return
}
u, err := s.store.GetUser(r.Context(), actor(r))
if err != nil {
writeStoreError(w, err)
return
}
model := ""
if req.Model != nil {
model = *req.Model
}
t, err := s.agents.StartTodo(r.Context(), p, u, req.Title, model)
if err != nil {
writeAgentError(w, err)
return
}
writeJSON(w, http.StatusCreated, t)
}
func (s *Server) GetTask(w http.ResponseWriter, r *http.Request, taskID string) {
t, err := s.store.GetTask(r.Context(), taskID)
if err != nil {