@google/gemini-cli 0.1.12-nightly.250714.b018e2d3 → 0.1.13

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 (124) hide show
  1. package/README.md +8 -2
  2. package/dist/google-gemini-cli-0.1.12.tgz +0 -0
  3. package/dist/package.json +2 -3
  4. package/dist/src/acp/acp.d.ts +208 -0
  5. package/dist/src/acp/acp.js +193 -0
  6. package/dist/src/acp/acp.js.map +1 -0
  7. package/dist/src/acp/acpPeer.d.ts +8 -0
  8. package/dist/src/acp/acpPeer.js +537 -0
  9. package/dist/src/acp/acpPeer.js.map +1 -0
  10. package/dist/src/config/config.d.ts +3 -0
  11. package/dist/src/config/config.js +84 -10
  12. package/dist/src/config/config.js.map +1 -1
  13. package/dist/src/config/extension.d.ts +2 -2
  14. package/dist/src/config/extension.js +21 -16
  15. package/dist/src/config/extension.js.map +1 -1
  16. package/dist/src/config/settings.d.ts +8 -0
  17. package/dist/src/config/settings.js.map +1 -1
  18. package/dist/src/gemini.js +6 -2
  19. package/dist/src/gemini.js.map +1 -1
  20. package/dist/src/generated/git-commit.d.ts +1 -1
  21. package/dist/src/generated/git-commit.js +1 -1
  22. package/dist/src/services/CommandService.d.ts +3 -1
  23. package/dist/src/services/CommandService.js +45 -8
  24. package/dist/src/services/CommandService.js.map +1 -1
  25. package/dist/src/ui/App.js +54 -50
  26. package/dist/src/ui/App.js.map +1 -1
  27. package/dist/src/ui/commands/aboutCommand.d.ts +7 -0
  28. package/dist/src/ui/commands/aboutCommand.js +37 -0
  29. package/dist/src/ui/commands/aboutCommand.js.map +1 -0
  30. package/dist/src/ui/commands/authCommand.d.ts +7 -0
  31. package/dist/src/ui/commands/authCommand.js +14 -0
  32. package/dist/src/ui/commands/authCommand.js.map +1 -0
  33. package/dist/src/ui/commands/bugCommand.d.ts +7 -0
  34. package/dist/src/ui/commands/bugCommand.js +61 -0
  35. package/dist/src/ui/commands/bugCommand.js.map +1 -0
  36. package/dist/src/ui/commands/chatCommand.d.ts +7 -0
  37. package/dist/src/ui/commands/chatCommand.js +169 -0
  38. package/dist/src/ui/commands/chatCommand.js.map +1 -0
  39. package/dist/src/ui/commands/clearCommand.js +12 -2
  40. package/dist/src/ui/commands/clearCommand.js.map +1 -1
  41. package/dist/src/ui/commands/compressCommand.d.ts +7 -0
  42. package/dist/src/ui/commands/compressCommand.js +62 -0
  43. package/dist/src/ui/commands/compressCommand.js.map +1 -0
  44. package/dist/src/ui/commands/corgiCommand.d.ts +7 -0
  45. package/dist/src/ui/commands/corgiCommand.js +13 -0
  46. package/dist/src/ui/commands/corgiCommand.js.map +1 -0
  47. package/dist/src/ui/commands/docsCommand.d.ts +7 -0
  48. package/dist/src/ui/commands/docsCommand.js +29 -0
  49. package/dist/src/ui/commands/docsCommand.js.map +1 -0
  50. package/dist/src/ui/commands/editorCommand.d.ts +7 -0
  51. package/dist/src/ui/commands/editorCommand.js +14 -0
  52. package/dist/src/ui/commands/editorCommand.js.map +1 -0
  53. package/dist/src/ui/commands/extensionsCommand.d.ts +7 -0
  54. package/dist/src/ui/commands/extensionsCommand.js +29 -0
  55. package/dist/src/ui/commands/extensionsCommand.js.map +1 -0
  56. package/dist/src/ui/commands/ideCommand.d.ts +8 -0
  57. package/dist/src/ui/commands/ideCommand.js +123 -0
  58. package/dist/src/ui/commands/ideCommand.js.map +1 -0
  59. package/dist/src/ui/commands/mcpCommand.d.ts +7 -0
  60. package/dist/src/ui/commands/mcpCommand.js +204 -0
  61. package/dist/src/ui/commands/mcpCommand.js.map +1 -0
  62. package/dist/src/ui/commands/privacyCommand.d.ts +7 -0
  63. package/dist/src/ui/commands/privacyCommand.js +14 -0
  64. package/dist/src/ui/commands/privacyCommand.js.map +1 -0
  65. package/dist/src/ui/commands/quitCommand.d.ts +7 -0
  66. package/dist/src/ui/commands/quitCommand.js +32 -0
  67. package/dist/src/ui/commands/quitCommand.js.map +1 -0
  68. package/dist/src/ui/commands/restoreCommand.d.ts +8 -0
  69. package/dist/src/ui/commands/restoreCommand.js +126 -0
  70. package/dist/src/ui/commands/restoreCommand.js.map +1 -0
  71. package/dist/src/ui/commands/statsCommand.d.ts +7 -0
  72. package/dist/src/ui/commands/statsCommand.js +50 -0
  73. package/dist/src/ui/commands/statsCommand.js.map +1 -0
  74. package/dist/src/ui/commands/toolsCommand.d.ts +7 -0
  75. package/dist/src/ui/commands/toolsCommand.js +54 -0
  76. package/dist/src/ui/commands/toolsCommand.js.map +1 -0
  77. package/dist/src/ui/commands/types.d.ts +36 -2
  78. package/dist/src/ui/components/ContextSummaryDisplay.d.ts +6 -1
  79. package/dist/src/ui/components/ContextSummaryDisplay.js +48 -21
  80. package/dist/src/ui/components/ContextSummaryDisplay.js.map +1 -1
  81. package/dist/src/ui/components/InputPrompt.js +109 -51
  82. package/dist/src/ui/components/InputPrompt.js.map +1 -1
  83. package/dist/src/ui/components/ThemeDialog.js +25 -24
  84. package/dist/src/ui/components/ThemeDialog.js.map +1 -1
  85. package/dist/src/ui/components/messages/ToolGroupMessage.js +3 -1
  86. package/dist/src/ui/components/messages/ToolGroupMessage.js.map +1 -1
  87. package/dist/src/ui/components/shared/MaxSizedBox.js +69 -2
  88. package/dist/src/ui/components/shared/MaxSizedBox.js.map +1 -1
  89. package/dist/src/ui/components/shared/RadioButtonSelect.d.ts +3 -1
  90. package/dist/src/ui/components/shared/RadioButtonSelect.js +60 -10
  91. package/dist/src/ui/components/shared/RadioButtonSelect.js.map +1 -1
  92. package/dist/src/ui/components/shared/text-buffer.js +1 -1
  93. package/dist/src/ui/components/shared/text-buffer.js.map +1 -1
  94. package/dist/src/ui/constants.d.ts +1 -0
  95. package/dist/src/ui/constants.js +1 -0
  96. package/dist/src/ui/constants.js.map +1 -1
  97. package/dist/src/ui/hooks/shellCommandProcessor.d.ts +1 -1
  98. package/dist/src/ui/hooks/shellCommandProcessor.js +35 -11
  99. package/dist/src/ui/hooks/shellCommandProcessor.js.map +1 -1
  100. package/dist/src/ui/hooks/slashCommandProcessor.d.ts +2 -9
  101. package/dist/src/ui/hooks/slashCommandProcessor.js +42 -843
  102. package/dist/src/ui/hooks/slashCommandProcessor.js.map +1 -1
  103. package/dist/src/ui/hooks/useAuthCommand.js +3 -2
  104. package/dist/src/ui/hooks/useAuthCommand.js.map +1 -1
  105. package/dist/src/ui/hooks/useCompletion.d.ts +1 -0
  106. package/dist/src/ui/hooks/useCompletion.js +25 -3
  107. package/dist/src/ui/hooks/useCompletion.js.map +1 -1
  108. package/dist/src/ui/hooks/useFocus.d.ts +6 -0
  109. package/dist/src/ui/hooks/useFocus.js +41 -0
  110. package/dist/src/ui/hooks/useFocus.js.map +1 -0
  111. package/dist/src/ui/hooks/useGeminiStream.js +17 -0
  112. package/dist/src/ui/hooks/useGeminiStream.js.map +1 -1
  113. package/dist/src/ui/hooks/usePrivacySettings.js +5 -5
  114. package/dist/src/ui/hooks/usePrivacySettings.js.map +1 -1
  115. package/dist/src/ui/themes/ansi-light.js +1 -1
  116. package/dist/src/ui/themes/ansi-light.js.map +1 -1
  117. package/dist/src/ui/themes/googlecode.js +1 -1
  118. package/dist/src/ui/themes/googlecode.js.map +1 -1
  119. package/dist/src/ui/themes/xcode.js +1 -1
  120. package/dist/src/ui/themes/xcode.js.map +1 -1
  121. package/dist/src/ui/utils/updateCheck.js +4 -0
  122. package/dist/src/ui/utils/updateCheck.js.map +1 -1
  123. package/dist/tsconfig.tsbuildinfo +1 -1
  124. package/package.json +3 -4
