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
JavaScript
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();