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.
- lfx/__init__.py +0 -0
- lfx/__main__.py +25 -0
- lfx/_assets/component_index.json +1 -0
- lfx/base/__init__.py +0 -0
- lfx/base/agents/__init__.py +0 -0
- lfx/base/agents/agent.py +375 -0
- lfx/base/agents/altk_base_agent.py +380 -0
- lfx/base/agents/altk_tool_wrappers.py +565 -0
- lfx/base/agents/callback.py +130 -0
- lfx/base/agents/context.py +109 -0
- lfx/base/agents/crewai/__init__.py +0 -0
- lfx/base/agents/crewai/crew.py +231 -0
- lfx/base/agents/crewai/tasks.py +12 -0
- lfx/base/agents/default_prompts.py +23 -0
- lfx/base/agents/errors.py +15 -0
- lfx/base/agents/events.py +430 -0
- lfx/base/agents/utils.py +237 -0
- lfx/base/astra_assistants/__init__.py +0 -0
- lfx/base/astra_assistants/util.py +171 -0
- lfx/base/chains/__init__.py +0 -0
- lfx/base/chains/model.py +19 -0
- lfx/base/composio/__init__.py +0 -0
- lfx/base/composio/composio_base.py +2584 -0
- lfx/base/compressors/__init__.py +0 -0
- lfx/base/compressors/model.py +60 -0
- lfx/base/constants.py +46 -0
- lfx/base/curl/__init__.py +0 -0
- lfx/base/curl/parse.py +188 -0
- lfx/base/data/__init__.py +5 -0
- lfx/base/data/base_file.py +810 -0
- lfx/base/data/docling_utils.py +338 -0
- lfx/base/data/storage_utils.py +192 -0
- lfx/base/data/utils.py +362 -0
- lfx/base/datastax/__init__.py +5 -0
- lfx/base/datastax/astradb_base.py +896 -0
- lfx/base/document_transformers/__init__.py +0 -0
- lfx/base/document_transformers/model.py +43 -0
- lfx/base/embeddings/__init__.py +0 -0
- lfx/base/embeddings/aiml_embeddings.py +62 -0
- lfx/base/embeddings/embeddings_class.py +113 -0
- lfx/base/embeddings/model.py +26 -0
- lfx/base/flow_processing/__init__.py +0 -0
- lfx/base/flow_processing/utils.py +86 -0
- lfx/base/huggingface/__init__.py +0 -0
- lfx/base/huggingface/model_bridge.py +133 -0
- lfx/base/io/__init__.py +0 -0
- lfx/base/io/chat.py +21 -0
- lfx/base/io/text.py +22 -0
- lfx/base/knowledge_bases/__init__.py +3 -0
- lfx/base/knowledge_bases/knowledge_base_utils.py +137 -0
- lfx/base/langchain_utilities/__init__.py +0 -0
- lfx/base/langchain_utilities/model.py +35 -0
- lfx/base/langchain_utilities/spider_constants.py +1 -0
- lfx/base/langwatch/__init__.py +0 -0
- lfx/base/langwatch/utils.py +18 -0
- lfx/base/mcp/__init__.py +0 -0
- lfx/base/mcp/constants.py +2 -0
- lfx/base/mcp/util.py +1659 -0
- lfx/base/memory/__init__.py +0 -0
- lfx/base/memory/memory.py +49 -0
- lfx/base/memory/model.py +38 -0
- lfx/base/models/__init__.py +3 -0
- lfx/base/models/aiml_constants.py +51 -0
- lfx/base/models/anthropic_constants.py +51 -0
- lfx/base/models/aws_constants.py +151 -0
- lfx/base/models/chat_result.py +76 -0
- lfx/base/models/cometapi_constants.py +54 -0
- lfx/base/models/google_generative_ai_constants.py +70 -0
- lfx/base/models/google_generative_ai_model.py +38 -0
- lfx/base/models/groq_constants.py +150 -0
- lfx/base/models/groq_model_discovery.py +265 -0
- lfx/base/models/model.py +375 -0
- lfx/base/models/model_input_constants.py +378 -0
- lfx/base/models/model_metadata.py +41 -0
- lfx/base/models/model_utils.py +108 -0
- lfx/base/models/novita_constants.py +35 -0
- lfx/base/models/ollama_constants.py +52 -0
- lfx/base/models/openai_constants.py +129 -0
- lfx/base/models/sambanova_constants.py +18 -0
- lfx/base/models/watsonx_constants.py +36 -0
- lfx/base/processing/__init__.py +0 -0
- lfx/base/prompts/__init__.py +0 -0
- lfx/base/prompts/api_utils.py +224 -0
- lfx/base/prompts/utils.py +61 -0
- lfx/base/textsplitters/__init__.py +0 -0
- lfx/base/textsplitters/model.py +28 -0
- lfx/base/tools/__init__.py +0 -0
- lfx/base/tools/base.py +26 -0
- lfx/base/tools/component_tool.py +325 -0
- lfx/base/tools/constants.py +49 -0
- lfx/base/tools/flow_tool.py +132 -0
- lfx/base/tools/run_flow.py +698 -0
- lfx/base/vectorstores/__init__.py +0 -0
- lfx/base/vectorstores/model.py +193 -0
- lfx/base/vectorstores/utils.py +22 -0
- lfx/base/vectorstores/vector_store_connection_decorator.py +52 -0
- lfx/cli/__init__.py +5 -0
- lfx/cli/commands.py +327 -0
- lfx/cli/common.py +650 -0
- lfx/cli/run.py +506 -0
- lfx/cli/script_loader.py +289 -0
- lfx/cli/serve_app.py +546 -0
- lfx/cli/validation.py +69 -0
- lfx/components/FAISS/__init__.py +34 -0
- lfx/components/FAISS/faiss.py +111 -0
- lfx/components/Notion/__init__.py +19 -0
- lfx/components/Notion/add_content_to_page.py +269 -0
- lfx/components/Notion/create_page.py +94 -0
- lfx/components/Notion/list_database_properties.py +68 -0
- lfx/components/Notion/list_pages.py +122 -0
- lfx/components/Notion/list_users.py +77 -0
- lfx/components/Notion/page_content_viewer.py +93 -0
- lfx/components/Notion/search.py +111 -0
- lfx/components/Notion/update_page_property.py +114 -0
- lfx/components/__init__.py +428 -0
- lfx/components/_importing.py +42 -0
- lfx/components/agentql/__init__.py +3 -0
- lfx/components/agentql/agentql_api.py +151 -0
- lfx/components/aiml/__init__.py +37 -0
- lfx/components/aiml/aiml.py +115 -0
- lfx/components/aiml/aiml_embeddings.py +37 -0
- lfx/components/altk/__init__.py +34 -0
- lfx/components/altk/altk_agent.py +193 -0
- lfx/components/amazon/__init__.py +36 -0
- lfx/components/amazon/amazon_bedrock_converse.py +195 -0
- lfx/components/amazon/amazon_bedrock_embedding.py +109 -0
- lfx/components/amazon/amazon_bedrock_model.py +130 -0
- lfx/components/amazon/s3_bucket_uploader.py +211 -0
- lfx/components/anthropic/__init__.py +34 -0
- lfx/components/anthropic/anthropic.py +187 -0
- lfx/components/apify/__init__.py +5 -0
- lfx/components/apify/apify_actor.py +325 -0
- lfx/components/arxiv/__init__.py +3 -0
- lfx/components/arxiv/arxiv.py +169 -0
- lfx/components/assemblyai/__init__.py +46 -0
- lfx/components/assemblyai/assemblyai_get_subtitles.py +83 -0
- lfx/components/assemblyai/assemblyai_lemur.py +183 -0
- lfx/components/assemblyai/assemblyai_list_transcripts.py +95 -0
- lfx/components/assemblyai/assemblyai_poll_transcript.py +72 -0
- lfx/components/assemblyai/assemblyai_start_transcript.py +188 -0
- lfx/components/azure/__init__.py +37 -0
- lfx/components/azure/azure_openai.py +95 -0
- lfx/components/azure/azure_openai_embeddings.py +83 -0
- lfx/components/baidu/__init__.py +32 -0
- lfx/components/baidu/baidu_qianfan_chat.py +113 -0
- lfx/components/bing/__init__.py +3 -0
- lfx/components/bing/bing_search_api.py +61 -0
- lfx/components/cassandra/__init__.py +40 -0
- lfx/components/cassandra/cassandra.py +264 -0
- lfx/components/cassandra/cassandra_chat.py +92 -0
- lfx/components/cassandra/cassandra_graph.py +238 -0
- lfx/components/chains/__init__.py +3 -0
- lfx/components/chroma/__init__.py +34 -0
- lfx/components/chroma/chroma.py +169 -0
- lfx/components/cleanlab/__init__.py +40 -0
- lfx/components/cleanlab/cleanlab_evaluator.py +155 -0
- lfx/components/cleanlab/cleanlab_rag_evaluator.py +254 -0
- lfx/components/cleanlab/cleanlab_remediator.py +131 -0
- lfx/components/clickhouse/__init__.py +34 -0
- lfx/components/clickhouse/clickhouse.py +135 -0
- lfx/components/cloudflare/__init__.py +32 -0
- lfx/components/cloudflare/cloudflare.py +81 -0
- lfx/components/cohere/__init__.py +40 -0
- lfx/components/cohere/cohere_embeddings.py +81 -0
- lfx/components/cohere/cohere_models.py +46 -0
- lfx/components/cohere/cohere_rerank.py +51 -0
- lfx/components/cometapi/__init__.py +32 -0
- lfx/components/cometapi/cometapi.py +166 -0
- lfx/components/composio/__init__.py +222 -0
- lfx/components/composio/agentql_composio.py +11 -0
- lfx/components/composio/agiled_composio.py +11 -0
- lfx/components/composio/airtable_composio.py +11 -0
- lfx/components/composio/apollo_composio.py +11 -0
- lfx/components/composio/asana_composio.py +11 -0
- lfx/components/composio/attio_composio.py +11 -0
- lfx/components/composio/bitbucket_composio.py +11 -0
- lfx/components/composio/bolna_composio.py +11 -0
- lfx/components/composio/brightdata_composio.py +11 -0
- lfx/components/composio/calendly_composio.py +11 -0
- lfx/components/composio/canva_composio.py +11 -0
- lfx/components/composio/canvas_composio.py +11 -0
- lfx/components/composio/coda_composio.py +11 -0
- lfx/components/composio/composio_api.py +278 -0
- lfx/components/composio/contentful_composio.py +11 -0
- lfx/components/composio/digicert_composio.py +11 -0
- lfx/components/composio/discord_composio.py +11 -0
- lfx/components/composio/dropbox_compnent.py +11 -0
- lfx/components/composio/elevenlabs_composio.py +11 -0
- lfx/components/composio/exa_composio.py +11 -0
- lfx/components/composio/figma_composio.py +11 -0
- lfx/components/composio/finage_composio.py +11 -0
- lfx/components/composio/firecrawl_composio.py +11 -0
- lfx/components/composio/fireflies_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/github_composio.py +11 -0
- lfx/components/composio/gmail_composio.py +38 -0
- lfx/components/composio/googlebigquery_composio.py +11 -0
- lfx/components/composio/googlecalendar_composio.py +11 -0
- lfx/components/composio/googleclassroom_composio.py +11 -0
- lfx/components/composio/googledocs_composio.py +11 -0
- lfx/components/composio/googlemeet_composio.py +11 -0
- lfx/components/composio/googlesheets_composio.py +11 -0
- lfx/components/composio/googletasks_composio.py +8 -0
- lfx/components/composio/heygen_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/klaviyo_composio.py +11 -0
- lfx/components/composio/linear_composio.py +11 -0
- lfx/components/composio/listennotes_composio.py +11 -0
- lfx/components/composio/mem0_composio.py +11 -0
- lfx/components/composio/miro_composio.py +11 -0
- lfx/components/composio/missive_composio.py +11 -0
- lfx/components/composio/notion_composio.py +11 -0
- lfx/components/composio/onedrive_composio.py +11 -0
- lfx/components/composio/outlook_composio.py +11 -0
- lfx/components/composio/pandadoc_composio.py +11 -0
- lfx/components/composio/peopledatalabs_composio.py +11 -0
- lfx/components/composio/perplexityai_composio.py +11 -0
- lfx/components/composio/reddit_composio.py +11 -0
- lfx/components/composio/serpapi_composio.py +11 -0
- lfx/components/composio/slack_composio.py +11 -0
- lfx/components/composio/slackbot_composio.py +11 -0
- lfx/components/composio/snowflake_composio.py +11 -0
- lfx/components/composio/supabase_composio.py +11 -0
- lfx/components/composio/tavily_composio.py +11 -0
- lfx/components/composio/timelinesai_composio.py +11 -0
- lfx/components/composio/todoist_composio.py +11 -0
- lfx/components/composio/wrike_composio.py +11 -0
- lfx/components/composio/youtube_composio.py +11 -0
- lfx/components/confluence/__init__.py +3 -0
- lfx/components/confluence/confluence.py +84 -0
- lfx/components/couchbase/__init__.py +34 -0
- lfx/components/couchbase/couchbase.py +102 -0
- lfx/components/crewai/__init__.py +49 -0
- lfx/components/crewai/crewai.py +108 -0
- lfx/components/crewai/hierarchical_crew.py +47 -0
- lfx/components/crewai/hierarchical_task.py +45 -0
- lfx/components/crewai/sequential_crew.py +53 -0
- lfx/components/crewai/sequential_task.py +74 -0
- lfx/components/crewai/sequential_task_agent.py +144 -0
- lfx/components/cuga/__init__.py +34 -0
- lfx/components/cuga/cuga_agent.py +730 -0
- lfx/components/custom_component/__init__.py +34 -0
- lfx/components/custom_component/custom_component.py +31 -0
- lfx/components/data/__init__.py +114 -0
- lfx/components/data_source/__init__.py +58 -0
- lfx/components/data_source/api_request.py +577 -0
- lfx/components/data_source/csv_to_data.py +101 -0
- lfx/components/data_source/json_to_data.py +106 -0
- lfx/components/data_source/mock_data.py +398 -0
- lfx/components/data_source/news_search.py +166 -0
- lfx/components/data_source/rss.py +71 -0
- lfx/components/data_source/sql_executor.py +101 -0
- lfx/components/data_source/url.py +311 -0
- lfx/components/data_source/web_search.py +326 -0
- lfx/components/datastax/__init__.py +76 -0
- lfx/components/datastax/astradb_assistant_manager.py +307 -0
- lfx/components/datastax/astradb_chatmemory.py +40 -0
- lfx/components/datastax/astradb_cql.py +288 -0
- lfx/components/datastax/astradb_graph.py +217 -0
- lfx/components/datastax/astradb_tool.py +378 -0
- lfx/components/datastax/astradb_vectorize.py +122 -0
- lfx/components/datastax/astradb_vectorstore.py +449 -0
- lfx/components/datastax/create_assistant.py +59 -0
- lfx/components/datastax/create_thread.py +33 -0
- lfx/components/datastax/dotenv.py +36 -0
- lfx/components/datastax/get_assistant.py +38 -0
- lfx/components/datastax/getenvvar.py +31 -0
- lfx/components/datastax/graph_rag.py +141 -0
- lfx/components/datastax/hcd.py +315 -0
- lfx/components/datastax/list_assistants.py +26 -0
- lfx/components/datastax/run.py +90 -0
- lfx/components/deactivated/__init__.py +15 -0
- lfx/components/deactivated/amazon_kendra.py +66 -0
- lfx/components/deactivated/chat_litellm_model.py +158 -0
- lfx/components/deactivated/code_block_extractor.py +26 -0
- lfx/components/deactivated/documents_to_data.py +22 -0
- lfx/components/deactivated/embed.py +16 -0
- lfx/components/deactivated/extract_key_from_data.py +46 -0
- lfx/components/deactivated/json_document_builder.py +57 -0
- lfx/components/deactivated/list_flows.py +20 -0
- lfx/components/deactivated/mcp_sse.py +61 -0
- lfx/components/deactivated/mcp_stdio.py +62 -0
- lfx/components/deactivated/merge_data.py +93 -0
- lfx/components/deactivated/message.py +37 -0
- lfx/components/deactivated/metal.py +54 -0
- lfx/components/deactivated/multi_query.py +59 -0
- lfx/components/deactivated/retriever.py +43 -0
- lfx/components/deactivated/selective_passthrough.py +77 -0
- lfx/components/deactivated/should_run_next.py +40 -0
- lfx/components/deactivated/split_text.py +63 -0
- lfx/components/deactivated/store_message.py +24 -0
- lfx/components/deactivated/sub_flow.py +124 -0
- lfx/components/deactivated/vectara_self_query.py +76 -0
- lfx/components/deactivated/vector_store.py +24 -0
- lfx/components/deepseek/__init__.py +34 -0
- lfx/components/deepseek/deepseek.py +136 -0
- lfx/components/docling/__init__.py +43 -0
- lfx/components/docling/chunk_docling_document.py +186 -0
- lfx/components/docling/docling_inline.py +238 -0
- lfx/components/docling/docling_remote.py +195 -0
- lfx/components/docling/export_docling_document.py +117 -0
- lfx/components/documentloaders/__init__.py +3 -0
- lfx/components/duckduckgo/__init__.py +3 -0
- lfx/components/duckduckgo/duck_duck_go_search_run.py +92 -0
- lfx/components/elastic/__init__.py +37 -0
- lfx/components/elastic/elasticsearch.py +267 -0
- lfx/components/elastic/opensearch.py +789 -0
- lfx/components/elastic/opensearch_multimodal.py +1575 -0
- lfx/components/embeddings/__init__.py +37 -0
- lfx/components/embeddings/similarity.py +77 -0
- lfx/components/embeddings/text_embedder.py +65 -0
- lfx/components/exa/__init__.py +3 -0
- lfx/components/exa/exa_search.py +68 -0
- lfx/components/files_and_knowledge/__init__.py +47 -0
- lfx/components/files_and_knowledge/directory.py +113 -0
- lfx/components/files_and_knowledge/file.py +841 -0
- lfx/components/files_and_knowledge/ingestion.py +694 -0
- lfx/components/files_and_knowledge/retrieval.py +264 -0
- lfx/components/files_and_knowledge/save_file.py +746 -0
- lfx/components/firecrawl/__init__.py +43 -0
- lfx/components/firecrawl/firecrawl_crawl_api.py +88 -0
- lfx/components/firecrawl/firecrawl_extract_api.py +136 -0
- lfx/components/firecrawl/firecrawl_map_api.py +89 -0
- lfx/components/firecrawl/firecrawl_scrape_api.py +73 -0
- lfx/components/flow_controls/__init__.py +58 -0
- lfx/components/flow_controls/conditional_router.py +208 -0
- lfx/components/flow_controls/data_conditional_router.py +126 -0
- lfx/components/flow_controls/flow_tool.py +111 -0
- lfx/components/flow_controls/listen.py +29 -0
- lfx/components/flow_controls/loop.py +163 -0
- lfx/components/flow_controls/notify.py +88 -0
- lfx/components/flow_controls/pass_message.py +36 -0
- lfx/components/flow_controls/run_flow.py +108 -0
- lfx/components/flow_controls/sub_flow.py +115 -0
- lfx/components/git/__init__.py +4 -0
- lfx/components/git/git.py +262 -0
- lfx/components/git/gitextractor.py +196 -0
- lfx/components/glean/__init__.py +3 -0
- lfx/components/glean/glean_search_api.py +173 -0
- lfx/components/google/__init__.py +17 -0
- lfx/components/google/gmail.py +193 -0
- lfx/components/google/google_bq_sql_executor.py +157 -0
- lfx/components/google/google_drive.py +92 -0
- lfx/components/google/google_drive_search.py +152 -0
- lfx/components/google/google_generative_ai.py +144 -0
- lfx/components/google/google_generative_ai_embeddings.py +141 -0
- lfx/components/google/google_oauth_token.py +89 -0
- lfx/components/google/google_search_api_core.py +68 -0
- lfx/components/google/google_serper_api_core.py +74 -0
- lfx/components/groq/__init__.py +34 -0
- lfx/components/groq/groq.py +143 -0
- lfx/components/helpers/__init__.py +154 -0
- lfx/components/homeassistant/__init__.py +7 -0
- lfx/components/homeassistant/home_assistant_control.py +152 -0
- lfx/components/homeassistant/list_home_assistant_states.py +137 -0
- lfx/components/huggingface/__init__.py +37 -0
- lfx/components/huggingface/huggingface.py +199 -0
- lfx/components/huggingface/huggingface_inference_api.py +106 -0
- lfx/components/ibm/__init__.py +34 -0
- lfx/components/ibm/watsonx.py +207 -0
- lfx/components/ibm/watsonx_embeddings.py +135 -0
- lfx/components/icosacomputing/__init__.py +5 -0
- lfx/components/icosacomputing/combinatorial_reasoner.py +84 -0
- lfx/components/input_output/__init__.py +40 -0
- lfx/components/input_output/chat.py +109 -0
- lfx/components/input_output/chat_output.py +184 -0
- lfx/components/input_output/text.py +27 -0
- lfx/components/input_output/text_output.py +29 -0
- lfx/components/input_output/webhook.py +56 -0
- lfx/components/jigsawstack/__init__.py +23 -0
- lfx/components/jigsawstack/ai_scrape.py +126 -0
- lfx/components/jigsawstack/ai_web_search.py +136 -0
- lfx/components/jigsawstack/file_read.py +115 -0
- lfx/components/jigsawstack/file_upload.py +94 -0
- lfx/components/jigsawstack/image_generation.py +205 -0
- lfx/components/jigsawstack/nsfw.py +60 -0
- lfx/components/jigsawstack/object_detection.py +124 -0
- lfx/components/jigsawstack/sentiment.py +112 -0
- lfx/components/jigsawstack/text_to_sql.py +90 -0
- lfx/components/jigsawstack/text_translate.py +77 -0
- lfx/components/jigsawstack/vocr.py +107 -0
- lfx/components/knowledge_bases/__init__.py +89 -0
- lfx/components/langchain_utilities/__init__.py +109 -0
- lfx/components/langchain_utilities/character.py +53 -0
- lfx/components/langchain_utilities/conversation.py +59 -0
- lfx/components/langchain_utilities/csv_agent.py +175 -0
- lfx/components/langchain_utilities/fake_embeddings.py +26 -0
- lfx/components/langchain_utilities/html_link_extractor.py +35 -0
- lfx/components/langchain_utilities/json_agent.py +100 -0
- lfx/components/langchain_utilities/langchain_hub.py +126 -0
- lfx/components/langchain_utilities/language_recursive.py +49 -0
- lfx/components/langchain_utilities/language_semantic.py +138 -0
- lfx/components/langchain_utilities/llm_checker.py +39 -0
- lfx/components/langchain_utilities/llm_math.py +42 -0
- lfx/components/langchain_utilities/natural_language.py +61 -0
- lfx/components/langchain_utilities/openai_tools.py +53 -0
- lfx/components/langchain_utilities/openapi.py +48 -0
- lfx/components/langchain_utilities/recursive_character.py +60 -0
- lfx/components/langchain_utilities/retrieval_qa.py +83 -0
- lfx/components/langchain_utilities/runnable_executor.py +137 -0
- lfx/components/langchain_utilities/self_query.py +80 -0
- lfx/components/langchain_utilities/spider.py +142 -0
- lfx/components/langchain_utilities/sql.py +40 -0
- lfx/components/langchain_utilities/sql_database.py +35 -0
- lfx/components/langchain_utilities/sql_generator.py +78 -0
- lfx/components/langchain_utilities/tool_calling.py +59 -0
- lfx/components/langchain_utilities/vector_store_info.py +49 -0
- lfx/components/langchain_utilities/vector_store_router.py +33 -0
- lfx/components/langchain_utilities/xml_agent.py +71 -0
- lfx/components/langwatch/__init__.py +3 -0
- lfx/components/langwatch/langwatch.py +278 -0
- lfx/components/link_extractors/__init__.py +3 -0
- lfx/components/llm_operations/__init__.py +46 -0
- lfx/components/llm_operations/batch_run.py +205 -0
- lfx/components/llm_operations/lambda_filter.py +218 -0
- lfx/components/llm_operations/llm_conditional_router.py +421 -0
- lfx/components/llm_operations/llm_selector.py +499 -0
- lfx/components/llm_operations/structured_output.py +244 -0
- lfx/components/lmstudio/__init__.py +34 -0
- lfx/components/lmstudio/lmstudioembeddings.py +89 -0
- lfx/components/lmstudio/lmstudiomodel.py +133 -0
- lfx/components/logic/__init__.py +181 -0
- lfx/components/maritalk/__init__.py +32 -0
- lfx/components/maritalk/maritalk.py +52 -0
- lfx/components/mem0/__init__.py +3 -0
- lfx/components/mem0/mem0_chat_memory.py +147 -0
- lfx/components/milvus/__init__.py +34 -0
- lfx/components/milvus/milvus.py +115 -0
- lfx/components/mistral/__init__.py +37 -0
- lfx/components/mistral/mistral.py +114 -0
- lfx/components/mistral/mistral_embeddings.py +58 -0
- lfx/components/models/__init__.py +89 -0
- lfx/components/models_and_agents/__init__.py +49 -0
- lfx/components/models_and_agents/agent.py +644 -0
- lfx/components/models_and_agents/embedding_model.py +423 -0
- lfx/components/models_and_agents/language_model.py +398 -0
- lfx/components/models_and_agents/mcp_component.py +594 -0
- lfx/components/models_and_agents/memory.py +268 -0
- lfx/components/models_and_agents/prompt.py +67 -0
- lfx/components/mongodb/__init__.py +34 -0
- lfx/components/mongodb/mongodb_atlas.py +213 -0
- lfx/components/needle/__init__.py +3 -0
- lfx/components/needle/needle.py +104 -0
- lfx/components/notdiamond/__init__.py +34 -0
- lfx/components/notdiamond/notdiamond.py +228 -0
- lfx/components/novita/__init__.py +32 -0
- lfx/components/novita/novita.py +130 -0
- lfx/components/nvidia/__init__.py +57 -0
- lfx/components/nvidia/nvidia.py +151 -0
- lfx/components/nvidia/nvidia_embedding.py +77 -0
- lfx/components/nvidia/nvidia_ingest.py +317 -0
- lfx/components/nvidia/nvidia_rerank.py +63 -0
- lfx/components/nvidia/system_assist.py +65 -0
- lfx/components/olivya/__init__.py +3 -0
- lfx/components/olivya/olivya.py +116 -0
- lfx/components/ollama/__init__.py +37 -0
- lfx/components/ollama/ollama.py +548 -0
- lfx/components/ollama/ollama_embeddings.py +103 -0
- lfx/components/openai/__init__.py +37 -0
- lfx/components/openai/openai.py +100 -0
- lfx/components/openai/openai_chat_model.py +176 -0
- lfx/components/openrouter/__init__.py +32 -0
- lfx/components/openrouter/openrouter.py +104 -0
- lfx/components/output_parsers/__init__.py +3 -0
- lfx/components/perplexity/__init__.py +34 -0
- lfx/components/perplexity/perplexity.py +75 -0
- lfx/components/pgvector/__init__.py +34 -0
- lfx/components/pgvector/pgvector.py +72 -0
- lfx/components/pinecone/__init__.py +34 -0
- lfx/components/pinecone/pinecone.py +134 -0
- lfx/components/processing/__init__.py +72 -0
- lfx/components/processing/alter_metadata.py +109 -0
- lfx/components/processing/combine_text.py +40 -0
- lfx/components/processing/converter.py +248 -0
- lfx/components/processing/create_data.py +111 -0
- lfx/components/processing/create_list.py +40 -0
- lfx/components/processing/data_operations.py +528 -0
- lfx/components/processing/data_to_dataframe.py +71 -0
- lfx/components/processing/dataframe_operations.py +313 -0
- lfx/components/processing/dataframe_to_toolset.py +259 -0
- lfx/components/processing/dynamic_create_data.py +357 -0
- lfx/components/processing/extract_key.py +54 -0
- lfx/components/processing/filter_data.py +43 -0
- lfx/components/processing/filter_data_values.py +89 -0
- lfx/components/processing/json_cleaner.py +104 -0
- lfx/components/processing/merge_data.py +91 -0
- lfx/components/processing/message_to_data.py +37 -0
- lfx/components/processing/output_parser.py +46 -0
- lfx/components/processing/parse_data.py +71 -0
- lfx/components/processing/parse_dataframe.py +69 -0
- lfx/components/processing/parse_json_data.py +91 -0
- lfx/components/processing/parser.py +148 -0
- lfx/components/processing/regex.py +83 -0
- lfx/components/processing/select_data.py +49 -0
- lfx/components/processing/split_text.py +141 -0
- lfx/components/processing/store_message.py +91 -0
- lfx/components/processing/update_data.py +161 -0
- lfx/components/prototypes/__init__.py +35 -0
- lfx/components/prototypes/python_function.py +73 -0
- lfx/components/qdrant/__init__.py +34 -0
- lfx/components/qdrant/qdrant.py +109 -0
- lfx/components/redis/__init__.py +37 -0
- lfx/components/redis/redis.py +89 -0
- lfx/components/redis/redis_chat.py +43 -0
- lfx/components/sambanova/__init__.py +32 -0
- lfx/components/sambanova/sambanova.py +84 -0
- lfx/components/scrapegraph/__init__.py +40 -0
- lfx/components/scrapegraph/scrapegraph_markdownify_api.py +64 -0
- lfx/components/scrapegraph/scrapegraph_search_api.py +64 -0
- lfx/components/scrapegraph/scrapegraph_smart_scraper_api.py +71 -0
- lfx/components/searchapi/__init__.py +34 -0
- lfx/components/searchapi/search.py +79 -0
- lfx/components/serpapi/__init__.py +3 -0
- lfx/components/serpapi/serp.py +115 -0
- lfx/components/supabase/__init__.py +34 -0
- lfx/components/supabase/supabase.py +76 -0
- lfx/components/tavily/__init__.py +4 -0
- lfx/components/tavily/tavily_extract.py +117 -0
- lfx/components/tavily/tavily_search.py +212 -0
- lfx/components/textsplitters/__init__.py +3 -0
- lfx/components/toolkits/__init__.py +3 -0
- lfx/components/tools/__init__.py +66 -0
- lfx/components/tools/calculator.py +109 -0
- lfx/components/tools/google_search_api.py +45 -0
- lfx/components/tools/google_serper_api.py +115 -0
- lfx/components/tools/python_code_structured_tool.py +328 -0
- lfx/components/tools/python_repl.py +98 -0
- lfx/components/tools/search_api.py +88 -0
- lfx/components/tools/searxng.py +145 -0
- lfx/components/tools/serp_api.py +120 -0
- lfx/components/tools/tavily_search_tool.py +345 -0
- lfx/components/tools/wikidata_api.py +103 -0
- lfx/components/tools/wikipedia_api.py +50 -0
- lfx/components/tools/yahoo_finance.py +130 -0
- lfx/components/twelvelabs/__init__.py +52 -0
- lfx/components/twelvelabs/convert_astra_results.py +84 -0
- lfx/components/twelvelabs/pegasus_index.py +311 -0
- lfx/components/twelvelabs/split_video.py +301 -0
- lfx/components/twelvelabs/text_embeddings.py +57 -0
- lfx/components/twelvelabs/twelvelabs_pegasus.py +408 -0
- lfx/components/twelvelabs/video_embeddings.py +100 -0
- lfx/components/twelvelabs/video_file.py +191 -0
- lfx/components/unstructured/__init__.py +3 -0
- lfx/components/unstructured/unstructured.py +121 -0
- lfx/components/upstash/__init__.py +34 -0
- lfx/components/upstash/upstash.py +124 -0
- lfx/components/utilities/__init__.py +43 -0
- lfx/components/utilities/calculator_core.py +89 -0
- lfx/components/utilities/current_date.py +42 -0
- lfx/components/utilities/id_generator.py +42 -0
- lfx/components/utilities/python_repl_core.py +98 -0
- lfx/components/vectara/__init__.py +37 -0
- lfx/components/vectara/vectara.py +97 -0
- lfx/components/vectara/vectara_rag.py +164 -0
- lfx/components/vectorstores/__init__.py +34 -0
- lfx/components/vectorstores/local_db.py +270 -0
- lfx/components/vertexai/__init__.py +37 -0
- lfx/components/vertexai/vertexai.py +71 -0
- lfx/components/vertexai/vertexai_embeddings.py +67 -0
- lfx/components/vlmrun/__init__.py +34 -0
- lfx/components/vlmrun/vlmrun_transcription.py +224 -0
- lfx/components/weaviate/__init__.py +34 -0
- lfx/components/weaviate/weaviate.py +89 -0
- lfx/components/wikipedia/__init__.py +4 -0
- lfx/components/wikipedia/wikidata.py +86 -0
- lfx/components/wikipedia/wikipedia.py +53 -0
- lfx/components/wolframalpha/__init__.py +3 -0
- lfx/components/wolframalpha/wolfram_alpha_api.py +54 -0
- lfx/components/xai/__init__.py +32 -0
- lfx/components/xai/xai.py +167 -0
- lfx/components/yahoosearch/__init__.py +3 -0
- lfx/components/yahoosearch/yahoo.py +137 -0
- lfx/components/youtube/__init__.py +52 -0
- lfx/components/youtube/channel.py +227 -0
- lfx/components/youtube/comments.py +231 -0
- lfx/components/youtube/playlist.py +33 -0
- lfx/components/youtube/search.py +120 -0
- lfx/components/youtube/trending.py +285 -0
- lfx/components/youtube/video_details.py +263 -0
- lfx/components/youtube/youtube_transcripts.py +206 -0
- lfx/components/zep/__init__.py +3 -0
- lfx/components/zep/zep.py +45 -0
- lfx/constants.py +6 -0
- lfx/custom/__init__.py +7 -0
- lfx/custom/attributes.py +87 -0
- lfx/custom/code_parser/__init__.py +3 -0
- lfx/custom/code_parser/code_parser.py +361 -0
- lfx/custom/custom_component/__init__.py +0 -0
- lfx/custom/custom_component/base_component.py +128 -0
- lfx/custom/custom_component/component.py +1890 -0
- lfx/custom/custom_component/component_with_cache.py +8 -0
- lfx/custom/custom_component/custom_component.py +650 -0
- lfx/custom/dependency_analyzer.py +165 -0
- lfx/custom/directory_reader/__init__.py +3 -0
- lfx/custom/directory_reader/directory_reader.py +359 -0
- lfx/custom/directory_reader/utils.py +171 -0
- lfx/custom/eval.py +12 -0
- lfx/custom/schema.py +32 -0
- lfx/custom/tree_visitor.py +21 -0
- lfx/custom/utils.py +877 -0
- lfx/custom/validate.py +523 -0
- lfx/events/__init__.py +1 -0
- lfx/events/event_manager.py +110 -0
- lfx/exceptions/__init__.py +0 -0
- lfx/exceptions/component.py +15 -0
- lfx/field_typing/__init__.py +91 -0
- lfx/field_typing/constants.py +216 -0
- lfx/field_typing/range_spec.py +35 -0
- lfx/graph/__init__.py +6 -0
- lfx/graph/edge/__init__.py +0 -0
- lfx/graph/edge/base.py +300 -0
- lfx/graph/edge/schema.py +119 -0
- lfx/graph/edge/utils.py +0 -0
- lfx/graph/graph/__init__.py +0 -0
- lfx/graph/graph/ascii.py +202 -0
- lfx/graph/graph/base.py +2298 -0
- lfx/graph/graph/constants.py +63 -0
- lfx/graph/graph/runnable_vertices_manager.py +133 -0
- lfx/graph/graph/schema.py +53 -0
- lfx/graph/graph/state_model.py +66 -0
- lfx/graph/graph/utils.py +1024 -0
- lfx/graph/schema.py +75 -0
- lfx/graph/state/__init__.py +0 -0
- lfx/graph/state/model.py +250 -0
- lfx/graph/utils.py +206 -0
- lfx/graph/vertex/__init__.py +0 -0
- lfx/graph/vertex/base.py +826 -0
- lfx/graph/vertex/constants.py +0 -0
- lfx/graph/vertex/exceptions.py +4 -0
- lfx/graph/vertex/param_handler.py +316 -0
- lfx/graph/vertex/schema.py +26 -0
- lfx/graph/vertex/utils.py +19 -0
- lfx/graph/vertex/vertex_types.py +489 -0
- lfx/helpers/__init__.py +141 -0
- lfx/helpers/base_model.py +71 -0
- lfx/helpers/custom.py +13 -0
- lfx/helpers/data.py +167 -0
- lfx/helpers/flow.py +308 -0
- lfx/inputs/__init__.py +68 -0
- lfx/inputs/constants.py +2 -0
- lfx/inputs/input_mixin.py +352 -0
- lfx/inputs/inputs.py +718 -0
- lfx/inputs/validators.py +19 -0
- lfx/interface/__init__.py +6 -0
- lfx/interface/components.py +897 -0
- lfx/interface/importing/__init__.py +5 -0
- lfx/interface/importing/utils.py +39 -0
- lfx/interface/initialize/__init__.py +3 -0
- lfx/interface/initialize/loading.py +317 -0
- lfx/interface/listing.py +26 -0
- lfx/interface/run.py +16 -0
- lfx/interface/utils.py +111 -0
- lfx/io/__init__.py +63 -0
- lfx/io/schema.py +295 -0
- lfx/load/__init__.py +8 -0
- lfx/load/load.py +256 -0
- lfx/load/utils.py +99 -0
- lfx/log/__init__.py +5 -0
- lfx/log/logger.py +411 -0
- lfx/logging/__init__.py +11 -0
- lfx/logging/logger.py +24 -0
- lfx/memory/__init__.py +70 -0
- lfx/memory/stubs.py +302 -0
- lfx/processing/__init__.py +1 -0
- lfx/processing/process.py +238 -0
- lfx/processing/utils.py +25 -0
- lfx/py.typed +0 -0
- lfx/schema/__init__.py +66 -0
- lfx/schema/artifact.py +83 -0
- lfx/schema/content_block.py +62 -0
- lfx/schema/content_types.py +91 -0
- lfx/schema/cross_module.py +80 -0
- lfx/schema/data.py +309 -0
- lfx/schema/dataframe.py +210 -0
- lfx/schema/dotdict.py +74 -0
- lfx/schema/encoders.py +13 -0
- lfx/schema/graph.py +47 -0
- lfx/schema/image.py +184 -0
- lfx/schema/json_schema.py +186 -0
- lfx/schema/log.py +62 -0
- lfx/schema/message.py +493 -0
- lfx/schema/openai_responses_schemas.py +74 -0
- lfx/schema/properties.py +41 -0
- lfx/schema/schema.py +180 -0
- lfx/schema/serialize.py +13 -0
- lfx/schema/table.py +142 -0
- lfx/schema/validators.py +114 -0
- lfx/serialization/__init__.py +5 -0
- lfx/serialization/constants.py +2 -0
- lfx/serialization/serialization.py +314 -0
- lfx/services/__init__.py +26 -0
- lfx/services/base.py +28 -0
- lfx/services/cache/__init__.py +6 -0
- lfx/services/cache/base.py +183 -0
- lfx/services/cache/service.py +166 -0
- lfx/services/cache/utils.py +169 -0
- lfx/services/chat/__init__.py +1 -0
- lfx/services/chat/config.py +2 -0
- lfx/services/chat/schema.py +10 -0
- lfx/services/database/__init__.py +5 -0
- lfx/services/database/service.py +25 -0
- lfx/services/deps.py +194 -0
- lfx/services/factory.py +19 -0
- lfx/services/initialize.py +19 -0
- lfx/services/interfaces.py +103 -0
- lfx/services/manager.py +185 -0
- lfx/services/mcp_composer/__init__.py +6 -0
- lfx/services/mcp_composer/factory.py +16 -0
- lfx/services/mcp_composer/service.py +1441 -0
- lfx/services/schema.py +21 -0
- lfx/services/session.py +87 -0
- lfx/services/settings/__init__.py +3 -0
- lfx/services/settings/auth.py +133 -0
- lfx/services/settings/base.py +668 -0
- lfx/services/settings/constants.py +43 -0
- lfx/services/settings/factory.py +23 -0
- lfx/services/settings/feature_flags.py +11 -0
- lfx/services/settings/service.py +35 -0
- lfx/services/settings/utils.py +40 -0
- lfx/services/shared_component_cache/__init__.py +1 -0
- lfx/services/shared_component_cache/factory.py +30 -0
- lfx/services/shared_component_cache/service.py +9 -0
- lfx/services/storage/__init__.py +5 -0
- lfx/services/storage/local.py +185 -0
- lfx/services/storage/service.py +177 -0
- lfx/services/tracing/__init__.py +1 -0
- lfx/services/tracing/service.py +21 -0
- lfx/settings.py +6 -0
- lfx/template/__init__.py +6 -0
- lfx/template/field/__init__.py +0 -0
- lfx/template/field/base.py +260 -0
- lfx/template/field/prompt.py +15 -0
- lfx/template/frontend_node/__init__.py +6 -0
- lfx/template/frontend_node/base.py +214 -0
- lfx/template/frontend_node/constants.py +65 -0
- lfx/template/frontend_node/custom_components.py +79 -0
- lfx/template/template/__init__.py +0 -0
- lfx/template/template/base.py +100 -0
- lfx/template/utils.py +217 -0
- lfx/type_extraction/__init__.py +19 -0
- lfx/type_extraction/type_extraction.py +75 -0
- lfx/type_extraction.py +80 -0
- lfx/utils/__init__.py +1 -0
- lfx/utils/async_helpers.py +42 -0
- lfx/utils/component_utils.py +154 -0
- lfx/utils/concurrency.py +60 -0
- lfx/utils/connection_string_parser.py +11 -0
- lfx/utils/constants.py +233 -0
- lfx/utils/data_structure.py +212 -0
- lfx/utils/exceptions.py +22 -0
- lfx/utils/helpers.py +34 -0
- lfx/utils/image.py +79 -0
- lfx/utils/langflow_utils.py +52 -0
- lfx/utils/lazy_load.py +15 -0
- lfx/utils/request_utils.py +18 -0
- lfx/utils/schemas.py +139 -0
- lfx/utils/ssrf_protection.py +384 -0
- lfx/utils/util.py +626 -0
- lfx/utils/util_strings.py +56 -0
- lfx/utils/validate_cloud.py +26 -0
- lfx/utils/version.py +24 -0
- lfx_nightly-0.2.0.dev25.dist-info/METADATA +312 -0
- lfx_nightly-0.2.0.dev25.dist-info/RECORD +769 -0
- lfx_nightly-0.2.0.dev25.dist-info/WHEEL +4 -0
- 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."""
|