lfx-nightly 0.1.13.dev3__py3-none-any.whl → 0.1.13.dev5__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of lfx-nightly might be problematic. Click here for more details.

@@ -1,6 +1,3 @@
1
- from collections import defaultdict
2
- from typing import Any
3
-
4
1
  import httpx
5
2
  from langchain_openai import ChatOpenAI
6
3
  from pydantic.v1 import SecretStr
@@ -8,13 +5,7 @@ from pydantic.v1 import SecretStr
8
5
  from lfx.base.models.model import LCModelComponent
9
6
  from lfx.field_typing import LanguageModel
10
7
  from lfx.field_typing.range_spec import RangeSpec
11
- from lfx.inputs.inputs import (
12
- DropdownInput,
13
- IntInput,
14
- SecretStrInput,
15
- SliderInput,
16
- StrInput,
17
- )
8
+ from lfx.inputs.inputs import DropdownInput, IntInput, SecretStrInput, SliderInput, StrInput
18
9
 
19
10
 
20
11
  class OpenRouterComponent(LCModelComponent):
@@ -28,36 +19,13 @@ class OpenRouterComponent(LCModelComponent):
28
19
 
29
20
  inputs = [
30
21
  *LCModelComponent.get_base_inputs(),
31
- SecretStrInput(
32
- name="api_key", display_name="OpenRouter API Key", required=True, info="Your OpenRouter API key"
33
- ),
34
- StrInput(
35
- name="site_url",
36
- display_name="Site URL",
37
- info="Your site URL for OpenRouter rankings",
38
- advanced=True,
39
- ),
40
- StrInput(
41
- name="app_name",
42
- display_name="App Name",
43
- info="Your app name for OpenRouter rankings",
44
- advanced=True,
45
- ),
46
- DropdownInput(
47
- name="provider",
48
- display_name="Provider",
49
- info="The AI model provider",
50
- options=["Loading providers..."],
51
- value="Loading providers...",
52
- real_time_refresh=True,
53
- required=True,
54
- ),
22
+ SecretStrInput(name="api_key", display_name="API Key", required=True),
55
23
  DropdownInput(
56
24
  name="model_name",
57
25
  display_name="Model",
58
- info="The model to use for chat completion",
59
- options=["Select a provider first"],
60
- value="Select a provider first",
26
+ options=[],
27
+ value="",
28
+ refresh_button=True,
61
29
  real_time_refresh=True,
62
30
  required=True,
63
31
  ),
@@ -66,137 +34,71 @@ class OpenRouterComponent(LCModelComponent):
66
34
  display_name="Temperature",
67
35
  value=0.7,
68
36
  range_spec=RangeSpec(min=0, max=2, step=0.01),
69
- info="Controls randomness. Lower values are more deterministic, higher values are more creative.",
70
- advanced=True,
71
- ),
72
- IntInput(
73
- name="max_tokens",
74
- display_name="Max Tokens",
75
- info="Maximum number of tokens to generate",
76
37
  advanced=True,
77
38
  ),
39
+ IntInput(name="max_tokens", display_name="Max Tokens", advanced=True),
40
+ StrInput(name="site_url", display_name="Site URL", advanced=True),
41
+ StrInput(name="app_name", display_name="App Name", advanced=True),
78
42
  ]
79
43
 
80
- def fetch_models(self) -> dict[str, list]:
81
- """Fetch available models from OpenRouter API and organize them by provider."""
82
- url = "https://openrouter.ai/api/v1/models"
83
-
44
+ def fetch_models(self) -> list[dict]:
45
+ """Fetch available models from OpenRouter."""
84
46
  try:
85
- with httpx.Client() as client:
86
- response = client.get(url)
87
- response.raise_for_status()
88
-
89
- models_data = response.json().get("data", [])
90
- provider_models = defaultdict(list)
91
-
92
- for model in models_data:
93
- model_id = model.get("id", "")
94
- if "/" in model_id:
95
- provider = model_id.split("/")[0].title()
96
- provider_models[provider].append(
97
- {
98
- "id": model_id,
99
- "name": model.get("name", ""),
100
- "description": model.get("description", ""),
101
- "context_length": model.get("context_length", 0),
102
- }
103
- )
104
-
105
- return dict(provider_models)
106
-
107
- except httpx.HTTPError as e:
108
- self.log(f"Error fetching models: {e!s}")
109
- return {"Error": [{"id": "error", "name": f"Error fetching models: {e!s}"}]}
47
+ response = httpx.get("https://openrouter.ai/api/v1/models", timeout=10.0)
48
+ response.raise_for_status()
49
+ models = response.json().get("data", [])
50
+ return sorted(
51
+ [
52
+ {
53
+ "id": m["id"],
54
+ "name": m.get("name", m["id"]),
55
+ "context": m.get("context_length", 0),
56
+ }
57
+ for m in models
58
+ if m.get("id")
59
+ ],
60
+ key=lambda x: x["name"],
61
+ )
62
+ except (httpx.RequestError, httpx.HTTPStatusError) as e:
63
+ self.log(f"Error fetching models: {e}")
64
+ return []
65
+
66
+ def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None) -> dict: # noqa: ARG002
67
+ """Update model options."""
68
+ models = self.fetch_models()
69
+ if models:
70
+ build_config["model_name"]["options"] = [m["id"] for m in models]
71
+ build_config["model_name"]["tooltips"] = {m["id"]: f"{m['name']} ({m['context']:,} tokens)" for m in models}
72
+ else:
73
+ build_config["model_name"]["options"] = ["Failed to load models"]
74
+ build_config["model_name"]["value"] = "Failed to load models"
75
+ return build_config
110
76
 
