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
|
@@ -67,96 +67,6 @@ class ComposioBaseComponent(Component):
|
|
|
67
67
|
auth_tooltip="Please insert a valid Composio API Key.",
|
|
68
68
|
show=False,
|
|
69
69
|
),
|
|
70
|
-
# Pre-defined placeholder fields for dynamic auth - will be updated dynamically
|
|
71
|
-
StrInput(
|
|
72
|
-
name="client_id",
|
|
73
|
-
display_name="Client id",
|
|
74
|
-
info="",
|
|
75
|
-
show=False,
|
|
76
|
-
value="",
|
|
77
|
-
required=False,
|
|
78
|
-
),
|
|
79
|
-
StrInput(
|
|
80
|
-
name="client_secret",
|
|
81
|
-
display_name="Client secret",
|
|
82
|
-
info="",
|
|
83
|
-
show=False,
|
|
84
|
-
value="",
|
|
85
|
-
required=False,
|
|
86
|
-
),
|
|
87
|
-
StrInput(
|
|
88
|
-
name="verification_token",
|
|
89
|
-
display_name="Verification Token",
|
|
90
|
-
info="",
|
|
91
|
-
show=False,
|
|
92
|
-
value="",
|
|
93
|
-
required=False,
|
|
94
|
-
),
|
|
95
|
-
StrInput(
|
|
96
|
-
name="api_key_field",
|
|
97
|
-
display_name="API Key",
|
|
98
|
-
info="",
|
|
99
|
-
show=False,
|
|
100
|
-
value="",
|
|
101
|
-
required=False,
|
|
102
|
-
),
|
|
103
|
-
StrInput(
|
|
104
|
-
name="token",
|
|
105
|
-
display_name="Token",
|
|
106
|
-
info="",
|
|
107
|
-
show=False,
|
|
108
|
-
value="",
|
|
109
|
-
required=False,
|
|
110
|
-
),
|
|
111
|
-
# Additional common auth fields
|
|
112
|
-
StrInput(
|
|
113
|
-
name="access_token",
|
|
114
|
-
display_name="Access Token",
|
|
115
|
-
info="",
|
|
116
|
-
show=False,
|
|
117
|
-
value="",
|
|
118
|
-
required=False,
|
|
119
|
-
),
|
|
120
|
-
StrInput(
|
|
121
|
-
name="refresh_token",
|
|
122
|
-
display_name="Refresh Token",
|
|
123
|
-
info="",
|
|
124
|
-
show=False,
|
|
125
|
-
value="",
|
|
126
|
-
required=False,
|
|
127
|
-
),
|
|
128
|
-
StrInput(
|
|
129
|
-
name="username",
|
|
130
|
-
display_name="Username",
|
|
131
|
-
info="",
|
|
132
|
-
show=False,
|
|
133
|
-
value="",
|
|
134
|
-
required=False,
|
|
135
|
-
),
|
|
136
|
-
StrInput(
|
|
137
|
-
name="password",
|
|
138
|
-
display_name="Password",
|
|
139
|
-
info="",
|
|
140
|
-
show=False,
|
|
141
|
-
value="",
|
|
142
|
-
required=False,
|
|
143
|
-
),
|
|
144
|
-
StrInput(
|
|
145
|
-
name="domain",
|
|
146
|
-
display_name="Domain",
|
|
147
|
-
info="",
|
|
148
|
-
show=False,
|
|
149
|
-
value="",
|
|
150
|
-
required=False,
|
|
151
|
-
),
|
|
152
|
-
StrInput(
|
|
153
|
-
name="base_url",
|
|
154
|
-
display_name="Base URL",
|
|
155
|
-
info="",
|
|
156
|
-
show=False,
|
|
157
|
-
value="",
|
|
158
|
-
required=False,
|
|
159
|
-
),
|
|
160
70
|
SortableListInput(
|
|
161
71
|
name="action_button",
|
|
162
72
|
display_name="Action",
|
|
@@ -851,6 +761,9 @@ class ComposioBaseComponent(Component):
|
|
|
851
761
|
for inp in lf_inputs:
|
|
852
762
|
if inp.name is not None:
|
|
853
763
|
inp_dict = inp.to_dict() if hasattr(inp, "to_dict") else inp.__dict__.copy()
|
|
764
|
+
|
|
765
|
+
# Do not mutate input_types here; keep original configuration
|
|
766
|
+
|
|
854
767
|
inp_dict.setdefault("show", True) # visible once action selected
|
|
855
768
|
# Preserve previously entered value if user already filled something
|
|
856
769
|
if inp.name in build_config:
|
|
@@ -1012,14 +925,26 @@ class ComposioBaseComponent(Component):
|
|
|
1012
925
|
return self._toolkit_schema
|
|
1013
926
|
try:
|
|
1014
927
|
composio = self._build_wrapper()
|
|
928
|
+
# The SDK typically offers a retrieve by slug; if not present, try a few fallbacks
|
|
1015
929
|
app_slug = getattr(self, "app_name", "").lower()
|
|
1016
930
|
if not app_slug:
|
|
1017
931
|
return None
|
|
1018
932
|
try:
|
|
1019
|
-
schema = composio.toolkits.
|
|
1020
|
-
except (AttributeError, ValueError, ConnectionError, TypeError)
|
|
1021
|
-
|
|
1022
|
-
|
|
933
|
+
schema = composio.toolkits.retrieve(slug=app_slug)
|
|
934
|
+
except (AttributeError, ValueError, ConnectionError, TypeError):
|
|
935
|
+
schema = None
|
|
936
|
+
for method_name, kwargs in (
|
|
937
|
+
("retrieve", {"toolkit_slug": app_slug}),
|
|
938
|
+
("get", {"slug": app_slug}),
|
|
939
|
+
("get", {"toolkit_slug": app_slug}),
|
|
940
|
+
):
|
|
941
|
+
try:
|
|
942
|
+
method = getattr(composio.toolkits, method_name)
|
|
943
|
+
schema = method(**kwargs)
|
|
944
|
+
if schema:
|
|
945
|
+
break
|
|
946
|
+
except (AttributeError, ValueError, ConnectionError, TypeError):
|
|
947
|
+
continue
|
|
1023
948
|
self._toolkit_schema = self._to_plain_dict(schema)
|
|
1024
949
|
except (AttributeError, ValueError, ConnectionError, TypeError) as e:
|
|
1025
950
|
logger.debug(f"Could not retrieve toolkit schema for {getattr(self, 'app_name', '')}: {e}")
|
|
@@ -1034,12 +959,8 @@ class ComposioBaseComponent(Component):
|
|
|
1034
959
|
modes: list[str] = []
|
|
1035
960
|
# composio_managed_auth_schemes: list[str]
|
|
1036
961
|
managed = schema.get("composio_managed_auth_schemes") or schema.get("composioManagedAuthSchemes") or []
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
# Add "Composio managed" as first option if there are managed schemes
|
|
1040
|
-
if has_managed_schemes:
|
|
1041
|
-
modes.append("Composio managed")
|
|
1042
|
-
|
|
962
|
+
if isinstance(managed, list):
|
|
963
|
+
modes.extend([m for m in managed if isinstance(m, str)])
|
|
1043
964
|
# auth_config_details: list with entries containing mode
|
|
1044
965
|
details = schema.get("auth_config_details") or schema.get("authConfigDetails") or []
|
|
1045
966
|
for item in details:
|
|
@@ -1093,11 +1014,8 @@ class ComposioBaseComponent(Component):
|
|
|
1093
1014
|
|
|
1094
1015
|
def _clear_auth_dynamic_fields(self, build_config: dict) -> None:
|
|
1095
1016
|
for fname in list(self._auth_dynamic_fields):
|
|
1096
|
-
if fname in build_config
|
|
1097
|
-
|
|
1098
|
-
build_config[fname]["show"] = False
|
|
1099
|
-
build_config[fname]["value"] = ""
|
|
1100
|
-
build_config[fname]["required"] = False
|
|
1017
|
+
if fname in build_config:
|
|
1018
|
+
build_config.pop(fname, None)
|
|
1101
1019
|
self._auth_dynamic_fields.clear()
|
|
1102
1020
|
|
|
1103
1021
|
def _add_text_field(
|
|
@@ -1110,29 +1028,18 @@ class ComposioBaseComponent(Component):
|
|
|
1110
1028
|
required: bool,
|
|
1111
1029
|
default_value: str | None = None,
|
|
1112
1030
|
) -> None:
|
|
1113
|
-
"""
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
field = StrInput(
|
|
1126
|
-
name=name,
|
|
1127
|
-
display_name=display_name or name.replace("_", " ").title(),
|
|
1128
|
-
info=info or "",
|
|
1129
|
-
required=required,
|
|
1130
|
-
real_time_refresh=True,
|
|
1131
|
-
show=True,
|
|
1132
|
-
).to_dict()
|
|
1133
|
-
if default_value is not None and default_value != "":
|
|
1134
|
-
field["value"] = default_value
|
|
1135
|
-
build_config[name] = field
|
|
1031
|
+
"""Add a simple text input (StrInput) for custom auth forms, prefilled with schema defaults when available."""
|
|
1032
|
+
field = StrInput(
|
|
1033
|
+
name=name,
|
|
1034
|
+
display_name=display_name or name.replace("_", " ").title(),
|
|
1035
|
+
info=info or "",
|
|
1036
|
+
required=required,
|
|
1037
|
+
real_time_refresh=True,
|
|
1038
|
+
show=True,
|
|
1039
|
+
).to_dict()
|
|
1040
|
+
if default_value is not None and default_value != "":
|
|
1041
|
+
field["value"] = default_value
|
|
1042
|
+
build_config[name] = field
|
|
1136
1043
|
self._auth_dynamic_fields.add(name)
|
|
1137
1044
|
|
|
1138
1045
|
def _render_custom_auth_fields(self, build_config: dict, schema: dict[str, Any], mode: str) -> None:
|
|
@@ -1146,37 +1053,35 @@ class ComposioBaseComponent(Component):
|
|
|
1146
1053
|
if not selected:
|
|
1147
1054
|
return
|
|
1148
1055
|
fields = selected.get("fields") or {}
|
|
1149
|
-
|
|
1150
|
-
# Helper function to process fields
|
|
1151
|
-
def process_fields(field_list: list, *, required: bool) -> None:
|
|
1152
|
-
for field in field_list:
|
|
1153
|
-
name = field.get("name")
|
|
1154
|
-
if not name:
|
|
1155
|
-
continue
|
|
1156
|
-
# Skip Access Token field (bearer_token)
|
|
1157
|
-
if name == "bearer_token":
|
|
1158
|
-
continue
|
|
1159
|
-
# Skip fields with default values for both required and optional fields
|
|
1160
|
-
default_val = field.get("default")
|
|
1161
|
-
if default_val is not None:
|
|
1162
|
-
continue
|
|
1163
|
-
disp = field.get("display_name") or field.get("displayName") or name
|
|
1164
|
-
desc = field.get("description")
|
|
1165
|
-
self._add_text_field(build_config, name, disp, desc, required=required, default_value=default_val)
|
|
1166
|
-
|
|
1167
|
-
# a) AuthConfigCreation fields (for custom OAuth2, etc.)
|
|
1056
|
+
# a) AuthConfigCreation required fields for OAUTH2 custom
|
|
1168
1057
|
creation = fields.get("auth_config_creation") or fields.get("authConfigCreation") or {}
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1058
|
+
for req in creation.get("required", []):
|
|
1059
|
+
name = req.get("name")
|
|
1060
|
+
if not name:
|
|
1061
|
+
continue
|
|
1062
|
+
disp = req.get("display_name") or req.get("displayName") or name
|
|
1063
|
+
desc = req.get("description")
|
|
1064
|
+
default_val = req.get("default")
|
|
1065
|
+
self._add_text_field(build_config, name, disp, desc, required=True, default_value=default_val)
|
|
1066
|
+
# Optional auth_config_creation fields intentionally not rendered
|
|
1067
|
+
# b) ConnectedAccountInitiation fields for API_KEY mode
|
|
1175
1068
|
initiation = fields.get("connected_account_initiation") or fields.get("connectedAccountInitiation") or {}
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1069
|
+
for req in initiation.get("required", []):
|
|
1070
|
+
name = req.get("name")
|
|
1071
|
+
if not name:
|
|
1072
|
+
continue
|
|
1073
|
+
disp = req.get("display_name") or req.get("displayName") or name
|
|
1074
|
+
desc = req.get("description")
|
|
1075
|
+
default_val = req.get("default")
|
|
1076
|
+
self._add_text_field(build_config, name, disp, desc, required=True, default_value=default_val)
|
|
1077
|
+
for opt in initiation.get("optional", []):
|
|
1078
|
+
name = opt.get("name")
|
|
1079
|
+
if not name:
|
|
1080
|
+
continue
|
|
1081
|
+
disp = opt.get("display_name") or opt.get("displayName") or name
|
|
1082
|
+
desc = opt.get("description")
|
|
1083
|
+
default_val = opt.get("default")
|
|
1084
|
+
self._add_text_field(build_config, name, disp, desc, required=False, default_value=default_val)
|
|
1180
1085
|
|
|
1181
1086
|
def _collect_all_auth_field_names(self, schema: dict[str, Any] | None) -> set[str]:
|
|
1182
1087
|
names: set[str] = set()
|
|
@@ -1226,6 +1131,8 @@ class ComposioBaseComponent(Component):
|
|
|
1226
1131
|
|
|
1227
1132
|
def update_build_config(self, build_config: dict, field_value: Any, field_name: str | None = None) -> dict:
|
|
1228
1133
|
"""Update build config for auth and action selection."""
|
|
1134
|
+
# Avoid normalizing legacy input_types here; rely on upstream fixes
|
|
1135
|
+
|
|
1229
1136
|
# BULLETPROOF tool_mode checking - check all possible places where tool_mode could be stored
|
|
1230
1137
|
instance_tool_mode = getattr(self, "tool_mode", False) if hasattr(self, "tool_mode") else False
|
|
1231
1138
|
|
|
@@ -1282,8 +1189,7 @@ class ComposioBaseComponent(Component):
|
|
|
1282
1189
|
try:
|
|
1283
1190
|
selected_mode = (build_config.get("auth_mode") or {}).get("value")
|
|
1284
1191
|
managed = (schema or {}).get("composio_managed_auth_schemes") or []
|
|
1285
|
-
|
|
1286
|
-
if selected_mode and selected_mode != "Composio managed":
|
|
1192
|
+
if selected_mode and not (isinstance(managed, list) and selected_mode in managed):
|
|
1287
1193
|
self._clear_auth_dynamic_fields(build_config)
|
|
1288
1194
|
self._render_custom_auth_fields(build_config, schema or {}, selected_mode)
|
|
1289
1195
|
except (TypeError, ValueError, AttributeError):
|
|
@@ -1429,13 +1335,9 @@ class ComposioBaseComponent(Component):
|
|
|
1429
1335
|
build_config["create_auth_config"]["value"] = ""
|
|
1430
1336
|
build_config["create_auth_config"]["helper_text"] = ""
|
|
1431
1337
|
build_config["create_auth_config"]["options"] = ["create"]
|
|
1432
|
-
if mode
|
|
1433
|
-
#
|
|
1338
|
+
if isinstance(managed, list) and mode in managed:
|
|
1339
|
+
# Managed → no extra fields
|
|
1434
1340
|
pass
|
|
1435
|
-
elif isinstance(managed, list) and mode in managed:
|
|
1436
|
-
# This is a specific managed auth scheme (e.g., OAUTH2) but user can still choose custom
|
|
1437
|
-
# So we should render custom fields for this mode
|
|
1438
|
-
self._render_custom_auth_fields(build_config, schema, mode)
|
|
1439
1341
|
else:
|
|
1440
1342
|
# Custom → render only required fields based on the toolkit schema
|
|
1441
1343
|
self._render_custom_auth_fields(build_config, schema, mode)
|
|
@@ -1471,10 +1373,7 @@ class ComposioBaseComponent(Component):
|
|
|
1471
1373
|
mode = build_config["auth_mode"].get("value")
|
|
1472
1374
|
# If no managed default exists (400 Default auth config), require mode selection
|
|
1473
1375
|
managed = (schema or {}).get("composio_managed_auth_schemes") or []
|
|
1474
|
-
|
|
1475
|
-
# Handle "Composio managed" mode explicitly
|
|
1476
|
-
if mode == "Composio managed":
|
|
1477
|
-
# Use Composio managed auth flow
|
|
1376
|
+
if isinstance(managed, list) and "OAUTH2" in managed and (mode is None or mode == "OAUTH2"):
|
|
1478
1377
|
redirect_url, connection_id = self._initiate_connection(toolkit_slug)
|
|
1479
1378
|
build_config["auth_link"]["value"] = redirect_url
|
|
1480
1379
|
logger.info(f"New OAuth URL created for {toolkit_slug}: {redirect_url}")
|
|
@@ -1849,7 +1748,11 @@ class ComposioBaseComponent(Component):
|
|
|
1849
1748
|
schema = self._get_toolkit_schema()
|
|
1850
1749
|
mode = (build_config.get("auth_mode") or {}).get("value")
|
|
1851
1750
|
managed = (schema or {}).get("composio_managed_auth_schemes") or []
|
|
1852
|
-
if
|
|
1751
|
+
if (
|
|
1752
|
+
mode
|
|
1753
|
+
and not (isinstance(managed, list) and mode in managed)
|
|
1754
|
+
and not getattr(self, "_auth_dynamic_fields", set())
|
|
1755
|
+
):
|
|
1853
1756
|
self._render_custom_auth_fields(build_config, schema or {}, mode)
|
|
1854
1757
|
except (TypeError, ValueError, AttributeError):
|
|
1855
1758
|
pass
|
lfx/components/arxiv/arxiv.py
CHANGED
|
@@ -45,8 +45,14 @@ class ArXivComponent(Component):
|
|
|
45
45
|
"""Build the arXiv API query URL."""
|
|
46
46
|
base_url = "http://export.arxiv.org/api/query?"
|
|
47
47
|
|
|
48
|
-
# Build the search query
|
|
49
|
-
|
|
48
|
+
# Build the search query based on search type
|
|
49
|
+
if self.search_type == "all":
|
|
50
|
+
search_query = self.search_query # No prefix for all fields
|
|
51
|
+
else:
|
|
52
|
+
# Map dropdown values to ArXiv API prefixes
|
|
53
|
+
prefix_map = {"title": "ti", "abstract": "abs", "author": "au", "cat": "cat"}
|
|
54
|
+
prefix = prefix_map.get(self.search_type, "")
|
|
55
|
+
search_query = f"{prefix}:{self.search_query}"
|
|
50
56
|
|
|
51
57
|
# URL parameters
|
|
52
58
|
params = {
|
|
@@ -5,93 +5,147 @@ from typing import TYPE_CHECKING, Any
|
|
|
5
5
|
from lfx.components._importing import import_mod
|
|
6
6
|
|
|
7
7
|
if TYPE_CHECKING:
|
|
8
|
+
from .agentql_composio import ComposioAgentQLAPIComponent
|
|
9
|
+
from .agiled_composio import ComposioAgiledAPIComponent
|
|
8
10
|
from .airtable_composio import ComposioAirtableAPIComponent
|
|
9
11
|
from .asana_composio import ComposioAsanaAPIComponent
|
|
10
12
|
from .attio_composio import ComposioAttioAPIComponent
|
|
13
|
+
from .bolna_composio import ComposioBolnaAPIComponent
|
|
14
|
+
from .brightdata_composio import ComposioBrightdataAPIComponent
|
|
11
15
|
from .calendly_composio import ComposioCalendlyAPIComponent
|
|
16
|
+
from .canvas_composio import ComposioCanvasAPIComponent
|
|
12
17
|
from .composio_api import ComposioAPIComponent
|
|
13
18
|
from .contentful_composio import ComposioContentfulAPIComponent
|
|
19
|
+
from .digicert_composio import ComposioDigicertAPIComponent
|
|
14
20
|
from .discord_composio import ComposioDiscordAPIComponent
|
|
15
21
|
from .figma_composio import ComposioFigmaAPIComponent
|
|
22
|
+
from .finage_composio import ComposioFinageAPIComponent
|
|
23
|
+
from .fixer_composio import ComposioFixerAPIComponent
|
|
24
|
+
from .flexisign_composio import ComposioFlexisignAPIComponent
|
|
25
|
+
from .freshdesk_composio import ComposioFreshdeskAPIComponent
|
|
16
26
|
from .github_composio import ComposioGitHubAPIComponent
|
|
17
27
|
from .gmail_composio import ComposioGmailAPIComponent
|
|
18
28
|
from .googlecalendar_composio import ComposioGoogleCalendarAPIComponent
|
|
29
|
+
from .googleclassroom_composio import ComposioGoogleclassroomAPIComponent
|
|
19
30
|
from .googledocs_composio import ComposioGoogleDocsAPIComponent
|
|
20
31
|
from .googlemeet_composio import ComposioGooglemeetAPIComponent
|
|
21
32
|
from .googlesheets_composio import ComposioGoogleSheetsAPIComponent
|
|
22
33
|
from .googletasks_composio import ComposioGoogleTasksAPIComponent
|
|
34
|
+
from .instagram_composio import ComposioInstagramAPIComponent
|
|
35
|
+
from .jira_composio import ComposioJiraAPIComponent
|
|
36
|
+
from .jotform_composio import ComposioJotformAPIComponent
|
|
23
37
|
from .klaviyo_composio import ComposioKlaviyoAPIComponent
|
|
24
38
|
from .linear_composio import ComposioLinearAPIComponent
|
|
39
|
+
from .listennotes_composio import ComposioListennotesAPIComponent
|
|
25
40
|
from .miro_composio import ComposioMiroAPIComponent
|
|
41
|
+
from .missive_composio import ComposioMissiveAPIComponent
|
|
26
42
|
from .notion_composio import ComposioNotionAPIComponent
|
|
27
43
|
from .onedrive_composio import ComposioOneDriveAPIComponent
|
|
28
44
|
from .outlook_composio import ComposioOutlookAPIComponent
|
|
45
|
+
from .pandadoc_composio import ComposioPandadocAPIComponent
|
|
29
46
|
from .reddit_composio import ComposioRedditAPIComponent
|
|
30
47
|
from .slack_composio import ComposioSlackAPIComponent
|
|
31
48
|
from .slackbot_composio import ComposioSlackbotAPIComponent
|
|
32
49
|
from .supabase_composio import ComposioSupabaseAPIComponent
|
|
50
|
+
from .timelinesai_composio import ComposioTimelinesAIAPIComponent
|
|
33
51
|
from .todoist_composio import ComposioTodoistAPIComponent
|
|
34
52
|
from .wrike_composio import ComposioWrikeAPIComponent
|
|
35
53
|
from .youtube_composio import ComposioYoutubeAPIComponent
|
|
36
54
|
|
|
37
55
|
_dynamic_imports = {
|
|
38
56
|
"ComposioAPIComponent": "composio_api",
|
|
57
|
+
"ComposioAgentQLAPIComponent": "agentql_composio",
|
|
58
|
+
"ComposioAgiledAPIComponent": "agiled_composio",
|
|
59
|
+
"ComposioAirtableAPIComponent": "airtable_composio",
|
|
60
|
+
"ComposioAsanaAPIComponent": "asana_composio",
|
|
61
|
+
"ComposioAttioAPIComponent": "attio_composio",
|
|
62
|
+
"ComposioBolnaAPIComponent": "bolna_composio",
|
|
63
|
+
"ComposioBrightdataAPIComponent": "brightdata_composio",
|
|
64
|
+
"ComposioCalendlyAPIComponent": "calendly_composio",
|
|
65
|
+
"ComposioCanvasAPIComponent": "canvas_composio",
|
|
66
|
+
"ComposioContentfulAPIComponent": "contentful_composio",
|
|
67
|
+
"ComposioDiscordAPIComponent": "discord_composio",
|
|
68
|
+
"ComposioDigicertAPIComponent": "digicert_composio",
|
|
69
|
+
"ComposioFigmaAPIComponent": "figma_composio",
|
|
39
70
|
"ComposioGitHubAPIComponent": "github_composio",
|
|
40
71
|
"ComposioGmailAPIComponent": "gmail_composio",
|
|
41
72
|
"ComposioGoogleCalendarAPIComponent": "googlecalendar_composio",
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"ComposioSlackAPIComponent": "slack_composio",
|
|
73
|
+
"ComposioGoogleDocsAPIComponent": "googledocs_composio",
|
|
74
|
+
"ComposioGoogleSheetsAPIComponent": "googlesheets_composio",
|
|
45
75
|
"ComposioGoogleTasksAPIComponent": "googletasks_composio",
|
|
76
|
+
"ComposioGooglemeetAPIComponent": "googlemeet_composio",
|
|
77
|
+
"ComposioJiraAPIComponent": "jira_composio",
|
|
78
|
+
"ComposioKlaviyoAPIComponent": "klaviyo_composio",
|
|
46
79
|
"ComposioLinearAPIComponent": "linear_composio",
|
|
80
|
+
"ComposioMiroAPIComponent": "miro_composio",
|
|
81
|
+
"ComposioNotionAPIComponent": "notion_composio",
|
|
82
|
+
"ComposioOneDriveAPIComponent": "onedrive_composio",
|
|
83
|
+
"ComposioOutlookAPIComponent": "outlook_composio",
|
|
47
84
|
"ComposioRedditAPIComponent": "reddit_composio",
|
|
85
|
+
"ComposioSlackAPIComponent": "slack_composio",
|
|
48
86
|
"ComposioSlackbotAPIComponent": "slackbot_composio",
|
|
49
87
|
"ComposioSupabaseAPIComponent": "supabase_composio",
|
|
88
|
+
"ComposioTimelinesAIAPIComponent": "timelinesai_composio",
|
|
50
89
|
"ComposioTodoistAPIComponent": "todoist_composio",
|
|
51
|
-
"ComposioYoutubeAPIComponent": "youtube_composio",
|
|
52
|
-
"ComposioGoogleDocsAPIComponent": "googledocs_composio",
|
|
53
|
-
"ComposioGoogleSheetsAPIComponent": "googlesheets_composio",
|
|
54
|
-
"ComposioKlaviyoAPIComponent": "klaviyo_composio",
|
|
55
|
-
"ComposioNotionAPIComponent": "notion_composio",
|
|
56
|
-
"ComposioOneDriveAPIComponent": "onedrive_composio",
|
|
57
|
-
"ComposioAirtableAPIComponent": "airtable_composio",
|
|
58
|
-
"ComposioAsanaAPIComponent": "asana_composio",
|
|
59
|
-
"ComposioAttioAPIComponent": "attio_composio",
|
|
60
|
-
"ComposioCalendlyAPIComponent": "calendly_composio",
|
|
61
|
-
"ComposioContentfulAPIComponent": "contentful_composio",
|
|
62
|
-
"ComposioDiscordAPIComponent": "discord_composio",
|
|
63
|
-
"ComposioFigmaAPIComponent": "figma_composio",
|
|
64
|
-
"ComposioMiroAPIComponent": "miro_composio",
|
|
65
90
|
"ComposioWrikeAPIComponent": "wrike_composio",
|
|
91
|
+
"ComposioYoutubeAPIComponent": "youtube_composio",
|
|
92
|
+
"ComposioFinageAPIComponent": "finage_composio",
|
|
93
|
+
"ComposioFixerAPIComponent": "fixer_composio",
|
|
94
|
+
"ComposioFlexisignAPIComponent": "flexisign_composio",
|
|
95
|
+
"ComposioFreshdeskAPIComponent": "freshdesk_composio",
|
|
96
|
+
"ComposioGoogleclassroomAPIComponent": "googleclassroom_composio",
|
|
97
|
+
"ComposioInstagramAPIComponent": "instagram_composio",
|
|
98
|
+
"ComposioJotformAPIComponent": "jotform_composio",
|
|
99
|
+
"ComposioListennotesAPIComponent": "listennotes_composio",
|
|
100
|
+
"ComposioMissiveAPIComponent": "missive_composio",
|
|
101
|
+
"ComposioPandadocAPIComponent": "pandadoc_composio",
|
|
66
102
|
}
|
|
67
103
|
|
|
68
104
|
# Always expose all components - individual failures will be handled on import
|
|
69
105
|
__all__ = [
|
|
70
106
|
"ComposioAPIComponent",
|
|
107
|
+
"ComposioAgentQLAPIComponent",
|
|
108
|
+
"ComposioAgiledAPIComponent",
|
|
71
109
|
"ComposioAirtableAPIComponent",
|
|
72
110
|
"ComposioAsanaAPIComponent",
|
|
73
111
|
"ComposioAttioAPIComponent",
|
|
112
|
+
"ComposioBolnaAPIComponent",
|
|
113
|
+
"ComposioBrightdataAPIComponent",
|
|
74
114
|
"ComposioCalendlyAPIComponent",
|
|
115
|
+
"ComposioCanvasAPIComponent",
|
|
75
116
|
"ComposioContentfulAPIComponent",
|
|
117
|
+
"ComposioDigicertAPIComponent",
|
|
76
118
|
"ComposioDiscordAPIComponent",
|
|
77
119
|
"ComposioFigmaAPIComponent",
|
|
120
|
+
"ComposioFinageAPIComponent",
|
|
121
|
+
"ComposioFixerAPIComponent",
|
|
122
|
+
"ComposioFlexisignAPIComponent",
|
|
123
|
+
"ComposioFreshdeskAPIComponent",
|
|
78
124
|
"ComposioGitHubAPIComponent",
|
|
79
125
|
"ComposioGmailAPIComponent",
|
|
80
126
|
"ComposioGoogleCalendarAPIComponent",
|
|
81
127
|
"ComposioGoogleDocsAPIComponent",
|
|
82
128
|
"ComposioGoogleSheetsAPIComponent",
|
|
83
129
|
"ComposioGoogleTasksAPIComponent",
|
|
130
|
+
"ComposioGoogleclassroomAPIComponent",
|
|
84
131
|
"ComposioGooglemeetAPIComponent",
|
|
132
|
+
"ComposioInstagramAPIComponent",
|
|
133
|
+
"ComposioJiraAPIComponent",
|
|
134
|
+
"ComposioJotformAPIComponent",
|
|
85
135
|
"ComposioKlaviyoAPIComponent",
|
|
86
136
|
"ComposioLinearAPIComponent",
|
|
137
|
+
"ComposioListennotesAPIComponent",
|
|
87
138
|
"ComposioMiroAPIComponent",
|
|
139
|
+
"ComposioMissiveAPIComponent",
|
|
88
140
|
"ComposioNotionAPIComponent",
|
|
89
141
|
"ComposioOneDriveAPIComponent",
|
|
90
142
|
"ComposioOutlookAPIComponent",
|
|
143
|
+
"ComposioPandadocAPIComponent",
|
|
91
144
|
"ComposioRedditAPIComponent",
|
|
92
145
|
"ComposioSlackAPIComponent",
|
|
93
146
|
"ComposioSlackbotAPIComponent",
|
|
94
147
|
"ComposioSupabaseAPIComponent",
|
|
148
|
+
"ComposioTimelinesAIAPIComponent",
|
|
95
149
|
"ComposioTodoistAPIComponent",
|
|
96
150
|
"ComposioWrikeAPIComponent",
|
|
97
151
|
"ComposioYoutubeAPIComponent",
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioAgentQLAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "AgentQL"
|
|
6
|
+
icon = "AgentQL"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "agentql"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for AgentQL component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioAgiledAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Agiled"
|
|
6
|
+
icon = "Agiled"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "agiled"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Agiled component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioBolnaAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Bolna"
|
|
6
|
+
icon = "Bolna"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "bolna"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Bolna component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioBrightdataAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Brightdata"
|
|
6
|
+
icon = "Brightdata"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "brightdata"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Brightdata component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioCanvasAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Canvas"
|
|
6
|
+
icon = "Canvas"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "canvas"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Canvaas component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioDigicertAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Digicert"
|
|
6
|
+
icon = "Digicert"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "digicert"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Digicert component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioFinageAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Finage"
|
|
6
|
+
icon = "Finage"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "finage"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Finage component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioFixerAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Fixer"
|
|
6
|
+
icon = "Fixer"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "fixer"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Fixer component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioFlexisignAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Flexisign"
|
|
6
|
+
icon = "Flexisign"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "flexisign"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Flexisign component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioFreshdeskAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Freshdesk"
|
|
6
|
+
icon = "Freshdesk"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "freshdesk"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Freshdesk component."""
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
from lfx.base.composio.composio_base import ComposioBaseComponent
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class ComposioGoogleclassroomAPIComponent(ComposioBaseComponent):
|
|
5
|
+
display_name: str = "Google Classroom"
|
|
6
|
+
icon = "Classroom"
|
|
7
|
+
documentation: str = "https://docs.composio.dev"
|
|
8
|
+
app_name = "GOOGLE_CLASSROOM"
|
|
9
|
+
|
|
10
|
+
def set_default_tools(self):
|
|
11
|
+
"""Set the default tools for Google Classroom component."""
|