From d95dd524be1cd1cf4fc79e18c1ac5eb24f27fb37 Mon Sep 17 00:00:00 2001 From: Azreen Jamal Date: Fri, 6 Mar 2026 17:02:55 +0800 Subject: [PATCH] fix: clear completed tasks from Recently Assigned (set assignee_status=later) --- pi-worker/src/scheduler/task-loop.ts | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pi-worker/src/scheduler/task-loop.ts b/pi-worker/src/scheduler/task-loop.ts index 32a8f35..14b462c 100644 --- a/pi-worker/src/scheduler/task-loop.ts +++ b/pi-worker/src/scheduler/task-loop.ts @@ -324,13 +324,28 @@ EVIDENCE: one line why`; if (this.userTaskListGid) { try { const myTasks = await this.asana.getUserTasks(this.userTaskListGid); + + // First: clear completed tasks from "Recently Assigned" by moving to "later" + const completedInbox = myTasks.filter((t) => t.completed); + if (completedInbox.length > 0) { + logger.info("task-loop", `Clearing ${completedInbox.length} completed tasks from Recently Assigned`); + for (const task of completedInbox) { + try { + await this.asana.updateTask(task.gid, { assignee_status: "later" }); + logger.info("task-loop", `Cleared from Recently Assigned: ${task.name}`); + } catch (e: any) { + logger.debug("task-loop", `Could not clear task ${task.name}: ${e.message}`); + } + } + } + + // Then: check incomplete tasks to see if they're already done const incompleteMyTasks = myTasks.filter((t) => !t.completed); if (incompleteMyTasks.length > 0) { - logger.info("task-loop", `Sweeping ${incompleteMyTasks.length} tasks from My Tasks (Recently Assigned)`); + logger.info("task-loop", `Sweeping ${incompleteMyTasks.length} incomplete tasks from My Tasks`); for (const task of incompleteMyTasks) { - // Skip if already checked in project sweep if (seen.has(task.gid)) continue; const check = await this.verifyTaskAlreadyDone(task); @@ -343,7 +358,7 @@ EVIDENCE: one line why`; `✅ Pi Worker sweep: This task is **already completed**.\n\nEvidence:\n${check.evidence}` ); - await this.asana.updateTask(task.gid, { completed: true }); + await this.asana.updateTask(task.gid, { completed: true, assignee_status: "later" }); logger.info("task-loop", `My Tasks sweep: Marked done: ${task.name}`); } else { logger.debug("task-loop", `My Tasks sweep: "${task.name}" not yet done`);