langflow-base-nightly 0.5.1.dev3__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.
Files changed (935) hide show
  1. langflow/__init__.py +215 -0
  2. langflow/__main__.py +16 -2
  3. langflow/alembic/versions/006b3990db50_add_unique_constraints.py +4 -7
  4. langflow/alembic/versions/012fb73ac359_add_folder_table.py +4 -5
  5. langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +11 -20
  6. langflow/alembic/versions/0b8757876a7c_.py +4 -7
  7. langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +4 -6
  8. langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +4 -5
  9. langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +32 -27
  10. langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +4 -5
  11. langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +4 -5
  12. langflow/alembic/versions/1eab2c3eb45e_event_error.py +14 -15
  13. langflow/alembic/versions/1ef9c4f3765d_.py +5 -10
  14. langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +4 -5
  15. langflow/alembic/versions/260dbcc8b680_adds_tables.py +4 -5
  16. langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +4 -5
  17. langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +4 -7
  18. langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +4 -5
  19. langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +1 -2
  20. langflow/alembic/versions/58b28437a398_modify_nullable.py +1 -2
  21. langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +6 -12
  22. langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +4 -5
  23. langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +4 -5
  24. langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +21 -23
  25. langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +4 -5
  26. langflow/alembic/versions/6e7b581b5648_fix_nullable.py +4 -5
  27. langflow/alembic/versions/7843803a87b5_store_updates.py +4 -6
  28. langflow/alembic/versions/79e675cb6752_change_datetime_type.py +1 -2
  29. langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +4 -10
  30. langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +4 -6
  31. langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +7 -9
  32. langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +4 -5
  33. langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +1 -2
  34. langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +4 -5
  35. langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +4 -5
  36. langflow/alembic/versions/d066bfd22890_add_message_table.py +4 -4
  37. langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +12 -13
  38. langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +12 -12
  39. langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +7 -10
  40. langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +8 -7
  41. langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +10 -10
  42. langflow/alembic/versions/e3bc869fa272_fix_nullable.py +4 -5
  43. langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +13 -14
  44. langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +4 -5
  45. langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +4 -5
  46. langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +4 -5
  47. langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +19 -15
  48. langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +4 -6
  49. langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +5 -8
  50. langflow/api/build.py +5 -4
  51. langflow/api/health_check_router.py +1 -1
  52. langflow/api/limited_background_tasks.py +1 -1
  53. langflow/api/log_router.py +1 -2
  54. langflow/api/utils.py +2 -2
  55. langflow/api/v1/base.py +1 -2
  56. langflow/api/v1/callback.py +4 -9
  57. langflow/api/v1/chat.py +6 -7
  58. langflow/api/v1/endpoints.py +15 -15
  59. langflow/api/v1/files.py +1 -1
  60. langflow/api/v1/flows.py +1 -1
  61. langflow/api/v1/knowledge_bases.py +1 -1
  62. langflow/api/v1/mcp.py +1 -1
  63. langflow/api/v1/mcp_projects.py +14 -5
  64. langflow/api/v1/mcp_utils.py +3 -3
  65. langflow/api/v1/openai_responses.py +4 -4
  66. langflow/api/v1/schemas.py +3 -38
  67. langflow/api/v1/starter_projects.py +61 -3
  68. langflow/api/v1/store.py +1 -1
  69. langflow/api/v1/validate.py +3 -3
  70. langflow/api/v1/voice_mode.py +2 -2
  71. langflow/api/v2/files.py +1 -1
  72. langflow/api/v2/mcp.py +2 -2
  73. langflow/base/__init__.py +11 -0
  74. langflow/base/agents/__init__.py +3 -0
  75. langflow/base/data/__init__.py +2 -4
  76. langflow/base/data/utils.py +2 -197
  77. langflow/base/embeddings/__init__.py +3 -0
  78. langflow/base/io/__init__.py +7 -0
  79. langflow/base/io/chat.py +5 -18
  80. langflow/base/io/text.py +2 -21
  81. langflow/base/knowledge_bases/__init__.py +3 -0
  82. langflow/base/memory/__init__.py +3 -0
  83. langflow/base/models/__init__.py +2 -2
  84. langflow/base/models/openai_constants.py +6 -120
  85. langflow/base/prompts/__init__.py +3 -0
  86. langflow/base/prompts/api_utils.py +2 -223
  87. langflow/base/textsplitters/__init__.py +3 -0
  88. langflow/base/tools/__init__.py +3 -0
  89. langflow/base/vectorstores/__init__.py +3 -0
  90. langflow/components/__init__.py +7 -259
  91. langflow/components/agents.py +6 -0
  92. langflow/components/anthropic.py +6 -0
  93. langflow/components/data.py +6 -0
  94. langflow/components/helpers.py +6 -0
  95. langflow/components/knowledge_bases/ingestion.py +13 -14
  96. langflow/components/knowledge_bases/retrieval.py +8 -7
  97. langflow/components/openai.py +6 -0
  98. langflow/components/processing/__init__.py +1 -117
  99. langflow/components/processing/converter.py +3 -149
  100. langflow/custom/__init__.py +26 -3
  101. langflow/custom/custom_component/__init__.py +4 -0
  102. langflow/custom/custom_component/component.py +20 -1738
  103. langflow/custom/custom_component/component_with_cache.py +1 -8
  104. langflow/custom/custom_component/custom_component.py +1 -552
  105. langflow/custom/utils.py +1 -872
  106. langflow/custom/validate.py +1 -0
  107. langflow/events/event_manager.py +18 -108
  108. langflow/field_typing/__init__.py +6 -6
  109. langflow/field_typing/constants.py +87 -122
  110. langflow/field_typing/range_spec.py +2 -32
  111. langflow/frontend/assets/{SlackIcon-Cc7Qnzki.js → SlackIcon-v88osOTA.js} +1 -1
  112. langflow/frontend/assets/{Wikipedia-7ulMZY46.js → Wikipedia-DD_S2k00.js} +1 -1
  113. langflow/frontend/assets/{Wolfram-By9PGsHS.js → Wolfram-EO2C5noN.js} +1 -1
  114. langflow/frontend/assets/{index-DVLIDc2_.js → index-1Gv1mfvk.js} +1 -1
  115. langflow/frontend/assets/{index-MVW4HTEk.js → index-7v-bzlzf.js} +1 -1
  116. langflow/frontend/assets/{index-CUzlcce2.js → index-9CbMazbV.js} +1 -1
  117. langflow/frontend/assets/{index-CU16NJD7.js → index-B8ZHP8g2.js} +1 -1
  118. langflow/frontend/assets/{index-v8eXbWlM.js → index-B8y2e6vN.js} +1 -1
  119. langflow/frontend/assets/{index-BX_asvRB.js → index-BBRUGsyr.js} +1 -1
  120. langflow/frontend/assets/{index-9FL5xjkL.js → index-BGwqQwlh.js} +1 -1
  121. langflow/frontend/assets/{index-BAn-AzCS.js → index-BIq-k-FG.js} +1 -1
  122. langflow/frontend/assets/{index-D5c2nNvp.js → index-BSN73YP8.js} +1 -1
  123. langflow/frontend/assets/{index-DMCerPJM.js → index-BU8R8jRn.js} +1 -1
  124. langflow/frontend/assets/{index-CvSoff-8.js → index-BV6yx8ey.js} +1 -1
  125. langflow/frontend/assets/{index-BISPW-f6.js → index-BYIsg-Eh.js} +1 -1
  126. langflow/frontend/assets/{index-GzOGB_fo.js → index-B_ksDBSQ.js} +1 -1
  127. langflow/frontend/assets/{index-BIqEYjNT.js → index-Ba1UOZ9A.js} +1 -1
  128. langflow/frontend/assets/{index-ByxGmq5p.js → index-Ba9tKRQg.js} +1 -1
  129. langflow/frontend/assets/{index-BLEWsL1U.js → index-Bbfaw8ca.js} +1 -1
  130. langflow/frontend/assets/{index-C_MhBX6R.js → index-BbuGqvAx.js} +1 -1
  131. langflow/frontend/assets/{index-RH_I78z_.js → index-BeoXu1YX.js} +1 -1
  132. langflow/frontend/assets/{index-cYFKmtmg.js → index-BfjZmOnH.js} +1 -1
  133. langflow/frontend/assets/{index-Bm9i8F4W.js → index-Bjzy_HZB.js} +1 -1
  134. langflow/frontend/assets/{index-_szO7sta.js → index-BofEkpYB.js} +1 -1
  135. langflow/frontend/assets/{index-DP1oE6QB.js → index-Bp7Mty2H.js} +1 -1
  136. langflow/frontend/assets/{index-CeswGUz3.js → index-BqX1H6yK.js} +1 -1
  137. langflow/frontend/assets/{index-C8pI0lzi.js → index-BqtBAJAN.js} +1 -1
  138. langflow/frontend/assets/{index-BusCv3bR.js → index-Bsfraj7A.js} +1 -1
  139. langflow/frontend/assets/{index-BWnKMRFJ.js → index-BtFl7fER.js} +1 -1
  140. langflow/frontend/assets/{index-DnlVWWU8.js → index-BvX993Sv.js} +1 -1
  141. langflow/frontend/assets/{index-C676MS3I.js → index-BvgQ2vzM.js} +1 -1
  142. langflow/frontend/assets/{index-DJ6HD14g.js → index-BwY98u8n.js} +1 -1
  143. langflow/frontend/assets/{index-C51yNvIL.js → index-C-RIJAOS.js} +1 -1
  144. langflow/frontend/assets/{index-DiblXWmk.js → index-C1K6A38P.js} +1 -1
  145. langflow/frontend/assets/{index-Co__gFM1.js → index-C3Vwhx0t.js} +1 -1
  146. langflow/frontend/assets/{index-Coi86oqP.js → index-C5XUG_gr.js} +1 -1
  147. langflow/frontend/assets/{index-jwzN3Jd_.js → index-C6ouLG9o.js} +1 -1
  148. langflow/frontend/assets/{index-CQQ-4XMS.js → index-C7ZJ_Z6f.js} +1 -1
  149. langflow/frontend/assets/{index-Bl7RpmrB.js → index-CCOGIwGY.js} +1 -1
  150. langflow/frontend/assets/{index-CVkIdc6y.js → index-CCcye2rt.js} +1 -1
  151. langflow/frontend/assets/{index-bMhyLtgS.js → index-CFR4yJQB.js} +1 -1
  152. langflow/frontend/assets/{index-aAgSKWb3.js → index-CIGmPP0H.js} +1 -1
  153. langflow/frontend/assets/{index-BGt6jQ4x.js → index-CJmMEa6d.js} +1 -1
  154. langflow/frontend/assets/{index-DX7JcSMz.js → index-CJxD7lyU.js} +1 -1
  155. langflow/frontend/assets/{index-BZ-A4K98.js → index-CL_vu6ut.js} +1 -1
  156. langflow/frontend/assets/{index-BMpKFGhI.js → index-COf3UnBn.js} +1 -1
  157. langflow/frontend/assets/{index-xN8ogFdo.js → index-CV9650h_.js} +1 -1
  158. langflow/frontend/assets/{index-OsUvqIUr.js → index-CVDzych0.js} +1 -1
  159. langflow/frontend/assets/{index-BH7AyHxp.js → index-CWIHsC4D.js} +1 -1
  160. langflow/frontend/assets/{index-mjwtJmkP.js → index-CXCnFZ0L.js} +1 -1
  161. langflow/frontend/assets/{index-3jlSQi5Y.js → index-Ca_Pw_Dn.js} +1 -1
  162. langflow/frontend/assets/{index-D-SnFlhU.js → index-Cbb3bX9e.js} +1 -1
  163. langflow/frontend/assets/{index--e0oQqZh.js → index-CcJtOz-Z.js} +1 -1
  164. langflow/frontend/assets/{index-S-sc0Cm9.js → index-CfTbTHEv.js} +1 -1
  165. langflow/frontend/assets/{index-Deu8rlaZ.js → index-ChoxDAgX.js} +1 -1
  166. langflow/frontend/assets/{index-lnF9Eqr2.js → index-Cn4gw8aE.js} +1 -1
  167. langflow/frontend/assets/{index-C_NwzK6j.js → index-CnpLg4zX.js} +1 -1
  168. langflow/frontend/assets/{index-DznH7Jbq.js → index-Cpao2omG.js} +1 -1
  169. langflow/frontend/assets/{index-DpWrk8mA.js → index-CqoxM01j.js} +1 -1
  170. langflow/frontend/assets/{index-Bw-TIIC6.js → index-CrHf2Ic1.js} +1 -1
  171. langflow/frontend/assets/{index-DmYLDQag.js → index-CrV0uIjp.js} +1 -1
  172. langflow/frontend/assets/{index-Dp7ZQyL3.js → index-CssADaak.js} +1 -1
  173. langflow/frontend/assets/{index-CNh0rwur.js → index-CtJdNLy9.js} +1 -1
  174. langflow/frontend/assets/{index-Ca1b7Iag.js → index-CyeWD2dh.js} +1 -1
  175. langflow/frontend/assets/{index-DcApTyZ7.js → index-D1xzD7uc.js} +1 -1
  176. langflow/frontend/assets/{index-B3GvPjhD.js → index-D6MuXC4L.js} +1 -1
  177. langflow/frontend/assets/{index-Cw0UComa.js → index-D8w9zvIF.js} +1 -1
  178. langflow/frontend/assets/{index-C-2MRYoJ.js → index-D98Gn0A6.js} +1 -1
  179. langflow/frontend/assets/{index-aWnZIwHd.js → index-DBhjpWkf.js} +1 -1
  180. langflow/frontend/assets/{index-nw3WF9lY.js → index-DCCRJzcY.js} +1 -1
  181. langflow/frontend/assets/{index-RjeC0kaX.js → index-DCTRSkEW.js} +1 -1
  182. langflow/frontend/assets/{index-B_kBTgxV.js → index-DCUfitVj.js} +1 -1
  183. langflow/frontend/assets/{index-ChsGhZn3.js → index-DDdz-Xcl.js} +1 -1
  184. langflow/frontend/assets/{index-7yAHPRxv.js → index-DGdMwZjG.js} +1 -1
  185. langflow/frontend/assets/{index-DjQElpEg.js → index-DGtl2vMw.js} +1 -1
  186. langflow/frontend/assets/{index-BCXhKCOK.js → index-DHVdkrni.js} +1 -1
  187. langflow/frontend/assets/{index-S8uJXTOq.js → index-DJBWwjgl.js} +1 -1
  188. langflow/frontend/assets/{index-qiVTWUuf.js → index-DMAkJ_qX.js} +1 -1
  189. langflow/frontend/assets/{index-D-WStJI6.js → index-DMEvEQI5.js} +1 -1
  190. langflow/frontend/assets/{index-BhqVw9WQ.js → index-DNGRoOsp.js} +1 -1
  191. langflow/frontend/assets/{index-Cu7vC48Y.js → index-DNT_TUTa.js} +1 -1
  192. langflow/frontend/assets/{index-Bhcv5M0n.js → index-DQKOH_9K.js} +1 -1
  193. langflow/frontend/assets/{index-CLcaktde.js → index-DQhqqtqQ.js} +1 -1
  194. langflow/frontend/assets/{index-DZVgPCio.js → index-DRM7KKnG.js} +1 -1
  195. langflow/frontend/assets/{index-uybez8MR.js → index-DSCtl3a5.js} +1 -1
  196. langflow/frontend/assets/{index-CJ5A6STv.js → index-DSLNlm0Z.js} +1 -1
  197. langflow/frontend/assets/{index-Drg8me2a.js → index-DT-PspE-.js} +1 -1
  198. langflow/frontend/assets/{index-DsEZjOcp.js → index-DTpbH-p8.js} +1 -1
  199. langflow/frontend/assets/{index-DrXXKzpD.js → index-DWV6MsIq.js} +1 -1
  200. langflow/frontend/assets/{index-4JIEdyIM.js → index-DWeL4US_.js} +1 -1
  201. langflow/frontend/assets/{index-BlDsBQ_1.js → index-DYKZHhpU.js} +1 -1
  202. langflow/frontend/assets/{index-DFY8YFbC.js → index-DZyQHiMR.js} +1 -1
  203. langflow/frontend/assets/{index-CKPZpkQk.js → index-Dc6qVuSa.js} +1 -1
  204. langflow/frontend/assets/{index-yyAaYjLR.js → index-DkYuicnC.js} +1 -1
  205. langflow/frontend/assets/{index-DmVt5Jlx.js → index-Dlj_2mMs.js} +1 -1
  206. langflow/frontend/assets/{index-BvRIG6P5.js → index-DmGJUrEp.js} +1 -1
  207. langflow/frontend/assets/{index-BWFIrwW1.js → index-Dn6hpCAZ.js} +1 -1
  208. langflow/frontend/assets/{index-Cb5G9Ifd.js → index-DrJU8Fgb.js} +1 -1
  209. langflow/frontend/assets/{index-COoTCxvs.js → index-DsWfdCzp.js} +1 -1
  210. langflow/frontend/assets/{index-ZjeocHyu.js → index-DvCPWs2_.js} +1 -1
  211. langflow/frontend/assets/{index-B5LHnuQR.js → index-DvPVq7OP.js} +1 -1
  212. langflow/frontend/assets/{index-BnCnYnao.js → index-Dw71ufW4.js} +1 -1
  213. langflow/frontend/assets/{index-AALDfCyt.js → index-DxkJactf.js} +1 -1
  214. langflow/frontend/assets/{index-k9jP5chN.js → index-Dz2GTphU.js} +1 -1
  215. langflow/frontend/assets/{index-BdjfHsrf.js → index-Fvd524_c.js} +1 -1
  216. langflow/frontend/assets/{index-AKVkmT4S.js → index-GAQ0Mk2M.js} +1 -1
  217. langflow/frontend/assets/{index-BZSa2qz7.js → index-Hm5-4ItD.js} +1 -1
  218. langflow/frontend/assets/{index-DbfS_UH-.js → index-IT67FzsK.js} +1 -1
  219. langflow/frontend/assets/{index-BLXN681C.js → index-ItYiij1i.js} +1 -1
  220. langflow/frontend/assets/{index-CiklyQU3.js → index-IuR_FEdB.js} +1 -1
  221. langflow/frontend/assets/{index-xV6ystWy.js → index-Jj60FQkv.js} +1 -1
  222. langflow/frontend/assets/{index-C_157Mb-.js → index-LlvshmVz.js} +1 -1
  223. langflow/frontend/assets/{index-CDphUsa3.js → index-LwKh3I_W.js} +1 -1
  224. langflow/frontend/assets/{index-BrDz-PxE.js → index-N-xxmKKH.js} +1 -1
  225. langflow/frontend/assets/{index-BsdLyYMY.js → index-RwpaHIAH.js} +1 -1
  226. langflow/frontend/assets/{index-Cu2Xr6_j.js → index-TVvsp-xh.js} +1 -1
  227. langflow/frontend/assets/{index-CPiM2oyj.js → index-TdE2u9zP.js} +1 -1
  228. langflow/frontend/assets/{index-DOj_QWqG.js → index-_x-NkYeW.js} +1 -1
  229. langflow/frontend/assets/{index-YJsAl7vm.js → index-a-YclEbW.js} +1 -1
  230. langflow/frontend/assets/{index-5-CSw2-z.js → index-e9MFKUCo.js} +1 -1
  231. langflow/frontend/assets/{index-BSwBVwyF.js → index-krPr8f2F.js} +1 -1
  232. langflow/frontend/assets/{index-Df6psZEj.js → index-kveiUWuL.js} +1 -1
  233. langflow/frontend/assets/{index-CF4_Og1m.js → index-lE3oSjJi.js} +1 -1
  234. langflow/frontend/assets/{index-C6nzdeYx.js → index-lM3UYg7F.js} +1 -1
  235. langflow/frontend/assets/{index-C-wnbBBY.js → index-nsRk3qgA.js} +1 -1
  236. langflow/frontend/assets/{index-D234yKNJ.js → index-pBO0SZLD.js} +4 -4
  237. langflow/frontend/assets/{index-BMvp94tO.js → index-pbZHsbuE.js} +1 -1
  238. langflow/frontend/assets/{index-hg2y9OAt.js → index-sfX3aWyp.js} +1 -1
  239. langflow/frontend/assets/{index-DTCrijba.js → index-xQz-VJ0-.js} +1 -1
  240. langflow/frontend/assets/{index-SB4rw8D5.js → index-yfcsaHS6.js} +1 -1
  241. langflow/frontend/assets/{index-C-bjC2sz.js → index-zcGjo9fx.js} +1 -1
  242. langflow/frontend/assets/lazyIconImports-BjqDmNYG.js +2 -0
  243. langflow/frontend/assets/{use-post-add-user-JUeLDErC.js → use-post-add-user-w3vpKSOB.js} +1 -1
  244. langflow/frontend/index.html +1 -1
  245. langflow/graph/__init__.py +4 -4
  246. langflow/helpers/data.py +2 -2
  247. langflow/helpers/flow.py +9 -7
  248. langflow/helpers/user.py +2 -2
  249. langflow/initial_setup/setup.py +9 -9
  250. langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +119 -41
  251. langflow/initial_setup/starter_projects/Basic Prompting.json +45 -19
  252. langflow/initial_setup/starter_projects/Blog Writer.json +53 -21
  253. langflow/initial_setup/starter_projects/Custom Component Generator.json +121 -97
  254. langflow/initial_setup/starter_projects/Document Q&A.json +46 -18
  255. langflow/initial_setup/starter_projects/Financial Report Parser.json +49 -17
  256. langflow/initial_setup/starter_projects/Hybrid Search RAG.json +89 -50
  257. langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +86 -22
  258. langflow/initial_setup/starter_projects/Instagram Copywriter.json +210 -57
  259. langflow/initial_setup/starter_projects/Invoice Summarizer.json +132 -35
  260. langflow/initial_setup/starter_projects/Knowledge Ingestion.json +8 -8
  261. langflow/initial_setup/starter_projects/Knowledge Retrieval.json +8 -8
  262. langflow/initial_setup/starter_projects/Market Research.json +174 -48
  263. langflow/initial_setup/starter_projects/Meeting Summary.json +102 -38
  264. langflow/initial_setup/starter_projects/Memory Chatbot.json +49 -21
  265. langflow/initial_setup/starter_projects/News Aggregator.json +140 -39
  266. langflow/initial_setup/starter_projects/Nvidia Remix.json +153 -181
  267. langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +132 -35
  268. langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +106 -43
  269. langflow/initial_setup/starter_projects/Price Deal Finder.json +136 -39
  270. langflow/initial_setup/starter_projects/Research Agent.json +206 -53
  271. langflow/initial_setup/starter_projects/Research Translation Loop.json +66 -34
  272. langflow/initial_setup/starter_projects/SEO Keyword Generator.json +41 -15
  273. langflow/initial_setup/starter_projects/SaaS Pricing.json +128 -31
  274. langflow/initial_setup/starter_projects/Search agent.json +132 -35
  275. langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +422 -98
  276. langflow/initial_setup/starter_projects/Simple Agent.json +150 -42
  277. langflow/initial_setup/starter_projects/Social Media Agent.json +150 -42
  278. langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +120 -24
  279. langflow/initial_setup/starter_projects/Travel Planning Agents.json +418 -94
  280. langflow/initial_setup/starter_projects/Twitter Thread Generator.json +69 -37
  281. langflow/initial_setup/starter_projects/Vector Store RAG.json +66 -38
  282. langflow/initial_setup/starter_projects/Youtube Analysis.json +191 -51
  283. langflow/initial_setup/starter_projects/basic_prompting.py +4 -4
  284. langflow/initial_setup/starter_projects/blog_writer.py +5 -5
  285. langflow/initial_setup/starter_projects/complex_agent.py +8 -8
  286. langflow/initial_setup/starter_projects/document_qa.py +5 -5
  287. langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +8 -8
  288. langflow/initial_setup/starter_projects/memory_chatbot.py +6 -6
  289. langflow/initial_setup/starter_projects/sequential_tasks_agent.py +7 -7
  290. langflow/initial_setup/starter_projects/vector_store_rag.py +8 -8
  291. langflow/inputs/__init__.py +3 -2
  292. langflow/inputs/constants.py +3 -2
  293. langflow/inputs/input_mixin.py +49 -310
  294. langflow/inputs/inputs.py +72 -703
  295. langflow/inputs/validators.py +2 -18
  296. langflow/interface/__init__.py +4 -0
  297. langflow/interface/components.py +3 -491
  298. langflow/interface/initialize/loading.py +7 -6
  299. langflow/interface/listing.py +3 -25
  300. langflow/interface/run.py +1 -1
  301. langflow/interface/utils.py +3 -111
  302. langflow/io/__init__.py +2 -2
  303. langflow/io/schema.py +11 -302
  304. langflow/load/__init__.py +4 -2
  305. langflow/load/utils.py +2 -96
  306. langflow/logging/__init__.py +2 -1
  307. langflow/logging/setup.py +1 -1
  308. langflow/main.py +8 -5
  309. langflow/memory.py +12 -6
  310. langflow/middleware.py +1 -1
  311. langflow/processing/process.py +7 -7
  312. langflow/schema/__init__.py +22 -5
  313. langflow/schema/artifact.py +1 -1
  314. langflow/schema/data.py +5 -303
  315. langflow/schema/dataframe.py +2 -205
  316. langflow/schema/graph.py +4 -45
  317. langflow/schema/image.py +2 -67
  318. langflow/schema/message.py +6 -470
  319. langflow/schema/playground_events.py +5 -6
  320. langflow/schema/schema.py +24 -117
  321. langflow/serialization/constants.py +3 -2
  322. langflow/serialization/serialization.py +1 -1
  323. langflow/server.py +1 -2
  324. langflow/services/__init__.py +1 -2
  325. langflow/services/auth/mcp_encryption.py +1 -1
  326. langflow/services/auth/service.py +1 -1
  327. langflow/services/auth/utils.py +5 -5
  328. langflow/services/cache/disk.py +2 -2
  329. langflow/services/cache/factory.py +2 -2
  330. langflow/services/cache/service.py +2 -2
  331. langflow/services/cache/utils.py +0 -11
  332. langflow/services/database/factory.py +1 -1
  333. langflow/services/database/models/flow/model.py +1 -1
  334. langflow/services/database/models/message/crud.py +2 -1
  335. langflow/services/database/models/transactions/crud.py +1 -1
  336. langflow/services/database/models/user/crud.py +1 -1
  337. langflow/services/database/service.py +2 -2
  338. langflow/services/database/utils.py +1 -2
  339. langflow/services/deps.py +12 -17
  340. langflow/services/enhanced_manager.py +71 -0
  341. langflow/services/factory.py +14 -7
  342. langflow/services/flow/flow_runner.py +4 -4
  343. langflow/services/job_queue/service.py +2 -1
  344. langflow/services/manager.py +14 -130
  345. langflow/services/schema.py +0 -1
  346. langflow/services/session/service.py +3 -2
  347. langflow/services/settings/__init__.py +0 -3
  348. langflow/services/settings/base.py +16 -549
  349. langflow/services/settings/factory.py +2 -21
  350. langflow/services/settings/feature_flags.py +2 -11
  351. langflow/services/settings/service.py +2 -31
  352. langflow/services/shared_component_cache/factory.py +1 -1
  353. langflow/services/socket/service.py +1 -1
  354. langflow/services/socket/utils.py +1 -8
  355. langflow/services/state/factory.py +1 -1
  356. langflow/services/state/service.py +3 -2
  357. langflow/services/storage/factory.py +2 -2
  358. langflow/services/storage/local.py +1 -2
  359. langflow/services/storage/s3.py +1 -2
  360. langflow/services/storage/service.py +2 -1
  361. langflow/services/store/factory.py +1 -1
  362. langflow/services/store/service.py +2 -2
  363. langflow/services/store/utils.py +1 -2
  364. langflow/services/task/service.py +2 -1
  365. langflow/services/task/temp_flow_cleanup.py +1 -1
  366. langflow/services/telemetry/factory.py +1 -1
  367. langflow/services/telemetry/service.py +2 -3
  368. langflow/services/tracing/arize_phoenix.py +3 -3
  369. langflow/services/tracing/base.py +1 -1
  370. langflow/services/tracing/factory.py +1 -1
  371. langflow/services/tracing/langfuse.py +2 -2
  372. langflow/services/tracing/langsmith.py +2 -2
  373. langflow/services/tracing/langwatch.py +4 -4
  374. langflow/services/tracing/opik.py +2 -2
  375. langflow/services/tracing/service.py +17 -11
  376. langflow/services/tracing/traceloop.py +2 -2
  377. langflow/services/tracing/utils.py +1 -1
  378. langflow/services/utils.py +54 -9
  379. langflow/services/variable/factory.py +1 -1
  380. langflow/services/variable/kubernetes.py +2 -3
  381. langflow/services/variable/kubernetes_secrets.py +1 -2
  382. langflow/services/variable/service.py +2 -3
  383. langflow/template/__init__.py +2 -9
  384. langflow/template/field/__init__.py +3 -0
  385. langflow/template/field/base.py +2 -256
  386. langflow/template/frontend_node.py +3 -0
  387. langflow/template/utils.py +2 -216
  388. langflow/utils/constants.py +28 -204
  389. langflow/utils/lazy_load.py +3 -14
  390. langflow/utils/schemas.py +2 -3
  391. langflow/utils/template_validation.py +2 -2
  392. langflow/utils/util.py +59 -479
  393. langflow/utils/validate.py +2 -488
  394. langflow/utils/voice_utils.py +1 -2
  395. langflow/worker.py +1 -1
  396. {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/METADATA +2 -1
  397. langflow_base_nightly-0.5.1.dev4.dist-info/RECORD +633 -0
  398. langflow/base/agents/agent.py +0 -267
  399. langflow/base/agents/callback.py +0 -130
  400. langflow/base/agents/context.py +0 -109
  401. langflow/base/agents/crewai/__init__.py +0 -0
  402. langflow/base/agents/crewai/crew.py +0 -231
  403. langflow/base/agents/crewai/tasks.py +0 -12
  404. langflow/base/agents/default_prompts.py +0 -23
  405. langflow/base/agents/errors.py +0 -15
  406. langflow/base/agents/events.py +0 -346
  407. langflow/base/agents/utils.py +0 -205
  408. langflow/base/astra_assistants/__init__.py +0 -0
  409. langflow/base/astra_assistants/util.py +0 -171
  410. langflow/base/chains/__init__.py +0 -0
  411. langflow/base/chains/model.py +0 -19
  412. langflow/base/composio/__init__.py +0 -0
  413. langflow/base/composio/composio_base.py +0 -1297
  414. langflow/base/compressors/__init__.py +0 -0
  415. langflow/base/compressors/model.py +0 -60
  416. langflow/base/constants.py +0 -46
  417. langflow/base/curl/__init__.py +0 -0
  418. langflow/base/curl/parse.py +0 -188
  419. langflow/base/data/base_file.py +0 -685
  420. langflow/base/data/docling_utils.py +0 -245
  421. langflow/base/document_transformers/__init__.py +0 -0
  422. langflow/base/document_transformers/model.py +0 -43
  423. langflow/base/embeddings/aiml_embeddings.py +0 -62
  424. langflow/base/embeddings/model.py +0 -26
  425. langflow/base/flow_processing/__init__.py +0 -0
  426. langflow/base/flow_processing/utils.py +0 -86
  427. langflow/base/huggingface/__init__.py +0 -0
  428. langflow/base/huggingface/model_bridge.py +0 -133
  429. langflow/base/langchain_utilities/__init__.py +0 -0
  430. langflow/base/langchain_utilities/model.py +0 -35
  431. langflow/base/langchain_utilities/spider_constants.py +0 -1
  432. langflow/base/langwatch/__init__.py +0 -0
  433. langflow/base/langwatch/utils.py +0 -18
  434. langflow/base/mcp/__init__.py +0 -0
  435. langflow/base/mcp/constants.py +0 -2
  436. langflow/base/mcp/util.py +0 -1524
  437. langflow/base/memory/memory.py +0 -49
  438. langflow/base/memory/model.py +0 -38
  439. langflow/base/models/aiml_constants.py +0 -51
  440. langflow/base/models/anthropic_constants.py +0 -47
  441. langflow/base/models/aws_constants.py +0 -151
  442. langflow/base/models/chat_result.py +0 -76
  443. langflow/base/models/google_generative_ai_constants.py +0 -70
  444. langflow/base/models/groq_constants.py +0 -134
  445. langflow/base/models/model.py +0 -375
  446. langflow/base/models/model_input_constants.py +0 -299
  447. langflow/base/models/model_metadata.py +0 -41
  448. langflow/base/models/model_utils.py +0 -8
  449. langflow/base/models/novita_constants.py +0 -35
  450. langflow/base/models/ollama_constants.py +0 -49
  451. langflow/base/models/sambanova_constants.py +0 -18
  452. langflow/base/processing/__init__.py +0 -0
  453. langflow/base/prompts/utils.py +0 -61
  454. langflow/base/textsplitters/model.py +0 -28
  455. langflow/base/tools/base.py +0 -26
  456. langflow/base/tools/component_tool.py +0 -324
  457. langflow/base/tools/constants.py +0 -49
  458. langflow/base/tools/flow_tool.py +0 -131
  459. langflow/base/tools/run_flow.py +0 -227
  460. langflow/base/vectorstores/model.py +0 -193
  461. langflow/base/vectorstores/utils.py +0 -22
  462. langflow/base/vectorstores/vector_store_connection_decorator.py +0 -52
  463. langflow/components/FAISS/__init__.py +0 -34
  464. langflow/components/FAISS/faiss.py +0 -111
  465. langflow/components/Notion/__init__.py +0 -19
  466. langflow/components/Notion/add_content_to_page.py +0 -269
  467. langflow/components/Notion/create_page.py +0 -94
  468. langflow/components/Notion/list_database_properties.py +0 -68
  469. langflow/components/Notion/list_pages.py +0 -122
  470. langflow/components/Notion/list_users.py +0 -77
  471. langflow/components/Notion/page_content_viewer.py +0 -93
  472. langflow/components/Notion/search.py +0 -111
  473. langflow/components/Notion/update_page_property.py +0 -114
  474. langflow/components/_importing.py +0 -37
  475. langflow/components/agentql/__init__.py +0 -3
  476. langflow/components/agentql/agentql_api.py +0 -151
  477. langflow/components/agents/__init__.py +0 -4
  478. langflow/components/agents/agent.py +0 -554
  479. langflow/components/agents/mcp_component.py +0 -501
  480. langflow/components/aiml/__init__.py +0 -37
  481. langflow/components/aiml/aiml.py +0 -112
  482. langflow/components/aiml/aiml_embeddings.py +0 -37
  483. langflow/components/amazon/__init__.py +0 -36
  484. langflow/components/amazon/amazon_bedrock_embedding.py +0 -109
  485. langflow/components/amazon/amazon_bedrock_model.py +0 -124
  486. langflow/components/amazon/s3_bucket_uploader.py +0 -211
  487. langflow/components/anthropic/__init__.py +0 -34
  488. langflow/components/anthropic/anthropic.py +0 -187
  489. langflow/components/apify/__init__.py +0 -5
  490. langflow/components/apify/apify_actor.py +0 -325
  491. langflow/components/arxiv/__init__.py +0 -3
  492. langflow/components/arxiv/arxiv.py +0 -163
  493. langflow/components/assemblyai/__init__.py +0 -46
  494. langflow/components/assemblyai/assemblyai_get_subtitles.py +0 -83
  495. langflow/components/assemblyai/assemblyai_lemur.py +0 -183
  496. langflow/components/assemblyai/assemblyai_list_transcripts.py +0 -95
  497. langflow/components/assemblyai/assemblyai_poll_transcript.py +0 -72
  498. langflow/components/assemblyai/assemblyai_start_transcript.py +0 -188
  499. langflow/components/azure/__init__.py +0 -37
  500. langflow/components/azure/azure_openai.py +0 -95
  501. langflow/components/azure/azure_openai_embeddings.py +0 -83
  502. langflow/components/baidu/__init__.py +0 -32
  503. langflow/components/baidu/baidu_qianfan_chat.py +0 -113
  504. langflow/components/bing/__init__.py +0 -3
  505. langflow/components/bing/bing_search_api.py +0 -61
  506. langflow/components/cassandra/__init__.py +0 -40
  507. langflow/components/cassandra/cassandra.py +0 -264
  508. langflow/components/cassandra/cassandra_chat.py +0 -92
  509. langflow/components/cassandra/cassandra_graph.py +0 -238
  510. langflow/components/chains/__init__.py +0 -0
  511. langflow/components/chroma/__init__.py +0 -34
  512. langflow/components/chroma/chroma.py +0 -167
  513. langflow/components/cleanlab/__init__.py +0 -40
  514. langflow/components/cleanlab/cleanlab_evaluator.py +0 -157
  515. langflow/components/cleanlab/cleanlab_rag_evaluator.py +0 -254
  516. langflow/components/cleanlab/cleanlab_remediator.py +0 -131
  517. langflow/components/clickhouse/__init__.py +0 -34
  518. langflow/components/clickhouse/clickhouse.py +0 -135
  519. langflow/components/cloudflare/__init__.py +0 -32
  520. langflow/components/cloudflare/cloudflare.py +0 -81
  521. langflow/components/cohere/__init__.py +0 -40
  522. langflow/components/cohere/cohere_embeddings.py +0 -81
  523. langflow/components/cohere/cohere_models.py +0 -46
  524. langflow/components/cohere/cohere_rerank.py +0 -51
  525. langflow/components/composio/__init__.py +0 -73
  526. langflow/components/composio/composio_api.py +0 -268
  527. langflow/components/composio/dropbox_compnent.py +0 -11
  528. langflow/components/composio/github_composio.py +0 -11
  529. langflow/components/composio/gmail_composio.py +0 -38
  530. langflow/components/composio/googlecalendar_composio.py +0 -11
  531. langflow/components/composio/googlemeet_composio.py +0 -11
  532. langflow/components/composio/googletasks_composio.py +0 -8
  533. langflow/components/composio/linear_composio.py +0 -11
  534. langflow/components/composio/outlook_composio.py +0 -11
  535. langflow/components/composio/reddit_composio.py +0 -11
  536. langflow/components/composio/slack_composio.py +0 -11
  537. langflow/components/composio/slackbot_composio.py +0 -11
  538. langflow/components/composio/supabase_composio.py +0 -11
  539. langflow/components/composio/todoist_composio.py +0 -11
  540. langflow/components/composio/youtube_composio.py +0 -11
  541. langflow/components/confluence/__init__.py +0 -3
  542. langflow/components/confluence/confluence.py +0 -84
  543. langflow/components/couchbase/__init__.py +0 -34
  544. langflow/components/couchbase/couchbase.py +0 -102
  545. langflow/components/crewai/__init__.py +0 -49
  546. langflow/components/crewai/crewai.py +0 -107
  547. langflow/components/crewai/hierarchical_crew.py +0 -46
  548. langflow/components/crewai/hierarchical_task.py +0 -44
  549. langflow/components/crewai/sequential_crew.py +0 -52
  550. langflow/components/crewai/sequential_task.py +0 -73
  551. langflow/components/crewai/sequential_task_agent.py +0 -143
  552. langflow/components/custom_component/__init__.py +0 -34
  553. langflow/components/custom_component/custom_component.py +0 -31
  554. langflow/components/data/__init__.py +0 -25
  555. langflow/components/data/api_request.py +0 -545
  556. langflow/components/data/csv_to_data.py +0 -95
  557. langflow/components/data/directory.py +0 -113
  558. langflow/components/data/file.py +0 -586
  559. langflow/components/data/json_to_data.py +0 -98
  560. langflow/components/data/news_search.py +0 -164
  561. langflow/components/data/rss.py +0 -69
  562. langflow/components/data/sql_executor.py +0 -99
  563. langflow/components/data/url.py +0 -299
  564. langflow/components/data/web_search.py +0 -112
  565. langflow/components/data/webhook.py +0 -56
  566. langflow/components/datastax/__init__.py +0 -70
  567. langflow/components/datastax/astra_assistant_manager.py +0 -306
  568. langflow/components/datastax/astra_db.py +0 -69
  569. langflow/components/datastax/astra_vectorize.py +0 -124
  570. langflow/components/datastax/astradb_cql.py +0 -314
  571. langflow/components/datastax/astradb_graph.py +0 -319
  572. langflow/components/datastax/astradb_tool.py +0 -414
  573. langflow/components/datastax/astradb_vectorstore.py +0 -1285
  574. langflow/components/datastax/create_assistant.py +0 -58
  575. langflow/components/datastax/create_thread.py +0 -32
  576. langflow/components/datastax/dotenv.py +0 -35
  577. langflow/components/datastax/get_assistant.py +0 -37
  578. langflow/components/datastax/getenvvar.py +0 -30
  579. langflow/components/datastax/graph_rag.py +0 -141
  580. langflow/components/datastax/hcd.py +0 -314
  581. langflow/components/datastax/list_assistants.py +0 -25
  582. langflow/components/datastax/run.py +0 -89
  583. langflow/components/deactivated/__init__.py +0 -19
  584. langflow/components/deactivated/amazon_kendra.py +0 -66
  585. langflow/components/deactivated/chat_litellm_model.py +0 -158
  586. langflow/components/deactivated/code_block_extractor.py +0 -26
  587. langflow/components/deactivated/documents_to_data.py +0 -22
  588. langflow/components/deactivated/embed.py +0 -16
  589. langflow/components/deactivated/extract_key_from_data.py +0 -46
  590. langflow/components/deactivated/json_document_builder.py +0 -59
  591. langflow/components/deactivated/list_flows.py +0 -20
  592. langflow/components/deactivated/mcp_sse.py +0 -61
  593. langflow/components/deactivated/mcp_stdio.py +0 -62
  594. langflow/components/deactivated/merge_data.py +0 -93
  595. langflow/components/deactivated/message.py +0 -37
  596. langflow/components/deactivated/metal.py +0 -54
  597. langflow/components/deactivated/multi_query.py +0 -59
  598. langflow/components/deactivated/retriever.py +0 -43
  599. langflow/components/deactivated/selective_passthrough.py +0 -77
  600. langflow/components/deactivated/should_run_next.py +0 -40
  601. langflow/components/deactivated/split_text.py +0 -63
  602. langflow/components/deactivated/store_message.py +0 -24
  603. langflow/components/deactivated/sub_flow.py +0 -124
  604. langflow/components/deactivated/vectara_self_query.py +0 -76
  605. langflow/components/deactivated/vector_store.py +0 -24
  606. langflow/components/deepseek/__init__.py +0 -34
  607. langflow/components/deepseek/deepseek.py +0 -136
  608. langflow/components/docling/__init__.py +0 -43
  609. langflow/components/docling/chunk_docling_document.py +0 -186
  610. langflow/components/docling/docling_inline.py +0 -235
  611. langflow/components/docling/docling_remote.py +0 -193
  612. langflow/components/docling/export_docling_document.py +0 -117
  613. langflow/components/documentloaders/__init__.py +0 -0
  614. langflow/components/duckduckgo/__init__.py +0 -3
  615. langflow/components/duckduckgo/duck_duck_go_search_run.py +0 -92
  616. langflow/components/elastic/__init__.py +0 -37
  617. langflow/components/elastic/elasticsearch.py +0 -267
  618. langflow/components/elastic/opensearch.py +0 -243
  619. langflow/components/embeddings/__init__.py +0 -37
  620. langflow/components/embeddings/similarity.py +0 -76
  621. langflow/components/embeddings/text_embedder.py +0 -64
  622. langflow/components/exa/__init__.py +0 -3
  623. langflow/components/exa/exa_search.py +0 -68
  624. langflow/components/firecrawl/__init__.py +0 -43
  625. langflow/components/firecrawl/firecrawl_crawl_api.py +0 -88
  626. langflow/components/firecrawl/firecrawl_extract_api.py +0 -136
  627. langflow/components/firecrawl/firecrawl_map_api.py +0 -89
  628. langflow/components/firecrawl/firecrawl_scrape_api.py +0 -73
  629. langflow/components/git/__init__.py +0 -4
  630. langflow/components/git/git.py +0 -262
  631. langflow/components/git/gitextractor.py +0 -196
  632. langflow/components/glean/__init__.py +0 -3
  633. langflow/components/glean/glean_search_api.py +0 -173
  634. langflow/components/google/__init__.py +0 -17
  635. langflow/components/google/gmail.py +0 -192
  636. langflow/components/google/google_bq_sql_executor.py +0 -157
  637. langflow/components/google/google_drive.py +0 -92
  638. langflow/components/google/google_drive_search.py +0 -152
  639. langflow/components/google/google_generative_ai.py +0 -147
  640. langflow/components/google/google_generative_ai_embeddings.py +0 -141
  641. langflow/components/google/google_oauth_token.py +0 -89
  642. langflow/components/google/google_search_api_core.py +0 -68
  643. langflow/components/google/google_serper_api_core.py +0 -74
  644. langflow/components/groq/__init__.py +0 -34
  645. langflow/components/groq/groq.py +0 -140
  646. langflow/components/helpers/__init__.py +0 -52
  647. langflow/components/helpers/calculator_core.py +0 -89
  648. langflow/components/helpers/create_list.py +0 -40
  649. langflow/components/helpers/current_date.py +0 -42
  650. langflow/components/helpers/id_generator.py +0 -42
  651. langflow/components/helpers/memory.py +0 -251
  652. langflow/components/helpers/output_parser.py +0 -45
  653. langflow/components/helpers/store_message.py +0 -90
  654. langflow/components/homeassistant/__init__.py +0 -7
  655. langflow/components/homeassistant/home_assistant_control.py +0 -152
  656. langflow/components/homeassistant/list_home_assistant_states.py +0 -137
  657. langflow/components/huggingface/__init__.py +0 -37
  658. langflow/components/huggingface/huggingface.py +0 -197
  659. langflow/components/huggingface/huggingface_inference_api.py +0 -106
  660. langflow/components/ibm/__init__.py +0 -34
  661. langflow/components/ibm/watsonx.py +0 -203
  662. langflow/components/ibm/watsonx_embeddings.py +0 -135
  663. langflow/components/icosacomputing/__init__.py +0 -5
  664. langflow/components/icosacomputing/combinatorial_reasoner.py +0 -84
  665. langflow/components/input_output/__init__.py +0 -38
  666. langflow/components/input_output/chat.py +0 -120
  667. langflow/components/input_output/chat_output.py +0 -200
  668. langflow/components/input_output/text.py +0 -27
  669. langflow/components/input_output/text_output.py +0 -29
  670. langflow/components/jigsawstack/__init__.py +0 -23
  671. langflow/components/jigsawstack/ai_scrape.py +0 -126
  672. langflow/components/jigsawstack/ai_web_search.py +0 -136
  673. langflow/components/jigsawstack/file_read.py +0 -115
  674. langflow/components/jigsawstack/file_upload.py +0 -94
  675. langflow/components/jigsawstack/image_generation.py +0 -205
  676. langflow/components/jigsawstack/nsfw.py +0 -60
  677. langflow/components/jigsawstack/object_detection.py +0 -124
  678. langflow/components/jigsawstack/sentiment.py +0 -112
  679. langflow/components/jigsawstack/text_to_sql.py +0 -90
  680. langflow/components/jigsawstack/text_translate.py +0 -77
  681. langflow/components/jigsawstack/vocr.py +0 -107
  682. langflow/components/langchain_utilities/__init__.py +0 -109
  683. langflow/components/langchain_utilities/character.py +0 -53
  684. langflow/components/langchain_utilities/conversation.py +0 -52
  685. langflow/components/langchain_utilities/csv_agent.py +0 -107
  686. langflow/components/langchain_utilities/fake_embeddings.py +0 -26
  687. langflow/components/langchain_utilities/html_link_extractor.py +0 -35
  688. langflow/components/langchain_utilities/json_agent.py +0 -45
  689. langflow/components/langchain_utilities/langchain_hub.py +0 -126
  690. langflow/components/langchain_utilities/language_recursive.py +0 -49
  691. langflow/components/langchain_utilities/language_semantic.py +0 -138
  692. langflow/components/langchain_utilities/llm_checker.py +0 -39
  693. langflow/components/langchain_utilities/llm_math.py +0 -42
  694. langflow/components/langchain_utilities/natural_language.py +0 -61
  695. langflow/components/langchain_utilities/openai_tools.py +0 -53
  696. langflow/components/langchain_utilities/openapi.py +0 -48
  697. langflow/components/langchain_utilities/recursive_character.py +0 -60
  698. langflow/components/langchain_utilities/retrieval_qa.py +0 -83
  699. langflow/components/langchain_utilities/runnable_executor.py +0 -137
  700. langflow/components/langchain_utilities/self_query.py +0 -80
  701. langflow/components/langchain_utilities/spider.py +0 -142
  702. langflow/components/langchain_utilities/sql.py +0 -40
  703. langflow/components/langchain_utilities/sql_database.py +0 -35
  704. langflow/components/langchain_utilities/sql_generator.py +0 -78
  705. langflow/components/langchain_utilities/tool_calling.py +0 -59
  706. langflow/components/langchain_utilities/vector_store_info.py +0 -49
  707. langflow/components/langchain_utilities/vector_store_router.py +0 -33
  708. langflow/components/langchain_utilities/xml_agent.py +0 -71
  709. langflow/components/langwatch/__init__.py +0 -3
  710. langflow/components/langwatch/langwatch.py +0 -278
  711. langflow/components/link_extractors/__init__.py +0 -0
  712. langflow/components/lmstudio/__init__.py +0 -34
  713. langflow/components/lmstudio/lmstudioembeddings.py +0 -89
  714. langflow/components/lmstudio/lmstudiomodel.py +0 -129
  715. langflow/components/logic/__init__.py +0 -52
  716. langflow/components/logic/conditional_router.py +0 -171
  717. langflow/components/logic/data_conditional_router.py +0 -125
  718. langflow/components/logic/flow_tool.py +0 -110
  719. langflow/components/logic/listen.py +0 -29
  720. langflow/components/logic/loop.py +0 -125
  721. langflow/components/logic/notify.py +0 -88
  722. langflow/components/logic/pass_message.py +0 -35
  723. langflow/components/logic/run_flow.py +0 -71
  724. langflow/components/logic/sub_flow.py +0 -114
  725. langflow/components/maritalk/__init__.py +0 -32
  726. langflow/components/maritalk/maritalk.py +0 -52
  727. langflow/components/mem0/__init__.py +0 -3
  728. langflow/components/mem0/mem0_chat_memory.py +0 -136
  729. langflow/components/milvus/__init__.py +0 -34
  730. langflow/components/milvus/milvus.py +0 -115
  731. langflow/components/mistral/__init__.py +0 -37
  732. langflow/components/mistral/mistral.py +0 -114
  733. langflow/components/mistral/mistral_embeddings.py +0 -58
  734. langflow/components/models/__init__.py +0 -34
  735. langflow/components/models/embedding_model.py +0 -114
  736. langflow/components/models/language_model.py +0 -144
  737. langflow/components/mongodb/__init__.py +0 -34
  738. langflow/components/mongodb/mongodb_atlas.py +0 -213
  739. langflow/components/needle/__init__.py +0 -3
  740. langflow/components/needle/needle.py +0 -104
  741. langflow/components/notdiamond/__init__.py +0 -36
  742. langflow/components/notdiamond/notdiamond.py +0 -228
  743. langflow/components/novita/__init__.py +0 -32
  744. langflow/components/novita/novita.py +0 -130
  745. langflow/components/nvidia/__init__.py +0 -57
  746. langflow/components/nvidia/nvidia.py +0 -157
  747. langflow/components/nvidia/nvidia_embedding.py +0 -77
  748. langflow/components/nvidia/nvidia_ingest.py +0 -317
  749. langflow/components/nvidia/nvidia_rerank.py +0 -63
  750. langflow/components/nvidia/system_assist.py +0 -65
  751. langflow/components/olivya/__init__.py +0 -3
  752. langflow/components/olivya/olivya.py +0 -116
  753. langflow/components/ollama/__init__.py +0 -37
  754. langflow/components/ollama/ollama.py +0 -330
  755. langflow/components/ollama/ollama_embeddings.py +0 -106
  756. langflow/components/openai/__init__.py +0 -37
  757. langflow/components/openai/openai.py +0 -100
  758. langflow/components/openai/openai_chat_model.py +0 -158
  759. langflow/components/openrouter/__init__.py +0 -32
  760. langflow/components/openrouter/openrouter.py +0 -202
  761. langflow/components/output_parsers/__init__.py +0 -0
  762. langflow/components/perplexity/__init__.py +0 -34
  763. langflow/components/perplexity/perplexity.py +0 -75
  764. langflow/components/pgvector/__init__.py +0 -34
  765. langflow/components/pgvector/pgvector.py +0 -72
  766. langflow/components/pinecone/__init__.py +0 -34
  767. langflow/components/pinecone/pinecone.py +0 -134
  768. langflow/components/processing/alter_metadata.py +0 -108
  769. langflow/components/processing/batch_run.py +0 -205
  770. langflow/components/processing/combine_text.py +0 -39
  771. langflow/components/processing/create_data.py +0 -110
  772. langflow/components/processing/data_operations.py +0 -438
  773. langflow/components/processing/data_to_dataframe.py +0 -70
  774. langflow/components/processing/dataframe_operations.py +0 -321
  775. langflow/components/processing/extract_key.py +0 -53
  776. langflow/components/processing/filter_data.py +0 -42
  777. langflow/components/processing/filter_data_values.py +0 -88
  778. langflow/components/processing/json_cleaner.py +0 -103
  779. langflow/components/processing/lambda_filter.py +0 -154
  780. langflow/components/processing/llm_router.py +0 -499
  781. langflow/components/processing/merge_data.py +0 -90
  782. langflow/components/processing/message_to_data.py +0 -36
  783. langflow/components/processing/parse_data.py +0 -70
  784. langflow/components/processing/parse_dataframe.py +0 -68
  785. langflow/components/processing/parse_json_data.py +0 -90
  786. langflow/components/processing/parser.py +0 -143
  787. langflow/components/processing/prompt.py +0 -67
  788. langflow/components/processing/python_repl_core.py +0 -98
  789. langflow/components/processing/regex.py +0 -82
  790. langflow/components/processing/save_file.py +0 -208
  791. langflow/components/processing/select_data.py +0 -48
  792. langflow/components/processing/split_text.py +0 -141
  793. langflow/components/processing/structured_output.py +0 -202
  794. langflow/components/processing/update_data.py +0 -160
  795. langflow/components/prototypes/__init__.py +0 -34
  796. langflow/components/prototypes/python_function.py +0 -73
  797. langflow/components/qdrant/__init__.py +0 -34
  798. langflow/components/qdrant/qdrant.py +0 -109
  799. langflow/components/redis/__init__.py +0 -37
  800. langflow/components/redis/redis.py +0 -89
  801. langflow/components/redis/redis_chat.py +0 -43
  802. langflow/components/sambanova/__init__.py +0 -32
  803. langflow/components/sambanova/sambanova.py +0 -84
  804. langflow/components/scrapegraph/__init__.py +0 -40
  805. langflow/components/scrapegraph/scrapegraph_markdownify_api.py +0 -64
  806. langflow/components/scrapegraph/scrapegraph_search_api.py +0 -64
  807. langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +0 -71
  808. langflow/components/searchapi/__init__.py +0 -36
  809. langflow/components/searchapi/search.py +0 -79
  810. langflow/components/serpapi/__init__.py +0 -3
  811. langflow/components/serpapi/serp.py +0 -115
  812. langflow/components/serper/__init__.py +0 -3
  813. langflow/components/serper/google_serper_api_core.py +0 -74
  814. langflow/components/supabase/__init__.py +0 -37
  815. langflow/components/supabase/supabase.py +0 -76
  816. langflow/components/tavily/__init__.py +0 -4
  817. langflow/components/tavily/tavily_extract.py +0 -117
  818. langflow/components/tavily/tavily_search.py +0 -212
  819. langflow/components/textsplitters/__init__.py +0 -0
  820. langflow/components/toolkits/__init__.py +0 -0
  821. langflow/components/tools/__init__.py +0 -72
  822. langflow/components/tools/calculator.py +0 -103
  823. langflow/components/tools/google_search_api.py +0 -45
  824. langflow/components/tools/google_serper_api.py +0 -115
  825. langflow/components/tools/python_code_structured_tool.py +0 -327
  826. langflow/components/tools/python_repl.py +0 -97
  827. langflow/components/tools/search_api.py +0 -87
  828. langflow/components/tools/searxng.py +0 -145
  829. langflow/components/tools/serp_api.py +0 -119
  830. langflow/components/tools/tavily_search_tool.py +0 -344
  831. langflow/components/tools/wikidata_api.py +0 -102
  832. langflow/components/tools/wikipedia_api.py +0 -49
  833. langflow/components/tools/yahoo_finance.py +0 -124
  834. langflow/components/twelvelabs/__init__.py +0 -52
  835. langflow/components/twelvelabs/convert_astra_results.py +0 -84
  836. langflow/components/twelvelabs/pegasus_index.py +0 -311
  837. langflow/components/twelvelabs/split_video.py +0 -291
  838. langflow/components/twelvelabs/text_embeddings.py +0 -57
  839. langflow/components/twelvelabs/twelvelabs_pegasus.py +0 -408
  840. langflow/components/twelvelabs/video_embeddings.py +0 -100
  841. langflow/components/twelvelabs/video_file.py +0 -179
  842. langflow/components/unstructured/__init__.py +0 -3
  843. langflow/components/unstructured/unstructured.py +0 -121
  844. langflow/components/upstash/__init__.py +0 -34
  845. langflow/components/upstash/upstash.py +0 -124
  846. langflow/components/vectara/__init__.py +0 -37
  847. langflow/components/vectara/vectara.py +0 -97
  848. langflow/components/vectara/vectara_rag.py +0 -164
  849. langflow/components/vectorstores/__init__.py +0 -34
  850. langflow/components/vectorstores/local_db.py +0 -261
  851. langflow/components/vertexai/__init__.py +0 -37
  852. langflow/components/vertexai/vertexai.py +0 -71
  853. langflow/components/vertexai/vertexai_embeddings.py +0 -67
  854. langflow/components/weaviate/__init__.py +0 -34
  855. langflow/components/weaviate/weaviate.py +0 -89
  856. langflow/components/wikipedia/__init__.py +0 -4
  857. langflow/components/wikipedia/wikidata.py +0 -86
  858. langflow/components/wikipedia/wikipedia.py +0 -53
  859. langflow/components/wolframalpha/__init__.py +0 -3
  860. langflow/components/wolframalpha/wolfram_alpha_api.py +0 -54
  861. langflow/components/xai/__init__.py +0 -32
  862. langflow/components/xai/xai.py +0 -167
  863. langflow/components/yahoosearch/__init__.py +0 -3
  864. langflow/components/yahoosearch/yahoo.py +0 -137
  865. langflow/components/youtube/__init__.py +0 -52
  866. langflow/components/youtube/channel.py +0 -227
  867. langflow/components/youtube/comments.py +0 -231
  868. langflow/components/youtube/playlist.py +0 -33
  869. langflow/components/youtube/search.py +0 -120
  870. langflow/components/youtube/trending.py +0 -285
  871. langflow/components/youtube/video_details.py +0 -263
  872. langflow/components/youtube/youtube_transcripts.py +0 -118
  873. langflow/components/zep/__init__.py +0 -3
  874. langflow/components/zep/zep.py +0 -44
  875. langflow/custom/attributes.py +0 -86
  876. langflow/custom/code_parser/__init__.py +0 -3
  877. langflow/custom/code_parser/code_parser.py +0 -361
  878. langflow/custom/custom_component/base_component.py +0 -118
  879. langflow/custom/dependency_analyzer.py +0 -165
  880. langflow/custom/directory_reader/__init__.py +0 -3
  881. langflow/custom/directory_reader/directory_reader.py +0 -359
  882. langflow/custom/directory_reader/utils.py +0 -171
  883. langflow/custom/eval.py +0 -12
  884. langflow/custom/schema.py +0 -32
  885. langflow/custom/tree_visitor.py +0 -21
  886. langflow/frontend/assets/lazyIconImports-Ci-S9xBA.js +0 -2
  887. langflow/graph/edge/__init__.py +0 -0
  888. langflow/graph/edge/base.py +0 -277
  889. langflow/graph/edge/schema.py +0 -119
  890. langflow/graph/edge/utils.py +0 -0
  891. langflow/graph/graph/__init__.py +0 -0
  892. langflow/graph/graph/ascii.py +0 -202
  893. langflow/graph/graph/base.py +0 -2185
  894. langflow/graph/graph/constants.py +0 -58
  895. langflow/graph/graph/runnable_vertices_manager.py +0 -133
  896. langflow/graph/graph/schema.py +0 -53
  897. langflow/graph/graph/state_model.py +0 -66
  898. langflow/graph/graph/utils.py +0 -1024
  899. langflow/graph/schema.py +0 -75
  900. langflow/graph/state/__init__.py +0 -0
  901. langflow/graph/state/model.py +0 -237
  902. langflow/graph/utils.py +0 -229
  903. langflow/graph/vertex/__init__.py +0 -0
  904. langflow/graph/vertex/base.py +0 -811
  905. langflow/graph/vertex/constants.py +0 -0
  906. langflow/graph/vertex/exceptions.py +0 -4
  907. langflow/graph/vertex/param_handler.py +0 -255
  908. langflow/graph/vertex/schema.py +0 -26
  909. langflow/graph/vertex/utils.py +0 -19
  910. langflow/graph/vertex/vertex_types.py +0 -489
  911. langflow/legacy_custom/__init__.py +0 -0
  912. langflow/legacy_custom/customs.py +0 -16
  913. langflow/load/load.py +0 -250
  914. langflow/logging/logger.py +0 -369
  915. langflow/processing/utils.py +0 -25
  916. langflow/schema/openai_responses_schemas.py +0 -74
  917. langflow/schema/serialize.py +0 -13
  918. langflow/services/chat/config.py +0 -2
  919. langflow/services/settings/auth.py +0 -130
  920. langflow/services/settings/constants.py +0 -31
  921. langflow/services/settings/manager.py +0 -49
  922. langflow/services/settings/utils.py +0 -40
  923. langflow/template/field/prompt.py +0 -2
  924. langflow/template/frontend_node/__init__.py +0 -6
  925. langflow/template/frontend_node/base.py +0 -212
  926. langflow/template/frontend_node/constants.py +0 -65
  927. langflow/template/frontend_node/custom_components.py +0 -97
  928. langflow/template/template/__init__.py +0 -0
  929. langflow/template/template/base.py +0 -99
  930. langflow/utils/async_helpers.py +0 -42
  931. langflow/utils/concurrency.py +0 -60
  932. langflow/utils/util_strings.py +0 -56
  933. langflow_base_nightly-0.5.1.dev3.dist-info/RECORD +0 -1159
  934. {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/WHEEL +0 -0
  935. {langflow_base_nightly-0.5.1.dev3.dist-info → langflow_base_nightly-0.5.1.dev4.dist-info}/entry_points.txt +0 -0
@@ -1,811 +0,0 @@
1
- from __future__ import annotations
2
-
3
- import asyncio
4
- import inspect
5
- import traceback
6
- import types
7
- from collections.abc import AsyncIterator, Callable, Iterator, Mapping
8
- from enum import Enum
9
- from typing import TYPE_CHECKING, Any
10
-
11
- from langflow.exceptions.component import ComponentBuildError
12
- from langflow.graph.schema import INPUT_COMPONENTS, OUTPUT_COMPONENTS, InterfaceComponentTypes, ResultData
13
- from langflow.graph.utils import UnbuiltObject, UnbuiltResult, log_transaction
14
- from langflow.graph.vertex.param_handler import ParameterHandler
15
- from langflow.interface import initialize
16
- from langflow.interface.listing import lazy_load_dict
17
- from langflow.logging.logger import logger
18
- from langflow.schema.artifact import ArtifactType
19
- from langflow.schema.data import Data
20
- from langflow.schema.message import Message
21
- from langflow.schema.schema import INPUT_FIELD_NAME, OutputValue, build_output_logs
22
- from langflow.services.deps import get_storage_service
23
- from langflow.utils.schemas import ChatOutputResponse
24
- from langflow.utils.util import sync_to_async
25
-
26
- if TYPE_CHECKING:
27
- from uuid import UUID
28
-
29
- from langflow.custom.custom_component.component import Component
30
- from langflow.events.event_manager import EventManager
31
- from langflow.graph.edge.base import CycleEdge, Edge
32
- from langflow.graph.graph.base import Graph
33
- from langflow.graph.vertex.schema import NodeData
34
- from langflow.services.tracing.schema import Log
35
-
36
-
37
- class VertexStates(str, Enum):
38
- """Vertex are related to it being active, inactive, or in an error state."""
39
-
40
- ACTIVE = "ACTIVE"
41
- INACTIVE = "INACTIVE"
42
- ERROR = "ERROR"
43
-
44
-
45
- class Vertex:
46
- def __init__(
47
- self,
48
- data: NodeData,
49
- graph: Graph,
50
- *,
51
- base_type: str | None = None,
52
- is_task: bool = False,
53
- params: dict | None = None,
54
- ) -> None:
55
- # is_external means that the Vertex send or receives data from
56
- # an external source (e.g the chat)
57
- self._lock = asyncio.Lock()
58
- self.will_stream = False
59
- self.updated_raw_params = False
60
- self.id: str = data["id"]
61
- self.base_name = self.id.split("-")[0]
62
- self.is_state = False
63
- self.is_input = any(input_component_name in self.id for input_component_name in INPUT_COMPONENTS)
64
- self.is_output = any(output_component_name in self.id for output_component_name in OUTPUT_COMPONENTS)
65
- self._is_loop = None
66
- self.has_session_id = None
67
- self.custom_component = None
68
- self.has_external_input = False
69
- self.has_external_output = False
70
- self.graph = graph
71
- self.full_data = data.copy()
72
- self.base_type: str | None = base_type
73
- self.outputs: list[dict] = []
74
- self.parse_data()
75
- self.built_object: Any = UnbuiltObject()
76
- self.built_result: Any = None
77
- self.built = False
78
- self._successors_ids: list[str] | None = None
79
- self.artifacts: dict[str, Any] = {}
80
- self.artifacts_raw: dict[str, Any] | None = {}
81
- self.artifacts_type: dict[str, str] = {}
82
- self.steps: list[Callable] = [self._build]
83
- self.steps_ran: list[Callable] = []
84
- self.task_id: str | None = None
85
- self.is_task = is_task
86
- self.params = params or {}
87
- self.parent_node_id: str | None = self.full_data.get("parent_node_id")
88
- self.load_from_db_fields: list[str] = []
89
- self.parent_is_top_level = False
90
- self.layer = None
91
- self.result: ResultData | None = None
92
- self.results: dict[str, Any] = {}
93
- self.outputs_logs: dict[str, OutputValue] = {}
94
- self.logs: dict[str, list[Log]] = {}
95
- self.has_cycle_edges = False
96
- try:
97
- self.is_interface_component = self.vertex_type in InterfaceComponentTypes
98
- except ValueError:
99
- self.is_interface_component = False
100
-
101
- self.use_result = False
102
- self.build_times: list[float] = []
103
- self.state = VertexStates.ACTIVE
104
- self.log_transaction_tasks: set[asyncio.Task] = set()
105
- self.output_names: list[str] = [
106
- output["name"] for output in self.outputs if isinstance(output, dict) and "name" in output
107
- ]
108
- self._incoming_edges: list[CycleEdge] | None = None
109
- self._outgoing_edges: list[CycleEdge] | None = None
110
-
111
- @property
112
- def is_loop(self) -> bool:
113
- """Check if any output allows looping."""
114
- if self._is_loop is None:
115
- self._is_loop = any(output.get("allows_loop", False) for output in self.outputs)
116
- return self._is_loop
117
-
118
- def set_input_value(self, name: str, value: Any) -> None:
119
- if self.custom_component is None:
120
- msg = f"Vertex {self.id} does not have a component instance."
121
- raise ValueError(msg)
122
- self.custom_component._set_input_value(name, value)
123
-
124
- def to_data(self):
125
- return self.full_data
126
-
127
- def add_component_instance(self, component_instance: Component) -> None:
128
- component_instance.set_vertex(self)
129
- self.custom_component = component_instance
130
-
131
- def add_result(self, name: str, result: Any) -> None:
132
- self.results[name] = result
133
-
134
- def set_state(self, state: str) -> None:
135
- self.state = VertexStates[state]
136
- if self.state == VertexStates.INACTIVE and self.graph.in_degree_map[self.id] <= 1:
137
- # If the vertex is inactive and has only one in degree
138
- # it means that it is not a merge point in the graph
139
- self.graph.inactivated_vertices.add(self.id)
140
- elif self.state == VertexStates.ACTIVE and self.id in self.graph.inactivated_vertices:
141
- self.graph.inactivated_vertices.remove(self.id)
142
-
143
- def is_active(self):
144
- return self.state == VertexStates.ACTIVE
145
-
146
- @property
147
- def avg_build_time(self):
148
- return sum(self.build_times) / len(self.build_times) if self.build_times else 0
149
-
150
- def add_build_time(self, time) -> None:
151
- self.build_times.append(time)
152
-
153
- def set_result(self, result: ResultData) -> None:
154
- self.result = result
155
-
156
- def get_built_result(self):
157
- # If the Vertex.type is a power component
158
- # then we need to return the built object
159
- # instead of the result dict
160
- if self.is_interface_component and not isinstance(self.built_object, UnbuiltObject):
161
- result = self.built_object
162
- # if it is not a dict or a string and hasattr model_dump then
163
- # return the model_dump
164
- if not isinstance(result, dict | str) and hasattr(result, "content"):
165
- return result.content
166
- return result
167
- if isinstance(self.built_object, str):
168
- self.built_result = self.built_object
169
-
170
- if isinstance(self.built_result, UnbuiltResult):
171
- return {}
172
- return self.built_result if isinstance(self.built_result, dict) else {"result": self.built_result}
173
-
174
- def set_artifacts(self) -> None:
175
- pass
176
-
177
- @property
178
- def edges(self) -> list[CycleEdge]:
179
- return self.graph.get_vertex_edges(self.id)
180
-
181
- @property
182
- def outgoing_edges(self) -> list[CycleEdge]:
183
- if self._outgoing_edges is None:
184
- self._outgoing_edges = [edge for edge in self.edges if edge.source_id == self.id]
185
- return self._outgoing_edges
186
-
187
- @property
188
- def incoming_edges(self) -> list[CycleEdge]:
189
- if self._incoming_edges is None:
190
- self._incoming_edges = [edge for edge in self.edges if edge.target_id == self.id]
191
- return self._incoming_edges
192
-
193
- # Get edge connected to an output of a certain name
194
- def get_incoming_edge_by_target_param(self, target_param: str) -> str | None:
195
- return next((edge.source_id for edge in self.incoming_edges if edge.target_param == target_param), None)
196
-
197
- @property
198
- def edges_source_names(self) -> set[str | None]:
199
- return {edge.source_handle.name for edge in self.edges}
200
-
201
- @property
202
- def predecessors(self) -> list[Vertex]:
203
- return self.graph.get_predecessors(self)
204
-
205
- @property
206
- def successors(self) -> list[Vertex]:
207
- return self.graph.get_successors(self)
208
-
209
- @property
210
- def successors_ids(self) -> list[str]:
211
- return self.graph.successor_map.get(self.id, [])
212
-
213
- def __getstate__(self):
214
- state = self.__dict__.copy()
215
- state["_lock"] = None # Locks are not serializable
216
- state["built_object"] = None if isinstance(self.built_object, UnbuiltObject) else self.built_object
217
- state["built_result"] = None if isinstance(self.built_result, UnbuiltResult) else self.built_result
218
- return state
219
-
220
- def __setstate__(self, state):
221
- self.__dict__.update(state)
222
- self._lock = asyncio.Lock() # Reinitialize the lock
223
- self.built_object = state.get("built_object") or UnbuiltObject()
224
- self.built_result = state.get("built_result") or UnbuiltResult()
225
-
226
- def set_top_level(self, top_level_vertices: list[str]) -> None:
227
- self.parent_is_top_level = self.parent_node_id in top_level_vertices
228
-
229
- def parse_data(self) -> None:
230
- self.data = self.full_data["data"]
231
- if self.data["node"]["template"]["_type"] == "Component":
232
- if "outputs" not in self.data["node"]:
233
- msg = f"Outputs not found for {self.display_name}"
234
- raise ValueError(msg)
235
- self.outputs = self.data["node"]["outputs"]
236
- else:
237
- self.outputs = self.data["node"].get("outputs", [])
238
- self.output = self.data["node"]["base_classes"]
239
-
240
- self.display_name: str = self.data["node"].get("display_name", self.id.split("-")[0])
241
- self.icon: str = self.data["node"].get("icon", self.id.split("-")[0])
242
-
243
- self.description: str = self.data["node"].get("description", "")
244
- self.frozen: bool = self.data["node"].get("frozen", False)
245
-
246
- self.is_input = self.data["node"].get("is_input") or self.is_input
247
- self.is_output = self.data["node"].get("is_output") or self.is_output
248
- template_dicts = {key: value for key, value in self.data["node"]["template"].items() if isinstance(value, dict)}
249
-
250
- self.has_session_id = "session_id" in template_dicts
251
-
252
- self.required_inputs: list[str] = []
253
- self.optional_inputs: list[str] = []
254
- for value_dict in template_dicts.values():
255
- list_to_append = self.required_inputs if value_dict.get("required") else self.optional_inputs
256
-
257
- if "type" in value_dict:
258
- list_to_append.append(value_dict["type"])
259
- if "input_types" in value_dict:
260
- list_to_append.extend(value_dict["input_types"])
261
-
262
- template_dict = self.data["node"]["template"]
263
- self.vertex_type = (
264
- self.data["type"]
265
- if "Tool" not in [type_ for out in self.outputs for type_ in out["types"]]
266
- or template_dict["_type"].islower()
267
- else template_dict["_type"]
268
- )
269
-
270
- if self.base_type is None:
271
- for base_type, value in lazy_load_dict.all_types_dict.items():
272
- if self.vertex_type in value:
273
- self.base_type = base_type
274
- break
275
-
276
- def get_value_from_output_names(self, key: str):
277
- if key in self.output_names:
278
- return self.graph.get_vertex(key)
279
- return None
280
-
281
- def get_value_from_template_dict(self, key: str):
282
- template_dict = self.data.get("node", {}).get("template", {})
283
-
284
- if key not in template_dict:
285
- msg = f"Key {key} not found in template dict"
286
- raise ValueError(msg)
287
- return template_dict.get(key, {}).get("value")
288
-
289
- def _set_params_from_normal_edge(self, params: dict, edge: Edge, template_dict: dict):
290
- param_key = edge.target_param
291
-
292
- # If the param_key is in the template_dict and the edge.target_id is the current node
293
- # We check this to make sure params with the same name but different target_id
294
- # don't get overwritten
295
- if param_key in template_dict and edge.target_id == self.id:
296
- if template_dict[param_key].get("list"):
297
- if param_key not in params:
298
- params[param_key] = []
299
- params[param_key].append(self.graph.get_vertex(edge.source_id))
300
- elif edge.target_id == self.id:
301
- if isinstance(template_dict[param_key].get("value"), dict):
302
- # we don't know the key of the dict but we need to set the value
303
- # to the vertex that is the source of the edge
304
- param_dict = template_dict[param_key]["value"]
305
- if not param_dict or len(param_dict) != 1:
306
- params[param_key] = self.graph.get_vertex(edge.source_id)
307
- else:
308
- params[param_key] = {key: self.graph.get_vertex(edge.source_id) for key in param_dict}
309
-
310
- else:
311
- params[param_key] = self.graph.get_vertex(edge.source_id)
312
- elif param_key in self.output_names:
313
- # if the loop is run the param_key item will be set over here
314
- # validate the edge
315
- params[param_key] = self.graph.get_vertex(edge.source_id)
316
- return params
317
-
318
- def build_params(self) -> None:
319
- """Build parameters for the vertex using the ParameterHandler."""
320
- if self.graph is None:
321
- msg = "Graph not found"
322
- raise ValueError(msg)
323
-
324
- if self.updated_raw_params:
325
- self.updated_raw_params = False
326
- return
327
-
328
- # Create parameter handler
329
- param_handler = ParameterHandler(self, storage_service=get_storage_service())
330
-
331
- # Process edge parameters
332
- edge_params = param_handler.process_edge_parameters(self.edges)
333
-
334
- # Process field parameters
335
- field_params, load_from_db_fields = param_handler.process_field_parameters()
336
-
337
- # Combine parameters, edge_params take precedence
338
- self.params = {**field_params, **edge_params}
339
- self.load_from_db_fields = load_from_db_fields
340
- self.raw_params = self.params.copy()
341
-
342
- def update_raw_params(self, new_params: Mapping[str, str | list[str]], *, overwrite: bool = False) -> None:
343
- """Update the raw parameters of the vertex with the given new parameters.
344
-
345
- Args:
346
- new_params (Dict[str, Any]): The new parameters to update.
347
- overwrite (bool, optional): Whether to overwrite the existing parameters.
348
- Defaults to False.
349
-
350
- Raises:
351
- ValueError: If any key in new_params is not found in self.raw_params.
352
- """
353
- # First check if the input_value in raw_params is not a vertex
354
- if not new_params:
355
- return
356
- if any(isinstance(self.raw_params.get(key), Vertex) for key in new_params):
357
- return
358
- if not overwrite:
359
- for key in new_params.copy(): # type: ignore[attr-defined]
360
- if key not in self.raw_params:
361
- new_params.pop(key) # type: ignore[attr-defined]
362
- self.raw_params.update(new_params)
363
- self.params = self.raw_params.copy()
364
- self.updated_raw_params = True
365
-
366
- def instantiate_component(self, user_id=None) -> None:
367
- if not self.custom_component:
368
- self.custom_component, _ = initialize.loading.instantiate_class(
369
- user_id=user_id,
370
- vertex=self,
371
- )
372
-
373
- async def _build(
374
- self,
375
- fallback_to_env_vars,
376
- user_id=None,
377
- event_manager: EventManager | None = None,
378
- ) -> None:
379
- """Initiate the build process."""
380
- await logger.adebug(f"Building {self.display_name}")
381
- await self._build_each_vertex_in_params_dict()
382
-
383
- if self.base_type is None:
384
- msg = f"Base type for vertex {self.display_name} not found"
385
- raise ValueError(msg)
386
-
387
- if not self.custom_component:
388
- custom_component, custom_params = initialize.loading.instantiate_class(
389
- user_id=user_id, vertex=self, event_manager=event_manager
390
- )
391
- else:
392
- custom_component = self.custom_component
393
- if hasattr(self.custom_component, "set_event_manager"):
394
- self.custom_component.set_event_manager(event_manager)
395
- custom_params = initialize.loading.get_params(self.params)
396
-
397
- await self._build_results(
398
- custom_component=custom_component,
399
- custom_params=custom_params,
400
- fallback_to_env_vars=fallback_to_env_vars,
401
- base_type=self.base_type,
402
- )
403
-
404
- self._validate_built_object()
405
-
406
- self.built = True
407
-
408
- def extract_messages_from_artifacts(self, artifacts: dict[str, Any]) -> list[dict]:
409
- """Extracts messages from the artifacts.
410
-
411
- Args:
412
- artifacts (Dict[str, Any]): The artifacts to extract messages from.
413
-
414
- Returns:
415
- List[str]: The extracted messages.
416
- """
417
- try:
418
- text = artifacts["text"]
419
- sender = artifacts.get("sender")
420
- sender_name = artifacts.get("sender_name")
421
- session_id = artifacts.get("session_id")
422
- stream_url = artifacts.get("stream_url")
423
- files = [{"path": file} if isinstance(file, str) else file for file in artifacts.get("files", [])]
424
- component_id = self.id
425
- type_ = self.artifacts_type
426
-
427
- if isinstance(sender_name, Data | Message):
428
- sender_name = sender_name.get_text()
429
-
430
- messages = [
431
- ChatOutputResponse(
432
- message=text,
433
- sender=sender,
434
- sender_name=sender_name,
435
- session_id=session_id,
436
- stream_url=stream_url,
437
- files=files,
438
- component_id=component_id,
439
- type=type_,
440
- ).model_dump(exclude_none=True)
441
- ]
442
- except KeyError:
443
- messages = []
444
-
445
- return messages
446
-
447
- def finalize_build(self) -> None:
448
- result_dict = self.get_built_result()
449
- # We need to set the artifacts to pass information
450
- # to the frontend
451
- self.set_artifacts()
452
- artifacts = self.artifacts_raw
453
- messages = self.extract_messages_from_artifacts(artifacts) if isinstance(artifacts, dict) else []
454
- result_dict = ResultData(
455
- results=result_dict,
456
- artifacts=artifacts,
457
- outputs=self.outputs_logs,
458
- logs=self.logs,
459
- messages=messages,
460
- component_display_name=self.display_name,
461
- component_id=self.id,
462
- )
463
- self.set_result(result_dict)
464
-
465
- async def _build_each_vertex_in_params_dict(self) -> None:
466
- """Iterates over each vertex in the params dictionary and builds it."""
467
- for key, value in self.raw_params.items():
468
- if self._is_vertex(value):
469
- if value == self:
470
- del self.params[key]
471
- continue
472
- await self._build_vertex_and_update_params(
473
- key,
474
- value,
475
- )
476
- elif isinstance(value, list) and self._is_list_of_vertices(value):
477
- await self._build_list_of_vertices_and_update_params(key, value)
478
- elif isinstance(value, dict):
479
- await self._build_dict_and_update_params(
480
- key,
481
- value,
482
- )
483
- elif key not in self.params or self.updated_raw_params:
484
- self.params[key] = value
485
-
486
- async def _build_dict_and_update_params(
487
- self,
488
- key,
489
- vertices_dict: dict[str, Vertex],
490
- ) -> None:
491
- """Iterates over a dictionary of vertices, builds each and updates the params dictionary."""
492
- for sub_key, value in vertices_dict.items():
493
- if not self._is_vertex(value):
494
- self.params[key][sub_key] = value
495
- else:
496
- result = await value.get_result(self, target_handle_name=key)
497
- self.params[key][sub_key] = result
498
-
499
- @staticmethod
500
- def _is_vertex(value):
501
- """Checks if the provided value is an instance of Vertex."""
502
- return isinstance(value, Vertex)
503
-
504
- def _is_list_of_vertices(self, value):
505
- """Checks if the provided value is a list of Vertex instances."""
506
- return all(self._is_vertex(vertex) for vertex in value)
507
-
508
- async def get_result(self, requester: Vertex, target_handle_name: str | None = None) -> Any:
509
- """Retrieves the result of the vertex.
510
-
511
- This is a read-only method so it raises an error if the vertex has not been built yet.
512
-
513
- Returns:
514
- The result of the vertex.
515
- """
516
- async with self._lock:
517
- return await self._get_result(requester, target_handle_name)
518
-
519
- async def _log_transaction_async(
520
- self,
521
- flow_id: str | UUID,
522
- source: Vertex,
523
- status,
524
- target: Vertex | None = None,
525
- error=None,
526
- ) -> None:
527
- """Log a transaction asynchronously with proper task handling and cancellation.
528
-
529
- Args:
530
- flow_id: The ID of the flow
531
- source: Source vertex
532
- status: Transaction status
533
- target: Optional target vertex
534
- error: Optional error information
535
- """
536
- if self.log_transaction_tasks:
537
- # Safely await and remove completed tasks
538
- task = self.log_transaction_tasks.pop()
539
- await task
540
-
541
- # Create and track new task
542
- task = asyncio.create_task(log_transaction(flow_id, source, status, target, error))
543
- self.log_transaction_tasks.add(task)
544
- task.add_done_callback(self.log_transaction_tasks.discard)
545
-
546
- async def _get_result(
547
- self,
548
- requester: Vertex,
549
- target_handle_name: str | None = None, # noqa: ARG002
550
- ) -> Any:
551
- """Retrieves the result of the built component.
552
-
553
- If the component has not been built yet, a ValueError is raised.
554
-
555
- Returns:
556
- The built result if use_result is True, else the built object.
557
- """
558
- flow_id = self.graph.flow_id
559
- if not self.built:
560
- if flow_id:
561
- await self._log_transaction_async(str(flow_id), source=self, target=requester, status="error")
562
- msg = f"Component {self.display_name} has not been built yet"
563
- raise ValueError(msg)
564
-
565
- result = self.built_result if self.use_result else self.built_object
566
- if flow_id:
567
- await self._log_transaction_async(str(flow_id), source=self, target=requester, status="success")
568
- return result
569
-
570
- async def _build_vertex_and_update_params(self, key, vertex: Vertex) -> None:
571
- """Builds a given vertex and updates the params dictionary accordingly."""
572
- result = await vertex.get_result(self, target_handle_name=key)
573
- self._handle_func(key, result)
574
- if isinstance(result, list):
575
- self._extend_params_list_with_result(key, result)
576
- self.params[key] = result
577
-
578
- async def _build_list_of_vertices_and_update_params(
579
- self,
580
- key,
581
- vertices: list[Vertex],
582
- ) -> None:
583
- """Iterates over a list of vertices, builds each and updates the params dictionary."""
584
- self.params[key] = []
585
- for vertex in vertices:
586
- result = await vertex.get_result(self, target_handle_name=key)
587
- # Weird check to see if the params[key] is a list
588
- # because sometimes it is a Data and breaks the code
589
- if not isinstance(self.params[key], list):
590
- self.params[key] = [self.params[key]]
591
-
592
- if isinstance(result, list):
593
- self.params[key].extend(result)
594
- else:
595
- try:
596
- if self.params[key] == result:
597
- continue
598
-
599
- self.params[key].append(result)
600
- except AttributeError as e:
601
- await logger.aexception(e)
602
- msg = (
603
- f"Params {key} ({self.params[key]}) is not a list and cannot be extended with {result}"
604
- f"Error building Component {self.display_name}: \n\n{e}"
605
- )
606
- raise ValueError(msg) from e
607
-
608
- def _handle_func(self, key, result) -> None:
609
- """Handles 'func' key by checking if the result is a function and setting it as coroutine."""
610
- if key == "func":
611
- if not isinstance(result, types.FunctionType):
612
- if hasattr(result, "run"):
613
- result = result.run
614
- elif hasattr(result, "get_function"):
615
- result = result.get_function()
616
- elif inspect.iscoroutinefunction(result):
617
- self.params["coroutine"] = result
618
- else:
619
- self.params["coroutine"] = sync_to_async(result)
620
-
621
- def _extend_params_list_with_result(self, key, result) -> None:
622
- """Extends a list in the params dictionary with the given result if it exists."""
623
- if isinstance(self.params[key], list):
624
- self.params[key].extend(result)
625
-
626
- async def _build_results(
627
- self,
628
- custom_component,
629
- custom_params,
630
- base_type: str,
631
- *,
632
- fallback_to_env_vars=False,
633
- ) -> None:
634
- try:
635
- result = await initialize.loading.get_instance_results(
636
- custom_component=custom_component,
637
- custom_params=custom_params,
638
- vertex=self,
639
- fallback_to_env_vars=fallback_to_env_vars,
640
- base_type=base_type,
641
- )
642
-
643
- self.outputs_logs = build_output_logs(self, result)
644
-
645
- self._update_built_object_and_artifacts(result)
646
- except Exception as exc:
647
- tb = traceback.format_exc()
648
- await logger.aexception(exc)
649
- msg = f"Error building Component {self.display_name}: \n\n{exc}"
650
- raise ComponentBuildError(msg, tb) from exc
651
-
652
- def _update_built_object_and_artifacts(self, result: Any | tuple[Any, dict] | tuple[Component, Any, dict]) -> None:
653
- """Updates the built object and its artifacts."""
654
- if isinstance(result, tuple):
655
- if len(result) == 2: # noqa: PLR2004
656
- self.built_object, self.artifacts = result
657
- elif len(result) == 3: # noqa: PLR2004
658
- self.custom_component, self.built_object, self.artifacts = result
659
- self.logs = self.custom_component._output_logs
660
- self.artifacts_raw = self.artifacts.get("raw", None)
661
- self.artifacts_type = {
662
- self.outputs[0]["name"]: self.artifacts.get("type", None) or ArtifactType.UNKNOWN.value
663
- }
664
- self.artifacts = {self.outputs[0]["name"]: self.artifacts}
665
- else:
666
- self.built_object = result
667
-
668
- def _validate_built_object(self) -> None:
669
- """Checks if the built object is None and raises a ValueError if so."""
670
- if isinstance(self.built_object, UnbuiltObject):
671
- msg = f"{self.display_name}: {self.built_object_repr()}"
672
- raise TypeError(msg)
673
- if self.built_object is None:
674
- message = f"{self.display_name} returned None."
675
- if self.base_type == "custom_components":
676
- message += " Make sure your build method returns a component."
677
-
678
- logger.warning(message)
679
- elif isinstance(self.built_object, Iterator | AsyncIterator):
680
- if self.display_name == "Text Output":
681
- msg = f"You are trying to stream to a {self.display_name}. Try using a Chat Output instead."
682
- raise ValueError(msg)
683
-
684
- def _reset(self) -> None:
685
- self.built = False
686
- self.built_object = UnbuiltObject()
687
- self.built_result = UnbuiltResult()
688
- self.artifacts = {}
689
- self.steps_ran = []
690
- self.build_params()
691
-
692
- def _is_chat_input(self) -> bool:
693
- return False
694
-
695
- def build_inactive(self) -> None:
696
- # Just set the results to None
697
- self.built = True
698
- self.built_object = None
699
- self.built_result = None
700
-
701
- async def build(
702
- self,
703
- user_id=None,
704
- inputs: dict[str, Any] | None = None,
705
- files: list[str] | None = None,
706
- requester: Vertex | None = None,
707
- event_manager: EventManager | None = None,
708
- **kwargs,
709
- ) -> Any:
710
- # Add lazy loading check at the beginning
711
- # Check if we need to fully load this component first
712
- from langflow.interface.components import ensure_component_loaded
713
- from langflow.services.deps import get_settings_service
714
-
715
- if get_settings_service().settings.lazy_load_components:
716
- component_name = self.id.split("-")[0]
717
- await ensure_component_loaded(self.vertex_type, component_name, get_settings_service())
718
-
719
- # Continue with the original implementation
720
- async with self._lock:
721
- if self.state == VertexStates.INACTIVE:
722
- # If the vertex is inactive, return None
723
- self.build_inactive()
724
- return None
725
-
726
- if self.frozen and self.built:
727
- return await self.get_requester_result(requester)
728
- if self.built and requester is not None:
729
- # This means that the vertex has already been built
730
- # and we are just getting the result for the requester
731
- return await self.get_requester_result(requester)
732
- self._reset()
733
- # inject session_id if it is not None
734
- if inputs is not None and "session" in inputs and inputs["session"] is not None and self.has_session_id:
735
- session_id_value = self.get_value_from_template_dict("session_id")
736
- if session_id_value == "":
737
- self.update_raw_params({"session_id": inputs["session"]}, overwrite=True)
738
- if self._is_chat_input() and (inputs or files):
739
- chat_input = {}
740
- if (
741
- inputs
742
- and isinstance(inputs, dict)
743
- and "input_value" in inputs
744
- and inputs.get("input_value") is not None
745
- ):
746
- chat_input.update({"input_value": inputs.get(INPUT_FIELD_NAME, "")})
747
- if files:
748
- chat_input.update({"files": files})
749
-
750
- self.update_raw_params(chat_input, overwrite=True)
751
-
752
- # Run steps
753
- for step in self.steps:
754
- if step not in self.steps_ran:
755
- await step(user_id=user_id, event_manager=event_manager, **kwargs)
756
- self.steps_ran.append(step)
757
-
758
- self.finalize_build()
759
-
760
- return await self.get_requester_result(requester)
761
-
762
- async def get_requester_result(self, requester: Vertex | None):
763
- # If the requester is None, this means that
764
- # the Vertex is the root of the graph
765
- if requester is None:
766
- return self.built_object
767
-
768
- # Get the requester edge
769
- requester_edge = next((edge for edge in self.edges if edge.target_id == requester.id), None)
770
- # Return the result of the requester edge
771
- return (
772
- None
773
- if requester_edge is None
774
- else await requester_edge.get_result_from_source(source=self, target=requester)
775
- )
776
-
777
- def add_edge(self, edge: CycleEdge) -> None:
778
- if edge not in self.edges:
779
- self.edges.append(edge)
780
-
781
- def __repr__(self) -> str:
782
- return f"Vertex(display_name={self.display_name}, id={self.id}, data={self.data})"
783
-
784
- def __eq__(self, /, other: object) -> bool:
785
- try:
786
- if not isinstance(other, Vertex):
787
- return False
788
- # We should create a more robust comparison
789
- # for the Vertex class
790
- ids_are_equal = self.id == other.id
791
- # self.data is a dict and we need to compare them
792
- # to check if they are equal
793
- data_are_equal = self.data == other.data
794
- except AttributeError:
795
- return False
796
- else:
797
- return ids_are_equal and data_are_equal
798
-
799
- def __hash__(self) -> int:
800
- return id(self)
801
-
802
- def built_object_repr(self) -> str:
803
- # Add a message with an emoji, stars for success,
804
- return "Built successfully ✨" if self.built_object is not None else "Failed to build 😵‍💫"
805
-
806
- def apply_on_outputs(self, func: Callable[[Any], Any]) -> None:
807
- """Applies a function to the outputs of the vertex."""
808
- if not self.custom_component or not self.custom_component.outputs:
809
- return
810
- # Apply the function to each output
811
- [func(output) for output in self.custom_component._outputs_map.values()]