capsule-ai-cli
Version:
The AI Model Orchestrator - Intelligent multi-model workflows with device-locked licensing
48 lines • 2.25 kB
JavaScript
import React from 'react';
import { Box, Text } from 'ink';
import chalk from 'chalk';
import { getProviderColor } from '../utils/provider-colors.js';
import { getModelDisplayName } from '../utils/model-display.js';
export const StatusBar = ({ mode, model, provider, tokenCount, tokenLimit, isPasting = false }) => {
const percentage = Math.round((tokenCount / tokenLimit) * 100);
const getModeStyle = () => {
switch (mode) {
case 'agent': return chalk.hex('#FFFF00');
case 'plan': return chalk.hex('#00FFFF');
case 'orchestrator': return chalk.hex('#FF00FF');
case 'auto': return chalk.hex('#00FF00');
default: return chalk.white;
}
};
const getProviderStyle = () => {
return chalk.hex(getProviderColor(provider));
};
const getModelStyle = () => {
return chalk.hex(getProviderColor(provider));
};
const getTokenStyle = () => {
if (percentage > 90)
return chalk.hex('#EF4444');
if (percentage > 80)
return chalk.hex('#F59E0B');
return chalk.hex('#6B7280');
};
return (React.createElement(Box, { justifyContent: "space-between", width: "100%" },
React.createElement(Box, null,
React.createElement(Text, null,
getModeStyle()(`◆ ${mode}`),
" "),
React.createElement(Text, { dimColor: true }, "(shift+tab)"),
React.createElement(Text, { color: "gray" }, " \u2022 "),
React.createElement(Text, null,
getModelStyle()(getModelDisplayName(model)),
" "),
React.createElement(Text, { color: "gray" }, " \u2022 "),
React.createElement(Text, null, getProviderStyle()(provider)),
isPasting && (React.createElement(React.Fragment, null,
React.createElement(Text, { color: "gray" }, " \u2022 "),
React.createElement(Text, { color: "yellow" }, "Pasting...")))),
React.createElement(Box, null,
React.createElement(Text, null, getTokenStyle()(`${tokenCount.toLocaleString()}/${(tokenLimit / 1000).toFixed(0)}k tokens (${percentage}%)`)))));
};
//# sourceMappingURL=StatusBar.js.map