UNPKG

@hhoangphuoc/escape-room-cli

Version:

A CLI for playing AI-generated escape room games. Install globally with: npm install -g @hhoangphuoc/escape-room-cli

72 lines (71 loc) 4.2 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import { Box, Text } from 'ink'; import { HelpResponseComponent, LookResponseComponent, InspectResponseComponent, GuessResponseComponent, PasswordResponseComponent, HintResponseComponent, NewGameResponseComponent, LeaderboardResponseComponent, AuthResponseComponent, AIResponseComponent, ErrorResponseComponent, SuccessResponseComponent, InfoResponseComponent, GenericResponseComponent } from './ResponseComponents.js'; const renderResponseComponent = (item) => { if (!item.data || !item.responseType) return null; try { switch (item.responseType) { case 'help': return _jsx(HelpResponseComponent, { response: item.data }); case 'look': return _jsx(LookResponseComponent, { response: item.data }); case 'inspect': return _jsx(InspectResponseComponent, { response: item.data }); case 'guess': return _jsx(GuessResponseComponent, { response: item.data }); case 'password': return _jsx(PasswordResponseComponent, { response: item.data }); case 'hint': return _jsx(HintResponseComponent, { response: item.data }); case 'newgame': return _jsx(NewGameResponseComponent, { response: item.data }); case 'leaderboard': return _jsx(LeaderboardResponseComponent, { response: item.data }); case 'auth': return _jsx(AuthResponseComponent, { response: item.data }); case 'ai': return (_jsx(AIResponseComponent, { response: item.data })); default: return null; } } catch (error) { return null; } }; const CommandHistory = ({ history, showHistory, useComponents = true }) => { // const CommandHistory: React.FC<CommandHistoryProps> = ({history, showHistory, useComponents = true, onToggleReasoning}) => { const itemsToRender = showHistory ? history : history.slice(-2); const renderHistoryHeader = () => { if (!showHistory) return null; return (_jsx(Box, { marginBottom: 1, padding: 1, children: _jsx(Text, { color: "magenta", bold: true, children: "Command History" }) })); }; return (_jsxs(Box, { flexDirection: "column", children: [renderHistoryHeader(), itemsToRender.map((item, index) => { const itemIndex = showHistory ? index : history.length - itemsToRender.length + index; if (item.type === 'command') { return (_jsxs(Box, { marginY: 1, paddingX: 1, children: [_jsx(Text, { color: "yellow", children: "\u276F " }), _jsx(Text, { bold: true, color: "yellow", children: item.text || '' })] }, itemIndex)); } if (useComponents && item.responseType && item.data) { const component = renderResponseComponent(item); // const component = renderResponseComponent(item, itemIndex, onToggleReasoning); if (component) { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: component }, itemIndex)); } } if (item.type === 'error') { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: _jsx(ErrorResponseComponent, { message: item.text }) }, itemIndex)); } else if (item.type === 'success') { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: _jsx(SuccessResponseComponent, { message: item.text }) }, itemIndex)); } else if (item.type === 'info') { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: _jsx(InfoResponseComponent, { message: item.text }) }, itemIndex)); } else { return (_jsx(Box, { flexDirection: "column", marginY: 0, children: _jsx(GenericResponseComponent, { message: item.text }) }, itemIndex)); } })] })); }; export default CommandHistory;