diff --git a/packages/core/src/utils/environmentContext.test.ts b/packages/core/src/utils/environmentContext.test.ts index a43bb5fd56..42b2316955 100644 --- a/packages/core/src/utils/environmentContext.test.ts +++ b/packages/core/src/utils/environmentContext.test.ts @@ -165,6 +165,29 @@ describe('getEnvironmentContext', () => { expect(getFolderStructure).not.toHaveBeenCalled(); }); + it('should exclude environment memory when JIT context is enabled', async () => { + (mockConfig as Record)['isJitContextEnabled'] = vi + .fn() + .mockReturnValue(true); + + const parts = await getEnvironmentContext(mockConfig as Config); + + const context = parts[0].text; + expect(context).not.toContain('Mock Environment Memory'); + expect(mockConfig.getEnvironmentMemory).not.toHaveBeenCalled(); + }); + + it('should include environment memory when JIT context is disabled', async () => { + (mockConfig as Record)['isJitContextEnabled'] = vi + .fn() + .mockReturnValue(false); + + const parts = await getEnvironmentContext(mockConfig as Config); + + const context = parts[0].text; + expect(context).toContain('Mock Environment Memory'); + }); + it('should handle read_many_files returning no content', async () => { const mockReadManyFilesTool = { build: vi.fn().mockReturnValue({ diff --git a/packages/core/src/utils/environmentContext.ts b/packages/core/src/utils/environmentContext.ts index 88dd1aab68..d5bdd2d75b 100644 --- a/packages/core/src/utils/environmentContext.ts +++ b/packages/core/src/utils/environmentContext.ts @@ -57,7 +57,12 @@ export async function getEnvironmentContext(config: Config): Promise { ? await getDirectoryContextString(config) : ''; const tempDir = config.storage.getProjectTempDir(); - const environmentMemory = config.getEnvironmentMemory(); + // When JIT context is enabled, project memory is already included in the + // system instruction via renderUserMemory(). Skip it here to avoid sending + // the same GEMINI.md content twice. + const environmentMemory = config.isJitContextEnabled?.() + ? '' + : config.getEnvironmentMemory(); const context = `