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, }, }) }