import { existsSync, readFileSync } from "node:fs"; import { join } from "node:path"; /** * Throws with a clear message if any required anchor is missing from the target * file. Generator actions call this in their prompt validator so the run aborts * cleanly before any partial output lands on disk. */ export function assertAnchors( repoRoot: string, relativePath: string, anchors: string[], ): void { const path = join(repoRoot, relativePath); if (!existsSync(path)) { throw new Error(`Required file does not exist: ${relativePath}`); } const content = readFileSync(path, "utf8"); for (const anchor of anchors) { if (!content.includes(anchor)) { throw new Error( `Missing anchor "${anchor}" in ${relativePath}. Add it before running this generator.`, ); } } }