UNPKG

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
#!/usr/bin/env node /** * 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(); }