import type {
ThinkingBlock,
ThinkingBlockParam,
} from '@anthropic-ai/sdk/resources/index.mjs'
import React from 'react'
import { Box, Text } from '../../ink.js'
import { CtrlOToExpand } from '../CtrlOToExpand.js'
import { Markdown } from '../Markdown.js'
type Props = {
// Accept either full ThinkingBlock/ThinkingBlockParam or a minimal shape with just type and thinking
param:
| ThinkingBlock
| ThinkingBlockParam
| { type: 'thinking'; thinking: string }
addMargin: boolean
isTranscriptMode: boolean
verbose: boolean
/** When true, hide this thinking block entirely (used for past thinking in transcript mode) */
hideInTranscript?: boolean
}
export function AssistantThinkingMessage({
param: { thinking },
addMargin = false,
isTranscriptMode,
verbose,
hideInTranscript = false,
}: Props): React.ReactNode {
if (!thinking) {
return null
}
if (hideInTranscript) {
return null
}
const shouldShowFullThinking = isTranscriptMode || verbose
const label = '∴ Thinking'
if (!shouldShowFullThinking) {
return (
{label}
)
}
return (
{label}…
{thinking}
)
}