claude-code/src/components/CompactSummary.tsx
2026-03-31 23:03:47 +08:00

118 lines
3.7 KiB
TypeScript

import { c as _c } from "react/compiler-runtime";
import * as React from 'react';
import { BLACK_CIRCLE } from '../constants/figures.js';
import { Box, Text } from '../ink.js';
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(t0) {
const $ = _c(24);
const {
message,
screen
} = t0;
const isTranscriptMode = screen === "transcript";
let t1;
if ($[0] !== message) {
t1 = getUserMessageText(message) || "";
$[0] = message;
$[1] = t1;
} else {
t1 = $[1];
}
const textContent = t1;
const metadata = message.summarizeMetadata;
if (metadata) {
let t2;
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
t2 = <Box minWidth={2}><Text color="text">{BLACK_CIRCLE}</Text></Box>;
$[2] = t2;
} else {
t2 = $[2];
}
let t3;
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
t3 = <Text bold={true}>Summarized conversation</Text>;
$[3] = t3;
} else {
t3 = $[3];
}
let t4;
if ($[4] !== isTranscriptMode || $[5] !== metadata) {
t4 = !isTranscriptMode && <MessageResponse><Box flexDirection="column"><Text dimColor={true}>Summarized {metadata.messagesSummarized} messages{" "}{metadata.direction === "up_to" ? "up to this point" : "from this point"}</Text>{metadata.userContext && <Text dimColor={true}>Context: {"\u201C"}{metadata.userContext}{"\u201D"}</Text>}<Text dimColor={true}><ConfigurableShortcutHint action="app:toggleTranscript" context="Global" fallback="ctrl+o" description="expand history" parens={true} /></Text></Box></MessageResponse>;
$[4] = isTranscriptMode;
$[5] = metadata;
$[6] = t4;
} else {
t4 = $[6];
}
let t5;
if ($[7] !== isTranscriptMode || $[8] !== textContent) {
t5 = isTranscriptMode && <MessageResponse><Text>{textContent}</Text></MessageResponse>;
$[7] = isTranscriptMode;
$[8] = textContent;
$[9] = t5;
} else {
t5 = $[9];
}
let t6;
if ($[10] !== t4 || $[11] !== t5) {
t6 = <Box flexDirection="column" marginTop={1}><Box flexDirection="row">{t2}<Box flexDirection="column">{t3}{t4}{t5}</Box></Box></Box>;
$[10] = t4;
$[11] = t5;
$[12] = t6;
} else {
t6 = $[12];
}
return t6;
}
let t2;
if ($[13] === Symbol.for("react.memo_cache_sentinel")) {
t2 = <Box minWidth={2}><Text color="text">{BLACK_CIRCLE}</Text></Box>;
$[13] = t2;
} else {
t2 = $[13];
}
let t3;
if ($[14] !== isTranscriptMode) {
t3 = !isTranscriptMode && <Text dimColor={true}>{" "}<ConfigurableShortcutHint action="app:toggleTranscript" context="Global" fallback="ctrl+o" description="expand" parens={true} /></Text>;
$[14] = isTranscriptMode;
$[15] = t3;
} else {
t3 = $[15];
}
let t4;
if ($[16] !== t3) {
t4 = <Box flexDirection="row">{t2}<Box flexDirection="column"><Text bold={true}>Compact summary{t3}</Text></Box></Box>;
$[16] = t3;
$[17] = t4;
} else {
t4 = $[17];
}
let t5;
if ($[18] !== isTranscriptMode || $[19] !== textContent) {
t5 = isTranscriptMode && <MessageResponse><Text>{textContent}</Text></MessageResponse>;
$[18] = isTranscriptMode;
$[19] = textContent;
$[20] = t5;
} else {
t5 = $[20];
}
let t6;
if ($[21] !== t4 || $[22] !== t5) {
t6 = <Box flexDirection="column" marginTop={1}>{t4}{t5}</Box>;
$[21] = t4;
$[22] = t5;
$[23] = t6;
} else {
t6 = $[23];
}
return t6;
}