mirror of
https://github.com/pewdiepie-archdaemon/odysseus.git
synced 2026-08-11 07:58:40 -04:00
198 lines
8.1 KiB
Markdown
198 lines
8.1 KiB
Markdown
# Chat
|
|
|
|
Features in this document are generated from [`../feature-catalog.json`](../feature-catalog.json), the canonical inventory.
|
|
|
|
## CHAT-001 — Core Chat Streaming & SSE Message Generation
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E2`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: pending — Requires access to a live LLM provider endpoint (OpenAI API key or local Ollama server).
|
|
|
|
### Purpose
|
|
|
|
Handles real-time Server-Sent Events (SSE) chat streaming, token rendering, and model response generation.
|
|
|
|
### Evidence summary
|
|
|
|
- `routes/chat_routes.py` — `chat_stream` — POST /api/chat_stream SSE endpoint; builds the shared chat context, then dispatches to the chat-mode or agent-mode streaming path.
|
|
- `routes/chat_helpers.py` — `build_chat_context` — Shared context builder invoked by chat_stream; runs message preprocessing and assembles the memory/RAG/web context preface.
|
|
- `src/chat_handler.py` — `ChatHandler.preprocess_message` — Message preprocessing (attachments, URLs, tool preprocessing) reached from build_chat_context via routes/chat_helpers.py:preprocess.
|
|
- `src/chat_processor.py` — `ChatProcessor.build_context_preface` — Builds the retrieval and web-source context preface injected into the streamed request.
|
|
- `src/llm_core.py` — `stream_llm_with_fallback` — Chat-mode streaming dispatcher called from chat_stream; wraps stream_llm with an ordered provider fallback chain.
|
|
- `src/llm_core.py` — `stream_llm` — Per-request streaming entry wrapped by stream_llm_with_fallback; acquires the local model slot and delegates to _stream_llm_inner.
|
|
- `src/agent_loop.py` — `stream_agent_loop` — Agent-mode streaming path called from chat_stream when the request selects agent mode.
|
|
- `tests/test_chat_metrics.py` — `test_stream_llm_passes_through_llamacpp_timings` — Inspected unit test asserting stream_llm forwards backend generation timings into the emitted metrics chunk.
|
|
- `tests/test_resend_message_nondestructive.py` — `test_resend_message_does_not_truncate_by_default` — Inspected unit test asserting the frontend resend path does not truncate prior conversation turns.
|
|
|
|
### Unknowns
|
|
|
|
- Stream interruption on connection drops requires retry logic.
|
|
|
|
## CHAT-002 — Session Management & Conversation State
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E0`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.
|
|
|
|
### Purpose
|
|
|
|
Manages session creation, listing, switching, renaming, and persistence of conversation metadata.
|
|
|
|
### Evidence summary
|
|
|
|
- `routes/session_routes.py` — `@router.get('/api/sessions')` — Lists active sessions filtered by user owner scope.
|
|
- `core/session_manager.py` — `SessionManager` — Provides thread-safe session storage operations.
|
|
|
|
### Unknowns
|
|
|
|
- Concurrent file writes to sessions.json under high load.
|
|
|
|
## CHAT-003 — Chat History & Message Editing/Truncation
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E0`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.
|
|
|
|
### Purpose
|
|
|
|
Provides history retrieval, message content updating, message deletion, and history branch truncation.
|
|
|
|
### Evidence summary
|
|
|
|
- `routes/history/history_routes.py` — `@router.get('/api/history/{session_id}')` — Fetches message history timeline for a session.
|
|
- `routes/history_routes.py` — `_sys.modules[__name__] = _canonical` — Backward-compatibility shim module.
|
|
|
|
### Unknowns
|
|
|
|
- Truncating messages re-indexes context window and clears cached tool calls.
|
|
|
|
## CHAT-004 — File & Multimodal Attachment Handling
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E0`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.
|
|
|
|
### Purpose
|
|
|
|
Handles uploading, mime validation, image preview, vision encoding, and file attachments in chat messages.
|
|
|
|
### Evidence summary
|
|
|
|
- `routes/upload_routes.py` — `@router.post('')` — Accepts multi-part file uploads and generates vision metadata.
|
|
- `src/upload_handler.py` — `UploadHandler.save_file` — Validates upload size and atomicity on disk.
|
|
|
|
### Unknowns
|
|
|
|
- Large file uploads may consume server disk space if cleanup task fails.
|
|
|
|
## CHAT-005 — Chat Message Search
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E0`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.
|
|
|
|
### Purpose
|
|
|
|
Enables full-text keyword search across stored chat messages and sessions.
|
|
|
|
### Evidence summary
|
|
|
|
- `routes/search_routes.py` — `setup_search_routes` — Registers chat message search endpoint.
|
|
- `src/session_search.py` — `search_sessions` — Executes query matching against session transcripts.
|
|
|
|
### Unknowns
|
|
|
|
- Full table scans on un-indexed text columns for very large databases.
|
|
|
|
## CHAT-006 — System Prompts & Preset Management
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E0`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.
|
|
|
|
### Purpose
|
|
|
|
Provides creation, selection, and customization of system prompt presets for chat sessions.
|
|
|
|
### Evidence summary
|
|
|
|
- `routes/preset_routes.py` — `setup_preset_routes` — API routes for listing and modifying system prompt presets.
|
|
- `src/preset_manager.py` — `PresetManager` — Disk-backed manager for prompt presets.
|
|
|
|
### Unknowns
|
|
|
|
- Invalid JSON syntax in user presets file can corrupt preset loading.
|
|
|
|
## CHAT-007 — Emoji Rendering & Twemoji SVG Proxy
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E0`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.
|
|
|
|
### Purpose
|
|
|
|
Proxies Twemoji SVG icons locally to render flat SVG emojis in message text without external CDN dependencies.
|
|
|
|
### Evidence summary
|
|
|
|
- `routes/emoji_routes.py` — `setup_emoji_routes` — Serves locally cached Twemoji SVGs.
|
|
|
|
### Unknowns
|
|
|
|
- First request fetches SVG from remote CDN before caching locally.
|
|
|
|
## CHAT-008 — Input History Recall (Arrow Up)
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E0`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.
|
|
|
|
### Purpose
|
|
|
|
Allows users to cycle through previously sent prompt messages in the chat composer input using Arrow-Up/Down keys.
|
|
|
|
### Evidence summary
|
|
|
|
- `static/js/composerArrowUpRecall.js` — `initComposerRecall` — Listens for ArrowUp keypress on composer textarea.
|
|
|
|
### Unknowns
|
|
|
|
- Client-side browser storage limits.
|
|
|
|
## CHAT-009 — Context Window Compaction & Truncation
|
|
|
|
- **Domain**: `chat`
|
|
- **Status**: `verified`
|
|
- **Evidence Maturity**: `E0`
|
|
- **Commit Verified**: `d8a2059df8e53bc7275c45339849d14c8651e73c`
|
|
- **Runtime Validation**: not-required — No separate environment-dependent runtime validation was identified during this documentation pass.
|
|
|
|
### Purpose
|
|
|
|
Compacts session transcript history when prompt size exceeds context limits using summarization.
|
|
|
|
### Evidence summary
|
|
|
|
- `routes/history/history_routes.py` — `@router.post('/api/session/{session_id}/compact')` — Triggers context summarization and compaction.
|
|
- `src/context_compactor.py` — `compact_context` — Executes context token pruning and summary generation.
|
|
|
|
### Unknowns
|
|
|
|
- Aggressive compaction may discard subtle user instructions.
|