summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/messages
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src/ui/components/messages')
-rw-r--r--packages/cli/src/ui/components/messages/GeminiMessage.tsx14
-rw-r--r--packages/cli/src/ui/components/messages/GeminiMessageContent.tsx10
-rw-r--r--packages/cli/src/ui/components/messages/ToolGroupMessage.tsx3
-rw-r--r--packages/cli/src/ui/components/messages/ToolMessage.tsx9
4 files changed, 28 insertions, 8 deletions
diff --git a/packages/cli/src/ui/components/messages/GeminiMessage.tsx b/packages/cli/src/ui/components/messages/GeminiMessage.tsx
index b2c816a9..df8d0a87 100644
--- a/packages/cli/src/ui/components/messages/GeminiMessage.tsx
+++ b/packages/cli/src/ui/components/messages/GeminiMessage.tsx
@@ -11,9 +11,15 @@ import { Colors } from '../../colors.js';
interface GeminiMessageProps {
text: string;
+ isPending: boolean;
+ availableTerminalHeight: number;
}
-export const GeminiMessage: React.FC<GeminiMessageProps> = ({ text }) => {
+export const GeminiMessage: React.FC<GeminiMessageProps> = ({
+ text,
+ isPending,
+ availableTerminalHeight,
+}) => {
const prefix = '✦ ';
const prefixWidth = prefix.length;
@@ -23,7 +29,11 @@ export const GeminiMessage: React.FC<GeminiMessageProps> = ({ text }) => {
<Text color={Colors.AccentPurple}>{prefix}</Text>
</Box>
<Box flexGrow={1} flexDirection="column">
- <MarkdownDisplay text={text} />
+ <MarkdownDisplay
+ text={text}
+ isPending={isPending}
+ availableTerminalHeight={availableTerminalHeight}
+ />
</Box>
</Box>
);
diff --git a/packages/cli/src/ui/components/messages/GeminiMessageContent.tsx b/packages/cli/src/ui/components/messages/GeminiMessageContent.tsx
index b9b85dc7..da6e468a 100644
--- a/packages/cli/src/ui/components/messages/GeminiMessageContent.tsx
+++ b/packages/cli/src/ui/components/messages/GeminiMessageContent.tsx
@@ -10,6 +10,8 @@ import { MarkdownDisplay } from '../../utils/MarkdownDisplay.js';
interface GeminiMessageContentProps {
text: string;
+ isPending: boolean;
+ availableTerminalHeight: number;
}
/*
@@ -20,13 +22,19 @@ interface GeminiMessageContentProps {
*/
export const GeminiMessageContent: React.FC<GeminiMessageContentProps> = ({
text,
+ isPending,
+ availableTerminalHeight,
}) => {
const originalPrefix = '✦ ';
const prefixWidth = originalPrefix.length;
return (
<Box flexDirection="column" paddingLeft={prefixWidth}>
- <MarkdownDisplay text={text} />
+ <MarkdownDisplay
+ text={text}
+ isPending={isPending}
+ availableTerminalHeight={availableTerminalHeight}
+ />
</Box>
);
};
diff --git a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx
index 33460405..d0ad1c5f 100644
--- a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx
+++ b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx
@@ -29,7 +29,6 @@ export const ToolGroupMessage: React.FC<ToolGroupMessageProps> = ({
const borderColor = hasPending ? Colors.AccentYellow : Colors.SubtleComment;
const staticHeight = /* border */ 2 + /* marginBottom */ 1;
- availableTerminalHeight -= staticHeight;
return (
<Box
@@ -58,7 +57,7 @@ export const ToolGroupMessage: React.FC<ToolGroupMessageProps> = ({
resultDisplay={tool.resultDisplay}
status={tool.status}
confirmationDetails={tool.confirmationDetails}
- availableTerminalHeight={availableTerminalHeight}
+ availableTerminalHeight={availableTerminalHeight - staticHeight}
/>
{tool.status === ToolCallStatus.Confirming &&
tool.confirmationDetails && (
diff --git a/packages/cli/src/ui/components/messages/ToolMessage.tsx b/packages/cli/src/ui/components/messages/ToolMessage.tsx
index 220578de..091785f2 100644
--- a/packages/cli/src/ui/components/messages/ToolMessage.tsx
+++ b/packages/cli/src/ui/components/messages/ToolMessage.tsx
@@ -26,7 +26,6 @@ export const ToolMessage: React.FC<ToolMessageProps> = ({
const statusIndicatorWidth = 3;
const hasResult = resultDisplay && resultDisplay.toString().trim().length > 0;
const staticHeight = /* Header */ 1;
- availableTerminalHeight -= staticHeight;
let displayableResult = resultDisplay;
let hiddenLines = 0;
@@ -37,7 +36,7 @@ export const ToolMessage: React.FC<ToolMessageProps> = ({
const lines = resultDisplay.split('\n');
// Estimate available height for this specific tool message content area
// This is a rough estimate; ideally, we'd have a more precise measurement.
- const contentHeightEstimate = availableTerminalHeight - 5; // Subtracting lines for tool name, status, padding etc.
+ const contentHeightEstimate = availableTerminalHeight - staticHeight - 5; // Subtracting lines for tool name, status, padding etc.
if (lines.length > contentHeightEstimate && contentHeightEstimate > 0) {
displayableResult = lines.slice(0, contentHeightEstimate).join('\n');
hiddenLines = lines.length - contentHeightEstimate;
@@ -83,7 +82,11 @@ export const ToolMessage: React.FC<ToolMessageProps> = ({
<Box flexDirection="column">
{typeof displayableResult === 'string' && (
<Box flexDirection="column">
- <MarkdownDisplay text={displayableResult} />
+ <MarkdownDisplay
+ text={displayableResult}
+ isPending={false}
+ availableTerminalHeight={availableTerminalHeight}
+ />
</Box>
)}
{typeof displayableResult === 'object' && (