fix: hide Knowledge Ingestion component and rename Retrieval to Knowledge Base (#12054)

* fix: hide Knowledge Ingestion component and rename Retrieval to Knowledge Base

Move ingestion component to deactivated folder so it's excluded from
dynamic discovery. Rename KnowledgeRetrievalComponent to
KnowledgeBaseComponent with display_name "Knowledge Base". Update all
exports, component index, starter project, frontend sidebar filter,
and tests.

* fix: update test_ingestion import to use deactivated module path

* fix: skip deactivated KnowledgeIngestion test suite

* [autofix.ci] apply automated fixes

* fix: standardize formatting and indentation in StepperModal component

---------

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
Viktor Avelino
2026-03-05 10:37:59 -05:00
committed by GitHub
parent 86c277ca86
commit d78efc7a9e
14 changed files with 50 additions and 1590 deletions

View File

@ -1526,7 +1526,7 @@
"filename": "src/backend/base/langflow/initial_setup/starter_projects/Knowledge Ingestion.json",
"hashed_secret": "c2dc8a1d72a39ee9da360d47dcadfd7a5560ee7f",
"is_verified": false,
"line_number": 93
"line_number": 94
}
],
"src/backend/base/langflow/initial_setup/starter_projects/Knowledge Retrieval.json": [
@ -1536,13 +1536,6 @@
"hashed_secret": "35be14614e83fe56d9b2ca1c0e2c2a74890b6889",
"is_verified": false,
"line_number": 255
},
{
"type": "Hex High Entropy String",
"filename": "src/backend/base/langflow/initial_setup/starter_projects/Knowledge Retrieval.json",
"hashed_secret": "199d0299098f4097fd8926648d9977fe2d08fb15",
"is_verified": false,
"line_number": 534
}
],
"src/backend/base/langflow/initial_setup/starter_projects/Market Research.json": [
@ -6380,5 +6373,5 @@
}
]
},
"generated_at": "2026-03-03T17:44:43Z"
"generated_at": "2026-03-04T23:52:18Z"
}

View File

@ -19,7 +19,7 @@ __all__: list[str] = list(_lfx_all)
# Register redirected submodules in sys.modules for direct importlib.import_module() calls
# This allows imports like: import langflow.components.knowledge_bases.ingestion
_redirected_submodules = {
"langflow.components.knowledge_bases.ingestion": "lfx.components.files_and_knowledge.ingestion",
# "langflow.components.knowledge_bases.ingestion": "lfx.components.files_and_knowledge.ingestion",
"langflow.components.knowledge_bases.retrieval": "lfx.components.files_and_knowledge.retrieval",
}
@ -52,12 +52,6 @@ for old_path, new_path in _redirected_submodules.items():
def __getattr__(attr_name: str) -> Any:
"""Forward attribute access to lfx.components.files_and_knowledge."""
# Handle submodule access for backwards compatibility
if attr_name == "ingestion":
from importlib import import_module
result = import_module("lfx.components.files_and_knowledge.ingestion")
globals()[attr_name] = result
return result
if attr_name == "retrieval":
from importlib import import_module

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -6,10 +6,12 @@ from langflow.schema.data import Data
from langflow.schema.dataframe import DataFrame
from langflow.schema.message import Message
from lfx.base.knowledge_bases import get_knowledge_bases
from lfx.components.knowledge_bases import KnowledgeIngestionComponent
from lfx.components.deactivated.ingestion import KnowledgeIngestionComponent
from tests.base import ComponentTestBaseWithClient
pytestmark = pytest.mark.skip(reason="KnowledgeIngestionComponent is deactivated")
class TestKnowledgeIngestionComponent(ComponentTestBaseWithClient):
@pytest.fixture

View File

@ -5,17 +5,17 @@ from unittest.mock import MagicMock, patch
import pytest
from langflow.base.knowledge_bases.knowledge_base_utils import get_knowledge_bases
from lfx.components.knowledge_bases.retrieval import KnowledgeRetrievalComponent
from lfx.components.files_and_knowledge.retrieval import KnowledgeBaseComponent
from pydantic import SecretStr
from tests.base import ComponentTestBaseWithClient
class TestKnowledgeRetrievalComponent(ComponentTestBaseWithClient):
class TestKnowledgeBaseComponent(ComponentTestBaseWithClient):
@pytest.fixture
def component_class(self):
"""Return the component class to test."""
return KnowledgeRetrievalComponent
return KnowledgeBaseComponent
@pytest.fixture(autouse=True)
def mock_knowledge_base_path(self, tmp_path):

