/* Generates: * – src/assets/botTools.json * – src/assets/pageToolMap.json * * It scans backend/server*.js for comment blocks like: * /** @aiTool { "name": "...", "pages": ["CareerExplorer"], ... } *\/ */ const fs = require('fs'); const glob = require('glob'); const { parse } = require('@babel/parser'); const files = glob.sync('backend/server*.js'); // adjust if server paths differ const tools = []; const pageToolMap = {}; for (const file of files) { const code = fs.readFileSync(file, 'utf8'); const ast = parse(code, { sourceType: 'module', plugins: ['jsx'] }); (ast.comments || []).forEach(c => { if (!c.value.includes('@aiTool')) return; const meta = JSON.parse(c.value.replace(/^[\s\S]*@aiTool\s*/, '').trim()); tools.push({ name: meta.name, description: meta.description, parameters: meta.parameters, }); (meta.pages || ['Global']).forEach(p => (pageToolMap[p] ||= []).push(meta.name) ); }); } fs.mkdirSync('src/assets', { recursive: true }); fs.writeFileSync('src/assets/botTools.json', JSON.stringify(tools, null, 2)); fs.writeFileSync('src/assets/pageToolMap.json', JSON.stringify(pageToolMap, null, 2)); console.log('✅ botTools.json & pageToolMap.json generated');