@google/gemini-cli 0.21.0-nightly.20251218.739c02bd6 → 0.21.0-nightly.20251220.41a1a3eed

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.
Files changed (123) hide show
  1. package/dist/google-gemini-cli-0.21.0-nightly.20251219.70696e364.tgz +0 -0
  2. package/dist/package.json +2 -2
  3. package/dist/src/config/config.js +12 -2
  4. package/dist/src/config/config.js.map +1 -1
  5. package/dist/src/config/extension-manager.d.ts +0 -1
  6. package/dist/src/config/extension-manager.js +1 -1
  7. package/dist/src/config/extension-manager.js.map +1 -1
  8. package/dist/src/config/settingsSchema.d.ts +30 -6
  9. package/dist/src/config/settingsSchema.js +38 -1
  10. package/dist/src/config/settingsSchema.js.map +1 -1
  11. package/dist/src/config/settingsSchema.test.js +12 -1
  12. package/dist/src/config/settingsSchema.test.js.map +1 -1
  13. package/dist/src/gemini.js +2 -13
  14. package/dist/src/gemini.js.map +1 -1
  15. package/dist/src/gemini.test.js +20 -8
  16. package/dist/src/gemini.test.js.map +1 -1
  17. package/dist/src/gemini_cleanup.test.js +1 -0
  18. package/dist/src/gemini_cleanup.test.js.map +1 -1
  19. package/dist/src/generated/git-commit.d.ts +2 -2
  20. package/dist/src/generated/git-commit.js +2 -2
  21. package/dist/src/test-utils/render.js +1 -0
  22. package/dist/src/test-utils/render.js.map +1 -1
  23. package/dist/src/ui/AppContainer.js +4 -2
  24. package/dist/src/ui/AppContainer.js.map +1 -1
  25. package/dist/src/ui/commands/bugCommand.js +9 -0
  26. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  27. package/dist/src/ui/commands/bugCommand.test.js +13 -0
  28. package/dist/src/ui/commands/bugCommand.test.js.map +1 -1
  29. package/dist/src/ui/commands/hooksCommand.js +1 -1
  30. package/dist/src/ui/commands/hooksCommand.js.map +1 -1
  31. package/dist/src/ui/commands/hooksCommand.test.js +8 -0
  32. package/dist/src/ui/commands/hooksCommand.test.js.map +1 -1
  33. package/dist/src/ui/commands/memoryCommand.js +12 -1
  34. package/dist/src/ui/commands/memoryCommand.js.map +1 -1
  35. package/dist/src/ui/commands/memoryCommand.test.js +27 -1
  36. package/dist/src/ui/commands/memoryCommand.test.js.map +1 -1
  37. package/dist/src/ui/components/Composer.js +3 -1
  38. package/dist/src/ui/components/Composer.js.map +1 -1
  39. package/dist/src/ui/components/InputPrompt.js +4 -1
  40. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  41. package/dist/src/ui/components/InputPrompt.test.js +49 -0
  42. package/dist/src/ui/components/InputPrompt.test.js.map +1 -1
  43. package/dist/src/ui/components/ModelStatsDisplay.js +68 -14
  44. package/dist/src/ui/components/ModelStatsDisplay.js.map +1 -1
  45. package/dist/src/ui/components/ModelStatsDisplay.test.js +53 -2
  46. package/dist/src/ui/components/ModelStatsDisplay.test.js.map +1 -1
  47. package/dist/src/ui/components/ShellConfirmationDialog.js +4 -4
  48. package/dist/src/ui/components/ShellConfirmationDialog.js.map +1 -1
  49. package/dist/src/ui/components/ShellConfirmationDialog.test.js +4 -4
  50. package/dist/src/ui/components/ShellConfirmationDialog.test.js.map +1 -1
  51. package/dist/src/ui/components/Table.d.ts +21 -0
  52. package/dist/src/ui/components/Table.js +7 -0
  53. package/dist/src/ui/components/Table.js.map +1 -0
  54. package/dist/src/ui/components/Table.test.js +53 -0
  55. package/dist/src/ui/components/Table.test.js.map +1 -0
  56. package/dist/src/ui/components/ThemeDialog.js +63 -17
  57. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  58. package/dist/src/ui/components/ThemeDialog.test.js +65 -0
  59. package/dist/src/ui/components/ThemeDialog.test.js.map +1 -1
  60. package/dist/src/ui/components/messages/ToolConfirmationMessage.js +51 -39
  61. package/dist/src/ui/components/messages/ToolConfirmationMessage.js.map +1 -1
  62. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js +40 -4
  63. package/dist/src/ui/components/messages/ToolConfirmationMessage.test.js.map +1 -1
  64. package/dist/src/ui/components/messages/ToolGroupMessage.test.js +45 -1
  65. package/dist/src/ui/components/messages/ToolGroupMessage.test.js.map +1 -1
  66. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +4 -1
  67. package/dist/src/ui/components/shared/RadioButtonSelect.js +11 -10
  68. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  69. package/dist/src/ui/components/shared/text-buffer.js +0 -2
  70. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  71. package/dist/src/ui/components/views/HooksList.d.ts +2 -0
  72. package/dist/src/ui/components/views/HooksList.js +5 -3
  73. package/dist/src/ui/components/views/HooksList.js.map +1 -1
  74. package/dist/src/ui/constants.d.ts +0 -3
  75. package/dist/src/ui/constants.js +0 -6
  76. package/dist/src/ui/constants.js.map +1 -1
  77. package/dist/src/ui/contexts/UIStateContext.d.ts +2 -0
  78. package/dist/src/ui/contexts/UIStateContext.js.map +1 -1
  79. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js +2 -2
  80. package/dist/src/ui/hooks/useKittyKeyboardProtocol.js.map +1 -1
  81. package/dist/src/ui/hooks/usePromptCompletion.js +0 -2
  82. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -1
  83. package/dist/src/ui/hooks/useSlashCompletion.js +24 -7
  84. package/dist/src/ui/hooks/useSlashCompletion.js.map +1 -1
  85. package/dist/src/ui/hooks/useSlashCompletion.test.js +80 -4
  86. package/dist/src/ui/hooks/useSlashCompletion.test.js.map +1 -1
  87. package/dist/src/ui/themes/color-utils.d.ts +1 -0
  88. package/dist/src/ui/themes/color-utils.js +13 -0
  89. package/dist/src/ui/themes/color-utils.js.map +1 -1
  90. package/dist/src/ui/themes/color-utils.test.js +20 -1
  91. package/dist/src/ui/themes/color-utils.test.js.map +1 -1
  92. package/dist/src/ui/themes/shades-of-purple.js +1 -1
  93. package/dist/src/ui/themes/shades-of-purple.js.map +1 -1
  94. package/dist/src/ui/themes/theme-manager.d.ts +5 -0
  95. package/dist/src/ui/themes/theme-manager.js +7 -0
  96. package/dist/src/ui/themes/theme-manager.js.map +1 -1
  97. package/dist/src/ui/themes/theme.d.ts +12 -0
  98. package/dist/src/ui/themes/theme.js +31 -1
  99. package/dist/src/ui/themes/theme.js.map +1 -1
  100. package/dist/src/ui/themes/theme.test.js +23 -0
  101. package/dist/src/ui/themes/theme.test.js.map +1 -1
  102. package/dist/src/ui/utils/terminalCapabilityManager.d.ts +38 -0
  103. package/dist/src/ui/utils/terminalCapabilityManager.js +190 -0
  104. package/dist/src/ui/utils/terminalCapabilityManager.js.map +1 -0
  105. package/dist/src/ui/utils/terminalCapabilityManager.test.d.ts +6 -0
  106. package/dist/src/ui/utils/terminalCapabilityManager.test.js +136 -0
  107. package/dist/src/ui/utils/terminalCapabilityManager.test.js.map +1 -0
  108. package/dist/src/ui/utils/terminalSetup.js +2 -2
  109. package/dist/src/ui/utils/terminalSetup.js.map +1 -1
  110. package/dist/src/ui/utils/terminalSetup.test.js +4 -2
  111. package/dist/src/ui/utils/terminalSetup.test.js.map +1 -1
  112. package/dist/src/utils/terminalTheme.d.ts +15 -0
  113. package/dist/src/utils/terminalTheme.js +50 -0
  114. package/dist/src/utils/terminalTheme.js.map +1 -0
  115. package/dist/tsconfig.tsbuildinfo +1 -1
  116. package/package.json +3 -3
  117. package/dist/google-gemini-cli-0.21.0-nightly.20251216.bb0c0d8ee.tgz +0 -0
  118. package/dist/src/ui/utils/kittyProtocolDetector.d.ts +0 -17
  119. package/dist/src/ui/utils/kittyProtocolDetector.js +0 -111
  120. package/dist/src/ui/utils/kittyProtocolDetector.js.map +0 -1
  121. package/dist/src/ui/utils/kittyProtocolDetector.test.js +0 -113
  122. package/dist/src/ui/utils/kittyProtocolDetector.test.js.map +0 -1
  123. /package/dist/src/ui/{utils/kittyProtocolDetector.test.d.ts → components/Table.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.20251218.739c02bd6",
3
+ "version": "0.21.0-nightly.20251220.41a1a3eed",
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.20251218.739c02bd6"
29
+ "sandboxImageUri": "us-docker.pkg.dev/gemini-code-dev/gemini-cli/sandbox:0.21.0-nightly.20251220.41a1a3eed"
30
30
  },
