lfx-nightly 0.2.0.dev25__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.

Files changed (769) hide show
  1. lfx/__init__.py +0 -0
  2. lfx/__main__.py +25 -0
  3. lfx/_assets/component_index.json +1 -0
  4. lfx/base/__init__.py +0 -0
  5. lfx/base/agents/__init__.py +0 -0
  6. lfx/base/agents/agent.py +375 -0
  7. lfx/base/agents/altk_base_agent.py +380 -0
  8. lfx/base/agents/altk_tool_wrappers.py +565 -0
  9. lfx/base/agents/callback.py +130 -0
  10. lfx/base/agents/context.py +109 -0
  11. lfx/base/agents/crewai/__init__.py +0 -0
  12. lfx/base/agents/crewai/crew.py +231 -0
  13. lfx/base/agents/crewai/tasks.py +12 -0
  14. lfx/base/agents/default_prompts.py +23 -0
  15. lfx/base/agents/errors.py +15 -0
  16. lfx/base/agents/events.py +430 -0
  17. lfx/base/agents/utils.py +237 -0
  18. lfx/base/astra_assistants/__init__.py +0 -0
  19. lfx/base/astra_assistants/util.py +171 -0
  20. lfx/base/chains/__init__.py +0 -0
  21. lfx/base/chains/model.py +19 -0
  22. lfx/base/composio/__init__.py +0 -0
  23. lfx/base/composio/composio_base.py +2584 -0
  24. lfx/base/compressors/__init__.py +0 -0
  25. lfx/base/compressors/model.py +60 -0
  26. lfx/base/constants.py +46 -0
  27. lfx/base/curl/__init__.py +0 -0
  28. lfx/base/curl/parse.py +188 -0
  29. lfx/base/data/__init__.py +5 -0
  30. lfx/base/data/base_file.py +810 -0
  31. lfx/base/data/docling_utils.py +338 -0
  32. lfx/base/data/storage_utils.py +192 -0
  33. lfx/base/data/utils.py +362 -0
  34. lfx/base/datastax/__init__.py +5 -0
  35. lfx/base/datastax/astradb_base.py +896 -0
  36. lfx/base/document_transformers/__init__.py +0 -0
  37. lfx/base/document_transformers/model.py +43 -0
  38. lfx/base/embeddings/__init__.py +0 -0
  39. lfx/base/embeddings/aiml_embeddings.py +62 -0
  40. lfx/base/embeddings/embeddings_class.py +113 -0
  41. lfx/base/embeddings/model.py +26 -0
  42. lfx/base/flow_processing/__init__.py +0 -0
  43. lfx/base/flow_processing/utils.py +86 -0
  44. lfx/base/huggingface/__init__.py +0 -0
  45. lfx/base/huggingface/model_bridge.py +133 -0
  46. lfx/base/io/__init__.py +0 -0
  47. lfx/base/io/chat.py +21 -0
  48. lfx/base/io/text.py +22 -0
  49. lfx/base/knowledge_bases/__init__.py +3 -0
  50. lfx/base/knowledge_bases/knowledge_base_utils.py +137 -0
  51. lfx/base/langchain_utilities/__init__.py +0 -0
  52. lfx/base/langchain_utilities/model.py +35 -0
  53. lfx/base/langchain_utilities/spider_constants.py +1 -0
  54. lfx/base/langwatch/__init__.py +0 -0
  55. lfx/base/langwatch/utils.py +18 -0
  56. lfx/base/mcp/__init__.py +0 -0
  57. lfx/base/mcp/constants.py +2 -0
  58. lfx/base/mcp/util.py +1659 -0
  59. lfx/base/memory/__init__.py +0 -0
  60. lfx/base/memory/memory.py +49 -0
  61. lfx/base/memory/model.py +38 -0
  62. lfx/base/models/__init__.py +3 -0
  63. lfx/base/models/aiml_constants.py +51 -0
  64. lfx/base/models/anthropic_constants.py +51 -0
  65. lfx/base/models/aws_constants.py +151 -0
  66. lfx/base/models/chat_result.py +76 -0
  67. lfx/base/models/cometapi_constants.py +54 -0
  68. lfx/base/models/google_generative_ai_constants.py +70 -0
  69. lfx/base/models/google_generative_ai_model.py +38 -0
  70. lfx/base/models/groq_constants.py +150 -0
  71. lfx/base/models/groq_model_discovery.py +265 -0
  72. lfx/base/models/model.py +375 -0
  73. lfx/base/models/model_input_constants.py +378 -0
  74. lfx/base/models/model_metadata.py +41 -0
  75. lfx/base/models/model_utils.py +108 -0
  76. lfx/base/models/novita_constants.py +35 -0
  77. lfx/base/models/ollama_constants.py +52 -0
  78. lfx/base/models/openai_constants.py +129 -0
  79. lfx/base/models/sambanova_constants.py +18 -0
  80. lfx/base/models/watsonx_constants.py +36 -0
  81. lfx/base/processing/__init__.py +0 -0
  82. lfx/base/prompts/__init__.py +0 -0
  83. lfx/base/prompts/api_utils.py +224 -0
  84. lfx/base/prompts/utils.py +61 -0
  85. lfx/base/textsplitters/__init__.py +0 -0
  86. lfx/base/textsplitters/model.py +28 -0
  87. lfx/base/tools/__init__.py +0 -0
  88. lfx/base/tools/base.py +26 -0
  89. lfx/base/tools/component_tool.py +325 -0
  90. lfx/base/tools/constants.py +49 -0
  91. lfx/base/tools/flow_tool.py +132 -0
  92. lfx/base/tools/run_flow.py +698 -0
  93. lfx/base/vectorstores/__init__.py +0 -0
  94. lfx/base/vectorstores/model.py +193 -0
  95. lfx/base/vectorstores/utils.py +22 -0
  96. lfx/base/vectorstores/vector_store_connection_decorator.py +52 -0
  97. lfx/cli/__init__.py +5 -0
  98. lfx/cli/commands.py +327 -0
  99. lfx/cli/common.py +650 -0
  100. lfx/cli/run.py +506 -0
  101. lfx/cli/script_loader.py +289 -0
  102. lfx/cli/serve_app.py +546 -0
  103. lfx/cli/validation.py +69 -0
  104. lfx/components/FAISS/__init__.py +34 -0
  105. lfx/components/FAISS/faiss.py +111 -0
  106. lfx/components/Notion/__init__.py +19 -0
  107. lfx/components/Notion/add_content_to_page.py +269 -0
  108. lfx/components/Notion/create_page.py +94 -0
  109. lfx/components/Notion/list_database_properties.py +68 -0
  110. lfx/components/Notion/list_pages.py +122 -0
  111. lfx/components/Notion/list_users.py +77 -0
  112. lfx/components/Notion/page_content_viewer.py +93 -0
  113. lfx/components/Notion/search.py +111 -0
  114. lfx/components/Notion/update_page_property.py +114 -0
  115. lfx/components/__init__.py +428 -0
  116. lfx/components/_importing.py +42 -0
  117. lfx/components/agentql/__init__.py +3 -0
  118. lfx/components/agentql/agentql_api.py +151 -0
  119. lfx/components/aiml/__init__.py +37 -0
  120. lfx/components/aiml/aiml.py +115 -0
  121. lfx/components/aiml/aiml_embeddings.py +37 -0
  122. lfx/components/altk/__init__.py +34 -0
  123. lfx/components/altk/altk_agent.py +193 -0
  124. lfx/components/amazon/__init__.py +36 -0
  125. lfx/components/amazon/amazon_bedrock_converse.py +195 -0
  126. lfx/components/amazon/amazon_bedrock_embedding.py +109 -0
  127. lfx/components/amazon/amazon_bedrock_model.py +130 -0
  128. lfx/components/amazon/s3_bucket_uploader.py +211 -0
  129. lfx/components/anthropic/__init__.py +34 -0
  130. lfx/components/anthropic/anthropic.py +187 -0
  131. lfx/components/apify/__init__.py +5 -0
  132. lfx/components/apify/apify_actor.py +325 -0
  133. lfx/components/arxiv/__init__.py +3 -0
  134. lfx/components/arxiv/arxiv.py +169 -0
  135. lfx/components/assemblyai/__init__.py +46 -0
  136. lfx/components/assemblyai/assemblyai_get_subtitles.py +83 -0
  137. lfx/components/assemblyai/assemblyai_lemur.py +183 -0
  138. lfx/components/assemblyai/assemblyai_list_transcripts.py +95 -0
  139. lfx/components/assemblyai/assemblyai_poll_transcript.py +72 -0
  140. lfx/components/assemblyai/assemblyai_start_transcript.py +188 -0
  141. lfx/components/azure/__init__.py +37 -0
  142. lfx/components/azure/azure_openai.py +95 -0
  143. lfx/components/azure/azure_openai_embeddings.py +83 -0
  144. lfx/components/baidu/__init__.py +32 -0
  145. lfx/components/baidu/baidu_qianfan_chat.py +113 -0
  146. lfx/components/bing/__init__.py +3 -0
  147. lfx/components/bing/bing_search_api.py +61 -0
  148. lfx/components/cassandra/__init__.py +40 -0
  149. lfx/components/cassandra/cassandra.py +264 -0
  150. lfx/components/cassandra/cassandra_chat.py +92 -0
  151. lfx/components/cassandra/cassandra_graph.py +238 -0
  152. lfx/components/chains/__init__.py +3 -0
  153. lfx/components/chroma/__init__.py +34 -0
  154. lfx/components/chroma/chroma.py +169 -0
  155. lfx/components/cleanlab/__init__.py +40 -0
  156. lfx/components/cleanlab/cleanlab_evaluator.py +155 -0
  157. lfx/components/cleanlab/cleanlab_rag_evaluator.py +254 -0
  158. lfx/components/cleanlab/cleanlab_remediator.py +131 -0
  159. lfx/components/clickhouse/__init__.py +34 -0
  160. lfx/components/clickhouse/clickhouse.py +135 -0
  161. lfx/components/cloudflare/__init__.py +32 -0
  162. lfx/components/cloudflare/cloudflare.py +81 -0
  163. lfx/components/cohere/__init__.py +40 -0
  164. lfx/components/cohere/cohere_embeddings.py +81 -0
  165. lfx/components/cohere/cohere_models.py +46 -0
  166. lfx/components/cohere/cohere_rerank.py +51 -0
  167. lfx/components/cometapi/__init__.py +32 -0
  168. lfx/components/cometapi/cometapi.py +166 -0
  169. lfx/components/composio/__init__.py +222 -0
  170. lfx/components/composio/agentql_composio.py +11 -0
  171. lfx/components/composio/agiled_composio.py +11 -0
  172. lfx/components/composio/airtable_composio.py +11 -0
  173. lfx/components/composio/apollo_composio.py +11 -0
  174. lfx/components/composio/asana_composio.py +11 -0
  175. lfx/components/composio/attio_composio.py +11 -0
  176. lfx/components/composio/bitbucket_composio.py +11 -0
  177. lfx/components/composio/bolna_composio.py +11 -0
  178. lfx/components/composio/brightdata_composio.py +11 -0
  179. lfx/components/composio/calendly_composio.py +11 -0
  180. lfx/components/composio/canva_composio.py +11 -0
  181. lfx/components/composio/canvas_composio.py +11 -0
  182. lfx/components/composio/coda_composio.py +11 -0
  183. lfx/components/composio/composio_api.py +278 -0
  184. lfx/components/composio/contentful_composio.py +11 -0
  185. lfx/components/composio/digicert_composio.py +11 -0
  186. lfx/components/composio/discord_composio.py +11 -0
  187. lfx/components/composio/dropbox_compnent.py +11 -0
  188. lfx/components/composio/elevenlabs_composio.py +11 -0
  189. lfx/components/composio/exa_composio.py +11 -0
  190. lfx/components/composio/figma_composio.py +11 -0
  191. lfx/components/composio/finage_composio.py +11 -0
  192. lfx/components/composio/firecrawl_composio.py +11 -0
  193. lfx/components/composio/fireflies_composio.py +11 -0
  194. lfx/components/composio/fixer_composio.py +11 -0
  195. lfx/components/composio/flexisign_composio.py +11 -0
  196. lfx/components/composio/freshdesk_composio.py +11 -0
  197. lfx/components/composio/github_composio.py +11 -0
  198. lfx/components/composio/gmail_composio.py +38 -0
  199. lfx/components/composio/googlebigquery_composio.py +11 -0
  200. lfx/components/composio/googlecalendar_composio.py +11 -0
  201. lfx/components/composio/googleclassroom_composio.py +11 -0
  202. lfx/components/composio/googledocs_composio.py +11 -0
  203. lfx/components/composio/googlemeet_composio.py +11 -0
  204. lfx/components/composio/googlesheets_composio.py +11 -0
  205. lfx/components/composio/googletasks_composio.py +8 -0
  206. lfx/components/composio/heygen_composio.py +11 -0
  207. lfx/components/composio/instagram_composio.py +11 -0
  208. lfx/components/composio/jira_composio.py +11 -0
  209. lfx/components/composio/jotform_composio.py +11 -0
  210. lfx/components/composio/klaviyo_composio.py +11 -0
  211. lfx/components/composio/linear_composio.py +11 -0
  212. lfx/components/composio/listennotes_composio.py +11 -0
  213. lfx/components/composio/mem0_composio.py +11 -0
  214. lfx/components/composio/miro_composio.py +11 -0
  215. lfx/components/composio/missive_composio.py +11 -0
  216. lfx/components/composio/notion_composio.py +11 -0
  217. lfx/components/composio/onedrive_composio.py +11 -0
  218. lfx/components/composio/outlook_composio.py +11 -0
  219. lfx/components/composio/pandadoc_composio.py +11 -0
  220. lfx/components/composio/peopledatalabs_composio.py +11 -0
  221. lfx/components/composio/perplexityai_composio.py +11 -0
  222. lfx/components/composio/reddit_composio.py +11 -0
  223. lfx/components/composio/serpapi_composio.py +11 -0
  224. lfx/components/composio/slack_composio.py +11 -0
  225. lfx/components/composio/slackbot_composio.py +11 -0
  226. lfx/components/composio/snowflake_composio.py +11 -0
  227. lfx/components/composio/supabase_composio.py +11 -0
  228. lfx/components/composio/tavily_composio.py +11 -0
  229. lfx/components/composio/timelinesai_composio.py +11 -0
  230. lfx/components/composio/todoist_composio.py +11 -0
  231. lfx/components/composio/wrike_composio.py +11 -0
  232. lfx/components/composio/youtube_composio.py +11 -0
  233. lfx/components/confluence/__init__.py +3 -0
  234. lfx/components/confluence/confluence.py +84 -0
  235. lfx/components/couchbase/__init__.py +34 -0
  236. lfx/components/couchbase/couchbase.py +102 -0
  237. lfx/components/crewai/__init__.py +49 -0
  238. lfx/components/crewai/crewai.py +108 -0
  239. lfx/components/crewai/hierarchical_crew.py +47 -0
  240. lfx/components/crewai/hierarchical_task.py +45 -0
  241. lfx/components/crewai/sequential_crew.py +53 -0
  242. lfx/components/crewai/sequential_task.py +74 -0
  243. lfx/components/crewai/sequential_task_agent.py +144 -0
  244. lfx/components/cuga/__init__.py +34 -0
  245. lfx/components/cuga/cuga_agent.py +730 -0
  246. lfx/components/custom_component/__init__.py +34 -0
  247. lfx/components/custom_component/custom_component.py +31 -0
  248. lfx/components/data/__init__.py +114 -0
  249. lfx/components/data_source/__init__.py +58 -0
  250. lfx/components/data_source/api_request.py +577 -0
  251. lfx/components/data_source/csv_to_data.py +101 -0
  252. lfx/components/data_source/json_to_data.py +106 -0
  253. lfx/components/data_source/mock_data.py +398 -0
  254. lfx/components/data_source/news_search.py +166 -0
  255. lfx/components/data_source/rss.py +71 -0
  256. lfx/components/data_source/sql_executor.py +101 -0
  257. lfx/components/data_source/url.py +311 -0
  258. lfx/components/data_source/web_search.py +326 -0
  259. lfx/components/datastax/__init__.py +76 -0
  260. lfx/components/datastax/astradb_assistant_manager.py +307 -0
  261. lfx/components/datastax/astradb_chatmemory.py +40 -0
  262. lfx/components/datastax/astradb_cql.py +288 -0
  263. lfx/components/datastax/astradb_graph.py +217 -0
  264. lfx/components/datastax/astradb_tool.py +378 -0
  265. lfx/components/datastax/astradb_vectorize.py +122 -0
  266. lfx/components/datastax/astradb_vectorstore.py +449 -0
  267. lfx/components/datastax/create_assistant.py +59 -0
  268. lfx/components/datastax/create_thread.py +33 -0
  269. lfx/components/datastax/dotenv.py +36 -0
  270. lfx/components/datastax/get_assistant.py +38 -0
  271. lfx/components/datastax/getenvvar.py +31 -0
  272. lfx/components/datastax/graph_rag.py +141 -0
  273. lfx/components/datastax/hcd.py +315 -0
  274. lfx/components/datastax/list_assistants.py +26 -0
  275. lfx/components/datastax/run.py +90 -0
  276. lfx/components/deactivated/__init__.py +15 -0
  277. lfx/components/deactivated/amazon_kendra.py +66 -0
  278. lfx/components/deactivated/chat_litellm_model.py +158 -0
  279. lfx/components/deactivated/code_block_extractor.py +26 -0
  280. lfx/components/deactivated/documents_to_data.py +22 -0
  281. lfx/components/deactivated/embed.py +16 -0
  282. lfx/components/deactivated/extract_key_from_data.py +46 -0
  283. lfx/components/deactivated/json_document_builder.py +57 -0
  284. lfx/components/deactivated/list_flows.py +20 -0
  285. lfx/components/deactivated/mcp_sse.py +61 -0
  286. lfx/components/deactivated/mcp_stdio.py +62 -0
  287. lfx/components/deactivated/merge_data.py +93 -0
  288. lfx/components/deactivated/message.py +37 -0
  289. lfx/components/deactivated/metal.py +54 -0
  290. lfx/components/deactivated/multi_query.py +59 -0
  291. lfx/components/deactivated/retriever.py +43 -0
  292. lfx/components/deactivated/selective_passthrough.py +77 -0
  293. lfx/components/deactivated/should_run_next.py +40 -0
  294. lfx/components/deactivated/split_text.py +63 -0
  295. lfx/components/deactivated/store_message.py +24 -0
  296. lfx/components/deactivated/sub_flow.py +124 -0
  297. lfx/components/deactivated/vectara_self_query.py +76 -0
  298. lfx/components/deactivated/vector_store.py +24 -0
  299. lfx/components/deepseek/__init__.py +34 -0
  300. lfx/components/deepseek/deepseek.py +136 -0
  301. lfx/components/docling/__init__.py +43 -0
  302. lfx/components/docling/chunk_docling_document.py +186 -0
  303. lfx/components/docling/docling_inline.py +238 -0
  304. lfx/components/docling/docling_remote.py +195 -0
  305. lfx/components/docling/export_docling_document.py +117 -0
  306. lfx/components/documentloaders/__init__.py +3 -0
  307. lfx/components/duckduckgo/__init__.py +3 -0
  308. lfx/components/duckduckgo/duck_duck_go_search_run.py +92 -0
  309. lfx/components/elastic/__init__.py +37 -0
  310. lfx/components/elastic/elasticsearch.py +267 -0
  311. lfx/components/elastic/opensearch.py +789 -0
  312. lfx/components/elastic/opensearch_multimodal.py +1575 -0
  313. lfx/components/embeddings/__init__.py +37 -0
  314. lfx/components/embeddings/similarity.py +77 -0
  315. lfx/components/embeddings/text_embedder.py +65 -0
  316. lfx/components/exa/__init__.py +3 -0
  317. lfx/components/exa/exa_search.py +68 -0
  318. lfx/components/files_and_knowledge/__init__.py +47 -0
  319. lfx/components/files_and_knowledge/directory.py +113 -0
  320. lfx/components/files_and_knowledge/file.py +841 -0
  321. lfx/components/files_and_knowledge/ingestion.py +694 -0
  322. lfx/components/files_and_knowledge/retrieval.py +264 -0
  323. lfx/components/files_and_knowledge/save_file.py +746 -0
  324. lfx/components/firecrawl/__init__.py +43 -0
  325. lfx/components/firecrawl/firecrawl_crawl_api.py +88 -0
  326. lfx/components/firecrawl/firecrawl_extract_api.py +136 -0
  327. lfx/components/firecrawl/firecrawl_map_api.py +89 -0
  328. lfx/components/firecrawl/firecrawl_scrape_api.py +73 -0
  329. lfx/components/flow_controls/__init__.py +58 -0
  330. lfx/components/flow_controls/conditional_router.py +208 -0
  331. lfx/components/flow_controls/data_conditional_router.py +126 -0
  332. lfx/components/flow_controls/flow_tool.py +111 -0
  333. lfx/components/flow_controls/listen.py +29 -0
  334. lfx/components/flow_controls/loop.py +163 -0
  335. lfx/components/flow_controls/notify.py +88 -0
  336. lfx/components/flow_controls/pass_message.py +36 -0
  337. lfx/components/flow_controls/run_flow.py +108 -0
  338. lfx/components/flow_controls/sub_flow.py +115 -0
  339. lfx/components/git/__init__.py +4 -0
  340. lfx/components/git/git.py +262 -0
  341. lfx/components/git/gitextractor.py +196 -0
  342. lfx/components/glean/__init__.py +3 -0
  343. lfx/components/glean/glean_search_api.py +173 -0
  344. lfx/components/google/__init__.py +17 -0
  345. lfx/components/google/gmail.py +193 -0
  346. lfx/components/google/google_bq_sql_executor.py +157 -0
  347. lfx/components/google/google_drive.py +92 -0
  348. lfx/components/google/google_drive_search.py +152 -0
  349. lfx/components/google/google_generative_ai.py +144 -0
  350. lfx/components/google/google_generative_ai_embeddings.py +141 -0
  351. lfx/components/google/google_oauth_token.py +89 -0
  352. lfx/components/google/google_search_api_core.py +68 -0
  353. lfx/components/google/google_serper_api_core.py +74 -0
  354. lfx/components/groq/__init__.py +34 -0
  355. lfx/components/groq/groq.py +143 -0
  356. lfx/components/helpers/__init__.py +154 -0
  357. lfx/components/homeassistant/__init__.py +7 -0
  358. lfx/components/homeassistant/home_assistant_control.py +152 -0
  359. lfx/components/homeassistant/list_home_assistant_states.py +137 -0
  360. lfx/components/huggingface/__init__.py +37 -0
  361. lfx/components/huggingface/huggingface.py +199 -0
  362. lfx/components/huggingface/huggingface_inference_api.py +106 -0
  363. lfx/components/ibm/__init__.py +34 -0
  364. lfx/components/ibm/watsonx.py +207 -0
  365. lfx/components/ibm/watsonx_embeddings.py +135 -0
  366. lfx/components/icosacomputing/__init__.py +5 -0
  367. lfx/components/icosacomputing/combinatorial_reasoner.py +84 -0
  368. lfx/components/input_output/__init__.py +40 -0
  369. lfx/components/input_output/chat.py +109 -0
  370. lfx/components/input_output/chat_output.py +184 -0
  371. lfx/components/input_output/text.py +27 -0
  372. lfx/components/input_output/text_output.py +29 -0
  373. lfx/components/input_output/webhook.py +56 -0
  374. lfx/components/jigsawstack/__init__.py +23 -0
  375. lfx/components/jigsawstack/ai_scrape.py +126 -0
  376. lfx/components/jigsawstack/ai_web_search.py +136 -0
  377. lfx/components/jigsawstack/file_read.py +115 -0
  378. lfx/components/jigsawstack/file_upload.py +94 -0
  379. lfx/components/jigsawstack/image_generation.py +205 -0
  380. lfx/components/jigsawstack/nsfw.py +60 -0
  381. lfx/components/jigsawstack/object_detection.py +124 -0
  382. lfx/components/jigsawstack/sentiment.py +112 -0
  383. lfx/components/jigsawstack/text_to_sql.py +90 -0
  384. lfx/components/jigsawstack/text_translate.py +77 -0
  385. lfx/components/jigsawstack/vocr.py +107 -0
  386. lfx/components/knowledge_bases/__init__.py +89 -0
  387. lfx/components/langchain_utilities/__init__.py +109 -0
  388. lfx/components/langchain_utilities/character.py +53 -0
  389. lfx/components/langchain_utilities/conversation.py +59 -0
  390. lfx/components/langchain_utilities/csv_agent.py +175 -0
  391. lfx/components/langchain_utilities/fake_embeddings.py +26 -0
  392. lfx/components/langchain_utilities/html_link_extractor.py +35 -0
  393. lfx/components/langchain_utilities/json_agent.py +100 -0
  394. lfx/components/langchain_utilities/langchain_hub.py +126 -0
  395. lfx/components/langchain_utilities/language_recursive.py +49 -0
  396. lfx/components/langchain_utilities/language_semantic.py +138 -0
  397. lfx/components/langchain_utilities/llm_checker.py +39 -0
  398. lfx/components/langchain_utilities/llm_math.py +42 -0
  399. lfx/components/langchain_utilities/natural_language.py +61 -0
  400. lfx/components/langchain_utilities/openai_tools.py +53 -0
  401. lfx/components/langchain_utilities/openapi.py +48 -0
  402. lfx/components/langchain_utilities/recursive_character.py +60 -0
  403. lfx/components/langchain_utilities/retrieval_qa.py +83 -0
  404. lfx/components/langchain_utilities/runnable_executor.py +137 -0
  405. lfx/components/langchain_utilities/self_query.py +80 -0
  406. lfx/components/langchain_utilities/spider.py +142 -0
  407. lfx/components/langchain_utilities/sql.py +40 -0
  408. lfx/components/langchain_utilities/sql_database.py +35 -0
  409. lfx/components/langchain_utilities/sql_generator.py +78 -0
  410. lfx/components/langchain_utilities/tool_calling.py +59 -0
  411. lfx/components/langchain_utilities/vector_store_info.py +49 -0
  412. lfx/components/langchain_utilities/vector_store_router.py +33 -0
  413. lfx/components/langchain_utilities/xml_agent.py +71 -0
  414. lfx/components/langwatch/__init__.py +3 -0
  415. lfx/components/langwatch/langwatch.py +278 -0
  416. lfx/components/link_extractors/__init__.py +3 -0
  417. lfx/components/llm_operations/__init__.py +46 -0
  418. lfx/components/llm_operations/batch_run.py +205 -0
  419. lfx/components/llm_operations/lambda_filter.py +218 -0
  420. lfx/components/llm_operations/llm_conditional_router.py +421 -0
  421. lfx/components/llm_operations/llm_selector.py +499 -0
  422. lfx/components/llm_operations/structured_output.py +244 -0
  423. lfx/components/lmstudio/__init__.py +34 -0
  424. lfx/components/lmstudio/lmstudioembeddings.py +89 -0
  425. lfx/components/lmstudio/lmstudiomodel.py +133 -0
  426. lfx/components/logic/__init__.py +181 -0
  427. lfx/components/maritalk/__init__.py +32 -0
  428. lfx/components/maritalk/maritalk.py +52 -0
  429. lfx/components/mem0/__init__.py +3 -0
  430. lfx/components/mem0/mem0_chat_memory.py +147 -0
  431. lfx/components/milvus/__init__.py +34 -0
  432. lfx/components/milvus/milvus.py +115 -0
  433. lfx/components/mistral/__init__.py +37 -0
  434. lfx/components/mistral/mistral.py +114 -0
  435. lfx/components/mistral/mistral_embeddings.py +58 -0
  436. lfx/components/models/__init__.py +89 -0
  437. lfx/components/models_and_agents/__init__.py +49 -0
  438. lfx/components/models_and_agents/agent.py +644 -0
  439. lfx/components/models_and_agents/embedding_model.py +423 -0
  440. lfx/components/models_and_agents/language_model.py +398 -0
  441. lfx/components/models_and_agents/mcp_component.py +594 -0
  442. lfx/components/models_and_agents/memory.py +268 -0
  443. lfx/components/models_and_agents/prompt.py +67 -0
  444. lfx/components/mongodb/__init__.py +34 -0
  445. lfx/components/mongodb/mongodb_atlas.py +213 -0
  446. lfx/components/needle/__init__.py +3 -0
  447. lfx/components/needle/needle.py +104 -0
  448. lfx/components/notdiamond/__init__.py +34 -0
  449. lfx/components/notdiamond/notdiamond.py +228 -0
  450. lfx/components/novita/__init__.py +32 -0
  451. lfx/components/novita/novita.py +130 -0
  452. lfx/components/nvidia/__init__.py +57 -0
  453. lfx/components/nvidia/nvidia.py +151 -0
  454. lfx/components/nvidia/nvidia_embedding.py +77 -0
  455. lfx/components/nvidia/nvidia_ingest.py +317 -0
  456. lfx/components/nvidia/nvidia_rerank.py +63 -0
  457. lfx/components/nvidia/system_assist.py +65 -0
  458. lfx/components/olivya/__init__.py +3 -0
  459. lfx/components/olivya/olivya.py +116 -0
  460. lfx/components/ollama/__init__.py +37 -0
  461. lfx/components/ollama/ollama.py +548 -0
  462. lfx/components/ollama/ollama_embeddings.py +103 -0
  463. lfx/components/openai/__init__.py +37 -0
  464. lfx/components/openai/openai.py +100 -0
  465. lfx/components/openai/openai_chat_model.py +176 -0
  466. lfx/components/openrouter/__init__.py +32 -0
  467. lfx/components/openrouter/openrouter.py +104 -0
  468. lfx/components/output_parsers/__init__.py +3 -0
  469. lfx/components/perplexity/__init__.py +34 -0
  470. lfx/components/perplexity/perplexity.py +75 -0
  471. lfx/components/pgvector/__init__.py +34 -0
  472. lfx/components/pgvector/pgvector.py +72 -0
  473. lfx/components/pinecone/__init__.py +34 -0
  474. lfx/components/pinecone/pinecone.py +134 -0
  475. lfx/components/processing/__init__.py +72 -0
  476. lfx/components/processing/alter_metadata.py +109 -0
  477. lfx/components/processing/combine_text.py +40 -0
  478. lfx/components/processing/converter.py +248 -0
  479. lfx/components/processing/create_data.py +111 -0
  480. lfx/components/processing/create_list.py +40 -0
  481. lfx/components/processing/data_operations.py +528 -0
  482. lfx/components/processing/data_to_dataframe.py +71 -0
  483. lfx/components/processing/dataframe_operations.py +313 -0
  484. lfx/components/processing/dataframe_to_toolset.py +259 -0
  485. lfx/components/processing/dynamic_create_data.py +357 -0
  486. lfx/components/processing/extract_key.py +54 -0
  487. lfx/components/processing/filter_data.py +43 -0
  488. lfx/components/processing/filter_data_values.py +89 -0
  489. lfx/components/processing/json_cleaner.py +104 -0
  490. lfx/components/processing/merge_data.py +91 -0
  491. lfx/components/processing/message_to_data.py +37 -0
  492. lfx/components/processing/output_parser.py +46 -0
  493. lfx/components/processing/parse_data.py +71 -0
  494. lfx/components/processing/parse_dataframe.py +69 -0
  495. lfx/components/processing/parse_json_data.py +91 -0
  496. lfx/components/processing/parser.py +148 -0
  497. lfx/components/processing/regex.py +83 -0
  498. lfx/components/processing/select_data.py +49 -0
  499. lfx/components/processing/split_text.py +141 -0
  500. lfx/components/processing/store_message.py +91 -0
  501. lfx/components/processing/update_data.py +161 -0
  502. lfx/components/prototypes/__init__.py +35 -0
  503. lfx/components/prototypes/python_function.py +73 -0
  504. lfx/components/qdrant/__init__.py +34 -0
  505. lfx/components/qdrant/qdrant.py +109 -0
  506. lfx/components/redis/__init__.py +37 -0
  507. lfx/components/redis/redis.py +89 -0
  508. lfx/components/redis/redis_chat.py +43 -0
  509. lfx/components/sambanova/__init__.py +32 -0
  510. lfx/components/sambanova/sambanova.py +84 -0
  511. lfx/components/scrapegraph/__init__.py +40 -0
  512. lfx/components/scrapegraph/scrapegraph_markdownify_api.py +64 -0
  513. lfx/components/scrapegraph/scrapegraph_search_api.py +64 -0
  514. lfx/components/scrapegraph/scrapegraph_smart_scraper_api.py +71 -0
  515. lfx/components/searchapi/__init__.py +34 -0
  516. lfx/components/searchapi/search.py +79 -0
  517. lfx/components/serpapi/__init__.py +3 -0
  518. lfx/components/serpapi/serp.py +115 -0
  519. lfx/components/supabase/__init__.py +34 -0
  520. lfx/components/supabase/supabase.py +76 -0
  521. lfx/components/tavily/__init__.py +4 -0
  522. lfx/components/tavily/tavily_extract.py +117 -0
  523. lfx/components/tavily/tavily_search.py +212 -0
  524. lfx/components/textsplitters/__init__.py +3 -0
  525. lfx/components/toolkits/__init__.py +3 -0
  526. lfx/components/tools/__init__.py +66 -0
  527. lfx/components/tools/calculator.py +109 -0
  528. lfx/components/tools/google_search_api.py +45 -0
  529. lfx/components/tools/google_serper_api.py +115 -0
  530. lfx/components/tools/python_code_structured_tool.py +328 -0
  531. lfx/components/tools/python_repl.py +98 -0
  532. lfx/components/tools/search_api.py +88 -0
  533. lfx/components/tools/searxng.py +145 -0
  534. lfx/components/tools/serp_api.py +120 -0
  535. lfx/components/tools/tavily_search_tool.py +345 -0
  536. lfx/components/tools/wikidata_api.py +103 -0
  537. lfx/components/tools/wikipedia_api.py +50 -0
  538. lfx/components/tools/yahoo_finance.py +130 -0
  539. lfx/components/twelvelabs/__init__.py +52 -0
  540. lfx/components/twelvelabs/convert_astra_results.py +84 -0
  541. lfx/components/twelvelabs/pegasus_index.py +311 -0
  542. lfx/components/twelvelabs/split_video.py +301 -0
  543. lfx/components/twelvelabs/text_embeddings.py +57 -0
  544. lfx/components/twelvelabs/twelvelabs_pegasus.py +408 -0
  545. lfx/components/twelvelabs/video_embeddings.py +100 -0
  546. lfx/components/twelvelabs/video_file.py +191 -0
  547. lfx/components/unstructured/__init__.py +3 -0
  548. lfx/components/unstructured/unstructured.py +121 -0
  549. lfx/components/upstash/__init__.py +34 -0
  550. lfx/components/upstash/upstash.py +124 -0
  551. lfx/components/utilities/__init__.py +43 -0
  552. lfx/components/utilities/calculator_core.py +89 -0
  553. lfx/components/utilities/current_date.py +42 -0
  554. lfx/components/utilities/id_generator.py +42 -0
  555. lfx/components/utilities/python_repl_core.py +98 -0
  556. lfx/components/vectara/__init__.py +37 -0
  557. lfx/components/vectara/vectara.py +97 -0
  558. lfx/components/vectara/vectara_rag.py +164 -0
  559. lfx/components/vectorstores/__init__.py +34 -0
  560. lfx/components/vectorstores/local_db.py +270 -0
  561. lfx/components/vertexai/__init__.py +37 -0
  562. lfx/components/vertexai/vertexai.py +71 -0
  563. lfx/components/vertexai/vertexai_embeddings.py +67 -0
  564. lfx/components/vlmrun/__init__.py +34 -0
  565. lfx/components/vlmrun/vlmrun_transcription.py +224 -0
  566. lfx/components/weaviate/__init__.py +34 -0
  567. lfx/components/weaviate/weaviate.py +89 -0
  568. lfx/components/wikipedia/__init__.py +4 -0
  569. lfx/components/wikipedia/wikidata.py +86 -0
  570. lfx/components/wikipedia/wikipedia.py +53 -0
  571. lfx/components/wolframalpha/__init__.py +3 -0
  572. lfx/components/wolframalpha/wolfram_alpha_api.py +54 -0
  573. lfx/components/xai/__init__.py +32 -0
  574. lfx/components/xai/xai.py +167 -0
  575. lfx/components/yahoosearch/__init__.py +3 -0
  576. lfx/components/yahoosearch/yahoo.py +137 -0
  577. lfx/components/youtube/__init__.py +52 -0
  578. lfx/components/youtube/channel.py +227 -0
  579. lfx/components/youtube/comments.py +231 -0
  580. lfx/components/youtube/playlist.py +33 -0
  581. lfx/components/youtube/search.py +120 -0
  582. lfx/components/youtube/trending.py +285 -0
  583. lfx/components/youtube/video_details.py +263 -0
  584. lfx/components/youtube/youtube_transcripts.py +206 -0
  585. lfx/components/zep/__init__.py +3 -0
  586. lfx/components/zep/zep.py +45 -0
  587. lfx/constants.py +6 -0
  588. lfx/custom/__init__.py +7 -0
  589. lfx/custom/attributes.py +87 -0
  590. lfx/custom/code_parser/__init__.py +3 -0
  591. lfx/custom/code_parser/code_parser.py +361 -0
  592. lfx/custom/custom_component/__init__.py +0 -0
  593. lfx/custom/custom_component/base_component.py +128 -0
  594. lfx/custom/custom_component/component.py +1890 -0
  595. lfx/custom/custom_component/component_with_cache.py +8 -0
  596. lfx/custom/custom_component/custom_component.py +650 -0
  597. lfx/custom/dependency_analyzer.py +165 -0
  598. lfx/custom/directory_reader/__init__.py +3 -0
  599. lfx/custom/directory_reader/directory_reader.py +359 -0
  600. lfx/custom/directory_reader/utils.py +171 -0
  601. lfx/custom/eval.py +12 -0
  602. lfx/custom/schema.py +32 -0
  603. lfx/custom/tree_visitor.py +21 -0
  604. lfx/custom/utils.py +877 -0
  605. lfx/custom/validate.py +523 -0
  606. lfx/events/__init__.py +1 -0
  607. lfx/events/event_manager.py +110 -0
  608. lfx/exceptions/__init__.py +0 -0
  609. lfx/exceptions/component.py +15 -0
  610. lfx/field_typing/__init__.py +91 -0
  611. lfx/field_typing/constants.py +216 -0
  612. lfx/field_typing/range_spec.py +35 -0
  613. lfx/graph/__init__.py +6 -0
  614. lfx/graph/edge/__init__.py +0 -0
  615. lfx/graph/edge/base.py +300 -0
  616. lfx/graph/edge/schema.py +119 -0
  617. lfx/graph/edge/utils.py +0 -0
  618. lfx/graph/graph/__init__.py +0 -0
  619. lfx/graph/graph/ascii.py +202 -0
  620. lfx/graph/graph/base.py +2298 -0
  621. lfx/graph/graph/constants.py +63 -0
  622. lfx/graph/graph/runnable_vertices_manager.py +133 -0
  623. lfx/graph/graph/schema.py +53 -0
  624. lfx/graph/graph/state_model.py +66 -0
  625. lfx/graph/graph/utils.py +1024 -0
  626. lfx/graph/schema.py +75 -0
  627. lfx/graph/state/__init__.py +0 -0
  628. lfx/graph/state/model.py +250 -0
  629. lfx/graph/utils.py +206 -0
  630. lfx/graph/vertex/__init__.py +0 -0
  631. lfx/graph/vertex/base.py +826 -0
  632. lfx/graph/vertex/constants.py +0 -0
  633. lfx/graph/vertex/exceptions.py +4 -0
  634. lfx/graph/vertex/param_handler.py +316 -0
  635. lfx/graph/vertex/schema.py +26 -0
  636. lfx/graph/vertex/utils.py +19 -0
  637. lfx/graph/vertex/vertex_types.py +489 -0
  638. lfx/helpers/__init__.py +141 -0
  639. lfx/helpers/base_model.py +71 -0
  640. lfx/helpers/custom.py +13 -0
  641. lfx/helpers/data.py +167 -0
  642. lfx/helpers/flow.py +308 -0
  643. lfx/inputs/__init__.py +68 -0
  644. lfx/inputs/constants.py +2 -0
  645. lfx/inputs/input_mixin.py +352 -0
  646. lfx/inputs/inputs.py +718 -0
  647. lfx/inputs/validators.py +19 -0
  648. lfx/interface/__init__.py +6 -0
  649. lfx/interface/components.py +897 -0
  650. lfx/interface/importing/__init__.py +5 -0
  651. lfx/interface/importing/utils.py +39 -0
  652. lfx/interface/initialize/__init__.py +3 -0
  653. lfx/interface/initialize/loading.py +317 -0
  654. lfx/interface/listing.py +26 -0
  655. lfx/interface/run.py +16 -0
  656. lfx/interface/utils.py +111 -0
  657. lfx/io/__init__.py +63 -0
  658. lfx/io/schema.py +295 -0
  659. lfx/load/__init__.py +8 -0
  660. lfx/load/load.py +256 -0
  661. lfx/load/utils.py +99 -0
  662. lfx/log/__init__.py +5 -0
  663. lfx/log/logger.py +411 -0
  664. lfx/logging/__init__.py +11 -0
  665. lfx/logging/logger.py +24 -0
  666. lfx/memory/__init__.py +70 -0
  667. lfx/memory/stubs.py +302 -0
  668. lfx/processing/__init__.py +1 -0
  669. lfx/processing/process.py +238 -0
  670. lfx/processing/utils.py +25 -0
  671. lfx/py.typed +0 -0
  672. lfx/schema/__init__.py +66 -0
  673. lfx/schema/artifact.py +83 -0
  674. lfx/schema/content_block.py +62 -0
  675. lfx/schema/content_types.py +91 -0
  676. lfx/schema/cross_module.py +80 -0
  677. lfx/schema/data.py +309 -0
  678. lfx/schema/dataframe.py +210 -0
  679. lfx/schema/dotdict.py +74 -0
  680. lfx/schema/encoders.py +13 -0
  681. lfx/schema/graph.py +47 -0
  682. lfx/schema/image.py +184 -0
  683. lfx/schema/json_schema.py +186 -0
  684. lfx/schema/log.py +62 -0
  685. lfx/schema/message.py +493 -0
  686. lfx/schema/openai_responses_schemas.py +74 -0
  687. lfx/schema/properties.py +41 -0
  688. lfx/schema/schema.py +180 -0
  689. lfx/schema/serialize.py +13 -0
  690. lfx/schema/table.py +142 -0
  691. lfx/schema/validators.py +114 -0
  692. lfx/serialization/__init__.py +5 -0
  693. lfx/serialization/constants.py +2 -0
  694. lfx/serialization/serialization.py +314 -0
  695. lfx/services/__init__.py +26 -0
  696. lfx/services/base.py +28 -0
  697. lfx/services/cache/__init__.py +6 -0
  698. lfx/services/cache/base.py +183 -0
  699. lfx/services/cache/service.py +166 -0
  700. lfx/services/cache/utils.py +169 -0
  701. lfx/services/chat/__init__.py +1 -0
  702. lfx/services/chat/config.py +2 -0
  703. lfx/services/chat/schema.py +10 -0
  704. lfx/services/database/__init__.py +5 -0
  705. lfx/services/database/service.py +25 -0
  706. lfx/services/deps.py +194 -0
  707. lfx/services/factory.py +19 -0
  708. lfx/services/initialize.py +19 -0
  709. lfx/services/interfaces.py +103 -0
  710. lfx/services/manager.py +185 -0
  711. lfx/services/mcp_composer/__init__.py +6 -0
  712. lfx/services/mcp_composer/factory.py +16 -0
  713. lfx/services/mcp_composer/service.py +1441 -0
  714. lfx/services/schema.py +21 -0
  715. lfx/services/session.py +87 -0
  716. lfx/services/settings/__init__.py +3 -0
  717. lfx/services/settings/auth.py +133 -0
  718. lfx/services/settings/base.py +668 -0
  719. lfx/services/settings/constants.py +43 -0
  720. lfx/services/settings/factory.py +23 -0
  721. lfx/services/settings/feature_flags.py +11 -0
  722. lfx/services/settings/service.py +35 -0
  723. lfx/services/settings/utils.py +40 -0
  724. lfx/services/shared_component_cache/__init__.py +1 -0
  725. lfx/services/shared_component_cache/factory.py +30 -0
  726. lfx/services/shared_component_cache/service.py +9 -0
  727. lfx/services/storage/__init__.py +5 -0
  728. lfx/services/storage/local.py +185 -0
  729. lfx/services/storage/service.py +177 -0
  730. lfx/services/tracing/__init__.py +1 -0
  731. lfx/services/tracing/service.py +21 -0
  732. lfx/settings.py +6 -0
  733. lfx/template/__init__.py +6 -0
  734. lfx/template/field/__init__.py +0 -0
  735. lfx/template/field/base.py +260 -0
  736. lfx/template/field/prompt.py +15 -0
  737. lfx/template/frontend_node/__init__.py +6 -0
  738. lfx/template/frontend_node/base.py +214 -0
  739. lfx/template/frontend_node/constants.py +65 -0
  740. lfx/template/frontend_node/custom_components.py +79 -0
  741. lfx/template/template/__init__.py +0 -0
  742. lfx/template/template/base.py +100 -0
  743. lfx/template/utils.py +217 -0
  744. lfx/type_extraction/__init__.py +19 -0
  745. lfx/type_extraction/type_extraction.py +75 -0
  746. lfx/type_extraction.py +80 -0
  747. lfx/utils/__init__.py +1 -0
  748. lfx/utils/async_helpers.py +42 -0
  749. lfx/utils/component_utils.py +154 -0
  750. lfx/utils/concurrency.py +60 -0
  751. lfx/utils/connection_string_parser.py +11 -0
  752. lfx/utils/constants.py +233 -0
  753. lfx/utils/data_structure.py +212 -0
  754. lfx/utils/exceptions.py +22 -0
  755. lfx/utils/helpers.py +34 -0
  756. lfx/utils/image.py +79 -0
  757. lfx/utils/langflow_utils.py +52 -0
  758. lfx/utils/lazy_load.py +15 -0
  759. lfx/utils/request_utils.py +18 -0
  760. lfx/utils/schemas.py +139 -0
  761. lfx/utils/ssrf_protection.py +384 -0
  762. lfx/utils/util.py +626 -0
  763. lfx/utils/util_strings.py +56 -0
  764. lfx/utils/validate_cloud.py +26 -0
  765. lfx/utils/version.py +24 -0
  766. lfx_nightly-0.2.0.dev25.dist-info/METADATA +312 -0
  767. lfx_nightly-0.2.0.dev25.dist-info/RECORD +769 -0
  768. lfx_nightly-0.2.0.dev25.dist-info/WHEEL +4 -0
  769. lfx_nightly-0.2.0.dev25.dist-info/entry_points.txt +2 -0
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioApolloAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Apollo"
6
+ icon = "Apollo"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "apollo"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Apollo component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioAsanaAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Asana"
6
+ icon = "Asana"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "asana"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Asana component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioAttioAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Attio"
6
+ icon = "Attio"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "attio"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Attio component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioBitbucketAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Bitbucket"
6
+ icon = "Bitbucket"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "bitbucket"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Bitbucket 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 ComposioCalendlyAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Calendly"
6
+ icon = "Calendly"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "calendly"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Calendly component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioCanvaAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Canva"
6
+ icon = "Canva"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "canva"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Canva 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 ComposioCodaAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Coda"
6
+ icon = "Coda"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "coda"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Coda component."""
@@ -0,0 +1,278 @@
1
+ # Standard library imports
2
+ from collections.abc import Sequence
3
+ from typing import Any
4
+
5
+ from composio import Composio
6
+ from composio_langchain import LangchainProvider
7
+
8
+ # Third-party imports
9
+ from langchain_core.tools import Tool
10
+
11
+ # Local imports
12
+ from lfx.base.langchain_utilities.model import LCToolComponent
13
+ from lfx.inputs.inputs import (
14
+ ConnectionInput,
15
+ MessageTextInput,
16
+ SecretStrInput,
17
+ SortableListInput,
18
+ )
19
+ from lfx.io import Output
20
+ from lfx.utils.validate_cloud import raise_error_if_astra_cloud_disable_component
21
+
22
+ # TODO: We get the list from the API but we need to filter it
23
+ enabled_tools = ["confluence", "discord", "dropbox", "github", "gmail", "linkedin", "notion", "slack", "youtube"]
24
+
25
+ disable_component_in_astra_cloud_msg = (
26
+ "Composio tools are not supported in Astra cloud environment. "
27
+ "Please use local storage mode or cloud-based versions of the tools."
28
+ )
29
+
30
+
31
+ class ComposioAPIComponent(LCToolComponent):
32
+ display_name: str = "Composio Tools"
33
+ description: str = "Use Composio toolset to run actions with your agent"
34
+ name = "ComposioAPI"
35
+ icon = "Composio"
36
+ documentation: str = "https://docs.composio.dev"
37
+
38
+ inputs = [
39
+ # Basic configuration inputs
40
+ MessageTextInput(name="entity_id", display_name="Entity ID", value="default", advanced=True),
41
+ SecretStrInput(
42
+ name="api_key",
43
+ display_name="Composio API Key",
44
+ required=True,
45
+ info="Refer to https://docs.composio.dev/faq/api_key/api_key",
46
+ real_time_refresh=True,
47
+ ),
48
+ ConnectionInput(
49
+ name="tool_name",
50
+ display_name="Tool Name",
51
+ placeholder="Select a tool...",
52
+ button_metadata={"icon": "unplug", "variant": "destructive"},
53
+ options=[],
54
+ search_category=[],
55
+ value="",
56
+ connection_link="",
57
+ info="The name of the tool to use",
58
+ real_time_refresh=True,
59
+ ),
60
+ SortableListInput(
61
+ name="actions",
62
+ display_name="Actions",
63
+ placeholder="Select action",
64
+ helper_text="Please connect before selecting actions.",
65
+ helper_text_metadata={"icon": "OctagonAlert", "variant": "destructive"},
66
+ options=[],
67
+ value="",
68
+ info="The actions to use",
69
+ limit=1,
70
+ show=False,
71
+ ),
72
+ ]
73
+
74
+ outputs = [
75
+ Output(name="tools", display_name="Tools", method="build_tool"),
76
+ ]
77
+
78
+ def validate_tool(self, build_config: dict, field_value: Any, tool_name: str | None = None) -> dict:
79
+ # Get the index of the selected tool in the list of options
80
+ selected_tool_index = next(
81
+ (
82
+ ind
83
+ for ind, tool in enumerate(build_config["tool_name"]["options"])
84
+ if tool["name"] == field_value
85
+ or ("validate" in field_value and tool["name"] == field_value["validate"])
86
+ ),
87
+ None,
88
+ )
89
+
90
+ # Set the link to be the text 'validated'
91
+ build_config["tool_name"]["options"][selected_tool_index]["link"] = "validated"
92
+
93
+ # Set the helper text and helper text metadata field of the actions now
94
+ build_config["actions"]["helper_text"] = ""
95
+ build_config["actions"]["helper_text_metadata"] = {"icon": "Check", "variant": "success"}
96
+
97
+ try:
98
+ composio = self._build_wrapper()
99
+ current_tool = tool_name or getattr(self, "tool_name", None)
100
+ if not current_tool:
101
+ self.log("No tool name available for validate_tool")
102
+ return build_config
103
+
104
+ toolkit_slug = current_tool.lower()
105
+
106
+ tools = composio.tools.get(user_id=self.entity_id, toolkits=[toolkit_slug])
107
+
108
+ authenticated_actions = []
109
+ for tool in tools:
110
+ if hasattr(tool, "name"):
111
+ action_name = tool.name
112
+ display_name = action_name.replace("_", " ").title()
113
+ authenticated_actions.append({"name": action_name, "display_name": display_name})
114
+ except (ValueError, ConnectionError, AttributeError) as e:
115
+ self.log(f"Error getting actions for {current_tool or 'unknown tool'}: {e}")
116
+ authenticated_actions = []
117
+
118
+ build_config["actions"]["options"] = [
119
+ {
120
+ "name": action["name"],
121
+ }
122
+ for action in authenticated_actions
123
+ ]
124
+
125
+ build_config["actions"]["show"] = True
126
+ return build_config
127
+
128
+ def update_build_config(self, build_config: dict, field_value: Any, field_name: str | None = None) -> dict:
129
+ if field_name == "api_key" or (self.api_key and not build_config["tool_name"]["options"]):
130
+ if field_name == "api_key" and not field_value:
131
+ build_config["tool_name"]["options"] = []
132
+ build_config["tool_name"]["value"] = ""
133
+
134
+ # Reset the list of actions
135
+ build_config["actions"]["show"] = False
136
+ build_config["actions"]["options"] = []
137
+ build_config["actions"]["value"] = ""
138
+
139
+ return build_config
140
+
141
+ # Build the list of available tools
142
+ build_config["tool_name"]["options"] = [
143
+ {
144
+ "name": app.title(),
145
+ "icon": app,
146
+ "link": (
147
+ build_config["tool_name"]["options"][ind]["link"]
148
+ if build_config["tool_name"]["options"]
149
+ else ""
150
+ ),
151
+ }
152
+ for ind, app in enumerate(enabled_tools)
153
+ ]
154
+
155
+ return build_config
156
+
157
+ if field_name == "tool_name" and field_value:
158
+ composio = self._build_wrapper()
159
+
160
+ current_tool_name = (
161
+ field_value
162
+ if isinstance(field_value, str)
163
+ else field_value.get("validate")
164
+ if isinstance(field_value, dict) and "validate" in field_value
165
+ else getattr(self, "tool_name", None)
166
+ )
167
+
168
+ if not current_tool_name:
169
+ self.log("No tool name available for connection check")
170
+ return build_config
171
+
172
+ try:
173
+ toolkit_slug = current_tool_name.lower()
174
+
175
+ connection_list = composio.connected_accounts.list(
176
+ user_ids=[self.entity_id], toolkit_slugs=[toolkit_slug]
177
+ )
178
+
179
+ # Check for active connections
180
+ has_active_connections = False
181
+ if (
182
+ connection_list
183
+ and hasattr(connection_list, "items")
184
+ and connection_list.items
185
+ and isinstance(connection_list.items, list)
186
+ and len(connection_list.items) > 0
187
+ ):
188
+ for connection in connection_list.items:
189
+ if getattr(connection, "status", None) == "ACTIVE":
190
+ has_active_connections = True
191
+ break
192
+
193
+ # Get the index of the selected tool in the list of options
194
+ selected_tool_index = next(
195
+ (
196
+ ind
197
+ for ind, tool in enumerate(build_config["tool_name"]["options"])
198
+ if tool["name"] == current_tool_name.title()
199
+ ),
200
+ None,
201
+ )
202
+
203
+ if has_active_connections:
204
+ # User has active connection
205
+ if selected_tool_index is not None:
206
+ build_config["tool_name"]["options"][selected_tool_index]["link"] = "validated"
207
+
208
+ # If it's a validation request, validate the tool
209
+ if (isinstance(field_value, dict) and "validate" in field_value) or isinstance(field_value, str):
210
+ return self.validate_tool(build_config, field_value, current_tool_name)
211
+ else:
212
+ # No active connection - create OAuth connection
213
+ try:
214
+ connection = composio.toolkits.authorize(user_id=self.entity_id, toolkit=toolkit_slug)
215
+ redirect_url = getattr(connection, "redirect_url", None)
216
+
217
+ if redirect_url and redirect_url.startswith(("http://", "https://")):
218
+ if selected_tool_index is not None:
219
+ build_config["tool_name"]["options"][selected_tool_index]["link"] = redirect_url
220
+ elif selected_tool_index is not None:
221
+ build_config["tool_name"]["options"][selected_tool_index]["link"] = "error"
222
+ except (ValueError, ConnectionError, AttributeError) as e:
223
+ self.log(f"Error creating OAuth connection: {e}")
224
+ if selected_tool_index is not None:
225
+ build_config["tool_name"]["options"][selected_tool_index]["link"] = "error"
226
+
227
+ except (ValueError, ConnectionError, AttributeError) as e:
228
+ self.log(f"Error checking connection status: {e}")
229
+
230
+ return build_config
231
+
232
+ def build_tool(self) -> Sequence[Tool]:
233
+ """Build Composio tools based on selected actions.
234
+
235
+ Returns:
236
+ Sequence[Tool]: List of configured Composio tools.
237
+ """
238
+ # Check if we're in Astra cloud environment and raise an error if we are.
239
+ raise_error_if_astra_cloud_disable_component(disable_component_in_astra_cloud_msg)
240
+ composio = self._build_wrapper()
241
+ action_names = [action["name"] for action in self.actions]
242
+
243
+ # Get toolkits from action names
244
+ toolkits = set()
245
+ for action_name in action_names:
246
+ if "_" in action_name:
247
+ toolkit = action_name.split("_")[0].lower()
248
+ toolkits.add(toolkit)
249
+
250
+ if not toolkits:
251
+ return []
252
+
253
+ # Get all tools for the relevant toolkits
254
+ all_tools = composio.tools.get(user_id=self.entity_id, toolkits=list(toolkits))
255
+
256
+ # Filter to only the specific actions we want using list comprehension
257
+ return [tool for tool in all_tools if hasattr(tool, "name") and tool.name in action_names]
258
+
259
+ def _build_wrapper(self) -> Composio:
260
+ """Build the Composio wrapper using new SDK.
261
+
262
+ Returns:
263
+ Composio: The initialized Composio client.
264
+
265
+ Raises:
266
+ ValueError: If the API key is not found or invalid.
267
+ """
268
+ # Check if we're in Astra cloud environment and raise an error if we are.
269
+ raise_error_if_astra_cloud_disable_component(disable_component_in_astra_cloud_msg)
270
+ try:
271
+ if not self.api_key:
272
+ msg = "Composio API Key is required"
273
+ raise ValueError(msg)
274
+ return Composio(api_key=self.api_key, provider=LangchainProvider())
275
+ except ValueError as e:
276
+ self.log(f"Error building Composio wrapper: {e}")
277
+ msg = "Please provide a valid Composio API Key in the component settings"
278
+ raise ValueError(msg) from e
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioContentfulAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Contentful"
6
+ icon = "Contentful"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "contentful"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Contentful 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 ComposioDiscordAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Discord"
6
+ icon = "discord"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "discord"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Discord component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioDropboxAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Dropbox"
6
+ icon = "Dropbox"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "dropbox"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Dropbox component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioElevenLabsAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "ElevenLabs"
6
+ icon = "Elevenlabs"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "elevenlabs"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for ElevenLabs component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioExaAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Exa"
6
+ icon = "ExaComposio"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "exa"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Exa component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioFigmaAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Figma"
6
+ icon = "Figma"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "figma"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Figma 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 ComposioFirecrawlAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Firecrawl"
6
+ icon = "Firecrawl"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "firecrawl"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Firecrawl component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioFirefliesAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Fireflies"
6
+ icon = "Fireflies"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "fireflies"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Fireflies 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 ComposioGitHubAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "GitHub"
6
+ icon = "Github"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "github"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for GitHub component."""
@@ -0,0 +1,38 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioGmailAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "Gmail"
6
+ icon = "Gmail"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "gmail"
9
+
10
+ def __init__(self, **kwargs):
11
+ super().__init__(**kwargs)
12
+ self.post_processors = {
13
+ "GMAIL_SEND_EMAIL": self._process_send_email_response,
14
+ "GMAIL_FETCH_EMAILS": self._process_fetch_emails_response,
15
+ }
16
+
17
+ def _process_send_email_response(self, raw_data):
18
+ """Post-processor for GMAIL_SEND_EMAIL action."""
19
+ if isinstance(raw_data, dict):
20
+ response_data = raw_data.get("response_data", raw_data)
21
+
22
+ return {
23
+ "message_id": response_data.get("id"),
24
+ "thread_id": response_data.get("threadId"),
25
+ "label_ids": response_data.get("labelIds", []),
26
+ }
27
+ return raw_data
28
+
29
+ def _process_fetch_emails_response(self, raw_data):
30
+ """Post-processor for GMAIL_FETCH_EMAILS action."""
31
+ if isinstance(raw_data, dict):
32
+ messages = raw_data.get("messages", [])
33
+ if messages:
34
+ return messages
35
+ return raw_data
36
+
37
+ def set_default_tools(self):
38
+ """Set the default tools for Gmail component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioGoogleBigQueryAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "GoogleBigQuery"
6
+ icon = "Googlebigquery"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "googlebigquery"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Google BigQuery component."""
@@ -0,0 +1,11 @@
1
+ from lfx.base.composio.composio_base import ComposioBaseComponent
2
+
3
+
4
+ class ComposioGoogleCalendarAPIComponent(ComposioBaseComponent):
5
+ display_name: str = "GoogleCalendar"
6
+ icon = "Googlecalendar"
7
+ documentation: str = "https://docs.composio.dev"
8
+ app_name = "googlecalendar"
9
+
10
+ def set_default_tools(self):
11
+ """Set the default tools for Google Calendar 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."""