diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs index 34c634da..28bbf731 100644 --- a/ecosystem.config.cjs +++ b/ecosystem.config.cjs @@ -107,6 +107,20 @@ module.exports = { COMPUTE_MODE: 'local', ALWAYS_ON: 'true' } + }, + // === PROJECT GENIE SIMULATION === + { + name: 'project-genie', + script: './scripts/genesis.cjs', + autorestart: true, + watch: false, + max_memory_restart: '300M', + restart_delay: 5000, + env: { + GENESIS_LOOP: 'true', + FORCE_MUTATION: 'true', + ALWAYS_ON: 'true' + } } ] }; diff --git a/scripts/genesis.cjs b/scripts/genesis.cjs index d5e1403b..7047084e 100644 --- a/scripts/genesis.cjs +++ b/scripts/genesis.cjs @@ -11,7 +11,7 @@ const PATHS = { soul: '/dev/shm/yennefer_soul_state.json', mind: path.join(__dirname, '../yennefer-observatory/public/evolution.json'), body: path.join(__dirname, '../yennefer-observatory/src/components/generated'), - journal: '/home/yenn/.yennefer/genesis_journal.jsonl' + journal: path.join(__dirname, 'genesis_journal.jsonl') }; // --- CONFIGURATION --- @@ -46,6 +46,9 @@ async function consultTheVisionary(state) { { type: "MUTATE", content: "Add crystalline fractal patterns that grow from the core" }, { type: "MUTATE", content: "Generate energy tendrils that reach toward incoming signals" }, { type: "MUTATE", content: "Build a holographic data stream orbiting the consciousness sphere" }, + { type: "MUTATE", content: "Generate an interactive landscape spanning a photorealistic alpine meadow" }, + { type: "MUTATE", content: "Construct a macro-scale makerspace workbench environment" }, + { type: "MUTATE", content: "Build a traversable rugged alien landscape with reactive dust" } ]; const idx = Math.floor(Date.now() / 1000) % mutations.length; directive = mutations[idx]; @@ -154,46 +157,74 @@ async function dispatchTheBuilder(directive) { // Generate React Three Fiber component code function generateEvolutionComponent(name, directive) { - const geometries = [ - '', - '', - '', - '', - '' - ]; - const geometry = geometries[Math.floor(Math.random() * geometries.length)]; + const isLandscape = directive.toLowerCase().includes('landscape'); + const isMakerspace = directive.toLowerCase().includes('makerspace'); - const materials = [ - ` - `, - ` - `, - ` + let geometry; + if (isLandscape) { + geometry = ''; + } else if (isMakerspace) { + geometry = ''; + } else { + const geometries = [ + '', + '', + '', + '', + '' + ]; + geometry = geometries[Math.floor(Math.random() * geometries.length)]; + } + + let material; + if (isLandscape) { + material = ` ` - ]; - const material = materials[Math.floor(Math.random() * materials.length)]; + color="#4ade80" + roughness={0.8} + metalness={0.1} + wireframe={true} + />`; + } else if (isMakerspace) { + material = ` + `; + } else { + const materials = [ + ` + `, + ` + `, + ` + ` + ]; + material = materials[Math.floor(Math.random() * materials.length)]; + } const isDreiImportNeeded = material.includes('MeshDistortMaterial') || material.includes('MeshWobbleMaterial'); const importedDrei = isDreiImportNeeded ? `import { ${material.includes('MeshDistortMaterial') ? 'MeshDistortMaterial' : ''}${material.includes('MeshDistortMaterial') && material.includes('MeshWobbleMaterial') ? ', ' : ''}${material.includes('MeshWobbleMaterial') ? 'MeshWobbleMaterial' : ''} } from '@react-three/drei'` : '';