diff options
Diffstat (limited to 'packages/core/src/config')
| -rw-r--r-- | packages/core/src/config/config.test.ts | 23 | ||||
| -rw-r--r-- | packages/core/src/config/config.ts | 35 |
2 files changed, 55 insertions, 3 deletions
diff --git a/packages/core/src/config/config.test.ts b/packages/core/src/config/config.test.ts index 9b4b2664..85ec9541 100644 --- a/packages/core/src/config/config.test.ts +++ b/packages/core/src/config/config.test.ts @@ -143,4 +143,27 @@ describe('Server Config (config.ts)', () => { new Config(baseParams); // baseParams does not have contextFileName expect(mockSetGeminiMdFilename).not.toHaveBeenCalled(); }); + + it('should set default file filtering settings when not provided', () => { + const config = new Config(baseParams); + expect(config.getFileFilteringRespectGitIgnore()).toBe(true); + expect(config.getFileFilteringAllowBuildArtifacts()).toBe(false); + }); + + it('should set custom file filtering settings when provided', () => { + const paramsWithFileFiltering: ConfigParameters = { + ...baseParams, + fileFilteringRespectGitIgnore: false, + fileFilteringAllowBuildArtifacts: true, + }; + const config = new Config(paramsWithFileFiltering); + expect(config.getFileFilteringRespectGitIgnore()).toBe(false); + expect(config.getFileFilteringAllowBuildArtifacts()).toBe(true); + }); + + it('should have a getFileService method that returns FileDiscoveryService', async () => { + const config = new Config(baseParams); + const fileService = await config.getFileService(); + expect(fileService).toBeDefined(); + }); }); diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index 46e5123c..ea782c4e 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -23,6 +23,7 @@ import { MemoryTool, setGeminiMdFilename } from '../tools/memoryTool.js'; import { WebSearchTool } from '../tools/web-search.js'; import { GeminiClient } from '../core/client.js'; import { GEMINI_CONFIG_DIR as GEMINI_DIR } from '../tools/memoryTool.js'; +import { FileDiscoveryService } from '../services/fileDiscoveryService.js'; export enum ApprovalMode { DEFAULT = 'default', @@ -65,6 +66,8 @@ export interface ConfigParameters { vertexai?: boolean; showMemoryUsage?: boolean; contextFileName?: string; + fileFilteringRespectGitIgnore?: boolean; + fileFilteringAllowBuildArtifacts?: boolean; } export class Config { @@ -88,6 +91,9 @@ export class Config { private readonly vertexai: boolean | undefined; private readonly showMemoryUsage: boolean; private readonly geminiClient: GeminiClient; + private readonly fileFilteringRespectGitIgnore: boolean; + private readonly fileFilteringAllowBuildArtifacts: boolean; + private fileDiscoveryService: FileDiscoveryService | null = null; constructor(params: ConfigParameters) { this.apiKey = params.apiKey; @@ -108,6 +114,10 @@ export class Config { this.approvalMode = params.approvalMode ?? ApprovalMode.DEFAULT; this.vertexai = params.vertexai; this.showMemoryUsage = params.showMemoryUsage ?? false; + this.fileFilteringRespectGitIgnore = + params.fileFilteringRespectGitIgnore ?? true; + this.fileFilteringAllowBuildArtifacts = + params.fileFilteringAllowBuildArtifacts ?? false; if (params.contextFileName) { setGeminiMdFilename(params.contextFileName); @@ -207,6 +217,25 @@ export class Config { getGeminiClient(): GeminiClient { return this.geminiClient; } + + getFileFilteringRespectGitIgnore(): boolean { + return this.fileFilteringRespectGitIgnore; + } + + getFileFilteringAllowBuildArtifacts(): boolean { + return this.fileFilteringAllowBuildArtifacts; + } + + async getFileService(): Promise<FileDiscoveryService> { + if (!this.fileDiscoveryService) { + this.fileDiscoveryService = new FileDiscoveryService(this.targetDir); + await this.fileDiscoveryService.initialize({ + respectGitIgnore: this.fileFilteringRespectGitIgnore, + includeBuildArtifacts: this.fileFilteringAllowBuildArtifacts, + }); + } + return this.fileDiscoveryService; + } } function findEnvFile(startDir: string): string | null { @@ -270,14 +299,14 @@ export function createToolRegistry(config: Config): Promise<ToolRegistry> { } }; - registerCoreTool(LSTool, targetDir); + registerCoreTool(LSTool, targetDir, config); registerCoreTool(ReadFileTool, targetDir); registerCoreTool(GrepTool, targetDir); - registerCoreTool(GlobTool, targetDir); + registerCoreTool(GlobTool, targetDir, config); registerCoreTool(EditTool, config); registerCoreTool(WriteFileTool, config); registerCoreTool(WebFetchTool, config); - registerCoreTool(ReadManyFilesTool, targetDir); + registerCoreTool(ReadManyFilesTool, targetDir, config); registerCoreTool(ShellTool, config); registerCoreTool(MemoryTool); registerCoreTool(WebSearchTool, config); |
