agentic-data-stack-community
Version:
AI Agentic Data Stack Framework - Community Edition. Open source data engineering framework with 4 core agents, essential templates, and 3-dimensional quality validation.
129 lines (108 loc) โข 3.55 kB
JavaScript
/**
* Build Script for AI Agentic Data Stack Framework - Community Edition
*
* This script packages the community edition for distribution
*/
const fs = require('fs-extra');
const path = require('path');
const chalk = require('chalk');
const { execSync } = require('child_process');
const BUILD_DIR = path.join(__dirname, '../dist');
const PACKAGE_DIR = path.join(__dirname, '..');
async function main() {
console.log(chalk.bold.blue('\n๐๏ธ Building AI Agentic Data Stack Framework - Community Edition\n'));
try {
// Clean build directory
console.log('๐งน Cleaning build directory...');
await fs.remove(BUILD_DIR);
await fs.ensureDir(BUILD_DIR);
// Copy essential files
console.log('๐ฆ Copying framework files...');
const filesToCopy = [
'agents/',
'templates/',
'examples/',
'tools/',
'validation_scripts/',
'package.json',
'README.md',
'LICENSE.txt'
];
for (const file of filesToCopy) {
const sourcePath = path.join(PACKAGE_DIR, file);
const destPath = path.join(BUILD_DIR, file);
if (await fs.pathExists(sourcePath)) {
await fs.copy(sourcePath, destPath);
console.log(` โ
Copied ${file}`);
} else {
console.log(chalk.yellow(` โ ๏ธ Skipped ${file} (not found)`));
}
}
// Validate package structure
console.log('\n๐ Validating package structure...');
await validatePackageStructure();
// Run tests if available
console.log('\n๐งช Running validation tests...');
try {
execSync('npm test', { cwd: BUILD_DIR, stdio: 'inherit' });
console.log(chalk.green('โ
Tests passed'));
} catch (error) {
console.log(chalk.yellow('โ ๏ธ No tests found or tests failed'));
}
// Generate build info
console.log('\n๐ Generating build information...');
await generateBuildInfo();
console.log(chalk.green('\nโ
Build completed successfully!'));
console.log(`๐ Build output: ${BUILD_DIR}`);
console.log('\n๐ Ready for distribution!');
} catch (error) {
console.error(chalk.red('\nโ Build failed:'), error.message);
process.exit(1);
}
}
async function validatePackageStructure() {
const requiredFiles = [
'package.json',
'tools/cli.js',
'agents/',
'templates/',
'examples/'
];
for (const file of requiredFiles) {
const filePath = path.join(BUILD_DIR, file);
if (!await fs.pathExists(filePath)) {
throw new Error(`Required file missing: ${file}`);
}
console.log(` โ
${file}`);
}
// Validate package.json
const packageJson = await fs.readJSON(path.join(BUILD_DIR, 'package.json'));
if (!packageJson.name || !packageJson.version) {
throw new Error('Invalid package.json: missing name or version');
}
console.log(chalk.green('๐ฆ Package structure validated'));
}
async function generateBuildInfo() {
const buildInfo = {
build_timestamp: new Date().toISOString(),
framework_version: '1.0.0',
edition: 'community',
features: {
agents: 4,
templates: 20,
quality_dimensions: 3,
examples: 1
},
build_environment: {
node_version: process.version,
platform: process.platform,
arch: process.arch
}
};
await fs.writeJSON(path.join(BUILD_DIR, 'build-info.json'), buildInfo, { spaces: 2 });
console.log(' โ
build-info.json generated');
}
if (require.main === module) {
main();
}