This commit is contained in:
2025-09-21 03:00:57 +00:00
parent db854b8ec8
commit e017e0533d
17 changed files with 553 additions and 109 deletions

4
.env
View File

@@ -1,5 +1,5 @@
WEAVIATE_IS_LOCAL=True
# CLAUDE_PROJECT_DIR=/home/trav/claude-scripts
# URL can be just a host or full URL; defaults shown below
WCD_URL=http://weaviate.yo # or http://localhost:8080
# LOCAL_WEAVIATE_PORT=8080 # optional override
@@ -11,7 +11,7 @@ WCD_URL=http://weaviate.yo # or http://localhost:8080
R2R_API_URL=http://r2r.lab
R2R_API_KEY=
FIRECRAWL_API_KEY=dummy-key
OPENWEBUI_API_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6IjlmNjEwODg2LWRhM2MtNDQ4YS05OWE0LTYyZGEyZjIyZjJiNiJ9.W-dqabcE4F-LQ--k2yrJM_KEBDB-wi1CmoahlN1tQbY
OPENWEBUI_API_KEY=sk-09ae2f70c71248a8a7295d4323c6b96d
OPENWEBUI_API_URL=http://chat.lab
WEAVIATE_API_KEY=
OPENAI_API_KEY=sk-1234

View File

@@ -358,45 +358,56 @@ class CollectionOverviewScreen(Screen[None]):
async def update_collections_table(self) -> None:
"""Update the collections table with enhanced formatting."""
table = self.query_one("#collections_table", EnhancedDataTable)
table.clear(columns=True)
try:
table = self.query_one("#collections_table", EnhancedDataTable)
table.clear(columns=True)
# Add enhanced columns with more metadata
table.add_columns("Collection", "Backend", "Documents", "Size", "Type", "Status", "Updated")
# Add enhanced columns with more metadata
table.add_columns("Collection", "Backend", "Documents", "Size", "Type", "Status", "Updated")
# Add rows with enhanced formatting
for collection in self.collections:
# Format size
size_str = f"{collection['size_mb']:.1f} MB"
if collection["size_mb"] > 1000:
size_str = f"{collection['size_mb'] / 1000:.1f} GB"
# Add rows with enhanced formatting
for collection in self.collections:
try:
# Format size
size_str = f"{collection['size_mb']:.1f} MB"
if collection["size_mb"] > 1000:
size_str = f"{collection['size_mb'] / 1000:.1f} GB"
# Format document count
doc_count = f"{collection['count']:,}"
# Format document count
doc_count = f"{collection['count']:,}"
# Determine content type based on collection name or other metadata
content_type = "📄 Mixed"
if "web" in collection["name"].lower():
content_type = "🌐 Web"
elif "doc" in collection["name"].lower():
content_type = "📖 Docs"
elif "repo" in collection["name"].lower():
content_type = "📦 Code"
# Determine content type based on collection name or other metadata
content_type = "📄 Mixed"
if "web" in collection["name"].lower():
content_type = "🌐 Web"
elif "doc" in collection["name"].lower():
content_type = "📖 Docs"
elif "repo" in collection["name"].lower():
content_type = "📦 Code"
table.add_row(
collection["name"],
collection["backend"],
doc_count,
size_str,
content_type,
collection["status"],
collection["last_updated"],
)
table.add_row(
collection["name"],
collection["backend"],
doc_count,
size_str,
content_type,
collection["status"],
collection["last_updated"],
)
except Exception as e:
LOGGER.warning(f"Failed to add collection row for {collection.get('name', 'unknown')}: {e}")
continue
if self.collections:
table.move_cursor(row=0)
if self.collections:
try:
table.move_cursor(row=0)
except Exception as e:
LOGGER.warning(f"Failed to move table cursor: {e}")
self.get_selected_collection()
self.get_selected_collection()
except Exception as e:
LOGGER.exception(f"Failed to update collections table: {e}")
self.notify(f"Failed to update table: {e}", severity="error", markup=False)
def update_search_controls(self, collection: CollectionInfo | None) -> None:
"""Enable or disable search controls based on backend support."""

View File

