UNPKG

sf-agent-framework

Version:

AI Agent Orchestration Framework for Salesforce Development - Two-phase architecture with 70% context reduction

50 lines (39 loc) 1.62 kB
const glob = require('glob'); const fs = require('fs'); const path = require('path'); async function flattenCodebase() { console.log('Starting codebase flattening...'); const files = glob.sync('src-*/**/*.{cls,trigger}'); console.log('Found files:', files); let xml = '<codebase>\n'; for (const file of files) { const extension = path.extname(file); const name = path.basename(file, extension); const metaFile = file + '-meta.xml'; const body = fs.readFileSync(file, 'utf-8'); const metaBody = fs.readFileSync(metaFile, 'utf-8'); const apiVersionMatch = metaBody.match(/<apiVersion>(.*?)<\/apiVersion>/); const statusMatch = metaBody.match(/<status>(.*?)<\/status>/); const apiVersion = apiVersionMatch ? apiVersionMatch[1] : ''; const status = statusMatch ? statusMatch[1] : ''; if (extension === '.cls') { xml += ` <apexClass>\n`; xml += ` <name>${name}</name>\n`; xml += ` <apiVersion>${apiVersion}</apiVersion>\n`; xml += ` <status>${status}</status>\n`; xml += ` <body><![CDATA[${body}]]></body>\n`; xml += ` </apexClass>\n`; } else if (extension === '.trigger') { xml += ` <apexTrigger>\n`; xml += ` <name>${name}</name>\n`; xml += ` <apiVersion>${apiVersion}</apiVersion>\n`; xml += ` <status>${status}</status>\n`; xml += ` <body><![CDATA[${body}]]></body>\n`; xml += ` </apexTrigger>\n`; } } xml += '</codebase>'; fs.writeFileSync('org-snapshot.xml', xml); console.log('Codebase flattened to org-snapshot.xml'); } flattenCodebase();