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

37 lines (36 loc) 2.34 kB
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime"; import { Box, Text } from 'ink'; import { formatTokens, formatPercentage, getWarningColor, calculateContextWarning } from '../utils/formatters.js'; const UnifiedContextDisplay = ({ contextInfo, conversationHistory, showDebugInfo = false }) => { // Determine the most accurate context data source const getContextData = () => { // Priority: conversationHistory.contextStats (from API) > contextInfo (cached) if (conversationHistory?.contextStats) { const stats = conversationHistory.contextStats; return { currentSize: stats.currentContextSize, maxSize: stats.maxContextSize, percentage: (stats.currentContextSize / stats.maxContextSize) * 100, warningLevel: calculateContextWarning(stats.currentContextSize, stats.maxContextSize), source: 'conversationHistory.contextStats' }; } if (contextInfo) { return { currentSize: contextInfo.currentSize, maxSize: contextInfo.maxSize, percentage: contextInfo.percentage, warningLevel: contextInfo.warningLevel, source: 'contextInfo' }; } return null; }; const contextData = getContextData(); if (!contextData) { return null; } return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsxs(Text, { color: getWarningColor(contextData.warningLevel), children: ["Context: ", formatTokens(contextData.currentSize), "/", formatTokens(contextData.maxSize), " (", formatPercentage(contextData.percentage), ")"] }), showDebugInfo && (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: "gray", italic: true, children: ["[src: ", contextData.source, "]"] }) }))] }), showDebugInfo && (_jsx(Box, { marginLeft: 1, children: _jsxs(Text, { color: "gray", italic: true, children: ["Debug: ctx=", contextInfo ? 'Y' : 'N', ", conv=", conversationHistory?.contextStats ? 'Y' : 'N', ", sync=", contextInfo && conversationHistory?.contextStats && contextInfo.currentSize === conversationHistory.contextStats.currentContextSize ? 'Y' : 'N'] }) }))] })); }; export default UnifiedContextDisplay;