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}
)}
);
}