openrag 0.4.1.dev19__tar.gz → 0.4.1.dev20__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openrag-0.4.1.dev19/src/openrag.egg-info → openrag-0.4.1.dev20}/PKG-INFO +1 -1
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/pyproject.toml +1 -1
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20/src/openrag.egg-info}/PKG-INFO +1 -1
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/config_fields.py +0 -6
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/main.py +3 -6
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/managers/container_manager.py +27 -13
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/managers/env_manager.py +2 -7
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/config.py +0 -78
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/monitor.py +0 -17
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/LICENSE +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/MANIFEST.in +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/README.md +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/setup.cfg +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/agent.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/auth.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/chat.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/connector_router.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/connectors.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/docling.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/documents.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/flows.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/keys.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/knowledge_filter.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/langflow_files.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/models.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/nudges.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/oidc.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/provider_health.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/provider_validation.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/router.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/search.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/settings.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/tasks.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/upload.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/chat.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/documents.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/knowledge_filters.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/models.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/search.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/settings.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/auth_context.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/config_manager.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/embedding_constants.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/model_constants.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/settings.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/api.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/auth.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/connector.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/models.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/support.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/base.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/connection_manager.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/google_drive/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/google_drive/connector.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/google_drive/oauth.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/api.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/auth.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/connector.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/models.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/support.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/langflow_connector_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/onedrive/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/onedrive/connector.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/onedrive/oauth.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/sharepoint/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/sharepoint/connector.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/sharepoint/oauth.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/sharepoint/utils.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/dependencies.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/main.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/models/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/models/processors.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/models/tasks.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/models/url.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/SOURCES.txt +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/dependency_links.txt +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/entry_points.txt +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/requires.txt +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/top_level.txt +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/api_key_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/auth_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/chat_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/conversation_persistence_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/document_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/flows_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/knowledge_filter_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/langflow_file_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/langflow_history_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/langflow_mcp_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/models_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/monitor_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/search_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/session_ownership_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/task_service.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/session_manager.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/docker-compose.gpu.yml +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/docker-compose.yml +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_embedding.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_llm.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_llm_text.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_embedding.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_llm.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_llm_text.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/ingestion_flow.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/openrag_agent.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/openrag_nudges.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/openrag_url_mcp.json +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/docling.pdf +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/ibm_anthropic.pdf +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/openrag-documentation.pdf +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/warmup_ocr.pdf +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/cli.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/managers/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/managers/docling_manager.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/diagnostics.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/logs.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/welcome.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/clipboard.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/platform.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/startup_checks.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/validation.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/version_check.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/command_modal.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/diagnostics_notification.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/error_notification.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/factory_reset_warning_modal.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/flow_backup_warning_modal.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/prune_options_modal.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/upgrade_instructions_modal.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/version_mismatch_warning_modal.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/waves.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/acl_utils.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/container_utils.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/docling_client.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/document_processing.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/embedding_fields.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/embeddings.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/env_utils.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/file_utils.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/gpu_detection.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/hash_utils.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/langflow_headers.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/langflow_utils.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/logging_config.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/opensearch_queries.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/opensearch_utils.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/paths.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/telemetry/__init__.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/telemetry/category.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/telemetry/client.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/telemetry/message_id.py +0 -0
- {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/version_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrag
|
|
3
|
-
Version: 0.4.1.
|
|
3
|
+
Version: 0.4.1.dev20
|
|
4
4
|
Summary: OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables intelligent document search and AI-powered conversations.
|
|
5
5
|
Classifier: Development Status :: 4 - Beta
|
|
6
6
|
Classifier: Environment :: Console
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "openrag"
|
|
7
|
-
version = "0.4.1.
|
|
7
|
+
version = "0.4.1.dev20"
|
|
8
8
|
description = "OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables intelligent document search and AI-powered conversations."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.13"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrag
|
|
3
|
-
Version: 0.4.1.
|
|
3
|
+
Version: 0.4.1.dev20
|
|
4
4
|
Summary: OpenRAG is a comprehensive Retrieval-Augmented Generation platform that enables intelligent document search and AI-powered conversations.
|
|
5
5
|
Classifier: Development Status :: 4 - Beta
|
|
6
6
|
Classifier: Environment :: Console
|
|
@@ -66,12 +66,6 @@ CONFIG_SECTIONS: list[ConfigSection] = [
|
|
|
66
66
|
placeholder="9200", default="9200",
|
|
67
67
|
helper_text="Override for remote OpenSearch instances (default: 9200)",
|
|
68
68
|
),
|
|
69
|
-
ConfigField(
|
|
70
|
-
"opensearch_data_path", "OPENSEARCH_DATA_PATH", "Data Path",
|
|
71
|
-
placeholder="~/.openrag/data/opensearch-data",
|
|
72
|
-
default="$HOME/.openrag/data/opensearch-data",
|
|
73
|
-
helper_text="Directory to persist OpenSearch indices across upgrades",
|
|
74
|
-
),
|
|
75
69
|
ConfigField(
|
|
76
70
|
"opensearch_index_name", "OPENSEARCH_INDEX_NAME", "Index Name",
|
|
77
71
|
placeholder="documents", default="documents",
|
|
@@ -562,7 +562,7 @@ def migrate_legacy_data_directories():
|
|
|
562
562
|
"""Migrate data from CWD-based directories to ~/.openrag/.
|
|
563
563
|
|
|
564
564
|
This is a one-time migration for users upgrading from the old layout.
|
|
565
|
-
Migrates: documents, flows, keys, config,
|
|
565
|
+
Migrates: documents, flows, keys, config, langflow-data
|
|
566
566
|
|
|
567
567
|
Prompts user for confirmation before migrating. If user declines,
|
|
568
568
|
exits with a message to downgrade to v1.52 or earlier.
|
|
@@ -584,7 +584,8 @@ def migrate_legacy_data_directories():
|
|
|
584
584
|
(cwd / "flows", target_base / "flows", "flows"),
|
|
585
585
|
(cwd / "keys", target_base / "keys", "keys"),
|
|
586
586
|
(cwd / "config", target_base / "config", "config"),
|
|
587
|
-
|
|
587
|
+
# opensearch-data intentionally omitted: OpenSearch now uses a Docker named
|
|
588
|
+
# volume; old index data is not portable and must be re-ingested.
|
|
588
589
|
(cwd / "langflow-data", target_base / "data" / "langflow-data", "Langflow data"),
|
|
589
590
|
]
|
|
590
591
|
|
|
@@ -608,7 +609,6 @@ def migrate_legacy_data_directories():
|
|
|
608
609
|
env_manager.config.openrag_flows_path = f"{home}/.openrag/flows"
|
|
609
610
|
env_manager.config.openrag_config_path = f"{home}/.openrag/config"
|
|
610
611
|
env_manager.config.openrag_data_path = f"{home}/.openrag/data"
|
|
611
|
-
env_manager.config.opensearch_data_path = f"{home}/.openrag/data/opensearch-data"
|
|
612
612
|
env_manager.config.langflow_data_path = f"{home}/.openrag/data/langflow-data"
|
|
613
613
|
env_manager.save_env_file()
|
|
614
614
|
logger.info("Updated .env file with centralized paths")
|
|
@@ -688,7 +688,6 @@ def migrate_legacy_data_directories():
|
|
|
688
688
|
env_manager.config.openrag_flows_path = f"{home}/.openrag/flows"
|
|
689
689
|
env_manager.config.openrag_config_path = f"{home}/.openrag/config"
|
|
690
690
|
env_manager.config.openrag_data_path = f"{home}/.openrag/data"
|
|
691
|
-
env_manager.config.opensearch_data_path = f"{home}/.openrag/data/opensearch-data"
|
|
692
691
|
env_manager.config.langflow_data_path = f"{home}/.openrag/data/langflow-data"
|
|
693
692
|
env_manager.save_env_file()
|
|
694
693
|
print(" Updated .env with centralized paths")
|
|
@@ -755,7 +754,6 @@ def setup_host_directories():
|
|
|
755
754
|
- ~/.openrag/keys/ (for JWT keys)
|
|
756
755
|
- ~/.openrag/config/ (for configuration)
|
|
757
756
|
- ~/.openrag/data/ (for backend data: conversations, OAuth tokens, etc.)
|
|
758
|
-
- ~/.openrag/data/opensearch-data/ (for OpenSearch index)
|
|
759
757
|
- LANGFLOW_DATA_PATH (for Langflow database and state)
|
|
760
758
|
"""
|
|
761
759
|
base_dir = Path.home() / ".openrag"
|
|
@@ -765,7 +763,6 @@ def setup_host_directories():
|
|
|
765
763
|
base_dir / "keys",
|
|
766
764
|
base_dir / "config",
|
|
767
765
|
base_dir / "data",
|
|
768
|
-
base_dir / "data" / "opensearch-data",
|
|
769
766
|
]
|
|
770
767
|
|
|
771
768
|
for directory in directories:
|
|
@@ -1278,23 +1278,37 @@ class ContainerManager:
|
|
|
1278
1278
|
|
|
1279
1279
|
yield False, "Clearing OpenSearch data volume..."
|
|
1280
1280
|
|
|
1281
|
-
#
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1281
|
+
# The volume name is 'opensearch-data' as defined in docker-compose.yml.
|
|
1282
|
+
# Docker Compose usually prefixes it with the project name (defaulting to the directory name).
|
|
1283
|
+
volume_name = "opensearch-data"
|
|
1284
|
+
|
|
1285
|
+
possible_names = list(dict.fromkeys([
|
|
1286
|
+
volume_name,
|
|
1287
|
+
f"{Path.cwd().name.lower()}_{volume_name}", # e.g. openrag_opensearch-data
|
|
1288
|
+
f"{Path.cwd().name.lower().replace('-', '')}_{volume_name}", # e.g. openrag_opensearch-data (dashes stripped)
|
|
1289
|
+
]))
|
|
1290
|
+
|
|
1291
|
+
# List volumes and find the correct one
|
|
1292
|
+
list_success, stdout, _ = await self._run_runtime_command(["volume", "ls", "--format", "{{.Name}}"])
|
|
1293
|
+
if not list_success:
|
|
1294
|
+
yield False, "Could not list Docker volumes"
|
|
1289
1295
|
return
|
|
1290
1296
|
|
|
1291
|
-
|
|
1292
|
-
|
|
1297
|
+
existing_volumes = set(stdout.splitlines())
|
|
1298
|
+
found_name = next((n for n in possible_names if n in existing_volumes), None)
|
|
1293
1299
|
|
|
1294
|
-
if
|
|
1295
|
-
yield True, "OpenSearch data
|
|
1300
|
+
if found_name is None:
|
|
1301
|
+
yield True, "OpenSearch data volume not found — already removed or never created"
|
|
1302
|
+
return
|
|
1303
|
+
|
|
1304
|
+
# Only clear the volume we know exists
|
|
1305
|
+
cmd = ["run", "--rm", "-v", f"{found_name}:/work:Z", "alpine", "sh", "-c",
|
|
1306
|
+
"rm -rf /work/* /work/.[!.]* 2>/dev/null; echo done"]
|
|
1307
|
+
success, stdout, stderr = await self._run_runtime_command(cmd)
|
|
1308
|
+
if success and "done" in stdout:
|
|
1309
|
+
yield True, f"OpenSearch data volume '{found_name}' cleared successfully"
|
|
1296
1310
|
else:
|
|
1297
|
-
yield False, f"Failed to clear OpenSearch data: {
|
|
1311
|
+
yield False, f"Failed to clear OpenSearch data volume '{found_name}': {stderr}"
|
|
1298
1312
|
|
|
1299
1313
|
async def reset_services(self) -> AsyncIterator[tuple[bool, str]]:
|
|
1300
1314
|
"""Reset all services (stop, remove containers/volumes, clear data) and yield progress updates."""
|
|
@@ -94,7 +94,6 @@ class EnvConfig:
|
|
|
94
94
|
openrag_flows_path: str = "$HOME/.openrag/flows"
|
|
95
95
|
openrag_config_path: str = "$HOME/.openrag/config"
|
|
96
96
|
openrag_data_path: str = "$HOME/.openrag/data" # Backend data (conversations, tokens, etc.)
|
|
97
|
-
opensearch_data_path: str = "$HOME/.openrag/data/opensearch-data"
|
|
98
97
|
langflow_data_path: str = "$HOME/.openrag/data/langflow-data"
|
|
99
98
|
openrag_tui_config_path_legacy: str = "$HOME/.openrag/tui/config"
|
|
100
99
|
|
|
@@ -212,7 +211,6 @@ class EnvManager:
|
|
|
212
211
|
"OPENRAG_FLOWS_PATH": "openrag_flows_path",
|
|
213
212
|
"OPENRAG_CONFIG_PATH": "openrag_config_path",
|
|
214
213
|
"OPENRAG_DATA_PATH": "openrag_data_path",
|
|
215
|
-
"OPENSEARCH_DATA_PATH": "opensearch_data_path",
|
|
216
214
|
"LANGFLOW_DATA_PATH": "langflow_data_path",
|
|
217
215
|
"LANGFLOW_AUTO_LOGIN": "langflow_auto_login",
|
|
218
216
|
"LANGFLOW_NEW_USER_IS_ACTIVE": "langflow_new_user_is_active",
|
|
@@ -491,9 +489,6 @@ class EnvManager:
|
|
|
491
489
|
f.write(
|
|
492
490
|
f"OPENRAG_DATA_PATH={self._quote_env_value(expand_path(self.config.openrag_data_path))}\n"
|
|
493
491
|
)
|
|
494
|
-
f.write(
|
|
495
|
-
f"OPENSEARCH_DATA_PATH={self._quote_env_value(expand_path(self.config.opensearch_data_path))}\n"
|
|
496
|
-
)
|
|
497
492
|
f.write(
|
|
498
493
|
f"LANGFLOW_DATA_PATH={self._quote_env_value(expand_path(self.config.langflow_data_path))}\n"
|
|
499
494
|
)
|
|
@@ -762,11 +757,11 @@ class EnvManager:
|
|
|
762
757
|
else:
|
|
763
758
|
new_lines.append(line)
|
|
764
759
|
|
|
765
|
-
# If not found, add it after
|
|
760
|
+
# If not found, add it after LANGFLOW_DATA_PATH or at the end
|
|
766
761
|
if not updated:
|
|
767
762
|
insert_pos = len(new_lines)
|
|
768
763
|
for i, line in enumerate(new_lines):
|
|
769
|
-
if "
|
|
764
|
+
if "LANGFLOW_DATA_PATH" in line:
|
|
770
765
|
insert_pos = i + 1
|
|
771
766
|
break
|
|
772
767
|
new_lines.insert(insert_pos, f"OPENRAG_VERSION={self._quote_env_value(current_version)}")
|
|
@@ -201,7 +201,6 @@ class ConfigScreen(Screen):
|
|
|
201
201
|
# Fields that need custom rendering beyond the standard pattern
|
|
202
202
|
SPECIAL_FIELDS = {
|
|
203
203
|
"opensearch_password",
|
|
204
|
-
"opensearch_data_path",
|
|
205
204
|
"langflow_superuser_password",
|
|
206
205
|
"langflow_superuser",
|
|
207
206
|
"langflow_data_path",
|
|
@@ -289,25 +288,6 @@ class ConfigScreen(Screen):
|
|
|
289
288
|
yield Button("👁", id=f"toggle-{field.name}", variant="default")
|
|
290
289
|
yield Static(" ")
|
|
291
290
|
|
|
292
|
-
def _render_opensearch_data_path(self, field: ConfigField) -> ComposeResult:
|
|
293
|
-
"""OpenSearch data path with file picker."""
|
|
294
|
-
yield Label(field.label)
|
|
295
|
-
yield Static(field.helper_text, classes="helper-text")
|
|
296
|
-
current_value = getattr(self.env_manager.config, field.name, field.default)
|
|
297
|
-
input_widget = Input(
|
|
298
|
-
placeholder=field.placeholder,
|
|
299
|
-
value=current_value,
|
|
300
|
-
id=f"input-{field.name}",
|
|
301
|
-
)
|
|
302
|
-
yield input_widget
|
|
303
|
-
yield Horizontal(
|
|
304
|
-
Button("Pick…", id="pick-opensearch-data-btn"),
|
|
305
|
-
id="opensearch-data-path-actions",
|
|
306
|
-
classes="controls-row",
|
|
307
|
-
)
|
|
308
|
-
self.inputs[field.name] = input_widget
|
|
309
|
-
yield Static(" ")
|
|
310
|
-
|
|
311
291
|
def _render_langflow_data_path(self, field: ConfigField) -> ComposeResult:
|
|
312
292
|
"""Langflow data path with file picker."""
|
|
313
293
|
yield Label(field.label)
|
|
@@ -475,8 +455,6 @@ class ConfigScreen(Screen):
|
|
|
475
455
|
self.action_back()
|
|
476
456
|
elif event.button.id == "pick-docs-btn":
|
|
477
457
|
self.action_pick_documents_path()
|
|
478
|
-
elif event.button.id == "pick-opensearch-data-btn":
|
|
479
|
-
self.action_pick_opensearch_data_path()
|
|
480
458
|
elif event.button.id == "pick-langflow-data-btn":
|
|
481
459
|
self.action_pick_langflow_data_path()
|
|
482
460
|
elif event.button.id and event.button.id.startswith("toggle-"):
|
|
@@ -622,62 +600,6 @@ class ConfigScreen(Screen):
|
|
|
622
600
|
self._docs_pick_callback = _append_path # type: ignore[attr-defined]
|
|
623
601
|
self.app.push_screen(picker)
|
|
624
602
|
|
|
625
|
-
def action_pick_opensearch_data_path(self) -> None:
|
|
626
|
-
"""Open textual-fspicker to select OpenSearch data directory."""
|
|
627
|
-
try:
|
|
628
|
-
import importlib
|
|
629
|
-
|
|
630
|
-
fsp = importlib.import_module("textual_fspicker")
|
|
631
|
-
except Exception:
|
|
632
|
-
self.notify("textual-fspicker not available", severity="warning")
|
|
633
|
-
return
|
|
634
|
-
|
|
635
|
-
# Determine starting path from current input if possible
|
|
636
|
-
input_widget = self.inputs.get("opensearch_data_path")
|
|
637
|
-
start = Path.home()
|
|
638
|
-
if input_widget and input_widget.value:
|
|
639
|
-
path_str = input_widget.value.strip()
|
|
640
|
-
if path_str:
|
|
641
|
-
candidate = Path(path_str).expanduser()
|
|
642
|
-
# If path doesn't exist, use parent or fallback to home
|
|
643
|
-
if candidate.exists():
|
|
644
|
-
start = candidate
|
|
645
|
-
elif candidate.parent.exists():
|
|
646
|
-
start = candidate.parent
|
|
647
|
-
|
|
648
|
-
# Prefer SelectDirectory for directories; fallback to FileOpen
|
|
649
|
-
PickerClass = getattr(fsp, "SelectDirectory", None) or getattr(
|
|
650
|
-
fsp, "FileOpen", None
|
|
651
|
-
)
|
|
652
|
-
if PickerClass is None:
|
|
653
|
-
self.notify(
|
|
654
|
-
"No compatible picker found in textual-fspicker", severity="warning"
|
|
655
|
-
)
|
|
656
|
-
return
|
|
657
|
-
try:
|
|
658
|
-
picker = PickerClass(location=start)
|
|
659
|
-
except Exception:
|
|
660
|
-
try:
|
|
661
|
-
picker = PickerClass(start)
|
|
662
|
-
except Exception:
|
|
663
|
-
self.notify("Could not initialize textual-fspicker", severity="warning")
|
|
664
|
-
return
|
|
665
|
-
|
|
666
|
-
def _set_path(result) -> None:
|
|
667
|
-
if not result:
|
|
668
|
-
return
|
|
669
|
-
path_str = str(result)
|
|
670
|
-
if input_widget is None:
|
|
671
|
-
return
|
|
672
|
-
input_widget.value = path_str
|
|
673
|
-
|
|
674
|
-
# Push with callback when supported; otherwise, use on_screen_dismissed fallback
|
|
675
|
-
try:
|
|
676
|
-
self.app.push_screen(picker, _set_path) # type: ignore[arg-type]
|
|
677
|
-
except TypeError:
|
|
678
|
-
self._opensearch_data_pick_callback = _set_path # type: ignore[attr-defined]
|
|
679
|
-
self.app.push_screen(picker)
|
|
680
|
-
|
|
681
603
|
def action_pick_langflow_data_path(self) -> None:
|
|
682
604
|
"""Open textual-fspicker to select Langflow data directory."""
|
|
683
605
|
try:
|
|
@@ -551,23 +551,6 @@ class MonitorScreen(Screen):
|
|
|
551
551
|
env_manager = EnvManager()
|
|
552
552
|
env_manager.load_existing_env()
|
|
553
553
|
|
|
554
|
-
# Clear opensearch-data using container
|
|
555
|
-
yield False, "Clearing OpenSearch data..."
|
|
556
|
-
opensearch_data_path = Path(env_manager.config.opensearch_data_path.replace("$HOME", str(Path.home()))).expanduser()
|
|
557
|
-
if opensearch_data_path.exists():
|
|
558
|
-
async for success, message in self.container_manager.clear_opensearch_data_volume():
|
|
559
|
-
yield success, message
|
|
560
|
-
if not success and "failed" in message.lower():
|
|
561
|
-
return
|
|
562
|
-
|
|
563
|
-
# Recreate empty opensearch-data directory
|
|
564
|
-
try:
|
|
565
|
-
opensearch_data_path.mkdir(parents=True, exist_ok=True)
|
|
566
|
-
yield True, "OpenSearch data directory recreated"
|
|
567
|
-
except Exception as e:
|
|
568
|
-
yield False, f"Error recreating opensearch-data directory: {e}"
|
|
569
|
-
return
|
|
570
|
-
|
|
571
554
|
# Delete langflow-data directory (mirrors Makefile factory-reset behaviour)
|
|
572
555
|
yield False, "Clearing Langflow data..."
|
|
573
556
|
from tui.main import _resolve_langflow_data_path
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/conversation_persistence_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_embedding.json
RENAMED
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_llm.json
RENAMED
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_llm_text.json
RENAMED
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_embedding.json
RENAMED
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_llm.json
RENAMED
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_llm_text.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/ibm_anthropic.pdf
RENAMED
|
File without changes
|
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/warmup_ocr.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/version_mismatch_warning_modal.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|