@@ -152,7 +152,13 @@ class ConfirmDeleteScreen(Screen[None]):
def _refresh_parent_collections(self) -> None:
"""Helper method to refresh parent collections."""
self.parent_screen.refresh_collections()
try:
self.parent_screen.refresh_collections()
except Exception as e:
import logging
logger = logging.getLogger(__name__)
logger.exception(f"Failed to refresh parent collections after deletion: {e}")
# Don't re-raise to prevent TUI crash
class ConfirmDocumentDeleteScreen(Screen[None]):

View File

@@ -397,34 +397,20 @@ class StorageManager:
size_mb = count * 0.01 # Rough estimate: 10KB per document
if collection_name in collection_map:
# Merge with existing collection
existing = collection_map[collection_name]
existing_backends = existing["backend"]
backend_value = backend_type.value
# Create unique key combining collection name and backend to show separately
collection_key = f"{collection_name}#{backend_type.value}"
if isinstance(existing_backends, str):
existing["backend"] = [existing_backends, backend_value]
elif isinstance(existing_backends, list):
# Prevent duplicates
if backend_value not in existing_backends:
existing_backends.append(backend_value)
# Aggregate counts and sizes
existing["count"] += count
existing["size_mb"] += size_mb
else:
# Create new collection entry
collection_info: CollectionInfo = {
"name": collection_name,
"type": self._get_collection_type(collection_name, backend_type),
"count": count,
"backend": backend_type.value,
"status": "active",
"last_updated": "2024-01-01T00:00:00Z",
"size_mb": size_mb,
}
collection_map[collection_name] = collection_info
# Create new collection entry (no aggregation)
collection_info: CollectionInfo = {
"name": collection_name,
"type": self._get_collection_type(collection_name, backend_type),
"count": count,
"backend": backend_type.value,
"status": "active",
"last_updated": "2024-01-01T00:00:00Z",
"size_mb": size_mb,
}
collection_map[collection_key] = collection_info
except Exception:
continue

View File

@@ -777,24 +777,35 @@ class R2RStorage(BaseStorage):
@override
async def count(self, *, collection_name: str | None = None) -> int:
"""Get document count in collection."""
"""Get document count in collection by actually querying documents."""
endpoint = self.endpoint
client = self._create_http_client()
try:
# Get collections and find the count for the specific collection
target_collection = collection_name or self.config.collection_name
# First get the collection ID
response = await client.get(f"{endpoint}/v3/collections")
response.raise_for_status()
data: dict[str, object] = response.json()
target_collection = collection_name or self.config.collection_name
collection_id = None
results = cast(list[dict[str, object]], data.get("results", []))
for collection in results:
if collection.get("name") == target_collection:
doc_count = collection.get("document_count", 0)
return _as_int(doc_count)
collection_id = collection.get("id")
break
if not collection_id:
return 0
# Query actual documents in the collection to get accurate count
doc_response = await client.get(f"{endpoint}/v3/collections/{collection_id}/documents")
doc_response.raise_for_status()
doc_data: dict[str, object] = doc_response.json()
documents = cast(list[object], doc_data.get("results", []))
return len(documents)
# Collection not found
return 0
except Exception:
return 0
finally:

View File

