From 19491b7b940912c2fb3fe24b2f189d3fd5668669 Mon Sep 17 00:00:00 2001 From: Jacob MacDonald Date: Thu, 7 Aug 2025 14:19:06 -0700 Subject: avoid loading and initializing CLI config twice in non-interactive mode (#5793) --- packages/core/src/config/config.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'packages/core/src/config/config.ts') diff --git a/packages/core/src/config/config.ts b/packages/core/src/config/config.ts index db226c76..473ab5a6 100644 --- a/packages/core/src/config/config.ts +++ b/packages/core/src/config/config.ts @@ -197,6 +197,7 @@ export interface ConfigParameters { ideMode?: boolean; loadMemoryFromIncludeDirectories?: boolean; chatCompression?: ChatCompressionSettings; + interactive?: boolean; } export class Config { @@ -260,6 +261,8 @@ export class Config { private readonly experimentalAcp: boolean = false; private readonly loadMemoryFromIncludeDirectories: boolean = false; private readonly chatCompression: ChatCompressionSettings | undefined; + private readonly interactive: boolean; + private initialized: boolean = false; constructor(params: ConfigParameters) { this.sessionId = params.sessionId; @@ -326,6 +329,7 @@ export class Config { this.loadMemoryFromIncludeDirectories = params.loadMemoryFromIncludeDirectories ?? false; this.chatCompression = params.chatCompression; + this.interactive = params.interactive ?? false; if (params.contextFileName) { setGeminiMdFilename(params.contextFileName); @@ -344,7 +348,14 @@ export class Config { } } + /** + * Must only be called once, throws if called again. + */ async initialize(): Promise { + if (this.initialized) { + throw Error('Config was already initialized'); + } + this.initialized = true; // Initialize centralized FileDiscoveryService this.getFileService(); if (this.getCheckpointingEnabled()) { @@ -685,6 +696,10 @@ export class Config { return this.chatCompression; } + isInteractive(): boolean { + return this.interactive; + } + async getGitService(): Promise { if (!this.gitService) { this.gitService = new GitService(this.targetDir); -- cgit v1.2.3