=== NEW === - studio/ — MCPEngine Studio scaffold (Next.js monorepo, build plan) - docs/FACTORY-V2.md — Factory v2 architecture doc - docs/CALENDLY_MCP_BUILD_SUMMARY.md — Calendly MCP build report === UPDATED SERVERS === - fieldedge: Added jobs-tools, UI build script, main entry update - lightspeed: Updated main + server entry points - squarespace: Added collection-browser + page-manager apps - toast: Added main + server entry points === INFRA === - infra/command-center/state.json — Updated pipeline state - infra/command-center/FACTORY-V2.md — Factory v2 operator playbook
46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
/**
|
|
* Build script for React UI apps
|
|
*/
|
|
|
|
import { execSync } from 'child_process';
|
|
import { readdirSync, statSync } from 'fs';
|
|
import { join } from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
import { dirname } from 'path';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = dirname(__filename);
|
|
|
|
const reactAppDir = join(__dirname, '..', 'src', 'ui', 'react-app');
|
|
|
|
try {
|
|
const apps = readdirSync(reactAppDir).filter(file => {
|
|
const fullPath = join(reactAppDir, file);
|
|
return statSync(fullPath).isDirectory();
|
|
});
|
|
|
|
console.log(`Found ${apps.length} React apps to build`);
|
|
|
|
for (const app of apps) {
|
|
const appPath = join(reactAppDir, app);
|
|
console.log(`Building ${app}...`);
|
|
|
|
try {
|
|
execSync('npx vite build', {
|
|
cwd: appPath,
|
|
stdio: 'inherit',
|
|
});
|
|
console.log(`✓ ${app} built successfully`);
|
|
} catch (error) {
|
|
console.error(`✗ Failed to build ${app}`);
|
|
}
|
|
}
|
|
|
|
console.log('UI build complete');
|
|
} catch (error) {
|
|
console.error('Build failed:', error.message);
|
|
process.exit(1);
|
|
}
|