@@ -872,3 +872,432 @@ metadata.author
2025-09-18 22:21:09 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-18 23:06:37 | INFO | ingest_pipeline.cli.tui.utils.runners | Shutting down storage connections
2025-09-18 23:06:37 | INFO | ingest_pipeline.cli.tui.utils.runners | All storage connections closed gracefully
2025-09-21 01:41:23 | INFO | ingest_pipeline.cli.tui.utils.runners | Initializing collection management TUI
2025-09-21 01:41:23 | INFO | ingest_pipeline.cli.tui.utils.runners | Scanning available storage backends
2025-09-21 01:41:23 | INFO | ingest_pipeline.cli.tui.utils.runners | Launching TUI - storage backends will initialize in background
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/.well-known/openid-configuration "HTTP/1.1 404 Not Found"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/meta "HTTP/1.1 200 OK"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 401 Unauthorized"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 404 Not Found"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: GET https://pypi.org/pypi/weaviate-client/json "HTTP/1.1 200 OK"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 01:41:24 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 01:41:53 | INFO | ingest_pipeline.cli.tui.utils.runners | Shutting down storage connections
2025-09-21 01:41:53 | INFO | ingest_pipeline.cli.tui.utils.runners | All storage connections closed gracefully
2025-09-21 02:27:12 | INFO | ingest_pipeline.cli.tui.utils.runners | Initializing collection management TUI
2025-09-21 02:27:12 | INFO | ingest_pipeline.cli.tui.utils.runners | Scanning available storage backends
2025-09-21 02:27:12 | INFO | ingest_pipeline.cli.tui.utils.runners | Launching TUI - storage backends will initialize in background
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/.well-known/openid-configuration "HTTP/1.1 404 Not Found"
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/meta "HTTP/1.1 200 OK"
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET https://pypi.org/pypi/weaviate-client/json "HTTP/1.1 200 OK"
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:12 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:13 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:27:22 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:27:23 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:27:40 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:27:41 | INFO | httpx | HTTP Request: DELETE http://r2r.lab/v3/collections/e37af264-a346-4971-98c8-7611147f0c1d "HTTP/1.1 200 OK"
2025-09-21 02:27:41 | INFO | ingest_pipeline.cli.tui.utils.runners | Shutting down storage connections
2025-09-21 02:27:41 | INFO | ingest_pipeline.cli.tui.utils.runners | All storage connections closed gracefully
2025-09-21 02:47:58 | INFO | ingest_pipeline.cli.tui.utils.runners | Initializing collection management TUI
2025-09-21 02:47:58 | INFO | ingest_pipeline.cli.tui.utils.runners | Scanning available storage backends
2025-09-21 02:47:58 | INFO | ingest_pipeline.cli.tui.utils.runners | Launching TUI - storage backends will initialize in background
2025-09-21 02:47:58 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/.well-known/openid-configuration "HTTP/1.1 404 Not Found"
2025-09-21 02:47:58 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/meta "HTTP/1.1 200 OK"
2025-09-21 02:47:58 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:58 | INFO | httpx | HTTP Request: GET https://pypi.org/pypi/weaviate-client/json "HTTP/1.1 200 OK"
2025-09-21 02:47:58 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:58 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:47:59 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:00 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:48:29 | INFO | ingest_pipeline.cli.tui.utils.runners | Initializing collection management TUI
2025-09-21 02:48:29 | INFO | ingest_pipeline.cli.tui.utils.runners | Scanning available storage backends
2025-09-21 02:48:29 | INFO | ingest_pipeline.cli.tui.utils.runners | Launching TUI - storage backends will initialize in background
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/.well-known/openid-configuration "HTTP/1.1 404 Not Found"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/meta "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET https://pypi.org/pypi/weaviate-client/json "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:30 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:48:39 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:40 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/866022d4-9a5d-4ff2-9609-1412502d44a1/documents?offset=0&limit=50 "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:50 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:48:53 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:51:16 | INFO | ingest_pipeline.cli.tui.utils.runners | Initializing collection management TUI
2025-09-21 02:51:16 | INFO | ingest_pipeline.cli.tui.utils.runners | Scanning available storage backends
2025-09-21 02:51:16 | INFO | ingest_pipeline.cli.tui.utils.runners | Launching TUI - storage backends will initialize in background
2025-09-21 02:51:16 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/.well-known/openid-configuration "HTTP/1.1 404 Not Found"
2025-09-21 02:51:16 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/meta "HTTP/1.1 200 OK"
2025-09-21 02:51:16 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:16 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:16 | INFO | httpx | HTTP Request: GET https://pypi.org/pypi/weaviate-client/json "HTTP/1.1 200 OK"
2025-09-21 02:51:16 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:17 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:51:44 | INFO | ingest_pipeline.cli.tui.utils.runners | Shutting down storage connections
2025-09-21 02:51:44 | INFO | ingest_pipeline.cli.tui.utils.runners | All storage connections closed gracefully
2025-09-21 02:51:48 | INFO | ingest_pipeline.cli.tui.utils.runners | Initializing collection management TUI
2025-09-21 02:51:48 | INFO | ingest_pipeline.cli.tui.utils.runners | Scanning available storage backends
2025-09-21 02:51:48 | INFO | ingest_pipeline.cli.tui.utils.runners | Launching TUI - storage backends will initialize in background
2025-09-21 02:51:48 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/.well-known/openid-configuration "HTTP/1.1 404 Not Found"
2025-09-21 02:51:48 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/meta "HTTP/1.1 200 OK"
2025-09-21 02:51:48 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:48 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:48 | INFO | httpx | HTTP Request: GET https://pypi.org/pypi/weaviate-client/json "HTTP/1.1 200 OK"
2025-09-21 02:51:48 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:51:49 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:02 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:52:07 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:07 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/866022d4-9a5d-4ff2-9609-1412502d44a1/documents?offset=0&limit=50 "HTTP/1.1 200 OK"
2025-09-21 02:52:13 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:13 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/866022d4-9a5d-4ff2-9609-1412502d44a1/documents?offset=0&limit=50 "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:52:19 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:52:20 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 02:53:25 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:53:25 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/866022d4-9a5d-4ff2-9609-1412502d44a1/documents?offset=0&limit=50 "HTTP/1.1 200 OK"
2025-09-21 02:53:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:53:30 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/866022d4-9a5d-4ff2-9609-1412502d44a1/documents?offset=0&limit=50 "HTTP/1.1 200 OK"
2025-09-21 02:54:55 | INFO | ingest_pipeline.cli.tui.utils.runners | Initializing collection management TUI
2025-09-21 02:54:55 | INFO | ingest_pipeline.cli.tui.utils.runners | Scanning available storage backends
2025-09-21 02:54:55 | INFO | ingest_pipeline.cli.tui.utils.runners | Launching TUI - storage backends will initialize in background
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/.well-known/openid-configuration "HTTP/1.1 404 Not Found"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/meta "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET https://pypi.org/pypi/weaviate-client/json "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/db6f7f9e-3915-4086-a9cf-4b498df90395/documents "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:56 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/eb597b49-5fea-4612-93ff-f83a88e5b91e/documents "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/866022d4-9a5d-4ff2-9609-1412502d44a1/documents "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/b1e15a85-1de5-4a6f-8261-cabcd5e8e7df/documents "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/84e273f7-f8b4-40c5-a5fc-d656340fc7cc/documents "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/53d07287-146d-5849-a0ce-95b0e5fa0e7e/documents "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 02:54:57 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"
2025-09-21 03:00:23 | INFO | ingest_pipeline.cli.tui.utils.runners | Shutting down storage connections
2025-09-21 03:00:23 | INFO | ingest_pipeline.cli.tui.utils.runners | All storage connections closed gracefully
2025-09-21 03:00:29 | INFO | ingest_pipeline.cli.tui.utils.runners | Initializing collection management TUI
2025-09-21 03:00:29 | INFO | ingest_pipeline.cli.tui.utils.runners | Scanning available storage backends
2025-09-21 03:00:29 | INFO | ingest_pipeline.cli.tui.utils.runners | Launching TUI - storage backends will initialize in background
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/.well-known/openid-configuration "HTTP/1.1 404 Not Found"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/meta "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET https://pypi.org/pypi/weaviate-client/json "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/db6f7f9e-3915-4086-a9cf-4b498df90395/documents "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/eb597b49-5fea-4612-93ff-f83a88e5b91e/documents "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/866022d4-9a5d-4ff2-9609-1412502d44a1/documents "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/b1e15a85-1de5-4a6f-8261-cabcd5e8e7df/documents "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/84e273f7-f8b4-40c5-a5fc-d656340fc7cc/documents "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://r2r.lab/v3/collections/53d07287-146d-5849-a0ce-95b0e5fa0e7e/documents "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://weaviate.yo/v1/schema "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: POST http://weaviate.yo/v1/graphql "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/139c04d5-7d38-4595-8e12-79a67fd731e7 "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/dade78d9-9893-4966-bd4b-31f1c1635cfa "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/721c1517-b2cd-482d-bd1c-f99571f0f31f "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/f867530b-5eea-43bf-8257-d3da497cb10b "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/d06bd108-ae7f-44f4-92fb-2ac556784920 "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/96832710-8146-4e3b-88f3-4b3929f67dbf "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/list "HTTP/1.1 200 OK"
2025-09-21 03:00:29 | INFO | httpx | HTTP Request: GET http://chat.lab/api/v1/knowledge/cbd4ae82-6fdd-4a4e-a4d5-d0b97ae988fd "HTTP/1.1 200 OK"

