@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
JavaScript
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;