import * as React from 'react'; import { BLACK_CIRCLE } from '../constants/figures.js'; import { Box, Text } from '@anthropic/ink'; import type { Screen } from '../screens/REPL.js'; import type { NormalizedUserMessage } from '../types/message.js'; import { getUserMessageText } from '../utils/messages.js'; import { ConfigurableShortcutHint } from './ConfigurableShortcutHint.js'; import { MessageResponse } from './MessageResponse.js'; type Props = { message: NormalizedUserMessage; screen: Screen; }; export function CompactSummary({ message, screen }: Props): React.ReactNode { const isTranscriptMode = screen === 'transcript'; const textContent = getUserMessageText(message) || ''; const metadata = message.summarizeMetadata as | { messagesSummarized?: number; direction?: string; userContext?: string; } | undefined; // "Summarize from here" with metadata if (metadata) { return ( {BLACK_CIRCLE} Summarized conversation {!isTranscriptMode && ( Summarized {metadata.messagesSummarized} messages{' '} {metadata.direction === 'up_to' ? 'up to this point' : 'from this point'} {metadata.userContext && ( Context: {'\u201c'} {metadata.userContext} {'\u201d'} )} )} {isTranscriptMode && ( {textContent} )} ); } // Default compact summary (auto-compact) return ( {BLACK_CIRCLE} Conversation summarized to free up context {!isTranscriptMode && ( {' '} )} {isTranscriptMode && ( {textContent} )} ); }