From 6b94b5895ed27e3aef052a1843fb3f334397d1b4 Mon Sep 17 00:00:00 2001 From: soryu Date: Fri, 16 Jan 2026 18:46:22 +0000 Subject: Update continue task system and daemon IDs --- makima/frontend/src/routes/mesh.tsx | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'makima/frontend') diff --git a/makima/frontend/src/routes/mesh.tsx b/makima/frontend/src/routes/mesh.tsx index 050381a..cc09bca 100644 --- a/makima/frontend/src/routes/mesh.tsx +++ b/makima/frontend/src/routes/mesh.tsx @@ -8,7 +8,7 @@ import { UnifiedMeshChatInput } from "../components/mesh/UnifiedMeshChatInput"; import { useTasks } from "../hooks/useTasks"; import { useTaskSubscription, type TaskUpdateEvent, type TaskOutputEvent } from "../hooks/useTaskSubscription"; import type { TaskWithSubtasks, MeshChatContext, ContractSummary, ContractWithRelations, DaemonDirectory } from "../lib/api"; -import { startTask as startTaskApi, stopTask as stopTaskApi, getTaskOutput, listContracts, getContract, getDaemonDirectories, continueTask as continueTaskApi } from "../lib/api"; +import { startTask as startTaskApi, stopTask as stopTaskApi, getTaskOutput, listContracts, getContract, getDaemonDirectories, continueTask as continueTaskApi, resumeSupervisor } from "../lib/api"; import { DirectoryInput } from "../components/mesh/DirectoryInput"; import { useAuth } from "../contexts/AuthContext"; import { useSupervisorQuestions } from "../contexts/SupervisorQuestionsContext"; @@ -387,16 +387,29 @@ export default function MeshPage() { const handleContinue = useCallback( async (taskId: string) => { try { - // Continue the task with conversation context from previous run - const result = await continueTaskApi(taskId); - console.log(`[Mesh] Task continued with ${result.contextEntries} context entries`); - setTaskDetail((prev) => prev ? { ...prev, ...result.task } : prev); + // Check if this is a supervisor task - use resumeSupervisor API instead + if (taskDetail?.isSupervisor && taskDetail?.contractId) { + const result = await resumeSupervisor(taskDetail.contractId, { + resumeMode: "continue", + }); + console.log(`[Mesh] Supervisor resumed, daemon: ${result.daemonId}`); + // Refresh task detail to get updated state + const updated = await fetchTask(taskId); + if (updated) { + setTaskDetail(updated); + } + } else { + // Continue regular task with conversation context from previous run + const result = await continueTaskApi(taskId); + console.log(`[Mesh] Task continued with ${result.contextEntries} context entries`); + setTaskDetail((prev) => prev ? { ...prev, ...result.task } : prev); + } } catch (e) { console.error("Failed to continue task:", e); alert(e instanceof Error ? e.message : "Failed to continue task"); } }, - [] + [taskDetail?.isSupervisor, taskDetail?.contractId, fetchTask] ); const handleSave = useCallback( -- cgit v1.2.3