From a0c590944ff82d3584a532cd7400689297735757 Mon Sep 17 00:00:00 2001 From: Castor Regex Date: Wed, 22 Oct 2025 05:31:24 -0500 Subject: feat: add support for .proto files --- packages/core/src/utils/fileUtils.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'packages/core/src/utils/fileUtils.ts') diff --git a/packages/core/src/utils/fileUtils.ts b/packages/core/src/utils/fileUtils.ts index f0b491ed..009a4d72 100644 --- a/packages/core/src/utils/fileUtils.ts +++ b/packages/core/src/utils/fileUtils.ts @@ -121,7 +121,9 @@ export async function isBinaryFile(filePath: string): Promise { */ export async function detectFileType( filePath: string, -): Promise<'text' | 'image' | 'pdf' | 'audio' | 'video' | 'binary' | 'svg'> { +): Promise< + 'text' | 'image' | 'pdf' | 'audio' | 'video' | 'binary' | 'svg' | 'proto' +> { const ext = path.extname(filePath).toLowerCase(); // The mimetype for various TypeScript extensions (ts, mts, cts, tsx) can be @@ -135,6 +137,10 @@ export async function detectFileType( return 'svg'; } + if (ext === '.proto') { + return 'proto'; + } + const lookedUpMimeType = mime.lookup(filePath); // Returns false if not found, or the mime type string if (lookedUpMimeType) { if (lookedUpMimeType.startsWith('image/')) { @@ -280,6 +286,13 @@ export async function processSingleFileContent( returnDisplay: `Read SVG as text: ${relativePathForDisplay}`, }; } + case 'proto': { + const content = await fileSystemService.readProtoFile(filePath); + return { + llmContent: content, + returnDisplay: `Read proto file: ${relativePathForDisplay}`, + }; + } case 'text': { const content = await fileSystemService.readTextFile(filePath); const lines = content.split('\n'); -- cgit v1.2.3