111
77
  def build_model(self) -> LanguageModel:
112
- """Build and return the OpenRouter language model."""
113
- model_not_selected = "Please select a model"
114
- api_key_required = "API key is required"
115
-
116
- if not self.model_name or self.model_name == "Select a provider first":
117
- raise ValueError(model_not_selected)
118
-
78
+ """Build the OpenRouter model."""
119
79
  if not self.api_key:
120
- raise ValueError(api_key_required)
121
-
122
- api_key = SecretStr(self.api_key).get_secret_value()
80
+ msg = "API key is required"
81
+ raise ValueError(msg)
82
+ if not self.model_name or self.model_name == "Loading...":
83
+ msg = "Please select a model"
84
+ raise ValueError(msg)
123
85
 
124
- # Build base configuration
125
- kwargs: dict[str, Any] = {
86
+ kwargs = {
126
87
  "model": self.model_name,
127
- "openai_api_key": api_key,
88
+ "openai_api_key": SecretStr(self.api_key).get_secret_value(),
128
89
  "openai_api_base": "https://openrouter.ai/api/v1",
129
90
  "temperature": self.temperature if self.temperature is not None else 0.7,
130
91
  }
131
92
 
132
- # Add optional parameters
133
93
  if self.max_tokens:
134
- kwargs["max_tokens"] = self.max_tokens
94
+ kwargs["max_tokens"] = int(self.max_tokens)
135
95
 
136
96
  headers = {}
137
97
  if self.site_url:
138
98
  headers["HTTP-Referer"] = self.site_url
139
99
  if self.app_name:
140
100
  headers["X-Title"] = self.app_name
141
-
142
101
  if headers:
143
102
  kwargs["default_headers"] = headers
144
103
 
145
- try:
146
- return ChatOpenAI(**kwargs)
147
- except (ValueError, httpx.HTTPError) as err:
148
- error_msg = f"Failed to build model: {err!s}"
149
- self.log(error_msg)
150
- raise ValueError(error_msg) from err
151
-
152
- def _get_exception_message(self, e: Exception) -> str | None:
153
- """Get a message from an OpenRouter exception.
154
-
155
- Args:
156
- e (Exception): The exception to get the message from.
157
-
158
- Returns:
159
- str | None: The message from the exception, or None if no specific message can be extracted.
160
- """
161
- try:
162
- from openai import BadRequestError
163
-
164
- if isinstance(e, BadRequestError):
165
- message = e.body.get("message")
166
- if message:
167
- return message
168
- except ImportError:
169
- pass
170
- return None
171
-
172
- def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None) -> dict:
173
- """Update build configuration based on field updates."""
174
- try:
175
- if field_name is None or field_name == "provider":
176
- provider_models = self.fetch_models()
177
- build_config["provider"]["options"] = sorted(provider_models.keys())
178
- if build_config["provider"]["value"] not in provider_models:
179
- build_config["provider"]["value"] = build_config["provider"]["options"][0]
180
-
181
- if field_name == "provider" and field_value in self.fetch_models():
182
- provider_models = self.fetch_models()
183
- models = provider_models[field_value]
184
-
185
- build_config["model_name"]["options"] = [model["id"] for model in models]
186
- if models:
187
- build_config["model_name"]["value"] = models[0]["id"]
188
-
189
- tooltips = {
190
- model["id"]: (f"{model['name']}\nContext Length: {model['context_length']}\n{model['description']}")
191
- for model in models
192
- }
193
- build_config["model_name"]["tooltips"] = tooltips
194
-
195
- except httpx.HTTPError as e:
196
- self.log(f"Error updating build config: {e!s}")
197
- build_config["provider"]["options"] = ["Error loading providers"]
198
- build_config["provider"]["value"] = "Error loading providers"
199
- build_config["model_name"]["options"] = ["Error loading models"]
200
- build_config["model_name"]["value"] = "Error loading models"
201
-
202
- return build_config
104
+ return ChatOpenAI(**kwargs)
@@ -154,7 +154,7 @@ class Component(CustomComponent):
154
154
  self.trace_type = "chain"
155
155
 
156
156
  # Setup inputs and outputs
157
- self._reset_all_output_values()
157
+ self.reset_all_output_values()
158
158
  if self.inputs is not None:
159
159
  self.map_inputs(self.inputs)
160
160
  self.map_outputs()
