/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { Box, Text } from 'ink'; import { IdeIntegrationNudge } from '../IdeIntegrationNudge.js'; import { LoopDetectionConfirmation } from './LoopDetectionConfirmation.js'; import { FolderTrustDialog } from './FolderTrustDialog.js'; import { ShellConfirmationDialog } from './ShellConfirmationDialog.js'; import { ConsentPrompt } from './ConsentPrompt.js'; import { ThemeDialog } from './ThemeDialog.js'; import { SettingsDialog } from './SettingsDialog.js'; import { AuthInProgress } from '../auth/AuthInProgress.js'; import { AuthDialog } from '../auth/AuthDialog.js'; import { ApiAuthDialog } from '../auth/ApiAuthDialog.js'; import { EditorSettingsDialog } from './EditorSettingsDialog.js'; import { PrivacyNotice } from '../privacy/PrivacyNotice.js'; import { ProQuotaDialog } from './ProQuotaDialog.js'; import { PermissionsModifyTrustDialog } from './PermissionsModifyTrustDialog.js'; import { ModelDialog } from './ModelDialog.js'; import { theme } from '../semantic-colors.js'; import { useUIState } from '../contexts/UIStateContext.js'; import { useUIActions } from '../contexts/UIActionsContext.js'; import { useConfig } from '../contexts/ConfigContext.js'; import { useSettings } from '../contexts/SettingsContext.js'; import process from 'node:process'; import { type UseHistoryManagerReturn } from '../hooks/useHistoryManager.js'; import { IdeTrustChangeDialog } from './IdeTrustChangeDialog.js'; interface DialogManagerProps { addItem: UseHistoryManagerReturn['addItem']; terminalWidth: number; } // Props for DialogManager export const DialogManager = ({ addItem, terminalWidth, }: DialogManagerProps) => { const config = useConfig(); const settings = useSettings(); const uiState = useUIState(); const uiActions = useUIActions(); const { constrainHeight, terminalHeight, staticExtraHeight, mainAreaWidth } = uiState; if (uiState.showIdeRestartPrompt) { return ; } if (uiState.proQuotaRequest) { return ( ); } if (uiState.shouldShowIdePrompt) { return ( ); } if (uiState.isFolderTrustDialogOpen) { return ( ); } if (uiState.shellConfirmationRequest) { return ( ); } if (uiState.loopDetectionConfirmationRequest) { return ( ); } if (uiState.confirmationRequest) { return ( ); } if (uiState.confirmUpdateExtensionRequests.length > 0) { const request = uiState.confirmUpdateExtensionRequests[0]; return ( ); } if (uiState.isThemeDialogOpen) { return ( {uiState.themeError && ( {uiState.themeError} )} ); } if (uiState.isSettingsDialogOpen) { return ( uiActions.closeSettingsDialog()} onRestartRequest={() => process.exit(0)} availableTerminalHeight={terminalHeight - staticExtraHeight} /> ); } if (uiState.isModelDialogOpen) { return ; } if (uiState.isAuthenticating) { return ( { uiActions.onAuthError('Authentication cancelled.'); }} /> ); } if (uiState.isAwaitingApiKeyInput) { return ( ); } if (uiState.isAuthDialogOpen) { return ( ); } if (uiState.isEditorDialogOpen) { return ( {uiState.editorError && ( {uiState.editorError} )} ); } if (uiState.showPrivacyNotice) { return ( uiActions.exitPrivacyNotice()} config={config} /> ); } if (uiState.isPermissionsDialogOpen) { return ( ); } return null; };