lfx-nightly 0.1.12.dev39__py3-none-any.whl → 0.1.12.dev40__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.
- lfx/_assets/component_index.json +1 -1
- lfx/base/composio/composio_base.py +73 -170
- lfx/components/arxiv/arxiv.py +8 -2
- lfx/components/composio/__init__.py +71 -17
- lfx/components/composio/agentql_composio.py +11 -0
- lfx/components/composio/agiled_composio.py +11 -0
- lfx/components/composio/bolna_composio.py +11 -0
- lfx/components/composio/brightdata_composio.py +11 -0
- lfx/components/composio/canvas_composio.py +11 -0
- lfx/components/composio/digicert_composio.py +11 -0
- lfx/components/composio/finage_composio.py +11 -0
- lfx/components/composio/fixer_composio.py +11 -0
- lfx/components/composio/flexisign_composio.py +11 -0
- lfx/components/composio/freshdesk_composio.py +11 -0
- lfx/components/composio/googleclassroom_composio.py +11 -0
- lfx/components/composio/instagram_composio.py +11 -0
- lfx/components/composio/jira_composio.py +11 -0
- lfx/components/composio/jotform_composio.py +11 -0
- lfx/components/composio/listennotes_composio.py +11 -0
- lfx/components/composio/missive_composio.py +11 -0
- lfx/components/composio/pandadoc_composio.py +11 -0
- lfx/components/composio/slack_composio.py +573 -2
- lfx/components/composio/timelinesai_composio.py +11 -0
- lfx/components/logic/__init__.py +3 -0
- lfx/components/logic/llm_conditional_router.py +65 -21
- lfx/components/processing/lambda_filter.py +82 -18
- {lfx_nightly-0.1.12.dev39.dist-info → lfx_nightly-0.1.12.dev40.dist-info}/METADATA +1 -1
- {lfx_nightly-0.1.12.dev39.dist-info → lfx_nightly-0.1.12.dev40.dist-info}/RECORD +30 -12
- {lfx_nightly-0.1.12.dev39.dist-info → lfx_nightly-0.1.12.dev40.dist-info}/WHEEL +0 -0
- {lfx_nightly-0.1.12.dev39.dist-info → lfx_nightly-0.1.12.dev40.dist-info}/entry_points.txt +0 -0
lfx/components/logic/__init__.py
CHANGED
|
@@ -8,6 +8,7 @@ if TYPE_CHECKING:
|
|
|
8
8
|
from lfx.components.logic.conditional_router import ConditionalRouterComponent
|
|
9
9
|
from lfx.components.logic.data_conditional_router import DataConditionalRouterComponent
|
|
10
10
|
from lfx.components.logic.flow_tool import FlowToolComponent
|
|
11
|
+
from lfx.components.logic.llm_conditional_router import SmartRouterComponent
|
|
11
12
|
from lfx.components.logic.loop import LoopComponent
|
|
12
13
|
from lfx.components.logic.pass_message import PassMessageComponent
|
|
13
14
|
from lfx.components.logic.run_flow import RunFlowComponent
|
|
@@ -20,6 +21,7 @@ _dynamic_imports = {
|
|
|
20
21
|
"LoopComponent": "loop",
|
|
21
22
|
"PassMessageComponent": "pass_message",
|
|
22
23
|
"RunFlowComponent": "run_flow",
|
|
24
|
+
"SmartRouterComponent": "llm_conditional_router",
|
|
23
25
|
"SubFlowComponent": "sub_flow",
|
|
24
26
|
}
|
|
25
27
|
|
|
@@ -30,6 +32,7 @@ __all__ = [
|
|
|
30
32
|
"LoopComponent",
|
|
31
33
|
"PassMessageComponent",
|
|
32
34
|
"RunFlowComponent",
|
|
35
|
+
"SmartRouterComponent",
|
|
33
36
|
"SubFlowComponent",
|
|
34
37
|
]
|
|
35
38
|
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from typing import Any
|
|
2
2
|
|
|
3
|
-
from
|
|
4
|
-
from
|
|
5
|
-
from
|
|
3
|
+
from lfx.custom import Component
|
|
4
|
+
from lfx.io import BoolInput, HandleInput, MessageInput, MessageTextInput, MultilineInput, Output, TableInput
|
|
5
|
+
from lfx.schema.message import Message
|
|
6
|
+
from lfx.schema.table import EditMode
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
class SmartRouterComponent(Component):
|
|
@@ -39,21 +40,42 @@ class SmartRouterComponent(Component):
|
|
|
39
40
|
table_schema=[
|
|
40
41
|
{
|
|
41
42
|
"name": "route_category",
|
|
42
|
-
"display_name": "Route
|
|
43
|
+
"display_name": "Route Name",
|
|
43
44
|
"type": "str",
|
|
44
|
-
"description": "Name for the route
|
|
45
|
+
"description": "Name for the route (used for both output name and category matching)",
|
|
46
|
+
"edit_mode": EditMode.INLINE,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
"name": "route_description",
|
|
50
|
+
"display_name": "Route Description",
|
|
51
|
+
"type": "str",
|
|
52
|
+
"description": "Description of when this route should be used (helps LLM understand the category)",
|
|
53
|
+
"default": "",
|
|
54
|
+
"edit_mode": EditMode.POPOVER,
|
|
45
55
|
},
|
|
46
56
|
{
|
|
47
57
|
"name": "output_value",
|
|
48
|
-
"display_name": "
|
|
58
|
+
"display_name": "Route Message (Optional)",
|
|
49
59
|
"type": "str",
|
|
50
|
-
"description":
|
|
60
|
+
"description": (
|
|
61
|
+
"Optional message to send when this route is matched."
|
|
62
|
+
"Leave empty to pass through the original input text."
|
|
63
|
+
),
|
|
51
64
|
"default": "",
|
|
65
|
+
"edit_mode": EditMode.POPOVER,
|
|
52
66
|
},
|
|
53
67
|
],
|
|
54
68
|
value=[
|
|
55
|
-
{
|
|
56
|
-
|
|
69
|
+
{
|
|
70
|
+
"route_category": "Positive",
|
|
71
|
+
"route_description": "Positive feedback, satisfaction, or compliments",
|
|
72
|
+
"output_value": "",
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"route_category": "Negative",
|
|
76
|
+
"route_description": "Complaints, issues, or dissatisfaction",
|
|
77
|
+
"output_value": "",
|
|
78
|
+
},
|
|
57
79
|
],
|
|
58
80
|
real_time_refresh=True,
|
|
59
81
|
required=True,
|
|
@@ -125,6 +147,7 @@ class SmartRouterComponent(Component):
|
|
|
125
147
|
# Clear any previous match state
|
|
126
148
|
self._matched_category = None
|
|
127
149
|
|
|
150
|
+
# Get categories and input text
|
|
128
151
|
categories = getattr(self, "routes", [])
|
|
129
152
|
input_text = getattr(self, "input_text", "")
|
|
130
153
|
|
|
@@ -134,17 +157,23 @@ class SmartRouterComponent(Component):
|
|
|
134
157
|
|
|
135
158
|
if llm and categories:
|
|
136
159
|
# Create prompt for categorization
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
160
|
+
category_info = []
|
|
161
|
+
for i, category in enumerate(categories):
|
|
162
|
+
cat_name = category.get("route_category", f"Category {i + 1}")
|
|
163
|
+
cat_desc = category.get("route_description", "")
|
|
164
|
+
if cat_desc and cat_desc.strip():
|
|
165
|
+
category_info.append(f'"{cat_name}": {cat_desc}')
|
|
166
|
+
else:
|
|
167
|
+
category_info.append(f'"{cat_name}"')
|
|
168
|
+
|
|
169
|
+
categories_text = "\n".join([f"- {info}" for info in category_info if info])
|
|
141
170
|
|
|
142
171
|
# Create base prompt
|
|
143
172
|
base_prompt = (
|
|
144
173
|
f"You are a text classifier. Given the following text and categories, "
|
|
145
174
|
f"determine which category best matches the text.\n\n"
|
|
146
175
|
f'Text to classify: "{input_text}"\n\n'
|
|
147
|
-
f"Available categories
|
|
176
|
+
f"Available categories:\n{categories_text}\n\n"
|
|
148
177
|
f"Respond with ONLY the exact category name that best matches the text. "
|
|
149
178
|
f'If none match well, respond with "NONE".\n\n'
|
|
150
179
|
f"Category:"
|
|
@@ -155,7 +184,11 @@ class SmartRouterComponent(Component):
|
|
|
155
184
|
if custom_prompt and custom_prompt.strip():
|
|
156
185
|
self.status = "Using custom prompt as additional instructions"
|
|
157
186
|
# Format custom prompt with variables
|
|
158
|
-
|
|
187
|
+
# For the routes variable, create a simpler format for custom prompt usage
|
|
188
|
+
simple_routes = ", ".join(
|
|
189
|
+
[f'"{cat.get("route_category", f"Category {i + 1}")}"' for i, cat in enumerate(categories)]
|
|
190
|
+
)
|
|
191
|
+
formatted_custom = custom_prompt.format(input_text=input_text, routes=simple_routes)
|
|
159
192
|
# Combine base prompt with custom instructions
|
|
160
193
|
prompt = f"{base_prompt}\n\nAdditional Instructions:\n{formatted_custom}"
|
|
161
194
|
else:
|
|
@@ -188,6 +221,7 @@ class SmartRouterComponent(Component):
|
|
|
188
221
|
f"Comparing '{categorization}' with category {i + 1}: route_category='{route_category}'"
|
|
189
222
|
)
|
|
190
223
|
|
|
224
|
+
# Case-insensitive match
|
|
191
225
|
if categorization.lower() == route_category.lower():
|
|
192
226
|
matched_category = i
|
|
193
227
|
self.status = f"MATCH FOUND! Category {i + 1} matched with '{categorization}'"
|
|
@@ -286,17 +320,23 @@ class SmartRouterComponent(Component):
|
|
|
286
320
|
if llm and categories:
|
|
287
321
|
try:
|
|
288
322
|
# Create prompt for categorization
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
323
|
+
category_info = []
|
|
324
|
+
for i, category in enumerate(categories):
|
|
325
|
+
cat_name = category.get("route_category", f"Category {i + 1}")
|
|
326
|
+
cat_desc = category.get("route_description", "")
|
|
327
|
+
if cat_desc and cat_desc.strip():
|
|
328
|
+
category_info.append(f'"{cat_name}": {cat_desc}')
|
|
329
|
+
else:
|
|
330
|
+
category_info.append(f'"{cat_name}"')
|
|
331
|
+
|
|
332
|
+
categories_text = "\n".join([f"- {info}" for info in category_info if info])
|
|
293
333
|
|
|
294
334
|
# Create base prompt
|
|
295
335
|
base_prompt = (
|
|
296
336
|
"You are a text classifier. Given the following text and categories, "
|
|
297
337
|
"determine which category best matches the text.\n\n"
|
|
298
338
|
f'Text to classify: "{input_text}"\n\n'
|
|
299
|
-
f"Available categories
|
|
339
|
+
f"Available categories:\n{categories_text}\n\n"
|
|
300
340
|
"Respond with ONLY the exact category name that best matches the text. "
|
|
301
341
|
'If none match well, respond with "NONE".\n\n'
|
|
302
342
|
"Category:"
|
|
@@ -307,7 +347,11 @@ class SmartRouterComponent(Component):
|
|
|
307
347
|
if custom_prompt and custom_prompt.strip():
|
|
308
348
|
self.status = "Using custom prompt as additional instructions (default check)"
|
|
309
349
|
# Format custom prompt with variables
|
|
310
|
-
|
|
350
|
+
# For the routes variable, create a simpler format for custom prompt usage
|
|
351
|
+
simple_routes = ", ".join(
|
|
352
|
+
[f'"{cat.get("route_category", f"Category {i + 1}")}"' for i, cat in enumerate(categories)]
|
|
353
|
+
)
|
|
354
|
+
formatted_custom = custom_prompt.format(input_text=input_text, routes=simple_routes)
|
|
311
355
|
# Combine base prompt with custom instructions
|
|
312
356
|
prompt = f"{base_prompt}\n\nAdditional Instructions:\n{formatted_custom}"
|
|
313
357
|
else:
|
|
@@ -7,7 +7,7 @@ from typing import TYPE_CHECKING, Any
|
|
|
7
7
|
from lfx.custom.custom_component.component import Component
|
|
8
8
|
from lfx.io import DataInput, HandleInput, IntInput, MultilineInput, Output
|
|
9
9
|
from lfx.schema.data import Data
|
|
10
|
-
from lfx.
|
|
10
|
+
from lfx.schema.dataframe import DataFrame
|
|
11
11
|
|
|
12
12
|
if TYPE_CHECKING:
|
|
13
13
|
from collections.abc import Callable
|
|
@@ -25,6 +25,7 @@ class LambdaFilterComponent(Component):
|
|
|
25
25
|
name="data",
|
|
26
26
|
display_name="Data",
|
|
27
27
|
info="The structured data to filter or transform using a lambda function.",
|
|
28
|
+
input_types=["Data", "DataFrame"],
|
|
28
29
|
is_list=True,
|
|
29
30
|
required=True,
|
|
30
31
|
),
|
|
@@ -63,24 +64,67 @@ class LambdaFilterComponent(Component):
|
|
|
63
64
|
|
|
64
65
|
outputs = [
|
|
65
66
|
Output(
|
|
66
|
-
display_name="
|
|
67
|
-
name="
|
|
68
|
-
method="
|
|
67
|
+
display_name="Output",
|
|
68
|
+
name="data_output",
|
|
69
|
+
method="process_as_data",
|
|
70
|
+
),
|
|
71
|
+
Output(
|
|
72
|
+
display_name="Output",
|
|
73
|
+
name="dataframe_output",
|
|
74
|
+
method="process_as_dataframe",
|
|
69
75
|
),
|
|
70
76
|
]
|
|
71
77
|
|
|
72
78
|
def get_data_structure(self, data):
|
|
73
|
-
"""Extract the structure of
|
|
74
|
-
|
|
79
|
+
"""Extract the structure of data, replacing values with their types."""
|
|
80
|
+
if isinstance(data, list):
|
|
81
|
+
# For lists, get structure of first item if available
|
|
82
|
+
if data:
|
|
83
|
+
return [self.get_data_structure(data[0])]
|
|
84
|
+
return []
|
|
85
|
+
if isinstance(data, dict):
|
|
86
|
+
return {k: self.get_data_structure(v) for k, v in data.items()}
|
|
87
|
+
# For primitive types, return the type name
|
|
88
|
+
return type(data).__name__
|
|
75
89
|
|
|
76
90
|
def _validate_lambda(self, lambda_text: str) -> bool:
|
|
77
91
|
"""Validate the provided lambda function text."""
|
|
78
92
|
# Return False if the lambda function does not start with 'lambda' or does not contain a colon
|
|
79
93
|
return lambda_text.strip().startswith("lambda") and ":" in lambda_text
|
|
80
94
|
|
|
81
|
-
async def
|
|
95
|
+
async def _execute_lambda(self) -> Any:
|
|
82
96
|
self.log(str(self.data))
|
|
83
|
-
|
|
97
|
+
|
|
98
|
+
# Convert input to a unified format
|
|
99
|
+
if isinstance(self.data, list):
|
|
100
|
+
# Handle list of Data or DataFrame objects
|
|
101
|
+
combined_data = []
|
|
102
|
+
for item in self.data:
|
|
103
|
+
if isinstance(item, DataFrame):
|
|
104
|
+
# DataFrame to list of dicts
|
|
105
|
+
combined_data.extend(item.to_dict(orient="records"))
|
|
106
|
+
elif hasattr(item, "data"):
|
|
107
|
+
# Data object
|
|
108
|
+
if isinstance(item.data, dict):
|
|
109
|
+
combined_data.append(item.data)
|
|
110
|
+
elif isinstance(item.data, list):
|
|
111
|
+
combined_data.extend(item.data)
|
|
112
|
+
|
|
113
|
+
# If we have a single dict, unwrap it so lambdas can access it directly
|
|
114
|
+
if len(combined_data) == 1 and isinstance(combined_data[0], dict):
|
|
115
|
+
data = combined_data[0]
|
|
116
|
+
elif len(combined_data) == 0:
|
|
117
|
+
data = {}
|
|
118
|
+
else:
|
|
119
|
+
data = combined_data # type: ignore[assignment]
|
|
120
|
+
elif isinstance(self.data, DataFrame):
|
|
121
|
+
# Single DataFrame to list of dicts
|
|
122
|
+
data = self.data.to_dict(orient="records")
|
|
123
|
+
elif hasattr(self.data, "data"):
|
|
124
|
+
# Single Data object
|
|
125
|
+
data = self.data.data
|
|
126
|
+
else:
|
|
127
|
+
data = self.data
|
|
84
128
|
|
|
85
129
|
dump = json.dumps(data)
|
|
86
130
|
self.log(str(data))
|
|
@@ -142,13 +186,33 @@ class LambdaFilterComponent(Component):
|
|
|
142
186
|
fn: Callable[[Any], Any] = eval(lambda_text) # noqa: S307
|
|
143
187
|
|
|
144
188
|
# Apply the lambda function to the data
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
189
|
+
return fn(data)
|
|
190
|
+
|
|
191
|
+
async def process_as_data(self) -> Data:
|
|
192
|
+
"""Process the data and return as a Data object."""
|
|
193
|
+
result = await self._execute_lambda()
|
|
194
|
+
|
|
195
|
+
# Convert result to Data based on type
|
|
196
|
+
if isinstance(result, dict):
|
|
197
|
+
return Data(data=result)
|
|
198
|
+
if isinstance(result, list):
|
|
199
|
+
return Data(data={"_results": result})
|
|
200
|
+
# For other types, convert to string
|
|
201
|
+
return Data(data={"text": str(result)})
|
|
202
|
+
|
|
203
|
+
async def process_as_dataframe(self) -> DataFrame:
|
|
204
|
+
"""Process the data and return as a DataFrame."""
|
|
205
|
+
result = await self._execute_lambda()
|
|
206
|
+
|
|
207
|
+
# Convert result to DataFrame based on type
|
|
208
|
+
if isinstance(result, list):
|
|
209
|
+
# Check if it's a list of dicts
|
|
210
|
+
if all(isinstance(item, dict) for item in result):
|
|
211
|
+
return DataFrame(result)
|
|
212
|
+
# List of non-dicts: wrap each value
|
|
213
|
+
return DataFrame([{"value": item} for item in result])
|
|
214
|
+
if isinstance(result, dict):
|
|
215
|
+
# Single dict becomes single-row DataFrame
|
|
216
|
+
return DataFrame([result])
|
|
217
|
+
# Other types: convert to string and wrap
|
|
218
|
+
return DataFrame([{"value": str(result)}])
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: lfx-nightly
|
|
3
|
-
Version: 0.1.12.
|
|
3
|
+
Version: 0.1.12.dev40
|
|
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=
|
|
7
|
+
lfx/_assets/component_index.json,sha256=fxtpy4FgxLQswo9s5ftwTTVC6uwyz1yA30EHKpS8VsA,3502133
|
|
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
|
|
26
|
+
lfx/base/composio/composio_base.py,sha256=pltCXF0eQVfGbetksE2sXMTPMji8lR1jSryeMNrYNZM,115607
|
|
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
|
|
@@ -126,7 +126,7 @@ lfx/components/anthropic/anthropic.py,sha256=fIlMWma6rsfQ499vkkLSWFZqwKn5ifvhFQn
|
|
|
126
126
|
lfx/components/apify/__init__.py,sha256=ADNTjMjTglvdC34YEgMYWippzrXWiH3ku_3RvRQcOlw,89
|
|
127
127
|
lfx/components/apify/apify_actor.py,sha256=O8au5opTgLuv5QY-OUzV4-Pst1clxGKWgHPm08i5PFQ,12853
|
|
128
128
|
lfx/components/arxiv/__init__.py,sha256=g3uhahiWz1ZALR65oBFfO-hmrHcJLb5HuUqbeTFZ2Ss,64
|
|
129
|
-
lfx/components/arxiv/arxiv.py,sha256=
|
|
129
|
+
lfx/components/arxiv/arxiv.py,sha256=IZI57itI_oiu_BA3q9QQRP8bh2TqIjrcOXCR7QT_DSM,6627
|
|
130
130
|
lfx/components/assemblyai/__init__.py,sha256=H0Rt2gzDDgj6IL8laOpolIFzhueT08VaMiVetGvlt0c,1632
|
|
131
131
|
lfx/components/assemblyai/assemblyai_get_subtitles.py,sha256=Uz0fz3x6nnplLS960F8K8ob8mZ6eY9GPVdHdkJJ61KA,3019
|
|
132
132
|
lfx/components/assemblyai/assemblyai_lemur.py,sha256=jJZzirlnwlxT0SNot-9ea_odV0TpTnW70sbd49KGbjc,7577
|
|
@@ -159,33 +159,51 @@ lfx/components/cohere/__init__.py,sha256=MSTeplsNIXTVm_dUcJETy6YGb-fw7-dplC9jzAo
|
|
|
159
159
|
lfx/components/cohere/cohere_embeddings.py,sha256=nA9BOixk534yJZymJaukBrQYBj_uB2nyYvzJPd_3aUc,3083
|
|
160
160
|
lfx/components/cohere/cohere_models.py,sha256=WUhS4dcG8FBcJm2dCfhiDuaxZX8S1lICMI_Mmd6kflo,1563
|
|
161
161
|
lfx/components/cohere/cohere_rerank.py,sha256=qUoNEe6sjUnvkTHkCzwayBuLDoH957BBEgb-Qu_k9Yk,1554
|
|
162
|
-
lfx/components/composio/__init__.py,sha256=
|
|
162
|
+
lfx/components/composio/__init__.py,sha256=Ycwax7TUDTez6O9Q9cv0I9GT0eB1hquDIOMJo51R_64,7996
|
|
163
|
+
lfx/components/composio/agentql_composio.py,sha256=zKcIoQq2WmY_if3b7e6N0S5Z-k1aDAoQSoeKePiRIwI,352
|
|
164
|
+
lfx/components/composio/agiled_composio.py,sha256=MpSpUaGo0t2Lu-KzHpv4NT0LZNbvLwkdZ3gJ0gf9cdk,347
|
|
163
165
|
lfx/components/composio/airtable_composio.py,sha256=5HrQEcM8bW7xv4AE5NIWyBzfgopxf9SIIpdcQHuy978,357
|
|
164
166
|
lfx/components/composio/asana_composio.py,sha256=KQ1tYdBJKOhtOqI11r8x2HxA0X21F7YaU-KEs3BOqAE,342
|
|
165
167
|
lfx/components/composio/attio_composio.py,sha256=3kOzz1Zx4_sXEqGY26l3r0nYK6c-RxCYchUwBGZ_vG0,342
|
|
168
|
+
lfx/components/composio/bolna_composio.py,sha256=3efS7oCiYxXOt3suHSSDUhpmRIoZKQsLY_Fsvl4GDUs,342
|
|
169
|
+
lfx/components/composio/brightdata_composio.py,sha256=SaBMWiPLoSQ8aIdBohJbaHZfkudPYYhYFkVxls28ETg,367
|
|
166
170
|
lfx/components/composio/calendly_composio.py,sha256=SiguQT1VKiQ1F_sJs0ZGtNR6qoRYVCtpGbwYelmwU2A,357
|
|
171
|
+
lfx/components/composio/canvas_composio.py,sha256=ZRDSEqcg9q9ZnsTKhOqux8g9zlsPDzBZg8aojt1rAYA,348
|
|
167
172
|
lfx/components/composio/composio_api.py,sha256=xBzxP4T_mPToP5teroP2C4vDiJiyK-tzclDKHxdPRHM,10667
|
|
168
173
|
lfx/components/composio/contentful_composio.py,sha256=Nr77Hsj8R-B_QALVY4aabas4bEjD_xfVdsVdh9_bGu4,367
|
|
174
|
+
lfx/components/composio/digicert_composio.py,sha256=D8vBuJn48UIHV8u_lBFTUJJZPUw_l4Mbh9tbsgBAGVI,357
|
|
169
175
|
lfx/components/composio/discord_composio.py,sha256=3X4b7Wun7N4yt7KV6Hd120t_keNXm3cIMRWajeHSfsM,352
|
|
170
176
|
lfx/components/composio/dropbox_compnent.py,sha256=0FglWZ3vZYQFNo8OJcIMoIE8HQi3N5w2JY8FBhrS4sg,352
|
|
171
177
|
lfx/components/composio/figma_composio.py,sha256=dEPSE1RrJMFuW63R9KPc3HKi3v-ztfHUDHspgagvE-w,342
|
|
178
|
+
lfx/components/composio/finage_composio.py,sha256=UKK97kzRZgwBNZsOuYTMta912LwoBjqMcaLzogRrRGs,347
|
|
179
|
+
lfx/components/composio/fixer_composio.py,sha256=nkwA-dzYiNpIrKgRg1qYzxWf8VGTqs5XH9KK-obqQEM,342
|
|
180
|
+
lfx/components/composio/flexisign_composio.py,sha256=xpu-4ABdiOuzFb4tIVfTx8evQYJbfUN3YLkv3EWWV1c,362
|
|
181
|
+
lfx/components/composio/freshdesk_composio.py,sha256=Hd4D1hXKmXTec0JdR7WFGx-YhUqSsD4jtbZfNJHU01A,362
|
|
172
182
|
lfx/components/composio/github_composio.py,sha256=-KutXeX95w3uUyBufvVmLMYuwHhSPxswLMpI6YrUgWs,347
|
|
173
183
|
lfx/components/composio/gmail_composio.py,sha256=VQiEIi3hWIj4tWzFD2yARqhn2uCifp_rdsJzCjSIyKg,1342
|
|
174
184
|
lfx/components/composio/googlecalendar_composio.py,sha256=hyMyC2yblNCQb8sxa2t2tnke_zE5Uq1OkEAvd_kfIE4,389
|
|
185
|
+
lfx/components/composio/googleclassroom_composio.py,sha256=haXDfBP2mkPgnRUl62eaY7mVlaWpy8Vt_O2LQOafQ98,389
|
|
175
186
|
lfx/components/composio/googledocs_composio.py,sha256=_EIPZqeAPWD5ptTb3h9-Yxaajr_zQo26ZSBzpwBwVyo,369
|
|
176
187
|
lfx/components/composio/googlemeet_composio.py,sha256=xU25iiHRMW0rcCNq0fxmuiEQN7mv1K7NnRqgTg7SBCI,373
|
|
177
188
|
lfx/components/composio/googlesheets_composio.py,sha256=o-84aBcIgQd7md5WdUwRV8tF3QBzTms3Idko2ybgAMA,379
|
|
178
189
|
lfx/components/composio/googletasks_composio.py,sha256=3bmyDAX8OwB6KryAiAitue6rHdeZBoDfJ6q6rzuwOcs,276
|
|
190
|
+
lfx/components/composio/instagram_composio.py,sha256=pmkckFgz2gLtB9JE_uJ8FQsgGdBSrB0cUUXttas6ZB8,362
|
|
191
|
+
lfx/components/composio/jira_composio.py,sha256=PmI5bzhoNy5yE9cfV86gWpPtONJEc4ROoLCg_oFY3_4,337
|
|
192
|
+
lfx/components/composio/jotform_composio.py,sha256=fBxqZ2gU9jwNN1BzMEqeprH_cxSKys4PvDiFTawuCEw,352
|
|
179
193
|
lfx/components/composio/klaviyo_composio.py,sha256=O-fopeP-_RoTdZLHlRlcS5S5jTb3JkT7nE-BIYqIISk,352
|
|
180
194
|
lfx/components/composio/linear_composio.py,sha256=visuu-6nQizgbEM2C6GwvHXYY59_mfGx-rhS4QvQjIA,347
|
|
195
|
+
lfx/components/composio/listennotes_composio.py,sha256=uF8v5RkGQeWy9OLLoyOk4g2GvGMpzBAsxee9uxZoNt0,372
|
|
181
196
|
lfx/components/composio/miro_composio.py,sha256=HpxCHhrEGXD8pCPzI9BX3pomIw2tysDCCmzRo_y9i48,337
|
|
197
|
+
lfx/components/composio/missive_composio.py,sha256=be-USnc5zfpT5Ndr3ClDKMtWZ1y8ozPmsCTC2Ekf5Yg,352
|
|
182
198
|
lfx/components/composio/notion_composio.py,sha256=WQqm_zDRxMtiqomYuzH0Q4hM2ceNJHiHJVr6l-aviKY,347
|
|
183
199
|
lfx/components/composio/onedrive_composio.py,sha256=SXzEYlEhyHNxPu_1_GuQF0FykO5twCpkDy-G3hHlcOQ,359
|
|
184
200
|
lfx/components/composio/outlook_composio.py,sha256=v2mY1gtjUYsTDBD2TdKAUo8E-Y_2YT4ZOBLrv2qrkww,350
|
|
201
|
+
lfx/components/composio/pandadoc_composio.py,sha256=Idkqq8G_5pqqsPF0LtUSGEZYHOcuB4DJJABd3i2rWUQ,357
|
|
185
202
|
lfx/components/composio/reddit_composio.py,sha256=qGeUBzwiUlk_ojDhuMfXpK2pPUXdLPLOA9LXq8W-zE4,347
|
|
186
|
-
lfx/components/composio/slack_composio.py,sha256=
|
|
203
|
+
lfx/components/composio/slack_composio.py,sha256=21re5KgNjtKTqHLJ9Bc7Y87lr5UAHejgCFY2UkBNnck,27453
|
|
187
204
|
lfx/components/composio/slackbot_composio.py,sha256=sTL6VbzuW-Y0rbLEP8O6ypAWoT7pNUC35JhnvP5f4mQ,354
|
|
188
205
|
lfx/components/composio/supabase_composio.py,sha256=etWM40zAwrCmLQrQeN-Pa4i9YU8hr7VIf0BhYKNH1Cg,357
|
|
206
|
+
lfx/components/composio/timelinesai_composio.py,sha256=ducOLeTTlk6PgywrC-o7e5scgrjtmBYBRNWOqvjGPhM,372
|
|
189
207
|
lfx/components/composio/todoist_composio.py,sha256=TdmFLyBYBxTa88Hq18ZaFmS1_UjPXp2I-lRvEJcbEyI,352
|
|
190
208
|
lfx/components/composio/wrike_composio.py,sha256=pfLPAMoI39rY8aFtFpnSyK29vZZvdXn3Tp50HyIXncs,342
|
|
191
209
|
lfx/components/composio/youtube_composio.py,sha256=EaW3f8Cthza9IkHebwjld5u2Vvwa3SyoStplCDVWy00,352
|
|
@@ -369,12 +387,12 @@ lfx/components/link_extractors/__init__.py,sha256=dL4pKVepOSxdKYRggng-sz9eVL-7Rg
|
|
|
369
387
|
lfx/components/lmstudio/__init__.py,sha256=IcaH0L89DrXILWtUyc0mRVfpy6u0fBxjm1f8vggVCs0,1136
|
|
370
388
|
lfx/components/lmstudio/lmstudioembeddings.py,sha256=7NWEt6SG3FOigrxLZ5-TIOSvX4CvCF2zUDa5FmOGyNo,3175
|
|
371
389
|
lfx/components/lmstudio/lmstudiomodel.py,sha256=2ks7FV3E2neKS9LO9R78UISIUJLe2C4YdQ8XzkoPWrU,4839
|
|
372
|
-
lfx/components/logic/__init__.py,sha256=
|
|
390
|
+
lfx/components/logic/__init__.py,sha256=qjxFQTtlK-KTRNldRrm9q_TjA7qxDmTlrcCG5jlBogU,1965
|
|
373
391
|
lfx/components/logic/conditional_router.py,sha256=RQaoM9FF63vXw6rebKA_j4-Hl2YRNvHRtwEq5eT48yY,8692
|
|
374
392
|
lfx/components/logic/data_conditional_router.py,sha256=b6G_QWajQqoFCQM-614QbrPoU2AVzkgMHA6AMUZybl0,5054
|
|
375
393
|
lfx/components/logic/flow_tool.py,sha256=k0jXnRn0TIarE7cw61w80R-a_XmloRTIHioYGeZrBeU,3984
|
|
376
394
|
lfx/components/logic/listen.py,sha256=k_wRN3yW5xtG1CjTdGYhL5LxdgCZ0Bi9cbWP54FkyuY,935
|
|
377
|
-
lfx/components/logic/llm_conditional_router.py,sha256=
|
|
395
|
+
lfx/components/logic/llm_conditional_router.py,sha256=wHCAryCKBvQG5SEwm4KmTufliGBlLFS0Dby2ndF-77w,18714
|
|
378
396
|
lfx/components/logic/loop.py,sha256=F9vGbfAH-zDQgnJpVy9yk4fdrSIXz1gomnAOYW71Gto,4682
|
|
379
397
|
lfx/components/logic/notify.py,sha256=A9aLooUwudRUsf2BRdE7CmGibCCRuQeCadneart9BEg,3086
|
|
380
398
|
lfx/components/logic/pass_message.py,sha256=BNPh7TOQ-svrhR2-uMQMMT0LBW0sT_zzIpbuWeEEPDY,1085
|
|
@@ -438,7 +456,7 @@ lfx/components/processing/extract_key.py,sha256=7e0_ThUzvAe6blYuj0A8zc-b3FzYqlPJ
|
|
|
438
456
|
lfx/components/processing/filter_data.py,sha256=BMUJNyFtTLRdmuxcyPeH_W2PfEWErH6rxMfsLSQrarw,1317
|
|
439
457
|
lfx/components/processing/filter_data_values.py,sha256=hHUiVJxnbERVbvyycmBmUrl4nDK6x7cfQThs5N9JRkk,3182
|
|
440
458
|
lfx/components/processing/json_cleaner.py,sha256=XBUJl67E0qI93yK6L_8uHmbMRaKllk1cQ2c1Dz5DdWw,3750
|
|
441
|
-
lfx/components/processing/lambda_filter.py,sha256=
|
|
459
|
+
lfx/components/processing/lambda_filter.py,sha256=KSXi8I1fE6jSqj1tOsxhTHSqItem-ExWoO73cbbarQ4,8009
|
|
442
460
|
lfx/components/processing/llm_router.py,sha256=FYC0SylbjUDlOBRLSdpFfU6Ep4IMk7tWpRAQJ5k9aA4,23198
|
|
443
461
|
lfx/components/processing/merge_data.py,sha256=ouy4E6rFi2A4_xC6T8Vr3GwFy7fhR98WBuXLGFGom7o,3569
|
|
444
462
|
lfx/components/processing/message_to_data.py,sha256=0K8SIq6vuAvQ3K7siXstNint6R1-rAuZ5NIwQiiG_n0,1342
|
|
@@ -726,7 +744,7 @@ lfx/utils/schemas.py,sha256=NbOtVQBrn4d0BAu-0H_eCTZI2CXkKZlRY37XCSmuJwc,3865
|
|
|
726
744
|
lfx/utils/util.py,sha256=Ww85wbr1-vjh2pXVtmTqoUVr6MXAW8S7eDx_Ys6HpE8,20696
|
|
727
745
|
lfx/utils/util_strings.py,sha256=nU_IcdphNaj6bAPbjeL-c1cInQPfTBit8mp5Y57lwQk,1686
|
|
728
746
|
lfx/utils/version.py,sha256=cHpbO0OJD2JQAvVaTH_6ibYeFbHJV0QDHs_YXXZ-bT8,671
|
|
729
|
-
lfx_nightly-0.1.12.
|
|
730
|
-
lfx_nightly-0.1.12.
|
|
731
|
-
lfx_nightly-0.1.12.
|
|
732
|
-
lfx_nightly-0.1.12.
|
|
747
|
+
lfx_nightly-0.1.12.dev40.dist-info/METADATA,sha256=sUZ01YKv2VE7yqJ6CUxLVqEF3kHPysjqHgP-fx17CzQ,8290
|
|
748
|
+
lfx_nightly-0.1.12.dev40.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
749
|
+
lfx_nightly-0.1.12.dev40.dist-info/entry_points.txt,sha256=1724p3RHDQRT2CKx_QRzEIa7sFuSVO0Ux70YfXfoMT4,42
|
|
750
|
+
lfx_nightly-0.1.12.dev40.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|