/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import { FileSystemService } from '@google/gemini-cli-core'; import * as acp from './acp.js'; /** * ACP client-based implementation of FileSystemService */ export class AcpFileSystemService implements FileSystemService { constructor( private readonly client: acp.Client, private readonly sessionId: string, private readonly capabilities: acp.FileSystemCapability, private readonly fallback: FileSystemService, ) {} async readTextFile(filePath: string): Promise { if (!this.capabilities.readTextFile) { return this.fallback.readTextFile(filePath); } const response = await this.client.readTextFile({ path: filePath, sessionId: this.sessionId, line: null, limit: null, }); return response.content; } async writeTextFile(filePath: string, content: string): Promise { if (!this.capabilities.writeTextFile) { return this.fallback.writeTextFile(filePath, content); } await this.client.writeTextFile({ path: filePath, content, sessionId: this.sessionId, }); } }