/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import type React from 'react'; import { Text } from 'ink'; import { theme } from '../semantic-colors.js'; import { useUIState } from '../contexts/UIStateContext.js'; import { useSettings } from '../contexts/SettingsContext.js'; import { useConfig } from '../contexts/ConfigContext.js'; import { ContextSummaryDisplay } from './ContextSummaryDisplay.js'; import { HookStatusDisplay } from './HookStatusDisplay.js'; interface StatusDisplayProps { hideContextSummary: boolean; } export const StatusDisplay: React.FC = ({ hideContextSummary, }) => { const uiState = useUIState(); const settings = useSettings(); const config = useConfig(); if (process.env['GEMINI_SYSTEM_MD']) { return |⌐■_■|; } if (uiState.ctrlCPressedOnce) { return ( Press Ctrl+C again to exit. ); } if (uiState.warningMessage) { return {uiState.warningMessage}; } if (uiState.ctrlDPressedOnce) { return ( Press Ctrl+D again to exit. ); } if (uiState.showEscapePrompt) { const isPromptEmpty = uiState.buffer.text.length === 0; const hasHistory = uiState.history.length > 0; if (isPromptEmpty && !hasHistory) { return null; } return ( Press Esc again to {isPromptEmpty ? 'rewind' : 'clear prompt'}. ); } if (uiState.queueErrorMessage) { return {uiState.queueErrorMessage}; } if ( uiState.activeHooks.length > 0 && settings.merged.hooksConfig.notifications ) { return ; } if (!settings.merged.ui.hideContextSummary && !hideContextSummary) { return ( ); } return null; };