summaryrefslogtreecommitdiff
path: root/packages/core/src/config/config.ts
diff options
context:
space:
mode:
authorLouis Jimenez <[email protected]>2025-06-11 15:33:09 -0400
committerGitHub <[email protected]>2025-06-11 15:33:09 -0400
commite0f4f428fc6bef4f81db379ce1e0368004079c76 (patch)
tree4f9be0dc0f8fe11de7b83c32e56bf55314de9d93 /packages/core/src/config/config.ts
parentf75c48323ce65f651381c74ae75a1795e7cc5c45 (diff)
Restore Checkpoint Feature (#934)
Diffstat (limited to 'packages/core/src/config/config.ts')
-rw-r--r--packages/core/src/config/config.ts25
1 files changed, 25 insertions, 0 deletions
diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts
index d42fbbec..297178fd 100644
--- a/packages/core/src/config/config.ts
+++ b/packages/core/src/config/config.ts
@@ -25,6 +25,7 @@ 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';
+import { GitService } from '../services/gitService.js';
import { initializeTelemetry } from '../telemetry/index.js';
export enum ApprovalMode {
@@ -80,6 +81,7 @@ export interface ConfigParameters {
fileFilteringRespectGitIgnore?: boolean;
fileFilteringAllowBuildArtifacts?: boolean;
enableModifyWithExternalEditors?: boolean;
+ checkpoint?: boolean;
}
export class Config {
@@ -111,6 +113,8 @@ export class Config {
private readonly fileFilteringAllowBuildArtifacts: boolean;
private readonly enableModifyWithExternalEditors: boolean;
private fileDiscoveryService: FileDiscoveryService | null = null;
+ private gitService: GitService | undefined = undefined;
+ private readonly checkpoint: boolean;
constructor(params: ConfigParameters) {
this.sessionId = params.sessionId;
@@ -142,6 +146,7 @@ export class Config {
params.fileFilteringAllowBuildArtifacts ?? false;
this.enableModifyWithExternalEditors =
params.enableModifyWithExternalEditors ?? false;
+ this.checkpoint = params.checkpoint ?? false;
if (params.contextFileName) {
setGeminiMdFilename(params.contextFileName);
@@ -182,6 +187,10 @@ export class Config {
return this.targetDir;
}
+ getProjectRoot(): string {
+ return this.targetDir;
+ }
+
async getToolRegistry(): Promise<ToolRegistry> {
return this.toolRegistry;
}
@@ -265,6 +274,10 @@ export class Config {
return this.geminiClient;
}
+ getGeminiDir(): string {
+ return path.join(this.targetDir, GEMINI_DIR);
+ }
+
getGeminiIgnorePatterns(): string[] {
return this.geminiIgnorePatterns;
}
@@ -281,6 +294,10 @@ export class Config {
return this.enableModifyWithExternalEditors;
}
+ getCheckpointEnabled(): boolean {
+ return this.checkpoint;
+ }
+
async getFileService(): Promise<FileDiscoveryService> {
if (!this.fileDiscoveryService) {
this.fileDiscoveryService = new FileDiscoveryService(this.targetDir);
@@ -291,6 +308,14 @@ export class Config {
}
return this.fileDiscoveryService;
}
+
+ async getGitService(): Promise<GitService> {
+ if (!this.gitService) {
+ this.gitService = new GitService(this.targetDir);
+ await this.gitService.initialize();
+ }
+ return this.gitService;
+ }
}
function findEnvFile(startDir: string): string | null {