Chat & Session History - Quick Reference
๐ฏ Overview
Implementation guide for chat and session history functionality in Terraphim AI.
๐ Architecture at a Glance
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ FRONTEND (Svelte) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ SessionList โ Chat Component โ Context Manager โ
โ Component โ (Enhanced) โ UI โ
โโโโโโโโโฌโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ โ โ
โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโ
โ Svelte Stores โ
โ - currentConversation โ
โ - conversationList โ
โ - Auto-save logic โ
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโ
โ Tauri Commands / HTTP API โ
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ BACKEND (Rust) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ConversationService โ
โ - CRUD operations โ
โ - Search & filtering โ
โ - Import/Export โ
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโผโโโโโโโโ
โ Context โ
โ Manager โ
โโโโโโโโโฌโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ PERSISTENCE LAYER โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ConversationPersistence (OpenDAL) โ
โ โโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโฌโโโโโโโโโโโโโโ โ
โ โ SQLite โ DashMap โ Memory โ S3 (opt) โ โ
โ โโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโดโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ๐ Key Components
Backend Components
| Component | Location | Purpose |
|-----------|----------|---------|
| ConversationService | crates/terraphim_service/src/conversation_service.rs | NEW - Business logic for conversation management |
| ConversationPersistence | crates/terraphim_persistence/src/conversation.rs | NEW - Persistence trait and OpenDAL implementation |
| ContextManager | crates/terraphim_service/src/context_manager.rs | ENHANCE - Add archive, restore, clone methods |
| API Endpoints | terraphim_server/src/api.rs | ENHANCE - Add 8 new REST endpoints |
| Tauri Commands | desktop/src-tauri/src/cmd.rs | ENHANCE - Add 9 new commands |
Frontend Components
| Component | Location | Purpose |
|-----------|----------|---------|
| SessionList.svelte | desktop/src/lib/Chat/SessionList.svelte | NEW - Conversation list with search/filter |
| Chat.svelte | desktop/src/lib/Chat/Chat.svelte | ENHANCE - Integrate session management |
| Stores | desktop/src/lib/stores.ts | ENHANCE - Add conversation stores, auto-save |
Data Types (Already Exist)
| Type | Location | Purpose |
|------|----------|---------|
| Conversation | crates/terraphim_types/src/lib.rs:1053 | Full conversation with messages and context |
| ConversationSummary | crates/terraphim_types/src/lib.rs:1123 | Lightweight summary for listing |
| ChatMessage | crates/terraphim_types/src/lib.rs:981 | Individual message with context |
| ContextItem | crates/terraphim_types/src/lib.rs:706 | Context attached to messages |
๐ Implementation Checklist
Phase 1: Backend Foundation โฑ๏ธ 1-2 weeks
- [ ] Create
ConversationPersistencetrait - [ ] Implement
OpenDALConversationPersistence - [ ] Create
ConversationServicewith:- [ ]
create_conversation() - [ ]
get_conversation() - [ ]
update_conversation() - [ ]
delete_conversation() - [ ]
list_conversations() - [ ]
search_conversations()
- [ ]
- [ ] Add 8 new API endpoints (REST)
- [ ] Add 9 new Tauri commands
- [ ] Write unit tests (target: 80% coverage)
Phase 2: Frontend UI โฑ๏ธ 2 weeks
- [ ] Create
SessionList.sveltecomponent - [ ] Add conversation stores to
stores.ts - [ ] Implement auto-save with 2s debounce
- [ ] Enhance
Chat.svelte:- [ ] Session sidebar toggle
- [ ] Load from
currentConversationstore - [ ] Auto-save integration
- [ ] Write component tests
Phase 3: Search & Filtering โฑ๏ธ 1 week
- [ ] Backend search implementation
- [ ] Frontend search UI
- [ ] Filter by role, date, tags
- [ ] Keyboard shortcuts
Phase 4: Import/Export โฑ๏ธ 1 week
- [ ] JSON export endpoint
- [ ] JSON import with validation
- [ ] Bulk export
- [ ] Frontend UI for import/export
Phase 5: Polish โฑ๏ธ 2 weeks
- [ ] Performance optimization
- [ ] Pagination for messages
- [ ] Virtual scrolling
- [ ] Analytics dashboard
- [ ] Documentation
- [ ] E2E tests
๐ Quick Start Guide
1. Backend Setup
// crates/terraphim_persistence/src/conversation.rs
2. Service Layer
// crates/terraphim_service/src/conversation_service.rs
3. API Endpoints
// terraphim_server/src/api.rs
pub async 4. Frontend Store
// desktop/src/lib/stores.ts
export const currentConversation: Writable<Conversation | null> = writable(null);
export const conversationList: Writable<ConversationSummary[]> = writable([]);
export function setupAutoSave() {
let saveTimeout: NodeJS.Timeout;
currentConversation.subscribe(conversation => {
if (conversation) {
clearTimeout(saveTimeout);
saveTimeout = setTimeout(async () => {
await saveConversation(conversation);
}, 2000);
}
});
}5. Frontend Component
<!-- desktop/src/lib/Chat/SessionList.svelte -->
<script lang="ts">
async function loadConversations() {
const response = $is_tauri
? await invoke('list_all_conversations', { limit: 100 })
: await fetch(`${CONFIG.ServerURL}/conversations?limit=100`).then(r => r.json());
conversationList.set(response.conversations);
}
</script>
<div class="session-list">
{#each $filteredConversations as conversation}
<div class="session-item" on:click={() => selectConversation(conversation.id)}>
{conversation.title}
</div>
{/each}
</div>๐ก API Reference
REST Endpoints
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | /api/conversations | List conversations with pagination |
| GET | /api/conversations/:id | Get specific conversation |
| POST | /api/conversations | Create new conversation |
| PUT | /api/conversations/:id | Update conversation metadata |
| DELETE | /api/conversations/:id | Delete conversation |
| GET | /api/conversations/search | Search conversations |
| POST | /api/conversations/:id/export | Export to JSON |
| POST | /api/conversations/import | Import from JSON |
Tauri Commands
| Command | Parameters | Returns |
|---------|------------|---------|
| list_all_conversations | skip, limit, filter | ListConversationsResponse |
| create_new_conversation | title, role | CreateConversationResponse |
| load_conversation | conversation_id | GetConversationResponse |
| update_conversation_info | conversation_id, title, metadata | UpdateConversationResponse |
| delete_conversation_by_id | conversation_id | DeleteConversationResponse |
| search_conversation_history | query, limit | SearchConversationsResponse |
| export_conversation_to_file | conversation_id, file_path | ExportConversationResponse |
| import_conversation_from_file | file_path | ImportConversationResponse |
| get_conversation_stats | - | ConversationStatistics |
๐พ Storage Structure
conversations/
โโโ index.json # Index of all conversations
โโโ {uuid-1}.json # Individual conversation files
โโโ {uuid-2}.json
โโโ {uuid-3}.json
โโโ archive/
โโโ {uuid-archived}.json # Archived conversations
โโโ ...๐งช Testing Commands
# Backend tests
# Frontend tests
# Integration tests
๐ง Configuration
No new configuration required! Uses existing:
- OpenDAL profiles for persistence
- Tauri configuration for desktop
- Server configuration for web mode
๐ Related Documentation
- Full Specification:
docs/specifications/chat-session-history-spec.md - Architecture Docs:
docs/architecture/ - API Documentation:
docs/api/ - Types Documentation:
crates/terraphim_types/src/lib.rs(lines 979-1377)
๐ฏ Success Criteria
- [ ] Users can create, view, edit, and delete conversations
- [ ] Conversations persist across sessions
- [ ] Search returns relevant results in < 500ms
- [ ] Auto-save works without data loss
- [ ] UI is responsive with 100+ conversations
- [ ] Export/import maintains data integrity
- [ ] 80%+ test coverage for new code
- [ ] Zero regressions in existing functionality
๐ Support
For questions or issues during implementation:
- Check the full specification document
- Review existing
ContextManagerimplementation - Examine
terraphim_typesfor data structures - Refer to OpenDAL documentation for persistence patterns
Quick Ref Version: 1.0.0 Last Updated: 2025-10-05