import { Box, Text } from 'ink' import React, { useMemo } from 'react' import { Select } from '../CustomSelect/select' import { getTheme } from '../../utils/theme' import { PermissionRequestTitle, textColorForRiskScore, } from './PermissionRequestTitle.js' import { logUnaryEvent } from '../../utils/unaryLogging' import { env } from '../../utils/env' import { getCwd } from '../../utils/state' import { savePermission } from '../../permissions' import { type ToolUseConfirm, toolUseConfirmGetPrefix, } from './PermissionRequest.js' import chalk from 'chalk' import { UnaryEvent, usePermissionRequestLogging, } from '../../hooks/usePermissionRequestLogging.js' type Props = { toolUseConfirm: ToolUseConfirm onDone(): void verbose: boolean } export function FallbackPermissionRequest({ toolUseConfirm, onDone, verbose, }: Props): React.ReactNode { const theme = getTheme() // TODO: Avoid these special cases const originalUserFacingName = toolUseConfirm.tool.userFacingName() const userFacingName = originalUserFacingName.endsWith(' (MCP)') ? originalUserFacingName.slice(0, -6) : originalUserFacingName const unaryEvent = useMemo( () => ({ completion_type: 'tool_use_single', language_name: 'none', }), [], ) usePermissionRequestLogging(toolUseConfirm, unaryEvent) return ( {userFacingName}( {toolUseConfirm.tool.renderToolUseMessage( toolUseConfirm.input as never, { verbose }, )} ) {originalUserFacingName.endsWith(' (MCP)') ? ( (MCP) ) : ( '' )} {toolUseConfirm.description} Do you want to proceed?