Download packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts from SaylorTwift/pi: direct link, hf CLI and curl.
- Browser
- Download file 1.82 kB
-
https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts
- Command line
-
hf download hf://SaylorTwift/pi/packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts
-
curl -L -o compaction-summary-message.ts https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts
1.82 kB
| import { Box, Markdown, type MarkdownTheme, Spacer, Text } from "@earendil-works/pi-tui"; | |
| import type { CompactionSummaryMessage } from "../../../core/messages.ts"; | |
| import { getMarkdownTheme, theme } from "../theme/theme.ts"; | |
| import { keyText } from "./keybinding-hints.ts"; | |
| /** | |
| * Component that renders a compaction message with collapsed/expanded state. | |
| * Uses same background color as custom messages for visual consistency. | |
| */ | |
| export class CompactionSummaryMessageComponent extends Box { | |
| private expanded = false; | |
| private message: CompactionSummaryMessage; | |
| private markdownTheme: MarkdownTheme; | |
| constructor(message: CompactionSummaryMessage, markdownTheme: MarkdownTheme = getMarkdownTheme()) { | |
| super(1, 1, (t) => theme.bg("customMessageBg", t)); | |
| this.message = message; | |
| this.markdownTheme = markdownTheme; | |
| this.updateDisplay(); | |
| } | |
| setExpanded(expanded: boolean): void { | |
| this.expanded = expanded; | |
| this.updateDisplay(); | |
| } | |
| override invalidate(): void { | |
| super.invalidate(); | |
| this.updateDisplay(); | |
| } | |
| private updateDisplay(): void { | |
| this.clear(); | |
| const tokenStr = this.message.tokensBefore.toLocaleString(); | |
| const label = theme.fg("customMessageLabel", `\x1b[1m[compaction]\x1b[22m`); | |
| this.addChild(new Text(label, 0, 0)); | |
| this.addChild(new Spacer(1)); | |
| if (this.expanded) { | |
| const header = `**Compacted from ${tokenStr} tokens**\n\n`; | |
| this.addChild( | |
| new Markdown(header + this.message.summary, 0, 0, this.markdownTheme, { | |
| color: (text: string) => theme.fg("customMessageText", text), | |
| }), | |
| ); | |
| } else { | |
| this.addChild( | |
| new Text( | |
| theme.fg("customMessageText", `Compacted from ${tokenStr} tokens (`) + | |
| theme.fg("dim", keyText("app.tools.expand")) + | |
| theme.fg("customMessageText", " to expand)"), | |
| 0, | |
| 0, | |
| ), | |
| ); | |
| } | |
| } | |
| } | |