summaryrefslogtreecommitdiff
path: root/makima/frontend/src/routes/mesh.tsx
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-16 18:46:22 +0000
committersoryu <soryu@soryu.co>2026-01-17 05:38:07 +0000
commit6b94b5895ed27e3aef052a1843fb3f334397d1b4 (patch)
treea55ba3ba6b806efc60cf580e6202cf10666b5992 /makima/frontend/src/routes/mesh.tsx
parent4de5b1857c7ac637b8826ce785e1db97cf0e02e3 (diff)
downloadsoryu-6b94b5895ed27e3aef052a1843fb3f334397d1b4.tar.gz
soryu-6b94b5895ed27e3aef052a1843fb3f334397d1b4.zip
Update continue task system and daemon IDs
Diffstat (limited to 'makima/frontend/src/routes/mesh.tsx')
-rw-r--r--makima/frontend/src/routes/mesh.tsx25
1 files changed, 19 insertions, 6 deletions
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(