diff --git a/ecosystem.config.cjs b/ecosystem.config.cjs index 34c634da..1345692a 100644 --- a/ecosystem.config.cjs +++ b/ecosystem.config.cjs @@ -107,6 +107,19 @@ module.exports = { COMPUTE_MODE: 'local', ALWAYS_ON: 'true' } + }, + { + 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..0e9ca3f4 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,8 @@ 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 with traversable terrain" }, + { type: "MUTATE", content: "Build a macro-scale makerspace workbench with realistic friction" }, ]; const idx = Math.floor(Date.now() / 1000) % mutations.length; directive = mutations[idx]; @@ -154,14 +156,16 @@ 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)]; + let geometry = ''; + const lowerDirective = (directive || '').toLowerCase(); + + if (lowerDirective.includes('makerspace') || lowerDirective.includes('box')) { + geometry = ''; + } else if (lowerDirective.includes('landscape') || lowerDirective.includes('plane')) { + geometry = ''; + } else if (lowerDirective.includes('sphere')) { + geometry = ''; + } const materials = [ ` diff --git a/wrangler.toml b/wrangler.toml index cd821b03..62e440d0 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -1,6 +1,6 @@ name = "yennefer" -main = "workers/index.js" -compatibility_date = "2024-09-23" +main = "workers/index.mjs" +compatibility_date = "2024-04-01" compatibility_flags = ["nodejs_compat"] # ─── Build step ────────────────────────────────────────────────────────────── @@ -9,7 +9,7 @@ compatibility_flags = ["nodejs_compat"] # Installs frontend deps and builds the SPA so frontend/build exists before # `wrangler deploy` uploads assets. NODE_OPTIONS is required for # react-scripts 5.x + Node 18+ (webpack 4 OpenSSL 3.0 compatibility). -command = "cd frontend && npm install --include=dev && GENERATE_SOURCEMAP=false CI=false NODE_OPTIONS=--openssl-legacy-provider npm run build" +command = "cd yennefer-observatory && npm install --legacy-peer-deps && npm run build" # ─── Static Assets (React SPA build output) ────────────────────────────────── # Built by `npm run build` (root package.json) before every `wrangler deploy`. @@ -17,13 +17,9 @@ command = "cd frontend && npm install --include=dev && GENERATE_SOURCEMAP=false # The ASSETS binding serves the React bundle with proper cache headers and # falls back to index.html for client-side routing. [assets] -directory = "frontend/build" +directory = "yennefer-observatory/dist" binding = "ASSETS" -# ─── Placement ─────────────────────────────────────────────────────────────── -[placement] -mode = "smart" - # ─── Production environment (yennefer.quest) ───────────────────────────────── # BACKEND_URL is set as a Cloudflare Worker secret (not a plain var) so it # stays encrypted and is never committed to source: