import React, { useState } from "react"; import { LLMContent } from "../types"; interface GenericToolProps { toolName: string; // For tool_use (pending state) toolInput?: unknown; isRunning?: boolean; // For tool_result (completed state) toolResult?: LLMContent[]; hasError?: boolean; executionTime?: string; } function GenericTool({ toolName, toolInput, isRunning, toolResult, hasError, executionTime, }: GenericToolProps) { const [isExpanded, setIsExpanded] = useState(false); // Format data for display const formatData = (data: unknown): string => { if (data === undefined || data === null) return ""; if (typeof data === "string") return data; try { return JSON.stringify(data, null, 2); } catch { return String(data); } }; // Extract output from toolResult const output = toolResult && toolResult.length > 0 ? toolResult.map((result) => result.Text || formatData(result)).join("\n") : ""; const isComplete = !isRunning && toolResult !== undefined; return (
{formatData(toolInput)}
{output || "(no output)"}