Demonstrates how the generic chat components work for a completely different
chat paradigm: AI/LLM conversations with streaming responses.
New features:
- LLM message types and provider adapter interface
- Mock provider with simulated streaming responses
- LLMChatViewer component using ChatWindow/MessageList/MessageComposer
- Token counting and cost tracking
- Model selection in header
- Streaming message support with real-time updates
Key differences from Nostr chat:
- 1-on-1 conversation (user ↔ assistant) vs multi-user
- Request-response pattern vs real-time events
- Token-by-token streaming vs instant messages
- Provider adapters (OpenAI, Anthropic) vs protocol adapters (NIP-29, NIP-53)
- Cost/token metadata vs Nostr event signatures
Usage: Type "llm" in command palette
Files added:
- src/lib/llm/types.ts - LLM-specific type definitions
- src/lib/llm/providers/mock-provider.ts - Demo provider with streaming
- src/components/LLMChatViewer.tsx - AI chat UI
- PROOF_OF_CONCEPT_LLM_CHAT.md - Detailed comparison and documentation
This proves the generic chat abstraction is truly protocol-agnostic and can
be used for any chat-like interface, not just Nostr.