View File

@@ -2,6 +2,7 @@ from __future__ import annotations
from datetime import timedelta
from types import SimpleNamespace
from typing import cast
import pytest
from prefect.deployments.runner import RunnerDeployment
@@ -81,7 +82,7 @@ def test_serve_deployments_invokes_prefect(monkeypatch: pytest.MonkeyPatch) -> N
# Create a mock deployment using SimpleNamespace to avoid Prefect complexity
deployment = SimpleNamespace(name="only")
scheduler.serve_deployments([deployment])
scheduler.serve_deployments([cast(RunnerDeployment, deployment)])
assert called["deployments"] == (deployment,)
assert called["limit"] == 10

View File

@@ -333,7 +333,7 @@ async def test_ensure_collection_finds_existing(
assert collection_id == "col-1"
assert storage.default_collection_id == "col-1"
await storage.client.aclose()
await storage.client.aclose() # type: ignore[attr-defined]
@pytest.mark.asyncio
@@ -354,7 +354,7 @@ async def test_ensure_collection_creates_when_missing(
assert located is not None
identifier, _ = located
assert identifier == collection_id
await storage.client.aclose()
await storage.client.aclose() # type: ignore[attr-defined]
@pytest.mark.asyncio
@@ -386,4 +386,4 @@ async def test_store_batch_creates_documents(
_, collection_payload = collection
assert collection_payload["document_count"] == 2
await storage.client.aclose()
await storage.client.aclose() # type: ignore[attr-defined]

View File

@@ -20,7 +20,7 @@ from ingest_pipeline.storage.base import BaseStorage
class StubStorage(BaseStorage):
def __init__(
self, config: StorageConfig, *, documents: list[Document] | None = None, fail: bool = False
)) -> None:
) -> None:
super().__init__(config)
self.documents = documents or []
self.fail = fail
@@ -37,7 +37,7 @@ class StubStorage(BaseStorage):
async def store_batch(
self, documents: list[Document], *, collection_name: str | None = None
)) -> list[str]:
) -> list[str]:
self.stored.extend(documents)
if self.fail:
raise RuntimeError("batch failed")
@@ -61,7 +61,7 @@ class StubStorage(BaseStorage):
threshold: float = 0.7,
*,
collection_name: str | None = None,
)):
):
for document in self.documents:
yield document
@@ -76,7 +76,7 @@ class CollectionStubStorage(StubStorage):
*,
collections: list[str],
counts: dict[str, int],
)) -> None:
) -> None:
super().__init__(config)
self.collections = collections
self.counts = counts
@@ -115,12 +115,12 @@ async def test_multi_storage_adapter_reports_replication_failure(document_factor
backend=StorageBackend.WEAVIATE,
endpoint="http://weaviate.local",
collection_name="primary",
))
)
secondary_config = StorageConfig(
backend=StorageBackend.OPEN_WEBUI,
endpoint="http://chat.local",
collection_name="secondary",
))
)
primary = StubStorage(primary_config)
secondary = StubStorage(secondary_config, fail=True)
@@ -140,26 +140,26 @@ def test_storage_manager_build_multi_storage_adapter_deduplicates(document_facto
openwebui_api_key=None,
r2r_endpoint=None,
r2r_api_key=None,
)))
))
manager = StorageManager(settings)
weaviate_config = StorageConfig(
backend=StorageBackend.WEAVIATE,
endpoint="http://weaviate.local",
collection_name="primary",
))
)
openwebui_config = StorageConfig(
backend=StorageBackend.OPEN_WEBUI,
endpoint="http://chat.local",
collection_name="secondary",
))
)
manager.backends[StorageBackend.WEAVIATE] = StubStorage(weaviate_config)
manager.backends[StorageBackend.OPEN_WEBUI] = StubStorage(openwebui_config)
adapter = manager.build_multi_storage_adapter(
[StorageBackend.WEAVIATE, StorageBackend.WEAVIATE, StorageBackend.OPEN_WEBUI]
))
)
assert len(adapter._storages) == 2
assert adapter._storages[0].config.backend == StorageBackend.WEAVIATE
@@ -195,33 +195,33 @@ async def test_storage_manager_search_across_backends_groups_results(document_fa
document_weaviate = document_factory(
content="alpha", metadata_updates={"source_url": "https://alpha"}
))
)
document_openwebui = document_factory(
content="beta", metadata_updates={"source_url": "https://beta"}
))
)
manager.backends[StorageBackend.WEAVIATE] = StubStorage(
StorageConfig(
backend=StorageBackend.WEAVIATE,
endpoint="http://weaviate.local",
collection_name="primary",
)),
),
documents=[document_weaviate],
))
)
manager.backends[StorageBackend.OPEN_WEBUI] = StubStorage(
StorageConfig(
backend=StorageBackend.OPEN_WEBUI,
endpoint="http://chat.local",
collection_name="secondary",
)),
),
documents=[document_openwebui],
))
)
results = await manager.search_across_backends(
"query",
limit=5,
backends=[StorageBackend.WEAVIATE, StorageBackend.OPEN_WEBUI],
))
)
assert results[StorageBackend.WEAVIATE][0].content == "alpha"
assert results[StorageBackend.OPEN_WEBUI][0].content == "beta"
@@ -233,12 +233,12 @@ async def test_multi_storage_adapter_store_batch_replicates_to_all_backends(docu
backend=StorageBackend.WEAVIATE,
endpoint="http://weaviate.local",
collection_name="primary",
))
)
secondary_config = StorageConfig(
backend=StorageBackend.OPEN_WEBUI,
endpoint="http://chat.local",
collection_name="secondary",
))
)
primary = StubStorage(primary_config)
secondary = StubStorage(secondary_config)
@@ -261,12 +261,12 @@ async def test_multi_storage_adapter_delete_reports_secondary_failures() -> None
backend=StorageBackend.WEAVIATE,
endpoint="http://weaviate.local",
collection_name="primary",
))
)
secondary_config = StorageConfig(
backend=StorageBackend.OPEN_WEBUI,
endpoint="http://chat.local",
collection_name="secondary",
))
)
primary = StubStorage(primary_config)
secondary = StubStorage(secondary_config, fail=True)
@@ -293,15 +293,15 @@ async def test_storage_manager_initialize_all_backends_registers_capabilities(mo
monkeypatch.setattr(
"ingest_pipeline.cli.tui.utils.storage_manager.WeaviateStorage",
StubStorage,
))
)
monkeypatch.setattr(
"ingest_pipeline.cli.tui.utils.storage_manager.OpenWebUIStorage",
StubStorage,
))
)
monkeypatch.setattr(
"ingest_pipeline.cli.tui.utils.storage_manager.R2RStorage",
StubStorage,
))
)
results = await manager.initialize_all_backends()
@@ -360,19 +360,19 @@ async def test_storage_manager_get_all_collections_merges_counts_and_backends()
backend=StorageBackend.WEAVIATE,
endpoint="http://weaviate.local",
collection_name="shared",
)),
),
collections=["shared", ""],
counts={"shared": 2},
))
)
openwebui_storage = CollectionStubStorage(
StorageConfig(
backend=StorageBackend.OPEN_WEBUI,
endpoint="http://chat.local",
collection_name="secondary",
)),
),
collections=["shared"],
counts={"shared": -1},
))
)
manager.backends = {
StorageBackend.WEAVIATE: weaviate_storage,
StorageBackend.OPEN_WEBUI: openwebui_storage,
@@ -405,17 +405,17 @@ async def test_storage_manager_get_backend_status_reports_failures() -> None:
backend=StorageBackend.WEAVIATE,
endpoint="http://weaviate.local",
collection_name="primary",
)),
),
collections=["collection", "archive"],
counts={"collection": 2, "archive": 1},
))
)
failing_storage = FailingStatusStorage(
StorageConfig(
backend=StorageBackend.OPEN_WEBUI,
endpoint="http://chat.local",
collection_name="secondary",
))
))
)
)
manager.backends = {
StorageBackend.WEAVIATE: healthy_storage,
StorageBackend.OPEN_WEBUI: failing_storage,
@@ -451,15 +451,15 @@ async def test_storage_manager_close_all_clears_state() -> None:
backend=StorageBackend.WEAVIATE,
endpoint="http://weaviate.local",
collection_name="primary",
))
))
)
)
failing_close_storage = FailingCloseStorage(
StorageConfig(
backend=StorageBackend.OPEN_WEBUI,
endpoint="http://chat.local",
collection_name="secondary",
))
))
)
)
manager.backends = {
StorageBackend.WEAVIATE: closable_storage,
StorageBackend.OPEN_WEBUI: failing_close_storage,