summaryrefslogtreecommitdiff
path: root/packages/core
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core')
-rw-r--r--packages/core/src/core/client.test.ts1
-rw-r--r--packages/core/src/core/client.ts20
2 files changed, 21 insertions, 0 deletions
diff --git a/packages/core/src/core/client.test.ts b/packages/core/src/core/client.test.ts
index 03793bda..93ea8912 100644
--- a/packages/core/src/core/client.test.ts
+++ b/packages/core/src/core/client.test.ts
@@ -198,6 +198,7 @@ describe('Gemini Client (client.ts)', () => {
getQuotaErrorOccurred: vi.fn().mockReturnValue(false),
setQuotaErrorOccurred: vi.fn(),
getNoBrowser: vi.fn().mockReturnValue(false),
+ getIdeMode: vi.fn().mockReturnValue(false),
};
return mock as unknown as Config;
});
diff --git a/packages/core/src/core/client.ts b/packages/core/src/core/client.ts
index 80979812..1cffd6a3 100644
--- a/packages/core/src/core/client.ts
+++ b/packages/core/src/core/client.ts
@@ -41,6 +41,7 @@ import {
import { ProxyAgent, setGlobalDispatcher } from 'undici';
import { DEFAULT_GEMINI_FLASH_MODEL } from '../config/models.js';
import { LoopDetectionService } from '../services/loopDetectionService.js';
+import { ideContext } from '../services/ideContext.js';
function isThinkingSupported(model: string) {
if (model.startsWith('gemini-2.5')) return true;
@@ -303,6 +304,25 @@ export class GeminiClient {
if (compressed) {
yield { type: GeminiEventType.ChatCompressed, value: compressed };
}
+
+ if (this.config.getIdeMode()) {
+ const activeFile = ideContext.getActiveFileContext();
+ if (activeFile?.filePath) {
+ let context = `
+This is the file that the user was most recently looking at:
+- Path: ${activeFile.filePath}`;
+ if (activeFile.cursor) {
+ context += `
+This is the cursor position in the file:
+- Cursor Position: Line ${activeFile.cursor.line}, Character ${activeFile.cursor.character}`;
+ }
+ request = [
+ { text: context },
+ ...(Array.isArray(request) ? request : [request]),
+ ];
+ }
+ }
+
const turn = new Turn(this.getChat(), prompt_id);
const resultStream = turn.run(request, signal);
for await (const event of resultStream) {