feat: memory recall, local embeddings, streaming UI fixes - #13
Merged
Conversation
Switch sidecar from Voyage-only to conditional: uses Voyage when VOYAGE_API_KEY is set, falls back to fastembed (thenlper/gte-large, 1024d ONNX) for HIPAA-safe local embeddings. Health check tests actual embedder instead of hardcoded Voyage API call.
Mines existing conversations (Aletheia sessions.db and Claude Code JSONL transcripts) into the mem0 sidecar for fact extraction. Groups messages into ~3000 char chunks, sends to /add endpoint. Supports --source chiron|claude-code|all, --dry-run, --max-files.
Query mem0 sidecar before each LLM turn and inject matching memories as a dynamic system prompt block. Uses graph_enhanced_search with basic /search fallback. 3s timeout, never blocks the turn. Recall tokens deducted from history budget to prevent context overflow. Injected in both streaming and non-streaming paths.
…appearing messages Three fixes in the WebUI chat: - Clear isStreaming on turn_complete so stop button disappears promptly - Add text separators between content blocks in agentic loops - Guard loadHistory with hasLocalStream to prevent race where SSE turn:after event overwrites locally-managed messages mid-stream - Remove redundant "Agents" header from sidebar
|
forkwright
pushed a commit
that referenced
this pull request
Feb 18, 2026
Superset of PR #13 (memory-recall-ui-fixes). Includes: - Local embeddings with Voyage fallback (fastembed/gte-large ONNX) - Pre-turn memory recall from mem0 sidecar - Conversation backfill script - Streaming UI fixes: text separators after tools, hasLocalStream guard - Hex + Redshift signal collectors for prosoche - 4 learned skills Conflicts resolved (manager.ts, ChatView.svelte, chat.svelte.ts): all additive from incoming branch, no HEAD-only changes lost.
forkwright
added a commit
that referenced
this pull request
Feb 18, 2026
Superset of PR #13 (memory-recall-ui-fixes). Includes: - Local embeddings with Voyage fallback (fastembed/gte-large ONNX) - Pre-turn memory recall from mem0 sidecar - Conversation backfill script - Streaming UI fixes: text separators after tools, hasLocalStream guard - Hex + Redshift signal collectors for prosoche - 4 learned skills Conflicts resolved (manager.ts, ChatView.svelte, chat.svelte.ts): all additive from incoming branch, no HEAD-only changes lost.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
Test plan
python backfill.py --source chiron --dry-runpreviews chunks without sending