openrag 0.5.0.dev34__tar.gz → 0.5.0.dev36__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.dev34/src/openrag.egg-info → openrag-0.5.0.dev36}/PKG-INFO +1 -1
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/pyproject.toml +1 -1
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/langflow_files.py +23 -20
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/langflow_connector_service.py +10 -2
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/models/processors.py +5 -8
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36/src/openrag.egg-info}/PKG-INFO +1 -1
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/file_utils.py +19 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/LICENSE +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/MANIFEST.in +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/README.md +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/setup.cfg +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/agent.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/auth.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/chat.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/connector_router.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/connectors.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/docling.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/documents.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/flows.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/keys.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/knowledge_filter.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/models.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/nudges.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/oidc.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/provider_health.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/provider_validation.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/router.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/search.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/settings.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/tasks.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/upload.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/v1/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/v1/chat.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/v1/documents.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/v1/knowledge_filters.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/v1/models.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/v1/search.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/api/v1/settings.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/auth/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/auth/ibm_auth.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/auth_context.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/bootstrap.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/config/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/config/config_manager.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/config/embedding_constants.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/config/model_constants.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/config/paths.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/config/settings.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/aws_s3/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/aws_s3/api.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/aws_s3/auth.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/aws_s3/connector.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/aws_s3/models.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/aws_s3/support.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/base.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/connection_manager.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/google_drive/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/google_drive/connector.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/google_drive/oauth.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/ibm_cos/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/ibm_cos/api.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/ibm_cos/auth.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/ibm_cos/connector.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/ibm_cos/models.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/ibm_cos/support.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/onedrive/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/onedrive/connector.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/onedrive/oauth.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/sharepoint/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/sharepoint/connector.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/sharepoint/oauth.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/connectors/sharepoint/utils.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/dependencies.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/main.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/mcp_http/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/mcp_http/server.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/models/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/models/tasks.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/models/url.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/openrag.egg-info/SOURCES.txt +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/openrag.egg-info/dependency_links.txt +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/openrag.egg-info/entry_points.txt +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/openrag.egg-info/requires.txt +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/openrag.egg-info/top_level.txt +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/api_key_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/auth_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/chat_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/conversation_persistence_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/document_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/flows_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/knowledge_filter_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/langflow_file_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/langflow_history_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/langflow_mcp_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/models_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/monitor_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/search_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/session_ownership_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/services/task_service.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/session_manager.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/docker-compose.gpu.yml +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/docker-compose.yml +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/ollama_embedding.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/ollama_llm.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/ollama_llm_text.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/watsonx_embedding.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/watsonx_llm.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/watsonx_llm_text.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/ingestion_flow.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/openrag_agent.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/openrag_nudges.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/openrag_url_mcp.json +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/openrag-documents/docling.pdf +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/openrag-documents/ibm_anthropic.pdf +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/openrag-documents/warmup_ocr.pdf +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/cli.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/config_fields.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/main.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/managers/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/managers/container_manager.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/managers/docling_manager.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/managers/env_manager.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/screens/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/screens/config.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/screens/diagnostics.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/screens/logs.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/screens/monitor.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/screens/welcome.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/utils/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/utils/clipboard.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/utils/platform.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/utils/startup_checks.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/utils/validation.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/utils/version_check.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/command_modal.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/diagnostics_notification.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/error_notification.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/factory_reset_warning_modal.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/flow_backup_warning_modal.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/prune_options_modal.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/upgrade_instructions_modal.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/version_mismatch_warning_modal.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/widgets/waves.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/acl_utils.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/container_utils.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/docling_client.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/document_processing.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/embedding_fields.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/embeddings.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/encryption.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/env_utils.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/gpu_detection.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/hash_utils.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/langflow_headers.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/langflow_utils.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/logging_config.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/opensearch_queries.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/opensearch_utils.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/paths.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/run_mode_utils.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/telemetry/__init__.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/telemetry/category.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/telemetry/client.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/utils/telemetry/message_id.py +0 -0
- {openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/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.dev36
|
|
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.5.0.
|
|
7
|
+
version = "0.5.0.dev36"
|
|
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,43 +1,43 @@
|
|
|
1
1
|
import json
|
|
2
2
|
import os
|
|
3
3
|
import tempfile
|
|
4
|
-
from typing import List, Optional
|
|
5
4
|
|
|
6
5
|
from fastapi import Depends, File, Form, UploadFile
|
|
7
|
-
from pydantic import BaseModel
|
|
8
6
|
from fastapi.responses import JSONResponse
|
|
7
|
+
from pydantic import BaseModel
|
|
9
8
|
|
|
10
9
|
from dependencies import (
|
|
10
|
+
get_current_user,
|
|
11
11
|
get_langflow_file_service,
|
|
12
|
+
get_optional_user,
|
|
12
13
|
get_session_manager,
|
|
13
14
|
get_task_service,
|
|
14
|
-
get_current_user,
|
|
15
|
-
get_optional_user,
|
|
16
15
|
)
|
|
17
16
|
from session_manager import User
|
|
17
|
+
from utils.file_utils import langflow_safe_filename_and_mimetype
|
|
18
18
|
from utils.logging_config import get_logger
|
|
19
19
|
|
|
20
20
|
logger = get_logger(__name__)
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class RunIngestionBody(BaseModel):
|
|
24
|
-
file_paths:
|
|
25
|
-
file_ids:
|
|
26
|
-
file_metadata:
|
|
27
|
-
session_id:
|
|
28
|
-
tweaks:
|
|
29
|
-
settings:
|
|
24
|
+
file_paths: list[str] = []
|
|
25
|
+
file_ids: list[str] | None = None
|
|
26
|
+
file_metadata: list[dict] | None = None
|
|
27
|
+
session_id: str | None = None
|
|
28
|
+
tweaks: dict | None = None
|
|
29
|
+
settings: dict | None = None
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
class DeleteFilesBody(BaseModel):
|
|
33
|
-
file_ids:
|
|
33
|
+
file_ids: list[str]
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
async def upload_user_file(
|
|
37
37
|
file: UploadFile = File(...),
|
|
38
38
|
langflow_file_service=Depends(get_langflow_file_service),
|
|
39
39
|
session_manager=Depends(get_session_manager),
|
|
40
|
-
user:
|
|
40
|
+
user: User | None = Depends(get_optional_user),
|
|
41
41
|
):
|
|
42
42
|
"""Upload a file to Langflow's Files API"""
|
|
43
43
|
try:
|
|
@@ -45,11 +45,11 @@ async def upload_user_file(
|
|
|
45
45
|
logger.debug("Processing file", filename=file.filename, size=file.size)
|
|
46
46
|
|
|
47
47
|
content = await file.read()
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
file.content_type or "application/octet-stream",
|
|
48
|
+
# Langflow's docling chokes on text/plain — rename .txt -> .md.
|
|
49
|
+
upload_filename, upload_mimetype = langflow_safe_filename_and_mimetype(
|
|
50
|
+
file.filename, file.content_type
|
|
52
51
|
)
|
|
52
|
+
file_tuple = (upload_filename, content, upload_mimetype)
|
|
53
53
|
|
|
54
54
|
jwt_token = user.jwt_token if user else session_manager.get_effective_jwt_token(None, None)
|
|
55
55
|
|
|
@@ -60,6 +60,7 @@ async def upload_user_file(
|
|
|
60
60
|
except Exception as e:
|
|
61
61
|
logger.error("upload_user_file endpoint failed", error_type=type(e).__name__, error=str(e))
|
|
62
62
|
import traceback
|
|
63
|
+
|
|
63
64
|
logger.error("Full traceback", traceback=traceback.format_exc())
|
|
64
65
|
return JSONResponse({"error": str(e)}, status_code=500)
|
|
65
66
|
|
|
@@ -111,6 +112,7 @@ async def run_ingestion(
|
|
|
111
112
|
|
|
112
113
|
if jwt_token:
|
|
113
114
|
from auth_context import set_auth_context
|
|
115
|
+
|
|
114
116
|
set_auth_context(user.user_id, jwt_token)
|
|
115
117
|
|
|
116
118
|
try:
|
|
@@ -132,9 +134,9 @@ async def run_ingestion(
|
|
|
132
134
|
|
|
133
135
|
async def upload_and_ingest_user_file(
|
|
134
136
|
file: UploadFile = File(...),
|
|
135
|
-
session_id:
|
|
136
|
-
settings_json:
|
|
137
|
-
tweaks_json:
|
|
137
|
+
session_id: str | None = Form(None),
|
|
138
|
+
settings_json: str | None = Form(None, alias="settings"),
|
|
139
|
+
tweaks_json: str | None = Form(None, alias="tweaks"),
|
|
138
140
|
delete_after_ingest: str = Form("true"),
|
|
139
141
|
langflow_file_service=Depends(get_langflow_file_service),
|
|
140
142
|
session_manager=Depends(get_session_manager),
|
|
@@ -193,6 +195,7 @@ async def upload_and_ingest_user_file(
|
|
|
193
195
|
)
|
|
194
196
|
except Exception:
|
|
195
197
|
from utils.file_utils import safe_unlink
|
|
198
|
+
|
|
196
199
|
safe_unlink(temp_path)
|
|
197
200
|
raise
|
|
198
201
|
|
|
@@ -221,4 +224,4 @@ async def delete_user_files(
|
|
|
221
224
|
"errors": errors,
|
|
222
225
|
},
|
|
223
226
|
status_code=status,
|
|
224
|
-
)
|
|
227
|
+
)
|
|
@@ -3,11 +3,15 @@ from typing import Any, Dict, List, Optional
|
|
|
3
3
|
# Create custom processor for connector files using Langflow
|
|
4
4
|
from models.processors import LangflowConnectorFileProcessor
|
|
5
5
|
from services.langflow_file_service import LangflowFileService
|
|
6
|
+
from utils.file_utils import (
|
|
7
|
+
clean_connector_filename,
|
|
8
|
+
get_file_extension,
|
|
9
|
+
langflow_safe_filename_and_mimetype,
|
|
10
|
+
)
|
|
6
11
|
from utils.logging_config import get_logger
|
|
7
12
|
|
|
8
13
|
from .base import BaseConnector, ConnectorDocument
|
|
9
14
|
from .connection_manager import ConnectionManager
|
|
10
|
-
from utils.file_utils import get_file_extension, clean_connector_filename
|
|
11
15
|
|
|
12
16
|
logger = get_logger(__name__)
|
|
13
17
|
|
|
@@ -73,11 +77,15 @@ class LangflowConnectorService:
|
|
|
73
77
|
|
|
74
78
|
# Clean filename and ensure we don't add a double extension
|
|
75
79
|
processed_filename = clean_connector_filename(document.filename, document.mimetype)
|
|
80
|
+
# Langflow's docling chokes on text/plain — rename .txt -> .md.
|
|
81
|
+
processed_filename, processed_mimetype = langflow_safe_filename_and_mimetype(
|
|
82
|
+
processed_filename, document.mimetype
|
|
83
|
+
)
|
|
76
84
|
|
|
77
85
|
file_tuple = (
|
|
78
86
|
processed_filename,
|
|
79
87
|
content,
|
|
80
|
-
|
|
88
|
+
processed_mimetype,
|
|
81
89
|
)
|
|
82
90
|
|
|
83
91
|
# Step 0: Delete existing chunks for this file before re-ingesting
|
|
@@ -5,6 +5,7 @@ from utils.file_utils import (
|
|
|
5
5
|
get_file_extension,
|
|
6
6
|
clean_connector_filename,
|
|
7
7
|
get_filename_aliases,
|
|
8
|
+
langflow_safe_filename_and_mimetype,
|
|
8
9
|
)
|
|
9
10
|
|
|
10
11
|
logger = get_logger(__name__)
|
|
@@ -868,14 +869,10 @@ class LangflowFileProcessor(TaskProcessor):
|
|
|
868
869
|
if not content_type:
|
|
869
870
|
content_type = 'application/octet-stream'
|
|
870
871
|
|
|
871
|
-
#
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
langflow_filename = original_filename[:-4] + '.md'
|
|
876
|
-
content_type = 'text/markdown'
|
|
877
|
-
logger.debug(f"Renamed {original_filename} to {langflow_filename} for Langflow")
|
|
878
|
-
|
|
872
|
+
# Langflow's docling chokes on text/plain — rename .txt -> .md.
|
|
873
|
+
langflow_filename, content_type = langflow_safe_filename_and_mimetype(
|
|
874
|
+
original_filename, content_type
|
|
875
|
+
)
|
|
879
876
|
file_tuple = (langflow_filename, content, content_type)
|
|
880
877
|
|
|
881
878
|
# Get JWT token using same logic as DocumentFileProcessor
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openrag
|
|
3
|
-
Version: 0.5.0.
|
|
3
|
+
Version: 0.5.0.dev36
|
|
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
|
|
@@ -101,6 +101,25 @@ def clean_connector_filename(filename: str, mimetype: str) -> str:
|
|
|
101
101
|
return clean_name
|
|
102
102
|
|
|
103
103
|
|
|
104
|
+
def langflow_safe_filename_and_mimetype(filename: str, mimetype: str | None) -> tuple[str, str]:
|
|
105
|
+
"""Apply the .txt -> .md workaround for Langflow ingestion.
|
|
106
|
+
|
|
107
|
+
Langflow's docling component fails on text/plain (see commit f6b9fe0).
|
|
108
|
+
The workaround is to rename .txt files to .md with text/markdown before
|
|
109
|
+
handing the file to Langflow. Centralised here so every Langflow-upload
|
|
110
|
+
site applies it identically — local user uploads, connector-driven
|
|
111
|
+
ingestion, and the direct upload route.
|
|
112
|
+
|
|
113
|
+
Returns the (possibly rewritten) (filename, mimetype) pair. Pass-through
|
|
114
|
+
for all other extensions; falls back to application/octet-stream when
|
|
115
|
+
mimetype is missing.
|
|
116
|
+
"""
|
|
117
|
+
safe_mimetype = mimetype or "application/octet-stream"
|
|
118
|
+
if filename and filename.lower().endswith(".txt"):
|
|
119
|
+
return filename[:-4] + ".md", "text/markdown"
|
|
120
|
+
return filename, safe_mimetype
|
|
121
|
+
|
|
122
|
+
|
|
104
123
|
def get_filename_aliases(filename: str) -> list[str]:
|
|
105
124
|
"""Return equivalent filename variants used by ingestion/indexing.
|
|
106
125
|
|
|
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.5.0.dev34 → openrag-0.5.0.dev36}/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.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/ollama_embedding.json
RENAMED
|
File without changes
|
{openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/ollama_llm.json
RENAMED
|
File without changes
|
{openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/ollama_llm_text.json
RENAMED
|
File without changes
|
{openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/watsonx_embedding.json
RENAMED
|
File without changes
|
{openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/flows/components/watsonx_llm.json
RENAMED
|
File without changes
|
{openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/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.5.0.dev34 → openrag-0.5.0.dev36}/src/tui/_assets/openrag-documents/ibm_anthropic.pdf
RENAMED
|
File without changes
|
{openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openrag-0.5.0.dev34 → openrag-0.5.0.dev36}/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
|
|
File without changes
|