summaryrefslogtreecommitdiff
path: root/packages/core/src/config
diff options
context:
space:
mode:
Diffstat (limited to 'packages/core/src/config')
-rw-r--r--packages/core/src/config/config.test.ts23
-rw-r--r--packages/core/src/config/config.ts35
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);