fix(dashboard): st.secrets lazy load, chroma_store metadata types, ChromaDB sync

This commit is contained in:
2026-05-25 10:49:38 +02:00
parent 687f1df818
commit 2e2cd2d228
2 changed files with 129 additions and 84 deletions

View File

@@ -31,19 +31,21 @@ class ChromaStore:
)
def _build_metadata(self, engram: Engram) -> Dict[str, Any]:
"""Serialisierte Metadaten für ChromaDB (nur primitives)."""
meta = engram.metadata.copy()
# ChromaDB akzeptiert nur Listen/Strings/Numbers/Bools
tags = meta.pop("tags", [])
if isinstance(tags, list):
meta["tags"] = ",".join(str(t) for t in tags)
meta.setdefault("source", "agent")
meta.setdefault("confidence", 0.5)
meta.setdefault("correctness", "unconfirmed")
# Hierarchy als JSON-String
if "hierarchy" in meta:
meta["hierarchy"] = json.dumps(meta["hierarchy"])
return meta
"""Serialisierte Metadaten für ChromaDB (nur primitiv/scalar/Str)."""
m = engram.metadata
safe: Dict[str, Any] = {}
# Nur explizit erlaubte Felder übernehmen
safe["source"] = str(m.get("source", "agent"))
safe["confidence"] = float(m.get("confidence", 0.5))
safe["grounding"] = int(m.get("grounding", 1))
tags = m.get("tags", [])
safe["tags"] = ",".join(str(t) for t in tags) if isinstance(tags, list) else str(tags)
safe["created"] = str(m.get("created", ""))
safe["modified"] = str(m.get("modified", ""))
safe["access_count"] = int(m.get("access_count", 0))
safe["correctness"] = "confirmed" if engram.correctness.confirmed else "unconfirmed"
safe["content"] = str(engram.content)[:500] # Chroma akzeptiert kurze Strings besser
return safe
def add(self, engram: Engram, embedding: Optional[List[float]] = None) -> None:
"""Engramm mit Embedding zur Vektor-DB hinzufügen."""