Complete AI Generation Pipeline

End-to-end fix for AI module generation, registration, and tool integration

Complete AI Generation Pipeline

Overview

Fixed the entire AI module generation pipeline from prompt → code files → space_modules → tool rendering. Previously, generated modules had generic "Item" entities and weren't discoverable by tools.


Problems Fixed

1. Generic Entity Generation ❌ → Domain-Specific Entities ✅

Before:

// User: "Create a fitness studio platform"
// Generated: entities: [{ name: 'Item', fields: [...] }]

After:

// User: "Create a fitness studio platform"
// Generated: entities: [
//   { name: 'Member', fields: [...] },
//   { name: 'Class', fields: [...] },
//   { name: 'Trainer', fields: [...] }
// ]

How: Added intelligent entity extraction with:

Files Changed:


2. No Module Registration ❌ → Auto-Registration ✅

Before:

After:

How: Added registration step in workflow:

// After generating files:
await this.registerModuleInSpace(spaceId, moduleSpec, category);

Files Changed:


3. Canvas Shows Empty ❌ → Renders Hierarchy ✅

Before:

After:

How: Enhanced modulesToCanvas():

if (hasPlatformRoot && modules[0].children) {
  // Render hierarchy
  return this.moduleToSection(modules[0]);
} else {
  // Flat list (backward compatible)
  return flatListCanvas;
}

Files Changed:


4. Workbench Can't Edit ❌ → Full Editing Support ✅

Before:

After:

How: Enhanced editModule():

// Check if module exists in space_modules
const existingModules = await getSpaceModules(spaceId);
const spaceModule = existingModules.find(m => m.slug === moduleSlug);

// Load data from manifest
const moduleData = extractModuleDataFromManifest(manifest, moduleName);

// Populate workbench context
await moduleContext.updateContext({
  entities: moduleData.entities,
  actions: moduleData.actions,
  embeddables: moduleData.embeddables
});

Files Changed:


Complete Pipeline Flow

sequenceDiagram
    participant User
    participant Vibe as Vibe Generator
    participant AI as LLM Service
    participant CodeGen as Code Generator
    participant Backend as Backend API
    participant SpaceDB as space_modules
    participant Registry as ModuleRegistry
    participant Canvas
    participant Workbench

    User->>Vibe: "Create fitness studio"
    Vibe->>AI: Generate module config
    
    alt LLM Success
        AI->>AI: Parse JSON
    else LLM Partial Fail
        AI->>AI: Attempt JSON repair
    else LLM Complete Fail
        AI->>AI: Extract entities from description
    end
    
    AI-->>Vibe: Module config (Member, Class, Trainer)
    
    Vibe->>CodeGen: Generate files
    CodeGen->>CodeGen: Write to /modules/other/complete-fitness/
    CodeGen->>CodeGen: Update tsconfig paths
    
    CodeGen->>Backend: POST /api/spaces/:id/modules
    Backend->>SpaceDB: Insert module doc
    SpaceDB-->>Backend: Module registered
    
    Backend-->>Vibe: Registration complete
    Vibe->>Registry: registerModule(manifest)
    Vibe->>Canvas: broadcastModuleTreeUpdate()
    
    Canvas->>Canvas: Refresh Building Blocks
    Canvas->>Canvas: Render universe tree
    
    User->>Vibe: Click "Edit"
    Vibe->>SpaceDB: Check if module exists
    SpaceDB-->>Vibe: Module found
    Vibe->>Workbench: Navigate with moduleData
    Workbench->>Workbench: Load entities/actions
    User->>Workbench: Edit entities
    Workbench->>SpaceDB: Save changes

Technical Improvements

Entity Extraction Patterns

// Pattern matching
/(\w+)\s+management/gi     → "member management" → Member
/manage\s+(\w+)/gi         → "manage classes" → Class
/(\w+)\s+tracking/gi       → "workout tracking" → Workout
/(\w+)\s+scheduling/gi     → "class scheduling" → Class

// Domain vocabulary
'fitness' → [Member, Class, Trainer, Workout, Equipment]
'restaurant' → [Menu, Order, Table, Reservation, Customer]
'retail' → [Product, Order, Customer, Inventory]
'healthcare' → [Patient, Appointment, Treatment, Staff]

Contextual Field Generation

// Member/User/Customer
fields: [id, name, email, phone, description, status, createdAt]

// Class/Session/Appointment
fields: [id, name, startTime, endTime, capacity, description, status, createdAt]

// Product/Menu
fields: [id, name, price, category, description, status, createdAt]

JSON Repair Strategies

  1. Remove trailing commas: ,} → }
  2. Quote unquoted keys: {name: → {"name":
  3. Convert single quotes: 'value' → "value"
  4. Extract partial objects: Find {...} in response
  5. Extract arrays: Find [...] in response

Files Modified (8 files)

  1. libs/libs-api/llm-integration/src/lib/services/generation.service.ts (+180 lines)

    • Entity extraction from descriptions
    • JSON repair before fallback
    • Contextual field generation
    • Domain vocabulary mapping
  2. apis/backend-ai-api/src/app/workflow/workflow.service.ts (+120 lines)

    • HTTP client injection
    • registerModuleInSpace() method
    • POST to backend-api for space_modules registration
  3. libs/libs-structural/vibe-universe/src/lib/components/vibe-universe-generator/vibe-universe-generator.component.ts (+80 lines)

    • normalizeManifestForRegistry() method
    • Enhanced editModule() with space_modules lookup
    • Better error handling
  4. libs/libs-space/universe-canvas/src/lib/services/canvas-module-converter.service.ts (+40 lines)

    • Hierarchy detection in modulesToCanvas()
    • platform-root support in isContainerType()
    • World module rendering with entity/action metadata
  5. libs/libs-foundational/core-angular/src/lib/services/universe-module.service.ts (+15 lines)

    • Structure signal sync on load
    • Better error logging
  6. libs/libs-space/universe-canvas/src/lib/components/canvas-builder/canvas-builder.component.ts (+22 lines)

    • Backend verification before empty saves
    • Source tracking
  7. apis/backend-ai-api/src/app/workflow/generators/module-code-generator.service.ts (+22 lines)

    • Duplicate ID parameter fix
    • Protected word normalization
  8. libs/libs-structural/vibe-universe/src/lib/components/vibe-universe-generator/vibe-universe-generator.component.ts (universe state)

    • Universe-scoped storage keys
    • Universe switch detection

Total: ~480 lines added, major architectural improvements


Testing Checklist

Test 1: Entity Extraction

Test 2: Module Registration

Test 3: Canvas Rendering

Test 4: Workbench Editing

Test 5: Universe Isolation


Performance Impact

Total overhead: ~180ms per module generation (acceptable for 2-5 minute workflows)


Known Limitations

  1. Entity extraction is heuristic - May miss complex domain terms
  2. JSON repair is basic - Complex malformations still fail
  3. Single galaxy only - Multi-galaxy platforms not yet supported
  4. No bi-directional sync - Workbench edits don't regenerate code files

Next Steps (Future Sessions)

  1. Bi-directional sync: Workbench edits → regenerate code files
  2. Multi-galaxy support: Admin + Public portals
  3. Advanced entity extraction: Use NLP/embeddings for better accuracy
  4. Hot reload: Generated modules auto-reload in dev server
  5. Validation UI: Show TypeScript errors in generated code

Related Documentation