disable markdown rendering of shell tool output (#625)
This commit is contained in:
parent
31a7affb74
commit
a0ba65944f
|
@ -72,6 +72,7 @@ export const ToolGroupMessage: React.FC<ToolGroupMessageProps> = ({
|
|||
? 'low'
|
||||
: 'medium'
|
||||
}
|
||||
renderOutputAsMarkdown={tool.renderOutputAsMarkdown}
|
||||
/>
|
||||
</Box>
|
||||
{tool.status === ToolCallStatus.Confirming &&
|
||||
|
|
|
@ -21,6 +21,7 @@ export type TextEmphasis = 'high' | 'medium' | 'low';
|
|||
export interface ToolMessageProps extends IndividualToolCallDisplay {
|
||||
availableTerminalHeight: number;
|
||||
emphasis?: TextEmphasis;
|
||||
renderOutputAsMarkdown?: boolean;
|
||||
}
|
||||
|
||||
export const ToolMessage: React.FC<ToolMessageProps> = ({
|
||||
|
@ -30,6 +31,7 @@ export const ToolMessage: React.FC<ToolMessageProps> = ({
|
|||
status,
|
||||
availableTerminalHeight,
|
||||
emphasis = 'medium',
|
||||
renderOutputAsMarkdown = true,
|
||||
}) => {
|
||||
const contentHeightEstimate =
|
||||
availableTerminalHeight - STATIC_HEIGHT - RESERVED_LINE_COUNT;
|
||||
|
@ -76,15 +78,22 @@ export const ToolMessage: React.FC<ToolMessageProps> = ({
|
|||
</Text>
|
||||
</Box>
|
||||
)}
|
||||
{typeof displayableResult === 'string' && (
|
||||
<Box flexDirection="column">
|
||||
<MarkdownDisplay
|
||||
text={displayableResult}
|
||||
isPending={false}
|
||||
availableTerminalHeight={availableTerminalHeight}
|
||||
/>
|
||||
</Box>
|
||||
)}
|
||||
{typeof displayableResult === 'string' &&
|
||||
renderOutputAsMarkdown && (
|
||||
<Box flexDirection="column">
|
||||
<MarkdownDisplay
|
||||
text={displayableResult}
|
||||
isPending={false}
|
||||
availableTerminalHeight={availableTerminalHeight}
|
||||
/>
|
||||
</Box>
|
||||
)}
|
||||
{typeof displayableResult === 'string' &&
|
||||
!renderOutputAsMarkdown && (
|
||||
<Box flexDirection="column">
|
||||
<Text>{displayableResult}</Text>
|
||||
</Box>
|
||||
)}
|
||||
{typeof displayableResult !== 'string' && (
|
||||
<DiffRenderer
|
||||
diffContent={displayableResult.fileDiff}
|
||||
|
|
|
@ -541,6 +541,18 @@ export function mapToDisplay(
|
|||
): HistoryItemToolGroup {
|
||||
const tools = Array.isArray(tool) ? tool : [tool];
|
||||
const toolsDisplays = tools.map((t): IndividualToolCallDisplay => {
|
||||
// Determine if markdown rendering should be skipped for this tool
|
||||
let renderOutputAsMarkdown = true; // Default to true
|
||||
if (t.status === 'error') {
|
||||
// For errors, the tool object might not be available, so check t.request.name
|
||||
if (t.request.name === 'execute_bash_command') {
|
||||
renderOutputAsMarkdown = false;
|
||||
}
|
||||
} else if ('tool' in t && t.tool?.name === 'execute_bash_command') {
|
||||
// For other statuses, check t.tool.name if tool exists
|
||||
renderOutputAsMarkdown = false;
|
||||
}
|
||||
|
||||
switch (t.status) {
|
||||
case 'success':
|
||||
return {
|
||||
|
@ -550,15 +562,17 @@ export function mapToDisplay(
|
|||
resultDisplay: t.response.resultDisplay,
|
||||
status: mapStatus(t.status),
|
||||
confirmationDetails: undefined,
|
||||
renderOutputAsMarkdown,
|
||||
};
|
||||
case 'error':
|
||||
return {
|
||||
callId: t.request.callId,
|
||||
name: t.request.name,
|
||||
description: '',
|
||||
name: t.request.name, // Use request.name as tool might be undefined
|
||||
description: '', // No description available if tool is undefined
|
||||
resultDisplay: t.response.resultDisplay,
|
||||
status: mapStatus(t.status),
|
||||
confirmationDetails: undefined,
|
||||
renderOutputAsMarkdown,
|
||||
};
|
||||
case 'cancelled':
|
||||
return {
|
||||
|
@ -568,6 +582,7 @@ export function mapToDisplay(
|
|||
resultDisplay: t.response.resultDisplay,
|
||||
status: mapStatus(t.status),
|
||||
confirmationDetails: undefined,
|
||||
renderOutputAsMarkdown,
|
||||
};
|
||||
case 'awaiting_approval':
|
||||
return {
|
||||
|
@ -577,6 +592,7 @@ export function mapToDisplay(
|
|||
resultDisplay: undefined,
|
||||
status: mapStatus(t.status),
|
||||
confirmationDetails: t.confirmationDetails,
|
||||
renderOutputAsMarkdown,
|
||||
};
|
||||
case 'executing':
|
||||
return {
|
||||
|
@ -586,6 +602,7 @@ export function mapToDisplay(
|
|||
resultDisplay: t.liveOutput ?? undefined,
|
||||
status: mapStatus(t.status),
|
||||
confirmationDetails: undefined,
|
||||
renderOutputAsMarkdown,
|
||||
};
|
||||
case 'validating': // Add this case
|
||||
return {
|
||||
|
@ -595,6 +612,7 @@ export function mapToDisplay(
|
|||
resultDisplay: undefined,
|
||||
status: mapStatus(t.status),
|
||||
confirmationDetails: undefined,
|
||||
renderOutputAsMarkdown,
|
||||
};
|
||||
case 'scheduled':
|
||||
return {
|
||||
|
@ -604,6 +622,7 @@ export function mapToDisplay(
|
|||
resultDisplay: undefined,
|
||||
status: mapStatus(t.status),
|
||||
confirmationDetails: undefined,
|
||||
renderOutputAsMarkdown,
|
||||
};
|
||||
default: {
|
||||
// ensures every case is checked for above
|
||||
|
|
|
@ -49,6 +49,7 @@ export interface IndividualToolCallDisplay {
|
|||
resultDisplay: ToolResultDisplay | undefined;
|
||||
status: ToolCallStatus;
|
||||
confirmationDetails: ToolCallConfirmationDetails | undefined;
|
||||
renderOutputAsMarkdown?: boolean;
|
||||
}
|
||||
|
||||
export interface HistoryItemBase {
|
||||
|
|
Loading…
Reference in New Issue