diff --git a/monitor.py b/monitor.py index 2f670af..f061b9f 100755 --- a/monitor.py +++ b/monitor.py @@ -108,6 +108,19 @@ def collect_status(): lance_ws = get_lance_workspaces() lance_sizes = get_lance_sizes() + # Get real slugs from API + api_slugs = {} # workspace name → slug + if requests: + try: + url = f"{config['anythingllm']['base_url']}/workspaces" + headers = {"Authorization": f"Bearer {config['anythingllm']['api_key']}"} + resp = requests.get(url, headers=headers, timeout=5) + if resp.status_code == 200: + for ws in resp.json().get("workspaces", []): + api_slugs[ws["name"]] = ws["slug"] + except Exception: + pass + # Build expected doc counts per persona folder_counts = {} for fpath, info in uploaded.items(): @@ -117,13 +130,8 @@ def collect_status(): personas = [] for codename, ws_cfg in workspaces.items(): - slug = ws_cfg["name"].lower() - # Normalize slug like AnythingLLM does - import re - slug = re.sub(r'[^a-z0-9\s-]', '', slug.replace('ş', 's').replace('ç', 'c') - .replace('ğ', 'g').replace('ü', 'u').replace('ö', 'o') - .replace('ı', 'i').replace('İ', 'i').replace('&', 'and')) - slug = re.sub(r'\s+', '-', slug.strip()) + # Use real slug from API, fallback to name-based guess + slug = api_slugs.get(ws_cfg["name"], codename) # Expected docs from mapped folders expected = 0 @@ -142,6 +150,7 @@ def collect_status(): personas.append({ "codename": codename, "name": ws_cfg["name"], + "slug": slug, "expected": expected, "assigned": assigned, "has_vectors": has_vectors, @@ -362,7 +371,7 @@ function render(data) {
Uploaded
${data.total_uploaded}
files
Assigned
${data.total_assigned}
docs
Vectors
${data.personas_with_vectors}/${data.total_personas}
${pctVec}%
-
LanceDB
${Math.round(data.lancedb_size_mb)}MB
+
LanceDB
${data.lancedb_size_mb < 1 ? Math.round(data.lancedb_size_mb * 1024) + 'KB' : Math.round(data.lancedb_size_mb) + 'MB'}
Documents
${Math.round(data.docs_size_mb)}MB
`; @@ -389,7 +398,7 @@ function render(data) { const pct = p.expected > 0 ? Math.round(p.assigned / p.expected * 100) : 0; const vecClass = p.has_vectors ? 'vec-ok' : 'vec-no'; const vecIcon = p.has_vectors ? '✓' : '○'; - const sizeStr = p.vector_size_mb > 0 ? Math.round(p.vector_size_mb) + 'MB' : ''; + const sizeStr = p.vector_size_mb > 0 ? (p.vector_size_mb < 1 ? Math.round(p.vector_size_mb * 1024) + 'KB' : Math.round(p.vector_size_mb) + 'MB') : ''; html += ` ${vecIcon} ${code}