| 1 | import json |
| 2 | import threading |
| 3 | |
| 4 | import numpy as np |
| 5 | from langchain_core.documents import Document |
| 6 | |
| 7 | from plugins._memory.api.memory_dashboard import MemoryDashboard |
| 8 | from plugins._memory.helpers.memory import Memory |
| 9 | |
| 10 | |
| 11 | def test_cosine_normalizer_returns_native_float(): |
| 12 | score = Memory._cosine_normalizer(np.float32(0.8)) |
| 13 | |
| 14 | assert type(score) is float |
| 15 | |
| 16 | |
| 17 | def test_memory_dashboard_serializes_legacy_numpy_similarity(): |
| 18 | dashboard = MemoryDashboard(app=None, thread_lock=threading.RLock()) |
| 19 | document = Document( |
| 20 | page_content="legacy memory", |
| 21 | metadata={ |
| 22 | "id": "memory-1", |
| 23 | "area": "main", |
| 24 | "timestamp": "unknown", |
| 25 | "_consolidation_similarity": np.float32(0.75), |
| 26 | }, |
| 27 | ) |
| 28 | |
| 29 | formatted = dashboard._format_memory_for_dashboard(document) |
| 30 | |
| 31 | assert type(formatted["metadata"]["_consolidation_similarity"]) is float |
| 32 | assert isinstance(document.metadata["_consolidation_similarity"], np.float32) |
| 33 | json.dumps(formatted) |