/** Modal for starting a tool on a workspace. */ import { useState } from "react"; import { Icon } from "../../icon"; import { listToolTypes, type ToolType } from "../../../api/tool-types"; import { useAsyncData } from "../../../hooks/use-async-data"; import type { Workspace } from "../../../types/workspace"; export interface StartToolModalProps { workspace: Workspace; onClose: () => void; onStart: (toolTypeId: string, configProfileId?: string) => Promise; } export function StartToolModal({ workspace, onClose, onStart, }: StartToolModalProps) { const [toolTypeId, setToolTypeId] = useState(""); const [configProfileId, setConfigProfileId] = useState(""); const [submitting, setSubmitting] = useState(false); const [error, setError] = useState(null); const { data: toolTypes, status, error: loadError, } = useAsyncData(listToolTypes, []); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!toolTypeId) { setError("Please select a tool type"); return; } setSubmitting(true); setError(null); try { await onStart(toolTypeId, configProfileId || undefined); onClose(); } catch (err) { setError(err instanceof Error ? err.message : "Failed to start tool"); } finally { setSubmitting(false); } }; return (
e.stopPropagation()}>

Start Tool on {workspace.name}

{status === "loading" && ( Loading tools... )} {loadError && {loadError}}
setConfigProfileId(e.target.value)} placeholder="Profile ID" disabled={submitting} />
{error &&

{error}

}
); }