@@ -0,0 +1,537 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { AuthType, logToolCall, convertToFunctionResponse, ToolConfirmationOutcome, clearCachedCredentialFile, isNodeError, getErrorMessage, isWithinRoot, getErrorStatus, } from '@google/gemini-cli-core';
7
+ import * as acp from './acp.js';
8
+ import { Readable, Writable } from 'node:stream';
9
+ import { SettingScope } from '../config/settings.js';
10
+ import * as fs from 'fs/promises';
11
+ import * as path from 'path';
12
+ export async function runAcpPeer(config, settings) {
13
+ const stdout = Writable.toWeb(process.stdout);
14
+ const stdin = Readable.toWeb(process.stdin);
15
+ // Stdout is used to send messages to the client, so console.log/console.info
16
+ // messages to stderr so that they don't interfere with ACP.
17
+ console.log = console.error;
18
+ console.info = console.error;
19
+ console.debug = console.error;
20
+ new acp.ClientConnection((client) => new GeminiAgent(config, settings, client), stdout, stdin);
21
+ }
22
+ class GeminiAgent {
23
+ config;
24
+ settings;
25
+ client;
26
+ chat;
27
+ pendingSend;
28
+ constructor(config, settings, client) {
29
+ this.config = config;
30
+ this.settings = settings;
31
+ this.client = client;
32
+ }
33
+ async initialize(_) {
34
+ let isAuthenticated = false;
35
+ if (this.settings.merged.selectedAuthType) {
36
+ try {
37
+ await this.config.refreshAuth(this.settings.merged.selectedAuthType);
38
+ isAuthenticated = true;
39
+ }
40
+ catch (error) {
41
+ console.error('Failed to refresh auth:', error);
42
+ }
43
+ }
44
+ return { protocolVersion: acp.LATEST_PROTOCOL_VERSION, isAuthenticated };
45
+ }
46
+ async authenticate() {
47
+ await clearCachedCredentialFile();
48
+ await this.config.refreshAuth(AuthType.LOGIN_WITH_GOOGLE);
49
+ this.settings.setValue(SettingScope.User, 'selectedAuthType', AuthType.LOGIN_WITH_GOOGLE);
50
+ }
51
+ async cancelSendMessage() {
52
+ if (!this.pendingSend) {
53
+ throw new Error('Not currently generating');
54
+ }
55
+ this.pendingSend.abort();
56
+ delete this.pendingSend;
57
+ }
58
+ async sendUserMessage(params) {
59
+ this.pendingSend?.abort();
60
+ const pendingSend = new AbortController();
61
+ this.pendingSend = pendingSend;
62
+ if (!this.chat) {
63
+ const geminiClient = this.config.getGeminiClient();
64
+ this.chat = await geminiClient.startChat();
65
+ }
66
+ const promptId = Math.random().toString(16).slice(2);
67
+ const chat = this.chat;
68
+ const toolRegistry = await this.config.getToolRegistry();
69
+ const parts = await this.#resolveUserMessage(params, pendingSend.signal);
70
+ let nextMessage = { role: 'user', parts };
71
+ while (nextMessage !== null) {
72
+ if (pendingSend.signal.aborted) {
73
+ chat.addHistory(nextMessage);
74
+ return;
75
+ }
76
+ const functionCalls = [];
77
+ try {
78
+ const responseStream = await chat.sendMessageStream({
79
+ message: nextMessage?.parts ?? [],
80
+ config: {
81
+ abortSignal: pendingSend.signal,
82
+ tools: [
83
+ {
84
+ functionDeclarations: toolRegistry.getFunctionDeclarations(),
85
+ },
86
+ ],
87
+ },
88
+ }, promptId);
89
+ nextMessage = null;
90
+ for await (const resp of responseStream) {
91
+ if (pendingSend.signal.aborted) {
92
+ return;
93
+ }
94
+ if (resp.candidates && resp.candidates.length > 0) {
95
+ const candidate = resp.candidates[0];
96
+ for (const part of candidate.content?.parts ?? []) {
97
+ if (!part.text) {
98
+ continue;
99
+ }
100
+ this.client.streamAssistantMessageChunk({
101
+ chunk: part.thought
102
+ ? { thought: part.text }
103
+ : { text: part.text },
104
+ });
105
+ }
106
+ }
107
+ if (resp.functionCalls) {
108
+ functionCalls.push(...resp.functionCalls);
109
+ }
110
+ }
111
+ }
112
+ catch (error) {
113
+ if (getErrorStatus(error) === 429) {
114
+ throw new acp.RequestError(429, 'Rate limit exceeded. Try again later.');
115
+ }
116
+ throw error;
117
+ }
118
+ if (functionCalls.length > 0) {
119
+ const toolResponseParts = [];
120
+ for (const fc of functionCalls) {
121
+ const response = await this.#runTool(pendingSend.signal, promptId, fc);
122
+ const parts = Array.isArray(response) ? response : [response];
123
+ for (const part of parts) {
124
+ if (typeof part === 'string') {
125
+ toolResponseParts.push({ text: part });
126
+ }
127
+ else if (part) {
128
+ toolResponseParts.push(part);
129
+ }
130
+ }
131
+ }
132
+ nextMessage = { role: 'user', parts: toolResponseParts };
133
+ }
134
+ }
135
+ }
136
+ async #runTool(abortSignal, promptId, fc) {
137
+ const callId = fc.id ?? `${fc.name}-${Date.now()}`;
138
+ const args = (fc.args ?? {});
139
+ const startTime = Date.now();
140
+ const errorResponse = (error) => {
141
+ const durationMs = Date.now() - startTime;
142
+ logToolCall(this.config, {
143
+ 'event.name': 'tool_call',
144
+ 'event.timestamp': new Date().toISOString(),
145
+ prompt_id: promptId,
146
+ function_name: fc.name ?? '',
147
+ function_args: args,
148
+ duration_ms: durationMs,
149
+ success: false,
150
+ error: error.message,
151
+ });
152
+ return [
153
+ {
154
+ functionResponse: {
155
+ id: callId,
156
+ name: fc.name ?? '',
157
+ response: { error: error.message },
158
+ },
159
+ },
160
+ ];
161
+ };
162
+ if (!fc.name) {
163
+ return errorResponse(new Error('Missing function name'));
164
+ }
165
+ const toolRegistry = await this.config.getToolRegistry();
166
+ const tool = toolRegistry.getTool(fc.name);
167
+ if (!tool) {
168
+ return errorResponse(new Error(`Tool "${fc.name}" not found in registry.`));
169
+ }
170
+ let toolCallId;
171
+ const confirmationDetails = await tool.shouldConfirmExecute(args, abortSignal);
172
+ if (confirmationDetails) {
173
+ let content = null;
174
+ if (confirmationDetails.type === 'edit') {
175
+ content = {
176
+ type: 'diff',
177
+ path: confirmationDetails.fileName,
178
+ oldText: confirmationDetails.originalContent,
179
+ newText: confirmationDetails.newContent,
180
+ };
181
+ }
182
+ const result = await this.client.requestToolCallConfirmation({
183
+ label: tool.getDescription(args),
184
+ icon: tool.icon,
185
+ content,
186
+ confirmation: toAcpToolCallConfirmation(confirmationDetails),
187
+ locations: tool.toolLocations(args),
188
+ });
189
+ await confirmationDetails.onConfirm(toToolCallOutcome(result.outcome));
190
+ switch (result.outcome) {
191
+ case 'reject':
192
+ return errorResponse(new Error(`Tool "${fc.name}" not allowed to run by the user.`));
193
+ case 'cancel':
194
+ return errorResponse(new Error(`Tool "${fc.name}" was canceled by the user.`));
195
+ case 'allow':
196
+ case 'alwaysAllow':
197
+ case 'alwaysAllowMcpServer':
198
+ case 'alwaysAllowTool':
199
+ break;
200
+ default: {
201
+ const resultOutcome = result.outcome;
202
+ throw new Error(`Unexpected: ${resultOutcome}`);
203
+ }
204
+ }
205
+ toolCallId = result.id;
206
+ }
207
+ else {
208
+ const result = await this.client.pushToolCall({
209
+ icon: tool.icon,
210
+ label: tool.getDescription(args),
211
+ locations: tool.toolLocations(args),
212
+ });
213
+ toolCallId = result.id;
214
+ }
215
+ try {
216
+ const toolResult = await tool.execute(args, abortSignal);
217
+ const toolCallContent = toToolCallContent(toolResult);
218
+ await this.client.updateToolCall({
219
+ toolCallId,
220
+ status: 'finished',
221
+ content: toolCallContent,
222
+ });
223
+ const durationMs = Date.now() - startTime;
224
+ logToolCall(this.config, {
225
+ 'event.name': 'tool_call',
226
+ 'event.timestamp': new Date().toISOString(),
227
+ function_name: fc.name,
228
+ function_args: args,
229
+ duration_ms: durationMs,
230
+ success: true,
231
+ prompt_id: promptId,
232
+ });
233
+ return convertToFunctionResponse(fc.name, callId, toolResult.llmContent);
234
+ }
235
+ catch (e) {
236
+ const error = e instanceof Error ? e : new Error(String(e));
237
+ await this.client.updateToolCall({
238
+ toolCallId,
239
+ status: 'error',
240
+ content: { type: 'markdown', markdown: error.message },
241
+ });
242
+ return errorResponse(error);
243
+ }
244
+ }
245
+ async #resolveUserMessage(message, abortSignal) {
246
+ const atPathCommandParts = message.chunks.filter((part) => 'path' in part);
247
+ if (atPathCommandParts.length === 0) {
248
+ return message.chunks.map((chunk) => {
249
+ if ('text' in chunk) {
250
+ return { text: chunk.text };
251
+ }
252
+ else {
253
+ throw new Error('Unexpected chunk type');
254
+ }
255
+ });
256
+ }
257
+ // Get centralized file discovery service
258
+ const fileDiscovery = this.config.getFileService();
259
+ const respectGitIgnore = this.config.getFileFilteringRespectGitIgnore();
260
+ const pathSpecsToRead = [];
261
+ const atPathToResolvedSpecMap = new Map();
262
+ const contentLabelsForDisplay = [];
263
+ const ignoredPaths = [];
264
+ const toolRegistry = await this.config.getToolRegistry();
265
+ const readManyFilesTool = toolRegistry.getTool('read_many_files');
266
+ const globTool = toolRegistry.getTool('glob');
267
+ if (!readManyFilesTool) {
268
+ throw new Error('Error: read_many_files tool not found.');
269
+ }
270
+ for (const atPathPart of atPathCommandParts) {
271
+ const pathName = atPathPart.path;
272
+ // Check if path should be ignored by git
273
+ if (fileDiscovery.shouldGitIgnoreFile(pathName)) {
274
+ ignoredPaths.push(pathName);
275
+ const reason = respectGitIgnore
276
+ ? 'git-ignored and will be skipped'
277
+ : 'ignored by custom patterns';
278
+ console.warn(`Path ${pathName} is ${reason}.`);
279
+ continue;
280
+ }
281
+ let currentPathSpec = pathName;
282
+ let resolvedSuccessfully = false;
283
+ try {
284
+ const absolutePath = path.resolve(this.config.getTargetDir(), pathName);
285
+ if (isWithinRoot(absolutePath, this.config.getTargetDir())) {
286
+ const stats = await fs.stat(absolutePath);
287
+ if (stats.isDirectory()) {
288
+ currentPathSpec = pathName.endsWith('/')
289
+ ? `${pathName}**`
290
+ : `${pathName}/**`;
291
+ this.#debug(`Path ${pathName} resolved to directory, using glob: ${currentPathSpec}`);
292
+ }
293
+ else {
294
+ this.#debug(`Path ${pathName} resolved to file: ${currentPathSpec}`);
295
+ }
296
+ resolvedSuccessfully = true;
297
+ }
298
+ else {
299
+ this.#debug(`Path ${pathName} is outside the project directory. Skipping.`);
300
+ }
301
+ }
302
+ catch (error) {
303
+ if (isNodeError(error) && error.code === 'ENOENT') {
304
+ if (this.config.getEnableRecursiveFileSearch() && globTool) {
305
+ this.#debug(`Path ${pathName} not found directly, attempting glob search.`);
306
+ try {
307
+ const globResult = await globTool.execute({
308
+ pattern: `**/*${pathName}*`,
309
+ path: this.config.getTargetDir(),
310
+ }, abortSignal);
311
+ if (globResult.llmContent &&
312
+ typeof globResult.llmContent === 'string' &&
313
+ !globResult.llmContent.startsWith('No files found') &&
314
+ !globResult.llmContent.startsWith('Error:')) {
315
+ const lines = globResult.llmContent.split('\n');
316
+ if (lines.length > 1 && lines[1]) {
317
+ const firstMatchAbsolute = lines[1].trim();
318
+ currentPathSpec = path.relative(this.config.getTargetDir(), firstMatchAbsolute);
319
+ this.#debug(`Glob search for ${pathName} found ${firstMatchAbsolute}, using relative path: ${currentPathSpec}`);
320
+ resolvedSuccessfully = true;
321
+ }
322
+ else {
323
+ this.#debug(`Glob search for '**/*${pathName}*' did not return a usable path. Path ${pathName} will be skipped.`);
324
+ }
325
+ }
326
+ else {
327
+ this.#debug(`Glob search for '**/*${pathName}*' found no files or an error. Path ${pathName} will be skipped.`);
328
+ }
329
+ }
330
+ catch (globError) {
331
+ console.error(`Error during glob search for ${pathName}: ${getErrorMessage(globError)}`);
332
+ }
333
+ }
334
+ else {
335
+ this.#debug(`Glob tool not found. Path ${pathName} will be skipped.`);
336
+ }
337
+ }
338
+ else {
339
+ console.error(`Error stating path ${pathName}. Path ${pathName} will be skipped.`);
340
+ }
341
+ }
342
+ if (resolvedSuccessfully) {
343
+ pathSpecsToRead.push(currentPathSpec);
344
+ atPathToResolvedSpecMap.set(pathName, currentPathSpec);
345
+ contentLabelsForDisplay.push(pathName);
346
+ }
347
+ }
348
+ // Construct the initial part of the query for the LLM
349
+ let initialQueryText = '';
350
+ for (let i = 0; i < message.chunks.length; i++) {
351
+ const chunk = message.chunks[i];
352
+ if ('text' in chunk) {
353
+ initialQueryText += chunk.text;
354
+ }
355
+ else {
356
+ // type === 'atPath'
357
+ const resolvedSpec = atPathToResolvedSpecMap.get(chunk.path);
358
+ if (i > 0 &&
359
+ initialQueryText.length > 0 &&
360
+ !initialQueryText.endsWith(' ') &&
361
+ resolvedSpec) {
362
+ // Add space if previous part was text and didn't end with space, or if previous was @path
363
+ const prevPart = message.chunks[i - 1];
364
+ if ('text' in prevPart ||
365
+ ('path' in prevPart && atPathToResolvedSpecMap.has(prevPart.path))) {
366
+ initialQueryText += ' ';
367
+ }
368
+ }
369
+ if (resolvedSpec) {
370
+ initialQueryText += `@${resolvedSpec}`;
371
+ }
372
+ else {
373
+ // If not resolved for reading (e.g. lone @ or invalid path that was skipped),
374
+ // add the original @-string back, ensuring spacing if it's not the first element.
375
+ if (i > 0 &&
376
+ initialQueryText.length > 0 &&
377
+ !initialQueryText.endsWith(' ') &&
378
+ !chunk.path.startsWith(' ')) {
379
+ initialQueryText += ' ';
380
+ }
381
+ initialQueryText += `@${chunk.path}`;
382
+ }
383
+ }
384
+ }
385
+ initialQueryText = initialQueryText.trim();
386
+ // Inform user about ignored paths
387
+ if (ignoredPaths.length > 0) {
388
+ const ignoreType = respectGitIgnore ? 'git-ignored' : 'custom-ignored';
389
+ this.#debug(`Ignored ${ignoredPaths.length} ${ignoreType} files: ${ignoredPaths.join(', ')}`);
390
+ }
391
+ // Fallback for lone "@" or completely invalid @-commands resulting in empty initialQueryText
392
+ if (pathSpecsToRead.length === 0) {
393
+ console.warn('No valid file paths found in @ commands to read.');
394
+ return [{ text: initialQueryText }];
395
+ }
396
+ const processedQueryParts = [{ text: initialQueryText }];
397
+ const toolArgs = {
398
+ paths: pathSpecsToRead,
399
+ respectGitIgnore, // Use configuration setting
400
+ };
401
+ const toolCall = await this.client.pushToolCall({
402
+ icon: readManyFilesTool.icon,
403
+ label: readManyFilesTool.getDescription(toolArgs),
404
+ });
405
+ try {
406
+ const result = await readManyFilesTool.execute(toolArgs, abortSignal);
407
+ const content = toToolCallContent(result) || {
408
+ type: 'markdown',
409
+ markdown: `Successfully read: ${contentLabelsForDisplay.join(', ')}`,
410
+ };
411
+ await this.client.updateToolCall({
412
+ toolCallId: toolCall.id,
413
+ status: 'finished',
414
+ content,
415
+ });
416
+ if (Array.isArray(result.llmContent)) {
417
+ const fileContentRegex = /^--- (.*?) ---\n\n([\s\S]*?)\n\n$/;
418
+ processedQueryParts.push({
419
+ text: '\n--- Content from referenced files ---',
420
+ });
421
+ for (const part of result.llmContent) {
422
+ if (typeof part === 'string') {
423
+ const match = fileContentRegex.exec(part);
424
+ if (match) {
425
+ const filePathSpecInContent = match[1]; // This is a resolved pathSpec
426
+ const fileActualContent = match[2].trim();
427
+ processedQueryParts.push({
428
+ text: `\nContent from @${filePathSpecInContent}:\n`,
429
+ });
430
+ processedQueryParts.push({ text: fileActualContent });
431
+ }
432
+ else {
433
+ processedQueryParts.push({ text: part });
434
+ }
435
+ }
436
+ else {
437
+ // part is a Part object.
438
+ processedQueryParts.push(part);
439
+ }
440
+ }
441
+ processedQueryParts.push({ text: '\n--- End of content ---' });
442
+ }
443
+ else {
444
+ console.warn('read_many_files tool returned no content or empty content.');
445
+ }
446
+ return processedQueryParts;
447
+ }
448
+ catch (error) {
449
+ await this.client.updateToolCall({
450
+ toolCallId: toolCall.id,
451
+ status: 'error',
452
+ content: {
453
+ type: 'markdown',
454
+ markdown: `Error reading files (${contentLabelsForDisplay.join(', ')}): ${getErrorMessage(error)}`,
455
+ },
456
+ });
457
+ throw error;
458
+ }
459
+ }
460
+ #debug(msg) {
461
+ if (this.config.getDebugMode()) {
462
+ console.warn(msg);
463
+ }
464
+ }
465
+ }
466
+ function toToolCallContent(toolResult) {
467
+ if (toolResult.returnDisplay) {
468
+ if (typeof toolResult.returnDisplay === 'string') {
469
+ return {
470
+ type: 'markdown',
471
+ markdown: toolResult.returnDisplay,
472
+ };
473
+ }
474
+ else {
475
+ return {
476
+ type: 'diff',
477
+ path: toolResult.returnDisplay.fileName,
478
+ oldText: toolResult.returnDisplay.originalContent,
479
+ newText: toolResult.returnDisplay.newContent,
480
+ };
481
+ }
482
+ }
483
+ else {
484
+ return null;
485
+ }
486
+ }
487
+ function toAcpToolCallConfirmation(confirmationDetails) {
488
+ switch (confirmationDetails.type) {
489
+ case 'edit':
490
+ return { type: 'edit' };
491
+ case 'exec':
492
+ return {
493
+ type: 'execute',
494
+ rootCommand: confirmationDetails.rootCommand,
495
+ command: confirmationDetails.command,
496
+ };
497
+ case 'mcp':
498
+ return {
499
+ type: 'mcp',
500
+ serverName: confirmationDetails.serverName,
501
+ toolName: confirmationDetails.toolName,
502
+ toolDisplayName: confirmationDetails.toolDisplayName,
503
+ };
504
+ case 'info':
505
+ return {
506
+ type: 'fetch',
507
+ urls: confirmationDetails.urls || [],
508
+ description: confirmationDetails.urls?.length
509
+ ? null
510
+ : confirmationDetails.prompt,
511
+ };
512
+ default: {
513
+ const unreachable = confirmationDetails;
514
+ throw new Error(`Unexpected: ${unreachable}`);
515
+ }
516
+ }
517
+ }
518
+ function toToolCallOutcome(outcome) {
519
+ switch (outcome) {
520
+ case 'allow':
521
+ return ToolConfirmationOutcome.ProceedOnce;
522
+ case 'alwaysAllow':
523
+ return ToolConfirmationOutcome.ProceedAlways;
524
+ case 'alwaysAllowMcpServer':
525
+ return ToolConfirmationOutcome.ProceedAlwaysServer;
526
+ case 'alwaysAllowTool':
527
+ return ToolConfirmationOutcome.ProceedAlwaysTool;
528
+ case 'reject':
529
+ case 'cancel':
530
+ return ToolConfirmationOutcome.Cancel;
531
+ default: {
532
+ const unreachable = outcome;
533
+ throw new Error(`Unexpected: ${unreachable}`);
534
+ }
535
+ }
536
+ }
537
+ //# sourceMappingURL=acpPeer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acpPeer.js","sourceRoot":"","sources":["../../../src/acp/acpPeer.ts"],"names":[],"mappings":"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"}
@@ -24,8 +24,11 @@ export interface CliArgs {
24
24
  telemetryOtlpEndpoint: string | undefined;
25
25
  telemetryLogPrompts: boolean | undefined;
26
26
  allowedMcpServerNames: string[] | undefined;
27
+ experimentalAcp: boolean | undefined;
27
28
  extensions: string[] | undefined;
28
29
  listExtensions: boolean | undefined;
30
+ ideMode: boolean | undefined;
31
+ proxy: string | undefined;
29
32
  }
30
33
  export declare function parseArguments(): Promise<CliArgs>;
31
34
  export declare function loadHierarchicalGeminiMemory(currentWorkingDirectory: string, debugMode: boolean, fileService: FileDiscoveryService, extensionContextFilePaths?: string[]): Promise<{