/** * @license * Copyright 2025 Google LLC * SPDX-License-Identifier: Apache-2.0 */ import type { FileSystemService } from '@qwen-code/qwen-code-core'; import type * 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, }); } findFiles(fileName: string, searchPaths: readonly string[]): string[] { return this.fallback.findFiles(fileName, searchPaths); } }