32 lines · 719 B · TypeScript
RawDownload
import path from "path"import type { Tool } from "./tool"import { Instance } from "../project/instance" type Kind = "file" | "directory" type Options = {  bypass?: boolean  kind?: Kind} export async function assertExternalDirectory(ctx: Tool.Context, target?: string, options?: Options) {  if (!target) return   if (options?.bypass) return   if (Instance.containsPath(target)) return   const kind = options?.kind ?? "file"  const parentDir = kind === "directory" ? target : path.dirname(target)  const glob = path.join(parentDir, "*")   await ctx.ask({    permission: "external_directory",    patterns: [glob],    always: [glob],    metadata: {      filepath: target,      parentDir,    },  })}