import path from "node:path"; import { pathToFileURL } from "node:url"; import type { PackageQueryGenerator } from "./assembly.js"; /** The build invoker selects this executable explicitly. Never resolve a * generator by a capability name or execute a module discovered in user QX. */ export async function loadQueryGenerator(filename?: string): Promise { if (!filename) return undefined; const module = await import(pathToFileURL(path.resolve(filename)).href); if (typeof module.generatePackageQueries !== "function") throw new Error("Query generator must export generatePackageQueries"); const generator: PackageQueryGenerator = module.generatePackageQueries; if (module.completeWorkspace !== undefined) { if (typeof module.completeWorkspace !== "function") throw new Error("completeWorkspace must be a function"); generator.completeWorkspace = module.completeWorkspace; } return generator; }