From a455efa97112ecd0119a3328eb9d2a095d69c267 Mon Sep 17 00:00:00 2001 From: Louis Knight-Webb Date: Sat, 21 Jun 2025 20:04:15 +0100 Subject: [PATCH] Fix executor --- .../components/tasks/TaskDetailsDialog.tsx | 7 +- .../src/components/tasks/TaskDetailsPanel.tsx | 92 +++++++++++-------- frontend/src/pages/task-details.tsx | 7 +- 3 files changed, 58 insertions(+), 48 deletions(-) diff --git a/frontend/src/components/tasks/TaskDetailsDialog.tsx b/frontend/src/components/tasks/TaskDetailsDialog.tsx index cc744776..4d764138 100644 --- a/frontend/src/components/tasks/TaskDetailsDialog.tsx +++ b/frontend/src/components/tasks/TaskDetailsDialog.tsx @@ -60,8 +60,6 @@ const statusLabels: Record = { const getAttemptStatusDisplay = (status: TaskAttemptStatus): { label: string; className: string } => { switch (status) { - case "init": - return { label: "Init", className: "bg-status-init text-status-init-foreground" }; case "setuprunning": return { label: "Setup Running", className: "bg-status-running text-status-running-foreground" }; case "setupcomplete": @@ -74,8 +72,6 @@ const getAttemptStatusDisplay = (status: TaskAttemptStatus): { label: string; cl return { label: "Executor Complete", className: "bg-status-complete text-status-complete-foreground" }; case "executorfailed": return { label: "Executor Failed", className: "bg-status-failed text-status-failed-foreground" }; - case "paused": - return { label: "Paused", className: "bg-status-paused text-status-paused-foreground" }; default: return { label: "Unknown", className: "bg-status-init text-status-init-foreground" }; } @@ -112,8 +108,7 @@ export function TaskDetailsDialog({ const isAttemptRunning = selectedAttempt && attemptActivities.length > 0 && - (attemptActivities[0].status === "init" || - attemptActivities[0].status === "setuprunning" || + (attemptActivities[0].status === "setuprunning" || attemptActivities[0].status === "setupcomplete" || attemptActivities[0].status === "executorrunning"); diff --git a/frontend/src/components/tasks/TaskDetailsPanel.tsx b/frontend/src/components/tasks/TaskDetailsPanel.tsx index 38d8ebfe..7f29c229 100644 --- a/frontend/src/components/tasks/TaskDetailsPanel.tsx +++ b/frontend/src/components/tasks/TaskDetailsPanel.tsx @@ -9,6 +9,8 @@ import { ChevronDown, ChevronUp, Plus, + Settings, + Settings2, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Card, CardContent } from "@/components/ui/card"; @@ -22,13 +24,6 @@ import { DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; -import { - Tooltip, - TooltipContent, - TooltipProvider, - TooltipTrigger, -} from "@/components/ui/tooltip"; - import { makeRequest } from "@/lib/api"; import { getTaskPanelClasses, @@ -62,11 +57,6 @@ const getAttemptStatusDisplay = ( status: TaskAttemptStatus ): { label: string; className: string } => { switch (status) { - case "init": - return { - label: "Init", - className: "bg-status-init text-status-init-foreground", - }; case "setuprunning": return { label: "Setup Running", @@ -97,11 +87,6 @@ const getAttemptStatusDisplay = ( label: "Executor Failed", className: "bg-status-failed text-status-failed-foreground", }; - case "paused": - return { - label: "Paused", - className: "bg-status-paused text-status-paused-foreground", - }; default: return { label: "Unknown", @@ -126,13 +111,20 @@ export function TaskDetailsPanel({ const [loading, setLoading] = useState(false); const [followUpMessage, setFollowUpMessage] = useState(""); const [isDescriptionExpanded, setIsDescriptionExpanded] = useState(false); + const [selectedExecutor, setSelectedExecutor] = useState("claude"); + + // Available executors + const availableExecutors = [ + { id: "echo", name: "Echo" }, + { id: "claude", name: "Claude" }, + { id: "amp", name: "Amp" }, + ]; // Check if the selected attempt is active (not in a final state) const isAttemptRunning = selectedAttempt && attemptActivities.length > 0 && - (attemptActivities[0].status === "init" || - attemptActivities[0].status === "setuprunning" || + (attemptActivities[0].status === "setuprunning" || attemptActivities[0].status === "setupcomplete" || attemptActivities[0].status === "executorrunning"); @@ -243,7 +235,7 @@ export function TaskDetailsPanel({ } }; - const createNewAttempt = async () => { + const createNewAttempt = async (executor?: string) => { if (!task) return; try { @@ -254,6 +246,9 @@ export function TaskDetailsPanel({ headers: { "Content-Type": "application/json", }, + body: JSON.stringify({ + executor: executor || selectedExecutor, + }), } ); @@ -377,8 +372,7 @@ export function TaskDetailsPanel({ @@ -410,23 +404,49 @@ export function TaskDetailsPanel({ )} - - - +
+ + + - - -

Create new attempt

-
- - +
+ + {availableExecutors.map((executor) => ( + setSelectedExecutor(executor.id)} + className={ + selectedExecutor === executor.id + ? "bg-accent" + : "" + } + > + {executor.name} + {selectedExecutor === executor.id && + " (Default)"} + + ))} + +
+
@@ -479,7 +499,7 @@ export function TaskDetailsPanel({ ) : (
- {attemptActivities.slice().reverse().map((activity) => ( + {attemptActivities.slice().map((activity) => (
diff --git a/frontend/src/pages/task-details.tsx b/frontend/src/pages/task-details.tsx index cd2b91a0..d077ced2 100644 --- a/frontend/src/pages/task-details.tsx +++ b/frontend/src/pages/task-details.tsx @@ -49,8 +49,6 @@ const statusLabels: Record = { const getAttemptStatusDisplay = (status: TaskAttemptStatus): { label: string; className: string } => { switch (status) { - case "init": - return { label: "Init", className: "bg-status-init text-status-init-foreground" }; case "setuprunning": return { label: "Setup Running", className: "bg-status-running text-status-running-foreground" }; case "setupcomplete": @@ -63,8 +61,6 @@ const getAttemptStatusDisplay = (status: TaskAttemptStatus): { label: string; cl return { label: "Executor Complete", className: "bg-status-complete text-status-complete-foreground" }; case "executorfailed": return { label: "Executor Failed", className: "bg-status-failed text-status-failed-foreground" }; - case "paused": - return { label: "Paused", className: "bg-status-paused text-status-paused-foreground" }; default: return { label: "Unknown", className: "bg-status-init text-status-init-foreground" }; } @@ -143,8 +139,7 @@ export function TaskDetailsPage() { const isAttemptRunning = selectedAttempt && attemptActivities.length > 0 && - (attemptActivities[0].status === "init" || - attemptActivities[0].status === "setuprunning" || + (attemptActivities[0].status === "setuprunning" || attemptActivities[0].status === "setupcomplete" || attemptActivities[0].status === "executorrunning");