31
31
  "dependencies": {
32
32
  "@agentclientprotocol/sdk": "^0.11.0",
33
- "@google/gemini-cli-core": "0.21.0-nightly.20251218.739c02bd6",
33
+ "@google/gemini-cli-core": "0.21.0-nightly.20251220.41a1a3eed",
34
34
  "@google/genai": "1.30.0",
35
35
  "@iarna/toml": "^2.2.5",
36
36
  "@modelcontextprotocol/sdk": "^1.23.0",
@@ -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":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAE9B,IAAI,iBAAiB,GAAG,KAAK,CAAC;AAE9B,IAAI,cAAc,GAAG,KAAK,CAAC;AAE3B,IAAI,YAAY,GAAG,KAAK,CAAC;AAEzB;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B;IAChD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClD,iBAAiB,GAAG,IAAI,CAAC;YACzB,OAAO,EAAE,CAAC;YACV,OAAO;QACT,CAAC;QAED,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5C,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;QAED,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,8BAA8B,GAAG,KAAK,CAAC;QAC3C,IAAI,SAAqC,CAAC;QAE1C,MAAM,MAAM,GAAG,GAAG,EAAE;YAClB,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,SAAS,GAAG,SAAS,CAAC;YACxB,CAAC;YACD,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YACjD,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAClC,CAAC;YAED,IAAI,cAAc,EAAE,CAAC;gBACnB,uBAAuB,EAAE,CAAC;gBAC1B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;gBACxC,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;YAC7C,CAAC;YAED,iBAAiB,GAAG,IAAI,CAAC;YACzB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,EAAE;YAClC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,6CAA6C;gBAC7C,OAAO;YACT,CAAC;YACD,cAAc,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAElC,+DAA+D;YAC/D,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtE,8BAA8B,GAAG,IAAI,CAAC;gBACtC,sEAAsE;gBACtE,sEAAsE;gBACtE,oCAAoC;gBACpC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACxB,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC;YAED,yDAAyD;YACzD,IAAI,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtE,IAAI,8BAA8B,EAAE,CAAC;oBACnC,cAAc,GAAG,IAAI,CAAC;gBACxB,CAAC;gBAED,MAAM,EAAE,CAAC;YACX,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAErC,sDAAsD;QACtD,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QAEjD,sBAAsB;QACtB,yEAAyE;QACzE,2EAA2E;QAC3E,SAAS,GAAG,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,yBAAyB,CAAC;AAEjC,MAAM,UAAU,sBAAsB;IACpC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,mBAAmB;IAC1B,IAAI,CAAC;QACH,IAAI,YAAY,EAAE,CAAC;YACjB,4BAA4B,EAAE,CAAC;YAC/B,YAAY,GAAG,KAAK,CAAC;QACvB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC;QACH,IAAI,cAAc,EAAE,CAAC;YACnB,2BAA2B,EAAE,CAAC;YAC9B,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,SAAS;IACX,CAAC;AACH,CAAC"}
@@ -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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"}