118 lines
3.7 KiB
TypeScript
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;
|
|
}
|