fix: re render context usage indicator (#5102)

This commit is contained in:
Pyush Sinha 2025-08-07 11:16:47 -07:00 committed by GitHub
parent a3351bc985
commit 8e6a565adb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 102 additions and 81 deletions

View File

@ -0,0 +1,25 @@
/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import { Text } from 'ink';
import { Colors } from '../colors.js';
import { tokenLimit } from '@google/gemini-cli-core';
export const ContextUsageDisplay = ({
promptTokenCount,
model,
}: {
promptTokenCount: number;
model: string;
}) => {
const percentage = promptTokenCount / tokenLimit(model);
return (
<Text color={Colors.Gray}>
({((1 - percentage) * 100).toFixed(0)}% context left)
</Text>
);
};

View File

@ -7,12 +7,12 @@
import React from 'react'; import React from 'react';
import { Box, Text } from 'ink'; import { Box, Text } from 'ink';
import { Colors } from '../colors.js'; import { Colors } from '../colors.js';
import { shortenPath, tildeifyPath, tokenLimit } from '@google/gemini-cli-core'; import { shortenPath, tildeifyPath } from '@google/gemini-cli-core';
import { ConsoleSummaryDisplay } from './ConsoleSummaryDisplay.js'; import { ConsoleSummaryDisplay } from './ConsoleSummaryDisplay.js';
import process from 'node:process'; import process from 'node:process';
import Gradient from 'ink-gradient'; import Gradient from 'ink-gradient';
import { MemoryUsageDisplay } from './MemoryUsageDisplay.js'; import { MemoryUsageDisplay } from './MemoryUsageDisplay.js';
import { ContextUsageDisplay } from './ContextUsageDisplay.js';
import { DebugProfiler } from './DebugProfiler.js'; import { DebugProfiler } from './DebugProfiler.js';
interface FooterProps { interface FooterProps {
@ -43,11 +43,7 @@ export const Footer: React.FC<FooterProps> = ({
promptTokenCount, promptTokenCount,
nightly, nightly,
vimMode, vimMode,
}) => { }) => (
const limit = tokenLimit(model);
const percentage = promptTokenCount / limit;
return (
<Box justifyContent="space-between" width="100%"> <Box justifyContent="space-between" width="100%">
<Box> <Box>
{debugMode && <DebugProfiler />} {debugMode && <DebugProfiler />}
@ -100,9 +96,10 @@ export const Footer: React.FC<FooterProps> = ({
<Text color={Colors.AccentBlue}> <Text color={Colors.AccentBlue}>
{' '} {' '}
{model}{' '} {model}{' '}
<Text color={Colors.Gray}> <ContextUsageDisplay
({((1 - percentage) * 100).toFixed(0)}% context left) promptTokenCount={promptTokenCount}
</Text> model={model}
/>
</Text> </Text>
{corgiMode && ( {corgiMode && (
<Text> <Text>
@ -123,5 +120,4 @@ export const Footer: React.FC<FooterProps> = ({
{showMemoryUsage && <MemoryUsageDisplay />} {showMemoryUsage && <MemoryUsageDisplay />}
</Box> </Box>
</Box> </Box>
); );
};