Coverage for src \ truenex_memory \ diagnostics \ doctor.py: 100%

15 statements  

« prev     ^ index     » next       coverage.py v7.14.0, created at 2026-05-19 10:21 +0200

1"""Local diagnostics for Truenex Memory.""" 

2 

3from __future__ import annotations 

4 

5from pathlib import Path 

6 

7from truenex_memory.core.config import resolve_project_config 

8from truenex_memory.core.memory_service import MemoryService 

9from truenex_memory.store.repository import MemoryRepository 

10 

11 

12def run_doctor(project_root: Path | str = ".", *, privacy: bool = False) -> dict[str, object]: 

13 """Return diagnostics without contacting network services.""" 

14 

15 config = resolve_project_config(project_root) 

16 service = MemoryService(project_root) 

17 repo = MemoryRepository(config.db_path) 

18 initialized = config.db_path.exists() 

19 stats = repo.stats() if initialized else {"documents": 0, "chunks": 0, "memory_nodes": 0, "retrieval_logs": 0} 

20 result: dict[str, object] = { 

21 "ok": True, 

22 "project_root": str(config.project_root), 

23 "data_dir": str(config.data_dir), 

24 "database": str(config.db_path), 

25 "initialized": initialized, 

26 "stats": stats, 

27 "vector": service.vector_status(), 

28 } 

29 if privacy: 

30 result["privacy"] = { 

31 "cloud_enabled": False, 

32 "telemetry_enabled": False, 

33 "vector_backend": service.vector_status()["backend"], 

34 "active_vector_backend": service.vector_status()["active_backend"], 

35 "qdrant_url": service.vector_status()["qdrant_url"], 

36 "qdrant_collection": service.vector_status()["qdrant_collection"], 

37 "qdrant_available": service.vector_status()["available"], 

38 "uploads_project_content": False, 

39 } 

40 return result