@google/gemini-cli 0.1.13 → 0.1.15-nightly.250731.0c6f7884
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +50 -1
- package/dist/google-gemini-cli-0.1.15.tgz +0 -0
- package/dist/package.json +6 -3
- package/dist/src/config/config.d.ts +5 -3
- package/dist/src/config/config.js +29 -32
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/extension.d.ts +1 -0
- package/dist/src/config/extension.js +4 -0
- package/dist/src/config/extension.js.map +1 -1
- package/dist/src/config/settings.d.ts +9 -2
- package/dist/src/config/settings.js +25 -10
- package/dist/src/config/settings.js.map +1 -1
- package/dist/src/gemini.d.ts +1 -0
- package/dist/src/gemini.js +41 -36
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +1 -1
- package/dist/src/generated/git-commit.js +1 -1
- package/dist/src/patches/is-in-ci.d.ts +7 -0
- package/dist/src/patches/is-in-ci.js +15 -0
- package/dist/src/patches/is-in-ci.js.map +1 -0
- package/dist/src/services/BuiltinCommandLoader.d.ts +24 -0
- package/dist/src/services/BuiltinCommandLoader.js +74 -0
- package/dist/src/services/BuiltinCommandLoader.js.map +1 -0
- package/dist/src/services/CommandService.d.ts +47 -7
- package/dist/src/services/CommandService.js +77 -56
- package/dist/src/services/CommandService.js.map +1 -1
- package/dist/src/services/FileCommandLoader.d.ts +49 -0
- package/dist/src/services/FileCommandLoader.js +208 -0
- package/dist/src/services/FileCommandLoader.js.map +1 -0
- package/dist/src/services/McpPromptLoader.d.ts +25 -0
- package/dist/src/services/McpPromptLoader.js +192 -0
- package/dist/src/services/McpPromptLoader.js.map +1 -0
- package/dist/src/services/prompt-processors/argumentProcessor.d.ts +21 -0
- package/dist/src/services/prompt-processors/argumentProcessor.js +28 -0
- package/dist/src/services/prompt-processors/argumentProcessor.js.map +1 -0
- package/dist/src/services/prompt-processors/shellProcessor.d.ts +32 -0
- package/dist/src/services/prompt-processors/shellProcessor.js +77 -0
- package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -0
- package/dist/src/services/prompt-processors/types.d.ts +38 -0
- package/dist/src/services/prompt-processors/types.js +14 -0
- package/dist/src/services/prompt-processors/types.js.map +1 -0
- package/dist/src/services/types.d.ts +22 -0
- package/dist/src/services/types.js +7 -0
- package/dist/src/services/types.js.map +1 -0
- package/dist/src/ui/App.js +96 -64
- package/dist/src/ui/App.js.map +1 -1
- package/dist/src/ui/colors.js +6 -0
- package/dist/src/ui/colors.js.map +1 -1
- package/dist/src/ui/commands/aboutCommand.js +2 -0
- package/dist/src/ui/commands/aboutCommand.js.map +1 -1
- package/dist/src/ui/commands/authCommand.js +2 -0
- package/dist/src/ui/commands/authCommand.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.js +2 -0
- package/dist/src/ui/commands/bugCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +51 -3
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/clearCommand.js +2 -0
- package/dist/src/ui/commands/clearCommand.js.map +1 -1
- package/dist/src/ui/commands/compressCommand.js +3 -1
- package/dist/src/ui/commands/compressCommand.js.map +1 -1
- package/dist/src/ui/commands/copyCommand.d.ts +7 -0
- package/dist/src/ui/commands/copyCommand.js +59 -0
- package/dist/src/ui/commands/copyCommand.js.map +1 -0
- package/dist/src/ui/commands/corgiCommand.js +2 -0
- package/dist/src/ui/commands/corgiCommand.js.map +1 -1
- package/dist/src/ui/commands/docsCommand.js +2 -0
- package/dist/src/ui/commands/docsCommand.js.map +1 -1
- package/dist/src/ui/commands/editorCommand.js +2 -0
- package/dist/src/ui/commands/editorCommand.js.map +1 -1
- package/dist/src/ui/commands/extensionsCommand.js +2 -0
- package/dist/src/ui/commands/extensionsCommand.js.map +1 -1
- package/dist/src/ui/commands/helpCommand.js +3 -1
- package/dist/src/ui/commands/helpCommand.js.map +1 -1
- package/dist/src/ui/commands/ideCommand.js +103 -109
- package/dist/src/ui/commands/ideCommand.js.map +1 -1
- package/dist/src/ui/commands/initCommand.d.ts +7 -0
- package/dist/src/ui/commands/initCommand.js +76 -0
- package/dist/src/ui/commands/initCommand.js.map +1 -0
- package/dist/src/ui/commands/mcpCommand.js +229 -8
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +11 -4
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/privacyCommand.js +2 -0
- package/dist/src/ui/commands/privacyCommand.js.map +1 -1
- package/dist/src/ui/commands/quitCommand.js +3 -1
- package/dist/src/ui/commands/quitCommand.js.map +1 -1
- package/dist/src/ui/commands/restoreCommand.js +2 -0
- package/dist/src/ui/commands/restoreCommand.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.js +5 -1
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/themeCommand.js +2 -0
- package/dist/src/ui/commands/themeCommand.js.map +1 -1
- package/dist/src/ui/commands/toolsCommand.js +2 -0
- package/dist/src/ui/commands/toolsCommand.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +42 -3
- package/dist/src/ui/commands/types.js +6 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/commands/vimCommand.d.ts +7 -0
- package/dist/src/ui/commands/vimCommand.js +23 -0
- package/dist/src/ui/commands/vimCommand.js.map +1 -0
- package/dist/src/ui/components/ContextSummaryDisplay.d.ts +2 -2
- package/dist/src/ui/components/ContextSummaryDisplay.js +12 -12
- package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
- package/dist/src/ui/components/Footer.d.ts +1 -0
- package/dist/src/ui/components/Footer.js +2 -2
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/Header.js +1 -1
- package/dist/src/ui/components/Header.js.map +1 -1
- package/dist/src/ui/components/Help.d.ts +1 -1
- package/dist/src/ui/components/Help.js +2 -2
- package/dist/src/ui/components/Help.js.map +1 -1
- package/dist/src/ui/components/IDEContextDetailDisplay.d.ts +12 -0
- package/dist/src/ui/components/IDEContextDetailDisplay.js +12 -0
- package/dist/src/ui/components/IDEContextDetailDisplay.js.map +1 -0
- package/dist/src/ui/components/InputPrompt.d.ts +3 -1
- package/dist/src/ui/components/InputPrompt.js +20 -99
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/ShellConfirmationDialog.d.ts +15 -0
- package/dist/src/ui/components/ShellConfirmationDialog.js +44 -0
- package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -0
- package/dist/src/ui/components/ThemeDialog.js +42 -17
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/Tips.js +1 -1
- package/dist/src/ui/components/Tips.js.map +1 -1
- package/dist/src/ui/components/messages/DiffRenderer.d.ts +1 -0
- package/dist/src/ui/components/messages/DiffRenderer.js +12 -11
- package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js +19 -7
- package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.d.ts +273 -3
- package/dist/src/ui/components/shared/text-buffer.js +425 -79
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/shared/vim-buffer-actions.d.ts +72 -0
- package/dist/src/ui/components/shared/vim-buffer-actions.js +565 -0
- package/dist/src/ui/components/shared/vim-buffer-actions.js.map +1 -0
- package/dist/src/ui/contexts/VimModeContext.d.ts +19 -0
- package/dist/src/ui/contexts/VimModeContext.js +48 -0
- package/dist/src/ui/contexts/VimModeContext.js.map +1 -0
- package/dist/src/ui/hooks/atCommandProcessor.js +103 -56
- package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -0
- package/dist/src/ui/hooks/shellCommandProcessor.js +139 -186
- package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.d.ts +8 -4
- package/dist/src/ui/hooks/slashCommandProcessor.js +209 -108
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/useAuthCommand.js +2 -2
- package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
- package/dist/src/ui/hooks/useCompletion.d.ts +3 -1
- package/dist/src/ui/hooks/useCompletion.js +173 -65
- package/dist/src/ui/hooks/useCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useConsoleMessages.js +53 -37
- package/dist/src/ui/hooks/useConsoleMessages.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +62 -13
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useInputHistory.d.ts +1 -1
- package/dist/src/ui/hooks/useKeypress.js +5 -2
- package/dist/src/ui/hooks/useKeypress.js.map +1 -1
- package/dist/src/ui/hooks/usePhraseCycler.js +1 -0
- package/dist/src/ui/hooks/usePhraseCycler.js.map +1 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js +0 -1
- package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
- package/dist/src/ui/hooks/useShellHistory.d.ts +3 -2
- package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
- package/dist/src/ui/hooks/useThemeCommand.js +24 -23
- package/dist/src/ui/hooks/useThemeCommand.js.map +1 -1
- package/dist/src/ui/hooks/vim.d.ts +28 -0
- package/dist/src/ui/hooks/vim.js +630 -0
- package/dist/src/ui/hooks/vim.js.map +1 -0
- package/dist/src/ui/themes/ansi-light.js +2 -0
- package/dist/src/ui/themes/ansi-light.js.map +1 -1
- package/dist/src/ui/themes/ansi.js +2 -0
- package/dist/src/ui/themes/ansi.js.map +1 -1
- package/dist/src/ui/themes/atom-one-dark.js +2 -0
- package/dist/src/ui/themes/atom-one-dark.js.map +1 -1
- package/dist/src/ui/themes/ayu-light.js +3 -1
- package/dist/src/ui/themes/ayu-light.js.map +1 -1
- package/dist/src/ui/themes/ayu.js +3 -1
- package/dist/src/ui/themes/ayu.js.map +1 -1
- package/dist/src/ui/themes/color-utils.d.ts +21 -0
- package/dist/src/ui/themes/color-utils.js +221 -0
- package/dist/src/ui/themes/color-utils.js.map +1 -0
- package/dist/src/ui/themes/dracula.js +2 -0
- package/dist/src/ui/themes/dracula.js.map +1 -1
- package/dist/src/ui/themes/github-dark.js +2 -0
- package/dist/src/ui/themes/github-dark.js.map +1 -1
- package/dist/src/ui/themes/github-light.js +2 -0
- package/dist/src/ui/themes/github-light.js.map +1 -1
- package/dist/src/ui/themes/googlecode.js +2 -0
- package/dist/src/ui/themes/googlecode.js.map +1 -1
- package/dist/src/ui/themes/no-color.js +3 -1
- package/dist/src/ui/themes/no-color.js.map +1 -1
- package/dist/src/ui/themes/shades-of-purple.d.ts +1 -1
- package/dist/src/ui/themes/shades-of-purple.js +3 -1
- package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.d.ts +31 -6
- package/dist/src/ui/themes/theme-manager.js +113 -34
- package/dist/src/ui/themes/theme-manager.js.map +1 -1
- package/dist/src/ui/themes/theme.d.ts +23 -3
- package/dist/src/ui/themes/theme.js +244 -182
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/themes/xcode.js +2 -0
- package/dist/src/ui/themes/xcode.js.map +1 -1
- package/dist/src/ui/types.d.ts +9 -1
- package/dist/src/ui/utils/CodeColorizer.d.ts +3 -1
- package/dist/src/ui/utils/CodeColorizer.js +23 -11
- package/dist/src/ui/utils/CodeColorizer.js.map +1 -1
- package/dist/src/ui/utils/commandUtils.d.ts +1 -0
- package/dist/src/ui/utils/commandUtils.js +47 -0
- package/dist/src/ui/utils/commandUtils.js.map +1 -1
- package/dist/src/ui/utils/markdownUtilities.js +1 -1
- package/dist/src/ui/utils/textUtils.d.ts +0 -8
- package/dist/src/ui/utils/textUtils.js +0 -22
- package/dist/src/ui/utils/textUtils.js.map +1 -1
- package/dist/src/ui/utils/updateCheck.d.ts +7 -1
- package/dist/src/ui/utils/updateCheck.js +9 -3
- package/dist/src/ui/utils/updateCheck.js.map +1 -1
- package/dist/src/utils/events.d.ts +11 -0
- package/dist/src/utils/events.js +13 -0
- package/dist/src/utils/events.js.map +1 -0
- package/dist/src/utils/handleAutoUpdate.d.ts +10 -0
- package/dist/src/utils/handleAutoUpdate.js +97 -0
- package/dist/src/utils/handleAutoUpdate.js.map +1 -0
- package/dist/src/utils/installationInfo.d.ts +23 -0
- package/dist/src/utils/installationInfo.js +154 -0
- package/dist/src/utils/installationInfo.js.map +1 -0
- package/dist/src/utils/sandbox-macos-permissive-closed.sb +6 -0
- package/dist/src/utils/sandbox-macos-permissive-open.sb +6 -0
- package/dist/src/utils/sandbox-macos-permissive-proxied.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-closed.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-open.sb +6 -0
- package/dist/src/utils/sandbox-macos-restrictive-proxied.sb +6 -0
- package/dist/src/utils/sandbox.d.ts +2 -2
- package/dist/src/utils/sandbox.js +36 -13
- package/dist/src/utils/sandbox.js.map +1 -1
- package/dist/src/utils/updateEventEmitter.d.ts +11 -0
- package/dist/src/utils/updateEventEmitter.js +12 -0
- package/dist/src/utils/updateEventEmitter.js.map +1 -0
- package/dist/src/utils/userStartupWarnings.js +22 -1
- package/dist/src/utils/userStartupWarnings.js.map +1 -1
- package/dist/src/validateNonInterActiveAuth.d.ts +7 -0
- package/dist/src/validateNonInterActiveAuth.js +35 -0
- package/dist/src/validateNonInterActiveAuth.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -4
- package/dist/google-gemini-cli-0.1.12.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodeColorizer.js","sourceRoot":"","sources":["../../../../src/ui/utils/CodeColorizer.tsx"],"names":[],"mappings":";AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAQlD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EACL,WAAW,EACX,kBAAkB,GACnB,MAAM,qCAAqC,CAAC;AAE7C,2CAA2C;AAC3C,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;AAExC,SAAS,cAAc,CACrB,IAA6C,EAC7C,KAAY,EACZ,cAAkC;IAElC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACzB,wDAAwD;QACxD,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,cAAc,YAAG,IAAI,CAAC,KAAK,GAAQ,CAAC;IAC1D,CAAC;IAED,qEAAqE;IACrE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,WAAW,GACd,IAAI,CAAC,UAAU,EAAE,SAAsB,IAAI,EAAE,CAAC;QACjD,IAAI,YAAY,GAAuB,SAAS,CAAC;QAEjD,2DAA2D;QAC3D,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,KAAK,EAAE,CAAC;gBACV,YAAY,GAAG,KAAK,CAAC;gBACrB,MAAM;YACR,CAAC;QACH,CAAC;QAED,sEAAsE;QACtE,0EAA0E;QAC1E,MAAM,eAAe,GAAG,YAAY,IAAI,cAAc,CAAC;QAEvD,iEAAiE;QACjE,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CACjC,CAAC,KAAqB,EAAE,KAAa,EAAE,EAAE,CAAC,CACxC,KAAC,KAAK,CAAC,QAAQ,cACZ,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,eAAe,CAAC,IAD3B,KAAK,CAET,CAClB,CACF,CAAC;QAEF,yEAAyE;QACzE,6DAA6D;QAC7D,OAAO,KAAC,KAAK,CAAC,QAAQ,cAAE,QAAQ,GAAkB,CAAC;IACrD,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"CodeColorizer.js","sourceRoot":"","sources":["../../../../src/ui/utils/CodeColorizer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -20,3 +20,4 @@ export declare const isAtCommand: (query: string) => boolean;
|
|
|
20
20
|
* @returns True if the query looks like an '/' command, false otherwise.
|
|
21
21
|
*/
|
|
22
22
|
export declare const isSlashCommand: (query: string) => boolean;
|
|
23
|
+
export declare const copyToClipboard: (text: string) => Promise<void>;
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
+
import { spawn } from 'child_process';
|
|
6
7
|
/**
|
|
7
8
|
* Checks if a query string potentially represents an '@' command.
|
|
8
9
|
* It triggers if the query starts with '@' or contains '@' preceded by whitespace
|
|
@@ -22,4 +23,50 @@ query.startsWith('@') || /\s@/.test(query);
|
|
|
22
23
|
* @returns True if the query looks like an '/' command, false otherwise.
|
|
23
24
|
*/
|
|
24
25
|
export const isSlashCommand = (query) => query.startsWith('/');
|
|
26
|
+
//Copies a string snippet to the clipboard for different platforms
|
|
27
|
+
export const copyToClipboard = async (text) => {
|
|
28
|
+
const run = (cmd, args) => new Promise((resolve, reject) => {
|
|
29
|
+
const child = spawn(cmd, args);
|
|
30
|
+
let stderr = '';
|
|
31
|
+
child.stderr.on('data', (chunk) => (stderr += chunk.toString()));
|
|
32
|
+
child.on('error', reject);
|
|
33
|
+
child.on('close', (code) => {
|
|
34
|
+
if (code === 0)
|
|
35
|
+
return resolve();
|
|
36
|
+
const errorMsg = stderr.trim();
|
|
37
|
+
reject(new Error(`'${cmd}' exited with code ${code}${errorMsg ? `: ${errorMsg}` : ''}`));
|
|
38
|
+
});
|
|
39
|
+
child.stdin.on('error', reject);
|
|
40
|
+
child.stdin.write(text);
|
|
41
|
+
child.stdin.end();
|
|
42
|
+
});
|
|
43
|
+
switch (process.platform) {
|
|
44
|
+
case 'win32':
|
|
45
|
+
return run('clip', []);
|
|
46
|
+
case 'darwin':
|
|
47
|
+
return run('pbcopy', []);
|
|
48
|
+
case 'linux':
|
|
49
|
+
try {
|
|
50
|
+
await run('xclip', ['-selection', 'clipboard']);
|
|
51
|
+
}
|
|
52
|
+
catch (primaryError) {
|
|
53
|
+
try {
|
|
54
|
+
// If xclip fails for any reason, try xsel as a fallback.
|
|
55
|
+
await run('xsel', ['--clipboard', '--input']);
|
|
56
|
+
}
|
|
57
|
+
catch (fallbackError) {
|
|
58
|
+
const primaryMsg = primaryError instanceof Error
|
|
59
|
+
? primaryError.message
|
|
60
|
+
: String(primaryError);
|
|
61
|
+
const fallbackMsg = fallbackError instanceof Error
|
|
62
|
+
? fallbackError.message
|
|
63
|
+
: String(fallbackError);
|
|
64
|
+
throw new Error(`All copy commands failed. xclip: "${primaryMsg}", xsel: "${fallbackMsg}". Please ensure xclip or xsel is installed and configured.`);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
default:
|
|
69
|
+
throw new Error(`Unsupported platform: ${process.platform}`);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
25
72
|
//# sourceMappingURL=commandUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/commandUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAa,EAAW,EAAE;AACpD,gDAAgD;AAChD,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAa,EAAW,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"commandUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/commandUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,7 @@ This function aims to find an *intelligent* or "safe" index within the provided
|
|
|
28
28
|
* **Single Line Breaks:** If no double newline is found in a suitable range, it will look for a single newline (`\n`).
|
|
29
29
|
* Any newline chosen as a split point must also not be inside a code block.
|
|
30
30
|
|
|
31
|
-
4. **
|
|
31
|
+
4. **Fall back to `idealMaxLength`:**
|
|
32
32
|
* If no "safer" split point (respecting code blocks or finding suitable newlines) is identified before or at `idealMaxLength`, and `idealMaxLength` itself is not determined to be an unsafe split point (e.g., inside a code block), the function may return a length larger than `idealMaxLength`, again it CANNOT break markdown formatting. This could happen with very long lines of text without Markdown block structures or newlines.
|
|
33
33
|
|
|
34
34
|
**In essence, `findSafeSplitPoint` tries to be a good Markdown citizen when forced to divide content, preferring structural boundaries over arbitrary character limits, with a strong emphasis on not corrupting code blocks.**
|
|
@@ -9,14 +9,6 @@
|
|
|
9
9
|
* @returns The length of the longest line in the ASCII art.
|
|
10
10
|
*/
|
|
11
11
|
export declare const getAsciiArtWidth: (asciiArt: string) => number;
|
|
12
|
-
/**
|
|
13
|
-
* Checks if a Buffer is likely binary by testing for the presence of a NULL byte.
|
|
14
|
-
* The presence of a NULL byte is a strong indicator that the data is not plain text.
|
|
15
|
-
* @param data The Buffer to check.
|
|
16
|
-
* @param sampleSize The number of bytes from the start of the buffer to test.
|
|
17
|
-
* @returns True if a NULL byte is found, false otherwise.
|
|
18
|
-
*/
|
|
19
|
-
export declare function isBinary(data: Buffer | null | undefined, sampleSize?: number): boolean;
|
|
20
12
|
export declare function toCodePoints(str: string): string[];
|
|
21
13
|
export declare function cpLen(str: string): number;
|
|
22
14
|
export declare function cpSlice(str: string, start: number, end?: number): string;
|
|
@@ -15,28 +15,6 @@ export const getAsciiArtWidth = (asciiArt) => {
|
|
|
15
15
|
const lines = asciiArt.split('\n');
|
|
16
16
|
return Math.max(...lines.map((line) => line.length));
|
|
17
17
|
};
|
|
18
|
-
/**
|
|
19
|
-
* Checks if a Buffer is likely binary by testing for the presence of a NULL byte.
|
|
20
|
-
* The presence of a NULL byte is a strong indicator that the data is not plain text.
|
|
21
|
-
* @param data The Buffer to check.
|
|
22
|
-
* @param sampleSize The number of bytes from the start of the buffer to test.
|
|
23
|
-
* @returns True if a NULL byte is found, false otherwise.
|
|
24
|
-
*/
|
|
25
|
-
export function isBinary(data, sampleSize = 512) {
|
|
26
|
-
if (!data) {
|
|
27
|
-
return false;
|
|
28
|
-
}
|
|
29
|
-
const sample = data.length > sampleSize ? data.subarray(0, sampleSize) : data;
|
|
30
|
-
for (const byte of sample) {
|
|
31
|
-
// The presence of a NULL byte (0x00) is one of the most reliable
|
|
32
|
-
// indicators of a binary file. Text files should not contain them.
|
|
33
|
-
if (byte === 0) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
// If no NULL bytes were found in the sample, we assume it's text.
|
|
38
|
-
return false;
|
|
39
|
-
}
|
|
40
18
|
/*
|
|
41
19
|
* -------------------------------------------------------------------------
|
|
42
20
|
* Unicode‑aware helpers (work at the code‑point level rather than UTF‑16
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/textUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"textUtils.js","sourceRoot":"","sources":["../../../../src/ui/utils/textUtils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,QAAgB,EAAU,EAAE;IAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC;AAEF;;;;4EAI4E;AAE5E,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,qEAAqE;IACrE,6BAA6B;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,GAAW;IAC/B,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,GAAW,EAAE,KAAa,EAAE,GAAY;IAC9D,2CAA2C;IAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAChD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -3,4 +3,10 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
|
|
6
|
+
import { UpdateInfo } from 'update-notifier';
|
|
7
|
+
export declare const FETCH_TIMEOUT_MS = 2000;
|
|
8
|
+
export interface UpdateObject {
|
|
9
|
+
message: string;
|
|
10
|
+
update: UpdateInfo;
|
|
11
|
+
}
|
|
12
|
+
export declare function checkForUpdates(): Promise<UpdateObject | null>;
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
import updateNotifier from 'update-notifier';
|
|
7
7
|
import semver from 'semver';
|
|
8
8
|
import { getPackageJson } from '../../utils/package.js';
|
|
9
|
+
export const FETCH_TIMEOUT_MS = 2000;
|
|
9
10
|
export async function checkForUpdates() {
|
|
10
11
|
try {
|
|
11
12
|
// Skip update check when running from source (development mode)
|
|
@@ -26,9 +27,14 @@ export async function checkForUpdates() {
|
|
|
26
27
|
// allow notifier to run in scripts
|
|
27
28
|
shouldNotifyInNpmScript: true,
|
|
28
29
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
30
|
+
// avoid blocking by waiting at most FETCH_TIMEOUT_MS for fetchInfo to resolve
|
|
31
|
+
const timeout = new Promise((resolve) => setTimeout(resolve, FETCH_TIMEOUT_MS, null));
|
|
32
|
+
const updateInfo = await Promise.race([notifier.fetchInfo(), timeout]);
|
|
33
|
+
if (updateInfo && semver.gt(updateInfo.latest, updateInfo.current)) {
|
|
34
|
+
return {
|
|
35
|
+
message: `Gemini CLI update available! ${updateInfo.current} → ${updateInfo.latest}`,
|
|
36
|
+
update: updateInfo,
|
|
37
|
+
};
|
|
32
38
|
}
|
|
33
39
|
return null;
|
|
34
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../../../src/ui/utils/updateCheck.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../../../../src/ui/utils/updateCheck.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,cAA8B,MAAM,iBAAiB,CAAC;AAC7D,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAOrC,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,CAAC;QACH,gEAAgE;QAChE,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;YAC/B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,QAAQ,GAAG,cAAc,CAAC;YAC9B,GAAG,EAAE;gBACH,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,OAAO;aAC7B;YACD,mBAAmB;YACnB,mBAAmB,EAAE,CAAC;YACtB,mCAAmC;YACnC,uBAAuB,EAAE,IAAI;SAC9B,CAAC,CAAC;QACH,8EAA8E;QAC9E,MAAM,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAC5C,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAC5C,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;QAEvE,IAAI,UAAU,IAAI,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACnE,OAAO;gBACL,OAAO,EAAE,gCAAgC,UAAU,CAAC,OAAO,MAAM,UAAU,CAAC,MAAM,EAAE;gBACpF,MAAM,EAAE,UAAU;aACnB,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,GAAG,CAAC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
export declare enum AppEvent {
|
|
8
|
+
OpenDebugConsole = "open-debug-console",
|
|
9
|
+
LogError = "log-error"
|
|
10
|
+
}
|
|
11
|
+
export declare const appEvents: EventEmitter<[never]>;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
export var AppEvent;
|
|
8
|
+
(function (AppEvent) {
|
|
9
|
+
AppEvent["OpenDebugConsole"] = "open-debug-console";
|
|
10
|
+
AppEvent["LogError"] = "log-error";
|
|
11
|
+
})(AppEvent || (AppEvent = {}));
|
|
12
|
+
export const appEvents = new EventEmitter();
|
|
13
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/utils/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,CAAN,IAAY,QAGX;AAHD,WAAY,QAAQ;IAClB,mDAAuC,CAAA;IACvC,kCAAsB,CAAA;AACxB,CAAC,EAHW,QAAQ,KAAR,QAAQ,QAGnB;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { UpdateObject } from '../ui/utils/updateCheck.js';
|
|
7
|
+
import { LoadedSettings } from '../config/settings.js';
|
|
8
|
+
import { HistoryItem } from '../ui/types.js';
|
|
9
|
+
export declare function handleAutoUpdate(info: UpdateObject | null, settings: LoadedSettings, projectRoot: string): import("child_process").ChildProcessWithoutNullStreams | undefined;
|
|
10
|
+
export declare function setUpdateHandler(addItem: (item: Omit<HistoryItem, 'id'>, timestamp: number) => void, setUpdateInfo: (info: UpdateObject | null) => void): () => void;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { spawn } from 'node:child_process';
|
|
7
|
+
import { getInstallationInfo } from './installationInfo.js';
|
|
8
|
+
import { updateEventEmitter } from './updateEventEmitter.js';
|
|
9
|
+
import { MessageType } from '../ui/types.js';
|
|
10
|
+
export function handleAutoUpdate(info, settings, projectRoot) {
|
|
11
|
+
if (!info) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
const installationInfo = getInstallationInfo(projectRoot, settings.merged.disableAutoUpdate ?? false);
|
|
15
|
+
let combinedMessage = info.message;
|
|
16
|
+
if (installationInfo.updateMessage) {
|
|
17
|
+
combinedMessage += `\n${installationInfo.updateMessage}`;
|
|
18
|
+
}
|
|
19
|
+
updateEventEmitter.emit('update-received', {
|
|
20
|
+
message: combinedMessage,
|
|
21
|
+
});
|
|
22
|
+
if (!installationInfo.updateCommand || settings.merged.disableAutoUpdate) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const updateCommand = installationInfo.updateCommand.replace('@latest', `@${info.update.latest}`);
|
|
26
|
+
const updateProcess = spawn(updateCommand, { stdio: 'pipe', shell: true });
|
|
27
|
+
let errorOutput = '';
|
|
28
|
+
updateProcess.stderr.on('data', (data) => {
|
|
29
|
+
errorOutput += data.toString();
|
|
30
|
+
});
|
|
31
|
+
updateProcess.on('close', (code) => {
|
|
32
|
+
if (code === 0) {
|
|
33
|
+
updateEventEmitter.emit('update-success', {
|
|
34
|
+
message: 'Update successful! The new version will be used on your next run.',
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
updateEventEmitter.emit('update-failed', {
|
|
39
|
+
message: `Automatic update failed. Please try updating manually. (command: ${updateCommand}, stderr: ${errorOutput.trim()})`,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
updateProcess.on('error', (err) => {
|
|
44
|
+
updateEventEmitter.emit('update-failed', {
|
|
45
|
+
message: `Automatic update failed. Please try updating manually. (error: ${err.message})`,
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
return updateProcess;
|
|
49
|
+
}
|
|
50
|
+
export function setUpdateHandler(addItem, setUpdateInfo) {
|
|
51
|
+
let successfullyInstalled = false;
|
|
52
|
+
const handleUpdateRecieved = (info) => {
|
|
53
|
+
setUpdateInfo(info);
|
|
54
|
+
const savedMessage = info.message;
|
|
55
|
+
setTimeout(() => {
|
|
56
|
+
if (!successfullyInstalled) {
|
|
57
|
+
addItem({
|
|
58
|
+
type: MessageType.INFO,
|
|
59
|
+
text: savedMessage,
|
|
60
|
+
}, Date.now());
|
|
61
|
+
}
|
|
62
|
+
setUpdateInfo(null);
|
|
63
|
+
}, 60000);
|
|
64
|
+
};
|
|
65
|
+
const handleUpdateFailed = () => {
|
|
66
|
+
setUpdateInfo(null);
|
|
67
|
+
addItem({
|
|
68
|
+
type: MessageType.ERROR,
|
|
69
|
+
text: `Automatic update failed. Please try updating manually`,
|
|
70
|
+
}, Date.now());
|
|
71
|
+
};
|
|
72
|
+
const handleUpdateSuccess = () => {
|
|
73
|
+
successfullyInstalled = true;
|
|
74
|
+
setUpdateInfo(null);
|
|
75
|
+
addItem({
|
|
76
|
+
type: MessageType.INFO,
|
|
77
|
+
text: `Update successful! The new version will be used on your next run.`,
|
|
78
|
+
}, Date.now());
|
|
79
|
+
};
|
|
80
|
+
const handleUpdateInfo = (data) => {
|
|
81
|
+
addItem({
|
|
82
|
+
type: MessageType.INFO,
|
|
83
|
+
text: data.message,
|
|
84
|
+
}, Date.now());
|
|
85
|
+
};
|
|
86
|
+
updateEventEmitter.on('update-received', handleUpdateRecieved);
|
|
87
|
+
updateEventEmitter.on('update-failed', handleUpdateFailed);
|
|
88
|
+
updateEventEmitter.on('update-success', handleUpdateSuccess);
|
|
89
|
+
updateEventEmitter.on('update-info', handleUpdateInfo);
|
|
90
|
+
return () => {
|
|
91
|
+
updateEventEmitter.off('update-received', handleUpdateRecieved);
|
|
92
|
+
updateEventEmitter.off('update-failed', handleUpdateFailed);
|
|
93
|
+
updateEventEmitter.off('update-success', handleUpdateSuccess);
|
|
94
|
+
updateEventEmitter.off('update-info', handleUpdateInfo);
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=handleAutoUpdate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleAutoUpdate.js","sourceRoot":"","sources":["../../../src/utils/handleAutoUpdate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
export declare enum PackageManager {
|
|
7
|
+
NPM = "npm",
|
|
8
|
+
YARN = "yarn",
|
|
9
|
+
PNPM = "pnpm",
|
|
10
|
+
PNPX = "pnpx",
|
|
11
|
+
BUN = "bun",
|
|
12
|
+
BUNX = "bunx",
|
|
13
|
+
HOMEBREW = "homebrew",
|
|
14
|
+
NPX = "npx",
|
|
15
|
+
UNKNOWN = "unknown"
|
|
16
|
+
}
|
|
17
|
+
export interface InstallationInfo {
|
|
18
|
+
packageManager: PackageManager;
|
|
19
|
+
isGlobal: boolean;
|
|
20
|
+
updateCommand?: string;
|
|
21
|
+
updateMessage?: string;
|
|
22
|
+
}
|
|
23
|
+
export declare function getInstallationInfo(projectRoot: string, isAutoUpdateDisabled: boolean): InstallationInfo;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2025 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import { isGitRepository } from '@google/gemini-cli-core';
|
|
7
|
+
import * as fs from 'fs';
|
|
8
|
+
import * as path from 'path';
|
|
9
|
+
import * as childProcess from 'child_process';
|
|
10
|
+
export var PackageManager;
|
|
11
|
+
(function (PackageManager) {
|
|
12
|
+
PackageManager["NPM"] = "npm";
|
|
13
|
+
PackageManager["YARN"] = "yarn";
|
|
14
|
+
PackageManager["PNPM"] = "pnpm";
|
|
15
|
+
PackageManager["PNPX"] = "pnpx";
|
|
16
|
+
PackageManager["BUN"] = "bun";
|
|
17
|
+
PackageManager["BUNX"] = "bunx";
|
|
18
|
+
PackageManager["HOMEBREW"] = "homebrew";
|
|
19
|
+
PackageManager["NPX"] = "npx";
|
|
20
|
+
PackageManager["UNKNOWN"] = "unknown";
|
|
21
|
+
})(PackageManager || (PackageManager = {}));
|
|
22
|
+
export function getInstallationInfo(projectRoot, isAutoUpdateDisabled) {
|
|
23
|
+
const cliPath = process.argv[1];
|
|
24
|
+
if (!cliPath) {
|
|
25
|
+
return { packageManager: PackageManager.UNKNOWN, isGlobal: false };
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
// Normalize path separators to forward slashes for consistent matching.
|
|
29
|
+
const realPath = fs.realpathSync(cliPath).replace(/\\/g, '/');
|
|
30
|
+
const normalizedProjectRoot = projectRoot?.replace(/\\/g, '/');
|
|
31
|
+
const isGit = isGitRepository(process.cwd());
|
|
32
|
+
// Check for local git clone first
|
|
33
|
+
if (isGit &&
|
|
34
|
+
normalizedProjectRoot &&
|
|
35
|
+
realPath.startsWith(normalizedProjectRoot) &&
|
|
36
|
+
!realPath.includes('/node_modules/')) {
|
|
37
|
+
return {
|
|
38
|
+
packageManager: PackageManager.UNKNOWN, // Not managed by a package manager in this sense
|
|
39
|
+
isGlobal: false,
|
|
40
|
+
updateMessage: 'Running from a local git clone. Please update with "git pull".',
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// Check for npx/pnpx
|
|
44
|
+
if (realPath.includes('/.npm/_npx') || realPath.includes('/npm/_npx')) {
|
|
45
|
+
return {
|
|
46
|
+
packageManager: PackageManager.NPX,
|
|
47
|
+
isGlobal: false,
|
|
48
|
+
updateMessage: 'Running via npx, update not applicable.',
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
if (realPath.includes('/.pnpm/_pnpx')) {
|
|
52
|
+
return {
|
|
53
|
+
packageManager: PackageManager.PNPX,
|
|
54
|
+
isGlobal: false,
|
|
55
|
+
updateMessage: 'Running via pnpx, update not applicable.',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
// Check for Homebrew
|
|
59
|
+
if (process.platform === 'darwin') {
|
|
60
|
+
try {
|
|
61
|
+
// The package name in homebrew is gemini-cli
|
|
62
|
+
childProcess.execSync('brew list -1 | grep -q "^gemini-cli$"', {
|
|
63
|
+
stdio: 'ignore',
|
|
64
|
+
});
|
|
65
|
+
return {
|
|
66
|
+
packageManager: PackageManager.HOMEBREW,
|
|
67
|
+
isGlobal: true,
|
|
68
|
+
updateMessage: 'Installed via Homebrew. Please update with "brew upgrade".',
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
catch (_error) {
|
|
72
|
+
// Brew is not installed or gemini-cli is not installed via brew.
|
|
73
|
+
// Continue to the next check.
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Check for pnpm
|
|
77
|
+
if (realPath.includes('/.pnpm/global')) {
|
|
78
|
+
const updateCommand = 'pnpm add -g @google/gemini-cli@latest';
|
|
79
|
+
return {
|
|
80
|
+
packageManager: PackageManager.PNPM,
|
|
81
|
+
isGlobal: true,
|
|
82
|
+
updateCommand,
|
|
83
|
+
updateMessage: isAutoUpdateDisabled
|
|
84
|
+
? `Please run ${updateCommand} to update`
|
|
85
|
+
: 'Installed with pnpm. Attempting to automatically update now...',
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
// Check for yarn
|
|
89
|
+
if (realPath.includes('/.yarn/global')) {
|
|
90
|
+
const updateCommand = 'yarn global add @google/gemini-cli@latest';
|
|
91
|
+
return {
|
|
92
|
+
packageManager: PackageManager.YARN,
|
|
93
|
+
isGlobal: true,
|
|
94
|
+
updateCommand,
|
|
95
|
+
updateMessage: isAutoUpdateDisabled
|
|
96
|
+
? `Please run ${updateCommand} to update`
|
|
97
|
+
: 'Installed with yarn. Attempting to automatically update now...',
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// Check for bun
|
|
101
|
+
if (realPath.includes('/.bun/install/cache')) {
|
|
102
|
+
return {
|
|
103
|
+
packageManager: PackageManager.BUNX,
|
|
104
|
+
isGlobal: false,
|
|
105
|
+
updateMessage: 'Running via bunx, update not applicable.',
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
if (realPath.includes('/.bun/bin')) {
|
|
109
|
+
const updateCommand = 'bun add -g @google/gemini-cli@latest';
|
|
110
|
+
return {
|
|
111
|
+
packageManager: PackageManager.BUN,
|
|
112
|
+
isGlobal: true,
|
|
113
|
+
updateCommand,
|
|
114
|
+
updateMessage: isAutoUpdateDisabled
|
|
115
|
+
? `Please run ${updateCommand} to update`
|
|
116
|
+
: 'Installed with bun. Attempting to automatically update now...',
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
// Check for local install
|
|
120
|
+
if (normalizedProjectRoot &&
|
|
121
|
+
realPath.startsWith(`${normalizedProjectRoot}/node_modules`)) {
|
|
122
|
+
let pm = PackageManager.NPM;
|
|
123
|
+
if (fs.existsSync(path.join(projectRoot, 'yarn.lock'))) {
|
|
124
|
+
pm = PackageManager.YARN;
|
|
125
|
+
}
|
|
126
|
+
else if (fs.existsSync(path.join(projectRoot, 'pnpm-lock.yaml'))) {
|
|
127
|
+
pm = PackageManager.PNPM;
|
|
128
|
+
}
|
|
129
|
+
else if (fs.existsSync(path.join(projectRoot, 'bun.lockb'))) {
|
|
130
|
+
pm = PackageManager.BUN;
|
|
131
|
+
}
|
|
132
|
+
return {
|
|
133
|
+
packageManager: pm,
|
|
134
|
+
isGlobal: false,
|
|
135
|
+
updateMessage: "Locally installed. Please update via your project's package.json.",
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// Assume global npm
|
|
139
|
+
const updateCommand = 'npm install -g @google/gemini-cli@latest';
|
|
140
|
+
return {
|
|
141
|
+
packageManager: PackageManager.NPM,
|
|
142
|
+
isGlobal: true,
|
|
143
|
+
updateCommand,
|
|
144
|
+
updateMessage: isAutoUpdateDisabled
|
|
145
|
+
? `Please run ${updateCommand} to update`
|
|
146
|
+
: 'Installed with npm. Attempting to automatically update now...',
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
console.log(error);
|
|
151
|
+
return { packageManager: PackageManager.UNKNOWN, isGlobal: false };
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=installationInfo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installationInfo.js","sourceRoot":"","sources":["../../../src/utils/installationInfo.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,YAAY,MAAM,eAAe,CAAC;AAE9C,MAAM,CAAN,IAAY,cAUX;AAVD,WAAY,cAAc;IACxB,6BAAW,CAAA;IACX,+BAAa,CAAA;IACb,+BAAa,CAAA;IACb,+BAAa,CAAA;IACb,6BAAW,CAAA;IACX,+BAAa,CAAA;IACb,uCAAqB,CAAA;IACrB,6BAAW,CAAA;IACX,qCAAmB,CAAA;AACrB,CAAC,EAVW,cAAc,KAAd,cAAc,QAUzB;AASD,MAAM,UAAU,mBAAmB,CACjC,WAAmB,EACnB,oBAA6B;IAE7B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrE,CAAC;IAED,IAAI,CAAC;QACH,wEAAwE;QACxE,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9D,MAAM,qBAAqB,GAAG,WAAW,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC/D,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAE7C,kCAAkC;QAClC,IACE,KAAK;YACL,qBAAqB;YACrB,QAAQ,CAAC,UAAU,CAAC,qBAAqB,CAAC;YAC1C,CAAC,QAAQ,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EACpC,CAAC;YACD,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,OAAO,EAAE,iDAAiD;gBACzF,QAAQ,EAAE,KAAK;gBACf,aAAa,EACX,gEAAgE;aACnE,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACtE,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,GAAG;gBAClC,QAAQ,EAAE,KAAK;gBACf,aAAa,EAAE,yCAAyC;aACzD,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,IAAI;gBACnC,QAAQ,EAAE,KAAK;gBACf,aAAa,EAAE,0CAA0C;aAC1D,CAAC;QACJ,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,6CAA6C;gBAC7C,YAAY,CAAC,QAAQ,CAAC,uCAAuC,EAAE;oBAC7D,KAAK,EAAE,QAAQ;iBAChB,CAAC,CAAC;gBACH,OAAO;oBACL,cAAc,EAAE,cAAc,CAAC,QAAQ;oBACvC,QAAQ,EAAE,IAAI;oBACd,aAAa,EACX,4DAA4D;iBAC/D,CAAC;YACJ,CAAC;YAAC,OAAO,MAAM,EAAE,CAAC;gBAChB,iEAAiE;gBACjE,8BAA8B;YAChC,CAAC;QACH,CAAC;QAED,iBAAiB;QACjB,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,uCAAuC,CAAC;YAC9D,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,IAAI;gBACnC,QAAQ,EAAE,IAAI;gBACd,aAAa;gBACb,aAAa,EAAE,oBAAoB;oBACjC,CAAC,CAAC,cAAc,aAAa,YAAY;oBACzC,CAAC,CAAC,gEAAgE;aACrE,CAAC;QACJ,CAAC;QAED,iBAAiB;QACjB,IAAI,QAAQ,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACvC,MAAM,aAAa,GAAG,2CAA2C,CAAC;YAClE,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,IAAI;gBACnC,QAAQ,EAAE,IAAI;gBACd,aAAa;gBACb,aAAa,EAAE,oBAAoB;oBACjC,CAAC,CAAC,cAAc,aAAa,YAAY;oBACzC,CAAC,CAAC,gEAAgE;aACrE,CAAC;QACJ,CAAC;QAED,gBAAgB;QAChB,IAAI,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;YAC7C,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,IAAI;gBACnC,QAAQ,EAAE,KAAK;gBACf,aAAa,EAAE,0CAA0C;aAC1D,CAAC;QACJ,CAAC;QACD,IAAI,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;YACnC,MAAM,aAAa,GAAG,sCAAsC,CAAC;YAC7D,OAAO;gBACL,cAAc,EAAE,cAAc,CAAC,GAAG;gBAClC,QAAQ,EAAE,IAAI;gBACd,aAAa;gBACb,aAAa,EAAE,oBAAoB;oBACjC,CAAC,CAAC,cAAc,aAAa,YAAY;oBACzC,CAAC,CAAC,+DAA+D;aACpE,CAAC;QACJ,CAAC;QAED,0BAA0B;QAC1B,IACE,qBAAqB;YACrB,QAAQ,CAAC,UAAU,CAAC,GAAG,qBAAqB,eAAe,CAAC,EAC5D,CAAC;YACD,IAAI,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC;YAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;gBACvD,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC;YAC3B,CAAC;iBAAM,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC;gBACnE,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC;YAC3B,CAAC;iBAAM,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;gBAC9D,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC;YAC1B,CAAC;YACD,OAAO;gBACL,cAAc,EAAE,EAAE;gBAClB,QAAQ,EAAE,KAAK;gBACf,aAAa,EACX,mEAAmE;aACtE,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,aAAa,GAAG,0CAA0C,CAAC;QACjE,OAAO;YACL,cAAc,EAAE,cAAc,CAAC,GAAG;YAClC,QAAQ,EAAE,IAAI;YACd,aAAa;YACb,aAAa,EAAE,oBAAoB;gBACjC,CAAC,CAAC,cAAc,aAAa,YAAY;gBACzC,CAAC,CAAC,+DAA+D;SACpE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnB,OAAO,EAAE,cAAc,EAAE,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IACrE,CAAC;AACH,CAAC"}
|
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
(subpath (string-append (param "HOME_DIR") "/.npm"))
|
|
14
14
|
(subpath (string-append (param "HOME_DIR") "/.cache"))
|
|
15
15
|
(subpath (string-append (param "HOME_DIR") "/.gitconfig"))
|
|
16
|
+
;; Allow writes to included directories from --include-directories
|
|
17
|
+
(subpath (param "INCLUDE_DIR_0"))
|
|
18
|
+
(subpath (param "INCLUDE_DIR_1"))
|
|
19
|
+
(subpath (param "INCLUDE_DIR_2"))
|
|
20
|
+
(subpath (param "INCLUDE_DIR_3"))
|
|
21
|
+
(subpath (param "INCLUDE_DIR_4"))
|
|
16
22
|
(literal "/dev/stdout")
|
|
17
23
|
(literal "/dev/stderr")
|
|
18
24
|
(literal "/dev/null")
|
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
(subpath (string-append (param "HOME_DIR") "/.npm"))
|
|
14
14
|
(subpath (string-append (param "HOME_DIR") "/.cache"))
|
|
15
15
|
(subpath (string-append (param "HOME_DIR") "/.gitconfig"))
|
|
16
|
+
;; Allow writes to included directories from --include-directories
|
|
17
|
+
(subpath (param "INCLUDE_DIR_0"))
|
|
18
|
+
(subpath (param "INCLUDE_DIR_1"))
|
|
19
|
+
(subpath (param "INCLUDE_DIR_2"))
|
|
20
|
+
(subpath (param "INCLUDE_DIR_3"))
|
|
21
|
+
(subpath (param "INCLUDE_DIR_4"))
|
|
16
22
|
(literal "/dev/stdout")
|
|
17
23
|
(literal "/dev/stderr")
|
|
18
24
|
(literal "/dev/null")
|
|
@@ -13,6 +13,12 @@
|
|
|
13
13
|
(subpath (string-append (param "HOME_DIR") "/.npm"))
|
|
14
14
|
(subpath (string-append (param "HOME_DIR") "/.cache"))
|
|
15
15
|
(subpath (string-append (param "HOME_DIR") "/.gitconfig"))
|
|
16
|
+
;; Allow writes to included directories from --include-directories
|
|
17
|
+
(subpath (param "INCLUDE_DIR_0"))
|
|
18
|
+
(subpath (param "INCLUDE_DIR_1"))
|
|
19
|
+
(subpath (param "INCLUDE_DIR_2"))
|
|
20
|
+
(subpath (param "INCLUDE_DIR_3"))
|
|
21
|
+
(subpath (param "INCLUDE_DIR_4"))
|
|
16
22
|
(literal "/dev/stdout")
|
|
17
23
|
(literal "/dev/stderr")
|
|
18
24
|
(literal "/dev/null")
|
|
@@ -71,6 +71,12 @@
|
|
|
71
71
|
(subpath (string-append (param "HOME_DIR") "/.npm"))
|
|
72
72
|
(subpath (string-append (param "HOME_DIR") "/.cache"))
|
|
73
73
|
(subpath (string-append (param "HOME_DIR") "/.gitconfig"))
|
|
74
|
+
;; Allow writes to included directories from --include-directories
|
|
75
|
+
(subpath (param "INCLUDE_DIR_0"))
|
|
76
|
+
(subpath (param "INCLUDE_DIR_1"))
|
|
77
|
+
(subpath (param "INCLUDE_DIR_2"))
|
|
78
|
+
(subpath (param "INCLUDE_DIR_3"))
|
|
79
|
+
(subpath (param "INCLUDE_DIR_4"))
|
|
74
80
|
(literal "/dev/stdout")
|
|
75
81
|
(literal "/dev/stderr")
|
|
76
82
|
(literal "/dev/null")
|
|
@@ -71,6 +71,12 @@
|
|
|
71
71
|
(subpath (string-append (param "HOME_DIR") "/.npm"))
|
|
72
72
|
(subpath (string-append (param "HOME_DIR") "/.cache"))
|
|
73
73
|
(subpath (string-append (param "HOME_DIR") "/.gitconfig"))
|
|
74
|
+
;; Allow writes to included directories from --include-directories
|
|
75
|
+
(subpath (param "INCLUDE_DIR_0"))
|
|
76
|
+
(subpath (param "INCLUDE_DIR_1"))
|
|
77
|
+
(subpath (param "INCLUDE_DIR_2"))
|
|
78
|
+
(subpath (param "INCLUDE_DIR_3"))
|
|
79
|
+
(subpath (param "INCLUDE_DIR_4"))
|
|
74
80
|
(literal "/dev/stdout")
|
|
75
81
|
(literal "/dev/stderr")
|
|
76
82
|
(literal "/dev/null")
|
|
@@ -71,6 +71,12 @@
|
|
|
71
71
|
(subpath (string-append (param "HOME_DIR") "/.npm"))
|
|
72
72
|
(subpath (string-append (param "HOME_DIR") "/.cache"))
|
|
73
73
|
(subpath (string-append (param "HOME_DIR") "/.gitconfig"))
|
|
74
|
+
;; Allow writes to included directories from --include-directories
|
|
75
|
+
(subpath (param "INCLUDE_DIR_0"))
|
|
76
|
+
(subpath (param "INCLUDE_DIR_1"))
|
|
77
|
+
(subpath (param "INCLUDE_DIR_2"))
|
|
78
|
+
(subpath (param "INCLUDE_DIR_3"))
|
|
79
|
+
(subpath (param "INCLUDE_DIR_4"))
|
|
74
80
|
(literal "/dev/stdout")
|
|
75
81
|
(literal "/dev/stderr")
|
|
76
82
|
(literal "/dev/null")
|