ulysses/services/memory
afonsopc 28b296a712
Fix auto-memory vector dedup dropping a user's fact on cross-tenant match
extract_and_store dedups each extracted fact against the vector store
before the (owner-scoped) text fallback. The vector store is a single
shared ChromaDB collection storing only {"source": "memory"} — no
owner — and find_similar queries it with no owner filter, so it can
return a memory_id belonging to a different tenant. The old code
continue'd (skipped storing) on any vector hit without checking
ownership, so when ChromaDB is healthy (the common path) a user's
freshly-extracted fact was silently dropped because it was merely
semantically similar to another user's memory — the text fallback that
IS owner-scoped never ran. Gate the skip on the matched memory being
this user's own (or legacy unowned), mirroring the text dedup predicate;
cross-tenant or stale matches fall through. Same bug class as #1743.
2026-06-04 23:45:13 +01:00
..
__init__.py Odysseus v1.0 2026-05-31 23:58:26 +09:00
memory.py refactor(memory): canonicalize memory imports (#50) 2026-06-04 05:31:15 +01:00
memory_extractor.py Fix auto-memory vector dedup dropping a user's fact on cross-tenant match 2026-06-04 23:45:13 +01:00
memory_vector.py refactor(memory): canonicalize memory imports (#50) 2026-06-04 05:31:15 +01:00
service.py feat(memory): add provider interface (#72) 2026-06-04 16:26:11 +01:00
skill_extractor.py Skip invalid skill extractor rows (#1546) 2026-06-03 14:06:53 +09:00
skill_format.py Odysseus v1.0 2026-05-31 23:58:26 +09:00
skills.py fix: skill retrieval boosts on tag substrings (e.g. 'ai' tag for any 'email' query) (#1406) 2026-06-03 14:24:11 +09:00