Architecture: Session 133: How should the 8 scattered chat interfaces (AIP...

Documentation for Sessions

🏗️ Architecture: Session 133: How should the 8 scattered chat interfaces (AIP...

Date: 2026-02-21
Time: 19:25:10 UTC
Session: gspace1-133.8
Agent: angular
Confidence: NaN%
Status: ✅ Documented


📋 Decision Context

Question:

Session 133: How should the 8 scattered chat interfaces (AIPanelComponent 4,796 lines, AiChatCore 8,923 lines, SimpleAiChat, CommandChat, VittoHub inline, ExtensionPanel, ThemeGen, VittoChatShell) be unified into one system?

Task: Not specified


🎯 Decision Made

Chosen:

Create a composable plugin-based system with strict decomposition rules

Options Considered:

  1. Merge everything into one enhanced AIPanelComponent
  2. Create a composable plugin-based system with strict decomposition rules

💭 Reasoning

Built a composable chat system in @libs-ai/vitto-chat with: (1) UnifiedChatShellComponent as the single orchestrator (~116 lines, composes sub-components), (2) 5 plugins (Generation, Context, Agent, Model, Action) that surfaces opt into, (3) 22 sub-components organized into 4 systems (shell+header, message x7, input x5, sidebar x3, shared x4), (4) 6 focused services (engine, persistence, cost, context, streaming, model). Each surface (vitto/chat, /panel, extension, agent terminal, theme generator) composes the shell with different plugin combinations. Anti-Monolith Constitution enforced: TS<=250 lines, HTML<=120, SCSS<=150 per file. The entire 22-component system totals ~3,900 lines vs AIPanelComponent alone at 4,796. All 4 app route files updated (gograb-ai, gograb-dev, gograb-admin, vitto-hub). Deprecated components annotated: SimpleAiChat (740 lines), AiChatCore (5,519 lines), VittoChatService (475 lines).


📁 Files Involved


🔗 Related


Auto-generated by MCP Smart Consolidation