import { mkdir, writeFile } from 'node:fs/promises'; import { dirname, resolve } from 'node:path'; import { buildIsoPdfCorpus } from './iso-pdf-corpus'; async function main(): Promise { const [iso27001Path, iso27002Path, outputPath, corpusVersion] = process.argv.slice(2); if (!iso27001Path || !iso27002Path || !outputPath) { throw new Error('Usage: npm run rag:prepare-iso -- [corpus-version]'); } const target = resolve(outputPath); const corpus = await buildIsoPdfCorpus({ iso27001Path: resolve(iso27001Path), iso27002Path: resolve(iso27002Path), ...(corpusVersion?.trim() ? { corpusVersion: corpusVersion.trim() } : {}) }); await mkdir(dirname(target), { recursive: true }); await writeFile(target, `${JSON.stringify(corpus, null, 2)}\n`, { encoding: 'utf8', flag: 'wx' }); const controlCount = new Set(corpus.documents.map(document => document.controlId)).size; console.log(`Prepared corpus ${corpus.corpusId}@${corpus.corpusVersion}: ${controlCount} controls, ${corpus.documents.length} section documents.`); } void main().catch(error => { console.error(error instanceof Error ? error.message : 'ISO corpus preparation failed.'); process.exitCode = 1; });