langflow-base-nightly 0.5.0.dev37__py3-none-any.whl → 0.5.0.dev39__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.
- langflow/__main__.py +1 -1
- langflow/alembic/versions/0882f9657f22_encrypt_existing_mcp_auth_settings_.py +122 -0
- langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +24 -30
- langflow/alembic/versions/58b28437a398_modify_nullable.py +6 -6
- langflow/alembic/versions/79e675cb6752_change_datetime_type.py +24 -30
- langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +12 -13
- langflow/api/build.py +21 -26
- langflow/api/health_check_router.py +3 -3
- langflow/api/utils.py +3 -3
- langflow/api/v1/callback.py +2 -2
- langflow/api/v1/chat.py +19 -31
- langflow/api/v1/endpoints.py +10 -10
- langflow/api/v1/flows.py +1 -1
- langflow/api/v1/knowledge_bases.py +3 -3
- langflow/api/v1/mcp.py +12 -12
- langflow/api/v1/mcp_projects.py +405 -120
- langflow/api/v1/mcp_utils.py +8 -8
- langflow/api/v1/schemas.py +2 -7
- langflow/api/v1/store.py +1 -1
- langflow/api/v1/validate.py +2 -2
- langflow/api/v1/voice_mode.py +58 -62
- langflow/api/v2/files.py +2 -2
- langflow/api/v2/mcp.py +10 -9
- langflow/base/composio/composio_base.py +21 -2
- langflow/base/data/docling_utils.py +194 -0
- langflow/base/embeddings/aiml_embeddings.py +1 -1
- langflow/base/flow_processing/utils.py +1 -2
- langflow/base/io/__init__.py +0 -1
- langflow/base/langwatch/utils.py +2 -1
- langflow/base/mcp/util.py +49 -47
- langflow/base/prompts/api_utils.py +1 -1
- langflow/base/tools/flow_tool.py +2 -2
- langflow/base/tools/run_flow.py +2 -6
- langflow/components/FAISS/__init__.py +34 -0
- langflow/components/Notion/add_content_to_page.py +2 -2
- langflow/components/Notion/list_database_properties.py +2 -2
- langflow/components/Notion/list_pages.py +2 -2
- langflow/components/Notion/page_content_viewer.py +2 -2
- langflow/components/Notion/update_page_property.py +1 -1
- langflow/components/agentql/agentql_api.py +2 -10
- langflow/components/agents/agent.py +249 -55
- langflow/components/agents/mcp_component.py +14 -14
- langflow/components/anthropic/anthropic.py +5 -4
- langflow/components/assemblyai/assemblyai_get_subtitles.py +2 -2
- langflow/components/assemblyai/assemblyai_lemur.py +2 -2
- langflow/components/assemblyai/assemblyai_list_transcripts.py +2 -2
- langflow/components/assemblyai/assemblyai_poll_transcript.py +2 -2
- langflow/components/assemblyai/assemblyai_start_transcript.py +2 -2
- langflow/components/cassandra/__init__.py +40 -0
- langflow/components/chroma/__init__.py +34 -0
- langflow/components/clickhouse/__init__.py +34 -0
- langflow/components/couchbase/__init__.py +34 -0
- langflow/components/data/file.py +575 -55
- langflow/components/data/url.py +1 -1
- langflow/components/datastax/__init__.py +3 -3
- langflow/components/datastax/astra_assistant_manager.py +3 -3
- langflow/components/datastax/create_assistant.py +1 -2
- langflow/components/deactivated/merge_data.py +1 -2
- langflow/components/deactivated/sub_flow.py +6 -7
- langflow/components/deactivated/vectara_self_query.py +3 -3
- langflow/components/docling/__init__.py +0 -198
- langflow/components/docling/docling_inline.py +1 -1
- langflow/components/elastic/__init__.py +37 -0
- langflow/components/embeddings/text_embedder.py +3 -3
- langflow/components/firecrawl/firecrawl_extract_api.py +2 -9
- langflow/components/google/gmail.py +1 -1
- langflow/components/google/google_generative_ai.py +5 -11
- langflow/components/groq/groq.py +4 -3
- langflow/components/helpers/current_date.py +2 -3
- langflow/components/helpers/memory.py +1 -1
- langflow/components/ibm/watsonx.py +1 -1
- langflow/components/ibm/watsonx_embeddings.py +1 -1
- langflow/components/langwatch/langwatch.py +3 -3
- langflow/components/logic/flow_tool.py +2 -2
- langflow/components/logic/notify.py +1 -1
- langflow/components/logic/run_flow.py +2 -3
- langflow/components/logic/sub_flow.py +4 -5
- langflow/components/mem0/mem0_chat_memory.py +2 -8
- langflow/components/milvus/__init__.py +34 -0
- langflow/components/mongodb/__init__.py +34 -0
- langflow/components/nvidia/nvidia.py +3 -3
- langflow/components/olivya/olivya.py +7 -7
- langflow/components/ollama/ollama.py +9 -6
- langflow/components/perplexity/perplexity.py +3 -13
- langflow/components/pgvector/__init__.py +34 -0
- langflow/components/pinecone/__init__.py +34 -0
- langflow/components/processing/batch_run.py +8 -8
- langflow/components/processing/data_operations.py +2 -2
- langflow/components/processing/merge_data.py +1 -2
- langflow/components/processing/message_to_data.py +2 -3
- langflow/components/processing/parse_json_data.py +1 -1
- langflow/components/prototypes/python_function.py +2 -3
- langflow/components/qdrant/__init__.py +34 -0
- langflow/components/redis/__init__.py +36 -2
- langflow/components/redis/redis.py +75 -29
- langflow/components/redis/redis_chat.py +43 -0
- langflow/components/serpapi/serp.py +1 -1
- langflow/components/supabase/__init__.py +37 -0
- langflow/components/tavily/tavily_extract.py +1 -1
- langflow/components/tavily/tavily_search.py +1 -1
- langflow/components/tools/calculator.py +2 -2
- langflow/components/tools/python_code_structured_tool.py +3 -10
- langflow/components/tools/python_repl.py +2 -2
- langflow/components/tools/searxng.py +3 -3
- langflow/components/tools/serp_api.py +2 -2
- langflow/components/tools/tavily_search_tool.py +2 -2
- langflow/components/tools/yahoo_finance.py +1 -1
- langflow/components/twelvelabs/video_embeddings.py +4 -4
- langflow/components/upstash/__init__.py +34 -0
- langflow/components/vectara/__init__.py +37 -0
- langflow/components/vectorstores/__init__.py +0 -69
- langflow/components/vectorstores/local_db.py +2 -1
- langflow/components/weaviate/__init__.py +34 -0
- langflow/components/yahoosearch/yahoo.py +1 -1
- langflow/components/youtube/trending.py +3 -4
- langflow/custom/attributes.py +2 -1
- langflow/custom/code_parser/code_parser.py +1 -1
- langflow/custom/custom_component/base_component.py +1 -1
- langflow/custom/custom_component/component.py +16 -2
- langflow/custom/dependency_analyzer.py +165 -0
- langflow/custom/directory_reader/directory_reader.py +7 -7
- langflow/custom/directory_reader/utils.py +1 -2
- langflow/custom/utils.py +63 -45
- langflow/events/event_manager.py +1 -1
- langflow/frontend/assets/{SlackIcon-CnvyOamQ.js → SlackIcon-Cr3Q15Px.js} +1 -1
- langflow/frontend/assets/{Wikipedia-nyTEXdr2.js → Wikipedia-GxM5sPdM.js} +1 -1
- langflow/frontend/assets/{Wolfram-BYMQkNSq.js → Wolfram-BN3-VOCA.js} +1 -1
- langflow/frontend/assets/{index-DZTC5pdT.js → index-28oOcafk.js} +1 -1
- langflow/frontend/assets/{index-ChXJpBz4.js → index-2wSXqBtB.js} +1 -1
- langflow/frontend/assets/{index-BB15_iOb.js → index-3wW7BClE.js} +1 -1
- langflow/frontend/assets/{index-DKHNourL.js → index-6pyH3ZJB.js} +1 -1
- langflow/frontend/assets/{index-BvwZfF2i.js → index-AWCSdofD.js} +1 -1
- langflow/frontend/assets/{index-Bvxg4_ux.js → index-B2Zgv_xv.js} +1 -1
- langflow/frontend/assets/{index-Bd6WtbKA.js → index-B2ptVQGM.js} +1 -1
- langflow/frontend/assets/{index-C7QWbnLK.js → index-B3TANVes.js} +1 -1
- langflow/frontend/assets/{index-CpvYQ0ug.js → index-B4yCvZKV.js} +1 -1
- langflow/frontend/assets/{index-Dg-63Si_.js → index-BC65VuWx.js} +1 -1
- langflow/frontend/assets/{index-C6jri9Wm.js → index-BCDSei1q.js} +1 -1
- langflow/frontend/assets/{index-OazXJdEl.js → index-BJy50PvP.js} +1 -1
- langflow/frontend/assets/{index-CWdkbVsd.js → index-BKseQQ2I.js} +1 -1
- langflow/frontend/assets/{index-CaQ_H9ww.js → index-BLTxEeTi.js} +1 -1
- langflow/frontend/assets/{index-DGRMNe9n.js → index-BRg1f4Mu.js} +1 -1
- langflow/frontend/assets/{index-D8lOi1GI.js → index-BS8Vo8nc.js} +1 -1
- langflow/frontend/assets/{index-B748uLP1.js → index-BTKOU4xC.js} +1 -1
- langflow/frontend/assets/{index-Dqd4RjYA.js → index-BVwJDmw-.js} +1 -1
- langflow/frontend/assets/{index-DbMFlnHE.js → index-BWYuQ2Sj.js} +1 -1
- langflow/frontend/assets/{index-BEMw2Np8.js → index-BWdLILDG.js} +1 -1
- langflow/frontend/assets/{index-BmX5CoED.js → index-BZcw4827.js} +1 -1
- langflow/frontend/assets/{index-CyPvTB63.js → index-Bbi87Ve4.js} +1 -1
- langflow/frontend/assets/{index-BTEW9e8P.js → index-Bf0IYKLd.js} +1 -1
- langflow/frontend/assets/{index-BZgXW854.js → index-Bg5nrMRh.js} +1 -1
- langflow/frontend/assets/{index-BBxAPk1y.js → index-BiC280Nx.js} +1 -1
- langflow/frontend/assets/{index-BR0bkVqX.js → index-BiKKN6FR.js} +1 -1
- langflow/frontend/assets/{index-CTrt1Q_j.js → index-Bief6eyJ.js} +1 -1
- langflow/frontend/assets/{index-D5_DsUJc.js → index-BkXec1Yf.js} +1 -1
- langflow/frontend/assets/{index-CZQ9rXNa.js → index-Bnl6QHtP.js} +1 -1
- langflow/frontend/assets/{index-BChjg6Az.js → index-BpxbUiZD.js} +1979 -1979
- langflow/frontend/assets/{index-BOeo01QB.js → index-BrJV8psX.js} +1 -1
- langflow/frontend/assets/{index-DysKpOuj.js → index-BwLWcUXL.js} +1 -1
- langflow/frontend/assets/{index-Bnqod3vk.js → index-Bx7dBY26.js} +1 -1
- langflow/frontend/assets/{index-D3DDfngy.js → index-C-EdnFdA.js} +1 -1
- langflow/frontend/assets/{index-Bsa0xZyL.js → index-C-Xfg4cD.js} +1 -1
- langflow/frontend/assets/{index-BTrsh9LS.js → index-C1f2wMat.js} +1 -1
- langflow/frontend/assets/index-C1xroOlH.css +1 -0
- langflow/frontend/assets/{index-B1YN7oMV.js → index-C3KequvP.js} +1 -1
- langflow/frontend/assets/{index-DzW2mfkK.js → index-C3ZjKdCD.js} +1 -1
- langflow/frontend/assets/{index-ajRge-Mg.js → index-C3l0zYn0.js} +1 -1
- langflow/frontend/assets/{index-cvZdgWHQ.js → index-C3yvArUT.js} +1 -1
- langflow/frontend/assets/{index-C-2hghRJ.js → index-C9Cxnkl8.js} +1 -1
- langflow/frontend/assets/{index-BhIOhlCH.js → index-CBc8fEAE.js} +1 -1
- langflow/frontend/assets/{index-B3Sur4Z3.js → index-CBvrGgID.js} +1 -1
- langflow/frontend/assets/{index-CCePCqkT.js → index-CD-PqGCY.js} +1 -1
- langflow/frontend/assets/{index-8yMsjVV2.js → index-CGO1CiUr.js} +1 -1
- langflow/frontend/assets/{index-DF5VwgU6.js → index-CH5UVA9b.js} +1 -1
- langflow/frontend/assets/{index-dcnYpT9N.js → index-CLJeJYjH.js} +1 -1
- langflow/frontend/assets/{index-DfxYyS3M.js → index-CMZ79X-Y.js} +1 -1
- langflow/frontend/assets/{index-ya2uXE8v.js → index-CMzfJKiW.js} +1 -1
- langflow/frontend/assets/{index-DkelbYy7.js → index-CNw1H-Wc.js} +1 -1
- langflow/frontend/assets/{index-DytJENYD.js → index-CPHEscq9.js} +1 -1
- langflow/frontend/assets/{index-Bv8h2Z-q.js → index-CRPKJZw9.js} +1 -1
- langflow/frontend/assets/{index-D-9TI74R.js → index-CRPyCfYy.js} +1 -1
- langflow/frontend/assets/{index-BLGYN-9b.js → index-CRcMqCIj.js} +1 -1
- langflow/frontend/assets/{index-tVYiABdp.js → index-CUVDws8F.js} +1 -1
- langflow/frontend/assets/{index-CpcbQZIF.js → index-CVWQfRYZ.js} +1 -1
- langflow/frontend/assets/{index-DPCzHdsC.js → index-CVl6MbaM.js} +1 -1
- langflow/frontend/assets/{index-DkXy1WFo.js → index-CVwWoX99.js} +1 -1
- langflow/frontend/assets/{index-DK1Ptcc4.js → index-CWPzZtSx.js} +1 -1
- langflow/frontend/assets/{index-DHq8TQPB.js → index-CZqRL9DE.js} +1 -1
- langflow/frontend/assets/{index-DnEGCgih.js → index-CdIf07Rw.js} +1 -1
- langflow/frontend/assets/{index-BIQQCMvz.js → index-Cewy7JZE.js} +1 -1
- langflow/frontend/assets/{index-D8GJngXa.js → index-CfwLpbMM.js} +1 -1
- langflow/frontend/assets/{index-C_TdzfAn.js → index-CiR1dxI4.js} +1 -1
- langflow/frontend/assets/{index-BzL_EoKd.js → index-CiixOzDG.js} +1 -1
- langflow/frontend/assets/{index-Boso-xEw.js → index-ClsuDmR6.js} +1 -1
- langflow/frontend/assets/{index-8WdfSTTz.js → index-CmEYYRN1.js} +1 -1
- langflow/frontend/assets/{index-FUxmznS-.js → index-Co20d-eQ.js} +1 -1
- langflow/frontend/assets/{index-C82JjCPD.js → index-CpzXS6md.js} +1 -1
- langflow/frontend/assets/{index-DIDDfmlJ.js → index-Cqpzl1J4.js} +1 -1
- langflow/frontend/assets/{index-_UcqeEjm.js → index-CtVIONP2.js} +1 -1
- langflow/frontend/assets/{index-Gkrq-vzm.js → index-CuFXdTx4.js} +1 -1
- langflow/frontend/assets/{index-WPFivmdQ.js → index-Cyd2HtHK.js} +1 -1
- langflow/frontend/assets/{index-BFp_O-c9.js → index-D-1tA8Dt.js} +1 -1
- langflow/frontend/assets/{index-BqPpO6KG.js → index-D-KY3kkq.js} +1 -1
- langflow/frontend/assets/{index-Db71w3lq.js → index-D-_B1a8v.js} +1 -1
- langflow/frontend/assets/{index-BIzTEqFh.js → index-D14EWPyZ.js} +1 -1
- langflow/frontend/assets/{index-BbJjt5m4.js → index-D2N3l-cw.js} +1 -1
- langflow/frontend/assets/{index-DCRk27Tp.js → index-D5ETnvJa.js} +1 -1
- langflow/frontend/assets/{index-CvcEzq4x.js → index-D7kquVv2.js} +1 -1
- langflow/frontend/assets/{index-Q9vDw0Xl.js → index-DA6-bvgN.js} +1 -1
- langflow/frontend/assets/{index-l7bzB8Ex.js → index-DDWBeudF.js} +1 -1
- langflow/frontend/assets/{index-BCCGvqay.js → index-DDcMAaG4.js} +1 -1
- langflow/frontend/assets/{index-pCQ_yw8m.js → index-DHgomBdh.js} +1 -1
- langflow/frontend/assets/{index-BxEuHa76.js → index-DJP-ss47.js} +1 -1
- langflow/frontend/assets/{index-BbRm7beF.js → index-DQ7VYqQc.js} +1 -1
- langflow/frontend/assets/{index-Car-zdor.js → index-DTqbvGC0.js} +1 -1
- langflow/frontend/assets/{index-BRxvproo.js → index-DUpri6zF.js} +1 -1
- langflow/frontend/assets/{index-BQ6NUdMY.js → index-DV3utZDZ.js} +1 -1
- langflow/frontend/assets/{index-DjQETUy8.js → index-DXRfN4HV.js} +1 -1
- langflow/frontend/assets/{index-DfngcQxO.js → index-Db9dYSzy.js} +1 -1
- langflow/frontend/assets/{index-rXV1G1aB.js → index-DdtMEn6I.js} +1 -1
- langflow/frontend/assets/{index-DmMDPoi0.js → index-DfDhMHgQ.js} +1 -1
- langflow/frontend/assets/{index-DJB12jIC.js → index-Dfe7qfvf.js} +1 -1
- langflow/frontend/assets/{index-C_veJlEb.js → index-DhtZ5hx8.js} +1 -1
- langflow/frontend/assets/{index-CQMoqLAu.js → index-DiB3CTo8.js} +1 -1
- langflow/frontend/assets/{index-DVlceYFD.js → index-DiGWASY5.js} +1 -1
- langflow/frontend/assets/{index-Du_18NCU.js → index-Dl5amdBz.js} +1 -1
- langflow/frontend/assets/{index-CYDAYm-i.js → index-DlD4dXlZ.js} +1 -1
- langflow/frontend/assets/{index-CLPdN-q6.js → index-DmeiHnfl.js} +1 -1
- langflow/frontend/assets/index-Dmu-X5-4.js +1 -0
- langflow/frontend/assets/{index-BzEUlaw_.js → index-DpVWih90.js} +1 -1
- langflow/frontend/assets/{index-D6PSjHxP.js → index-DrDrcajG.js} +1 -1
- langflow/frontend/assets/{index-Dq5ilsem.js → index-Du-pc0KE.js} +1 -1
- langflow/frontend/assets/{index-CYe8Ipef.js → index-DwPkMTaY.js} +1 -1
- langflow/frontend/assets/{index-BVEZDXxS.js → index-DwQEZe3C.js} +1 -1
- langflow/frontend/assets/{index-BvT7L317.js → index-DyJFTK24.js} +1 -1
- langflow/frontend/assets/{index-HK3bVMYA.js → index-J38wh62w.js} +1 -1
- langflow/frontend/assets/{index-CCxGSSTT.js → index-Kwdl-e29.js} +1 -1
- langflow/frontend/assets/{index-BOB_zsjl.js → index-OwPvCmpW.js} +1 -1
- langflow/frontend/assets/{index-Dsps-jKu.js → index-Tw3Os-DN.js} +1 -1
- langflow/frontend/assets/{index-CFDvOtKC.js → index-X0guhYF8.js} +1 -1
- langflow/frontend/assets/{index-BX5D-USa.js → index-dJWNxIRH.js} +1 -1
- langflow/frontend/assets/{index-BRYjyhAd.js → index-dcJ8-agu.js} +1 -1
- langflow/frontend/assets/{index-Ui4xUImO.js → index-eo2mAtL-.js} +1 -1
- langflow/frontend/assets/{index-CxvP91st.js → index-hG24k5xJ.js} +1 -1
- langflow/frontend/assets/{index-CVQmT7ZL.js → index-h_aSZHf3.js} +1 -1
- langflow/frontend/assets/{index-BIXaW2aY.js → index-hbndqB9B.js} +1 -1
- langflow/frontend/assets/{index-DIkNW9Cd.js → index-iJngutFo.js} +1 -1
- langflow/frontend/assets/{index-BWmPX4iQ.js → index-lTpteg8t.js} +1 -1
- langflow/frontend/assets/{index-xuIrH2Dq.js → index-lZX9AvZW.js} +1 -1
- langflow/frontend/assets/{index-yCHsaqs8.js → index-m8QA6VNM.js} +1 -1
- langflow/frontend/assets/{index-BkPYpfgw.js → index-o0D2S7xW.js} +1 -1
- langflow/frontend/assets/{index-DpClkXIV.js → index-ovFJ_0J6.js} +1 -1
- langflow/frontend/assets/{index-CmplyEaa.js → index-pYJJOcma.js} +1 -1
- langflow/frontend/assets/{index-CJo_cyWW.js → index-sI75DsdM.js} +1 -1
- langflow/frontend/assets/{index-nVwHLjuV.js → index-xvFOmxx4.js} +1 -1
- langflow/frontend/assets/{index-LbYjHKkn.js → index-z3SRY-mX.js} +1 -1
- langflow/frontend/assets/lazyIconImports-D97HEZkE.js +2 -0
- langflow/frontend/assets/{use-post-add-user-BrBYH9eR.js → use-post-add-user-C0MdTpQ5.js} +1 -1
- langflow/frontend/index.html +2 -2
- langflow/graph/edge/base.py +2 -3
- langflow/graph/graph/base.py +15 -13
- langflow/graph/graph/constants.py +3 -0
- langflow/graph/utils.py +6 -6
- langflow/graph/vertex/base.py +4 -5
- langflow/graph/vertex/param_handler.py +1 -1
- langflow/graph/vertex/vertex_types.py +2 -2
- langflow/helpers/flow.py +1 -1
- langflow/initial_setup/setup.py +32 -30
- langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +26 -0
- langflow/initial_setup/starter_projects/Basic Prompting.json +26 -0
- langflow/initial_setup/starter_projects/Blog Writer.json +58 -2
- langflow/initial_setup/starter_projects/Custom Component Generator.json +37 -2
- langflow/initial_setup/starter_projects/Document Q&A.json +27 -1
- langflow/initial_setup/starter_projects/Financial Report Parser.json +43 -0
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +83 -1
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +43 -0
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +51 -3
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +40 -1
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +73 -2
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +63 -0
- langflow/initial_setup/starter_projects/Market Research.json +59 -3
- langflow/initial_setup/starter_projects/Meeting Summary.json +101 -6
- langflow/initial_setup/starter_projects/Memory Chatbot.json +37 -2
- langflow/initial_setup/starter_projects/News Aggregator.json +63 -3
- langflow/initial_setup/starter_projects/Nvidia Remix.json +69 -4
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +48 -1
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +44 -1
- langflow/initial_setup/starter_projects/Price Deal Finder.json +57 -5
- langflow/initial_setup/starter_projects/Research Agent.json +42 -3
- langflow/initial_setup/starter_projects/Research Translation Loop.json +66 -0
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +17 -0
- langflow/initial_setup/starter_projects/SaaS Pricing.json +27 -1
- langflow/initial_setup/starter_projects/Search agent.json +40 -1
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +76 -7
- langflow/initial_setup/starter_projects/Simple Agent.json +59 -3
- langflow/initial_setup/starter_projects/Social Media Agent.json +77 -1
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +35 -1
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +51 -3
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +80 -0
- langflow/initial_setup/starter_projects/Vector Store RAG.json +110 -3
- langflow/initial_setup/starter_projects/Youtube Analysis.json +84 -3
- langflow/initial_setup/starter_projects/vector_store_rag.py +1 -1
- langflow/interface/components.py +23 -22
- langflow/interface/initialize/loading.py +5 -5
- langflow/interface/run.py +1 -1
- langflow/interface/utils.py +1 -1
- langflow/io/__init__.py +0 -1
- langflow/langflow_launcher.py +1 -1
- langflow/load/load.py +2 -7
- langflow/logging/__init__.py +0 -1
- langflow/logging/logger.py +191 -115
- langflow/logging/setup.py +1 -1
- langflow/main.py +37 -52
- langflow/memory.py +7 -7
- langflow/middleware.py +1 -1
- langflow/processing/process.py +6 -3
- langflow/schema/artifact.py +2 -2
- langflow/schema/data.py +10 -2
- langflow/schema/dataframe.py +1 -1
- langflow/schema/message.py +1 -1
- langflow/serialization/serialization.py +1 -1
- langflow/services/auth/mcp_encryption.py +104 -0
- langflow/services/auth/utils.py +2 -2
- langflow/services/cache/disk.py +1 -1
- langflow/services/cache/service.py +3 -3
- langflow/services/database/models/flow/model.py +2 -7
- langflow/services/database/models/transactions/crud.py +2 -2
- langflow/services/database/models/user/crud.py +2 -2
- langflow/services/database/service.py +8 -8
- langflow/services/database/utils.py +6 -5
- langflow/services/deps.py +2 -3
- langflow/services/factory.py +1 -1
- langflow/services/flow/flow_runner.py +7 -12
- langflow/services/job_queue/service.py +16 -15
- langflow/services/manager.py +3 -4
- langflow/services/settings/auth.py +1 -1
- langflow/services/settings/base.py +3 -8
- langflow/services/settings/feature_flags.py +1 -1
- langflow/services/settings/manager.py +1 -1
- langflow/services/settings/utils.py +1 -1
- langflow/services/socket/__init__.py +0 -1
- langflow/services/socket/service.py +3 -3
- langflow/services/socket/utils.py +4 -4
- langflow/services/state/service.py +1 -2
- langflow/services/storage/factory.py +1 -1
- langflow/services/storage/local.py +9 -8
- langflow/services/storage/s3.py +11 -10
- langflow/services/store/service.py +3 -3
- langflow/services/store/utils.py +3 -2
- langflow/services/task/temp_flow_cleanup.py +7 -7
- langflow/services/telemetry/service.py +10 -10
- langflow/services/tracing/arize_phoenix.py +2 -2
- langflow/services/tracing/langfuse.py +1 -1
- langflow/services/tracing/langsmith.py +1 -1
- langflow/services/tracing/langwatch.py +1 -1
- langflow/services/tracing/opik.py +1 -1
- langflow/services/tracing/service.py +25 -6
- langflow/services/tracing/traceloop.py +245 -0
- langflow/services/utils.py +7 -7
- langflow/services/variable/kubernetes.py +3 -3
- langflow/services/variable/kubernetes_secrets.py +2 -1
- langflow/services/variable/service.py +5 -5
- langflow/utils/component_utils.py +9 -6
- langflow/utils/util.py +5 -5
- langflow/utils/validate.py +3 -3
- langflow/utils/voice_utils.py +2 -2
- {langflow_base_nightly-0.5.0.dev37.dist-info → langflow_base_nightly-0.5.0.dev39.dist-info}/METADATA +2 -1
- {langflow_base_nightly-0.5.0.dev37.dist-info → langflow_base_nightly-0.5.0.dev39.dist-info}/RECORD +393 -374
- langflow/components/vectorstores/redis.py +0 -89
- langflow/frontend/assets/index-C26RqKWL.js +0 -1
- langflow/frontend/assets/index-CqS7zir1.css +0 -1
- langflow/frontend/assets/lazyIconImports-t6wEndt1.js +0 -2
- /langflow/components/{vectorstores → FAISS}/faiss.py +0 -0
- /langflow/components/{vectorstores → cassandra}/cassandra.py +0 -0
- /langflow/components/{datastax/cassandra.py → cassandra/cassandra_chat.py} +0 -0
- /langflow/components/{vectorstores → cassandra}/cassandra_graph.py +0 -0
- /langflow/components/{vectorstores → chroma}/chroma.py +0 -0
- /langflow/components/{vectorstores → clickhouse}/clickhouse.py +0 -0
- /langflow/components/{vectorstores → couchbase}/couchbase.py +0 -0
- /langflow/components/{vectorstores → datastax}/astradb.py +0 -0
- /langflow/components/{vectorstores → datastax}/astradb_graph.py +0 -0
- /langflow/components/{vectorstores → datastax}/graph_rag.py +0 -0
- /langflow/components/{vectorstores → datastax}/hcd.py +0 -0
- /langflow/components/{vectorstores → elastic}/elasticsearch.py +0 -0
- /langflow/components/{vectorstores → elastic}/opensearch.py +0 -0
- /langflow/components/{vectorstores → milvus}/milvus.py +0 -0
- /langflow/components/{vectorstores → mongodb}/mongodb_atlas.py +0 -0
- /langflow/components/{vectorstores → pgvector}/pgvector.py +0 -0
- /langflow/components/{vectorstores → pinecone}/pinecone.py +0 -0
- /langflow/components/{vectorstores → qdrant}/qdrant.py +0 -0
- /langflow/components/{vectorstores → supabase}/supabase.py +0 -0
- /langflow/components/{vectorstores → upstash}/upstash.py +0 -0
- /langflow/components/{vectorstores → vectara}/vectara.py +0 -0
- /langflow/components/{vectorstores → vectara}/vectara_rag.py +0 -0
- /langflow/components/{vectorstores → weaviate}/weaviate.py +0 -0
- {langflow_base_nightly-0.5.0.dev37.dist-info → langflow_base_nightly-0.5.0.dev39.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.0.dev37.dist-info → langflow_base_nightly-0.5.0.dev39.dist-info}/entry_points.txt +0 -0
langflow/interface/components.py
CHANGED
|
@@ -7,9 +7,8 @@ import pkgutil
|
|
|
7
7
|
from pathlib import Path
|
|
8
8
|
from typing import TYPE_CHECKING, Any
|
|
9
9
|
|
|
10
|
-
from loguru import logger
|
|
11
|
-
|
|
12
10
|
from langflow.custom.utils import abuild_custom_components, create_component_template
|
|
11
|
+
from langflow.logging.logger import logger
|
|
13
12
|
from langflow.services.settings.base import BASE_COMPONENTS_PATH
|
|
14
13
|
|
|
15
14
|
if TYPE_CHECKING:
|
|
@@ -49,7 +48,7 @@ async def import_langflow_components():
|
|
|
49
48
|
try:
|
|
50
49
|
import langflow.components as components_pkg
|
|
51
50
|
except ImportError as e:
|
|
52
|
-
logger.
|
|
51
|
+
await logger.aerror(f"Failed to import langflow.components package: {e}", exc_info=True)
|
|
53
52
|
return {"components": modules_dict}
|
|
54
53
|
|
|
55
54
|
# Collect all module names to process
|
|
@@ -69,13 +68,13 @@ async def import_langflow_components():
|
|
|
69
68
|
try:
|
|
70
69
|
module_results = await asyncio.gather(*tasks, return_exceptions=True)
|
|
71
70
|
except Exception as e: # noqa: BLE001
|
|
72
|
-
logger.
|
|
71
|
+
await logger.aerror(f"Error during parallel module processing: {e}", exc_info=True)
|
|
73
72
|
return {"components": modules_dict}
|
|
74
73
|
|
|
75
74
|
# Merge results from all modules
|
|
76
75
|
for result in module_results:
|
|
77
76
|
if isinstance(result, Exception):
|
|
78
|
-
logger.
|
|
77
|
+
await logger.awarning(f"Module processing failed: {result}")
|
|
79
78
|
continue
|
|
80
79
|
|
|
81
80
|
if result and isinstance(result, tuple) and len(result) == EXPECTED_RESULT_LENGTH:
|
|
@@ -165,7 +164,7 @@ async def _determine_loading_strategy(settings_service: SettingsService) -> dict
|
|
|
165
164
|
component_cache.all_types_dict = {}
|
|
166
165
|
if settings_service.settings.lazy_load_components:
|
|
167
166
|
# Partial loading mode - just load component metadata
|
|
168
|
-
logger.
|
|
167
|
+
await logger.adebug("Using partial component loading")
|
|
169
168
|
component_cache.all_types_dict = await aget_component_metadata(settings_service.settings.components_path)
|
|
170
169
|
elif settings_service.settings.components_path:
|
|
171
170
|
# Traditional full loading - filter out base components path to only load custom components
|
|
@@ -177,7 +176,9 @@ async def _determine_loading_strategy(settings_service: SettingsService) -> dict
|
|
|
177
176
|
components_dict = component_cache.all_types_dict or {}
|
|
178
177
|
component_count = sum(len(comps) for comps in components_dict.get("components", {}).values())
|
|
179
178
|
if component_count > 0 and settings_service.settings.components_path:
|
|
180
|
-
logger.
|
|
179
|
+
await logger.adebug(
|
|
180
|
+
f"Built {component_count} custom components from {settings_service.settings.components_path}"
|
|
181
|
+
)
|
|
181
182
|
|
|
182
183
|
return component_cache.all_types_dict
|
|
183
184
|
|
|
@@ -193,7 +194,7 @@ async def get_and_cache_all_types_dict(
|
|
|
193
194
|
resulting dictionary.
|
|
194
195
|
"""
|
|
195
196
|
if component_cache.all_types_dict is None:
|
|
196
|
-
logger.
|
|
197
|
+
await logger.adebug("Building components cache")
|
|
197
198
|
|
|
198
199
|
langflow_components = await import_langflow_components()
|
|
199
200
|
custom_components_dict = await _determine_loading_strategy(settings_service)
|
|
@@ -204,7 +205,7 @@ async def get_and_cache_all_types_dict(
|
|
|
204
205
|
**custom_components_dict,
|
|
205
206
|
}
|
|
206
207
|
component_count = sum(len(comps) for comps in component_cache.all_types_dict.values())
|
|
207
|
-
logger.
|
|
208
|
+
await logger.adebug(f"Loaded {component_count} components")
|
|
208
209
|
return component_cache.all_types_dict
|
|
209
210
|
|
|
210
211
|
|
|
@@ -235,7 +236,7 @@ async def aget_component_metadata(components_paths: list[str]):
|
|
|
235
236
|
|
|
236
237
|
# Get all component types
|
|
237
238
|
component_types = await discover_component_types(components_paths)
|
|
238
|
-
logger.
|
|
239
|
+
await logger.adebug(f"Discovered {len(component_types)} component types: {', '.join(component_types)}")
|
|
239
240
|
|
|
240
241
|
# For each component type directory
|
|
241
242
|
for component_type in component_types:
|
|
@@ -243,7 +244,7 @@ async def aget_component_metadata(components_paths: list[str]):
|
|
|
243
244
|
|
|
244
245
|
# Get list of components in this type
|
|
245
246
|
component_names = await discover_component_names(component_type, components_paths)
|
|
246
|
-
logger.
|
|
247
|
+
await logger.adebug(f"Found {len(component_names)} components for type {component_type}")
|
|
247
248
|
|
|
248
249
|
# Create stub entries with just basic metadata
|
|
249
250
|
for name in component_names:
|
|
@@ -365,7 +366,7 @@ async def ensure_component_loaded(component_type: str, component_name: str, sett
|
|
|
365
366
|
|
|
366
367
|
# Check if component is marked for lazy loading
|
|
367
368
|
if component_cache.all_types_dict["components"][component_type][component_name].get("lazy_loaded", False):
|
|
368
|
-
logger.
|
|
369
|
+
await logger.adebug(f"Fully loading component {component_type}:{component_name}")
|
|
369
370
|
|
|
370
371
|
# Load just this specific component
|
|
371
372
|
full_component = await load_single_component(
|
|
@@ -381,9 +382,9 @@ async def ensure_component_loaded(component_type: str, component_name: str, sett
|
|
|
381
382
|
|
|
382
383
|
# Mark as fully loaded
|
|
383
384
|
component_cache.fully_loaded_components[component_key] = True
|
|
384
|
-
logger.
|
|
385
|
+
await logger.adebug(f"Component {component_type}:{component_name} fully loaded")
|
|
385
386
|
else:
|
|
386
|
-
logger.
|
|
387
|
+
await logger.awarning(f"Failed to fully load component {component_type}:{component_name}")
|
|
387
388
|
|
|
388
389
|
|
|
389
390
|
async def load_single_component(component_type: str, component_name: str, components_paths: list[str]):
|
|
@@ -396,32 +397,32 @@ async def load_single_component(component_type: str, component_name: str, compon
|
|
|
396
397
|
return await get_single_component_dict(component_type, component_name, components_paths)
|
|
397
398
|
except (ImportError, ModuleNotFoundError) as e:
|
|
398
399
|
# Handle issues with importing the component or its dependencies
|
|
399
|
-
logger.
|
|
400
|
+
await logger.aerror(f"Import error loading component {component_type}:{component_name}: {e!s}")
|
|
400
401
|
return None
|
|
401
402
|
except (AttributeError, TypeError) as e:
|
|
402
403
|
# Handle issues with component structure or type errors
|
|
403
|
-
logger.
|
|
404
|
+
await logger.aerror(f"Component structure error for {component_type}:{component_name}: {e!s}")
|
|
404
405
|
return None
|
|
405
406
|
except FileNotFoundError as e:
|
|
406
407
|
# Handle missing files
|
|
407
|
-
logger.
|
|
408
|
+
await logger.aerror(f"File not found for component {component_type}:{component_name}: {e!s}")
|
|
408
409
|
return None
|
|
409
410
|
except ValueError as e:
|
|
410
411
|
# Handle invalid values or configurations
|
|
411
|
-
logger.
|
|
412
|
+
await logger.aerror(f"Invalid configuration for component {component_type}:{component_name}: {e!s}")
|
|
412
413
|
return None
|
|
413
414
|
except (KeyError, IndexError) as e:
|
|
414
415
|
# Handle data structure access errors
|
|
415
|
-
logger.
|
|
416
|
+
await logger.aerror(f"Data structure error for component {component_type}:{component_name}: {e!s}")
|
|
416
417
|
return None
|
|
417
418
|
except RuntimeError as e:
|
|
418
419
|
# Handle runtime errors
|
|
419
|
-
logger.
|
|
420
|
-
logger.
|
|
420
|
+
await logger.aerror(f"Runtime error loading component {component_type}:{component_name}: {e!s}")
|
|
421
|
+
await logger.adebug("Full traceback for runtime error", exc_info=True)
|
|
421
422
|
return None
|
|
422
423
|
except OSError as e:
|
|
423
424
|
# Handle OS-related errors (file system, permissions, etc.)
|
|
424
|
-
logger.
|
|
425
|
+
await logger.aerror(f"OS error loading component {component_type}:{component_name}: {e!s}")
|
|
425
426
|
return None
|
|
426
427
|
|
|
427
428
|
|
|
@@ -6,10 +6,10 @@ import warnings
|
|
|
6
6
|
from typing import TYPE_CHECKING, Any
|
|
7
7
|
|
|
8
8
|
import orjson
|
|
9
|
-
from loguru import logger
|
|
10
9
|
from pydantic import PydanticDeprecatedSince20
|
|
11
10
|
|
|
12
11
|
from langflow.custom.eval import eval_custom_component_code
|
|
12
|
+
from langflow.logging.logger import logger
|
|
13
13
|
from langflow.schema.artifact import get_artifact_type, post_process_raw
|
|
14
14
|
from langflow.schema.data import Data
|
|
15
15
|
from langflow.services.deps import get_tracing_service, session_scope
|
|
@@ -126,19 +126,19 @@ async def update_params_with_load_from_db_fields(
|
|
|
126
126
|
raise
|
|
127
127
|
if "variable not found." in str(e) and not fallback_to_env_vars:
|
|
128
128
|
raise
|
|
129
|
-
logger.
|
|
129
|
+
await logger.adebug(str(e))
|
|
130
130
|
key = None
|
|
131
131
|
|
|
132
132
|
if fallback_to_env_vars and key is None:
|
|
133
133
|
key = os.getenv(params[field])
|
|
134
134
|
if key:
|
|
135
|
-
logger.
|
|
135
|
+
await logger.ainfo(f"Using environment variable {params[field]} for {field}")
|
|
136
136
|
else:
|
|
137
|
-
logger.
|
|
137
|
+
await logger.aerror(f"Environment variable {params[field]} is not set.")
|
|
138
138
|
|
|
139
139
|
params[field] = key if key is not None else None
|
|
140
140
|
if key is None:
|
|
141
|
-
logger.
|
|
141
|
+
await logger.awarning(f"Could not get value for {field}. Setting it to None.")
|
|
142
142
|
|
|
143
143
|
return params
|
|
144
144
|
|
langflow/interface/run.py
CHANGED
langflow/interface/utils.py
CHANGED
|
@@ -7,9 +7,9 @@ from string import Formatter
|
|
|
7
7
|
|
|
8
8
|
import yaml
|
|
9
9
|
from langchain_core.language_models import BaseLanguageModel
|
|
10
|
-
from loguru import logger
|
|
11
10
|
from PIL.Image import Image
|
|
12
11
|
|
|
12
|
+
from langflow.logging.logger import logger
|
|
13
13
|
from langflow.services.chat.config import ChatConfig
|
|
14
14
|
from langflow.services.deps import get_settings_service
|
|
15
15
|
|
langflow/io/__init__.py
CHANGED
langflow/langflow_launcher.py
CHANGED
|
@@ -44,7 +44,7 @@ def _launch_with_exec():
|
|
|
44
44
|
os.environ["no_proxy"] = "*"
|
|
45
45
|
|
|
46
46
|
try:
|
|
47
|
-
os.execv(sys.executable, [sys.executable, "-m", "langflow.__main__"
|
|
47
|
+
os.execv(sys.executable, [sys.executable, "-m", "langflow.__main__", *sys.argv[1:]]) # noqa: S606
|
|
48
48
|
except OSError as e:
|
|
49
49
|
# If exec fails, we need to exit since the process replacement failed
|
|
50
50
|
typer.echo(f"Failed to exec langflow: {e}", file=sys.stderr)
|
langflow/load/load.py
CHANGED
|
@@ -4,7 +4,6 @@ from pathlib import Path
|
|
|
4
4
|
|
|
5
5
|
from aiofile import async_open
|
|
6
6
|
from dotenv import dotenv_values
|
|
7
|
-
from loguru import logger
|
|
8
7
|
|
|
9
8
|
from langflow.graph.graph.base import Graph
|
|
10
9
|
from langflow.graph.schema import RunOutputs
|
|
@@ -49,9 +48,7 @@ async def aload_flow_from_json(
|
|
|
49
48
|
"""
|
|
50
49
|
# If input is a file path, load JSON from the file
|
|
51
50
|
log_file_path = Path(log_file) if log_file else None
|
|
52
|
-
configure(
|
|
53
|
-
log_level=log_level, log_file=log_file_path, disable=disable_logs, async_file=True, log_rotation=log_rotation
|
|
54
|
-
)
|
|
51
|
+
configure(log_level=log_level, log_file=log_file_path, disable=disable_logs, log_rotation=log_rotation)
|
|
55
52
|
|
|
56
53
|
# override env variables with .env file
|
|
57
54
|
if env_file and tweaks is not None:
|
|
@@ -179,7 +176,7 @@ async def arun_flow_from_json(
|
|
|
179
176
|
cache=cache,
|
|
180
177
|
disable_logs=disable_logs,
|
|
181
178
|
)
|
|
182
|
-
|
|
179
|
+
return await run_graph(
|
|
183
180
|
graph=graph,
|
|
184
181
|
session_id=session_id,
|
|
185
182
|
input_value=input_value,
|
|
@@ -188,8 +185,6 @@ async def arun_flow_from_json(
|
|
|
188
185
|
output_component=output_component,
|
|
189
186
|
fallback_to_env_vars=fallback_to_env_vars,
|
|
190
187
|
)
|
|
191
|
-
await logger.complete()
|
|
192
|
-
return result
|
|
193
188
|
|
|
194
189
|
|
|
195
190
|
def run_flow_from_json(
|
langflow/logging/__init__.py
CHANGED