@google/gemini-cli 0.21.0-nightly.20251217.db643e916 → 0.21.0-nightly.20251219.70696e364
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/dist/google-gemini-cli-0.21.0-nightly.20251218.739c02bd6.tgz +0 -0
- package/dist/package.json +2 -2
- package/dist/src/commands/extensions/disable.test.js.map +1 -1
- package/dist/src/commands/extensions/enable.test.js.map +1 -1
- package/dist/src/commands/extensions/link.test.js.map +1 -1
- package/dist/src/commands/extensions/settings.js +2 -2
- package/dist/src/commands/extensions/settings.js.map +1 -1
- package/dist/src/commands/extensions/uninstall.test.js.map +1 -1
- package/dist/src/commands/extensions/validate.js +1 -1
- package/dist/src/commands/extensions/validate.js.map +1 -1
- package/dist/src/commands/mcp/add.test.js +1 -1
- package/dist/src/commands/mcp/add.test.js.map +1 -1
- package/dist/src/config/config.js +4 -3
- package/dist/src/config/config.js.map +1 -1
- package/dist/src/config/config.test.js +1 -1
- package/dist/src/config/config.test.js.map +1 -1
- package/dist/src/config/extension-manager.d.ts +1 -2
- package/dist/src/config/extension-manager.js +6 -6
- package/dist/src/config/extension-manager.js.map +1 -1
- package/dist/src/config/extension.test.js +4 -4
- package/dist/src/config/extension.test.js.map +1 -1
- package/dist/src/config/extensions/github.js +1 -1
- package/dist/src/config/extensions/github.js.map +1 -1
- package/dist/src/config/extensions/github.test.js +2 -2
- package/dist/src/config/extensions/github.test.js.map +1 -1
- package/dist/src/config/extensions/update.js +1 -1
- package/dist/src/config/extensions/update.js.map +1 -1
- package/dist/src/config/extensions/update.test.js +8 -8
- package/dist/src/config/extensions/update.test.js.map +1 -1
- package/dist/src/config/keyBindings.js +4 -1
- package/dist/src/config/keyBindings.js.map +1 -1
- package/dist/src/config/settings.test.js +4 -4
- package/dist/src/config/settings.test.js.map +1 -1
- package/dist/src/config/settingsSchema.d.ts +2 -16
- package/dist/src/config/settingsSchema.js +11 -12
- package/dist/src/config/settingsSchema.js.map +1 -1
- package/dist/src/config/settingsSchema.test.js +11 -11
- package/dist/src/config/settingsSchema.test.js.map +1 -1
- package/dist/src/gemini.js +2 -13
- package/dist/src/gemini.js.map +1 -1
- package/dist/src/gemini.test.js +20 -8
- package/dist/src/gemini.test.js.map +1 -1
- package/dist/src/gemini_cleanup.test.js +1 -0
- package/dist/src/gemini_cleanup.test.js.map +1 -1
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/nonInteractiveCli.js +2 -1
- package/dist/src/nonInteractiveCli.js.map +1 -1
- package/dist/src/test-utils/render.js +2 -0
- package/dist/src/test-utils/render.js.map +1 -1
- package/dist/src/ui/AppContainer.js +10 -19
- package/dist/src/ui/AppContainer.js.map +1 -1
- package/dist/src/ui/AppContainer.test.js +156 -30
- package/dist/src/ui/AppContainer.test.js.map +1 -1
- package/dist/src/ui/commands/authCommand.js +30 -3
- package/dist/src/ui/commands/authCommand.js.map +1 -1
- package/dist/src/ui/commands/authCommand.test.js +72 -4
- package/dist/src/ui/commands/authCommand.test.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.js +9 -0
- package/dist/src/ui/commands/bugCommand.js.map +1 -1
- package/dist/src/ui/commands/bugCommand.test.js +13 -0
- package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.js +11 -19
- package/dist/src/ui/commands/chatCommand.js.map +1 -1
- package/dist/src/ui/commands/chatCommand.test.js +4 -5
- package/dist/src/ui/commands/chatCommand.test.js.map +1 -1
- package/dist/src/ui/commands/copyCommand.js +1 -1
- package/dist/src/ui/commands/copyCommand.js.map +1 -1
- package/dist/src/ui/commands/hooksCommand.js +1 -1
- package/dist/src/ui/commands/hooksCommand.js.map +1 -1
- package/dist/src/ui/commands/hooksCommand.test.js +8 -0
- package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.js +1 -1
- package/dist/src/ui/commands/mcpCommand.js.map +1 -1
- package/dist/src/ui/commands/mcpCommand.test.js +1 -1
- package/dist/src/ui/commands/mcpCommand.test.js.map +1 -1
- package/dist/src/ui/commands/memoryCommand.js +1 -1
- package/dist/src/ui/commands/memoryCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.js +10 -5
- package/dist/src/ui/commands/modelCommand.js.map +1 -1
- package/dist/src/ui/commands/modelCommand.test.js +12 -1
- package/dist/src/ui/commands/modelCommand.test.js.map +1 -1
- package/dist/src/ui/commands/restoreCommand.js +1 -1
- package/dist/src/ui/commands/restoreCommand.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.js +2 -6
- package/dist/src/ui/commands/statsCommand.js.map +1 -1
- package/dist/src/ui/commands/statsCommand.test.js +14 -0
- package/dist/src/ui/commands/statsCommand.test.js.map +1 -1
- package/dist/src/ui/commands/types.d.ts +8 -1
- package/dist/src/ui/commands/types.js.map +1 -1
- package/dist/src/ui/components/Footer.js +2 -2
- package/dist/src/ui/components/Footer.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.js +4 -1
- package/dist/src/ui/components/InputPrompt.js.map +1 -1
- package/dist/src/ui/components/InputPrompt.test.js +49 -0
- package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
- package/dist/src/ui/components/LogoutConfirmationDialog.d.ts +15 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.js +37 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.js.map +1 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.test.js +59 -0
- package/dist/src/ui/components/LogoutConfirmationDialog.test.js.map +1 -0
- package/dist/src/ui/components/ModelDialog.js +116 -39
- package/dist/src/ui/components/ModelDialog.js.map +1 -1
- package/dist/src/ui/components/ModelDialog.test.js +157 -148
- package/dist/src/ui/components/ModelDialog.test.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.js +68 -14
- package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
- package/dist/src/ui/components/ModelStatsDisplay.test.js +53 -2
- package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js +7 -7
- package/dist/src/ui/components/MultiFolderTrustDialog.test.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.js +14 -12
- package/dist/src/ui/components/ProQuotaDialog.js.map +1 -1
- package/dist/src/ui/components/ProQuotaDialog.test.js +20 -21
- package/dist/src/ui/components/ProQuotaDialog.test.js.map +1 -1
- package/dist/src/ui/components/SettingsDialog.js +1 -1
- package/dist/src/ui/components/Table.d.ts +21 -0
- package/dist/src/ui/components/Table.js +7 -0
- package/dist/src/ui/components/Table.js.map +1 -0
- package/dist/src/ui/components/Table.test.d.ts +6 -0
- package/dist/src/ui/components/Table.test.js +53 -0
- package/dist/src/ui/components/Table.test.js.map +1 -0
- package/dist/src/ui/components/ThemeDialog.js +63 -17
- package/dist/src/ui/components/ThemeDialog.js.map +1 -1
- package/dist/src/ui/components/ThemeDialog.test.js +65 -0
- package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.d.ts +1 -1
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js +1 -1
- package/dist/src/ui/components/shared/DescriptiveRadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +4 -1
- package/dist/src/ui/components/shared/RadioButtonSelect.js +11 -10
- package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
- package/dist/src/ui/components/shared/text-buffer.js +0 -2
- package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
- package/dist/src/ui/components/views/HooksList.d.ts +2 -0
- package/dist/src/ui/components/views/HooksList.js +5 -3
- package/dist/src/ui/components/views/HooksList.js.map +1 -1
- package/dist/src/ui/constants/tips.js +0 -2
- package/dist/src/ui/constants/tips.js.map +1 -1
- package/dist/src/ui/constants.d.ts +0 -3
- package/dist/src/ui/constants.js +0 -6
- package/dist/src/ui/constants.js.map +1 -1
- package/dist/src/ui/contexts/UIStateContext.d.ts +2 -0
- package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
- package/dist/src/ui/contexts/VimModeContext.js +1 -1
- package/dist/src/ui/contexts/VimModeContext.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js +18 -1
- package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js +1 -1
- package/dist/src/ui/hooks/slashCommandProcessor.test.js.map +1 -1
- package/dist/src/ui/hooks/useFolderTrust.test.js +1 -1
- package/dist/src/ui/hooks/useFolderTrust.test.js.map +1 -1
- package/dist/src/ui/hooks/useGeminiStream.js +2 -2
- package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +2 -2
- package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -1
- package/dist/src/ui/hooks/usePromptCompletion.js +0 -2
- package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.js +20 -21
- package/dist/src/ui/hooks/useQuotaAndFallback.js.map +1 -1
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js +23 -23
- package/dist/src/ui/hooks/useQuotaAndFallback.test.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.js +22 -10
- package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
- package/dist/src/ui/hooks/useSlashCompletion.test.js +115 -5
- package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
- package/dist/src/ui/themes/color-utils.d.ts +1 -0
- package/dist/src/ui/themes/color-utils.js +13 -0
- package/dist/src/ui/themes/color-utils.js.map +1 -1
- package/dist/src/ui/themes/color-utils.test.js +20 -1
- package/dist/src/ui/themes/color-utils.test.js.map +1 -1
- package/dist/src/ui/themes/shades-of-purple.js +1 -1
- package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
- package/dist/src/ui/themes/theme-manager.d.ts +5 -0
- package/dist/src/ui/themes/theme-manager.js +7 -0
- package/dist/src/ui/themes/theme-manager.js.map +1 -1
- package/dist/src/ui/themes/theme.d.ts +12 -0
- package/dist/src/ui/themes/theme.js +31 -1
- package/dist/src/ui/themes/theme.js.map +1 -1
- package/dist/src/ui/themes/theme.test.js +23 -0
- package/dist/src/ui/themes/theme.test.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.d.ts +2 -2
- package/dist/src/ui/utils/clipboardUtils.js +50 -4
- package/dist/src/ui/utils/clipboardUtils.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.test.js +12 -12
- package/dist/src/ui/utils/clipboardUtils.test.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.windows.test.d.ts +6 -0
- package/dist/src/ui/utils/clipboardUtils.windows.test.js +52 -0
- package/dist/src/ui/utils/clipboardUtils.windows.test.js.map +1 -0
- package/dist/src/ui/utils/terminalCapabilityManager.d.ts +38 -0
- package/dist/src/ui/utils/terminalCapabilityManager.js +190 -0
- package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -0
- package/dist/src/ui/utils/terminalCapabilityManager.test.d.ts +6 -0
- package/dist/src/ui/utils/terminalCapabilityManager.test.js +136 -0
- package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -0
- package/dist/src/ui/utils/terminalSetup.js +2 -2
- package/dist/src/ui/utils/terminalSetup.js.map +1 -1
- package/dist/src/ui/utils/terminalSetup.test.js +4 -2
- package/dist/src/ui/utils/terminalSetup.test.js.map +1 -1
- package/dist/src/utils/terminalTheme.d.ts +15 -0
- package/dist/src/utils/terminalTheme.js +50 -0
- package/dist/src/utils/terminalTheme.js.map +1 -0
- package/dist/src/zed-integration/zedIntegration.js +1 -1
- package/dist/src/zed-integration/zedIntegration.js.map +1 -1
- package/dist/src/zed-integration/zedIntegration.test.js +0 -1
- package/dist/src/zed-integration/zedIntegration.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/google-gemini-cli-0.21.0-nightly.20251216.bb0c0d8ee.tgz +0 -0
- package/dist/src/ui/utils/kittyProtocolDetector.d.ts +0 -17
- package/dist/src/ui/utils/kittyProtocolDetector.js +0 -111
- package/dist/src/ui/utils/kittyProtocolDetector.js.map +0 -1
- package/dist/src/ui/utils/kittyProtocolDetector.test.js +0 -113
- package/dist/src/ui/utils/kittyProtocolDetector.test.js.map +0 -1
- /package/dist/src/ui/{utils/kittyProtocolDetector.test.d.ts → components/LogoutConfirmationDialog.test.d.ts} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@google/gemini-cli",
|
|
3
|
-
"version": "0.21.0-nightly.
|
|
3
|
+
"version": "0.21.0-nightly.20251219.70696e364",
|
|
4
4
|
"description": "Gemini CLI",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -26,11 +26,11 @@
|
|
|
26
26
|
"dist"
|
|
27
27
|
],
|
|
28
28
|
"config": {
|
|
29
|
-
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.21.0-nightly.
|
|
29
|
+
"sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.21.0-nightly.20251219.70696e364"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
32
|
"@agentclientprotocol/sdk": "^0.11.0",
|
|
33
|
-
"@google/gemini-cli-core": "0.21.0-nightly.
|
|
33
|
+
"@google/gemini-cli-core": "0.21.0-nightly.20251219.70696e364",
|
|
34
34
|
"@google/genai": "1.30.0",
|
|
35
35
|
"@iarna/toml": "^2.2.5",
|
|
36
36
|
"@modelcontextprotocol/sdk": "^1.23.0",
|
|
Binary file
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Detects Kitty keyboard protocol support.
|
|
8
|
-
* Definitive document about this protocol lives at https://sw.kovidgoyal.net/kitty/keyboard-protocol/
|
|
9
|
-
* This function should be called once at app startup.
|
|
10
|
-
*/
|
|
11
|
-
export declare function detectAndEnableKittyProtocol(): Promise<void>;
|
|
12
|
-
export declare function isKittyProtocolEnabled(): boolean;
|
|
13
|
-
/**
|
|
14
|
-
* This is exported so we can reenable this after exiting an editor which might
|
|
15
|
-
* change the mode.
|
|
16
|
-
*/
|
|
17
|
-
export declare function enableSupportedProtocol(): void;
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import * as fs from 'node:fs';
|
|
7
|
-
let detectionComplete = false;
|
|
8
|
-
let kittySupported = false;
|
|
9
|
-
let kittyEnabled = false;
|
|
10
|
-
/**
|
|
11
|
-
* Detects Kitty keyboard protocol support.
|
|
12
|
-
* Definitive document about this protocol lives at https://sw.kovidgoyal.net/kitty/keyboard-protocol/
|
|
13
|
-
* This function should be called once at app startup.
|
|
14
|
-
*/
|
|
15
|
-
export async function detectAndEnableKittyProtocol() {
|
|
16
|
-
if (detectionComplete) {
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
19
|
-
return new Promise((resolve) => {
|
|
20
|
-
if (!process.stdin.isTTY || !process.stdout.isTTY) {
|
|
21
|
-
detectionComplete = true;
|
|
22
|
-
resolve();
|
|
23
|
-
return;
|
|
24
|
-
}
|
|
25
|
-
const originalRawMode = process.stdin.isRaw;
|
|
26
|
-
if (!originalRawMode) {
|
|
27
|
-
process.stdin.setRawMode(true);
|
|
28
|
-
}
|
|
29
|
-
let responseBuffer = '';
|
|
30
|
-
let progressiveEnhancementReceived = false;
|
|
31
|
-
let timeoutId;
|
|
32
|
-
const finish = () => {
|
|
33
|
-
if (timeoutId !== undefined) {
|
|
34
|
-
clearTimeout(timeoutId);
|
|
35
|
-
timeoutId = undefined;
|
|
36
|
-
}
|
|
37
|
-
process.stdin.removeListener('data', handleData);
|
|
38
|
-
if (!originalRawMode) {
|
|
39
|
-
process.stdin.setRawMode(false);
|
|
40
|
-
}
|
|
41
|
-
if (kittySupported) {
|
|
42
|
-
enableSupportedProtocol();
|
|
43
|
-
process.on('exit', disableAllProtocols);
|
|
44
|
-
process.on('SIGTERM', disableAllProtocols);
|
|
45
|
-
}
|
|
46
|
-
detectionComplete = true;
|
|
47
|
-
resolve();
|
|
48
|
-
};
|
|
49
|
-
const handleData = (data) => {
|
|
50
|
-
if (timeoutId === undefined) {
|
|
51
|
-
// Race condition. We have already timed out.
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
responseBuffer += data.toString();
|
|
55
|
-
// Check for progressive enhancement response (CSI ? <flags> u)
|
|
56
|
-
if (responseBuffer.includes('\x1b[?') && responseBuffer.includes('u')) {
|
|
57
|
-
progressiveEnhancementReceived = true;
|
|
58
|
-
// Give more time to get the full set of kitty responses if we have an
|
|
59
|
-
// indication the terminal probably supports kitty and we just need to
|
|
60
|
-
// wait a bit longer for a response.
|
|
61
|
-
clearTimeout(timeoutId);
|
|
62
|
-
timeoutId = setTimeout(finish, 1000);
|
|
63
|
-
}
|
|
64
|
-
// Check for device attributes response (CSI ? <attrs> c)
|
|
65
|
-
if (responseBuffer.includes('\x1b[?') && responseBuffer.includes('c')) {
|
|
66
|
-
if (progressiveEnhancementReceived) {
|
|
67
|
-
kittySupported = true;
|
|
68
|
-
}
|
|
69
|
-
finish();
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
process.stdin.on('data', handleData);
|
|
73
|
-
// Query progressive enhancement and device attributes
|
|
74
|
-
fs.writeSync(process.stdout.fd, '\x1b[?u\x1b[c');
|
|
75
|
-
// Timeout after 200ms
|
|
76
|
-
// When a iterm2 terminal does not have focus this can take over 90s on a
|
|
77
|
-
// fast macbook so we need a somewhat longer threshold than would be ideal.
|
|
78
|
-
timeoutId = setTimeout(finish, 200);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
import { enableKittyKeyboardProtocol, disableKittyKeyboardProtocol, } from '@google/gemini-cli-core';
|
|
82
|
-
export function isKittyProtocolEnabled() {
|
|
83
|
-
return kittyEnabled;
|
|
84
|
-
}
|
|
85
|
-
function disableAllProtocols() {
|
|
86
|
-
try {
|
|
87
|
-
if (kittyEnabled) {
|
|
88
|
-
disableKittyKeyboardProtocol();
|
|
89
|
-
kittyEnabled = false;
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
catch {
|
|
93
|
-
// Ignore
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* This is exported so we can reenable this after exiting an editor which might
|
|
98
|
-
* change the mode.
|
|
99
|
-
*/
|
|
100
|
-
export function enableSupportedProtocol() {
|
|
101
|
-
try {
|
|
102
|
-
if (kittySupported) {
|
|
103
|
-
enableKittyKeyboardProtocol();
|
|
104
|
-
kittyEnabled = true;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
catch {
|
|
108
|
-
// Ignore
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
//# sourceMappingURL=kittyProtocolDetector.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kittyProtocolDetector.js","sourceRoot":"","sources":["../../../../src/ui/utils/kittyProtocolDetector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2025 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
7
|
-
// Mock dependencies
|
|
8
|
-
const mocks = vi.hoisted(() => ({
|
|
9
|
-
writeSync: vi.fn(),
|
|
10
|
-
enableKittyKeyboardProtocol: vi.fn(),
|
|
11
|
-
disableKittyKeyboardProtocol: vi.fn(),
|
|
12
|
-
}));
|
|
13
|
-
vi.mock('node:fs', () => ({
|
|
14
|
-
writeSync: mocks.writeSync,
|
|
15
|
-
}));
|
|
16
|
-
vi.mock('@google/gemini-cli-core', () => ({
|
|
17
|
-
enableKittyKeyboardProtocol: mocks.enableKittyKeyboardProtocol,
|
|
18
|
-
disableKittyKeyboardProtocol: mocks.disableKittyKeyboardProtocol,
|
|
19
|
-
}));
|
|
20
|
-
describe('kittyProtocolDetector', () => {
|
|
21
|
-
let originalStdin;
|
|
22
|
-
let originalStdout;
|
|
23
|
-
let stdinListeners = {};
|
|
24
|
-
// Module functions
|
|
25
|
-
let detectAndEnableKittyProtocol;
|
|
26
|
-
let isKittyProtocolEnabled;
|
|
27
|
-
let enableSupportedProtocol;
|
|
28
|
-
beforeEach(async () => {
|
|
29
|
-
vi.resetModules();
|
|
30
|
-
vi.resetAllMocks();
|
|
31
|
-
vi.useFakeTimers();
|
|
32
|
-
const mod = await import('./kittyProtocolDetector.js');
|
|
33
|
-
detectAndEnableKittyProtocol = mod.detectAndEnableKittyProtocol;
|
|
34
|
-
isKittyProtocolEnabled = mod.isKittyProtocolEnabled;
|
|
35
|
-
enableSupportedProtocol = mod.enableSupportedProtocol;
|
|
36
|
-
// Mock process.stdin and stdout
|
|
37
|
-
originalStdin = process.stdin;
|
|
38
|
-
originalStdout = process.stdout;
|
|
39
|
-
stdinListeners = {};
|
|
40
|
-
Object.defineProperty(process, 'stdin', {
|
|
41
|
-
value: {
|
|
42
|
-
isTTY: true,
|
|
43
|
-
isRaw: false,
|
|
44
|
-
setRawMode: vi.fn(),
|
|
45
|
-
on: vi.fn((event, handler) => {
|
|
46
|
-
stdinListeners[event] = handler;
|
|
47
|
-
}),
|
|
48
|
-
removeListener: vi.fn(),
|
|
49
|
-
},
|
|
50
|
-
configurable: true,
|
|
51
|
-
});
|
|
52
|
-
Object.defineProperty(process, 'stdout', {
|
|
53
|
-
value: {
|
|
54
|
-
isTTY: true,
|
|
55
|
-
fd: 1,
|
|
56
|
-
},
|
|
57
|
-
configurable: true,
|
|
58
|
-
});
|
|
59
|
-
});
|
|
60
|
-
afterEach(() => {
|
|
61
|
-
Object.defineProperty(process, 'stdin', { value: originalStdin });
|
|
62
|
-
Object.defineProperty(process, 'stdout', { value: originalStdout });
|
|
63
|
-
vi.useRealTimers();
|
|
64
|
-
});
|
|
65
|
-
it('should resolve immediately if not TTY', async () => {
|
|
66
|
-
Object.defineProperty(process.stdin, 'isTTY', { value: false });
|
|
67
|
-
await detectAndEnableKittyProtocol();
|
|
68
|
-
expect(mocks.writeSync).not.toHaveBeenCalled();
|
|
69
|
-
});
|
|
70
|
-
it('should enable protocol if response indicates support', async () => {
|
|
71
|
-
const promise = detectAndEnableKittyProtocol();
|
|
72
|
-
// Simulate response
|
|
73
|
-
expect(stdinListeners['data']).toBeDefined();
|
|
74
|
-
// Send progressive enhancement response
|
|
75
|
-
stdinListeners['data'](Buffer.from('\x1b[?u'));
|
|
76
|
-
// Send device attributes response
|
|
77
|
-
stdinListeners['data'](Buffer.from('\x1b[?c'));
|
|
78
|
-
await promise;
|
|
79
|
-
expect(mocks.enableKittyKeyboardProtocol).toHaveBeenCalled();
|
|
80
|
-
expect(isKittyProtocolEnabled()).toBe(true);
|
|
81
|
-
});
|
|
82
|
-
it('should not enable protocol if timeout occurs', async () => {
|
|
83
|
-
const promise = detectAndEnableKittyProtocol();
|
|
84
|
-
// Fast forward time past timeout
|
|
85
|
-
vi.advanceTimersByTime(300);
|
|
86
|
-
await promise;
|
|
87
|
-
expect(mocks.enableKittyKeyboardProtocol).not.toHaveBeenCalled();
|
|
88
|
-
});
|
|
89
|
-
it('should wait longer if progressive enhancement received but not attributes', async () => {
|
|
90
|
-
const promise = detectAndEnableKittyProtocol();
|
|
91
|
-
// Send progressive enhancement response
|
|
92
|
-
stdinListeners['data'](Buffer.from('\x1b[?u'));
|
|
93
|
-
// Should not resolve yet
|
|
94
|
-
vi.advanceTimersByTime(300); // Original timeout passed
|
|
95
|
-
// Send device attributes response late
|
|
96
|
-
stdinListeners['data'](Buffer.from('\x1b[?c'));
|
|
97
|
-
await promise;
|
|
98
|
-
expect(mocks.enableKittyKeyboardProtocol).toHaveBeenCalled();
|
|
99
|
-
});
|
|
100
|
-
it('should handle re-enabling protocol', async () => {
|
|
101
|
-
// First, simulate successful detection to set kittySupported = true
|
|
102
|
-
const promise = detectAndEnableKittyProtocol();
|
|
103
|
-
stdinListeners['data'](Buffer.from('\x1b[?u'));
|
|
104
|
-
stdinListeners['data'](Buffer.from('\x1b[?c'));
|
|
105
|
-
await promise;
|
|
106
|
-
// Reset mocks to clear previous calls
|
|
107
|
-
mocks.enableKittyKeyboardProtocol.mockClear();
|
|
108
|
-
// Now test re-enabling
|
|
109
|
-
enableSupportedProtocol();
|
|
110
|
-
expect(mocks.enableKittyKeyboardProtocol).toHaveBeenCalled();
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
//# sourceMappingURL=kittyProtocolDetector.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kittyProtocolDetector.test.js","sourceRoot":"","sources":["../../../../src/ui/utils/kittyProtocolDetector.test.ts"],"names":[],"mappings":"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"}
|
|
File without changes
|