feat: add conversation persistence and context management layer
Build and Push API / release (push) Successful in 3s
Build and Push API / build (push) Failing after 34s

- SQLAlchemy async database layer (SQLite dev, PostgreSQL prod)
- Conversation and Message models with UUID primary keys
- Token counting utilities using litellm
- Context summarization at 80% token threshold
- REST API endpoints for multi-turn conversations
- 19 conversation tests, 6 token tests (176 total passing)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-11 22:42:38 +01:00
co-authored by Claude Opus 4.5
parent 470b7448ac
commit 2523db4da7
19 changed files with 1506 additions and 15 deletions
+7 -1
View File
@@ -80,9 +80,15 @@ class Settings(BaseSettings):
sandbox_enabled: bool = True
allowed_paths: list[str] | None = None
# Sessions
# Database
database_url: str = "sqlite+aiosqlite:///./webber.db"
# Sessions & Context
session_ttl_hours: int = 24
max_context_tokens: int = 128000
summarization_threshold: float = 0.8 # Summarize at 80% of max tokens
summarization_target_tokens: int = 500 # Target summary size
keep_recent_messages: int = 6 # Messages to keep unsummarized (3 turns)
model_config = SettingsConfigDict(
env_file=".env",