import figures from 'figures' import React from 'react' import { Box, Text } from '../../ink.js' import type { AdvisorBlock } from '../../utils/advisor.js' import { renderModelName } from '../../utils/model/model.js' import { jsonStringify } from '../../utils/slowOperations.js' import { CtrlOToExpand } from '../CtrlOToExpand.js' import { MessageResponse } from '../MessageResponse.js' import { ToolUseLoader } from '../ToolUseLoader.js' type Props = { block: AdvisorBlock addMargin: boolean resolvedToolUseIDs: Set erroredToolUseIDs: Set shouldAnimate: boolean verbose: boolean advisorModel?: string } export function AdvisorMessage({ block, addMargin, resolvedToolUseIDs, erroredToolUseIDs, shouldAnimate, verbose, advisorModel, }: Props): React.ReactNode { if (block.type === 'server_tool_use') { const input = block.input && Object.keys(block.input).length > 0 ? jsonStringify(block.input) : null return ( Advising {advisorModel ? ( using {renderModelName(advisorModel)} ) : null} {input ? ยท {input} : null} ) } let body: React.ReactNode switch (block.content.type) { case 'advisor_tool_result_error': body = ( Advisor unavailable ({block.content.error_code}) ) break case 'advisor_result': body = verbose ? ( {block.content.text} ) : ( {figures.tick} Advisor has reviewed the conversation and will apply the feedback ) break case 'advisor_redacted_result': body = ( {figures.tick} Advisor has reviewed the conversation and will apply the feedback ) break } return ( {body} ) }