View File

@ -95,7 +95,7 @@ export function StepperModal({
{/* Content */}
<div
className={cn(
"flex-1 min-h-0 overflow-hidden px-4 py-4 border border-border m-4 rounded-lg",
"flex-1 min-h-0 overflow-y-auto px-4 py-4 border border-border m-4 rounded-lg",
contentClassName,
)}
>

View File

@ -159,10 +159,7 @@ export function FlowSidebarComponent({ isLoading }: FlowSidebarComponentProps) {
return rawData;
}
const knowledgeComponentNames = [
"KnowledgeIngestion",
"KnowledgeRetrieval",
];
const knowledgeComponentNames = ["KnowledgeBase"];
// Create a deep copy to avoid mutating the original
const filteredData = cloneDeep(rawData);

File diff suppressed because one or more lines are too long

View File

@ -1798,5 +1798,10 @@
"versions": {
"0.3.0": "efd180878996"
}
},
"KnowledgeBase": {
"versions": {
"0.3.0": "54b54e5e574b"
}
}
}

View File

@ -7,24 +7,21 @@ from lfx.components._importing import import_mod
if TYPE_CHECKING:
from lfx.components.files_and_knowledge.directory import DirectoryComponent
from lfx.components.files_and_knowledge.file import FileComponent
from lfx.components.files_and_knowledge.ingestion import KnowledgeIngestionComponent
from lfx.components.files_and_knowledge.retrieval import KnowledgeRetrievalComponent
from lfx.components.files_and_knowledge.retrieval import KnowledgeBaseComponent
from lfx.components.files_and_knowledge.save_file import SaveToFileComponent
_dynamic_imports = {
"DirectoryComponent": "directory",
"FileComponent": "file",
"KnowledgeIngestionComponent": "ingestion",
"KnowledgeRetrievalComponent": "retrieval",
"KnowledgeBaseComponent": "retrieval",
"SaveToFileComponent": "save_file",
}
__all__ = [
"DirectoryComponent",
"FileComponent",
"KnowledgeIngestionComponent",
"KnowledgeRetrievalComponent",
"KnowledgeBaseComponent",
"SaveToFileComponent",
]

View File

@ -36,11 +36,11 @@ def _get_knowledge_bases_root_path() -> Path:
return _KNOWLEDGE_BASES_ROOT_PATH
class KnowledgeRetrievalComponent(Component):
display_name = "Knowledge Retrieval"
class KnowledgeBaseComponent(Component):
display_name = "Knowledge Base"
description = "Search and retrieve data from knowledge."
icon = "download"
name = "KnowledgeRetrieval"
name = "KnowledgeBase"
inputs = [
DropdownInput(

View File

@ -12,20 +12,17 @@ from typing import TYPE_CHECKING, Any
from lfx.components._importing import import_mod
if TYPE_CHECKING:
from lfx.components.files_and_knowledge.ingestion import KnowledgeIngestionComponent
from lfx.components.files_and_knowledge.retrieval import KnowledgeRetrievalComponent
from lfx.components.files_and_knowledge.retrieval import KnowledgeBaseComponent
_dynamic_imports = {
"KnowledgeIngestionComponent": "ingestion",
"KnowledgeRetrievalComponent": "retrieval",
"KnowledgeBaseComponent": "retrieval",
}
__all__ = ["KnowledgeIngestionComponent", "KnowledgeRetrievalComponent"]
__all__ = ["KnowledgeBaseComponent"]
# Register redirected submodules in sys.modules for direct importlib.import_module() calls
# This allows imports like: import lfx.components.knowledge_bases.ingestion
# This allows imports like: import lfx.components.knowledge_bases.retrieval
_redirected_submodules = {
"lfx.components.knowledge_bases.ingestion": "lfx.components.files_and_knowledge.ingestion",
"lfx.components.knowledge_bases.retrieval": "lfx.components.files_and_knowledge.retrieval",
}
@ -56,12 +53,6 @@ for old_path, new_path in _redirected_submodules.items():
def __getattr__(attr_name: str) -> Any:
"""Forward attribute access to files_and_knowledge components."""
# Handle submodule access for backwards compatibility
if attr_name == "ingestion":
from importlib import import_module
result = import_module("lfx.components.files_and_knowledge.ingestion")
globals()[attr_name] = result
return result
if attr_name == "retrieval":
from importlib import import_module