import { AlertCircle, SquareTerminal } from 'lucide-react'; import React from 'react'; import { cn } from '../../../lib/utils'; import type { TerminalToolArtifact } from './terminalToolArtifact'; interface TerminalArtifactCardProps { artifact: TerminalToolArtifact; className?: string; } function formatLineRange(artifact: Extract): string { if (artifact.returnedLines === 0) { return `0 / ${artifact.totalLines} lines`; } return `lines ${artifact.startLine + 1}-${artifact.endLine + 1} / ${artifact.totalLines}`; } function formatSubtitle(artifact: Extract): string { const parts = [ formatLineRange(artifact), artifact.source, artifact.hasMoreBefore || artifact.hasMoreAfter ? 'more available' : null, ].filter(Boolean); return parts.join(' | '); } export const TerminalArtifactCard = React.forwardRef(({ artifact, className, }, ref) => { if (artifact.kind === 'error') { return (
Terminal read failed
{artifact.message}
); } const title = artifact.label || artifact.sessionId; return (
{title}
{formatSubtitle(artifact)}
); }); TerminalArtifactCard.displayName = 'TerminalArtifactCard';