import figures from 'figures' import * as React from 'react' import { Box, Text } from 'src/ink.js' import { AGENT_COLOR_TO_THEME_COLOR, AGENT_COLORS, type AgentColorName, } from 'src/tools/AgentTool/agentColorManager.js' import type { PromptInputMode } from 'src/types/textInputTypes.js' import { getTeammateColor } from 'src/utils/teammate.js' import type { Theme } from 'src/utils/theme.js' import { isAgentSwarmsEnabled } from '../../utils/agentSwarmsEnabled.js' type Props = { mode: PromptInputMode isLoading: boolean viewingAgentName?: string viewingAgentColor?: AgentColorName } /** * Gets the theme color key for the teammate's assigned color. * Returns undefined if not a teammate or if the color is invalid. */ function getTeammateThemeColor(): keyof Theme | undefined { if (!isAgentSwarmsEnabled()) { return undefined } const colorName = getTeammateColor() if (!colorName) { return undefined } if (AGENT_COLORS.includes(colorName as AgentColorName)) { return AGENT_COLOR_TO_THEME_COLOR[colorName as AgentColorName] } return undefined } type PromptCharProps = { isLoading: boolean // Dead code elimination: parameter named themeColor to avoid "teammate" string in external builds themeColor?: keyof Theme } /** * Renders the prompt character (❯). * Teammate color overrides the default color when set. */ function PromptChar({ isLoading, themeColor, }: PromptCharProps): React.ReactNode { // Assign to original name for clarity within the function const teammateColor = themeColor const isAnt = process.env.USER_TYPE === 'ant' const color = teammateColor ?? (isAnt ? 'subtle' : undefined) return ( {figures.pointer}  ) } export function PromptInputModeIndicator({ mode, isLoading, viewingAgentName, viewingAgentColor, }: Props): React.ReactNode { const teammateColor = getTeammateThemeColor() // Convert viewed teammate's color to theme color // Falls back to PromptChar's default (subtle for ants, undefined for external) const viewedTeammateThemeColor = viewingAgentColor ? AGENT_COLOR_TO_THEME_COLOR[viewingAgentColor] : undefined return ( {viewingAgentName ? ( // Use teammate's color on the standard prompt character, matching established style ) : mode === 'bash' ? ( ) : ( )} ) }