diff --git a/mempalace/mcp_server.py b/mempalace/mcp_server.py index b447249..bda4c1a 100644 --- a/mempalace/mcp_server.py +++ b/mempalace/mcp_server.py @@ -292,10 +292,10 @@ def tool_add_drawer( "matches": dup["matches"], } - drawer_id = f"drawer_{wing}_{room}_{hashlib.md5((content[:100] + datetime.now().isoformat()).encode()).hexdigest()[:16]}" + drawer_id = f"drawer_{wing}_{room}_{hashlib.md5(content.encode()).hexdigest()[:16]}" try: - col.add( + col.upsert( ids=[drawer_id], documents=[content], metadatas=[ diff --git a/mempalace/miner.py b/mempalace/miner.py index 7b4e949..a53cf76 100644 --- a/mempalace/miner.py +++ b/mempalace/miner.py @@ -417,7 +417,7 @@ def add_drawer( """Add one drawer to the palace.""" drawer_id = f"drawer_{wing}_{room}_{hashlib.md5((source_file + str(chunk_index)).encode(), usedforsecurity=False).hexdigest()[:16]}" try: - collection.add( + collection.upsert( documents=[content], ids=[drawer_id], metadatas=[ @@ -432,9 +432,7 @@ def add_drawer( ], ) return True - except Exception as e: - if "already exists" in str(e).lower() or "duplicate" in str(e).lower(): - return False + except Exception: raise diff --git a/tests/test_knowledge_graph.py b/tests/test_knowledge_graph.py index d7d9838..535eace 100644 --- a/tests/test_knowledge_graph.py +++ b/tests/test_knowledge_graph.py @@ -6,6 +6,7 @@ timeline, stats, and edge cases (duplicate triples, ID collisions). """ + class TestEntityOperations: def test_add_entity(self, kg): eid = kg.add_entity("Alice", entity_type="person") @@ -124,7 +125,6 @@ class TestWALMode: conn.close() assert mode == "wal" - class TestStats: def test_stats_empty(self, kg): stats = kg.stats()