|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import React from 'react'; |
|
|
import { Text } from 'ink'; |
|
|
import { Colors } from '../colors.js'; |
|
|
import { type MCPServerConfig } from '@google/gemini-cli-core'; |
|
|
|
|
|
interface ContextSummaryDisplayProps { |
|
|
geminiMdFileCount: number; |
|
|
contextFileNames: string[]; |
|
|
mcpServers?: Record<string, MCPServerConfig>; |
|
|
showToolDescriptions?: boolean; |
|
|
} |
|
|
|
|
|
export const ContextSummaryDisplay: React.FC<ContextSummaryDisplayProps> = ({ |
|
|
geminiMdFileCount, |
|
|
contextFileNames, |
|
|
mcpServers, |
|
|
showToolDescriptions, |
|
|
}) => { |
|
|
const mcpServerCount = Object.keys(mcpServers || {}).length; |
|
|
|
|
|
if (geminiMdFileCount === 0 && mcpServerCount === 0) { |
|
|
return <Text> </Text>; |
|
|
} |
|
|
|
|
|
const geminiMdText = (() => { |
|
|
if (geminiMdFileCount === 0) { |
|
|
return ''; |
|
|
} |
|
|
const allNamesTheSame = new Set(contextFileNames).size < 2; |
|
|
const name = allNamesTheSame ? contextFileNames[0] : 'context'; |
|
|
return `${geminiMdFileCount} ${name} file${ |
|
|
geminiMdFileCount > 1 ? 's' : '' |
|
|
}`; |
|
|
})(); |
|
|
|
|
|
const mcpText = |
|
|
mcpServerCount > 0 |
|
|
? `${mcpServerCount} MCP server${mcpServerCount > 1 ? 's' : ''}` |
|
|
: ''; |
|
|
|
|
|
let summaryText = 'Using '; |
|
|
if (geminiMdText) { |
|
|
summaryText += geminiMdText; |
|
|
} |
|
|
if (geminiMdText && mcpText) { |
|
|
summaryText += ' and '; |
|
|
} |
|
|
if (mcpText) { |
|
|
summaryText += mcpText; |
|
|
|
|
|
if (mcpServers && Object.keys(mcpServers).length > 0) { |
|
|
if (showToolDescriptions) { |
|
|
summaryText += ' (ctrl+t to toggle)'; |
|
|
} else { |
|
|
summaryText += ' (ctrl+t to view)'; |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
return <Text color={Colors.Gray}>{summaryText}</Text>; |
|
|
}; |
|
|
|