@@ -330,7 +330,8 @@ class Component(CustomComponent):
330
330
  def set_event_manager(self, event_manager: EventManager | None = None) -> None:
331
331
  self._event_manager = event_manager
332
332
 
333
- def _reset_all_output_values(self) -> None:
333
+ def reset_all_output_values(self) -> None:
334
+ """Reset all output values to UNDEFINED."""
334
335
  if isinstance(self._outputs_map, dict):
335
336
  for output in self._outputs_map.values():
336
337
  output.value = UNDEFINED
lfx/graph/graph/base.py CHANGED
@@ -402,7 +402,7 @@ class Graph:
402
402
  for vertex in self.vertices:
403
403
  if vertex.custom_component is None:
404
404
  continue
405
- vertex.custom_component._reset_all_output_values()
405
+ vertex.custom_component.reset_all_output_values()
406
406
 
407
407
  def start(
408
408
  self,
lfx/graph/graph/schema.py CHANGED
@@ -4,11 +4,12 @@ from typing import TYPE_CHECKING, NamedTuple, Protocol
4
4
 
5
5
  from typing_extensions import NotRequired, TypedDict
6
6
 
7
+ from lfx.graph.edge.schema import EdgeData
8
+ from lfx.graph.vertex.schema import NodeData
9
+
7
10
  if TYPE_CHECKING:
8
- from lfx.graph.edge.schema import EdgeData
9
11
  from lfx.graph.schema import ResultData
10
12
  from lfx.graph.vertex.base import Vertex
11
- from lfx.graph.vertex.schema import NodeData
12
13
  from lfx.schema.log import LoggableType
13
14
 
14
15
 
@@ -65,7 +65,7 @@ class ComponentVertex(Vertex):
65
65
  self.built_object, self.artifacts = result
66
66
  elif len(result) == 3: # noqa: PLR2004
67
67
  self.custom_component, self.built_object, self.artifacts = result
68
- self.logs = self.custom_component._output_logs
68
+ self.logs = self.custom_component.get_output_logs()
69
69
  for key in self.artifacts:
70
70
  if self.artifacts_raw is None:
71
71
  self.artifacts_raw = {}
lfx/io/schema.py CHANGED
@@ -137,6 +137,12 @@ def schema_to_langflow_inputs(schema: type[BaseModel]) -> list[InputTypes]:
137
137
 
138
138
  is_list = False
139
139
 
140
+ # Handle unparameterized list (e.g., coming from nullable array schemas)
141
+ # Treat it as a list of strings for input purposes
142
+ if ann is list:
143
+ is_list = True
144
+ ann = str
145
+
140
146
  if get_origin(ann) is list:
141
147
  is_list = True
142
148
  ann = get_args(ann)[0]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lfx-nightly
3
- Version: 0.1.13.dev3
3
+ Version: 0.1.13.dev5
4
4
  Summary: Langflow Executor - A lightweight CLI tool for executing and serving Langflow AI flows
5
5
  Author-email: Gabriel Luiz Freitas Almeida <gabriel@langflow.org>
6
6
  Requires-Python: <3.14,>=3.10
@@ -4,7 +4,7 @@ lfx/constants.py,sha256=Ert_SpwXhutgcTKEvtDArtkONXgyE5x68opMoQfukMA,203
4
4
  lfx/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  lfx/settings.py,sha256=wnx4zkOLQ8mvampYsnnvVV9GvEnRUuWQpKFSbFTCIp4,181
6
6
  lfx/type_extraction.py,sha256=eCZNl9nAQivKdaPv_9BK71N0JV9Rtr--veAht0dnQ4A,2921
7
- lfx/_assets/component_index.json,sha256=O2JrHZv0-VCF9c_h9B2oENDX89EGU0Hp4PqI1MDabRE,3513619
7
+ lfx/_assets/component_index.json,sha256=2hSLAb9KQz76HrOJ6qanuKq_sdO7QBEROA6qTcrhocg,3525354
8
8
  lfx/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  lfx/base/constants.py,sha256=v9vo0Ifg8RxDu__XqgGzIXHlsnUFyWM-SSux0uHHoz8,1187
10
10
  lfx/base/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -23,7 +23,7 @@ lfx/base/astra_assistants/util.py,sha256=T_W44VFoOXBF3m-0eCSrHvzbKx1gdyBF9IAWKMX
23
23
  lfx/base/chains/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  lfx/base/chains/model.py,sha256=QSYJBc0Ygpx2Ko273u1idL_gPK2xpvRQgJb4oTx8x8s,766
25
25
  lfx/base/composio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
- lfx/base/composio/composio_base.py,sha256=AJBitxwJAirGm000njuLBdD_uBHKbcPvfHDyXuJdViY,131914
26
+ lfx/base/composio/composio_base.py,sha256=3mcseDIDIj25oKDsTnnelvSq8dIImzrFJDmkcNSWOy0,132478
27
27
  lfx/base/compressors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
28
  lfx/base/compressors/model.py,sha256=-FFBAPAy9bAgvklIo7x_uwShZR5NoMHakF6f_hNnLHg,2098
29
29
  lfx/base/curl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -33,7 +33,7 @@ lfx/base/data/base_file.py,sha256=UKpF9BsNHgg-cdB1uVB8F00czvCTLfks320aLg3F_kM,28
33
33
  lfx/base/data/docling_utils.py,sha256=gVDxOZghSJEo5n-UNkVGBQYqkvfNqkNkltBhAnoaJd4,13048
34
34
  lfx/base/data/utils.py,sha256=dGqEO4zE5s_V2Cs4j0EEeyLjYLX6Zex-EGzIOznK76o,5960
35
35
  lfx/base/datastax/__init__.py,sha256=s72q8NeqlMuNXb5WcYR2DTIuWOiBtfX23Z_Zte2PHGo,90
36
- lfx/base/datastax/astradb_base.py,sha256=7AnZyMvnqtxXmcfrOoXMY0-ub2BmZ5lQxd2jP01DxNM,36671
36
+ lfx/base/datastax/astradb_base.py,sha256=-6ROQSZtJ1tBXH6984bau-O4nl7NzB8C7Sz9T81YCdI,36776
37
37
  lfx/base/document_transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
38
38
  lfx/base/document_transformers/model.py,sha256=etVEmyakiEgflB-fayClPnFRhaEdXfdUu4cqpgtk8ek,1317
39
39
  lfx/base/embeddings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -44,7 +44,7 @@ lfx/base/flow_processing/utils.py,sha256=G-MhVp_W9xdNVYrajovky31bNWgUqq5H4GDlEDW
44
44
  lfx/base/huggingface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
45
45
  lfx/base/huggingface/model_bridge.py,sha256=pObEcu70zRdSZItl9P5SfxdpxTQJeE9Sp79ISbGcoy0,4800
46
46
  lfx/base/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- lfx/base/io/chat.py,sha256=SUIp_I_Xa2BhdfoFMYppob0_4KjRAjebtN01Vm0cXm4,1007
47
+ lfx/base/io/chat.py,sha256=9FjHtd8Qjl8TqNSCuij5LSO1HGs0FNreGFBZa8F-Edw,1016
48
48
  lfx/base/io/text.py,sha256=uW2vdNIccZUzv0FUVafo4W-lOhm8YFJOMV2qytGYHPk,748
49
49
  lfx/base/knowledge_bases/__init__.py,sha256=qn65fdRRbwoD1qxHd45sze1ylESqPJaq76TvBysLXbg,151
50
50
  lfx/base/knowledge_bases/knowledge_base_utils.py,sha256=yxYm5DTk-TPkibFH_z44jql_MA21y_HaNbk7WZ3eW1Q,4399
@@ -55,7 +55,7 @@ lfx/base/langwatch/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuF
55
55
  lfx/base/langwatch/utils.py,sha256=N7rH3sRwgmNQzG0pKjj4wr_ans_drwtvkx4BQt-B0WA,457
56
56
  lfx/base/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
57
57
  lfx/base/mcp/constants.py,sha256=-1XnJxejlqm9zs1R91qGtOeX-_F1ZpdHVzCIqUCvhgE,62
58
- lfx/base/mcp/util.py,sha256=ytuE7i1vmmOk-OZQLilb3zh8QCM4IvkK6Qwh5e_Zhx0,69655
58
+ lfx/base/mcp/util.py,sha256=PpXfEpZTzPcwLXqKimBNh37k3s21wRErxKnNXIUd980,71844
59
59
  lfx/base/memory/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
60
  lfx/base/memory/memory.py,sha256=kZ-aZoHvRW4PJAgY1LUt5UBj7YXbos_aVBPGjC1EFCY,1835
61
61
  lfx/base/memory/model.py,sha256=2oDORZV_l-DHLx9j9--wYprQUIYKOb8aTJpXmR1qOLw,1330
@@ -76,6 +76,7 @@ lfx/base/models/novita_constants.py,sha256=_mgBYGwpddUw4CLhLKJl-psOUzA_SQGHrfZJU
76
76
  lfx/base/models/ollama_constants.py,sha256=FM0BPEtuEmIoH2K1t6tTh5h_H2bK7-YSXe0x4-F4Mik,973
77
77
  lfx/base/models/openai_constants.py,sha256=DSlnUjmtb6KXQNDifxop4VVQPvB1Y9vftK6ZmFiudf4,4798
78
78
  lfx/base/models/sambanova_constants.py,sha256=mYPF7vUbMow9l4jQ2OJrIkAJhGs3fGWTCVNfG3oQZTc,519
79
+ lfx/base/models/watsonx_constants.py,sha256=lR0hOxcrQwHSMTH_49fmYlGJJb6KEeeyoUeXK8PUBf4,792
79
80
  lfx/base/processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
80
81
  lfx/base/prompts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
81
82
  lfx/base/prompts/api_utils.py,sha256=f1LHI6w4sVrSXxfi8zE9bfdre73sFrGtxr96VoLJByU,8032
@@ -93,7 +94,7 @@ lfx/base/vectorstores/model.py,sha256=pDAZ6D6XnMxGAV9hJjc3DYhjI9n77sc_FIs5lnpsDb
93
94
  lfx/base/vectorstores/utils.py,sha256=OhBNYs9Z9poe82rTNFPdrESNRGuP6RO6-eOpwqJLBG0,750
94
95
  lfx/base/vectorstores/vector_store_connection_decorator.py,sha256=2gh3DMhcMsCgVYFEFaVNMT3zsbd-fkFy5Bl_-jXDu8c,1998
95
96
  lfx/cli/__init__.py,sha256=Oy17zrnwBlwJn80sMGyRJXos2n2eQGvSsh9CS_-v2R4,113
96
- lfx/cli/commands.py,sha256=IR4leAtfQUjsc9wI6q1LRx--u4sW-i5ixtKdMYju-hI,11912
97
+ lfx/cli/commands.py,sha256=kDqZj78QE0tcPCB-k8pTy6D_nRUFkUW2lsFGn7GQlU0,11898
97
98
  lfx/cli/common.py,sha256=SvszBhWoOttM27rButhBOpvE8lO5UGMYL0NaG_OW8bc,22060
98
99
  lfx/cli/run.py,sha256=U4oKC21-jOu1mBTkWI4aASnvKuzi_ak3egZEci51ofU,21593
99
100
  lfx/cli/script_loader.py,sha256=xWSpx57cBeX0UHmUgAk97aye9-hhD2Y6nKh68A-xaTA,8997
@@ -115,21 +116,21 @@ lfx/components/Notion/update_page_property.py,sha256=tgmPMbD1eX58dQQNXv1w5FzDec7
115
116
  lfx/components/agentql/__init__.py,sha256=Erl669Dzsk-SegsDPWTtkKbprMXVuv8UTCo5REzZGTc,56
116
117
  lfx/components/agentql/agentql_api.py,sha256=N94yEK7ZuQCIsFBlr_8dqrJY-K1-KNb6QEEYfDIsDME,5569
117
118
  lfx/components/agents/__init__.py,sha256=UBu5kO9hp8yFyxTU-u9KHN9zTSoHhJSYdKtRuT5ig9c,1164
118
- lfx/components/agents/agent.py,sha256=vbi422N1dpML7fpYn3FqcwQ5nYS7BQBnmSN--WnheOg,26988
119
- lfx/components/agents/cuga_agent.py,sha256=r_342LveLdERtvE84UJJOdKTEwWSIjvASRYke9JV2Ik,44494
120
- lfx/components/agents/mcp_component.py,sha256=mE2HvbHcdkuWWylxmaNNZobbtgBRktOOakeGwUYs7Qs,25586
119
+ lfx/components/agents/agent.py,sha256=-pGSOYS-2pHoYq5VyNdDCnkQVzVz52as4hdF_BB1hVI,26993
120
+ lfx/components/agents/cuga_agent.py,sha256=JNi4MsSziTJQI3z_0KGzNWxm5RDaMk_W9zcTW2KcTtI,44499
121
+ lfx/components/agents/mcp_component.py,sha256=I8xAV7qGy67uV_4R6lrM4f6EOa9cFPQZDIcP3tiMuYk,26208
121
122
  lfx/components/aiml/__init__.py,sha256=DNKB-HMFGFYmsdkON-s8557ttgBXVXADmS-BcuSQiIQ,1087
122
123
  lfx/components/aiml/aiml.py,sha256=23Ineg1ajlCoqXgWgp50I20OnQbaleRNsw1c6IzPu3A,3877
123
124
  lfx/components/aiml/aiml_embeddings.py,sha256=2uNwORuj55mxn2SfLbh7oAIfjuXwHbsnOqRjfMtQRqc,1095
124
125
  lfx/components/amazon/__init__.py,sha256=QRsw-7ytuqZWhNPmlslCQEcpNsAw6dX5FV_8ihUdlPQ,1338
125
- lfx/components/amazon/amazon_bedrock_converse.py,sha256=WPo_5Wsj-pyltXcBOp6xPmtwVzRcJ5JOz5W013Ev9EE,8190
126
+ lfx/components/amazon/amazon_bedrock_converse.py,sha256=VMM1-Gmf-XUfaW-LChb4DnFUF_5LfA1LIo84kmjvUGE,8195
126
127
  lfx/components/amazon/amazon_bedrock_embedding.py,sha256=cNA5_3nwkegWS3BY75IfjOwpo-g8dpg-EgtQJSgVXfg,4261
127
128
  lfx/components/amazon/amazon_bedrock_model.py,sha256=kiCTqDG2Krbe0i5YBG9UODxwNTB9ePZwLfgNMR91UwQ,5113
128
129
  lfx/components/amazon/s3_bucket_uploader.py,sha256=bkui2vw8ibgg4dSUYZ7yAEbVOjgmB8oOYqH-3ZvTlBQ,7688
129
130
  lfx/components/anthropic/__init__.py,sha256=SGllKMRoX3KQkDpdzsLUYqbfTbhFu9qjpM6bQHL2syQ,965
130
131
  lfx/components/anthropic/anthropic.py,sha256=fIlMWma6rsfQ499vkkLSWFZqwKn5ifvhFQnC_quHkEw,7289
131
132
  lfx/components/apify/__init__.py,sha256=ADNTjMjTglvdC34YEgMYWippzrXWiH3ku_3RvRQcOlw,89
132
- lfx/components/apify/apify_actor.py,sha256=O8au5opTgLuv5QY-OUzV4-Pst1clxGKWgHPm08i5PFQ,12853
133
+ lfx/components/apify/apify_actor.py,sha256=n8_bD7CAbGG-6FQrUYFlZGlQzl71wGXuOqHp-bHEoYc,12850
133
134
  lfx/components/arxiv/__init__.py,sha256=g3uhahiWz1ZALR65oBFfO-hmrHcJLb5HuUqbeTFZ2Ss,64
134
135
  lfx/components/arxiv/arxiv.py,sha256=IZI57itI_oiu_BA3q9QQRP8bh2TqIjrcOXCR7QT_DSM,6627
135
136
  lfx/components/assemblyai/__init__.py,sha256=H0Rt2gzDDgj6IL8laOpolIFzhueT08VaMiVetGvlt0c,1632
@@ -248,7 +249,7 @@ lfx/components/datastax/astradb_cql.py,sha256=MQthGbCvoNl2ccqtiXN97T9D9yVlsqteGK
248
249
  lfx/components/datastax/astradb_graph.py,sha256=-LQlwfU1NI2Pnzm4HWNmf0UonuCogzwpI3qNX32axvc,8415
249
250
  lfx/components/datastax/astradb_tool.py,sha256=wMbRqH2Ovj8qTr4py2Vj4i1nmehX4FWLjkynYYoiF8g,15048
250
251
  lfx/components/datastax/astradb_vectorize.py,sha256=PZdmkMJiPAnTankXjFjdG192OeHVetxBfGzbwxgPQ54,4912
251
- lfx/components/datastax/astradb_vectorstore.py,sha256=-xkJKMDCrlZ3j0TCuBonu2yYNDznMUQQtmKZn8q6Gpg,18870
252
+ lfx/components/datastax/astradb_vectorstore.py,sha256=KxLNuWtnar7NNh3DFIdFmcTYbKcj7ZfLSemaTWUnUJc,18869
252
253
  lfx/components/datastax/create_assistant.py,sha256=jZhp2aid7fxH7yrDFOECmqVZ-56g4KAY_NUTIJvNN1o,2124
253
254
  lfx/components/datastax/create_thread.py,sha256=XUCnOsz98fVRuTgoGgD5aw6KChIeomM1ikeXfc-zGaM,1103
254
255
  lfx/components/datastax/dotenv.py,sha256=ND6pqsobuZXUg6dYJiHkrZmwWEl5bJl0gApsTVWg5J8,1116
@@ -412,9 +413,9 @@ lfx/components/milvus/__init__.py,sha256=ZNV3umCFDejy7MhaKOfp2M-LtJnQBY1rXbRDRDC
412
413
  lfx/components/milvus/milvus.py,sha256=K17-MTsx3cAVLj_5v4e_YJ3UTnS4SdJlQirKp22X1hw,4402
413
414
  lfx/components/mistral/__init__.py,sha256=EABXqA45Tz50vZRmhEisbIIPEcRCvV9j-Y9Hf2XevHs,1094
414
415
  lfx/components/mistral/mistral.py,sha256=4heAlIFEeq_ljUZDPpNGyK_VRkWjwCfPbBaQK1mV4NY,3718
415
- lfx/components/mistral/mistral_embeddings.py,sha256=NNBGFIocnWpYehCalxh8Csun-qdHL5J-IzPsFe5Mlv0,1974
416
+ lfx/components/mistral/mistral_embeddings.py,sha256=QuqS_S3yHWCacs-Nc3qalpUsb-OACRWFZenUtCD_rLQ,1963
416
417
  lfx/components/models/__init__.py,sha256=hhfj70MkcRATzAjJnntAg1A4E7kHlQn8GT0bizkB7L4,1113
417
- lfx/components/models/embedding_model.py,sha256=hgfpY_3vc4l1v_qdCHQdJIyJ7UEUr4rbzyXzY0Cyec8,4212
418
+ lfx/components/models/embedding_model.py,sha256=Tk-P9K5DanE0YuXauWMW_nOi08rnAaspiqJHbNYjoeA,7543
418
419
  lfx/components/models/language_model.py,sha256=TA24DMAXrlruY3mNsfI9qGltfQ2h9cQpxe8DW8HLdeE,5992
419
420
  lfx/components/mongodb/__init__.py,sha256=nFOQgiIvDnWGiWDSqZ0ERQme5DpA-cQgzybUiqXQtGw,953
420
421
  lfx/components/mongodb/mongodb_atlas.py,sha256=OlAstNMToHuvGI-8djkiGr7kdGBr927O0SE5cnVd0O0,8594
@@ -439,7 +440,7 @@ lfx/components/openai/__init__.py,sha256=G4Fgw4pmmDohdIOmzaeSCGijzKjyqFXNJPLwlcU
439
440
  lfx/components/openai/openai.py,sha256=imWO1tTJ0tTLqax1v5bNBPCRINTj2f2wN8j5G-a07GI,4505
440
441
  lfx/components/openai/openai_chat_model.py,sha256=hZO79PqSI8ppnrEQFL_NL1issX6E5iCUPCycjX_d0Fs,6969
441
442
  lfx/components/openrouter/__init__.py,sha256=sWZTr41sX09AYpeyd2NWHQpx9jPuc1Zc4KdmErP08uM,950
442
- lfx/components/openrouter/openrouter.py,sha256=nNwKMAU44mK3ogidFfHjgsbBGbWK8EWQl39o82O0mzo,7341
443
+ lfx/components/openrouter/openrouter.py,sha256=g8PDEqeiP3C5iM5QDS_ABOeE1KNS_szBsX493u1dsic,3875
443
444
  lfx/components/output_parsers/__init__.py,sha256=aZ7X5AJUmAOVa9BZPSqQKALpF4ZFiZD-M2mad34zj-w,67
444
445
  lfx/components/perplexity/__init__.py,sha256=jITrDKNSr0CWAMIvoEaHSYkRG1OGy3zBOYIgblt5tNE,932
445
446
  lfx/components/perplexity/perplexity.py,sha256=uXCETjdu7XaIH9XJYhEeKOOGeDbTOA0JJElEbuxTQ6E,2764
@@ -569,7 +570,7 @@ lfx/custom/code_parser/__init__.py,sha256=qIwZQdEp1z7ldn0z-GY44wmwRaywN3L6VPoPt6
569
570
  lfx/custom/code_parser/code_parser.py,sha256=QAqsp4QF607319dClK60BsaiwZLV55n0xeGR-DthSoE,14280
570
571
  lfx/custom/custom_component/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
571
572
  lfx/custom/custom_component/base_component.py,sha256=Pxi-qCocrGIwcG0x5fu-7ty1Py71bl_KG9Fku5SeO_M,4053
572
- lfx/custom/custom_component/component.py,sha256=6BIJxp6M8y1wCVUTGoQveYVDzeMDnuqcItcJpua_UUk,75795
573
+ lfx/custom/custom_component/component.py,sha256=rrtW0Ck0RtCIgyU7GfyY0IoR9Qk-70-7SzMdEXg5em4,75845
573
574
  lfx/custom/custom_component/component_with_cache.py,sha256=por6CiPL3EHdLp_DvfI7qz1n4tc1KkqMOJNbsxoqVaI,313
574
575
  lfx/custom/custom_component/custom_component.py,sha256=801FjGiQk7M7GD3CbU19AmCVS5KZjPVcKUy_wBXnm0o,22301
575
576
  lfx/custom/directory_reader/__init__.py,sha256=eFjlhKjpt2Kha_sJ2EqWofLRbpvfOTjvDSCpdpaTqWk,77
@@ -591,10 +592,10 @@ lfx/graph/edge/schema.py,sha256=bKlprxymeV04bTMw3jDLpYQAA3eRc4BIdD_-4XGGU3c,3806
591
592
  lfx/graph/edge/utils.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
592
593
  lfx/graph/graph/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
593
594
  lfx/graph/graph/ascii.py,sha256=-jYWI_Zmz24mfLOxJrzIINZ0dbQgd9PXJfqwZa03xas,6211
594
- lfx/graph/graph/base.py,sha256=-USGP3n1TFH-OOncRktUJ2uY1FEXIfdLbcl2cJYM-2g,96048
595
+ lfx/graph/graph/base.py,sha256=H1Be8kSvHuA5qNlGCS_AeIW8k2VaCZ_3mEt9ak_fXAk,96047
595
596
  lfx/graph/graph/constants.py,sha256=jwjl4RydV_k_zawbI8FIgiLHeBBgH-cStVitxxSyXQs,1641
596
597
  lfx/graph/graph/runnable_vertices_manager.py,sha256=c-qQP3koKyAsIADDSONiiz4FIRIn6q5kAMX6EQIBBfA,6148
597
- lfx/graph/graph/schema.py,sha256=9uyjRqf18S6jLnLwSHhmWxO-XtpnAruugSjwqwp4ILE,1093
598
+ lfx/graph/graph/schema.py,sha256=1a8pictdRVN6ByqpvhOYu7heDeVs7A3eGpZuYIF7kaY,1086
598
599
  lfx/graph/graph/state_model.py,sha256=OJYIffeQ_3djtMdIsMmYduLr2JbX9GQ5N_SJ_PZeHJ4,2925
599
600
  lfx/graph/graph/utils.py,sha256=rsUaMjhpZzyIFD8QSf-G5J5PDTPFNJXxV5zDs5eLPqw,37745
600
601
  lfx/graph/state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -606,7 +607,7 @@ lfx/graph/vertex/exceptions.py,sha256=QTe-7TRCI0TXswRZh1kh0Z3KySjQsJgY5zTU6o0jbo
606
607
  lfx/graph/vertex/param_handler.py,sha256=o6RmGvdo8rzasIZaalkAvC3LJA7oS8ETqpmXnOtarI8,12887
607
608
  lfx/graph/vertex/schema.py,sha256=3h6c7TTdZI1mzfAebhD-6CCCRLu1mQ8UDmgJijx5zWg,552
608
609
  lfx/graph/vertex/utils.py,sha256=iJmY4PXta5dYWTX2SMEbpfMKrzwkJVQmi8qstSv8D7I,738
609
- lfx/graph/vertex/vertex_types.py,sha256=r4eMlTUTWR5CQf-W34BBzpHpQ9KdWcK3L-2byE22enU,21140
610
+ lfx/graph/vertex/vertex_types.py,sha256=pHSzH0ePGWmYCbD67QlG3_kxRpM4OHbs3S6FYDj6Tjw,21145
610
611
  lfx/helpers/__init__.py,sha256=XUsPqOxQNoleWGC4EtVxqgaEQjR4cHsHOsyJ3Kjm88I,2912
611
612
  lfx/helpers/base_model.py,sha256=EiBdNJVE83BNKsg-IedyZYd78Mbl0m7BN2XTFeTlBhw,1956
612
613
  lfx/helpers/custom.py,sha256=9Z6rVfIrih27qsGkV1lzVpkK-ifpQuOaGSUog_w4asM,306
@@ -627,7 +628,7 @@ lfx/interface/importing/utils.py,sha256=-3-M4MSzA_2zlwRWy1SdJHDsjeRkFvWZaTynITRj
627
628
  lfx/interface/initialize/__init__.py,sha256=wxisnaYxjaqrjA_-By2oHmd4Fht5lAAJFYrotkPm7HA,45
628
629
  lfx/interface/initialize/loading.py,sha256=WF6sp20wYvY52nKbAQpPDrzGKBHwW5xEz45qnGZBc_o,12229
629
630
  lfx/io/__init__.py,sha256=hIH6GC2gKdupGZVyRqrbOIm9UyUhNqIga8z1jd4ri2w,1131
630
- lfx/io/schema.py,sha256=ddF10TCK2TLx4rGSFCP-NTEDpTS7wyG4WzpZ0HJgZ2c,10404
631
+ lfx/io/schema.py,sha256=aYkidiHBkD1AHUelj2UQpzIHLdIBEi0-NnzLucniufU,10618
631
632
  lfx/load/__init__.py,sha256=y35GBUhVTOsG3GzL5UVL-RNAsu0D7T8MVPrNXoDMx7U,224
632
633
  lfx/load/load.py,sha256=mpQG2RV2ZOysShEOguWKdnQI9TUub1Ds5j89ZbwiQhA,10451
633
634
  lfx/load/utils.py,sha256=qa8aoMLW-X8FO8xVz3YVHQwjTSJYbYr_AOQAAp3smlc,3705
@@ -728,7 +729,7 @@ lfx/utils/schemas.py,sha256=NbOtVQBrn4d0BAu-0H_eCTZI2CXkKZlRY37XCSmuJwc,3865
728
729
  lfx/utils/util.py,sha256=Ww85wbr1-vjh2pXVtmTqoUVr6MXAW8S7eDx_Ys6HpE8,20696
729
730
  lfx/utils/util_strings.py,sha256=nU_IcdphNaj6bAPbjeL-c1cInQPfTBit8mp5Y57lwQk,1686
730
731
  lfx/utils/version.py,sha256=cHpbO0OJD2JQAvVaTH_6ibYeFbHJV0QDHs_YXXZ-bT8,671
731
- lfx_nightly-0.1.13.dev3.dist-info/METADATA,sha256=3KKMr_v8ERnwxOgybcVPRHz9CMi_5UpKwxrv-21PLmA,8289
732
- lfx_nightly-0.1.13.dev3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
733
- lfx_nightly-0.1.13.dev3.dist-info/entry_points.txt,sha256=1724p3RHDQRT2CKx_QRzEIa7sFuSVO0Ux70YfXfoMT4,42
734
- lfx_nightly-0.1.13.dev3.dist-info/RECORD,,
732
+ lfx_nightly-0.1.13.dev5.dist-info/METADATA,sha256=MueKtIgEmw2SHmgw7_qhLXEtkrf34M1Ho8e21VdQkTs,8289
733
+ lfx_nightly-0.1.13.dev5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
734
+ lfx_nightly-0.1.13.dev5.dist-info/entry_points.txt,sha256=1724p3RHDQRT2CKx_QRzEIa7sFuSVO0Ux70YfXfoMT4,42
735
+ lfx_nightly-0.1.13.dev5.dist-info/RECORD,,