import { relative, resolve } from "node:path"; import { pathToFileURL, fileURLToPath } from "node:url"; export function normalizeToolPath(cwd: string, inputPath: string): string { const path = inputPath.startsWith("@") ? inputPath.slice(1) : inputPath; return resolve(cwd, path); } export function pathToUri(path: string): string { return pathToFileURL(path).toString(); } export function uriToPath(uri: string): string { return fileURLToPath(uri); } export function languageIdForPath(path: string): string { if (/Gemfile$/.test(path)) return "ruby"; if (/\.rake$/.test(path)) return "ruby"; if (/\.rb$/.test(path)) return "ruby"; return "ruby"; } export function isRubyPath(path: string): boolean { return /(^|\/)(Gemfile|Rakefile)$/.test(path) || /\.(rb|rake|gemspec)$/.test(path); } export function isInsideWorkspace(cwd: string, path: string): boolean { const resolvedCwd = resolve(cwd); const resolvedPath = resolve(path); const rel = relative(resolvedCwd, resolvedPath); return rel === "" || (!rel.startsWith("..") && !rel.startsWith(`/`) && !/^[A-Za-z]:/.test(rel)); }