summaryrefslogtreecommitdiff
path: root/internal/handlers
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-07-15 01:38:06 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-07-16 02:48:28 +0000
commit1d2a76f5f476d338735f4257f8b0e26238dc3170 (patch)
tree7cbdcbd529fd8bde9e45e6e3f4052fccaa81e496 /internal/handlers
parentb1b21d6573cf334126c0c84b60e256ca11a6293b (diff)
fix(agent): restore doot-native task support in Agent API, remove stale test
Two independent pre-existing failures, both from incomplete refactors: - agent.go's four task write/create switches (complete/uncomplete, update due date, update details, create) never got a "doot" case added when the Todoist integration was removed (945c345) in favor of native tasks -- the test file was updated to use source=doot, but the handlers themselves still only recognized "trello"/"gtasks", so every native-task Agent API call 400'd with "Unknown source". getAtomDetails already had a "doot" case, confirming this was an incomplete migration, not an intentional gap. - TestMealToAtom in atom_test.go tested MealToAtom, a function removed from atom.go months earlier (b2d8fc4) when meals were dropped from the unified Atom/timeline system; the Meal struct itself is still used elsewhere (shopping/meals feature) but no longer produces atoms, and the test was never cleaned up to match. go test ./internal/... ./cmd/... is now fully green with no failures. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VTUSAEKfsPc6WGDq45yPHD
Diffstat (limited to 'internal/handlers')
-rw-r--r--internal/handlers/agent.go38
1 files changed, 38 insertions, 0 deletions
diff --git a/internal/handlers/agent.go b/internal/handlers/agent.go
index 073084f..cf1eaa1 100644
--- a/internal/handlers/agent.go
+++ b/internal/handlers/agent.go
@@ -414,6 +414,12 @@ func (h *Handler) handleAgentTaskToggle(w http.ResponseWriter, r *http.Request,
var err error
ctx := r.Context()
switch source {
+ case "doot":
+ if complete {
+ err = h.store.CompleteNativeTask(id)
+ } else {
+ err = h.store.UncompleteNativeTask(id)
+ }
case "trello":
err = h.trelloClient.UpdateCard(ctx, id, map[string]interface{}{"closed": complete})
case "gtasks":
@@ -473,6 +479,12 @@ func (h *Handler) HandleAgentTaskUpdateDue(w http.ResponseWriter, r *http.Reques
var err error
ctx := r.Context()
switch source {
+ case "doot":
+ if req.Due == nil {
+ http.Error(w, "due is required", http.StatusBadRequest)
+ return
+ }
+ err = h.store.RescheduleNativeTask(id, *req.Due)
case "trello":
err = h.trelloClient.UpdateCard(ctx, id, map[string]interface{}{"due": req.Due})
default:
@@ -508,6 +520,20 @@ func (h *Handler) HandleAgentTaskUpdate(w http.ResponseWriter, r *http.Request)
var err error
ctx := r.Context()
switch source {
+ case "doot":
+ var existing *models.Task
+ existing, err = h.store.GetNativeTaskByID(id)
+ if err == nil {
+ content := existing.Content
+ if title, ok := updates["title"].(string); ok {
+ content = title
+ }
+ description := existing.Description
+ if desc, ok := updates["description"].(string); ok {
+ description = desc
+ }
+ err = h.store.UpdateNativeTask(id, content, description)
+ }
case "trello":
if title, ok := updates["title"].(string); ok {
updates["name"] = title
@@ -560,6 +586,18 @@ func (h *Handler) HandleAgentTaskCreate(w http.ResponseWriter, r *http.Request)
var err error
ctx := r.Context()
switch req.Source {
+ case "doot":
+ priority := req.Priority
+ if priority == 0 {
+ priority = 1
+ }
+ task := models.Task{
+ ID: newID(),
+ Content: req.Title,
+ DueDate: req.DueDate,
+ Priority: priority,
+ }
+ err = h.store.CreateNativeTask(task)
case "trello":
if req.ListID == "" {
http.Error(w, "list_id is required for Trello", http.StatusBadRequest)