summaryrefslogtreecommitdiff
path: root/packages/cli/src
diff options
context:
space:
mode:
Diffstat (limited to 'packages/cli/src')
-rw-r--r--packages/cli/src/gemini.ts14
-rw-r--r--packages/cli/src/ui/App.tsx4
-rw-r--r--packages/cli/src/ui/components/Footer.tsx3
3 files changed, 19 insertions, 2 deletions
diff --git a/packages/cli/src/gemini.ts b/packages/cli/src/gemini.ts
index 0579f059..3a618b96 100644
--- a/packages/cli/src/gemini.ts
+++ b/packages/cli/src/gemini.ts
@@ -10,6 +10,12 @@ import { App } from './ui/App.js';
import { loadCliConfig } from './config/config.js';
import { readStdin } from './utils/readStdin.js';
import { GeminiClient } from '@gemini-code/server';
+import { readPackageUp } from 'read-package-up';
+import { fileURLToPath } from 'node:url';
+import { dirname } from 'node:path';
+
+const __filename = fileURLToPath(import.meta.url);
+const __dirname = dirname(__filename);
async function main() {
const config = loadCliConfig();
@@ -17,14 +23,20 @@ async function main() {
// Render UI, passing necessary config values. Check that there is no command line question.
if (process.stdin.isTTY && input?.length === 0) {
+ const readUpResult = await readPackageUp({ cwd: __dirname });
+ const cliVersion =
+ process.env.NODE_ENV === 'development'
+ ? 'local'
+ : (readUpResult?.packageJson.version ?? 'unknown');
+
render(
React.createElement(App, {
config,
+ cliVersion,
}),
);
return;
}
-
// If not a TTY, read from stdin
// This is for cases where the user pipes input directly into the command
if (!process.stdin.isTTY) {
diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx
index 48184cea..d6813387 100644
--- a/packages/cli/src/ui/App.tsx
+++ b/packages/cli/src/ui/App.tsx
@@ -28,9 +28,10 @@ import { Tips } from './components/Tips.js';
interface AppProps {
config: Config;
+ cliVersion: string;
}
-export const App = ({ config }: AppProps) => {
+export const App = ({ config, cliVersion }: AppProps) => {
const [history, setHistory] = useState<HistoryItem[]>([]);
const [startupWarnings, setStartupWarnings] = useState<string[]>([]);
const { streamingState, submitQuery, initError, debugMessage } =
@@ -165,6 +166,7 @@ export const App = ({ config }: AppProps) => {
queryLength={query.length}
debugMode={config.getDebugMode()}
debugMessage={debugMessage}
+ cliVersion={cliVersion}
/>
<ITermDetectionWarning />
</Box>
diff --git a/packages/cli/src/ui/components/Footer.tsx b/packages/cli/src/ui/components/Footer.tsx
index 6722c0fd..1a61bd2f 100644
--- a/packages/cli/src/ui/components/Footer.tsx
+++ b/packages/cli/src/ui/components/Footer.tsx
@@ -14,6 +14,7 @@ interface FooterProps {
queryLength: number;
debugMode: boolean;
debugMessage: string;
+ cliVersion: string;
}
export const Footer: React.FC<FooterProps> = ({
@@ -21,6 +22,7 @@ export const Footer: React.FC<FooterProps> = ({
queryLength,
debugMode,
debugMessage,
+ cliVersion,
}) => (
<Box marginTop={1} display="flex" justifyContent="space-between" width="100%">
{/* Left Section: Help/DebugMode */}
@@ -50,6 +52,7 @@ export const Footer: React.FC<FooterProps> = ({
{/* Right Section: Gemini Label */}
<Box>
<Text color={Colors.AccentBlue}> {config.getModel()} </Text>
+ <Text color={Colors.SubtleComment}> | CLI Version: {cliVersion} </Text>
</Box>
</Box>
);