langflow-base-nightly 0.5.1.dev2__py3-none-any.whl → 0.5.1.dev4__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/__init__.py +215 -0
- langflow/__main__.py +16 -2
- langflow/alembic/versions/006b3990db50_add_unique_constraints.py +4 -7
- langflow/alembic/versions/012fb73ac359_add_folder_table.py +4 -5
- langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +11 -20
- langflow/alembic/versions/0b8757876a7c_.py +4 -7
- langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +4 -6
- langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +4 -5
- langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +32 -27
- langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +4 -5
- langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +4 -5
- langflow/alembic/versions/1eab2c3eb45e_event_error.py +14 -15
- langflow/alembic/versions/1ef9c4f3765d_.py +5 -10
- langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +4 -5
- langflow/alembic/versions/260dbcc8b680_adds_tables.py +4 -5
- langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +4 -5
- langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +4 -7
- langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +4 -5
- langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +1 -2
- langflow/alembic/versions/58b28437a398_modify_nullable.py +1 -2
- langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +6 -12
- langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +4 -5
- langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +4 -5
- langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +21 -23
- langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +4 -5
- langflow/alembic/versions/6e7b581b5648_fix_nullable.py +4 -5
- langflow/alembic/versions/7843803a87b5_store_updates.py +4 -6
- langflow/alembic/versions/79e675cb6752_change_datetime_type.py +1 -2
- langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +4 -10
- langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +4 -6
- langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +7 -9
- langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +4 -5
- langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +1 -2
- langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +4 -5
- langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +4 -5
- langflow/alembic/versions/d066bfd22890_add_message_table.py +4 -4
- langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +12 -13
- langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +12 -12
- langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +7 -10
- langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +8 -7
- langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +10 -10
- langflow/alembic/versions/e3bc869fa272_fix_nullable.py +4 -5
- langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +13 -14
- langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +4 -5
- langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +4 -5
- langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +4 -5
- langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +19 -15
- langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +4 -6
- langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +5 -8
- langflow/api/build.py +5 -4
- langflow/api/health_check_router.py +1 -1
- langflow/api/limited_background_tasks.py +1 -1
- langflow/api/log_router.py +1 -2
- langflow/api/utils.py +2 -2
- langflow/api/v1/base.py +1 -2
- langflow/api/v1/callback.py +4 -9
- langflow/api/v1/chat.py +6 -7
- langflow/api/v1/endpoints.py +15 -15
- langflow/api/v1/files.py +1 -1
- langflow/api/v1/flows.py +1 -1
- langflow/api/v1/knowledge_bases.py +1 -1
- langflow/api/v1/mcp.py +1 -1
- langflow/api/v1/mcp_projects.py +14 -5
- langflow/api/v1/mcp_utils.py +3 -3
- langflow/api/v1/openai_responses.py +4 -4
- langflow/api/v1/schemas.py +3 -38
- langflow/api/v1/starter_projects.py +61 -3
- langflow/api/v1/store.py +1 -1
- langflow/api/v1/validate.py +3 -3
- langflow/api/v1/voice_mode.py +2 -2
- langflow/api/v2/files.py +1 -1
- langflow/api/v2/mcp.py +2 -2
- langflow/base/__init__.py +11 -0
- langflow/base/agents/__init__.py +3 -0
- langflow/base/data/__init__.py +2 -4
- langflow/base/data/utils.py +2 -197
- langflow/base/embeddings/__init__.py +3 -0
- langflow/base/io/__init__.py +7 -0
- langflow/base/io/chat.py +5 -18
- langflow/base/io/text.py +2 -21
- langflow/base/knowledge_bases/__init__.py +3 -0
- langflow/base/memory/__init__.py +3 -0
- langflow/base/models/__init__.py +2 -2
- langflow/base/models/openai_constants.py +6 -120
- langflow/base/prompts/__init__.py +3 -0
- langflow/base/prompts/api_utils.py +2 -223
- langflow/base/textsplitters/__init__.py +3 -0
- langflow/base/tools/__init__.py +3 -0
- langflow/base/vectorstores/__init__.py +3 -0
- langflow/components/__init__.py +7 -259
- langflow/components/agents.py +6 -0
- langflow/components/anthropic.py +6 -0
- langflow/components/data.py +6 -0
- langflow/components/helpers.py +6 -0
- langflow/components/knowledge_bases/ingestion.py +13 -14
- langflow/components/knowledge_bases/retrieval.py +8 -7
- langflow/components/openai.py +6 -0
- langflow/components/processing/__init__.py +1 -117
- langflow/components/processing/converter.py +3 -149
- langflow/custom/__init__.py +26 -3
- langflow/custom/custom_component/__init__.py +4 -0
- langflow/custom/custom_component/component.py +20 -1738
- langflow/custom/custom_component/component_with_cache.py +1 -8
- langflow/custom/custom_component/custom_component.py +1 -552
- langflow/custom/utils.py +1 -872
- langflow/custom/validate.py +1 -0
- langflow/events/event_manager.py +18 -108
- langflow/field_typing/__init__.py +6 -6
- langflow/field_typing/constants.py +87 -122
- langflow/field_typing/range_spec.py +2 -32
- langflow/frontend/assets/{SlackIcon-Cc7Qnzki.js → SlackIcon-v88osOTA.js} +1 -1
- langflow/frontend/assets/{Wikipedia-7ulMZY46.js → Wikipedia-DD_S2k00.js} +1 -1
- langflow/frontend/assets/{Wolfram-By9PGsHS.js → Wolfram-EO2C5noN.js} +1 -1
- langflow/frontend/assets/{index-DVLIDc2_.js → index-1Gv1mfvk.js} +1 -1
- langflow/frontend/assets/{index-MVW4HTEk.js → index-7v-bzlzf.js} +1 -1
- langflow/frontend/assets/{index-CUzlcce2.js → index-9CbMazbV.js} +1 -1
- langflow/frontend/assets/{index-CU16NJD7.js → index-B8ZHP8g2.js} +1 -1
- langflow/frontend/assets/{index-v8eXbWlM.js → index-B8y2e6vN.js} +1 -1
- langflow/frontend/assets/{index-BX_asvRB.js → index-BBRUGsyr.js} +1 -1
- langflow/frontend/assets/{index-9FL5xjkL.js → index-BGwqQwlh.js} +1 -1
- langflow/frontend/assets/{index-BAn-AzCS.js → index-BIq-k-FG.js} +1 -1
- langflow/frontend/assets/{index-D5c2nNvp.js → index-BSN73YP8.js} +1 -1
- langflow/frontend/assets/{index-DMCerPJM.js → index-BU8R8jRn.js} +1 -1
- langflow/frontend/assets/{index-CvSoff-8.js → index-BV6yx8ey.js} +1 -1
- langflow/frontend/assets/{index-BISPW-f6.js → index-BYIsg-Eh.js} +1 -1
- langflow/frontend/assets/{index-GzOGB_fo.js → index-B_ksDBSQ.js} +1 -1
- langflow/frontend/assets/{index-BIqEYjNT.js → index-Ba1UOZ9A.js} +1 -1
- langflow/frontend/assets/{index-ByxGmq5p.js → index-Ba9tKRQg.js} +1 -1
- langflow/frontend/assets/{index-BLEWsL1U.js → index-Bbfaw8ca.js} +1 -1
- langflow/frontend/assets/{index-C_MhBX6R.js → index-BbuGqvAx.js} +1 -1
- langflow/frontend/assets/{index-RH_I78z_.js → index-BeoXu1YX.js} +1 -1
- langflow/frontend/assets/{index-cYFKmtmg.js → index-BfjZmOnH.js} +1 -1
- langflow/frontend/assets/{index-Bm9i8F4W.js → index-Bjzy_HZB.js} +1 -1
- langflow/frontend/assets/{index-_szO7sta.js → index-BofEkpYB.js} +1 -1
- langflow/frontend/assets/{index-DP1oE6QB.js → index-Bp7Mty2H.js} +1 -1
- langflow/frontend/assets/{index-CeswGUz3.js → index-BqX1H6yK.js} +1 -1
- langflow/frontend/assets/{index-C8pI0lzi.js → index-BqtBAJAN.js} +1 -1
- langflow/frontend/assets/{index-BusCv3bR.js → index-Bsfraj7A.js} +1 -1
- langflow/frontend/assets/{index-BWnKMRFJ.js → index-BtFl7fER.js} +1 -1
- langflow/frontend/assets/{index-DnlVWWU8.js → index-BvX993Sv.js} +1 -1
- langflow/frontend/assets/{index-C676MS3I.js → index-BvgQ2vzM.js} +1 -1
- langflow/frontend/assets/{index-DJ6HD14g.js → index-BwY98u8n.js} +1 -1
- langflow/frontend/assets/{index-C51yNvIL.js → index-C-RIJAOS.js} +1 -1
- langflow/frontend/assets/{index-DiblXWmk.js → index-C1K6A38P.js} +1 -1
- langflow/frontend/assets/{index-Co__gFM1.js → index-C3Vwhx0t.js} +1 -1
- langflow/frontend/assets/{index-Coi86oqP.js → index-C5XUG_gr.js} +1 -1
- langflow/frontend/assets/{index-jwzN3Jd_.js → index-C6ouLG9o.js} +1 -1
- langflow/frontend/assets/{index-CQQ-4XMS.js → index-C7ZJ_Z6f.js} +1 -1
- langflow/frontend/assets/{index-Bl7RpmrB.js → index-CCOGIwGY.js} +1 -1
- langflow/frontend/assets/{index-CVkIdc6y.js → index-CCcye2rt.js} +1 -1
- langflow/frontend/assets/{index-bMhyLtgS.js → index-CFR4yJQB.js} +1 -1
- langflow/frontend/assets/{index-aAgSKWb3.js → index-CIGmPP0H.js} +1 -1
- langflow/frontend/assets/{index-BGt6jQ4x.js → index-CJmMEa6d.js} +1 -1
- langflow/frontend/assets/{index-DX7JcSMz.js → index-CJxD7lyU.js} +1 -1
- langflow/frontend/assets/{index-BZ-A4K98.js → index-CL_vu6ut.js} +1 -1
- langflow/frontend/assets/{index-BMpKFGhI.js → index-COf3UnBn.js} +1 -1
- langflow/frontend/assets/{index-xN8ogFdo.js → index-CV9650h_.js} +1 -1
- langflow/frontend/assets/{index-OsUvqIUr.js → index-CVDzych0.js} +1 -1
- langflow/frontend/assets/{index-BH7AyHxp.js → index-CWIHsC4D.js} +1 -1
- langflow/frontend/assets/{index-mjwtJmkP.js → index-CXCnFZ0L.js} +1 -1
- langflow/frontend/assets/{index-3jlSQi5Y.js → index-Ca_Pw_Dn.js} +1 -1
- langflow/frontend/assets/{index-D-SnFlhU.js → index-Cbb3bX9e.js} +1 -1
- langflow/frontend/assets/{index--e0oQqZh.js → index-CcJtOz-Z.js} +1 -1
- langflow/frontend/assets/{index-S-sc0Cm9.js → index-CfTbTHEv.js} +1 -1
- langflow/frontend/assets/{index-Deu8rlaZ.js → index-ChoxDAgX.js} +1 -1
- langflow/frontend/assets/{index-lnF9Eqr2.js → index-Cn4gw8aE.js} +1 -1
- langflow/frontend/assets/{index-C_NwzK6j.js → index-CnpLg4zX.js} +1 -1
- langflow/frontend/assets/{index-DznH7Jbq.js → index-Cpao2omG.js} +1 -1
- langflow/frontend/assets/{index-DpWrk8mA.js → index-CqoxM01j.js} +1 -1
- langflow/frontend/assets/{index-Bw-TIIC6.js → index-CrHf2Ic1.js} +1 -1
- langflow/frontend/assets/{index-DmYLDQag.js → index-CrV0uIjp.js} +1 -1
- langflow/frontend/assets/{index-Dp7ZQyL3.js → index-CssADaak.js} +1 -1
- langflow/frontend/assets/{index-CNh0rwur.js → index-CtJdNLy9.js} +1 -1
- langflow/frontend/assets/{index-Ca1b7Iag.js → index-CyeWD2dh.js} +1 -1
- langflow/frontend/assets/{index-DcApTyZ7.js → index-D1xzD7uc.js} +1 -1
- langflow/frontend/assets/{index-B3GvPjhD.js → index-D6MuXC4L.js} +1 -1
- langflow/frontend/assets/{index-Cw0UComa.js → index-D8w9zvIF.js} +1 -1
- langflow/frontend/assets/{index-C-2MRYoJ.js → index-D98Gn0A6.js} +1 -1
- langflow/frontend/assets/{index-aWnZIwHd.js → index-DBhjpWkf.js} +1 -1
- langflow/frontend/assets/{index-nw3WF9lY.js → index-DCCRJzcY.js} +1 -1
- langflow/frontend/assets/{index-RjeC0kaX.js → index-DCTRSkEW.js} +1 -1
- langflow/frontend/assets/{index-B_kBTgxV.js → index-DCUfitVj.js} +1 -1
- langflow/frontend/assets/{index-ChsGhZn3.js → index-DDdz-Xcl.js} +1 -1
- langflow/frontend/assets/{index-7yAHPRxv.js → index-DGdMwZjG.js} +1 -1
- langflow/frontend/assets/{index-DjQElpEg.js → index-DGtl2vMw.js} +1 -1
- langflow/frontend/assets/{index-BCXhKCOK.js → index-DHVdkrni.js} +1 -1
- langflow/frontend/assets/{index-S8uJXTOq.js → index-DJBWwjgl.js} +1 -1
- langflow/frontend/assets/{index-qiVTWUuf.js → index-DMAkJ_qX.js} +1 -1
- langflow/frontend/assets/{index-D-WStJI6.js → index-DMEvEQI5.js} +1 -1
- langflow/frontend/assets/{index-BhqVw9WQ.js → index-DNGRoOsp.js} +1 -1
- langflow/frontend/assets/{index-Cu7vC48Y.js → index-DNT_TUTa.js} +1 -1
- langflow/frontend/assets/{index-Bhcv5M0n.js → index-DQKOH_9K.js} +1 -1
- langflow/frontend/assets/{index-CLcaktde.js → index-DQhqqtqQ.js} +1 -1
- langflow/frontend/assets/{index-DZVgPCio.js → index-DRM7KKnG.js} +1 -1
- langflow/frontend/assets/{index-uybez8MR.js → index-DSCtl3a5.js} +1 -1
- langflow/frontend/assets/{index-CJ5A6STv.js → index-DSLNlm0Z.js} +1 -1
- langflow/frontend/assets/{index-Drg8me2a.js → index-DT-PspE-.js} +1 -1
- langflow/frontend/assets/{index-DsEZjOcp.js → index-DTpbH-p8.js} +1 -1
- langflow/frontend/assets/{index-DrXXKzpD.js → index-DWV6MsIq.js} +1 -1
- langflow/frontend/assets/{index-4JIEdyIM.js → index-DWeL4US_.js} +1 -1
- langflow/frontend/assets/{index-BlDsBQ_1.js → index-DYKZHhpU.js} +1 -1
- langflow/frontend/assets/{index-DFY8YFbC.js → index-DZyQHiMR.js} +1 -1
- langflow/frontend/assets/{index-CKPZpkQk.js → index-Dc6qVuSa.js} +1 -1
- langflow/frontend/assets/{index-yyAaYjLR.js → index-DkYuicnC.js} +1 -1
- langflow/frontend/assets/{index-DmVt5Jlx.js → index-Dlj_2mMs.js} +1 -1
- langflow/frontend/assets/{index-BvRIG6P5.js → index-DmGJUrEp.js} +1 -1
- langflow/frontend/assets/{index-BWFIrwW1.js → index-Dn6hpCAZ.js} +1 -1
- langflow/frontend/assets/{index-Cb5G9Ifd.js → index-DrJU8Fgb.js} +1 -1
- langflow/frontend/assets/{index-COoTCxvs.js → index-DsWfdCzp.js} +1 -1
- langflow/frontend/assets/{index-ZjeocHyu.js → index-DvCPWs2_.js} +1 -1
- langflow/frontend/assets/{index-B5LHnuQR.js → index-DvPVq7OP.js} +1 -1
- langflow/frontend/assets/{index-BnCnYnao.js → index-Dw71ufW4.js} +1 -1
- langflow/frontend/assets/{index-AALDfCyt.js → index-DxkJactf.js} +1 -1
- langflow/frontend/assets/{index-k9jP5chN.js → index-Dz2GTphU.js} +1 -1
- langflow/frontend/assets/{index-BdjfHsrf.js → index-Fvd524_c.js} +1 -1
- langflow/frontend/assets/{index-AKVkmT4S.js → index-GAQ0Mk2M.js} +1 -1
- langflow/frontend/assets/{index-BZSa2qz7.js → index-Hm5-4ItD.js} +1 -1
- langflow/frontend/assets/{index-DbfS_UH-.js → index-IT67FzsK.js} +1 -1
- langflow/frontend/assets/{index-BLXN681C.js → index-ItYiij1i.js} +1 -1
- langflow/frontend/assets/{index-CiklyQU3.js → index-IuR_FEdB.js} +1 -1
- langflow/frontend/assets/{index-xV6ystWy.js → index-Jj60FQkv.js} +1 -1
- langflow/frontend/assets/{index-C_157Mb-.js → index-LlvshmVz.js} +1 -1
- langflow/frontend/assets/{index-CDphUsa3.js → index-LwKh3I_W.js} +1 -1
- langflow/frontend/assets/{index-BrDz-PxE.js → index-N-xxmKKH.js} +1 -1
- langflow/frontend/assets/{index-BsdLyYMY.js → index-RwpaHIAH.js} +1 -1
- langflow/frontend/assets/{index-Cu2Xr6_j.js → index-TVvsp-xh.js} +1 -1
- langflow/frontend/assets/{index-CPiM2oyj.js → index-TdE2u9zP.js} +1 -1
- langflow/frontend/assets/{index-DOj_QWqG.js → index-_x-NkYeW.js} +1 -1
- langflow/frontend/assets/{index-YJsAl7vm.js → index-a-YclEbW.js} +1 -1
- langflow/frontend/assets/{index-5-CSw2-z.js → index-e9MFKUCo.js} +1 -1
- langflow/frontend/assets/{index-BSwBVwyF.js → index-krPr8f2F.js} +1 -1
- langflow/frontend/assets/{index-Df6psZEj.js → index-kveiUWuL.js} +1 -1
- langflow/frontend/assets/{index-CF4_Og1m.js → index-lE3oSjJi.js} +1 -1
- langflow/frontend/assets/{index-C6nzdeYx.js → index-lM3UYg7F.js} +1 -1
- langflow/frontend/assets/{index-C-wnbBBY.js → index-nsRk3qgA.js} +1 -1
- langflow/frontend/assets/{index-D234yKNJ.js → index-pBO0SZLD.js} +4 -4
- langflow/frontend/assets/{index-BMvp94tO.js → index-pbZHsbuE.js} +1 -1
- langflow/frontend/assets/{index-hg2y9OAt.js → index-sfX3aWyp.js} +1 -1
- langflow/frontend/assets/{index-DTCrijba.js → index-xQz-VJ0-.js} +1 -1
- langflow/frontend/assets/{index-SB4rw8D5.js → index-yfcsaHS6.js} +1 -1
- langflow/frontend/assets/{index-C-bjC2sz.js → index-zcGjo9fx.js} +1 -1
- langflow/frontend/assets/lazyIconImports-BjqDmNYG.js +2 -0
- langflow/frontend/assets/{use-post-add-user-JUeLDErC.js → use-post-add-user-w3vpKSOB.js} +1 -1
- langflow/frontend/index.html +1 -1
- langflow/graph/__init__.py +4 -4
- langflow/helpers/data.py +2 -2
- langflow/helpers/flow.py +9 -7
- langflow/helpers/user.py +2 -2
- langflow/initial_setup/setup.py +9 -9
- langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +119 -41
- langflow/initial_setup/starter_projects/Basic Prompting.json +45 -19
- langflow/initial_setup/starter_projects/Blog Writer.json +53 -21
- langflow/initial_setup/starter_projects/Custom Component Generator.json +121 -97
- langflow/initial_setup/starter_projects/Document Q&A.json +46 -18
- langflow/initial_setup/starter_projects/Financial Report Parser.json +49 -17
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +89 -50
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +86 -22
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +210 -57
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +132 -35
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +8 -8
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +8 -8
- langflow/initial_setup/starter_projects/Market Research.json +174 -48
- langflow/initial_setup/starter_projects/Meeting Summary.json +102 -38
- langflow/initial_setup/starter_projects/Memory Chatbot.json +49 -21
- langflow/initial_setup/starter_projects/News Aggregator.json +140 -39
- langflow/initial_setup/starter_projects/Nvidia Remix.json +153 -181
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +132 -35
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +106 -43
- langflow/initial_setup/starter_projects/Price Deal Finder.json +136 -39
- langflow/initial_setup/starter_projects/Research Agent.json +206 -53
- langflow/initial_setup/starter_projects/Research Translation Loop.json +66 -34
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +41 -15
- langflow/initial_setup/starter_projects/SaaS Pricing.json +128 -31
- langflow/initial_setup/starter_projects/Search agent.json +132 -35
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +422 -98
- langflow/initial_setup/starter_projects/Simple Agent.json +150 -42
- langflow/initial_setup/starter_projects/Social Media Agent.json +150 -42
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +120 -24
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +418 -94
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +69 -37
- langflow/initial_setup/starter_projects/Vector Store RAG.json +66 -38
- langflow/initial_setup/starter_projects/Youtube Analysis.json +191 -51
- langflow/initial_setup/starter_projects/basic_prompting.py +4 -4
- langflow/initial_setup/starter_projects/blog_writer.py +5 -5
- langflow/initial_setup/starter_projects/complex_agent.py +8 -8
- langflow/initial_setup/starter_projects/document_qa.py +5 -5
- langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +8 -8
- langflow/initial_setup/starter_projects/memory_chatbot.py +6 -6
- langflow/initial_setup/starter_projects/sequential_tasks_agent.py +7 -7
- langflow/initial_setup/starter_projects/vector_store_rag.py +8 -8
- langflow/inputs/__init__.py +3 -2
- langflow/inputs/constants.py +3 -2
- langflow/inputs/input_mixin.py +49 -310
- langflow/inputs/inputs.py +72 -703
- langflow/inputs/validators.py +2 -18
- langflow/interface/__init__.py +4 -0
- langflow/interface/components.py +3 -491
- langflow/interface/initialize/loading.py +7 -6
- langflow/interface/listing.py +3 -25
- langflow/interface/run.py +1 -1
- langflow/interface/utils.py +3 -111
- langflow/io/__init__.py +2 -2
- langflow/io/schema.py +11 -302
- langflow/load/__init__.py +4 -2
- langflow/load/utils.py +2 -96
- langflow/logging/__init__.py +2 -1
- langflow/logging/setup.py +1 -1
- langflow/main.py +8 -5
- langflow/memory.py +12 -6
- langflow/middleware.py +1 -1
- langflow/processing/process.py +7 -7
- langflow/schema/__init__.py +22 -5
- langflow/schema/artifact.py +1 -1
- langflow/schema/data.py +5 -303
- langflow/schema/dataframe.py +2 -205
- langflow/schema/graph.py +4 -45
- langflow/schema/image.py +2 -67
- langflow/schema/message.py +6 -470
- langflow/schema/playground_events.py +5 -6
- langflow/schema/schema.py +24 -117
- langflow/serialization/constants.py +3 -2
- langflow/serialization/serialization.py +1 -1
- langflow/server.py +1 -2
- langflow/services/__init__.py +1 -2
- langflow/services/auth/mcp_encryption.py +1 -1
- langflow/services/auth/service.py +1 -1
- langflow/services/auth/utils.py +5 -5
- langflow/services/cache/disk.py +2 -2
- langflow/services/cache/factory.py +2 -2
- langflow/services/cache/service.py +2 -2
- langflow/services/cache/utils.py +0 -11
- langflow/services/database/factory.py +1 -1
- langflow/services/database/models/flow/model.py +1 -1
- langflow/services/database/models/message/crud.py +2 -1
- langflow/services/database/models/transactions/crud.py +1 -1
- langflow/services/database/models/user/crud.py +1 -1
- langflow/services/database/service.py +2 -2
- langflow/services/database/utils.py +1 -2
- langflow/services/deps.py +12 -17
- langflow/services/enhanced_manager.py +71 -0
- langflow/services/factory.py +14 -7
- langflow/services/flow/flow_runner.py +4 -4
- langflow/services/job_queue/service.py +2 -1
- langflow/services/manager.py +14 -130
- langflow/services/schema.py +0 -1
- langflow/services/session/service.py +3 -2
- langflow/services/settings/__init__.py +0 -3
- langflow/services/settings/base.py +16 -549
- langflow/services/settings/factory.py +2 -21
- langflow/services/settings/feature_flags.py +2 -11
- langflow/services/settings/service.py +2 -31
- langflow/services/shared_component_cache/factory.py +1 -1
- langflow/services/socket/service.py +1 -1
- langflow/services/socket/utils.py +1 -8
- langflow/services/state/factory.py +1 -1
- langflow/services/state/service.py +3 -2
- langflow/services/storage/factory.py +2 -2
- langflow/services/storage/local.py +1 -2
- langflow/services/storage/s3.py +1 -2
- langflow/services/storage/service.py +2 -1
- langflow/services/store/factory.py +1 -1
- langflow/services/store/service.py +2 -2
- langflow/services/store/utils.py +1 -2
- langflow/services/task/service.py +2 -1
- langflow/services/task/temp_flow_cleanup.py +1 -1
- langflow/services/telemetry/factory.py +1 -1
- langflow/services/telemetry/service.py +2 -3
- langflow/services/tracing/arize_phoenix.py +3 -3
- langflow/services/tracing/base.py +1 -1
- langflow/services/tracing/factory.py +1 -1
- langflow/services/tracing/langfuse.py +2 -2
- langflow/services/tracing/langsmith.py +2 -2
- langflow/services/tracing/langwatch.py +4 -4
- langflow/services/tracing/opik.py +2 -2
- langflow/services/tracing/service.py +17 -11
- langflow/services/tracing/traceloop.py +2 -2
- langflow/services/tracing/utils.py +1 -1
- langflow/services/utils.py +54 -9
- langflow/services/variable/factory.py +1 -1
- langflow/services/variable/kubernetes.py +2 -3
- langflow/services/variable/kubernetes_secrets.py +1 -2
- langflow/services/variable/service.py +2 -3
- langflow/template/__init__.py +2 -9
- langflow/template/field/__init__.py +3 -0
- langflow/template/field/base.py +2 -256
- langflow/template/frontend_node.py +3 -0
- langflow/template/utils.py +2 -216
- langflow/utils/constants.py +28 -204
- langflow/utils/lazy_load.py +3 -14
- langflow/utils/schemas.py +2 -3
- langflow/utils/template_validation.py +2 -2
- langflow/utils/util.py +59 -479
- langflow/utils/validate.py +2 -488
- langflow/utils/voice_utils.py +1 -2
- langflow/worker.py +1 -1
- {langflow_base_nightly-0.5.1.dev2.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/METADATA +2 -1
- langflow_base_nightly-0.5.1.dev4.dist-info/RECORD +633 -0
- langflow/base/agents/agent.py +0 -267
- langflow/base/agents/callback.py +0 -130
- langflow/base/agents/context.py +0 -109
- langflow/base/agents/crewai/__init__.py +0 -0
- langflow/base/agents/crewai/crew.py +0 -231
- langflow/base/agents/crewai/tasks.py +0 -12
- langflow/base/agents/default_prompts.py +0 -23
- langflow/base/agents/errors.py +0 -15
- langflow/base/agents/events.py +0 -346
- langflow/base/agents/utils.py +0 -205
- langflow/base/astra_assistants/__init__.py +0 -0
- langflow/base/astra_assistants/util.py +0 -171
- langflow/base/chains/__init__.py +0 -0
- langflow/base/chains/model.py +0 -19
- langflow/base/composio/__init__.py +0 -0
- langflow/base/composio/composio_base.py +0 -1297
- langflow/base/compressors/__init__.py +0 -0
- langflow/base/compressors/model.py +0 -60
- langflow/base/constants.py +0 -46
- langflow/base/curl/__init__.py +0 -0
- langflow/base/curl/parse.py +0 -188
- langflow/base/data/base_file.py +0 -685
- langflow/base/data/docling_utils.py +0 -245
- langflow/base/document_transformers/__init__.py +0 -0
- langflow/base/document_transformers/model.py +0 -43
- langflow/base/embeddings/aiml_embeddings.py +0 -62
- langflow/base/embeddings/model.py +0 -26
- langflow/base/flow_processing/__init__.py +0 -0
- langflow/base/flow_processing/utils.py +0 -86
- langflow/base/huggingface/__init__.py +0 -0
- langflow/base/huggingface/model_bridge.py +0 -133
- langflow/base/langchain_utilities/__init__.py +0 -0
- langflow/base/langchain_utilities/model.py +0 -35
- langflow/base/langchain_utilities/spider_constants.py +0 -1
- langflow/base/langwatch/__init__.py +0 -0
- langflow/base/langwatch/utils.py +0 -18
- langflow/base/mcp/__init__.py +0 -0
- langflow/base/mcp/constants.py +0 -2
- langflow/base/mcp/util.py +0 -1524
- langflow/base/memory/memory.py +0 -49
- langflow/base/memory/model.py +0 -38
- langflow/base/models/aiml_constants.py +0 -51
- langflow/base/models/anthropic_constants.py +0 -47
- langflow/base/models/aws_constants.py +0 -151
- langflow/base/models/chat_result.py +0 -76
- langflow/base/models/google_generative_ai_constants.py +0 -70
- langflow/base/models/groq_constants.py +0 -134
- langflow/base/models/model.py +0 -375
- langflow/base/models/model_input_constants.py +0 -299
- langflow/base/models/model_metadata.py +0 -41
- langflow/base/models/model_utils.py +0 -8
- langflow/base/models/novita_constants.py +0 -35
- langflow/base/models/ollama_constants.py +0 -49
- langflow/base/models/sambanova_constants.py +0 -18
- langflow/base/processing/__init__.py +0 -0
- langflow/base/prompts/utils.py +0 -61
- langflow/base/textsplitters/model.py +0 -28
- langflow/base/tools/base.py +0 -26
- langflow/base/tools/component_tool.py +0 -324
- langflow/base/tools/constants.py +0 -49
- langflow/base/tools/flow_tool.py +0 -131
- langflow/base/tools/run_flow.py +0 -227
- langflow/base/vectorstores/model.py +0 -193
- langflow/base/vectorstores/utils.py +0 -22
- langflow/base/vectorstores/vector_store_connection_decorator.py +0 -52
- langflow/components/FAISS/__init__.py +0 -34
- langflow/components/FAISS/faiss.py +0 -111
- langflow/components/Notion/__init__.py +0 -19
- langflow/components/Notion/add_content_to_page.py +0 -269
- langflow/components/Notion/create_page.py +0 -94
- langflow/components/Notion/list_database_properties.py +0 -68
- langflow/components/Notion/list_pages.py +0 -122
- langflow/components/Notion/list_users.py +0 -77
- langflow/components/Notion/page_content_viewer.py +0 -93
- langflow/components/Notion/search.py +0 -111
- langflow/components/Notion/update_page_property.py +0 -114
- langflow/components/_importing.py +0 -37
- langflow/components/agentql/__init__.py +0 -3
- langflow/components/agentql/agentql_api.py +0 -151
- langflow/components/agents/__init__.py +0 -4
- langflow/components/agents/agent.py +0 -554
- langflow/components/agents/mcp_component.py +0 -501
- langflow/components/aiml/__init__.py +0 -37
- langflow/components/aiml/aiml.py +0 -112
- langflow/components/aiml/aiml_embeddings.py +0 -37
- langflow/components/amazon/__init__.py +0 -36
- langflow/components/amazon/amazon_bedrock_embedding.py +0 -109
- langflow/components/amazon/amazon_bedrock_model.py +0 -124
- langflow/components/amazon/s3_bucket_uploader.py +0 -211
- langflow/components/anthropic/__init__.py +0 -34
- langflow/components/anthropic/anthropic.py +0 -187
- langflow/components/apify/__init__.py +0 -5
- langflow/components/apify/apify_actor.py +0 -325
- langflow/components/arxiv/__init__.py +0 -3
- langflow/components/arxiv/arxiv.py +0 -163
- langflow/components/assemblyai/__init__.py +0 -46
- langflow/components/assemblyai/assemblyai_get_subtitles.py +0 -83
- langflow/components/assemblyai/assemblyai_lemur.py +0 -183
- langflow/components/assemblyai/assemblyai_list_transcripts.py +0 -95
- langflow/components/assemblyai/assemblyai_poll_transcript.py +0 -72
- langflow/components/assemblyai/assemblyai_start_transcript.py +0 -188
- langflow/components/azure/__init__.py +0 -37
- langflow/components/azure/azure_openai.py +0 -95
- langflow/components/azure/azure_openai_embeddings.py +0 -83
- langflow/components/baidu/__init__.py +0 -32
- langflow/components/baidu/baidu_qianfan_chat.py +0 -113
- langflow/components/bing/__init__.py +0 -3
- langflow/components/bing/bing_search_api.py +0 -61
- langflow/components/cassandra/__init__.py +0 -40
- langflow/components/cassandra/cassandra.py +0 -264
- langflow/components/cassandra/cassandra_chat.py +0 -92
- langflow/components/cassandra/cassandra_graph.py +0 -238
- langflow/components/chains/__init__.py +0 -0
- langflow/components/chroma/__init__.py +0 -34
- langflow/components/chroma/chroma.py +0 -167
- langflow/components/cleanlab/__init__.py +0 -40
- langflow/components/cleanlab/cleanlab_evaluator.py +0 -157
- langflow/components/cleanlab/cleanlab_rag_evaluator.py +0 -254
- langflow/components/cleanlab/cleanlab_remediator.py +0 -131
- langflow/components/clickhouse/__init__.py +0 -34
- langflow/components/clickhouse/clickhouse.py +0 -135
- langflow/components/cloudflare/__init__.py +0 -32
- langflow/components/cloudflare/cloudflare.py +0 -81
- langflow/components/cohere/__init__.py +0 -40
- langflow/components/cohere/cohere_embeddings.py +0 -81
- langflow/components/cohere/cohere_models.py +0 -46
- langflow/components/cohere/cohere_rerank.py +0 -51
- langflow/components/composio/__init__.py +0 -73
- langflow/components/composio/composio_api.py +0 -268
- langflow/components/composio/dropbox_compnent.py +0 -11
- langflow/components/composio/github_composio.py +0 -11
- langflow/components/composio/gmail_composio.py +0 -38
- langflow/components/composio/googlecalendar_composio.py +0 -11
- langflow/components/composio/googlemeet_composio.py +0 -11
- langflow/components/composio/googletasks_composio.py +0 -8
- langflow/components/composio/linear_composio.py +0 -11
- langflow/components/composio/outlook_composio.py +0 -11
- langflow/components/composio/reddit_composio.py +0 -11
- langflow/components/composio/slack_composio.py +0 -11
- langflow/components/composio/slackbot_composio.py +0 -11
- langflow/components/composio/supabase_composio.py +0 -11
- langflow/components/composio/todoist_composio.py +0 -11
- langflow/components/composio/youtube_composio.py +0 -11
- langflow/components/confluence/__init__.py +0 -3
- langflow/components/confluence/confluence.py +0 -84
- langflow/components/couchbase/__init__.py +0 -34
- langflow/components/couchbase/couchbase.py +0 -102
- langflow/components/crewai/__init__.py +0 -49
- langflow/components/crewai/crewai.py +0 -107
- langflow/components/crewai/hierarchical_crew.py +0 -46
- langflow/components/crewai/hierarchical_task.py +0 -44
- langflow/components/crewai/sequential_crew.py +0 -52
- langflow/components/crewai/sequential_task.py +0 -73
- langflow/components/crewai/sequential_task_agent.py +0 -143
- langflow/components/custom_component/__init__.py +0 -34
- langflow/components/custom_component/custom_component.py +0 -31
- langflow/components/data/__init__.py +0 -25
- langflow/components/data/api_request.py +0 -545
- langflow/components/data/csv_to_data.py +0 -95
- langflow/components/data/directory.py +0 -113
- langflow/components/data/file.py +0 -586
- langflow/components/data/json_to_data.py +0 -98
- langflow/components/data/news_search.py +0 -164
- langflow/components/data/rss.py +0 -69
- langflow/components/data/sql_executor.py +0 -99
- langflow/components/data/url.py +0 -299
- langflow/components/data/web_search.py +0 -112
- langflow/components/data/webhook.py +0 -56
- langflow/components/datastax/__init__.py +0 -70
- langflow/components/datastax/astra_assistant_manager.py +0 -306
- langflow/components/datastax/astra_db.py +0 -69
- langflow/components/datastax/astra_vectorize.py +0 -124
- langflow/components/datastax/astradb_cql.py +0 -314
- langflow/components/datastax/astradb_graph.py +0 -319
- langflow/components/datastax/astradb_tool.py +0 -414
- langflow/components/datastax/astradb_vectorstore.py +0 -1285
- langflow/components/datastax/create_assistant.py +0 -58
- langflow/components/datastax/create_thread.py +0 -32
- langflow/components/datastax/dotenv.py +0 -35
- langflow/components/datastax/get_assistant.py +0 -37
- langflow/components/datastax/getenvvar.py +0 -30
- langflow/components/datastax/graph_rag.py +0 -141
- langflow/components/datastax/hcd.py +0 -314
- langflow/components/datastax/list_assistants.py +0 -25
- langflow/components/datastax/run.py +0 -89
- langflow/components/deactivated/__init__.py +0 -19
- langflow/components/deactivated/amazon_kendra.py +0 -66
- langflow/components/deactivated/chat_litellm_model.py +0 -158
- langflow/components/deactivated/code_block_extractor.py +0 -26
- langflow/components/deactivated/documents_to_data.py +0 -22
- langflow/components/deactivated/embed.py +0 -16
- langflow/components/deactivated/extract_key_from_data.py +0 -46
- langflow/components/deactivated/json_document_builder.py +0 -59
- langflow/components/deactivated/list_flows.py +0 -20
- langflow/components/deactivated/mcp_sse.py +0 -61
- langflow/components/deactivated/mcp_stdio.py +0 -62
- langflow/components/deactivated/merge_data.py +0 -93
- langflow/components/deactivated/message.py +0 -37
- langflow/components/deactivated/metal.py +0 -54
- langflow/components/deactivated/multi_query.py +0 -59
- langflow/components/deactivated/retriever.py +0 -43
- langflow/components/deactivated/selective_passthrough.py +0 -77
- langflow/components/deactivated/should_run_next.py +0 -40
- langflow/components/deactivated/split_text.py +0 -63
- langflow/components/deactivated/store_message.py +0 -24
- langflow/components/deactivated/sub_flow.py +0 -124
- langflow/components/deactivated/vectara_self_query.py +0 -76
- langflow/components/deactivated/vector_store.py +0 -24
- langflow/components/deepseek/__init__.py +0 -34
- langflow/components/deepseek/deepseek.py +0 -136
- langflow/components/docling/__init__.py +0 -43
- langflow/components/docling/chunk_docling_document.py +0 -186
- langflow/components/docling/docling_inline.py +0 -235
- langflow/components/docling/docling_remote.py +0 -193
- langflow/components/docling/export_docling_document.py +0 -117
- langflow/components/documentloaders/__init__.py +0 -0
- langflow/components/duckduckgo/__init__.py +0 -3
- langflow/components/duckduckgo/duck_duck_go_search_run.py +0 -92
- langflow/components/elastic/__init__.py +0 -37
- langflow/components/elastic/elasticsearch.py +0 -267
- langflow/components/elastic/opensearch.py +0 -243
- langflow/components/embeddings/__init__.py +0 -37
- langflow/components/embeddings/similarity.py +0 -76
- langflow/components/embeddings/text_embedder.py +0 -64
- langflow/components/exa/__init__.py +0 -3
- langflow/components/exa/exa_search.py +0 -68
- langflow/components/firecrawl/__init__.py +0 -43
- langflow/components/firecrawl/firecrawl_crawl_api.py +0 -88
- langflow/components/firecrawl/firecrawl_extract_api.py +0 -136
- langflow/components/firecrawl/firecrawl_map_api.py +0 -89
- langflow/components/firecrawl/firecrawl_scrape_api.py +0 -73
- langflow/components/git/__init__.py +0 -4
- langflow/components/git/git.py +0 -262
- langflow/components/git/gitextractor.py +0 -196
- langflow/components/glean/__init__.py +0 -3
- langflow/components/glean/glean_search_api.py +0 -173
- langflow/components/google/__init__.py +0 -17
- langflow/components/google/gmail.py +0 -192
- langflow/components/google/google_bq_sql_executor.py +0 -157
- langflow/components/google/google_drive.py +0 -92
- langflow/components/google/google_drive_search.py +0 -152
- langflow/components/google/google_generative_ai.py +0 -147
- langflow/components/google/google_generative_ai_embeddings.py +0 -141
- langflow/components/google/google_oauth_token.py +0 -89
- langflow/components/google/google_search_api_core.py +0 -68
- langflow/components/google/google_serper_api_core.py +0 -74
- langflow/components/groq/__init__.py +0 -34
- langflow/components/groq/groq.py +0 -140
- langflow/components/helpers/__init__.py +0 -52
- langflow/components/helpers/calculator_core.py +0 -89
- langflow/components/helpers/create_list.py +0 -40
- langflow/components/helpers/current_date.py +0 -42
- langflow/components/helpers/id_generator.py +0 -42
- langflow/components/helpers/memory.py +0 -251
- langflow/components/helpers/output_parser.py +0 -45
- langflow/components/helpers/store_message.py +0 -90
- langflow/components/homeassistant/__init__.py +0 -7
- langflow/components/homeassistant/home_assistant_control.py +0 -152
- langflow/components/homeassistant/list_home_assistant_states.py +0 -137
- langflow/components/huggingface/__init__.py +0 -37
- langflow/components/huggingface/huggingface.py +0 -197
- langflow/components/huggingface/huggingface_inference_api.py +0 -106
- langflow/components/ibm/__init__.py +0 -34
- langflow/components/ibm/watsonx.py +0 -203
- langflow/components/ibm/watsonx_embeddings.py +0 -135
- langflow/components/icosacomputing/__init__.py +0 -5
- langflow/components/icosacomputing/combinatorial_reasoner.py +0 -84
- langflow/components/input_output/__init__.py +0 -38
- langflow/components/input_output/chat.py +0 -120
- langflow/components/input_output/chat_output.py +0 -200
- langflow/components/input_output/text.py +0 -27
- langflow/components/input_output/text_output.py +0 -29
- langflow/components/jigsawstack/__init__.py +0 -23
- langflow/components/jigsawstack/ai_scrape.py +0 -126
- langflow/components/jigsawstack/ai_web_search.py +0 -136
- langflow/components/jigsawstack/file_read.py +0 -115
- langflow/components/jigsawstack/file_upload.py +0 -94
- langflow/components/jigsawstack/image_generation.py +0 -205
- langflow/components/jigsawstack/nsfw.py +0 -60
- langflow/components/jigsawstack/object_detection.py +0 -124
- langflow/components/jigsawstack/sentiment.py +0 -112
- langflow/components/jigsawstack/text_to_sql.py +0 -90
- langflow/components/jigsawstack/text_translate.py +0 -77
- langflow/components/jigsawstack/vocr.py +0 -107
- langflow/components/langchain_utilities/__init__.py +0 -109
- langflow/components/langchain_utilities/character.py +0 -53
- langflow/components/langchain_utilities/conversation.py +0 -52
- langflow/components/langchain_utilities/csv_agent.py +0 -107
- langflow/components/langchain_utilities/fake_embeddings.py +0 -26
- langflow/components/langchain_utilities/html_link_extractor.py +0 -35
- langflow/components/langchain_utilities/json_agent.py +0 -45
- langflow/components/langchain_utilities/langchain_hub.py +0 -126
- langflow/components/langchain_utilities/language_recursive.py +0 -49
- langflow/components/langchain_utilities/language_semantic.py +0 -138
- langflow/components/langchain_utilities/llm_checker.py +0 -39
- langflow/components/langchain_utilities/llm_math.py +0 -42
- langflow/components/langchain_utilities/natural_language.py +0 -61
- langflow/components/langchain_utilities/openai_tools.py +0 -53
- langflow/components/langchain_utilities/openapi.py +0 -48
- langflow/components/langchain_utilities/recursive_character.py +0 -60
- langflow/components/langchain_utilities/retrieval_qa.py +0 -83
- langflow/components/langchain_utilities/runnable_executor.py +0 -137
- langflow/components/langchain_utilities/self_query.py +0 -80
- langflow/components/langchain_utilities/spider.py +0 -142
- langflow/components/langchain_utilities/sql.py +0 -40
- langflow/components/langchain_utilities/sql_database.py +0 -35
- langflow/components/langchain_utilities/sql_generator.py +0 -78
- langflow/components/langchain_utilities/tool_calling.py +0 -59
- langflow/components/langchain_utilities/vector_store_info.py +0 -49
- langflow/components/langchain_utilities/vector_store_router.py +0 -33
- langflow/components/langchain_utilities/xml_agent.py +0 -71
- langflow/components/langwatch/__init__.py +0 -3
- langflow/components/langwatch/langwatch.py +0 -278
- langflow/components/link_extractors/__init__.py +0 -0
- langflow/components/lmstudio/__init__.py +0 -34
- langflow/components/lmstudio/lmstudioembeddings.py +0 -89
- langflow/components/lmstudio/lmstudiomodel.py +0 -129
- langflow/components/logic/__init__.py +0 -52
- langflow/components/logic/conditional_router.py +0 -171
- langflow/components/logic/data_conditional_router.py +0 -125
- langflow/components/logic/flow_tool.py +0 -110
- langflow/components/logic/listen.py +0 -29
- langflow/components/logic/loop.py +0 -125
- langflow/components/logic/notify.py +0 -88
- langflow/components/logic/pass_message.py +0 -35
- langflow/components/logic/run_flow.py +0 -71
- langflow/components/logic/sub_flow.py +0 -114
- langflow/components/maritalk/__init__.py +0 -32
- langflow/components/maritalk/maritalk.py +0 -52
- langflow/components/mem0/__init__.py +0 -3
- langflow/components/mem0/mem0_chat_memory.py +0 -136
- langflow/components/milvus/__init__.py +0 -34
- langflow/components/milvus/milvus.py +0 -115
- langflow/components/mistral/__init__.py +0 -37
- langflow/components/mistral/mistral.py +0 -114
- langflow/components/mistral/mistral_embeddings.py +0 -58
- langflow/components/models/__init__.py +0 -34
- langflow/components/models/embedding_model.py +0 -114
- langflow/components/models/language_model.py +0 -144
- langflow/components/mongodb/__init__.py +0 -34
- langflow/components/mongodb/mongodb_atlas.py +0 -213
- langflow/components/needle/__init__.py +0 -3
- langflow/components/needle/needle.py +0 -104
- langflow/components/notdiamond/__init__.py +0 -36
- langflow/components/notdiamond/notdiamond.py +0 -228
- langflow/components/novita/__init__.py +0 -32
- langflow/components/novita/novita.py +0 -130
- langflow/components/nvidia/__init__.py +0 -57
- langflow/components/nvidia/nvidia.py +0 -157
- langflow/components/nvidia/nvidia_embedding.py +0 -77
- langflow/components/nvidia/nvidia_ingest.py +0 -317
- langflow/components/nvidia/nvidia_rerank.py +0 -63
- langflow/components/nvidia/system_assist.py +0 -65
- langflow/components/olivya/__init__.py +0 -3
- langflow/components/olivya/olivya.py +0 -116
- langflow/components/ollama/__init__.py +0 -37
- langflow/components/ollama/ollama.py +0 -330
- langflow/components/ollama/ollama_embeddings.py +0 -106
- langflow/components/openai/__init__.py +0 -37
- langflow/components/openai/openai.py +0 -100
- langflow/components/openai/openai_chat_model.py +0 -158
- langflow/components/openrouter/__init__.py +0 -32
- langflow/components/openrouter/openrouter.py +0 -202
- langflow/components/output_parsers/__init__.py +0 -0
- langflow/components/perplexity/__init__.py +0 -34
- langflow/components/perplexity/perplexity.py +0 -75
- langflow/components/pgvector/__init__.py +0 -34
- langflow/components/pgvector/pgvector.py +0 -72
- langflow/components/pinecone/__init__.py +0 -34
- langflow/components/pinecone/pinecone.py +0 -134
- langflow/components/processing/alter_metadata.py +0 -108
- langflow/components/processing/batch_run.py +0 -205
- langflow/components/processing/combine_text.py +0 -39
- langflow/components/processing/create_data.py +0 -110
- langflow/components/processing/data_operations.py +0 -438
- langflow/components/processing/data_to_dataframe.py +0 -70
- langflow/components/processing/dataframe_operations.py +0 -321
- langflow/components/processing/extract_key.py +0 -53
- langflow/components/processing/filter_data.py +0 -42
- langflow/components/processing/filter_data_values.py +0 -88
- langflow/components/processing/json_cleaner.py +0 -103
- langflow/components/processing/lambda_filter.py +0 -154
- langflow/components/processing/llm_router.py +0 -499
- langflow/components/processing/merge_data.py +0 -90
- langflow/components/processing/message_to_data.py +0 -36
- langflow/components/processing/parse_data.py +0 -70
- langflow/components/processing/parse_dataframe.py +0 -68
- langflow/components/processing/parse_json_data.py +0 -90
- langflow/components/processing/parser.py +0 -143
- langflow/components/processing/prompt.py +0 -67
- langflow/components/processing/python_repl_core.py +0 -98
- langflow/components/processing/regex.py +0 -82
- langflow/components/processing/save_file.py +0 -208
- langflow/components/processing/select_data.py +0 -48
- langflow/components/processing/split_text.py +0 -141
- langflow/components/processing/structured_output.py +0 -202
- langflow/components/processing/update_data.py +0 -160
- langflow/components/prototypes/__init__.py +0 -34
- langflow/components/prototypes/python_function.py +0 -73
- langflow/components/qdrant/__init__.py +0 -34
- langflow/components/qdrant/qdrant.py +0 -109
- langflow/components/redis/__init__.py +0 -37
- langflow/components/redis/redis.py +0 -89
- langflow/components/redis/redis_chat.py +0 -43
- langflow/components/sambanova/__init__.py +0 -32
- langflow/components/sambanova/sambanova.py +0 -84
- langflow/components/scrapegraph/__init__.py +0 -40
- langflow/components/scrapegraph/scrapegraph_markdownify_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_search_api.py +0 -64
- langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +0 -71
- langflow/components/searchapi/__init__.py +0 -36
- langflow/components/searchapi/search.py +0 -79
- langflow/components/serpapi/__init__.py +0 -3
- langflow/components/serpapi/serp.py +0 -115
- langflow/components/serper/__init__.py +0 -3
- langflow/components/serper/google_serper_api_core.py +0 -74
- langflow/components/supabase/__init__.py +0 -37
- langflow/components/supabase/supabase.py +0 -76
- langflow/components/tavily/__init__.py +0 -4
- langflow/components/tavily/tavily_extract.py +0 -117
- langflow/components/tavily/tavily_search.py +0 -212
- langflow/components/textsplitters/__init__.py +0 -0
- langflow/components/toolkits/__init__.py +0 -0
- langflow/components/tools/__init__.py +0 -72
- langflow/components/tools/calculator.py +0 -103
- langflow/components/tools/google_search_api.py +0 -45
- langflow/components/tools/google_serper_api.py +0 -115
- langflow/components/tools/python_code_structured_tool.py +0 -327
- langflow/components/tools/python_repl.py +0 -97
- langflow/components/tools/search_api.py +0 -87
- langflow/components/tools/searxng.py +0 -145
- langflow/components/tools/serp_api.py +0 -119
- langflow/components/tools/tavily_search_tool.py +0 -344
- langflow/components/tools/wikidata_api.py +0 -102
- langflow/components/tools/wikipedia_api.py +0 -49
- langflow/components/tools/yahoo_finance.py +0 -124
- langflow/components/twelvelabs/__init__.py +0 -52
- langflow/components/twelvelabs/convert_astra_results.py +0 -84
- langflow/components/twelvelabs/pegasus_index.py +0 -311
- langflow/components/twelvelabs/split_video.py +0 -291
- langflow/components/twelvelabs/text_embeddings.py +0 -57
- langflow/components/twelvelabs/twelvelabs_pegasus.py +0 -408
- langflow/components/twelvelabs/video_embeddings.py +0 -100
- langflow/components/twelvelabs/video_file.py +0 -179
- langflow/components/unstructured/__init__.py +0 -3
- langflow/components/unstructured/unstructured.py +0 -121
- langflow/components/upstash/__init__.py +0 -34
- langflow/components/upstash/upstash.py +0 -124
- langflow/components/vectara/__init__.py +0 -37
- langflow/components/vectara/vectara.py +0 -97
- langflow/components/vectara/vectara_rag.py +0 -164
- langflow/components/vectorstores/__init__.py +0 -34
- langflow/components/vectorstores/local_db.py +0 -261
- langflow/components/vertexai/__init__.py +0 -37
- langflow/components/vertexai/vertexai.py +0 -71
- langflow/components/vertexai/vertexai_embeddings.py +0 -67
- langflow/components/weaviate/__init__.py +0 -34
- langflow/components/weaviate/weaviate.py +0 -89
- langflow/components/wikipedia/__init__.py +0 -4
- langflow/components/wikipedia/wikidata.py +0 -86
- langflow/components/wikipedia/wikipedia.py +0 -53
- langflow/components/wolframalpha/__init__.py +0 -3
- langflow/components/wolframalpha/wolfram_alpha_api.py +0 -54
- langflow/components/xai/__init__.py +0 -32
- langflow/components/xai/xai.py +0 -167
- langflow/components/yahoosearch/__init__.py +0 -3
- langflow/components/yahoosearch/yahoo.py +0 -137
- langflow/components/youtube/__init__.py +0 -52
- langflow/components/youtube/channel.py +0 -227
- langflow/components/youtube/comments.py +0 -231
- langflow/components/youtube/playlist.py +0 -33
- langflow/components/youtube/search.py +0 -120
- langflow/components/youtube/trending.py +0 -285
- langflow/components/youtube/video_details.py +0 -263
- langflow/components/youtube/youtube_transcripts.py +0 -118
- langflow/components/zep/__init__.py +0 -3
- langflow/components/zep/zep.py +0 -44
- langflow/custom/attributes.py +0 -86
- langflow/custom/code_parser/__init__.py +0 -3
- langflow/custom/code_parser/code_parser.py +0 -361
- langflow/custom/custom_component/base_component.py +0 -118
- langflow/custom/dependency_analyzer.py +0 -165
- langflow/custom/directory_reader/__init__.py +0 -3
- langflow/custom/directory_reader/directory_reader.py +0 -359
- langflow/custom/directory_reader/utils.py +0 -171
- langflow/custom/eval.py +0 -12
- langflow/custom/schema.py +0 -32
- langflow/custom/tree_visitor.py +0 -21
- langflow/frontend/assets/lazyIconImports-Ci-S9xBA.js +0 -2
- langflow/graph/edge/__init__.py +0 -0
- langflow/graph/edge/base.py +0 -277
- langflow/graph/edge/schema.py +0 -119
- langflow/graph/edge/utils.py +0 -0
- langflow/graph/graph/__init__.py +0 -0
- langflow/graph/graph/ascii.py +0 -202
- langflow/graph/graph/base.py +0 -2185
- langflow/graph/graph/constants.py +0 -58
- langflow/graph/graph/runnable_vertices_manager.py +0 -133
- langflow/graph/graph/schema.py +0 -53
- langflow/graph/graph/state_model.py +0 -66
- langflow/graph/graph/utils.py +0 -1024
- langflow/graph/schema.py +0 -75
- langflow/graph/state/__init__.py +0 -0
- langflow/graph/state/model.py +0 -237
- langflow/graph/utils.py +0 -229
- langflow/graph/vertex/__init__.py +0 -0
- langflow/graph/vertex/base.py +0 -811
- langflow/graph/vertex/constants.py +0 -0
- langflow/graph/vertex/exceptions.py +0 -4
- langflow/graph/vertex/param_handler.py +0 -255
- langflow/graph/vertex/schema.py +0 -26
- langflow/graph/vertex/utils.py +0 -19
- langflow/graph/vertex/vertex_types.py +0 -489
- langflow/legacy_custom/__init__.py +0 -0
- langflow/legacy_custom/customs.py +0 -16
- langflow/load/load.py +0 -250
- langflow/logging/logger.py +0 -369
- langflow/processing/utils.py +0 -25
- langflow/schema/openai_responses_schemas.py +0 -74
- langflow/schema/serialize.py +0 -13
- langflow/services/chat/config.py +0 -2
- langflow/services/settings/auth.py +0 -130
- langflow/services/settings/constants.py +0 -31
- langflow/services/settings/manager.py +0 -49
- langflow/services/settings/utils.py +0 -40
- langflow/template/field/prompt.py +0 -2
- langflow/template/frontend_node/__init__.py +0 -6
- langflow/template/frontend_node/base.py +0 -212
- langflow/template/frontend_node/constants.py +0 -65
- langflow/template/frontend_node/custom_components.py +0 -97
- langflow/template/template/__init__.py +0 -0
- langflow/template/template/base.py +0 -99
- langflow/utils/async_helpers.py +0 -42
- langflow/utils/concurrency.py +0 -60
- langflow/utils/util_strings.py +0 -56
- langflow_base_nightly-0.5.1.dev2.dist-info/RECORD +0 -1159
- {langflow_base_nightly-0.5.1.dev2.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-0.5.1.dev2.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/entry_points.txt +0 -0
langflow/load/load.py
DELETED
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from io import StringIO
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
|
|
5
|
-
from aiofile import async_open
|
|
6
|
-
from dotenv import dotenv_values
|
|
7
|
-
|
|
8
|
-
from langflow.graph.graph.base import Graph
|
|
9
|
-
from langflow.graph.schema import RunOutputs
|
|
10
|
-
from langflow.load.utils import replace_tweaks_with_env
|
|
11
|
-
from langflow.logging.logger import configure
|
|
12
|
-
from langflow.processing.process import process_tweaks, run_graph
|
|
13
|
-
from langflow.utils.async_helpers import run_until_complete
|
|
14
|
-
from langflow.utils.util import update_settings
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
async def aload_flow_from_json(
|
|
18
|
-
flow: Path | str | dict,
|
|
19
|
-
*,
|
|
20
|
-
tweaks: dict | None = None,
|
|
21
|
-
log_level: str | None = None,
|
|
22
|
-
log_file: str | None = None,
|
|
23
|
-
log_rotation: str | None = None,
|
|
24
|
-
env_file: str | None = None,
|
|
25
|
-
cache: str | None = None,
|
|
26
|
-
disable_logs: bool | None = True,
|
|
27
|
-
) -> Graph:
|
|
28
|
-
"""Load a flow graph from a JSON file or a JSON object.
|
|
29
|
-
|
|
30
|
-
Args:
|
|
31
|
-
flow (Union[Path, str, dict]): The flow to load. It can be a file path (str or Path object)
|
|
32
|
-
or a JSON object (dict).
|
|
33
|
-
tweaks (Optional[dict]): Optional tweaks to apply to the loaded flow graph.
|
|
34
|
-
log_level (Optional[str]): Optional log level to configure for the flow processing.
|
|
35
|
-
log_file (Optional[str]): Optional log file to configure for the flow processing.
|
|
36
|
-
log_rotation (Optional[str]): Optional log rotation(Time/Size) to configure for the flow processing.
|
|
37
|
-
env_file (Optional[str]): Optional .env file to override environment variables.
|
|
38
|
-
cache (Optional[str]): Optional cache path to update the flow settings.
|
|
39
|
-
disable_logs (Optional[bool], default=True): Optional flag to disable logs during flow processing.
|
|
40
|
-
If log_level or log_file are set, disable_logs is not used.
|
|
41
|
-
|
|
42
|
-
Returns:
|
|
43
|
-
Graph: The loaded flow graph as a Graph object.
|
|
44
|
-
|
|
45
|
-
Raises:
|
|
46
|
-
TypeError: If the input is neither a file path (str or Path object) nor a JSON object (dict).
|
|
47
|
-
|
|
48
|
-
"""
|
|
49
|
-
# If input is a file path, load JSON from the file
|
|
50
|
-
log_file_path = Path(log_file) if log_file else None
|
|
51
|
-
configure(log_level=log_level, log_file=log_file_path, disable=disable_logs, log_rotation=log_rotation)
|
|
52
|
-
|
|
53
|
-
# override env variables with .env file
|
|
54
|
-
if env_file and tweaks is not None:
|
|
55
|
-
async with async_open(Path(env_file), encoding="utf-8") as f:
|
|
56
|
-
content = await f.read()
|
|
57
|
-
env_vars = dotenv_values(stream=StringIO(content))
|
|
58
|
-
tweaks = replace_tweaks_with_env(tweaks=tweaks, env_vars=env_vars)
|
|
59
|
-
|
|
60
|
-
# Update settings with cache and components path
|
|
61
|
-
await update_settings(cache=cache)
|
|
62
|
-
|
|
63
|
-
if isinstance(flow, str | Path):
|
|
64
|
-
async with async_open(Path(flow), encoding="utf-8") as f:
|
|
65
|
-
content = await f.read()
|
|
66
|
-
flow_graph = json.loads(content)
|
|
67
|
-
# If input is a dictionary, assume it's a JSON object
|
|
68
|
-
elif isinstance(flow, dict):
|
|
69
|
-
flow_graph = flow
|
|
70
|
-
else:
|
|
71
|
-
msg = "Input must be either a file path (str) or a JSON object (dict)"
|
|
72
|
-
raise TypeError(msg)
|
|
73
|
-
|
|
74
|
-
graph_data = flow_graph["data"]
|
|
75
|
-
if tweaks is not None:
|
|
76
|
-
graph_data = process_tweaks(graph_data, tweaks)
|
|
77
|
-
|
|
78
|
-
return Graph.from_payload(graph_data)
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
def load_flow_from_json(
|
|
82
|
-
flow: Path | str | dict,
|
|
83
|
-
*,
|
|
84
|
-
tweaks: dict | None = None,
|
|
85
|
-
log_level: str | None = None,
|
|
86
|
-
log_file: str | None = None,
|
|
87
|
-
log_rotation: str | None = None,
|
|
88
|
-
env_file: str | None = None,
|
|
89
|
-
cache: str | None = None,
|
|
90
|
-
disable_logs: bool | None = True,
|
|
91
|
-
) -> Graph:
|
|
92
|
-
"""Load a flow graph from a JSON file or a JSON object.
|
|
93
|
-
|
|
94
|
-
Args:
|
|
95
|
-
flow (Union[Path, str, dict]): The flow to load. It can be a file path (str or Path object)
|
|
96
|
-
or a JSON object (dict).
|
|
97
|
-
tweaks (Optional[dict]): Optional tweaks to apply to the loaded flow graph.
|
|
98
|
-
log_level (Optional[str]): Optional log level to configure for the flow processing.
|
|
99
|
-
log_file (Optional[str]): Optional log file to configure for the flow processing.
|
|
100
|
-
log_rotation (Optional[str]): Optional log rotation(Time/Size) to configure for the flow processing.
|
|
101
|
-
env_file (Optional[str]): Optional .env file to override environment variables.
|
|
102
|
-
cache (Optional[str]): Optional cache path to update the flow settings.
|
|
103
|
-
disable_logs (Optional[bool], default=True): Optional flag to disable logs during flow processing.
|
|
104
|
-
If log_level or log_file are set, disable_logs is not used.
|
|
105
|
-
|
|
106
|
-
Returns:
|
|
107
|
-
Graph: The loaded flow graph as a Graph object.
|
|
108
|
-
|
|
109
|
-
Raises:
|
|
110
|
-
TypeError: If the input is neither a file path (str or Path object) nor a JSON object (dict).
|
|
111
|
-
|
|
112
|
-
"""
|
|
113
|
-
return run_until_complete(
|
|
114
|
-
aload_flow_from_json(
|
|
115
|
-
flow,
|
|
116
|
-
tweaks=tweaks,
|
|
117
|
-
log_level=log_level,
|
|
118
|
-
log_file=log_file,
|
|
119
|
-
log_rotation=log_rotation,
|
|
120
|
-
env_file=env_file,
|
|
121
|
-
cache=cache,
|
|
122
|
-
disable_logs=disable_logs,
|
|
123
|
-
)
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
async def arun_flow_from_json(
|
|
128
|
-
flow: Path | str | dict,
|
|
129
|
-
input_value: str,
|
|
130
|
-
*,
|
|
131
|
-
session_id: str | None = None,
|
|
132
|
-
tweaks: dict | None = None,
|
|
133
|
-
input_type: str = "chat",
|
|
134
|
-
output_type: str = "chat",
|
|
135
|
-
output_component: str | None = None,
|
|
136
|
-
log_level: str | None = None,
|
|
137
|
-
log_file: str | None = None,
|
|
138
|
-
log_rotation: str | None = None,
|
|
139
|
-
env_file: str | None = None,
|
|
140
|
-
cache: str | None = None,
|
|
141
|
-
disable_logs: bool | None = True,
|
|
142
|
-
fallback_to_env_vars: bool = False,
|
|
143
|
-
) -> list[RunOutputs]:
|
|
144
|
-
"""Run a flow from a JSON file or dictionary.
|
|
145
|
-
|
|
146
|
-
Args:
|
|
147
|
-
flow (Union[Path, str, dict]): The path to the JSON file or the JSON dictionary representing the flow.
|
|
148
|
-
input_value (str): The input value to be processed by the flow.
|
|
149
|
-
session_id (str | None, optional): The session ID to be used for the flow. Defaults to None.
|
|
150
|
-
tweaks (Optional[dict], optional): Optional tweaks to be applied to the flow. Defaults to None.
|
|
151
|
-
input_type (str, optional): The type of the input value. Defaults to "chat".
|
|
152
|
-
output_type (str, optional): The type of the output value. Defaults to "chat".
|
|
153
|
-
output_component (Optional[str], optional): The specific component to output. Defaults to None.
|
|
154
|
-
log_level (Optional[str], optional): The log level to use. Defaults to None.
|
|
155
|
-
log_file (Optional[str], optional): The log file to write logs to. Defaults to None.
|
|
156
|
-
log_rotation (Optional[str], optional): The log rotation to use. Defaults to None.
|
|
157
|
-
env_file (Optional[str], optional): The environment file to load. Defaults to None.
|
|
158
|
-
cache (Optional[str], optional): The cache directory to use. Defaults to None.
|
|
159
|
-
disable_logs (Optional[bool], optional): Whether to disable logs. Defaults to True.
|
|
160
|
-
fallback_to_env_vars (bool, optional): Whether Global Variables should fallback to environment variables if
|
|
161
|
-
not found. Defaults to False.
|
|
162
|
-
|
|
163
|
-
Returns:
|
|
164
|
-
List[RunOutputs]: A list of RunOutputs objects representing the results of running the flow.
|
|
165
|
-
"""
|
|
166
|
-
if tweaks is None:
|
|
167
|
-
tweaks = {}
|
|
168
|
-
tweaks["stream"] = False
|
|
169
|
-
graph = await aload_flow_from_json(
|
|
170
|
-
flow=flow,
|
|
171
|
-
tweaks=tweaks,
|
|
172
|
-
log_level=log_level,
|
|
173
|
-
log_file=log_file,
|
|
174
|
-
log_rotation=log_rotation,
|
|
175
|
-
env_file=env_file,
|
|
176
|
-
cache=cache,
|
|
177
|
-
disable_logs=disable_logs,
|
|
178
|
-
)
|
|
179
|
-
return await run_graph(
|
|
180
|
-
graph=graph,
|
|
181
|
-
session_id=session_id,
|
|
182
|
-
input_value=input_value,
|
|
183
|
-
input_type=input_type,
|
|
184
|
-
output_type=output_type,
|
|
185
|
-
output_component=output_component,
|
|
186
|
-
fallback_to_env_vars=fallback_to_env_vars,
|
|
187
|
-
)
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
def run_flow_from_json(
|
|
191
|
-
flow: Path | str | dict,
|
|
192
|
-
input_value: str,
|
|
193
|
-
*,
|
|
194
|
-
session_id: str | None = None,
|
|
195
|
-
tweaks: dict | None = None,
|
|
196
|
-
input_type: str = "chat",
|
|
197
|
-
output_type: str = "chat",
|
|
198
|
-
output_component: str | None = None,
|
|
199
|
-
log_level: str | None = None,
|
|
200
|
-
log_file: str | None = None,
|
|
201
|
-
log_rotation: str | None = None,
|
|
202
|
-
env_file: str | None = None,
|
|
203
|
-
cache: str | None = None,
|
|
204
|
-
disable_logs: bool | None = True,
|
|
205
|
-
fallback_to_env_vars: bool = False,
|
|
206
|
-
) -> list[RunOutputs]:
|
|
207
|
-
"""Run a flow from a JSON file or dictionary.
|
|
208
|
-
|
|
209
|
-
Note:
|
|
210
|
-
This function is a synchronous wrapper around `arun_flow_from_json`.
|
|
211
|
-
It creates an event loop if one does not exist and runs the flow.
|
|
212
|
-
|
|
213
|
-
Args:
|
|
214
|
-
flow (Union[Path, str, dict]): The path to the JSON file or the JSON dictionary representing the flow.
|
|
215
|
-
input_value (str): The input value to be processed by the flow.
|
|
216
|
-
session_id (str | None, optional): The session ID to be used for the flow. Defaults to None.
|
|
217
|
-
tweaks (Optional[dict], optional): Optional tweaks to be applied to the flow. Defaults to None.
|
|
218
|
-
input_type (str, optional): The type of the input value. Defaults to "chat".
|
|
219
|
-
output_type (str, optional): The type of the output value. Defaults to "chat".
|
|
220
|
-
output_component (Optional[str], optional): The specific component to output. Defaults to None.
|
|
221
|
-
log_level (Optional[str], optional): The log level to use. Defaults to None.
|
|
222
|
-
log_file (Optional[str], optional): The log file to write logs to. Defaults to None.
|
|
223
|
-
log_rotation (Optional[str], optional): The log rotation to use. Defaults to None.
|
|
224
|
-
env_file (Optional[str], optional): The environment file to load. Defaults to None.
|
|
225
|
-
cache (Optional[str], optional): The cache directory to use. Defaults to None.
|
|
226
|
-
disable_logs (Optional[bool], optional): Whether to disable logs. Defaults to True.
|
|
227
|
-
fallback_to_env_vars (bool, optional): Whether Global Variables should fallback to environment variables if
|
|
228
|
-
not found. Defaults to False.
|
|
229
|
-
|
|
230
|
-
Returns:
|
|
231
|
-
List[RunOutputs]: A list of RunOutputs objects representing the results of running the flow.
|
|
232
|
-
"""
|
|
233
|
-
return run_until_complete(
|
|
234
|
-
arun_flow_from_json(
|
|
235
|
-
flow,
|
|
236
|
-
input_value,
|
|
237
|
-
session_id=session_id,
|
|
238
|
-
tweaks=tweaks,
|
|
239
|
-
input_type=input_type,
|
|
240
|
-
output_type=output_type,
|
|
241
|
-
output_component=output_component,
|
|
242
|
-
log_level=log_level,
|
|
243
|
-
log_file=log_file,
|
|
244
|
-
log_rotation=log_rotation,
|
|
245
|
-
env_file=env_file,
|
|
246
|
-
cache=cache,
|
|
247
|
-
disable_logs=disable_logs,
|
|
248
|
-
fallback_to_env_vars=fallback_to_env_vars,
|
|
249
|
-
)
|
|
250
|
-
)
|
langflow/logging/logger.py
DELETED
|
@@ -1,369 +0,0 @@
|
|
|
1
|
-
"""Logging configuration for Langflow using structlog."""
|
|
2
|
-
|
|
3
|
-
import json
|
|
4
|
-
import logging
|
|
5
|
-
import logging.handlers
|
|
6
|
-
import os
|
|
7
|
-
import sys
|
|
8
|
-
from collections import deque
|
|
9
|
-
from datetime import datetime
|
|
10
|
-
from pathlib import Path
|
|
11
|
-
from threading import Lock, Semaphore
|
|
12
|
-
from typing import Any, TypedDict
|
|
13
|
-
|
|
14
|
-
import orjson
|
|
15
|
-
import structlog
|
|
16
|
-
from platformdirs import user_cache_dir
|
|
17
|
-
from typing_extensions import NotRequired
|
|
18
|
-
|
|
19
|
-
from langflow.settings import DEV
|
|
20
|
-
|
|
21
|
-
VALID_LOG_LEVELS = ["DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
|
|
22
|
-
|
|
23
|
-
# Map log level names to integers
|
|
24
|
-
LOG_LEVEL_MAP = {
|
|
25
|
-
"DEBUG": logging.DEBUG,
|
|
26
|
-
"INFO": logging.INFO,
|
|
27
|
-
"WARNING": logging.WARNING,
|
|
28
|
-
"ERROR": logging.ERROR,
|
|
29
|
-
"CRITICAL": logging.CRITICAL,
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class SizedLogBuffer:
|
|
34
|
-
"""A buffer for storing log messages for the log retrieval API."""
|
|
35
|
-
|
|
36
|
-
def __init__(
|
|
37
|
-
self,
|
|
38
|
-
max_readers: int = 20, # max number of concurrent readers for the buffer
|
|
39
|
-
):
|
|
40
|
-
"""Initialize the buffer.
|
|
41
|
-
|
|
42
|
-
The buffer can be overwritten by an env variable LANGFLOW_LOG_RETRIEVER_BUFFER_SIZE
|
|
43
|
-
because the logger is initialized before the settings_service are loaded.
|
|
44
|
-
"""
|
|
45
|
-
self.buffer: deque = deque()
|
|
46
|
-
|
|
47
|
-
self._max_readers = max_readers
|
|
48
|
-
self._wlock = Lock()
|
|
49
|
-
self._rsemaphore = Semaphore(max_readers)
|
|
50
|
-
self._max = 0
|
|
51
|
-
|
|
52
|
-
def get_write_lock(self) -> Lock:
|
|
53
|
-
"""Get the write lock."""
|
|
54
|
-
return self._wlock
|
|
55
|
-
|
|
56
|
-
def write(self, message: str) -> None:
|
|
57
|
-
"""Write a message to the buffer."""
|
|
58
|
-
record = json.loads(message)
|
|
59
|
-
log_entry = record.get("event", record.get("msg", record.get("text", "")))
|
|
60
|
-
|
|
61
|
-
# Extract timestamp - support both direct timestamp and nested record.time.timestamp
|
|
62
|
-
timestamp = record.get("timestamp", 0)
|
|
63
|
-
if timestamp == 0 and "record" in record:
|
|
64
|
-
# Support nested structure from tests: record.time.timestamp
|
|
65
|
-
time_info = record["record"].get("time", {})
|
|
66
|
-
timestamp = time_info.get("timestamp", 0)
|
|
67
|
-
|
|
68
|
-
if isinstance(timestamp, str):
|
|
69
|
-
# Parse ISO format timestamp
|
|
70
|
-
dt = datetime.fromisoformat(timestamp.replace("Z", "+00:00"))
|
|
71
|
-
epoch = int(dt.timestamp() * 1000)
|
|
72
|
-
else:
|
|
73
|
-
epoch = int(timestamp * 1000)
|
|
74
|
-
|
|
75
|
-
with self._wlock:
|
|
76
|
-
if len(self.buffer) >= self.max:
|
|
77
|
-
for _ in range(len(self.buffer) - self.max + 1):
|
|
78
|
-
self.buffer.popleft()
|
|
79
|
-
self.buffer.append((epoch, log_entry))
|
|
80
|
-
|
|
81
|
-
def __len__(self) -> int:
|
|
82
|
-
"""Get the length of the buffer."""
|
|
83
|
-
return len(self.buffer)
|
|
84
|
-
|
|
85
|
-
def get_after_timestamp(self, timestamp: int, lines: int = 5) -> dict[int, str]:
|
|
86
|
-
"""Get log entries after a timestamp."""
|
|
87
|
-
rc = {}
|
|
88
|
-
|
|
89
|
-
self._rsemaphore.acquire()
|
|
90
|
-
try:
|
|
91
|
-
with self._wlock:
|
|
92
|
-
for ts, msg in self.buffer:
|
|
93
|
-
if lines == 0:
|
|
94
|
-
break
|
|
95
|
-
if ts >= timestamp and lines > 0:
|
|
96
|
-
rc[ts] = msg
|
|
97
|
-
lines -= 1
|
|
98
|
-
finally:
|
|
99
|
-
self._rsemaphore.release()
|
|
100
|
-
|
|
101
|
-
return rc
|
|
102
|
-
|
|
103
|
-
def get_before_timestamp(self, timestamp: int, lines: int = 5) -> dict[int, str]:
|
|
104
|
-
"""Get log entries before a timestamp."""
|
|
105
|
-
self._rsemaphore.acquire()
|
|
106
|
-
try:
|
|
107
|
-
with self._wlock:
|
|
108
|
-
as_list = list(self.buffer)
|
|
109
|
-
max_index = -1
|
|
110
|
-
for i, (ts, _) in enumerate(as_list):
|
|
111
|
-
if ts >= timestamp:
|
|
112
|
-
max_index = i
|
|
113
|
-
break
|
|
114
|
-
if max_index == -1:
|
|
115
|
-
return self.get_last_n(lines)
|
|
116
|
-
rc = {}
|
|
117
|
-
start_from = max(max_index - lines, 0)
|
|
118
|
-
for i, (ts, msg) in enumerate(as_list):
|
|
119
|
-
if start_from <= i < max_index:
|
|
120
|
-
rc[ts] = msg
|
|
121
|
-
return rc
|
|
122
|
-
finally:
|
|
123
|
-
self._rsemaphore.release()
|
|
124
|
-
|
|
125
|
-
def get_last_n(self, last_idx: int) -> dict[int, str]:
|
|
126
|
-
"""Get the last n log entries."""
|
|
127
|
-
self._rsemaphore.acquire()
|
|
128
|
-
try:
|
|
129
|
-
with self._wlock:
|
|
130
|
-
as_list = list(self.buffer)
|
|
131
|
-
return dict(as_list[-last_idx:])
|
|
132
|
-
finally:
|
|
133
|
-
self._rsemaphore.release()
|
|
134
|
-
|
|
135
|
-
@property
|
|
136
|
-
def max(self) -> int:
|
|
137
|
-
"""Get the maximum buffer size."""
|
|
138
|
-
# Get it dynamically to allow for env variable changes
|
|
139
|
-
if self._max == 0:
|
|
140
|
-
env_buffer_size = os.getenv("LANGFLOW_LOG_RETRIEVER_BUFFER_SIZE", "0")
|
|
141
|
-
if env_buffer_size.isdigit():
|
|
142
|
-
self._max = int(env_buffer_size)
|
|
143
|
-
return self._max
|
|
144
|
-
|
|
145
|
-
@max.setter
|
|
146
|
-
def max(self, value: int) -> None:
|
|
147
|
-
"""Set the maximum buffer size."""
|
|
148
|
-
self._max = value
|
|
149
|
-
|
|
150
|
-
def enabled(self) -> bool:
|
|
151
|
-
"""Check if the buffer is enabled."""
|
|
152
|
-
return self.max > 0
|
|
153
|
-
|
|
154
|
-
def max_size(self) -> int:
|
|
155
|
-
"""Get the maximum buffer size."""
|
|
156
|
-
return self.max
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
# log buffer for capturing log messages
|
|
160
|
-
log_buffer = SizedLogBuffer()
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
def add_serialized(_logger: Any, _method_name: str, event_dict: dict[str, Any]) -> dict[str, Any]:
|
|
164
|
-
"""Add serialized version of the log entry."""
|
|
165
|
-
# Only add serialized if we're in JSON mode (for log buffer)
|
|
166
|
-
if log_buffer.enabled():
|
|
167
|
-
subset = {
|
|
168
|
-
"timestamp": event_dict.get("timestamp", 0),
|
|
169
|
-
"message": event_dict.get("event", ""),
|
|
170
|
-
"level": _method_name.upper(),
|
|
171
|
-
"module": event_dict.get("module", ""),
|
|
172
|
-
}
|
|
173
|
-
event_dict["serialized"] = orjson.dumps(subset)
|
|
174
|
-
return event_dict
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
def remove_exception_in_production(_logger: Any, _method_name: str, event_dict: dict[str, Any]) -> dict[str, Any]:
|
|
178
|
-
"""Remove exception details in production."""
|
|
179
|
-
if DEV is False:
|
|
180
|
-
event_dict.pop("exception", None)
|
|
181
|
-
event_dict.pop("exc_info", None)
|
|
182
|
-
return event_dict
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
def buffer_writer(_logger: Any, _method_name: str, event_dict: dict[str, Any]) -> dict[str, Any]:
|
|
186
|
-
"""Write to log buffer if enabled."""
|
|
187
|
-
if log_buffer.enabled():
|
|
188
|
-
# Create a JSON representation for the buffer
|
|
189
|
-
log_buffer.write(json.dumps(event_dict))
|
|
190
|
-
return event_dict
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
class LogConfig(TypedDict):
|
|
194
|
-
"""Configuration for logging."""
|
|
195
|
-
|
|
196
|
-
log_level: NotRequired[str]
|
|
197
|
-
log_file: NotRequired[Path]
|
|
198
|
-
disable: NotRequired[bool]
|
|
199
|
-
log_env: NotRequired[str]
|
|
200
|
-
log_format: NotRequired[str]
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
def configure(
|
|
204
|
-
*,
|
|
205
|
-
log_level: str | None = None,
|
|
206
|
-
log_file: Path | None = None,
|
|
207
|
-
disable: bool | None = False,
|
|
208
|
-
log_env: str | None = None,
|
|
209
|
-
log_format: str | None = None,
|
|
210
|
-
log_rotation: str | None = None,
|
|
211
|
-
) -> None:
|
|
212
|
-
"""Configure the logger."""
|
|
213
|
-
if os.getenv("LANGFLOW_LOG_LEVEL", "").upper() in VALID_LOG_LEVELS and log_level is None:
|
|
214
|
-
log_level = os.getenv("LANGFLOW_LOG_LEVEL")
|
|
215
|
-
if log_level is None:
|
|
216
|
-
log_level = "ERROR"
|
|
217
|
-
|
|
218
|
-
if log_file is None:
|
|
219
|
-
env_log_file = os.getenv("LANGFLOW_LOG_FILE", "")
|
|
220
|
-
log_file = Path(env_log_file) if env_log_file else None
|
|
221
|
-
|
|
222
|
-
if log_env is None:
|
|
223
|
-
log_env = os.getenv("LANGFLOW_LOG_ENV", "")
|
|
224
|
-
|
|
225
|
-
# Get log format from env if not provided
|
|
226
|
-
if log_format is None:
|
|
227
|
-
log_format = os.getenv("LANGFLOW_LOG_FORMAT")
|
|
228
|
-
|
|
229
|
-
# Configure processors based on environment
|
|
230
|
-
processors = [
|
|
231
|
-
structlog.contextvars.merge_contextvars,
|
|
232
|
-
structlog.processors.add_log_level,
|
|
233
|
-
structlog.processors.TimeStamper(fmt="iso"),
|
|
234
|
-
add_serialized,
|
|
235
|
-
remove_exception_in_production,
|
|
236
|
-
buffer_writer,
|
|
237
|
-
]
|
|
238
|
-
|
|
239
|
-
# Configure output based on environment
|
|
240
|
-
if log_env.lower() == "container" or log_env.lower() == "container_json":
|
|
241
|
-
processors.append(structlog.processors.JSONRenderer())
|
|
242
|
-
elif log_env.lower() == "container_csv":
|
|
243
|
-
processors.append(
|
|
244
|
-
structlog.processors.KeyValueRenderer(
|
|
245
|
-
key_order=["timestamp", "level", "module", "event"], drop_missing=True
|
|
246
|
-
)
|
|
247
|
-
)
|
|
248
|
-
else:
|
|
249
|
-
# Use rich console for pretty printing based on environment variable
|
|
250
|
-
log_stdout_pretty = os.getenv("LANGFLOW_PRETTY_LOGS", "true").lower() == "true"
|
|
251
|
-
if log_stdout_pretty:
|
|
252
|
-
# If custom format is provided, use KeyValueRenderer with custom format
|
|
253
|
-
if log_format:
|
|
254
|
-
processors.append(structlog.processors.KeyValueRenderer())
|
|
255
|
-
else:
|
|
256
|
-
processors.append(structlog.dev.ConsoleRenderer(colors=True))
|
|
257
|
-
else:
|
|
258
|
-
processors.append(structlog.processors.JSONRenderer())
|
|
259
|
-
|
|
260
|
-
# Get numeric log level
|
|
261
|
-
numeric_level = LOG_LEVEL_MAP.get(log_level.upper(), logging.ERROR)
|
|
262
|
-
|
|
263
|
-
# Configure structlog
|
|
264
|
-
structlog.configure(
|
|
265
|
-
processors=processors,
|
|
266
|
-
wrapper_class=structlog.make_filtering_bound_logger(numeric_level),
|
|
267
|
-
context_class=dict,
|
|
268
|
-
logger_factory=structlog.PrintLoggerFactory(file=sys.stdout)
|
|
269
|
-
if not log_file
|
|
270
|
-
else structlog.stdlib.LoggerFactory(),
|
|
271
|
-
cache_logger_on_first_use=True,
|
|
272
|
-
)
|
|
273
|
-
|
|
274
|
-
# Set up file logging if needed
|
|
275
|
-
if log_file:
|
|
276
|
-
if not log_file.parent.exists():
|
|
277
|
-
cache_dir = Path(user_cache_dir("langflow"))
|
|
278
|
-
log_file = cache_dir / "langflow.log"
|
|
279
|
-
|
|
280
|
-
# Parse rotation settings
|
|
281
|
-
if log_rotation:
|
|
282
|
-
# Handle rotation like "1 day", "100 MB", etc.
|
|
283
|
-
max_bytes = 10 * 1024 * 1024 # Default 10MB
|
|
284
|
-
if "MB" in log_rotation.upper():
|
|
285
|
-
try:
|
|
286
|
-
# Look for pattern like "100 MB" (with space)
|
|
287
|
-
parts = log_rotation.split()
|
|
288
|
-
expected_parts = 2
|
|
289
|
-
if len(parts) >= expected_parts and parts[1].upper() == "MB":
|
|
290
|
-
mb = int(parts[0])
|
|
291
|
-
if mb > 0: # Only use valid positive values
|
|
292
|
-
max_bytes = mb * 1024 * 1024
|
|
293
|
-
except (ValueError, IndexError):
|
|
294
|
-
pass
|
|
295
|
-
else:
|
|
296
|
-
max_bytes = 10 * 1024 * 1024 # Default 10MB
|
|
297
|
-
|
|
298
|
-
# Since structlog doesn't have built-in rotation, we'll use stdlib logging for file output
|
|
299
|
-
file_handler = logging.handlers.RotatingFileHandler(
|
|
300
|
-
log_file,
|
|
301
|
-
maxBytes=max_bytes,
|
|
302
|
-
backupCount=5,
|
|
303
|
-
)
|
|
304
|
-
file_handler.setFormatter(logging.Formatter("%(message)s"))
|
|
305
|
-
|
|
306
|
-
# Add file handler to root logger
|
|
307
|
-
logging.root.addHandler(file_handler)
|
|
308
|
-
logging.root.setLevel(numeric_level)
|
|
309
|
-
|
|
310
|
-
# Set up interceptors for uvicorn and gunicorn
|
|
311
|
-
setup_uvicorn_logger()
|
|
312
|
-
setup_gunicorn_logger()
|
|
313
|
-
|
|
314
|
-
# Create the global logger instance
|
|
315
|
-
global logger # noqa: PLW0603
|
|
316
|
-
logger = structlog.get_logger()
|
|
317
|
-
|
|
318
|
-
if disable:
|
|
319
|
-
# In structlog, we can set a very high filter level to effectively disable logging
|
|
320
|
-
structlog.configure(
|
|
321
|
-
wrapper_class=structlog.make_filtering_bound_logger(logging.CRITICAL),
|
|
322
|
-
)
|
|
323
|
-
|
|
324
|
-
logger.debug("Logger set up with log level: %s", log_level)
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
def setup_uvicorn_logger() -> None:
|
|
328
|
-
"""Redirect uvicorn logs through structlog."""
|
|
329
|
-
loggers = (logging.getLogger(name) for name in logging.root.manager.loggerDict if name.startswith("uvicorn."))
|
|
330
|
-
for uvicorn_logger in loggers:
|
|
331
|
-
uvicorn_logger.handlers = []
|
|
332
|
-
uvicorn_logger.propagate = True
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
def setup_gunicorn_logger() -> None:
|
|
336
|
-
"""Redirect gunicorn logs through structlog."""
|
|
337
|
-
logging.getLogger("gunicorn.error").handlers = []
|
|
338
|
-
logging.getLogger("gunicorn.error").propagate = True
|
|
339
|
-
logging.getLogger("gunicorn.access").handlers = []
|
|
340
|
-
logging.getLogger("gunicorn.access").propagate = True
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
class InterceptHandler(logging.Handler):
|
|
344
|
-
"""Intercept standard logging messages and route them to structlog."""
|
|
345
|
-
|
|
346
|
-
def emit(self, record: logging.LogRecord) -> None:
|
|
347
|
-
"""Emit a log record by passing it to structlog."""
|
|
348
|
-
# Get corresponding structlog logger
|
|
349
|
-
logger_name = record.name
|
|
350
|
-
structlog_logger = structlog.get_logger(logger_name)
|
|
351
|
-
|
|
352
|
-
# Map log levels
|
|
353
|
-
level = record.levelno
|
|
354
|
-
if level >= logging.CRITICAL:
|
|
355
|
-
structlog_logger.critical(record.getMessage())
|
|
356
|
-
elif level >= logging.ERROR:
|
|
357
|
-
structlog_logger.error(record.getMessage())
|
|
358
|
-
elif level >= logging.WARNING:
|
|
359
|
-
structlog_logger.warning(record.getMessage())
|
|
360
|
-
elif level >= logging.INFO:
|
|
361
|
-
structlog_logger.info(record.getMessage())
|
|
362
|
-
else:
|
|
363
|
-
structlog_logger.debug(record.getMessage())
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
# Initialize logger - will be reconfigured when configure() is called
|
|
367
|
-
# Set it to critical level
|
|
368
|
-
logger: structlog.BoundLogger = structlog.get_logger()
|
|
369
|
-
configure(log_level="CRITICAL", disable=True)
|
langflow/processing/utils.py
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import json
|
|
2
|
-
from typing import Any
|
|
3
|
-
|
|
4
|
-
from json_repair import repair_json
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def validate_and_repair_json(json_str: str | dict) -> dict[str, Any] | str:
|
|
8
|
-
"""Validates a JSON string and attempts to repair it if invalid.
|
|
9
|
-
|
|
10
|
-
Args:
|
|
11
|
-
json_str (str): The JSON string to validate/repair
|
|
12
|
-
|
|
13
|
-
Returns:
|
|
14
|
-
Union[Dict[str, Any], str]: The parsed JSON dict if valid/repairable,
|
|
15
|
-
otherwise returns the original string
|
|
16
|
-
"""
|
|
17
|
-
if not isinstance(json_str, str):
|
|
18
|
-
return json_str
|
|
19
|
-
try:
|
|
20
|
-
# If invalid, attempt repair
|
|
21
|
-
repaired = repair_json(json_str)
|
|
22
|
-
return json.loads(repaired)
|
|
23
|
-
except (json.JSONDecodeError, ImportError):
|
|
24
|
-
# Return original if repair fails or module not found
|
|
25
|
-
return json_str
|