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.
Files changed (165) hide show
  1. {openrag-0.4.1.dev19/src/openrag.egg-info → openrag-0.4.1.dev20}/PKG-INFO +1 -1
  2. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/pyproject.toml +1 -1
  3. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20/src/openrag.egg-info}/PKG-INFO +1 -1
  4. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/config_fields.py +0 -6
  5. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/main.py +3 -6
  6. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/managers/container_manager.py +27 -13
  7. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/managers/env_manager.py +2 -7
  8. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/config.py +0 -78
  9. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/monitor.py +0 -17
  10. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/LICENSE +0 -0
  11. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/MANIFEST.in +0 -0
  12. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/README.md +0 -0
  13. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/setup.cfg +0 -0
  14. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/agent.py +0 -0
  15. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/__init__.py +0 -0
  16. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/auth.py +0 -0
  17. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/chat.py +0 -0
  18. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/connector_router.py +0 -0
  19. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/connectors.py +0 -0
  20. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/docling.py +0 -0
  21. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/documents.py +0 -0
  22. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/flows.py +0 -0
  23. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/keys.py +0 -0
  24. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/knowledge_filter.py +0 -0
  25. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/langflow_files.py +0 -0
  26. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/models.py +0 -0
  27. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/nudges.py +0 -0
  28. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/oidc.py +0 -0
  29. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/provider_health.py +0 -0
  30. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/provider_validation.py +0 -0
  31. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/router.py +0 -0
  32. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/search.py +0 -0
  33. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/settings.py +0 -0
  34. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/tasks.py +0 -0
  35. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/upload.py +0 -0
  36. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/__init__.py +0 -0
  37. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/chat.py +0 -0
  38. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/documents.py +0 -0
  39. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/knowledge_filters.py +0 -0
  40. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/models.py +0 -0
  41. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/search.py +0 -0
  42. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/api/v1/settings.py +0 -0
  43. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/auth_context.py +0 -0
  44. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/__init__.py +0 -0
  45. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/config_manager.py +0 -0
  46. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/embedding_constants.py +0 -0
  47. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/model_constants.py +0 -0
  48. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/config/settings.py +0 -0
  49. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/__init__.py +0 -0
  50. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/__init__.py +0 -0
  51. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/api.py +0 -0
  52. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/auth.py +0 -0
  53. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/connector.py +0 -0
  54. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/models.py +0 -0
  55. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/aws_s3/support.py +0 -0
  56. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/base.py +0 -0
  57. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/connection_manager.py +0 -0
  58. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/google_drive/__init__.py +0 -0
  59. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/google_drive/connector.py +0 -0
  60. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/google_drive/oauth.py +0 -0
  61. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/__init__.py +0 -0
  62. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/api.py +0 -0
  63. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/auth.py +0 -0
  64. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/connector.py +0 -0
  65. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/models.py +0 -0
  66. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/ibm_cos/support.py +0 -0
  67. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/langflow_connector_service.py +0 -0
  68. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/onedrive/__init__.py +0 -0
  69. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/onedrive/connector.py +0 -0
  70. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/onedrive/oauth.py +0 -0
  71. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/service.py +0 -0
  72. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/sharepoint/__init__.py +0 -0
  73. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/sharepoint/connector.py +0 -0
  74. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/sharepoint/oauth.py +0 -0
  75. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/connectors/sharepoint/utils.py +0 -0
  76. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/dependencies.py +0 -0
  77. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/main.py +0 -0
  78. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/models/__init__.py +0 -0
  79. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/models/processors.py +0 -0
  80. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/models/tasks.py +0 -0
  81. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/models/url.py +0 -0
  82. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/SOURCES.txt +0 -0
  83. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/dependency_links.txt +0 -0
  84. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/entry_points.txt +0 -0
  85. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/requires.txt +0 -0
  86. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/openrag.egg-info/top_level.txt +0 -0
  87. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/__init__.py +0 -0
  88. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/api_key_service.py +0 -0
  89. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/auth_service.py +0 -0
  90. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/chat_service.py +0 -0
  91. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/conversation_persistence_service.py +0 -0
  92. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/document_service.py +0 -0
  93. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/flows_service.py +0 -0
  94. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/knowledge_filter_service.py +0 -0
  95. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/langflow_file_service.py +0 -0
  96. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/langflow_history_service.py +0 -0
  97. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/langflow_mcp_service.py +0 -0
  98. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/models_service.py +0 -0
  99. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/monitor_service.py +0 -0
  100. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/search_service.py +0 -0
  101. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/session_ownership_service.py +0 -0
  102. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/services/task_service.py +0 -0
  103. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/session_manager.py +0 -0
  104. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/__init__.py +0 -0
  105. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/docker-compose.gpu.yml +0 -0
  106. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/docker-compose.yml +0 -0
  107. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_embedding.json +0 -0
  108. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_llm.json +0 -0
  109. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/ollama_llm_text.json +0 -0
  110. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_embedding.json +0 -0
  111. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_llm.json +0 -0
  112. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/components/watsonx_llm_text.json +0 -0
  113. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/ingestion_flow.json +0 -0
  114. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/openrag_agent.json +0 -0
  115. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/openrag_nudges.json +0 -0
  116. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/flows/openrag_url_mcp.json +0 -0
  117. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/docling.pdf +0 -0
  118. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/ibm_anthropic.pdf +0 -0
  119. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/openrag-documentation.pdf +0 -0
  120. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/_assets/openrag-documents/warmup_ocr.pdf +0 -0
  121. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/cli.py +0 -0
  122. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/managers/__init__.py +0 -0
  123. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/managers/docling_manager.py +0 -0
  124. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/__init__.py +0 -0
  125. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/diagnostics.py +0 -0
  126. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/logs.py +0 -0
  127. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/screens/welcome.py +0 -0
  128. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/__init__.py +0 -0
  129. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/clipboard.py +0 -0
  130. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/platform.py +0 -0
  131. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/startup_checks.py +0 -0
  132. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/validation.py +0 -0
  133. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/utils/version_check.py +0 -0
  134. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/__init__.py +0 -0
  135. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/command_modal.py +0 -0
  136. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/diagnostics_notification.py +0 -0
  137. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/error_notification.py +0 -0
  138. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/factory_reset_warning_modal.py +0 -0
  139. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/flow_backup_warning_modal.py +0 -0
  140. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/prune_options_modal.py +0 -0
  141. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/upgrade_instructions_modal.py +0 -0
  142. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/version_mismatch_warning_modal.py +0 -0
  143. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/tui/widgets/waves.py +0 -0
  144. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/__init__.py +0 -0
  145. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/acl_utils.py +0 -0
  146. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/container_utils.py +0 -0
  147. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/docling_client.py +0 -0
  148. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/document_processing.py +0 -0
  149. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/embedding_fields.py +0 -0
  150. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/embeddings.py +0 -0
  151. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/env_utils.py +0 -0
  152. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/file_utils.py +0 -0
  153. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/gpu_detection.py +0 -0
  154. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/hash_utils.py +0 -0
  155. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/langflow_headers.py +0 -0
  156. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/langflow_utils.py +0 -0
  157. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/logging_config.py +0 -0
  158. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/opensearch_queries.py +0 -0
  159. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/opensearch_utils.py +0 -0
  160. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/paths.py +0 -0
  161. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/telemetry/__init__.py +0 -0
  162. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/telemetry/category.py +0 -0
  163. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/telemetry/client.py +0 -0
  164. {openrag-0.4.1.dev19 → openrag-0.4.1.dev20}/src/utils/telemetry/message_id.py +0 -0
  165. {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.dev19
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.dev19"
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.dev19
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, opensearch-data, langflow-data
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
- (cwd / "opensearch-data", target_base / "data" / "opensearch-data", "OpenSearch data"),
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
- # Get opensearch data path from env config
1282
- from .env_manager import EnvManager
1283
- env_manager = EnvManager()
1284
- env_manager.load_existing_env()
1285
- opensearch_data_path = Path(env_manager.config.opensearch_data_path.replace("$HOME", str(Path.home()))).expanduser().absolute()
1286
-
1287
- if not opensearch_data_path.exists():
1288
- yield True, "OpenSearch data directory does not exist, skipping"
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
- # Use alpine with root to clear container-owned files
1292
- success, msg = await self.clear_directory_with_container(opensearch_data_path)
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 success:
1295
- yield True, "OpenSearch data cleared successfully"
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: {msg}"
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 OPENSEARCH_DATA_PATH or at the end
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 "OPENSEARCH_DATA_PATH" in line:
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