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
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
from typing import Any, Literal
|
|
2
|
-
|
|
3
|
-
from pydantic import BaseModel, Field
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
class OpenAIResponsesRequest(BaseModel):
|
|
7
|
-
"""OpenAI-compatible responses request with flow_id as model parameter."""
|
|
8
|
-
|
|
9
|
-
model: str = Field(..., description="The flow ID to execute (used instead of OpenAI model)")
|
|
10
|
-
input: str = Field(..., description="The input text to process")
|
|
11
|
-
stream: bool = Field(default=False, description="Whether to stream the response")
|
|
12
|
-
background: bool = Field(default=False, description="Whether to process in background")
|
|
13
|
-
tools: list[Any] | None = Field(default=None, description="Tools are not supported yet")
|
|
14
|
-
previous_response_id: str | None = Field(
|
|
15
|
-
default=None, description="ID of previous response to continue conversation"
|
|
16
|
-
)
|
|
17
|
-
include: list[str] | None = Field(
|
|
18
|
-
default=None, description="Additional response data to include, e.g., ['tool_call.results']"
|
|
19
|
-
)
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
class OpenAIResponsesResponse(BaseModel):
|
|
23
|
-
"""OpenAI-compatible responses response."""
|
|
24
|
-
|
|
25
|
-
id: str
|
|
26
|
-
object: Literal["response"] = "response"
|
|
27
|
-
created_at: int
|
|
28
|
-
status: Literal["completed", "in_progress", "failed"] = "completed"
|
|
29
|
-
error: dict | None = None
|
|
30
|
-
incomplete_details: dict | None = None
|
|
31
|
-
instructions: str | None = None
|
|
32
|
-
max_output_tokens: int | None = None
|
|
33
|
-
model: str
|
|
34
|
-
output: list[dict]
|
|
35
|
-
parallel_tool_calls: bool = True
|
|
36
|
-
previous_response_id: str | None = None
|
|
37
|
-
reasoning: dict = Field(default_factory=lambda: {"effort": None, "summary": None})
|
|
38
|
-
store: bool = True
|
|
39
|
-
temperature: float = 1.0
|
|
40
|
-
text: dict = Field(default_factory=lambda: {"format": {"type": "text"}})
|
|
41
|
-
tool_choice: str = "auto"
|
|
42
|
-
tools: list[dict] = Field(default_factory=list)
|
|
43
|
-
top_p: float = 1.0
|
|
44
|
-
truncation: str = "disabled"
|
|
45
|
-
usage: dict | None = None
|
|
46
|
-
user: str | None = None
|
|
47
|
-
metadata: dict = Field(default_factory=dict)
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
class OpenAIResponsesStreamChunk(BaseModel):
|
|
51
|
-
"""OpenAI-compatible responses stream chunk."""
|
|
52
|
-
|
|
53
|
-
id: str
|
|
54
|
-
object: Literal["response.chunk"] = "response.chunk"
|
|
55
|
-
created: int
|
|
56
|
-
model: str
|
|
57
|
-
delta: dict
|
|
58
|
-
status: Literal["completed", "in_progress", "failed"] | None = None
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
class OpenAIErrorResponse(BaseModel):
|
|
62
|
-
error: dict = Field(..., description="Error details")
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
def create_openai_error(message: str, type_: str = "invalid_request_error", code: str | None = None) -> dict:
|
|
66
|
-
"""Create an OpenAI-compatible error response."""
|
|
67
|
-
error_data = {
|
|
68
|
-
"message": message,
|
|
69
|
-
"type": type_,
|
|
70
|
-
}
|
|
71
|
-
if code:
|
|
72
|
-
error_data["code"] = code
|
|
73
|
-
|
|
74
|
-
return {"error": error_data}
|
langflow/schema/serialize.py
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
from typing import Annotated
|
|
2
|
-
from uuid import UUID
|
|
3
|
-
|
|
4
|
-
from pydantic import BeforeValidator
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def str_to_uuid(v: str | UUID) -> UUID:
|
|
8
|
-
if isinstance(v, str):
|
|
9
|
-
return UUID(v)
|
|
10
|
-
return v
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
UUIDstr = Annotated[UUID, BeforeValidator(str_to_uuid)]
|
langflow/services/chat/config.py
DELETED
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
import secrets
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
from typing import Literal
|
|
4
|
-
|
|
5
|
-
from passlib.context import CryptContext
|
|
6
|
-
from pydantic import Field, SecretStr, field_validator
|
|
7
|
-
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
8
|
-
|
|
9
|
-
from langflow.logging.logger import logger
|
|
10
|
-
from langflow.services.settings.constants import DEFAULT_SUPERUSER, DEFAULT_SUPERUSER_PASSWORD
|
|
11
|
-
from langflow.services.settings.utils import read_secret_from_file, write_secret_to_file
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
class AuthSettings(BaseSettings):
|
|
15
|
-
# Login settings
|
|
16
|
-
CONFIG_DIR: str
|
|
17
|
-
SECRET_KEY: SecretStr = Field(
|
|
18
|
-
default=SecretStr(""),
|
|
19
|
-
description="Secret key for JWT. If not provided, a random one will be generated.",
|
|
20
|
-
frozen=False,
|
|
21
|
-
)
|
|
22
|
-
ALGORITHM: str = "HS256"
|
|
23
|
-
ACCESS_TOKEN_EXPIRE_SECONDS: int = 60 * 60 # 1 hour
|
|
24
|
-
REFRESH_TOKEN_EXPIRE_SECONDS: int = 60 * 60 * 24 * 7 # 7 days
|
|
25
|
-
|
|
26
|
-
# API Key to execute /process endpoint
|
|
27
|
-
API_KEY_ALGORITHM: str = "HS256"
|
|
28
|
-
API_V1_STR: str = "/api/v1"
|
|
29
|
-
|
|
30
|
-
AUTO_LOGIN: bool = Field(
|
|
31
|
-
default=True, # TODO: Set to False in v1.6
|
|
32
|
-
description=(
|
|
33
|
-
"Enable automatic login with default credentials. "
|
|
34
|
-
"SECURITY WARNING: This bypasses authentication and should only be used in development environments. "
|
|
35
|
-
"Set to False in production."
|
|
36
|
-
),
|
|
37
|
-
)
|
|
38
|
-
"""If True, the application will attempt to log in automatically as a super user."""
|
|
39
|
-
skip_auth_auto_login: bool = True
|
|
40
|
-
"""If True, the application will skip authentication when AUTO_LOGIN is enabled.
|
|
41
|
-
This will be removed in v1.6"""
|
|
42
|
-
|
|
43
|
-
WEBHOOK_AUTH_ENABLE: bool = False
|
|
44
|
-
"""If True, webhook endpoints will require API key authentication.
|
|
45
|
-
If False, webhooks run as flow owner without authentication."""
|
|
46
|
-
|
|
47
|
-
ENABLE_SUPERUSER_CLI: bool = Field(
|
|
48
|
-
default=True,
|
|
49
|
-
description="Allow creation of superusers via CLI. Set to False in production for security.",
|
|
50
|
-
)
|
|
51
|
-
"""If True, allows creation of superusers via the CLI 'langflow superuser' command."""
|
|
52
|
-
|
|
53
|
-
NEW_USER_IS_ACTIVE: bool = False
|
|
54
|
-
SUPERUSER: str = DEFAULT_SUPERUSER
|
|
55
|
-
SUPERUSER_PASSWORD: str = DEFAULT_SUPERUSER_PASSWORD
|
|
56
|
-
|
|
57
|
-
REFRESH_SAME_SITE: Literal["lax", "strict", "none"] = "none"
|
|
58
|
-
"""The SameSite attribute of the refresh token cookie."""
|
|
59
|
-
REFRESH_SECURE: bool = True
|
|
60
|
-
"""The Secure attribute of the refresh token cookie."""
|
|
61
|
-
REFRESH_HTTPONLY: bool = True
|
|
62
|
-
"""The HttpOnly attribute of the refresh token cookie."""
|
|
63
|
-
ACCESS_SAME_SITE: Literal["lax", "strict", "none"] = "lax"
|
|
64
|
-
"""The SameSite attribute of the access token cookie."""
|
|
65
|
-
ACCESS_SECURE: bool = False
|
|
66
|
-
"""The Secure attribute of the access token cookie."""
|
|
67
|
-
ACCESS_HTTPONLY: bool = False
|
|
68
|
-
"""The HttpOnly attribute of the access token cookie."""
|
|
69
|
-
|
|
70
|
-
COOKIE_DOMAIN: str | None = None
|
|
71
|
-
"""The domain attribute of the cookies. If None, the domain is not set."""
|
|
72
|
-
|
|
73
|
-
pwd_context: CryptContext = CryptContext(schemes=["bcrypt"], deprecated="auto")
|
|
74
|
-
|
|
75
|
-
model_config = SettingsConfigDict(validate_assignment=True, extra="ignore", env_prefix="LANGFLOW_")
|
|
76
|
-
|
|
77
|
-
def reset_credentials(self) -> None:
|
|
78
|
-
self.SUPERUSER = DEFAULT_SUPERUSER
|
|
79
|
-
self.SUPERUSER_PASSWORD = DEFAULT_SUPERUSER_PASSWORD
|
|
80
|
-
|
|
81
|
-
# If autologin is true, then we need to set the credentials to
|
|
82
|
-
# the default values
|
|
83
|
-
# so we need to validate the superuser and superuser_password
|
|
84
|
-
# fields
|
|
85
|
-
@field_validator("SUPERUSER", "SUPERUSER_PASSWORD", mode="before")
|
|
86
|
-
@classmethod
|
|
87
|
-
def validate_superuser(cls, value, info):
|
|
88
|
-
if info.data.get("AUTO_LOGIN"):
|
|
89
|
-
if value != DEFAULT_SUPERUSER:
|
|
90
|
-
value = DEFAULT_SUPERUSER
|
|
91
|
-
logger.debug("Resetting superuser to default value")
|
|
92
|
-
if info.data.get("SUPERUSER_PASSWORD") != DEFAULT_SUPERUSER_PASSWORD:
|
|
93
|
-
info.data["SUPERUSER_PASSWORD"] = DEFAULT_SUPERUSER_PASSWORD
|
|
94
|
-
logger.debug("Resetting superuser password to default value")
|
|
95
|
-
|
|
96
|
-
return value
|
|
97
|
-
|
|
98
|
-
return value
|
|
99
|
-
|
|
100
|
-
@field_validator("SECRET_KEY", mode="before")
|
|
101
|
-
@classmethod
|
|
102
|
-
def get_secret_key(cls, value, info):
|
|
103
|
-
config_dir = info.data.get("CONFIG_DIR")
|
|
104
|
-
|
|
105
|
-
if not config_dir:
|
|
106
|
-
logger.debug("No CONFIG_DIR provided, not saving secret key")
|
|
107
|
-
return value or secrets.token_urlsafe(32)
|
|
108
|
-
|
|
109
|
-
secret_key_path = Path(config_dir) / "secret_key"
|
|
110
|
-
|
|
111
|
-
if value:
|
|
112
|
-
logger.debug("Secret key provided")
|
|
113
|
-
secret_value = value.get_secret_value() if isinstance(value, SecretStr) else value
|
|
114
|
-
write_secret_to_file(secret_key_path, secret_value)
|
|
115
|
-
else:
|
|
116
|
-
logger.debug("No secret key provided, generating a random one")
|
|
117
|
-
|
|
118
|
-
if secret_key_path.exists():
|
|
119
|
-
value = read_secret_from_file(secret_key_path)
|
|
120
|
-
logger.debug("Loaded secret key")
|
|
121
|
-
if not value:
|
|
122
|
-
value = secrets.token_urlsafe(32)
|
|
123
|
-
write_secret_to_file(secret_key_path, value)
|
|
124
|
-
logger.debug("Saved secret key")
|
|
125
|
-
else:
|
|
126
|
-
value = secrets.token_urlsafe(32)
|
|
127
|
-
write_secret_to_file(secret_key_path, value)
|
|
128
|
-
logger.debug("Saved secret key")
|
|
129
|
-
|
|
130
|
-
return value if isinstance(value, SecretStr) else SecretStr(value).get_secret_value()
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
DEFAULT_SUPERUSER = "langflow"
|
|
2
|
-
DEFAULT_SUPERUSER_PASSWORD = "langflow" # noqa: S105
|
|
3
|
-
VARIABLES_TO_GET_FROM_ENVIRONMENT = [
|
|
4
|
-
"COMPOSIO_API_KEY",
|
|
5
|
-
"OPENAI_API_KEY",
|
|
6
|
-
"ANTHROPIC_API_KEY",
|
|
7
|
-
"GOOGLE_API_KEY",
|
|
8
|
-
"AZURE_OPENAI_API_KEY",
|
|
9
|
-
"AZURE_OPENAI_API_VERSION",
|
|
10
|
-
"AZURE_OPENAI_API_INSTANCE_NAME",
|
|
11
|
-
"AZURE_OPENAI_API_DEPLOYMENT_NAME",
|
|
12
|
-
"AZURE_OPENAI_API_EMBEDDINGS_DEPLOYMENT_NAME",
|
|
13
|
-
"ASTRA_DB_APPLICATION_TOKEN",
|
|
14
|
-
"ASTRA_DB_API_ENDPOINT",
|
|
15
|
-
"COHERE_API_KEY",
|
|
16
|
-
"GROQ_API_KEY",
|
|
17
|
-
"HUGGINGFACEHUB_API_TOKEN",
|
|
18
|
-
"PINECONE_API_KEY",
|
|
19
|
-
"SAMBANOVA_API_KEY",
|
|
20
|
-
"SEARCHAPI_API_KEY",
|
|
21
|
-
"SERPAPI_API_KEY",
|
|
22
|
-
"UPSTASH_VECTOR_REST_URL",
|
|
23
|
-
"UPSTASH_VECTOR_REST_TOKEN",
|
|
24
|
-
"VECTARA_CUSTOMER_ID",
|
|
25
|
-
"VECTARA_CORPUS_ID",
|
|
26
|
-
"VECTARA_API_KEY",
|
|
27
|
-
"AWS_ACCESS_KEY_ID",
|
|
28
|
-
"AWS_SECRET_ACCESS_KEY",
|
|
29
|
-
"NOVITA_API_KEY",
|
|
30
|
-
"TAVILY_API_KEY",
|
|
31
|
-
]
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from pathlib import Path
|
|
4
|
-
|
|
5
|
-
import yaml
|
|
6
|
-
|
|
7
|
-
from langflow.logging.logger import logger
|
|
8
|
-
from langflow.services.base import Service
|
|
9
|
-
from langflow.services.settings.auth import AuthSettings
|
|
10
|
-
from langflow.services.settings.base import Settings
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class SettingsService(Service):
|
|
14
|
-
name = "settings_service"
|
|
15
|
-
|
|
16
|
-
def __init__(self, settings: Settings, auth_settings: AuthSettings):
|
|
17
|
-
super().__init__()
|
|
18
|
-
self.settings = settings
|
|
19
|
-
self.auth_settings = auth_settings
|
|
20
|
-
|
|
21
|
-
@classmethod
|
|
22
|
-
def load_settings_from_yaml(cls, file_path: str) -> SettingsService:
|
|
23
|
-
# Check if a string is a valid path or a file name
|
|
24
|
-
if "/" not in file_path:
|
|
25
|
-
# Get current path
|
|
26
|
-
current_path = Path(__file__).resolve().parent
|
|
27
|
-
file_path_ = Path(current_path) / file_path
|
|
28
|
-
else:
|
|
29
|
-
file_path_ = Path(file_path)
|
|
30
|
-
|
|
31
|
-
with file_path_.open(encoding="utf-8") as f:
|
|
32
|
-
settings_dict = yaml.safe_load(f)
|
|
33
|
-
settings_dict = {k.upper(): v for k, v in settings_dict.items()}
|
|
34
|
-
|
|
35
|
-
for key in settings_dict:
|
|
36
|
-
if key not in Settings.model_fields:
|
|
37
|
-
msg = f"Key {key} not found in settings"
|
|
38
|
-
raise KeyError(msg)
|
|
39
|
-
logger.debug(f"Loading {len(settings_dict[key])} {key} from {file_path}")
|
|
40
|
-
|
|
41
|
-
settings = Settings(**settings_dict)
|
|
42
|
-
if not settings.config_dir:
|
|
43
|
-
msg = "CONFIG_DIR must be set in settings"
|
|
44
|
-
raise ValueError(msg)
|
|
45
|
-
|
|
46
|
-
auth_settings = AuthSettings(
|
|
47
|
-
CONFIG_DIR=settings.config_dir,
|
|
48
|
-
)
|
|
49
|
-
return cls(settings, auth_settings)
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import platform
|
|
2
|
-
from pathlib import Path
|
|
3
|
-
|
|
4
|
-
from langflow.logging.logger import logger
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
def set_secure_permissions(file_path: Path) -> None:
|
|
8
|
-
if platform.system() in {"Linux", "Darwin"}: # Unix/Linux/Mac
|
|
9
|
-
file_path.chmod(0o600)
|
|
10
|
-
elif platform.system() == "Windows":
|
|
11
|
-
import win32api
|
|
12
|
-
import win32con
|
|
13
|
-
import win32security
|
|
14
|
-
|
|
15
|
-
user, _, _ = win32security.LookupAccountName("", win32api.GetUserName())
|
|
16
|
-
sd = win32security.GetFileSecurity(str(file_path), win32security.DACL_SECURITY_INFORMATION)
|
|
17
|
-
dacl = win32security.ACL()
|
|
18
|
-
|
|
19
|
-
# Set the new DACL for the file: read and write access for the owner, no access for everyone else
|
|
20
|
-
dacl.AddAccessAllowedAce(
|
|
21
|
-
win32security.ACL_REVISION,
|
|
22
|
-
win32con.GENERIC_READ | win32con.GENERIC_WRITE,
|
|
23
|
-
user,
|
|
24
|
-
)
|
|
25
|
-
sd.SetSecurityDescriptorDacl(1, dacl, 0)
|
|
26
|
-
win32security.SetFileSecurity(str(file_path), win32security.DACL_SECURITY_INFORMATION, sd)
|
|
27
|
-
else:
|
|
28
|
-
logger.error("Unsupported OS")
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
def write_secret_to_file(path: Path, value: str) -> None:
|
|
32
|
-
path.write_text(value, encoding="utf-8")
|
|
33
|
-
try:
|
|
34
|
-
set_secure_permissions(path)
|
|
35
|
-
except Exception: # noqa: BLE001
|
|
36
|
-
logger.exception("Failed to set secure permissions on secret key")
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
def read_secret_from_file(path: Path) -> str:
|
|
40
|
-
return path.read_text(encoding="utf-8")
|
|
@@ -1,212 +0,0 @@
|
|
|
1
|
-
from collections import defaultdict
|
|
2
|
-
|
|
3
|
-
from pydantic import BaseModel, field_serializer, model_serializer
|
|
4
|
-
|
|
5
|
-
from langflow.template.field.base import Output
|
|
6
|
-
from langflow.template.template.base import Template
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
class FrontendNode(BaseModel):
|
|
10
|
-
_format_template: bool = True
|
|
11
|
-
template: Template
|
|
12
|
-
"""Template for the frontend node."""
|
|
13
|
-
description: str | None = None
|
|
14
|
-
"""Description of the frontend node."""
|
|
15
|
-
icon: str | None = None
|
|
16
|
-
"""Icon of the frontend node."""
|
|
17
|
-
is_input: bool | None = None
|
|
18
|
-
"""Whether the frontend node is used as an input when processing the Graph.
|
|
19
|
-
If True, there should be a field named 'input_value'."""
|
|
20
|
-
is_output: bool | None = None
|
|
21
|
-
"""Whether the frontend node is used as an output when processing the Graph.
|
|
22
|
-
If True, there should be a field named 'input_value'."""
|
|
23
|
-
is_composition: bool | None = None
|
|
24
|
-
"""Whether the frontend node is used for composition."""
|
|
25
|
-
base_classes: list[str]
|
|
26
|
-
"""List of base classes for the frontend node."""
|
|
27
|
-
name: str = ""
|
|
28
|
-
"""Name of the frontend node."""
|
|
29
|
-
display_name: str | None = ""
|
|
30
|
-
"""Display name of the frontend node."""
|
|
31
|
-
priority: int | None = None
|
|
32
|
-
"""Priority of the frontend node."""
|
|
33
|
-
documentation: str = ""
|
|
34
|
-
"""Documentation of the frontend node."""
|
|
35
|
-
minimized: bool = False
|
|
36
|
-
"""Whether the frontend node is minimized."""
|
|
37
|
-
custom_fields: dict | None = defaultdict(list)
|
|
38
|
-
"""Custom fields of the frontend node."""
|
|
39
|
-
output_types: list[str] = []
|
|
40
|
-
"""List of output types for the frontend node."""
|
|
41
|
-
full_path: str | None = None
|
|
42
|
-
"""Full path of the frontend node."""
|
|
43
|
-
pinned: bool = False
|
|
44
|
-
"""Whether the frontend node is pinned."""
|
|
45
|
-
conditional_paths: list[str] = []
|
|
46
|
-
"""List of conditional paths for the frontend node."""
|
|
47
|
-
frozen: bool = False
|
|
48
|
-
"""Whether the frontend node is frozen."""
|
|
49
|
-
outputs: list[Output] = []
|
|
50
|
-
"""List of output fields for the frontend node."""
|
|
51
|
-
|
|
52
|
-
field_order: list[str] = []
|
|
53
|
-
"""Order of the fields in the frontend node."""
|
|
54
|
-
beta: bool = False
|
|
55
|
-
"""Whether the frontend node is in beta."""
|
|
56
|
-
legacy: bool = False
|
|
57
|
-
"""Whether the frontend node is legacy."""
|
|
58
|
-
error: str | None = None
|
|
59
|
-
"""Error message for the frontend node."""
|
|
60
|
-
edited: bool = False
|
|
61
|
-
"""Whether the frontend node has been edited."""
|
|
62
|
-
metadata: dict = {}
|
|
63
|
-
"""Metadata for the component node."""
|
|
64
|
-
tool_mode: bool = False
|
|
65
|
-
"""Whether the frontend node is in tool mode."""
|
|
66
|
-
|
|
67
|
-
def set_documentation(self, documentation: str) -> None:
|
|
68
|
-
"""Sets the documentation of the frontend node."""
|
|
69
|
-
self.documentation = documentation
|
|
70
|
-
|
|
71
|
-
@field_serializer("base_classes")
|
|
72
|
-
def process_base_classes(self, base_classes: list[str]) -> list[str]:
|
|
73
|
-
"""Removes unwanted base classes from the list of base classes."""
|
|
74
|
-
return sorted(set(base_classes), key=lambda x: x.lower())
|
|
75
|
-
|
|
76
|
-
@field_serializer("display_name")
|
|
77
|
-
def process_display_name(self, display_name: str) -> str:
|
|
78
|
-
"""Sets the display name of the frontend node."""
|
|
79
|
-
return display_name or self.name
|
|
80
|
-
|
|
81
|
-
@model_serializer(mode="wrap")
|
|
82
|
-
def serialize_model(self, handler):
|
|
83
|
-
result = handler(self)
|
|
84
|
-
if hasattr(self, "template") and hasattr(self.template, "to_dict"):
|
|
85
|
-
result["template"] = self.template.to_dict()
|
|
86
|
-
name = result.pop("name")
|
|
87
|
-
|
|
88
|
-
# Migrate base classes to outputs
|
|
89
|
-
if "output_types" in result and not result.get("outputs"):
|
|
90
|
-
for base_class in result["output_types"]:
|
|
91
|
-
output = Output(
|
|
92
|
-
display_name=base_class,
|
|
93
|
-
name=base_class.lower(),
|
|
94
|
-
types=[base_class],
|
|
95
|
-
selected=base_class,
|
|
96
|
-
)
|
|
97
|
-
result["outputs"].append(output.model_dump())
|
|
98
|
-
|
|
99
|
-
return {name: result}
|
|
100
|
-
|
|
101
|
-
@classmethod
|
|
102
|
-
def from_dict(cls, data: dict) -> "FrontendNode":
|
|
103
|
-
if "template" in data:
|
|
104
|
-
data["template"] = Template.from_dict(data["template"])
|
|
105
|
-
return cls(**data)
|
|
106
|
-
|
|
107
|
-
# For backwards compatibility
|
|
108
|
-
def to_dict(self, *, keep_name=True) -> dict:
|
|
109
|
-
"""Returns a dict representation of the frontend node."""
|
|
110
|
-
dump = self.model_dump(by_alias=True, exclude_none=True)
|
|
111
|
-
if not keep_name:
|
|
112
|
-
return dump.pop(self.name)
|
|
113
|
-
return dump
|
|
114
|
-
|
|
115
|
-
def add_extra_fields(self) -> None:
|
|
116
|
-
pass
|
|
117
|
-
|
|
118
|
-
def add_extra_base_classes(self) -> None:
|
|
119
|
-
pass
|
|
120
|
-
|
|
121
|
-
def set_base_classes_from_outputs(self) -> None:
|
|
122
|
-
self.base_classes = [output_type for output in self.outputs for output_type in output.types]
|
|
123
|
-
|
|
124
|
-
def validate_component(self) -> None:
|
|
125
|
-
self.validate_name_overlap()
|
|
126
|
-
self.validate_attributes()
|
|
127
|
-
|
|
128
|
-
def validate_name_overlap(self) -> None:
|
|
129
|
-
# Check if any of the output names overlap with the any of the inputs
|
|
130
|
-
output_names = [output.name for output in self.outputs if not output.allows_loop]
|
|
131
|
-
input_names = [input_.name for input_ in self.template.fields]
|
|
132
|
-
overlap = set(output_names).intersection(input_names)
|
|
133
|
-
if overlap:
|
|
134
|
-
overlap_str = ", ".join(f"'{x}'" for x in overlap)
|
|
135
|
-
msg = (
|
|
136
|
-
"There should be no overlap between input and output names. "
|
|
137
|
-
f"Names {overlap_str} are duplicated in component {self.display_name}. "
|
|
138
|
-
f"Inputs are {input_names} and outputs are {output_names}."
|
|
139
|
-
)
|
|
140
|
-
raise ValueError(msg)
|
|
141
|
-
|
|
142
|
-
def validate_attributes(self) -> None:
|
|
143
|
-
# None of inputs, outputs, _artifacts, _results, logs, status, vertex, graph, display_name, description,
|
|
144
|
-
# documentation, icon should be present in outputs or input names
|
|
145
|
-
output_names = [output.name for output in self.outputs]
|
|
146
|
-
input_names = [input_.name for input_ in self.template.fields]
|
|
147
|
-
attributes = [
|
|
148
|
-
"inputs",
|
|
149
|
-
"outputs",
|
|
150
|
-
"_artifacts",
|
|
151
|
-
"_results",
|
|
152
|
-
"logs",
|
|
153
|
-
"status",
|
|
154
|
-
"vertex",
|
|
155
|
-
"graph",
|
|
156
|
-
"display_name",
|
|
157
|
-
"description",
|
|
158
|
-
"documentation",
|
|
159
|
-
"icon",
|
|
160
|
-
]
|
|
161
|
-
output_overlap = set(output_names).intersection(attributes)
|
|
162
|
-
input_overlap = set(input_names).intersection(attributes)
|
|
163
|
-
error_message = ""
|
|
164
|
-
if output_overlap:
|
|
165
|
-
output_overlap_str = ", ".join(f"'{x}'" for x in output_overlap)
|
|
166
|
-
error_message += f"Output names {output_overlap_str} are reserved attributes.\n"
|
|
167
|
-
if input_overlap:
|
|
168
|
-
input_overlap_str = ", ".join(f"'{x}'" for x in input_overlap)
|
|
169
|
-
error_message += f"Input names {input_overlap_str} are reserved attributes."
|
|
170
|
-
|
|
171
|
-
def add_base_class(self, base_class: str | list[str]) -> None:
|
|
172
|
-
"""Adds a base class to the frontend node."""
|
|
173
|
-
if isinstance(base_class, str):
|
|
174
|
-
self.base_classes.append(base_class)
|
|
175
|
-
elif isinstance(base_class, list):
|
|
176
|
-
self.base_classes.extend(base_class)
|
|
177
|
-
|
|
178
|
-
def add_output_type(self, output_type: str | list[str]) -> None:
|
|
179
|
-
"""Adds an output type to the frontend node."""
|
|
180
|
-
if isinstance(output_type, str):
|
|
181
|
-
self.output_types.append(output_type)
|
|
182
|
-
elif isinstance(output_type, list):
|
|
183
|
-
self.output_types.extend(output_type)
|
|
184
|
-
|
|
185
|
-
@classmethod
|
|
186
|
-
def from_inputs(cls, **kwargs):
|
|
187
|
-
"""Create a frontend node from inputs."""
|
|
188
|
-
if "inputs" not in kwargs:
|
|
189
|
-
msg = "Missing 'inputs' argument."
|
|
190
|
-
raise ValueError(msg)
|
|
191
|
-
if "_outputs_map" in kwargs:
|
|
192
|
-
kwargs["outputs"] = kwargs.pop("_outputs_map")
|
|
193
|
-
inputs = kwargs.pop("inputs")
|
|
194
|
-
template = Template(type_name="Component", fields=inputs)
|
|
195
|
-
kwargs["template"] = template
|
|
196
|
-
return cls(**kwargs)
|
|
197
|
-
|
|
198
|
-
def set_field_value_in_template(self, field_name, value) -> None:
|
|
199
|
-
for idx, field in enumerate(self.template.fields):
|
|
200
|
-
if field.name == field_name:
|
|
201
|
-
new_field = field.model_copy()
|
|
202
|
-
new_field.value = value
|
|
203
|
-
self.template.fields[idx] = new_field
|
|
204
|
-
break
|
|
205
|
-
|
|
206
|
-
def set_field_load_from_db_in_template(self, field_name, value) -> None:
|
|
207
|
-
for idx, field in enumerate(self.template.fields):
|
|
208
|
-
if field.name == field_name and hasattr(field, "load_from_db"):
|
|
209
|
-
new_field = field.model_copy()
|
|
210
|
-
new_field.load_from_db = value
|
|
211
|
-
self.template.fields[idx] = new_field
|
|
212
|
-
break
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
FORCE_SHOW_FIELDS = [
|
|
2
|
-
"allowed_tools",
|
|
3
|
-
"memory",
|
|
4
|
-
"prefix",
|
|
5
|
-
"examples",
|
|
6
|
-
"temperature",
|
|
7
|
-
"model_name",
|
|
8
|
-
"headers",
|
|
9
|
-
"max_value_length",
|
|
10
|
-
"max_tokens",
|
|
11
|
-
"google_cse_id",
|
|
12
|
-
]
|
|
13
|
-
|
|
14
|
-
DEFAULT_PROMPT = """
|
|
15
|
-
I want you to act as a naming consultant for new companies.
|
|
16
|
-
|
|
17
|
-
Here are some examples of good company names:
|
|
18
|
-
|
|
19
|
-
- search engine, Google
|
|
20
|
-
- social media, Facebook
|
|
21
|
-
- video sharing, YouTube
|
|
22
|
-
|
|
23
|
-
The name should be short, catchy and easy to remember.
|
|
24
|
-
|
|
25
|
-
What is a good name for a company that makes {product}?
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
SYSTEM_PROMPT = """
|
|
29
|
-
You are a helpful assistant that talks casually about life in general.
|
|
30
|
-
You are a good listener and you can talk about anything.
|
|
31
|
-
"""
|
|
32
|
-
|
|
33
|
-
HUMAN_PROMPT = "{input}"
|
|
34
|
-
|
|
35
|
-
QA_CHAIN_TYPES = ["stuff", "map_reduce", "map_rerank", "refine"]
|
|
36
|
-
|
|
37
|
-
CTRANSFORMERS_DEFAULT_CONFIG = {
|
|
38
|
-
"top_k": 40,
|
|
39
|
-
"top_p": 0.95,
|
|
40
|
-
"temperature": 0.8,
|
|
41
|
-
"repetition_penalty": 1.1,
|
|
42
|
-
"last_n_tokens": 64,
|
|
43
|
-
"seed": -1,
|
|
44
|
-
"max_new_tokens": 256,
|
|
45
|
-
"stop": None,
|
|
46
|
-
"stream": False,
|
|
47
|
-
"reset": True,
|
|
48
|
-
"batch_size": 8,
|
|
49
|
-
"threads": -1,
|
|
50
|
-
"context_length": -1,
|
|
51
|
-
"gpu_layers": 0,
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
# This variable is used to tell the user
|
|
55
|
-
# that it can be changed to use other APIs
|
|
56
|
-
# like Prem and LocalAI
|
|
57
|
-
OPENAI_API_BASE_INFO = """
|
|
58
|
-
The base URL of the OpenAI API. Defaults to https://api.openai.com/v1.
|
|
59
|
-
|
|
60
|
-
You can change this to use other APIs like JinaChat, LocalAI and Prem.
|
|
61
|
-
"""
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
INPUT_KEY_INFO = """The variable to be used as Chat Input when more than one variable is available."""
|
|
65
|
-
OUTPUT_KEY_INFO = """The variable to be used as Chat Output (e.g. answer in a ConversationalRetrievalChain)"""
|