feat(bundles): consolidate cleanlab, twelvelabs, jigsawstack into lfx-bundles

First directory-level batch of the core-tail consolidation (validates the
consolidate_bundles.py path end-to-end after the spider/toolguard file-level
extractions). All three are flat, lfx-only, single-SDK providers:

- cleanlab    -> lfx_bundles/cleanlab    (cleanlab-tlm)   3 components
- twelvelabs  -> lfx_bundles/twelvelabs  (twelvelabs)     7 components
- jigsawstack -> lfx_bundles/jigsawstack (jigsawstack)   11 components

Via scripts/migrate/consolidate_bundles.py --apply: moves each dir into the
metapackage + leaves a fail-soft shim, merges per-provider extras and regen
`all`, appends the 4-entry migration block per class (84 entries, 0 ambiguous).
Component index regenerated (45->42 categories, 263->242 core components);
uv.lock re-resolved; twelvelabs test repointed to lfx_bundles.twelvelabs (passes).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Eric Hare
2026-06-16 11:28:39 -07:00
parent dfc4f00fe3
commit a082afbcda
33 changed files with 634 additions and 4359 deletions

View File

@ -114,6 +114,10 @@ PROVIDER_DEPS: dict[str, list[str]] = {
"openrouter": ["langchain-openai>=1.1.6"],
"vllm": ["langchain-openai>=1.1.6", "openai>=1.68.2,<3.0.0"],
"xai": ["langchain-openai>=1.1.6", "openai>=1.68.2,<3.0.0", "requests>=2.32.0"],
# --- tranche 4: remaining single-SDK providers (post core-tail audit) ---
"cleanlab": ["cleanlab-tlm>=1.1.2,<2.0.0"],
"twelvelabs": ["twelvelabs>=0.4.7,<1.0.0"],
"jigsawstack": ["jigsawstack==0.2.7"],
}
_OPTIONAL_DEPS_HEADER = (

View File

@ -4,8 +4,8 @@ import os
from unittest.mock import patch
import pytest
from lfx.components.twelvelabs.split_video import SplitVideoComponent
from lfx.components.twelvelabs.video_file import VideoFileComponent
from lfx_bundles.twelvelabs.split_video import SplitVideoComponent
from lfx_bundles.twelvelabs.video_file import VideoFileComponent
@pytest.mark.unit

View File

@ -31,6 +31,7 @@ apify = ["apify-client>=1.8.1", "langchain-community>=0.4.1,<1.0.0"]
assemblyai = ["assemblyai>=0.33.0,<1.0.0"]
azure = ["langchain-openai>=1.1.6"]
chroma = ["chromadb>=1.0.0,<2.0.0", "langchain-chroma~=0.2.6", "langchain-community>=0.4.1,<1.0.0"]
cleanlab = ["cleanlab-tlm>=1.1.2,<2.0.0"]
clickhouse = ["clickhouse-connect==0.7.19", "langchain-community>=0.4.1,<1.0.0"]
cometapi = ["langchain-openai>=1.1.6", "requests>=2.32.0"]
confluence = ["atlassian-python-api==3.41.16", "langchain-community>=0.4.1,<1.0.0"]
@ -42,6 +43,7 @@ git = ["GitPython>=3.1.50", "langchain-community>=0.4.1,<1.0.0"]
glean = []
groq = ["langchain-groq~=1.1.1"]
icosacomputing = ["requests>=2.32.0"]
jigsawstack = ["jigsawstack==0.2.7"]
litellm = ["langchain-openai>=1.1.6", "openai>=1.68.2,<3.0.0"]
lmstudio = ["langchain-openai>=1.1.6", "openai>=1.68.2,<3.0.0", "langchain-nvidia-ai-endpoints~=1.0.0"]
mem0 = ["mem0ai>=2.0.2,<3.0.0"]
@ -63,6 +65,7 @@ spider = ["spider-client>=0.0.27,<1.0.0"]
supabase = ["supabase>=2.6.0,<3.0.0", "langchain-community>=0.4.1,<1.0.0"]
tavily = []
toolguard = ["toolguard>=0.2.16,<1.0.0"]
twelvelabs = ["twelvelabs>=0.4.7,<1.0.0"]
unstructured = ["langchain-unstructured~=1.0.0"]
upstash = ["upstash-vector==0.6.0", "langchain-community>=0.4.1,<1.0.0"]
vllm = ["langchain-openai>=1.1.6", "openai>=1.68.2,<3.0.0"]
@ -79,6 +82,7 @@ all = [
"lfx-bundles[assemblyai]",
"lfx-bundles[azure]",
"lfx-bundles[chroma]",
"lfx-bundles[cleanlab]",
"lfx-bundles[clickhouse]",
"lfx-bundles[cometapi]",
"lfx-bundles[confluence]",
@ -90,6 +94,7 @@ all = [
"lfx-bundles[glean]",
"lfx-bundles[groq]",
"lfx-bundles[icosacomputing]",
"lfx-bundles[jigsawstack]",
"lfx-bundles[litellm]",
"lfx-bundles[lmstudio]",
"lfx-bundles[mem0]",
@ -111,6 +116,7 @@ all = [
"lfx-bundles[supabase]",
"lfx-bundles[tavily]",
"lfx-bundles[toolguard]",
"lfx-bundles[twelvelabs]",
"lfx-bundles[unstructured]",
"lfx-bundles[upstash]",
"lfx-bundles[vllm]",

View File

@ -0,0 +1,40 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any
from lfx.components._importing import import_mod
if TYPE_CHECKING:
from .cleanlab_evaluator import CleanlabEvaluator
from .cleanlab_rag_evaluator import CleanlabRAGEvaluator
from .cleanlab_remediator import CleanlabRemediator
_dynamic_imports = {
"CleanlabEvaluator": "cleanlab_evaluator",
"CleanlabRAGEvaluator": "cleanlab_rag_evaluator",
"CleanlabRemediator": "cleanlab_remediator",
}
__all__ = [
"CleanlabEvaluator",
"CleanlabRAGEvaluator",
"CleanlabRemediator",
]
def __getattr__(attr_name: str) -> Any:
"""Lazily import cleanlab components on attribute access."""
if attr_name not in _dynamic_imports:
msg = f"module '{__name__}' has no attribute '{attr_name}'"
raise AttributeError(msg)
try:
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
except (ModuleNotFoundError, ImportError, AttributeError) as e:
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
raise AttributeError(msg) from e
globals()[attr_name] = result
return result
def __dir__() -> list[str]:
return list(__all__)

View File

@ -1,5 +1,4 @@
from cleanlab_tlm import TLM
from lfx.custom import Component
from lfx.io import (
DropdownInput,

View File

@ -1,5 +1,4 @@
from cleanlab_tlm import TrustworthyRAG, get_default_evals
from lfx.custom import Component
from lfx.io import (
BoolInput,

View File

@ -0,0 +1,23 @@
from .ai_scrape import JigsawStackAIScraperComponent
from .ai_web_search import JigsawStackAIWebSearchComponent
from .file_read import JigsawStackFileReadComponent
from .file_upload import JigsawStackFileUploadComponent
from .image_generation import JigsawStackImageGenerationComponent
from .nsfw import JigsawStackNSFWComponent
from .object_detection import JigsawStackObjectDetectionComponent
from .sentiment import JigsawStackSentimentComponent
from .text_to_sql import JigsawStackTextToSQLComponent
from .vocr import JigsawStackVOCRComponent
__all__ = [
"JigsawStackAIScraperComponent",
"JigsawStackAIWebSearchComponent",
"JigsawStackFileReadComponent",
"JigsawStackFileUploadComponent",
"JigsawStackImageGenerationComponent",
"JigsawStackNSFWComponent",
"JigsawStackObjectDetectionComponent",
"JigsawStackSentimentComponent",
"JigsawStackTextToSQLComponent",
"JigsawStackVOCRComponent",
]

View File

@ -0,0 +1,52 @@
from __future__ import annotations
from typing import TYPE_CHECKING, Any
from lfx.components._importing import import_mod
if TYPE_CHECKING:
from .convert_astra_results import ConvertAstraToTwelveLabs
from .pegasus_index import PegasusIndexVideo
from .split_video import SplitVideoComponent
from .text_embeddings import TwelveLabsTextEmbeddingsComponent
from .twelvelabs_pegasus import TwelveLabsPegasus
from .video_embeddings import TwelveLabsVideoEmbeddingsComponent
from .video_file import VideoFileComponent
_dynamic_imports = {
"ConvertAstraToTwelveLabs": "convert_astra_results",
"PegasusIndexVideo": "pegasus_index",
"SplitVideoComponent": "split_video",
"TwelveLabsPegasus": "twelvelabs_pegasus",
"TwelveLabsTextEmbeddingsComponent": "text_embeddings",
"TwelveLabsVideoEmbeddingsComponent": "video_embeddings",
"VideoFileComponent": "video_file",
}
__all__ = [
"ConvertAstraToTwelveLabs",
"PegasusIndexVideo",
"SplitVideoComponent",
"TwelveLabsPegasus",
"TwelveLabsTextEmbeddingsComponent",
"TwelveLabsVideoEmbeddingsComponent",
"VideoFileComponent",
]
def __getattr__(attr_name: str) -> Any:
"""Lazily import twelvelabs components on attribute access."""
if attr_name not in _dynamic_imports:
msg = f"module '{__name__}' has no attribute '{attr_name}'"
raise AttributeError(msg)
try:
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
except (ModuleNotFoundError, ImportError, AttributeError) as e:
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
raise AttributeError(msg) from e
globals()[attr_name] = result
return result
def __dir__() -> list[str]:
return list(__all__)

View File

@ -3,13 +3,12 @@ from concurrent.futures import ThreadPoolExecutor
from pathlib import Path
from typing import Any
from tenacity import retry, stop_after_attempt, wait_exponential
from twelvelabs import TwelveLabs
from lfx.custom import Component
from lfx.inputs import DataInput, DropdownInput, SecretStrInput, StrInput
from lfx.io import Output
from lfx.schema import Data
from tenacity import retry, stop_after_attempt, wait_exponential
from twelvelabs import TwelveLabs
class TwelveLabsError(Exception):

View File

@ -1,8 +1,7 @@
from twelvelabs import TwelveLabs
from lfx.base.embeddings.model import LCEmbeddingsModel
from lfx.field_typing import Embeddings
from lfx.io import DropdownInput, FloatInput, IntInput, SecretStrInput
from twelvelabs import TwelveLabs
class TwelveLabsTextEmbeddings(Embeddings):

View File

@ -4,14 +4,13 @@ import time
from pathlib import Path
from typing import Any
from tenacity import retry, stop_after_attempt, wait_exponential
from twelvelabs import TwelveLabs
from lfx.custom import Component
from lfx.field_typing.range_spec import RangeSpec
from lfx.inputs import DataInput, DropdownInput, MessageInput, MultilineInput, SecretStrInput, SliderInput
from lfx.io import Output
from lfx.schema.message import Message
from tenacity import retry, stop_after_attempt, wait_exponential
from twelvelabs import TwelveLabs
class TaskError(Exception):

View File

@ -2,11 +2,10 @@ import time
from pathlib import Path
from typing import Any, cast
from twelvelabs import TwelveLabs
from lfx.base.embeddings.model import LCEmbeddingsModel
from lfx.field_typing import Embeddings
from lfx.io import DropdownInput, IntInput, SecretStrInput
from twelvelabs import TwelveLabs
class TwelveLabsVideoEmbeddings(Embeddings):

File diff suppressed because one or more lines are too long

View File

@ -1,40 +1,22 @@
from __future__ import annotations
# lfx-bundles-shim
"""Compatibility shim: lfx.components.cleanlab moved to lfx-bundles.
from typing import TYPE_CHECKING, Any
This module re-points to the installed bundle distribution. It contains
no component implementations and no third-party dependencies, and is
removed once the deprecation window closes (M4).
"""
from lfx.components._importing import import_mod
import importlib
import sys
if TYPE_CHECKING:
from .cleanlab_evaluator import CleanlabEvaluator
from .cleanlab_rag_evaluator import CleanlabRAGEvaluator
from .cleanlab_remediator import CleanlabRemediator
_dynamic_imports = {
"CleanlabEvaluator": "cleanlab_evaluator",
"CleanlabRAGEvaluator": "cleanlab_rag_evaluator",
"CleanlabRemediator": "cleanlab_remediator",
}
__all__ = [
"CleanlabEvaluator",
"CleanlabRAGEvaluator",
"CleanlabRemediator",
]
def __getattr__(attr_name: str) -> Any:
"""Lazily import cleanlab components on attribute access."""
if attr_name not in _dynamic_imports:
msg = f"module '{__name__}' has no attribute '{attr_name}'"
raise AttributeError(msg)
try:
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
except (ModuleNotFoundError, ImportError, AttributeError) as e:
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
raise AttributeError(msg) from e
globals()[attr_name] = result
return result
def __dir__() -> list[str]:
return list(__all__)
try:
sys.modules[__name__] = importlib.import_module("lfx_bundles.cleanlab")
except ModuleNotFoundError as exc:
if exc.name is not None and (exc.name == "lfx_bundles" or exc.name.startswith("lfx_bundles.")):
msg = (
"The 'cleanlab' components moved to the 'lfx-bundles' distribution. "
"Install it with: pip install lfx-bundles "
"(or 'pip install langflow', which bundles it)."
)
raise ModuleNotFoundError(msg, name="lfx_bundles") from exc
raise

View File

@ -1,23 +1,22 @@
from .ai_scrape import JigsawStackAIScraperComponent
from .ai_web_search import JigsawStackAIWebSearchComponent
from .file_read import JigsawStackFileReadComponent
from .file_upload import JigsawStackFileUploadComponent
from .image_generation import JigsawStackImageGenerationComponent
from .nsfw import JigsawStackNSFWComponent
from .object_detection import JigsawStackObjectDetectionComponent
from .sentiment import JigsawStackSentimentComponent
from .text_to_sql import JigsawStackTextToSQLComponent
from .vocr import JigsawStackVOCRComponent
# lfx-bundles-shim
"""Compatibility shim: lfx.components.jigsawstack moved to lfx-bundles.
__all__ = [
"JigsawStackAIScraperComponent",
"JigsawStackAIWebSearchComponent",
"JigsawStackFileReadComponent",
"JigsawStackFileUploadComponent",
"JigsawStackImageGenerationComponent",
"JigsawStackNSFWComponent",
"JigsawStackObjectDetectionComponent",
"JigsawStackSentimentComponent",
"JigsawStackTextToSQLComponent",
"JigsawStackVOCRComponent",
]
This module re-points to the installed bundle distribution. It contains
no component implementations and no third-party dependencies, and is
removed once the deprecation window closes (M4).
"""
import importlib
import sys
try:
sys.modules[__name__] = importlib.import_module("lfx_bundles.jigsawstack")
except ModuleNotFoundError as exc:
if exc.name is not None and (exc.name == "lfx_bundles" or exc.name.startswith("lfx_bundles.")):
msg = (
"The 'jigsawstack' components moved to the 'lfx-bundles' distribution. "
"Install it with: pip install lfx-bundles "
"(or 'pip install langflow', which bundles it)."
)
raise ModuleNotFoundError(msg, name="lfx_bundles") from exc
raise

View File

@ -1,52 +1,22 @@
from __future__ import annotations
# lfx-bundles-shim
"""Compatibility shim: lfx.components.twelvelabs moved to lfx-bundles.
from typing import TYPE_CHECKING, Any
This module re-points to the installed bundle distribution. It contains
no component implementations and no third-party dependencies, and is
removed once the deprecation window closes (M4).
"""
from lfx.components._importing import import_mod
import importlib
import sys
if TYPE_CHECKING:
from .convert_astra_results import ConvertAstraToTwelveLabs
from .pegasus_index import PegasusIndexVideo
from .split_video import SplitVideoComponent
from .text_embeddings import TwelveLabsTextEmbeddingsComponent
from .twelvelabs_pegasus import TwelveLabsPegasus
from .video_embeddings import TwelveLabsVideoEmbeddingsComponent
from .video_file import VideoFileComponent
_dynamic_imports = {
"ConvertAstraToTwelveLabs": "convert_astra_results",
"PegasusIndexVideo": "pegasus_index",
"SplitVideoComponent": "split_video",
"TwelveLabsPegasus": "twelvelabs_pegasus",
"TwelveLabsTextEmbeddingsComponent": "text_embeddings",
"TwelveLabsVideoEmbeddingsComponent": "video_embeddings",
"VideoFileComponent": "video_file",
}
__all__ = [
"ConvertAstraToTwelveLabs",
"PegasusIndexVideo",
"SplitVideoComponent",
"TwelveLabsPegasus",
"TwelveLabsTextEmbeddingsComponent",
"TwelveLabsVideoEmbeddingsComponent",
"VideoFileComponent",
]
def __getattr__(attr_name: str) -> Any:
"""Lazily import twelvelabs components on attribute access."""
if attr_name not in _dynamic_imports:
msg = f"module '{__name__}' has no attribute '{attr_name}'"
raise AttributeError(msg)
try:
result = import_mod(attr_name, _dynamic_imports[attr_name], __spec__.parent)
except (ModuleNotFoundError, ImportError, AttributeError) as e:
msg = f"Could not import '{attr_name}' from '{__name__}': {e}"
raise AttributeError(msg) from e
globals()[attr_name] = result
return result
def __dir__() -> list[str]:
return list(__all__)
try:
sys.modules[__name__] = importlib.import_module("lfx_bundles.twelvelabs")
except ModuleNotFoundError as exc:
if exc.name is not None and (exc.name == "lfx_bundles" or exc.name.startswith("lfx_bundles.")):
msg = (
"The 'twelvelabs' components moved to the 'lfx-bundles' distribution. "
"Install it with: pip install lfx-bundles "
"(or 'pip install langflow', which bundles it)."
)
raise ModuleNotFoundError(msg, name="lfx_bundles") from exc
raise

View File

@ -2120,6 +2120,426 @@
"legacy_slot": "ext:toolguard:PoliciesComponent@official-pre-a",
"target": "ext:toolguard:PoliciesComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "CleanlabEvaluator",
"target": "ext:cleanlab:CleanlabEvaluator@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.cleanlab.cleanlab_evaluator.CleanlabEvaluator",
"target": "ext:cleanlab:CleanlabEvaluator@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.cleanlab.CleanlabEvaluator",
"target": "ext:cleanlab:CleanlabEvaluator@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:cleanlab:CleanlabEvaluator@official-pre-a",
"target": "ext:cleanlab:CleanlabEvaluator@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "CleanlabRAGEvaluator",
"target": "ext:cleanlab:CleanlabRAGEvaluator@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.cleanlab.cleanlab_rag_evaluator.CleanlabRAGEvaluator",
"target": "ext:cleanlab:CleanlabRAGEvaluator@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.cleanlab.CleanlabRAGEvaluator",
"target": "ext:cleanlab:CleanlabRAGEvaluator@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:cleanlab:CleanlabRAGEvaluator@official-pre-a",
"target": "ext:cleanlab:CleanlabRAGEvaluator@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "CleanlabRemediator",
"target": "ext:cleanlab:CleanlabRemediator@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.cleanlab.cleanlab_remediator.CleanlabRemediator",
"target": "ext:cleanlab:CleanlabRemediator@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.cleanlab.CleanlabRemediator",
"target": "ext:cleanlab:CleanlabRemediator@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:cleanlab:CleanlabRemediator@official-pre-a",
"target": "ext:cleanlab:CleanlabRemediator@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "ConvertAstraToTwelveLabs",
"target": "ext:twelvelabs:ConvertAstraToTwelveLabs@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.convert_astra_results.ConvertAstraToTwelveLabs",
"target": "ext:twelvelabs:ConvertAstraToTwelveLabs@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.ConvertAstraToTwelveLabs",
"target": "ext:twelvelabs:ConvertAstraToTwelveLabs@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:twelvelabs:ConvertAstraToTwelveLabs@official-pre-a",
"target": "ext:twelvelabs:ConvertAstraToTwelveLabs@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "PegasusIndexVideo",
"target": "ext:twelvelabs:PegasusIndexVideo@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.pegasus_index.PegasusIndexVideo",
"target": "ext:twelvelabs:PegasusIndexVideo@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.PegasusIndexVideo",
"target": "ext:twelvelabs:PegasusIndexVideo@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:twelvelabs:PegasusIndexVideo@official-pre-a",
"target": "ext:twelvelabs:PegasusIndexVideo@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "SplitVideoComponent",
"target": "ext:twelvelabs:SplitVideoComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.split_video.SplitVideoComponent",
"target": "ext:twelvelabs:SplitVideoComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.SplitVideoComponent",
"target": "ext:twelvelabs:SplitVideoComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:twelvelabs:SplitVideoComponent@official-pre-a",
"target": "ext:twelvelabs:SplitVideoComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "TwelveLabsTextEmbeddingsComponent",
"target": "ext:twelvelabs:TwelveLabsTextEmbeddingsComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.text_embeddings.TwelveLabsTextEmbeddingsComponent",
"target": "ext:twelvelabs:TwelveLabsTextEmbeddingsComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.TwelveLabsTextEmbeddingsComponent",
"target": "ext:twelvelabs:TwelveLabsTextEmbeddingsComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:twelvelabs:TwelveLabsTextEmbeddingsComponent@official-pre-a",
"target": "ext:twelvelabs:TwelveLabsTextEmbeddingsComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "TwelveLabsPegasus",
"target": "ext:twelvelabs:TwelveLabsPegasus@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.twelvelabs_pegasus.TwelveLabsPegasus",
"target": "ext:twelvelabs:TwelveLabsPegasus@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.TwelveLabsPegasus",
"target": "ext:twelvelabs:TwelveLabsPegasus@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:twelvelabs:TwelveLabsPegasus@official-pre-a",
"target": "ext:twelvelabs:TwelveLabsPegasus@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "TwelveLabsVideoEmbeddingsComponent",
"target": "ext:twelvelabs:TwelveLabsVideoEmbeddingsComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.video_embeddings.TwelveLabsVideoEmbeddingsComponent",
"target": "ext:twelvelabs:TwelveLabsVideoEmbeddingsComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.TwelveLabsVideoEmbeddingsComponent",
"target": "ext:twelvelabs:TwelveLabsVideoEmbeddingsComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:twelvelabs:TwelveLabsVideoEmbeddingsComponent@official-pre-a",
"target": "ext:twelvelabs:TwelveLabsVideoEmbeddingsComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "VideoFileComponent",
"target": "ext:twelvelabs:VideoFileComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.video_file.VideoFileComponent",
"target": "ext:twelvelabs:VideoFileComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.twelvelabs.VideoFileComponent",
"target": "ext:twelvelabs:VideoFileComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:twelvelabs:VideoFileComponent@official-pre-a",
"target": "ext:twelvelabs:VideoFileComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackAIScraperComponent",
"target": "ext:jigsawstack:JigsawStackAIScraperComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.ai_scrape.JigsawStackAIScraperComponent",
"target": "ext:jigsawstack:JigsawStackAIScraperComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackAIScraperComponent",
"target": "ext:jigsawstack:JigsawStackAIScraperComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackAIScraperComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackAIScraperComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackAIWebSearchComponent",
"target": "ext:jigsawstack:JigsawStackAIWebSearchComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.ai_web_search.JigsawStackAIWebSearchComponent",
"target": "ext:jigsawstack:JigsawStackAIWebSearchComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackAIWebSearchComponent",
"target": "ext:jigsawstack:JigsawStackAIWebSearchComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackAIWebSearchComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackAIWebSearchComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackFileReadComponent",
"target": "ext:jigsawstack:JigsawStackFileReadComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.file_read.JigsawStackFileReadComponent",
"target": "ext:jigsawstack:JigsawStackFileReadComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackFileReadComponent",
"target": "ext:jigsawstack:JigsawStackFileReadComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackFileReadComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackFileReadComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackFileUploadComponent",
"target": "ext:jigsawstack:JigsawStackFileUploadComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.file_upload.JigsawStackFileUploadComponent",
"target": "ext:jigsawstack:JigsawStackFileUploadComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackFileUploadComponent",
"target": "ext:jigsawstack:JigsawStackFileUploadComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackFileUploadComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackFileUploadComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackImageGenerationComponent",
"target": "ext:jigsawstack:JigsawStackImageGenerationComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.image_generation.JigsawStackImageGenerationComponent",
"target": "ext:jigsawstack:JigsawStackImageGenerationComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackImageGenerationComponent",
"target": "ext:jigsawstack:JigsawStackImageGenerationComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackImageGenerationComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackImageGenerationComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackNSFWComponent",
"target": "ext:jigsawstack:JigsawStackNSFWComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.nsfw.JigsawStackNSFWComponent",
"target": "ext:jigsawstack:JigsawStackNSFWComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackNSFWComponent",
"target": "ext:jigsawstack:JigsawStackNSFWComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackNSFWComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackNSFWComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackObjectDetectionComponent",
"target": "ext:jigsawstack:JigsawStackObjectDetectionComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.object_detection.JigsawStackObjectDetectionComponent",
"target": "ext:jigsawstack:JigsawStackObjectDetectionComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackObjectDetectionComponent",
"target": "ext:jigsawstack:JigsawStackObjectDetectionComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackObjectDetectionComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackObjectDetectionComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackSentimentComponent",
"target": "ext:jigsawstack:JigsawStackSentimentComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.sentiment.JigsawStackSentimentComponent",
"target": "ext:jigsawstack:JigsawStackSentimentComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackSentimentComponent",
"target": "ext:jigsawstack:JigsawStackSentimentComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackSentimentComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackSentimentComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackTextToSQLComponent",
"target": "ext:jigsawstack:JigsawStackTextToSQLComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.text_to_sql.JigsawStackTextToSQLComponent",
"target": "ext:jigsawstack:JigsawStackTextToSQLComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackTextToSQLComponent",
"target": "ext:jigsawstack:JigsawStackTextToSQLComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackTextToSQLComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackTextToSQLComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackTextTranslateComponent",
"target": "ext:jigsawstack:JigsawStackTextTranslateComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.text_translate.JigsawStackTextTranslateComponent",
"target": "ext:jigsawstack:JigsawStackTextTranslateComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackTextTranslateComponent",
"target": "ext:jigsawstack:JigsawStackTextTranslateComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackTextTranslateComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackTextTranslateComponent@official",
"added_in": "1.11.0"
},
{
"bare_class_name": "JigsawStackVOCRComponent",
"target": "ext:jigsawstack:JigsawStackVOCRComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.vocr.JigsawStackVOCRComponent",
"target": "ext:jigsawstack:JigsawStackVOCRComponent@official",
"added_in": "1.11.0"
},
{
"import_path": "lfx.components.jigsawstack.JigsawStackVOCRComponent",
"target": "ext:jigsawstack:JigsawStackVOCRComponent@official",
"added_in": "1.11.0"
},
{
"legacy_slot": "ext:jigsawstack:JigsawStackVOCRComponent@official-pre-a",
"target": "ext:jigsawstack:JigsawStackVOCRComponent@official",
"added_in": "1.11.0"
}
],
"ambiguous_bare_names": [

20
uv.lock generated
View File

@ -9142,12 +9142,14 @@ all = [
{ name = "assemblyai" },
{ name = "atlassian-python-api" },
{ name = "chromadb" },
{ name = "cleanlab-tlm" },
{ name = "clickhouse-connect" },
{ name = "couchbase" },
{ name = "firecrawl-py" },
{ name = "gitpython" },
{ name = "google-api-python-client" },
{ name = "google-search-results" },
{ name = "jigsawstack" },
{ name = "langchain-chroma" },
{ name = "langchain-community" },
{ name = "langchain-groq" },
@ -9177,6 +9179,7 @@ all = [
{ name = "spider-client" },
{ name = "supabase" },
{ name = "toolguard" },
{ name = "twelvelabs" },
{ name = "upstash-vector" },
{ name = "weaviate-client" },
{ name = "wikipedia" },
@ -9201,6 +9204,9 @@ chroma = [
{ name = "langchain-chroma" },
{ name = "langchain-community" },
]
cleanlab = [
{ name = "cleanlab-tlm" },
]
clickhouse = [
{ name = "clickhouse-connect" },
{ name = "langchain-community" },
@ -9238,6 +9244,9 @@ groq = [
icosacomputing = [
{ name = "requests" },
]
jigsawstack = [
{ name = "jigsawstack" },
]
litellm = [
{ name = "langchain-openai" },
{ name = "openai" },
@ -9309,6 +9318,9 @@ supabase = [
toolguard = [
{ name = "toolguard" },
]
twelvelabs = [
{ name = "twelvelabs" },
]
unstructured = [
{ name = "langchain-unstructured" },
]
@ -9355,12 +9367,14 @@ requires-dist = [
{ name = "assemblyai", marker = "extra == 'assemblyai'", specifier = ">=0.33.0,<1.0.0" },
{ name = "atlassian-python-api", marker = "extra == 'confluence'", specifier = "==3.41.16" },
{ name = "chromadb", marker = "extra == 'chroma'", specifier = ">=1.0.0,<2.0.0" },
{ name = "cleanlab-tlm", marker = "extra == 'cleanlab'", specifier = ">=1.1.2,<2.0.0" },
{ name = "clickhouse-connect", marker = "extra == 'clickhouse'", specifier = "==0.7.19" },
{ name = "couchbase", marker = "extra == 'couchbase'", specifier = ">=4.2.1" },
{ name = "firecrawl-py", marker = "extra == 'firecrawl'", specifier = ">=1.0.16,<2.0.0" },
{ name = "gitpython", marker = "extra == 'git'", specifier = ">=3.1.50" },
{ name = "google-api-python-client", marker = "extra == 'youtube'", specifier = "~=2.161" },
{ name = "google-search-results", marker = "extra == 'serpapi'", specifier = ">=2.4.1,<3.0.0" },
{ name = "jigsawstack", marker = "extra == 'jigsawstack'", specifier = "==0.2.7" },
{ name = "langchain-chroma", marker = "extra == 'chroma'", specifier = "~=0.2.6" },
{ name = "langchain-community", marker = "extra == 'apify'", specifier = ">=0.4.1,<1.0.0" },
{ name = "langchain-community", marker = "extra == 'chroma'", specifier = ">=0.4.1,<1.0.0" },
@ -9403,6 +9417,7 @@ requires-dist = [
{ name = "lfx-bundles", extras = ["assemblyai"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["azure"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["chroma"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["cleanlab"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["clickhouse"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["cometapi"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["confluence"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
@ -9414,6 +9429,7 @@ requires-dist = [
{ name = "lfx-bundles", extras = ["glean"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["groq"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["icosacomputing"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["jigsawstack"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["litellm"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["lmstudio"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["mem0"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
@ -9435,6 +9451,7 @@ requires-dist = [
{ name = "lfx-bundles", extras = ["supabase"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["tavily"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["toolguard"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["twelvelabs"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["unstructured"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["upstash"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
{ name = "lfx-bundles", extras = ["vllm"], marker = "extra == 'all'", editable = "src/bundles/lfx-bundles" },
@ -9467,6 +9484,7 @@ requires-dist = [
{ name = "spider-client", marker = "extra == 'spider'", specifier = ">=0.0.27,<1.0.0" },
{ name = "supabase", marker = "extra == 'supabase'", specifier = ">=2.6.0,<3.0.0" },
{ name = "toolguard", marker = "extra == 'toolguard'", specifier = ">=0.2.16,<1.0.0" },
{ name = "twelvelabs", marker = "extra == 'twelvelabs'", specifier = ">=0.4.7,<1.0.0" },
{ name = "upstash-vector", marker = "extra == 'upstash'", specifier = "==0.6.0" },
{ name = "weaviate-client", marker = "extra == 'weaviate'", specifier = ">=4.10.2,<5.0.0" },
{ name = "wikipedia", marker = "extra == 'wikipedia'", specifier = "==1.4.0" },
@ -9475,7 +9493,7 @@ requires-dist = [
{ name = "youtube-transcript-api", marker = "extra == 'youtube'", specifier = ">=1.0.0,<2.0.0" },
{ name = "zep-python", marker = "extra == 'zep'", specifier = "==2.0.2" },
]
provides-extras = ["aiml", "apify", "assemblyai", "azure", "chroma", "clickhouse", "cometapi", "confluence", "couchbase", "deepseek", "exa", "firecrawl", "git", "glean", "groq", "icosacomputing", "litellm", "lmstudio", "mem0", "milvus", "mistral", "mongodb", "needle", "novita", "ollama", "openrouter", "perplexity", "pgvector", "pinecone", "qdrant", "sambanova", "scrapegraph", "serpapi", "spider", "supabase", "tavily", "toolguard", "unstructured", "upstash", "vllm", "weaviate", "wikipedia", "wolframalpha", "xai", "yahoosearch", "youtube", "zep", "all"]
provides-extras = ["aiml", "apify", "assemblyai", "azure", "chroma", "cleanlab", "clickhouse", "cometapi", "confluence", "couchbase", "deepseek", "exa", "firecrawl", "git", "glean", "groq", "icosacomputing", "jigsawstack", "litellm", "lmstudio", "mem0", "milvus", "mistral", "mongodb", "needle", "novita", "ollama", "openrouter", "perplexity", "pgvector", "pinecone", "qdrant", "sambanova", "scrapegraph", "serpapi", "spider", "supabase", "tavily", "toolguard", "twelvelabs", "unstructured", "upstash", "vllm", "weaviate", "wikipedia", "wolframalpha", "xai", "yahoosearch", "youtube", "zep", "all"]
[[package]]
name = "lfx-cohere"