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}
Compact summary
{!isTranscriptMode && (
{' '}
)}
{isTranscriptMode && (
{textContent}
)}
)
}