Files
odysseus/docs/discovery/domains/chat.md
T
2026-07-28 03:14:56 +01:00

8.1 KiB

Chat

Features in this document are generated from ../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.pychat_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.pybuild_chat_context — Shared context builder invoked by chat_stream; runs message preprocessing and assembles the memory/RAG/web context preface.
  • src/chat_handler.pyChatHandler.preprocess_message — Message preprocessing (attachments, URLs, tool preprocessing) reached from build_chat_context via routes/chat_helpers.py:preprocess.
  • src/chat_processor.pyChatProcessor.build_context_preface — Builds the retrieval and web-source context preface injected into the streamed request.
  • src/llm_core.pystream_llm_with_fallback — Chat-mode streaming dispatcher called from chat_stream; wraps stream_llm with an ordered provider fallback chain.
  • src/llm_core.pystream_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.pystream_agent_loop — Agent-mode streaming path called from chat_stream when the request selects agent mode.
  • tests/test_chat_metrics.pytest_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.pytest_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.pySessionManager — 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.pyUploadHandler.save_file — Validates upload size and atomicity on disk.

Unknowns

  • Large file uploads may consume server disk space if cleanup task fails.
  • 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.pysetup_search_routes — Registers chat message search endpoint.
  • src/session_search.pysearch_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.pysetup_preset_routes — API routes for listing and modifying system prompt presets.
  • src/preset_manager.pyPresetManager — 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.pysetup_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.jsinitComposerRecall — 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.pycompact_context — Executes context token pruning and summary generation.

Unknowns

  • Aggressive compaction may discard subtle user instructions.