From c9bea8e6465e1a67879cde649c4125ea6b9007f5 Mon Sep 17 00:00:00 2001 From: Billy Biggs Date: Sun, 22 Jun 2025 16:17:05 -0700 Subject: [PATCH] Plumb extension context filenames through for /memory refresh (#1312) --- .../cli/src/config/config.integration.test.ts | 30 +++++++++++++++++++ packages/cli/src/config/config.ts | 1 + packages/cli/src/ui/App.tsx | 1 + packages/core/src/config/config.ts | 7 +++++ 4 files changed, 39 insertions(+) diff --git a/packages/cli/src/config/config.integration.test.ts b/packages/cli/src/config/config.integration.test.ts index 868538ab..6d8a6c7d 100644 --- a/packages/cli/src/config/config.integration.test.ts +++ b/packages/cli/src/config/config.integration.test.ts @@ -210,4 +210,34 @@ describe('Configuration Integration Tests', () => { expect(config.getCheckpointingEnabled()).toBe(true); }); }); + + describe('Extension Context Files', () => { + it('should have an empty array for extension context files by default', () => { + const configParams: ConfigParameters = { + cwd: '/tmp', + contentGeneratorConfig: TEST_CONTENT_GENERATOR_CONFIG, + embeddingModel: 'test-embedding-model', + sandbox: false, + targetDir: tempDir, + debugMode: false, + }; + const config = new Config(configParams); + expect(config.getExtensionContextFilePaths()).toEqual([]); + }); + + it('should correctly store and return extension context file paths', () => { + const contextFiles = ['/path/to/file1.txt', '/path/to/file2.js']; + const configParams: ConfigParameters = { + cwd: '/tmp', + contentGeneratorConfig: TEST_CONTENT_GENERATOR_CONFIG, + embeddingModel: 'test-embedding-model', + sandbox: false, + targetDir: tempDir, + debugMode: false, + extensionContextFilePaths: contextFiles, + }; + const config = new Config(configParams); + expect(config.getExtensionContextFilePaths()).toEqual(contextFiles); + }); + }); }); diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index d8502bdd..30614082 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -244,6 +244,7 @@ export async function loadCliConfig( fileDiscoveryService: fileService, bugCommand: settings.bugCommand, model: argv.model!, + extensionContextFilePaths, }); } diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index 6caa4026..5b116869 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -183,6 +183,7 @@ const App = ({ config, settings, startupWarnings = [] }: AppProps) => { process.cwd(), config.getDebugMode(), config.getFileService(), + config.getExtensionContextFilePaths(), ); config.setUserMemory(memoryContent); config.setGeminiMdFileCount(fileCount); diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index f6128e11..a9696206 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -118,6 +118,7 @@ export interface ConfigParameters { bugCommand?: BugCommandSettings; model: string; disableDataCollection?: boolean; + extensionContextFilePaths?: string[]; } export class Config { @@ -155,6 +156,7 @@ export class Config { private readonly bugCommand: BugCommandSettings | undefined; private readonly model: string; private readonly disableDataCollection: boolean; + private readonly extensionContextFilePaths: string[]; constructor(params: ConfigParameters) { this.sessionId = params.sessionId; @@ -196,6 +198,7 @@ export class Config { this.model = params.model; this.disableDataCollection = params.telemetry?.disableDataCollection ?? true; + this.extensionContextFilePaths = params.extensionContextFilePaths ?? []; if (params.contextFileName) { setGeminiMdFilename(params.contextFileName); @@ -387,6 +390,10 @@ export class Config { return this.disableDataCollection; } + getExtensionContextFilePaths(): string[] { + return this.extensionContextFilePaths; + } + async getGitService(): Promise { if (!this.gitService) { this.gitService = new GitService(this.targetDir);