diff --git a/src/backend/base/langflow/base/models/model_input_constants.py b/src/backend/base/langflow/base/models/model_input_constants.py index abcea24fc..abc07dab2 100644 --- a/src/backend/base/langflow/base/models/model_input_constants.py +++ b/src/backend/base/langflow/base/models/model_input_constants.py @@ -2,13 +2,13 @@ from typing_extensions import TypedDict from langflow.base.models.model import LCModelComponent from langflow.components.amazon.amazon_bedrock_model import AmazonBedrockComponent -from langflow.components.languagemodels.anthropic import AnthropicModelComponent -from langflow.components.languagemodels.azure_openai import AzureChatOpenAIComponent -from langflow.components.languagemodels.google_generative_ai import GoogleGenerativeAIComponent +from langflow.components.anthropic.anthropic import AnthropicModelComponent +from langflow.components.azure.azure_openai import AzureChatOpenAIComponent +from langflow.components.google.google_generative_ai import GoogleGenerativeAIComponent from langflow.components.languagemodels.groq import GroqModel -from langflow.components.languagemodels.nvidia import NVIDIAModelComponent -from langflow.components.languagemodels.openai_chat_model import OpenAIModelComponent from langflow.components.languagemodels.sambanova import SambaNovaComponent +from langflow.components.nvidia.nvidia import NVIDIAModelComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent from langflow.inputs.inputs import InputTypes, SecretStrInput from langflow.template.field.base import Input @@ -89,7 +89,7 @@ def create_input_fields_dict(inputs: list[Input], prefix: str) -> dict[str, Inpu def _get_google_generative_ai_inputs_and_fields(): try: - from langflow.components.languagemodels.google_generative_ai import GoogleGenerativeAIComponent + from langflow.components.google.google_generative_ai import GoogleGenerativeAIComponent google_generative_ai_inputs = get_filtered_inputs(GoogleGenerativeAIComponent) except ImportError as e: @@ -103,7 +103,7 @@ def _get_google_generative_ai_inputs_and_fields(): def _get_openai_inputs_and_fields(): try: - from langflow.components.languagemodels.openai_chat_model import OpenAIModelComponent + from langflow.components.openai.openai_chat_model import OpenAIModelComponent openai_inputs = get_filtered_inputs(OpenAIModelComponent) except ImportError as e: @@ -114,7 +114,7 @@ def _get_openai_inputs_and_fields(): def _get_azure_inputs_and_fields(): try: - from langflow.components.languagemodels.azure_openai import AzureChatOpenAIComponent + from langflow.components.azure.azure_openai import AzureChatOpenAIComponent azure_inputs = get_filtered_inputs(AzureChatOpenAIComponent) except ImportError as e: @@ -136,7 +136,7 @@ def _get_groq_inputs_and_fields(): def _get_anthropic_inputs_and_fields(): try: - from langflow.components.languagemodels.anthropic import AnthropicModelComponent + from langflow.components.anthropic.anthropic import AnthropicModelComponent anthropic_inputs = get_filtered_inputs(AnthropicModelComponent) except ImportError as e: @@ -147,7 +147,7 @@ def _get_anthropic_inputs_and_fields(): def _get_nvidia_inputs_and_fields(): try: - from langflow.components.languagemodels.nvidia import NVIDIAModelComponent + from langflow.components.nvidia.nvidia import NVIDIAModelComponent nvidia_inputs = get_filtered_inputs(NVIDIAModelComponent) except ImportError as e: diff --git a/src/backend/base/langflow/components/agents/__init__.py b/src/backend/base/langflow/components/agents/__init__.py index a765520ff..33a483db3 100644 --- a/src/backend/base/langflow/components/agents/__init__.py +++ b/src/backend/base/langflow/components/agents/__init__.py @@ -1,3 +1,4 @@ from .agent import AgentComponent +from .mcp_component import MCPToolsComponent -__all__ = ["AgentComponent"] +__all__ = ["AgentComponent", "MCPToolsComponent"] diff --git a/src/backend/base/langflow/components/data/mcp_component.py b/src/backend/base/langflow/components/agents/mcp_component.py similarity index 99% rename from src/backend/base/langflow/components/data/mcp_component.py rename to src/backend/base/langflow/components/agents/mcp_component.py index a420d8c73..3abf4f83d 100644 --- a/src/backend/base/langflow/components/data/mcp_component.py +++ b/src/backend/base/langflow/components/agents/mcp_component.py @@ -77,7 +77,7 @@ class MCPToolsComponent(ComponentWithCache): "tool", ] - display_name = "MCP Connection" + display_name = "MCP Tools" description = "Connect to an MCP server to use its tools." icon = "Mcp" name = "MCPTools" diff --git a/src/backend/base/langflow/components/aiml/__init__.py b/src/backend/base/langflow/components/aiml/__init__.py new file mode 100644 index 000000000..89dc93268 --- /dev/null +++ b/src/backend/base/langflow/components/aiml/__init__.py @@ -0,0 +1,7 @@ +from .aiml import AIMLModelComponent +from .aiml_embeddings import AIMLEmbeddingsComponent + +__all__ = [ + "AIMLEmbeddingsComponent", + "AIMLModelComponent", +] diff --git a/src/backend/base/langflow/components/languagemodels/aiml.py b/src/backend/base/langflow/components/aiml/aiml.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/aiml.py rename to src/backend/base/langflow/components/aiml/aiml.py diff --git a/src/backend/base/langflow/components/embeddings/aiml.py b/src/backend/base/langflow/components/aiml/aiml_embeddings.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/aiml.py rename to src/backend/base/langflow/components/aiml/aiml_embeddings.py diff --git a/src/backend/base/langflow/components/anthropic/__init__.py b/src/backend/base/langflow/components/anthropic/__init__.py new file mode 100644 index 000000000..8b97adcd5 --- /dev/null +++ b/src/backend/base/langflow/components/anthropic/__init__.py @@ -0,0 +1,5 @@ +from .anthropic import AnthropicModelComponent + +__all__ = [ + "AnthropicModelComponent", +] diff --git a/src/backend/base/langflow/components/languagemodels/anthropic.py b/src/backend/base/langflow/components/anthropic/anthropic.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/anthropic.py rename to src/backend/base/langflow/components/anthropic/anthropic.py diff --git a/src/backend/base/langflow/components/azure/__init__.py b/src/backend/base/langflow/components/azure/__init__.py new file mode 100644 index 000000000..73671151e --- /dev/null +++ b/src/backend/base/langflow/components/azure/__init__.py @@ -0,0 +1,7 @@ +from .azure_openai import AzureChatOpenAIComponent +from .azure_openai_embeddings import AzureOpenAIEmbeddingsComponent + +__all__ = [ + "AzureChatOpenAIComponent", + "AzureOpenAIEmbeddingsComponent", +] diff --git a/src/backend/base/langflow/components/languagemodels/azure_openai.py b/src/backend/base/langflow/components/azure/azure_openai.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/azure_openai.py rename to src/backend/base/langflow/components/azure/azure_openai.py diff --git a/src/backend/base/langflow/components/embeddings/azure_openai.py b/src/backend/base/langflow/components/azure/azure_openai_embeddings.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/azure_openai.py rename to src/backend/base/langflow/components/azure/azure_openai_embeddings.py diff --git a/src/backend/base/langflow/components/data/__init__.py b/src/backend/base/langflow/components/data/__init__.py index 879a4153e..6e90f0426 100644 --- a/src/backend/base/langflow/components/data/__init__.py +++ b/src/backend/base/langflow/components/data/__init__.py @@ -3,7 +3,6 @@ from .csv_to_data import CSVToDataComponent from .directory import DirectoryComponent from .file import FileComponent from .json_to_data import JSONToDataComponent -from .mcp_component import MCPToolsComponent from .news_search import NewsSearchComponent from .rss import RSSReaderComponent from .sql_executor import SQLComponent @@ -17,7 +16,6 @@ __all__ = [ "DirectoryComponent", "FileComponent", "JSONToDataComponent", - "MCPToolsComponent", "NewsSearchComponent", "RSSReaderComponent", "SQLComponent", diff --git a/src/backend/base/langflow/components/datastax/__init__.py b/src/backend/base/langflow/components/datastax/__init__.py index da551f650..91fc16c99 100644 --- a/src/backend/base/langflow/components/datastax/__init__.py +++ b/src/backend/base/langflow/components/datastax/__init__.py @@ -1,6 +1,9 @@ from .astra_assistant_manager import AstraAssistantManager +from .astra_db import AstraDBChatMemory +from .astra_vectorize import AstraVectorizeComponent from .astradb_cql import AstraDBCQLToolComponent from .astradb_tool import AstraDBToolComponent +from .cassandra import CassandraChatMemory from .create_assistant import AssistantsCreateAssistant from .create_thread import AssistantsCreateThread from .dotenv import Dotenv @@ -17,7 +20,10 @@ __all__ = [ "AssistantsRun", "AstraAssistantManager", "AstraDBCQLToolComponent", + "AstraDBChatMemory", "AstraDBToolComponent", + "AstraVectorizeComponent", + "CassandraChatMemory", "Dotenv", "GetEnvVar", ] diff --git a/src/backend/base/langflow/components/memories/astra_db.py b/src/backend/base/langflow/components/datastax/astra_db.py similarity index 100% rename from src/backend/base/langflow/components/memories/astra_db.py rename to src/backend/base/langflow/components/datastax/astra_db.py diff --git a/src/backend/base/langflow/components/embeddings/astra_vectorize.py b/src/backend/base/langflow/components/datastax/astra_vectorize.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/astra_vectorize.py rename to src/backend/base/langflow/components/datastax/astra_vectorize.py diff --git a/src/backend/base/langflow/components/memories/cassandra.py b/src/backend/base/langflow/components/datastax/cassandra.py similarity index 100% rename from src/backend/base/langflow/components/memories/cassandra.py rename to src/backend/base/langflow/components/datastax/cassandra.py diff --git a/src/backend/base/langflow/components/embeddings/__init__.py b/src/backend/base/langflow/components/embeddings/__init__.py index f2cb48295..414f3c94b 100644 --- a/src/backend/base/langflow/components/embeddings/__init__.py +++ b/src/backend/base/langflow/components/embeddings/__init__.py @@ -1,35 +1,15 @@ -from .aiml import AIMLEmbeddingsComponent -from .astra_vectorize import AstraVectorizeComponent -from .azure_openai import AzureOpenAIEmbeddingsComponent from .cloudflare import CloudflareWorkersAIEmbeddingsComponent from .cohere import CohereEmbeddingsComponent -from .google_generative_ai import GoogleGenerativeAIEmbeddingsComponent -from .huggingface_inference_api import HuggingFaceInferenceAPIEmbeddingsComponent from .lmstudioembeddings import LMStudioEmbeddingsComponent from .mistral import MistralAIEmbeddingsComponent -from .nvidia import NVIDIAEmbeddingsComponent -from .ollama import OllamaEmbeddingsComponent -from .openai import OpenAIEmbeddingsComponent from .similarity import EmbeddingSimilarityComponent from .text_embedder import TextEmbedderComponent -from .vertexai import VertexAIEmbeddingsComponent -from .watsonx import WatsonxEmbeddingsComponent __all__ = [ - "AIMLEmbeddingsComponent", - "AstraVectorizeComponent", - "AzureOpenAIEmbeddingsComponent", "CloudflareWorkersAIEmbeddingsComponent", "CohereEmbeddingsComponent", "EmbeddingSimilarityComponent", - "GoogleGenerativeAIEmbeddingsComponent", - "HuggingFaceInferenceAPIEmbeddingsComponent", "LMStudioEmbeddingsComponent", "MistralAIEmbeddingsComponent", - "NVIDIAEmbeddingsComponent", - "OllamaEmbeddingsComponent", - "OpenAIEmbeddingsComponent", "TextEmbedderComponent", - "VertexAIEmbeddingsComponent", - "WatsonxEmbeddingsComponent", ] diff --git a/src/backend/base/langflow/components/google/__init__.py b/src/backend/base/langflow/components/google/__init__.py index 5d24430ca..de5a5a456 100644 --- a/src/backend/base/langflow/components/google/__init__.py +++ b/src/backend/base/langflow/components/google/__init__.py @@ -2,6 +2,8 @@ from .gmail import GmailLoaderComponent from .google_bq_sql_executor import BigQueryExecutorComponent from .google_drive import GoogleDriveComponent from .google_drive_search import GoogleDriveSearchComponent +from .google_generative_ai import GoogleGenerativeAIComponent +from .google_generative_ai_embeddings import GoogleGenerativeAIEmbeddingsComponent from .google_oauth_token import GoogleOAuthToken __all__ = [ @@ -9,5 +11,7 @@ __all__ = [ "GmailLoaderComponent", "GoogleDriveComponent", "GoogleDriveSearchComponent", + "GoogleGenerativeAIComponent", + "GoogleGenerativeAIEmbeddingsComponent", "GoogleOAuthToken", ] diff --git a/src/backend/base/langflow/components/languagemodels/google_generative_ai.py b/src/backend/base/langflow/components/google/google_generative_ai.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/google_generative_ai.py rename to src/backend/base/langflow/components/google/google_generative_ai.py diff --git a/src/backend/base/langflow/components/embeddings/google_generative_ai.py b/src/backend/base/langflow/components/google/google_generative_ai_embeddings.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/google_generative_ai.py rename to src/backend/base/langflow/components/google/google_generative_ai_embeddings.py diff --git a/src/backend/base/langflow/components/huggingface/__init__.py b/src/backend/base/langflow/components/huggingface/__init__.py new file mode 100644 index 000000000..19fa698bd --- /dev/null +++ b/src/backend/base/langflow/components/huggingface/__init__.py @@ -0,0 +1,7 @@ +from .huggingface import HuggingFaceEndpointsComponent +from .huggingface_inference_api import HuggingFaceInferenceAPIEmbeddingsComponent + +__all__ = [ + "HuggingFaceEndpointsComponent", + "HuggingFaceInferenceAPIEmbeddingsComponent", +] diff --git a/src/backend/base/langflow/components/languagemodels/huggingface.py b/src/backend/base/langflow/components/huggingface/huggingface.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/huggingface.py rename to src/backend/base/langflow/components/huggingface/huggingface.py diff --git a/src/backend/base/langflow/components/embeddings/huggingface_inference_api.py b/src/backend/base/langflow/components/huggingface/huggingface_inference_api.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/huggingface_inference_api.py rename to src/backend/base/langflow/components/huggingface/huggingface_inference_api.py diff --git a/src/backend/base/langflow/components/ibm/__init__.py b/src/backend/base/langflow/components/ibm/__init__.py new file mode 100644 index 000000000..e19e2af6e --- /dev/null +++ b/src/backend/base/langflow/components/ibm/__init__.py @@ -0,0 +1,4 @@ +from .watsonx import WatsonxAIComponent +from .watsonx_embeddings import WatsonxEmbeddingsComponent + +__all__ = ["WatsonxAIComponent", "WatsonxEmbeddingsComponent"] diff --git a/src/backend/base/langflow/components/languagemodels/watsonx.py b/src/backend/base/langflow/components/ibm/watsonx.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/watsonx.py rename to src/backend/base/langflow/components/ibm/watsonx.py diff --git a/src/backend/base/langflow/components/embeddings/watsonx.py b/src/backend/base/langflow/components/ibm/watsonx_embeddings.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/watsonx.py rename to src/backend/base/langflow/components/ibm/watsonx_embeddings.py diff --git a/src/backend/base/langflow/components/languagemodels/__init__.py b/src/backend/base/langflow/components/languagemodels/__init__.py index c0af8c8a0..e642b9cca 100644 --- a/src/backend/base/langflow/components/languagemodels/__init__.py +++ b/src/backend/base/langflow/components/languagemodels/__init__.py @@ -1,43 +1,27 @@ -from .aiml import AIMLModelComponent -from .anthropic import AnthropicModelComponent -from .azure_openai import AzureChatOpenAIComponent from .baidu_qianfan_chat import QianfanChatEndpointComponent from .cohere import CohereComponent from .deepseek import DeepSeekModelComponent -from .google_generative_ai import GoogleGenerativeAIComponent from .groq import GroqModel -from .huggingface import HuggingFaceEndpointsComponent from .lmstudiomodel import LMStudioModelComponent from .maritalk import MaritalkModelComponent from .mistral import MistralAIModelComponent from .novita import NovitaModelComponent -from .nvidia import NVIDIAModelComponent -from .ollama import ChatOllamaComponent -from .openai_chat_model import OpenAIModelComponent from .openrouter import OpenRouterComponent from .perplexity import PerplexityComponent from .sambanova import SambaNovaComponent -from .vertexai import ChatVertexAIComponent -from .watsonx import WatsonxAIComponent from .xai import XAIModelComponent __all__ = [ - "AIMLModelComponent", - "AnthropicModelComponent", - "AzureChatOpenAIComponent", "ChatOllamaComponent", "ChatVertexAIComponent", "CohereComponent", "DeepSeekModelComponent", - "GoogleGenerativeAIComponent", "GroqModel", "HuggingFaceEndpointsComponent", "LMStudioModelComponent", "MaritalkModelComponent", "MistralAIModelComponent", - "NVIDIAModelComponent", "NovitaModelComponent", - "OpenAIModelComponent", "OpenRouterComponent", "PerplexityComponent", "QianfanChatEndpointComponent", diff --git a/src/backend/base/langflow/components/memories/__init__.py b/src/backend/base/langflow/components/memories/__init__.py index f53bf0a73..f92a391e9 100644 --- a/src/backend/base/langflow/components/memories/__init__.py +++ b/src/backend/base/langflow/components/memories/__init__.py @@ -1,12 +1,8 @@ -from .astra_db import AstraDBChatMemory -from .cassandra import CassandraChatMemory from .mem0_chat_memory import Mem0MemoryComponent from .redis import RedisIndexChatMemory from .zep import ZepChatMemory __all__ = [ - "AstraDBChatMemory", - "CassandraChatMemory", "Mem0MemoryComponent", "RedisIndexChatMemory", "ZepChatMemory", diff --git a/src/backend/base/langflow/components/nvidia/__init__.py b/src/backend/base/langflow/components/nvidia/__init__.py index 079560a00..5d58e6bf2 100644 --- a/src/backend/base/langflow/components/nvidia/__init__.py +++ b/src/backend/base/langflow/components/nvidia/__init__.py @@ -1,11 +1,19 @@ import sys +from .nvidia import NVIDIAModelComponent +from .nvidia_embedding import NVIDIAEmbeddingsComponent from .nvidia_ingest import NvidiaIngestComponent from .nvidia_rerank import NvidiaRerankComponent if sys.platform == "win32": from .system_assist import NvidiaSystemAssistComponent - __all__ = ["NvidiaIngestComponent", "NvidiaRerankComponent", "NvidiaSystemAssistComponent"] + __all__ = [ + "NVIDIAEmbeddingsComponent", + "NVIDIAModelComponent", + "NvidiaIngestComponent", + "NvidiaRerankComponent", + "NvidiaSystemAssistComponent", + ] else: - __all__ = ["NvidiaIngestComponent", "NvidiaRerankComponent"] + __all__ = ["NVIDIAEmbeddingsComponent", "NVIDIAModelComponent", "NvidiaIngestComponent", "NvidiaRerankComponent"] diff --git a/src/backend/base/langflow/components/languagemodels/nvidia.py b/src/backend/base/langflow/components/nvidia/nvidia.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/nvidia.py rename to src/backend/base/langflow/components/nvidia/nvidia.py diff --git a/src/backend/base/langflow/components/embeddings/nvidia.py b/src/backend/base/langflow/components/nvidia/nvidia_embedding.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/nvidia.py rename to src/backend/base/langflow/components/nvidia/nvidia_embedding.py diff --git a/src/backend/base/langflow/components/ollama/__init__.py b/src/backend/base/langflow/components/ollama/__init__.py new file mode 100644 index 000000000..45dc85aff --- /dev/null +++ b/src/backend/base/langflow/components/ollama/__init__.py @@ -0,0 +1,7 @@ +from .ollama import ChatOllamaComponent +from .ollama_embeddings import OllamaEmbeddingsComponent + +__all__ = [ + "ChatOllamaComponent", + "OllamaEmbeddingsComponent", +] diff --git a/src/backend/base/langflow/components/languagemodels/ollama.py b/src/backend/base/langflow/components/ollama/ollama.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/ollama.py rename to src/backend/base/langflow/components/ollama/ollama.py diff --git a/src/backend/base/langflow/components/embeddings/ollama.py b/src/backend/base/langflow/components/ollama/ollama_embeddings.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/ollama.py rename to src/backend/base/langflow/components/ollama/ollama_embeddings.py diff --git a/src/backend/base/langflow/components/openai/__init__.py b/src/backend/base/langflow/components/openai/__init__.py new file mode 100644 index 000000000..b7bd9e044 --- /dev/null +++ b/src/backend/base/langflow/components/openai/__init__.py @@ -0,0 +1,7 @@ +from .openai import OpenAIEmbeddingsComponent +from .openai_chat_model import OpenAIModelComponent + +__all__ = [ + "OpenAIEmbeddingsComponent", + "OpenAIModelComponent", +] diff --git a/src/backend/base/langflow/components/embeddings/openai.py b/src/backend/base/langflow/components/openai/openai.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/openai.py rename to src/backend/base/langflow/components/openai/openai.py diff --git a/src/backend/base/langflow/components/languagemodels/openai_chat_model.py b/src/backend/base/langflow/components/openai/openai_chat_model.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/openai_chat_model.py rename to src/backend/base/langflow/components/openai/openai_chat_model.py diff --git a/src/backend/base/langflow/components/processing/__init__.py b/src/backend/base/langflow/components/processing/__init__.py index 506f24162..4f26c27d8 100644 --- a/src/backend/base/langflow/components/processing/__init__.py +++ b/src/backend/base/langflow/components/processing/__init__.py @@ -14,6 +14,7 @@ from .message_to_data import MessageToDataComponent from .parse_data import ParseDataComponent from .parse_json_data import ParseJSONDataComponent from .parser import ParserComponent +from .prompt import PromptComponent from .python_repl_core import PythonREPLComponent from .regex import RegexExtractorComponent from .select_data import SelectDataComponent @@ -38,6 +39,7 @@ __all__ = [ "ParseDataFrameComponent", "ParseJSONDataComponent", "ParserComponent", + "PromptComponent", "PythonREPLComponent", "RegexExtractorComponent", "SelectDataComponent", diff --git a/src/backend/base/langflow/components/processing/lambda_filter.py b/src/backend/base/langflow/components/processing/lambda_filter.py index 78286836b..059a4c6f1 100644 --- a/src/backend/base/langflow/components/processing/lambda_filter.py +++ b/src/backend/base/langflow/components/processing/lambda_filter.py @@ -16,7 +16,7 @@ if TYPE_CHECKING: class LambdaFilterComponent(Component): display_name = "Smart Function" description = "Uses an LLM to generate a function for filtering or transforming structured data." - icon = "test-tube-diagonal" + icon = "square-function" name = "Smart Function" inputs = [ diff --git a/src/backend/base/langflow/components/prompts/prompt.py b/src/backend/base/langflow/components/processing/prompt.py similarity index 95% rename from src/backend/base/langflow/components/prompts/prompt.py rename to src/backend/base/langflow/components/processing/prompt.py index b23c677db..df9661ade 100644 --- a/src/backend/base/langflow/components/prompts/prompt.py +++ b/src/backend/base/langflow/components/processing/prompt.py @@ -7,11 +7,12 @@ from langflow.template.utils import update_template_values class PromptComponent(Component): - display_name: str = "Prompt" + display_name: str = "Prompt Template" description: str = "Create a prompt template with dynamic variables." icon = "braces" trace_type = "prompt" - name = "Prompt" + name = "Prompt Template" + priority = 0 # Set priority to 0 to make it appear first inputs = [ PromptInput(name="template", display_name="Template"), diff --git a/src/backend/base/langflow/components/prompts/__init__.py b/src/backend/base/langflow/components/prompts/__init__.py deleted file mode 100644 index 89e6cec0f..000000000 --- a/src/backend/base/langflow/components/prompts/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ -from .prompt import PromptComponent - -__all__ = ["PromptComponent"] diff --git a/src/backend/base/langflow/components/vertexai/__init__.py b/src/backend/base/langflow/components/vertexai/__init__.py new file mode 100644 index 000000000..6311eaa81 --- /dev/null +++ b/src/backend/base/langflow/components/vertexai/__init__.py @@ -0,0 +1,7 @@ +from .vertexai import ChatVertexAIComponent +from .vertexai_embeddings import VertexAIEmbeddingsComponent + +__all__ = [ + "ChatVertexAIComponent", + "VertexAIEmbeddingsComponent", +] diff --git a/src/backend/base/langflow/components/languagemodels/vertexai.py b/src/backend/base/langflow/components/vertexai/vertexai.py similarity index 100% rename from src/backend/base/langflow/components/languagemodels/vertexai.py rename to src/backend/base/langflow/components/vertexai/vertexai.py diff --git a/src/backend/base/langflow/components/embeddings/vertexai.py b/src/backend/base/langflow/components/vertexai/vertexai_embeddings.py similarity index 100% rename from src/backend/base/langflow/components/embeddings/vertexai.py rename to src/backend/base/langflow/components/vertexai/vertexai_embeddings.py diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json b/src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json index 3a1ea10db..fd4600ef6 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Document Q&A.json @@ -1237,8 +1237,6 @@ "group_outputs": false, "method": "load_files_message", "name": "message", - "options": null, - "required_inputs": null, "selected": "Message", "tool_mode": true, "types": [ diff --git a/src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json b/src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json index 99e3d4efd..5e1575f02 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json +++ b/src/backend/base/langflow/initial_setup/starter_projects/Pokédex Agent.json @@ -1790,4 +1790,4 @@ "tags": [ "agents" ] -} \ No newline at end of file +} diff --git a/src/backend/base/langflow/initial_setup/starter_projects/basic_prompting.py b/src/backend/base/langflow/initial_setup/starter_projects/basic_prompting.py index 64864615c..9f8cc0846 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/basic_prompting.py +++ b/src/backend/base/langflow/initial_setup/starter_projects/basic_prompting.py @@ -1,6 +1,6 @@ from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.languagemodels import OpenAIModelComponent -from langflow.components.prompts import PromptComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.graph import Graph diff --git a/src/backend/base/langflow/initial_setup/starter_projects/blog_writer.py b/src/backend/base/langflow/initial_setup/starter_projects/blog_writer.py index e4ce99720..f33d6ccc7 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/blog_writer.py +++ b/src/backend/base/langflow/initial_setup/starter_projects/blog_writer.py @@ -2,9 +2,8 @@ from textwrap import dedent from langflow.components.data import URLComponent from langflow.components.input_output import ChatOutput, TextInputComponent -from langflow.components.languagemodels import OpenAIModelComponent -from langflow.components.processing import ParserComponent -from langflow.components.prompts import PromptComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import ParserComponent, PromptComponent from langflow.graph import Graph diff --git a/src/backend/base/langflow/initial_setup/starter_projects/complex_agent.py b/src/backend/base/langflow/initial_setup/starter_projects/complex_agent.py index 78ab65bc8..8880c36e1 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/complex_agent.py +++ b/src/backend/base/langflow/initial_setup/starter_projects/complex_agent.py @@ -2,8 +2,8 @@ from langflow.components.crewai.crewai import CrewAIAgentComponent from langflow.components.crewai.hierarchical_crew import HierarchicalCrewComponent from langflow.components.crewai.hierarchical_task import HierarchicalTaskComponent from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.languagemodels import OpenAIModelComponent -from langflow.components.prompts import PromptComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.components.tools import SearchAPIComponent, YfinanceToolComponent from langflow.graph import Graph diff --git a/src/backend/base/langflow/initial_setup/starter_projects/document_qa.py b/src/backend/base/langflow/initial_setup/starter_projects/document_qa.py index ff40357d4..db8708a59 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/document_qa.py +++ b/src/backend/base/langflow/initial_setup/starter_projects/document_qa.py @@ -1,7 +1,7 @@ from langflow.components.data import FileComponent from langflow.components.input_output import ChatInput, ChatOutput from langflow.components.models import LanguageModelComponent -from langflow.components.prompts import PromptComponent +from langflow.components.processing import PromptComponent from langflow.graph import Graph diff --git a/src/backend/base/langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py b/src/backend/base/langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py index 1d4520185..3b1cfa92d 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +++ b/src/backend/base/langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py @@ -2,8 +2,8 @@ from langflow.components.crewai.crewai import CrewAIAgentComponent from langflow.components.crewai.hierarchical_crew import HierarchicalCrewComponent from langflow.components.crewai.hierarchical_task import HierarchicalTaskComponent from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.languagemodels import OpenAIModelComponent -from langflow.components.prompts import PromptComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.components.tools import SearchAPIComponent from langflow.graph import Graph diff --git a/src/backend/base/langflow/initial_setup/starter_projects/memory_chatbot.py b/src/backend/base/langflow/initial_setup/starter_projects/memory_chatbot.py index 9e68aeb2a..41120b8d3 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/memory_chatbot.py +++ b/src/backend/base/langflow/initial_setup/starter_projects/memory_chatbot.py @@ -1,8 +1,8 @@ from langflow.components.helpers.memory import MemoryComponent from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.languagemodels import OpenAIModelComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.components.processing.converter import TypeConverterComponent -from langflow.components.prompts import PromptComponent from langflow.graph import Graph diff --git a/src/backend/base/langflow/initial_setup/starter_projects/sequential_tasks_agent.py b/src/backend/base/langflow/initial_setup/starter_projects/sequential_tasks_agent.py index 515ff171f..588b40171 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/sequential_tasks_agent.py +++ b/src/backend/base/langflow/initial_setup/starter_projects/sequential_tasks_agent.py @@ -1,8 +1,8 @@ from langflow.components.crewai.sequential_crew import SequentialCrewComponent from langflow.components.crewai.sequential_task_agent import SequentialTaskAgentComponent from langflow.components.input_output import ChatOutput, TextInputComponent -from langflow.components.languagemodels import OpenAIModelComponent -from langflow.components.prompts import PromptComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.components.tools import SearchAPIComponent from langflow.graph import Graph diff --git a/src/backend/base/langflow/initial_setup/starter_projects/vector_store_rag.py b/src/backend/base/langflow/initial_setup/starter_projects/vector_store_rag.py index eec1be483..14b018598 100644 --- a/src/backend/base/langflow/initial_setup/starter_projects/vector_store_rag.py +++ b/src/backend/base/langflow/initial_setup/starter_projects/vector_store_rag.py @@ -1,12 +1,11 @@ from textwrap import dedent from langflow.components.data import FileComponent -from langflow.components.embeddings import OpenAIEmbeddingsComponent from langflow.components.input_output import ChatInput, ChatOutput from langflow.components.models import LanguageModelComponent -from langflow.components.processing import ParserComponent +from langflow.components.openai.openai import OpenAIEmbeddingsComponent +from langflow.components.processing import ParserComponent, PromptComponent from langflow.components.processing.split_text import SplitTextComponent -from langflow.components.prompts import PromptComponent from langflow.components.vectorstores import AstraDBVectorStoreComponent from langflow.graph import Graph diff --git a/src/backend/tests/integration/components/astra/test_astra_component.py b/src/backend/tests/integration/components/astra/test_astra_component.py index 6297ea5b9..c324b0d1b 100644 --- a/src/backend/tests/integration/components/astra/test_astra_component.py +++ b/src/backend/tests/integration/components/astra/test_astra_component.py @@ -4,7 +4,7 @@ import pytest from astrapy import DataAPIClient from langchain_astradb import AstraDBVectorStore, VectorServiceOptions from langchain_core.documents import Document -from langflow.components.embeddings import OpenAIEmbeddingsComponent +from langflow.components.openai.openai import OpenAIEmbeddingsComponent from langflow.components.vectorstores import AstraDBVectorStoreComponent from langflow.schema.data import Data diff --git a/src/backend/tests/integration/components/mcp/test_mcp_component.py b/src/backend/tests/integration/components/mcp/test_mcp_component.py index db2157a00..16b22b86d 100644 --- a/src/backend/tests/integration/components/mcp/test_mcp_component.py +++ b/src/backend/tests/integration/components/mcp/test_mcp_component.py @@ -6,7 +6,7 @@ from tests.integration.utils import run_single_component # TODO: Add more tests for MCPToolsComponent @pytest.mark.asyncio async def test_mcp_component(): - from langflow.components.data.mcp_component import MCPToolsComponent + from langflow.components.agents.mcp_component import MCPToolsComponent inputs = {} diff --git a/src/backend/tests/integration/components/output_parsers/test_output_parser.py b/src/backend/tests/integration/components/output_parsers/test_output_parser.py index 0754b350f..e52bc374d 100644 --- a/src/backend/tests/integration/components/output_parsers/test_output_parser.py +++ b/src/backend/tests/integration/components/output_parsers/test_output_parser.py @@ -2,8 +2,8 @@ import os import pytest from langflow.components.helpers import OutputParserComponent -from langflow.components.languagemodels import OpenAIModelComponent -from langflow.components.prompts import PromptComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from tests.integration.utils import ComponentInputHandle, run_single_component diff --git a/src/backend/tests/integration/components/prompts/test_prompt.py b/src/backend/tests/integration/components/prompts/test_prompt.py index 41c61c93f..75a57d637 100644 --- a/src/backend/tests/integration/components/prompts/test_prompt.py +++ b/src/backend/tests/integration/components/prompts/test_prompt.py @@ -1,4 +1,4 @@ -from langflow.components.prompts import PromptComponent +from langflow.components.processing import PromptComponent from langflow.schema.message import Message from tests.integration.utils import run_single_component diff --git a/src/backend/tests/integration/flows/test_basic_prompting.py b/src/backend/tests/integration/flows/test_basic_prompting.py index fcf74b1eb..66d00cf39 100644 --- a/src/backend/tests/integration/flows/test_basic_prompting.py +++ b/src/backend/tests/integration/flows/test_basic_prompting.py @@ -1,5 +1,5 @@ from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.prompts import PromptComponent +from langflow.components.processing import PromptComponent from langflow.graph import Graph from langflow.schema.message import Message diff --git a/src/backend/tests/unit/base/tools/test_component_toolkit.py b/src/backend/tests/unit/base/tools/test_component_toolkit.py index 631645e1c..73b7d6650 100644 --- a/src/backend/tests/unit/base/tools/test_component_toolkit.py +++ b/src/backend/tests/unit/base/tools/test_component_toolkit.py @@ -7,7 +7,7 @@ from langflow.base.tools.component_tool import ComponentToolkit from langflow.components.data.sql_executor import SQLComponent from langflow.components.input_output.chat_output import ChatOutput from langflow.components.langchain_utilities import ToolCallingAgentComponent -from langflow.components.languagemodels import OpenAIModelComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent from langflow.components.tools.calculator import CalculatorToolComponent from langflow.graph.graph.base import Graph from pydantic import BaseModel diff --git a/src/backend/tests/unit/components/agents/test_tool_calling_agent.py b/src/backend/tests/unit/components/agents/test_tool_calling_agent.py index 4c5b82008..d636e0230 100644 --- a/src/backend/tests/unit/components/agents/test_tool_calling_agent.py +++ b/src/backend/tests/unit/components/agents/test_tool_calling_agent.py @@ -2,7 +2,7 @@ import os import pytest from langflow.components.langchain_utilities import ToolCallingAgentComponent -from langflow.components.languagemodels.openai_chat_model import OpenAIModelComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent from langflow.components.tools.calculator import CalculatorToolComponent diff --git a/src/backend/tests/unit/components/data/test_mcp_component.py b/src/backend/tests/unit/components/data/test_mcp_component.py index 5f94d9501..00529ca67 100644 --- a/src/backend/tests/unit/components/data/test_mcp_component.py +++ b/src/backend/tests/unit/components/data/test_mcp_component.py @@ -2,7 +2,7 @@ import asyncio from unittest.mock import AsyncMock, MagicMock, patch import pytest -from langflow.components.data.mcp_component import MCPSseClient, MCPStdioClient, MCPToolsComponent +from langflow.components.agents.mcp_component import MCPSseClient, MCPStdioClient, MCPToolsComponent from tests.base import ComponentTestBaseWithoutClient, VersionComponentMapping diff --git a/src/backend/tests/unit/components/languagemodels/test_chatollama_component.py b/src/backend/tests/unit/components/languagemodels/test_chatollama_component.py index 7b98308c9..83e578792 100644 --- a/src/backend/tests/unit/components/languagemodels/test_chatollama_component.py +++ b/src/backend/tests/unit/components/languagemodels/test_chatollama_component.py @@ -2,7 +2,7 @@ from unittest.mock import AsyncMock, MagicMock, patch import pytest from langchain_ollama import ChatOllama -from langflow.components.languagemodels.ollama import ChatOllamaComponent +from langflow.components.ollama.ollama import ChatOllamaComponent from tests.base import ComponentTestBaseWithoutClient @@ -40,7 +40,7 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient): # Provide an empty list or the actual mapping if versioned files exist return [] - @patch("langflow.components.languagemodels.ollama.ChatOllama") + @patch("langflow.components.ollama.ollama.ChatOllama") async def test_build_model(self, mock_chat_ollama, component_class, default_kwargs): mock_instance = MagicMock() mock_chat_ollama.return_value = mock_instance @@ -68,7 +68,7 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient): ) assert model == mock_instance - @patch("langflow.components.languagemodels.ollama.ChatOllama") + @patch("langflow.components.ollama.ollama.ChatOllama") async def test_build_model_missing_base_url(self, mock_chat_ollama, component_class, default_kwargs): # Make the mock raise an exception to simulate connection failure mock_chat_ollama.side_effect = Exception("connection error") @@ -78,8 +78,8 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient): component.build_model() @pytest.mark.asyncio - @patch("langflow.components.languagemodels.ollama.httpx.AsyncClient.post") - @patch("langflow.components.languagemodels.ollama.httpx.AsyncClient.get") + @patch("langflow.components.ollama.ollama.httpx.AsyncClient.post") + @patch("langflow.components.ollama.ollama.httpx.AsyncClient.get") async def test_get_models_success(self, mock_get, mock_post): component = ChatOllamaComponent() mock_get_response = AsyncMock() @@ -107,7 +107,7 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient): assert mock_post.call_count == 2 @pytest.mark.asyncio - @patch("langflow.components.languagemodels.ollama.httpx.AsyncClient.get") + @patch("langflow.components.ollama.ollama.httpx.AsyncClient.get") async def test_get_models_failure(self, mock_get): import httpx @@ -147,7 +147,7 @@ class TestChatOllamaComponent(ComponentTestBaseWithoutClient): assert updated_config["mirostat_eta"]["value"] == 0.2 assert updated_config["mirostat_tau"]["value"] == 10 - @patch("langflow.components.languagemodels.ollama.httpx.AsyncClient.get") + @patch("langflow.components.ollama.ollama.httpx.AsyncClient.get") @pytest.mark.asyncio async def test_update_build_config_model_name(self, mock_get): component = ChatOllamaComponent() diff --git a/src/backend/tests/unit/components/languagemodels/test_huggingface.py b/src/backend/tests/unit/components/languagemodels/test_huggingface.py index 8ef9d430c..c3d28b8cf 100644 --- a/src/backend/tests/unit/components/languagemodels/test_huggingface.py +++ b/src/backend/tests/unit/components/languagemodels/test_huggingface.py @@ -1,4 +1,4 @@ -from langflow.components.languagemodels.huggingface import DEFAULT_MODEL, HuggingFaceEndpointsComponent +from langflow.components.huggingface.huggingface import DEFAULT_MODEL, HuggingFaceEndpointsComponent from langflow.inputs.inputs import DictInput, DropdownInput, FloatInput, IntInput, SecretStrInput, SliderInput, StrInput diff --git a/src/backend/tests/unit/components/languagemodels/test_openai_model.py b/src/backend/tests/unit/components/languagemodels/test_openai_model.py index 627ee738a..e5e0e3168 100644 --- a/src/backend/tests/unit/components/languagemodels/test_openai_model.py +++ b/src/backend/tests/unit/components/languagemodels/test_openai_model.py @@ -3,7 +3,7 @@ from unittest.mock import MagicMock, patch import pytest from langchain_openai import ChatOpenAI -from langflow.components.languagemodels.openai_chat_model import OpenAIModelComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent from tests.base import ComponentTestBaseWithoutClient @@ -33,7 +33,7 @@ class TestOpenAIModelComponent(ComponentTestBaseWithoutClient): # Provide an empty list or the actual mapping if versioned files exist return [] - @patch("langflow.components.languagemodels.openai_chat_model.ChatOpenAI") + @patch("langflow.components.openai.openai_chat_model.ChatOpenAI") async def test_build_model(self, mock_chat_openai, component_class, default_kwargs): mock_instance = MagicMock() mock_chat_openai.return_value = mock_instance @@ -53,7 +53,7 @@ class TestOpenAIModelComponent(ComponentTestBaseWithoutClient): ) assert model == mock_instance - @patch("langflow.components.languagemodels.openai_chat_model.ChatOpenAI") + @patch("langflow.components.openai.openai_chat_model.ChatOpenAI") async def test_build_model_reasoning_model(self, mock_chat_openai, component_class, default_kwargs): mock_instance = MagicMock() mock_chat_openai.return_value = mock_instance @@ -78,7 +78,7 @@ class TestOpenAIModelComponent(ComponentTestBaseWithoutClient): assert "temperature" not in kwargs assert "seed" not in kwargs - @patch("langflow.components.languagemodels.openai_chat_model.ChatOpenAI") + @patch("langflow.components.openai.openai_chat_model.ChatOpenAI") async def test_build_model_with_json_mode(self, mock_chat_openai, component_class, default_kwargs): mock_instance = MagicMock() mock_bound_instance = MagicMock() @@ -93,7 +93,7 @@ class TestOpenAIModelComponent(ComponentTestBaseWithoutClient): mock_instance.bind.assert_called_once_with(response_format={"type": "json_object"}) assert model == mock_bound_instance - @patch("langflow.components.languagemodels.openai_chat_model.ChatOpenAI") + @patch("langflow.components.openai.openai_chat_model.ChatOpenAI") async def test_build_model_no_api_key(self, mock_chat_openai, component_class, default_kwargs): mock_instance = MagicMock() mock_chat_openai.return_value = mock_instance @@ -105,7 +105,7 @@ class TestOpenAIModelComponent(ComponentTestBaseWithoutClient): args, kwargs = mock_chat_openai.call_args assert kwargs["api_key"] is None - @patch("langflow.components.languagemodels.openai_chat_model.ChatOpenAI") + @patch("langflow.components.openai.openai_chat_model.ChatOpenAI") async def test_build_model_max_tokens_zero(self, mock_chat_openai, component_class, default_kwargs): mock_instance = MagicMock() mock_chat_openai.return_value = mock_instance diff --git a/src/backend/tests/unit/components/prompts/test_prompt_component.py b/src/backend/tests/unit/components/prompts/test_prompt_component.py index dc61f6172..5db80334d 100644 --- a/src/backend/tests/unit/components/prompts/test_prompt_component.py +++ b/src/backend/tests/unit/components/prompts/test_prompt_component.py @@ -1,5 +1,5 @@ import pytest -from langflow.components.prompts import PromptComponent +from langflow.components.processing import PromptComponent from tests.base import ComponentTestBaseWithClient diff --git a/src/backend/tests/unit/components/vectorstores/test_chroma_vector_store_component.py b/src/backend/tests/unit/components/vectorstores/test_chroma_vector_store_component.py index 061c417a1..4fee4b194 100644 --- a/src/backend/tests/unit/components/vectorstores/test_chroma_vector_store_component.py +++ b/src/backend/tests/unit/components/vectorstores/test_chroma_vector_store_component.py @@ -19,7 +19,7 @@ class TestChromaVectorStoreComponent(ComponentTestBaseWithoutClient): @pytest.fixture def default_kwargs(self, tmp_path: Path) -> dict[str, Any]: """Return the default kwargs for the component.""" - from langflow.components.embeddings.openai import OpenAIEmbeddingsComponent + from langflow.components.openai.openai import OpenAIEmbeddingsComponent if os.getenv("OPENAI_API_KEY") is None: pytest.skip("OPENAI_API_KEY is not set") diff --git a/src/backend/tests/unit/components/vectorstores/test_local_db_component.py b/src/backend/tests/unit/components/vectorstores/test_local_db_component.py index 428934e21..f3c2a435e 100644 --- a/src/backend/tests/unit/components/vectorstores/test_local_db_component.py +++ b/src/backend/tests/unit/components/vectorstores/test_local_db_component.py @@ -21,7 +21,7 @@ class TestLocalDBComponent(ComponentTestBaseWithoutClient): @pytest.fixture def default_kwargs(self, tmp_path: Path) -> dict[str, Any]: """Return the default kwargs for the component.""" - from langflow.components.embeddings.openai import OpenAIEmbeddingsComponent + from langflow.components.openai.openai import OpenAIEmbeddingsComponent if os.getenv("OPENAI_API_KEY") is None: pytest.skip("OPENAI_API_KEY is not set") diff --git a/src/backend/tests/unit/graph/edge/test_edge_base.py b/src/backend/tests/unit/graph/edge/test_edge_base.py index 0cd7ad436..6b2ef7952 100644 --- a/src/backend/tests/unit/graph/edge/test_edge_base.py +++ b/src/backend/tests/unit/graph/edge/test_edge_base.py @@ -2,8 +2,8 @@ import re import pytest from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.languagemodels import OpenAIModelComponent -from langflow.components.prompts import PromptComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.graph.graph.base import Graph diff --git a/src/backend/tests/unit/graph/graph/test_cycles.py b/src/backend/tests/unit/graph/graph/test_cycles.py index 0400cdace..744e08d15 100644 --- a/src/backend/tests/unit/graph/graph/test_cycles.py +++ b/src/backend/tests/unit/graph/graph/test_cycles.py @@ -3,9 +3,9 @@ import os import pytest from langflow.components.input_output import ChatInput, ChatOutput, TextOutputComponent from langflow.components.input_output.text import TextInputComponent -from langflow.components.languagemodels import OpenAIModelComponent from langflow.components.logic.conditional_router import ConditionalRouterComponent -from langflow.components.prompts import PromptComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.custom.custom_component.component import Component from langflow.graph.graph.base import Graph from langflow.graph.graph.utils import find_cycle_vertices diff --git a/src/backend/tests/unit/graph/graph/test_graph_state_model.py b/src/backend/tests/unit/graph/graph/test_graph_state_model.py index 07d6cd112..8d1e19453 100644 --- a/src/backend/tests/unit/graph/graph/test_graph_state_model.py +++ b/src/backend/tests/unit/graph/graph/test_graph_state_model.py @@ -3,9 +3,9 @@ from typing import TYPE_CHECKING import pytest from langflow.components.helpers.memory import MemoryComponent from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.languagemodels import OpenAIModelComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.components.processing.converter import TypeConverterComponent -from langflow.components.prompts import PromptComponent from langflow.graph.graph.base import Graph from langflow.graph.graph.constants import Finish from langflow.graph.graph.state_model import create_state_model_from_graph diff --git a/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py b/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py index fed2d21b7..43988a5fe 100644 --- a/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py +++ b/src/backend/tests/unit/initial_setup/starter_projects/test_memory_chatbot.py @@ -5,9 +5,9 @@ from typing import TYPE_CHECKING import pytest from langflow.components.helpers.memory import MemoryComponent from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.languagemodels import OpenAIModelComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import PromptComponent from langflow.components.processing.converter import TypeConverterComponent -from langflow.components.prompts import PromptComponent from langflow.graph.graph.base import Graph from langflow.graph.graph.constants import Finish @@ -131,7 +131,7 @@ def test_memory_chatbot_dump_components_and_edges(memory_chatbot_graph: Graph): assert nodes[3]["data"]["type"] == "OpenAIModel" assert nodes[3]["id"] == "openai" - assert nodes[4]["data"]["type"] == "Prompt" + assert nodes[4]["data"]["type"] == "Prompt Template" assert nodes[4]["id"] == "prompt" # Check edges diff --git a/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py b/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py index ff6c29a2b..9dcff1778 100644 --- a/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py +++ b/src/backend/tests/unit/initial_setup/starter_projects/test_vector_store_rag.py @@ -4,12 +4,11 @@ from textwrap import dedent import pytest from langflow.components.data import FileComponent -from langflow.components.embeddings import OpenAIEmbeddingsComponent from langflow.components.input_output import ChatInput, ChatOutput -from langflow.components.languagemodels import OpenAIModelComponent -from langflow.components.processing import ParseDataComponent +from langflow.components.openai.openai import OpenAIEmbeddingsComponent +from langflow.components.openai.openai_chat_model import OpenAIModelComponent +from langflow.components.processing import ParseDataComponent, PromptComponent from langflow.components.processing.split_text import SplitTextComponent -from langflow.components.prompts import PromptComponent from langflow.components.vectorstores import AstraDBVectorStoreComponent from langflow.graph.graph.base import Graph from langflow.graph.graph.constants import Finish @@ -199,7 +198,7 @@ def test_vector_store_rag_dump_components_and_edges(ingestion_graph, rag_graph): assert rag_nodes[4]["data"]["type"] == "ParseData" assert rag_nodes[4]["id"] == "parse-data-123" - assert rag_nodes[5]["data"]["type"] == "Prompt" + assert rag_nodes[5]["data"]["type"] == "Prompt Template" assert rag_nodes[5]["id"] == "prompt-123" assert rag_nodes[6]["data"]["type"] == "AstraDB" @@ -259,7 +258,7 @@ def test_vector_store_rag_add(ingestion_graph: Graph, rag_graph: Graph): {"id": "openai-123", "type": "OpenAIModel"}, {"id": "openai-embeddings-124", "type": "OpenAIEmbeddings"}, {"id": "parse-data-123", "type": "ParseData"}, - {"id": "prompt-123", "type": "Prompt"}, + {"id": "prompt-123", "type": "Prompt Template"}, {"id": "rag-vector-store-123", "type": "AstraDB"}, ], key=operator.itemgetter("id"), diff --git a/src/backend/tests/unit/test_endpoints.py b/src/backend/tests/unit/test_endpoints.py index a4dc9da50..f9a9108c8 100644 --- a/src/backend/tests/unit/test_endpoints.py +++ b/src/backend/tests/unit/test_endpoints.py @@ -143,7 +143,7 @@ async def test_get_all(client: AsyncClient, logged_in_headers): files ) # Less or equal because we might have some files that don't have the dependencies installed assert "ChatInput" in json_response["input_output"] - assert "Prompt" in json_response["prompts"] + assert "Prompt Template" in json_response["processing"] assert "ChatOutput" in json_response["input_output"] diff --git a/src/frontend/src/utils/styleUtils.ts b/src/frontend/src/utils/styleUtils.ts index a6658f4e3..739ff693d 100644 --- a/src/frontend/src/utils/styleUtils.ts +++ b/src/frontend/src/utils/styleUtils.ts @@ -205,16 +205,17 @@ export const FILE_ICONS = { export const SIDEBAR_CATEGORIES = [ { display_name: "Saved", name: "saved_components", icon: "GradientSave" }, - { display_name: "I/O", name: "input_output", icon: "Cable" }, + { display_name: "Input / Output", name: "input_output", icon: "Cable" }, + { display_name: "Agents", name: "agents", icon: "Bot" }, + { display_name: "Models", name: "models", icon: "BrainCog" }, + { display_name: "Data", name: "data", icon: "Database" }, + { display_name: "Vector Stores", name: "vectorstores", icon: "Layers" }, + { display_name: "Processing", name: "processing", icon: "ListFilter" }, + { display_name: "Logic", name: "logic", icon: "ArrowRightLeft" }, + { display_name: "Helpers", name: "helpers", icon: "Wand2" }, { display_name: "Inputs", name: "inputs", icon: "Download" }, { display_name: "Outputs", name: "outputs", icon: "Upload" }, { display_name: "Prompts", name: "prompts", icon: "braces" }, - { display_name: "Models", name: "models", icon: "BrainCog" }, - { display_name: "Data", name: "data", icon: "Database" }, - { display_name: "Processing", name: "processing", icon: "ListFilter" }, - - { display_name: "Vector Stores", name: "vectorstores", icon: "Layers" }, - { display_name: "Agents", name: "agents", icon: "Bot" }, { display_name: "Chains", name: "chains", icon: "Link" }, { display_name: "Loaders", name: "documentloaders", icon: "Paperclip" }, { display_name: "Link Extractors", name: "link_extractors", icon: "Link2" }, @@ -224,8 +225,6 @@ export const SIDEBAR_CATEGORIES = [ { display_name: "Text Splitters", name: "textsplitters", icon: "Scissors" }, { display_name: "Toolkits", name: "toolkits", icon: "Package2" }, { display_name: "Tools", name: "tools", icon: "Hammer" }, - { display_name: "Logic", name: "logic", icon: "ArrowRightLeft" }, - { display_name: "Helpers", name: "helpers", icon: "Wand2" }, ]; export const SIDEBAR_BUNDLES = [ @@ -236,28 +235,34 @@ export const SIDEBAR_BUNDLES = [ }, { display_name: "Embeddings", name: "embeddings", icon: "Binary" }, { display_name: "Memories", name: "memories", icon: "Cpu" }, + { display_name: "AI/ML", name: "aiml", icon: "AI/ML" }, + { display_name: "Anthropic", name: "anthropic", icon: "Anthropic" }, { display_name: "Amazon", name: "amazon", icon: "Amazon" }, - { display_name: "Gmail", name: "gmail", icon: "Gmail" }, - { display_name: "Outlook", name: "outlook", icon: "Outlook" }, - { display_name: "GitHub", name: "github", icon: "Github" }, - { - display_name: "Googlecalendar", - name: "googlecalendar", - icon: "Googlecalendar", - }, // Add apify { display_name: "Apify", name: "apify", icon: "Apify" }, { display_name: "LangChain", name: "langchain_utilities", icon: "LangChain" }, { display_name: "AgentQL", name: "agentql", icon: "AgentQL" }, { display_name: "AssemblyAI", name: "assemblyai", icon: "AssemblyAI" }, + { display_name: "Azure", name: "azure", icon: "Azure" }, { display_name: "DataStax", name: "datastax", icon: "AstraDB", }, { display_name: "Docling", name: "docling", icon: "Docling" }, - { display_name: "Olivya", name: "olivya", icon: "Olivya" }, + { display_name: "Gmail", name: "gmail", icon: "Gmail" }, + { display_name: "GitHub", name: "github", icon: "Github" }, + { + display_name: "Googlecalendar", + name: "googlecalendar", + icon: "Googlecalendar", + }, + { display_name: "HuggingFace", name: "huggingface", icon: "HuggingFace" }, + { display_name: "IBM", name: "ibm", icon: "WatsonxAI" }, { display_name: "LangWatch", name: "langwatch", icon: "Langwatch" }, + { display_name: "Olivya", name: "olivya", icon: "Olivya" }, + { display_name: "Outlook", name: "outlook", icon: "Outlook" }, + { display_name: "OpenAI", name: "openai", icon: "OpenAI" }, { display_name: "Notion", name: "Notion", icon: "Notion" }, { display_name: "Needle", name: "needle", icon: "Needle" }, { display_name: "NVIDIA", name: "nvidia", icon: "NVIDIA" }, @@ -284,6 +289,8 @@ export const SIDEBAR_BUNDLES = [ { display_name: "Cleanlab", name: "cleanlab", icon: "Cleanlab" }, { display_name: "Search", name: "search", icon: "Search" }, { display_name: "Tavily", name: "tavily", icon: "TavilyIcon" }, + { display_name: "Ollama", name: "ollama", icon: "Ollama" }, + { display_name: "VertexAI", name: "vertexai", icon: "VertexAI" }, ]; export const categoryIcons: Record = { diff --git a/src/frontend/tests/core/features/filterSidebar.spec.ts b/src/frontend/tests/core/features/filterSidebar.spec.ts index 2b59c7632..3d0e794da 100644 --- a/src/frontend/tests/core/features/filterSidebar.spec.ts +++ b/src/frontend/tests/core/features/filterSidebar.spec.ts @@ -56,8 +56,7 @@ test( .isVisible(); }); - await expect(page.getByTestId("disclosure-i/o")).toBeVisible(); - await expect(page.getByTestId("disclosure-prompts")).toBeVisible(); + await expect(page.getByTestId("disclosure-input / output")).toBeVisible(); await expect(page.getByTestId("disclosure-models")).toBeVisible(); await expect(page.getByTestId("disclosure-helpers")).toBeVisible(); await expect(page.getByTestId("disclosure-agents")).toBeVisible(); @@ -73,7 +72,7 @@ test( await expect(page.getByTestId("input_outputChat Input")).toBeVisible(); await expect(page.getByTestId("input_outputChat Output")).toBeVisible(); - await expect(page.getByTestId("promptsPrompt")).toBeVisible(); + await expect(page.getByTestId("processingPrompt Template")).toBeVisible(); await expect(page.getByTestId("langchain_utilitiesCSVAgent")).toBeVisible(); await expect( page.getByTestId("langchain_utilitiesConversationChain"), @@ -97,7 +96,9 @@ test( await expect(page.getByTestId("input_outputChat Input")).not.toBeVisible(); await expect(page.getByTestId("input_outputChat Output")).not.toBeVisible(); - await expect(page.getByTestId("promptsPrompt")).not.toBeVisible(); + await expect( + page.getByTestId("processingPrompt Template"), + ).not.toBeVisible(); await expect( page.getByTestId("agentsTool Calling Agent"), ).not.toBeVisible(); diff --git a/src/frontend/tests/core/features/globalVariables.spec.ts b/src/frontend/tests/core/features/globalVariables.spec.ts index b64d00a7c..66f685378 100644 --- a/src/frontend/tests/core/features/globalVariables.spec.ts +++ b/src/frontend/tests/core/features/globalVariables.spec.ts @@ -16,12 +16,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("openai"); - await page.waitForSelector('[data-testid="languagemodelsOpenAI"]', { + await page.waitForSelector('[data-testid="openaiOpenAI"]', { timeout: 1000, }); await page - .getByTestId("languagemodelsOpenAI") + .getByTestId("openaiOpenAI") .hover() .then(async () => { await page.getByTestId("add-component-button-openai").last().click(); diff --git a/src/frontend/tests/core/features/keyboardComponentSearch.spec.ts b/src/frontend/tests/core/features/keyboardComponentSearch.spec.ts index 7a929df37..a624834b3 100644 --- a/src/frontend/tests/core/features/keyboardComponentSearch.spec.ts +++ b/src/frontend/tests/core/features/keyboardComponentSearch.spec.ts @@ -58,7 +58,7 @@ test( await page.keyboard.type("prompt"); // Verify disclosures open with new search - await expect(page.getByTestId("promptsPrompt")).toBeVisible(); + await expect(page.getByTestId("processingPrompt Template")).toBeVisible(); await page.keyboard.press("Tab"); await page.keyboard.press("Tab"); diff --git a/src/frontend/tests/core/integrations/Pokedex Agent.spec.ts b/src/frontend/tests/core/integrations/Pokedex Agent.spec.ts index c36415a1a..4df94a536 100644 --- a/src/frontend/tests/core/integrations/Pokedex Agent.spec.ts +++ b/src/frontend/tests/core/integrations/Pokedex Agent.spec.ts @@ -41,10 +41,7 @@ withEventDeliveryModes( await expect(stopButton).toBeHidden({ timeout: 120000 }); } - const output = await page - .getByTestId("div-chat-message") - .last() - .innerText(); + const output = await page.getByTestId("div-chat-message").innerText(); expect(output).toContain("Charmander"); expect(output.length).toBeGreaterThan(100); }, diff --git a/src/frontend/tests/core/integrations/decisionFlow.spec.ts b/src/frontend/tests/core/integrations/decisionFlow.spec.ts index 48fd3bbf7..f049b8cc3 100644 --- a/src/frontend/tests/core/integrations/decisionFlow.spec.ts +++ b/src/frontend/tests/core/integrations/decisionFlow.spec.ts @@ -152,11 +152,11 @@ test( //---------------------------------- PROMPT await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("prompt"); - await page.waitForSelector('[data-testid="promptsPrompt"]', { + await page.waitForSelector('[data-testid="processingPrompt Template"]', { timeout: 2000, }); await page - .getByTestId("promptsPrompt") + .getByTestId("processingPrompt Template") .dragTo(page.locator('//*[@id="react-flow-id"]'), { targetPosition: { x: 350, y: 300 }, }); @@ -164,14 +164,11 @@ test( //---------------------------------- OPENAI await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("openai"); - await page.waitForSelector( - '[data-testid="languagemodels_openai_draggable"]', - { - timeout: 2000, - }, - ); + await page.waitForSelector('[data-testid="openai_openai_draggable"]', { + timeout: 2000, + }); await page - .getByTestId("languagemodelsOpenAI") + .getByTestId("openaiOpenAI") .dragTo(page.locator('//*[@id="react-flow-id"]'), { targetPosition: { x: 500, y: 300 }, }); @@ -261,7 +258,7 @@ test( .click(); //quebrando aqui await page - .getByTestId("handle-prompt-shownode-true_examples-left") + .getByTestId("handle-prompt template-shownode-true_examples-left") .nth(0) .click(); await page @@ -269,7 +266,7 @@ test( .nth(1) .click(); await page - .getByTestId("handle-prompt-shownode-false_examples-left") + .getByTestId("handle-prompt template-shownode-false_examples-left") .nth(0) .click(); await page @@ -277,11 +274,11 @@ test( .nth(2) .click(); await page - .getByTestId("handle-prompt-shownode-user_message-left") + .getByTestId("handle-prompt template-shownode-user_message-left") .nth(0) .click(); await page - .getByTestId("handle-prompt-shownode-prompt-right") + .getByTestId("handle-prompt template-shownode-prompt-right") .first() .click(); await page diff --git a/src/frontend/tests/core/integrations/textInputOutput.spec.ts b/src/frontend/tests/core/integrations/textInputOutput.spec.ts index b3fe9a178..0cadf6924 100644 --- a/src/frontend/tests/core/integrations/textInputOutput.spec.ts +++ b/src/frontend/tests/core/integrations/textInputOutput.spec.ts @@ -34,7 +34,7 @@ test.skip( await page.getByTestId("sidebar-search-input").fill("openai"); await page.waitForTimeout(1000); await page - .getByTestId("languagemodelsOpenAI") + .getByTestId("openaiOpenAI") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); diff --git a/src/frontend/tests/core/unit/floatComponent.spec.ts b/src/frontend/tests/core/unit/floatComponent.spec.ts index fb0dc89bc..641a6d8ef 100644 --- a/src/frontend/tests/core/unit/floatComponent.spec.ts +++ b/src/frontend/tests/core/unit/floatComponent.spec.ts @@ -14,12 +14,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("nvidia"); - await page.waitForSelector('[data-testid="languagemodelsNVIDIA"]', { + await page.waitForSelector('[data-testid="nvidiaNVIDIA"]', { timeout: 30000, }); await page - .getByTestId("languagemodelsNVIDIA") + .getByTestId("nvidiaNVIDIA") .hover() .then(async () => { // Wait for the API request to complete after clicking the add button diff --git a/src/frontend/tests/core/unit/intComponent.spec.ts b/src/frontend/tests/core/unit/intComponent.spec.ts index 3263697c4..7e0104cfd 100644 --- a/src/frontend/tests/core/unit/intComponent.spec.ts +++ b/src/frontend/tests/core/unit/intComponent.spec.ts @@ -12,12 +12,12 @@ test("IntComponent", { tag: ["@release", "@workspace"] }, async ({ page }) => { await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("openai"); - await page.waitForSelector('[data-testid="languagemodelsOpenAI"]', { + await page.waitForSelector('[data-testid="openaiOpenAI"]', { timeout: 3000, }); await page - .getByTestId("languagemodelsOpenAI") + .getByTestId("openaiOpenAI") .first() .dragTo(page.locator('//*[@id="react-flow-id"]')); diff --git a/src/frontend/tests/core/unit/promptModalComponent.spec.ts b/src/frontend/tests/core/unit/promptModalComponent.spec.ts index 4383ca830..72e3b6ddd 100644 --- a/src/frontend/tests/core/unit/promptModalComponent.spec.ts +++ b/src/frontend/tests/core/unit/promptModalComponent.spec.ts @@ -60,12 +60,12 @@ test( await page.getByTestId("blank-flow").click(); await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("prompt"); - await page.waitForSelector('[data-testid="promptsPrompt"]', { + await page.waitForSelector('[data-testid="processingPrompt Template"]', { timeout: 3000, }); await page - .locator('//*[@id="promptsPrompt"]') + .locator('//*[@id="processingPrompt Template"]') .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); @@ -145,12 +145,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("prompt"); - await page.waitForSelector('[data-testid="promptsPrompt"]', { + await page.waitForSelector('[data-testid="processingPrompt Template"]', { timeout: 3000, }); await page - .locator('//*[@id="promptsPrompt"]') + .locator('//*[@id="processingPrompt Template"]') .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); diff --git a/src/frontend/tests/core/unit/queryInputComponent.spec.ts b/src/frontend/tests/core/unit/queryInputComponent.spec.ts index ace045496..ac7191f44 100644 --- a/src/frontend/tests/core/unit/queryInputComponent.spec.ts +++ b/src/frontend/tests/core/unit/queryInputComponent.spec.ts @@ -17,12 +17,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("openai"); - await page.waitForSelector('[data-testid="languagemodelsOpenAI"]', { + await page.waitForSelector('[data-testid="openaiOpenAI"]', { timeout: 3000, }); await page - .getByTestId("languagemodelsOpenAI") + .getByTestId("openaiOpenAI") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); diff --git a/src/frontend/tests/core/unit/sliderComponent.spec.ts b/src/frontend/tests/core/unit/sliderComponent.spec.ts index 99af24ae6..c2fd9bac5 100644 --- a/src/frontend/tests/core/unit/sliderComponent.spec.ts +++ b/src/frontend/tests/core/unit/sliderComponent.spec.ts @@ -17,12 +17,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("ollama"); - await page.waitForSelector('[data-testid="languagemodelsOllama"]', { + await page.waitForSelector('[data-testid="ollamaOllama"]', { timeout: 3000, }); await page - .getByTestId("languagemodelsOllama") + .getByTestId("ollamaOllama") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); diff --git a/src/frontend/tests/core/unit/textAreaModalComponent.spec.ts b/src/frontend/tests/core/unit/textAreaModalComponent.spec.ts index 94e05661a..f6cc295ea 100644 --- a/src/frontend/tests/core/unit/textAreaModalComponent.spec.ts +++ b/src/frontend/tests/core/unit/textAreaModalComponent.spec.ts @@ -16,12 +16,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("prompt"); - await page.waitForSelector('[data-testid="promptsPrompt"]', { + await page.waitForSelector('[data-testid="processingPrompt Template"]', { timeout: 30000, }); await page - .locator('//*[@id="promptsPrompt"]') + .locator('//*[@id="processingPrompt Template"]') .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); diff --git a/src/frontend/tests/extended/features/auto-save-off.spec.ts b/src/frontend/tests/extended/features/auto-save-off.spec.ts index 5a59a4074..ac156f346 100644 --- a/src/frontend/tests/extended/features/auto-save-off.spec.ts +++ b/src/frontend/tests/extended/features/auto-save-off.spec.ts @@ -31,12 +31,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("NVIDIA"); - await page.waitForSelector('[data-testid="languagemodelsNVIDIA"]', { + await page.waitForSelector('[data-testid="nvidiaNVIDIA"]', { timeout: 3000, }); await page - .getByTestId("languagemodelsNVIDIA") + .getByTestId("nvidiaNVIDIA") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); @@ -85,7 +85,7 @@ test( await page.keyboard.press("Escape"); await page.locator('//*[@id="react-flow-id"]').click(); - const lastNvidiaModel = page.getByTestId("languagemodelsNVIDIA").last(); + const lastNvidiaModel = page.getByTestId("nvidiaNVIDIA").last(); await lastNvidiaModel.scrollIntoViewIfNeeded(); try { @@ -128,12 +128,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("NVIDIA"); - await page.waitForSelector('[data-testid="languagemodelsNVIDIA"]', { + await page.waitForSelector('[data-testid="nvidiaNVIDIA"]', { timeout: 3000, }); await page - .getByTestId("languagemodelsNVIDIA") + .getByTestId("nvidiaNVIDIA") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); diff --git a/src/frontend/tests/extended/features/filterEdge-shard-1.spec.ts b/src/frontend/tests/extended/features/filterEdge-shard-1.spec.ts index 90143d09a..8c4101a9f 100644 --- a/src/frontend/tests/extended/features/filterEdge-shard-1.spec.ts +++ b/src/frontend/tests/extended/features/filterEdge-shard-1.spec.ts @@ -56,7 +56,7 @@ test( }); const disclosureTestIds = [ - "disclosure-i/o", + "disclosure-input / output", "disclosure-data", "disclosure-models", "disclosure-helpers", @@ -101,23 +101,15 @@ test( await page.getByTestId("sidebar-search-input").click(); const visibleModelSpecsTestIds = [ - "languagemodelsAIML", - "languagemodelsAnthropic", - "languagemodelsAzure OpenAI", "languagemodelsCohere", - "languagemodelsGoogle Generative AI", "languagemodelsGroq", - "languagemodelsHuggingFace", "languagemodelsLM Studio", "languagemodelsMaritalk", "languagemodelsMistralAI", - "languagemodelsNVIDIA", - "languagemodelsOllama", - "languagemodelsOpenAI", "languagemodelsPerplexity", "languagemodelsQianfan", "languagemodelsSambaNova", - "languagemodelsVertex AI", + "languagemodelsxAI", ]; await Promise.all( diff --git a/src/frontend/tests/extended/features/langflowShortcuts.spec.ts b/src/frontend/tests/extended/features/langflowShortcuts.spec.ts index ae8fdd30d..c2e601eed 100644 --- a/src/frontend/tests/extended/features/langflowShortcuts.spec.ts +++ b/src/frontend/tests/extended/features/langflowShortcuts.spec.ts @@ -16,12 +16,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("ollama"); - await page.waitForSelector('[data-testid="languagemodelsOllama"]', { + await page.waitForSelector('[data-testid="ollamaOllama"]', { timeout: 3000, }); await page - .getByTestId("languagemodelsOllama") + .getByTestId("ollamaOllama") .dragTo(page.locator('//*[@id="react-flow-id"]')); await page.mouse.up(); await page.mouse.down(); diff --git a/src/frontend/tests/extended/features/mcp-server-tab.spec.ts b/src/frontend/tests/extended/features/mcp-server-tab.spec.ts index 8f538acf6..1416eeefb 100644 --- a/src/frontend/tests/extended/features/mcp-server-tab.spec.ts +++ b/src/frontend/tests/extended/features/mcp-server-tab.spec.ts @@ -200,14 +200,14 @@ test( // Create a new flow with MCP component await page.getByTestId("blank-flow").click(); await page.getByTestId("sidebar-search-input").click(); - await page.getByTestId("sidebar-search-input").fill("mcp connection"); + await page.getByTestId("sidebar-search-input").fill("mcp"); - await page.waitForSelector('[data-testid="dataMCP Connection"]', { + await page.waitForSelector('[data-testid="agentsMCP Tools"]', { timeout: 30000, }); await page - .getByTestId("dataMCP Connection") + .getByTestId("agentsMCP Tools") .dragTo(page.locator('//*[@id="react-flow-id"]'), { targetPosition: { x: 0, y: 0 }, }); diff --git a/src/frontend/tests/extended/features/mcp-server.spec.ts b/src/frontend/tests/extended/features/mcp-server.spec.ts index 689474870..60e33982b 100644 --- a/src/frontend/tests/extended/features/mcp-server.spec.ts +++ b/src/frontend/tests/extended/features/mcp-server.spec.ts @@ -3,7 +3,7 @@ import { awaitBootstrapTest } from "../../utils/await-bootstrap-test"; import { zoomOut } from "../../utils/zoom-out"; test( - "user must be able to change mode of MCP connection without any issues", + "user must be able to change mode of MCP tools without any issues", { tag: ["@release", "@workspace", "@components"] }, async ({ page }) => { await awaitBootstrapTest(page); @@ -13,14 +13,14 @@ test( }); await page.getByTestId("blank-flow").click(); await page.getByTestId("sidebar-search-input").click(); - await page.getByTestId("sidebar-search-input").fill("mcp connection"); + await page.getByTestId("sidebar-search-input").fill("mcp tools"); - await page.waitForSelector('[data-testid="dataMCP Connection"]', { + await page.waitForSelector('[data-testid="agentsMCP Tools"]', { timeout: 30000, }); await page - .getByTestId("dataMCP Connection") + .getByTestId("agentsMCP Tools") .dragTo(page.locator('//*[@id="react-flow-id"]'), { targetPosition: { x: 0, y: 0 }, }); diff --git a/src/frontend/tests/extended/regression/general-bugs-component-as-tool-shortcut.spec.ts b/src/frontend/tests/extended/regression/general-bugs-component-as-tool-shortcut.spec.ts index dbe3183e4..5a8f098fd 100644 --- a/src/frontend/tests/extended/regression/general-bugs-component-as-tool-shortcut.spec.ts +++ b/src/frontend/tests/extended/regression/general-bugs-component-as-tool-shortcut.spec.ts @@ -17,19 +17,19 @@ test( await page.getByTestId("sidebar-search-input").fill("prompt"); await page - .getByTestId("promptsPrompt") + .getByTestId("processingPrompt Template") .hover() .then(async () => { - await page.getByTestId("add-component-button-prompt").click(); + await page.getByTestId("add-component-button-prompt-template").click(); }); - await page.waitForSelector('[data-testid="title-Prompt"]', { + await page.waitForSelector('[data-testid="title-Prompt Template"]', { timeout: 3000, }); expect(await page.getByText("Toolset", { exact: true }).count()).toBe(0); - await page.getByTestId("title-Prompt").click(); + await page.getByTestId("title-Prompt Template").click(); await page.keyboard.press("ControlOrMeta+Shift+m"); await page.waitForSelector('text="Toolset"', { @@ -39,7 +39,7 @@ test( await page.getByText("Toolset", { exact: true }).count(), ).toBeGreaterThan(0); - await page.getByTestId("title-Prompt").click(); + await page.getByTestId("title-Prompt Template").click(); await page.waitForSelector('[data-testid="code-button-modal"]', { timeout: 3000, @@ -61,11 +61,11 @@ test( // check if the response is 200 expect(customComponentResponse?.status()).toBe(200); - await page.waitForSelector('[data-testid="title-Prompt"]', { + await page.waitForSelector('[data-testid="title-Prompt Template"]', { timeout: 3000, }); - await page.getByTestId("title-Prompt").click(); + await page.getByTestId("title-Prompt Template").click(); await page.keyboard.press("ControlOrMeta+Shift+m"); expect(await page.getByText("Toolset", { exact: true }).count()).toBe(0); diff --git a/src/frontend/tests/extended/regression/general-bugs-dropdown-select-not-in-list.spec.ts b/src/frontend/tests/extended/regression/general-bugs-dropdown-select-not-in-list.spec.ts index 0ab243ba8..17e130bea 100644 --- a/src/frontend/tests/extended/regression/general-bugs-dropdown-select-not-in-list.spec.ts +++ b/src/frontend/tests/extended/regression/general-bugs-dropdown-select-not-in-list.spec.ts @@ -14,12 +14,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("openai"); - await page.waitForSelector('[data-testid="languagemodelsOpenAI"]', { + await page.waitForSelector('[data-testid="openaiOpenAI"]', { timeout: 1000, }); await page - .getByTestId("languagemodelsOpenAI") + .getByTestId("openaiOpenAI") .hover() .then(async () => { await page.getByTestId("add-component-button-openai").last().click(); diff --git a/src/frontend/tests/extended/regression/generalBugs-shard-3.spec.ts b/src/frontend/tests/extended/regression/generalBugs-shard-3.spec.ts index 06960e8ec..dad873531 100644 --- a/src/frontend/tests/extended/regression/generalBugs-shard-3.spec.ts +++ b/src/frontend/tests/extended/regression/generalBugs-shard-3.spec.ts @@ -1,7 +1,6 @@ import { expect, test } from "@playwright/test"; import * as dotenv from "dotenv"; import path from "path"; -import { adjustScreenView } from "../../utils/adjust-screen-view"; import { awaitBootstrapTest } from "../../utils/await-bootstrap-test"; import { initialGPTsetup } from "../../utils/initialGPTsetup"; @@ -55,7 +54,7 @@ test( await page.getByTestId("sidebar-search-input").fill("openai"); await page - .getByTestId("languagemodelsOpenAI") + .getByTestId("openaiOpenAI") .dragTo(page.locator('//*[@id="react-flow-id"]'), { targetPosition: { x: 100, y: 200 }, }); diff --git a/src/frontend/tests/extended/regression/generalBugs-shard-7.spec.ts b/src/frontend/tests/extended/regression/generalBugs-shard-7.spec.ts index 86ffb8fa9..82e73d914 100644 --- a/src/frontend/tests/extended/regression/generalBugs-shard-7.spec.ts +++ b/src/frontend/tests/extended/regression/generalBugs-shard-7.spec.ts @@ -26,12 +26,12 @@ test( await page.getByTestId("sidebar-search-input").click(); await page.getByTestId("sidebar-search-input").fill("ollama"); - await page.waitForSelector('[data-testid="embeddingsOllama Embeddings"]', { + await page.waitForSelector('[data-testid="ollamaOllama Embeddings"]', { timeout: 3000, }); await page - .getByTestId("embeddingsOllama Embeddings") + .getByTestId("ollamaOllama Embeddings") .hover() .then(async () => { await page