{"record":{"id":"9ef351237a7f207c","repo":"stablyai/orca","slug":"quick-open-scan-too-large-reason-install-rip","errorCode":null,"errorMessage":"Quick Open scan too large (${reason}). Install ripgrep ${location} to enable fast, gitignore-aware listing: ${cmd}","messagePattern":"Quick Open scan too large \\((.+?)\\)\\. Install ripgrep (.+?) to enable fast, gitignore-aware listing: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"warning","filePath":"src/main/ipc/filesystem-list-files.ts","lineNumber":61,"sourceCode":"  // every worktree instead of just the active one. The shared helper\n  // normalizes, validates, and root-relativizes every input.\n  const excludePathPrefixes = buildExcludePathPrefixes(authorizedRootPath, excludePaths)\n  const wslDistroForOutput = parseWslPath(authorizedRootPath)?.distro ?? localGitOptions.wslDistro\n\n  const listWithoutRipgrep = async (): Promise<string[]> => {\n    try {\n      return await listFilesWithGit(\n        authorizedRootPath,\n        excludePathPrefixes,\n        localGitOptions,\n        signal,\n        maxResults\n      )\n    } catch (err) {\n      if (!isQuickOpenReaddirBudgetError(err)) {\n        throw err\n      }\n      throw new Error(await buildInstallRgMessage(err))\n    }\n  }\n  if (\n    wslDistroForOutput &&\n    !(await checkRgAvailable(authorizedRootPath, localGitOptions.wslDistro))\n  ) {\n    return listWithoutRipgrep()\n  }\n\n  const files = new Set<string>()\n  const children: {\n    child: ChildProcess\n    isDone: () => boolean\n    finish: () => void\n  }[] = []\n  // Why: WSL-routed rg can emit Linux-native absolute paths. UNC repos carry\n  // their distro in the path; Windows-path repos carry it in project runtime.\n  const { primary, ignoredPass } = buildRgArgsForQuickOpen({","sourceCodeStart":43,"sourceCodeEnd":79,"githubUrl":"https://github.com/stablyai/orca/blob/1136503c6a231a16dce8f921f6fadb63d181e8db/src/main/ipc/filesystem-list-files.ts#L43-L79","documentation":"Thrown by listQuickOpenFiles() when ripgrep is unavailable and the no-ripgrep fallback (listFilesWithGit) raised a QuickOpenReaddirBudgetError — i.e. the directory walk exceeded the readdir entry budget because the tree was too large to enumerate safely without ripgrep. buildInstallRgMessage composes the final string with the underlying reason, an install command detected from the OS (apt/dnf/pacman/brew), and whether the scan runs locally or remotely. It is guidance, not a crash: install ripgrep to restore fast, gitignore-aware listing.","triggerScenarios":"listQuickOpenFiles runs in an environment where checkRgAvailable is false (or rg failed to start), so it calls listWithoutRipgrep; that fallback hits the readdir budget for a large tree and throws a budget error, which is converted into this install-rg message.","commonSituations":"Fresh Linux/WSL machine without ripgrep installed and a very large repo; ripgrep binary removed or not on PATH in the SSH/WSL distro; a remote Quick Open scan where the host lacks rg; CI/packaged build that did not bundle rg.","solutions":["Install ripgrep using the command in the message (e.g. 'sudo apt install ripgrep', 'brew install ripgrep').","Ensure the rg binary is on PATH for the process running the scan (and inside the WSL distro for WSL repos).","Restart Orca after install so rg availability is re-detected.","If installing is impossible, reduce the scanned tree size (narrower workspace) so the no-rg fallback stays under budget."],"exampleFix":"// before: rg missing -> 'Quick Open scan too large (readdir budget exceeded)...'\n// after, on Debian/Ubuntu:\n//   sudo apt install ripgrep\n// then restart Orca","handlingStrategy":"validation","validationCode":"// Verify ripgrep availability before triggering Quick Open scans\nimport { checkRgAvailable } from './rg-availability'\nasync function ensureRgForScan(rootPath: string, wslDistro?: string): Promise<boolean> {\n  return checkRgAvailable(rootPath, wslDistro)\n}","typeGuard":null,"tryCatchPattern":"try {\n  await listQuickOpenFiles(rootPath, store, excludePaths, signal, maxResults)\n} catch (e) {\n  if (e instanceof Error && /Install ripgrep/.test(e.message)) {\n    // surface install guidance to the user; after install, restart and retry\n  } else throw e\n}","preventionTips":["Install ripgrep on every machine that runs Quick Open (apt/dnf/pacman/brew).","For WSL repos, ensure rg is installed inside the distro and on its PATH.","Restart Orca after installing rg so availability is re-detected."],"tags":["quick-open","ripgrep","performance","wsl","tooling"],"backgroundTag":null,"analyzedSha":"1136503c6a231a16dce8f921f6fadb63d181e8db","analyzedAt":"2026-08-12T23:15:58.167Z","schemaVersion":2},"datasetVersion":"2026-08-12T23:17:12.415Z"}