Bugfix: Why does generateCode() never produce files (Bug 13: files: ...

Documentation for Sessions

🐛 Bugfix: Why does generateCode() never produce files (Bug 13: files: ...

Date: 2026-02-24
Time: 16:46:27 UTC
Session: gspace1-138.15
Agent: backend
Confidence: 100%
Status: ✅ Documented


📋 Decision Context

Question:

Why does generateCode() never produce files (Bug 13: files: null across 5/5 tests)?

Task: Fix Bug 13: generateCode() never called because outputMode never sent from frontend


🎯 Decision Made

Chosen:

Root cause #4 confirmed: Frontend startWorkflow() constructs URLSearchParams with description/spaceId/universeId/maxModules but NEVER includes outputMode. Backend GET SSE endpoint defaults undefined to ModuleGenOutputMode.VISUAL. The execute.phase.ts condition outputMode === CODE || outputMode === BOTH evaluates to false, so generateCode() is literally never called. Fix: (1) Added outputMode to StartWorkflowRequest interface, (2) Pass it through URL params in startWorkflow(), (3) Set outputMode:'both' in vibe-universe-generator startGeneration().

Options Considered:

  1. outputMode enum case mismatch (BOTH vs both)
  2. generateCode() is a stub
  3. LLM response parsing fails silently
  4. Frontend never sends outputMode param (backend defaults to VISUAL)

💭 Reasoning

Traced the full chain: component → StartWorkflowRequest → URLSearchParams → backend @Query('outputMode') → ModuleGenOutputMode default → execute.phase.ts condition. The generateCode() method itself is fully implemented and correct. The MCP decision from Session 139 (switching default to VISUAL, confidence 0.98) was correct for performance but inadvertently broke code generation because no frontend caller passes the param. The enum values are lowercase (visual/code/both) matching the enum definition — no case mismatch. Test duration data confirms: ~27s/module matches VISUAL-only timing, not BOTH (~40-60s/module).


📁 Files Involved


🔗 Related


Auto-generated by MCP Smart Consolidation