OpenRAG 0.5.0__tar.gz → 0.5.0.dev1__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.5.0/src/openrag.egg-info → openrag-0.5.0.dev1}/PKG-INFO +4 -3
- {openrag-0.5.0 → openrag-0.5.0.dev1}/pyproject.toml +4 -3
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/agent.py +28 -26
- openrag-0.5.0.dev1/src/api/connector_router.py +82 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/connectors.py +114 -809
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/documents.py +18 -74
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/langflow_files.py +20 -23
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/settings.py +0 -4
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/config/settings.py +0 -1
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/google_drive/connector.py +154 -145
- openrag-0.5.0.dev1/src/connectors/langflow_connector_service.py +416 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/onedrive/connector.py +150 -234
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/onedrive/oauth.py +47 -88
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/service.py +86 -186
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/sharepoint/connector.py +232 -326
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/dependencies.py +14 -22
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/main.py +14 -11
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/models/processors.py +297 -398
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/models/tasks.py +1 -10
- {openrag-0.5.0 → openrag-0.5.0.dev1/src/openrag.egg-info}/PKG-INFO +4 -3
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/openrag.egg-info/SOURCES.txt +2 -1
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/openrag.egg-info/requires.txt +3 -2
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/auth_service.py +3 -1
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/langflow_file_service.py +9 -17
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/task_service.py +7 -17
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/ingestion_flow.json +16 -16
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/managers/docling_manager.py +45 -42
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/screens/monitor.py +93 -85
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/file_utils.py +1 -20
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/opensearch_utils.py +0 -15
- openrag-0.5.0/src/utils/opensearch_delete.py +0 -105
- {openrag-0.5.0 → openrag-0.5.0.dev1}/LICENSE +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/MANIFEST.in +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/README.md +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/setup.cfg +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/auth.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/chat.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/docling.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/flows.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/keys.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/knowledge_filter.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/models.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/nudges.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/oidc.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/provider_health.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/provider_validation.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/router.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/search.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/tasks.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/upload.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/v1/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/v1/chat.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/v1/documents.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/v1/knowledge_filters.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/v1/models.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/v1/search.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/api/v1/settings.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/auth/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/auth/ibm_auth.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/auth_context.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/bootstrap.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/config/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/config/config_manager.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/config/embedding_constants.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/config/model_constants.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/config/paths.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/aws_s3/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/aws_s3/api.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/aws_s3/auth.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/aws_s3/connector.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/aws_s3/models.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/aws_s3/support.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/base.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/connection_manager.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/google_drive/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/google_drive/oauth.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/ibm_cos/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/ibm_cos/api.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/ibm_cos/auth.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/ibm_cos/connector.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/ibm_cos/models.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/ibm_cos/support.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/onedrive/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/sharepoint/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/sharepoint/oauth.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/connectors/sharepoint/utils.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/mcp_http/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/mcp_http/server.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/models/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/models/url.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/openrag.egg-info/dependency_links.txt +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/openrag.egg-info/entry_points.txt +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/openrag.egg-info/top_level.txt +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/api_key_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/chat_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/conversation_persistence_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/document_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/flows_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/knowledge_filter_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/langflow_history_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/langflow_mcp_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/models_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/monitor_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/search_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/services/session_ownership_service.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/session_manager.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/docker-compose.gpu.yml +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/docker-compose.yml +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/components/ollama_embedding.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/components/ollama_llm.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/components/ollama_llm_text.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/components/watsonx_embedding.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/components/watsonx_llm.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/components/watsonx_llm_text.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/openrag_agent.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/openrag_nudges.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/flows/openrag_url_mcp.json +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/openrag-documents/docling.pdf +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/openrag-documents/ibm_anthropic.pdf +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/_assets/openrag-documents/warmup_ocr.pdf +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/cli.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/config_fields.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/main.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/managers/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/managers/container_manager.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/managers/env_manager.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/screens/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/screens/config.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/screens/diagnostics.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/screens/logs.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/screens/welcome.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/utils/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/utils/clipboard.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/utils/platform.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/utils/startup_checks.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/utils/validation.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/utils/version_check.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/command_modal.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/diagnostics_notification.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/error_notification.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/factory_reset_warning_modal.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/flow_backup_warning_modal.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/prune_options_modal.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/upgrade_instructions_modal.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/version_mismatch_warning_modal.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/tui/widgets/waves.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/acl_utils.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/container_utils.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/docling_client.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/document_processing.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/embedding_fields.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/embeddings.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/encryption.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/env_utils.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/gpu_detection.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/hash_utils.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/langflow_headers.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/langflow_utils.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/logging_config.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/opensearch_queries.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/paths.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/run_mode_utils.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/telemetry/__init__.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/telemetry/category.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/telemetry/client.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/telemetry/message_id.py +0 -0
- {openrag-0.5.0 → openrag-0.5.0.dev1}/src/utils/version_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrag
|
|
3
|
-
Version: 0.5.0
|
|
3
|
+
Version: 0.5.0.dev1
|
|
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
|
|
@@ -39,11 +39,12 @@ Requires-Dist: textual-fspicker>=0.6.0
|
|
|
39
39
|
Requires-Dist: structlog>=25.4.0
|
|
40
40
|
Requires-Dist: zxcvbn>=4.5.0
|
|
41
41
|
Requires-Dist: prometheus-fastapi-instrumentator>=7.1.0
|
|
42
|
-
Requires-Dist: litellm==1.83.
|
|
42
|
+
Requires-Dist: litellm==1.83.3
|
|
43
43
|
Requires-Dist: pyyaml>=6.0
|
|
44
44
|
Requires-Dist: tiktoken>=0.7.0
|
|
45
|
+
Requires-Dist: prometheus-fastapi-instrumentator>=7.1.0
|
|
45
46
|
Requires-Dist: fastmcp>=3.2.3
|
|
46
|
-
Requires-Dist: openai
|
|
47
|
+
Requires-Dist: openai>=2.30.0
|
|
47
48
|
Requires-Dist: tenacity>=9.1.4
|
|
48
49
|
Requires-Dist: pygments>=2.20.0
|
|
49
50
|
Requires-Dist: pyasn1>=0.6.3
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "openrag"
|
|
7
|
-
version = "0.5.0"
|
|
7
|
+
version = "0.5.0.dev1"
|
|
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"
|
|
@@ -45,11 +45,12 @@ dependencies = [
|
|
|
45
45
|
"structlog>=25.4.0",
|
|
46
46
|
"zxcvbn>=4.5.0",
|
|
47
47
|
"prometheus-fastapi-instrumentator>=7.1.0",
|
|
48
|
-
"litellm==1.83.
|
|
48
|
+
"litellm==1.83.3",
|
|
49
49
|
"pyyaml>=6.0",
|
|
50
50
|
"tiktoken>=0.7.0",
|
|
51
|
+
"prometheus-fastapi-instrumentator>=7.1.0",
|
|
51
52
|
"fastmcp>=3.2.3",
|
|
52
|
-
"openai
|
|
53
|
+
"openai>=2.30.0",
|
|
53
54
|
"tenacity>=9.1.4",
|
|
54
55
|
"pygments>=2.20.0",
|
|
55
56
|
"pyasn1>=0.6.3",
|
|
@@ -515,24 +515,25 @@ async def async_chat_stream(
|
|
|
515
515
|
yield chunk
|
|
516
516
|
|
|
517
517
|
# Add the complete assistant response to message history with response_id and timestamp
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
518
|
+
if full_response:
|
|
519
|
+
assistant_message = {
|
|
520
|
+
"role": "assistant",
|
|
521
|
+
"content": full_response,
|
|
522
|
+
"response_id": response_id,
|
|
523
|
+
"timestamp": datetime.now(),
|
|
524
|
+
}
|
|
525
|
+
# Store usage data if available (from response.completed event)
|
|
526
|
+
if usage_data:
|
|
527
|
+
assistant_message["response_data"] = {"usage": usage_data}
|
|
528
|
+
conversation_state["messages"].append(assistant_message)
|
|
528
529
|
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
530
|
+
# Store the conversation thread with its response_id
|
|
531
|
+
if response_id:
|
|
532
|
+
conversation_state["last_activity"] = datetime.now()
|
|
533
|
+
await store_conversation_thread(user_id, response_id, conversation_state)
|
|
534
|
+
logger.debug(
|
|
535
|
+
f"Stored conversation thread for user {user_id} with response_id: {response_id}"
|
|
536
|
+
)
|
|
536
537
|
|
|
537
538
|
|
|
538
539
|
# Async langflow function with conversation storage (non-streaming)
|
|
@@ -788,15 +789,16 @@ async def async_langflow_chat_stream(
|
|
|
788
789
|
yield chunk
|
|
789
790
|
|
|
790
791
|
# Add the complete assistant response to message history with response_id, timestamp, and function call data
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
792
|
+
if full_response:
|
|
793
|
+
assistant_message = {
|
|
794
|
+
"role": "assistant",
|
|
795
|
+
"content": full_response,
|
|
796
|
+
"response_id": response_id,
|
|
797
|
+
"timestamp": datetime.now(),
|
|
798
|
+
"chunks": collected_chunks, # Store complete chunk data for function calls
|
|
799
|
+
"error": error_occurred, # Mark if this was an error response
|
|
800
|
+
}
|
|
801
|
+
# Store usage data if available (from response.completed event)
|
|
800
802
|
if usage_data:
|
|
801
803
|
assistant_message["response_data"] = {"usage": usage_data}
|
|
802
804
|
conversation_state["messages"].append(assistant_message)
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""Connector router that automatically routes based on configuration settings."""
|
|
2
|
+
|
|
3
|
+
from config.settings import DISABLE_INGEST_WITH_LANGFLOW
|
|
4
|
+
from utils.logging_config import get_logger
|
|
5
|
+
|
|
6
|
+
logger = get_logger(__name__)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class ConnectorRouter:
|
|
10
|
+
"""
|
|
11
|
+
Router that automatically chooses between LangflowConnectorService and ConnectorService
|
|
12
|
+
based on the DISABLE_INGEST_WITH_LANGFLOW configuration.
|
|
13
|
+
|
|
14
|
+
- If DISABLE_INGEST_WITH_LANGFLOW is False (default): uses LangflowConnectorService
|
|
15
|
+
- If DISABLE_INGEST_WITH_LANGFLOW is True: uses traditional ConnectorService
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
def __init__(self, langflow_connector_service, openrag_connector_service):
|
|
19
|
+
self.langflow_connector_service = langflow_connector_service
|
|
20
|
+
self.openrag_connector_service = openrag_connector_service
|
|
21
|
+
logger.debug(
|
|
22
|
+
"ConnectorRouter initialized",
|
|
23
|
+
disable_langflow_ingest=DISABLE_INGEST_WITH_LANGFLOW,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
def get_active_service(self):
|
|
27
|
+
"""Get the currently active connector service based on configuration."""
|
|
28
|
+
if DISABLE_INGEST_WITH_LANGFLOW:
|
|
29
|
+
logger.debug("Using traditional OpenRAG connector service")
|
|
30
|
+
return self.openrag_connector_service
|
|
31
|
+
else:
|
|
32
|
+
logger.debug("Using Langflow connector service")
|
|
33
|
+
return self.langflow_connector_service
|
|
34
|
+
|
|
35
|
+
# Proxy all connector service methods to the active service
|
|
36
|
+
|
|
37
|
+
async def initialize(self):
|
|
38
|
+
"""Initialize the active connector service."""
|
|
39
|
+
# Initialize OpenSearch index if using traditional OpenRAG connector service
|
|
40
|
+
|
|
41
|
+
return await self.get_active_service().initialize()
|
|
42
|
+
|
|
43
|
+
@property
|
|
44
|
+
def connection_manager(self):
|
|
45
|
+
"""Get the connection manager from the active service."""
|
|
46
|
+
return self.get_active_service().connection_manager
|
|
47
|
+
|
|
48
|
+
async def get_connector(self, connection_id: str):
|
|
49
|
+
"""Get a connector instance from the active service."""
|
|
50
|
+
return await self.get_active_service().get_connector(connection_id)
|
|
51
|
+
|
|
52
|
+
async def sync_specific_files(
|
|
53
|
+
self,
|
|
54
|
+
connection_id: str,
|
|
55
|
+
user_id: str,
|
|
56
|
+
file_list: list,
|
|
57
|
+
jwt_token: str = None,
|
|
58
|
+
file_infos: list = None,
|
|
59
|
+
ingest_settings: dict = None,
|
|
60
|
+
):
|
|
61
|
+
"""Sync specific files using the active service."""
|
|
62
|
+
return await self.get_active_service().sync_specific_files(
|
|
63
|
+
connection_id,
|
|
64
|
+
user_id,
|
|
65
|
+
file_list,
|
|
66
|
+
jwt_token,
|
|
67
|
+
file_infos=file_infos,
|
|
68
|
+
ingest_settings=ingest_settings,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
def __getattr__(self, name):
|
|
72
|
+
"""
|
|
73
|
+
Proxy any other method calls to the active service.
|
|
74
|
+
This ensures compatibility with any methods we might have missed.
|
|
75
|
+
"""
|
|
76
|
+
active_service = self.get_active_service()
|
|
77
|
+
if hasattr(active_service, name):
|
|
78
|
+
return getattr(active_service, name)
|
|
79
|
+
else:
|
|
80
|
+
raise AttributeError(
|
|
81
|
+
f"'{type(active_service).__name__}' object has no attribute '{name}'"
|
|
82
|
+
)
|