From 6a7657aeda4ebe458e4374c41b57ae0f4c4114eb Mon Sep 17 00:00:00 2001 From: Fusion Date: Fri, 22 May 2026 23:04:35 +0200 Subject: [PATCH 1/2] chore: remove unused tool-types and tool-configs pages These pages are superseded by the Tool Workshop page. No functional changes. --- apps/web/src/pages/tool-configs.tsx | 354 ------------------------- apps/web/src/pages/tool-types.tsx | 383 ---------------------------- 2 files changed, 737 deletions(-) delete mode 100644 apps/web/src/pages/tool-configs.tsx delete mode 100644 apps/web/src/pages/tool-types.tsx diff --git a/apps/web/src/pages/tool-configs.tsx b/apps/web/src/pages/tool-configs.tsx deleted file mode 100644 index e1c4cf4..0000000 --- a/apps/web/src/pages/tool-configs.tsx +++ /dev/null @@ -1,354 +0,0 @@ -import { useCallback, useEffect, useState } from "react"; -import { useNavigate } from "react-router-dom"; - -import { Icon } from "../components/icon"; -import { listToolTypes, type ToolType } from "../api/tool_types"; -import { - createToolConfig, - deleteToolConfig, - listToolConfigs, - updateToolConfig, - type ToolConfig, -} from "../api/tool_configs"; - -type ConfigStatus = "loading" | "ready" | "error"; - -export const ToolConfigsPage = () => { - const navigate = useNavigate(); - const [status, setStatus] = useState("loading"); - const [toolTypes, setToolTypes] = useState([]); - const [configs, setConfigs] = useState([]); - const [selectedToolType, setSelectedToolType] = useState(""); - const [showForm, setShowForm] = useState(false); - const [editingConfig, setEditingConfig] = useState(null); - const [formData, setFormData] = useState({ - key: "", - value: "", - config_type: "env", - file_path: "", - }); - const [saveStatus, setSaveStatus] = useState<"idle" | "saving" | "saved" | "error">("idle"); - - const loadData = useCallback(async () => { - try { - const [typesData, configsData] = await Promise.all([ - listToolTypes(), - listToolConfigs(), - ]); - setToolTypes(typesData); - setConfigs(configsData); - if (typesData.length > 0 && !selectedToolType) { - setSelectedToolType(typesData[0].id); - } - setStatus("ready"); - } catch { - setStatus("error"); - } - }, [selectedToolType]); - - useEffect(() => { - void loadData(); - }, [loadData]); - - const handleSubmit = async (e: React.FormEvent) => { - e.preventDefault(); - setSaveStatus("saving"); - try { - const data = { - tool_type_id: selectedToolType, - key: formData.key, - value: formData.value, - config_type: formData.config_type, - file_path: formData.config_type === "file" ? formData.file_path : undefined, - }; - - if (editingConfig) { - await updateToolConfig(editingConfig.id, data); - } else { - await createToolConfig(data); - } - - setSaveStatus("saved"); - setShowForm(false); - setEditingConfig(null); - setFormData({ key: "", value: "", config_type: "env", file_path: "" }); - await loadData(); - } catch { - setSaveStatus("error"); - } - }; - - const handleEdit = (config: ToolConfig) => { - setEditingConfig(config); - setFormData({ - key: config.key, - value: config.value, - config_type: config.config_type, - file_path: config.file_path || "", - }); - setSelectedToolType(config.tool_type_id); - setShowForm(true); - }; - - const handleDelete = async (id: string) => { - if (!window.confirm("Delete this config?")) return; - try { - await deleteToolConfig(id); - await loadData(); - } catch { - // Error handled by UI state - } - }; - - const filteredConfigs = configs.filter( - (c) => c.tool_type_id === selectedToolType - ); - - const selectedTool = toolTypes.find((t) => t.id === selectedToolType); - - if (status === "loading") { - return ( -
-
-

Tool Configurations

-
-

Loading...

-
- ); - } - - if (status === "error") { - return ( -
-
-

Tool Configurations

-
-
-

Failed to load configurations

- -
-
- ); - } - - return ( -
-
-
-

Settings

-

Tool Configurations

-
- -

- Manage environment variables and configuration files for your tools -

-
- - {/* Tool Type Selector */} -
- - - {selectedTool && ( -

- Category: {selectedTool.category} · Interface: {selectedTool.interface_type} -

- )} -
- - {/* Config List */} -
-
-

Configuration Variables

- -
- - {filteredConfigs.length === 0 ? ( -

No configurations for this tool yet.

- ) : ( -
- {filteredConfigs.map((config) => ( -
-
-
- {config.key} - - {config.config_type} - -
-

- {config.config_type === "file" && config.file_path - ? `File: ${config.file_path}` - : "Environment variable"} -

-
-
- - -
-
- ))} -
- )} -
- - {/* Add/Edit Form */} - {showForm && ( -
-

{editingConfig ? "Edit Config" : "Add Config"}

-
-
- - setFormData({ ...formData, key: e.target.value })} - placeholder="e.g., OPENAI_API_KEY" - className="form-input" - required - /> -
- -
- - -
- - {formData.config_type === "file" && ( -
- - - setFormData({ ...formData, file_path: e.target.value }) - } - placeholder="e.g., /app/config.json" - className="form-input" - required - /> -
- )} - -
- -