@google/gemini-cli 0.1.22 → 0.2.0-preview.1

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 (178) hide show
  1. package/README.md +32 -2
  2. package/dist/package.json +2 -2
  3. package/dist/src/config/config.d.ts +1 -0
  4. package/dist/src/config/config.js +15 -1
  5. package/dist/src/config/config.js.map +1 -1
  6. package/dist/src/config/extension.d.ts +0 -1
  7. package/dist/src/config/extension.js +3 -2
  8. package/dist/src/config/extension.js.map +1 -1
  9. package/dist/src/config/settings.d.ts +4 -3
  10. package/dist/src/config/settings.js +57 -49
  11. package/dist/src/config/settings.js.map +1 -1
  12. package/dist/src/config/settingsSchema.d.ts +69 -6
  13. package/dist/src/config/settingsSchema.js +69 -6
  14. package/dist/src/config/settingsSchema.js.map +1 -1
  15. package/dist/src/config/settingsSchema.test.js +2 -1
  16. package/dist/src/config/settingsSchema.test.js.map +1 -1
  17. package/dist/src/gemini.js +25 -2
  18. package/dist/src/gemini.js.map +1 -1
  19. package/dist/src/gemini.test.js +1 -1
  20. package/dist/src/gemini.test.js.map +1 -1
  21. package/dist/src/generated/git-commit.d.ts +2 -2
  22. package/dist/src/generated/git-commit.js +2 -2
  23. package/dist/src/generated/git-commit.js.map +1 -1
  24. package/dist/src/nonInteractiveCli.js +22 -22
  25. package/dist/src/nonInteractiveCli.js.map +1 -1
  26. package/dist/src/services/FileCommandLoader.js +4 -3
  27. package/dist/src/services/FileCommandLoader.js.map +1 -1
  28. package/dist/src/services/McpPromptLoader.d.ts +11 -1
  29. package/dist/src/services/McpPromptLoader.js +42 -16
  30. package/dist/src/services/McpPromptLoader.js.map +1 -1
  31. package/dist/src/services/McpPromptLoader.test.d.ts +6 -0
  32. package/dist/src/services/McpPromptLoader.test.js +114 -0
  33. package/dist/src/services/McpPromptLoader.test.js.map +1 -0
  34. package/dist/src/services/prompt-processors/shellProcessor.js +2 -10
  35. package/dist/src/services/prompt-processors/shellProcessor.js.map +1 -1
  36. package/dist/src/ui/App.js +52 -20
  37. package/dist/src/ui/App.js.map +1 -1
  38. package/dist/src/ui/commands/aboutCommand.js +2 -1
  39. package/dist/src/ui/commands/aboutCommand.js.map +1 -1
  40. package/dist/src/ui/commands/bugCommand.js +7 -1
  41. package/dist/src/ui/commands/bugCommand.js.map +1 -1
  42. package/dist/src/ui/commands/chatCommand.js +2 -1
  43. package/dist/src/ui/commands/chatCommand.js.map +1 -1
  44. package/dist/src/ui/commands/copyCommand.js +1 -1
  45. package/dist/src/ui/commands/copyCommand.js.map +1 -1
  46. package/dist/src/ui/commands/ideCommand.js +29 -11
  47. package/dist/src/ui/commands/ideCommand.js.map +1 -1
  48. package/dist/src/ui/commands/mcpCommand.js +6 -6
  49. package/dist/src/ui/commands/mcpCommand.js.map +1 -1
  50. package/dist/src/ui/commands/restoreCommand.js +2 -6
  51. package/dist/src/ui/commands/restoreCommand.js.map +1 -1
  52. package/dist/src/ui/commands/setupGithubCommand.d.ts +1 -0
  53. package/dist/src/ui/commands/setupGithubCommand.js +39 -1
  54. package/dist/src/ui/commands/setupGithubCommand.js.map +1 -1
  55. package/dist/src/ui/commands/setupGithubCommand.test.js +99 -1
  56. package/dist/src/ui/commands/setupGithubCommand.test.js.map +1 -1
  57. package/dist/src/ui/commands/toolsCommand.js +1 -1
  58. package/dist/src/ui/commands/toolsCommand.js.map +1 -1
  59. package/dist/src/ui/components/AuthDialog.test.js +10 -10
  60. package/dist/src/ui/components/AuthDialog.test.js.map +1 -1
  61. package/dist/src/ui/components/DetailedMessagesDisplay.js +1 -1
  62. package/dist/src/ui/components/DetailedMessagesDisplay.js.map +1 -1
  63. package/dist/src/ui/components/FolderTrustDialog.d.ts +1 -0
  64. package/dist/src/ui/components/FolderTrustDialog.js +9 -3
  65. package/dist/src/ui/components/FolderTrustDialog.js.map +1 -1
  66. package/dist/src/ui/components/FolderTrustDialog.test.js +40 -3
  67. package/dist/src/ui/components/FolderTrustDialog.test.js.map +1 -1
  68. package/dist/src/ui/components/Help.js +1 -1
  69. package/dist/src/ui/components/Help.js.map +1 -1
  70. package/dist/src/ui/components/InputPrompt.js +146 -14
  71. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  72. package/dist/src/ui/components/SettingsDialog.js +363 -62
  73. package/dist/src/ui/components/SettingsDialog.js.map +1 -1
  74. package/dist/src/ui/components/SettingsDialog.test.js +168 -95
  75. package/dist/src/ui/components/SettingsDialog.test.js.map +1 -1
  76. package/dist/src/ui/components/StatsDisplay.js +9 -8
  77. package/dist/src/ui/components/StatsDisplay.js.map +1 -1
  78. package/dist/src/ui/components/messages/CompressionMessage.js +2 -1
  79. package/dist/src/ui/components/messages/CompressionMessage.js.map +1 -1
  80. package/dist/src/ui/components/messages/DiffRenderer.js +2 -1
  81. package/dist/src/ui/components/messages/DiffRenderer.js.map +1 -1
  82. package/dist/src/ui/components/messages/DiffRenderer.test.js +11 -10
  83. package/dist/src/ui/components/messages/DiffRenderer.test.js.map +1 -1
  84. package/dist/src/ui/components/messages/GeminiMessage.js +2 -1
  85. package/dist/src/ui/components/messages/GeminiMessage.js.map +1 -1
  86. package/dist/src/ui/components/messages/UserMessage.js +2 -1
  87. package/dist/src/ui/components/messages/UserMessage.js.map +1 -1
  88. package/dist/src/ui/components/shared/text-buffer.js +7 -45
  89. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  90. package/dist/src/ui/constants.d.ts +2 -0
  91. package/dist/src/ui/constants.js +2 -0
  92. package/dist/src/ui/constants.js.map +1 -1
  93. package/dist/src/ui/contexts/KeypressContext.js +24 -25
  94. package/dist/src/ui/contexts/KeypressContext.js.map +1 -1
  95. package/dist/src/ui/contexts/KeypressContext.test.js +36 -37
  96. package/dist/src/ui/contexts/KeypressContext.test.js.map +1 -1
  97. package/dist/src/ui/contexts/SessionContext.d.ts +2 -0
  98. package/dist/src/ui/contexts/SessionContext.js.map +1 -1
  99. package/dist/src/ui/hooks/atCommandProcessor.js +1 -4
  100. package/dist/src/ui/hooks/atCommandProcessor.js.map +1 -1
  101. package/dist/src/ui/hooks/atCommandProcessor.test.js +30 -7
  102. package/dist/src/ui/hooks/atCommandProcessor.test.js.map +1 -1
  103. package/dist/src/ui/hooks/shellCommandProcessor.js +8 -13
  104. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  105. package/dist/src/ui/hooks/shellCommandProcessor.test.js +11 -15
  106. package/dist/src/ui/hooks/shellCommandProcessor.test.js.map +1 -1
  107. package/dist/src/ui/hooks/slashCommandProcessor.js +17 -5
  108. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  109. package/dist/src/ui/hooks/useAtCompletion.js +1 -0
  110. package/dist/src/ui/hooks/useAtCompletion.js.map +1 -1
  111. package/dist/src/ui/hooks/useCommandCompletion.d.ts +4 -1
  112. package/dist/src/ui/hooks/useCommandCompletion.js +29 -8
  113. package/dist/src/ui/hooks/useCommandCompletion.js.map +1 -1
  114. package/dist/src/ui/hooks/useFolderTrust.d.ts +1 -0
  115. package/dist/src/ui/hooks/useFolderTrust.js +16 -8
  116. package/dist/src/ui/hooks/useFolderTrust.js.map +1 -1
  117. package/dist/src/ui/hooks/useGeminiStream.js +30 -11
  118. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  119. package/dist/src/ui/hooks/useLogger.d.ts +2 -2
  120. package/dist/src/ui/hooks/useLogger.js +3 -3
  121. package/dist/src/ui/hooks/useLogger.js.map +1 -1
  122. package/dist/src/ui/hooks/useMessageQueue.d.ts +22 -0
  123. package/dist/src/ui/hooks/useMessageQueue.js +49 -0
  124. package/dist/src/ui/hooks/useMessageQueue.js.map +1 -0
  125. package/dist/src/ui/hooks/useMessageQueue.test.d.ts +6 -0
  126. package/dist/src/ui/hooks/useMessageQueue.test.js +158 -0
  127. package/dist/src/ui/hooks/useMessageQueue.test.js.map +1 -0
  128. package/dist/src/ui/hooks/usePrivacySettings.js +6 -2
  129. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  130. package/dist/src/ui/hooks/usePrivacySettings.test.d.ts +6 -0
  131. package/dist/src/ui/hooks/usePrivacySettings.test.js +154 -0
  132. package/dist/src/ui/hooks/usePrivacySettings.test.js.map +1 -0
  133. package/dist/src/ui/hooks/usePromptCompletion.d.ts +23 -0
  134. package/dist/src/ui/hooks/usePromptCompletion.js +176 -0
  135. package/dist/src/ui/hooks/usePromptCompletion.js.map +1 -0
  136. package/dist/src/ui/hooks/useReactToolScheduler.js +0 -1
  137. package/dist/src/ui/hooks/useReactToolScheduler.js.map +1 -1
  138. package/dist/src/ui/hooks/useShellHistory.d.ts +2 -1
  139. package/dist/src/ui/hooks/useShellHistory.js +7 -8
  140. package/dist/src/ui/hooks/useShellHistory.js.map +1 -1
  141. package/dist/src/ui/hooks/useShellHistory.test.js +26 -1
  142. package/dist/src/ui/hooks/useShellHistory.test.js.map +1 -1
  143. package/dist/src/ui/hooks/useToolScheduler.test.js +5 -7
  144. package/dist/src/ui/hooks/useToolScheduler.test.js.map +1 -1
  145. package/dist/src/ui/utils/MarkdownDisplay.js +2 -1
  146. package/dist/src/ui/utils/MarkdownDisplay.js.map +1 -1
  147. package/dist/src/ui/utils/MarkdownDisplay.test.js +17 -16
  148. package/dist/src/ui/utils/MarkdownDisplay.test.js.map +1 -1
  149. package/dist/src/ui/utils/commandUtils.js +36 -11
  150. package/dist/src/ui/utils/commandUtils.js.map +1 -1
  151. package/dist/src/ui/utils/commandUtils.test.js +64 -19
  152. package/dist/src/ui/utils/commandUtils.test.js.map +1 -1
  153. package/dist/src/ui/utils/computeStats.js +3 -1
  154. package/dist/src/ui/utils/computeStats.js.map +1 -1
  155. package/dist/src/ui/utils/textUtils.d.ts +18 -0
  156. package/dist/src/ui/utils/textUtils.js +44 -0
  157. package/dist/src/ui/utils/textUtils.js.map +1 -1
  158. package/dist/src/utils/cleanup.js +3 -2
  159. package/dist/src/utils/cleanup.js.map +1 -1
  160. package/dist/src/utils/readStdin.js +57 -18
  161. package/dist/src/utils/readStdin.js.map +1 -1
  162. package/dist/src/utils/sandbox.d.ts +1 -1
  163. package/dist/src/utils/sandbox.js +7 -6
  164. package/dist/src/utils/sandbox.js.map +1 -1
  165. package/dist/src/utils/settingsUtils.d.ts +8 -0
  166. package/dist/src/utils/settingsUtils.js +16 -7
  167. package/dist/src/utils/settingsUtils.js.map +1 -1
  168. package/dist/src/utils/settingsUtils.test.js +6 -6
  169. package/dist/src/utils/settingsUtils.test.js.map +1 -1
  170. package/dist/src/zed-integration/acp.js +2 -1
  171. package/dist/src/zed-integration/acp.js.map +1 -1
  172. package/dist/src/zed-integration/fileSystemService.d.ts +19 -0
  173. package/dist/src/zed-integration/fileSystemService.js +43 -0
  174. package/dist/src/zed-integration/fileSystemService.js.map +1 -0
  175. package/dist/src/zed-integration/zedIntegration.js +17 -5
  176. package/dist/src/zed-integration/zedIntegration.js.map +1 -1
  177. package/dist/tsconfig.tsbuildinfo +1 -1
  178. package/package.json +3 -3
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,158 @@
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
+ import { renderHook, act } from '@testing-library/react';
8
+ import { useMessageQueue } from './useMessageQueue.js';
9
+ import { StreamingState } from '../types.js';
10
+ describe('useMessageQueue', () => {
11
+ let mockSubmitQuery;
12
+ beforeEach(() => {
13
+ mockSubmitQuery = vi.fn();
14
+ vi.useFakeTimers();
15
+ });
16
+ afterEach(() => {
17
+ vi.useRealTimers();
18
+ vi.clearAllMocks();
19
+ });
20
+ it('should initialize with empty queue', () => {
21
+ const { result } = renderHook(() => useMessageQueue({
22
+ streamingState: StreamingState.Idle,
23
+ submitQuery: mockSubmitQuery,
24
+ }));
25
+ expect(result.current.messageQueue).toEqual([]);
26
+ expect(result.current.getQueuedMessagesText()).toBe('');
27
+ });
28
+ it('should add messages to queue', () => {
29
+ const { result } = renderHook(() => useMessageQueue({
30
+ streamingState: StreamingState.Responding,
31
+ submitQuery: mockSubmitQuery,
32
+ }));
33
+ act(() => {
34
+ result.current.addMessage('Test message 1');
35
+ result.current.addMessage('Test message 2');
36
+ });
37
+ expect(result.current.messageQueue).toEqual([
38
+ 'Test message 1',
39
+ 'Test message 2',
40
+ ]);
41
+ });
42
+ it('should filter out empty messages', () => {
43
+ const { result } = renderHook(() => useMessageQueue({
44
+ streamingState: StreamingState.Responding,
45
+ submitQuery: mockSubmitQuery,
46
+ }));
47
+ act(() => {
48
+ result.current.addMessage('Valid message');
49
+ result.current.addMessage(' '); // Only whitespace
50
+ result.current.addMessage(''); // Empty
51
+ result.current.addMessage('Another valid message');
52
+ });
53
+ expect(result.current.messageQueue).toEqual([
54
+ 'Valid message',
55
+ 'Another valid message',
56
+ ]);
57
+ });
58
+ it('should clear queue', () => {
59
+ const { result } = renderHook(() => useMessageQueue({
60
+ streamingState: StreamingState.Responding,
61
+ submitQuery: mockSubmitQuery,
62
+ }));
63
+ act(() => {
64
+ result.current.addMessage('Test message');
65
+ });
66
+ expect(result.current.messageQueue).toEqual(['Test message']);
67
+ act(() => {
68
+ result.current.clearQueue();
69
+ });
70
+ expect(result.current.messageQueue).toEqual([]);
71
+ });
72
+ it('should return queued messages as text with double newlines', () => {
73
+ const { result } = renderHook(() => useMessageQueue({
74
+ streamingState: StreamingState.Responding,
75
+ submitQuery: mockSubmitQuery,
76
+ }));
77
+ act(() => {
78
+ result.current.addMessage('Message 1');
79
+ result.current.addMessage('Message 2');
80
+ result.current.addMessage('Message 3');
81
+ });
82
+ expect(result.current.getQueuedMessagesText()).toBe('Message 1\n\nMessage 2\n\nMessage 3');
83
+ });
84
+ it('should auto-submit queued messages when transitioning to Idle', () => {
85
+ const { result, rerender } = renderHook(({ streamingState }) => useMessageQueue({
86
+ streamingState,
87
+ submitQuery: mockSubmitQuery,
88
+ }), {
89
+ initialProps: { streamingState: StreamingState.Responding },
90
+ });
91
+ // Add some messages
92
+ act(() => {
93
+ result.current.addMessage('Message 1');
94
+ result.current.addMessage('Message 2');
95
+ });
96
+ expect(result.current.messageQueue).toEqual(['Message 1', 'Message 2']);
97
+ // Transition to Idle
98
+ rerender({ streamingState: StreamingState.Idle });
99
+ expect(mockSubmitQuery).toHaveBeenCalledWith('Message 1\n\nMessage 2');
100
+ expect(result.current.messageQueue).toEqual([]);
101
+ });
102
+ it('should not auto-submit when queue is empty', () => {
103
+ const { rerender } = renderHook(({ streamingState }) => useMessageQueue({
104
+ streamingState,
105
+ submitQuery: mockSubmitQuery,
106
+ }), {
107
+ initialProps: { streamingState: StreamingState.Responding },
108
+ });
109
+ // Transition to Idle with empty queue
110
+ rerender({ streamingState: StreamingState.Idle });
111
+ expect(mockSubmitQuery).not.toHaveBeenCalled();
112
+ });
113
+ it('should not auto-submit when not transitioning to Idle', () => {
114
+ const { result, rerender } = renderHook(({ streamingState }) => useMessageQueue({
115
+ streamingState,
116
+ submitQuery: mockSubmitQuery,
117
+ }), {
118
+ initialProps: { streamingState: StreamingState.Responding },
119
+ });
120
+ // Add messages
121
+ act(() => {
122
+ result.current.addMessage('Message 1');
123
+ });
124
+ // Transition to WaitingForConfirmation (not Idle)
125
+ rerender({ streamingState: StreamingState.WaitingForConfirmation });
126
+ expect(mockSubmitQuery).not.toHaveBeenCalled();
127
+ expect(result.current.messageQueue).toEqual(['Message 1']);
128
+ });
129
+ it('should handle multiple state transitions correctly', () => {
130
+ const { result, rerender } = renderHook(({ streamingState }) => useMessageQueue({
131
+ streamingState,
132
+ submitQuery: mockSubmitQuery,
133
+ }), {
134
+ initialProps: { streamingState: StreamingState.Idle },
135
+ });
136
+ // Start responding
137
+ rerender({ streamingState: StreamingState.Responding });
138
+ // Add messages while responding
139
+ act(() => {
140
+ result.current.addMessage('First batch');
141
+ });
142
+ // Go back to idle - should submit
143
+ rerender({ streamingState: StreamingState.Idle });
144
+ expect(mockSubmitQuery).toHaveBeenCalledWith('First batch');
145
+ expect(result.current.messageQueue).toEqual([]);
146
+ // Start responding again
147
+ rerender({ streamingState: StreamingState.Responding });
148
+ // Add more messages
149
+ act(() => {
150
+ result.current.addMessage('Second batch');
151
+ });
152
+ // Go back to idle - should submit again
153
+ rerender({ streamingState: StreamingState.Idle });
154
+ expect(mockSubmitQuery).toHaveBeenCalledWith('Second batch');
155
+ expect(mockSubmitQuery).toHaveBeenCalledTimes(2);
156
+ });
157
+ });
158
+ //# sourceMappingURL=useMessageQueue.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMessageQueue.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useMessageQueue.test.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { useState, useEffect, useCallback } from 'react';
7
- import { CodeAssistServer, UserTierId } from '@google/gemini-cli-core';
7
+ import { CodeAssistServer, UserTierId, LoggingContentGenerator, } from '@google/gemini-cli-core';
8
8
  export const usePrivacySettings = (config) => {
9
9
  const [privacyState, setPrivacyState] = useState({
10
10
  isLoading: true,
@@ -65,7 +65,11 @@ export const usePrivacySettings = (config) => {
65
65
  };
66
66
  };
67
67
  function getCodeAssistServer(config) {
68
- const server = config.getGeminiClient().getContentGenerator();
68
+ let server = config.getGeminiClient().getContentGenerator();
69
+ // Unwrap LoggingContentGenerator if present
70
+ if (server instanceof LoggingContentGenerator) {
71
+ server = server.getWrapped();
72
+ }
69
73
  // Neither of these cases should ever happen.
70
74
  if (!(server instanceof CodeAssistServer)) {
71
75
  throw new Error('Oauth not being used');
@@ -1 +1 @@
1
- {"version":3,"file":"usePrivacySettings.js","sourceRoot":"","sources":["../../../../src/ui/hooks/usePrivacySettings.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usePrivacySettings.js","sourceRoot":"","sources":["../../../../src/ui/hooks/usePrivacySettings.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export {};
@@ -0,0 +1,154 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
7
+ import { renderHook, waitFor } from '@testing-library/react';
8
+ import { CodeAssistServer, LoggingContentGenerator, UserTierId, } from '@google/gemini-cli-core';
9
+ import { usePrivacySettings } from './usePrivacySettings.js';
10
+ // Mock the dependencies
11
+ vi.mock('@google/gemini-cli-core', () => {
12
+ // Mock classes for instanceof checks
13
+ class MockCodeAssistServer {
14
+ projectId = 'test-project-id';
15
+ loadCodeAssist = vi.fn();
16
+ getCodeAssistGlobalUserSetting = vi.fn();
17
+ setCodeAssistGlobalUserSetting = vi.fn();
18
+ constructor(_client, _projectId, _httpOptions, _sessionId, _userTier) { }
19
+ }
20
+ class MockLoggingContentGenerator {
21
+ getWrapped = vi.fn();
22
+ constructor(_wrapped, _config) { }
23
+ }
24
+ return {
25
+ Config: vi.fn(),
26
+ CodeAssistServer: MockCodeAssistServer,
27
+ LoggingContentGenerator: MockLoggingContentGenerator,
28
+ GeminiClient: vi.fn(),
29
+ UserTierId: {
30
+ FREE: 'free-tier',
31
+ LEGACY: 'legacy-tier',
32
+ STANDARD: 'standard-tier',
33
+ },
34
+ };
35
+ });
36
+ describe('usePrivacySettings', () => {
37
+ let mockConfig;
38
+ let mockClient;
39
+ let mockCodeAssistServer;
40
+ let mockLoggingContentGenerator;
41
+ beforeEach(() => {
42
+ vi.clearAllMocks();
43
+ // Create mock CodeAssistServer instance
44
+ mockCodeAssistServer = new CodeAssistServer(null, 'test-project-id');
45
+ mockCodeAssistServer.loadCodeAssist.mockResolvedValue({
46
+ currentTier: { id: UserTierId.FREE },
47
+ });
48
+ mockCodeAssistServer.getCodeAssistGlobalUserSetting.mockResolvedValue({
49
+ freeTierDataCollectionOptin: true,
50
+ });
51
+ mockCodeAssistServer.setCodeAssistGlobalUserSetting.mockResolvedValue({
52
+ freeTierDataCollectionOptin: false,
53
+ });
54
+ // Create mock LoggingContentGenerator that wraps the CodeAssistServer
55
+ mockLoggingContentGenerator = new LoggingContentGenerator(mockCodeAssistServer, null);
56
+ mockLoggingContentGenerator.getWrapped.mockReturnValue(mockCodeAssistServer);
57
+ // Create mock GeminiClient
58
+ mockClient = {
59
+ getContentGenerator: vi.fn().mockReturnValue(mockLoggingContentGenerator),
60
+ };
61
+ // Create mock Config
62
+ mockConfig = {
63
+ getGeminiClient: vi.fn().mockReturnValue(mockClient),
64
+ };
65
+ });
66
+ it('should handle LoggingContentGenerator wrapper correctly and not throw "Oauth not being used" error', async () => {
67
+ const { result } = renderHook(() => usePrivacySettings(mockConfig));
68
+ // Initial state should be loading
69
+ expect(result.current.privacyState.isLoading).toBe(true);
70
+ expect(result.current.privacyState.error).toBeUndefined();
71
+ // Wait for the hook to complete
72
+ await waitFor(() => {
73
+ expect(result.current.privacyState.isLoading).toBe(false);
74
+ });
75
+ // Should not have the "Oauth not being used" error
76
+ expect(result.current.privacyState.error).toBeUndefined();
77
+ expect(result.current.privacyState.isFreeTier).toBe(true);
78
+ expect(result.current.privacyState.dataCollectionOptIn).toBe(true);
79
+ // Verify that getWrapped was called to unwrap the LoggingContentGenerator
80
+ expect(mockLoggingContentGenerator.getWrapped).toHaveBeenCalled();
81
+ });
82
+ it('should work with direct CodeAssistServer (no wrapper)', async () => {
83
+ // Test case where the content generator is directly a CodeAssistServer
84
+ const directServer = new CodeAssistServer(null, 'test-project-id');
85
+ directServer.loadCodeAssist.mockResolvedValue({
86
+ currentTier: { id: UserTierId.FREE },
87
+ });
88
+ directServer.getCodeAssistGlobalUserSetting.mockResolvedValue({
89
+ freeTierDataCollectionOptin: true,
90
+ });
91
+ mockClient.getContentGenerator = vi.fn().mockReturnValue(directServer);
92
+ const { result } = renderHook(() => usePrivacySettings(mockConfig));
93
+ await waitFor(() => {
94
+ expect(result.current.privacyState.isLoading).toBe(false);
95
+ });
96
+ expect(result.current.privacyState.error).toBeUndefined();
97
+ expect(result.current.privacyState.isFreeTier).toBe(true);
98
+ expect(result.current.privacyState.dataCollectionOptIn).toBe(true);
99
+ });
100
+ it('should handle paid tier users correctly', async () => {
101
+ // Mock paid tier response
102
+ mockCodeAssistServer.loadCodeAssist.mockResolvedValue({
103
+ currentTier: { id: UserTierId.STANDARD },
104
+ });
105
+ const { result } = renderHook(() => usePrivacySettings(mockConfig));
106
+ await waitFor(() => {
107
+ expect(result.current.privacyState.isLoading).toBe(false);
108
+ });
109
+ expect(result.current.privacyState.error).toBeUndefined();
110
+ expect(result.current.privacyState.isFreeTier).toBe(false);
111
+ expect(result.current.privacyState.dataCollectionOptIn).toBeUndefined();
112
+ });
113
+ it('should throw error when content generator is not a CodeAssistServer', async () => {
114
+ // Mock a non-CodeAssistServer content generator
115
+ const mockOtherGenerator = { someOtherMethod: vi.fn() };
116
+ mockLoggingContentGenerator.getWrapped.mockReturnValue(mockOtherGenerator);
117
+ const { result } = renderHook(() => usePrivacySettings(mockConfig));
118
+ await waitFor(() => {
119
+ expect(result.current.privacyState.isLoading).toBe(false);
120
+ });
121
+ expect(result.current.privacyState.error).toBe('Oauth not being used');
122
+ });
123
+ it('should throw error when CodeAssistServer has no projectId', async () => {
124
+ // Mock CodeAssistServer without projectId
125
+ const mockServerNoProject = {
126
+ ...mockCodeAssistServer,
127
+ projectId: undefined,
128
+ };
129
+ mockLoggingContentGenerator.getWrapped.mockReturnValue(mockServerNoProject);
130
+ const { result } = renderHook(() => usePrivacySettings(mockConfig));
131
+ await waitFor(() => {
132
+ expect(result.current.privacyState.isLoading).toBe(false);
133
+ });
134
+ expect(result.current.privacyState.error).toBe('Oauth not being used');
135
+ });
136
+ it('should update data collection opt-in setting', async () => {
137
+ const { result } = renderHook(() => usePrivacySettings(mockConfig));
138
+ // Wait for initial load
139
+ await waitFor(() => {
140
+ expect(result.current.privacyState.isLoading).toBe(false);
141
+ });
142
+ // Update the setting
143
+ await result.current.updateDataCollectionOptIn(false);
144
+ // Wait for update to complete
145
+ await waitFor(() => {
146
+ expect(result.current.privacyState.dataCollectionOptIn).toBe(false);
147
+ });
148
+ expect(mockCodeAssistServer.setCodeAssistGlobalUserSetting).toHaveBeenCalledWith({
149
+ cloudaicompanionProject: 'test-project-id',
150
+ freeTierDataCollectionOptin: false,
151
+ });
152
+ });
153
+ });
154
+ //# sourceMappingURL=usePrivacySettings.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePrivacySettings.test.js","sourceRoot":"","sources":["../../../../src/ui/hooks/usePrivacySettings.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAEL,gBAAgB,EAChB,uBAAuB,EACvB,UAAU,GAGX,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,wBAAwB;AACxB,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACtC,qCAAqC;IACrC,MAAM,oBAAoB;QACxB,SAAS,GAAG,iBAAiB,CAAC;QAC9B,cAAc,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzB,8BAA8B,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,8BAA8B,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAEzC,YACE,OAAsB,EACtB,UAAmB,EACnB,YAAsC,EACtC,UAAmB,EACnB,SAAsB,IACrB,CAAC;KACL;IAED,MAAM,2BAA2B;QAC/B,UAAU,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAErB,YACE,QAA2B,EAC3B,OAAiC,IAChC,CAAC;KACL;IAED,OAAO;QACL,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;QACf,gBAAgB,EAAE,oBAAoB;QACtC,uBAAuB,EAAE,2BAA2B;QACpD,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;QACrB,UAAU,EAAE;YACV,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,aAAa;YACrB,QAAQ,EAAE,eAAe;SAC1B;KACF,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,IAAI,UAAkB,CAAC;IACvB,IAAI,UAAwB,CAAC;IAC7B,IAAI,oBAAsC,CAAC;IAC3C,IAAI,2BAAoD,CAAC;IAEzD,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAC;QAEnB,wCAAwC;QACxC,oBAAoB,GAAG,IAAI,gBAAgB,CACzC,IAA+B,EAC/B,iBAAiB,CACa,CAAC;QAE/B,oBAAoB,CAAC,cACtB,CAAC,iBAAiB,CAAC;YAClB,WAAW,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE;SACrC,CAAC,CAAC;QAED,oBAAoB,CAAC,8BAGtB,CAAC,iBAAiB,CAAC;YAClB,2BAA2B,EAAE,IAAI;SAClC,CAAC,CAAC;QAED,oBAAoB,CAAC,8BAGtB,CAAC,iBAAiB,CAAC;YAClB,2BAA2B,EAAE,KAAK;SACnC,CAAC,CAAC;QAEH,sEAAsE;QACtE,2BAA2B,GAAG,IAAI,uBAAuB,CACvD,oBAAoB,EACpB,IAAyB,CACY,CAAC;QAEtC,2BAA2B,CAAC,UAC7B,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QAExC,2BAA2B;QAC3B,UAAU,GAAG;YACX,mBAAmB,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,2BAA2B,CAAC;SAC/C,CAAC;QAE7B,qBAAqB;QACrB,UAAU,GAAG;YACX,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,UAAU,CAAC;SAChC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oGAAoG,EAAE,KAAK,IAAI,EAAE;QAClH,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,kCAAkC;QAClC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QAE1D,gCAAgC;QAChC,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,mDAAmD;QACnD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnE,0EAA0E;QAC1E,MAAM,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,uEAAuE;QACvE,MAAM,YAAY,GAAG,IAAI,gBAAgB,CACvC,IAA+B,EAC/B,iBAAiB,CACa,CAAC;QAChC,YAAY,CAAC,cAA2C,CAAC,iBAAiB,CACzE;YACE,WAAW,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,IAAI,EAAE;SACrC,CACF,CAAC;QAEA,YAAY,CAAC,8BACd,CAAC,iBAAiB,CAAC;YAClB,2BAA2B,EAAE,IAAI;SAClC,CAAC,CAAC;QAEH,UAAU,CAAC,mBAAmB,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QAEvE,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,0BAA0B;QAExB,oBAAoB,CAAC,cACtB,CAAC,iBAAiB,CAAC;YAClB,WAAW,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,QAAQ,EAAE;SACzC,CAAC,CAAC;QAEH,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,gDAAgD;QAChD,MAAM,kBAAkB,GAAG,EAAE,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC;QAEtD,2BAA2B,CAAC,UAC7B,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QAEtC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACzE,0CAA0C;QAC1C,MAAM,mBAAmB,GAAG;YAC1B,GAAG,oBAAoB;YACvB,SAAS,EAAE,SAAS;SACrB,CAAC;QAEA,2BAA2B,CAAC,UAC7B,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;QAEvC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,CAAC;QAEpE,wBAAwB;QACxB,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,qBAAqB;QACrB,MAAM,MAAM,CAAC,OAAO,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAEtD,8BAA8B;QAC9B,MAAM,OAAO,CAAC,GAAG,EAAE;YACjB,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,MAAM,CACJ,oBAAoB,CAAC,8BAA8B,CACpD,CAAC,oBAAoB,CAAC;YACrB,uBAAuB,EAAE,iBAAiB;YAC1C,2BAA2B,EAAE,KAAK;SACnC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Config } from '@google/gemini-cli-core';
7
+ import { TextBuffer } from '../components/shared/text-buffer.js';
8
+ export declare const PROMPT_COMPLETION_MIN_LENGTH = 5;
9
+ export declare const PROMPT_COMPLETION_DEBOUNCE_MS = 250;
10
+ export interface PromptCompletion {
11
+ text: string;
12
+ isLoading: boolean;
13
+ isActive: boolean;
14
+ accept: () => void;
15
+ clear: () => void;
16
+ markSelected: (selectedText: string) => void;
17
+ }
18
+ export interface UsePromptCompletionOptions {
19
+ buffer: TextBuffer;
20
+ config?: Config;
21
+ enabled: boolean;
22
+ }
23
+ export declare function usePromptCompletion({ buffer, config, enabled, }: UsePromptCompletionOptions): PromptCompletion;
@@ -0,0 +1,176 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { useState, useCallback, useRef, useEffect, useMemo } from 'react';
7
+ import { DEFAULT_GEMINI_FLASH_LITE_MODEL, getResponseText, } from '@google/gemini-cli-core';
8
+ export const PROMPT_COMPLETION_MIN_LENGTH = 5;
9
+ export const PROMPT_COMPLETION_DEBOUNCE_MS = 250;
10
+ export function usePromptCompletion({ buffer, config, enabled, }) {
11
+ const [ghostText, setGhostText] = useState('');
12
+ const [isLoadingGhostText, setIsLoadingGhostText] = useState(false);
13
+ const abortControllerRef = useRef(null);
14
+ const [justSelectedSuggestion, setJustSelectedSuggestion] = useState(false);
15
+ const lastSelectedTextRef = useRef('');
16
+ const lastRequestedTextRef = useRef('');
17
+ const isPromptCompletionEnabled = enabled && (config?.getEnablePromptCompletion() ?? false);
18
+ const clearGhostText = useCallback(() => {
19
+ setGhostText('');
20
+ setIsLoadingGhostText(false);
21
+ }, []);
22
+ const acceptGhostText = useCallback(() => {
23
+ if (ghostText && ghostText.length > buffer.text.length) {
24
+ buffer.setText(ghostText);
25
+ setGhostText('');
26
+ setJustSelectedSuggestion(true);
27
+ lastSelectedTextRef.current = ghostText;
28
+ }
29
+ }, [ghostText, buffer]);
30
+ const markSuggestionSelected = useCallback((selectedText) => {
31
+ setJustSelectedSuggestion(true);
32
+ lastSelectedTextRef.current = selectedText;
33
+ }, []);
34
+ const generatePromptSuggestions = useCallback(async () => {
35
+ const trimmedText = buffer.text.trim();
36
+ const geminiClient = config?.getGeminiClient();
37
+ if (trimmedText === lastRequestedTextRef.current) {
38
+ return;
39
+ }
40
+ if (abortControllerRef.current) {
41
+ abortControllerRef.current.abort();
42
+ }
43
+ if (trimmedText.length < PROMPT_COMPLETION_MIN_LENGTH ||
44
+ !geminiClient ||
45
+ trimmedText.startsWith('/') ||
46
+ trimmedText.includes('@') ||
47
+ !isPromptCompletionEnabled) {
48
+ clearGhostText();
49
+ lastRequestedTextRef.current = '';
50
+ return;
51
+ }
52
+ lastRequestedTextRef.current = trimmedText;
53
+ setIsLoadingGhostText(true);
54
+ abortControllerRef.current = new AbortController();
55
+ const signal = abortControllerRef.current.signal;
56
+ try {
57
+ const contents = [
58
+ {
59
+ role: 'user',
60
+ parts: [
61
+ {
62
+ text: `You are a professional prompt engineering assistant. Complete the user's partial prompt with expert precision and clarity. User's input: "${trimmedText}" Continue this prompt by adding specific, actionable details that align with the user's intent. Focus on: clear, precise language; structured requirements; professional terminology; measurable outcomes. Length Guidelines: Keep suggestions concise (ideally 10-20 characters); prioritize brevity while maintaining clarity; use essential keywords only; avoid redundant phrases. Start your response with the exact user text ("${trimmedText}") followed by your completion. Provide practical, implementation-focused suggestions rather than creative interpretations. Format: Plain text only. Single completion. Match the user's language. Emphasize conciseness over elaboration.`,
63
+ },
64
+ ],
65
+ },
66
+ ];
67
+ const generationConfig = {
68
+ temperature: 0.3,
69
+ maxOutputTokens: 16000,
70
+ thinkingConfig: {
71
+ thinkingBudget: 0,
72
+ },
73
+ };
74
+ const response = await geminiClient.generateContent(contents, generationConfig, signal, DEFAULT_GEMINI_FLASH_LITE_MODEL);
75
+ if (signal.aborted) {
76
+ return;
77
+ }
78
+ if (response) {
79
+ const responseText = getResponseText(response);
80
+ if (responseText) {
81
+ const suggestionText = responseText.trim();
82
+ if (suggestionText.length > 0 &&
83
+ suggestionText.startsWith(trimmedText)) {
84
+ setGhostText(suggestionText);
85
+ }
86
+ else {
87
+ clearGhostText();
88
+ }
89
+ }
90
+ }
91
+ }
92
+ catch (error) {
93
+ if (!(signal.aborted ||
94
+ (error instanceof Error && error.name === 'AbortError'))) {
95
+ console.error('prompt completion error:', error);
96
+ // Clear the last requested text to allow retry only on real errors
97
+ lastRequestedTextRef.current = '';
98
+ }
99
+ clearGhostText();
100
+ }
101
+ finally {
102
+ if (!signal.aborted) {
103
+ setIsLoadingGhostText(false);
104
+ }
105
+ }
106
+ }, [buffer.text, config, clearGhostText, isPromptCompletionEnabled]);
107
+ const isCursorAtEnd = useCallback(() => {
108
+ const [cursorRow, cursorCol] = buffer.cursor;
109
+ const totalLines = buffer.lines.length;
110
+ if (cursorRow !== totalLines - 1) {
111
+ return false;
112
+ }
113
+ const lastLine = buffer.lines[cursorRow] || '';
114
+ return cursorCol === lastLine.length;
115
+ }, [buffer.cursor, buffer.lines]);
116
+ const handlePromptCompletion = useCallback(() => {
117
+ if (!isCursorAtEnd()) {
118
+ clearGhostText();
119
+ return;
120
+ }
121
+ const trimmedText = buffer.text.trim();
122
+ if (justSelectedSuggestion && trimmedText === lastSelectedTextRef.current) {
123
+ return;
124
+ }
125
+ if (trimmedText !== lastSelectedTextRef.current) {
126
+ setJustSelectedSuggestion(false);
127
+ lastSelectedTextRef.current = '';
128
+ }
129
+ generatePromptSuggestions();
130
+ }, [
131
+ buffer.text,
132
+ generatePromptSuggestions,
133
+ justSelectedSuggestion,
134
+ isCursorAtEnd,
135
+ clearGhostText,
136
+ ]);
137
+ // Debounce prompt completion
138
+ useEffect(() => {
139
+ const timeoutId = setTimeout(handlePromptCompletion, PROMPT_COMPLETION_DEBOUNCE_MS);
140
+ return () => clearTimeout(timeoutId);
141
+ }, [buffer.text, buffer.cursor, handlePromptCompletion]);
142
+ // Ghost text validation - clear if it doesn't match current text or cursor not at end
143
+ useEffect(() => {
144
+ const currentText = buffer.text.trim();
145
+ if (ghostText && !isCursorAtEnd()) {
146
+ clearGhostText();
147
+ return;
148
+ }
149
+ if (ghostText &&
150
+ currentText.length > 0 &&
151
+ !ghostText.startsWith(currentText)) {
152
+ clearGhostText();
153
+ }
154
+ }, [buffer.text, buffer.cursor, ghostText, clearGhostText, isCursorAtEnd]);
155
+ // Cleanup on unmount
156
+ useEffect(() => () => abortControllerRef.current?.abort(), []);
157
+ const isActive = useMemo(() => {
158
+ if (!isPromptCompletionEnabled)
159
+ return false;
160
+ if (!isCursorAtEnd())
161
+ return false;
162
+ const trimmedText = buffer.text.trim();
163
+ return (trimmedText.length >= PROMPT_COMPLETION_MIN_LENGTH &&
164
+ !trimmedText.startsWith('/') &&
165
+ !trimmedText.includes('@'));
166
+ }, [buffer.text, isPromptCompletionEnabled, isCursorAtEnd]);
167
+ return {
168
+ text: ghostText,
169
+ isLoading: isLoadingGhostText,
170
+ isActive,
171
+ accept: acceptGhostText,
172
+ clear: clearGhostText,
173
+ markSelected: markSuggestionSelected,
174
+ };
175
+ }
176
+ //# sourceMappingURL=usePromptCompletion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePromptCompletion.js","sourceRoot":"","sources":["../../../../src/ui/hooks/usePromptCompletion.ts"],"names":[],"mappings":"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"}
@@ -43,7 +43,6 @@ export function useReactToolScheduler(onComplete, config, setPendingHistoryItem,
43
43
  }));
44
44
  }, [setToolCallsForDisplay]);
45
45
  const scheduler = useMemo(() => new CoreToolScheduler({
46
- toolRegistry: config.getToolRegistry(),
47
46
  outputUpdateHandler,
48
47
  onAllToolCallsComplete: allToolCallsCompleteHandler,
49
48
  onToolCallsUpdate: toolCallsUpdateHandler,
@@ -1 +1 @@
1
- {"version":3,"file":"useReactToolScheduler.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useReactToolScheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useReactToolScheduler.js","sourceRoot":"","sources":["../../../../src/ui/hooks/useReactToolScheduler.ts"],"names":[],"mappings":"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"}