"use client"; import { ChevronRight } from "lucide-react"; import { FileIcon } from "./FileIcon"; import { SyntaxHighlight, getLanguageFromPath } from "./SyntaxHighlight"; import { ToolUseBlock } from "./ToolUseBlock"; interface ToolFileWriteProps { input: { file_path: string; content: string; }; result?: string; isError?: boolean; isRunning?: boolean; startedAt?: number; completedAt?: number; } function FileBreadcrumb({ filePath }: { filePath: string }) { const parts = filePath.replace(/^\//, "").split("/"); return (
{parts.map((part, i) => ( {i > 0 && } {part} ))}
); } function isNewFile(result?: string): boolean { if (!result) return false; return /creat|new/i.test(result); } export function ToolFileWrite({ input, result, isError = false, isRunning = false, startedAt, completedAt, }: ToolFileWriteProps) { const lang = getLanguageFromPath(input.file_path); const lineCount = input.content.split("\n").length; return ( {/* File path header */}
{lineCount} lines {isNewFile(result) ? "New file" : "Overwrite"}
{/* Content */} {isRunning ? (
Writing…
) : isError ? (
{result}
) : (
)}
); }