openrag 0.4.1.dev2__tar.gz → 0.4.1.dev4__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.dev2/src/openrag.egg-info → openrag-0.4.1.dev4}/PKG-INFO +1 -1
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/pyproject.toml +1 -1
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4/src/openrag.egg-info}/PKG-INFO +1 -1
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/utils/startup_checks.py +86 -19
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/LICENSE +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/MANIFEST.in +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/README.md +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/setup.cfg +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/agent.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/auth.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/chat.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/connector_router.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/connectors.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/docling.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/documents.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/flows.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/keys.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/knowledge_filter.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/langflow_files.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/models.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/nudges.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/oidc.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/provider_health.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/provider_validation.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/router.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/search.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/settings.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/tasks.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/upload.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/v1/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/v1/chat.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/v1/documents.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/v1/knowledge_filters.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/v1/models.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/v1/search.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/api/v1/settings.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/auth_context.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/config/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/config/config_manager.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/config/model_constants.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/config/settings.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/aws_s3/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/aws_s3/api.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/aws_s3/auth.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/aws_s3/connector.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/aws_s3/models.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/aws_s3/support.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/base.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/connection_manager.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/google_drive/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/google_drive/connector.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/google_drive/oauth.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/ibm_cos/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/ibm_cos/api.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/ibm_cos/auth.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/ibm_cos/connector.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/ibm_cos/models.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/ibm_cos/support.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/langflow_connector_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/onedrive/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/onedrive/connector.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/onedrive/oauth.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/sharepoint/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/sharepoint/connector.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/sharepoint/oauth.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/connectors/sharepoint/utils.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/dependencies.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/main.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/models/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/models/processors.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/models/tasks.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/models/url.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/openrag.egg-info/SOURCES.txt +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/openrag.egg-info/dependency_links.txt +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/openrag.egg-info/entry_points.txt +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/openrag.egg-info/requires.txt +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/openrag.egg-info/top_level.txt +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/api_key_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/auth_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/chat_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/conversation_persistence_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/document_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/flows_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/knowledge_filter_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/langflow_file_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/langflow_history_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/langflow_mcp_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/models_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/monitor_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/search_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/session_ownership_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/services/task_service.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/session_manager.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/docker-compose.gpu.yml +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/docker-compose.yml +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/ollama_embedding.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/ollama_llm.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/ollama_llm_text.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/watsonx_embedding.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/watsonx_llm.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/watsonx_llm_text.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/ingestion_flow.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/openrag_agent.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/openrag_nudges.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/openrag_url_mcp.json +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/openrag-documents/docling.pdf +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/openrag-documents/ibm_anthropic.pdf +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/openrag-documents/openrag-documentation.pdf +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/openrag-documents/warmup_ocr.pdf +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/cli.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/config_fields.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/main.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/managers/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/managers/container_manager.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/managers/docling_manager.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/managers/env_manager.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/screens/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/screens/config.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/screens/diagnostics.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/screens/logs.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/screens/monitor.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/screens/welcome.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/utils/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/utils/clipboard.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/utils/platform.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/utils/validation.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/utils/version_check.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/command_modal.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/diagnostics_notification.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/error_notification.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/factory_reset_warning_modal.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/flow_backup_warning_modal.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/prune_options_modal.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/upgrade_instructions_modal.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/version_mismatch_warning_modal.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/widgets/waves.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/acl_utils.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/container_utils.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/docling_client.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/document_processing.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/embedding_fields.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/embeddings.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/env_utils.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/file_utils.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/gpu_detection.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/hash_utils.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/langflow_headers.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/langflow_utils.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/logging_config.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/opensearch_queries.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/opensearch_utils.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/paths.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/telemetry/__init__.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/telemetry/category.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/telemetry/client.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/utils/telemetry/message_id.py +0 -0
- {openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/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.dev4
|
|
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.dev4"
|
|
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.dev4
|
|
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
|
|
@@ -78,7 +78,7 @@ def get_platform() -> str:
|
|
|
78
78
|
with open("/proc/version", "r") as f:
|
|
79
79
|
if "microsoft" in f.read().lower():
|
|
80
80
|
return "WSL"
|
|
81
|
-
except:
|
|
81
|
+
except Exception:
|
|
82
82
|
pass
|
|
83
83
|
return "Linux"
|
|
84
84
|
elif system == "Windows":
|
|
@@ -175,7 +175,7 @@ def docker_daemon_ready() -> bool:
|
|
|
175
175
|
["docker", "info"], capture_output=True, text=True, timeout=10
|
|
176
176
|
)
|
|
177
177
|
return result.returncode == 0
|
|
178
|
-
except:
|
|
178
|
+
except Exception:
|
|
179
179
|
return False
|
|
180
180
|
|
|
181
181
|
|
|
@@ -186,12 +186,12 @@ def podman_ready() -> bool:
|
|
|
186
186
|
["podman", "info"], capture_output=True, text=True, timeout=10
|
|
187
187
|
)
|
|
188
188
|
return result.returncode == 0
|
|
189
|
-
except:
|
|
189
|
+
except Exception:
|
|
190
190
|
return False
|
|
191
191
|
|
|
192
192
|
|
|
193
193
|
def compose_available() -> bool:
|
|
194
|
-
"""Check if docker compose or docker-compose is available."""
|
|
194
|
+
"""Check if docker compose (v2) or docker-compose (v1) is available."""
|
|
195
195
|
# Try docker compose (v2)
|
|
196
196
|
try:
|
|
197
197
|
result = subprocess.run(
|
|
@@ -199,10 +199,12 @@ def compose_available() -> bool:
|
|
|
199
199
|
)
|
|
200
200
|
if result.returncode == 0:
|
|
201
201
|
return True
|
|
202
|
-
except:
|
|
202
|
+
except Exception:
|
|
203
203
|
pass
|
|
204
204
|
# Try docker-compose (v1)
|
|
205
|
-
|
|
205
|
+
if has_cmd("docker-compose"):
|
|
206
|
+
return True
|
|
207
|
+
return False
|
|
206
208
|
|
|
207
209
|
|
|
208
210
|
# =============================================================================
|
|
@@ -271,7 +273,7 @@ def install_podman() -> bool:
|
|
|
271
273
|
elif has_cmd("yum"):
|
|
272
274
|
subprocess.run(["sudo", "yum", "install", "-y", "podman"], check=True)
|
|
273
275
|
elif has_cmd("pacman"):
|
|
274
|
-
subprocess.run(["sudo", "pacman", "-
|
|
276
|
+
subprocess.run(["sudo", "pacman", "-Syu", "--noconfirm", "podman"], check=True)
|
|
275
277
|
else:
|
|
276
278
|
say("Unknown package manager. Please install podman manually.")
|
|
277
279
|
return False
|
|
@@ -283,6 +285,69 @@ def install_podman() -> bool:
|
|
|
283
285
|
return False
|
|
284
286
|
|
|
285
287
|
|
|
288
|
+
def install_podman_compose() -> bool:
|
|
289
|
+
"""Install podman-compose standalone binary (provides required dependencies).
|
|
290
|
+
|
|
291
|
+
Installs even if 'podman compose' built-in is available, because the
|
|
292
|
+
standalone package ships dependencies that some environments need.
|
|
293
|
+
Returns True if successful or already installed.
|
|
294
|
+
"""
|
|
295
|
+
if has_cmd("podman-compose"):
|
|
296
|
+
say(f"podman-compose already installed: {shutil.which('podman-compose')}")
|
|
297
|
+
return True
|
|
298
|
+
|
|
299
|
+
say("podman-compose not found.")
|
|
300
|
+
if not ask_yes_no("Install podman-compose?"):
|
|
301
|
+
return False
|
|
302
|
+
|
|
303
|
+
plat = get_platform()
|
|
304
|
+
|
|
305
|
+
if plat == "macOS":
|
|
306
|
+
if not install_homebrew():
|
|
307
|
+
say("Cannot install podman-compose without Homebrew.")
|
|
308
|
+
return False
|
|
309
|
+
say("Installing podman-compose via Homebrew...")
|
|
310
|
+
try:
|
|
311
|
+
subprocess.run(["brew", "install", "podman-compose"], check=True)
|
|
312
|
+
return True
|
|
313
|
+
except Exception as e:
|
|
314
|
+
say(f"Failed: {e}")
|
|
315
|
+
return False
|
|
316
|
+
|
|
317
|
+
elif plat in ("Linux", "WSL"):
|
|
318
|
+
say("Installing podman-compose (may prompt for sudo password)...")
|
|
319
|
+
# Prefer pip3 as it always has the latest version
|
|
320
|
+
if has_cmd("pip3"):
|
|
321
|
+
try:
|
|
322
|
+
subprocess.run(["pip3", "install", "--user", "podman-compose"], check=True)
|
|
323
|
+
local_bin = str(Path.home() / ".local" / "bin")
|
|
324
|
+
if local_bin not in os.environ.get("PATH", ""):
|
|
325
|
+
os.environ["PATH"] = f"{local_bin}:{os.environ['PATH']}"
|
|
326
|
+
return True
|
|
327
|
+
except Exception as e:
|
|
328
|
+
say(f"pip3 install failed ({e}), trying package manager...")
|
|
329
|
+
try:
|
|
330
|
+
if has_cmd("apt-get"):
|
|
331
|
+
subprocess.run(["sudo", "apt-get", "update", "-y"], check=True)
|
|
332
|
+
subprocess.run(["sudo", "apt-get", "install", "-y", "podman-compose"], check=True)
|
|
333
|
+
elif has_cmd("dnf"):
|
|
334
|
+
subprocess.run(["sudo", "dnf", "install", "-y", "podman-compose"], check=True)
|
|
335
|
+
elif has_cmd("yum"):
|
|
336
|
+
subprocess.run(["sudo", "yum", "install", "-y", "podman-compose"], check=True)
|
|
337
|
+
elif has_cmd("pacman"):
|
|
338
|
+
subprocess.run(["sudo", "pacman", "-Syu", "--noconfirm", "podman-compose"], check=True)
|
|
339
|
+
else:
|
|
340
|
+
say("Unknown package manager. Please install podman-compose manually.")
|
|
341
|
+
return False
|
|
342
|
+
return True
|
|
343
|
+
except Exception as e:
|
|
344
|
+
say(f"Failed: {e}")
|
|
345
|
+
return False
|
|
346
|
+
|
|
347
|
+
say("Unsupported platform. Please install podman-compose manually.")
|
|
348
|
+
return False
|
|
349
|
+
|
|
350
|
+
|
|
286
351
|
def install_docker_linux() -> bool:
|
|
287
352
|
"""Install Docker Engine on Linux (not Docker Desktop). Returns True if successful."""
|
|
288
353
|
if has_cmd("docker"):
|
|
@@ -304,7 +369,7 @@ def install_docker_linux() -> bool:
|
|
|
304
369
|
try:
|
|
305
370
|
subprocess.run(["sudo", "usermod", "-aG", "docker", os.environ["USER"]], check=True)
|
|
306
371
|
say("Added user to docker group. You may need to log out and back in.")
|
|
307
|
-
except:
|
|
372
|
+
except Exception:
|
|
308
373
|
pass
|
|
309
374
|
return True
|
|
310
375
|
except Exception as e:
|
|
@@ -358,7 +423,7 @@ def setup_podman_machine() -> bool:
|
|
|
358
423
|
capture_output=True, text=True, timeout=10
|
|
359
424
|
)
|
|
360
425
|
machine_exists = bool(result.stdout.strip())
|
|
361
|
-
except:
|
|
426
|
+
except Exception:
|
|
362
427
|
machine_exists = False
|
|
363
428
|
|
|
364
429
|
if not machine_exists:
|
|
@@ -413,14 +478,14 @@ def check_podman_machine_memory() -> Tuple[bool, int]:
|
|
|
413
478
|
if result.returncode == 0 and result.stdout.strip():
|
|
414
479
|
current_mb = int(result.stdout.strip())
|
|
415
480
|
return current_mb >= MIN_PODMAN_MEMORY_MB, current_mb
|
|
416
|
-
except:
|
|
481
|
+
except Exception:
|
|
417
482
|
pass
|
|
418
483
|
return True, 0
|
|
419
484
|
|
|
420
485
|
|
|
421
486
|
def fix_podman_memory(version: str) -> bool:
|
|
422
487
|
"""Recreate Podman machine with more memory."""
|
|
423
|
-
say(
|
|
488
|
+
say("Podman machine has insufficient memory.")
|
|
424
489
|
if not ask_yes_no(f"Recreate machine with {MIN_PODMAN_MEMORY_MB}MB? (WARNING: deletes containers/images)"):
|
|
425
490
|
return False
|
|
426
491
|
|
|
@@ -491,7 +556,7 @@ def check_storage_corruption(runtime: str) -> Tuple[bool, Optional[str]]:
|
|
|
491
556
|
for pattern in corruption_patterns:
|
|
492
557
|
if re.search(pattern, stderr, re.IGNORECASE):
|
|
493
558
|
return True, stderr
|
|
494
|
-
except:
|
|
559
|
+
except Exception:
|
|
495
560
|
pass
|
|
496
561
|
return False, None
|
|
497
562
|
|
|
@@ -641,7 +706,7 @@ def run_startup_checks() -> bool:
|
|
|
641
706
|
match = re.search(r'(\d+\.\d+\.\d+)', result.stdout)
|
|
642
707
|
if match:
|
|
643
708
|
runtime_version = match.group(1)
|
|
644
|
-
except:
|
|
709
|
+
except Exception:
|
|
645
710
|
pass
|
|
646
711
|
|
|
647
712
|
say(f"Using {runtime}" + (f" {runtime_version}" if runtime_version else ""))
|
|
@@ -672,14 +737,16 @@ def run_startup_checks() -> bool:
|
|
|
672
737
|
# User declined fix, but continue anyway
|
|
673
738
|
pass
|
|
674
739
|
|
|
675
|
-
# 6. Check compose
|
|
676
|
-
if
|
|
740
|
+
# 6. Check / install compose
|
|
741
|
+
if runtime == "podman":
|
|
742
|
+
# Always ensure the standalone podman-compose binary is present —
|
|
743
|
+
# it installs required dependencies even when the built-in subcommand exists.
|
|
744
|
+
if not install_podman_compose() and not compose_available():
|
|
745
|
+
say("Warning: No compose tool found. OpenRAG will fail to start.")
|
|
746
|
+
elif not compose_available():
|
|
677
747
|
say("Docker Compose not found.")
|
|
678
748
|
say("OpenRAG requires docker-compose or 'docker compose'.")
|
|
679
|
-
|
|
680
|
-
say("Podman typically includes compose. Try: podman compose version")
|
|
681
|
-
else:
|
|
682
|
-
say("Install docker-compose-plugin via your package manager.")
|
|
749
|
+
say("Install docker-compose-plugin via your package manager.")
|
|
683
750
|
|
|
684
751
|
print("-" * 40)
|
|
685
752
|
say("Prerequisites check complete.")
|
|
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
|
|
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.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/ollama_embedding.json
RENAMED
|
File without changes
|
|
File without changes
|
{openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/ollama_llm_text.json
RENAMED
|
File without changes
|
{openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/flows/components/watsonx_embedding.json
RENAMED
|
File without changes
|
|
File without changes
|
{openrag-0.4.1.dev2 → openrag-0.4.1.dev4}/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.dev2 → openrag-0.4.1.dev4}/src/tui/_assets/openrag-documents/ibm_anthropic.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
|
|
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
|