import React from 'react'; import { MessageResponse } from '../../components/MessageResponse.js'; import { TOOL_SUMMARY_MAX_LENGTH } from '../../constants/toolLimits.js'; import { Box, Text } from '../../ink.js'; import type { ToolProgressData } from '../../Tool.js'; import type { ProgressMessage } from '../../types/message.js'; import { formatFileSize, truncate } from '../../utils/format.js'; import type { Output } from './WebFetchTool.js'; export function renderToolUseMessage({ url, prompt }: Partial<{ url: string; prompt: string; }>, { verbose }: { theme?: string; verbose: boolean; }): React.ReactNode { if (!url) { return null; } if (verbose) { return `url: "${url}"${verbose && prompt ? `, prompt: "${prompt}"` : ''}`; } return url; } export function renderToolUseProgressMessage(): React.ReactNode { return Fetching… ; } export function renderToolResultMessage({ bytes, code, codeText, result }: Output, _progressMessagesForMessage: ProgressMessage[], { verbose }: { verbose: boolean; }): React.ReactNode { const formattedSize = formatFileSize(bytes); if (verbose) { return Received {formattedSize} ({code} {codeText}) {result} ; } return Received {formattedSize} ({code} {codeText}) ; } export function getToolUseSummary(input: Partial<{ url: string; prompt: string; }> | undefined): string | null { if (!input?.url) { return null; } return truncate(input.url, TOOL_SUMMARY_MAX_LENGTH); }