120 lines
3.9 KiB
JavaScript
120 lines
3.9 KiB
JavaScript
#!/usr/bin/env node
|
|
|
|
import fs from 'fs';
|
|
import path from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const __filename = fileURLToPath(import.meta.url);
|
|
const __dirname = path.dirname(__filename);
|
|
|
|
// Create dist/wasm directory
|
|
const distWasmDir = path.join(__dirname, '..', 'dist', 'wasm');
|
|
const distWasmTemporalDir = path.join(distWasmDir, 'temporal-attractor');
|
|
|
|
// Create directories if they don't exist
|
|
if (!fs.existsSync(distWasmDir)) {
|
|
fs.mkdirSync(distWasmDir, { recursive: true });
|
|
console.log('Created dist/wasm directory');
|
|
}
|
|
|
|
if (!fs.existsSync(distWasmTemporalDir)) {
|
|
fs.mkdirSync(distWasmTemporalDir, { recursive: true });
|
|
console.log('Created dist/wasm/temporal-attractor directory');
|
|
}
|
|
|
|
// WASM files to copy and their source locations
|
|
const wasmFiles = [
|
|
{
|
|
source: 'crates/strange-loop/wasm/strange_loop_bg.wasm',
|
|
dest: 'dist/wasm/strange_loop_bg.wasm',
|
|
js: 'crates/strange-loop/wasm/strange_loop.js'
|
|
},
|
|
{
|
|
source: 'crates/psycho-symbolic-reasoner/wasm-dist/extractors_bg.wasm',
|
|
dest: 'dist/wasm/extractors_bg.wasm',
|
|
js: 'crates/psycho-symbolic-reasoner/wasm-dist/extractors.js'
|
|
},
|
|
{
|
|
source: 'crates/psycho-symbolic-reasoner/wasm-dist/planner_bg.wasm',
|
|
dest: 'dist/wasm/planner_bg.wasm',
|
|
js: 'crates/psycho-symbolic-reasoner/wasm-dist/planner.js'
|
|
},
|
|
{
|
|
source: 'crates/psycho-symbolic-reasoner/wasm-dist/graph_reasoner_bg.wasm',
|
|
dest: 'dist/wasm/graph_reasoner_bg.wasm',
|
|
js: 'crates/psycho-symbolic-reasoner/wasm-dist/graph_reasoner.js'
|
|
},
|
|
{
|
|
source: 'crates/temporal-neural-solver-wasm/dist/wasm/temporal_neural_solver_bg.wasm',
|
|
dest: 'dist/wasm/temporal_neural_solver_bg.wasm',
|
|
js: 'crates/temporal-neural-solver-wasm/dist/wasm/temporal_neural_solver.js'
|
|
}
|
|
];
|
|
|
|
// Copy each WASM file
|
|
let copiedCount = 0;
|
|
let missingCount = 0;
|
|
|
|
wasmFiles.forEach(({ source, dest, js }) => {
|
|
const sourcePath = path.join(__dirname, '..', source);
|
|
const destPath = path.join(__dirname, '..', dest);
|
|
const jsSourcePath = js ? path.join(__dirname, '..', js) : null;
|
|
const jsDestPath = js ? destPath.replace('_bg.wasm', '.js') : null;
|
|
|
|
// Copy WASM file
|
|
if (fs.existsSync(sourcePath)) {
|
|
try {
|
|
fs.copyFileSync(sourcePath, destPath);
|
|
console.log(`✓ Copied ${source} to ${dest}`);
|
|
copiedCount++;
|
|
} catch (error) {
|
|
console.error(`✗ Failed to copy ${source}: ${error.message}`);
|
|
}
|
|
} else {
|
|
console.warn(`⚠ Source file not found: ${source}`);
|
|
missingCount++;
|
|
}
|
|
|
|
// Copy corresponding JS file if it exists
|
|
if (jsSourcePath && jsDestPath && fs.existsSync(jsSourcePath)) {
|
|
try {
|
|
fs.copyFileSync(jsSourcePath, jsDestPath);
|
|
console.log(`✓ Copied JS file: ${js}`);
|
|
} catch (error) {
|
|
console.error(`✗ Failed to copy JS file ${js}: ${error.message}`);
|
|
}
|
|
}
|
|
});
|
|
|
|
// Also check for alternative locations
|
|
const alternativeLocations = [
|
|
{
|
|
source: 'src/consciousness-explorer/wasm',
|
|
files: ['extractors_bg.wasm', 'planner_bg.wasm', 'graph_reasoner_bg.wasm']
|
|
}
|
|
];
|
|
|
|
alternativeLocations.forEach(({ source, files }) => {
|
|
files.forEach(file => {
|
|
const sourcePath = path.join(__dirname, '..', source, file);
|
|
const destPath = path.join(distWasmDir, file);
|
|
|
|
if (!fs.existsSync(destPath) && fs.existsSync(sourcePath)) {
|
|
try {
|
|
fs.copyFileSync(sourcePath, destPath);
|
|
console.log(`✓ Copied ${file} from alternative location`);
|
|
copiedCount++;
|
|
} catch (error) {
|
|
console.error(`✗ Failed to copy ${file}: ${error.message}`);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
console.log(`\nWASM copy complete: ${copiedCount} files copied, ${missingCount} missing`);
|
|
|
|
// Create a nano_consciousness_bg.wasm placeholder if needed
|
|
const nanoConsciousnessPath = path.join(distWasmDir, 'nano_consciousness_bg.wasm');
|
|
if (!fs.existsSync(nanoConsciousnessPath)) {
|
|
console.log('⚠ nano_consciousness_bg.wasm not found, server will use fallback');
|
|
} |