import type { ToolResultBlockParam } from '@anthropic-ai/sdk/resources/index.mjs' import * as React from 'react' import type { Tools } from '../../../Tool.js' import type { NormalizedUserMessage, ProgressMessage, } from '../../../types/message.js' import { type buildMessageLookups, CANCEL_MESSAGE, INTERRUPT_MESSAGE_FOR_TOOL_USE, REJECT_MESSAGE, } from '../../../utils/messages.js' import { UserToolCanceledMessage } from './UserToolCanceledMessage.js' import { UserToolErrorMessage } from './UserToolErrorMessage.js' import { UserToolRejectMessage } from './UserToolRejectMessage.js' import { UserToolSuccessMessage } from './UserToolSuccessMessage.js' import { useGetToolFromMessages } from './utils.js' type Props = { param: ToolResultBlockParam message: NormalizedUserMessage lookups: ReturnType progressMessagesForMessage: ProgressMessage[] style?: 'condensed' tools: Tools verbose: boolean width: number | string isTranscriptMode?: boolean shouldCollapseDiffs?: boolean } export function UserToolResultMessage({ param, message, lookups, progressMessagesForMessage, style, tools, verbose, width, isTranscriptMode, shouldCollapseDiffs, }: Props): React.ReactNode { const toolUse = useGetToolFromMessages(param.tool_use_id, tools, lookups) if (!toolUse) { return null } if ( typeof param.content === 'string' && param.content.startsWith(CANCEL_MESSAGE) ) { return } if ( (typeof param.content === 'string' && param.content.startsWith(REJECT_MESSAGE)) || param.content === INTERRUPT_MESSAGE_FOR_TOOL_USE ) { return ( ) } if (param.is_error) { return ( ) } return ( ) }