@nanocollective/nanocoder
Version:
A local-first CLI coding agent that brings the power of agentic coding tools like Claude Code and Gemini CLI to local models or controlled APIs like OpenRouter
32 lines • 2.1 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { Box, Text } from 'ink';
import React from 'react';
import { TOKEN_THRESHOLD_CRITICAL_PERCENT, TOKEN_THRESHOLD_WARNING_PERCENT, } from '../constants.js';
import { useResponsiveTerminal } from '../hooks/useTerminalWidth.js';
import { DEVELOPMENT_MODE_LABELS, DEVELOPMENT_MODE_LABELS_NARROW, } from '../types/core.js';
function getContextColor(percent, colors) {
if (percent >= TOKEN_THRESHOLD_CRITICAL_PERCENT)
return colors.error;
if (percent >= TOKEN_THRESHOLD_WARNING_PERCENT)
return colors.warning;
return colors.secondary;
}
/**
* Development mode indicator component
* Shows the current development mode (normal/auto-accept/plan/scheduler) and instructions
* Always visible to help users understand the current mode
*/
export const DevelopmentModeIndicator = React.memo(({ developmentMode, colors, contextPercentUsed, }) => {
const { isNarrow } = useResponsiveTerminal();
const modeLabel = isNarrow
? DEVELOPMENT_MODE_LABELS_NARROW[developmentMode]
: DEVELOPMENT_MODE_LABELS[developmentMode];
return (_jsxs(Box, { marginTop: 1, children: [_jsxs(Text, { color: developmentMode === 'normal'
? colors.secondary
: developmentMode === 'auto-accept' ||
developmentMode === 'scheduler'
? colors.info
: colors.warning, children: [_jsx(Text, { bold: true, children: modeLabel }), isNarrow && developmentMode !== 'scheduler' && (_jsx(Text, { dimColor: true, children: " (Shift+Tab to cycle)" }))] }), contextPercentUsed !== null && (_jsxs(_Fragment, { children: [_jsx(Text, { color: colors.secondary, children: "\u00B7 " }), _jsxs(Text, { color: getContextColor(contextPercentUsed, colors), dimColor: contextPercentUsed < TOKEN_THRESHOLD_WARNING_PERCENT, children: ["ctx: ", contextPercentUsed, "%"] })] }))] }));
});
DevelopmentModeIndicator.displayName = 'DevelopmentModeIndicator';
//# sourceMappingURL=development-mode-indicator.js.map