langflow-base-nightly 0.5.0.dev36__py3-none-any.whl → 0.5.0.dev38__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/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 +19 -12
- langflow/api/v1/mcp.py +12 -12
- langflow/api/v1/mcp_projects.py +45 -81
- langflow/api/v1/mcp_utils.py +8 -8
- langflow/api/v1/schemas.py +1 -5
- 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 +5 -3
- 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/data/kb_utils.py +33 -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/models/model.py +3 -3
- 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/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 +3 -3
- langflow/components/agents/mcp_component.py +54 -69
- 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/data/file.py +575 -55
- langflow/components/data/kb_ingest.py +116 -43
- langflow/components/data/kb_retrieval.py +24 -26
- langflow/components/data/url.py +1 -1
- 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/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/nvidia/nvidia.py +3 -3
- langflow/components/olivya/olivya.py +7 -7
- langflow/components/ollama/ollama.py +8 -6
- 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/processing/save_file.py +6 -32
- langflow/components/prototypes/python_function.py +2 -3
- langflow/components/serpapi/serp.py +1 -1
- 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/vectorstores/astradb.py +30 -19
- langflow/components/vectorstores/local_db.py +1 -1
- 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/directory_reader/directory_reader.py +7 -7
- langflow/custom/directory_reader/utils.py +1 -2
- langflow/custom/utils.py +30 -30
- langflow/events/event_manager.py +1 -1
- langflow/frontend/assets/{SlackIcon-B260Qg_R.js → SlackIcon-BhW6H3JR.js} +1 -1
- langflow/frontend/assets/{Wikipedia-BB2mbgyd.js → Wikipedia-Dx5jbiy3.js} +1 -1
- langflow/frontend/assets/{Wolfram-DytXC9hF.js → Wolfram-CIyonzwo.js} +1 -1
- langflow/frontend/assets/{index-DPX6X_bw.js → index-0XQqYgdG.js} +1 -1
- langflow/frontend/assets/{index-DtJyCbzF.js → index-1Q3VBqKn.js} +1 -1
- langflow/frontend/assets/{index-DztLFiip.js → index-35sspuLu.js} +1 -1
- langflow/frontend/assets/{index-BeNby7qF.js → index-7hzXChQz.js} +1 -1
- langflow/frontend/assets/{index-BOEf7-ty.js → index-8cuhogZP.js} +1 -1
- langflow/frontend/assets/{index-D0s9f6Re.js → index-B0m53xKd.js} +1 -1
- langflow/frontend/assets/{index-DpJiH-Rk.js → index-B1XqWJhG.js} +1 -1
- langflow/frontend/assets/{index-DuAeoC-H.js → index-B3KCdQ91.js} +1 -1
- langflow/frontend/assets/{index-Bxml6wXu.js → index-B7uEuOPK.js} +1 -1
- langflow/frontend/assets/{index-CDFLVFB4.js → index-B8UR8v-Q.js} +1 -1
- langflow/frontend/assets/{index-ci4XHjbJ.js → index-BD7Io1hL.js} +6 -6
- langflow/frontend/assets/{index-DasrI03Y.js → index-BDQrd7Tj.js} +1 -1
- langflow/frontend/assets/{index-CkQ-bJ4G.js → index-BDuk0d7P.js} +1 -1
- langflow/frontend/assets/{index-C_1RBTul.js → index-BFQ8KFK0.js} +1 -1
- langflow/frontend/assets/{index-DqSH4x-R.js → index-BFf0HTFI.js} +1 -1
- langflow/frontend/assets/{index-BXMhmvTj.js → index-BHhnpSkW.js} +1 -1
- langflow/frontend/assets/{index-Uq2ij_SS.js → index-BKKrUElc.js} +1 -1
- langflow/frontend/assets/{index-3TJWUdmx.js → index-BKeZt2hQ.js} +1 -1
- langflow/frontend/assets/{index-DHlEwAxb.js → index-BKlQbl-6.js} +1 -1
- langflow/frontend/assets/{index-Bisa4IQF.js → index-BLYw9MK2.js} +1 -1
- langflow/frontend/assets/{index-GODbXlHC.js → index-BLsVo9iW.js} +1 -1
- langflow/frontend/assets/{index-CHFO5O4g.js → index-BNQIbda3.js} +1 -1
- langflow/frontend/assets/{index-3uOAA_XX.js → index-BPR2mEFC.js} +1 -1
- langflow/frontend/assets/{index-3qMh9x6K.js → index-BPfdqCc_.js} +1 -1
- langflow/frontend/assets/{index-rcdQpNcU.js → index-BQrVDjR1.js} +1 -1
- langflow/frontend/assets/{index-4eRtaV45.js → index-BRmSeoWR.js} +1 -1
- langflow/frontend/assets/{index-Ct9_T9ox.js → index-BUse-kxM.js} +1 -1
- langflow/frontend/assets/{index-BdYgKk1d.js → index-BVFaF7HW.js} +1 -1
- langflow/frontend/assets/{index-CWWo2zOA.js → index-BWgIWfv2.js} +1 -1
- langflow/frontend/assets/{index-Du9aJK7m.js → index-BWt5xGeA.js} +1 -1
- langflow/frontend/assets/{index-Baka5dKE.js → index-BYhcGLTV.js} +1 -1
- langflow/frontend/assets/{index-BWq9GTzt.js → index-BYjw7Gk3.js} +1 -1
- langflow/frontend/assets/{index-r1LZg-PY.js → index-BZFljdMa.js} +1 -1
- langflow/frontend/assets/index-BcAgItH4.js +1 -0
- langflow/frontend/assets/{index-B8TlNgn-.js → index-Bct1s6__.js} +1 -1
- langflow/frontend/assets/{index-DZzbmg3J.js → index-Bhv79Zso.js} +1 -1
- langflow/frontend/assets/{index-CqDUqHfd.js → index-Bj3lSwvZ.js} +1 -1
- langflow/frontend/assets/{index-dkS0ek2S.js → index-Bk4mTwnI.js} +1 -1
- langflow/frontend/assets/{index-tOy_uloT.js → index-BmIx1cws.js} +1 -1
- langflow/frontend/assets/{index-BVtf6m9S.js → index-BmYJJ5YS.js} +1 -1
- langflow/frontend/assets/{index-mBjJYD9q.js → index-BnAFhkSN.js} +1 -1
- langflow/frontend/assets/{index-Ba3RTMXI.js → index-Bo-ww0Bb.js} +1 -1
- langflow/frontend/assets/{index-BsBWP-Dh.js → index-BpmqDOeZ.js} +1 -1
- langflow/frontend/assets/{index-BqUeOc7Y.js → index-BrVhdPZb.js} +1 -1
- langflow/frontend/assets/{index-DWkMJnbd.js → index-BvGQfVBD.js} +1 -1
- langflow/frontend/assets/{index-DdzVmJHE.js → index-Bwi4flFg.js} +1 -1
- langflow/frontend/assets/{index-Ccb5B8zG.js → index-BzoRPtTY.js} +1 -1
- langflow/frontend/assets/{index-Ym6gz0T6.js → index-C--IDAyc.js} +1 -1
- langflow/frontend/assets/{index-CvQ0w8Pj.js → index-C0E3_MIK.js} +1 -1
- langflow/frontend/assets/{index-DxIs8VSp.js → index-C27Jj_26.js} +1 -1
- langflow/frontend/assets/{index-BxWXWRmZ.js → index-C2eQmQsn.js} +1 -1
- langflow/frontend/assets/{index-B536IPXH.js → index-C8K0r39B.js} +1 -1
- langflow/frontend/assets/{index-BEDxAk3N.js → index-CEJNWPhA.js} +1 -1
- langflow/frontend/assets/{index-G_U_kPAd.js → index-CFNTYfFK.js} +1 -1
- langflow/frontend/assets/{index-CMGZGIx_.js → index-CMHpjHZl.js} +1 -1
- langflow/frontend/assets/{index-C76aBV_h.js → index-CSu8KHOi.js} +1 -1
- langflow/frontend/assets/{index-B-c82Fnu.js → index-CUKmGsI6.js} +1 -1
- langflow/frontend/assets/{index-DX7XsAcx.js → index-CWYiSeWV.js} +1 -1
- langflow/frontend/assets/{index-COL0eiWI.js → index-CY7_TBTC.js} +1 -1
- langflow/frontend/assets/{index-BlBl2tvQ.js → index-CbnWRlYY.js} +1 -1
- langflow/frontend/assets/{index-BQB-iDYl.js → index-CfPBgkqg.js} +1 -1
- langflow/frontend/assets/{index-DWr_zPkx.js → index-Cg53lrYh.js} +1 -1
- langflow/frontend/assets/{index-BcgB3rXH.js → index-CgU7KF4I.js} +1 -1
- langflow/frontend/assets/{index-CkSzjCqM.js → index-CgwykVGh.js} +1 -1
- langflow/frontend/assets/{index-BbsND1Qg.js → index-Ch5r0oW6.js} +1 -1
- langflow/frontend/assets/{index-AY5Dm2mG.js → index-CjsommIr.js} +1 -1
- langflow/frontend/assets/{index-BtJ2o21k.js → index-CkK25zZO.js} +1 -1
- langflow/frontend/assets/{index-BKvKC-12.js → index-CkjwSTSM.js} +1 -1
- langflow/frontend/assets/{index-BVHvIhT5.js → index-CmSFKgiD.js} +1 -1
- langflow/frontend/assets/{index-D-zkHcob.js → index-Cr5v2ave.js} +1 -1
- langflow/frontend/assets/{index-js8ceOaP.js → index-CrAF-31Y.js} +1 -1
- langflow/frontend/assets/{index-BNbWMmAV.js → index-CsLQiWNf.js} +1 -1
- langflow/frontend/assets/{index-VcXZzovW.js → index-CuCM7Wu7.js} +1 -1
- langflow/frontend/assets/{index-DzeIsaBm.js → index-Cxy9sEpy.js} +1 -1
- langflow/frontend/assets/{index-LrMzDsq9.js → index-CyP3py8K.js} +1 -1
- langflow/frontend/assets/{index-C8KD3LPb.js → index-CzHzeZuA.js} +1 -1
- langflow/frontend/assets/{index-DS1EgA10.js → index-D1oynC8a.js} +1 -1
- langflow/frontend/assets/{index-ByFXr9Iq.js → index-D4tjMhfY.js} +1 -1
- langflow/frontend/assets/{index-DyJDHm2D.js → index-D6CSIrp1.js} +1 -1
- langflow/frontend/assets/{index-DIqSyDVO.js → index-D9kwEzPB.js} +1 -1
- langflow/frontend/assets/{index-D5PeCofu.js → index-DDXsm8tz.js} +1 -1
- langflow/frontend/assets/{index-CJwYfDBz.js → index-DDhJVVel.js} +1 -1
- langflow/frontend/assets/{index-C7x9R_Yo.js → index-DH6o91_s.js} +1 -1
- langflow/frontend/assets/{index-DpQKtcXu.js → index-DHngW1k8.js} +1 -1
- langflow/frontend/assets/{index-VZnN0P6C.js → index-DIKUsGLF.js} +1 -1
- langflow/frontend/assets/{index-VHmUHUUU.js → index-DJESSNJi.js} +1 -1
- langflow/frontend/assets/{index-BdIWbCEL.js → index-DMCWDJOl.js} +1 -1
- langflow/frontend/assets/{index-DK8vNpXK.js → index-DOEvKC2X.js} +1 -1
- langflow/frontend/assets/{index-C7V5U9yH.js → index-DOQDkSoK.js} +1 -1
- langflow/frontend/assets/{index-D0HmkH0H.js → index-DXAfIEvs.js} +1 -1
- langflow/frontend/assets/{index-C9N80hP8.js → index-DZP_SaHb.js} +1 -1
- langflow/frontend/assets/{index-B2ggrBuR.js → index-DZxUIhWh.js} +1 -1
- langflow/frontend/assets/{index-DS9I4y48.js → index-Dda2u_yz.js} +1 -1
- langflow/frontend/assets/{index-BLROcaSz.js → index-Dg8N3NSO.js} +1 -1
- langflow/frontend/assets/{index-Dpz3oBf5.js → index-DkGhPNeA.js} +1 -1
- langflow/frontend/assets/{index-BnLT29qW.js → index-Dka_Rk4-.js} +1 -1
- langflow/frontend/assets/{index-B5ed-sAv.js → index-DljpLeCW.js} +1 -1
- langflow/frontend/assets/{index-Cx__T92e.js → index-DnVYJtVO.js} +1 -1
- langflow/frontend/assets/{index-hOkEW3JP.js → index-DqbzUcI5.js} +1 -1
- langflow/frontend/assets/{index-BxkZkBgQ.js → index-Dr6pVDPI.js} +1 -1
- langflow/frontend/assets/{index-BIkqesA-.js → index-DsoX2o1S.js} +1 -1
- langflow/frontend/assets/{index-Cpgkb0Q3.js → index-DwfHWnX7.js} +1 -1
- langflow/frontend/assets/{index-B9Mo3ndZ.js → index-Dx-Z87KT.js} +1 -1
- langflow/frontend/assets/{index-R7q8cAek.js → index-DyqITq51.js} +1 -1
- langflow/frontend/assets/{index-DKEXZFUO.js → index-DzIv3RyR.js} +1 -1
- langflow/frontend/assets/{index-BJrY2Fiu.js → index-G4ro0MjT.js} +1 -1
- langflow/frontend/assets/{index-IFGgPiye.js → index-H7J7w7fa.js} +1 -1
- langflow/frontend/assets/{index-lKEJpUsF.js → index-KWY77KfV.js} +1 -1
- langflow/frontend/assets/{index-DDNNv4C0.js → index-U9GWm1eH.js} +1 -1
- langflow/frontend/assets/{index-BRWNIt9F.js → index-Un9pWxnP.js} +1 -1
- langflow/frontend/assets/{index-BCK-ZyIh.js → index-Xi4TplbI.js} +1 -1
- langflow/frontend/assets/{index-BEKoRwsX.js → index-_cbGmjF4.js} +1 -1
- langflow/frontend/assets/{index-7xXgqu09.js → index-cEXY6V06.js} +1 -1
- langflow/frontend/assets/{index-D87Zw62M.js → index-dyXKnkMi.js} +1 -1
- langflow/frontend/assets/{index-CG7cp0nD.js → index-eUkS6iJM.js} +1 -1
- langflow/frontend/assets/{index-CoUlHbtg.js → index-ekfMOqrF.js} +1 -1
- langflow/frontend/assets/{index-DhzEUXfr.js → index-gdb7XMS8.js} +1 -1
- langflow/frontend/assets/{index-D9eflZfP.js → index-hZUcL0MZ.js} +1 -1
- langflow/frontend/assets/{index-CwIxqYlT.js → index-kkA-qHB_.js} +1 -1
- langflow/frontend/assets/{index-sS6XLk3j.js → index-mzl9ULw5.js} +1 -1
- langflow/frontend/assets/{index-BjENqyKe.js → index-oxHBZk2v.js} +1 -1
- langflow/frontend/assets/{index-BejHxU5W.js → index-p2kStSPe.js} +1 -1
- langflow/frontend/assets/{index-BOYTBrh9.js → index-paQEWYGT.js} +1 -1
- langflow/frontend/assets/{index-Cd5zuUUK.js → index-r_8gs4nL.js} +1 -1
- langflow/frontend/assets/{index-AlJ7td-D.js → index-uiKla4UR.js} +1 -1
- langflow/frontend/assets/{index-B8y58M9b.js → index-vJOO5U8M.js} +1 -1
- langflow/frontend/assets/{index-CF4dtI6S.js → index-w72fDjpG.js} +1 -1
- langflow/frontend/assets/{index-C2Xd7UkR.js → index-zV82kQ6k.js} +1 -1
- langflow/frontend/assets/lazyIconImports-DTNgvPE-.js +2 -0
- langflow/frontend/assets/{use-post-add-user-HN0rRnhv.js → use-post-add-user-CvtuazTg.js} +1 -1
- langflow/frontend/index.html +1 -1
- langflow/graph/edge/base.py +2 -3
- langflow/graph/graph/base.py +14 -12
- 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/Blog Writer.json +2 -2
- langflow/initial_setup/starter_projects/Custom Component Generator.json +2 -2
- langflow/initial_setup/starter_projects/Document Q&A.json +1 -1
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +2 -2
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +3 -3
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +1 -1
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +4 -4
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +2 -2
- langflow/initial_setup/starter_projects/Market Research.json +3 -3
- langflow/initial_setup/starter_projects/Meeting Summary.json +6 -6
- langflow/initial_setup/starter_projects/Memory Chatbot.json +2 -2
- langflow/initial_setup/starter_projects/News Aggregator.json +5 -22
- langflow/initial_setup/starter_projects/Nvidia Remix.json +3 -20
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +1 -1
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +1 -1
- langflow/initial_setup/starter_projects/Price Deal Finder.json +5 -5
- langflow/initial_setup/starter_projects/Research Agent.json +3 -3
- langflow/initial_setup/starter_projects/SaaS Pricing.json +1 -1
- langflow/initial_setup/starter_projects/Search agent.json +1 -1
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +7 -7
- langflow/initial_setup/starter_projects/Simple Agent.json +3 -3
- langflow/initial_setup/starter_projects/Social Media Agent.json +1 -1
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +1 -1
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +3 -3
- langflow/initial_setup/starter_projects/Vector Store RAG.json +5 -5
- langflow/initial_setup/starter_projects/Youtube Analysis.json +3 -3
- 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 +4 -4
- 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/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/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.dev36.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/METADATA +2 -1
- {langflow_base_nightly-0.5.0.dev36.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/RECORD +342 -340
- langflow/frontend/assets/lazyIconImports-Bh1TFfvH.js +0 -2
- {langflow_base_nightly-0.5.0.dev36.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.0.dev36.dist-info → langflow_base_nightly-0.5.0.dev38.dist-info}/entry_points.txt +0 -0
|
@@ -3,10 +3,10 @@ from typing import Any
|
|
|
3
3
|
|
|
4
4
|
from fastapi import HTTPException
|
|
5
5
|
from langchain_core.prompts import PromptTemplate
|
|
6
|
-
from loguru import logger
|
|
7
6
|
|
|
8
7
|
from langflow.inputs.inputs import DefaultPromptField
|
|
9
8
|
from langflow.interface.utils import extract_input_variables_from_prompt
|
|
9
|
+
from langflow.logging.logger import logger
|
|
10
10
|
|
|
11
11
|
_INVALID_CHARACTERS = {
|
|
12
12
|
" ",
|
langflow/base/tools/flow_tool.py
CHANGED
|
@@ -3,13 +3,13 @@ from __future__ import annotations
|
|
|
3
3
|
from typing import TYPE_CHECKING, Any
|
|
4
4
|
|
|
5
5
|
from langchain_core.tools import BaseTool, ToolException
|
|
6
|
-
from loguru import logger
|
|
7
6
|
from typing_extensions import override
|
|
8
7
|
|
|
9
8
|
from langflow.base.flow_processing.utils import build_data_from_result_data, format_flow_output_data
|
|
10
9
|
from langflow.graph.graph.base import Graph # cannot be a part of TYPE_CHECKING # noqa: TC001
|
|
11
10
|
from langflow.graph.vertex.base import Vertex # cannot be a part of TYPE_CHECKING # noqa: TC001
|
|
12
11
|
from langflow.helpers.flow import build_schema_from_inputs, get_arg_names, get_flow_inputs, run_flow
|
|
12
|
+
from langflow.logging.logger import logger
|
|
13
13
|
from langflow.utils.async_helpers import run_until_complete
|
|
14
14
|
|
|
15
15
|
if TYPE_CHECKING:
|
|
@@ -109,7 +109,7 @@ class FlowTool(BaseTool):
|
|
|
109
109
|
try:
|
|
110
110
|
run_id = self.graph.run_id if hasattr(self, "graph") and self.graph else None
|
|
111
111
|
except Exception: # noqa: BLE001
|
|
112
|
-
logger.
|
|
112
|
+
logger.warning("Failed to set run_id", exc_info=True)
|
|
113
113
|
run_id = None
|
|
114
114
|
run_outputs = await run_flow(
|
|
115
115
|
tweaks={key: {"input_value": value} for key, value in tweaks.items()},
|
langflow/base/tools/run_flow.py
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from abc import abstractmethod
|
|
2
2
|
from typing import TYPE_CHECKING
|
|
3
3
|
|
|
4
|
-
from loguru import logger
|
|
5
4
|
from typing_extensions import override
|
|
6
5
|
|
|
7
6
|
from langflow.custom.custom_component.component import Component, _get_component_toolkit
|
|
@@ -9,11 +8,8 @@ from langflow.field_typing import Tool
|
|
|
9
8
|
from langflow.graph.graph.base import Graph
|
|
10
9
|
from langflow.graph.vertex.base import Vertex
|
|
11
10
|
from langflow.helpers.flow import get_flow_inputs
|
|
12
|
-
from langflow.inputs.inputs import
|
|
13
|
-
|
|
14
|
-
InputTypes,
|
|
15
|
-
MessageInput,
|
|
16
|
-
)
|
|
11
|
+
from langflow.inputs.inputs import DropdownInput, InputTypes, MessageInput
|
|
12
|
+
from langflow.logging.logger import logger
|
|
17
13
|
from langflow.schema.data import Data
|
|
18
14
|
from langflow.schema.dataframe import DataFrame
|
|
19
15
|
from langflow.schema.dotdict import dotdict
|
|
@@ -4,13 +4,13 @@ from typing import Any
|
|
|
4
4
|
import requests
|
|
5
5
|
from bs4 import BeautifulSoup
|
|
6
6
|
from langchain.tools import StructuredTool
|
|
7
|
-
from loguru import logger
|
|
8
7
|
from markdown import markdown
|
|
9
8
|
from pydantic import BaseModel, Field
|
|
10
9
|
|
|
11
10
|
from langflow.base.langchain_utilities.model import LCToolComponent
|
|
12
11
|
from langflow.field_typing import Tool
|
|
13
12
|
from langflow.inputs.inputs import MultilineInput, SecretStrInput, StrInput
|
|
13
|
+
from langflow.logging.logger import logger
|
|
14
14
|
from langflow.schema.data import Data
|
|
15
15
|
|
|
16
16
|
MIN_ROWS_IN_TABLE = 3
|
|
@@ -84,7 +84,7 @@ class AddContentToPage(LCToolComponent):
|
|
|
84
84
|
error_message += f" Status code: {e.response.status_code}, Response: {e.response.text}"
|
|
85
85
|
return error_message
|
|
86
86
|
except Exception as e: # noqa: BLE001
|
|
87
|
-
logger.
|
|
87
|
+
logger.debug("Error adding content to Notion page", exc_info=True)
|
|
88
88
|
return f"Error: An unexpected error occurred while adding content to Notion page. {e}"
|
|
89
89
|
|
|
90
90
|
def process_node(self, node):
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import requests
|
|
2
2
|
from langchain.tools import StructuredTool
|
|
3
|
-
from loguru import logger
|
|
4
3
|
from pydantic import BaseModel, Field
|
|
5
4
|
|
|
6
5
|
from langflow.base.langchain_utilities.model import LCToolComponent
|
|
7
6
|
from langflow.field_typing import Tool
|
|
8
7
|
from langflow.inputs.inputs import SecretStrInput, StrInput
|
|
8
|
+
from langflow.logging.logger import logger
|
|
9
9
|
from langflow.schema.data import Data
|
|
10
10
|
|
|
11
11
|
|
|
@@ -64,5 +64,5 @@ class NotionDatabaseProperties(LCToolComponent):
|
|
|
64
64
|
except ValueError as e:
|
|
65
65
|
return f"Error parsing Notion API response: {e}"
|
|
66
66
|
except Exception as e: # noqa: BLE001
|
|
67
|
-
logger.
|
|
67
|
+
logger.debug("Error fetching Notion database properties", exc_info=True)
|
|
68
68
|
return f"An unexpected error occurred: {e}"
|
|
@@ -3,12 +3,12 @@ from typing import Any
|
|
|
3
3
|
|
|
4
4
|
import requests
|
|
5
5
|
from langchain.tools import StructuredTool
|
|
6
|
-
from loguru import logger
|
|
7
6
|
from pydantic import BaseModel, Field
|
|
8
7
|
|
|
9
8
|
from langflow.base.langchain_utilities.model import LCToolComponent
|
|
10
9
|
from langflow.field_typing import Tool
|
|
11
10
|
from langflow.inputs.inputs import MultilineInput, SecretStrInput, StrInput
|
|
11
|
+
from langflow.logging.logger import logger
|
|
12
12
|
from langflow.schema.data import Data
|
|
13
13
|
|
|
14
14
|
|
|
@@ -118,5 +118,5 @@ class NotionListPages(LCToolComponent):
|
|
|
118
118
|
except KeyError:
|
|
119
119
|
return "Unexpected response format from Notion API"
|
|
120
120
|
except Exception as e: # noqa: BLE001
|
|
121
|
-
logger.
|
|
121
|
+
logger.debug("Error querying Notion database", exc_info=True)
|
|
122
122
|
return f"An unexpected error occurred: {e}"
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import requests
|
|
2
2
|
from langchain.tools import StructuredTool
|
|
3
|
-
from loguru import logger
|
|
4
3
|
from pydantic import BaseModel, Field
|
|
5
4
|
|
|
6
5
|
from langflow.base.langchain_utilities.model import LCToolComponent
|
|
7
6
|
from langflow.field_typing import Tool
|
|
8
7
|
from langflow.inputs.inputs import SecretStrInput, StrInput
|
|
8
|
+
from langflow.logging.logger import logger
|
|
9
9
|
from langflow.schema.data import Data
|
|
10
10
|
|
|
11
11
|
|
|
@@ -65,7 +65,7 @@ class NotionPageContent(LCToolComponent):
|
|
|
65
65
|
error_message += f" Status code: {e.response.status_code}, Response: {e.response.text}"
|
|
66
66
|
return error_message
|
|
67
67
|
except Exception as e: # noqa: BLE001
|
|
68
|
-
logger.
|
|
68
|
+
logger.debug("Error retrieving Notion page content", exc_info=True)
|
|
69
69
|
return f"Error: An unexpected error occurred while retrieving Notion page content. {e}"
|
|
70
70
|
|
|
71
71
|
def parse_blocks(self, blocks: list) -> str:
|
|
@@ -3,12 +3,12 @@ from typing import Any
|
|
|
3
3
|
|
|
4
4
|
import requests
|
|
5
5
|
from langchain.tools import StructuredTool
|
|
6
|
-
from loguru import logger
|
|
7
6
|
from pydantic import BaseModel, Field
|
|
8
7
|
|
|
9
8
|
from langflow.base.langchain_utilities.model import LCToolComponent
|
|
10
9
|
from langflow.field_typing import Tool
|
|
11
10
|
from langflow.inputs.inputs import MultilineInput, SecretStrInput, StrInput
|
|
11
|
+
from langflow.logging.logger import logger
|
|
12
12
|
from langflow.schema.data import Data
|
|
13
13
|
|
|
14
14
|
|
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
import httpx
|
|
2
|
-
from loguru import logger
|
|
3
2
|
|
|
4
3
|
from langflow.custom.custom_component.component import Component
|
|
5
4
|
from langflow.field_typing.range_spec import RangeSpec
|
|
6
|
-
from langflow.io import
|
|
7
|
-
|
|
8
|
-
DropdownInput,
|
|
9
|
-
IntInput,
|
|
10
|
-
MessageTextInput,
|
|
11
|
-
MultilineInput,
|
|
12
|
-
Output,
|
|
13
|
-
SecretStrInput,
|
|
14
|
-
)
|
|
5
|
+
from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, MultilineInput, Output, SecretStrInput
|
|
6
|
+
from langflow.logging.logger import logger
|
|
15
7
|
from langflow.schema.data import Data
|
|
16
8
|
|
|
17
9
|
|
|
@@ -135,13 +135,13 @@ class AgentComponent(ToolCallingAgentComponent):
|
|
|
135
135
|
# return result
|
|
136
136
|
|
|
137
137
|
except (ValueError, TypeError, KeyError) as e:
|
|
138
|
-
logger.
|
|
138
|
+
await logger.aerror(f"{type(e).__name__}: {e!s}")
|
|
139
139
|
raise
|
|
140
140
|
except ExceptionWithMessageError as e:
|
|
141
|
-
logger.
|
|
141
|
+
await logger.aerror(f"ExceptionWithMessageError occurred: {e}")
|
|
142
142
|
raise
|
|
143
143
|
except Exception as e:
|
|
144
|
-
logger.
|
|
144
|
+
await logger.aerror(f"Unexpected error: {e!s}")
|
|
145
145
|
raise
|
|
146
146
|
else:
|
|
147
147
|
return result
|
|
@@ -16,16 +16,15 @@ from langflow.base.mcp.util import (
|
|
|
16
16
|
)
|
|
17
17
|
from langflow.custom.custom_component.component_with_cache import ComponentWithCache
|
|
18
18
|
from langflow.inputs.inputs import InputTypes # noqa: TC001
|
|
19
|
-
from langflow.io import DropdownInput, McpInput, MessageTextInput, Output
|
|
19
|
+
from langflow.io import DropdownInput, McpInput, MessageTextInput, Output
|
|
20
20
|
from langflow.io.schema import flatten_schema, schema_to_langflow_inputs
|
|
21
21
|
from langflow.logging import logger
|
|
22
22
|
from langflow.schema.dataframe import DataFrame
|
|
23
23
|
from langflow.schema.message import Message
|
|
24
24
|
|
|
25
25
|
# Import get_server from the backend API
|
|
26
|
-
from langflow.services.auth.utils import create_user_longterm_token, get_current_user
|
|
27
26
|
from langflow.services.database.models.user.crud import get_user_by_id
|
|
28
|
-
from langflow.services.deps import
|
|
27
|
+
from langflow.services.deps import get_settings_service, get_storage_service, session_scope
|
|
29
28
|
|
|
30
29
|
|
|
31
30
|
class MCPToolsComponent(ComponentWithCache):
|
|
@@ -96,13 +95,6 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
96
95
|
show=False,
|
|
97
96
|
tool_mode=False,
|
|
98
97
|
),
|
|
99
|
-
SecretStrInput(
|
|
100
|
-
name="api_key",
|
|
101
|
-
display_name="Langflow API Key",
|
|
102
|
-
info="Langflow API key for authentication when fetching MCP servers and tools.",
|
|
103
|
-
required=False,
|
|
104
|
-
advanced=True,
|
|
105
|
-
),
|
|
106
98
|
]
|
|
107
99
|
|
|
108
100
|
outputs = [
|
|
@@ -125,12 +117,12 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
125
117
|
schema_inputs = schema_to_langflow_inputs(input_schema)
|
|
126
118
|
if not schema_inputs:
|
|
127
119
|
msg = f"No input parameters defined for tool '{tool_obj.name}'"
|
|
128
|
-
logger.
|
|
120
|
+
await logger.awarning(msg)
|
|
129
121
|
return []
|
|
130
122
|
|
|
131
123
|
except Exception as e:
|
|
132
124
|
msg = f"Error validating schema inputs: {e!s}"
|
|
133
|
-
logger.
|
|
125
|
+
await logger.aexception(msg)
|
|
134
126
|
raise ValueError(msg) from e
|
|
135
127
|
else:
|
|
136
128
|
return schema_inputs
|
|
@@ -161,19 +153,11 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
161
153
|
return self.tools, {"name": server_name, "config": server_config_from_value}
|
|
162
154
|
|
|
163
155
|
try:
|
|
164
|
-
async
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
token=None,
|
|
170
|
-
query_param=self.api_key,
|
|
171
|
-
header_param=None,
|
|
172
|
-
db=db,
|
|
173
|
-
)
|
|
174
|
-
else:
|
|
175
|
-
user_id, _ = await create_user_longterm_token(db)
|
|
176
|
-
current_user = await get_user_by_id(db, user_id)
|
|
156
|
+
async with session_scope() as db:
|
|
157
|
+
if not self.user_id:
|
|
158
|
+
msg = "User ID is required for fetching MCP tools."
|
|
159
|
+
raise ValueError(msg)
|
|
160
|
+
current_user = await get_user_by_id(db, self.user_id)
|
|
177
161
|
|
|
178
162
|
# Try to get server config from DB/API
|
|
179
163
|
server_config = await get_server(
|
|
@@ -184,47 +168,48 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
184
168
|
settings_service=get_settings_service(),
|
|
185
169
|
)
|
|
186
170
|
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
171
|
+
# If get_server returns empty but we have a config, use it
|
|
172
|
+
if not server_config and server_config_from_value:
|
|
173
|
+
server_config = server_config_from_value
|
|
174
|
+
|
|
175
|
+
if not server_config:
|
|
176
|
+
self.tools = []
|
|
177
|
+
return [], {"name": server_name, "config": server_config}
|
|
178
|
+
|
|
179
|
+
_, tool_list, tool_cache = await update_tools(
|
|
180
|
+
server_name=server_name,
|
|
181
|
+
server_config=server_config,
|
|
182
|
+
mcp_stdio_client=self.stdio_client,
|
|
183
|
+
mcp_sse_client=self.sse_client,
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
self.tool_names = [tool.name for tool in tool_list if hasattr(tool, "name")]
|
|
187
|
+
self._tool_cache = tool_cache
|
|
188
|
+
self.tools = tool_list
|
|
189
|
+
# Cache the result using shared cache
|
|
190
|
+
cache_data = {
|
|
191
|
+
"tools": tool_list,
|
|
192
|
+
"tool_names": self.tool_names,
|
|
193
|
+
"tool_cache": tool_cache,
|
|
194
|
+
"config": server_config,
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
# Safely update the servers cache
|
|
198
|
+
current_servers_cache = safe_cache_get(self._shared_component_cache, "servers", {})
|
|
199
|
+
if isinstance(current_servers_cache, dict):
|
|
200
|
+
current_servers_cache[server_name] = cache_data
|
|
201
|
+
safe_cache_set(self._shared_component_cache, "servers", current_servers_cache)
|
|
194
202
|
|
|
195
|
-
_, tool_list, tool_cache = await update_tools(
|
|
196
|
-
server_name=server_name,
|
|
197
|
-
server_config=server_config,
|
|
198
|
-
mcp_stdio_client=self.stdio_client,
|
|
199
|
-
mcp_sse_client=self.sse_client,
|
|
200
|
-
)
|
|
201
|
-
|
|
202
|
-
self.tool_names = [tool.name for tool in tool_list if hasattr(tool, "name")]
|
|
203
|
-
self._tool_cache = tool_cache
|
|
204
|
-
self.tools = tool_list
|
|
205
|
-
# Cache the result using shared cache
|
|
206
|
-
cache_data = {
|
|
207
|
-
"tools": tool_list,
|
|
208
|
-
"tool_names": self.tool_names,
|
|
209
|
-
"tool_cache": tool_cache,
|
|
210
|
-
"config": server_config,
|
|
211
|
-
}
|
|
212
|
-
|
|
213
|
-
# Safely update the servers cache
|
|
214
|
-
current_servers_cache = safe_cache_get(self._shared_component_cache, "servers", {})
|
|
215
|
-
if isinstance(current_servers_cache, dict):
|
|
216
|
-
current_servers_cache[server_name] = cache_data
|
|
217
|
-
safe_cache_set(self._shared_component_cache, "servers", current_servers_cache)
|
|
218
|
-
|
|
219
|
-
return tool_list, {"name": server_name, "config": server_config}
|
|
220
203
|
except (TimeoutError, asyncio.TimeoutError) as e:
|
|
221
204
|
msg = f"Timeout updating tool list: {e!s}"
|
|
222
|
-
logger.
|
|
205
|
+
await logger.aexception(msg)
|
|
223
206
|
raise TimeoutError(msg) from e
|
|
224
207
|
except Exception as e:
|
|
225
208
|
msg = f"Error updating tool list: {e!s}"
|
|
226
|
-
logger.
|
|
209
|
+
await logger.aexception(msg)
|
|
227
210
|
raise ValueError(msg) from e
|
|
211
|
+
else:
|
|
212
|
+
return tool_list, {"name": server_name, "config": server_config}
|
|
228
213
|
|
|
229
214
|
async def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None) -> dict:
|
|
230
215
|
"""Toggle the visibility of connection-specific fields based on the selected mode."""
|
|
@@ -238,7 +223,7 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
238
223
|
build_config["tool"]["placeholder"] = "Select a tool"
|
|
239
224
|
except (TimeoutError, asyncio.TimeoutError) as e:
|
|
240
225
|
msg = f"Timeout updating tool list: {e!s}"
|
|
241
|
-
logger.
|
|
226
|
+
await logger.aexception(msg)
|
|
242
227
|
if not build_config["tools_metadata"]["show"]:
|
|
243
228
|
build_config["tool"]["show"] = True
|
|
244
229
|
build_config["tool"]["options"] = []
|
|
@@ -264,7 +249,7 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
264
249
|
break
|
|
265
250
|
if tool_obj is None:
|
|
266
251
|
msg = f"Tool {field_value} not found in available tools: {self.tools}"
|
|
267
|
-
logger.
|
|
252
|
+
await logger.awarning(msg)
|
|
268
253
|
return build_config
|
|
269
254
|
await self._update_tool_config(build_config, field_value)
|
|
270
255
|
except Exception as e:
|
|
@@ -348,7 +333,7 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
348
333
|
|
|
349
334
|
except Exception as e:
|
|
350
335
|
msg = f"Error in update_build_config: {e!s}"
|
|
351
|
-
logger.
|
|
336
|
+
await logger.aexception(msg)
|
|
352
337
|
raise ValueError(msg) from e
|
|
353
338
|
else:
|
|
354
339
|
return build_config
|
|
@@ -401,7 +386,7 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
401
386
|
msg = f"Tool {tool_name} not found in available tools: {self.tools}"
|
|
402
387
|
self.remove_non_default_keys(build_config)
|
|
403
388
|
build_config["tool"]["value"] = ""
|
|
404
|
-
logger.
|
|
389
|
+
await logger.awarning(msg)
|
|
405
390
|
return
|
|
406
391
|
|
|
407
392
|
try:
|
|
@@ -419,14 +404,14 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
419
404
|
self.schema_inputs = await self._validate_schema_inputs(tool_obj)
|
|
420
405
|
if not self.schema_inputs:
|
|
421
406
|
msg = f"No input parameters to configure for tool '{tool_name}'"
|
|
422
|
-
logger.
|
|
407
|
+
await logger.ainfo(msg)
|
|
423
408
|
return
|
|
424
409
|
|
|
425
410
|
# Add new inputs to build config
|
|
426
411
|
for schema_input in self.schema_inputs:
|
|
427
412
|
if not schema_input or not hasattr(schema_input, "name"):
|
|
428
413
|
msg = "Invalid schema input detected, skipping"
|
|
429
|
-
logger.
|
|
414
|
+
await logger.awarning(msg)
|
|
430
415
|
continue
|
|
431
416
|
|
|
432
417
|
try:
|
|
@@ -443,16 +428,16 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
443
428
|
|
|
444
429
|
except (AttributeError, KeyError, TypeError) as e:
|
|
445
430
|
msg = f"Error processing schema input {schema_input}: {e!s}"
|
|
446
|
-
logger.
|
|
431
|
+
await logger.aexception(msg)
|
|
447
432
|
continue
|
|
448
433
|
except ValueError as e:
|
|
449
434
|
msg = f"Schema validation error for tool {tool_name}: {e!s}"
|
|
450
|
-
logger.
|
|
435
|
+
await logger.aexception(msg)
|
|
451
436
|
self.schema_inputs = []
|
|
452
437
|
return
|
|
453
438
|
except (AttributeError, KeyError, TypeError) as e:
|
|
454
439
|
msg = f"Error updating tool config: {e!s}"
|
|
455
|
-
logger.
|
|
440
|
+
await logger.aexception(msg)
|
|
456
441
|
raise ValueError(msg) from e
|
|
457
442
|
|
|
458
443
|
async def build_output(self) -> DataFrame:
|
|
@@ -489,7 +474,7 @@ class MCPToolsComponent(ComponentWithCache):
|
|
|
489
474
|
return DataFrame(data=[{"error": "You must select a tool"}])
|
|
490
475
|
except Exception as e:
|
|
491
476
|
msg = f"Error in build_output: {e!s}"
|
|
492
|
-
logger.
|
|
477
|
+
await logger.aexception(msg)
|
|
493
478
|
raise ValueError(msg) from e
|
|
494
479
|
|
|
495
480
|
def _get_session_context(self) -> str | None:
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
from typing import Any, cast
|
|
2
2
|
|
|
3
3
|
import requests
|
|
4
|
-
from loguru import logger
|
|
5
4
|
from pydantic import ValidationError
|
|
6
5
|
|
|
7
6
|
from langflow.base.models.anthropic_constants import (
|
|
@@ -14,6 +13,7 @@ from langflow.base.models.model import LCModelComponent
|
|
|
14
13
|
from langflow.field_typing import LanguageModel
|
|
15
14
|
from langflow.field_typing.range_spec import RangeSpec
|
|
16
15
|
from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, SecretStrInput, SliderInput
|
|
16
|
+
from langflow.logging.logger import logger
|
|
17
17
|
from langflow.schema.dotdict import dotdict
|
|
18
18
|
|
|
19
19
|
|
|
@@ -101,7 +101,7 @@ class AnthropicModelComponent(LCModelComponent):
|
|
|
101
101
|
|
|
102
102
|
return output
|
|
103
103
|
|
|
104
|
-
def get_models(self, tool_model_enabled: bool | None = None) -> list[str]:
|
|
104
|
+
def get_models(self, *, tool_model_enabled: bool | None = None) -> list[str]:
|
|
105
105
|
try:
|
|
106
106
|
import anthropic
|
|
107
107
|
|
|
@@ -129,7 +129,7 @@ class AnthropicModelComponent(LCModelComponent):
|
|
|
129
129
|
model_with_tool = ChatAnthropic(
|
|
130
130
|
model=model, # Use the current model being checked
|
|
131
131
|
anthropic_api_key=self.api_key,
|
|
132
|
-
anthropic_api_url=cast(str, self.base_url) or DEFAULT_ANTHROPIC_API_URL,
|
|
132
|
+
anthropic_api_url=cast("str", self.base_url) or DEFAULT_ANTHROPIC_API_URL,
|
|
133
133
|
)
|
|
134
134
|
|
|
135
135
|
if (
|
|
@@ -177,8 +177,9 @@ class AnthropicModelComponent(LCModelComponent):
|
|
|
177
177
|
except (ImportError, ValueError, requests.exceptions.RequestException) as e:
|
|
178
178
|
logger.exception(f"Error getting model names: {e}")
|
|
179
179
|
ids = ANTHROPIC_MODELS
|
|
180
|
+
build_config.setdefault("model_name", {})
|
|
180
181
|
build_config["model_name"]["options"] = ids
|
|
181
|
-
build_config["model_name"]
|
|
182
|
+
build_config["model_name"].setdefault("value", ids[0])
|
|
182
183
|
build_config["model_name"]["combobox"] = True
|
|
183
184
|
except Exception as e:
|
|
184
185
|
msg = f"Error getting model names: {e}"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import assemblyai as aai
|
|
2
|
-
from loguru import logger
|
|
3
2
|
|
|
4
3
|
from langflow.custom.custom_component.component import Component
|
|
5
4
|
from langflow.io import DataInput, DropdownInput, IntInput, Output, SecretStrInput
|
|
5
|
+
from langflow.logging.logger import logger
|
|
6
6
|
from langflow.schema.data import Data
|
|
7
7
|
|
|
8
8
|
|
|
@@ -58,7 +58,7 @@ class AssemblyAIGetSubtitles(Component):
|
|
|
58
58
|
transcript = aai.Transcript.get_by_id(transcript_id)
|
|
59
59
|
except Exception as e: # noqa: BLE001
|
|
60
60
|
error = f"Getting transcription failed: {e}"
|
|
61
|
-
logger.
|
|
61
|
+
logger.debug(error, exc_info=True)
|
|
62
62
|
self.status = error
|
|
63
63
|
return Data(data={"error": error})
|
|
64
64
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import assemblyai as aai
|
|
2
|
-
from loguru import logger
|
|
3
2
|
|
|
4
3
|
from langflow.custom.custom_component.component import Component
|
|
5
4
|
from langflow.io import DataInput, DropdownInput, FloatInput, IntInput, MultilineInput, Output, SecretStrInput
|
|
5
|
+
from langflow.logging.logger import logger
|
|
6
6
|
from langflow.schema.data import Data
|
|
7
7
|
|
|
8
8
|
|
|
@@ -131,7 +131,7 @@ class AssemblyAILeMUR(Component):
|
|
|
131
131
|
try:
|
|
132
132
|
response = self.perform_lemur_action(transcript_group, self.endpoint)
|
|
133
133
|
except Exception as e: # noqa: BLE001
|
|
134
|
-
logger.
|
|
134
|
+
logger.debug("Error running LeMUR", exc_info=True)
|
|
135
135
|
error = f"An Error happened: {e}"
|
|
136
136
|
self.status = error
|
|
137
137
|
return Data(data={"error": error})
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import assemblyai as aai
|
|
2
|
-
from loguru import logger
|
|
3
2
|
|
|
4
3
|
from langflow.custom.custom_component.component import Component
|
|
5
4
|
from langflow.io import BoolInput, DropdownInput, IntInput, MessageTextInput, Output, SecretStrInput
|
|
5
|
+
from langflow.logging.logger import logger
|
|
6
6
|
from langflow.schema.data import Data
|
|
7
7
|
|
|
8
8
|
|
|
@@ -86,7 +86,7 @@ class AssemblyAIListTranscripts(Component):
|
|
|
86
86
|
transcripts = convert_page_to_data_list(page)
|
|
87
87
|
|
|
88
88
|
except Exception as e: # noqa: BLE001
|
|
89
|
-
logger.
|
|
89
|
+
logger.debug("Error listing transcripts", exc_info=True)
|
|
90
90
|
error_data = Data(data={"error": f"An error occurred: {e}"})
|
|
91
91
|
self.status = [error_data]
|
|
92
92
|
return [error_data]
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import assemblyai as aai
|
|
2
|
-
from loguru import logger
|
|
3
2
|
|
|
4
3
|
from langflow.custom.custom_component.component import Component
|
|
5
4
|
from langflow.field_typing.range_spec import RangeSpec
|
|
6
5
|
from langflow.io import DataInput, FloatInput, Output, SecretStrInput
|
|
6
|
+
from langflow.logging.logger import logger
|
|
7
7
|
from langflow.schema.data import Data
|
|
8
8
|
|
|
9
9
|
|
|
@@ -54,7 +54,7 @@ class AssemblyAITranscriptionJobPoller(Component):
|
|
|
54
54
|
transcript = aai.Transcript.get_by_id(self.transcript_id.data["transcript_id"])
|
|
55
55
|
except Exception as e: # noqa: BLE001
|
|
56
56
|
error = f"Getting transcription failed: {e}"
|
|
57
|
-
logger.
|
|
57
|
+
logger.debug(error, exc_info=True)
|
|
58
58
|
self.status = error
|
|
59
59
|
return Data(data={"error": error})
|
|
60
60
|
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
from pathlib import Path
|
|
2
2
|
|
|
3
3
|
import assemblyai as aai
|
|
4
|
-
from loguru import logger
|
|
5
4
|
|
|
6
5
|
from langflow.custom.custom_component.component import Component
|
|
7
6
|
from langflow.io import BoolInput, DropdownInput, FileInput, MessageTextInput, Output, SecretStrInput
|
|
7
|
+
from langflow.logging.logger import logger
|
|
8
8
|
from langflow.schema.data import Data
|
|
9
9
|
|
|
10
10
|
|
|
@@ -176,7 +176,7 @@ class AssemblyAITranscriptionJobCreator(Component):
|
|
|
176
176
|
try:
|
|
177
177
|
transcript = aai.Transcriber().submit(audio, config=config)
|
|
178
178
|
except Exception as e: # noqa: BLE001
|
|
179
|
-
logger.
|
|
179
|
+
logger.debug("Error submitting transcription job", exc_info=True)
|
|
180
180
|
self.status = f"An error occurred: {e}"
|
|
181
181
|
return Data(data={"error": f"An error occurred: {e}"})
|
|
182
182
|
|