summaryrefslogtreecommitdiff
path: root/packages/cli/src/zed-integration/zedIntegration.ts
diff options
context:
space:
mode:
authorConrad Irwin <[email protected]>2025-08-18 16:29:45 -0600
committerGitHub <[email protected]>2025-08-18 22:29:45 +0000
commitfb3ceb0da4e2cd636013c2c36a9c0016c01aa47f (patch)
tree7aa43846dd88bd5acdb8898b0ccd2e685f2d5ece /packages/cli/src/zed-integration/zedIntegration.ts
parent4394b6ab4fc86637b07fcd26b9a790c627d1e065 (diff)
Read and write files through Zed (#6169)
Co-authored-by: Agus Zubiaga <[email protected]>
Diffstat (limited to 'packages/cli/src/zed-integration/zedIntegration.ts')
-rw-r--r--packages/cli/src/zed-integration/zedIntegration.ts15
1 files changed, 14 insertions, 1 deletions
diff --git a/packages/cli/src/zed-integration/zedIntegration.ts b/packages/cli/src/zed-integration/zedIntegration.ts
index 1b5baa8a..6adaeb70 100644
--- a/packages/cli/src/zed-integration/zedIntegration.ts
+++ b/packages/cli/src/zed-integration/zedIntegration.ts
@@ -24,6 +24,7 @@ import {
MCPServerConfig,
} from '@google/gemini-cli-core';
import * as acp from './acp.js';
+import { AcpFileSystemService } from './fileSystemService.js';
import { Readable, Writable } from 'node:stream';
import { Content, Part, FunctionCall, PartListUnion } from '@google/genai';
import { LoadedSettings, SettingScope } from '../config/settings.js';
@@ -60,6 +61,7 @@ export async function runZedIntegration(
class GeminiAgent {
private sessions: Map<string, Session> = new Map();
+ private clientCapabilities: acp.ClientCapabilities | undefined;
constructor(
private config: Config,
@@ -70,8 +72,9 @@ class GeminiAgent {
) {}
async initialize(
- _args: acp.InitializeRequest,
+ args: acp.InitializeRequest,
): Promise<acp.InitializeResponse> {
+ this.clientCapabilities = args.clientCapabilities;
const authMethods = [
{
id: AuthType.LOGIN_WITH_GOOGLE,
@@ -129,6 +132,16 @@ class GeminiAgent {
throw acp.RequestError.authRequired();
}
+ if (this.clientCapabilities?.fs) {
+ const acpFileSystemService = new AcpFileSystemService(
+ this.client,
+ sessionId,
+ this.clientCapabilities.fs,
+ config.getFileSystemService(),
+ );
+ config.setFileSystemService(acpFileSystemService);
+ }
+
const geminiClient = config.getGeminiClient();
const chat = await geminiClient.startChat();
const session = new Session(sessionId, chat, config, this.client);