import React from 'react' import { Box, Text, useInput } from 'ink' import { getTheme } from '../utils/theme' import { Select } from './CustomSelect/select' import { saveCurrentProjectConfig, getCurrentProjectConfig, } from '../utils/config.js' import { MCPServerDialogCopy } from './MCPServerDialogCopy' import { useExitOnCtrlCD } from '../hooks/useExitOnCtrlCD' type Props = { serverName: string onDone(): void } export function MCPServerApprovalDialog({ serverName, onDone, }: Props): React.ReactNode { const theme = getTheme() function onChange(value: 'yes' | 'no') { const config = getCurrentProjectConfig() switch (value) { case 'yes': { if (!config.approvedMcprcServers) { config.approvedMcprcServers = [] } if (!config.approvedMcprcServers.includes(serverName)) { config.approvedMcprcServers.push(serverName) } saveCurrentProjectConfig(config) onDone() break } case 'no': { if (!config.rejectedMcprcServers) { config.rejectedMcprcServers = [] } if (!config.rejectedMcprcServers.includes(serverName)) { config.rejectedMcprcServers.push(serverName) } saveCurrentProjectConfig(config) onDone() break } } } const exitState = useExitOnCtrlCD(() => process.exit(0)) useInput((_input, key) => { if (key.escape) { onDone() return } }) return ( <> New MCP Server Detected This project contains a .mcprc file with an MCP server that requires your approval: {serverName} Do you want to approve this MCP server?