/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import type React from 'react'; import { Box, 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(); const items: React.ReactNode[] = []; if (process.env['GEMINI_SYSTEM_MD']) { items.push(|⌐■_■|); } if ( uiState.activeHooks.length > 0 && settings.merged.hooksConfig.notifications ) { items.push(); } if (uiState.sisyphusSecondsRemaining !== null) { const mins = Math.floor(uiState.sisyphusSecondsRemaining / 60); const secs = uiState.sisyphusSecondsRemaining % 60; const timerStr = `${mins.toString().padStart(2, '0')}:${secs .toString() .padStart(2, '0')}`; items.push( ✦ Resuming work in {timerStr}, ); } if ( items.length === 0 && uiState.sisyphusSecondsRemaining === null && !settings.merged.ui.hideContextSummary && !hideContextSummary ) { return ( ); } if (items.length === 0) { return null; } return ( {items.map((item, index) => ( {item} ))} ); };