From 3edb8b5cb716ec4fec812a7022c559af83ad3121 Mon Sep 17 00:00:00 2001 From: Armin Ronacher Date: Tue, 28 Apr 2026 17:52:14 +0200 Subject: [PATCH] fix(agent): support fdfind as fd fallback --- packages/coding-agent/src/utils/tools-manager.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/coding-agent/src/utils/tools-manager.ts b/packages/coding-agent/src/utils/tools-manager.ts index b24c43a3..ba60341f 100644 --- a/packages/coding-agent/src/utils/tools-manager.ts +++ b/packages/coding-agent/src/utils/tools-manager.ts @@ -22,6 +22,7 @@ interface ToolConfig { name: string; repo: string; // GitHub repo (e.g., "sharkdp/fd") binaryName: string; // Name of the binary inside the archive + systemBinaryNames?: string[]; // Alternative system command names to try before downloading tagPrefix: string; // Prefix for tags (e.g., "v" for v1.0.0, "" for 1.0.0) getAssetName: (version: string, plat: string, architecture: string) => string | null; } @@ -31,6 +32,7 @@ const TOOLS: Record = { name: "fd", repo: "sharkdp/fd", binaryName: "fd", + systemBinaryNames: ["fd", "fdfind"], tagPrefix: "v", getAssetName: (version, plat, architecture) => { if (plat === "darwin") { @@ -92,8 +94,11 @@ export function getToolPath(tool: "fd" | "rg"): string | null { } // Check system PATH - if found, just return the command name (it's in PATH) - if (commandExists(config.binaryName)) { - return config.binaryName; + const systemBinaryNames = config.systemBinaryNames ?? [config.binaryName]; + for (const systemBinaryName of systemBinaryNames) { + if (commandExists(systemBinaryName)) { + return systemBinaryName; + } } return null;