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/schema/schema.py
CHANGED
|
@@ -1,117 +1,24 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
TEXT = "text"
|
|
26
|
-
UNKNOWN = "unknown"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class StreamURL(TypedDict):
|
|
30
|
-
location: str
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
class ErrorLog(TypedDict):
|
|
34
|
-
errorMessage: str
|
|
35
|
-
stackTrace: str
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
class OutputValue(BaseModel):
|
|
39
|
-
message: ErrorLog | StreamURL | dict | list | str
|
|
40
|
-
type: str
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
def get_type(payload):
|
|
44
|
-
result = LogType.UNKNOWN
|
|
45
|
-
match payload:
|
|
46
|
-
case Message():
|
|
47
|
-
result = LogType.MESSAGE
|
|
48
|
-
|
|
49
|
-
case Data():
|
|
50
|
-
result = LogType.DATA
|
|
51
|
-
|
|
52
|
-
case dict():
|
|
53
|
-
result = LogType.OBJECT
|
|
54
|
-
|
|
55
|
-
case list() | DataFrame():
|
|
56
|
-
result = LogType.ARRAY
|
|
57
|
-
|
|
58
|
-
case str():
|
|
59
|
-
result = LogType.TEXT
|
|
60
|
-
|
|
61
|
-
if result == LogType.UNKNOWN and (
|
|
62
|
-
(payload and isinstance(payload, Generator))
|
|
63
|
-
or (isinstance(payload, Message) and isinstance(payload.text, Generator))
|
|
64
|
-
):
|
|
65
|
-
result = LogType.STREAM
|
|
66
|
-
|
|
67
|
-
return result
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
def get_message(payload):
|
|
71
|
-
message = None
|
|
72
|
-
if hasattr(payload, "data"):
|
|
73
|
-
message = payload.data
|
|
74
|
-
|
|
75
|
-
elif hasattr(payload, "model_dump"):
|
|
76
|
-
message = payload.model_dump()
|
|
77
|
-
|
|
78
|
-
if message is None and isinstance(payload, dict | str | Data):
|
|
79
|
-
message = payload.data if isinstance(payload, Data) else payload
|
|
80
|
-
|
|
81
|
-
return message or payload
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
def build_output_logs(vertex, result) -> dict:
|
|
85
|
-
outputs: dict[str, OutputValue] = {}
|
|
86
|
-
component_instance = result[0]
|
|
87
|
-
for index, output in enumerate(vertex.outputs):
|
|
88
|
-
if component_instance.status is None:
|
|
89
|
-
payload = component_instance._results
|
|
90
|
-
output_result = payload.get(output["name"])
|
|
91
|
-
else:
|
|
92
|
-
payload = component_instance._artifacts
|
|
93
|
-
output_result = payload.get(output["name"], {}).get("raw")
|
|
94
|
-
message = get_message(output_result)
|
|
95
|
-
type_ = get_type(output_result)
|
|
96
|
-
|
|
97
|
-
match type_:
|
|
98
|
-
case LogType.STREAM if "stream_url" in message:
|
|
99
|
-
message = StreamURL(location=message["stream_url"])
|
|
100
|
-
|
|
101
|
-
case LogType.STREAM:
|
|
102
|
-
message = ""
|
|
103
|
-
|
|
104
|
-
case LogType.MESSAGE if hasattr(message, "message"):
|
|
105
|
-
message = message.message
|
|
106
|
-
|
|
107
|
-
case LogType.UNKNOWN:
|
|
108
|
-
message = ""
|
|
109
|
-
|
|
110
|
-
case LogType.ARRAY:
|
|
111
|
-
if isinstance(message, DataFrame):
|
|
112
|
-
message = message.to_dict(orient="records")
|
|
113
|
-
message = [serialize(item) for item in message]
|
|
114
|
-
name = output.get("name", f"output_{index}")
|
|
115
|
-
outputs |= {name: OutputValue(message=message, type=type_).model_dump()}
|
|
116
|
-
|
|
117
|
-
return outputs
|
|
1
|
+
# Import from lfx instead of defining here
|
|
2
|
+
from lfx.schema.schema import (
|
|
3
|
+
INPUT_FIELD_NAME,
|
|
4
|
+
ErrorLog,
|
|
5
|
+
InputType,
|
|
6
|
+
LogType,
|
|
7
|
+
OutputType,
|
|
8
|
+
OutputValue,
|
|
9
|
+
StreamURL,
|
|
10
|
+
build_output_logs,
|
|
11
|
+
get_type,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
__all__ = [
|
|
15
|
+
"INPUT_FIELD_NAME",
|
|
16
|
+
"ErrorLog",
|
|
17
|
+
"InputType",
|
|
18
|
+
"LogType",
|
|
19
|
+
"OutputType",
|
|
20
|
+
"OutputValue",
|
|
21
|
+
"StreamURL",
|
|
22
|
+
"build_output_logs",
|
|
23
|
+
"get_type",
|
|
24
|
+
]
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
from lfx.serialization.constants import MAX_ITEMS_LENGTH, MAX_TEXT_LENGTH
|
|
2
|
+
|
|
3
|
+
__all__ = ["MAX_ITEMS_LENGTH", "MAX_TEXT_LENGTH"]
|
|
@@ -8,10 +8,10 @@ from uuid import UUID
|
|
|
8
8
|
import numpy as np
|
|
9
9
|
import pandas as pd
|
|
10
10
|
from langchain_core.documents import Document
|
|
11
|
+
from lfx.log.logger import logger
|
|
11
12
|
from pydantic import BaseModel
|
|
12
13
|
from pydantic.v1 import BaseModel as BaseModelV1
|
|
13
14
|
|
|
14
|
-
from langflow.logging.logger import logger
|
|
15
15
|
from langflow.serialization.constants import MAX_ITEMS_LENGTH, MAX_TEXT_LENGTH
|
|
16
16
|
from langflow.services.deps import get_settings_service
|
|
17
17
|
|
langflow/server.py
CHANGED
|
@@ -4,10 +4,9 @@ import signal
|
|
|
4
4
|
|
|
5
5
|
from gunicorn import glogging
|
|
6
6
|
from gunicorn.app.base import BaseApplication
|
|
7
|
+
from lfx.log.logger import InterceptHandler
|
|
7
8
|
from uvicorn.workers import UvicornWorker
|
|
8
9
|
|
|
9
|
-
from langflow.logging.logger import InterceptHandler
|
|
10
|
-
|
|
11
10
|
|
|
12
11
|
class LangflowUvicornWorker(UvicornWorker):
|
|
13
12
|
CONFIG_KWARGS = {"loop": "asyncio"}
|
langflow/services/__init__.py
CHANGED
langflow/services/auth/utils.py
CHANGED
|
@@ -10,16 +10,16 @@ from cryptography.fernet import Fernet
|
|
|
10
10
|
from fastapi import Depends, HTTPException, Request, Security, WebSocketException, status
|
|
11
11
|
from fastapi.security import APIKeyHeader, APIKeyQuery, OAuth2PasswordBearer
|
|
12
12
|
from jose import JWTError, jwt
|
|
13
|
+
from lfx.log.logger import logger
|
|
14
|
+
from lfx.services.settings.service import SettingsService
|
|
13
15
|
from sqlalchemy.exc import IntegrityError
|
|
14
16
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
|
15
17
|
from starlette.websockets import WebSocket
|
|
16
18
|
|
|
17
|
-
from langflow.logging.logger import logger
|
|
18
19
|
from langflow.services.database.models.api_key.crud import check_key
|
|
19
20
|
from langflow.services.database.models.user.crud import get_user_by_id, get_user_by_username, update_user_last_login_at
|
|
20
21
|
from langflow.services.database.models.user.model import User, UserRead
|
|
21
|
-
from langflow.services.deps import get_db_service, get_session, get_settings_service
|
|
22
|
-
from langflow.services.settings.service import SettingsService
|
|
22
|
+
from langflow.services.deps import get_db_service, get_session, get_settings_service, session_scope
|
|
23
23
|
|
|
24
24
|
if TYPE_CHECKING:
|
|
25
25
|
from langflow.services.database.models.api_key.model import ApiKey
|
|
@@ -48,7 +48,7 @@ async def api_key_security(
|
|
|
48
48
|
settings_service = get_settings_service()
|
|
49
49
|
result: ApiKey | User | None
|
|
50
50
|
|
|
51
|
-
async with
|
|
51
|
+
async with session_scope() as db:
|
|
52
52
|
if settings_service.auth_settings.AUTO_LOGIN:
|
|
53
53
|
# Get the first user
|
|
54
54
|
if not settings_service.auth_settings.SUPERUSER:
|
|
@@ -93,7 +93,7 @@ async def ws_api_key_security(
|
|
|
93
93
|
api_key: str | None,
|
|
94
94
|
) -> UserRead:
|
|
95
95
|
settings = get_settings_service()
|
|
96
|
-
async with
|
|
96
|
+
async with session_scope() as db:
|
|
97
97
|
if settings.auth_settings.AUTO_LOGIN:
|
|
98
98
|
if not settings.auth_settings.SUPERUSER:
|
|
99
99
|
# internal server misconfiguration
|
langflow/services/cache/disk.py
CHANGED
|
@@ -4,10 +4,10 @@ import time
|
|
|
4
4
|
from typing import Generic
|
|
5
5
|
|
|
6
6
|
from diskcache import Cache
|
|
7
|
+
from lfx.log.logger import logger
|
|
8
|
+
from lfx.services.cache.utils import CACHE_MISS
|
|
7
9
|
|
|
8
|
-
from langflow.logging.logger import logger
|
|
9
10
|
from langflow.services.cache.base import AsyncBaseCacheService, AsyncLockType
|
|
10
|
-
from langflow.services.cache.utils import CACHE_MISS
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
class AsyncDiskCache(AsyncBaseCacheService, Generic[AsyncLockType]):
|
|
@@ -2,15 +2,15 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from typing import TYPE_CHECKING
|
|
4
4
|
|
|
5
|
+
from lfx.log.logger import logger
|
|
5
6
|
from typing_extensions import override
|
|
6
7
|
|
|
7
|
-
from langflow.logging.logger import logger
|
|
8
8
|
from langflow.services.cache.disk import AsyncDiskCache
|
|
9
9
|
from langflow.services.cache.service import AsyncInMemoryCache, CacheService, RedisCache, ThreadingInMemoryCache
|
|
10
10
|
from langflow.services.factory import ServiceFactory
|
|
11
11
|
|
|
12
12
|
if TYPE_CHECKING:
|
|
13
|
-
from
|
|
13
|
+
from lfx.services.settings.service import SettingsService
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
class CacheServiceFactory(ServiceFactory):
|
|
@@ -6,9 +6,10 @@ from collections import OrderedDict
|
|
|
6
6
|
from typing import Generic, Union
|
|
7
7
|
|
|
8
8
|
import dill
|
|
9
|
+
from lfx.log.logger import logger
|
|
10
|
+
from lfx.services.cache.utils import CACHE_MISS
|
|
9
11
|
from typing_extensions import override
|
|
10
12
|
|
|
11
|
-
from langflow.logging.logger import logger
|
|
12
13
|
from langflow.services.cache.base import (
|
|
13
14
|
AsyncBaseCacheService,
|
|
14
15
|
AsyncLockType,
|
|
@@ -16,7 +17,6 @@ from langflow.services.cache.base import (
|
|
|
16
17
|
ExternalAsyncBaseCacheService,
|
|
17
18
|
LockType,
|
|
18
19
|
)
|
|
19
|
-
from langflow.services.cache.utils import CACHE_MISS
|
|
20
20
|
|
|
21
21
|
|
|
22
22
|
class ThreadingInMemoryCache(CacheService, Generic[LockType]):
|
langflow/services/cache/utils.py
CHANGED
|
@@ -18,14 +18,6 @@ CACHE_DIR = user_cache_dir("langflow", "langflow")
|
|
|
18
18
|
PREFIX = "langflow_cache"
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
class CacheMiss:
|
|
22
|
-
def __repr__(self) -> str:
|
|
23
|
-
return "<CACHE_MISS>"
|
|
24
|
-
|
|
25
|
-
def __bool__(self) -> bool:
|
|
26
|
-
return False
|
|
27
|
-
|
|
28
|
-
|
|
29
21
|
def create_cache_folder(func):
|
|
30
22
|
def wrapper(*args, **kwargs):
|
|
31
23
|
# Get the destination folder
|
|
@@ -164,6 +156,3 @@ def update_build_status(cache_service, flow_id: str, status: "BuildStatus") -> N
|
|
|
164
156
|
cache_service[flow_id] = cached_flow
|
|
165
157
|
cached_flow["status"] = status
|
|
166
158
|
cache_service[flow_id] = cached_flow
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
CACHE_MISS = CacheMiss()
|
|
@@ -6,7 +6,7 @@ from langflow.services.database.service import DatabaseService
|
|
|
6
6
|
from langflow.services.factory import ServiceFactory
|
|
7
7
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
9
|
-
from
|
|
9
|
+
from lfx.services.settings.service import SettingsService
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
class DatabaseServiceFactory(ServiceFactory):
|
|
@@ -9,12 +9,12 @@ from uuid import UUID, uuid4
|
|
|
9
9
|
import emoji
|
|
10
10
|
from emoji import purely_emoji
|
|
11
11
|
from fastapi import HTTPException, status
|
|
12
|
+
from lfx.log.logger import logger
|
|
12
13
|
from pydantic import BaseModel, ValidationInfo, field_serializer, field_validator
|
|
13
14
|
from sqlalchemy import Enum as SQLEnum
|
|
14
15
|
from sqlalchemy import Text, UniqueConstraint, text
|
|
15
16
|
from sqlmodel import JSON, Column, Field, Relationship, SQLModel
|
|
16
17
|
|
|
17
|
-
from langflow.logging.logger import logger
|
|
18
18
|
from langflow.schema.data import Data
|
|
19
19
|
|
|
20
20
|
if TYPE_CHECKING:
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
from uuid import UUID
|
|
2
2
|
|
|
3
|
+
from lfx.utils.async_helpers import run_until_complete
|
|
4
|
+
|
|
3
5
|
from langflow.services.database.models.message.model import MessageTable, MessageUpdate
|
|
4
6
|
from langflow.services.deps import session_scope
|
|
5
|
-
from langflow.utils.async_helpers import run_until_complete
|
|
6
7
|
|
|
7
8
|
|
|
8
9
|
async def _update_message(message_id: UUID | str, message: MessageUpdate | dict):
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
from uuid import UUID
|
|
2
2
|
|
|
3
|
+
from lfx.log.logger import logger
|
|
3
4
|
from sqlmodel import col, delete, select
|
|
4
5
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
|
5
6
|
|
|
6
|
-
from langflow.logging.logger import logger
|
|
7
7
|
from langflow.services.database.models.transactions.model import (
|
|
8
8
|
TransactionBase,
|
|
9
9
|
TransactionReadResponse,
|
|
@@ -2,12 +2,12 @@ from datetime import datetime, timezone
|
|
|
2
2
|
from uuid import UUID
|
|
3
3
|
|
|
4
4
|
from fastapi import HTTPException, status
|
|
5
|
+
from lfx.log.logger import logger
|
|
5
6
|
from sqlalchemy.exc import IntegrityError
|
|
6
7
|
from sqlalchemy.orm.attributes import flag_modified
|
|
7
8
|
from sqlmodel import select
|
|
8
9
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
|
9
10
|
|
|
10
|
-
from langflow.logging.logger import logger
|
|
11
11
|
from langflow.services.database.models.user.model import User, UserUpdate
|
|
12
12
|
|
|
13
13
|
|
|
@@ -13,6 +13,7 @@ import anyio
|
|
|
13
13
|
import sqlalchemy as sa
|
|
14
14
|
from alembic import command, util
|
|
15
15
|
from alembic.config import Config
|
|
16
|
+
from lfx.log.logger import logger
|
|
16
17
|
from sqlalchemy import event, exc, inspect
|
|
17
18
|
from sqlalchemy.dialects import sqlite as dialect_sqlite
|
|
18
19
|
from sqlalchemy.engine import Engine
|
|
@@ -23,7 +24,6 @@ from sqlmodel.ext.asyncio.session import AsyncSession
|
|
|
23
24
|
from tenacity import retry, stop_after_attempt, wait_fixed
|
|
24
25
|
|
|
25
26
|
from langflow.initial_setup.constants import STARTER_FOLDER_NAME
|
|
26
|
-
from langflow.logging.logger import logger
|
|
27
27
|
from langflow.services.base import Service
|
|
28
28
|
from langflow.services.database import models
|
|
29
29
|
from langflow.services.database.models.user.crud import get_user_by_username
|
|
@@ -33,7 +33,7 @@ from langflow.services.deps import get_settings_service
|
|
|
33
33
|
from langflow.services.utils import teardown_superuser
|
|
34
34
|
|
|
35
35
|
if TYPE_CHECKING:
|
|
36
|
-
from
|
|
36
|
+
from lfx.services.settings.service import SettingsService
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
class DatabaseService(Service):
|
|
@@ -5,11 +5,10 @@ from dataclasses import dataclass
|
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
7
7
|
from alembic.util.exc import CommandError
|
|
8
|
+
from lfx.log.logger import logger
|
|
8
9
|
from sqlmodel import text
|
|
9
10
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
|
10
11
|
|
|
11
|
-
from langflow.logging.logger import logger
|
|
12
|
-
|
|
13
12
|
if TYPE_CHECKING:
|
|
14
13
|
from langflow.services.database.service import DatabaseService
|
|
15
14
|
|
langflow/services/deps.py
CHANGED
|
@@ -3,12 +3,14 @@ from __future__ import annotations
|
|
|
3
3
|
from contextlib import asynccontextmanager
|
|
4
4
|
from typing import TYPE_CHECKING
|
|
5
5
|
|
|
6
|
-
from
|
|
6
|
+
from lfx.log.logger import logger
|
|
7
|
+
|
|
7
8
|
from langflow.services.schema import ServiceType
|
|
8
9
|
|
|
9
10
|
if TYPE_CHECKING:
|
|
10
11
|
from collections.abc import AsyncGenerator
|
|
11
12
|
|
|
13
|
+
from lfx.services.settings.service import SettingsService
|
|
12
14
|
from sqlmodel.ext.asyncio.session import AsyncSession
|
|
13
15
|
|
|
14
16
|
from langflow.services.cache.service import AsyncBaseCacheService, CacheService
|
|
@@ -16,8 +18,6 @@ if TYPE_CHECKING:
|
|
|
16
18
|
from langflow.services.database.service import DatabaseService
|
|
17
19
|
from langflow.services.job_queue.service import JobQueueService
|
|
18
20
|
from langflow.services.session.service import SessionService
|
|
19
|
-
from langflow.services.settings.service import SettingsService
|
|
20
|
-
from langflow.services.socket.service import SocketIOService
|
|
21
21
|
from langflow.services.state.service import StateService
|
|
22
22
|
from langflow.services.storage.service import StorageService
|
|
23
23
|
from langflow.services.store.service import StoreService
|
|
@@ -39,12 +39,16 @@ def get_service(service_type: ServiceType, default=None):
|
|
|
39
39
|
Any: The service instance.
|
|
40
40
|
|
|
41
41
|
"""
|
|
42
|
-
from
|
|
42
|
+
from lfx.services.manager import get_service_manager
|
|
43
|
+
|
|
44
|
+
service_manager = get_service_manager()
|
|
43
45
|
|
|
44
|
-
if not service_manager.
|
|
46
|
+
if not service_manager.are_factories_registered():
|
|
45
47
|
# ! This is a workaround to ensure that the service manager is initialized
|
|
46
48
|
# ! Not optimal, but it works for now
|
|
47
|
-
|
|
49
|
+
from langflow.services.manager import ServiceManager
|
|
50
|
+
|
|
51
|
+
service_manager.register_factories(ServiceManager.get_factories())
|
|
48
52
|
return service_manager.get(service_type, default)
|
|
49
53
|
|
|
50
54
|
|
|
@@ -81,15 +85,6 @@ def get_state_service() -> StateService:
|
|
|
81
85
|
return get_service(ServiceType.STATE_SERVICE, StateServiceFactory())
|
|
82
86
|
|
|
83
87
|
|
|
84
|
-
def get_socket_service() -> SocketIOService:
|
|
85
|
-
"""Get the SocketIOService instance from the service manager.
|
|
86
|
-
|
|
87
|
-
Returns:
|
|
88
|
-
SocketIOService: The SocketIOService instance.
|
|
89
|
-
"""
|
|
90
|
-
return get_service(ServiceType.SOCKETIO_SERVICE) # type: ignore[attr-defined]
|
|
91
|
-
|
|
92
|
-
|
|
93
88
|
def get_storage_service() -> StorageService:
|
|
94
89
|
"""Retrieves the storage service instance.
|
|
95
90
|
|
|
@@ -124,7 +119,7 @@ def get_settings_service() -> SettingsService:
|
|
|
124
119
|
Raises:
|
|
125
120
|
ValueError: If the service cannot be retrieved or initialized.
|
|
126
121
|
"""
|
|
127
|
-
from
|
|
122
|
+
from lfx.services.settings.factory import SettingsServiceFactory
|
|
128
123
|
|
|
129
124
|
return get_service(ServiceType.SETTINGS_SERVICE, SettingsServiceFactory())
|
|
130
125
|
|
|
@@ -148,7 +143,7 @@ async def get_session() -> AsyncGenerator[AsyncSession, None]:
|
|
|
148
143
|
AsyncSession: An async session object.
|
|
149
144
|
|
|
150
145
|
"""
|
|
151
|
-
async with
|
|
146
|
+
async with session_scope() as session:
|
|
152
147
|
yield session
|
|
153
148
|
|
|
154
149
|
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"""Enhanced ServiceManager that extends lfx's ServiceManager with langflow features."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import importlib
|
|
6
|
+
import inspect
|
|
7
|
+
from typing import TYPE_CHECKING
|
|
8
|
+
|
|
9
|
+
from lfx.log.logger import logger
|
|
10
|
+
from lfx.services.manager import NoFactoryRegisteredError
|
|
11
|
+
from lfx.services.manager import ServiceManager as BaseServiceManager
|
|
12
|
+
from lfx.utils.concurrency import KeyedMemoryLockManager
|
|
13
|
+
|
|
14
|
+
if TYPE_CHECKING:
|
|
15
|
+
from langflow.services.base import Service
|
|
16
|
+
from langflow.services.factory import ServiceFactory
|
|
17
|
+
from langflow.services.schema import ServiceType
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
__all__ = ["NoFactoryRegisteredError", "ServiceManager"]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ServiceManager(BaseServiceManager):
|
|
24
|
+
"""Enhanced ServiceManager with langflow factory system and dependency injection."""
|
|
25
|
+
|
|
26
|
+
def __init__(self) -> None:
|
|
27
|
+
super().__init__()
|
|
28
|
+
self.register_factories()
|
|
29
|
+
self.keyed_lock = KeyedMemoryLockManager()
|
|
30
|
+
|
|
31
|
+
def register_factories(self, factories: list[ServiceFactory] | None = None) -> None:
|
|
32
|
+
"""Register all available service factories."""
|
|
33
|
+
for factory in factories or self.get_factories():
|
|
34
|
+
try:
|
|
35
|
+
self.register_factory(factory)
|
|
36
|
+
except Exception: # noqa: BLE001
|
|
37
|
+
logger.exception(f"Error initializing {factory}")
|
|
38
|
+
|
|
39
|
+
def get(self, service_name: ServiceType, default: ServiceFactory | None = None) -> Service:
|
|
40
|
+
"""Get (or create) a service by its name with keyed locking."""
|
|
41
|
+
with self.keyed_lock.lock(service_name):
|
|
42
|
+
return super().get(service_name, default)
|
|
43
|
+
|
|
44
|
+
@classmethod
|
|
45
|
+
def get_factories(cls) -> list[ServiceFactory]:
|
|
46
|
+
"""Auto-discover and return all service factories."""
|
|
47
|
+
from langflow.services.factory import ServiceFactory
|
|
48
|
+
from langflow.services.schema import ServiceType
|
|
49
|
+
|
|
50
|
+
service_names = [ServiceType(service_type).value.replace("_service", "") for service_type in ServiceType]
|
|
51
|
+
base_module = "langflow.services"
|
|
52
|
+
factories = []
|
|
53
|
+
|
|
54
|
+
for name in service_names:
|
|
55
|
+
try:
|
|
56
|
+
base_module = "lfx.services" if name == "settings" else "langflow.services"
|
|
57
|
+
module_name = f"{base_module}.{name}.factory"
|
|
58
|
+
module = importlib.import_module(module_name)
|
|
59
|
+
|
|
60
|
+
# Find all classes in the module that are subclasses of ServiceFactory
|
|
61
|
+
for _, obj in inspect.getmembers(module, inspect.isclass):
|
|
62
|
+
if issubclass(obj, ServiceFactory) and obj is not ServiceFactory:
|
|
63
|
+
factories.append(obj())
|
|
64
|
+
break
|
|
65
|
+
|
|
66
|
+
except Exception as exc:
|
|
67
|
+
logger.exception(exc)
|
|
68
|
+
msg = f"Could not initialize services. Please check your settings. Error in {name}."
|
|
69
|
+
raise RuntimeError(msg) from exc
|
|
70
|
+
|
|
71
|
+
return factories
|
langflow/services/factory.py
CHANGED
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import importlib
|
|
2
2
|
import inspect
|
|
3
|
-
from typing import
|
|
3
|
+
from typing import get_type_hints
|
|
4
4
|
|
|
5
5
|
from cachetools import LRUCache, cached
|
|
6
|
+
from lfx.log.logger import logger
|
|
6
7
|
|
|
7
|
-
from langflow.
|
|
8
|
+
from langflow.services.base import Service
|
|
8
9
|
from langflow.services.schema import ServiceType
|
|
9
10
|
|
|
10
|
-
if TYPE_CHECKING:
|
|
11
|
-
from langflow.services.base import Service
|
|
12
|
-
|
|
13
11
|
|
|
14
12
|
class ServiceFactory:
|
|
15
13
|
def __init__(
|
|
16
14
|
self,
|
|
17
|
-
service_class,
|
|
15
|
+
service_class: type[Service] | None = None,
|
|
18
16
|
) -> None:
|
|
17
|
+
if service_class is None:
|
|
18
|
+
msg = "service_class is required"
|
|
19
|
+
raise ValueError(msg)
|
|
19
20
|
self.service_class = service_class
|
|
20
21
|
self.dependencies = infer_service_types(self, import_all_services_into_a_dict())
|
|
21
22
|
|
|
22
23
|
def create(self, *args, **kwargs) -> "Service":
|
|
23
|
-
|
|
24
|
+
return self.service_class(*args, **kwargs)
|
|
24
25
|
|
|
25
26
|
|
|
26
27
|
def hash_factory(factory: ServiceFactory) -> str:
|
|
@@ -40,7 +41,9 @@ def hash_infer_service_types_args(factory: ServiceFactory, available_services=No
|
|
|
40
41
|
@cached(cache=LRUCache(maxsize=10), key=hash_infer_service_types_args)
|
|
41
42
|
def infer_service_types(factory: ServiceFactory, available_services=None) -> list["ServiceType"]:
|
|
42
43
|
create_method = factory.create
|
|
44
|
+
|
|
43
45
|
type_hints = get_type_hints(create_method, globalns=available_services)
|
|
46
|
+
|
|
44
47
|
service_types = []
|
|
45
48
|
for param_name, param_type in type_hints.items():
|
|
46
49
|
# Skip the return type if it's included in type hints
|
|
@@ -85,4 +88,8 @@ def import_all_services_into_a_dict():
|
|
|
85
88
|
logger.exception(exc)
|
|
86
89
|
msg = "Could not initialize services. Please check your settings."
|
|
87
90
|
raise RuntimeError(msg) from exc
|
|
91
|
+
# Import settings service from lfx
|
|
92
|
+
from lfx.services.settings.service import SettingsService
|
|
93
|
+
|
|
94
|
+
services["SettingsService"] = SettingsService
|
|
88
95
|
return services
|
|
@@ -4,20 +4,20 @@ from pathlib import Path
|
|
|
4
4
|
from uuid import UUID, uuid4
|
|
5
5
|
|
|
6
6
|
from aiofile import async_open
|
|
7
|
+
from lfx.graph import Graph
|
|
8
|
+
from lfx.graph.vertex.param_handler import ParameterHandler
|
|
9
|
+
from lfx.log.logger import configure, logger
|
|
10
|
+
from lfx.utils.util import update_settings
|
|
7
11
|
from sqlmodel import delete, select, text
|
|
8
12
|
|
|
9
13
|
from langflow.api.utils import cascade_delete_flow
|
|
10
|
-
from langflow.graph import Graph
|
|
11
|
-
from langflow.graph.vertex.param_handler import ParameterHandler
|
|
12
14
|
from langflow.load.utils import replace_tweaks_with_env
|
|
13
|
-
from langflow.logging.logger import configure, logger
|
|
14
15
|
from langflow.processing.process import process_tweaks, run_graph
|
|
15
16
|
from langflow.services.auth.utils import get_password_hash
|
|
16
17
|
from langflow.services.cache.service import AsyncBaseCacheService
|
|
17
18
|
from langflow.services.database.models import Flow, User, Variable
|
|
18
19
|
from langflow.services.database.utils import initialize_database
|
|
19
20
|
from langflow.services.deps import get_cache_service, get_storage_service, session_scope
|
|
20
|
-
from langflow.utils.util import update_settings
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
class LangflowRunnerExperimental:
|