#!/usr/bin/env node /** * Example CLI wrapper for Brainy that properly handles TensorFlow.js initialization * * This example demonstrates how to create a CLI tool that uses Brainy * while ensuring TensorFlow.js is properly initialized in Node.js environments. * * Usage: * node cli-wrapper-example.js */ // CRITICAL: Apply the TensorFlow.js patch before any other imports // This prevents the "TextEncoder is not a constructor" error try { // For CommonJS environments if (typeof require === 'function') { // First require the setup module to apply the patch require('../dist/setup.js'); console.log('Applied TensorFlow.js patch via CommonJS require'); } } catch (error) { console.warn('Failed to apply TensorFlow.js patch via require:', error); } // ES Modules approach - this will be used if the above fails or if using ES modules import('../dist/setup.js') .then(() => { console.log('Applied TensorFlow.js patch via ES modules import'); return import('../dist/unified.js'); }) .then((brainy) => { // Now it's safe to use Brainy and TensorFlow.js console.log('Brainy loaded successfully'); // Example: Create a BrainyData instance const db = new brainy.BrainyData({ name: 'cli-example', storage: 'memory' }); // Example: Add some data db.addItem('Hello world', { id: '1', metadata: { type: 'greeting' } }) .then(() => { console.log('Added item to database'); // Example: Search for similar items return db.search('Hello', 1); }) .then((results) => { console.log('Search results:', results); // Clean up return db.close(); }) .then(() => { console.log('Database closed'); process.exit(0); }) .catch((error) => { console.error('Error in Brainy operations:', error); process.exit(1); }); }) .catch((error) => { console.error('Failed to load Brainy:', error); process.exit(1); });