langflow-base-nightly 1.7.0.dev15__py3-none-any.whl → 1.7.0.dev23__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 (3615) hide show
  1. langflow/__main__.py +1 -3
  2. langflow/agentic/__init__.py +1 -0
  3. langflow/agentic/flows/SystemMessageGen.json +3287 -0
  4. langflow/agentic/flows/TemplateAssistant.json +4285 -0
  5. langflow/agentic/mcp/__init__.py +5 -0
  6. langflow/agentic/mcp/__main__.py +10 -0
  7. langflow/agentic/mcp/server.py +606 -0
  8. langflow/agentic/mcp/support.py +50 -0
  9. langflow/agentic/schema/schema.json +112 -0
  10. langflow/agentic/utils/__init__.py +15 -0
  11. langflow/agentic/utils/component_search.py +272 -0
  12. langflow/agentic/utils/flow_component.py +373 -0
  13. langflow/agentic/utils/flow_graph.py +202 -0
  14. langflow/agentic/utils/template_create.py +83 -0
  15. langflow/agentic/utils/template_search.py +192 -0
  16. langflow/alembic/DB-MIGRATION-GUIDE.MD +513 -0
  17. langflow/alembic/__init__.py +0 -0
  18. langflow/alembic/env.py +24 -10
  19. langflow/alembic/migration_validator.py +376 -0
  20. langflow/api/utils/core.py +5 -2
  21. langflow/api/utils/mcp/agentic_mcp.py +365 -0
  22. langflow/api/v1/chat.py +1 -0
  23. langflow/api/v1/endpoints.py +126 -24
  24. langflow/api/v1/files.py +1 -2
  25. langflow/api/v1/flows.py +24 -15
  26. langflow/api/v1/login.py +11 -1
  27. langflow/api/v1/mcp_projects.py +47 -11
  28. langflow/api/v1/monitor.py +2 -5
  29. langflow/api/v1/projects.py +28 -13
  30. langflow/api/v1/users.py +5 -5
  31. langflow/api/v2/files.py +315 -54
  32. langflow/frontend/assets/SlackIcon-CEF_Lfgx.js +1 -0
  33. langflow/frontend/assets/Wikipedia-l89g58MW.js +1 -0
  34. langflow/frontend/assets/Wolfram-B0u7kBCd.js +1 -0
  35. langflow/frontend/assets/a-arrow-down-C1MR1UMk.js +6 -0
  36. langflow/frontend/assets/a-arrow-up-CMZerhaE.js +6 -0
  37. langflow/frontend/assets/a-large-small-Bv7wOVZp.js +6 -0
  38. langflow/frontend/assets/accessibility-BrEGjJ3h.js +6 -0
  39. langflow/frontend/assets/activity-D-a4MWi-.js +6 -0
  40. langflow/frontend/assets/air-vent-myzlVebI.js +6 -0
  41. langflow/frontend/assets/airplay-DyNG71LB.js +6 -0
  42. langflow/frontend/assets/alarm-clock-DH1LaNKu.js +6 -0
  43. langflow/frontend/assets/alarm-clock-check-C7zLrHCl.js +6 -0
  44. langflow/frontend/assets/alarm-clock-minus-B9sLdpi9.js +6 -0
  45. langflow/frontend/assets/alarm-clock-off-COlkkF3b.js +6 -0
  46. langflow/frontend/assets/alarm-clock-plus-DxfQCpS0.js +6 -0
  47. langflow/frontend/assets/alarm-smoke-DOKB4jdQ.js +6 -0
  48. langflow/frontend/assets/album-CbhFkW2K.js +6 -0
  49. langflow/frontend/assets/align-center-D4bRdbdX.js +6 -0
  50. langflow/frontend/assets/align-center-horizontal-DRKr69Bu.js +6 -0
  51. langflow/frontend/assets/align-center-vertical-B7CTn1nz.js +6 -0
  52. langflow/frontend/assets/align-end-horizontal-CgCdy2MI.js +6 -0
  53. langflow/frontend/assets/align-end-vertical-DnzR3Jh8.js +6 -0
  54. langflow/frontend/assets/align-horizontal-distribute-center-DcI8WEBg.js +6 -0
  55. langflow/frontend/assets/align-horizontal-distribute-end-ocyg2Ism.js +6 -0
  56. langflow/frontend/assets/align-horizontal-distribute-start-0cj83d0Q.js +6 -0
  57. langflow/frontend/assets/align-horizontal-justify-center-ELZCJfLJ.js +6 -0
  58. langflow/frontend/assets/align-horizontal-justify-end-CAvLzWix.js +6 -0
  59. langflow/frontend/assets/align-horizontal-justify-start-THFMmtW8.js +6 -0
  60. langflow/frontend/assets/align-horizontal-space-around-DM87J1lM.js +6 -0
  61. langflow/frontend/assets/align-horizontal-space-between-CWBgfaSR.js +6 -0
  62. langflow/frontend/assets/align-justify-BZr4mv6M.js +6 -0
  63. langflow/frontend/assets/align-left-DDKaY-tD.js +6 -0
  64. langflow/frontend/assets/align-right-UFsrS9ty.js +6 -0
  65. langflow/frontend/assets/align-start-horizontal-CDMo5O5J.js +6 -0
  66. langflow/frontend/assets/align-start-vertical-mfpy9Ha8.js +6 -0
  67. langflow/frontend/assets/align-vertical-distribute-center-D35O90hK.js +6 -0
  68. langflow/frontend/assets/align-vertical-distribute-end-BOhCSYqd.js +6 -0
  69. langflow/frontend/assets/align-vertical-distribute-start-CRtaDGO3.js +6 -0
  70. langflow/frontend/assets/align-vertical-justify-center-BEDLBLzr.js +6 -0
  71. langflow/frontend/assets/align-vertical-justify-end-CpmZIv_b.js +6 -0
  72. langflow/frontend/assets/align-vertical-justify-start-BaQPjHDD.js +6 -0
  73. langflow/frontend/assets/align-vertical-space-around-DN8HaVwe.js +6 -0
  74. langflow/frontend/assets/align-vertical-space-between-CtfMVSNs.js +6 -0
  75. langflow/frontend/assets/ambulance-EysJPjDH.js +6 -0
  76. langflow/frontend/assets/ampersand-De5P08QL.js +6 -0
  77. langflow/frontend/assets/ampersands-BFEb_UYl.js +6 -0
  78. langflow/frontend/assets/amphora-CeQeqX39.js +6 -0
  79. langflow/frontend/assets/anchor-Bmj6G_T-.js +6 -0
  80. langflow/frontend/assets/angry-BJ4OZ8cf.js +6 -0
  81. langflow/frontend/assets/annoyed-CnuYiPsR.js +6 -0
  82. langflow/frontend/assets/antenna-BF54KX6Q.js +6 -0
  83. langflow/frontend/assets/anvil-BDp882_x.js +6 -0
  84. langflow/frontend/assets/aperture-C-RXeV-R.js +6 -0
  85. langflow/frontend/assets/app-window-CnWdW7Z8.js +6 -0
  86. langflow/frontend/assets/app-window-mac-BWkyg2Dt.js +6 -0
  87. langflow/frontend/assets/apple-Cy1_Ygqa.js +6 -0
  88. langflow/frontend/assets/archive-DQM1ljrp.js +6 -0
  89. langflow/frontend/assets/archive-restore-CR7ZCkrs.js +6 -0
  90. langflow/frontend/assets/archive-x-Cah6BUmC.js +6 -0
  91. langflow/frontend/assets/armchair-CI__vHrc.js +6 -0
  92. langflow/frontend/assets/arrow-big-down-dash-Cexbrdd1.js +6 -0
  93. langflow/frontend/assets/arrow-big-down-es-qZLrf.js +6 -0
  94. langflow/frontend/assets/arrow-big-left-BNfP62tw.js +6 -0
  95. langflow/frontend/assets/arrow-big-left-dash-CDo880bt.js +6 -0
  96. langflow/frontend/assets/arrow-big-right-Cw4xK1An.js +6 -0
  97. langflow/frontend/assets/arrow-big-right-dash-Bv-LrLEi.js +6 -0
  98. langflow/frontend/assets/arrow-big-up-1D3Ok-B4.js +6 -0
  99. langflow/frontend/assets/arrow-big-up-dash-DkwHTfuU.js +6 -0
  100. langflow/frontend/assets/arrow-down-0-1-sOAZahEa.js +6 -0
  101. langflow/frontend/assets/arrow-down-1-0-jFkfLsFL.js +6 -0
  102. langflow/frontend/assets/arrow-down-DiLgk_Lv.js +6 -0
  103. langflow/frontend/assets/arrow-down-a-z-yfXUaZlY.js +6 -0
  104. langflow/frontend/assets/arrow-down-from-line-JwLxfDLL.js +6 -0
  105. langflow/frontend/assets/arrow-down-left-9rqXt219.js +6 -0
  106. langflow/frontend/assets/arrow-down-narrow-wide-DNQQfWSk.js +6 -0
  107. langflow/frontend/assets/arrow-down-right-C04MAksZ.js +6 -0
  108. langflow/frontend/assets/arrow-down-to-dot-BIQNg3lP.js +6 -0
  109. langflow/frontend/assets/arrow-down-to-line-AiuzCgPl.js +6 -0
  110. langflow/frontend/assets/arrow-down-up-BUl4CwHw.js +6 -0
  111. langflow/frontend/assets/arrow-down-wide-narrow-BEWv2A3j.js +6 -0
  112. langflow/frontend/assets/arrow-down-z-a-C-my0MFx.js +6 -0
  113. langflow/frontend/assets/arrow-left-DraCa3qF.js +6 -0
  114. langflow/frontend/assets/arrow-left-from-line-Cf8elz8N.js +6 -0
  115. langflow/frontend/assets/arrow-left-right-DnMFkXhG.js +6 -0
  116. langflow/frontend/assets/arrow-left-to-line-DqC6UI7j.js +6 -0
  117. langflow/frontend/assets/arrow-right-DjiPPpgB.js +6 -0
  118. langflow/frontend/assets/arrow-right-from-line-Dc9a1Fow.js +6 -0
  119. langflow/frontend/assets/arrow-right-left-DX4SFlaz.js +6 -0
  120. langflow/frontend/assets/arrow-right-to-line-QDmBsM4R.js +6 -0
  121. langflow/frontend/assets/arrow-up-0-1-B6al2yLS.js +6 -0
  122. langflow/frontend/assets/arrow-up-1-0-C6aJcw3B.js +6 -0
  123. langflow/frontend/assets/arrow-up-CjPYprhI.js +6 -0
  124. langflow/frontend/assets/arrow-up-a-z-BE7k_Es_.js +6 -0
  125. langflow/frontend/assets/arrow-up-down-nqmOlLPp.js +6 -0
  126. langflow/frontend/assets/arrow-up-from-dot-C3rxzunA.js +6 -0
  127. langflow/frontend/assets/arrow-up-from-line-KUrGFQEP.js +6 -0
  128. langflow/frontend/assets/arrow-up-left-DfnfqUsI.js +6 -0
  129. langflow/frontend/assets/arrow-up-narrow-wide-BxqaRTna.js +6 -0
  130. langflow/frontend/assets/arrow-up-right-XuwyPu6F.js +6 -0
  131. langflow/frontend/assets/arrow-up-to-line-ClQGsei8.js +6 -0
  132. langflow/frontend/assets/arrow-up-wide-narrow-Df4gI9kX.js +6 -0
  133. langflow/frontend/assets/arrow-up-z-a-BCD-rCLh.js +6 -0
  134. langflow/frontend/assets/arrows-up-from-line-BEVbeabp.js +6 -0
  135. langflow/frontend/assets/asterisk-DbNqMHXe.js +6 -0
  136. langflow/frontend/assets/at-sign-D6oIhdLE.js +6 -0
  137. langflow/frontend/assets/atom-BwKR6eUj.js +6 -0
  138. langflow/frontend/assets/audio-lines-DuaD6im4.js +6 -0
  139. langflow/frontend/assets/audio-waveform-BhXwvbto.js +6 -0
  140. langflow/frontend/assets/award-5kfq8rkw.js +6 -0
  141. langflow/frontend/assets/axe-BOOglolb.js +6 -0
  142. langflow/frontend/assets/axis-3d-DOFH7kHD.js +6 -0
  143. langflow/frontend/assets/baby-BEYKunXX.js +6 -0
  144. langflow/frontend/assets/backpack-_Qlx18_V.js +6 -0
  145. langflow/frontend/assets/badge-BOuSs5_H.js +6 -0
  146. langflow/frontend/assets/badge-alert-CckKfyfr.js +6 -0
  147. langflow/frontend/assets/badge-cent-BCVyiQHU.js +6 -0
  148. langflow/frontend/assets/badge-check-evlQm0SD.js +6 -0
  149. langflow/frontend/assets/badge-dollar-sign-Cs3GeUxH.js +6 -0
  150. langflow/frontend/assets/badge-euro-Bkq-NiJ5.js +6 -0
  151. langflow/frontend/assets/badge-help-CZrCA_Ar.js +6 -0
  152. langflow/frontend/assets/badge-indian-rupee-CGIxUK6a.js +6 -0
  153. langflow/frontend/assets/badge-info-tIeShHl2.js +6 -0
  154. langflow/frontend/assets/badge-japanese-yen-DC-UA7pC.js +6 -0
  155. langflow/frontend/assets/badge-minus-mAxFYDfn.js +6 -0
  156. langflow/frontend/assets/badge-percent-DInhOlwC.js +6 -0
  157. langflow/frontend/assets/badge-plus-Drx8vtQY.js +6 -0
  158. langflow/frontend/assets/badge-pound-sterling-SFaXfQwH.js +6 -0
  159. langflow/frontend/assets/badge-russian-ruble-Y4OZSJrU.js +6 -0
  160. langflow/frontend/assets/badge-swiss-franc-5KScJ4ZB.js +6 -0
  161. langflow/frontend/assets/badge-x-CntBKY-i.js +6 -0
  162. langflow/frontend/assets/baggage-claim-Bb6waYF4.js +6 -0
  163. langflow/frontend/assets/ban-Dr4CWBPj.js +6 -0
  164. langflow/frontend/assets/banana-C4ML2xXp.js +6 -0
  165. langflow/frontend/assets/bandage-BD0CHios.js +6 -0
  166. langflow/frontend/assets/banknote-DIcM5_C6.js +6 -0
  167. langflow/frontend/assets/banknote-arrow-down-v4zeqRIU.js +6 -0
  168. langflow/frontend/assets/banknote-arrow-up-BykOKE4i.js +6 -0
  169. langflow/frontend/assets/banknote-x-CpYx8SrC.js +6 -0
  170. langflow/frontend/assets/barcode-C9KJv53a.js +6 -0
  171. langflow/frontend/assets/baseline-BUk7-Xi7.js +6 -0
  172. langflow/frontend/assets/bath-Dg8LjUwx.js +6 -0
  173. langflow/frontend/assets/battery-CgmqlOl8.js +6 -0
  174. langflow/frontend/assets/battery-charging-pD-mMKPn.js +6 -0
  175. langflow/frontend/assets/battery-full-BWR4eBlS.js +6 -0
  176. langflow/frontend/assets/battery-low-CO0zIMLQ.js +6 -0
  177. langflow/frontend/assets/battery-medium-BDNKPIlP.js +6 -0
  178. langflow/frontend/assets/battery-plus-CDftjdMy.js +6 -0
  179. langflow/frontend/assets/battery-warning-BX8PdyQx.js +6 -0
  180. langflow/frontend/assets/beaker-DPQTIavx.js +6 -0
  181. langflow/frontend/assets/bean-Buf4iRsl.js +6 -0
  182. langflow/frontend/assets/bean-off-BdpjedQD.js +6 -0
  183. langflow/frontend/assets/bed-DbluJBcJ.js +6 -0
  184. langflow/frontend/assets/bed-double-ChlRO7Um.js +6 -0
  185. langflow/frontend/assets/bed-single-5Vz7P4KL.js +6 -0
  186. langflow/frontend/assets/beef-DLcY3ztG.js +6 -0
  187. langflow/frontend/assets/beer-CbZf1CLh.js +6 -0
  188. langflow/frontend/assets/beer-off-DQt9-Yvf.js +6 -0
  189. langflow/frontend/assets/bell-Dbx9wwOK.js +6 -0
  190. langflow/frontend/assets/bell-dot-KP_Rh9L4.js +6 -0
  191. langflow/frontend/assets/bell-electric-DYZym3Iv.js +6 -0
  192. langflow/frontend/assets/bell-minus-BZGjCom7.js +6 -0
  193. langflow/frontend/assets/bell-off-BAvH_HuW.js +6 -0
  194. langflow/frontend/assets/bell-plus-DPFkXHZc.js +6 -0
  195. langflow/frontend/assets/bell-ring-DuesEJGI.js +6 -0
  196. langflow/frontend/assets/between-horizontal-end-BPoYnPxc.js +6 -0
  197. langflow/frontend/assets/between-horizontal-start-DVqlwINr.js +6 -0
  198. langflow/frontend/assets/between-vertical-end-CGwEFKvW.js +6 -0
  199. langflow/frontend/assets/between-vertical-start-CTFQjVNF.js +6 -0
  200. langflow/frontend/assets/biceps-flexed-B2vA7PZV.js +6 -0
  201. langflow/frontend/assets/bike-Br2K_Koa.js +6 -0
  202. langflow/frontend/assets/binary-BHLdLb2-.js +6 -0
  203. langflow/frontend/assets/binoculars-DuKZH8Zh.js +6 -0
  204. langflow/frontend/assets/biohazard-B8FjW09n.js +6 -0
  205. langflow/frontend/assets/bird-itw24Hbj.js +6 -0
  206. langflow/frontend/assets/bitcoin-DgG8rKcA.js +6 -0
  207. langflow/frontend/assets/blend-CG2CKs-3.js +6 -0
  208. langflow/frontend/assets/blinds-BvB5LjVo.js +6 -0
  209. langflow/frontend/assets/blocks-NmxNFC3J.js +6 -0
  210. langflow/frontend/assets/bluetooth-CyLo6vyP.js +6 -0
  211. langflow/frontend/assets/bluetooth-connected-CW0EZSjS.js +6 -0
  212. langflow/frontend/assets/bluetooth-off-CLA2FgtZ.js +6 -0
  213. langflow/frontend/assets/bluetooth-searching-D39nzp26.js +6 -0
  214. langflow/frontend/assets/bold-Mwjfwd6i.js +6 -0
  215. langflow/frontend/assets/bolt-CCG6giOU.js +6 -0
  216. langflow/frontend/assets/bomb-CmW9GByV.js +6 -0
  217. langflow/frontend/assets/bone-B-ftIZZC.js +6 -0
  218. langflow/frontend/assets/book-C9k3ZOBc.js +6 -0
  219. langflow/frontend/assets/book-a-JtyovsEF.js +6 -0
  220. langflow/frontend/assets/book-audio-D4ca-u-T.js +6 -0
  221. langflow/frontend/assets/book-check-BeS3k1s2.js +6 -0
  222. langflow/frontend/assets/book-copy-C4XYhOc3.js +6 -0
  223. langflow/frontend/assets/book-dashed-B4RKCqvz.js +6 -0
  224. langflow/frontend/assets/book-down-C7cuvnxL.js +6 -0
  225. langflow/frontend/assets/book-headphones-W0HUkTzm.js +6 -0
  226. langflow/frontend/assets/book-heart-PLiTcr-b.js +6 -0
  227. langflow/frontend/assets/book-image-CwGwbb3g.js +6 -0
  228. langflow/frontend/assets/book-key-7traCCG2.js +6 -0
  229. langflow/frontend/assets/book-lock-Dlltc43Y.js +6 -0
  230. langflow/frontend/assets/book-marked-CdTsOLQX.js +6 -0
  231. langflow/frontend/assets/book-minus-6JqstP_B.js +6 -0
  232. langflow/frontend/assets/book-open--eSp397E.js +6 -0
  233. langflow/frontend/assets/book-open-check-Bkp4i0Z6.js +6 -0
  234. langflow/frontend/assets/book-open-text-BIWmd2fT.js +6 -0
  235. langflow/frontend/assets/book-plus-CflK6Aqe.js +6 -0
  236. langflow/frontend/assets/book-text-ByR7Lfzl.js +6 -0
  237. langflow/frontend/assets/book-type-Bq-Jm1g2.js +6 -0
  238. langflow/frontend/assets/book-up-2-DZZJTQeK.js +6 -0
  239. langflow/frontend/assets/book-up-ieUJxufA.js +6 -0
  240. langflow/frontend/assets/book-user-DJC4YpOj.js +6 -0
  241. langflow/frontend/assets/book-x-BYw2JmSg.js +6 -0
  242. langflow/frontend/assets/bookmark-DmgojVBV.js +6 -0
  243. langflow/frontend/assets/bookmark-check-BWmkNODf.js +6 -0
  244. langflow/frontend/assets/bookmark-minus-Opo6htKF.js +6 -0
  245. langflow/frontend/assets/bookmark-plus-Cmq9o8rG.js +6 -0
  246. langflow/frontend/assets/bookmark-x-Bbo75e-_.js +6 -0
  247. langflow/frontend/assets/boom-box-BUwW6n9i.js +6 -0
  248. langflow/frontend/assets/bot-DQCZD09Z.js +6 -0
  249. langflow/frontend/assets/bot-message-square-Qg8qf_Vo.js +6 -0
  250. langflow/frontend/assets/bot-off-CWhYg4QH.js +6 -0
  251. langflow/frontend/assets/bow-arrow-2G8YQj8T.js +6 -0
  252. langflow/frontend/assets/box-DI6aYfMK.js +6 -0
  253. langflow/frontend/assets/boxes-BtNp1YLT.js +6 -0
  254. langflow/frontend/assets/braces-BLcS_5vG.js +6 -0
  255. langflow/frontend/assets/brackets-Cv8xrRQf.js +6 -0
  256. langflow/frontend/assets/brain-DgRUprQ7.js +6 -0
  257. langflow/frontend/assets/brain-circuit-BtOL0kFy.js +6 -0
  258. langflow/frontend/assets/brain-cog-zXypBGqp.js +6 -0
  259. langflow/frontend/assets/brick-wall-CFFET0Vi.js +6 -0
  260. langflow/frontend/assets/brick-wall-fire-ZpPxxgvZ.js +6 -0
  261. langflow/frontend/assets/briefcase-Bbqle57g.js +6 -0
  262. langflow/frontend/assets/briefcase-business-EvgZ-pGn.js +6 -0
  263. langflow/frontend/assets/briefcase-conveyor-belt-B71ya1iU.js +6 -0
  264. langflow/frontend/assets/briefcase-medical-0jat9rYx.js +6 -0
  265. langflow/frontend/assets/bring-to-front-Cy8Ad0pA.js +6 -0
  266. langflow/frontend/assets/brush-5lcMFo2M.js +6 -0
  267. langflow/frontend/assets/bubbles--ZENXIG2.js +6 -0
  268. langflow/frontend/assets/bug-DRy9Jp16.js +6 -0
  269. langflow/frontend/assets/bug-off-BxN14Ao_.js +6 -0
  270. langflow/frontend/assets/bug-play-Dleid9nE.js +6 -0
  271. langflow/frontend/assets/building-2-CK8gdrCW.js +6 -0
  272. langflow/frontend/assets/building-DnAh38ZD.js +6 -0
  273. langflow/frontend/assets/bus-BDx_jniJ.js +6 -0
  274. langflow/frontend/assets/bus-front-B8mPAPPF.js +6 -0
  275. langflow/frontend/assets/cable-D1OmUrR-.js +6 -0
  276. langflow/frontend/assets/cable-car-tPhitjsJ.js +6 -0
  277. langflow/frontend/assets/cake-C6nHJ4UH.js +6 -0
  278. langflow/frontend/assets/cake-slice-BgiXTSq6.js +6 -0
  279. langflow/frontend/assets/calculator-DinCzLLu.js +6 -0
  280. langflow/frontend/assets/calendar-1-p13BBdjX.js +6 -0
  281. langflow/frontend/assets/calendar-B51W3LkW.js +6 -0
  282. langflow/frontend/assets/calendar-arrow-down-D4GLmFd6.js +6 -0
  283. langflow/frontend/assets/calendar-arrow-up-RlAgBFVb.js +6 -0
  284. langflow/frontend/assets/calendar-check-2-OzKJ28SZ.js +6 -0
  285. langflow/frontend/assets/calendar-check-DBkCCqIF.js +6 -0
  286. langflow/frontend/assets/calendar-clock-CPmhjPfI.js +6 -0
  287. langflow/frontend/assets/calendar-cog-DNf29O6g.js +6 -0
  288. langflow/frontend/assets/calendar-days-DM_qi8g0.js +6 -0
  289. langflow/frontend/assets/calendar-fold-DSBrdaqJ.js +6 -0
  290. langflow/frontend/assets/calendar-heart-CAtCjdjQ.js +6 -0
  291. langflow/frontend/assets/calendar-minus-2-hox-wOZr.js +6 -0
  292. langflow/frontend/assets/calendar-minus-DbKbHYOA.js +6 -0
  293. langflow/frontend/assets/calendar-off-DlYG3mA6.js +6 -0
  294. langflow/frontend/assets/calendar-plus-2-Ch9-ovuL.js +6 -0
  295. langflow/frontend/assets/calendar-plus-BN4Db129.js +6 -0
  296. langflow/frontend/assets/calendar-range-CJ4VugmU.js +6 -0
  297. langflow/frontend/assets/calendar-search-DHIkS4iK.js +6 -0
  298. langflow/frontend/assets/calendar-sync-CbzQX2UF.js +6 -0
  299. langflow/frontend/assets/calendar-x-2-BNmHDi_X.js +6 -0
  300. langflow/frontend/assets/calendar-x-LrNbzdAM.js +6 -0
  301. langflow/frontend/assets/camera-BseIeAZa.js +6 -0
  302. langflow/frontend/assets/camera-off-0d9MQnAK.js +6 -0
  303. langflow/frontend/assets/candy-DBuvO51G.js +6 -0
  304. langflow/frontend/assets/candy-cane-BhKAIRPp.js +6 -0
  305. langflow/frontend/assets/candy-off-xFO9zAdm.js +6 -0
  306. langflow/frontend/assets/cannabis-CECNWfs7.js +6 -0
  307. langflow/frontend/assets/captions-CZdZrpN9.js +6 -0
  308. langflow/frontend/assets/captions-off-ehI1itMu.js +6 -0
  309. langflow/frontend/assets/car-D0xYW2KF.js +6 -0
  310. langflow/frontend/assets/car-front-rr7hWrV5.js +6 -0
  311. langflow/frontend/assets/car-taxi-front-CQDj7ceR.js +6 -0
  312. langflow/frontend/assets/caravan-BI0wWOjB.js +6 -0
  313. langflow/frontend/assets/carrot-NTCSh6Bi.js +6 -0
  314. langflow/frontend/assets/case-lower-C0v-UmoB.js +6 -0
  315. langflow/frontend/assets/case-sensitive-CEBMjxQ0.js +6 -0
  316. langflow/frontend/assets/case-upper-qnPCGODe.js +6 -0
  317. langflow/frontend/assets/cassette-tape-o1NC2smT.js +6 -0
  318. langflow/frontend/assets/cast-DoGbtlSh.js +6 -0
  319. langflow/frontend/assets/castle-CDLhRCwv.js +6 -0
  320. langflow/frontend/assets/cat-ZE7MBg12.js +6 -0
  321. langflow/frontend/assets/cctv-BzSWabyA.js +6 -0
  322. langflow/frontend/assets/chart-area-BAWqnveI.js +6 -0
  323. langflow/frontend/assets/chart-bar-DQQ3LQU3.js +6 -0
  324. langflow/frontend/assets/chart-bar-big-D7MR2ePA.js +6 -0
  325. langflow/frontend/assets/chart-bar-decreasing-Vr_wGqvM.js +6 -0
  326. langflow/frontend/assets/chart-bar-increasing-DgEFeop5.js +6 -0
  327. langflow/frontend/assets/chart-bar-stacked-DnRijZKC.js +6 -0
  328. langflow/frontend/assets/chart-candlestick-DxGYDF5k.js +6 -0
  329. langflow/frontend/assets/chart-column-Et99item.js +6 -0
  330. langflow/frontend/assets/chart-column-big-yyRSq6kX.js +6 -0
  331. langflow/frontend/assets/chart-column-decreasing-CVvjizfE.js +6 -0
  332. langflow/frontend/assets/chart-column-increasing-CfeF2c-6.js +6 -0
  333. langflow/frontend/assets/chart-column-stacked-CF9zvWY4.js +6 -0
  334. langflow/frontend/assets/chart-gantt-BouGwyFq.js +6 -0
  335. langflow/frontend/assets/chart-line-Dk3EdrPb.js +6 -0
  336. langflow/frontend/assets/chart-network-CN4xGFXA.js +6 -0
  337. langflow/frontend/assets/chart-no-axes-column-BcQyHdMD.js +6 -0
  338. langflow/frontend/assets/chart-no-axes-column-decreasing-BgUclvV3.js +6 -0
  339. langflow/frontend/assets/chart-no-axes-column-increasing-DNTPc9wN.js +6 -0
  340. langflow/frontend/assets/chart-no-axes-combined-DF25ksrL.js +6 -0
  341. langflow/frontend/assets/chart-no-axes-gantt-BaC_vlS6.js +6 -0
  342. langflow/frontend/assets/chart-pie-B95LBWmZ.js +6 -0
  343. langflow/frontend/assets/chart-scatter-D8SFnMu1.js +6 -0
  344. langflow/frontend/assets/chart-spline-ClrgbOlE.js +6 -0
  345. langflow/frontend/assets/check-check-BXqbwrkO.js +6 -0
  346. langflow/frontend/assets/chef-hat-BjGOghzL.js +6 -0
  347. langflow/frontend/assets/cherry-CJB4mtL5.js +6 -0
  348. langflow/frontend/assets/chevron-first-2oTPGrLc.js +6 -0
  349. langflow/frontend/assets/chevron-last-3pCmFTmU.js +6 -0
  350. langflow/frontend/assets/chevron-left-ClDOQQjV.js +6 -0
  351. langflow/frontend/assets/chevron-right-C711qfbS.js +6 -0
  352. langflow/frontend/assets/chevrons-down-QCuIa8Yp.js +6 -0
  353. langflow/frontend/assets/chevrons-down-up-J6xSXJkb.js +6 -0
  354. langflow/frontend/assets/chevrons-left-NITQoGwJ.js +6 -0
  355. langflow/frontend/assets/chevrons-left-right-CYcrBR6M.js +6 -0
  356. langflow/frontend/assets/chevrons-left-right-ellipsis-Br8VMnkg.js +6 -0
  357. langflow/frontend/assets/chevrons-right-Cs2_g8bG.js +6 -0
  358. langflow/frontend/assets/chevrons-right-left-DtGiQ_O0.js +6 -0
  359. langflow/frontend/assets/chevrons-up-BMLMeGVh.js +6 -0
  360. langflow/frontend/assets/chrome-nvIjs2xZ.js +6 -0
  361. langflow/frontend/assets/church-Qq4UHf_z.js +6 -0
  362. langflow/frontend/assets/cigarette-CXfG_56T.js +6 -0
  363. langflow/frontend/assets/cigarette-off-CdYeRZyX.js +6 -0
  364. langflow/frontend/assets/circle-alert-DT5NKy9u.js +6 -0
  365. langflow/frontend/assets/circle-arrow-down-B2qM-Tuw.js +6 -0
  366. langflow/frontend/assets/circle-arrow-left-CBLpt9nA.js +6 -0
  367. langflow/frontend/assets/circle-arrow-out-down-left-gA68XlUY.js +6 -0
  368. langflow/frontend/assets/circle-arrow-out-down-right-HKXxeeQC.js +6 -0
  369. langflow/frontend/assets/circle-arrow-out-up-left-Cq1LyJKa.js +6 -0
  370. langflow/frontend/assets/circle-arrow-out-up-right-BUvVbJA7.js +6 -0
  371. langflow/frontend/assets/circle-arrow-right-D7t8P6ad.js +6 -0
  372. langflow/frontend/assets/circle-arrow-up-MHzCg4I0.js +6 -0
  373. langflow/frontend/assets/circle-check-B91Zb0zk.js +6 -0
  374. langflow/frontend/assets/circle-check-big-BVKtiAhQ.js +6 -0
  375. langflow/frontend/assets/circle-chevron-down-DNh3bpzK.js +6 -0
  376. langflow/frontend/assets/circle-chevron-left-BJb7vji3.js +6 -0
  377. langflow/frontend/assets/circle-chevron-right-CHmsilV-.js +6 -0
  378. langflow/frontend/assets/circle-chevron-up-Bj9nIZx9.js +6 -0
  379. langflow/frontend/assets/circle-dashed-DzEIY_5d.js +6 -0
  380. langflow/frontend/assets/circle-divide-BuJbzWip.js +6 -0
  381. langflow/frontend/assets/circle-dollar-sign-DdF9J_EI.js +6 -0
  382. langflow/frontend/assets/circle-dot-DitPRly6.js +6 -0
  383. langflow/frontend/assets/circle-dot-dashed-OHoDDXoS.js +6 -0
  384. langflow/frontend/assets/circle-ellipsis-Co5wf0tj.js +6 -0
  385. langflow/frontend/assets/circle-equal-qGSgRMn6.js +6 -0
  386. langflow/frontend/assets/circle-fading-arrow-up-DSM4N2tt.js +6 -0
  387. langflow/frontend/assets/circle-fading-plus-CTQq46rS.js +6 -0
  388. langflow/frontend/assets/circle-gauge-CisUMCG0.js +6 -0
  389. langflow/frontend/assets/circle-help-BF5hRBkX.js +6 -0
  390. langflow/frontend/assets/circle-minus-C3fjtT26.js +6 -0
  391. langflow/frontend/assets/circle-off-_zmE8lRn.js +6 -0
  392. langflow/frontend/assets/circle-parking-BLDdyc9C.js +6 -0
  393. langflow/frontend/assets/circle-parking-off-CxEO8auk.js +6 -0
  394. langflow/frontend/assets/circle-pause-CsP1hqTY.js +6 -0
  395. langflow/frontend/assets/circle-percent-CppecgnG.js +6 -0
  396. langflow/frontend/assets/circle-play-CElAyvGy.js +6 -0
  397. langflow/frontend/assets/circle-plus-DxOSr_qE.js +6 -0
  398. langflow/frontend/assets/circle-power-CX9PhDfK.js +6 -0
  399. langflow/frontend/assets/circle-slash-2--Mme5qmH.js +6 -0
  400. langflow/frontend/assets/circle-slash-BsqGhDcj.js +6 -0
  401. langflow/frontend/assets/circle-small-DQ5WLdC1.js +6 -0
  402. langflow/frontend/assets/circle-stop-5W_dFAx7.js +6 -0
  403. langflow/frontend/assets/circle-user-cdgPpsDB.js +6 -0
  404. langflow/frontend/assets/circle-user-round-DpFUTXdt.js +6 -0
  405. langflow/frontend/assets/circuit-board-Bzpo8k7-.js +6 -0
  406. langflow/frontend/assets/citrus-BD7KeVpe.js +6 -0
  407. langflow/frontend/assets/clapperboard-DJq3crx6.js +6 -0
  408. langflow/frontend/assets/clipboard-check-CzW6HoZg.js +6 -0
  409. langflow/frontend/assets/clipboard-copy-CuDmr3UP.js +6 -0
  410. langflow/frontend/assets/clipboard-list-blWwAWhj.js +6 -0
  411. langflow/frontend/assets/clipboard-minus-MDDcL-JV.js +6 -0
  412. langflow/frontend/assets/clipboard-paste-BALmGJWd.js +6 -0
  413. langflow/frontend/assets/clipboard-pen-CKtqpJ-f.js +6 -0
  414. langflow/frontend/assets/clipboard-pen-line-B8g42LUo.js +6 -0
  415. langflow/frontend/assets/clipboard-plus-DdcrgHOb.js +6 -0
  416. langflow/frontend/assets/clipboard-sn1jUIDV.js +6 -0
  417. langflow/frontend/assets/clipboard-type-DNViKiGe.js +6 -0
  418. langflow/frontend/assets/clipboard-x-BL6o1EDk.js +6 -0
  419. langflow/frontend/assets/clock-1-D_Xsorkr.js +6 -0
  420. langflow/frontend/assets/clock-10-C5lfthCJ.js +6 -0
  421. langflow/frontend/assets/clock-11-CrzatXPC.js +6 -0
  422. langflow/frontend/assets/clock-12-CB-3YTlR.js +6 -0
  423. langflow/frontend/assets/clock-2-CAjJbwpA.js +6 -0
  424. langflow/frontend/assets/clock-3-BkqbnGC2.js +6 -0
  425. langflow/frontend/assets/clock-4-B1iR-wjF.js +6 -0
  426. langflow/frontend/assets/clock-5-hqy_7zzP.js +6 -0
  427. langflow/frontend/assets/clock-6-COiBqCUV.js +6 -0
  428. langflow/frontend/assets/clock-7-D8H9-5o2.js +6 -0
  429. langflow/frontend/assets/clock-8-DmFZf8EJ.js +6 -0
  430. langflow/frontend/assets/clock-9-5vuBxoOH.js +6 -0
  431. langflow/frontend/assets/clock-CvX75A0g.js +6 -0
  432. langflow/frontend/assets/clock-alert-B4zpxMYp.js +6 -0
  433. langflow/frontend/assets/clock-arrow-down-Cp38KxCZ.js +6 -0
  434. langflow/frontend/assets/clock-arrow-up-Cu2Eqxj_.js +6 -0
  435. langflow/frontend/assets/clock-fading-DBqbXrNN.js +6 -0
  436. langflow/frontend/assets/cloud-alert-C8axZqAX.js +6 -0
  437. langflow/frontend/assets/cloud-cog-DH4WJaQY.js +6 -0
  438. langflow/frontend/assets/cloud-download-aSd93OOq.js +6 -0
  439. langflow/frontend/assets/cloud-drizzle-BoOXY0Vf.js +6 -0
  440. langflow/frontend/assets/cloud-ePqAv-Nj.js +6 -0
  441. langflow/frontend/assets/cloud-fog-DgOBgtbG.js +6 -0
  442. langflow/frontend/assets/cloud-hail-EUTfUsOC.js +6 -0
  443. langflow/frontend/assets/cloud-lightning-Bq38iQ8R.js +6 -0
  444. langflow/frontend/assets/cloud-moon-CEZa2582.js +6 -0
  445. langflow/frontend/assets/cloud-moon-rain-ViKAyE90.js +6 -0
  446. langflow/frontend/assets/cloud-off-BeDtlaCJ.js +6 -0
  447. langflow/frontend/assets/cloud-rain-BGFNQif7.js +6 -0
  448. langflow/frontend/assets/cloud-rain-wind-BJr3MNMX.js +6 -0
  449. langflow/frontend/assets/cloud-snow-B_NNumLp.js +6 -0
  450. langflow/frontend/assets/cloud-sun-CSeibAw_.js +6 -0
  451. langflow/frontend/assets/cloud-sun-rain-CmhhxE4C.js +6 -0
  452. langflow/frontend/assets/cloud-upload-DGtwHF2g.js +6 -0
  453. langflow/frontend/assets/cloudy-CZkWi5KD.js +6 -0
  454. langflow/frontend/assets/clover-DHTKeS-5.js +6 -0
  455. langflow/frontend/assets/club-BpMaUsgO.js +6 -0
  456. langflow/frontend/assets/code-xml-CAUmexA-.js +6 -0
  457. langflow/frontend/assets/codepen-ikBrTpKJ.js +6 -0
  458. langflow/frontend/assets/codesandbox-C08d09l6.js +6 -0
  459. langflow/frontend/assets/coffee-CvposdVX.js +6 -0
  460. langflow/frontend/assets/cog-C64LYrMn.js +6 -0
  461. langflow/frontend/assets/coins-UEx29OeF.js +6 -0
  462. langflow/frontend/assets/columns-2-Bsdbp-EE.js +6 -0
  463. langflow/frontend/assets/columns-3-DXwsg-oz.js +6 -0
  464. langflow/frontend/assets/columns-3-cog-DtVF6mVc.js +6 -0
  465. langflow/frontend/assets/columns-4-BRbvUIE-.js +6 -0
  466. langflow/frontend/assets/combine-BgQxFGO5.js +6 -0
  467. langflow/frontend/assets/command-B9cAeenh.js +6 -0
  468. langflow/frontend/assets/compass-pMFWbZJw.js +6 -0
  469. langflow/frontend/assets/component-BgLZWmP7.js +6 -0
  470. langflow/frontend/assets/computer-BXGdV9Gt.js +6 -0
  471. langflow/frontend/assets/concierge-bell-CbQqTx0G.js +6 -0
  472. langflow/frontend/assets/cone-CZ631cjP.js +6 -0
  473. langflow/frontend/assets/construction-DpDSFi2C.js +6 -0
  474. langflow/frontend/assets/contact-Bf_js1wR.js +6 -0
  475. langflow/frontend/assets/contact-round-CbjK6rc4.js +6 -0
  476. langflow/frontend/assets/container-SHkUJELq.js +6 -0
  477. langflow/frontend/assets/contrast-BrqH_HsS.js +6 -0
  478. langflow/frontend/assets/cookie-7yhFStaP.js +6 -0
  479. langflow/frontend/assets/cooking-pot-CtXq_mXS.js +6 -0
  480. langflow/frontend/assets/copy-D33RCBtr.js +6 -0
  481. langflow/frontend/assets/copy-check-BHsM9R9p.js +6 -0
  482. langflow/frontend/assets/copy-minus-DzHvDhtg.js +6 -0
  483. langflow/frontend/assets/copy-plus-D9aWk5ZC.js +6 -0
  484. langflow/frontend/assets/copy-slash-VkGSZ_CE.js +6 -0
  485. langflow/frontend/assets/copy-x-C4i424Hw.js +6 -0
  486. langflow/frontend/assets/copyleft-CqaewALy.js +6 -0
  487. langflow/frontend/assets/copyright-Bu0x5oIe.js +6 -0
  488. langflow/frontend/assets/corner-down-left-D6PAN-4K.js +6 -0
  489. langflow/frontend/assets/corner-down-right-Bn8MOthV.js +6 -0
  490. langflow/frontend/assets/corner-left-down-D5RxfmoN.js +6 -0
  491. langflow/frontend/assets/corner-left-up-C8TixmVG.js +6 -0
  492. langflow/frontend/assets/corner-right-down-CtmEwD6C.js +6 -0
  493. langflow/frontend/assets/corner-right-up-DG-F1pH2.js +6 -0
  494. langflow/frontend/assets/corner-up-left-QznD74yA.js +6 -0
  495. langflow/frontend/assets/corner-up-right-Bhkr_6ta.js +6 -0
  496. langflow/frontend/assets/cpu-CW82VU4w.js +6 -0
  497. langflow/frontend/assets/creative-commons-Bh5sqgki.js +6 -0
  498. langflow/frontend/assets/credit-card-1pfgVrv3.js +6 -0
  499. langflow/frontend/assets/croissant-DpBBx0pw.js +6 -0
  500. langflow/frontend/assets/crop-X7W6m64J.js +6 -0
  501. langflow/frontend/assets/cross-D542UVw8.js +6 -0
  502. langflow/frontend/assets/crosshair-B6mNFuS-.js +6 -0
  503. langflow/frontend/assets/crown-D6_nEBly.js +6 -0
  504. langflow/frontend/assets/cuboid-CyvwAGks.js +6 -0
  505. langflow/frontend/assets/cup-soda-lE90KQWF.js +6 -0
  506. langflow/frontend/assets/currency-CvqLSG-s.js +6 -0
  507. langflow/frontend/assets/cylinder-Dan7kvg6.js +6 -0
  508. langflow/frontend/assets/dam-BpbkiwPc.js +6 -0
  509. langflow/frontend/assets/database-CZ11Soos.js +6 -0
  510. langflow/frontend/assets/database-backup-ueaXvg29.js +6 -0
  511. langflow/frontend/assets/database-zap-CLyrj98z.js +6 -0
  512. langflow/frontend/assets/decimals-arrow-left-C4FshaZA.js +6 -0
  513. langflow/frontend/assets/decimals-arrow-right-BYKeQJvg.js +6 -0
  514. langflow/frontend/assets/delete-DGp28GjS.js +6 -0
  515. langflow/frontend/assets/dessert-vafoRC_I.js +6 -0
  516. langflow/frontend/assets/diameter-CpWKi4bQ.js +6 -0
  517. langflow/frontend/assets/diamond-D4sYlxiq.js +6 -0
  518. langflow/frontend/assets/diamond-minus-Dc9_xvul.js +6 -0
  519. langflow/frontend/assets/diamond-percent-Bls-21yM.js +6 -0
  520. langflow/frontend/assets/diamond-plus-DUfp2PhN.js +6 -0
  521. langflow/frontend/assets/dice-1-B5g_tzYc.js +6 -0
  522. langflow/frontend/assets/dice-2-DbCHSxL8.js +6 -0
  523. langflow/frontend/assets/dice-3-Bjv-XMP3.js +6 -0
  524. langflow/frontend/assets/dice-4-ChbYiYkR.js +6 -0
  525. langflow/frontend/assets/dice-5-CUmwrcU2.js +6 -0
  526. langflow/frontend/assets/dice-6-2a_DEvNP.js +6 -0
  527. langflow/frontend/assets/dices-Bfp6xf1T.js +6 -0
  528. langflow/frontend/assets/diff-DWrr4PgL.js +6 -0
  529. langflow/frontend/assets/disc-2-BKIHWtvV.js +6 -0
  530. langflow/frontend/assets/disc-3-C-YNVgLt.js +6 -0
  531. langflow/frontend/assets/disc-DcpBQ1vZ.js +6 -0
  532. langflow/frontend/assets/disc-album-BHqF8E8z.js +6 -0
  533. langflow/frontend/assets/divide-BowweBYy.js +6 -0
  534. langflow/frontend/assets/dna-CKx2UX_q.js +6 -0
  535. langflow/frontend/assets/dna-off-6vz4JWoY.js +6 -0
  536. langflow/frontend/assets/dock-CSWNUNEN.js +6 -0
  537. langflow/frontend/assets/dog-Brgy9TeF.js +6 -0
  538. langflow/frontend/assets/dollar-sign-BvVnYnyE.js +6 -0
  539. langflow/frontend/assets/donut-yE1ohHN1.js +6 -0
  540. langflow/frontend/assets/door-closed-DbQTZK_Z.js +6 -0
  541. langflow/frontend/assets/door-open-kU4MiMrV.js +6 -0
  542. langflow/frontend/assets/dot-BoAAat-a.js +6 -0
  543. langflow/frontend/assets/download-spnr31G_.js +6 -0
  544. langflow/frontend/assets/drafting-compass-BVLRoE9p.js +6 -0
  545. langflow/frontend/assets/drama-DH0VK2y4.js +6 -0
  546. langflow/frontend/assets/dribbble-BsRD_dOV.js +6 -0
  547. langflow/frontend/assets/drill-BQ8s8Ovp.js +6 -0
  548. langflow/frontend/assets/droplet-DgVYu4iw.js +6 -0
  549. langflow/frontend/assets/droplet-off-CWfFq3Y4.js +6 -0
  550. langflow/frontend/assets/droplets-BImhG8YB.js +6 -0
  551. langflow/frontend/assets/drum-CUBUrT-P.js +6 -0
  552. langflow/frontend/assets/drumstick-BdzvGI3x.js +6 -0
  553. langflow/frontend/assets/dumbbell-uzNP-XjP.js +6 -0
  554. langflow/frontend/assets/ear-DG1WWYBD.js +6 -0
  555. langflow/frontend/assets/ear-off-CnLtouCs.js +6 -0
  556. langflow/frontend/assets/earth-BLY47zLG.js +6 -0
  557. langflow/frontend/assets/earth-lock-C_4WyhYm.js +6 -0
  558. langflow/frontend/assets/eclipse-DotUntyW.js +6 -0
  559. langflow/frontend/assets/egg-D0p6D8iJ.js +6 -0
  560. langflow/frontend/assets/egg-fried-D8ZYWDd8.js +6 -0
  561. langflow/frontend/assets/egg-off-COi0Zq6A.js +6 -0
  562. langflow/frontend/assets/ellipsis-BqKuKkUq.js +6 -0
  563. langflow/frontend/assets/ellipsis-vertical-DLAiRoTI.js +6 -0
  564. langflow/frontend/assets/equal-BPZTCCOR.js +6 -0
  565. langflow/frontend/assets/equal-approximately-Ci9wlW7H.js +6 -0
  566. langflow/frontend/assets/equal-not-BbjIRsV9.js +6 -0
  567. langflow/frontend/assets/eraser-kryVNVEd.js +6 -0
  568. langflow/frontend/assets/ethernet-port-DY0h8gUB.js +6 -0
  569. langflow/frontend/assets/euro-CcGvvYEu.js +6 -0
  570. langflow/frontend/assets/expand-BT1hO_Gd.js +6 -0
  571. langflow/frontend/assets/eye-0Uepj1qe.js +6 -0
  572. langflow/frontend/assets/eye-closed-DhVJCZQy.js +6 -0
  573. langflow/frontend/assets/eye-off-DMZQc0_N.js +6 -0
  574. langflow/frontend/assets/facebook-BYV_s-7j.js +6 -0
  575. langflow/frontend/assets/factory-HMK58m9C.js +6 -0
  576. langflow/frontend/assets/fan-MiojL-un.js +6 -0
  577. langflow/frontend/assets/fast-forward-CP1NpIFe.js +6 -0
  578. langflow/frontend/assets/feather-BSp2xn9F.js +6 -0
  579. langflow/frontend/assets/fence-CBJziCGR.js +6 -0
  580. langflow/frontend/assets/ferris-wheel-Dc4hXImA.js +6 -0
  581. langflow/frontend/assets/figma-D1WZZKxq.js +6 -0
  582. langflow/frontend/assets/file-BJeOmSAw.js +6 -0
  583. langflow/frontend/assets/file-archive-CYnlcCTN.js +6 -0
  584. langflow/frontend/assets/file-audio-2-CFgbi0zE.js +6 -0
  585. langflow/frontend/assets/file-audio-UXcSArn5.js +6 -0
  586. langflow/frontend/assets/file-axis-3d-BkpPUlaa.js +6 -0
  587. langflow/frontend/assets/file-badge-2-DxqhO2Ge.js +6 -0
  588. langflow/frontend/assets/file-badge-R64auIUU.js +6 -0
  589. langflow/frontend/assets/file-box-BHVs20bG.js +6 -0
  590. langflow/frontend/assets/file-chart-column-DSBEh916.js +6 -0
  591. langflow/frontend/assets/file-chart-column-increasing-BLEWUcgJ.js +6 -0
  592. langflow/frontend/assets/file-chart-line-CkAf2P_o.js +6 -0
  593. langflow/frontend/assets/file-chart-pie-C6JyaHLt.js +6 -0
  594. langflow/frontend/assets/file-check-2-Ep64Ldje.js +6 -0
  595. langflow/frontend/assets/file-check-CfwhdRf-.js +6 -0
  596. langflow/frontend/assets/file-clock-yuvRB4zR.js +6 -0
  597. langflow/frontend/assets/file-code-2-DJSRSqgI.js +6 -0
  598. langflow/frontend/assets/file-code-tTXJt3y7.js +6 -0
  599. langflow/frontend/assets/file-cog-C3Bke8nN.js +6 -0
  600. langflow/frontend/assets/file-diff-07-zDqLK.js +6 -0
  601. langflow/frontend/assets/file-digit-C-TZ6TMx.js +6 -0
  602. langflow/frontend/assets/file-down-C_21auWB.js +6 -0
  603. langflow/frontend/assets/file-heart-BUWO_Ubq.js +6 -0
  604. langflow/frontend/assets/file-image-DeGNhVbH.js +6 -0
  605. langflow/frontend/assets/file-input-DC648sVv.js +6 -0
  606. langflow/frontend/assets/file-json-2-BleUm6B-.js +6 -0
  607. langflow/frontend/assets/file-json-DvYkA26T.js +6 -0
  608. langflow/frontend/assets/file-key-2-Df3DueKg.js +6 -0
  609. langflow/frontend/assets/file-key-D25uIzEV.js +6 -0
  610. langflow/frontend/assets/file-lock-2-CRuvNTc_.js +6 -0
  611. langflow/frontend/assets/file-lock-CSpPgoDZ.js +6 -0
  612. langflow/frontend/assets/file-minus-2-DYnr-vtz.js +6 -0
  613. langflow/frontend/assets/file-minus-CwO2J7XK.js +6 -0
  614. langflow/frontend/assets/file-music-frXWNJoK.js +6 -0
  615. langflow/frontend/assets/file-output-BCvl7eUX.js +6 -0
  616. langflow/frontend/assets/file-pen-CAaJniG8.js +6 -0
  617. langflow/frontend/assets/file-pen-line-Cgv1i6mY.js +6 -0
  618. langflow/frontend/assets/file-plus-2-BSvGeJIg.js +6 -0
  619. langflow/frontend/assets/file-plus-Bh-AJgy4.js +6 -0
  620. langflow/frontend/assets/file-question-DEVapx4f.js +6 -0
  621. langflow/frontend/assets/file-scan-t-aTKHOe.js +6 -0
  622. langflow/frontend/assets/file-search-2-Bh2Lyxdg.js +6 -0
  623. langflow/frontend/assets/file-search-B2BT1IJF.js +6 -0
  624. langflow/frontend/assets/file-sliders-BDrWWLnj.js +6 -0
  625. langflow/frontend/assets/file-spreadsheet-CMHqeLFl.js +6 -0
  626. langflow/frontend/assets/file-stack-DzWV1JJQ.js +6 -0
  627. langflow/frontend/assets/file-symlink-m0SuHMbb.js +6 -0
  628. langflow/frontend/assets/file-terminal-RtBqsz8t.js +6 -0
  629. langflow/frontend/assets/file-text-DcnfhlJS.js +6 -0
  630. langflow/frontend/assets/file-type-2-HgN3usQi.js +6 -0
  631. langflow/frontend/assets/file-type-Wo4mXDEa.js +6 -0
  632. langflow/frontend/assets/file-up-Ah5Vlblk.js +6 -0
  633. langflow/frontend/assets/file-user-C10BV3-F.js +6 -0
  634. langflow/frontend/assets/file-video-2-D60PR2tb.js +6 -0
  635. langflow/frontend/assets/file-video-D1LP9ceq.js +6 -0
  636. langflow/frontend/assets/file-volume-2-DWd0pH87.js +6 -0
  637. langflow/frontend/assets/file-volume-Dx1qqTPj.js +6 -0
  638. langflow/frontend/assets/file-warning-CntAQ03q.js +6 -0
  639. langflow/frontend/assets/file-x-2-D7pJdGQ4.js +6 -0
  640. langflow/frontend/assets/file-x-w3PSwPaN.js +6 -0
  641. langflow/frontend/assets/files-Ba_FZh9m.js +6 -0
  642. langflow/frontend/assets/film-CSV5uKAX.js +6 -0
  643. langflow/frontend/assets/fingerprint-BIoRa0QM.js +6 -0
  644. langflow/frontend/assets/fire-extinguisher-9pJExz54.js +6 -0
  645. langflow/frontend/assets/fish-D2IHyGo1.js +6 -0
  646. langflow/frontend/assets/fish-off-B1AV5M6o.js +6 -0
  647. langflow/frontend/assets/fish-symbol-1FtOa4Ff.js +6 -0
  648. langflow/frontend/assets/flag-DeciN7ml.js +6 -0
  649. langflow/frontend/assets/flag-off-DUP9GpZR.js +6 -0
  650. langflow/frontend/assets/flag-triangle-left-BFwEeuS_.js +6 -0
  651. langflow/frontend/assets/flag-triangle-right-CI_SLj86.js +6 -0
  652. langflow/frontend/assets/flame-GFGSOHNO.js +6 -0
  653. langflow/frontend/assets/flame-kindling-D8mfrPga.js +6 -0
  654. langflow/frontend/assets/flashlight-lOh9FijK.js +6 -0
  655. langflow/frontend/assets/flashlight-off-Bsi5bvDr.js +6 -0
  656. langflow/frontend/assets/flask-conical-Da2dFJgy.js +6 -0
  657. langflow/frontend/assets/flask-conical-off-BmBZh8li.js +6 -0
  658. langflow/frontend/assets/flask-round-DCNbM1Xr.js +6 -0
  659. langflow/frontend/assets/flip-horizontal-2-DjIxLldP.js +6 -0
  660. langflow/frontend/assets/flip-horizontal-Y1hdy1M8.js +6 -0
  661. langflow/frontend/assets/flip-vertical-2-CUzfycnQ.js +6 -0
  662. langflow/frontend/assets/flip-vertical-D-fZiBdV.js +6 -0
  663. langflow/frontend/assets/flower-2-DpuYXaI0.js +6 -0
  664. langflow/frontend/assets/flower-D7VN2vRV.js +6 -0
  665. langflow/frontend/assets/focus-CgjGqIlO.js +6 -0
  666. langflow/frontend/assets/fold-horizontal-DHM5GPi5.js +6 -0
  667. langflow/frontend/assets/fold-vertical-C9gKvqOi.js +6 -0
  668. langflow/frontend/assets/folder-DHBzBNi6.js +6 -0
  669. langflow/frontend/assets/folder-archive-Bg0p1BGr.js +6 -0
  670. langflow/frontend/assets/folder-check-C_J-pqhC.js +6 -0
  671. langflow/frontend/assets/folder-clock-Bdt0bWYb.js +6 -0
  672. langflow/frontend/assets/folder-closed-CpG_goS_.js +6 -0
  673. langflow/frontend/assets/folder-code-BfrcjBiJ.js +6 -0
  674. langflow/frontend/assets/folder-cog-D0HSZlUk.js +6 -0
  675. langflow/frontend/assets/folder-dot-Bl6Z8yRd.js +6 -0
  676. langflow/frontend/assets/folder-down-Cd5yX2hR.js +6 -0
  677. langflow/frontend/assets/folder-git-2-DW-8izzy.js +6 -0
  678. langflow/frontend/assets/folder-git-Dl6cI4x0.js +6 -0
  679. langflow/frontend/assets/folder-heart-BcWNEM_h.js +6 -0
  680. langflow/frontend/assets/folder-input-D08-f3t3.js +6 -0
  681. langflow/frontend/assets/folder-kanban-nzQd-lfD.js +6 -0
  682. langflow/frontend/assets/folder-key-DpznQOiZ.js +6 -0
  683. langflow/frontend/assets/folder-lock-SUBi7sWw.js +6 -0
  684. langflow/frontend/assets/folder-minus-DTAhS5kW.js +6 -0
  685. langflow/frontend/assets/folder-open-P_5T1_df.js +6 -0
  686. langflow/frontend/assets/folder-open-dot-DLsuij9P.js +6 -0
  687. langflow/frontend/assets/folder-output-Hoz7C5Sg.js +6 -0
  688. langflow/frontend/assets/folder-pen-CEFhZuKm.js +6 -0
  689. langflow/frontend/assets/folder-plus-DYMoWZt-.js +6 -0
  690. langflow/frontend/assets/folder-root-BTXEc8rM.js +6 -0
  691. langflow/frontend/assets/folder-search-2-CI2Sxf-y.js +6 -0
  692. langflow/frontend/assets/folder-search-CF6bJDV6.js +6 -0
  693. langflow/frontend/assets/folder-symlink-Dc7hVPyd.js +6 -0
  694. langflow/frontend/assets/folder-sync-BPBUfGnX.js +6 -0
  695. langflow/frontend/assets/folder-tree-DY4Ftj6k.js +6 -0
  696. langflow/frontend/assets/folder-up-BE_eC_UH.js +6 -0
  697. langflow/frontend/assets/folder-x--YzsyTv2.js +6 -0
  698. langflow/frontend/assets/folders-DBj-mUxf.js +6 -0
  699. langflow/frontend/assets/footprints-B3LklTMW.js +6 -0
  700. langflow/frontend/assets/forklift-C5LPpWzy.js +6 -0
  701. langflow/frontend/assets/forward-C0afMWvu.js +6 -0
  702. langflow/frontend/assets/frame-CuPcpGgS.js +6 -0
  703. langflow/frontend/assets/framer-CbCQQsmt.js +6 -0
  704. langflow/frontend/assets/frown-DxEX23Hm.js +6 -0
  705. langflow/frontend/assets/fuel-D1xGHjwV.js +6 -0
  706. langflow/frontend/assets/fullscreen-BIGq91ZI.js +6 -0
  707. langflow/frontend/assets/funnel-C-NQV0mL.js +6 -0
  708. langflow/frontend/assets/funnel-plus-D_vUHLvt.js +6 -0
  709. langflow/frontend/assets/funnel-x-DGu21bT2.js +6 -0
  710. langflow/frontend/assets/gallery-horizontal-BBiE0_x0.js +6 -0
  711. langflow/frontend/assets/gallery-horizontal-end-CnMgJ5DS.js +6 -0
  712. langflow/frontend/assets/gallery-thumbnails-CtOySXe1.js +6 -0
  713. langflow/frontend/assets/gallery-vertical-CV_I5Zfu.js +6 -0
  714. langflow/frontend/assets/gallery-vertical-end-4-jdBsGn.js +6 -0
  715. langflow/frontend/assets/gamepad-2-BvFzOQpx.js +6 -0
  716. langflow/frontend/assets/gamepad-DJe6Thxy.js +6 -0
  717. langflow/frontend/assets/gauge-DEzKFfM7.js +6 -0
  718. langflow/frontend/assets/gavel-CsTDuJw1.js +6 -0
  719. langflow/frontend/assets/gem-Bypt3rj7.js +6 -0
  720. langflow/frontend/assets/ghost-CG8V_Wik.js +6 -0
  721. langflow/frontend/assets/gift-D3Bw3K_w.js +6 -0
  722. langflow/frontend/assets/git-branch-DQvQg83e.js +6 -0
  723. langflow/frontend/assets/git-branch-plus-DnKO-rdL.js +6 -0
  724. langflow/frontend/assets/git-commit-horizontal-BSHVqLrs.js +6 -0
  725. langflow/frontend/assets/git-commit-vertical-CreWnTSn.js +6 -0
  726. langflow/frontend/assets/git-compare-B0PwMWpM.js +6 -0
  727. langflow/frontend/assets/git-compare-arrows-VgtsGNFF.js +6 -0
  728. langflow/frontend/assets/git-fork-DJZ2qmdu.js +6 -0
  729. langflow/frontend/assets/git-graph-D8PXH9s_.js +6 -0
  730. langflow/frontend/assets/git-merge-By9Qd2wm.js +6 -0
  731. langflow/frontend/assets/git-pull-request-C88DIeQ6.js +6 -0
  732. langflow/frontend/assets/git-pull-request-arrow-DG1SpKMq.js +6 -0
  733. langflow/frontend/assets/git-pull-request-closed-T8i53LyB.js +6 -0
  734. langflow/frontend/assets/git-pull-request-create-Vb2ZcmTQ.js +6 -0
  735. langflow/frontend/assets/git-pull-request-create-arrow-SiyvlJvG.js +6 -0
  736. langflow/frontend/assets/git-pull-request-draft-DUHB6Xxe.js +6 -0
  737. langflow/frontend/assets/github-C8ujlSn8.js +6 -0
  738. langflow/frontend/assets/gitlab-DY2Q3s_L.js +6 -0
  739. langflow/frontend/assets/glass-water-DshGksYS.js +6 -0
  740. langflow/frontend/assets/glasses-B8fR6VRZ.js +6 -0
  741. langflow/frontend/assets/globe-BOqIf5Wv.js +6 -0
  742. langflow/frontend/assets/globe-lock-CzUC5IEW.js +6 -0
  743. langflow/frontend/assets/goal-Vg3Wc1hY.js +6 -0
  744. langflow/frontend/assets/grab-Dxi_6jkO.js +6 -0
  745. langflow/frontend/assets/graduation-cap-BwucrBc9.js +6 -0
  746. langflow/frontend/assets/grape-OktxCY9q.js +6 -0
  747. langflow/frontend/assets/grid-2x2-CZ4LTCFd.js +6 -0
  748. langflow/frontend/assets/grid-2x2-check-CMnb1a9J.js +6 -0
  749. langflow/frontend/assets/grid-2x2-plus-BmbiTZxi.js +6 -0
  750. langflow/frontend/assets/grid-2x2-x-N-uF1q56.js +6 -0
  751. langflow/frontend/assets/grid-3x3-DIA7EVIA.js +6 -0
  752. langflow/frontend/assets/grip-B0YsYJKI.js +6 -0
  753. langflow/frontend/assets/grip-horizontal-CrMHt-nA.js +6 -0
  754. langflow/frontend/assets/grip-vertical-CzW6eTXD.js +6 -0
  755. langflow/frontend/assets/group-FSnIJ4jE.js +6 -0
  756. langflow/frontend/assets/guitar-CGwJlYgR.js +6 -0
  757. langflow/frontend/assets/ham-2r9Ls8Vw.js +6 -0
  758. langflow/frontend/assets/hammer-Dui_gaQL.js +6 -0
  759. langflow/frontend/assets/hand-BVXVxL5m.js +6 -0
  760. langflow/frontend/assets/hand-coins-B1hPR1t0.js +6 -0
  761. langflow/frontend/assets/hand-heart-CFSUyE4-.js +6 -0
  762. langflow/frontend/assets/hand-helping-BC9Nsi9A.js +6 -0
  763. langflow/frontend/assets/hand-metal-DlApbOIj.js +6 -0
  764. langflow/frontend/assets/hand-platter-B5Fh8FyW.js +6 -0
  765. langflow/frontend/assets/handshake-B7QevLMo.js +6 -0
  766. langflow/frontend/assets/hard-drive-P7jt4ry6.js +6 -0
  767. langflow/frontend/assets/hard-drive-download-CGLjKx8_.js +6 -0
  768. langflow/frontend/assets/hard-drive-upload-BVR4a8dK.js +6 -0
  769. langflow/frontend/assets/hard-hat-BVHmLBWZ.js +6 -0
  770. langflow/frontend/assets/hash-Cy_nIGAs.js +6 -0
  771. langflow/frontend/assets/haze-C0IHpJQl.js +6 -0
  772. langflow/frontend/assets/hdmi-port-DQdigNCk.js +6 -0
  773. langflow/frontend/assets/heading-1-y80kG5je.js +6 -0
  774. langflow/frontend/assets/heading-2-DheBF6n8.js +6 -0
  775. langflow/frontend/assets/heading-3-jkgnS7dK.js +6 -0
  776. langflow/frontend/assets/heading-4-BpvVn18-.js +6 -0
  777. langflow/frontend/assets/heading-5-DH3G5xNX.js +6 -0
  778. langflow/frontend/assets/heading-6-D2HSUEY3.js +6 -0
  779. langflow/frontend/assets/heading-Bp2VrhJ9.js +6 -0
  780. langflow/frontend/assets/headphone-off-CpbOzIOQ.js +6 -0
  781. langflow/frontend/assets/headphones-CNZ6eFL8.js +6 -0
  782. langflow/frontend/assets/headset-CoIAhYny.js +6 -0
  783. langflow/frontend/assets/heart-5gd2ViSB.js +6 -0
  784. langflow/frontend/assets/heart-crack-aYzz14B5.js +6 -0
  785. langflow/frontend/assets/heart-handshake-BMKYy31S.js +6 -0
  786. langflow/frontend/assets/heart-minus-AklI9-MR.js +6 -0
  787. langflow/frontend/assets/heart-off-Cf0U8ha5.js +6 -0
  788. langflow/frontend/assets/heart-plus-BKwZH_J0.js +6 -0
  789. langflow/frontend/assets/heart-pulse-_7ddh519.js +6 -0
  790. langflow/frontend/assets/heater-Diw3EYfF.js +6 -0
  791. langflow/frontend/assets/hexagon-BTBf8idD.js +6 -0
  792. langflow/frontend/assets/highlighter-B0YDF2wa.js +6 -0
  793. langflow/frontend/assets/history-BDIXPh9_.js +6 -0
  794. langflow/frontend/assets/hop-CGA6q8Vm.js +6 -0
  795. langflow/frontend/assets/hop-off-CspGh94X.js +6 -0
  796. langflow/frontend/assets/hospital-CkxwUPZX.js +6 -0
  797. langflow/frontend/assets/hotel-DiRHLl0N.js +6 -0
  798. langflow/frontend/assets/hourglass-7QgnnBxF.js +6 -0
  799. langflow/frontend/assets/house-PmIvwCGE.js +6 -0
  800. langflow/frontend/assets/house-plug-D6-CvbzS.js +6 -0
  801. langflow/frontend/assets/house-plus-fnF0Q1S5.js +6 -0
  802. langflow/frontend/assets/house-wifi-D5DbD8CC.js +6 -0
  803. langflow/frontend/assets/ice-cream-bowl-DG7h7X7a.js +6 -0
  804. langflow/frontend/assets/ice-cream-cone-jr_R23US.js +6 -0
  805. langflow/frontend/assets/id-card-Kj7Yhkme.js +6 -0
  806. langflow/frontend/assets/image-CT8Z1KiI.js +6 -0
  807. langflow/frontend/assets/image-down-BXlsHkdJ.js +6 -0
  808. langflow/frontend/assets/image-minus-Dx3wFWFv.js +6 -0
  809. langflow/frontend/assets/image-off-0xSbW3dO.js +6 -0
  810. langflow/frontend/assets/image-play-INW5qgbJ.js +6 -0
  811. langflow/frontend/assets/image-plus-B9upvJbV.js +6 -0
  812. langflow/frontend/assets/image-up-Wgvg5K6c.js +6 -0
  813. langflow/frontend/assets/image-upscale-eBe3IrfA.js +6 -0
  814. langflow/frontend/assets/images-CKmX8_ZE.js +6 -0
  815. langflow/frontend/assets/import-DiSVaG7N.js +6 -0
  816. langflow/frontend/assets/inbox-CdOX8Icw.js +6 -0
  817. langflow/frontend/assets/indent-decrease-C7QHjBRg.js +6 -0
  818. langflow/frontend/assets/indent-increase-Ce0og9UZ.js +6 -0
  819. langflow/frontend/assets/index-2QKfOwQz.js +1 -0
  820. langflow/frontend/assets/index-2uQUhMEj.js +1 -0
  821. langflow/frontend/assets/index-4Mlswa0P.js +1 -0
  822. langflow/frontend/assets/index-B-KzTSjm.js +1 -0
  823. langflow/frontend/assets/index-B0rTFfBY.js +1 -0
  824. langflow/frontend/assets/index-B3BImWpa.js +1 -0
  825. langflow/frontend/assets/index-B3MGOMPg.js +1 -0
  826. langflow/frontend/assets/index-B41GnrGb.js +21 -0
  827. langflow/frontend/assets/index-B61Iucc2.js +1 -0
  828. langflow/frontend/assets/index-B7-I86_o.js +1 -0
  829. langflow/frontend/assets/index-B9tZ1GT6.js +1 -0
  830. langflow/frontend/assets/index-B9ywHEr5.js +381 -0
  831. langflow/frontend/assets/index-BA5Th8o9.js +399 -0
  832. langflow/frontend/assets/index-BAtp7_bt.js +1 -0
  833. langflow/frontend/assets/index-BBsMQR56.js +20 -0
  834. langflow/frontend/assets/index-BEa6tC2W.js +7 -0
  835. langflow/frontend/assets/index-BFItMCuU.js +1 -0
  836. langflow/frontend/assets/index-BFzVY7Nm.js +1 -0
  837. langflow/frontend/assets/index-BIZ_KOfj.js +1 -0
  838. langflow/frontend/assets/index-BJ_urhma.js +1 -0
  839. langflow/frontend/assets/index-BKJwmaxy.js +1 -0
  840. langflow/frontend/assets/index-BMzmXi7X.js +1 -0
  841. langflow/frontend/assets/index-BNh7b_1z.js +1 -0
  842. langflow/frontend/assets/index-BQETpRDP.js +1 -0
  843. langflow/frontend/assets/index-BQU253FX.js +1 -0
  844. langflow/frontend/assets/index-BQm6cH0D.js +1 -0
  845. langflow/frontend/assets/index-BRL6AvWi.js +1 -0
  846. langflow/frontend/assets/index-BRa3jhDA.js +1 -0
  847. langflow/frontend/assets/index-BTKi0LQE.js +1 -0
  848. langflow/frontend/assets/index-BTl_euDg.js +1 -0
  849. langflow/frontend/assets/index-BU6Vg5LE.js +1 -0
  850. langflow/frontend/assets/index-BUY4svgp.js +1 -0
  851. langflow/frontend/assets/index-BVeuK3hL.js +1 -0
  852. langflow/frontend/assets/index-BW6B6HXq.js +1 -0
  853. langflow/frontend/assets/index-BW8s5aZH.js +1 -0
  854. langflow/frontend/assets/index-BXM7wXF_.js +185 -0
  855. langflow/frontend/assets/index-BXs3aDj7.js +1 -0
  856. langflow/frontend/assets/index-B__vQOiE.js +1 -0
  857. langflow/frontend/assets/index-B_gQg1Ia.js +1 -0
  858. langflow/frontend/assets/index-BhgSwFHy.js +1 -0
  859. langflow/frontend/assets/index-BiHOs6w-.js +1 -0
  860. langflow/frontend/assets/index-BjNu8Slh.js +1 -0
  861. langflow/frontend/assets/index-BjVxHGPh.js +1 -0
  862. langflow/frontend/assets/index-BkIxy5hm.js +1 -0
  863. langflow/frontend/assets/index-Bmp8MMKQ.js +1 -0
  864. langflow/frontend/assets/index-BolQxU0J.js +1 -0
  865. langflow/frontend/assets/index-BrukvKtm.js +1 -0
  866. langflow/frontend/assets/index-Buc1fNZf.js +1 -0
  867. langflow/frontend/assets/index-BwLqtGH-.js +1 -0
  868. langflow/frontend/assets/index-BwOvHZia.js +1 -0
  869. langflow/frontend/assets/index-By-Q8tRv.js +1 -0
  870. langflow/frontend/assets/index-BzFZ-RLv.js +1 -0
  871. langflow/frontend/assets/index-BzUZ7LvQ.js +767 -0
  872. langflow/frontend/assets/index-C-LO-qz3.js +1 -0
  873. langflow/frontend/assets/index-C-pqZWxL.js +1 -0
  874. langflow/frontend/assets/index-C28aHVop.js +1 -0
  875. langflow/frontend/assets/index-C29JhKMO.js +1 -0
  876. langflow/frontend/assets/index-C35CcHFW.js +1 -0
  877. langflow/frontend/assets/index-C47EGVaO.js +1 -0
  878. langflow/frontend/assets/index-C5MlvNqt.js +1 -0
  879. langflow/frontend/assets/index-CBkOCjun.js +205 -0
  880. langflow/frontend/assets/index-CD0y3pmC.js +1 -0
  881. langflow/frontend/assets/index-CF5bkPY1.js +1 -0
  882. langflow/frontend/assets/index-CK8XfBh9.js +1 -0
  883. langflow/frontend/assets/index-CKNlB8-x.js +1 -0
  884. langflow/frontend/assets/index-CMoadJdI.js +1 -0
  885. langflow/frontend/assets/index-CNktQBsO.js +1 -0
  886. langflow/frontend/assets/index-CR5len4K.css +1 -0
  887. langflow/frontend/assets/index-CSKTxg0h.js +1 -0
  888. langflow/frontend/assets/index-CVWSTnX7.js +1 -0
  889. langflow/frontend/assets/index-CXgT5tuh.js +1 -0
  890. langflow/frontend/assets/index-CXi-kvMN.js +1 -0
  891. langflow/frontend/assets/index-CYWr1RTE.js +1 -0
  892. langflow/frontend/assets/index-CYsVGGsn.js +1 -0
  893. langflow/frontend/assets/index-C_jiTpRt.js +1 -0
  894. langflow/frontend/assets/index-CajLPh7J.js +1 -0
  895. langflow/frontend/assets/index-Cbswwof2.js +1 -0
  896. langflow/frontend/assets/index-CdGEh5Dd.js +1 -0
  897. langflow/frontend/assets/index-Cg8JGhuO.js +1 -0
  898. langflow/frontend/assets/index-Cgt3Y-Xc.js +1 -0
  899. langflow/frontend/assets/index-ChjP_lcd.js +1 -0
  900. langflow/frontend/assets/index-CjCZfoPa.js +1 -0
  901. langflow/frontend/assets/index-CkP6dNdd.js +1 -0
  902. langflow/frontend/assets/index-CksU1mCy.js +1 -0
  903. langflow/frontend/assets/index-CldV8cHX.js +1 -0
  904. langflow/frontend/assets/index-CmnAXW2M.js +1 -0
  905. langflow/frontend/assets/index-CnTe-ib8.js +1 -0
  906. langflow/frontend/assets/index-CppXkyAI.js +1 -0
  907. langflow/frontend/assets/index-CtlV5QSP.js +1 -0
  908. langflow/frontend/assets/index-Ctz536xU.js +1 -0
  909. langflow/frontend/assets/index-CumvaFGa.js +1 -0
  910. langflow/frontend/assets/index-CwHrfmT4.js +1 -0
  911. langflow/frontend/assets/index-CxThPLLM.js +1 -0
  912. langflow/frontend/assets/index-CygHHaG2.js +1 -0
  913. langflow/frontend/assets/index-D-Xdt1WZ.js +1 -0
  914. langflow/frontend/assets/index-D0rileO3.js +127 -0
  915. langflow/frontend/assets/index-D13KZztq.js +1 -0
  916. langflow/frontend/assets/index-D37V2bzg.js +1 -0
  917. langflow/frontend/assets/index-D3LYZj5R.js +1 -0
  918. langflow/frontend/assets/index-D3PL-v55.js +1 -0
  919. langflow/frontend/assets/index-D3k8ERHA.js +1 -0
  920. langflow/frontend/assets/index-D3xD_Vi3.js +1 -0
  921. langflow/frontend/assets/index-D4KStq-y.js +1 -0
  922. langflow/frontend/assets/index-D6IWUtCW.js +1 -0
  923. langflow/frontend/assets/index-D9EYpYAn.js +1 -0
  924. langflow/frontend/assets/index-D9pRkBVQ.js +1 -0
  925. langflow/frontend/assets/index-DBYJSBIJ.js +108 -0
  926. langflow/frontend/assets/index-DCBcV8DO.js +1 -0
  927. langflow/frontend/assets/index-DGMmz1qB.js +1 -0
  928. langflow/frontend/assets/index-DIIpP9BC.js +1 -0
  929. langflow/frontend/assets/index-DK0SpiSw.js +1 -0
  930. langflow/frontend/assets/index-DKiew9tJ.js +1 -0
  931. langflow/frontend/assets/index-DLiLtnQb.js +1 -0
  932. langflow/frontend/assets/index-DLsjc7AJ.js +1 -0
  933. langflow/frontend/assets/index-DMo7t1c2.js +1 -0
  934. langflow/frontend/assets/index-DNnbYSjo.js +1 -0
  935. langflow/frontend/assets/index-DPXTlNhX.js +1 -0
  936. langflow/frontend/assets/index-DPwI8ASU.js +1 -0
  937. langflow/frontend/assets/index-DR86Lsio.js +1 -0
  938. langflow/frontend/assets/index-DRGpD-Cf.js +1 -0
  939. langflow/frontend/assets/index-DTjOvZoy.js +1 -0
  940. langflow/frontend/assets/index-DUIyyegl.js +1 -0
  941. langflow/frontend/assets/index-DVTTJ573.js +1 -0
  942. langflow/frontend/assets/index-DWD-qFGN.js +1 -0
  943. langflow/frontend/assets/index-DXC9SGLO.js +1 -0
  944. langflow/frontend/assets/index-DXGrBtIm.js +2 -0
  945. langflow/frontend/assets/index-DcthS0OS.js +1 -0
  946. langflow/frontend/assets/index-DeO1TmoJ.js +1 -0
  947. langflow/frontend/assets/index-DfdXqTkC.js +1 -0
  948. langflow/frontend/assets/index-DgEsHHbn.js +1 -0
  949. langflow/frontend/assets/index-DiPdSAb-.js +1 -0
  950. langflow/frontend/assets/index-Dj1_1AVu.js +1 -0
  951. langflow/frontend/assets/index-DjX3Rlg0.js +1 -0
  952. langflow/frontend/assets/index-Dp665wgU.js +1 -0
  953. langflow/frontend/assets/index-DpUVtJBm.js +7321 -0
  954. langflow/frontend/assets/index-DqykhdBR.js +1 -0
  955. langflow/frontend/assets/index-DrCxi3rC.js +1 -0
  956. langflow/frontend/assets/index-DrVyWfLb.js +1 -0
  957. langflow/frontend/assets/index-Ds909mc5.js +1 -0
  958. langflow/frontend/assets/index-DtssSJxD.js +1 -0
  959. langflow/frontend/assets/index-Dunq7Fbc.js +1 -0
  960. langflow/frontend/assets/index-Dv5PD2q_.js +1 -0
  961. langflow/frontend/assets/index-DvbGYJtn.js +1 -0
  962. langflow/frontend/assets/index-Dxa1dBKG.js +1 -0
  963. langflow/frontend/assets/index-DxlRpmOX.js +13 -0
  964. langflow/frontend/assets/index-DyF-bhai.js +1 -0
  965. langflow/frontend/assets/index-DywEJqhX.js +1 -0
  966. langflow/frontend/assets/index-EG_OxGv1.js +1 -0
  967. langflow/frontend/assets/index-EzafEE3l.js +1 -0
  968. langflow/frontend/assets/index-F3rYC31i.js +1 -0
  969. langflow/frontend/assets/index-FSWmLCr-.js +1 -0
  970. langflow/frontend/assets/index-HTtZBzMC.js +1 -0
  971. langflow/frontend/assets/index-In_88aci.js +1 -0
  972. langflow/frontend/assets/index-J48O83cO.js +1 -0
  973. langflow/frontend/assets/index-JHNbfi9f.js +1 -0
  974. langflow/frontend/assets/index-JRpZxXX0.js +1 -0
  975. langflow/frontend/assets/index-Ku1RDlBy.js +1 -0
  976. langflow/frontend/assets/index-LJXUrkrg.js +1 -0
  977. langflow/frontend/assets/index-LfoCLlQg.js +1 -0
  978. langflow/frontend/assets/index-MUTJNp7V.js +1 -0
  979. langflow/frontend/assets/index-OD2aObmN.js +1 -0
  980. langflow/frontend/assets/index-Ocb9xE6f.js +1 -0
  981. langflow/frontend/assets/index-OveD7Elj.js +1 -0
  982. langflow/frontend/assets/index-Q2ERMfmI.js +1 -0
  983. langflow/frontend/assets/index-U8072tZG.js +1 -0
  984. langflow/frontend/assets/index-UYJ_RoEv.js +1 -0
  985. langflow/frontend/assets/index-VQoziAj6.js +1 -0
  986. langflow/frontend/assets/index-XGbXMbq1.js +281 -0
  987. langflow/frontend/assets/index-_LYoMZUZ.js +1 -0
  988. langflow/frontend/assets/index-_RoBlfFQ.js +1 -0
  989. langflow/frontend/assets/index-anR8pASH.js +1 -0
  990. langflow/frontend/assets/index-e_gCJGBV.js +1 -0
  991. langflow/frontend/assets/index-el6qZ4-I.js +1 -0
  992. langflow/frontend/assets/index-exua16zz.js +1 -0
  993. langflow/frontend/assets/index-exxjib9E.js +1 -0
  994. langflow/frontend/assets/index-jJhmhzvv.js +1 -0
  995. langflow/frontend/assets/index-kgyZ5iib.js +1 -0
  996. langflow/frontend/assets/index-mObAeoAH.js +1 -0
  997. langflow/frontend/assets/index-nAPqAw8J.js +1 -0
  998. langflow/frontend/assets/index-pkt4K6Im.js +1 -0
  999. langflow/frontend/assets/index-sjbu-dD7.js +1 -0
  1000. langflow/frontend/assets/index-t9AMFJoS.js +1 -0
  1001. langflow/frontend/assets/index-ukXwm0mA.js +1 -0
  1002. langflow/frontend/assets/index-wID9VtBj.js +495 -0
  1003. langflow/frontend/assets/indian-rupee-dfWATytK.js +6 -0
  1004. langflow/frontend/assets/infinity-CjUe5ivd.js +6 -0
  1005. langflow/frontend/assets/info-B_LE7L7E.js +6 -0
  1006. langflow/frontend/assets/inspection-panel-ZKvlddDX.js +6 -0
  1007. langflow/frontend/assets/instagram-BsiiTwbe.js +6 -0
  1008. langflow/frontend/assets/italic-DuNznHfD.js +6 -0
  1009. langflow/frontend/assets/iteration-ccw-D_X6Ncpd.js +6 -0
  1010. langflow/frontend/assets/iteration-cw-CtI6sO4s.js +6 -0
  1011. langflow/frontend/assets/japanese-yen-CpXpceuO.js +6 -0
  1012. langflow/frontend/assets/joystick-C2Ky6Mbv.js +6 -0
  1013. langflow/frontend/assets/kanban-C9Ycd6s4.js +6 -0
  1014. langflow/frontend/assets/key-DRVIdukA.js +6 -0
  1015. langflow/frontend/assets/key-round-DNOaaSPy.js +6 -0
  1016. langflow/frontend/assets/key-square-DwMHFAtk.js +6 -0
  1017. langflow/frontend/assets/keyboard-C6CFUeHB.js +6 -0
  1018. langflow/frontend/assets/keyboard-music-CKIVnkdm.js +6 -0
  1019. langflow/frontend/assets/keyboard-off-C7O7DrK0.js +6 -0
  1020. langflow/frontend/assets/lamp-B5kXYX3W.js +6 -0
  1021. langflow/frontend/assets/lamp-ceiling-Bc2MBOMS.js +6 -0
  1022. langflow/frontend/assets/lamp-desk-Cj4cV5p0.js +6 -0
  1023. langflow/frontend/assets/lamp-floor-BmWaN3gA.js +6 -0
  1024. langflow/frontend/assets/lamp-wall-down-DptQKLOl.js +6 -0
  1025. langflow/frontend/assets/lamp-wall-up-D--Xk8Uc.js +6 -0
  1026. langflow/frontend/assets/land-plot-BbZVsEO6.js +6 -0
  1027. langflow/frontend/assets/landmark-CcoCKSRy.js +6 -0
  1028. langflow/frontend/assets/languages-DJmiOypY.js +6 -0
  1029. langflow/frontend/assets/laptop-BH2ES5zs.js +6 -0
  1030. langflow/frontend/assets/laptop-minimal-BViwcE0p.js +6 -0
  1031. langflow/frontend/assets/laptop-minimal-check-BGIW2iZy.js +6 -0
  1032. langflow/frontend/assets/lasso-BmP9amC_.js +6 -0
  1033. langflow/frontend/assets/lasso-select-Be4Nr3Hx.js +6 -0
  1034. langflow/frontend/assets/laugh-C_Mx1EnJ.js +6 -0
  1035. langflow/frontend/assets/layers-2-CQ1eeSl_.js +6 -0
  1036. langflow/frontend/assets/layers-Bpl575qt.js +6 -0
  1037. langflow/frontend/assets/layout-dashboard-DzHGzN63.js +6 -0
  1038. langflow/frontend/assets/layout-grid-BJ0cVgDn.js +6 -0
  1039. langflow/frontend/assets/layout-list-2TpTYkoP.js +6 -0
  1040. langflow/frontend/assets/layout-panel-left-NBHLcbEc.js +6 -0
  1041. langflow/frontend/assets/layout-panel-top-C15hIwEQ.js +6 -0
  1042. langflow/frontend/assets/layout-template-C_2m978f.js +6 -0
  1043. langflow/frontend/assets/lazyIconImports-C1Cwzm74.js +2 -0
  1044. langflow/frontend/assets/leaf-C7I-gNqN.js +6 -0
  1045. langflow/frontend/assets/leafy-green-DxfIltJY.js +6 -0
  1046. langflow/frontend/assets/lectern-BWPxyWG5.js +6 -0
  1047. langflow/frontend/assets/letter-text-CojX37RF.js +6 -0
  1048. langflow/frontend/assets/library-_tOxFRdG.js +6 -0
  1049. langflow/frontend/assets/library-big-V_be0egg.js +6 -0
  1050. langflow/frontend/assets/life-buoy-SLaOKPui.js +6 -0
  1051. langflow/frontend/assets/ligature-DI3N5Sgh.js +6 -0
  1052. langflow/frontend/assets/lightbulb-BJ-u5yNj.js +6 -0
  1053. langflow/frontend/assets/lightbulb-off-CYZZK-Ca.js +6 -0
  1054. langflow/frontend/assets/link-2-C2f9vuOw.js +6 -0
  1055. langflow/frontend/assets/link-2-off-Cznc1x59.js +6 -0
  1056. langflow/frontend/assets/link-D8ffI3Bx.js +6 -0
  1057. langflow/frontend/assets/linkedin-Da0zZOYR.js +6 -0
  1058. langflow/frontend/assets/list-Dbxyd6FK.js +6 -0
  1059. langflow/frontend/assets/list-check-BfuWLRhW.js +6 -0
  1060. langflow/frontend/assets/list-checks-5qGsxHLJ.js +6 -0
  1061. langflow/frontend/assets/list-collapse-CtnPbel8.js +6 -0
  1062. langflow/frontend/assets/list-end-DUboME14.js +6 -0
  1063. langflow/frontend/assets/list-filter-CmoSv9ih.js +6 -0
  1064. langflow/frontend/assets/list-filter-plus-DH53x-KE.js +6 -0
  1065. langflow/frontend/assets/list-minus-rsN5dKeL.js +6 -0
  1066. langflow/frontend/assets/list-music-y6LRVp3R.js +6 -0
  1067. langflow/frontend/assets/list-ordered-CFYedrtq.js +6 -0
  1068. langflow/frontend/assets/list-plus-C1kZwFsM.js +6 -0
  1069. langflow/frontend/assets/list-restart-DH7cBD12.js +6 -0
  1070. langflow/frontend/assets/list-start-CjF0LNBk.js +6 -0
  1071. langflow/frontend/assets/list-todo-D6S7Eq2U.js +6 -0
  1072. langflow/frontend/assets/list-tree-BV3Jr4p1.js +6 -0
  1073. langflow/frontend/assets/list-video-DQuDt4_H.js +6 -0
  1074. langflow/frontend/assets/list-x-SyN4p91y.js +6 -0
  1075. langflow/frontend/assets/loader-CW6ghXpM.js +6 -0
  1076. langflow/frontend/assets/loader-circle-BIdiuIo8.js +6 -0
  1077. langflow/frontend/assets/loader-pinwheel-DN59gqDR.js +6 -0
  1078. langflow/frontend/assets/locate-B1rV_Eud.js +6 -0
  1079. langflow/frontend/assets/locate-fixed-mm8d2I_1.js +6 -0
  1080. langflow/frontend/assets/locate-off-DuwOZuVD.js +6 -0
  1081. langflow/frontend/assets/location-edit-BVWsMtc0.js +6 -0
  1082. langflow/frontend/assets/lock-B_mVf9AO.js +6 -0
  1083. langflow/frontend/assets/lock-keyhole-CZBU_htP.js +6 -0
  1084. langflow/frontend/assets/lock-keyhole-open-BmeFZtQo.js +6 -0
  1085. langflow/frontend/assets/lock-open-B9vea4fd.js +6 -0
  1086. langflow/frontend/assets/log-in-Dp5MKXJ6.js +6 -0
  1087. langflow/frontend/assets/log-out-CnwhIFCV.js +6 -0
  1088. langflow/frontend/assets/logs-CutF0a3A.js +6 -0
  1089. langflow/frontend/assets/lollipop-CKVurF-h.js +6 -0
  1090. langflow/frontend/assets/luggage-SGX9v5BA.js +6 -0
  1091. langflow/frontend/assets/magnet-k1e_jfjF.js +6 -0
  1092. langflow/frontend/assets/mail-CpHB9s87.js +6 -0
  1093. langflow/frontend/assets/mail-check-BGq22NGF.js +6 -0
  1094. langflow/frontend/assets/mail-minus-RCkfM2oU.js +6 -0
  1095. langflow/frontend/assets/mail-open-wYro5Hao.js +6 -0
  1096. langflow/frontend/assets/mail-plus-BlMpIq4Y.js +6 -0
  1097. langflow/frontend/assets/mail-question-DARRLllg.js +6 -0
  1098. langflow/frontend/assets/mail-search-BHPgf9Sg.js +6 -0
  1099. langflow/frontend/assets/mail-warning-B8ppePDz.js +6 -0
  1100. langflow/frontend/assets/mail-x-CaFLEt3S.js +6 -0
  1101. langflow/frontend/assets/mailbox-BvqRfE85.js +6 -0
  1102. langflow/frontend/assets/mails-D0K7EC5r.js +6 -0
  1103. langflow/frontend/assets/map-BWe2j5uV.js +6 -0
  1104. langflow/frontend/assets/map-pin-BIIQp1ny.js +6 -0
  1105. langflow/frontend/assets/map-pin-check-DVigOmJy.js +6 -0
  1106. langflow/frontend/assets/map-pin-check-inside-DAW-jmer.js +6 -0
  1107. langflow/frontend/assets/map-pin-house-BjJGaZ_W.js +6 -0
  1108. langflow/frontend/assets/map-pin-minus-inside-NU3kjUaq.js +6 -0
  1109. langflow/frontend/assets/map-pin-minus-qSJvtAyu.js +6 -0
  1110. langflow/frontend/assets/map-pin-off-D_XWqwUL.js +6 -0
  1111. langflow/frontend/assets/map-pin-plus-BvtSdwiT.js +6 -0
  1112. langflow/frontend/assets/map-pin-plus-inside-B8N0JWVa.js +6 -0
  1113. langflow/frontend/assets/map-pin-x-CzkkzM8C.js +6 -0
  1114. langflow/frontend/assets/map-pin-x-inside-Ch3mMXj3.js +6 -0
  1115. langflow/frontend/assets/map-pinned-BFY8xjWv.js +6 -0
  1116. langflow/frontend/assets/map-plus-C7VchZnk.js +6 -0
  1117. langflow/frontend/assets/mars-CeY3O5YK.js +6 -0
  1118. langflow/frontend/assets/mars-stroke-HXdX2iNQ.js +6 -0
  1119. langflow/frontend/assets/martini-Dpn_2_XE.js +6 -0
  1120. langflow/frontend/assets/maximize-2-CsbNYzxf.js +6 -0
  1121. langflow/frontend/assets/maximize-D87I_lS3.js +6 -0
  1122. langflow/frontend/assets/medal-C-rwKc2p.js +6 -0
  1123. langflow/frontend/assets/megaphone-BmitnmNV.js +6 -0
  1124. langflow/frontend/assets/megaphone-off-Dp38EeVm.js +6 -0
  1125. langflow/frontend/assets/meh-Wl2qG9mS.js +6 -0
  1126. langflow/frontend/assets/memory-stick-DjVuofBU.js +6 -0
  1127. langflow/frontend/assets/menu-C_ZnFtke.js +6 -0
  1128. langflow/frontend/assets/merge-CVxYdOU6.js +6 -0
  1129. langflow/frontend/assets/message-circle-BCFKIVaG.js +6 -0
  1130. langflow/frontend/assets/message-circle-code-ByC3xlrm.js +6 -0
  1131. langflow/frontend/assets/message-circle-dashed-BGf6wc2q.js +6 -0
  1132. langflow/frontend/assets/message-circle-heart-CJe2hG5I.js +6 -0
  1133. langflow/frontend/assets/message-circle-more-DlkXYzwc.js +6 -0
  1134. langflow/frontend/assets/message-circle-off-BXNwVK73.js +6 -0
  1135. langflow/frontend/assets/message-circle-plus-BvVDEWER.js +6 -0
  1136. langflow/frontend/assets/message-circle-question-F_PDi40-.js +6 -0
  1137. langflow/frontend/assets/message-circle-reply-DBVvbcYc.js +6 -0
  1138. langflow/frontend/assets/message-circle-warning-C6owxiSU.js +6 -0
  1139. langflow/frontend/assets/message-circle-x-V7F92TlD.js +6 -0
  1140. langflow/frontend/assets/message-square-DXqIv5-T.js +6 -0
  1141. langflow/frontend/assets/message-square-code-Cnybl1gQ.js +6 -0
  1142. langflow/frontend/assets/message-square-dashed-Dyhajt9A.js +6 -0
  1143. langflow/frontend/assets/message-square-diff-DUvtcPyO.js +6 -0
  1144. langflow/frontend/assets/message-square-dot-C_SriCts.js +6 -0
  1145. langflow/frontend/assets/message-square-heart-eWRT_k_U.js +6 -0
  1146. langflow/frontend/assets/message-square-lock-BbEknDit.js +6 -0
  1147. langflow/frontend/assets/message-square-more-BIWp7spD.js +6 -0
  1148. langflow/frontend/assets/message-square-off-AdEUq_kZ.js +6 -0
  1149. langflow/frontend/assets/message-square-plus-CsVRuGMd.js +6 -0
  1150. langflow/frontend/assets/message-square-quote-CLJ-6YBF.js +6 -0
  1151. langflow/frontend/assets/message-square-reply-COdDGZlL.js +6 -0
  1152. langflow/frontend/assets/message-square-share-Babk5o3W.js +6 -0
  1153. langflow/frontend/assets/message-square-text-KEj0QhlY.js +6 -0
  1154. langflow/frontend/assets/message-square-warning-DbMBK25A.js +6 -0
  1155. langflow/frontend/assets/message-square-x-Dlmu05x-.js +6 -0
  1156. langflow/frontend/assets/messages-square-BLHXkvXu.js +6 -0
  1157. langflow/frontend/assets/mic-CkGvjoA6.js +6 -0
  1158. langflow/frontend/assets/mic-off-BF7T6uJG.js +6 -0
  1159. langflow/frontend/assets/mic-vocal-D63-pkbV.js +6 -0
  1160. langflow/frontend/assets/microchip-BdgsWAAt.js +6 -0
  1161. langflow/frontend/assets/microscope-BIZdt6qa.js +6 -0
  1162. langflow/frontend/assets/microwave-ljjNyijf.js +6 -0
  1163. langflow/frontend/assets/milestone-Z7ApTXoY.js +6 -0
  1164. langflow/frontend/assets/milk-C94MudXv.js +6 -0
  1165. langflow/frontend/assets/milk-off-Bks8F3Rh.js +6 -0
  1166. langflow/frontend/assets/minimize-0iR8d_wz.js +6 -0
  1167. langflow/frontend/assets/minimize-2-4bKQDiPS.js +6 -0
  1168. langflow/frontend/assets/monitor-CzM786BJ.js +6 -0
  1169. langflow/frontend/assets/monitor-check-BumJuy9o.js +6 -0
  1170. langflow/frontend/assets/monitor-cog-CCmf8Cx_.js +6 -0
  1171. langflow/frontend/assets/monitor-dot-CppOnLLF.js +6 -0
  1172. langflow/frontend/assets/monitor-down-VT--09JI.js +6 -0
  1173. langflow/frontend/assets/monitor-off-DsGxBfLz.js +6 -0
  1174. langflow/frontend/assets/monitor-pause-lkcsR8rF.js +6 -0
  1175. langflow/frontend/assets/monitor-play-qe460Ine.js +6 -0
  1176. langflow/frontend/assets/monitor-smartphone-z2JHsU8j.js +6 -0
  1177. langflow/frontend/assets/monitor-speaker-BVDiZULG.js +6 -0
  1178. langflow/frontend/assets/monitor-stop-Ds8yehE1.js +6 -0
  1179. langflow/frontend/assets/monitor-up-BlZtuUw9.js +6 -0
  1180. langflow/frontend/assets/monitor-x-JBkUDpDd.js +6 -0
  1181. langflow/frontend/assets/moon-WoYIfO4w.js +6 -0
  1182. langflow/frontend/assets/moon-star-CNHQKOUR.js +6 -0
  1183. langflow/frontend/assets/mountain-D9FRFvIA.js +6 -0
  1184. langflow/frontend/assets/mountain-snow-DVA_gd64.js +6 -0
  1185. langflow/frontend/assets/mouse-867O2vOv.js +6 -0
  1186. langflow/frontend/assets/mouse-off-BawwNju4.js +6 -0
  1187. langflow/frontend/assets/mouse-pointer-2-DLgsfHFL.js +6 -0
  1188. langflow/frontend/assets/mouse-pointer-C7z_bkYM.js +6 -0
  1189. langflow/frontend/assets/mouse-pointer-ban-CQhj6Cwn.js +6 -0
  1190. langflow/frontend/assets/mouse-pointer-click-BxuJ2b0V.js +6 -0
  1191. langflow/frontend/assets/move-3d-dlIqQaWp.js +6 -0
  1192. langflow/frontend/assets/move-B4Ds2cBm.js +6 -0
  1193. langflow/frontend/assets/move-diagonal-2-BHA9O73b.js +6 -0
  1194. langflow/frontend/assets/move-diagonal-D60wM06u.js +6 -0
  1195. langflow/frontend/assets/move-down-Dx-PFKUb.js +6 -0
  1196. langflow/frontend/assets/move-down-left-Bo5FgvGr.js +6 -0
  1197. langflow/frontend/assets/move-down-right-CH_PsfhD.js +6 -0
  1198. langflow/frontend/assets/move-horizontal-DLrS0Kpz.js +6 -0
  1199. langflow/frontend/assets/move-left-oY8FtBG5.js +6 -0
  1200. langflow/frontend/assets/move-right-Cr4sR_bt.js +6 -0
  1201. langflow/frontend/assets/move-up-left-D7oJ2J8_.js +6 -0
  1202. langflow/frontend/assets/move-up-right-CJJYlUX1.js +6 -0
  1203. langflow/frontend/assets/move-up-w5CKBeD9.js +6 -0
  1204. langflow/frontend/assets/move-vertical-BqfrZ7dN.js +6 -0
  1205. langflow/frontend/assets/music-2-_WHrMLLg.js +6 -0
  1206. langflow/frontend/assets/music-3-DJRE06-A.js +6 -0
  1207. langflow/frontend/assets/music-4-BkKWffDU.js +6 -0
  1208. langflow/frontend/assets/music-DeKSHmIS.js +6 -0
  1209. langflow/frontend/assets/navigation-2-BwK7Ko0h.js +6 -0
  1210. langflow/frontend/assets/navigation-2-off-u3MSWrGH.js +6 -0
  1211. langflow/frontend/assets/navigation-BpGnSiAE.js +6 -0
  1212. langflow/frontend/assets/navigation-off-dsN-pPUd.js +6 -0
  1213. langflow/frontend/assets/network-Dq6lJHXU.js +6 -0
  1214. langflow/frontend/assets/newspaper-30MRjhu7.js +6 -0
  1215. langflow/frontend/assets/nfc-C0BJPdwh.js +6 -0
  1216. langflow/frontend/assets/non-binary-CLGP-iiC.js +6 -0
  1217. langflow/frontend/assets/notebook-CgaWNAFz.js +6 -0
  1218. langflow/frontend/assets/notebook-pen-CYm6Ghk1.js +6 -0
  1219. langflow/frontend/assets/notebook-tabs-Bk5eQyL5.js +6 -0
  1220. langflow/frontend/assets/notebook-text-BLkbIk44.js +6 -0
  1221. langflow/frontend/assets/notepad-text-Cjoga3oN.js +6 -0
  1222. langflow/frontend/assets/notepad-text-dashed-C5hD1-Fe.js +6 -0
  1223. langflow/frontend/assets/nut-CYsTlL60.js +6 -0
  1224. langflow/frontend/assets/nut-off-msUVlCzb.js +6 -0
  1225. langflow/frontend/assets/octagon-CM-nuNqQ.js +6 -0
  1226. langflow/frontend/assets/octagon-alert-DXa35bCO.js +6 -0
  1227. langflow/frontend/assets/octagon-minus-JM9PGbZV.js +6 -0
  1228. langflow/frontend/assets/octagon-pause-M0CjOmJu.js +6 -0
  1229. langflow/frontend/assets/octagon-x-E1ygK_P1.js +6 -0
  1230. langflow/frontend/assets/omega-BjqV4fX1.js +6 -0
  1231. langflow/frontend/assets/option-BIcrDVbD.js +6 -0
  1232. langflow/frontend/assets/orbit-BikgSX0-.js +6 -0
  1233. langflow/frontend/assets/origami-BQ5XI6j8.js +6 -0
  1234. langflow/frontend/assets/package-2-XU3yxTGl.js +6 -0
  1235. langflow/frontend/assets/package-4EiKsge0.js +6 -0
  1236. langflow/frontend/assets/package-check-CfdAe0GF.js +6 -0
  1237. langflow/frontend/assets/package-minus-BvKhdHSB.js +6 -0
  1238. langflow/frontend/assets/package-open-CKh_I0fr.js +6 -0
  1239. langflow/frontend/assets/package-plus-DxVNDWFo.js +6 -0
  1240. langflow/frontend/assets/package-search-G8fpx_ZL.js +6 -0
  1241. langflow/frontend/assets/package-x-DTd2nbYB.js +6 -0
  1242. langflow/frontend/assets/paint-bucket-16FRhKgt.js +6 -0
  1243. langflow/frontend/assets/paint-roller-CkA54Lft.js +6 -0
  1244. langflow/frontend/assets/paintbrush-DiQd2006.js +6 -0
  1245. langflow/frontend/assets/paintbrush-vertical-RVs4ZAcf.js +6 -0
  1246. langflow/frontend/assets/palette-63ZAp8jT.js +6 -0
  1247. langflow/frontend/assets/panel-bottom-BRSGITkZ.js +6 -0
  1248. langflow/frontend/assets/panel-bottom-close-BKhC1IPs.js +6 -0
  1249. langflow/frontend/assets/panel-bottom-dashed-DDmIVEyF.js +6 -0
  1250. langflow/frontend/assets/panel-bottom-open-DNB3w9jB.js +6 -0
  1251. langflow/frontend/assets/panel-left-close-2wcAhQC8.js +6 -0
  1252. langflow/frontend/assets/panel-left-dashed-P-yRaAfE.js +6 -0
  1253. langflow/frontend/assets/panel-left-open-C8Z5Ex7t.js +6 -0
  1254. langflow/frontend/assets/panel-right-DhqTAxzZ.js +6 -0
  1255. langflow/frontend/assets/panel-right-close-D-4tz-fa.js +6 -0
  1256. langflow/frontend/assets/panel-right-dashed-oSwbzusJ.js +6 -0
  1257. langflow/frontend/assets/panel-right-open-D3Vfnad1.js +6 -0
  1258. langflow/frontend/assets/panel-top-BiDhuHAU.js +6 -0
  1259. langflow/frontend/assets/panel-top-close-DXTUcegA.js +6 -0
  1260. langflow/frontend/assets/panel-top-dashed-GiUGeBeB.js +6 -0
  1261. langflow/frontend/assets/panel-top-open-6PMe_rzg.js +6 -0
  1262. langflow/frontend/assets/panels-left-bottom-BLaYgiWe.js +6 -0
  1263. langflow/frontend/assets/panels-right-bottom-CAOwjL6I.js +6 -0
  1264. langflow/frontend/assets/panels-top-left-C7JFKzm4.js +6 -0
  1265. langflow/frontend/assets/paperclip-C2jDvuaB.js +6 -0
  1266. langflow/frontend/assets/parentheses-DpyyMTil.js +6 -0
  1267. langflow/frontend/assets/parking-meter-Br1Avhl7.js +6 -0
  1268. langflow/frontend/assets/party-popper-ml82k9Oh.js +6 -0
  1269. langflow/frontend/assets/pause-CNE8dZxo.js +6 -0
  1270. langflow/frontend/assets/paw-print-f_-GBH01.js +6 -0
  1271. langflow/frontend/assets/pc-case-Chy1tZyO.js +6 -0
  1272. langflow/frontend/assets/pen-CWOC_G5w.js +6 -0
  1273. langflow/frontend/assets/pen-line-CbSvGV_f.js +6 -0
  1274. langflow/frontend/assets/pen-off-CRlhISzF.js +6 -0
  1275. langflow/frontend/assets/pen-tool-BCBDxitS.js +6 -0
  1276. langflow/frontend/assets/pencil-lCJvvWYR.js +6 -0
  1277. langflow/frontend/assets/pencil-line-DuQsld7D.js +6 -0
  1278. langflow/frontend/assets/pencil-off-D9SAANhb.js +6 -0
  1279. langflow/frontend/assets/pencil-ruler-BZ7rwkjR.js +6 -0
  1280. langflow/frontend/assets/pentagon-CMdRJpyU.js +6 -0
  1281. langflow/frontend/assets/percent-DUcp_Hu-.js +6 -0
  1282. langflow/frontend/assets/person-standing-Ur3pkyWF.js +6 -0
  1283. langflow/frontend/assets/philippine-peso-DYnLi4za.js +6 -0
  1284. langflow/frontend/assets/phone-DU0nN01j.js +6 -0
  1285. langflow/frontend/assets/phone-call-CpzfUvCS.js +6 -0
  1286. langflow/frontend/assets/phone-forwarded-BhIeiw1L.js +6 -0
  1287. langflow/frontend/assets/phone-incoming--bMxOKL_.js +6 -0
  1288. langflow/frontend/assets/phone-missed-CLZnCkx0.js +6 -0
  1289. langflow/frontend/assets/phone-off-D2N1--DK.js +6 -0
  1290. langflow/frontend/assets/phone-outgoing-BttSf1Mf.js +6 -0
  1291. langflow/frontend/assets/pi-0ZqHUNvQ.js +6 -0
  1292. langflow/frontend/assets/piano-O0okyq-q.js +6 -0
  1293. langflow/frontend/assets/pickaxe-BBq80IDk.js +6 -0
  1294. langflow/frontend/assets/picture-in-picture-2-BRD22oaq.js +6 -0
  1295. langflow/frontend/assets/picture-in-picture-aMu6X4he.js +6 -0
  1296. langflow/frontend/assets/piggy-bank-Ba5KpW-R.js +6 -0
  1297. langflow/frontend/assets/pilcrow-jO5PkN9u.js +6 -0
  1298. langflow/frontend/assets/pilcrow-left-DIbvdJ4q.js +6 -0
  1299. langflow/frontend/assets/pilcrow-right-Cn9D7hDF.js +6 -0
  1300. langflow/frontend/assets/pill-D-42rIOW.js +6 -0
  1301. langflow/frontend/assets/pill-bottle-DsJKKNcA.js +6 -0
  1302. langflow/frontend/assets/pin-DfAVbRNJ.js +6 -0
  1303. langflow/frontend/assets/pin-off-CJNWcHaA.js +6 -0
  1304. langflow/frontend/assets/pipette-B7tJT2kJ.js +6 -0
  1305. langflow/frontend/assets/pizza-CnrmNK8m.js +6 -0
  1306. langflow/frontend/assets/plane-Dn27nhFg.js +6 -0
  1307. langflow/frontend/assets/plane-landing-D0PYnEJh.js +6 -0
  1308. langflow/frontend/assets/plane-takeoff-C9ORUKgO.js +6 -0
  1309. langflow/frontend/assets/play-fRIv90Vb.js +6 -0
  1310. langflow/frontend/assets/plug-2-D8fXOKQU.js +6 -0
  1311. langflow/frontend/assets/plug-i5tCOxoY.js +6 -0
  1312. langflow/frontend/assets/plug-zap-DUkZjazY.js +6 -0
  1313. langflow/frontend/assets/pocket-Baxk-icN.js +6 -0
  1314. langflow/frontend/assets/pocket-knife-vflNgCDB.js +6 -0
  1315. langflow/frontend/assets/podcast-CGBp0he6.js +6 -0
  1316. langflow/frontend/assets/pointer-BAlqPHUA.js +6 -0
  1317. langflow/frontend/assets/pointer-off-Dr4nsB_n.js +6 -0
  1318. langflow/frontend/assets/popcorn-CkYbqF6n.js +6 -0
  1319. langflow/frontend/assets/popsicle-DQx7XFEX.js +6 -0
  1320. langflow/frontend/assets/pound-sterling-D-7ovrEl.js +6 -0
  1321. langflow/frontend/assets/power-CjdszFge.js +6 -0
  1322. langflow/frontend/assets/power-off-DXTNJRDM.js +6 -0
  1323. langflow/frontend/assets/presentation-BUFQUUad.js +6 -0
  1324. langflow/frontend/assets/printer-DlXrt59N.js +6 -0
  1325. langflow/frontend/assets/printer-check-CNpp-7a2.js +6 -0
  1326. langflow/frontend/assets/projector-CejJOabJ.js +6 -0
  1327. langflow/frontend/assets/proportions-DhzsgWUR.js +6 -0
  1328. langflow/frontend/assets/puzzle-CIUZmh73.js +6 -0
  1329. langflow/frontend/assets/pyramid-B1EU302T.js +6 -0
  1330. langflow/frontend/assets/qr-code-B3ueAf2a.js +6 -0
  1331. langflow/frontend/assets/quote-DnSAw5GA.js +6 -0
  1332. langflow/frontend/assets/rabbit-D_w405-3.js +6 -0
  1333. langflow/frontend/assets/radar-mMKrjXiq.js +6 -0
  1334. langflow/frontend/assets/radiation-BKZhrAsf.js +6 -0
  1335. langflow/frontend/assets/radical-DiyXLgcs.js +6 -0
  1336. langflow/frontend/assets/radio-FZqpRcOY.js +6 -0
  1337. langflow/frontend/assets/radio-receiver-DoqS8xe3.js +6 -0
  1338. langflow/frontend/assets/radio-tower-DzcmNTOD.js +6 -0
  1339. langflow/frontend/assets/radius-WO6Uuofn.js +6 -0
  1340. langflow/frontend/assets/rail-symbol-Blp5Z6mm.js +6 -0
  1341. langflow/frontend/assets/rainbow-BcpREq76.js +6 -0
  1342. langflow/frontend/assets/rat-C_6nvO9X.js +6 -0
  1343. langflow/frontend/assets/ratio-B2vtZEP1.js +6 -0
  1344. langflow/frontend/assets/receipt-WM0uZGH2.js +6 -0
  1345. langflow/frontend/assets/receipt-cent-BsFZulIa.js +6 -0
  1346. langflow/frontend/assets/receipt-euro-JyQiZVY6.js +6 -0
  1347. langflow/frontend/assets/receipt-indian-rupee-fTOVSpHz.js +6 -0
  1348. langflow/frontend/assets/receipt-japanese-yen-D8DfDeDK.js +6 -0
  1349. langflow/frontend/assets/receipt-pound-sterling-DaKscCMf.js +6 -0
  1350. langflow/frontend/assets/receipt-russian-ruble-Buf0_3Kt.js +6 -0
  1351. langflow/frontend/assets/receipt-swiss-franc-Bem-z2ls.js +6 -0
  1352. langflow/frontend/assets/receipt-text-Bwc10qHQ.js +6 -0
  1353. langflow/frontend/assets/rectangle-ellipsis-CeJcpjOB.js +6 -0
  1354. langflow/frontend/assets/rectangle-goggles-DOshY7hS.js +6 -0
  1355. langflow/frontend/assets/rectangle-horizontal-BkYka3pL.js +6 -0
  1356. langflow/frontend/assets/rectangle-vertical-DzlIazB7.js +6 -0
  1357. langflow/frontend/assets/recycle-BYgswKLN.js +6 -0
  1358. langflow/frontend/assets/redo-2-BZ3Hs4ln.js +6 -0
  1359. langflow/frontend/assets/redo-BU2dMbQ2.js +6 -0
  1360. langflow/frontend/assets/redo-dot-BZUxEEyF.js +6 -0
  1361. langflow/frontend/assets/refresh-ccw-dot-Cz65nUFZ.js +6 -0
  1362. langflow/frontend/assets/refresh-ccw-mpgTt4cp.js +6 -0
  1363. langflow/frontend/assets/refresh-cw-ACMLi-4b.js +6 -0
  1364. langflow/frontend/assets/refresh-cw-off-BrGN63Qm.js +6 -0
  1365. langflow/frontend/assets/refrigerator-BFChB889.js +6 -0
  1366. langflow/frontend/assets/regex-C8kDLEV-.js +6 -0
  1367. langflow/frontend/assets/remove-formatting-4xIOGsHV.js +6 -0
  1368. langflow/frontend/assets/repeat-1-C5gQ8b_d.js +6 -0
  1369. langflow/frontend/assets/repeat-2-YlU_Z8sF.js +6 -0
  1370. langflow/frontend/assets/repeat-BYHb23Jr.js +6 -0
  1371. langflow/frontend/assets/replace-DrXxrUoA.js +6 -0
  1372. langflow/frontend/assets/replace-all-_qSvipH9.js +6 -0
  1373. langflow/frontend/assets/reply-D3kS0lZA.js +6 -0
  1374. langflow/frontend/assets/reply-all-C9Q_Q7RN.js +6 -0
  1375. langflow/frontend/assets/rewind-C6LCP7LR.js +6 -0
  1376. langflow/frontend/assets/ribbon-8h1u3qoT.js +6 -0
  1377. langflow/frontend/assets/rocket-6Gkkhs52.js +6 -0
  1378. langflow/frontend/assets/rocking-chair-Ds11M0kh.js +6 -0
  1379. langflow/frontend/assets/roller-coaster-B1FJdn_M.js +6 -0
  1380. langflow/frontend/assets/rotate-3d-BMruZsY9.js +6 -0
  1381. langflow/frontend/assets/rotate-ccw-DXeuJ4SS.js +6 -0
  1382. langflow/frontend/assets/rotate-ccw-key-D8tWaFpf.js +6 -0
  1383. langflow/frontend/assets/rotate-ccw-square-DqcG1yyF.js +6 -0
  1384. langflow/frontend/assets/rotate-cw-JxVkjAiv.js +6 -0
  1385. langflow/frontend/assets/rotate-cw-square-DIFQHpgn.js +6 -0
  1386. langflow/frontend/assets/route-CyvYbs4s.js +6 -0
  1387. langflow/frontend/assets/route-off-DaW9NN2P.js +6 -0
  1388. langflow/frontend/assets/router-Dj4Gk-iP.js +6 -0
  1389. langflow/frontend/assets/rows-2-Bz25-LGn.js +6 -0
  1390. langflow/frontend/assets/rows-3-BjF2fk8b.js +6 -0
  1391. langflow/frontend/assets/rows-4-CdbGj4cO.js +6 -0
  1392. langflow/frontend/assets/rss-BqrD36sY.js +6 -0
  1393. langflow/frontend/assets/ruler-DDUQN13b.js +6 -0
  1394. langflow/frontend/assets/ruler-dimension-line-B7pClM0L.js +6 -0
  1395. langflow/frontend/assets/russian-ruble-B8-eH9Vh.js +6 -0
  1396. langflow/frontend/assets/sailboat-BNh0r77k.js +6 -0
  1397. langflow/frontend/assets/salad-DYdtRABF.js +6 -0
  1398. langflow/frontend/assets/sandwich-BM6ZxGik.js +6 -0
  1399. langflow/frontend/assets/satellite-bn5mBvGZ.js +6 -0
  1400. langflow/frontend/assets/satellite-dish-CInF6yLC.js +6 -0
  1401. langflow/frontend/assets/saudi-riyal-DXjre3xO.js +6 -0
  1402. langflow/frontend/assets/save-CnwN2YAE.js +6 -0
  1403. langflow/frontend/assets/save-all-Drrj35Ia.js +6 -0
  1404. langflow/frontend/assets/save-off-M8ohigKB.js +6 -0
  1405. langflow/frontend/assets/scale-3d-CaKlEBy5.js +6 -0
  1406. langflow/frontend/assets/scale-Cu8-QWt2.js +6 -0
  1407. langflow/frontend/assets/scaling-BoA8uGVv.js +6 -0
  1408. langflow/frontend/assets/scan-C_H_s3YU.js +6 -0
  1409. langflow/frontend/assets/scan-barcode-CrdT66Ss.js +6 -0
  1410. langflow/frontend/assets/scan-eye-DVxu5yMg.js +6 -0
  1411. langflow/frontend/assets/scan-face-C-BbOdW7.js +6 -0
  1412. langflow/frontend/assets/scan-heart-BDP49vL1.js +6 -0
  1413. langflow/frontend/assets/scan-line-CvXcAKFz.js +6 -0
  1414. langflow/frontend/assets/scan-qr-code-CGmOxmjp.js +6 -0
  1415. langflow/frontend/assets/scan-search-lVHucfuL.js +6 -0
  1416. langflow/frontend/assets/scan-text-BWlFO81f.js +6 -0
  1417. langflow/frontend/assets/school-DIrnM4NK.js +6 -0
  1418. langflow/frontend/assets/scissors-D_tqn99a.js +6 -0
  1419. langflow/frontend/assets/scissors-line-dashed-BmzyE8L6.js +6 -0
  1420. langflow/frontend/assets/screen-share-QrqusLrN.js +6 -0
  1421. langflow/frontend/assets/screen-share-off-CChuEPW1.js +6 -0
  1422. langflow/frontend/assets/scroll-CJKwovV_.js +6 -0
  1423. langflow/frontend/assets/scroll-text-DrBBLd5M.js +6 -0
  1424. langflow/frontend/assets/search-check-pd5Z-lqD.js +6 -0
  1425. langflow/frontend/assets/search-code-Dv1aBkEZ.js +6 -0
  1426. langflow/frontend/assets/search-slash-C7hA1-is.js +6 -0
  1427. langflow/frontend/assets/search-x-BBxtqy3_.js +6 -0
  1428. langflow/frontend/assets/section-BQnHgm0Z.js +6 -0
  1429. langflow/frontend/assets/send-Bic93nFl.js +6 -0
  1430. langflow/frontend/assets/send-horizontal-Djz0F2nb.js +6 -0
  1431. langflow/frontend/assets/send-to-back-Du3rjlDy.js +6 -0
  1432. langflow/frontend/assets/separator-horizontal-DK0ZpL2Q.js +6 -0
  1433. langflow/frontend/assets/separator-vertical-Zxsg5S5s.js +6 -0
  1434. langflow/frontend/assets/server-cog-DgcA3tg2.js +6 -0
  1435. langflow/frontend/assets/server-crash-Lc5DjUjZ.js +6 -0
  1436. langflow/frontend/assets/server-cxBG8tpy.js +6 -0
  1437. langflow/frontend/assets/server-off-C1-ZzWKv.js +6 -0
  1438. langflow/frontend/assets/settings-2-BZ95YTfB.js +6 -0
  1439. langflow/frontend/assets/settings-DbTdPIpg.js +6 -0
  1440. langflow/frontend/assets/shapes-DhvVOUty.js +6 -0
  1441. langflow/frontend/assets/share-2-CgsPoN9M.js +6 -0
  1442. langflow/frontend/assets/share-BMMVZ7rL.js +6 -0
  1443. langflow/frontend/assets/sheet-DoAFHBc2.js +6 -0
  1444. langflow/frontend/assets/shell-DVTOAKsK.js +6 -0
  1445. langflow/frontend/assets/shield-CdOo33h6.js +6 -0
  1446. langflow/frontend/assets/shield-alert-DBjHf6ln.js +6 -0
  1447. langflow/frontend/assets/shield-ban-iaGkidPw.js +6 -0
  1448. langflow/frontend/assets/shield-check-BcYNKKvn.js +6 -0
  1449. langflow/frontend/assets/shield-ellipsis-CeuabAd1.js +6 -0
  1450. langflow/frontend/assets/shield-half-DslM6pvI.js +6 -0
  1451. langflow/frontend/assets/shield-minus-5D5bC80R.js +6 -0
  1452. langflow/frontend/assets/shield-off-Bs6Dw1oj.js +6 -0
  1453. langflow/frontend/assets/shield-plus-BYTPSZ_j.js +6 -0
  1454. langflow/frontend/assets/shield-question-8di04eB9.js +6 -0
  1455. langflow/frontend/assets/shield-user-BjZpNWs-.js +6 -0
  1456. langflow/frontend/assets/shield-x-DtMjrAR6.js +6 -0
  1457. langflow/frontend/assets/ship-B1FS-0wt.js +6 -0
  1458. langflow/frontend/assets/ship-wheel-CWwqGxuS.js +6 -0
  1459. langflow/frontend/assets/shirt-DDY_cBLI.js +6 -0
  1460. langflow/frontend/assets/shopping-bag-C8yUBVA3.js +6 -0
  1461. langflow/frontend/assets/shopping-basket-DuQiTq_R.js +6 -0
  1462. langflow/frontend/assets/shopping-cart-DXQDHvOm.js +6 -0
  1463. langflow/frontend/assets/shovel-BX6j4P4r.js +6 -0
  1464. langflow/frontend/assets/shower-head-CnHgENtR.js +6 -0
  1465. langflow/frontend/assets/shredder-CNaGhMYw.js +6 -0
  1466. langflow/frontend/assets/shrimp-BKwZUqsk.js +6 -0
  1467. langflow/frontend/assets/shrink-DtBGdGCI.js +6 -0
  1468. langflow/frontend/assets/shrub-BHoEVOKE.js +6 -0
  1469. langflow/frontend/assets/shuffle-ewdvGbAy.js +6 -0
  1470. langflow/frontend/assets/sigma-KzfEfHDJ.js +6 -0
  1471. langflow/frontend/assets/signal-Cty6boDC.js +6 -0
  1472. langflow/frontend/assets/signal-high-o0UeLOaX.js +6 -0
  1473. langflow/frontend/assets/signal-low-BlXUWkId.js +6 -0
  1474. langflow/frontend/assets/signal-medium-Cb-EZQHK.js +6 -0
  1475. langflow/frontend/assets/signal-zero-WgiDibfW.js +6 -0
  1476. langflow/frontend/assets/signature-D6cLBZaG.js +6 -0
  1477. langflow/frontend/assets/signpost-DCNWRGGD.js +6 -0
  1478. langflow/frontend/assets/signpost-big-BRAZrCYB.js +6 -0
  1479. langflow/frontend/assets/siren-CmgQp-ZJ.js +6 -0
  1480. langflow/frontend/assets/skip-back-BiBdMTVG.js +6 -0
  1481. langflow/frontend/assets/skip-forward-DnMYJ9X6.js +6 -0
  1482. langflow/frontend/assets/skull-CvtoSbMr.js +6 -0
  1483. langflow/frontend/assets/slack-C_8L2fXg.js +6 -0
  1484. langflow/frontend/assets/slash-BuhBmsx0.js +6 -0
  1485. langflow/frontend/assets/slice-C33iA43B.js +6 -0
  1486. langflow/frontend/assets/sliders-horizontal-DzuvDOHu.js +6 -0
  1487. langflow/frontend/assets/sliders-vertical-DswThdIG.js +6 -0
  1488. langflow/frontend/assets/smartphone-DLfmh6zg.js +6 -0
  1489. langflow/frontend/assets/smartphone-charging-DM5gpvRw.js +6 -0
  1490. langflow/frontend/assets/smartphone-nfc-4FHMN64h.js +6 -0
  1491. langflow/frontend/assets/smile-DfMqFt_h.js +6 -0
  1492. langflow/frontend/assets/smile-plus-vdR01AAo.js +6 -0
  1493. langflow/frontend/assets/snail-BSe4rGOt.js +6 -0
  1494. langflow/frontend/assets/snowflake-jjr9o6Xt.js +6 -0
  1495. langflow/frontend/assets/sofa-CSdha_xf.js +6 -0
  1496. langflow/frontend/assets/soup-DZaUMUi7.js +6 -0
  1497. langflow/frontend/assets/space-CtU_wGsw.js +6 -0
  1498. langflow/frontend/assets/spade-D6c1SnhI.js +6 -0
  1499. langflow/frontend/assets/sparkle-D4Y-hgf0.js +6 -0
  1500. langflow/frontend/assets/sparkles-D6LCSr3Q.js +6 -0
  1501. langflow/frontend/assets/speaker-cIby5NbL.js +6 -0
  1502. langflow/frontend/assets/speech-BcZoNsRO.js +6 -0
  1503. langflow/frontend/assets/spell-check-2-gCrGa94o.js +6 -0
  1504. langflow/frontend/assets/spell-check-C4VH_2Qb.js +6 -0
  1505. langflow/frontend/assets/spline-30bTTImI.js +6 -0
  1506. langflow/frontend/assets/spline-pointer-cKwSQ01W.js +6 -0
  1507. langflow/frontend/assets/split-CNrHGI-P.js +6 -0
  1508. langflow/frontend/assets/spray-can-MY8gc3Gg.js +6 -0
  1509. langflow/frontend/assets/sprout-CTMnmXTl.js +6 -0
  1510. langflow/frontend/assets/square-DAYnpPeo.js +6 -0
  1511. langflow/frontend/assets/square-activity-BkP8wsck.js +6 -0
  1512. langflow/frontend/assets/square-arrow-down-left-BJCokILI.js +6 -0
  1513. langflow/frontend/assets/square-arrow-down-right-D21bwU3d.js +6 -0
  1514. langflow/frontend/assets/square-arrow-down-wjq_PHOs.js +6 -0
  1515. langflow/frontend/assets/square-arrow-left-ffOKr4VO.js +6 -0
  1516. langflow/frontend/assets/square-arrow-out-down-left-BezNJDBn.js +6 -0
  1517. langflow/frontend/assets/square-arrow-out-down-right-BPuETIWj.js +6 -0
  1518. langflow/frontend/assets/square-arrow-out-up-left-DLD7WE_w.js +6 -0
  1519. langflow/frontend/assets/square-arrow-out-up-right-DA0PM5tU.js +6 -0
  1520. langflow/frontend/assets/square-arrow-right-B4b1_-rA.js +6 -0
  1521. langflow/frontend/assets/square-arrow-up-D1JuObvy.js +6 -0
  1522. langflow/frontend/assets/square-arrow-up-left-C4rWW6J5.js +6 -0
  1523. langflow/frontend/assets/square-arrow-up-right-BccXA4Y9.js +6 -0
  1524. langflow/frontend/assets/square-asterisk-CrzQn13y.js +6 -0
  1525. langflow/frontend/assets/square-bottom-dashed-scissors-DnW0XK0f.js +6 -0
  1526. langflow/frontend/assets/square-chart-gantt-C8R1N8RH.js +6 -0
  1527. langflow/frontend/assets/square-check-D4l21ciO.js +6 -0
  1528. langflow/frontend/assets/square-check-big-DjzIbmzH.js +6 -0
  1529. langflow/frontend/assets/square-chevron-down-BPkxVX0b.js +6 -0
  1530. langflow/frontend/assets/square-chevron-left-ExTGsTLo.js +6 -0
  1531. langflow/frontend/assets/square-chevron-right-BBaghHnR.js +6 -0
  1532. langflow/frontend/assets/square-chevron-up-DkVUGfLD.js +6 -0
  1533. langflow/frontend/assets/square-code-CQFZqV73.js +6 -0
  1534. langflow/frontend/assets/square-dashed-D_wWm-82.js +6 -0
  1535. langflow/frontend/assets/square-dashed-bottom-Bqr8MwXl.js +6 -0
  1536. langflow/frontend/assets/square-dashed-bottom-code-Bjjim6HD.js +6 -0
  1537. langflow/frontend/assets/square-dashed-kanban-CCab8Xca.js +6 -0
  1538. langflow/frontend/assets/square-dashed-mouse-pointer-BxGXrsme.js +6 -0
  1539. langflow/frontend/assets/square-divide-CKI-Up8y.js +6 -0
  1540. langflow/frontend/assets/square-dot-DgcJzw1Q.js +6 -0
  1541. langflow/frontend/assets/square-equal-CSDXQXyV.js +6 -0
  1542. langflow/frontend/assets/square-function-D6lS9fXm.js +6 -0
  1543. langflow/frontend/assets/square-kanban-D1wJC8dg.js +6 -0
  1544. langflow/frontend/assets/square-library-oxh7GiX_.js +6 -0
  1545. langflow/frontend/assets/square-m-D3E68E4o.js +6 -0
  1546. langflow/frontend/assets/square-menu-DkvQRppR.js +6 -0
  1547. langflow/frontend/assets/square-minus-D3EZtgoZ.js +6 -0
  1548. langflow/frontend/assets/square-mouse-pointer-Djj-JU4h.js +6 -0
  1549. langflow/frontend/assets/square-parking-D9m5K58Z.js +6 -0
  1550. langflow/frontend/assets/square-parking-off-Br2o87Vn.js +6 -0
  1551. langflow/frontend/assets/square-pen-54_TzMVB.js +6 -0
  1552. langflow/frontend/assets/square-percent-Pi7Do-mI.js +6 -0
  1553. langflow/frontend/assets/square-pi-d8AE2n6O.js +6 -0
  1554. langflow/frontend/assets/square-pilcrow-CHkd54Ay.js +6 -0
  1555. langflow/frontend/assets/square-play-C7NhfVmU.js +6 -0
  1556. langflow/frontend/assets/square-plus-7W1vqpS2.js +6 -0
  1557. langflow/frontend/assets/square-power-d73kfd02.js +6 -0
  1558. langflow/frontend/assets/square-radical-B_WKpw6e.js +6 -0
  1559. langflow/frontend/assets/square-round-corner-Bt24eSa-.js +6 -0
  1560. langflow/frontend/assets/square-scissors-BPBlO8tj.js +6 -0
  1561. langflow/frontend/assets/square-sigma-B408Hcot.js +6 -0
  1562. langflow/frontend/assets/square-slash-oyzWpALk.js +6 -0
  1563. langflow/frontend/assets/square-split-horizontal-BwcBVle3.js +6 -0
  1564. langflow/frontend/assets/square-split-vertical-D1ATm8h5.js +6 -0
  1565. langflow/frontend/assets/square-square-Y0bNlAeu.js +6 -0
  1566. langflow/frontend/assets/square-stack-DIcbRSYB.js +6 -0
  1567. langflow/frontend/assets/square-terminal-DNbwvTum.js +6 -0
  1568. langflow/frontend/assets/square-user-C6j9Cm_b.js +6 -0
  1569. langflow/frontend/assets/square-user-round-CGV7arDL.js +6 -0
  1570. langflow/frontend/assets/square-x-BSlFsooC.js +6 -0
  1571. langflow/frontend/assets/squares-exclude-BWlUU_LN.js +6 -0
  1572. langflow/frontend/assets/squares-intersect-DC96-VnH.js +6 -0
  1573. langflow/frontend/assets/squares-subtract-V_tzjsIa.js +6 -0
  1574. langflow/frontend/assets/squares-unite-DDAWTUUz.js +6 -0
  1575. langflow/frontend/assets/squircle-CWI8bpGs.js +6 -0
  1576. langflow/frontend/assets/squirrel-DexGqqHj.js +6 -0
  1577. langflow/frontend/assets/stamp-Da9eG7P8.js +6 -0
  1578. langflow/frontend/assets/star-CjU7PovP.js +6 -0
  1579. langflow/frontend/assets/star-half-BEdJF7rh.js +6 -0
  1580. langflow/frontend/assets/star-off-DEHoRhIC.js +6 -0
  1581. langflow/frontend/assets/step-back-BGv8ki_W.js +6 -0
  1582. langflow/frontend/assets/step-forward-CXeF6y97.js +6 -0
  1583. langflow/frontend/assets/stethoscope-B_z5mVjV.js +6 -0
  1584. langflow/frontend/assets/sticker-R-n9lbNf.js +6 -0
  1585. langflow/frontend/assets/sticky-note-at6ea9az.js +6 -0
  1586. langflow/frontend/assets/store-DnHo-Dvu.js +6 -0
  1587. langflow/frontend/assets/stretch-horizontal-zg63Pwn2.js +6 -0
  1588. langflow/frontend/assets/stretch-vertical-CB9Cr8wu.js +6 -0
  1589. langflow/frontend/assets/strikethrough-B3J3AT-j.js +6 -0
  1590. langflow/frontend/assets/subscript-wOCgwyoJ.js +6 -0
  1591. langflow/frontend/assets/sun-1UeCQOnL.js +6 -0
  1592. langflow/frontend/assets/sun-dim-B0YsfXD6.js +6 -0
  1593. langflow/frontend/assets/sun-medium-CUw1fOHy.js +6 -0
  1594. langflow/frontend/assets/sun-moon-BkXUm2zc.js +6 -0
  1595. langflow/frontend/assets/sun-snow-AD_NFDlL.js +6 -0
  1596. langflow/frontend/assets/sunrise-DrRDOJnx.js +6 -0
  1597. langflow/frontend/assets/sunset-BmTyIBYG.js +6 -0
  1598. langflow/frontend/assets/superscript-DAkv6GWV.js +6 -0
  1599. langflow/frontend/assets/swatch-book-PuFO7fNf.js +6 -0
  1600. langflow/frontend/assets/swiss-franc-CvCwlH-1.js +6 -0
  1601. langflow/frontend/assets/switch-camera-CVKjOYy0.js +6 -0
  1602. langflow/frontend/assets/sword-Dl4xK_Hg.js +6 -0
  1603. langflow/frontend/assets/swords-B2bEsoTz.js +6 -0
  1604. langflow/frontend/assets/syringe-CWwiBNw1.js +6 -0
  1605. langflow/frontend/assets/table-2-5Ub1Hp1X.js +6 -0
  1606. langflow/frontend/assets/table-cQlSPuPD.js +6 -0
  1607. langflow/frontend/assets/table-cells-merge-5Lwptgjx.js +6 -0
  1608. langflow/frontend/assets/table-cells-split-D5HaR7Ur.js +6 -0
  1609. langflow/frontend/assets/table-columns-split-Br2xOFx-.js +6 -0
  1610. langflow/frontend/assets/table-of-contents-J33-4h_p.js +6 -0
  1611. langflow/frontend/assets/table-properties-lG9kds2q.js +6 -0
  1612. langflow/frontend/assets/table-rows-split-NcY8df44.js +6 -0
  1613. langflow/frontend/assets/tablet-bAWYk7ZU.js +6 -0
  1614. langflow/frontend/assets/tablet-smartphone-CFUKE6kR.js +6 -0
  1615. langflow/frontend/assets/tablets-P6mDX7J9.js +6 -0
  1616. langflow/frontend/assets/tag-CQdskkfZ.js +6 -0
  1617. langflow/frontend/assets/tags-BxGGU895.js +6 -0
  1618. langflow/frontend/assets/tally-1-SqGUi5E_.js +6 -0
  1619. langflow/frontend/assets/tally-2-DeYyaYLG.js +6 -0
  1620. langflow/frontend/assets/tally-3-CaXs59HO.js +6 -0
  1621. langflow/frontend/assets/tally-4-CmBeVOUP.js +6 -0
  1622. langflow/frontend/assets/tally-5-Cp6xqAlX.js +6 -0
  1623. langflow/frontend/assets/tangent-Bu8LuRAW.js +6 -0
  1624. langflow/frontend/assets/target-CatpZfLc.js +6 -0
  1625. langflow/frontend/assets/telescope-BPZqaaPb.js +6 -0
  1626. langflow/frontend/assets/tent-qOuOFpz4.js +6 -0
  1627. langflow/frontend/assets/tent-tree-DmiIwVgi.js +6 -0
  1628. langflow/frontend/assets/terminal-BYbGvjDK.js +6 -0
  1629. langflow/frontend/assets/test-tube-D_FhTaaq.js +6 -0
  1630. langflow/frontend/assets/test-tube-diagonal-CCU3bG1X.js +6 -0
  1631. langflow/frontend/assets/test-tubes-DukEK2vU.js +6 -0
  1632. langflow/frontend/assets/text-CwwKm1R0.js +6 -0
  1633. langflow/frontend/assets/text-cursor-BimJjGf3.js +6 -0
  1634. langflow/frontend/assets/text-cursor-input-B_kXpYRl.js +6 -0
  1635. langflow/frontend/assets/text-quote-CBAkQ8QD.js +6 -0
  1636. langflow/frontend/assets/text-search-B7Sl0pKm.js +6 -0
  1637. langflow/frontend/assets/text-select-DjpMY6Y4.js +6 -0
  1638. langflow/frontend/assets/theater-Bo3HTTbl.js +6 -0
  1639. langflow/frontend/assets/thermometer-Bu6gSpo-.js +6 -0
  1640. langflow/frontend/assets/thermometer-snowflake-hm8pKZNQ.js +6 -0
  1641. langflow/frontend/assets/thermometer-sun-DP-3bkYe.js +6 -0
  1642. langflow/frontend/assets/thumbs-down-BN2xuLtF.js +6 -0
  1643. langflow/frontend/assets/thumbs-up-CvtaTShj.js +6 -0
  1644. langflow/frontend/assets/ticket-B8jfAFNy.js +6 -0
  1645. langflow/frontend/assets/ticket-check-MV1S9SUz.js +6 -0
  1646. langflow/frontend/assets/ticket-minus-D9NRuCuh.js +6 -0
  1647. langflow/frontend/assets/ticket-percent-Cx11tpWt.js +6 -0
  1648. langflow/frontend/assets/ticket-plus-B4SeZsFv.js +6 -0
  1649. langflow/frontend/assets/ticket-slash-DmFj6_tZ.js +6 -0
  1650. langflow/frontend/assets/ticket-x-BV_YZPkD.js +6 -0
  1651. langflow/frontend/assets/tickets-BuIASBDi.js +6 -0
  1652. langflow/frontend/assets/tickets-plane-BVCZthgO.js +6 -0
  1653. langflow/frontend/assets/timer-5MEGKA2T.js +6 -0
  1654. langflow/frontend/assets/timer-off-C-i8-CA1.js +6 -0
  1655. langflow/frontend/assets/timer-reset-DN9eZBRg.js +6 -0
  1656. langflow/frontend/assets/toggle-left-BCOe-Uk4.js +6 -0
  1657. langflow/frontend/assets/toggle-right-ersa9_T2.js +6 -0
  1658. langflow/frontend/assets/toilet-DpxVM3Ui.js +6 -0
  1659. langflow/frontend/assets/tornado-JM7DbumL.js +6 -0
  1660. langflow/frontend/assets/torus-Bei_YR1p.js +6 -0
  1661. langflow/frontend/assets/touchpad-CXUqWqt1.js +6 -0
  1662. langflow/frontend/assets/touchpad-off-DyO9VlXZ.js +6 -0
  1663. langflow/frontend/assets/tower-control-BKAIg-Wk.js +6 -0
  1664. langflow/frontend/assets/toy-brick-DcGrcKQp.js +6 -0
  1665. langflow/frontend/assets/tractor-B2dLboVj.js +6 -0
  1666. langflow/frontend/assets/traffic-cone-BEvlA0ug.js +6 -0
  1667. langflow/frontend/assets/train-front-CxEtDqw-.js +6 -0
  1668. langflow/frontend/assets/train-front-tunnel-6851wkpJ.js +6 -0
  1669. langflow/frontend/assets/train-track-Cgy3PJec.js +6 -0
  1670. langflow/frontend/assets/tram-front-C5eL4T0U.js +6 -0
  1671. langflow/frontend/assets/transgender-W81LXVG9.js +6 -0
  1672. langflow/frontend/assets/trash-C-jmCiLI.js +6 -0
  1673. langflow/frontend/assets/tree-deciduous-DYmfvFfP.js +6 -0
  1674. langflow/frontend/assets/tree-palm-Bv1YDrxR.js +6 -0
  1675. langflow/frontend/assets/tree-pine-F7CHJhUF.js +6 -0
  1676. langflow/frontend/assets/trees-CQI05VGt.js +6 -0
  1677. langflow/frontend/assets/trello-D1yKllL-.js +6 -0
  1678. langflow/frontend/assets/trending-down-7BR48si1.js +6 -0
  1679. langflow/frontend/assets/trending-up-DxGJGJI4.js +6 -0
  1680. langflow/frontend/assets/trending-up-down-Bv-0EkEM.js +6 -0
  1681. langflow/frontend/assets/triangle-CqL0BuIo.js +6 -0
  1682. langflow/frontend/assets/triangle-alert-BurSbX0E.js +6 -0
  1683. langflow/frontend/assets/triangle-dashed-D0AlVMT4.js +6 -0
  1684. langflow/frontend/assets/triangle-right-Cjlm7XfT.js +6 -0
  1685. langflow/frontend/assets/trophy-DlqrTI3t.js +6 -0
  1686. langflow/frontend/assets/truck-Be0AHBIn.js +6 -0
  1687. langflow/frontend/assets/truck-electric-CTzzAU12.js +6 -0
  1688. langflow/frontend/assets/turtle-CwgcW4BG.js +6 -0
  1689. langflow/frontend/assets/tv-Cvkiuwa4.js +6 -0
  1690. langflow/frontend/assets/tv-minimal-BKMMXObd.js +6 -0
  1691. langflow/frontend/assets/tv-minimal-play-C2zC8Mf7.js +6 -0
  1692. langflow/frontend/assets/twitch-BaNtc3ms.js +6 -0
  1693. langflow/frontend/assets/twitter-D8cJDYlb.js +6 -0
  1694. langflow/frontend/assets/type-B6-SVmrS.js +6 -0
  1695. langflow/frontend/assets/type-outline-DF201kHQ.js +6 -0
  1696. langflow/frontend/assets/umbrella-CUjrRZLn.js +6 -0
  1697. langflow/frontend/assets/umbrella-off-DUIvDGWF.js +6 -0
  1698. langflow/frontend/assets/underline-BZYW7kZe.js +6 -0
  1699. langflow/frontend/assets/undo-2-_LSGuM6A.js +6 -0
  1700. langflow/frontend/assets/undo-D0ua0irY.js +6 -0
  1701. langflow/frontend/assets/undo-dot-DHpoiELc.js +6 -0
  1702. langflow/frontend/assets/unfold-horizontal-Baz2NDym.js +6 -0
  1703. langflow/frontend/assets/unfold-vertical-B5z_zoi2.js +6 -0
  1704. langflow/frontend/assets/ungroup-Byf-HoMq.js +6 -0
  1705. langflow/frontend/assets/university-BfeHsa2H.js +6 -0
  1706. langflow/frontend/assets/unlink-2-Bf6hkBxc.js +6 -0
  1707. langflow/frontend/assets/unlink-PTIP9C1t.js +6 -0
  1708. langflow/frontend/assets/unplug-dq9vW1e5.js +6 -0
  1709. langflow/frontend/assets/upload-ClL_xcHX.js +6 -0
  1710. langflow/frontend/assets/usb-CMQz5Bbx.js +6 -0
  1711. langflow/frontend/assets/use-post-add-user-CijdM3CW.js +1 -0
  1712. langflow/frontend/assets/user-CJbOlfYO.js +6 -0
  1713. langflow/frontend/assets/user-check-D2TJIdbC.js +6 -0
  1714. langflow/frontend/assets/user-cog-xgFL0Fjx.js +6 -0
  1715. langflow/frontend/assets/user-lock-4Ccl2f31.js +6 -0
  1716. langflow/frontend/assets/user-minus-3-XA_v8O.js +6 -0
  1717. langflow/frontend/assets/user-pen-B6_m96L5.js +6 -0
  1718. langflow/frontend/assets/user-plus-DcRRk4IL.js +6 -0
  1719. langflow/frontend/assets/user-round-B4Dz_J0y.js +6 -0
  1720. langflow/frontend/assets/user-round-check-BuqG6Tln.js +6 -0
  1721. langflow/frontend/assets/user-round-cog-CkomKcE0.js +6 -0
  1722. langflow/frontend/assets/user-round-minus-BOY_xYco.js +6 -0
  1723. langflow/frontend/assets/user-round-pen-QbRIGglu.js +6 -0
  1724. langflow/frontend/assets/user-round-plus-BC1vyhU-.js +6 -0
  1725. langflow/frontend/assets/user-round-search-CDMrfpLU.js +6 -0
  1726. langflow/frontend/assets/user-round-x-B3E2RJ6I.js +6 -0
  1727. langflow/frontend/assets/user-search-DF_KLVhe.js +6 -0
  1728. langflow/frontend/assets/user-x-DgFDuuYq.js +6 -0
  1729. langflow/frontend/assets/users-C9tV3bcv.js +6 -0
  1730. langflow/frontend/assets/users-round-m5S3NT8N.js +6 -0
  1731. langflow/frontend/assets/utensils-CNMxOrnM.js +6 -0
  1732. langflow/frontend/assets/utensils-crossed-CWsvzFyf.js +6 -0
  1733. langflow/frontend/assets/utility-pole-PSm7b5qq.js +6 -0
  1734. langflow/frontend/assets/variable-Dosn3l0Q.js +6 -0
  1735. langflow/frontend/assets/vault-DJCdrDkA.js +6 -0
  1736. langflow/frontend/assets/vegan-BzI5fdli.js +6 -0
  1737. langflow/frontend/assets/venetian-mask-DhNCjf4N.js +6 -0
  1738. langflow/frontend/assets/venus-Dz-DpZXp.js +6 -0
  1739. langflow/frontend/assets/venus-and-mars-Bl6thHIW.js +6 -0
  1740. langflow/frontend/assets/vibrate-BtFaim1I.js +6 -0
  1741. langflow/frontend/assets/vibrate-off-CrxEKLLu.js +6 -0
  1742. langflow/frontend/assets/video-CskvLdG0.js +6 -0
  1743. langflow/frontend/assets/video-off-BLD65TIj.js +6 -0
  1744. langflow/frontend/assets/videotape-CFtB6Y7N.js +6 -0
  1745. langflow/frontend/assets/view-vJgBVvc1.js +6 -0
  1746. langflow/frontend/assets/voicemail-BLTEEoA_.js +6 -0
  1747. langflow/frontend/assets/volleyball-CmsNUAQG.js +6 -0
  1748. langflow/frontend/assets/volume-1-GNgUvREd.js +6 -0
  1749. langflow/frontend/assets/volume-2--ZL1-glW.js +6 -0
  1750. langflow/frontend/assets/volume-Cb0M2vA7.js +6 -0
  1751. langflow/frontend/assets/volume-off-B0WaOdRU.js +6 -0
  1752. langflow/frontend/assets/volume-x-N8PIRYGP.js +6 -0
  1753. langflow/frontend/assets/vote-BybNJmTk.js +6 -0
  1754. langflow/frontend/assets/wallet--kGpRM2_.js +6 -0
  1755. langflow/frontend/assets/wallet-cards-DlB31LM8.js +6 -0
  1756. langflow/frontend/assets/wallet-minimal-Bi8ZraZE.js +6 -0
  1757. langflow/frontend/assets/wallpaper-DtDpeCXF.js +6 -0
  1758. langflow/frontend/assets/wand-DCe0uAlf.js +6 -0
  1759. langflow/frontend/assets/wand-sparkles-3r2BJJrS.js +6 -0
  1760. langflow/frontend/assets/warehouse-BKHflVjD.js +6 -0
  1761. langflow/frontend/assets/washing-machine-DX7eBIvZ.js +6 -0
  1762. langflow/frontend/assets/watch-DtXtjDr9.js +6 -0
  1763. langflow/frontend/assets/waves-CiYh0DqU.js +6 -0
  1764. langflow/frontend/assets/waves-ladder-Yzo4x2dv.js +6 -0
  1765. langflow/frontend/assets/waypoints-Be0aFt5U.js +6 -0
  1766. langflow/frontend/assets/webcam-BrDmzAmL.js +6 -0
  1767. langflow/frontend/assets/webhook-DJlX-3N-.js +6 -0
  1768. langflow/frontend/assets/webhook-off-B7Eotjfb.js +6 -0
  1769. langflow/frontend/assets/weight-DEkTHimE.js +6 -0
  1770. langflow/frontend/assets/wheat-BinBJSa-.js +6 -0
  1771. langflow/frontend/assets/wheat-off-DOI2qhbr.js +6 -0
  1772. langflow/frontend/assets/whole-word-DoiXEyAQ.js +6 -0
  1773. langflow/frontend/assets/wifi-C5iLP1z0.js +6 -0
  1774. langflow/frontend/assets/wifi-high-WCT9uviK.js +6 -0
  1775. langflow/frontend/assets/wifi-low-bhDZjYYt.js +6 -0
  1776. langflow/frontend/assets/wifi-off-DybtTHDv.js +6 -0
  1777. langflow/frontend/assets/wifi-pen-YZxtC-1t.js +6 -0
  1778. langflow/frontend/assets/wifi-zero-Ck1ckTXM.js +6 -0
  1779. langflow/frontend/assets/wind-DpU4CZZc.js +6 -0
  1780. langflow/frontend/assets/wind-arrow-down-CF-PTBQL.js +6 -0
  1781. langflow/frontend/assets/wine-DZzgE7cg.js +6 -0
  1782. langflow/frontend/assets/wine-off-CKFsTdqQ.js +6 -0
  1783. langflow/frontend/assets/workflow-B9ICwfQ9.js +6 -0
  1784. langflow/frontend/assets/worm-B9DE2nB9.js +6 -0
  1785. langflow/frontend/assets/wrap-text-GILhD4dN.js +6 -0
  1786. langflow/frontend/assets/wrench-BVYdz0EV.js +6 -0
  1787. langflow/frontend/assets/youtube-6WX8K7Zb.js +6 -0
  1788. langflow/frontend/assets/zap-BZEXKDc5.js +6 -0
  1789. langflow/frontend/assets/zap-off-B4uFrIUs.js +6 -0
  1790. langflow/frontend/assets/zoom-in-CWEynbHp.js +6 -0
  1791. langflow/frontend/assets/zoom-out-3VosI-6u.js +6 -0
  1792. langflow/frontend/index.html +2 -2
  1793. langflow/helpers/flow.py +121 -2
  1794. langflow/helpers/user.py +2 -2
  1795. langflow/initial_setup/constants.py +3 -0
  1796. langflow/initial_setup/setup.py +185 -9
  1797. langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +4 -4
  1798. langflow/initial_setup/starter_projects/Basic Prompting.json +4 -4
  1799. langflow/initial_setup/starter_projects/Blog Writer.json +8 -8
  1800. langflow/initial_setup/starter_projects/Custom Component Generator.json +6 -6
  1801. langflow/initial_setup/starter_projects/Document Q&A.json +26 -6
  1802. langflow/initial_setup/starter_projects/Financial Report Parser.json +9 -9
  1803. langflow/initial_setup/starter_projects/Hybrid Search RAG.json +13 -13
  1804. langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +7 -7
  1805. langflow/initial_setup/starter_projects/Instagram Copywriter.json +7 -7
  1806. langflow/initial_setup/starter_projects/Invoice Summarizer.json +5 -5
  1807. langflow/initial_setup/starter_projects/Knowledge Ingestion.json +4 -4
  1808. langflow/initial_setup/starter_projects/Knowledge Retrieval.json +5 -5
  1809. langflow/initial_setup/starter_projects/Market Research.json +10 -10
  1810. langflow/initial_setup/starter_projects/Meeting Summary.json +10 -10
  1811. langflow/initial_setup/starter_projects/Memory Chatbot.json +6 -6
  1812. langflow/initial_setup/starter_projects/News Aggregator.json +26 -7
  1813. langflow/initial_setup/starter_projects/Nvidia Remix.json +56 -10
  1814. langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +7 -7
  1815. langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +29 -9
  1816. langflow/initial_setup/starter_projects/Price Deal Finder.json +5 -5
  1817. langflow/initial_setup/starter_projects/Research Agent.json +5 -5
  1818. langflow/initial_setup/starter_projects/Research Translation Loop.json +15 -12
  1819. langflow/initial_setup/starter_projects/SEO Keyword Generator.json +2 -2
  1820. langflow/initial_setup/starter_projects/SaaS Pricing.json +5 -5
  1821. langflow/initial_setup/starter_projects/Search agent.json +5 -5
  1822. langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +10 -10
  1823. langflow/initial_setup/starter_projects/Simple Agent.json +9 -9
  1824. langflow/initial_setup/starter_projects/Social Media Agent.json +11 -11
  1825. langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +26 -6
  1826. langflow/initial_setup/starter_projects/Travel Planning Agents.json +9 -9
  1827. langflow/initial_setup/starter_projects/Twitter Thread Generator.json +16 -16
  1828. langflow/initial_setup/starter_projects/Vector Store RAG.json +32 -12
  1829. langflow/initial_setup/starter_projects/Youtube Analysis.json +7 -7
  1830. langflow/logging/logger.py +32 -1
  1831. langflow/main.py +43 -4
  1832. langflow/memory.py +19 -9
  1833. langflow/services/auth/utils.py +5 -4
  1834. langflow/services/database/models/api_key/crud.py +6 -17
  1835. langflow/services/database/models/flow/model.py +1 -0
  1836. langflow/services/database/models/folder/utils.py +1 -2
  1837. langflow/services/database/models/message/crud.py +1 -1
  1838. langflow/services/database/models/user/crud.py +1 -2
  1839. langflow/services/database/service.py +50 -22
  1840. langflow/services/deps.py +6 -33
  1841. langflow/services/flow/flow_runner.py +1 -2
  1842. langflow/services/storage/__init__.py +5 -0
  1843. langflow/services/storage/local.py +109 -36
  1844. langflow/services/storage/s3.py +278 -57
  1845. langflow/services/storage/service.py +6 -3
  1846. langflow/services/task/temp_flow_cleanup.py +0 -2
  1847. langflow/services/utils.py +4 -8
  1848. langflow/services/variable/service.py +29 -6
  1849. langflow_base_nightly-1.7.0.dev23.dist-info/METADATA +99 -0
  1850. langflow_base_nightly-1.7.0.dev23.dist-info/RECORD +2277 -0
  1851. langflow_base_nightly-1.7.0.dev23.dist-info/WHEEL +4 -0
  1852. langflow/frontend/assets/SlackIcon-B-gyvo2E.js +0 -1
  1853. langflow/frontend/assets/Wikipedia-H72rY-P1.js +0 -1
  1854. langflow/frontend/assets/Wolfram-DVRyccu7.js +0 -1
  1855. langflow/frontend/assets/a-arrow-down-C80zHIM-.js +0 -6
  1856. langflow/frontend/assets/a-arrow-up-DJnxFXkh.js +0 -6
  1857. langflow/frontend/assets/a-large-small-DVL8PJfd.js +0 -6
  1858. langflow/frontend/assets/accessibility-B-d2mmeG.js +0 -6
  1859. langflow/frontend/assets/activity-DtTigHDK.js +0 -6
  1860. langflow/frontend/assets/air-vent-UbjegBN3.js +0 -6
  1861. langflow/frontend/assets/airplay-CXo3T6qw.js +0 -6
  1862. langflow/frontend/assets/alarm-clock-CD0FDJiP.js +0 -6
  1863. langflow/frontend/assets/alarm-clock-check-CjzNAqSY.js +0 -6
  1864. langflow/frontend/assets/alarm-clock-minus-xXJeLvoU.js +0 -6
  1865. langflow/frontend/assets/alarm-clock-off-BdrKAMYT.js +0 -6
  1866. langflow/frontend/assets/alarm-clock-plus-BXH5i5xX.js +0 -6
  1867. langflow/frontend/assets/alarm-smoke-BbC7_G7A.js +0 -6
  1868. langflow/frontend/assets/album-Ba81TnxJ.js +0 -6
  1869. langflow/frontend/assets/align-center-MzsrmL3h.js +0 -6
  1870. langflow/frontend/assets/align-center-horizontal-CQwUcc8W.js +0 -6
  1871. langflow/frontend/assets/align-center-vertical-BNG48cNF.js +0 -6
  1872. langflow/frontend/assets/align-end-horizontal-CqxDoXW_.js +0 -6
  1873. langflow/frontend/assets/align-end-vertical-DKNJu2ei.js +0 -6
  1874. langflow/frontend/assets/align-horizontal-distribute-center-DbePs937.js +0 -6
  1875. langflow/frontend/assets/align-horizontal-distribute-end-CsyRZmhR.js +0 -6
  1876. langflow/frontend/assets/align-horizontal-distribute-start-D6Jp55bO.js +0 -6
  1877. langflow/frontend/assets/align-horizontal-justify-center-DbdFQ_Ip.js +0 -6
  1878. langflow/frontend/assets/align-horizontal-justify-end-DdBJ8zqO.js +0 -6
  1879. langflow/frontend/assets/align-horizontal-justify-start-DZQ2r6Ow.js +0 -6
  1880. langflow/frontend/assets/align-horizontal-space-around-DgzrsMZc.js +0 -6
  1881. langflow/frontend/assets/align-horizontal-space-between-CLBL55BD.js +0 -6
  1882. langflow/frontend/assets/align-justify-DpWoJztS.js +0 -6
  1883. langflow/frontend/assets/align-left-DFbZJvYK.js +0 -6
  1884. langflow/frontend/assets/align-right-BFalF16w.js +0 -6
  1885. langflow/frontend/assets/align-start-horizontal-BA7QNeNo.js +0 -6
  1886. langflow/frontend/assets/align-start-vertical-BGTgOXwX.js +0 -6
  1887. langflow/frontend/assets/align-vertical-distribute-center-BOCZFhX2.js +0 -6
  1888. langflow/frontend/assets/align-vertical-distribute-end-ErQrswmy.js +0 -6
  1889. langflow/frontend/assets/align-vertical-distribute-start-4UM-1aMc.js +0 -6
  1890. langflow/frontend/assets/align-vertical-justify-center-CppNr31K.js +0 -6
  1891. langflow/frontend/assets/align-vertical-justify-end-B8O2B_CJ.js +0 -6
  1892. langflow/frontend/assets/align-vertical-justify-start-ubU70bKL.js +0 -6
  1893. langflow/frontend/assets/align-vertical-space-around-DaDWYcNi.js +0 -6
  1894. langflow/frontend/assets/align-vertical-space-between-DlSi--TQ.js +0 -6
  1895. langflow/frontend/assets/ambulance-Dw5QX02c.js +0 -6
  1896. langflow/frontend/assets/ampersand-BCzBrExO.js +0 -6
  1897. langflow/frontend/assets/ampersands-Ck-AOQ5c.js +0 -6
  1898. langflow/frontend/assets/amphora-Dd7TrJmI.js +0 -6
  1899. langflow/frontend/assets/anchor-CKaluzK5.js +0 -6
  1900. langflow/frontend/assets/angry-Kte6tOGE.js +0 -6
  1901. langflow/frontend/assets/annoyed-CGalgrWt.js +0 -6
  1902. langflow/frontend/assets/antenna-Dmgn8tss.js +0 -6
  1903. langflow/frontend/assets/anvil-nwM_K4u1.js +0 -6
  1904. langflow/frontend/assets/aperture-crH3APOH.js +0 -6
  1905. langflow/frontend/assets/app-window-DdN84M_0.js +0 -6
  1906. langflow/frontend/assets/app-window-mac-BdfFPb34.js +0 -6
  1907. langflow/frontend/assets/apple-CbFxfCTC.js +0 -6
  1908. langflow/frontend/assets/archive-E-nuLay1.js +0 -6
  1909. langflow/frontend/assets/archive-restore-BS8wLRzU.js +0 -6
  1910. langflow/frontend/assets/archive-x-DoVrXdPs.js +0 -6
  1911. langflow/frontend/assets/armchair-BAMdraR8.js +0 -6
  1912. langflow/frontend/assets/arrow-big-down-DOmGwW-V.js +0 -6
  1913. langflow/frontend/assets/arrow-big-down-dash-DMiAQsJ_.js +0 -6
  1914. langflow/frontend/assets/arrow-big-left-DEzlrc1D.js +0 -6
  1915. langflow/frontend/assets/arrow-big-left-dash-D9s4HAN1.js +0 -6
  1916. langflow/frontend/assets/arrow-big-right-B15_eAC3.js +0 -6
  1917. langflow/frontend/assets/arrow-big-right-dash-DVi_5Agj.js +0 -6
  1918. langflow/frontend/assets/arrow-big-up-dash-BpiMfwV9.js +0 -6
  1919. langflow/frontend/assets/arrow-big-up-tDHmPdxO.js +0 -6
  1920. langflow/frontend/assets/arrow-down-0-1-FSuufGxT.js +0 -6
  1921. langflow/frontend/assets/arrow-down-1-0-CTTCxukO.js +0 -6
  1922. langflow/frontend/assets/arrow-down-DnMDJsga.js +0 -6
  1923. langflow/frontend/assets/arrow-down-a-z-Dbe0l5kG.js +0 -6
  1924. langflow/frontend/assets/arrow-down-from-line-BbhYzVMj.js +0 -6
  1925. langflow/frontend/assets/arrow-down-left-CfRGZGgv.js +0 -6
  1926. langflow/frontend/assets/arrow-down-narrow-wide-DCRNY2qQ.js +0 -6
  1927. langflow/frontend/assets/arrow-down-right-CjfPCYVL.js +0 -6
  1928. langflow/frontend/assets/arrow-down-to-dot-BFgTvDkI.js +0 -6
  1929. langflow/frontend/assets/arrow-down-to-line-B6TPkTfV.js +0 -6
  1930. langflow/frontend/assets/arrow-down-up-iy2D_H8p.js +0 -6
  1931. langflow/frontend/assets/arrow-down-wide-narrow-Co5wCEGb.js +0 -6
  1932. langflow/frontend/assets/arrow-down-z-a-D-KYKTK2.js +0 -6
  1933. langflow/frontend/assets/arrow-left-C_Ycg1gJ.js +0 -6
  1934. langflow/frontend/assets/arrow-left-from-line-BqrPJHaL.js +0 -6
  1935. langflow/frontend/assets/arrow-left-right-BET3msfq.js +0 -6
  1936. langflow/frontend/assets/arrow-left-to-line-CMA0mJdT.js +0 -6
  1937. langflow/frontend/assets/arrow-right-CfGtxCcA.js +0 -6
  1938. langflow/frontend/assets/arrow-right-from-line-C-xVz84i.js +0 -6
  1939. langflow/frontend/assets/arrow-right-left-DPJtG81t.js +0 -6
  1940. langflow/frontend/assets/arrow-right-to-line-Cqgm-KfL.js +0 -6
  1941. langflow/frontend/assets/arrow-up-0-1-DvbFk80b.js +0 -6
  1942. langflow/frontend/assets/arrow-up-1-0-BfYZdcGY.js +0 -6
  1943. langflow/frontend/assets/arrow-up-RBqhrkSU.js +0 -6
  1944. langflow/frontend/assets/arrow-up-a-z-BQ64TuN6.js +0 -6
  1945. langflow/frontend/assets/arrow-up-down-QmdBMxOD.js +0 -6
  1946. langflow/frontend/assets/arrow-up-from-dot-CxK0OJ4B.js +0 -6
  1947. langflow/frontend/assets/arrow-up-from-line-3gJtorAQ.js +0 -6
  1948. langflow/frontend/assets/arrow-up-left-B_BQZwB8.js +0 -6
  1949. langflow/frontend/assets/arrow-up-narrow-wide-BSDXLoI-.js +0 -6
  1950. langflow/frontend/assets/arrow-up-right-DCBT_dI_.js +0 -6
  1951. langflow/frontend/assets/arrow-up-to-line-Cmk84QTO.js +0 -6
  1952. langflow/frontend/assets/arrow-up-wide-narrow-G2fgnF8S.js +0 -6
  1953. langflow/frontend/assets/arrow-up-z-a-DV2L43IJ.js +0 -6
  1954. langflow/frontend/assets/arrows-up-from-line-DVcnLTGt.js +0 -6
  1955. langflow/frontend/assets/asterisk-BNDgLpmu.js +0 -6
  1956. langflow/frontend/assets/at-sign-B0dPOGQd.js +0 -6
  1957. langflow/frontend/assets/atom-YTT02zxn.js +0 -6
  1958. langflow/frontend/assets/audio-lines-DT5gikkn.js +0 -6
  1959. langflow/frontend/assets/audio-waveform-BBEhtpMh.js +0 -6
  1960. langflow/frontend/assets/award-Bgu7XQOu.js +0 -6
  1961. langflow/frontend/assets/axe-D4AceKNA.js +0 -6
  1962. langflow/frontend/assets/axis-3d-Ct5Jg6Nz.js +0 -6
  1963. langflow/frontend/assets/baby-C9jQCfYE.js +0 -6
  1964. langflow/frontend/assets/backpack-BC-PdObQ.js +0 -6
  1965. langflow/frontend/assets/badge-BI_8JJP-.js +0 -6
  1966. langflow/frontend/assets/badge-alert-r59SKXLf.js +0 -6
  1967. langflow/frontend/assets/badge-cent-BySVaPbj.js +0 -6
  1968. langflow/frontend/assets/badge-check-BiueOsfg.js +0 -6
  1969. langflow/frontend/assets/badge-dollar-sign-DQqCYFzR.js +0 -6
  1970. langflow/frontend/assets/badge-euro-Dx0KbcW2.js +0 -6
  1971. langflow/frontend/assets/badge-help-DrbXE_Xb.js +0 -6
  1972. langflow/frontend/assets/badge-indian-rupee-EyNpVEHN.js +0 -6
  1973. langflow/frontend/assets/badge-info-LbceqYmu.js +0 -6
  1974. langflow/frontend/assets/badge-japanese-yen-DErgKgbl.js +0 -6
  1975. langflow/frontend/assets/badge-minus-CUPoJUGt.js +0 -6
  1976. langflow/frontend/assets/badge-percent-C11CrJkQ.js +0 -6
  1977. langflow/frontend/assets/badge-plus-BTs0t2f8.js +0 -6
  1978. langflow/frontend/assets/badge-pound-sterling-CfCol_6-.js +0 -6
  1979. langflow/frontend/assets/badge-russian-ruble-B0jcRUkh.js +0 -6
  1980. langflow/frontend/assets/badge-swiss-franc-N4bUztKY.js +0 -6
  1981. langflow/frontend/assets/badge-x-Cs2JzMNm.js +0 -6
  1982. langflow/frontend/assets/baggage-claim-On8X7zN0.js +0 -6
  1983. langflow/frontend/assets/ban-DExqrrrm.js +0 -6
  1984. langflow/frontend/assets/banana-hrdxFau9.js +0 -6
  1985. langflow/frontend/assets/bandage-IXTcZOZ5.js +0 -6
  1986. langflow/frontend/assets/banknote-BfR37g4N.js +0 -6
  1987. langflow/frontend/assets/banknote-arrow-down-DJIiP3sf.js +0 -6
  1988. langflow/frontend/assets/banknote-arrow-up-BuqtCK6V.js +0 -6
  1989. langflow/frontend/assets/banknote-x-Dnt-GAs2.js +0 -6
  1990. langflow/frontend/assets/barcode-qx5UVDSx.js +0 -6
  1991. langflow/frontend/assets/baseline-DP2S2FKw.js +0 -6
  1992. langflow/frontend/assets/bath-B5_MnrCL.js +0 -6
  1993. langflow/frontend/assets/battery-BwceCqv1.js +0 -6
  1994. langflow/frontend/assets/battery-charging-TVPnPYSM.js +0 -6
  1995. langflow/frontend/assets/battery-full-Bf8F3xxs.js +0 -6
  1996. langflow/frontend/assets/battery-low-CyIvnpzo.js +0 -6
  1997. langflow/frontend/assets/battery-medium-DzH_yJSB.js +0 -6
  1998. langflow/frontend/assets/battery-plus-BsaD2JDU.js +0 -6
  1999. langflow/frontend/assets/battery-warning-CjQZguc1.js +0 -6
  2000. langflow/frontend/assets/beaker-DBzeimTj.js +0 -6
  2001. langflow/frontend/assets/bean-ZAPXnORd.js +0 -6
  2002. langflow/frontend/assets/bean-off-BBKywPyk.js +0 -6
  2003. langflow/frontend/assets/bed-UoUw_jA5.js +0 -6
  2004. langflow/frontend/assets/bed-double-BjXc-06x.js +0 -6
  2005. langflow/frontend/assets/bed-single-BycCndCk.js +0 -6
  2006. langflow/frontend/assets/beef-EmZ2w9Ql.js +0 -6
  2007. langflow/frontend/assets/beer-CT2cf3EJ.js +0 -6
  2008. langflow/frontend/assets/beer-off-BAHMwZF5.js +0 -6
  2009. langflow/frontend/assets/bell-CvvJZcZG.js +0 -6
  2010. langflow/frontend/assets/bell-dot-B0r6EWxx.js +0 -6
  2011. langflow/frontend/assets/bell-electric-xUqR8FBC.js +0 -6
  2012. langflow/frontend/assets/bell-minus-Blwe8NpF.js +0 -6
  2013. langflow/frontend/assets/bell-off-eX1ib_KP.js +0 -6
  2014. langflow/frontend/assets/bell-plus-DuL_9ZVA.js +0 -6
  2015. langflow/frontend/assets/bell-ring-B5AfBFvf.js +0 -6
  2016. langflow/frontend/assets/between-horizontal-end-muQ3InFn.js +0 -6
  2017. langflow/frontend/assets/between-horizontal-start-BDHs63o0.js +0 -6
  2018. langflow/frontend/assets/between-vertical-end-BRgW2XNX.js +0 -6
  2019. langflow/frontend/assets/between-vertical-start-DBJJbMf0.js +0 -6
  2020. langflow/frontend/assets/biceps-flexed-BeN0_IG5.js +0 -6
  2021. langflow/frontend/assets/bike-RMRhh5Ko.js +0 -6
  2022. langflow/frontend/assets/binary-BhxFqq6o.js +0 -6
  2023. langflow/frontend/assets/binoculars-C7NcucJT.js +0 -6
  2024. langflow/frontend/assets/biohazard-kPECAeUF.js +0 -6
  2025. langflow/frontend/assets/bird-MIwxszQK.js +0 -6
  2026. langflow/frontend/assets/bitcoin-BVDl5KLF.js +0 -6
  2027. langflow/frontend/assets/blend-C5IQri7g.js +0 -6
  2028. langflow/frontend/assets/blinds-B94bFe-r.js +0 -6
  2029. langflow/frontend/assets/blocks-YlkMZ3Nf.js +0 -6
  2030. langflow/frontend/assets/bluetooth-BB_wAoLI.js +0 -6
  2031. langflow/frontend/assets/bluetooth-connected-BFZJiLXz.js +0 -6
  2032. langflow/frontend/assets/bluetooth-off-Bwz_jzOA.js +0 -6
  2033. langflow/frontend/assets/bluetooth-searching-Bu_gIKYe.js +0 -6
  2034. langflow/frontend/assets/bold-BJ77Meb-.js +0 -6
  2035. langflow/frontend/assets/bolt-ifgPxj2N.js +0 -6
  2036. langflow/frontend/assets/bomb-BhLA9U1g.js +0 -6
  2037. langflow/frontend/assets/bone-CfDih58O.js +0 -6
  2038. langflow/frontend/assets/book-BYzHno_8.js +0 -6
  2039. langflow/frontend/assets/book-a-D_TqGtnH.js +0 -6
  2040. langflow/frontend/assets/book-audio-DxzTaZgl.js +0 -6
  2041. langflow/frontend/assets/book-check-DDmPKyxe.js +0 -6
  2042. langflow/frontend/assets/book-copy-BGFkQOxJ.js +0 -6
  2043. langflow/frontend/assets/book-dashed-BqSXyzpq.js +0 -6
  2044. langflow/frontend/assets/book-down-DBdFd8QC.js +0 -6
  2045. langflow/frontend/assets/book-headphones-BNZDf8Wj.js +0 -6
  2046. langflow/frontend/assets/book-heart-Dt6yC_Id.js +0 -6
  2047. langflow/frontend/assets/book-image-CAJQq4aK.js +0 -6
  2048. langflow/frontend/assets/book-key-CKA-LmUM.js +0 -6
  2049. langflow/frontend/assets/book-lock-DTCBVDVL.js +0 -6
  2050. langflow/frontend/assets/book-marked-rwmk8e5Z.js +0 -6
  2051. langflow/frontend/assets/book-minus-CkmZNdbW.js +0 -6
  2052. langflow/frontend/assets/book-open-BGiTssoj.js +0 -6
  2053. langflow/frontend/assets/book-open-check-BgpoGTa3.js +0 -6
  2054. langflow/frontend/assets/book-open-text-DCs9PxwB.js +0 -6
  2055. langflow/frontend/assets/book-plus-BLMOXhny.js +0 -6
  2056. langflow/frontend/assets/book-text-DygBaqwv.js +0 -6
  2057. langflow/frontend/assets/book-type-0GKH4Xwg.js +0 -6
  2058. langflow/frontend/assets/book-up-2-ofZTIxz5.js +0 -6
  2059. langflow/frontend/assets/book-up-DHSN6dtV.js +0 -6
  2060. langflow/frontend/assets/book-user-Hgv8naOj.js +0 -6
  2061. langflow/frontend/assets/book-x-BlY424Rr.js +0 -6
  2062. langflow/frontend/assets/bookmark-CJhwc3H-.js +0 -6
  2063. langflow/frontend/assets/bookmark-check-hlfYA7y9.js +0 -6
  2064. langflow/frontend/assets/bookmark-minus-Be1VtdXJ.js +0 -6
  2065. langflow/frontend/assets/bookmark-plus--ubHpLem.js +0 -6
  2066. langflow/frontend/assets/bookmark-x-C4CaGuUw.js +0 -6
  2067. langflow/frontend/assets/boom-box-C1UMjwv9.js +0 -6
  2068. langflow/frontend/assets/bot-BEmAmGxV.js +0 -6
  2069. langflow/frontend/assets/bot-message-square-CiONinnO.js +0 -6
  2070. langflow/frontend/assets/bot-off-DRA_mNrI.js +0 -6
  2071. langflow/frontend/assets/bow-arrow-CbqqaM5P.js +0 -6
  2072. langflow/frontend/assets/box-BUEqVkjV.js +0 -6
  2073. langflow/frontend/assets/boxes-BNGkaXqN.js +0 -6
  2074. langflow/frontend/assets/braces-D5iQjRbP.js +0 -6
  2075. langflow/frontend/assets/brackets-WqIXxjJr.js +0 -6
  2076. langflow/frontend/assets/brain-DJwU-rpZ.js +0 -6
  2077. langflow/frontend/assets/brain-circuit-l3ZxTRfP.js +0 -6
  2078. langflow/frontend/assets/brain-cog-DY_mjf1F.js +0 -6
  2079. langflow/frontend/assets/brick-wall-Bx--Etbc.js +0 -6
  2080. langflow/frontend/assets/brick-wall-fire-CXPpY8Xd.js +0 -6
  2081. langflow/frontend/assets/briefcase-BgzMP1sz.js +0 -6
  2082. langflow/frontend/assets/briefcase-business-B8NV4-o2.js +0 -6
  2083. langflow/frontend/assets/briefcase-conveyor-belt-BzpCQ1K5.js +0 -6
  2084. langflow/frontend/assets/briefcase-medical-Ci7lL0Pk.js +0 -6
  2085. langflow/frontend/assets/bring-to-front-jhG3fFnB.js +0 -6
  2086. langflow/frontend/assets/brush-DsmDvth1.js +0 -6
  2087. langflow/frontend/assets/bubbles-B9qKyj5N.js +0 -6
  2088. langflow/frontend/assets/bug-BBz9xkhW.js +0 -6
  2089. langflow/frontend/assets/bug-off-fHWz28f_.js +0 -6
  2090. langflow/frontend/assets/bug-play-HLAa0T2C.js +0 -6
  2091. langflow/frontend/assets/building-2-HNsBd_vV.js +0 -6
  2092. langflow/frontend/assets/building-Bi549wX0.js +0 -6
  2093. langflow/frontend/assets/bus-DC41VJav.js +0 -6
  2094. langflow/frontend/assets/bus-front-DHZTl4g7.js +0 -6
  2095. langflow/frontend/assets/cable-B6zbOTrl.js +0 -6
  2096. langflow/frontend/assets/cable-car-CKx12mqp.js +0 -6
  2097. langflow/frontend/assets/cake-Dx6XmJaB.js +0 -6
  2098. langflow/frontend/assets/cake-slice-DWXHaWD7.js +0 -6
  2099. langflow/frontend/assets/calculator-Dl7TO612.js +0 -6
  2100. langflow/frontend/assets/calendar-1-Cx4n9Que.js +0 -6
  2101. langflow/frontend/assets/calendar-96owkSMX.js +0 -6
  2102. langflow/frontend/assets/calendar-arrow-down-ClNJ37MT.js +0 -6
  2103. langflow/frontend/assets/calendar-arrow-up-nc0LoudR.js +0 -6
  2104. langflow/frontend/assets/calendar-check-2-DLGJZDtR.js +0 -6
  2105. langflow/frontend/assets/calendar-check-DSjyHV2c.js +0 -6
  2106. langflow/frontend/assets/calendar-clock-Dgu0GDPv.js +0 -6
  2107. langflow/frontend/assets/calendar-cog-ri7Ij3vS.js +0 -6
  2108. langflow/frontend/assets/calendar-days-CC8H2pNI.js +0 -6
  2109. langflow/frontend/assets/calendar-fold-BLrKAEp1.js +0 -6
  2110. langflow/frontend/assets/calendar-heart-CBeU6EZb.js +0 -6
  2111. langflow/frontend/assets/calendar-minus-2-BfacOPtr.js +0 -6
  2112. langflow/frontend/assets/calendar-minus-qg0FzXMH.js +0 -6
  2113. langflow/frontend/assets/calendar-off-Bh29WRb4.js +0 -6
  2114. langflow/frontend/assets/calendar-plus-2-Bjtg0Hfa.js +0 -6
  2115. langflow/frontend/assets/calendar-plus-Bl1WAWmD.js +0 -6
  2116. langflow/frontend/assets/calendar-range-CvWx6Abh.js +0 -6
  2117. langflow/frontend/assets/calendar-search-eTPiTxLj.js +0 -6
  2118. langflow/frontend/assets/calendar-sync-R_mjdpFg.js +0 -6
  2119. langflow/frontend/assets/calendar-x-2-7qE3yWqQ.js +0 -6
  2120. langflow/frontend/assets/calendar-x-C15efw6F.js +0 -6
  2121. langflow/frontend/assets/camera-BQXOWAgT.js +0 -6
  2122. langflow/frontend/assets/camera-off-BAzBcGWG.js +0 -6
  2123. langflow/frontend/assets/candy-Blok_7SK.js +0 -6
  2124. langflow/frontend/assets/candy-cane-B0dTdsQI.js +0 -6
  2125. langflow/frontend/assets/candy-off-BrOEZdN1.js +0 -6
  2126. langflow/frontend/assets/cannabis-B5dIbt7C.js +0 -6
  2127. langflow/frontend/assets/captions-JBh6q-ry.js +0 -6
  2128. langflow/frontend/assets/captions-off-sycu080_.js +0 -6
  2129. langflow/frontend/assets/car-C16JHmJn.js +0 -6
  2130. langflow/frontend/assets/car-front-BiSL2-ts.js +0 -6
  2131. langflow/frontend/assets/car-taxi-front-B7rrJF78.js +0 -6
  2132. langflow/frontend/assets/caravan-CADCEWA4.js +0 -6
  2133. langflow/frontend/assets/carrot-Doehtf7M.js +0 -6
  2134. langflow/frontend/assets/case-lower-vhx5hSPa.js +0 -6
  2135. langflow/frontend/assets/case-sensitive-C0EK1Ndo.js +0 -6
  2136. langflow/frontend/assets/case-upper-D5dynLQS.js +0 -6
  2137. langflow/frontend/assets/cassette-tape-DoTJNxWE.js +0 -6
  2138. langflow/frontend/assets/cast-DPqCbLQq.js +0 -6
  2139. langflow/frontend/assets/castle-BiVyhGv-.js +0 -6
  2140. langflow/frontend/assets/cat-Cs9hLavk.js +0 -6
  2141. langflow/frontend/assets/cctv-ClVcncA4.js +0 -6
  2142. langflow/frontend/assets/chart-area-XYirPOOr.js +0 -6
  2143. langflow/frontend/assets/chart-bar-D-afaMWy.js +0 -6
  2144. langflow/frontend/assets/chart-bar-big-CQC9YL89.js +0 -6
  2145. langflow/frontend/assets/chart-bar-decreasing-CTMKlufj.js +0 -6
  2146. langflow/frontend/assets/chart-bar-increasing-DDMoEQ-w.js +0 -6
  2147. langflow/frontend/assets/chart-bar-stacked-CavD0L3E.js +0 -6
  2148. langflow/frontend/assets/chart-candlestick-BapIcxZf.js +0 -6
  2149. langflow/frontend/assets/chart-column-BOSsZq94.js +0 -6
  2150. langflow/frontend/assets/chart-column-big-BVcUUqfT.js +0 -6
  2151. langflow/frontend/assets/chart-column-decreasing-BxA-PGFK.js +0 -6
  2152. langflow/frontend/assets/chart-column-increasing-EqRR3Guf.js +0 -6
  2153. langflow/frontend/assets/chart-column-stacked-ItTZcABq.js +0 -6
  2154. langflow/frontend/assets/chart-gantt-D38SaSLO.js +0 -6
  2155. langflow/frontend/assets/chart-line-Dk4q9-Kt.js +0 -6
  2156. langflow/frontend/assets/chart-network-DSEDYZnh.js +0 -6
  2157. langflow/frontend/assets/chart-no-axes-column-ZkB-8qSH.js +0 -6
  2158. langflow/frontend/assets/chart-no-axes-column-decreasing-CsfIKKUY.js +0 -6
  2159. langflow/frontend/assets/chart-no-axes-column-increasing-DPjSGYcQ.js +0 -6
  2160. langflow/frontend/assets/chart-no-axes-combined-DlqmBK8x.js +0 -6
  2161. langflow/frontend/assets/chart-no-axes-gantt-BGcr3oIw.js +0 -6
  2162. langflow/frontend/assets/chart-pie-CKwU35at.js +0 -6
  2163. langflow/frontend/assets/chart-scatter-BkVxZbsT.js +0 -6
  2164. langflow/frontend/assets/chart-spline-B7kL-IQ4.js +0 -6
  2165. langflow/frontend/assets/check-check-7tN2DT0Z.js +0 -6
  2166. langflow/frontend/assets/chef-hat-CGiW9-1A.js +0 -6
  2167. langflow/frontend/assets/cherry-B8DzWQNA.js +0 -6
  2168. langflow/frontend/assets/chevron-first-Ceh0Y2Xz.js +0 -6
  2169. langflow/frontend/assets/chevron-last-C8Ohz6Ko.js +0 -6
  2170. langflow/frontend/assets/chevron-left-DGwhYpIU.js +0 -6
  2171. langflow/frontend/assets/chevron-right-iVB43M13.js +0 -6
  2172. langflow/frontend/assets/chevrons-down-DVKcDwRE.js +0 -6
  2173. langflow/frontend/assets/chevrons-down-up-B1EeJpjh.js +0 -6
  2174. langflow/frontend/assets/chevrons-left-oOkxggRE.js +0 -6
  2175. langflow/frontend/assets/chevrons-left-right-BfDFNSPa.js +0 -6
  2176. langflow/frontend/assets/chevrons-left-right-ellipsis-BzACZp5C.js +0 -6
  2177. langflow/frontend/assets/chevrons-right-DX9naPt7.js +0 -6
  2178. langflow/frontend/assets/chevrons-right-left-D4gHA7xU.js +0 -6
  2179. langflow/frontend/assets/chevrons-up-IElvR-Pw.js +0 -6
  2180. langflow/frontend/assets/chrome-D54e507N.js +0 -6
  2181. langflow/frontend/assets/church-CIcAsnQB.js +0 -6
  2182. langflow/frontend/assets/cigarette-DL-IZLwt.js +0 -6
  2183. langflow/frontend/assets/cigarette-off-CCYAImdf.js +0 -6
  2184. langflow/frontend/assets/circle-alert-Bkpqfg4w.js +0 -6
  2185. langflow/frontend/assets/circle-arrow-down-KNM-Cm7P.js +0 -6
  2186. langflow/frontend/assets/circle-arrow-left-Dz1OHa3q.js +0 -6
  2187. langflow/frontend/assets/circle-arrow-out-down-left-ug0Py2Ld.js +0 -6
  2188. langflow/frontend/assets/circle-arrow-out-down-right-CEPMYGNU.js +0 -6
  2189. langflow/frontend/assets/circle-arrow-out-up-left-De5XOjKi.js +0 -6
  2190. langflow/frontend/assets/circle-arrow-out-up-right-CKe313XT.js +0 -6
  2191. langflow/frontend/assets/circle-arrow-right-De1NS2Gs.js +0 -6
  2192. langflow/frontend/assets/circle-arrow-up-CjIkceJ8.js +0 -6
  2193. langflow/frontend/assets/circle-check-CeYs1nhC.js +0 -6
  2194. langflow/frontend/assets/circle-check-big-BGnSDn9C.js +0 -6
  2195. langflow/frontend/assets/circle-chevron-down-Dpw3vPIw.js +0 -6
  2196. langflow/frontend/assets/circle-chevron-left-CuZwZqbg.js +0 -6
  2197. langflow/frontend/assets/circle-chevron-right-BxCVVPl5.js +0 -6
  2198. langflow/frontend/assets/circle-chevron-up-N52l2E25.js +0 -6
  2199. langflow/frontend/assets/circle-dashed-DEk94r0x.js +0 -6
  2200. langflow/frontend/assets/circle-divide-B2NoMOXs.js +0 -6
  2201. langflow/frontend/assets/circle-dollar-sign-CDOFDyDi.js +0 -6
  2202. langflow/frontend/assets/circle-dot-BYZIXb6P.js +0 -6
  2203. langflow/frontend/assets/circle-dot-dashed-Bwx7s5bo.js +0 -6
  2204. langflow/frontend/assets/circle-ellipsis-CiTHfvaW.js +0 -6
  2205. langflow/frontend/assets/circle-equal-CG_7p86S.js +0 -6
  2206. langflow/frontend/assets/circle-fading-arrow-up-DpWgZ3xq.js +0 -6
  2207. langflow/frontend/assets/circle-fading-plus-8MXshywI.js +0 -6
  2208. langflow/frontend/assets/circle-gauge-BnNEB179.js +0 -6
  2209. langflow/frontend/assets/circle-help-CWaVFLHb.js +0 -6
  2210. langflow/frontend/assets/circle-minus-DZCaMIeY.js +0 -6
  2211. langflow/frontend/assets/circle-off-BM7NY_L2.js +0 -6
  2212. langflow/frontend/assets/circle-parking-DOANT4zO.js +0 -6
  2213. langflow/frontend/assets/circle-parking-off-BXkr3XOx.js +0 -6
  2214. langflow/frontend/assets/circle-pause-C6DGZArO.js +0 -6
  2215. langflow/frontend/assets/circle-percent-_jyg_3_u.js +0 -6
  2216. langflow/frontend/assets/circle-play-Cyx_Ygff.js +0 -6
  2217. langflow/frontend/assets/circle-plus-BF7kpLg0.js +0 -6
  2218. langflow/frontend/assets/circle-power-DICJz28B.js +0 -6
  2219. langflow/frontend/assets/circle-slash-2-pq8bJhJL.js +0 -6
  2220. langflow/frontend/assets/circle-slash-rkLn4G8z.js +0 -6
  2221. langflow/frontend/assets/circle-small-5Z9_hzSv.js +0 -6
  2222. langflow/frontend/assets/circle-stop-DOsAqeLZ.js +0 -6
  2223. langflow/frontend/assets/circle-user-Bn2nmekF.js +0 -6
  2224. langflow/frontend/assets/circle-user-round-Dp5dnOVa.js +0 -6
  2225. langflow/frontend/assets/circuit-board-D60zOiEW.js +0 -6
  2226. langflow/frontend/assets/citrus-BHx4ivHb.js +0 -6
  2227. langflow/frontend/assets/clapperboard-CyqfNghz.js +0 -6
  2228. langflow/frontend/assets/clipboard-CoMMwEm4.js +0 -6
  2229. langflow/frontend/assets/clipboard-check-CIrPauZ1.js +0 -6
  2230. langflow/frontend/assets/clipboard-copy-CayWw8Wo.js +0 -6
  2231. langflow/frontend/assets/clipboard-list-qsGe4A1H.js +0 -6
  2232. langflow/frontend/assets/clipboard-minus-BuEjRNbs.js +0 -6
  2233. langflow/frontend/assets/clipboard-paste-DwgqGiMm.js +0 -6
  2234. langflow/frontend/assets/clipboard-pen-CPnjzh_p.js +0 -6
  2235. langflow/frontend/assets/clipboard-pen-line-Advzm0du.js +0 -6
  2236. langflow/frontend/assets/clipboard-plus-DyzVuE_s.js +0 -6
  2237. langflow/frontend/assets/clipboard-type-c8iOVRSb.js +0 -6
  2238. langflow/frontend/assets/clipboard-x-JjZZ9BUh.js +0 -6
  2239. langflow/frontend/assets/clock-1-BNKHbg61.js +0 -6
  2240. langflow/frontend/assets/clock-10-CYMqk5Xm.js +0 -6
  2241. langflow/frontend/assets/clock-11-BmUvbY-x.js +0 -6
  2242. langflow/frontend/assets/clock-12-xt_5R_43.js +0 -6
  2243. langflow/frontend/assets/clock-2-G5_St357.js +0 -6
  2244. langflow/frontend/assets/clock-3-DWsdO4io.js +0 -6
  2245. langflow/frontend/assets/clock-4-KmRpv0c6.js +0 -6
  2246. langflow/frontend/assets/clock-5-qEx3u6gB.js +0 -6
  2247. langflow/frontend/assets/clock-6-MP9HlXC9.js +0 -6
  2248. langflow/frontend/assets/clock-7-BWcFCbxy.js +0 -6
  2249. langflow/frontend/assets/clock-8-C1TlDGsb.js +0 -6
  2250. langflow/frontend/assets/clock-9-Bn_8LIsX.js +0 -6
  2251. langflow/frontend/assets/clock-BLlYtNVg.js +0 -6
  2252. langflow/frontend/assets/clock-alert-UzDracCS.js +0 -6
  2253. langflow/frontend/assets/clock-arrow-down-Bd1k5Ysi.js +0 -6
  2254. langflow/frontend/assets/clock-arrow-up-DRlwIpbI.js +0 -6
  2255. langflow/frontend/assets/clock-fading-BlGFqog9.js +0 -6
  2256. langflow/frontend/assets/cloud-BpfkF0IY.js +0 -6
  2257. langflow/frontend/assets/cloud-alert-pXF6h3Eq.js +0 -6
  2258. langflow/frontend/assets/cloud-cog-Ckz0niVF.js +0 -6
  2259. langflow/frontend/assets/cloud-download-CvIIfL2r.js +0 -6
  2260. langflow/frontend/assets/cloud-drizzle-BDndJvKK.js +0 -6
  2261. langflow/frontend/assets/cloud-fog-DrGZRi4F.js +0 -6
  2262. langflow/frontend/assets/cloud-hail-BoG-8Q-E.js +0 -6
  2263. langflow/frontend/assets/cloud-lightning-DLM2nqF1.js +0 -6
  2264. langflow/frontend/assets/cloud-moon-C1H5q283.js +0 -6
  2265. langflow/frontend/assets/cloud-moon-rain-DneIfWD5.js +0 -6
  2266. langflow/frontend/assets/cloud-off-BFaGtU_C.js +0 -6
  2267. langflow/frontend/assets/cloud-rain-T92LV6kQ.js +0 -6
  2268. langflow/frontend/assets/cloud-rain-wind-B4BZmZXJ.js +0 -6
  2269. langflow/frontend/assets/cloud-snow-86kZK9eo.js +0 -6
  2270. langflow/frontend/assets/cloud-sun-CdFclRWi.js +0 -6
  2271. langflow/frontend/assets/cloud-sun-rain-B4iCOaMo.js +0 -6
  2272. langflow/frontend/assets/cloud-upload-DfM3HR1V.js +0 -6
  2273. langflow/frontend/assets/cloudy-DmgayTcC.js +0 -6
  2274. langflow/frontend/assets/clover-fGamcSZA.js +0 -6
  2275. langflow/frontend/assets/club-Ck5i4bxQ.js +0 -6
  2276. langflow/frontend/assets/code-xml-hHE3f9kP.js +0 -6
  2277. langflow/frontend/assets/codepen-cTz9nW_X.js +0 -6
  2278. langflow/frontend/assets/codesandbox-BJB8tQz7.js +0 -6
  2279. langflow/frontend/assets/coffee-C4ekOD2Y.js +0 -6
  2280. langflow/frontend/assets/cog-BQcvLVW2.js +0 -6
  2281. langflow/frontend/assets/coins-DHyLcADt.js +0 -6
  2282. langflow/frontend/assets/columns-2-Ch-0YfMI.js +0 -6
  2283. langflow/frontend/assets/columns-3-DwZssaoO.js +0 -6
  2284. langflow/frontend/assets/columns-3-cog-IrpImpUw.js +0 -6
  2285. langflow/frontend/assets/columns-4-DHX51Pj8.js +0 -6
  2286. langflow/frontend/assets/combine-BfoCQcrk.js +0 -6
  2287. langflow/frontend/assets/command-AwmYuT0B.js +0 -6
  2288. langflow/frontend/assets/compass-B4MEmYFb.js +0 -6
  2289. langflow/frontend/assets/component-Cs36SLmN.js +0 -6
  2290. langflow/frontend/assets/computer-CRbwRUsV.js +0 -6
  2291. langflow/frontend/assets/concierge-bell-D9yBq_uv.js +0 -6
  2292. langflow/frontend/assets/cone-GRDhCg8x.js +0 -6
  2293. langflow/frontend/assets/construction-CbDmim3g.js +0 -6
  2294. langflow/frontend/assets/contact-B76RP9rk.js +0 -6
  2295. langflow/frontend/assets/contact-round-BeOO2JSR.js +0 -6
  2296. langflow/frontend/assets/container-BCo809EF.js +0 -6
  2297. langflow/frontend/assets/contrast-CsV-4w0c.js +0 -6
  2298. langflow/frontend/assets/cookie-4xynp-0K.js +0 -6
  2299. langflow/frontend/assets/cooking-pot-6zpIFtuO.js +0 -6
  2300. langflow/frontend/assets/copy-check-C-_k4q4q.js +0 -6
  2301. langflow/frontend/assets/copy-minus-DmD2C_Ek.js +0 -6
  2302. langflow/frontend/assets/copy-plus-C4qTIDil.js +0 -6
  2303. langflow/frontend/assets/copy-slash-D2xisbCW.js +0 -6
  2304. langflow/frontend/assets/copy-uhNk4xEH.js +0 -6
  2305. langflow/frontend/assets/copy-x-Df5IZvPC.js +0 -6
  2306. langflow/frontend/assets/copyleft-D7RuM0x9.js +0 -6
  2307. langflow/frontend/assets/copyright-CxnR4L2E.js +0 -6
  2308. langflow/frontend/assets/corner-down-left-BUFXhtnI.js +0 -6
  2309. langflow/frontend/assets/corner-down-right-DJc4m1Ev.js +0 -6
  2310. langflow/frontend/assets/corner-left-down-CZHlOzF4.js +0 -6
  2311. langflow/frontend/assets/corner-left-up-CPx4uV2n.js +0 -6
  2312. langflow/frontend/assets/corner-right-down-B88MVYxh.js +0 -6
  2313. langflow/frontend/assets/corner-right-up-BiRVGMlP.js +0 -6
  2314. langflow/frontend/assets/corner-up-left-32o8JRNG.js +0 -6
  2315. langflow/frontend/assets/corner-up-right-_hUqHV2l.js +0 -6
  2316. langflow/frontend/assets/cpu-CIpnzIhJ.js +0 -6
  2317. langflow/frontend/assets/creative-commons-BdnqSJXT.js +0 -6
  2318. langflow/frontend/assets/credit-card-Dw6W7c3-.js +0 -6
  2319. langflow/frontend/assets/croissant-BPKym1j3.js +0 -6
  2320. langflow/frontend/assets/crop-wve_tfd5.js +0 -6
  2321. langflow/frontend/assets/cross-BKmTB5PB.js +0 -6
  2322. langflow/frontend/assets/crosshair-BnCVIzA6.js +0 -6
  2323. langflow/frontend/assets/crown-DMsIwyFI.js +0 -6
  2324. langflow/frontend/assets/cuboid-CEECmRzu.js +0 -6
  2325. langflow/frontend/assets/cup-soda-DCGeVNDo.js +0 -6
  2326. langflow/frontend/assets/currency-DSuvJLpB.js +0 -6
  2327. langflow/frontend/assets/cylinder-hEqY2Jdf.js +0 -6
  2328. langflow/frontend/assets/dam-B1C6ojBJ.js +0 -6
  2329. langflow/frontend/assets/database-B5wTeVIR.js +0 -6
  2330. langflow/frontend/assets/database-backup-VworaNSV.js +0 -6
  2331. langflow/frontend/assets/database-zap-CTwpMI4R.js +0 -6
  2332. langflow/frontend/assets/decimals-arrow-left-glyktHlw.js +0 -6
  2333. langflow/frontend/assets/decimals-arrow-right-BOW-LLWF.js +0 -6
  2334. langflow/frontend/assets/delete-WHVN8I2t.js +0 -6
  2335. langflow/frontend/assets/dessert-Bmc6XGGT.js +0 -6
  2336. langflow/frontend/assets/diameter-aHn9DC7u.js +0 -6
  2337. langflow/frontend/assets/diamond-C4xwUasD.js +0 -6
  2338. langflow/frontend/assets/diamond-minus-DzvssUAz.js +0 -6
  2339. langflow/frontend/assets/diamond-percent-BqESyApU.js +0 -6
  2340. langflow/frontend/assets/diamond-plus-CP9mWAZi.js +0 -6
  2341. langflow/frontend/assets/dice-1-CAr_SM8h.js +0 -6
  2342. langflow/frontend/assets/dice-2-B-yDQuoK.js +0 -6
  2343. langflow/frontend/assets/dice-3-_rfFJgZN.js +0 -6
  2344. langflow/frontend/assets/dice-4-AoInuZtE.js +0 -6
  2345. langflow/frontend/assets/dice-5-K7MlxrFA.js +0 -6
  2346. langflow/frontend/assets/dice-6-BCkR557a.js +0 -6
  2347. langflow/frontend/assets/dices-DPlELo12.js +0 -6
  2348. langflow/frontend/assets/diff-M5SVVtX6.js +0 -6
  2349. langflow/frontend/assets/disc-2-JbXqBl9j.js +0 -6
  2350. langflow/frontend/assets/disc-3-CWih3-fy.js +0 -6
  2351. langflow/frontend/assets/disc-BYwbZz3k.js +0 -6
  2352. langflow/frontend/assets/disc-album-CLvD7XYq.js +0 -6
  2353. langflow/frontend/assets/divide-DaADqRRf.js +0 -6
  2354. langflow/frontend/assets/dna-DtPI-Bp0.js +0 -6
  2355. langflow/frontend/assets/dna-off-D2QOJfX9.js +0 -6
  2356. langflow/frontend/assets/dock-BuSDJz0l.js +0 -6
  2357. langflow/frontend/assets/dog-BkAlXp_W.js +0 -6
  2358. langflow/frontend/assets/dollar-sign-D3Ud2IuI.js +0 -6
  2359. langflow/frontend/assets/donut-BN40XkJT.js +0 -6
  2360. langflow/frontend/assets/door-closed-DkLDmChI.js +0 -6
  2361. langflow/frontend/assets/door-open-DDg9Ayyd.js +0 -6
  2362. langflow/frontend/assets/dot-C-l5gU3I.js +0 -6
  2363. langflow/frontend/assets/download-BZWhlrCY.js +0 -6
  2364. langflow/frontend/assets/drafting-compass-D-hGOvs2.js +0 -6
  2365. langflow/frontend/assets/drama-B5uf4b8b.js +0 -6
  2366. langflow/frontend/assets/dribbble-CbD4vWy6.js +0 -6
  2367. langflow/frontend/assets/drill-DCkW4Wvi.js +0 -6
  2368. langflow/frontend/assets/droplet-Bg0CkEJu.js +0 -6
  2369. langflow/frontend/assets/droplet-off-Dhufd4nM.js +0 -6
  2370. langflow/frontend/assets/droplets-_6A7omRz.js +0 -6
  2371. langflow/frontend/assets/drum-9vn2X8il.js +0 -6
  2372. langflow/frontend/assets/drumstick-BcUad3ZT.js +0 -6
  2373. langflow/frontend/assets/dumbbell-XRM0uZRz.js +0 -6
  2374. langflow/frontend/assets/ear-DgePTpeG.js +0 -6
  2375. langflow/frontend/assets/ear-off-lUwaJK9Z.js +0 -6
  2376. langflow/frontend/assets/earth-BMpM5xms.js +0 -6
  2377. langflow/frontend/assets/earth-lock-C3nX7Lb1.js +0 -6
  2378. langflow/frontend/assets/eclipse-BV2S6sen.js +0 -6
  2379. langflow/frontend/assets/egg-CQSHKT-Y.js +0 -6
  2380. langflow/frontend/assets/egg-fried-CnCkVd6P.js +0 -6
  2381. langflow/frontend/assets/egg-off-BulT4b4U.js +0 -6
  2382. langflow/frontend/assets/ellipsis-BV8-ztNZ.js +0 -6
  2383. langflow/frontend/assets/ellipsis-vertical-DcChHSsl.js +0 -6
  2384. langflow/frontend/assets/equal-D4YD4unD.js +0 -6
  2385. langflow/frontend/assets/equal-approximately-CFeo10H7.js +0 -6
  2386. langflow/frontend/assets/equal-not-BNi5kdEz.js +0 -6
  2387. langflow/frontend/assets/eraser-CRFjimeZ.js +0 -6
  2388. langflow/frontend/assets/ethernet-port-g4gBlOU9.js +0 -6
  2389. langflow/frontend/assets/euro-DqcbO9nY.js +0 -6
  2390. langflow/frontend/assets/expand-D8t6Q1DM.js +0 -6
  2391. langflow/frontend/assets/eye-closed-vlQgnqaX.js +0 -6
  2392. langflow/frontend/assets/eye-iLK8nqfe.js +0 -6
  2393. langflow/frontend/assets/eye-off-DbVHVOO_.js +0 -6
  2394. langflow/frontend/assets/facebook-BKtIPaZB.js +0 -6
  2395. langflow/frontend/assets/factory-Btzd6LBc.js +0 -6
  2396. langflow/frontend/assets/fan-DwHy2oEZ.js +0 -6
  2397. langflow/frontend/assets/fast-forward-C3CpT4l7.js +0 -6
  2398. langflow/frontend/assets/feather-DqSlykzN.js +0 -6
  2399. langflow/frontend/assets/fence-RkAIYLbV.js +0 -6
  2400. langflow/frontend/assets/ferris-wheel-BrMevmUg.js +0 -6
  2401. langflow/frontend/assets/figma-CP6XBcuB.js +0 -6
  2402. langflow/frontend/assets/file-D6HBGFp1.js +0 -6
  2403. langflow/frontend/assets/file-archive-DgtAaVlc.js +0 -6
  2404. langflow/frontend/assets/file-audio-2-mruJSFyc.js +0 -6
  2405. langflow/frontend/assets/file-audio-C9QvZWJX.js +0 -6
  2406. langflow/frontend/assets/file-axis-3d-DHTzFHBL.js +0 -6
  2407. langflow/frontend/assets/file-badge-2-Dv6z3NHD.js +0 -6
  2408. langflow/frontend/assets/file-badge-D4RE3QuW.js +0 -6
  2409. langflow/frontend/assets/file-box-C5IFvKAm.js +0 -6
  2410. langflow/frontend/assets/file-chart-column-ANHXJANO.js +0 -6
  2411. langflow/frontend/assets/file-chart-column-increasing-kMCAg2RJ.js +0 -6
  2412. langflow/frontend/assets/file-chart-line-hfNGTjvi.js +0 -6
  2413. langflow/frontend/assets/file-chart-pie-dFAZSiw8.js +0 -6
  2414. langflow/frontend/assets/file-check-2-D6jh9Sa7.js +0 -6
  2415. langflow/frontend/assets/file-check-B3wia0pU.js +0 -6
  2416. langflow/frontend/assets/file-clock-BZUuHHr1.js +0 -6
  2417. langflow/frontend/assets/file-code-2-Dm-pAegM.js +0 -6
  2418. langflow/frontend/assets/file-code-kszTVR4o.js +0 -6
  2419. langflow/frontend/assets/file-cog-BlMnz850.js +0 -6
  2420. langflow/frontend/assets/file-diff-pXLdb9rT.js +0 -6
  2421. langflow/frontend/assets/file-digit-KhJoPzj2.js +0 -6
  2422. langflow/frontend/assets/file-down-BMU7uszB.js +0 -6
  2423. langflow/frontend/assets/file-heart-BpbgOqw1.js +0 -6
  2424. langflow/frontend/assets/file-image-Crm2E71F.js +0 -6
  2425. langflow/frontend/assets/file-input-DwzBdEoV.js +0 -6
  2426. langflow/frontend/assets/file-json-2-vo-cj_gX.js +0 -6
  2427. langflow/frontend/assets/file-json-Dk-Q3r2E.js +0 -6
  2428. langflow/frontend/assets/file-key-2-DGmu11th.js +0 -6
  2429. langflow/frontend/assets/file-key-GHmLkw-R.js +0 -6
  2430. langflow/frontend/assets/file-lock-2-BU0m1AxW.js +0 -6
  2431. langflow/frontend/assets/file-lock-CmThEK3Q.js +0 -6
  2432. langflow/frontend/assets/file-minus-2-DvXZQ0cF.js +0 -6
  2433. langflow/frontend/assets/file-minus-CDP10F_U.js +0 -6
  2434. langflow/frontend/assets/file-music-Bd6Cfknj.js +0 -6
  2435. langflow/frontend/assets/file-output-BRnAIS07.js +0 -6
  2436. langflow/frontend/assets/file-pen-Az0gMMpj.js +0 -6
  2437. langflow/frontend/assets/file-pen-line-D8veV6Hk.js +0 -6
  2438. langflow/frontend/assets/file-plus-2-C419qRGc.js +0 -6
  2439. langflow/frontend/assets/file-plus-BjeNATzB.js +0 -6
  2440. langflow/frontend/assets/file-question-si479GRk.js +0 -6
  2441. langflow/frontend/assets/file-scan-CD--KJxF.js +0 -6
  2442. langflow/frontend/assets/file-search-2-BdyS9vAP.js +0 -6
  2443. langflow/frontend/assets/file-search-JZcJQzjD.js +0 -6
  2444. langflow/frontend/assets/file-sliders-Bs8wGTDU.js +0 -6
  2445. langflow/frontend/assets/file-spreadsheet-aAWhB_8w.js +0 -6
  2446. langflow/frontend/assets/file-stack-CErWKyiZ.js +0 -6
  2447. langflow/frontend/assets/file-symlink-DSnz091-.js +0 -6
  2448. langflow/frontend/assets/file-terminal-BlDCJ5Ho.js +0 -6
  2449. langflow/frontend/assets/file-text-C-ElW5KU.js +0 -6
  2450. langflow/frontend/assets/file-type-2-dNr5ri3z.js +0 -6
  2451. langflow/frontend/assets/file-type-B0BpOvLV.js +0 -6
  2452. langflow/frontend/assets/file-up-DFOpL52w.js +0 -6
  2453. langflow/frontend/assets/file-user-BM-NWVuA.js +0 -6
  2454. langflow/frontend/assets/file-video-2-D6UY_r87.js +0 -6
  2455. langflow/frontend/assets/file-video-CKfsHEHk.js +0 -6
  2456. langflow/frontend/assets/file-volume-2-D4VjgR4e.js +0 -6
  2457. langflow/frontend/assets/file-volume-6JHMDQfq.js +0 -6
  2458. langflow/frontend/assets/file-warning-Czk6i6ab.js +0 -6
  2459. langflow/frontend/assets/file-x-2-BxJNr3wL.js +0 -6
  2460. langflow/frontend/assets/file-x-wkjmXWPR.js +0 -6
  2461. langflow/frontend/assets/files-DpHm6V0_.js +0 -6
  2462. langflow/frontend/assets/film-DvOIFHu7.js +0 -6
  2463. langflow/frontend/assets/fingerprint-BcvDfB5h.js +0 -6
  2464. langflow/frontend/assets/fire-extinguisher-DzkdhgNk.js +0 -6
  2465. langflow/frontend/assets/fish-Ch-9s3kW.js +0 -6
  2466. langflow/frontend/assets/fish-off-U_BOZYCK.js +0 -6
  2467. langflow/frontend/assets/fish-symbol-Cy6nZjtK.js +0 -6
  2468. langflow/frontend/assets/flag-BJSd0fRs.js +0 -6
  2469. langflow/frontend/assets/flag-off-DXt-PviR.js +0 -6
  2470. langflow/frontend/assets/flag-triangle-left-CQYf7csZ.js +0 -6
  2471. langflow/frontend/assets/flag-triangle-right-ZV4g-zzc.js +0 -6
  2472. langflow/frontend/assets/flame-C5Eg8e2m.js +0 -6
  2473. langflow/frontend/assets/flame-kindling-Nz2_AeBI.js +0 -6
  2474. langflow/frontend/assets/flashlight-k0ZMC_Lq.js +0 -6
  2475. langflow/frontend/assets/flashlight-off-XPsB1RVD.js +0 -6
  2476. langflow/frontend/assets/flask-conical-C2D_ku63.js +0 -6
  2477. langflow/frontend/assets/flask-conical-off-9U-m324b.js +0 -6
  2478. langflow/frontend/assets/flask-round-BRqVjCfw.js +0 -6
  2479. langflow/frontend/assets/flip-horizontal-2-mFxGu2-w.js +0 -6
  2480. langflow/frontend/assets/flip-horizontal-jx7Xboar.js +0 -6
  2481. langflow/frontend/assets/flip-vertical-2-Daw7KMnX.js +0 -6
  2482. langflow/frontend/assets/flip-vertical-BNGL_eXJ.js +0 -6
  2483. langflow/frontend/assets/flower-2-0f_oD82c.js +0 -6
  2484. langflow/frontend/assets/flower-Dlqs4mIJ.js +0 -6
  2485. langflow/frontend/assets/focus-BmkSMRiY.js +0 -6
  2486. langflow/frontend/assets/fold-horizontal-JA9mZIHJ.js +0 -6
  2487. langflow/frontend/assets/fold-vertical-DWdIQNwf.js +0 -6
  2488. langflow/frontend/assets/folder-PtATcT5r.js +0 -6
  2489. langflow/frontend/assets/folder-archive-B8MY2HXr.js +0 -6
  2490. langflow/frontend/assets/folder-check-iKIFzaWd.js +0 -6
  2491. langflow/frontend/assets/folder-clock-Dg8oghei.js +0 -6
  2492. langflow/frontend/assets/folder-closed-9_4thEfg.js +0 -6
  2493. langflow/frontend/assets/folder-code-BH-dAZqp.js +0 -6
  2494. langflow/frontend/assets/folder-cog-DNCVbOh2.js +0 -6
  2495. langflow/frontend/assets/folder-dot-Bt6DmwFE.js +0 -6
  2496. langflow/frontend/assets/folder-down-D20yPP80.js +0 -6
  2497. langflow/frontend/assets/folder-git-2-CHihOHD3.js +0 -6
  2498. langflow/frontend/assets/folder-git-Dq1vqX3l.js +0 -6
  2499. langflow/frontend/assets/folder-heart-CiH-Y9fU.js +0 -6
  2500. langflow/frontend/assets/folder-input-x2Zy7BKJ.js +0 -6
  2501. langflow/frontend/assets/folder-kanban-BT34L1h5.js +0 -6
  2502. langflow/frontend/assets/folder-key-ThGlIOnI.js +0 -6
  2503. langflow/frontend/assets/folder-lock-CIUjMqg2.js +0 -6
  2504. langflow/frontend/assets/folder-minus-BdcC23d6.js +0 -6
  2505. langflow/frontend/assets/folder-open-BMTNykVD.js +0 -6
  2506. langflow/frontend/assets/folder-open-dot-DxegRKX4.js +0 -6
  2507. langflow/frontend/assets/folder-output-CkEt4mXR.js +0 -6
  2508. langflow/frontend/assets/folder-pen-D6IjFPS5.js +0 -6
  2509. langflow/frontend/assets/folder-plus-66BHSyhf.js +0 -6
  2510. langflow/frontend/assets/folder-root-DPMp-1VH.js +0 -6
  2511. langflow/frontend/assets/folder-search-2-Dd-xImwo.js +0 -6
  2512. langflow/frontend/assets/folder-search-CRZ7JXvh.js +0 -6
  2513. langflow/frontend/assets/folder-symlink-CftITr3P.js +0 -6
  2514. langflow/frontend/assets/folder-sync-CKyqqdEb.js +0 -6
  2515. langflow/frontend/assets/folder-tree-D6GWt_6I.js +0 -6
  2516. langflow/frontend/assets/folder-up-C8rMaV8I.js +0 -6
  2517. langflow/frontend/assets/folder-x-CgFWCGln.js +0 -6
  2518. langflow/frontend/assets/folders-C1qkkyvF.js +0 -6
  2519. langflow/frontend/assets/footprints-BE8BTaJU.js +0 -6
  2520. langflow/frontend/assets/forklift-DMSRuz_K.js +0 -6
  2521. langflow/frontend/assets/forward-BDQvD7mX.js +0 -6
  2522. langflow/frontend/assets/frame-DWbnh2qD.js +0 -6
  2523. langflow/frontend/assets/framer-ChTeVZe4.js +0 -6
  2524. langflow/frontend/assets/frown-v3rUOUiE.js +0 -6
  2525. langflow/frontend/assets/fuel-Bg2hHE6V.js +0 -6
  2526. langflow/frontend/assets/fullscreen-BcOokvE0.js +0 -6
  2527. langflow/frontend/assets/funnel-P4szor_H.js +0 -6
  2528. langflow/frontend/assets/funnel-plus-Dc2ah-jO.js +0 -6
  2529. langflow/frontend/assets/funnel-x-CiuEZ_o0.js +0 -6
  2530. langflow/frontend/assets/gallery-horizontal-CEd6gQaJ.js +0 -6
  2531. langflow/frontend/assets/gallery-horizontal-end-BJu1RQs_.js +0 -6
  2532. langflow/frontend/assets/gallery-thumbnails-TKSEas8j.js +0 -6
  2533. langflow/frontend/assets/gallery-vertical-CmKzMz0j.js +0 -6
  2534. langflow/frontend/assets/gallery-vertical-end-fMmZ3vua.js +0 -6
  2535. langflow/frontend/assets/gamepad-2-BhD5ygmQ.js +0 -6
  2536. langflow/frontend/assets/gamepad-P1gIKZU2.js +0 -6
  2537. langflow/frontend/assets/gauge-DWIqvA7Z.js +0 -6
  2538. langflow/frontend/assets/gavel-CgJbhAqA.js +0 -6
  2539. langflow/frontend/assets/gem-COMR8jG5.js +0 -6
  2540. langflow/frontend/assets/ghost-Ty7iBwpE.js +0 -6
  2541. langflow/frontend/assets/gift-DsjNPgvH.js +0 -6
  2542. langflow/frontend/assets/git-branch-6VDIM0lR.js +0 -6
  2543. langflow/frontend/assets/git-branch-plus-CSJL2Cwr.js +0 -6
  2544. langflow/frontend/assets/git-commit-horizontal-DEzDQg44.js +0 -6
  2545. langflow/frontend/assets/git-commit-vertical-DsiIqc8n.js +0 -6
  2546. langflow/frontend/assets/git-compare-DA5SJqJ-.js +0 -6
  2547. langflow/frontend/assets/git-compare-arrows-D6YCX8Ms.js +0 -6
  2548. langflow/frontend/assets/git-fork-B_ja1OdA.js +0 -6
  2549. langflow/frontend/assets/git-graph-C5UL-5IY.js +0 -6
  2550. langflow/frontend/assets/git-merge-BAn5yiUq.js +0 -6
  2551. langflow/frontend/assets/git-pull-request-MU8ECP22.js +0 -6
  2552. langflow/frontend/assets/git-pull-request-arrow-22Kv-lHG.js +0 -6
  2553. langflow/frontend/assets/git-pull-request-closed-sJWeEj95.js +0 -6
  2554. langflow/frontend/assets/git-pull-request-create-CtOTJA7R.js +0 -6
  2555. langflow/frontend/assets/git-pull-request-create-arrow-COafPNem.js +0 -6
  2556. langflow/frontend/assets/git-pull-request-draft-BWzPv7qm.js +0 -6
  2557. langflow/frontend/assets/github-CajekicO.js +0 -6
  2558. langflow/frontend/assets/gitlab-_CFG8P00.js +0 -6
  2559. langflow/frontend/assets/glass-water-BuoWYi1F.js +0 -6
  2560. langflow/frontend/assets/glasses-CYrC8dwA.js +0 -6
  2561. langflow/frontend/assets/globe-CFqHeMKN.js +0 -6
  2562. langflow/frontend/assets/globe-lock-C0KHxKVu.js +0 -6
  2563. langflow/frontend/assets/goal-BpbOokqX.js +0 -6
  2564. langflow/frontend/assets/grab-B4YyJtn1.js +0 -6
  2565. langflow/frontend/assets/graduation-cap-An_b7sd6.js +0 -6
  2566. langflow/frontend/assets/grape-BNz_wGP4.js +0 -6
  2567. langflow/frontend/assets/grid-2x2-BBHKIKRn.js +0 -6
  2568. langflow/frontend/assets/grid-2x2-check-CH0s2bnZ.js +0 -6
  2569. langflow/frontend/assets/grid-2x2-plus-hefvxPAj.js +0 -6
  2570. langflow/frontend/assets/grid-2x2-x-DTUT5mRJ.js +0 -6
  2571. langflow/frontend/assets/grid-3x3-B2nX9V6P.js +0 -6
  2572. langflow/frontend/assets/grip-C8ClRabu.js +0 -6
  2573. langflow/frontend/assets/grip-horizontal-Gz-ynqnP.js +0 -6
  2574. langflow/frontend/assets/grip-vertical-ClyBiwLb.js +0 -6
  2575. langflow/frontend/assets/group-CBlSv0qe.js +0 -6
  2576. langflow/frontend/assets/guitar-BXf-tGpy.js +0 -6
  2577. langflow/frontend/assets/ham-De-Vb2xi.js +0 -6
  2578. langflow/frontend/assets/hammer-CLjMECs3.js +0 -6
  2579. langflow/frontend/assets/hand-Cg4fK3Wo.js +0 -6
  2580. langflow/frontend/assets/hand-coins-BBhPf-uj.js +0 -6
  2581. langflow/frontend/assets/hand-heart-BiEUTljZ.js +0 -6
  2582. langflow/frontend/assets/hand-helping-JLhrNQF3.js +0 -6
  2583. langflow/frontend/assets/hand-metal-DgzeeneB.js +0 -6
  2584. langflow/frontend/assets/hand-platter-C_cygemS.js +0 -6
  2585. langflow/frontend/assets/handshake-BUsoAouY.js +0 -6
  2586. langflow/frontend/assets/hard-drive-FEZ93uFi.js +0 -6
  2587. langflow/frontend/assets/hard-drive-download-5QC3T3Al.js +0 -6
  2588. langflow/frontend/assets/hard-drive-upload-CrDuU26b.js +0 -6
  2589. langflow/frontend/assets/hard-hat-ohIXnuEm.js +0 -6
  2590. langflow/frontend/assets/hash-B5e57Lhy.js +0 -6
  2591. langflow/frontend/assets/haze-hSrXLUsS.js +0 -6
  2592. langflow/frontend/assets/hdmi-port-Cm3B3l-N.js +0 -6
  2593. langflow/frontend/assets/heading-1-BXqu1HWZ.js +0 -6
  2594. langflow/frontend/assets/heading-2-DRq10yha.js +0 -6
  2595. langflow/frontend/assets/heading-3-zFBq-mRN.js +0 -6
  2596. langflow/frontend/assets/heading-4-DezegdXR.js +0 -6
  2597. langflow/frontend/assets/heading-5-B0YVmNds.js +0 -6
  2598. langflow/frontend/assets/heading-6-CU3fuSsS.js +0 -6
  2599. langflow/frontend/assets/heading-DrApTozP.js +0 -6
  2600. langflow/frontend/assets/headphone-off-cAV29gQ_.js +0 -6
  2601. langflow/frontend/assets/headphones-Ds_CwLgf.js +0 -6
  2602. langflow/frontend/assets/headset-CkBEWpjE.js +0 -6
  2603. langflow/frontend/assets/heart-BpsspWHo.js +0 -6
  2604. langflow/frontend/assets/heart-crack-f61tFuYS.js +0 -6
  2605. langflow/frontend/assets/heart-handshake-D-XlBQtz.js +0 -6
  2606. langflow/frontend/assets/heart-minus-B9yCFIoT.js +0 -6
  2607. langflow/frontend/assets/heart-off-B9cIE7mx.js +0 -6
  2608. langflow/frontend/assets/heart-plus-5Ks-vvf-.js +0 -6
  2609. langflow/frontend/assets/heart-pulse-DzecRvcl.js +0 -6
  2610. langflow/frontend/assets/heater-DX1Mcf-u.js +0 -6
  2611. langflow/frontend/assets/hexagon-BnNdLBuu.js +0 -6
  2612. langflow/frontend/assets/highlighter-DFL7NZH6.js +0 -6
  2613. langflow/frontend/assets/history-DMGlsvB2.js +0 -6
  2614. langflow/frontend/assets/hop-DxBZa8zv.js +0 -6
  2615. langflow/frontend/assets/hop-off-CIXRjE1i.js +0 -6
  2616. langflow/frontend/assets/hospital-DE-l1qji.js +0 -6
  2617. langflow/frontend/assets/hotel-CdEHWnEL.js +0 -6
  2618. langflow/frontend/assets/hourglass-B-i58WHU.js +0 -6
  2619. langflow/frontend/assets/house-B0YlwN1A.js +0 -6
  2620. langflow/frontend/assets/house-plug-DboTtuH6.js +0 -6
  2621. langflow/frontend/assets/house-plus-DqDYQYJn.js +0 -6
  2622. langflow/frontend/assets/house-wifi-DI8Tb_bF.js +0 -6
  2623. langflow/frontend/assets/ice-cream-bowl-BrA7Pjku.js +0 -6
  2624. langflow/frontend/assets/ice-cream-cone-Bbs6BK6Y.js +0 -6
  2625. langflow/frontend/assets/id-card-D7qjAufF.js +0 -6
  2626. langflow/frontend/assets/image-Cat_jI0x.js +0 -6
  2627. langflow/frontend/assets/image-down-Cze6mEMC.js +0 -6
  2628. langflow/frontend/assets/image-minus-DNJwxUz6.js +0 -6
  2629. langflow/frontend/assets/image-off-BramjqEc.js +0 -6
  2630. langflow/frontend/assets/image-play-BEnSCId7.js +0 -6
  2631. langflow/frontend/assets/image-plus-CApZvqdW.js +0 -6
  2632. langflow/frontend/assets/image-up-D2K6CFd4.js +0 -6
  2633. langflow/frontend/assets/image-upscale-D_VQxyFQ.js +0 -6
  2634. langflow/frontend/assets/images-Ct6wmygL.js +0 -6
  2635. langflow/frontend/assets/import-K1bckTch.js +0 -6
  2636. langflow/frontend/assets/inbox-C0AQ7qmb.js +0 -6
  2637. langflow/frontend/assets/indent-decrease-4brflt7t.js +0 -6
  2638. langflow/frontend/assets/indent-increase-CYoB5eNd.js +0 -6
  2639. langflow/frontend/assets/index---VMB4kj.js +0 -1
  2640. langflow/frontend/assets/index--aYHQWvU.js +0 -1
  2641. langflow/frontend/assets/index-06RbywJE.js +0 -1
  2642. langflow/frontend/assets/index-267aYx0I.js +0 -1
  2643. langflow/frontend/assets/index-5ky1fxcg.js +0 -1
  2644. langflow/frontend/assets/index-AIBLHlpN.js +0 -1
  2645. langflow/frontend/assets/index-ANgQhQgm.js +0 -1
  2646. langflow/frontend/assets/index-AjhFPrix.js +0 -1
  2647. langflow/frontend/assets/index-B-OgO8t6.js +0 -1
  2648. langflow/frontend/assets/index-B-oDScwm.js +0 -1
  2649. langflow/frontend/assets/index-B1FynBEG.js +0 -1
  2650. langflow/frontend/assets/index-B2cPsvEy.js +0 -1
  2651. langflow/frontend/assets/index-B5BHaxW2.js +0 -1
  2652. langflow/frontend/assets/index-B5HK5_Lp.js +0 -1
  2653. langflow/frontend/assets/index-B6fdgJza.js +0 -1
  2654. langflow/frontend/assets/index-BB8KEscZ.js +0 -1
  2655. langflow/frontend/assets/index-BCfwIv6z.js +0 -1
  2656. langflow/frontend/assets/index-BESMyrUQ.js +0 -1
  2657. langflow/frontend/assets/index-BFUOWpV3.js +0 -1
  2658. langflow/frontend/assets/index-BFyyo9yt.js +0 -1
  2659. langflow/frontend/assets/index-BHk9gL3s.js +0 -1
  2660. langflow/frontend/assets/index-BIfigQLN.js +0 -1
  2661. langflow/frontend/assets/index-BIxx20uA.js +0 -1
  2662. langflow/frontend/assets/index-BJS4xDwL.js +0 -1
  2663. langflow/frontend/assets/index-BLbIiBeX.js +0 -108
  2664. langflow/frontend/assets/index-BOVmogBo.js +0 -1
  2665. langflow/frontend/assets/index-BOrL37VO.js +0 -1
  2666. langflow/frontend/assets/index-BPg9mfYR.js +0 -1
  2667. langflow/frontend/assets/index-BQQEQF1F.js +0 -1
  2668. langflow/frontend/assets/index-BRB6Bs3D.js +0 -1
  2669. langflow/frontend/assets/index-BSL9yvA1.js +0 -1
  2670. langflow/frontend/assets/index-BVbKP_Gm.js +0 -1
  2671. langflow/frontend/assets/index-BYxeXl2l.js +0 -1
  2672. langflow/frontend/assets/index-BbFnr6RU.js +0 -1
  2673. langflow/frontend/assets/index-BccRz1ka.js +0 -495
  2674. langflow/frontend/assets/index-BdIOjhQ1.js +0 -185
  2675. langflow/frontend/assets/index-BeBHe9bA.js +0 -281
  2676. langflow/frontend/assets/index-BhfBvJ5M.js +0 -127
  2677. langflow/frontend/assets/index-Bk3z3w_2.js +0 -1
  2678. langflow/frontend/assets/index-Bl18uutJ.js +0 -1
  2679. langflow/frontend/assets/index-Bl5r0bjX.js +0 -1
  2680. langflow/frontend/assets/index-Br5miaX1.js +0 -1
  2681. langflow/frontend/assets/index-BsVIFq3j.js +0 -1
  2682. langflow/frontend/assets/index-Bsgfq7aq.js +0 -1
  2683. langflow/frontend/assets/index-BsrjXFZW.js +0 -1
  2684. langflow/frontend/assets/index-BuCp68yr.js +0 -1
  2685. langflow/frontend/assets/index-Buc14vjS.js +0 -1
  2686. langflow/frontend/assets/index-Bv1csqvG.js +0 -1
  2687. langflow/frontend/assets/index-BwFD1I0z.js +0 -1
  2688. langflow/frontend/assets/index-Bx3qmTme.js +0 -1
  2689. langflow/frontend/assets/index-C10OeZV3.js +0 -1
  2690. langflow/frontend/assets/index-C1lBPEkS.js +0 -2
  2691. langflow/frontend/assets/index-C22CzZ5f.js +0 -1
  2692. langflow/frontend/assets/index-C3Uf4N8L.js +0 -1
  2693. langflow/frontend/assets/index-C3nf6u8A.js +0 -1
  2694. langflow/frontend/assets/index-C6x3mNmD.js +0 -7
  2695. langflow/frontend/assets/index-CAaOEYxT.js +0 -1
  2696. langflow/frontend/assets/index-CCHI24eI.js +0 -1
  2697. langflow/frontend/assets/index-CF5SEgKn.js +0 -1
  2698. langflow/frontend/assets/index-CHAMb849.js +0 -1
  2699. langflow/frontend/assets/index-CJpaxdbf.js +0 -1
  2700. langflow/frontend/assets/index-CMPuKLsy.js +0 -1
  2701. langflow/frontend/assets/index-CMdIcstA.js +0 -1
  2702. langflow/frontend/assets/index-CSFxbipr.js +0 -1
  2703. langflow/frontend/assets/index-CTnwCPD0.js +0 -1
  2704. langflow/frontend/assets/index-CUjbeRGc.js +0 -1
  2705. langflow/frontend/assets/index-CWoZ3sEc.js +0 -1
  2706. langflow/frontend/assets/index-CXmTDti2.js +0 -1
  2707. langflow/frontend/assets/index-CYVLwhFh.js +0 -1
  2708. langflow/frontend/assets/index-C_o2vPVs.js +0 -1
  2709. langflow/frontend/assets/index-CaCgS7OO.js +0 -1
  2710. langflow/frontend/assets/index-CaXCs6_P.js +0 -1
  2711. langflow/frontend/assets/index-Cb2zGQBR.js +0 -1
  2712. langflow/frontend/assets/index-CdAA76nb.js +0 -1
  2713. langflow/frontend/assets/index-CdF9a2AQ.js +0 -1
  2714. langflow/frontend/assets/index-CdkEzbiq.js +0 -1
  2715. langflow/frontend/assets/index-CdpeTEu3.js +0 -1
  2716. langflow/frontend/assets/index-CdvVuqrd.js +0 -1
  2717. langflow/frontend/assets/index-Chwrg6NM.js +0 -1
  2718. langflow/frontend/assets/index-CiRQeOus.js +0 -21
  2719. langflow/frontend/assets/index-CijDL1dB.js +0 -1
  2720. langflow/frontend/assets/index-CjKkCVhH.js +0 -1
  2721. langflow/frontend/assets/index-Cl1KHEyH.js +0 -1
  2722. langflow/frontend/assets/index-CmXnjyKY.js +0 -1
  2723. langflow/frontend/assets/index-CnT2_jSY.js +0 -1
  2724. langflow/frontend/assets/index-Co3YeaXx.js +0 -1
  2725. langflow/frontend/assets/index-Cs3-sK-a.js +0 -1
  2726. langflow/frontend/assets/index-CsTWry2_.js +0 -1
  2727. langflow/frontend/assets/index-Ct8fkhUT.js +0 -1
  2728. langflow/frontend/assets/index-CtK-L2jl.js +0 -1
  2729. langflow/frontend/assets/index-Cyk7Agx0.js +0 -1
  2730. langflow/frontend/assets/index-CyzOedfD.js +0 -1
  2731. langflow/frontend/assets/index-D-Uu_vTd.js +0 -1
  2732. langflow/frontend/assets/index-D07yTnk4.js +0 -1
  2733. langflow/frontend/assets/index-D0j6qSq0.js +0 -1
  2734. langflow/frontend/assets/index-D3JpxHSo.js +0 -1
  2735. langflow/frontend/assets/index-D4zxO71C.js +0 -1
  2736. langflow/frontend/assets/index-D7jPR919.js +0 -1
  2737. langflow/frontend/assets/index-D7pDn6fd.js +0 -1
  2738. langflow/frontend/assets/index-D81pKHkI.js +0 -1
  2739. langflow/frontend/assets/index-D8PQERwj.js +0 -1
  2740. langflow/frontend/assets/index-DAEurvCd.css +0 -1
  2741. langflow/frontend/assets/index-DDkySUcP.js +0 -1
  2742. langflow/frontend/assets/index-DFa3psLK.js +0 -1
  2743. langflow/frontend/assets/index-DFsR9qSp.js +0 -1
  2744. langflow/frontend/assets/index-DGJKFGjb.js +0 -1
  2745. langflow/frontend/assets/index-DH-pVjzI.js +0 -1
  2746. langflow/frontend/assets/index-DMCH04Ph.js +0 -1
  2747. langflow/frontend/assets/index-DMMmoC19.js +0 -1
  2748. langflow/frontend/assets/index-DNRcnVlE.js +0 -20
  2749. langflow/frontend/assets/index-DOQ5tE-k.js +0 -1
  2750. langflow/frontend/assets/index-DP4vHVvN.js +0 -1
  2751. langflow/frontend/assets/index-DQVMWKC2.js +0 -1
  2752. langflow/frontend/assets/index-DT-JPbmI.js +0 -1
  2753. langflow/frontend/assets/index-DU6sCQLx.js +0 -1
  2754. langflow/frontend/assets/index-DWJUu4l4.js +0 -1
  2755. langflow/frontend/assets/index-DWX6jhDC.js +0 -1
  2756. langflow/frontend/assets/index-DWbQN8M_.js +0 -1
  2757. langflow/frontend/assets/index-DYS8-q7t.js +0 -205
  2758. langflow/frontend/assets/index-DZV7ctlk.js +0 -1
  2759. langflow/frontend/assets/index-Dc20U9WQ.js +0 -1
  2760. langflow/frontend/assets/index-DeYPekLq.js +0 -1
  2761. langflow/frontend/assets/index-DeajL7KN.js +0 -1
  2762. langflow/frontend/assets/index-DfqtQJMq.js +0 -1
  2763. langflow/frontend/assets/index-DjO56rO2.js +0 -1
  2764. langflow/frontend/assets/index-Djpcx_1v.js +0 -767
  2765. langflow/frontend/assets/index-DjsE_7d5.js +0 -1
  2766. langflow/frontend/assets/index-DkX20i31.js +0 -1
  2767. langflow/frontend/assets/index-Dmd5UVUs.js +0 -1
  2768. langflow/frontend/assets/index-Dmvf-aha.js +0 -1
  2769. langflow/frontend/assets/index-Dp8Rpamo.js +0 -1
  2770. langflow/frontend/assets/index-DpYnrPkY.js +0 -1
  2771. langflow/frontend/assets/index-DpsQFH7o.js +0 -1
  2772. langflow/frontend/assets/index-DqPVs-kd.js +0 -1
  2773. langflow/frontend/assets/index-Dqpk6P6s.js +0 -1
  2774. langflow/frontend/assets/index-DsE1SkrL.js +0 -1
  2775. langflow/frontend/assets/index-DsHnhuAY.js +0 -1
  2776. langflow/frontend/assets/index-DtipHbpz.js +0 -1
  2777. langflow/frontend/assets/index-DuQJPV8v.js +0 -13
  2778. langflow/frontend/assets/index-DvtyAW6_.js +0 -1
  2779. langflow/frontend/assets/index-DwEIDdw8.js +0 -1
  2780. langflow/frontend/assets/index-Dx6yqA_u.js +0 -1
  2781. langflow/frontend/assets/index-DxlU2Hix.js +0 -1
  2782. langflow/frontend/assets/index-Dxvr9Vbb.js +0 -1
  2783. langflow/frontend/assets/index-DyT6h0l2.js +0 -1
  2784. langflow/frontend/assets/index-DyyY6WXk.js +0 -1
  2785. langflow/frontend/assets/index-HA1Ofu-I.js +0 -1
  2786. langflow/frontend/assets/index-Hh9s2XLh.js +0 -1
  2787. langflow/frontend/assets/index-HqVqyIIv.js +0 -1
  2788. langflow/frontend/assets/index-JO7wttVd.js +0 -1
  2789. langflow/frontend/assets/index-J_d1bre0.js +0 -1
  2790. langflow/frontend/assets/index-Jnq-D4Oh.js +0 -1
  2791. langflow/frontend/assets/index-JoEdvcgt.js +0 -1
  2792. langflow/frontend/assets/index-LlPgUAJ-.js +0 -1
  2793. langflow/frontend/assets/index-Lu0FHLar.js +0 -1
  2794. langflow/frontend/assets/index-M3nD0-64.js +0 -1
  2795. langflow/frontend/assets/index-Oy_hP1Kd.js +0 -1
  2796. langflow/frontend/assets/index-RGj980js.js +0 -1
  2797. langflow/frontend/assets/index-SIDPyeYx.js +0 -1
  2798. langflow/frontend/assets/index-Sf5MhYtA.js +0 -1
  2799. langflow/frontend/assets/index-TTbHUNLo.js +0 -399
  2800. langflow/frontend/assets/index-UxXUrgHV.js +0 -1
  2801. langflow/frontend/assets/index-VYnm2lYi.js +0 -1
  2802. langflow/frontend/assets/index-WEnLaMUM.js +0 -7320
  2803. langflow/frontend/assets/index-WaoPpKpf.js +0 -1
  2804. langflow/frontend/assets/index-ZT44MvCq.js +0 -1
  2805. langflow/frontend/assets/index-ZiJOT5Wc.js +0 -1
  2806. langflow/frontend/assets/index-_4LNLnfi.js +0 -1
  2807. langflow/frontend/assets/index-_OUAQMK1.js +0 -1
  2808. langflow/frontend/assets/index-e-DmqpXq.js +0 -1
  2809. langflow/frontend/assets/index-ePlyYW-3.js +0 -1
  2810. langflow/frontend/assets/index-iRFGmm7x.js +0 -1
  2811. langflow/frontend/assets/index-jna64yFb.js +0 -1
  2812. langflow/frontend/assets/index-llLGGgkc.js +0 -1
  2813. langflow/frontend/assets/index-lrBumqxv.js +0 -1
  2814. langflow/frontend/assets/index-lv1Yk_1G.js +0 -1
  2815. langflow/frontend/assets/index-oC1hrNm6.js +0 -1
  2816. langflow/frontend/assets/index-p5L9kmh4.js +0 -1
  2817. langflow/frontend/assets/index-qmT95zNw.js +0 -381
  2818. langflow/frontend/assets/index-uL3l3GTf.js +0 -1
  2819. langflow/frontend/assets/index-v5Z-m4J0.js +0 -1
  2820. langflow/frontend/assets/index-z-b5PfEK.js +0 -1
  2821. langflow/frontend/assets/index-zlwkaC9J.js +0 -1
  2822. langflow/frontend/assets/index-zmhF5oOg.js +0 -1
  2823. langflow/frontend/assets/indian-rupee-Cpggn4Q0.js +0 -6
  2824. langflow/frontend/assets/infinity-C20-1cMe.js +0 -6
  2825. langflow/frontend/assets/info-xldT9iqK.js +0 -6
  2826. langflow/frontend/assets/inspection-panel-DxaIjonQ.js +0 -6
  2827. langflow/frontend/assets/instagram-DEBg9p35.js +0 -6
  2828. langflow/frontend/assets/italic-CQHA634f.js +0 -6
  2829. langflow/frontend/assets/iteration-ccw-aPswwQC_.js +0 -6
  2830. langflow/frontend/assets/iteration-cw-Bkch39KX.js +0 -6
  2831. langflow/frontend/assets/japanese-yen-Dg5EAJZW.js +0 -6
  2832. langflow/frontend/assets/joystick-ComUKop3.js +0 -6
  2833. langflow/frontend/assets/kanban-CmEzjgc1.js +0 -6
  2834. langflow/frontend/assets/key-BKSoBysm.js +0 -6
  2835. langflow/frontend/assets/key-round-BZqYV-rd.js +0 -6
  2836. langflow/frontend/assets/key-square-CBJpmRKI.js +0 -6
  2837. langflow/frontend/assets/keyboard-BOazC_jX.js +0 -6
  2838. langflow/frontend/assets/keyboard-music-3IGHJe4D.js +0 -6
  2839. langflow/frontend/assets/keyboard-off-B1RYcAij.js +0 -6
  2840. langflow/frontend/assets/lamp-IamA9K7v.js +0 -6
  2841. langflow/frontend/assets/lamp-ceiling-D8yuFDO8.js +0 -6
  2842. langflow/frontend/assets/lamp-desk-CjS2jOg4.js +0 -6
  2843. langflow/frontend/assets/lamp-floor-Co8bMxuI.js +0 -6
  2844. langflow/frontend/assets/lamp-wall-down-DxgYmS9I.js +0 -6
  2845. langflow/frontend/assets/lamp-wall-up-B1mESpTH.js +0 -6
  2846. langflow/frontend/assets/land-plot-FYKk6Ye7.js +0 -6
  2847. langflow/frontend/assets/landmark-B9a7oJ9B.js +0 -6
  2848. langflow/frontend/assets/languages-855HdB5I.js +0 -6
  2849. langflow/frontend/assets/laptop-DOOHb8g6.js +0 -6
  2850. langflow/frontend/assets/laptop-minimal-DFVZjEuy.js +0 -6
  2851. langflow/frontend/assets/laptop-minimal-check-By04EKEP.js +0 -6
  2852. langflow/frontend/assets/lasso-MHdIEab8.js +0 -6
  2853. langflow/frontend/assets/lasso-select-BrlX2fXa.js +0 -6
  2854. langflow/frontend/assets/laugh-EXkSwdqe.js +0 -6
  2855. langflow/frontend/assets/layers-2-QRvD5rJZ.js +0 -6
  2856. langflow/frontend/assets/layers-BOxU_0dH.js +0 -6
  2857. langflow/frontend/assets/layout-dashboard-D1C76WCZ.js +0 -6
  2858. langflow/frontend/assets/layout-grid-CFbfSE9S.js +0 -6
  2859. langflow/frontend/assets/layout-list-CuE41rUa.js +0 -6
  2860. langflow/frontend/assets/layout-panel-left-1TzqadYK.js +0 -6
  2861. langflow/frontend/assets/layout-panel-top-BKTyOrrX.js +0 -6
  2862. langflow/frontend/assets/layout-template-BvAejLTc.js +0 -6
  2863. langflow/frontend/assets/lazyIconImports-EsEZbhdb.js +0 -2
  2864. langflow/frontend/assets/leaf-CzWxT2sz.js +0 -6
  2865. langflow/frontend/assets/leafy-green-DgdAAqr1.js +0 -6
  2866. langflow/frontend/assets/lectern-BiCCrKrn.js +0 -6
  2867. langflow/frontend/assets/letter-text-DBZNdKjs.js +0 -6
  2868. langflow/frontend/assets/library-CGsMYtRR.js +0 -6
  2869. langflow/frontend/assets/library-big-0wqE3mOV.js +0 -6
  2870. langflow/frontend/assets/life-buoy-r8NembdR.js +0 -6
  2871. langflow/frontend/assets/ligature-C6mZlMV_.js +0 -6
  2872. langflow/frontend/assets/lightbulb-DtN3wwfn.js +0 -6
  2873. langflow/frontend/assets/lightbulb-off-CdVduQnp.js +0 -6
  2874. langflow/frontend/assets/link-2-BefnaEHt.js +0 -6
  2875. langflow/frontend/assets/link-2-off-DZgh-syo.js +0 -6
  2876. langflow/frontend/assets/link-B2chT3yj.js +0 -6
  2877. langflow/frontend/assets/linkedin-CBv94ofa.js +0 -6
  2878. langflow/frontend/assets/list-6ct-Drpk.js +0 -6
  2879. langflow/frontend/assets/list-check-JJK3NG4H.js +0 -6
  2880. langflow/frontend/assets/list-checks-COC-ytlG.js +0 -6
  2881. langflow/frontend/assets/list-collapse-MGzYco-j.js +0 -6
  2882. langflow/frontend/assets/list-end-BEon9b1L.js +0 -6
  2883. langflow/frontend/assets/list-filter-UpxvbPyu.js +0 -6
  2884. langflow/frontend/assets/list-filter-plus-BTer83sG.js +0 -6
  2885. langflow/frontend/assets/list-minus-BxpuSeKV.js +0 -6
  2886. langflow/frontend/assets/list-music-Ooxv6RY8.js +0 -6
  2887. langflow/frontend/assets/list-ordered-uoUbM1Fy.js +0 -6
  2888. langflow/frontend/assets/list-plus-BNtSY58I.js +0 -6
  2889. langflow/frontend/assets/list-restart-DoXiUHNv.js +0 -6
  2890. langflow/frontend/assets/list-start-BhjrEfyo.js +0 -6
  2891. langflow/frontend/assets/list-todo-Dq0fHnmZ.js +0 -6
  2892. langflow/frontend/assets/list-tree-BMNWLbBt.js +0 -6
  2893. langflow/frontend/assets/list-video-eT890Jfc.js +0 -6
  2894. langflow/frontend/assets/list-x-BDdKWWzw.js +0 -6
  2895. langflow/frontend/assets/loader-CAqlHHaA.js +0 -6
  2896. langflow/frontend/assets/loader-circle-DasBosot.js +0 -6
  2897. langflow/frontend/assets/loader-pinwheel-DTFmrQs5.js +0 -6
  2898. langflow/frontend/assets/locate-DGgieN7-.js +0 -6
  2899. langflow/frontend/assets/locate-fixed-QpchcVsT.js +0 -6
  2900. langflow/frontend/assets/locate-off-H_0PYeUh.js +0 -6
  2901. langflow/frontend/assets/location-edit-Dk401qaY.js +0 -6
  2902. langflow/frontend/assets/lock-DZFXFaqe.js +0 -6
  2903. langflow/frontend/assets/lock-keyhole-CebYTln5.js +0 -6
  2904. langflow/frontend/assets/lock-keyhole-open-CpTgSO4_.js +0 -6
  2905. langflow/frontend/assets/lock-open-B5o_YgUB.js +0 -6
  2906. langflow/frontend/assets/log-in-Caqjc7c_.js +0 -6
  2907. langflow/frontend/assets/log-out-CQcA-MT-.js +0 -6
  2908. langflow/frontend/assets/logs-C7LfsREb.js +0 -6
  2909. langflow/frontend/assets/lollipop-CaL1vnMv.js +0 -6
  2910. langflow/frontend/assets/luggage-DpZUprkT.js +0 -6
  2911. langflow/frontend/assets/magnet-DCiVOZkG.js +0 -6
  2912. langflow/frontend/assets/mail-DFdZdlTB.js +0 -6
  2913. langflow/frontend/assets/mail-check-Do0h65ps.js +0 -6
  2914. langflow/frontend/assets/mail-minus-BNanHl1M.js +0 -6
  2915. langflow/frontend/assets/mail-open-Bm3wOmjr.js +0 -6
  2916. langflow/frontend/assets/mail-plus-CQnxrEQI.js +0 -6
  2917. langflow/frontend/assets/mail-question-Bi9B78Wl.js +0 -6
  2918. langflow/frontend/assets/mail-search-B_YC48oN.js +0 -6
  2919. langflow/frontend/assets/mail-warning-DGKIbBFi.js +0 -6
  2920. langflow/frontend/assets/mail-x-fmRT0IJX.js +0 -6
  2921. langflow/frontend/assets/mailbox-BZXnP0yY.js +0 -6
  2922. langflow/frontend/assets/mails-CSP6MQsR.js +0 -6
  2923. langflow/frontend/assets/map-Ch2UXG-j.js +0 -6
  2924. langflow/frontend/assets/map-pin-check-Df_Obr5D.js +0 -6
  2925. langflow/frontend/assets/map-pin-check-inside-EzwhnW-H.js +0 -6
  2926. langflow/frontend/assets/map-pin-house-BjyT_CzQ.js +0 -6
  2927. langflow/frontend/assets/map-pin-minus-BNSjYNhA.js +0 -6
  2928. langflow/frontend/assets/map-pin-minus-inside-CW74KuTT.js +0 -6
  2929. langflow/frontend/assets/map-pin-off-CS5GFDtc.js +0 -6
  2930. langflow/frontend/assets/map-pin-plus-BMf9jIDU.js +0 -6
  2931. langflow/frontend/assets/map-pin-plus-inside-BLzcF-Wf.js +0 -6
  2932. langflow/frontend/assets/map-pin-q8KSZ6IC.js +0 -6
  2933. langflow/frontend/assets/map-pin-x-67pg0TQ5.js +0 -6
  2934. langflow/frontend/assets/map-pin-x-inside-X6wPgZON.js +0 -6
  2935. langflow/frontend/assets/map-pinned-Y7lecS5o.js +0 -6
  2936. langflow/frontend/assets/map-plus-1SP4m8Db.js +0 -6
  2937. langflow/frontend/assets/mars-DJqaUzjH.js +0 -6
  2938. langflow/frontend/assets/mars-stroke-CFmbgdWr.js +0 -6
  2939. langflow/frontend/assets/martini-Bg4zEXqo.js +0 -6
  2940. langflow/frontend/assets/maximize-2-BMIaAREh.js +0 -6
  2941. langflow/frontend/assets/maximize-CTT85jHt.js +0 -6
  2942. langflow/frontend/assets/medal-mWlFwPSw.js +0 -6
  2943. langflow/frontend/assets/megaphone-D9ORmcOW.js +0 -6
  2944. langflow/frontend/assets/megaphone-off-Bh0NFDiO.js +0 -6
  2945. langflow/frontend/assets/meh-JB8Ou98V.js +0 -6
  2946. langflow/frontend/assets/memory-stick-BAtvbPPp.js +0 -6
  2947. langflow/frontend/assets/menu-Dtogvho4.js +0 -6
  2948. langflow/frontend/assets/merge-DJoe6sUJ.js +0 -6
  2949. langflow/frontend/assets/message-circle-code-C9S-tAyo.js +0 -6
  2950. langflow/frontend/assets/message-circle-dashed-B1mElxgH.js +0 -6
  2951. langflow/frontend/assets/message-circle-heart-YIxv-Hj4.js +0 -6
  2952. langflow/frontend/assets/message-circle-more-srS51j3J.js +0 -6
  2953. langflow/frontend/assets/message-circle-off-DB13S-Oo.js +0 -6
  2954. langflow/frontend/assets/message-circle-plus-BXsLaLnw.js +0 -6
  2955. langflow/frontend/assets/message-circle-question-KYLddDoh.js +0 -6
  2956. langflow/frontend/assets/message-circle-reply-bjxWi6BE.js +0 -6
  2957. langflow/frontend/assets/message-circle-warning-CBjoOUd9.js +0 -6
  2958. langflow/frontend/assets/message-circle-x-C-97SbBw.js +0 -6
  2959. langflow/frontend/assets/message-circle-xCE13Fap.js +0 -6
  2960. langflow/frontend/assets/message-square-CrUVDpmg.js +0 -6
  2961. langflow/frontend/assets/message-square-code-BMvRDj5_.js +0 -6
  2962. langflow/frontend/assets/message-square-dashed-4JnRuxBO.js +0 -6
  2963. langflow/frontend/assets/message-square-diff-I0dCDsH4.js +0 -6
  2964. langflow/frontend/assets/message-square-dot-DpZTV5vc.js +0 -6
  2965. langflow/frontend/assets/message-square-heart-zcWeJQuj.js +0 -6
  2966. langflow/frontend/assets/message-square-lock-vqhetvBl.js +0 -6
  2967. langflow/frontend/assets/message-square-more-C_4x9wH0.js +0 -6
  2968. langflow/frontend/assets/message-square-off-CBt4tm6v.js +0 -6
  2969. langflow/frontend/assets/message-square-plus-D728jYMa.js +0 -6
  2970. langflow/frontend/assets/message-square-quote-CjxEUovX.js +0 -6
  2971. langflow/frontend/assets/message-square-reply-CysELmip.js +0 -6
  2972. langflow/frontend/assets/message-square-share-DTu7tUlS.js +0 -6
  2973. langflow/frontend/assets/message-square-text-DsxFuF1N.js +0 -6
  2974. langflow/frontend/assets/message-square-warning-CC2Kszlo.js +0 -6
  2975. langflow/frontend/assets/message-square-x-ByG69yGr.js +0 -6
  2976. langflow/frontend/assets/messages-square-LpSnc0Za.js +0 -6
  2977. langflow/frontend/assets/mic-i6bWm4Ax.js +0 -6
  2978. langflow/frontend/assets/mic-off-Daz5p4dT.js +0 -6
  2979. langflow/frontend/assets/mic-vocal-D_8IHxP5.js +0 -6
  2980. langflow/frontend/assets/microchip-CTXBXB2K.js +0 -6
  2981. langflow/frontend/assets/microscope-BmWymIb5.js +0 -6
  2982. langflow/frontend/assets/microwave-CVE-PnVT.js +0 -6
  2983. langflow/frontend/assets/milestone-CGxh4U0T.js +0 -6
  2984. langflow/frontend/assets/milk-CYEBFKOj.js +0 -6
  2985. langflow/frontend/assets/milk-off-CTTBdmOo.js +0 -6
  2986. langflow/frontend/assets/minimize-2-CAoBwZ9_.js +0 -6
  2987. langflow/frontend/assets/minimize-C0GIEJjq.js +0 -6
  2988. langflow/frontend/assets/monitor-check-B5OW8L29.js +0 -6
  2989. langflow/frontend/assets/monitor-cog-B0ZFkWUm.js +0 -6
  2990. langflow/frontend/assets/monitor-dot-CJtqL1ML.js +0 -6
  2991. langflow/frontend/assets/monitor-down-Czo30heI.js +0 -6
  2992. langflow/frontend/assets/monitor-ilNHnxEa.js +0 -6
  2993. langflow/frontend/assets/monitor-off-Bec6EzPC.js +0 -6
  2994. langflow/frontend/assets/monitor-pause-BqEkVvsf.js +0 -6
  2995. langflow/frontend/assets/monitor-play-C5-8JUnq.js +0 -6
  2996. langflow/frontend/assets/monitor-smartphone-DaYAOmqn.js +0 -6
  2997. langflow/frontend/assets/monitor-speaker-9FSve0ix.js +0 -6
  2998. langflow/frontend/assets/monitor-stop-Dt4yWTXz.js +0 -6
  2999. langflow/frontend/assets/monitor-up-CNs1tDhV.js +0 -6
  3000. langflow/frontend/assets/monitor-x-BOXUMH4W.js +0 -6
  3001. langflow/frontend/assets/moon-D1u9j-_q.js +0 -6
  3002. langflow/frontend/assets/moon-star-BKmchPdU.js +0 -6
  3003. langflow/frontend/assets/mountain-k0ibd4Uu.js +0 -6
  3004. langflow/frontend/assets/mountain-snow-Cqy0MVlS.js +0 -6
  3005. langflow/frontend/assets/mouse-BU_k9KFI.js +0 -6
  3006. langflow/frontend/assets/mouse-off-VvK4dpdb.js +0 -6
  3007. langflow/frontend/assets/mouse-pointer-2-CkPNZWWi.js +0 -6
  3008. langflow/frontend/assets/mouse-pointer-B6SCaDUC.js +0 -6
  3009. langflow/frontend/assets/mouse-pointer-ban-XRN6kfPH.js +0 -6
  3010. langflow/frontend/assets/mouse-pointer-click-C1jNkknB.js +0 -6
  3011. langflow/frontend/assets/move-3d-Dw4v4BtQ.js +0 -6
  3012. langflow/frontend/assets/move-BXFjX6SJ.js +0 -6
  3013. langflow/frontend/assets/move-diagonal-2-B3gzVVuh.js +0 -6
  3014. langflow/frontend/assets/move-diagonal-C8j08hLF.js +0 -6
  3015. langflow/frontend/assets/move-down-D6yrlLYx.js +0 -6
  3016. langflow/frontend/assets/move-down-left-DkWWdy-J.js +0 -6
  3017. langflow/frontend/assets/move-down-right-DEDCwqL_.js +0 -6
  3018. langflow/frontend/assets/move-horizontal-2fFs7s3v.js +0 -6
  3019. langflow/frontend/assets/move-left-BXxCWTFd.js +0 -6
  3020. langflow/frontend/assets/move-right-Co-5ygLg.js +0 -6
  3021. langflow/frontend/assets/move-up-Di3NNLKu.js +0 -6
  3022. langflow/frontend/assets/move-up-left-Ck_FFQPu.js +0 -6
  3023. langflow/frontend/assets/move-up-right-CLFEgiSC.js +0 -6
  3024. langflow/frontend/assets/move-vertical-DB2dTDSg.js +0 -6
  3025. langflow/frontend/assets/music-2-ntK0UqMJ.js +0 -6
  3026. langflow/frontend/assets/music-3-CXkBtq-e.js +0 -6
  3027. langflow/frontend/assets/music-4-6qcnOXGD.js +0 -6
  3028. langflow/frontend/assets/music-x0KvUUoE.js +0 -6
  3029. langflow/frontend/assets/navigation-2-DefLW4lu.js +0 -6
  3030. langflow/frontend/assets/navigation-2-off-Tqr5YSNC.js +0 -6
  3031. langflow/frontend/assets/navigation-CXOQrWuS.js +0 -6
  3032. langflow/frontend/assets/navigation-off-B7U4Qzwm.js +0 -6
  3033. langflow/frontend/assets/network-BP-20t3k.js +0 -6
  3034. langflow/frontend/assets/newspaper-Ek37BvXu.js +0 -6
  3035. langflow/frontend/assets/nfc-DBirhj8Q.js +0 -6
  3036. langflow/frontend/assets/non-binary-oYR0J5at.js +0 -6
  3037. langflow/frontend/assets/notebook-B1ahNZnx.js +0 -6
  3038. langflow/frontend/assets/notebook-pen-BvoJoVF7.js +0 -6
  3039. langflow/frontend/assets/notebook-tabs-2by2T9a8.js +0 -6
  3040. langflow/frontend/assets/notebook-text-BMBaEUL9.js +0 -6
  3041. langflow/frontend/assets/notepad-text-CS-KcZXo.js +0 -6
  3042. langflow/frontend/assets/notepad-text-dashed-PA3djD-5.js +0 -6
  3043. langflow/frontend/assets/nut-COT-0mel.js +0 -6
  3044. langflow/frontend/assets/nut-off-D6aNPZdr.js +0 -6
  3045. langflow/frontend/assets/octagon-CURSy0K1.js +0 -6
  3046. langflow/frontend/assets/octagon-alert-B4kml_qL.js +0 -6
  3047. langflow/frontend/assets/octagon-minus-GXZICvEu.js +0 -6
  3048. langflow/frontend/assets/octagon-pause-UAVazt8o.js +0 -6
  3049. langflow/frontend/assets/octagon-x-DU_0raDi.js +0 -6
  3050. langflow/frontend/assets/omega-CVbOWMWp.js +0 -6
  3051. langflow/frontend/assets/option-Dv4y72ti.js +0 -6
  3052. langflow/frontend/assets/orbit-P16I57OU.js +0 -6
  3053. langflow/frontend/assets/origami-D0EFLxQl.js +0 -6
  3054. langflow/frontend/assets/package-2-CuQKrRgY.js +0 -6
  3055. langflow/frontend/assets/package-BVQ8JrNb.js +0 -6
  3056. langflow/frontend/assets/package-check-pOlEBDYJ.js +0 -6
  3057. langflow/frontend/assets/package-minus-BsFk844r.js +0 -6
  3058. langflow/frontend/assets/package-open-BfKnrek_.js +0 -6
  3059. langflow/frontend/assets/package-plus-DDMnPH0X.js +0 -6
  3060. langflow/frontend/assets/package-search-NomIXQic.js +0 -6
  3061. langflow/frontend/assets/package-x-BRCXPfwL.js +0 -6
  3062. langflow/frontend/assets/paint-bucket-Bmtz4wkJ.js +0 -6
  3063. langflow/frontend/assets/paint-roller-T8ijGGIX.js +0 -6
  3064. langflow/frontend/assets/paintbrush-CFdkQ4FF.js +0 -6
  3065. langflow/frontend/assets/paintbrush-vertical-BC_Z3gUR.js +0 -6
  3066. langflow/frontend/assets/palette-DATF0I2A.js +0 -6
  3067. langflow/frontend/assets/panel-bottom-DQvwCADO.js +0 -6
  3068. langflow/frontend/assets/panel-bottom-close-BRi7_V37.js +0 -6
  3069. langflow/frontend/assets/panel-bottom-dashed-c3jlG6WN.js +0 -6
  3070. langflow/frontend/assets/panel-bottom-open-CziWCmVc.js +0 -6
  3071. langflow/frontend/assets/panel-left-close-CYPMlHIo.js +0 -6
  3072. langflow/frontend/assets/panel-left-dashed-wD7ybOWL.js +0 -6
  3073. langflow/frontend/assets/panel-left-open-DpjXYg_A.js +0 -6
  3074. langflow/frontend/assets/panel-right-D4ccEXgx.js +0 -6
  3075. langflow/frontend/assets/panel-right-close-BoV4jLJS.js +0 -6
  3076. langflow/frontend/assets/panel-right-dashed-CI3iCndd.js +0 -6
  3077. langflow/frontend/assets/panel-right-open-B594feo0.js +0 -6
  3078. langflow/frontend/assets/panel-top-T7o9FNV0.js +0 -6
  3079. langflow/frontend/assets/panel-top-close-DCzgGADj.js +0 -6
  3080. langflow/frontend/assets/panel-top-dashed-BPhDHZ6-.js +0 -6
  3081. langflow/frontend/assets/panel-top-open-BRie6W4d.js +0 -6
  3082. langflow/frontend/assets/panels-left-bottom-CK-tGFHo.js +0 -6
  3083. langflow/frontend/assets/panels-right-bottom-DYPphEl6.js +0 -6
  3084. langflow/frontend/assets/panels-top-left-CC_L6AHJ.js +0 -6
  3085. langflow/frontend/assets/paperclip-xxKMyX41.js +0 -6
  3086. langflow/frontend/assets/parentheses-D83P3FBJ.js +0 -6
  3087. langflow/frontend/assets/parking-meter-Bmz3Kgd8.js +0 -6
  3088. langflow/frontend/assets/party-popper-BPCEEntv.js +0 -6
  3089. langflow/frontend/assets/pause-JynHm_nM.js +0 -6
  3090. langflow/frontend/assets/paw-print-Bfy8LFYc.js +0 -6
  3091. langflow/frontend/assets/pc-case-olNRdbQV.js +0 -6
  3092. langflow/frontend/assets/pen-1h-AkykB.js +0 -6
  3093. langflow/frontend/assets/pen-line-C-XMeDap.js +0 -6
  3094. langflow/frontend/assets/pen-off-BYh5pO_P.js +0 -6
  3095. langflow/frontend/assets/pen-tool-BEQdeNfo.js +0 -6
  3096. langflow/frontend/assets/pencil-BqEUxDhG.js +0 -6
  3097. langflow/frontend/assets/pencil-line-B5RM-xqg.js +0 -6
  3098. langflow/frontend/assets/pencil-off-CshHUkcw.js +0 -6
  3099. langflow/frontend/assets/pencil-ruler-au4KlqF6.js +0 -6
  3100. langflow/frontend/assets/pentagon-C0qbIwdl.js +0 -6
  3101. langflow/frontend/assets/percent-Bwl17U3x.js +0 -6
  3102. langflow/frontend/assets/person-standing-DN2lgtp1.js +0 -6
  3103. langflow/frontend/assets/philippine-peso-DGUZEkVO.js +0 -6
  3104. langflow/frontend/assets/phone-BV5IhTaD.js +0 -6
  3105. langflow/frontend/assets/phone-call-SXT3tI_c.js +0 -6
  3106. langflow/frontend/assets/phone-forwarded-BCtRTtHe.js +0 -6
  3107. langflow/frontend/assets/phone-incoming-BrFRSN4e.js +0 -6
  3108. langflow/frontend/assets/phone-missed-BYSFBY6C.js +0 -6
  3109. langflow/frontend/assets/phone-off-Gc2KSpeT.js +0 -6
  3110. langflow/frontend/assets/phone-outgoing-Cvp_NS_7.js +0 -6
  3111. langflow/frontend/assets/pi-pJZJOjwf.js +0 -6
  3112. langflow/frontend/assets/piano-Ctg09MY4.js +0 -6
  3113. langflow/frontend/assets/pickaxe-B2x9XH7Q.js +0 -6
  3114. langflow/frontend/assets/picture-in-picture-2-ydkfd4sc.js +0 -6
  3115. langflow/frontend/assets/picture-in-picture-CjjNDHf-.js +0 -6
  3116. langflow/frontend/assets/piggy-bank-aHmASjn-.js +0 -6
  3117. langflow/frontend/assets/pilcrow-BMYBaY6P.js +0 -6
  3118. langflow/frontend/assets/pilcrow-left-GBDEPDBK.js +0 -6
  3119. langflow/frontend/assets/pilcrow-right-B6EFqB5J.js +0 -6
  3120. langflow/frontend/assets/pill-Bks1BLic.js +0 -6
  3121. langflow/frontend/assets/pill-bottle-BDHiL_k_.js +0 -6
  3122. langflow/frontend/assets/pin-lusUVzfN.js +0 -6
  3123. langflow/frontend/assets/pin-off-wMlm9QX4.js +0 -6
  3124. langflow/frontend/assets/pipette-C4NTCBW_.js +0 -6
  3125. langflow/frontend/assets/pizza-D2pzJNSN.js +0 -6
  3126. langflow/frontend/assets/plane-BkWbETFz.js +0 -6
  3127. langflow/frontend/assets/plane-landing-4gMYGmSk.js +0 -6
  3128. langflow/frontend/assets/plane-takeoff-Coa4IabQ.js +0 -6
  3129. langflow/frontend/assets/play-B5jGPega.js +0 -6
  3130. langflow/frontend/assets/plug-2-BOxp-XBD.js +0 -6
  3131. langflow/frontend/assets/plug-D-o0rzsl.js +0 -6
  3132. langflow/frontend/assets/plug-zap-BXmKlG4e.js +0 -6
  3133. langflow/frontend/assets/pocket-hN3FkdCn.js +0 -6
  3134. langflow/frontend/assets/pocket-knife-DkGRh5Tm.js +0 -6
  3135. langflow/frontend/assets/podcast-CbxyoVHt.js +0 -6
  3136. langflow/frontend/assets/pointer-B5dxwHug.js +0 -6
  3137. langflow/frontend/assets/pointer-off-Bd8MZeGs.js +0 -6
  3138. langflow/frontend/assets/popcorn-BRHTMmqq.js +0 -6
  3139. langflow/frontend/assets/popsicle-BNL5yIkF.js +0 -6
  3140. langflow/frontend/assets/pound-sterling-yxGAgjir.js +0 -6
  3141. langflow/frontend/assets/power-DzNj3Lxg.js +0 -6
  3142. langflow/frontend/assets/power-off-C2vC_UUs.js +0 -6
  3143. langflow/frontend/assets/presentation-DKEWKwxa.js +0 -6
  3144. langflow/frontend/assets/printer-BKuicaQu.js +0 -6
  3145. langflow/frontend/assets/printer-check-9EmN22AN.js +0 -6
  3146. langflow/frontend/assets/projector-D8d9RQkl.js +0 -6
  3147. langflow/frontend/assets/proportions-B77x2wEG.js +0 -6
  3148. langflow/frontend/assets/puzzle-fkxB9-pJ.js +0 -6
  3149. langflow/frontend/assets/pyramid-CW-De3sr.js +0 -6
  3150. langflow/frontend/assets/qr-code-BNfQUpLJ.js +0 -6
  3151. langflow/frontend/assets/quote-C9MCjpq5.js +0 -6
  3152. langflow/frontend/assets/rabbit-_oGdUrYY.js +0 -6
  3153. langflow/frontend/assets/radar-BlyKhPZI.js +0 -6
  3154. langflow/frontend/assets/radiation-BOL8fEhT.js +0 -6
  3155. langflow/frontend/assets/radical-tWxKa-AC.js +0 -6
  3156. langflow/frontend/assets/radio-BfYUebgi.js +0 -6
  3157. langflow/frontend/assets/radio-receiver-Ck91JWQY.js +0 -6
  3158. langflow/frontend/assets/radio-tower-Dm8HRXs9.js +0 -6
  3159. langflow/frontend/assets/radius-DDGc9qST.js +0 -6
  3160. langflow/frontend/assets/rail-symbol-Cr3ouuZb.js +0 -6
  3161. langflow/frontend/assets/rainbow-FP12w3mE.js +0 -6
  3162. langflow/frontend/assets/rat-B6TEHFIp.js +0 -6
  3163. langflow/frontend/assets/ratio-sN3e5EDP.js +0 -6
  3164. langflow/frontend/assets/receipt-BEOa62G3.js +0 -6
  3165. langflow/frontend/assets/receipt-cent-DKqWuXym.js +0 -6
  3166. langflow/frontend/assets/receipt-euro-BI56AvSX.js +0 -6
  3167. langflow/frontend/assets/receipt-indian-rupee-eZnI0TcA.js +0 -6
  3168. langflow/frontend/assets/receipt-japanese-yen-BEThwf4H.js +0 -6
  3169. langflow/frontend/assets/receipt-pound-sterling-koGa3rrt.js +0 -6
  3170. langflow/frontend/assets/receipt-russian-ruble-BBPuTrSq.js +0 -6
  3171. langflow/frontend/assets/receipt-swiss-franc-c9VvFBs1.js +0 -6
  3172. langflow/frontend/assets/receipt-text-BR3U4V_d.js +0 -6
  3173. langflow/frontend/assets/rectangle-ellipsis-yct1a7A0.js +0 -6
  3174. langflow/frontend/assets/rectangle-goggles-DXBTRWku.js +0 -6
  3175. langflow/frontend/assets/rectangle-horizontal-1mmx118v.js +0 -6
  3176. langflow/frontend/assets/rectangle-vertical-Cr6EKfGO.js +0 -6
  3177. langflow/frontend/assets/recycle-koW6k7l3.js +0 -6
  3178. langflow/frontend/assets/redo-2-k3FawB3p.js +0 -6
  3179. langflow/frontend/assets/redo-DfE8ibrG.js +0 -6
  3180. langflow/frontend/assets/redo-dot-B5cE74wB.js +0 -6
  3181. langflow/frontend/assets/refresh-ccw-BFKI0blL.js +0 -6
  3182. langflow/frontend/assets/refresh-ccw-dot-zv7_jaWu.js +0 -6
  3183. langflow/frontend/assets/refresh-cw-Cq70RVql.js +0 -6
  3184. langflow/frontend/assets/refresh-cw-off-7o3vUGrD.js +0 -6
  3185. langflow/frontend/assets/refrigerator-CBtKVDkr.js +0 -6
  3186. langflow/frontend/assets/regex-Nr7aMH4p.js +0 -6
  3187. langflow/frontend/assets/remove-formatting-iAuF2uwD.js +0 -6
  3188. langflow/frontend/assets/repeat-1-DFF5MXks.js +0 -6
  3189. langflow/frontend/assets/repeat-2-b7JBpsjj.js +0 -6
  3190. langflow/frontend/assets/repeat-CS30omT1.js +0 -6
  3191. langflow/frontend/assets/replace-DwwlDkPI.js +0 -6
  3192. langflow/frontend/assets/replace-all-BP-jHHbW.js +0 -6
  3193. langflow/frontend/assets/reply-Cs1FSFPK.js +0 -6
  3194. langflow/frontend/assets/reply-all-FZ4bdu3l.js +0 -6
  3195. langflow/frontend/assets/rewind-CSm_WZ43.js +0 -6
  3196. langflow/frontend/assets/ribbon-B-lJ7vi2.js +0 -6
  3197. langflow/frontend/assets/rocket-BxqHmOaF.js +0 -6
  3198. langflow/frontend/assets/rocking-chair-DE70ICG5.js +0 -6
  3199. langflow/frontend/assets/roller-coaster-D9SJcH0I.js +0 -6
  3200. langflow/frontend/assets/rotate-3d-QxvVLAv-.js +0 -6
  3201. langflow/frontend/assets/rotate-ccw-key-Ch1UZXgu.js +0 -6
  3202. langflow/frontend/assets/rotate-ccw-lLLXd3Pt.js +0 -6
  3203. langflow/frontend/assets/rotate-ccw-square-CBPm_9IO.js +0 -6
  3204. langflow/frontend/assets/rotate-cw-DkJ4zptV.js +0 -6
  3205. langflow/frontend/assets/rotate-cw-square-CxMfbjti.js +0 -6
  3206. langflow/frontend/assets/route-BqTWJwBs.js +0 -6
  3207. langflow/frontend/assets/route-off-BABn02SP.js +0 -6
  3208. langflow/frontend/assets/router-DS6QFHZh.js +0 -6
  3209. langflow/frontend/assets/rows-2-Dxb7Srng.js +0 -6
  3210. langflow/frontend/assets/rows-3-DvYH60DA.js +0 -6
  3211. langflow/frontend/assets/rows-4-6xVoIEyk.js +0 -6
  3212. langflow/frontend/assets/rss-BTclfOC2.js +0 -6
  3213. langflow/frontend/assets/ruler-DLrehy1R.js +0 -6
  3214. langflow/frontend/assets/ruler-dimension-line-lGMsixqF.js +0 -6
  3215. langflow/frontend/assets/russian-ruble-BtvlTtu7.js +0 -6
  3216. langflow/frontend/assets/sailboat-BaEt89D0.js +0 -6
  3217. langflow/frontend/assets/salad-Bhkhelo2.js +0 -6
  3218. langflow/frontend/assets/sandwich-ItA2ud2d.js +0 -6
  3219. langflow/frontend/assets/satellite-DE46lqDl.js +0 -6
  3220. langflow/frontend/assets/satellite-dish-CIMR4xqK.js +0 -6
  3221. langflow/frontend/assets/saudi-riyal-STfV-Psd.js +0 -6
  3222. langflow/frontend/assets/save-1nGonPYm.js +0 -6
  3223. langflow/frontend/assets/save-all-LhleK0h0.js +0 -6
  3224. langflow/frontend/assets/save-off-Ct6XEqJa.js +0 -6
  3225. langflow/frontend/assets/scale-3d-BRA0YSBH.js +0 -6
  3226. langflow/frontend/assets/scale-DyBYJQAg.js +0 -6
  3227. langflow/frontend/assets/scaling-DpL8tup2.js +0 -6
  3228. langflow/frontend/assets/scan-GLYtZL84.js +0 -6
  3229. langflow/frontend/assets/scan-barcode-DJb4NYqO.js +0 -6
  3230. langflow/frontend/assets/scan-eye-BOPU133v.js +0 -6
  3231. langflow/frontend/assets/scan-face-BERPfI6A.js +0 -6
  3232. langflow/frontend/assets/scan-heart-Dn5OMG88.js +0 -6
  3233. langflow/frontend/assets/scan-line-B53iewGa.js +0 -6
  3234. langflow/frontend/assets/scan-qr-code-fqBeEQgr.js +0 -6
  3235. langflow/frontend/assets/scan-search-CKbacSi3.js +0 -6
  3236. langflow/frontend/assets/scan-text-BNB2iWTm.js +0 -6
  3237. langflow/frontend/assets/school-BIk9jDdq.js +0 -6
  3238. langflow/frontend/assets/scissors-DXAfvkCX.js +0 -6
  3239. langflow/frontend/assets/scissors-line-dashed-D2d5ziTt.js +0 -6
  3240. langflow/frontend/assets/screen-share-C-CdEP6Y.js +0 -6
  3241. langflow/frontend/assets/screen-share-off-DwUB1dWR.js +0 -6
  3242. langflow/frontend/assets/scroll-CMbmmNvI.js +0 -6
  3243. langflow/frontend/assets/scroll-text-OQgo-xv7.js +0 -6
  3244. langflow/frontend/assets/search-check-D2kl8xVy.js +0 -6
  3245. langflow/frontend/assets/search-code-DE9C3qex.js +0 -6
  3246. langflow/frontend/assets/search-slash-BpHCEpne.js +0 -6
  3247. langflow/frontend/assets/search-x-C-0DdQa3.js +0 -6
  3248. langflow/frontend/assets/section-Qs2zViOB.js +0 -6
  3249. langflow/frontend/assets/send-DvoICzL3.js +0 -6
  3250. langflow/frontend/assets/send-horizontal-CgLIIppL.js +0 -6
  3251. langflow/frontend/assets/send-to-back-DJZLn4B5.js +0 -6
  3252. langflow/frontend/assets/separator-horizontal-Cz8DTBvX.js +0 -6
  3253. langflow/frontend/assets/separator-vertical-C7-PBJtq.js +0 -6
  3254. langflow/frontend/assets/server-CK8ZJqER.js +0 -6
  3255. langflow/frontend/assets/server-cog-B-ctLXHm.js +0 -6
  3256. langflow/frontend/assets/server-crash-piUqO5ar.js +0 -6
  3257. langflow/frontend/assets/server-off-CpuhmMdd.js +0 -6
  3258. langflow/frontend/assets/settings-2-D6Ev74Uu.js +0 -6
  3259. langflow/frontend/assets/settings-BWLvagCs.js +0 -6
  3260. langflow/frontend/assets/shapes-DkdgZeA2.js +0 -6
  3261. langflow/frontend/assets/share-2-B3aZez1Z.js +0 -6
  3262. langflow/frontend/assets/share-DIYo8egg.js +0 -6
  3263. langflow/frontend/assets/sheet-Jlo91ura.js +0 -6
  3264. langflow/frontend/assets/shell-B4F3unTi.js +0 -6
  3265. langflow/frontend/assets/shield-CM6g9HFi.js +0 -6
  3266. langflow/frontend/assets/shield-alert-Bm77aKOG.js +0 -6
  3267. langflow/frontend/assets/shield-ban-DyhyRh1K.js +0 -6
  3268. langflow/frontend/assets/shield-check-CL1lVQwg.js +0 -6
  3269. langflow/frontend/assets/shield-ellipsis-CanU5iRi.js +0 -6
  3270. langflow/frontend/assets/shield-half-isOxDfaQ.js +0 -6
  3271. langflow/frontend/assets/shield-minus-MXmV1aCQ.js +0 -6
  3272. langflow/frontend/assets/shield-off-Bs85xVup.js +0 -6
  3273. langflow/frontend/assets/shield-plus-TxHOqVOh.js +0 -6
  3274. langflow/frontend/assets/shield-question-CTJHcvbB.js +0 -6
  3275. langflow/frontend/assets/shield-user-WMq-MSK-.js +0 -6
  3276. langflow/frontend/assets/shield-x-YQrThreY.js +0 -6
  3277. langflow/frontend/assets/ship-BLH0AGlR.js +0 -6
  3278. langflow/frontend/assets/ship-wheel-DZ8JDWp5.js +0 -6
  3279. langflow/frontend/assets/shirt-D4HmgJ5H.js +0 -6
  3280. langflow/frontend/assets/shopping-bag-TSQGWdmJ.js +0 -6
  3281. langflow/frontend/assets/shopping-basket-DJDdgx6H.js +0 -6
  3282. langflow/frontend/assets/shopping-cart-YRbI8Dj0.js +0 -6
  3283. langflow/frontend/assets/shovel-BE7WcURK.js +0 -6
  3284. langflow/frontend/assets/shower-head-Lt5Scr6T.js +0 -6
  3285. langflow/frontend/assets/shredder-wMmtyvJM.js +0 -6
  3286. langflow/frontend/assets/shrimp-CyhF8EhT.js +0 -6
  3287. langflow/frontend/assets/shrink-D9gVzYls.js +0 -6
  3288. langflow/frontend/assets/shrub-CLDkMNBQ.js +0 -6
  3289. langflow/frontend/assets/shuffle-B2hqco-X.js +0 -6
  3290. langflow/frontend/assets/sigma-BEY7gwUS.js +0 -6
  3291. langflow/frontend/assets/signal-BzXaLkLs.js +0 -6
  3292. langflow/frontend/assets/signal-high-frZgoSsn.js +0 -6
  3293. langflow/frontend/assets/signal-low-BynlpT3O.js +0 -6
  3294. langflow/frontend/assets/signal-medium-DxsRSLdt.js +0 -6
  3295. langflow/frontend/assets/signal-zero-ChLhWeVC.js +0 -6
  3296. langflow/frontend/assets/signature-Cz9Bj33W.js +0 -6
  3297. langflow/frontend/assets/signpost-Fg70Uq2q.js +0 -6
  3298. langflow/frontend/assets/signpost-big-DMXhU5qh.js +0 -6
  3299. langflow/frontend/assets/siren-BFD2IYGi.js +0 -6
  3300. langflow/frontend/assets/skip-back-BEFrWx8B.js +0 -6
  3301. langflow/frontend/assets/skip-forward-4ZlA-HkW.js +0 -6
  3302. langflow/frontend/assets/skull-BNX2NLgP.js +0 -6
  3303. langflow/frontend/assets/slack-CwdNpzfp.js +0 -6
  3304. langflow/frontend/assets/slash-C1oqiMmj.js +0 -6
  3305. langflow/frontend/assets/slice-Cz6wEE8O.js +0 -6
  3306. langflow/frontend/assets/sliders-horizontal-DtY0XwGS.js +0 -6
  3307. langflow/frontend/assets/sliders-vertical-C16etO3I.js +0 -6
  3308. langflow/frontend/assets/smartphone-ag87vZss.js +0 -6
  3309. langflow/frontend/assets/smartphone-charging-1166zBRq.js +0 -6
  3310. langflow/frontend/assets/smartphone-nfc-DbXoxkbd.js +0 -6
  3311. langflow/frontend/assets/smile-26SiuUks.js +0 -6
  3312. langflow/frontend/assets/smile-plus-BE1ssyFq.js +0 -6
  3313. langflow/frontend/assets/snail-CnPL3mEd.js +0 -6
  3314. langflow/frontend/assets/snowflake-Cc2bQ8f4.js +0 -6
  3315. langflow/frontend/assets/sofa-CA5E-JW-.js +0 -6
  3316. langflow/frontend/assets/soup-DToaZM93.js +0 -6
  3317. langflow/frontend/assets/space--F4shtPv.js +0 -6
  3318. langflow/frontend/assets/spade-Uo4caN4D.js +0 -6
  3319. langflow/frontend/assets/sparkle-Dk34Dgqd.js +0 -6
  3320. langflow/frontend/assets/sparkles-CzcvjlaX.js +0 -6
  3321. langflow/frontend/assets/speaker-BHjLsIV8.js +0 -6
  3322. langflow/frontend/assets/speech-BWcIhpUe.js +0 -6
  3323. langflow/frontend/assets/spell-check-2-JoZ9NxuG.js +0 -6
  3324. langflow/frontend/assets/spell-check-VN7xflS3.js +0 -6
  3325. langflow/frontend/assets/spline-mlSW7Ovl.js +0 -6
  3326. langflow/frontend/assets/spline-pointer-BCTAboPo.js +0 -6
  3327. langflow/frontend/assets/split-CUGgv83U.js +0 -6
  3328. langflow/frontend/assets/spray-can-BRaCCZeE.js +0 -6
  3329. langflow/frontend/assets/sprout-Cn-c9J-G.js +0 -6
  3330. langflow/frontend/assets/square-BiVwa33g.js +0 -6
  3331. langflow/frontend/assets/square-activity-DOjOh1Bm.js +0 -6
  3332. langflow/frontend/assets/square-arrow-down-CqmrQwVx.js +0 -6
  3333. langflow/frontend/assets/square-arrow-down-left-DTKB4fNn.js +0 -6
  3334. langflow/frontend/assets/square-arrow-down-right-yCbPuXgn.js +0 -6
  3335. langflow/frontend/assets/square-arrow-left-BKsdvlMv.js +0 -6
  3336. langflow/frontend/assets/square-arrow-out-down-left-DNQnv4Sa.js +0 -6
  3337. langflow/frontend/assets/square-arrow-out-down-right-TJ6_Y-lk.js +0 -6
  3338. langflow/frontend/assets/square-arrow-out-up-left-CrH_cKlw.js +0 -6
  3339. langflow/frontend/assets/square-arrow-out-up-right-COD2UEyJ.js +0 -6
  3340. langflow/frontend/assets/square-arrow-right-D_WQhek8.js +0 -6
  3341. langflow/frontend/assets/square-arrow-up-9qGfMiia.js +0 -6
  3342. langflow/frontend/assets/square-arrow-up-left-BDo2ThSv.js +0 -6
  3343. langflow/frontend/assets/square-arrow-up-right-HzA_orM8.js +0 -6
  3344. langflow/frontend/assets/square-asterisk-J7fGJzo7.js +0 -6
  3345. langflow/frontend/assets/square-bottom-dashed-scissors-shOdIeK3.js +0 -6
  3346. langflow/frontend/assets/square-chart-gantt-QPN0bDZ6.js +0 -6
  3347. langflow/frontend/assets/square-check-DJjo5hX8.js +0 -6
  3348. langflow/frontend/assets/square-check-big-Cbs7rOlK.js +0 -6
  3349. langflow/frontend/assets/square-chevron-down-BZ10O5e1.js +0 -6
  3350. langflow/frontend/assets/square-chevron-left-CZ177xT_.js +0 -6
  3351. langflow/frontend/assets/square-chevron-right-C5T7v81H.js +0 -6
  3352. langflow/frontend/assets/square-chevron-up-CExOKSgA.js +0 -6
  3353. langflow/frontend/assets/square-code-C3OfnYdx.js +0 -6
  3354. langflow/frontend/assets/square-dashed-BRcZ6Tye.js +0 -6
  3355. langflow/frontend/assets/square-dashed-bottom-BNQshftu.js +0 -6
  3356. langflow/frontend/assets/square-dashed-bottom-code-DskgP4GE.js +0 -6
  3357. langflow/frontend/assets/square-dashed-kanban-Cw-fgS1r.js +0 -6
  3358. langflow/frontend/assets/square-dashed-mouse-pointer-BHcgzXqz.js +0 -6
  3359. langflow/frontend/assets/square-divide-BMEkupYx.js +0 -6
  3360. langflow/frontend/assets/square-dot-BauPdgKf.js +0 -6
  3361. langflow/frontend/assets/square-equal-Dqpjw-dM.js +0 -6
  3362. langflow/frontend/assets/square-function-j0aUKDI1.js +0 -6
  3363. langflow/frontend/assets/square-kanban-DfZAfGRW.js +0 -6
  3364. langflow/frontend/assets/square-library-xqC6mZlX.js +0 -6
  3365. langflow/frontend/assets/square-m-DNL2xZjI.js +0 -6
  3366. langflow/frontend/assets/square-menu-Fce0TXg1.js +0 -6
  3367. langflow/frontend/assets/square-minus-CDolPR-t.js +0 -6
  3368. langflow/frontend/assets/square-mouse-pointer-DmnzL9oQ.js +0 -6
  3369. langflow/frontend/assets/square-parking-_qQCbmJE.js +0 -6
  3370. langflow/frontend/assets/square-parking-off-B5Da8uhQ.js +0 -6
  3371. langflow/frontend/assets/square-pen-qArc4JJI.js +0 -6
  3372. langflow/frontend/assets/square-percent-D-dZBl6P.js +0 -6
  3373. langflow/frontend/assets/square-pi-C_yTFcDS.js +0 -6
  3374. langflow/frontend/assets/square-pilcrow-CNYGkHGn.js +0 -6
  3375. langflow/frontend/assets/square-play-BNakjpx1.js +0 -6
  3376. langflow/frontend/assets/square-plus-Dslgx0Dt.js +0 -6
  3377. langflow/frontend/assets/square-power-DC_0rsmt.js +0 -6
  3378. langflow/frontend/assets/square-radical-BBsjhujL.js +0 -6
  3379. langflow/frontend/assets/square-round-corner-DQkb5rNG.js +0 -6
  3380. langflow/frontend/assets/square-scissors-CC-jzHhu.js +0 -6
  3381. langflow/frontend/assets/square-sigma-DeWzVssK.js +0 -6
  3382. langflow/frontend/assets/square-slash-jKUO0W7S.js +0 -6
  3383. langflow/frontend/assets/square-split-horizontal-DgnScXWd.js +0 -6
  3384. langflow/frontend/assets/square-split-vertical-k5PT1jcH.js +0 -6
  3385. langflow/frontend/assets/square-square-CPTS92Fo.js +0 -6
  3386. langflow/frontend/assets/square-stack-RwOAieom.js +0 -6
  3387. langflow/frontend/assets/square-terminal-B84jNrKt.js +0 -6
  3388. langflow/frontend/assets/square-user-Dxy6R4Km.js +0 -6
  3389. langflow/frontend/assets/square-user-round-CRYr3vmR.js +0 -6
  3390. langflow/frontend/assets/square-x-DsntSwnv.js +0 -6
  3391. langflow/frontend/assets/squares-exclude-CaDusUWf.js +0 -6
  3392. langflow/frontend/assets/squares-intersect-02ukIJV1.js +0 -6
  3393. langflow/frontend/assets/squares-subtract-DJ2HG74w.js +0 -6
  3394. langflow/frontend/assets/squares-unite-emI7jEHo.js +0 -6
  3395. langflow/frontend/assets/squircle-BS83u9XR.js +0 -6
  3396. langflow/frontend/assets/squirrel-BQ3FkNIr.js +0 -6
  3397. langflow/frontend/assets/stamp-iNJ5Xeyf.js +0 -6
  3398. langflow/frontend/assets/star-70Hz0tUf.js +0 -6
  3399. langflow/frontend/assets/star-half-DBQUrMSt.js +0 -6
  3400. langflow/frontend/assets/star-off-D9fjEiJB.js +0 -6
  3401. langflow/frontend/assets/step-back-CHQKo12y.js +0 -6
  3402. langflow/frontend/assets/step-forward-CDxpmO2j.js +0 -6
  3403. langflow/frontend/assets/stethoscope-DDz7EsoT.js +0 -6
  3404. langflow/frontend/assets/sticker-DSo3DSjj.js +0 -6
  3405. langflow/frontend/assets/sticky-note-BW-Mk6Uy.js +0 -6
  3406. langflow/frontend/assets/store-DjEEjGzS.js +0 -6
  3407. langflow/frontend/assets/stretch-horizontal-2rlm4gyO.js +0 -6
  3408. langflow/frontend/assets/stretch-vertical-BDYYikGj.js +0 -6
  3409. langflow/frontend/assets/strikethrough-cOf3eYiu.js +0 -6
  3410. langflow/frontend/assets/subscript-BSyiHEZj.js +0 -6
  3411. langflow/frontend/assets/sun-CfcE9T8w.js +0 -6
  3412. langflow/frontend/assets/sun-dim-gSJwKUL5.js +0 -6
  3413. langflow/frontend/assets/sun-medium-CU_pmLHQ.js +0 -6
  3414. langflow/frontend/assets/sun-moon-DBa5bRTh.js +0 -6
  3415. langflow/frontend/assets/sun-snow-DXuZKS53.js +0 -6
  3416. langflow/frontend/assets/sunrise-Cwqe3vd8.js +0 -6
  3417. langflow/frontend/assets/sunset-xm03v-eA.js +0 -6
  3418. langflow/frontend/assets/superscript-CSk7ykY3.js +0 -6
  3419. langflow/frontend/assets/swatch-book-DI7Yr99d.js +0 -6
  3420. langflow/frontend/assets/swiss-franc-QjpsSOuB.js +0 -6
  3421. langflow/frontend/assets/switch-camera-tdl0k2qN.js +0 -6
  3422. langflow/frontend/assets/sword-BgTKXMbO.js +0 -6
  3423. langflow/frontend/assets/swords-BEaT2fIi.js +0 -6
  3424. langflow/frontend/assets/syringe-Buo7txf1.js +0 -6
  3425. langflow/frontend/assets/table-2-KZ_fYCHZ.js +0 -6
  3426. langflow/frontend/assets/table-D7LNVhTz.js +0 -6
  3427. langflow/frontend/assets/table-cells-merge-DLx5JxlU.js +0 -6
  3428. langflow/frontend/assets/table-cells-split-B7rI_ien.js +0 -6
  3429. langflow/frontend/assets/table-columns-split-BOl9_SzE.js +0 -6
  3430. langflow/frontend/assets/table-of-contents-D448P6fn.js +0 -6
  3431. langflow/frontend/assets/table-properties-M-m8B4YE.js +0 -6
  3432. langflow/frontend/assets/table-rows-split-CFHze7JS.js +0 -6
  3433. langflow/frontend/assets/tablet-f7IpXOZ8.js +0 -6
  3434. langflow/frontend/assets/tablet-smartphone-BjrAet74.js +0 -6
  3435. langflow/frontend/assets/tablets-Brc6M5-i.js +0 -6
  3436. langflow/frontend/assets/tag-HVE5J_d0.js +0 -6
  3437. langflow/frontend/assets/tags-CEpajUfy.js +0 -6
  3438. langflow/frontend/assets/tally-1-Bqn4fQOy.js +0 -6
  3439. langflow/frontend/assets/tally-2-f7f5mBwJ.js +0 -6
  3440. langflow/frontend/assets/tally-3-r3SqtLM0.js +0 -6
  3441. langflow/frontend/assets/tally-4-S4wXHsn2.js +0 -6
  3442. langflow/frontend/assets/tally-5-CQQPjLg_.js +0 -6
  3443. langflow/frontend/assets/tangent-BefbUC_X.js +0 -6
  3444. langflow/frontend/assets/target-NNMj0yzN.js +0 -6
  3445. langflow/frontend/assets/telescope-C94P2cyT.js +0 -6
  3446. langflow/frontend/assets/tent-4XFeEr5D.js +0 -6
  3447. langflow/frontend/assets/tent-tree-0wV1TToF.js +0 -6
  3448. langflow/frontend/assets/terminal-BJFHp2Ej.js +0 -6
  3449. langflow/frontend/assets/test-tube-DrDHnAog.js +0 -6
  3450. langflow/frontend/assets/test-tube-diagonal-OLKsIaw5.js +0 -6
  3451. langflow/frontend/assets/test-tubes-CCpGBCoN.js +0 -6
  3452. langflow/frontend/assets/text-C-z4jJDr.js +0 -6
  3453. langflow/frontend/assets/text-cursor-Cot_i0zI.js +0 -6
  3454. langflow/frontend/assets/text-cursor-input-Cupw7w8w.js +0 -6
  3455. langflow/frontend/assets/text-quote-BKYdYnlT.js +0 -6
  3456. langflow/frontend/assets/text-search-CIsWEfhl.js +0 -6
  3457. langflow/frontend/assets/text-select-ClpT17mP.js +0 -6
  3458. langflow/frontend/assets/theater-WA4CwwbD.js +0 -6
  3459. langflow/frontend/assets/thermometer-Dtl1VwKL.js +0 -6
  3460. langflow/frontend/assets/thermometer-snowflake-DqahI9A-.js +0 -6
  3461. langflow/frontend/assets/thermometer-sun-mnhByGtm.js +0 -6
  3462. langflow/frontend/assets/thumbs-down-DWJ2zXiT.js +0 -6
  3463. langflow/frontend/assets/thumbs-up-BYd93pdQ.js +0 -6
  3464. langflow/frontend/assets/ticket-DWtA7l4f.js +0 -6
  3465. langflow/frontend/assets/ticket-check-DTTDK-VE.js +0 -6
  3466. langflow/frontend/assets/ticket-minus-CtyoLnB6.js +0 -6
  3467. langflow/frontend/assets/ticket-percent-C2VJL6jG.js +0 -6
  3468. langflow/frontend/assets/ticket-plus-Bor8beDR.js +0 -6
  3469. langflow/frontend/assets/ticket-slash-Bw5MkRoY.js +0 -6
  3470. langflow/frontend/assets/ticket-x-B1uvMGiv.js +0 -6
  3471. langflow/frontend/assets/tickets-Bq1IF96B.js +0 -6
  3472. langflow/frontend/assets/tickets-plane-Cpn67u1M.js +0 -6
  3473. langflow/frontend/assets/timer-AJl5IfQO.js +0 -6
  3474. langflow/frontend/assets/timer-off-BXi3yWfC.js +0 -6
  3475. langflow/frontend/assets/timer-reset-52fqh1MU.js +0 -6
  3476. langflow/frontend/assets/toggle-left-D6jZWTvU.js +0 -6
  3477. langflow/frontend/assets/toggle-right-B_IpZTA9.js +0 -6
  3478. langflow/frontend/assets/toilet-CzhBbsOW.js +0 -6
  3479. langflow/frontend/assets/tornado-Ctslv2mb.js +0 -6
  3480. langflow/frontend/assets/torus-CAxOZmQ-.js +0 -6
  3481. langflow/frontend/assets/touchpad-BoBSM60t.js +0 -6
  3482. langflow/frontend/assets/touchpad-off-BGGyv-3j.js +0 -6
  3483. langflow/frontend/assets/tower-control-CFyxKkqV.js +0 -6
  3484. langflow/frontend/assets/toy-brick-mA9ucloP.js +0 -6
  3485. langflow/frontend/assets/tractor-4ynpox1t.js +0 -6
  3486. langflow/frontend/assets/traffic-cone-lmKocUIY.js +0 -6
  3487. langflow/frontend/assets/train-front-DOYR4NIK.js +0 -6
  3488. langflow/frontend/assets/train-front-tunnel-C7MMcZnC.js +0 -6
  3489. langflow/frontend/assets/train-track-7QbIFNc3.js +0 -6
  3490. langflow/frontend/assets/tram-front-BqOeAPt2.js +0 -6
  3491. langflow/frontend/assets/transgender-CrhnplcT.js +0 -6
  3492. langflow/frontend/assets/trash-CL1UcIBz.js +0 -6
  3493. langflow/frontend/assets/tree-deciduous-D-wdgZJL.js +0 -6
  3494. langflow/frontend/assets/tree-palm-C7GH1iH7.js +0 -6
  3495. langflow/frontend/assets/tree-pine-DV3VgOEw.js +0 -6
  3496. langflow/frontend/assets/trees-fjyI_7Uq.js +0 -6
  3497. langflow/frontend/assets/trello-DY241H_8.js +0 -6
  3498. langflow/frontend/assets/trending-down-XTuVeMyr.js +0 -6
  3499. langflow/frontend/assets/trending-up-DLM8h4pn.js +0 -6
  3500. langflow/frontend/assets/trending-up-down-BEvCRx3y.js +0 -6
  3501. langflow/frontend/assets/triangle-DSQwXCjX.js +0 -6
  3502. langflow/frontend/assets/triangle-alert-DRQMRfl2.js +0 -6
  3503. langflow/frontend/assets/triangle-dashed-DesUljz4.js +0 -6
  3504. langflow/frontend/assets/triangle-right-B8cd5F09.js +0 -6
  3505. langflow/frontend/assets/trophy-ufE6lTmq.js +0 -6
  3506. langflow/frontend/assets/truck-BtxNv2C0.js +0 -6
  3507. langflow/frontend/assets/truck-electric-D35gsjsA.js +0 -6
  3508. langflow/frontend/assets/turtle-deMI0ApV.js +0 -6
  3509. langflow/frontend/assets/tv-BJgjFW9w.js +0 -6
  3510. langflow/frontend/assets/tv-minimal-DoSpgV4Y.js +0 -6
  3511. langflow/frontend/assets/tv-minimal-play-DP7OmAiB.js +0 -6
  3512. langflow/frontend/assets/twitch-CW5K1XwQ.js +0 -6
  3513. langflow/frontend/assets/twitter-CWGKC5yk.js +0 -6
  3514. langflow/frontend/assets/type-Cf7g9aNB.js +0 -6
  3515. langflow/frontend/assets/type-outline-zkNfmvcK.js +0 -6
  3516. langflow/frontend/assets/umbrella-DeZvqSoA.js +0 -6
  3517. langflow/frontend/assets/umbrella-off-Dkq4OpFh.js +0 -6
  3518. langflow/frontend/assets/underline-DCkb3Lvj.js +0 -6
  3519. langflow/frontend/assets/undo-2-B57TThkA.js +0 -6
  3520. langflow/frontend/assets/undo-Di0Irxnx.js +0 -6
  3521. langflow/frontend/assets/undo-dot-DNllyAvd.js +0 -6
  3522. langflow/frontend/assets/unfold-horizontal-CJnfGjB5.js +0 -6
  3523. langflow/frontend/assets/unfold-vertical-Cw5l9DJ_.js +0 -6
  3524. langflow/frontend/assets/ungroup-Dg4HK1lc.js +0 -6
  3525. langflow/frontend/assets/university-DrKMifZa.js +0 -6
  3526. langflow/frontend/assets/unlink-2-Bs_fPkF_.js +0 -6
  3527. langflow/frontend/assets/unlink-Dgz6-Bu0.js +0 -6
  3528. langflow/frontend/assets/unplug-CJYyRyxn.js +0 -6
  3529. langflow/frontend/assets/upload-CNf8F-KF.js +0 -6
  3530. langflow/frontend/assets/usb-DQ1c1LKp.js +0 -6
  3531. langflow/frontend/assets/use-post-add-user-CPfMEfUy.js +0 -1
  3532. langflow/frontend/assets/user-BXvq532V.js +0 -6
  3533. langflow/frontend/assets/user-check-D0vaiIsH.js +0 -6
  3534. langflow/frontend/assets/user-cog-BkZAcdIE.js +0 -6
  3535. langflow/frontend/assets/user-lock-DUfjw6cm.js +0 -6
  3536. langflow/frontend/assets/user-minus-CsBH80fE.js +0 -6
  3537. langflow/frontend/assets/user-pen-CLAqJ2wd.js +0 -6
  3538. langflow/frontend/assets/user-plus-CajNFbCD.js +0 -6
  3539. langflow/frontend/assets/user-round-BsGn0xki.js +0 -6
  3540. langflow/frontend/assets/user-round-check-Cafcg-Jx.js +0 -6
  3541. langflow/frontend/assets/user-round-cog-Bf7A5hoY.js +0 -6
  3542. langflow/frontend/assets/user-round-minus-B4ZjvpNS.js +0 -6
  3543. langflow/frontend/assets/user-round-pen-CuKThqMc.js +0 -6
  3544. langflow/frontend/assets/user-round-plus-DZqDd_us.js +0 -6
  3545. langflow/frontend/assets/user-round-search-NJdIFm9-.js +0 -6
  3546. langflow/frontend/assets/user-round-x-D1MgtxJ4.js +0 -6
  3547. langflow/frontend/assets/user-search-DW_6HtFt.js +0 -6
  3548. langflow/frontend/assets/user-x-CABKFe8K.js +0 -6
  3549. langflow/frontend/assets/users-1965Un7l.js +0 -6
  3550. langflow/frontend/assets/users-round-DnLLbb0e.js +0 -6
  3551. langflow/frontend/assets/utensils-BLgA30BW.js +0 -6
  3552. langflow/frontend/assets/utensils-crossed-DkAtZsQw.js +0 -6
  3553. langflow/frontend/assets/utility-pole-BZxiIvS4.js +0 -6
  3554. langflow/frontend/assets/variable-8I_V88Ao.js +0 -6
  3555. langflow/frontend/assets/vault-BBrydaXv.js +0 -6
  3556. langflow/frontend/assets/vegan-TTTyt9yS.js +0 -6
  3557. langflow/frontend/assets/venetian-mask-DLC25OZJ.js +0 -6
  3558. langflow/frontend/assets/venus-ME59xccH.js +0 -6
  3559. langflow/frontend/assets/venus-and-mars-DXISb4_r.js +0 -6
  3560. langflow/frontend/assets/vibrate-DeA5MUQE.js +0 -6
  3561. langflow/frontend/assets/vibrate-off-BL17DenG.js +0 -6
  3562. langflow/frontend/assets/video-6Ps-MHVt.js +0 -6
  3563. langflow/frontend/assets/video-off-CoI8cBSa.js +0 -6
  3564. langflow/frontend/assets/videotape-DKGZhYju.js +0 -6
  3565. langflow/frontend/assets/view-DCN0gRLM.js +0 -6
  3566. langflow/frontend/assets/voicemail-uYefTWgi.js +0 -6
  3567. langflow/frontend/assets/volleyball-CN9Qi153.js +0 -6
  3568. langflow/frontend/assets/volume-1-D8zwEtX6.js +0 -6
  3569. langflow/frontend/assets/volume-2-CaZu77VO.js +0 -6
  3570. langflow/frontend/assets/volume-Bt6GSPWX.js +0 -6
  3571. langflow/frontend/assets/volume-off-BuiUCdxn.js +0 -6
  3572. langflow/frontend/assets/volume-x-BnUZoBk2.js +0 -6
  3573. langflow/frontend/assets/vote-D4SyyWMb.js +0 -6
  3574. langflow/frontend/assets/wallet-Dz72PkZS.js +0 -6
  3575. langflow/frontend/assets/wallet-cards-CTNtfPYJ.js +0 -6
  3576. langflow/frontend/assets/wallet-minimal-BuX_Dv2Y.js +0 -6
  3577. langflow/frontend/assets/wallpaper-B_2F5EWc.js +0 -6
  3578. langflow/frontend/assets/wand-B5aVerql.js +0 -6
  3579. langflow/frontend/assets/wand-sparkles-BQtBuymO.js +0 -6
  3580. langflow/frontend/assets/warehouse-CarmEVVI.js +0 -6
  3581. langflow/frontend/assets/washing-machine-BX5W48pN.js +0 -6
  3582. langflow/frontend/assets/watch-BDEXIlkm.js +0 -6
  3583. langflow/frontend/assets/waves-BZ-MatP-.js +0 -6
  3584. langflow/frontend/assets/waves-ladder-45NVxwXw.js +0 -6
  3585. langflow/frontend/assets/waypoints-lhTpOKZh.js +0 -6
  3586. langflow/frontend/assets/webcam-xFegBlsA.js +0 -6
  3587. langflow/frontend/assets/webhook-P9Ez64M_.js +0 -6
  3588. langflow/frontend/assets/webhook-off-BbtLGs23.js +0 -6
  3589. langflow/frontend/assets/weight-CERvVufI.js +0 -6
  3590. langflow/frontend/assets/wheat-5MoBVD_q.js +0 -6
  3591. langflow/frontend/assets/wheat-off-3QCq8vUZ.js +0 -6
  3592. langflow/frontend/assets/whole-word-5OSprVQI.js +0 -6
  3593. langflow/frontend/assets/wifi-_882DqKH.js +0 -6
  3594. langflow/frontend/assets/wifi-high-DF9rBOlT.js +0 -6
  3595. langflow/frontend/assets/wifi-low-B_AVsWfI.js +0 -6
  3596. langflow/frontend/assets/wifi-off-DOY01rzy.js +0 -6
  3597. langflow/frontend/assets/wifi-pen-D_Xod6GZ.js +0 -6
  3598. langflow/frontend/assets/wifi-zero-DHyHG9R4.js +0 -6
  3599. langflow/frontend/assets/wind-Bt0k9BWU.js +0 -6
  3600. langflow/frontend/assets/wind-arrow-down-CUiw-oo1.js +0 -6
  3601. langflow/frontend/assets/wine-C6mpRbaO.js +0 -6
  3602. langflow/frontend/assets/wine-off-6fGf32k2.js +0 -6
  3603. langflow/frontend/assets/workflow-B15wDBUO.js +0 -6
  3604. langflow/frontend/assets/worm-BU38KhjQ.js +0 -6
  3605. langflow/frontend/assets/wrap-text-CYeFABv4.js +0 -6
  3606. langflow/frontend/assets/wrench-lF1zsHIS.js +0 -6
  3607. langflow/frontend/assets/youtube-DyMfF4GW.js +0 -6
  3608. langflow/frontend/assets/zap-B1BhoU23.js +0 -6
  3609. langflow/frontend/assets/zap-off-DsGETBWp.js +0 -6
  3610. langflow/frontend/assets/zoom-in-qpiTJkcj.js +0 -6
  3611. langflow/frontend/assets/zoom-out-B6coWl92.js +0 -6
  3612. langflow_base_nightly-1.7.0.dev15.dist-info/METADATA +0 -98
  3613. langflow_base_nightly-1.7.0.dev15.dist-info/RECORD +0 -2259
  3614. langflow_base_nightly-1.7.0.dev15.dist-info/WHEEL +0 -4
  3615. {langflow_base_nightly-1.7.0.dev15.dist-info → langflow_base_nightly-1.7.0.dev23.dist-info}/entry_points.txt +0 -0
@@ -318,7 +318,7 @@
318
318
  "legacy": false,
319
319
  "lf_version": "1.2.0",
320
320
  "metadata": {
321
- "code_hash": "0014a5b41817",
321
+ "code_hash": "7a26c54d89ed",
322
322
  "dependencies": {
323
323
  "dependencies": [
324
324
  {
@@ -366,7 +366,7 @@
366
366
  "show": true,
367
367
  "title_case": false,
368
368
  "type": "code",
369
- "value": "from lfx.base.data.utils import IMG_FILE_TYPES, TEXT_FILE_TYPES\nfrom lfx.base.io.chat import ChatComponent\nfrom lfx.inputs.inputs import BoolInput\nfrom lfx.io import (\n DropdownInput,\n FileInput,\n MessageTextInput,\n MultilineInput,\n Output,\n)\nfrom lfx.schema.message import Message\nfrom lfx.utils.constants import (\n MESSAGE_SENDER_AI,\n MESSAGE_SENDER_NAME_USER,\n MESSAGE_SENDER_USER,\n)\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n documentation: str = \"https://docs.langflow.org/components-io#chat-input\"\n icon = \"MessagesSquare\"\n name = \"ChatInput\"\n minimized = True\n\n inputs = [\n MultilineInput(\n name=\"input_value\",\n display_name=\"Input Text\",\n value=\"\",\n info=\"Message to be passed as input.\",\n input_types=[],\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],\n value=MESSAGE_SENDER_USER,\n info=\"Type of sender.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=MESSAGE_SENDER_NAME_USER,\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"context_id\",\n display_name=\"Context ID\",\n info=\"The context ID of the chat. Adds an extra layer to the local memory.\",\n value=\"\",\n advanced=True,\n ),\n FileInput(\n name=\"files\",\n display_name=\"Files\",\n file_types=TEXT_FILE_TYPES + IMG_FILE_TYPES,\n info=\"Files to be sent with the message.\",\n advanced=True,\n is_list=True,\n temp_file=True,\n ),\n ]\n outputs = [\n Output(display_name=\"Chat Message\", name=\"message\", method=\"message_response\"),\n ]\n\n async def message_response(self) -> Message:\n # Ensure files is a list and filter out empty/None values\n files = self.files if self.files else []\n if files and not isinstance(files, list):\n files = [files]\n # Filter out None/empty values\n files = [f for f in files if f is not None and f != \"\"]\n\n message = await Message.create(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=self.session_id,\n context_id=self.context_id,\n files=files,\n )\n if self.session_id and isinstance(message, Message) and self.should_store_message:\n stored_message = await self.send_message(\n message,\n )\n self.message.value = stored_message\n message = stored_message\n\n self.status = message\n return message\n"
369
+ "value": "from lfx.base.data.utils import IMG_FILE_TYPES, TEXT_FILE_TYPES\nfrom lfx.base.io.chat import ChatComponent\nfrom lfx.inputs.inputs import BoolInput\nfrom lfx.io import (\n DropdownInput,\n FileInput,\n MessageTextInput,\n MultilineInput,\n Output,\n)\nfrom lfx.schema.message import Message\nfrom lfx.utils.constants import (\n MESSAGE_SENDER_AI,\n MESSAGE_SENDER_NAME_USER,\n MESSAGE_SENDER_USER,\n)\n\n\nclass ChatInput(ChatComponent):\n display_name = \"Chat Input\"\n description = \"Get chat inputs from the Playground.\"\n documentation: str = \"https://docs.langflow.org/chat-input-and-output\"\n icon = \"MessagesSquare\"\n name = \"ChatInput\"\n minimized = True\n\n inputs = [\n MultilineInput(\n name=\"input_value\",\n display_name=\"Input Text\",\n value=\"\",\n info=\"Message to be passed as input.\",\n input_types=[],\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],\n value=MESSAGE_SENDER_USER,\n info=\"Type of sender.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=MESSAGE_SENDER_NAME_USER,\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"context_id\",\n display_name=\"Context ID\",\n info=\"The context ID of the chat. Adds an extra layer to the local memory.\",\n value=\"\",\n advanced=True,\n ),\n FileInput(\n name=\"files\",\n display_name=\"Files\",\n file_types=TEXT_FILE_TYPES + IMG_FILE_TYPES,\n info=\"Files to be sent with the message.\",\n advanced=True,\n is_list=True,\n temp_file=True,\n ),\n ]\n outputs = [\n Output(display_name=\"Chat Message\", name=\"message\", method=\"message_response\"),\n ]\n\n async def message_response(self) -> Message:\n # Ensure files is a list and filter out empty/None values\n files = self.files if self.files else []\n if files and not isinstance(files, list):\n files = [files]\n # Filter out None/empty values\n files = [f for f in files if f is not None and f != \"\"]\n\n session_id = self.session_id or self.graph.session_id or \"\"\n message = await Message.create(\n text=self.input_value,\n sender=self.sender,\n sender_name=self.sender_name,\n session_id=session_id,\n context_id=self.context_id,\n files=files,\n )\n if session_id and isinstance(message, Message) and self.should_store_message:\n stored_message = await self.send_message(\n message,\n )\n self.message.value = stored_message\n message = stored_message\n\n self.status = message\n return message\n"
370
370
  },
371
371
  "context_id": {
372
372
  "_input_type": "MessageTextInput",
@@ -761,7 +761,7 @@
761
761
  "legacy": false,
762
762
  "lf_version": "1.1.1",
763
763
  "metadata": {
764
- "code_hash": "f2867efda61f",
764
+ "code_hash": "b9d63ae59e8a",
765
765
  "dependencies": {
766
766
  "dependencies": [
767
767
  {
@@ -843,7 +843,7 @@
843
843
  "show": true,
844
844
  "title_case": false,
845
845
  "type": "code",
846
- "value": "from langchain_text_splitters import CharacterTextSplitter\n\nfrom lfx.custom.custom_component.component import Component\nfrom lfx.io import DropdownInput, HandleInput, IntInput, MessageTextInput, Output\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame\nfrom lfx.schema.message import Message\nfrom lfx.utils.util import unescape_string\n\n\nclass SplitTextComponent(Component):\n display_name: str = \"Split Text\"\n description: str = \"Split text into chunks based on specified criteria.\"\n documentation: str = \"https://docs.langflow.org/components-processing#split-text\"\n icon = \"scissors-line-dashed\"\n name = \"SplitText\"\n\n inputs = [\n HandleInput(\n name=\"data_inputs\",\n display_name=\"Input\",\n info=\"The data with texts to split in chunks.\",\n input_types=[\"Data\", \"DataFrame\", \"Message\"],\n required=True,\n ),\n IntInput(\n name=\"chunk_overlap\",\n display_name=\"Chunk Overlap\",\n info=\"Number of characters to overlap between chunks.\",\n value=200,\n ),\n IntInput(\n name=\"chunk_size\",\n display_name=\"Chunk Size\",\n info=(\n \"The maximum length of each chunk. Text is first split by separator, \"\n \"then chunks are merged up to this size. \"\n \"Individual splits larger than this won't be further divided.\"\n ),\n value=1000,\n ),\n MessageTextInput(\n name=\"separator\",\n display_name=\"Separator\",\n info=(\n \"The character to split on. Use \\\\n for newline. \"\n \"Examples: \\\\n\\\\n for paragraphs, \\\\n for lines, . for sentences\"\n ),\n value=\"\\n\",\n ),\n MessageTextInput(\n name=\"text_key\",\n display_name=\"Text Key\",\n info=\"The key to use for the text column.\",\n value=\"text\",\n advanced=True,\n ),\n DropdownInput(\n name=\"keep_separator\",\n display_name=\"Keep Separator\",\n info=\"Whether to keep the separator in the output chunks and where to place it.\",\n options=[\"False\", \"True\", \"Start\", \"End\"],\n value=\"False\",\n advanced=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Chunks\", name=\"dataframe\", method=\"split_text\"),\n ]\n\n def _docs_to_data(self, docs) -> list[Data]:\n return [Data(text=doc.page_content, data=doc.metadata) for doc in docs]\n\n def _fix_separator(self, separator: str) -> str:\n \"\"\"Fix common separator issues and convert to proper format.\"\"\"\n if separator == \"/n\":\n return \"\\n\"\n if separator == \"/t\":\n return \"\\t\"\n return separator\n\n def split_text_base(self):\n separator = self._fix_separator(self.separator)\n separator = unescape_string(separator)\n\n if isinstance(self.data_inputs, DataFrame):\n if not len(self.data_inputs):\n msg = \"DataFrame is empty\"\n raise TypeError(msg)\n\n self.data_inputs.text_key = self.text_key\n try:\n documents = self.data_inputs.to_lc_documents()\n except Exception as e:\n msg = f\"Error converting DataFrame to documents: {e}\"\n raise TypeError(msg) from e\n elif isinstance(self.data_inputs, Message):\n self.data_inputs = [self.data_inputs.to_data()]\n return self.split_text_base()\n else:\n if not self.data_inputs:\n msg = \"No data inputs provided\"\n raise TypeError(msg)\n\n documents = []\n if isinstance(self.data_inputs, Data):\n self.data_inputs.text_key = self.text_key\n documents = [self.data_inputs.to_lc_document()]\n else:\n try:\n documents = [input_.to_lc_document() for input_ in self.data_inputs if isinstance(input_, Data)]\n if not documents:\n msg = f\"No valid Data inputs found in {type(self.data_inputs)}\"\n raise TypeError(msg)\n except AttributeError as e:\n msg = f\"Invalid input type in collection: {e}\"\n raise TypeError(msg) from e\n try:\n # Convert string 'False'/'True' to boolean\n keep_sep = self.keep_separator\n if isinstance(keep_sep, str):\n if keep_sep.lower() == \"false\":\n keep_sep = False\n elif keep_sep.lower() == \"true\":\n keep_sep = True\n # 'start' and 'end' are kept as strings\n\n splitter = CharacterTextSplitter(\n chunk_overlap=self.chunk_overlap,\n chunk_size=self.chunk_size,\n separator=separator,\n keep_separator=keep_sep,\n )\n return splitter.split_documents(documents)\n except Exception as e:\n msg = f\"Error splitting text: {e}\"\n raise TypeError(msg) from e\n\n def split_text(self) -> DataFrame:\n return DataFrame(self._docs_to_data(self.split_text_base()))\n"
846
+ "value": "from langchain_text_splitters import CharacterTextSplitter\n\nfrom lfx.custom.custom_component.component import Component\nfrom lfx.io import DropdownInput, HandleInput, IntInput, MessageTextInput, Output\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame\nfrom lfx.schema.message import Message\nfrom lfx.utils.util import unescape_string\n\n\nclass SplitTextComponent(Component):\n display_name: str = \"Split Text\"\n description: str = \"Split text into chunks based on specified criteria.\"\n documentation: str = \"https://docs.langflow.org/split-text\"\n icon = \"scissors-line-dashed\"\n name = \"SplitText\"\n\n inputs = [\n HandleInput(\n name=\"data_inputs\",\n display_name=\"Input\",\n info=\"The data with texts to split in chunks.\",\n input_types=[\"Data\", \"DataFrame\", \"Message\"],\n required=True,\n ),\n IntInput(\n name=\"chunk_overlap\",\n display_name=\"Chunk Overlap\",\n info=\"Number of characters to overlap between chunks.\",\n value=200,\n ),\n IntInput(\n name=\"chunk_size\",\n display_name=\"Chunk Size\",\n info=(\n \"The maximum length of each chunk. Text is first split by separator, \"\n \"then chunks are merged up to this size. \"\n \"Individual splits larger than this won't be further divided.\"\n ),\n value=1000,\n ),\n MessageTextInput(\n name=\"separator\",\n display_name=\"Separator\",\n info=(\n \"The character to split on. Use \\\\n for newline. \"\n \"Examples: \\\\n\\\\n for paragraphs, \\\\n for lines, . for sentences\"\n ),\n value=\"\\n\",\n ),\n MessageTextInput(\n name=\"text_key\",\n display_name=\"Text Key\",\n info=\"The key to use for the text column.\",\n value=\"text\",\n advanced=True,\n ),\n DropdownInput(\n name=\"keep_separator\",\n display_name=\"Keep Separator\",\n info=\"Whether to keep the separator in the output chunks and where to place it.\",\n options=[\"False\", \"True\", \"Start\", \"End\"],\n value=\"False\",\n advanced=True,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Chunks\", name=\"dataframe\", method=\"split_text\"),\n ]\n\n def _docs_to_data(self, docs) -> list[Data]:\n return [Data(text=doc.page_content, data=doc.metadata) for doc in docs]\n\n def _fix_separator(self, separator: str) -> str:\n \"\"\"Fix common separator issues and convert to proper format.\"\"\"\n if separator == \"/n\":\n return \"\\n\"\n if separator == \"/t\":\n return \"\\t\"\n return separator\n\n def split_text_base(self):\n separator = self._fix_separator(self.separator)\n separator = unescape_string(separator)\n\n if isinstance(self.data_inputs, DataFrame):\n if not len(self.data_inputs):\n msg = \"DataFrame is empty\"\n raise TypeError(msg)\n\n self.data_inputs.text_key = self.text_key\n try:\n documents = self.data_inputs.to_lc_documents()\n except Exception as e:\n msg = f\"Error converting DataFrame to documents: {e}\"\n raise TypeError(msg) from e\n elif isinstance(self.data_inputs, Message):\n self.data_inputs = [self.data_inputs.to_data()]\n return self.split_text_base()\n else:\n if not self.data_inputs:\n msg = \"No data inputs provided\"\n raise TypeError(msg)\n\n documents = []\n if isinstance(self.data_inputs, Data):\n self.data_inputs.text_key = self.text_key\n documents = [self.data_inputs.to_lc_document()]\n else:\n try:\n documents = [input_.to_lc_document() for input_ in self.data_inputs if isinstance(input_, Data)]\n if not documents:\n msg = f\"No valid Data inputs found in {type(self.data_inputs)}\"\n raise TypeError(msg)\n except AttributeError as e:\n msg = f\"Invalid input type in collection: {e}\"\n raise TypeError(msg) from e\n try:\n # Convert string 'False'/'True' to boolean\n keep_sep = self.keep_separator\n if isinstance(keep_sep, str):\n if keep_sep.lower() == \"false\":\n keep_sep = False\n elif keep_sep.lower() == \"true\":\n keep_sep = True\n # 'start' and 'end' are kept as strings\n\n splitter = CharacterTextSplitter(\n chunk_overlap=self.chunk_overlap,\n chunk_size=self.chunk_size,\n separator=separator,\n keep_separator=keep_sep,\n )\n return splitter.split_documents(documents)\n except Exception as e:\n msg = f\"Error splitting text: {e}\"\n raise TypeError(msg) from e\n\n def split_text(self) -> DataFrame:\n return DataFrame(self._docs_to_data(self.split_text_base()))\n"
847
847
  },
848
848
  "data_inputs": {
849
849
  "advanced": false,
@@ -1063,7 +1063,7 @@
1063
1063
  "legacy": false,
1064
1064
  "lf_version": "1.1.1",
1065
1065
  "metadata": {
1066
- "code_hash": "4848ad3e35d5",
1066
+ "code_hash": "cae45e2d53f6",
1067
1067
  "dependencies": {
1068
1068
  "dependencies": [
1069
1069
  {
@@ -1137,7 +1137,7 @@
1137
1137
  "show": true,
1138
1138
  "title_case": false,
1139
1139
  "type": "code",
1140
- "value": "from collections.abc import Generator\nfrom typing import Any\n\nimport orjson\nfrom fastapi.encoders import jsonable_encoder\n\nfrom lfx.base.io.chat import ChatComponent\nfrom lfx.helpers.data import safe_convert\nfrom lfx.inputs.inputs import BoolInput, DropdownInput, HandleInput, MessageTextInput\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame\nfrom lfx.schema.message import Message\nfrom lfx.schema.properties import Source\nfrom lfx.template.field.base import Output\nfrom lfx.utils.constants import (\n MESSAGE_SENDER_AI,\n MESSAGE_SENDER_NAME_AI,\n MESSAGE_SENDER_USER,\n)\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n documentation: str = \"https://docs.langflow.org/components-io#chat-output\"\n icon = \"MessagesSquare\"\n name = \"ChatOutput\"\n minimized = True\n\n inputs = [\n HandleInput(\n name=\"input_value\",\n display_name=\"Inputs\",\n info=\"Message to be passed as output.\",\n input_types=[\"Data\", \"DataFrame\", \"Message\"],\n required=True,\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],\n value=MESSAGE_SENDER_AI,\n advanced=True,\n info=\"Type of sender.\",\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=MESSAGE_SENDER_NAME_AI,\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"context_id\",\n display_name=\"Context ID\",\n info=\"The context ID of the chat. Adds an extra layer to the local memory.\",\n value=\"\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"data_template\",\n display_name=\"Data Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.\",\n ),\n BoolInput(\n name=\"clean_data\",\n display_name=\"Basic Clean Data\",\n value=True,\n advanced=True,\n info=\"Whether to clean data before converting to string.\",\n ),\n ]\n outputs = [\n Output(\n display_name=\"Output Message\",\n name=\"message\",\n method=\"message_response\",\n ),\n ]\n\n def _build_source(self, id_: str | None, display_name: str | None, source: str | None) -> Source:\n source_dict = {}\n if id_:\n source_dict[\"id\"] = id_\n if display_name:\n source_dict[\"display_name\"] = display_name\n if source:\n # Handle case where source is a ChatOpenAI object\n if hasattr(source, \"model_name\"):\n source_dict[\"source\"] = source.model_name\n elif hasattr(source, \"model\"):\n source_dict[\"source\"] = str(source.model)\n else:\n source_dict[\"source\"] = str(source)\n return Source(**source_dict)\n\n async def message_response(self) -> Message:\n # First convert the input to string if needed\n text = self.convert_to_string()\n\n # Get source properties\n source, _, display_name, source_id = self.get_properties_from_source_component()\n\n # Create or use existing Message object\n if isinstance(self.input_value, Message):\n message = self.input_value\n # Update message properties\n message.text = text\n else:\n message = Message(text=text)\n\n # Set message properties\n message.sender = self.sender\n message.sender_name = self.sender_name\n message.session_id = self.session_id\n message.context_id = self.context_id\n message.flow_id = self.graph.flow_id if hasattr(self, \"graph\") else None\n message.properties.source = self._build_source(source_id, display_name, source)\n\n # Store message if needed\n if self.session_id and self.should_store_message:\n stored_message = await self.send_message(message)\n self.message.value = stored_message\n message = stored_message\n\n self.status = message\n return message\n\n def _serialize_data(self, data: Data) -> str:\n \"\"\"Serialize Data object to JSON string.\"\"\"\n # Convert data.data to JSON-serializable format\n serializable_data = jsonable_encoder(data.data)\n # Serialize with orjson, enabling pretty printing with indentation\n json_bytes = orjson.dumps(serializable_data, option=orjson.OPT_INDENT_2)\n # Convert bytes to string and wrap in Markdown code blocks\n return \"```json\\n\" + json_bytes.decode(\"utf-8\") + \"\\n```\"\n\n def _validate_input(self) -> None:\n \"\"\"Validate the input data and raise ValueError if invalid.\"\"\"\n if self.input_value is None:\n msg = \"Input data cannot be None\"\n raise ValueError(msg)\n if isinstance(self.input_value, list) and not all(\n isinstance(item, Message | Data | DataFrame | str) for item in self.input_value\n ):\n invalid_types = [\n type(item).__name__\n for item in self.input_value\n if not isinstance(item, Message | Data | DataFrame | str)\n ]\n msg = f\"Expected Data or DataFrame or Message or str, got {invalid_types}\"\n raise TypeError(msg)\n if not isinstance(\n self.input_value,\n Message | Data | DataFrame | str | list | Generator | type(None),\n ):\n type_name = type(self.input_value).__name__\n msg = f\"Expected Data or DataFrame or Message or str, Generator or None, got {type_name}\"\n raise TypeError(msg)\n\n def convert_to_string(self) -> str | Generator[Any, None, None]:\n \"\"\"Convert input data to string with proper error handling.\"\"\"\n self._validate_input()\n if isinstance(self.input_value, list):\n clean_data: bool = getattr(self, \"clean_data\", False)\n return \"\\n\".join([safe_convert(item, clean_data=clean_data) for item in self.input_value])\n if isinstance(self.input_value, Generator):\n return self.input_value\n return safe_convert(self.input_value)\n"
1140
+ "value": "from collections.abc import Generator\nfrom typing import Any\n\nimport orjson\nfrom fastapi.encoders import jsonable_encoder\n\nfrom lfx.base.io.chat import ChatComponent\nfrom lfx.helpers.data import safe_convert\nfrom lfx.inputs.inputs import BoolInput, DropdownInput, HandleInput, MessageTextInput\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame\nfrom lfx.schema.message import Message\nfrom lfx.schema.properties import Source\nfrom lfx.template.field.base import Output\nfrom lfx.utils.constants import (\n MESSAGE_SENDER_AI,\n MESSAGE_SENDER_NAME_AI,\n MESSAGE_SENDER_USER,\n)\n\n\nclass ChatOutput(ChatComponent):\n display_name = \"Chat Output\"\n description = \"Display a chat message in the Playground.\"\n documentation: str = \"https://docs.langflow.org/chat-input-and-output\"\n icon = \"MessagesSquare\"\n name = \"ChatOutput\"\n minimized = True\n\n inputs = [\n HandleInput(\n name=\"input_value\",\n display_name=\"Inputs\",\n info=\"Message to be passed as output.\",\n input_types=[\"Data\", \"DataFrame\", \"Message\"],\n required=True,\n ),\n BoolInput(\n name=\"should_store_message\",\n display_name=\"Store Messages\",\n info=\"Store the message in the history.\",\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"sender\",\n display_name=\"Sender Type\",\n options=[MESSAGE_SENDER_AI, MESSAGE_SENDER_USER],\n value=MESSAGE_SENDER_AI,\n advanced=True,\n info=\"Type of sender.\",\n ),\n MessageTextInput(\n name=\"sender_name\",\n display_name=\"Sender Name\",\n info=\"Name of the sender.\",\n value=MESSAGE_SENDER_NAME_AI,\n advanced=True,\n ),\n MessageTextInput(\n name=\"session_id\",\n display_name=\"Session ID\",\n info=\"The session ID of the chat. If empty, the current session ID parameter will be used.\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"context_id\",\n display_name=\"Context ID\",\n info=\"The context ID of the chat. Adds an extra layer to the local memory.\",\n value=\"\",\n advanced=True,\n ),\n MessageTextInput(\n name=\"data_template\",\n display_name=\"Data Template\",\n value=\"{text}\",\n advanced=True,\n info=\"Template to convert Data to Text. If left empty, it will be dynamically set to the Data's text key.\",\n ),\n BoolInput(\n name=\"clean_data\",\n display_name=\"Basic Clean Data\",\n value=True,\n advanced=True,\n info=\"Whether to clean data before converting to string.\",\n ),\n ]\n outputs = [\n Output(\n display_name=\"Output Message\",\n name=\"message\",\n method=\"message_response\",\n ),\n ]\n\n def _build_source(self, id_: str | None, display_name: str | None, source: str | None) -> Source:\n source_dict = {}\n if id_:\n source_dict[\"id\"] = id_\n if display_name:\n source_dict[\"display_name\"] = display_name\n if source:\n # Handle case where source is a ChatOpenAI object\n if hasattr(source, \"model_name\"):\n source_dict[\"source\"] = source.model_name\n elif hasattr(source, \"model\"):\n source_dict[\"source\"] = str(source.model)\n else:\n source_dict[\"source\"] = str(source)\n return Source(**source_dict)\n\n async def message_response(self) -> Message:\n # First convert the input to string if needed\n text = self.convert_to_string()\n\n # Get source properties\n source, _, display_name, source_id = self.get_properties_from_source_component()\n\n # Create or use existing Message object\n if isinstance(self.input_value, Message) and not self.is_connected_to_chat_input():\n message = self.input_value\n # Update message properties\n message.text = text\n else:\n message = Message(text=text)\n\n # Set message properties\n message.sender = self.sender\n message.sender_name = self.sender_name\n message.session_id = self.session_id or self.graph.session_id or \"\"\n message.context_id = self.context_id\n message.flow_id = self.graph.flow_id if hasattr(self, \"graph\") else None\n message.properties.source = self._build_source(source_id, display_name, source)\n\n # Store message if needed\n if message.session_id and self.should_store_message:\n stored_message = await self.send_message(message)\n self.message.value = stored_message\n message = stored_message\n\n self.status = message\n return message\n\n def _serialize_data(self, data: Data) -> str:\n \"\"\"Serialize Data object to JSON string.\"\"\"\n # Convert data.data to JSON-serializable format\n serializable_data = jsonable_encoder(data.data)\n # Serialize with orjson, enabling pretty printing with indentation\n json_bytes = orjson.dumps(serializable_data, option=orjson.OPT_INDENT_2)\n # Convert bytes to string and wrap in Markdown code blocks\n return \"```json\\n\" + json_bytes.decode(\"utf-8\") + \"\\n```\"\n\n def _validate_input(self) -> None:\n \"\"\"Validate the input data and raise ValueError if invalid.\"\"\"\n if self.input_value is None:\n msg = \"Input data cannot be None\"\n raise ValueError(msg)\n if isinstance(self.input_value, list) and not all(\n isinstance(item, Message | Data | DataFrame | str) for item in self.input_value\n ):\n invalid_types = [\n type(item).__name__\n for item in self.input_value\n if not isinstance(item, Message | Data | DataFrame | str)\n ]\n msg = f\"Expected Data or DataFrame or Message or str, got {invalid_types}\"\n raise TypeError(msg)\n if not isinstance(\n self.input_value,\n Message | Data | DataFrame | str | list | Generator | type(None),\n ):\n type_name = type(self.input_value).__name__\n msg = f\"Expected Data or DataFrame or Message or str, Generator or None, got {type_name}\"\n raise TypeError(msg)\n\n def convert_to_string(self) -> str | Generator[Any, None, None]:\n \"\"\"Convert input data to string with proper error handling.\"\"\"\n self._validate_input()\n if isinstance(self.input_value, list):\n clean_data: bool = getattr(self, \"clean_data\", False)\n return \"\\n\".join([safe_convert(item, clean_data=clean_data) for item in self.input_value])\n if isinstance(self.input_value, Generator):\n return self.input_value\n return safe_convert(self.input_value)\n"
1141
1141
  },
1142
1142
  "context_id": {
1143
1143
  "_input_type": "MessageTextInput",
@@ -2675,7 +2675,7 @@
2675
2675
  "last_updated": "2025-10-10T17:51:29.596Z",
2676
2676
  "legacy": false,
2677
2677
  "metadata": {
2678
- "code_hash": "85abc1094130",
2678
+ "code_hash": "9ff3bde1cf43",
2679
2679
  "dependencies": {
2680
2680
  "dependencies": [
2681
2681
  {
@@ -2743,7 +2743,7 @@
2743
2743
  "show": true,
2744
2744
  "title_case": false,
2745
2745
  "type": "code",
2746
- "value": "\"\"\"Enhanced file component with Docling support and process isolation.\n\nNotes:\n-----\n- ALL Docling parsing/export runs in a separate OS process to prevent memory\n growth and native library state from impacting the main Langflow process.\n- Standard text/structured parsing continues to use existing BaseFileComponent\n utilities (and optional threading via `parallel_load_data`).\n\"\"\"\n\nfrom __future__ import annotations\n\nimport json\nimport subprocess\nimport sys\nimport textwrap\nfrom copy import deepcopy\nfrom typing import Any\n\nfrom lfx.base.data.base_file import BaseFileComponent\nfrom lfx.base.data.utils import TEXT_FILE_TYPES, parallel_load_data, parse_text_file_to_data\nfrom lfx.inputs.inputs import DropdownInput, MessageTextInput, StrInput\nfrom lfx.io import BoolInput, FileInput, IntInput, Output\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame # noqa: TC001\nfrom lfx.schema.message import Message\n\n\nclass FileComponent(BaseFileComponent):\n \"\"\"File component with optional Docling processing (isolated in a subprocess).\"\"\"\n\n display_name = \"Read File\"\n description = \"Loads content from one or more files.\"\n documentation: str = \"https://docs.langflow.org/components-data#file\"\n icon = \"file-text\"\n name = \"File\"\n\n # Docling-supported/compatible extensions; TEXT_FILE_TYPES are supported by the base loader.\n VALID_EXTENSIONS = [\n *TEXT_FILE_TYPES,\n \"adoc\",\n \"asciidoc\",\n \"asc\",\n \"bmp\",\n \"dotx\",\n \"dotm\",\n \"docm\",\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"potx\",\n \"ppsx\",\n \"pptm\",\n \"potm\",\n \"ppsm\",\n \"pptx\",\n \"tiff\",\n \"xls\",\n \"xlsx\",\n \"xhtml\",\n \"webp\",\n ]\n\n # Fixed export settings used when markdown export is requested.\n EXPORT_FORMAT = \"Markdown\"\n IMAGE_MODE = \"placeholder\"\n\n _base_inputs = deepcopy(BaseFileComponent.get_base_inputs())\n\n for input_item in _base_inputs:\n if isinstance(input_item, FileInput) and input_item.name == \"path\":\n input_item.real_time_refresh = True\n break\n\n inputs = [\n *_base_inputs,\n BoolInput(\n name=\"advanced_mode\",\n display_name=\"Advanced Parser\",\n value=False,\n real_time_refresh=True,\n info=(\n \"Enable advanced document processing and export with Docling for PDFs, images, and office documents. \"\n \"Note that advanced document processing can consume significant resources.\"\n ),\n show=True,\n ),\n DropdownInput(\n name=\"pipeline\",\n display_name=\"Pipeline\",\n info=\"Docling pipeline to use\",\n options=[\"standard\", \"vlm\"],\n value=\"standard\",\n advanced=True,\n real_time_refresh=True,\n ),\n DropdownInput(\n name=\"ocr_engine\",\n display_name=\"OCR Engine\",\n info=\"OCR engine to use. Only available when pipeline is set to 'standard'.\",\n options=[\"None\", \"easyocr\"],\n value=\"easyocr\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"md_image_placeholder\",\n display_name=\"Image placeholder\",\n info=\"Specify the image placeholder for markdown exports.\",\n value=\"<!-- image -->\",\n advanced=True,\n show=False,\n ),\n StrInput(\n name=\"md_page_break_placeholder\",\n display_name=\"Page break placeholder\",\n info=\"Add this placeholder between pages in the markdown output.\",\n value=\"\",\n advanced=True,\n show=False,\n ),\n MessageTextInput(\n name=\"doc_key\",\n display_name=\"Doc Key\",\n info=\"The key to use for the DoclingDocument column.\",\n value=\"doc\",\n advanced=True,\n show=False,\n ),\n # Deprecated input retained for backward-compatibility.\n BoolInput(\n name=\"use_multithreading\",\n display_name=\"[Deprecated] Use Multithreading\",\n advanced=True,\n value=True,\n info=\"Set 'Processing Concurrency' greater than 1 to enable multithreading.\",\n ),\n IntInput(\n name=\"concurrency_multithreading\",\n display_name=\"Processing Concurrency\",\n advanced=True,\n info=\"When multiple files are being processed, the number of files to process concurrently.\",\n value=1,\n ),\n BoolInput(\n name=\"markdown\",\n display_name=\"Markdown Export\",\n info=\"Export processed documents to Markdown format. Only available when advanced mode is enabled.\",\n value=False,\n show=False,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Raw Content\", name=\"message\", method=\"load_files_message\"),\n ]\n\n # ------------------------------ UI helpers --------------------------------------\n\n def _path_value(self, template: dict) -> list[str]:\n \"\"\"Return the list of currently selected file paths from the template.\"\"\"\n return template.get(\"path\", {}).get(\"file_path\", [])\n\n def update_build_config(\n self,\n build_config: dict[str, Any],\n field_value: Any,\n field_name: str | None = None,\n ) -> dict[str, Any]:\n \"\"\"Show/hide Advanced Parser and related fields based on selection context.\"\"\"\n if field_name == \"path\":\n paths = self._path_value(build_config)\n\n # If all files can be processed by docling, do so\n allow_advanced = all(not file_path.endswith((\".csv\", \".xlsx\", \".parquet\")) for file_path in paths)\n build_config[\"advanced_mode\"][\"show\"] = allow_advanced\n if not allow_advanced:\n build_config[\"advanced_mode\"][\"value\"] = False\n for f in (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\"):\n if f in build_config:\n build_config[f][\"show\"] = False\n\n # Docling Processing\n elif field_name == \"advanced_mode\":\n for f in (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\"):\n if f in build_config:\n build_config[f][\"show\"] = bool(field_value)\n if f == \"pipeline\":\n build_config[f][\"advanced\"] = not bool(field_value)\n\n elif field_name == \"pipeline\":\n if field_value == \"standard\":\n build_config[\"ocr_engine\"][\"show\"] = True\n build_config[\"ocr_engine\"][\"value\"] = \"easyocr\"\n else:\n build_config[\"ocr_engine\"][\"show\"] = False\n build_config[\"ocr_engine\"][\"value\"] = \"None\"\n\n return build_config\n\n def update_outputs(self, frontend_node: dict[str, Any], field_name: str, field_value: Any) -> dict[str, Any]: # noqa: ARG002\n \"\"\"Dynamically show outputs based on file count/type and advanced mode.\"\"\"\n if field_name not in [\"path\", \"advanced_mode\", \"pipeline\"]:\n return frontend_node\n\n template = frontend_node.get(\"template\", {})\n paths = self._path_value(template)\n if not paths:\n return frontend_node\n\n frontend_node[\"outputs\"] = []\n if len(paths) == 1:\n file_path = paths[0] if field_name == \"path\" else frontend_node[\"template\"][\"path\"][\"file_path\"][0]\n if file_path.endswith((\".csv\", \".xlsx\", \".parquet\")):\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Structured Content\", name=\"dataframe\", method=\"load_files_structured\"),\n )\n elif file_path.endswith(\".json\"):\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Structured Content\", name=\"json\", method=\"load_files_json\"),\n )\n\n advanced_mode = frontend_node.get(\"template\", {}).get(\"advanced_mode\", {}).get(\"value\", False)\n if advanced_mode:\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Structured Output\", name=\"advanced_dataframe\", method=\"load_files_dataframe\"),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Markdown\", name=\"advanced_markdown\", method=\"load_files_markdown\"),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"File Path\", name=\"path\", method=\"load_files_path\"),\n )\n else:\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Raw Content\", name=\"message\", method=\"load_files_message\"),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"File Path\", name=\"path\", method=\"load_files_path\"),\n )\n else:\n # Multiple files => DataFrame output; advanced parser disabled\n frontend_node[\"outputs\"].append(Output(display_name=\"Files\", name=\"dataframe\", method=\"load_files\"))\n\n return frontend_node\n\n # ------------------------------ Core processing ----------------------------------\n\n def _is_docling_compatible(self, file_path: str) -> bool:\n \"\"\"Lightweight extension gate for Docling-compatible types.\"\"\"\n docling_exts = (\n \".adoc\",\n \".asciidoc\",\n \".asc\",\n \".bmp\",\n \".csv\",\n \".dotx\",\n \".dotm\",\n \".docm\",\n \".docx\",\n \".htm\",\n \".html\",\n \".jpg\",\n \".jpeg\",\n \".json\",\n \".md\",\n \".pdf\",\n \".png\",\n \".potx\",\n \".ppsx\",\n \".pptm\",\n \".potm\",\n \".ppsm\",\n \".pptx\",\n \".tiff\",\n \".txt\",\n \".xls\",\n \".xlsx\",\n \".xhtml\",\n \".xml\",\n \".webp\",\n )\n return file_path.lower().endswith(docling_exts)\n\n def _process_docling_in_subprocess(self, file_path: str) -> Data | None:\n \"\"\"Run Docling in a separate OS process and map the result to a Data object.\n\n We avoid multiprocessing pickling by launching `python -c \"<script>\"` and\n passing JSON config via stdin. The child prints a JSON result to stdout.\n \"\"\"\n if not file_path:\n return None\n\n args: dict[str, Any] = {\n \"file_path\": file_path,\n \"markdown\": bool(self.markdown),\n \"image_mode\": str(self.IMAGE_MODE),\n \"md_image_placeholder\": str(self.md_image_placeholder),\n \"md_page_break_placeholder\": str(self.md_page_break_placeholder),\n \"pipeline\": str(self.pipeline),\n \"ocr_engine\": (\n self.ocr_engine if self.ocr_engine and self.ocr_engine != \"None\" and self.pipeline != \"vlm\" else None\n ),\n }\n\n self.log(f\"Starting Docling subprocess for file: {file_path}\")\n self.log(args)\n\n # Child script for isolating the docling processing\n child_script = textwrap.dedent(\n r\"\"\"\n import json, sys\n\n def try_imports():\n try:\n from docling.datamodel.base_models import ConversionStatus, InputFormat # type: ignore\n from docling.document_converter import DocumentConverter # type: ignore\n from docling_core.types.doc import ImageRefMode # type: ignore\n return ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, \"latest\"\n except Exception as e:\n raise e\n\n def create_converter(strategy, input_format, DocumentConverter, pipeline, ocr_engine):\n # --- Standard PDF/IMAGE pipeline (your existing behavior), with optional OCR ---\n if pipeline == \"standard\":\n try:\n from docling.datamodel.pipeline_options import PdfPipelineOptions # type: ignore\n from docling.document_converter import PdfFormatOption # type: ignore\n\n pipe = PdfPipelineOptions()\n pipe.do_ocr = False\n\n if ocr_engine:\n try:\n from docling.models.factories import get_ocr_factory # type: ignore\n pipe.do_ocr = True\n fac = get_ocr_factory(allow_external_plugins=False)\n pipe.ocr_options = fac.create_options(kind=ocr_engine)\n except Exception:\n # If OCR setup fails, disable it\n pipe.do_ocr = False\n\n fmt = {}\n if hasattr(input_format, \"PDF\"):\n fmt[getattr(input_format, \"PDF\")] = PdfFormatOption(pipeline_options=pipe)\n if hasattr(input_format, \"IMAGE\"):\n fmt[getattr(input_format, \"IMAGE\")] = PdfFormatOption(pipeline_options=pipe)\n\n return DocumentConverter(format_options=fmt)\n except Exception:\n return DocumentConverter()\n\n # --- Vision-Language Model (VLM) pipeline ---\n if pipeline == \"vlm\":\n try:\n from docling.datamodel.pipeline_options import VlmPipelineOptions\n from docling.datamodel.vlm_model_specs import GRANITEDOCLING_MLX, GRANITEDOCLING_TRANSFORMERS\n from docling.document_converter import PdfFormatOption\n from docling.pipeline.vlm_pipeline import VlmPipeline\n\n vl_pipe = VlmPipelineOptions(\n vlm_options=GRANITEDOCLING_TRANSFORMERS,\n )\n\n if sys.platform == \"darwin\":\n try:\n import mlx_vlm\n vl_pipe.vlm_options = GRANITEDOCLING_MLX\n except ImportError as e:\n raise e\n\n # VLM paths generally don't need OCR; keep OCR off by default here.\n fmt = {}\n if hasattr(input_format, \"PDF\"):\n fmt[getattr(input_format, \"PDF\")] = PdfFormatOption(\n pipeline_cls=VlmPipeline,\n pipeline_options=vl_pipe\n )\n if hasattr(input_format, \"IMAGE\"):\n fmt[getattr(input_format, \"IMAGE\")] = PdfFormatOption(\n pipeline_cls=VlmPipeline,\n pipeline_options=vl_pipe\n )\n\n return DocumentConverter(format_options=fmt)\n except Exception as e:\n raise e\n\n # --- Fallback: default converter with no special options ---\n return DocumentConverter()\n\n def export_markdown(document, ImageRefMode, image_mode, img_ph, pg_ph):\n try:\n mode = getattr(ImageRefMode, image_mode.upper(), image_mode)\n return document.export_to_markdown(\n image_mode=mode,\n image_placeholder=img_ph,\n page_break_placeholder=pg_ph,\n )\n except Exception:\n try:\n return document.export_to_text()\n except Exception:\n return str(document)\n\n def to_rows(doc_dict):\n rows = []\n for t in doc_dict.get(\"texts\", []):\n prov = t.get(\"prov\") or []\n page_no = None\n if prov and isinstance(prov, list) and isinstance(prov[0], dict):\n page_no = prov[0].get(\"page_no\")\n rows.append({\n \"page_no\": page_no,\n \"label\": t.get(\"label\"),\n \"text\": t.get(\"text\"),\n \"level\": t.get(\"level\"),\n })\n return rows\n\n def main():\n cfg = json.loads(sys.stdin.read())\n file_path = cfg[\"file_path\"]\n markdown = cfg[\"markdown\"]\n image_mode = cfg[\"image_mode\"]\n img_ph = cfg[\"md_image_placeholder\"]\n pg_ph = cfg[\"md_page_break_placeholder\"]\n pipeline = cfg[\"pipeline\"]\n ocr_engine = cfg.get(\"ocr_engine\")\n meta = {\"file_path\": file_path}\n\n try:\n ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, strategy = try_imports()\n converter = create_converter(strategy, InputFormat, DocumentConverter, pipeline, ocr_engine)\n try:\n res = converter.convert(file_path)\n except Exception as e:\n print(json.dumps({\"ok\": False, \"error\": f\"Docling conversion error: {e}\", \"meta\": meta}))\n return\n\n ok = False\n if hasattr(res, \"status\"):\n try:\n ok = (res.status == ConversionStatus.SUCCESS) or (str(res.status).lower() == \"success\")\n except Exception:\n ok = (str(res.status).lower() == \"success\")\n if not ok and hasattr(res, \"document\"):\n ok = getattr(res, \"document\", None) is not None\n if not ok:\n print(json.dumps({\"ok\": False, \"error\": \"Docling conversion failed\", \"meta\": meta}))\n return\n\n doc = getattr(res, \"document\", None)\n if doc is None:\n print(json.dumps({\"ok\": False, \"error\": \"Docling produced no document\", \"meta\": meta}))\n return\n\n if markdown:\n text = export_markdown(doc, ImageRefMode, image_mode, img_ph, pg_ph)\n print(json.dumps({\"ok\": True, \"mode\": \"markdown\", \"text\": text, \"meta\": meta}))\n return\n\n # structured\n try:\n doc_dict = doc.export_to_dict()\n except Exception as e:\n print(json.dumps({\"ok\": False, \"error\": f\"Docling export_to_dict failed: {e}\", \"meta\": meta}))\n return\n\n rows = to_rows(doc_dict)\n print(json.dumps({\"ok\": True, \"mode\": \"structured\", \"doc\": rows, \"meta\": meta}))\n except Exception as e:\n print(\n json.dumps({\n \"ok\": False,\n \"error\": f\"Docling processing error: {e}\",\n \"meta\": {\"file_path\": file_path},\n })\n )\n\n if __name__ == \"__main__\":\n main()\n \"\"\"\n )\n\n # Validate file_path to avoid command injection or unsafe input\n if not isinstance(args[\"file_path\"], str) or any(c in args[\"file_path\"] for c in [\";\", \"|\", \"&\", \"$\", \"`\"]):\n return Data(data={\"error\": \"Unsafe file path detected.\", \"file_path\": args[\"file_path\"]})\n\n proc = subprocess.run( # noqa: S603\n [sys.executable, \"-u\", \"-c\", child_script],\n input=json.dumps(args).encode(\"utf-8\"),\n capture_output=True,\n check=False,\n )\n\n if not proc.stdout:\n err_msg = proc.stderr.decode(\"utf-8\", errors=\"replace\") or \"no output from child process\"\n return Data(data={\"error\": f\"Docling subprocess error: {err_msg}\", \"file_path\": file_path})\n\n try:\n result = json.loads(proc.stdout.decode(\"utf-8\"))\n except Exception as e: # noqa: BLE001\n err_msg = proc.stderr.decode(\"utf-8\", errors=\"replace\")\n return Data(\n data={\"error\": f\"Invalid JSON from Docling subprocess: {e}. stderr={err_msg}\", \"file_path\": file_path},\n )\n\n if not result.get(\"ok\"):\n return Data(data={\"error\": result.get(\"error\", \"Unknown Docling error\"), **result.get(\"meta\", {})})\n\n meta = result.get(\"meta\", {})\n if result.get(\"mode\") == \"markdown\":\n exported_content = str(result.get(\"text\", \"\"))\n return Data(\n text=exported_content,\n data={\"exported_content\": exported_content, \"export_format\": self.EXPORT_FORMAT, **meta},\n )\n\n rows = list(result.get(\"doc\", []))\n return Data(data={\"doc\": rows, \"export_format\": self.EXPORT_FORMAT, **meta})\n\n def process_files(\n self,\n file_list: list[BaseFileComponent.BaseFile],\n ) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Process input files.\n\n - advanced_mode => Docling in a separate process.\n - Otherwise => standard parsing in current process (optionally threaded).\n \"\"\"\n if not file_list:\n msg = \"No files to process.\"\n raise ValueError(msg)\n\n def process_file_standard(file_path: str, *, silent_errors: bool = False) -> Data | None:\n try:\n return parse_text_file_to_data(file_path, silent_errors=silent_errors)\n except FileNotFoundError as e:\n self.log(f\"File not found: {file_path}. Error: {e}\")\n if not silent_errors:\n raise\n return None\n except Exception as e:\n self.log(f\"Unexpected error processing {file_path}: {e}\")\n if not silent_errors:\n raise\n return None\n\n docling_compatible = all(self._is_docling_compatible(str(f.path)) for f in file_list)\n\n # Advanced path: Check if ALL files are compatible with Docling\n if self.advanced_mode and docling_compatible:\n final_return: list[BaseFileComponent.BaseFile] = []\n for file in file_list:\n file_path = str(file.path)\n advanced_data: Data | None = self._process_docling_in_subprocess(file_path)\n\n # --- UNNEST: expand each element in `doc` to its own Data row\n payload = getattr(advanced_data, \"data\", {}) or {}\n doc_rows = payload.get(\"doc\")\n if isinstance(doc_rows, list):\n rows: list[Data | None] = [\n Data(\n data={\n \"file_path\": file_path,\n **(item if isinstance(item, dict) else {\"value\": item}),\n },\n )\n for item in doc_rows\n ]\n final_return.extend(self.rollup_data(file_list, rows))\n else:\n # If not structured, keep as-is (e.g., markdown export or error dict)\n final_return.extend(self.rollup_data(file_list, [advanced_data]))\n return final_return\n\n # Standard multi-file (or single non-advanced) path\n concurrency = 1 if not self.use_multithreading else max(1, self.concurrency_multithreading)\n file_paths = [str(f.path) for f in file_list]\n self.log(f\"Starting parallel processing of {len(file_paths)} files with concurrency: {concurrency}.\")\n my_data = parallel_load_data(\n file_paths,\n silent_errors=self.silent_errors,\n load_function=process_file_standard,\n max_concurrency=concurrency,\n )\n return self.rollup_data(file_list, my_data)\n\n # ------------------------------ Output helpers -----------------------------------\n\n def load_files_helper(self) -> DataFrame:\n result = self.load_files()\n\n # Error condition - raise error if no text and an error is present\n if not hasattr(result, \"text\"):\n if hasattr(result, \"error\"):\n raise ValueError(result.error[0])\n msg = \"Could not extract content from the provided file(s).\"\n raise ValueError(msg)\n\n return result\n\n def load_files_dataframe(self) -> DataFrame:\n \"\"\"Load files using advanced Docling processing and export to DataFrame format.\"\"\"\n self.markdown = False\n return self.load_files_helper()\n\n def load_files_markdown(self) -> Message:\n \"\"\"Load files using advanced Docling processing and export to Markdown format.\"\"\"\n self.markdown = True\n result = self.load_files_helper()\n return Message(text=str(result.text[0]))\n"
2746
+ "value": "\"\"\"Enhanced file component with Docling support and process isolation.\n\nNotes:\n-----\n- ALL Docling parsing/export runs in a separate OS process to prevent memory\n growth and native library state from impacting the main Langflow process.\n- Standard text/structured parsing continues to use existing BaseFileComponent\n utilities (and optional threading via `parallel_load_data`).\n\"\"\"\n\nfrom __future__ import annotations\n\nimport contextlib\nimport json\nimport subprocess\nimport sys\nimport textwrap\nfrom copy import deepcopy\nfrom pathlib import Path\nfrom tempfile import NamedTemporaryFile\nfrom typing import Any\n\nfrom lfx.base.data.base_file import BaseFileComponent\nfrom lfx.base.data.storage_utils import parse_storage_path\nfrom lfx.base.data.utils import TEXT_FILE_TYPES, parallel_load_data, parse_text_file_to_data\nfrom lfx.inputs.inputs import DropdownInput, MessageTextInput, StrInput\nfrom lfx.io import BoolInput, FileInput, IntInput, Output\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame # noqa: TC001\nfrom lfx.schema.message import Message\nfrom lfx.services.deps import get_settings_service, get_storage_service\nfrom lfx.utils.async_helpers import run_until_complete\n\n\nclass FileComponent(BaseFileComponent):\n \"\"\"File component with optional Docling processing (isolated in a subprocess).\"\"\"\n\n display_name = \"Read File\"\n description = \"Loads content from one or more files.\"\n documentation: str = \"https://docs.langflow.org/read-file\"\n icon = \"file-text\"\n name = \"File\"\n\n # Extensions that can be processed without Docling (using standard text parsing)\n TEXT_EXTENSIONS = TEXT_FILE_TYPES\n\n # Extensions that require Docling for processing (images, advanced office formats, etc.)\n DOCLING_ONLY_EXTENSIONS = [\n \"adoc\",\n \"asciidoc\",\n \"asc\",\n \"bmp\",\n \"dotx\",\n \"dotm\",\n \"docm\",\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"potx\",\n \"ppsx\",\n \"pptm\",\n \"potm\",\n \"ppsm\",\n \"pptx\",\n \"tiff\",\n \"xls\",\n \"xlsx\",\n \"xhtml\",\n \"webp\",\n ]\n\n # Docling-supported/compatible extensions; TEXT_FILE_TYPES are supported by the base loader.\n VALID_EXTENSIONS = [\n *TEXT_EXTENSIONS,\n *DOCLING_ONLY_EXTENSIONS,\n ]\n\n # Fixed export settings used when markdown export is requested.\n EXPORT_FORMAT = \"Markdown\"\n IMAGE_MODE = \"placeholder\"\n\n _base_inputs = deepcopy(BaseFileComponent.get_base_inputs())\n\n for input_item in _base_inputs:\n if isinstance(input_item, FileInput) and input_item.name == \"path\":\n input_item.real_time_refresh = True\n input_item.tool_mode = False # Disable tool mode for file upload input\n input_item.required = False # Make it optional so it doesn't error in tool mode\n break\n\n inputs = [\n *_base_inputs,\n StrInput(\n name=\"file_path_str\",\n display_name=\"File Path\",\n info=(\n \"Path to the file to read. Used when component is called as a tool. \"\n \"If not provided, will use the uploaded file from 'path' input.\"\n ),\n show=False,\n advanced=True,\n tool_mode=True,\n required=False,\n ),\n BoolInput(\n name=\"advanced_mode\",\n display_name=\"Advanced Parser\",\n value=False,\n real_time_refresh=True,\n info=(\n \"Enable advanced document processing and export with Docling for PDFs, images, and office documents. \"\n \"Note that advanced document processing can consume significant resources.\"\n ),\n show=True,\n ),\n DropdownInput(\n name=\"pipeline\",\n display_name=\"Pipeline\",\n info=\"Docling pipeline to use\",\n options=[\"standard\", \"vlm\"],\n value=\"standard\",\n advanced=True,\n real_time_refresh=True,\n ),\n DropdownInput(\n name=\"ocr_engine\",\n display_name=\"OCR Engine\",\n info=\"OCR engine to use. Only available when pipeline is set to 'standard'.\",\n options=[\"None\", \"easyocr\"],\n value=\"easyocr\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"md_image_placeholder\",\n display_name=\"Image placeholder\",\n info=\"Specify the image placeholder for markdown exports.\",\n value=\"<!-- image -->\",\n advanced=True,\n show=False,\n ),\n StrInput(\n name=\"md_page_break_placeholder\",\n display_name=\"Page break placeholder\",\n info=\"Add this placeholder between pages in the markdown output.\",\n value=\"\",\n advanced=True,\n show=False,\n ),\n MessageTextInput(\n name=\"doc_key\",\n display_name=\"Doc Key\",\n info=\"The key to use for the DoclingDocument column.\",\n value=\"doc\",\n advanced=True,\n show=False,\n ),\n # Deprecated input retained for backward-compatibility.\n BoolInput(\n name=\"use_multithreading\",\n display_name=\"[Deprecated] Use Multithreading\",\n advanced=True,\n value=True,\n info=\"Set 'Processing Concurrency' greater than 1 to enable multithreading.\",\n ),\n IntInput(\n name=\"concurrency_multithreading\",\n display_name=\"Processing Concurrency\",\n advanced=True,\n info=\"When multiple files are being processed, the number of files to process concurrently.\",\n value=1,\n ),\n BoolInput(\n name=\"markdown\",\n display_name=\"Markdown Export\",\n info=\"Export processed documents to Markdown format. Only available when advanced mode is enabled.\",\n value=False,\n show=False,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Raw Content\", name=\"message\", method=\"load_files_message\", tool_mode=True),\n ]\n\n # ------------------------------ UI helpers --------------------------------------\n\n def _path_value(self, template: dict) -> list[str]:\n \"\"\"Return the list of currently selected file paths from the template.\"\"\"\n return template.get(\"path\", {}).get(\"file_path\", [])\n\n def update_build_config(\n self,\n build_config: dict[str, Any],\n field_value: Any,\n field_name: str | None = None,\n ) -> dict[str, Any]:\n \"\"\"Show/hide Advanced Parser and related fields based on selection context.\"\"\"\n if field_name == \"path\":\n paths = self._path_value(build_config)\n\n # If all files can be processed by docling, do so\n allow_advanced = all(not file_path.endswith((\".csv\", \".xlsx\", \".parquet\")) for file_path in paths)\n build_config[\"advanced_mode\"][\"show\"] = allow_advanced\n if not allow_advanced:\n build_config[\"advanced_mode\"][\"value\"] = False\n for f in (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\"):\n if f in build_config:\n build_config[f][\"show\"] = False\n\n # Docling Processing\n elif field_name == \"advanced_mode\":\n for f in (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\"):\n if f in build_config:\n build_config[f][\"show\"] = bool(field_value)\n if f == \"pipeline\":\n build_config[f][\"advanced\"] = not bool(field_value)\n\n elif field_name == \"pipeline\":\n if field_value == \"standard\":\n build_config[\"ocr_engine\"][\"show\"] = True\n build_config[\"ocr_engine\"][\"value\"] = \"easyocr\"\n else:\n build_config[\"ocr_engine\"][\"show\"] = False\n build_config[\"ocr_engine\"][\"value\"] = \"None\"\n\n return build_config\n\n def update_outputs(self, frontend_node: dict[str, Any], field_name: str, field_value: Any) -> dict[str, Any]: # noqa: ARG002\n \"\"\"Dynamically show outputs based on file count/type and advanced mode.\"\"\"\n if field_name not in [\"path\", \"advanced_mode\", \"pipeline\"]:\n return frontend_node\n\n template = frontend_node.get(\"template\", {})\n paths = self._path_value(template)\n if not paths:\n return frontend_node\n\n frontend_node[\"outputs\"] = []\n if len(paths) == 1:\n file_path = paths[0] if field_name == \"path\" else frontend_node[\"template\"][\"path\"][\"file_path\"][0]\n if file_path.endswith((\".csv\", \".xlsx\", \".parquet\")):\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Structured Content\",\n name=\"dataframe\",\n method=\"load_files_structured\",\n tool_mode=True,\n ),\n )\n elif file_path.endswith(\".json\"):\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Structured Content\", name=\"json\", method=\"load_files_json\", tool_mode=True),\n )\n\n advanced_mode = frontend_node.get(\"template\", {}).get(\"advanced_mode\", {}).get(\"value\", False)\n if advanced_mode:\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Structured Output\",\n name=\"advanced_dataframe\",\n method=\"load_files_dataframe\",\n tool_mode=True,\n ),\n )\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Markdown\", name=\"advanced_markdown\", method=\"load_files_markdown\", tool_mode=True\n ),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"File Path\", name=\"path\", method=\"load_files_path\", tool_mode=True),\n )\n else:\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Raw Content\", name=\"message\", method=\"load_files_message\", tool_mode=True),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"File Path\", name=\"path\", method=\"load_files_path\", tool_mode=True),\n )\n else:\n # Multiple files => DataFrame output; advanced parser disabled\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Files\", name=\"dataframe\", method=\"load_files\", tool_mode=True)\n )\n\n return frontend_node\n\n # ------------------------------ Core processing ----------------------------------\n\n def _validate_and_resolve_paths(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Override to handle file_path_str input from tool mode.\n\n When called as a tool, the file_path_str parameter can be set.\n If not provided, it will fall back to using the path FileInput (uploaded file).\n Priority:\n 1. file_path_str (if provided by the tool call)\n 2. path (uploaded file from UI)\n \"\"\"\n # Check if file_path_str is provided (from tool mode)\n file_path_str = getattr(self, \"file_path_str\", None)\n if file_path_str:\n # Use the string path from tool mode\n from pathlib import Path\n\n from lfx.schema.data import Data\n\n resolved_path = Path(self.resolve_path(file_path_str))\n if not resolved_path.exists():\n msg = f\"File or directory not found: {file_path_str}\"\n self.log(msg)\n if not self.silent_errors:\n raise ValueError(msg)\n return []\n\n data_obj = Data(data={self.SERVER_FILE_PATH_FIELDNAME: str(resolved_path)})\n return [BaseFileComponent.BaseFile(data_obj, resolved_path, delete_after_processing=False)]\n\n # Otherwise use the default implementation (uses path FileInput)\n return super()._validate_and_resolve_paths()\n\n def _is_docling_compatible(self, file_path: str) -> bool:\n \"\"\"Lightweight extension gate for Docling-compatible types.\"\"\"\n docling_exts = (\n \".adoc\",\n \".asciidoc\",\n \".asc\",\n \".bmp\",\n \".csv\",\n \".dotx\",\n \".dotm\",\n \".docm\",\n \".docx\",\n \".htm\",\n \".html\",\n \".jpg\",\n \".jpeg\",\n \".json\",\n \".md\",\n \".pdf\",\n \".png\",\n \".potx\",\n \".ppsx\",\n \".pptm\",\n \".potm\",\n \".ppsm\",\n \".pptx\",\n \".tiff\",\n \".txt\",\n \".xls\",\n \".xlsx\",\n \".xhtml\",\n \".xml\",\n \".webp\",\n )\n return file_path.lower().endswith(docling_exts)\n\n async def _get_local_file_for_docling(self, file_path: str) -> tuple[str, bool]:\n \"\"\"Get a local file path for Docling processing, downloading from S3 if needed.\n\n Args:\n file_path: Either a local path or S3 key (format \"flow_id/filename\")\n\n Returns:\n tuple[str, bool]: (local_path, should_delete) where should_delete indicates\n if this is a temporary file that should be cleaned up\n \"\"\"\n settings = get_settings_service().settings\n if settings.storage_type == \"local\":\n return file_path, False\n\n # S3 storage - download to temp file\n parsed = parse_storage_path(file_path)\n if not parsed:\n msg = f\"Invalid S3 path format: {file_path}. Expected 'flow_id/filename'\"\n raise ValueError(msg)\n\n storage_service = get_storage_service()\n flow_id, filename = parsed\n\n # Get file content from S3\n content = await storage_service.get_file(flow_id, filename)\n\n suffix = Path(filename).suffix\n with NamedTemporaryFile(mode=\"wb\", suffix=suffix, delete=False) as tmp_file:\n tmp_file.write(content)\n temp_path = tmp_file.name\n\n return temp_path, True\n\n def _process_docling_in_subprocess(self, file_path: str) -> Data | None:\n \"\"\"Run Docling in a separate OS process and map the result to a Data object.\n\n We avoid multiprocessing pickling by launching `python -c \"<script>\"` and\n passing JSON config via stdin. The child prints a JSON result to stdout.\n\n For S3 storage, the file is downloaded to a temp file first.\n \"\"\"\n if not file_path:\n return None\n\n settings = get_settings_service().settings\n if settings.storage_type == \"s3\":\n local_path, should_delete = run_until_complete(self._get_local_file_for_docling(file_path))\n else:\n local_path = file_path\n should_delete = False\n\n try:\n return self._process_docling_subprocess_impl(local_path, file_path)\n finally:\n # Clean up temp file if we created one\n if should_delete:\n with contextlib.suppress(Exception):\n Path(local_path).unlink() # Ignore cleanup errors\n\n def _process_docling_subprocess_impl(self, local_file_path: str, original_file_path: str) -> Data | None:\n \"\"\"Implementation of Docling subprocess processing.\n\n Args:\n local_file_path: Path to local file to process\n original_file_path: Original file path to include in metadata\n Returns:\n Data object with processed content\n \"\"\"\n args: dict[str, Any] = {\n \"file_path\": local_file_path,\n \"markdown\": bool(self.markdown),\n \"image_mode\": str(self.IMAGE_MODE),\n \"md_image_placeholder\": str(self.md_image_placeholder),\n \"md_page_break_placeholder\": str(self.md_page_break_placeholder),\n \"pipeline\": str(self.pipeline),\n \"ocr_engine\": (\n self.ocr_engine if self.ocr_engine and self.ocr_engine != \"None\" and self.pipeline != \"vlm\" else None\n ),\n }\n\n self.log(f\"Starting Docling subprocess for file: {local_file_path}\")\n self.log(args)\n\n # Child script for isolating the docling processing\n child_script = textwrap.dedent(\n r\"\"\"\n import json, sys\n\n def try_imports():\n try:\n from docling.datamodel.base_models import ConversionStatus, InputFormat # type: ignore\n from docling.document_converter import DocumentConverter # type: ignore\n from docling_core.types.doc import ImageRefMode # type: ignore\n return ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, \"latest\"\n except Exception as e:\n raise e\n\n def create_converter(strategy, input_format, DocumentConverter, pipeline, ocr_engine):\n # --- Standard PDF/IMAGE pipeline (your existing behavior), with optional OCR ---\n if pipeline == \"standard\":\n try:\n from docling.datamodel.pipeline_options import PdfPipelineOptions # type: ignore\n from docling.document_converter import PdfFormatOption # type: ignore\n\n pipe = PdfPipelineOptions()\n pipe.do_ocr = False\n\n if ocr_engine:\n try:\n from docling.models.factories import get_ocr_factory # type: ignore\n pipe.do_ocr = True\n fac = get_ocr_factory(allow_external_plugins=False)\n pipe.ocr_options = fac.create_options(kind=ocr_engine)\n except Exception:\n # If OCR setup fails, disable it\n pipe.do_ocr = False\n\n fmt = {}\n if hasattr(input_format, \"PDF\"):\n fmt[getattr(input_format, \"PDF\")] = PdfFormatOption(pipeline_options=pipe)\n if hasattr(input_format, \"IMAGE\"):\n fmt[getattr(input_format, \"IMAGE\")] = PdfFormatOption(pipeline_options=pipe)\n\n return DocumentConverter(format_options=fmt)\n except Exception:\n return DocumentConverter()\n\n # --- Vision-Language Model (VLM) pipeline ---\n if pipeline == \"vlm\":\n try:\n from docling.datamodel.pipeline_options import VlmPipelineOptions\n from docling.datamodel.vlm_model_specs import GRANITEDOCLING_MLX, GRANITEDOCLING_TRANSFORMERS\n from docling.document_converter import PdfFormatOption\n from docling.pipeline.vlm_pipeline import VlmPipeline\n\n vl_pipe = VlmPipelineOptions(\n vlm_options=GRANITEDOCLING_TRANSFORMERS,\n )\n\n if sys.platform == \"darwin\":\n try:\n import mlx_vlm\n vl_pipe.vlm_options = GRANITEDOCLING_MLX\n except ImportError as e:\n raise e\n\n # VLM paths generally don't need OCR; keep OCR off by default here.\n fmt = {}\n if hasattr(input_format, \"PDF\"):\n fmt[getattr(input_format, \"PDF\")] = PdfFormatOption(\n pipeline_cls=VlmPipeline,\n pipeline_options=vl_pipe\n )\n if hasattr(input_format, \"IMAGE\"):\n fmt[getattr(input_format, \"IMAGE\")] = PdfFormatOption(\n pipeline_cls=VlmPipeline,\n pipeline_options=vl_pipe\n )\n\n return DocumentConverter(format_options=fmt)\n except Exception as e:\n raise e\n\n # --- Fallback: default converter with no special options ---\n return DocumentConverter()\n\n def export_markdown(document, ImageRefMode, image_mode, img_ph, pg_ph):\n try:\n mode = getattr(ImageRefMode, image_mode.upper(), image_mode)\n return document.export_to_markdown(\n image_mode=mode,\n image_placeholder=img_ph,\n page_break_placeholder=pg_ph,\n )\n except Exception:\n try:\n return document.export_to_text()\n except Exception:\n return str(document)\n\n def to_rows(doc_dict):\n rows = []\n for t in doc_dict.get(\"texts\", []):\n prov = t.get(\"prov\") or []\n page_no = None\n if prov and isinstance(prov, list) and isinstance(prov[0], dict):\n page_no = prov[0].get(\"page_no\")\n rows.append({\n \"page_no\": page_no,\n \"label\": t.get(\"label\"),\n \"text\": t.get(\"text\"),\n \"level\": t.get(\"level\"),\n })\n return rows\n\n def main():\n cfg = json.loads(sys.stdin.read())\n file_path = cfg[\"file_path\"]\n markdown = cfg[\"markdown\"]\n image_mode = cfg[\"image_mode\"]\n img_ph = cfg[\"md_image_placeholder\"]\n pg_ph = cfg[\"md_page_break_placeholder\"]\n pipeline = cfg[\"pipeline\"]\n ocr_engine = cfg.get(\"ocr_engine\")\n meta = {\"file_path\": file_path}\n\n try:\n ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, strategy = try_imports()\n converter = create_converter(strategy, InputFormat, DocumentConverter, pipeline, ocr_engine)\n try:\n res = converter.convert(file_path)\n except Exception as e:\n print(json.dumps({\"ok\": False, \"error\": f\"Docling conversion error: {e}\", \"meta\": meta}))\n return\n\n ok = False\n if hasattr(res, \"status\"):\n try:\n ok = (res.status == ConversionStatus.SUCCESS) or (str(res.status).lower() == \"success\")\n except Exception:\n ok = (str(res.status).lower() == \"success\")\n if not ok and hasattr(res, \"document\"):\n ok = getattr(res, \"document\", None) is not None\n if not ok:\n print(json.dumps({\"ok\": False, \"error\": \"Docling conversion failed\", \"meta\": meta}))\n return\n\n doc = getattr(res, \"document\", None)\n if doc is None:\n print(json.dumps({\"ok\": False, \"error\": \"Docling produced no document\", \"meta\": meta}))\n return\n\n if markdown:\n text = export_markdown(doc, ImageRefMode, image_mode, img_ph, pg_ph)\n print(json.dumps({\"ok\": True, \"mode\": \"markdown\", \"text\": text, \"meta\": meta}))\n return\n\n # structured\n try:\n doc_dict = doc.export_to_dict()\n except Exception as e:\n print(json.dumps({\"ok\": False, \"error\": f\"Docling export_to_dict failed: {e}\", \"meta\": meta}))\n return\n\n rows = to_rows(doc_dict)\n print(json.dumps({\"ok\": True, \"mode\": \"structured\", \"doc\": rows, \"meta\": meta}))\n except Exception as e:\n print(\n json.dumps({\n \"ok\": False,\n \"error\": f\"Docling processing error: {e}\",\n \"meta\": {\"file_path\": file_path},\n })\n )\n\n if __name__ == \"__main__\":\n main()\n \"\"\"\n )\n\n # Validate file_path to avoid command injection or unsafe input\n if not isinstance(args[\"file_path\"], str) or any(c in args[\"file_path\"] for c in [\";\", \"|\", \"&\", \"$\", \"`\"]):\n return Data(data={\"error\": \"Unsafe file path detected.\", \"file_path\": args[\"file_path\"]})\n\n proc = subprocess.run( # noqa: S603\n [sys.executable, \"-u\", \"-c\", child_script],\n input=json.dumps(args).encode(\"utf-8\"),\n capture_output=True,\n check=False,\n )\n\n if not proc.stdout:\n err_msg = proc.stderr.decode(\"utf-8\", errors=\"replace\") or \"no output from child process\"\n return Data(data={\"error\": f\"Docling subprocess error: {err_msg}\", \"file_path\": original_file_path})\n\n try:\n result = json.loads(proc.stdout.decode(\"utf-8\"))\n except Exception as e: # noqa: BLE001\n err_msg = proc.stderr.decode(\"utf-8\", errors=\"replace\")\n return Data(\n data={\n \"error\": f\"Invalid JSON from Docling subprocess: {e}. stderr={err_msg}\",\n \"file_path\": original_file_path,\n },\n )\n\n if not result.get(\"ok\"):\n return Data(data={\"error\": result.get(\"error\", \"Unknown Docling error\"), **result.get(\"meta\", {})})\n\n meta = result.get(\"meta\", {})\n if result.get(\"mode\") == \"markdown\":\n exported_content = str(result.get(\"text\", \"\"))\n return Data(\n text=exported_content,\n data={\"exported_content\": exported_content, \"export_format\": self.EXPORT_FORMAT, **meta},\n )\n\n rows = list(result.get(\"doc\", []))\n return Data(data={\"doc\": rows, \"export_format\": self.EXPORT_FORMAT, **meta})\n\n def process_files(\n self,\n file_list: list[BaseFileComponent.BaseFile],\n ) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Process input files.\n\n - advanced_mode => Docling in a separate process.\n - Otherwise => standard parsing in current process (optionally threaded).\n \"\"\"\n if not file_list:\n msg = \"No files to process.\"\n raise ValueError(msg)\n\n # Validate that files requiring Docling are only processed when advanced mode is enabled\n if not self.advanced_mode:\n for file in file_list:\n extension = file.path.suffix[1:].lower()\n if extension in self.DOCLING_ONLY_EXTENSIONS:\n msg = (\n f\"File '{file.path.name}' has extension '.{extension}' which requires \"\n f\"Advanced Parser mode. Please enable 'Advanced Parser' to process this file.\"\n )\n self.log(msg)\n raise ValueError(msg)\n\n def process_file_standard(file_path: str, *, silent_errors: bool = False) -> Data | None:\n try:\n return parse_text_file_to_data(file_path, silent_errors=silent_errors)\n except FileNotFoundError as e:\n self.log(f\"File not found: {file_path}. Error: {e}\")\n if not silent_errors:\n raise\n return None\n except Exception as e:\n self.log(f\"Unexpected error processing {file_path}: {e}\")\n if not silent_errors:\n raise\n return None\n\n docling_compatible = all(self._is_docling_compatible(str(f.path)) for f in file_list)\n\n # Advanced path: Check if ALL files are compatible with Docling\n if self.advanced_mode and docling_compatible:\n final_return: list[BaseFileComponent.BaseFile] = []\n for file in file_list:\n file_path = str(file.path)\n advanced_data: Data | None = self._process_docling_in_subprocess(file_path)\n\n # --- UNNEST: expand each element in `doc` to its own Data row\n payload = getattr(advanced_data, \"data\", {}) or {}\n doc_rows = payload.get(\"doc\")\n if isinstance(doc_rows, list):\n rows: list[Data | None] = [\n Data(\n data={\n \"file_path\": file_path,\n **(item if isinstance(item, dict) else {\"value\": item}),\n },\n )\n for item in doc_rows\n ]\n final_return.extend(self.rollup_data(file_list, rows))\n else:\n # If not structured, keep as-is (e.g., markdown export or error dict)\n final_return.extend(self.rollup_data(file_list, [advanced_data]))\n return final_return\n\n # Standard multi-file (or single non-advanced) path\n concurrency = 1 if not self.use_multithreading else max(1, self.concurrency_multithreading)\n\n file_paths = [str(f.path) for f in file_list]\n self.log(f\"Starting parallel processing of {len(file_paths)} files with concurrency: {concurrency}.\")\n my_data = parallel_load_data(\n file_paths,\n silent_errors=self.silent_errors,\n load_function=process_file_standard,\n max_concurrency=concurrency,\n )\n return self.rollup_data(file_list, my_data)\n\n # ------------------------------ Output helpers -----------------------------------\n\n def load_files_helper(self) -> DataFrame:\n result = self.load_files()\n\n # Error condition - raise error if no text and an error is present\n if not hasattr(result, \"text\"):\n if hasattr(result, \"error\"):\n raise ValueError(result.error[0])\n msg = \"Could not extract content from the provided file(s).\"\n raise ValueError(msg)\n\n return result\n\n def load_files_dataframe(self) -> DataFrame:\n \"\"\"Load files using advanced Docling processing and export to DataFrame format.\"\"\"\n self.markdown = False\n return self.load_files_helper()\n\n def load_files_markdown(self) -> Message:\n \"\"\"Load files using advanced Docling processing and export to Markdown format.\"\"\"\n self.markdown = True\n result = self.load_files_helper()\n return Message(text=str(result.text[0]))\n"
2747
2747
  },
2748
2748
  "concurrency_multithreading": {
2749
2749
  "_input_type": "IntInput",
@@ -2825,6 +2825,26 @@
2825
2825
  "type": "other",
2826
2826
  "value": ""
2827
2827
  },
2828
+ "file_path_str": {
2829
+ "_input_type": "StrInput",
2830
+ "advanced": true,
2831
+ "display_name": "File Path",
2832
+ "dynamic": false,
2833
+ "info": "Path to the file to read. Used when component is called as a tool. If not provided, will use the uploaded file from 'path' input.",
2834
+ "list": false,
2835
+ "list_add_label": "Add More",
2836
+ "load_from_db": false,
2837
+ "name": "file_path_str",
2838
+ "placeholder": "",
2839
+ "required": false,
2840
+ "show": false,
2841
+ "title_case": false,
2842
+ "tool_mode": true,
2843
+ "trace_as_metadata": true,
2844
+ "track_in_telemetry": false,
2845
+ "type": "str",
2846
+ "value": ""
2847
+ },
2828
2848
  "ignore_unspecified_files": {
2829
2849
  "_input_type": "BoolInput",
2830
2850
  "advanced": true,
@@ -3478,7 +3498,7 @@
3478
3498
  "icon": "AstraDB",
3479
3499
  "legacy": false,
3480
3500
  "metadata": {
3481
- "code_hash": "2b12cdb96b67",
3501
+ "code_hash": "d52094e54e96",
3482
3502
  "dependencies": {
3483
3503
  "dependencies": [
3484
3504
  {
@@ -3646,7 +3666,7 @@
3646
3666
  "show": true,
3647
3667
  "title_case": false,
3648
3668
  "type": "code",
3649
- "value": "from astrapy import DataAPIClient\nfrom langchain_core.documents import Document\n\nfrom lfx.base.datastax.astradb_base import AstraDBBaseComponent\nfrom lfx.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store\nfrom lfx.base.vectorstores.vector_store_connection_decorator import vector_store_connection\nfrom lfx.helpers.data import docs_to_data\nfrom lfx.io import BoolInput, DropdownInput, FloatInput, HandleInput, IntInput, NestedDictInput, QueryInput, StrInput\nfrom lfx.schema.data import Data\nfrom lfx.serialization import serialize\nfrom lfx.utils.version import get_version_info\n\n\n@vector_store_connection\nclass AstraDBVectorStoreComponent(AstraDBBaseComponent, LCVectorStoreComponent):\n display_name: str = \"Astra DB\"\n description: str = \"Ingest and search documents in Astra DB\"\n documentation: str = \"https://docs.langflow.org/bundles-datastax#astra-db\"\n name = \"AstraDB\"\n icon: str = \"AstraDB\"\n\n inputs = [\n *AstraDBBaseComponent.inputs,\n *LCVectorStoreComponent.inputs,\n HandleInput(\n name=\"embedding_model\",\n display_name=\"Embedding Model\",\n input_types=[\"Embeddings\"],\n info=\"Specify the Embedding Model. Not required for Astra Vectorize collections.\",\n required=False,\n show=True,\n ),\n StrInput(\n name=\"content_field\",\n display_name=\"Content Field\",\n info=\"Field to use as the text content field for the vector store.\",\n advanced=True,\n ),\n StrInput(\n name=\"deletion_field\",\n display_name=\"Deletion Based On Field\",\n info=\"When this parameter is provided, documents in the target collection with \"\n \"metadata field values matching the input metadata field value will be deleted \"\n \"before new data is loaded.\",\n advanced=True,\n ),\n BoolInput(\n name=\"ignore_invalid_documents\",\n display_name=\"Ignore Invalid Documents\",\n info=\"Boolean flag to determine whether to ignore invalid documents at runtime.\",\n advanced=True,\n ),\n NestedDictInput(\n name=\"astradb_vectorstore_kwargs\",\n display_name=\"AstraDBVectorStore Parameters\",\n info=\"Optional dictionary of additional parameters for the AstraDBVectorStore.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"search_method\",\n display_name=\"Search Method\",\n info=(\n \"Determine how your content is matched: Vector finds semantic similarity, \"\n \"and Hybrid Search (suggested) combines both approaches \"\n \"with a reranker.\"\n ),\n options=[\"Hybrid Search\", \"Vector Search\"], # TODO: Restore Lexical Search?\n options_metadata=[{\"icon\": \"SearchHybrid\"}, {\"icon\": \"SearchVector\"}],\n value=\"Vector Search\",\n advanced=True,\n real_time_refresh=True,\n ),\n DropdownInput(\n name=\"reranker\",\n display_name=\"Reranker\",\n info=\"Post-retrieval model that re-scores results for optimal relevance ranking.\",\n show=False,\n toggle=True,\n ),\n QueryInput(\n name=\"lexical_terms\",\n display_name=\"Lexical Terms\",\n info=\"Add additional terms/keywords to augment search precision.\",\n placeholder=\"Enter terms to search...\",\n separator=\" \",\n show=False,\n value=\"\",\n ),\n IntInput(\n name=\"number_of_results\",\n display_name=\"Number of Search Results\",\n info=\"Number of search results to return.\",\n advanced=True,\n value=4,\n ),\n DropdownInput(\n name=\"search_type\",\n display_name=\"Search Type\",\n info=\"Search type to use\",\n options=[\"Similarity\", \"Similarity with score threshold\", \"MMR (Max Marginal Relevance)\"],\n value=\"Similarity\",\n advanced=True,\n ),\n FloatInput(\n name=\"search_score_threshold\",\n display_name=\"Search Score Threshold\",\n info=\"Minimum similarity score threshold for search results. \"\n \"(when using 'Similarity with score threshold')\",\n value=0,\n advanced=True,\n ),\n NestedDictInput(\n name=\"advanced_search_filter\",\n display_name=\"Search Metadata Filter\",\n info=\"Optional dictionary of filters to apply to the search query.\",\n advanced=True,\n ),\n ]\n\n async def update_build_config(\n self,\n build_config: dict,\n field_value: str | dict,\n field_name: str | None = None,\n ) -> dict:\n \"\"\"Update build configuration with proper handling of embedding and search options.\"\"\"\n # Handle base astra db build config updates\n build_config = await super().update_build_config(\n build_config,\n field_value=field_value,\n field_name=field_name,\n )\n\n # Set embedding model display based on provider selection\n if isinstance(field_value, dict) and \"02_embedding_generation_provider\" in field_value:\n embedding_provider = field_value.get(\"02_embedding_generation_provider\")\n is_custom_provider = embedding_provider and embedding_provider != \"Bring your own\"\n provider = embedding_provider.lower() if is_custom_provider and embedding_provider is not None else None\n\n build_config[\"embedding_model\"][\"show\"] = not bool(provider)\n build_config[\"embedding_model\"][\"required\"] = not bool(provider)\n\n # Early return if no API endpoint is configured\n if not self.get_api_endpoint():\n return build_config\n\n # Configure search method and related options\n return self._configure_search_options(build_config)\n\n def _configure_search_options(self, build_config: dict) -> dict:\n \"\"\"Configure hybrid search, reranker, and vector search options.\"\"\"\n # Detect available hybrid search capabilities\n hybrid_capabilities = self._detect_hybrid_capabilities()\n\n # Return if we haven't selected a collection\n if not build_config[\"collection_name\"][\"options\"] or not build_config[\"collection_name\"][\"value\"]:\n return build_config\n\n # Get collection options\n collection_options = self._get_collection_options(build_config)\n\n # Get the selected collection index\n index = build_config[\"collection_name\"][\"options\"].index(build_config[\"collection_name\"][\"value\"])\n provider = build_config[\"collection_name\"][\"options_metadata\"][index][\"provider\"]\n build_config[\"embedding_model\"][\"show\"] = not bool(provider)\n build_config[\"embedding_model\"][\"required\"] = not bool(provider)\n\n # Determine search configuration\n is_vector_search = build_config[\"search_method\"][\"value\"] == \"Vector Search\"\n is_autodetect = build_config[\"autodetect_collection\"][\"value\"]\n\n # Apply hybrid search configuration\n if hybrid_capabilities[\"available\"]:\n build_config[\"search_method\"][\"show\"] = True\n build_config[\"search_method\"][\"options\"] = [\"Hybrid Search\", \"Vector Search\"]\n build_config[\"search_method\"][\"value\"] = build_config[\"search_method\"].get(\"value\", \"Hybrid Search\")\n\n build_config[\"reranker\"][\"options\"] = hybrid_capabilities[\"reranker_models\"]\n build_config[\"reranker\"][\"options_metadata\"] = hybrid_capabilities[\"reranker_metadata\"]\n if hybrid_capabilities[\"reranker_models\"]:\n build_config[\"reranker\"][\"value\"] = hybrid_capabilities[\"reranker_models\"][0]\n else:\n build_config[\"search_method\"][\"show\"] = False\n build_config[\"search_method\"][\"options\"] = [\"Vector Search\"]\n build_config[\"search_method\"][\"value\"] = \"Vector Search\"\n build_config[\"reranker\"][\"options\"] = []\n build_config[\"reranker\"][\"options_metadata\"] = []\n\n # Configure reranker visibility and state\n hybrid_enabled = (\n collection_options[\"rerank_enabled\"] and build_config[\"search_method\"][\"value\"] == \"Hybrid Search\"\n )\n\n build_config[\"reranker\"][\"show\"] = hybrid_enabled\n build_config[\"reranker\"][\"toggle_value\"] = hybrid_enabled\n build_config[\"reranker\"][\"toggle_disable\"] = is_vector_search\n\n # Configure lexical terms\n lexical_visible = collection_options[\"lexical_enabled\"] and not is_vector_search\n build_config[\"lexical_terms\"][\"show\"] = lexical_visible\n build_config[\"lexical_terms\"][\"value\"] = \"\" if is_vector_search else build_config[\"lexical_terms\"][\"value\"]\n\n # Configure search type and score threshold\n build_config[\"search_type\"][\"show\"] = is_vector_search\n build_config[\"search_score_threshold\"][\"show\"] = is_vector_search\n\n # Force similarity search for hybrid mode or autodetect\n if hybrid_enabled or is_autodetect:\n build_config[\"search_type\"][\"value\"] = \"Similarity\"\n\n return build_config\n\n def _detect_hybrid_capabilities(self) -> dict:\n \"\"\"Detect available hybrid search and reranking capabilities.\"\"\"\n environment = self.get_environment(self.environment)\n client = DataAPIClient(environment=environment)\n admin_client = client.get_admin()\n db_admin = admin_client.get_database_admin(self.get_api_endpoint(), token=self.token)\n\n try:\n providers = db_admin.find_reranking_providers()\n reranker_models = [\n model.name for provider_data in providers.reranking_providers.values() for model in provider_data.models\n ]\n reranker_metadata = [\n {\"icon\": self.get_provider_icon(provider_name=model.name.split(\"/\")[0])}\n for provider in providers.reranking_providers.values()\n for model in provider.models\n ]\n except Exception as e: # noqa: BLE001\n self.log(f\"Hybrid search not available: {e}\")\n return {\n \"available\": False,\n \"reranker_models\": [],\n \"reranker_metadata\": [],\n }\n else:\n return {\n \"available\": True,\n \"reranker_models\": reranker_models,\n \"reranker_metadata\": reranker_metadata,\n }\n\n def _get_collection_options(self, build_config: dict) -> dict:\n \"\"\"Retrieve collection-level search options.\"\"\"\n database = self.get_database_object(api_endpoint=build_config[\"api_endpoint\"][\"value\"])\n collection = database.get_collection(\n name=build_config[\"collection_name\"][\"value\"],\n keyspace=build_config[\"keyspace\"][\"value\"],\n )\n\n col_options = collection.options()\n\n return {\n \"rerank_enabled\": bool(col_options.rerank and col_options.rerank.enabled),\n \"lexical_enabled\": bool(col_options.lexical and col_options.lexical.enabled),\n }\n\n @check_cached_vector_store\n def build_vector_store(self):\n try:\n from langchain_astradb import AstraDBVectorStore\n from langchain_astradb.utils.astradb import HybridSearchMode\n except ImportError as e:\n msg = (\n \"Could not import langchain Astra DB integration package. \"\n \"Please install it with `pip install langchain-astradb`.\"\n )\n raise ImportError(msg) from e\n\n # Get the embedding model and additional params\n embedding_params = {\"embedding\": self.embedding_model} if self.embedding_model else {}\n\n # Get the additional parameters\n additional_params = self.astradb_vectorstore_kwargs or {}\n\n # Get Langflow version and platform information\n __version__ = get_version_info()[\"version\"]\n langflow_prefix = \"\"\n # if os.getenv(\"AWS_EXECUTION_ENV\") == \"AWS_ECS_FARGATE\": # TODO: More precise way of detecting\n # langflow_prefix = \"ds-\"\n\n # Get the database object\n database = self.get_database_object()\n autodetect = self.collection_name in database.list_collection_names() and self.autodetect_collection\n\n # Bundle up the auto-detect parameters\n autodetect_params = {\n \"autodetect_collection\": autodetect,\n \"content_field\": (\n self.content_field\n if self.content_field and embedding_params\n else (\n \"page_content\"\n if embedding_params\n and self.collection_data(collection_name=self.collection_name, database=database) == 0\n else None\n )\n ),\n \"ignore_invalid_documents\": self.ignore_invalid_documents,\n }\n\n # Choose HybridSearchMode based on the selected param\n hybrid_search_mode = HybridSearchMode.DEFAULT if self.search_method == \"Hybrid Search\" else HybridSearchMode.OFF\n\n # Attempt to build the Vector Store object\n try:\n vector_store = AstraDBVectorStore(\n # Astra DB Authentication Parameters\n token=self.token,\n api_endpoint=database.api_endpoint,\n namespace=database.keyspace,\n collection_name=self.collection_name,\n environment=self.environment,\n # Hybrid Search Parameters\n hybrid_search=hybrid_search_mode,\n # Astra DB Usage Tracking Parameters\n ext_callers=[(f\"{langflow_prefix}langflow\", __version__)],\n # Astra DB Vector Store Parameters\n **autodetect_params,\n **embedding_params,\n **additional_params,\n )\n except ValueError as e:\n msg = f\"Error initializing AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n\n # Add documents to the vector store\n self._add_documents_to_vector_store(vector_store)\n\n return vector_store\n\n def _add_documents_to_vector_store(self, vector_store) -> None:\n self.ingest_data = self._prepare_ingest_data()\n\n documents = []\n for _input in self.ingest_data or []:\n if isinstance(_input, Data):\n documents.append(_input.to_lc_document())\n else:\n msg = \"Vector Store Inputs must be Data objects.\"\n raise TypeError(msg)\n\n documents = [\n Document(page_content=doc.page_content, metadata=serialize(doc.metadata, to_str=True)) for doc in documents\n ]\n\n if documents and self.deletion_field:\n self.log(f\"Deleting documents where {self.deletion_field}\")\n try:\n database = self.get_database_object()\n collection = database.get_collection(self.collection_name, keyspace=database.keyspace)\n delete_values = list({doc.metadata[self.deletion_field] for doc in documents})\n self.log(f\"Deleting documents where {self.deletion_field} matches {delete_values}.\")\n collection.delete_many({f\"metadata.{self.deletion_field}\": {\"$in\": delete_values}})\n except ValueError as e:\n msg = f\"Error deleting documents from AstraDBVectorStore based on '{self.deletion_field}': {e}\"\n raise ValueError(msg) from e\n\n if documents:\n self.log(f\"Adding {len(documents)} documents to the Vector Store.\")\n try:\n vector_store.add_documents(documents)\n except ValueError as e:\n msg = f\"Error adding documents to AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n else:\n self.log(\"No documents to add to the Vector Store.\")\n\n def _map_search_type(self) -> str:\n search_type_mapping = {\n \"Similarity with score threshold\": \"similarity_score_threshold\",\n \"MMR (Max Marginal Relevance)\": \"mmr\",\n }\n\n return search_type_mapping.get(self.search_type, \"similarity\")\n\n def _build_search_args(self):\n # Clean up the search query\n query = self.search_query if isinstance(self.search_query, str) and self.search_query.strip() else None\n lexical_terms = self.lexical_terms or None\n\n # Check if we have a search query, and if so set the args\n if query:\n args = {\n \"query\": query,\n \"search_type\": self._map_search_type(),\n \"k\": self.number_of_results,\n \"score_threshold\": self.search_score_threshold,\n \"lexical_query\": lexical_terms,\n }\n elif self.advanced_search_filter:\n args = {\n \"n\": self.number_of_results,\n }\n else:\n return {}\n\n filter_arg = self.advanced_search_filter or {}\n if filter_arg:\n args[\"filter\"] = filter_arg\n\n return args\n\n def search_documents(self, vector_store=None) -> list[Data]:\n vector_store = vector_store or self.build_vector_store()\n\n self.log(f\"Search input: {self.search_query}\")\n self.log(f\"Search type: {self.search_type}\")\n self.log(f\"Number of results: {self.number_of_results}\")\n self.log(f\"store.hybrid_search: {vector_store.hybrid_search}\")\n self.log(f\"Lexical terms: {self.lexical_terms}\")\n self.log(f\"Reranker: {self.reranker}\")\n\n try:\n search_args = self._build_search_args()\n except ValueError as e:\n msg = f\"Error in AstraDBVectorStore._build_search_args: {e}\"\n raise ValueError(msg) from e\n\n if not search_args:\n self.log(\"No search input or filters provided. Skipping search.\")\n return []\n\n docs = []\n search_method = \"search\" if \"query\" in search_args else \"metadata_search\"\n\n try:\n self.log(f\"Calling vector_store.{search_method} with args: {search_args}\")\n docs = getattr(vector_store, search_method)(**search_args)\n except ValueError as e:\n msg = f\"Error performing {search_method} in AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n\n self.log(f\"Retrieved documents: {len(docs)}\")\n\n data = docs_to_data(docs)\n self.log(f\"Converted documents to data: {len(data)}\")\n self.status = data\n\n return data\n\n def get_retriever_kwargs(self):\n search_args = self._build_search_args()\n\n return {\n \"search_type\": self._map_search_type(),\n \"search_kwargs\": search_args,\n }\n"
3669
+ "value": "from astrapy import DataAPIClient\nfrom langchain_core.documents import Document\n\nfrom lfx.base.datastax.astradb_base import AstraDBBaseComponent\nfrom lfx.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store\nfrom lfx.base.vectorstores.vector_store_connection_decorator import vector_store_connection\nfrom lfx.helpers.data import docs_to_data\nfrom lfx.io import BoolInput, DropdownInput, FloatInput, HandleInput, IntInput, NestedDictInput, QueryInput, StrInput\nfrom lfx.schema.data import Data\nfrom lfx.serialization import serialize\nfrom lfx.utils.version import get_version_info\n\n\n@vector_store_connection\nclass AstraDBVectorStoreComponent(AstraDBBaseComponent, LCVectorStoreComponent):\n display_name: str = \"Astra DB\"\n description: str = \"Ingest and search documents in Astra DB\"\n documentation: str = \"https://docs.langflow.org/bundles-datastax\"\n name = \"AstraDB\"\n icon: str = \"AstraDB\"\n\n inputs = [\n *AstraDBBaseComponent.inputs,\n *LCVectorStoreComponent.inputs,\n HandleInput(\n name=\"embedding_model\",\n display_name=\"Embedding Model\",\n input_types=[\"Embeddings\"],\n info=\"Specify the Embedding Model. Not required for Astra Vectorize collections.\",\n required=False,\n show=True,\n ),\n StrInput(\n name=\"content_field\",\n display_name=\"Content Field\",\n info=\"Field to use as the text content field for the vector store.\",\n advanced=True,\n ),\n StrInput(\n name=\"deletion_field\",\n display_name=\"Deletion Based On Field\",\n info=\"When this parameter is provided, documents in the target collection with \"\n \"metadata field values matching the input metadata field value will be deleted \"\n \"before new data is loaded.\",\n advanced=True,\n ),\n BoolInput(\n name=\"ignore_invalid_documents\",\n display_name=\"Ignore Invalid Documents\",\n info=\"Boolean flag to determine whether to ignore invalid documents at runtime.\",\n advanced=True,\n ),\n NestedDictInput(\n name=\"astradb_vectorstore_kwargs\",\n display_name=\"AstraDBVectorStore Parameters\",\n info=\"Optional dictionary of additional parameters for the AstraDBVectorStore.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"search_method\",\n display_name=\"Search Method\",\n info=(\n \"Determine how your content is matched: Vector finds semantic similarity, \"\n \"and Hybrid Search (suggested) combines both approaches \"\n \"with a reranker.\"\n ),\n options=[\"Hybrid Search\", \"Vector Search\"], # TODO: Restore Lexical Search?\n options_metadata=[{\"icon\": \"SearchHybrid\"}, {\"icon\": \"SearchVector\"}],\n value=\"Vector Search\",\n advanced=True,\n real_time_refresh=True,\n ),\n DropdownInput(\n name=\"reranker\",\n display_name=\"Reranker\",\n info=\"Post-retrieval model that re-scores results for optimal relevance ranking.\",\n show=False,\n toggle=True,\n ),\n QueryInput(\n name=\"lexical_terms\",\n display_name=\"Lexical Terms\",\n info=\"Add additional terms/keywords to augment search precision.\",\n placeholder=\"Enter terms to search...\",\n separator=\" \",\n show=False,\n value=\"\",\n ),\n IntInput(\n name=\"number_of_results\",\n display_name=\"Number of Search Results\",\n info=\"Number of search results to return.\",\n advanced=True,\n value=4,\n ),\n DropdownInput(\n name=\"search_type\",\n display_name=\"Search Type\",\n info=\"Search type to use\",\n options=[\"Similarity\", \"Similarity with score threshold\", \"MMR (Max Marginal Relevance)\"],\n value=\"Similarity\",\n advanced=True,\n ),\n FloatInput(\n name=\"search_score_threshold\",\n display_name=\"Search Score Threshold\",\n info=\"Minimum similarity score threshold for search results. \"\n \"(when using 'Similarity with score threshold')\",\n value=0,\n advanced=True,\n ),\n NestedDictInput(\n name=\"advanced_search_filter\",\n display_name=\"Search Metadata Filter\",\n info=\"Optional dictionary of filters to apply to the search query.\",\n advanced=True,\n ),\n ]\n\n async def update_build_config(\n self,\n build_config: dict,\n field_value: str | dict,\n field_name: str | None = None,\n ) -> dict:\n \"\"\"Update build configuration with proper handling of embedding and search options.\"\"\"\n # Handle base astra db build config updates\n build_config = await super().update_build_config(\n build_config,\n field_value=field_value,\n field_name=field_name,\n )\n\n # Set embedding model display based on provider selection\n if isinstance(field_value, dict) and \"02_embedding_generation_provider\" in field_value:\n embedding_provider = field_value.get(\"02_embedding_generation_provider\")\n is_custom_provider = embedding_provider and embedding_provider != \"Bring your own\"\n provider = embedding_provider.lower() if is_custom_provider and embedding_provider is not None else None\n\n build_config[\"embedding_model\"][\"show\"] = not bool(provider)\n build_config[\"embedding_model\"][\"required\"] = not bool(provider)\n\n # Early return if no API endpoint is configured\n if not self.get_api_endpoint():\n return build_config\n\n # Configure search method and related options\n return self._configure_search_options(build_config)\n\n def _configure_search_options(self, build_config: dict) -> dict:\n \"\"\"Configure hybrid search, reranker, and vector search options.\"\"\"\n # Detect available hybrid search capabilities\n hybrid_capabilities = self._detect_hybrid_capabilities()\n\n # Return if we haven't selected a collection\n if not build_config[\"collection_name\"][\"options\"] or not build_config[\"collection_name\"][\"value\"]:\n return build_config\n\n # Get collection options\n collection_options = self._get_collection_options(build_config)\n\n # Get the selected collection index\n index = build_config[\"collection_name\"][\"options\"].index(build_config[\"collection_name\"][\"value\"])\n provider = build_config[\"collection_name\"][\"options_metadata\"][index][\"provider\"]\n build_config[\"embedding_model\"][\"show\"] = not bool(provider)\n build_config[\"embedding_model\"][\"required\"] = not bool(provider)\n\n # Determine search configuration\n is_vector_search = build_config[\"search_method\"][\"value\"] == \"Vector Search\"\n is_autodetect = build_config[\"autodetect_collection\"][\"value\"]\n\n # Apply hybrid search configuration\n if hybrid_capabilities[\"available\"]:\n build_config[\"search_method\"][\"show\"] = True\n build_config[\"search_method\"][\"options\"] = [\"Hybrid Search\", \"Vector Search\"]\n build_config[\"search_method\"][\"value\"] = build_config[\"search_method\"].get(\"value\", \"Hybrid Search\")\n\n build_config[\"reranker\"][\"options\"] = hybrid_capabilities[\"reranker_models\"]\n build_config[\"reranker\"][\"options_metadata\"] = hybrid_capabilities[\"reranker_metadata\"]\n if hybrid_capabilities[\"reranker_models\"]:\n build_config[\"reranker\"][\"value\"] = hybrid_capabilities[\"reranker_models\"][0]\n else:\n build_config[\"search_method\"][\"show\"] = False\n build_config[\"search_method\"][\"options\"] = [\"Vector Search\"]\n build_config[\"search_method\"][\"value\"] = \"Vector Search\"\n build_config[\"reranker\"][\"options\"] = []\n build_config[\"reranker\"][\"options_metadata\"] = []\n\n # Configure reranker visibility and state\n hybrid_enabled = (\n collection_options[\"rerank_enabled\"] and build_config[\"search_method\"][\"value\"] == \"Hybrid Search\"\n )\n\n build_config[\"reranker\"][\"show\"] = hybrid_enabled\n build_config[\"reranker\"][\"toggle_value\"] = hybrid_enabled\n build_config[\"reranker\"][\"toggle_disable\"] = is_vector_search\n\n # Configure lexical terms\n lexical_visible = collection_options[\"lexical_enabled\"] and not is_vector_search\n build_config[\"lexical_terms\"][\"show\"] = lexical_visible\n build_config[\"lexical_terms\"][\"value\"] = \"\" if is_vector_search else build_config[\"lexical_terms\"][\"value\"]\n\n # Configure search type and score threshold\n build_config[\"search_type\"][\"show\"] = is_vector_search\n build_config[\"search_score_threshold\"][\"show\"] = is_vector_search\n\n # Force similarity search for hybrid mode or autodetect\n if hybrid_enabled or is_autodetect:\n build_config[\"search_type\"][\"value\"] = \"Similarity\"\n\n return build_config\n\n def _detect_hybrid_capabilities(self) -> dict:\n \"\"\"Detect available hybrid search and reranking capabilities.\"\"\"\n environment = self.get_environment(self.environment)\n client = DataAPIClient(environment=environment)\n admin_client = client.get_admin()\n db_admin = admin_client.get_database_admin(self.get_api_endpoint(), token=self.token)\n\n try:\n providers = db_admin.find_reranking_providers()\n reranker_models = [\n model.name for provider_data in providers.reranking_providers.values() for model in provider_data.models\n ]\n reranker_metadata = [\n {\"icon\": self.get_provider_icon(provider_name=model.name.split(\"/\")[0])}\n for provider in providers.reranking_providers.values()\n for model in provider.models\n ]\n except Exception as e: # noqa: BLE001\n self.log(f\"Hybrid search not available: {e}\")\n return {\n \"available\": False,\n \"reranker_models\": [],\n \"reranker_metadata\": [],\n }\n else:\n return {\n \"available\": True,\n \"reranker_models\": reranker_models,\n \"reranker_metadata\": reranker_metadata,\n }\n\n def _get_collection_options(self, build_config: dict) -> dict:\n \"\"\"Retrieve collection-level search options.\"\"\"\n database = self.get_database_object(api_endpoint=build_config[\"api_endpoint\"][\"value\"])\n collection = database.get_collection(\n name=build_config[\"collection_name\"][\"value\"],\n keyspace=build_config[\"keyspace\"][\"value\"],\n )\n\n col_options = collection.options()\n\n return {\n \"rerank_enabled\": bool(col_options.rerank and col_options.rerank.enabled),\n \"lexical_enabled\": bool(col_options.lexical and col_options.lexical.enabled),\n }\n\n @check_cached_vector_store\n def build_vector_store(self):\n try:\n from langchain_astradb import AstraDBVectorStore\n from langchain_astradb.utils.astradb import HybridSearchMode\n except ImportError as e:\n msg = (\n \"Could not import langchain Astra DB integration package. \"\n \"Please install it with `pip install langchain-astradb`.\"\n )\n raise ImportError(msg) from e\n\n # Get the embedding model and additional params\n embedding_params = {\"embedding\": self.embedding_model} if self.embedding_model else {}\n\n # Get the additional parameters\n additional_params = self.astradb_vectorstore_kwargs or {}\n\n # Get Langflow version and platform information\n __version__ = get_version_info()[\"version\"]\n langflow_prefix = \"\"\n # if os.getenv(\"AWS_EXECUTION_ENV\") == \"AWS_ECS_FARGATE\": # TODO: More precise way of detecting\n # langflow_prefix = \"ds-\"\n\n # Get the database object\n database = self.get_database_object()\n autodetect = self.collection_name in database.list_collection_names() and self.autodetect_collection\n\n # Bundle up the auto-detect parameters\n autodetect_params = {\n \"autodetect_collection\": autodetect,\n \"content_field\": (\n self.content_field\n if self.content_field and embedding_params\n else (\n \"page_content\"\n if embedding_params\n and self.collection_data(collection_name=self.collection_name, database=database) == 0\n else None\n )\n ),\n \"ignore_invalid_documents\": self.ignore_invalid_documents,\n }\n\n # Choose HybridSearchMode based on the selected param\n hybrid_search_mode = HybridSearchMode.DEFAULT if self.search_method == \"Hybrid Search\" else HybridSearchMode.OFF\n\n # Attempt to build the Vector Store object\n try:\n vector_store = AstraDBVectorStore(\n # Astra DB Authentication Parameters\n token=self.token,\n api_endpoint=database.api_endpoint,\n namespace=database.keyspace,\n collection_name=self.collection_name,\n environment=self.environment,\n # Hybrid Search Parameters\n hybrid_search=hybrid_search_mode,\n # Astra DB Usage Tracking Parameters\n ext_callers=[(f\"{langflow_prefix}langflow\", __version__)],\n # Astra DB Vector Store Parameters\n **autodetect_params,\n **embedding_params,\n **additional_params,\n )\n except ValueError as e:\n msg = f\"Error initializing AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n\n # Add documents to the vector store\n self._add_documents_to_vector_store(vector_store)\n\n return vector_store\n\n def _add_documents_to_vector_store(self, vector_store) -> None:\n self.ingest_data = self._prepare_ingest_data()\n\n documents = []\n for _input in self.ingest_data or []:\n if isinstance(_input, Data):\n documents.append(_input.to_lc_document())\n else:\n msg = \"Vector Store Inputs must be Data objects.\"\n raise TypeError(msg)\n\n documents = [\n Document(page_content=doc.page_content, metadata=serialize(doc.metadata, to_str=True)) for doc in documents\n ]\n\n if documents and self.deletion_field:\n self.log(f\"Deleting documents where {self.deletion_field}\")\n try:\n database = self.get_database_object()\n collection = database.get_collection(self.collection_name, keyspace=database.keyspace)\n delete_values = list({doc.metadata[self.deletion_field] for doc in documents})\n self.log(f\"Deleting documents where {self.deletion_field} matches {delete_values}.\")\n collection.delete_many({f\"metadata.{self.deletion_field}\": {\"$in\": delete_values}})\n except ValueError as e:\n msg = f\"Error deleting documents from AstraDBVectorStore based on '{self.deletion_field}': {e}\"\n raise ValueError(msg) from e\n\n if documents:\n self.log(f\"Adding {len(documents)} documents to the Vector Store.\")\n try:\n vector_store.add_documents(documents)\n except ValueError as e:\n msg = f\"Error adding documents to AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n else:\n self.log(\"No documents to add to the Vector Store.\")\n\n def _map_search_type(self) -> str:\n search_type_mapping = {\n \"Similarity with score threshold\": \"similarity_score_threshold\",\n \"MMR (Max Marginal Relevance)\": \"mmr\",\n }\n\n return search_type_mapping.get(self.search_type, \"similarity\")\n\n def _build_search_args(self):\n # Clean up the search query\n query = self.search_query if isinstance(self.search_query, str) and self.search_query.strip() else None\n lexical_terms = self.lexical_terms or None\n\n # Check if we have a search query, and if so set the args\n if query:\n args = {\n \"query\": query,\n \"search_type\": self._map_search_type(),\n \"k\": self.number_of_results,\n \"score_threshold\": self.search_score_threshold,\n \"lexical_query\": lexical_terms,\n }\n elif self.advanced_search_filter:\n args = {\n \"n\": self.number_of_results,\n }\n else:\n return {}\n\n filter_arg = self.advanced_search_filter or {}\n if filter_arg:\n args[\"filter\"] = filter_arg\n\n return args\n\n def search_documents(self, vector_store=None) -> list[Data]:\n vector_store = vector_store or self.build_vector_store()\n\n self.log(f\"Search input: {self.search_query}\")\n self.log(f\"Search type: {self.search_type}\")\n self.log(f\"Number of results: {self.number_of_results}\")\n self.log(f\"store.hybrid_search: {vector_store.hybrid_search}\")\n self.log(f\"Lexical terms: {self.lexical_terms}\")\n self.log(f\"Reranker: {self.reranker}\")\n\n try:\n search_args = self._build_search_args()\n except ValueError as e:\n msg = f\"Error in AstraDBVectorStore._build_search_args: {e}\"\n raise ValueError(msg) from e\n\n if not search_args:\n self.log(\"No search input or filters provided. Skipping search.\")\n return []\n\n docs = []\n search_method = \"search\" if \"query\" in search_args else \"metadata_search\"\n\n try:\n self.log(f\"Calling vector_store.{search_method} with args: {search_args}\")\n docs = getattr(vector_store, search_method)(**search_args)\n except ValueError as e:\n msg = f\"Error performing {search_method} in AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n\n self.log(f\"Retrieved documents: {len(docs)}\")\n\n data = docs_to_data(docs)\n self.log(f\"Converted documents to data: {len(data)}\")\n self.status = data\n\n return data\n\n def get_retriever_kwargs(self):\n search_args = self._build_search_args()\n\n return {\n \"search_type\": self._map_search_type(),\n \"search_kwargs\": search_args,\n }\n"
3650
3670
  },
3651
3671
  "collection_name": {
3652
3672
  "_input_type": "DropdownInput",
@@ -4291,7 +4311,7 @@
4291
4311
  "icon": "AstraDB",
4292
4312
  "legacy": false,
4293
4313
  "metadata": {
4294
- "code_hash": "2b12cdb96b67",
4314
+ "code_hash": "d52094e54e96",
4295
4315
  "dependencies": {
4296
4316
  "dependencies": [
4297
4317
  {
@@ -4459,7 +4479,7 @@
4459
4479
  "show": true,
4460
4480
  "title_case": false,
4461
4481
  "type": "code",
4462
- "value": "from astrapy import DataAPIClient\nfrom langchain_core.documents import Document\n\nfrom lfx.base.datastax.astradb_base import AstraDBBaseComponent\nfrom lfx.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store\nfrom lfx.base.vectorstores.vector_store_connection_decorator import vector_store_connection\nfrom lfx.helpers.data import docs_to_data\nfrom lfx.io import BoolInput, DropdownInput, FloatInput, HandleInput, IntInput, NestedDictInput, QueryInput, StrInput\nfrom lfx.schema.data import Data\nfrom lfx.serialization import serialize\nfrom lfx.utils.version import get_version_info\n\n\n@vector_store_connection\nclass AstraDBVectorStoreComponent(AstraDBBaseComponent, LCVectorStoreComponent):\n display_name: str = \"Astra DB\"\n description: str = \"Ingest and search documents in Astra DB\"\n documentation: str = \"https://docs.langflow.org/bundles-datastax#astra-db\"\n name = \"AstraDB\"\n icon: str = \"AstraDB\"\n\n inputs = [\n *AstraDBBaseComponent.inputs,\n *LCVectorStoreComponent.inputs,\n HandleInput(\n name=\"embedding_model\",\n display_name=\"Embedding Model\",\n input_types=[\"Embeddings\"],\n info=\"Specify the Embedding Model. Not required for Astra Vectorize collections.\",\n required=False,\n show=True,\n ),\n StrInput(\n name=\"content_field\",\n display_name=\"Content Field\",\n info=\"Field to use as the text content field for the vector store.\",\n advanced=True,\n ),\n StrInput(\n name=\"deletion_field\",\n display_name=\"Deletion Based On Field\",\n info=\"When this parameter is provided, documents in the target collection with \"\n \"metadata field values matching the input metadata field value will be deleted \"\n \"before new data is loaded.\",\n advanced=True,\n ),\n BoolInput(\n name=\"ignore_invalid_documents\",\n display_name=\"Ignore Invalid Documents\",\n info=\"Boolean flag to determine whether to ignore invalid documents at runtime.\",\n advanced=True,\n ),\n NestedDictInput(\n name=\"astradb_vectorstore_kwargs\",\n display_name=\"AstraDBVectorStore Parameters\",\n info=\"Optional dictionary of additional parameters for the AstraDBVectorStore.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"search_method\",\n display_name=\"Search Method\",\n info=(\n \"Determine how your content is matched: Vector finds semantic similarity, \"\n \"and Hybrid Search (suggested) combines both approaches \"\n \"with a reranker.\"\n ),\n options=[\"Hybrid Search\", \"Vector Search\"], # TODO: Restore Lexical Search?\n options_metadata=[{\"icon\": \"SearchHybrid\"}, {\"icon\": \"SearchVector\"}],\n value=\"Vector Search\",\n advanced=True,\n real_time_refresh=True,\n ),\n DropdownInput(\n name=\"reranker\",\n display_name=\"Reranker\",\n info=\"Post-retrieval model that re-scores results for optimal relevance ranking.\",\n show=False,\n toggle=True,\n ),\n QueryInput(\n name=\"lexical_terms\",\n display_name=\"Lexical Terms\",\n info=\"Add additional terms/keywords to augment search precision.\",\n placeholder=\"Enter terms to search...\",\n separator=\" \",\n show=False,\n value=\"\",\n ),\n IntInput(\n name=\"number_of_results\",\n display_name=\"Number of Search Results\",\n info=\"Number of search results to return.\",\n advanced=True,\n value=4,\n ),\n DropdownInput(\n name=\"search_type\",\n display_name=\"Search Type\",\n info=\"Search type to use\",\n options=[\"Similarity\", \"Similarity with score threshold\", \"MMR (Max Marginal Relevance)\"],\n value=\"Similarity\",\n advanced=True,\n ),\n FloatInput(\n name=\"search_score_threshold\",\n display_name=\"Search Score Threshold\",\n info=\"Minimum similarity score threshold for search results. \"\n \"(when using 'Similarity with score threshold')\",\n value=0,\n advanced=True,\n ),\n NestedDictInput(\n name=\"advanced_search_filter\",\n display_name=\"Search Metadata Filter\",\n info=\"Optional dictionary of filters to apply to the search query.\",\n advanced=True,\n ),\n ]\n\n async def update_build_config(\n self,\n build_config: dict,\n field_value: str | dict,\n field_name: str | None = None,\n ) -> dict:\n \"\"\"Update build configuration with proper handling of embedding and search options.\"\"\"\n # Handle base astra db build config updates\n build_config = await super().update_build_config(\n build_config,\n field_value=field_value,\n field_name=field_name,\n )\n\n # Set embedding model display based on provider selection\n if isinstance(field_value, dict) and \"02_embedding_generation_provider\" in field_value:\n embedding_provider = field_value.get(\"02_embedding_generation_provider\")\n is_custom_provider = embedding_provider and embedding_provider != \"Bring your own\"\n provider = embedding_provider.lower() if is_custom_provider and embedding_provider is not None else None\n\n build_config[\"embedding_model\"][\"show\"] = not bool(provider)\n build_config[\"embedding_model\"][\"required\"] = not bool(provider)\n\n # Early return if no API endpoint is configured\n if not self.get_api_endpoint():\n return build_config\n\n # Configure search method and related options\n return self._configure_search_options(build_config)\n\n def _configure_search_options(self, build_config: dict) -> dict:\n \"\"\"Configure hybrid search, reranker, and vector search options.\"\"\"\n # Detect available hybrid search capabilities\n hybrid_capabilities = self._detect_hybrid_capabilities()\n\n # Return if we haven't selected a collection\n if not build_config[\"collection_name\"][\"options\"] or not build_config[\"collection_name\"][\"value\"]:\n return build_config\n\n # Get collection options\n collection_options = self._get_collection_options(build_config)\n\n # Get the selected collection index\n index = build_config[\"collection_name\"][\"options\"].index(build_config[\"collection_name\"][\"value\"])\n provider = build_config[\"collection_name\"][\"options_metadata\"][index][\"provider\"]\n build_config[\"embedding_model\"][\"show\"] = not bool(provider)\n build_config[\"embedding_model\"][\"required\"] = not bool(provider)\n\n # Determine search configuration\n is_vector_search = build_config[\"search_method\"][\"value\"] == \"Vector Search\"\n is_autodetect = build_config[\"autodetect_collection\"][\"value\"]\n\n # Apply hybrid search configuration\n if hybrid_capabilities[\"available\"]:\n build_config[\"search_method\"][\"show\"] = True\n build_config[\"search_method\"][\"options\"] = [\"Hybrid Search\", \"Vector Search\"]\n build_config[\"search_method\"][\"value\"] = build_config[\"search_method\"].get(\"value\", \"Hybrid Search\")\n\n build_config[\"reranker\"][\"options\"] = hybrid_capabilities[\"reranker_models\"]\n build_config[\"reranker\"][\"options_metadata\"] = hybrid_capabilities[\"reranker_metadata\"]\n if hybrid_capabilities[\"reranker_models\"]:\n build_config[\"reranker\"][\"value\"] = hybrid_capabilities[\"reranker_models\"][0]\n else:\n build_config[\"search_method\"][\"show\"] = False\n build_config[\"search_method\"][\"options\"] = [\"Vector Search\"]\n build_config[\"search_method\"][\"value\"] = \"Vector Search\"\n build_config[\"reranker\"][\"options\"] = []\n build_config[\"reranker\"][\"options_metadata\"] = []\n\n # Configure reranker visibility and state\n hybrid_enabled = (\n collection_options[\"rerank_enabled\"] and build_config[\"search_method\"][\"value\"] == \"Hybrid Search\"\n )\n\n build_config[\"reranker\"][\"show\"] = hybrid_enabled\n build_config[\"reranker\"][\"toggle_value\"] = hybrid_enabled\n build_config[\"reranker\"][\"toggle_disable\"] = is_vector_search\n\n # Configure lexical terms\n lexical_visible = collection_options[\"lexical_enabled\"] and not is_vector_search\n build_config[\"lexical_terms\"][\"show\"] = lexical_visible\n build_config[\"lexical_terms\"][\"value\"] = \"\" if is_vector_search else build_config[\"lexical_terms\"][\"value\"]\n\n # Configure search type and score threshold\n build_config[\"search_type\"][\"show\"] = is_vector_search\n build_config[\"search_score_threshold\"][\"show\"] = is_vector_search\n\n # Force similarity search for hybrid mode or autodetect\n if hybrid_enabled or is_autodetect:\n build_config[\"search_type\"][\"value\"] = \"Similarity\"\n\n return build_config\n\n def _detect_hybrid_capabilities(self) -> dict:\n \"\"\"Detect available hybrid search and reranking capabilities.\"\"\"\n environment = self.get_environment(self.environment)\n client = DataAPIClient(environment=environment)\n admin_client = client.get_admin()\n db_admin = admin_client.get_database_admin(self.get_api_endpoint(), token=self.token)\n\n try:\n providers = db_admin.find_reranking_providers()\n reranker_models = [\n model.name for provider_data in providers.reranking_providers.values() for model in provider_data.models\n ]\n reranker_metadata = [\n {\"icon\": self.get_provider_icon(provider_name=model.name.split(\"/\")[0])}\n for provider in providers.reranking_providers.values()\n for model in provider.models\n ]\n except Exception as e: # noqa: BLE001\n self.log(f\"Hybrid search not available: {e}\")\n return {\n \"available\": False,\n \"reranker_models\": [],\n \"reranker_metadata\": [],\n }\n else:\n return {\n \"available\": True,\n \"reranker_models\": reranker_models,\n \"reranker_metadata\": reranker_metadata,\n }\n\n def _get_collection_options(self, build_config: dict) -> dict:\n \"\"\"Retrieve collection-level search options.\"\"\"\n database = self.get_database_object(api_endpoint=build_config[\"api_endpoint\"][\"value\"])\n collection = database.get_collection(\n name=build_config[\"collection_name\"][\"value\"],\n keyspace=build_config[\"keyspace\"][\"value\"],\n )\n\n col_options = collection.options()\n\n return {\n \"rerank_enabled\": bool(col_options.rerank and col_options.rerank.enabled),\n \"lexical_enabled\": bool(col_options.lexical and col_options.lexical.enabled),\n }\n\n @check_cached_vector_store\n def build_vector_store(self):\n try:\n from langchain_astradb import AstraDBVectorStore\n from langchain_astradb.utils.astradb import HybridSearchMode\n except ImportError as e:\n msg = (\n \"Could not import langchain Astra DB integration package. \"\n \"Please install it with `pip install langchain-astradb`.\"\n )\n raise ImportError(msg) from e\n\n # Get the embedding model and additional params\n embedding_params = {\"embedding\": self.embedding_model} if self.embedding_model else {}\n\n # Get the additional parameters\n additional_params = self.astradb_vectorstore_kwargs or {}\n\n # Get Langflow version and platform information\n __version__ = get_version_info()[\"version\"]\n langflow_prefix = \"\"\n # if os.getenv(\"AWS_EXECUTION_ENV\") == \"AWS_ECS_FARGATE\": # TODO: More precise way of detecting\n # langflow_prefix = \"ds-\"\n\n # Get the database object\n database = self.get_database_object()\n autodetect = self.collection_name in database.list_collection_names() and self.autodetect_collection\n\n # Bundle up the auto-detect parameters\n autodetect_params = {\n \"autodetect_collection\": autodetect,\n \"content_field\": (\n self.content_field\n if self.content_field and embedding_params\n else (\n \"page_content\"\n if embedding_params\n and self.collection_data(collection_name=self.collection_name, database=database) == 0\n else None\n )\n ),\n \"ignore_invalid_documents\": self.ignore_invalid_documents,\n }\n\n # Choose HybridSearchMode based on the selected param\n hybrid_search_mode = HybridSearchMode.DEFAULT if self.search_method == \"Hybrid Search\" else HybridSearchMode.OFF\n\n # Attempt to build the Vector Store object\n try:\n vector_store = AstraDBVectorStore(\n # Astra DB Authentication Parameters\n token=self.token,\n api_endpoint=database.api_endpoint,\n namespace=database.keyspace,\n collection_name=self.collection_name,\n environment=self.environment,\n # Hybrid Search Parameters\n hybrid_search=hybrid_search_mode,\n # Astra DB Usage Tracking Parameters\n ext_callers=[(f\"{langflow_prefix}langflow\", __version__)],\n # Astra DB Vector Store Parameters\n **autodetect_params,\n **embedding_params,\n **additional_params,\n )\n except ValueError as e:\n msg = f\"Error initializing AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n\n # Add documents to the vector store\n self._add_documents_to_vector_store(vector_store)\n\n return vector_store\n\n def _add_documents_to_vector_store(self, vector_store) -> None:\n self.ingest_data = self._prepare_ingest_data()\n\n documents = []\n for _input in self.ingest_data or []:\n if isinstance(_input, Data):\n documents.append(_input.to_lc_document())\n else:\n msg = \"Vector Store Inputs must be Data objects.\"\n raise TypeError(msg)\n\n documents = [\n Document(page_content=doc.page_content, metadata=serialize(doc.metadata, to_str=True)) for doc in documents\n ]\n\n if documents and self.deletion_field:\n self.log(f\"Deleting documents where {self.deletion_field}\")\n try:\n database = self.get_database_object()\n collection = database.get_collection(self.collection_name, keyspace=database.keyspace)\n delete_values = list({doc.metadata[self.deletion_field] for doc in documents})\n self.log(f\"Deleting documents where {self.deletion_field} matches {delete_values}.\")\n collection.delete_many({f\"metadata.{self.deletion_field}\": {\"$in\": delete_values}})\n except ValueError as e:\n msg = f\"Error deleting documents from AstraDBVectorStore based on '{self.deletion_field}': {e}\"\n raise ValueError(msg) from e\n\n if documents:\n self.log(f\"Adding {len(documents)} documents to the Vector Store.\")\n try:\n vector_store.add_documents(documents)\n except ValueError as e:\n msg = f\"Error adding documents to AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n else:\n self.log(\"No documents to add to the Vector Store.\")\n\n def _map_search_type(self) -> str:\n search_type_mapping = {\n \"Similarity with score threshold\": \"similarity_score_threshold\",\n \"MMR (Max Marginal Relevance)\": \"mmr\",\n }\n\n return search_type_mapping.get(self.search_type, \"similarity\")\n\n def _build_search_args(self):\n # Clean up the search query\n query = self.search_query if isinstance(self.search_query, str) and self.search_query.strip() else None\n lexical_terms = self.lexical_terms or None\n\n # Check if we have a search query, and if so set the args\n if query:\n args = {\n \"query\": query,\n \"search_type\": self._map_search_type(),\n \"k\": self.number_of_results,\n \"score_threshold\": self.search_score_threshold,\n \"lexical_query\": lexical_terms,\n }\n elif self.advanced_search_filter:\n args = {\n \"n\": self.number_of_results,\n }\n else:\n return {}\n\n filter_arg = self.advanced_search_filter or {}\n if filter_arg:\n args[\"filter\"] = filter_arg\n\n return args\n\n def search_documents(self, vector_store=None) -> list[Data]:\n vector_store = vector_store or self.build_vector_store()\n\n self.log(f\"Search input: {self.search_query}\")\n self.log(f\"Search type: {self.search_type}\")\n self.log(f\"Number of results: {self.number_of_results}\")\n self.log(f\"store.hybrid_search: {vector_store.hybrid_search}\")\n self.log(f\"Lexical terms: {self.lexical_terms}\")\n self.log(f\"Reranker: {self.reranker}\")\n\n try:\n search_args = self._build_search_args()\n except ValueError as e:\n msg = f\"Error in AstraDBVectorStore._build_search_args: {e}\"\n raise ValueError(msg) from e\n\n if not search_args:\n self.log(\"No search input or filters provided. Skipping search.\")\n return []\n\n docs = []\n search_method = \"search\" if \"query\" in search_args else \"metadata_search\"\n\n try:\n self.log(f\"Calling vector_store.{search_method} with args: {search_args}\")\n docs = getattr(vector_store, search_method)(**search_args)\n except ValueError as e:\n msg = f\"Error performing {search_method} in AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n\n self.log(f\"Retrieved documents: {len(docs)}\")\n\n data = docs_to_data(docs)\n self.log(f\"Converted documents to data: {len(data)}\")\n self.status = data\n\n return data\n\n def get_retriever_kwargs(self):\n search_args = self._build_search_args()\n\n return {\n \"search_type\": self._map_search_type(),\n \"search_kwargs\": search_args,\n }\n"
4482
+ "value": "from astrapy import DataAPIClient\nfrom langchain_core.documents import Document\n\nfrom lfx.base.datastax.astradb_base import AstraDBBaseComponent\nfrom lfx.base.vectorstores.model import LCVectorStoreComponent, check_cached_vector_store\nfrom lfx.base.vectorstores.vector_store_connection_decorator import vector_store_connection\nfrom lfx.helpers.data import docs_to_data\nfrom lfx.io import BoolInput, DropdownInput, FloatInput, HandleInput, IntInput, NestedDictInput, QueryInput, StrInput\nfrom lfx.schema.data import Data\nfrom lfx.serialization import serialize\nfrom lfx.utils.version import get_version_info\n\n\n@vector_store_connection\nclass AstraDBVectorStoreComponent(AstraDBBaseComponent, LCVectorStoreComponent):\n display_name: str = \"Astra DB\"\n description: str = \"Ingest and search documents in Astra DB\"\n documentation: str = \"https://docs.langflow.org/bundles-datastax\"\n name = \"AstraDB\"\n icon: str = \"AstraDB\"\n\n inputs = [\n *AstraDBBaseComponent.inputs,\n *LCVectorStoreComponent.inputs,\n HandleInput(\n name=\"embedding_model\",\n display_name=\"Embedding Model\",\n input_types=[\"Embeddings\"],\n info=\"Specify the Embedding Model. Not required for Astra Vectorize collections.\",\n required=False,\n show=True,\n ),\n StrInput(\n name=\"content_field\",\n display_name=\"Content Field\",\n info=\"Field to use as the text content field for the vector store.\",\n advanced=True,\n ),\n StrInput(\n name=\"deletion_field\",\n display_name=\"Deletion Based On Field\",\n info=\"When this parameter is provided, documents in the target collection with \"\n \"metadata field values matching the input metadata field value will be deleted \"\n \"before new data is loaded.\",\n advanced=True,\n ),\n BoolInput(\n name=\"ignore_invalid_documents\",\n display_name=\"Ignore Invalid Documents\",\n info=\"Boolean flag to determine whether to ignore invalid documents at runtime.\",\n advanced=True,\n ),\n NestedDictInput(\n name=\"astradb_vectorstore_kwargs\",\n display_name=\"AstraDBVectorStore Parameters\",\n info=\"Optional dictionary of additional parameters for the AstraDBVectorStore.\",\n advanced=True,\n ),\n DropdownInput(\n name=\"search_method\",\n display_name=\"Search Method\",\n info=(\n \"Determine how your content is matched: Vector finds semantic similarity, \"\n \"and Hybrid Search (suggested) combines both approaches \"\n \"with a reranker.\"\n ),\n options=[\"Hybrid Search\", \"Vector Search\"], # TODO: Restore Lexical Search?\n options_metadata=[{\"icon\": \"SearchHybrid\"}, {\"icon\": \"SearchVector\"}],\n value=\"Vector Search\",\n advanced=True,\n real_time_refresh=True,\n ),\n DropdownInput(\n name=\"reranker\",\n display_name=\"Reranker\",\n info=\"Post-retrieval model that re-scores results for optimal relevance ranking.\",\n show=False,\n toggle=True,\n ),\n QueryInput(\n name=\"lexical_terms\",\n display_name=\"Lexical Terms\",\n info=\"Add additional terms/keywords to augment search precision.\",\n placeholder=\"Enter terms to search...\",\n separator=\" \",\n show=False,\n value=\"\",\n ),\n IntInput(\n name=\"number_of_results\",\n display_name=\"Number of Search Results\",\n info=\"Number of search results to return.\",\n advanced=True,\n value=4,\n ),\n DropdownInput(\n name=\"search_type\",\n display_name=\"Search Type\",\n info=\"Search type to use\",\n options=[\"Similarity\", \"Similarity with score threshold\", \"MMR (Max Marginal Relevance)\"],\n value=\"Similarity\",\n advanced=True,\n ),\n FloatInput(\n name=\"search_score_threshold\",\n display_name=\"Search Score Threshold\",\n info=\"Minimum similarity score threshold for search results. \"\n \"(when using 'Similarity with score threshold')\",\n value=0,\n advanced=True,\n ),\n NestedDictInput(\n name=\"advanced_search_filter\",\n display_name=\"Search Metadata Filter\",\n info=\"Optional dictionary of filters to apply to the search query.\",\n advanced=True,\n ),\n ]\n\n async def update_build_config(\n self,\n build_config: dict,\n field_value: str | dict,\n field_name: str | None = None,\n ) -> dict:\n \"\"\"Update build configuration with proper handling of embedding and search options.\"\"\"\n # Handle base astra db build config updates\n build_config = await super().update_build_config(\n build_config,\n field_value=field_value,\n field_name=field_name,\n )\n\n # Set embedding model display based on provider selection\n if isinstance(field_value, dict) and \"02_embedding_generation_provider\" in field_value:\n embedding_provider = field_value.get(\"02_embedding_generation_provider\")\n is_custom_provider = embedding_provider and embedding_provider != \"Bring your own\"\n provider = embedding_provider.lower() if is_custom_provider and embedding_provider is not None else None\n\n build_config[\"embedding_model\"][\"show\"] = not bool(provider)\n build_config[\"embedding_model\"][\"required\"] = not bool(provider)\n\n # Early return if no API endpoint is configured\n if not self.get_api_endpoint():\n return build_config\n\n # Configure search method and related options\n return self._configure_search_options(build_config)\n\n def _configure_search_options(self, build_config: dict) -> dict:\n \"\"\"Configure hybrid search, reranker, and vector search options.\"\"\"\n # Detect available hybrid search capabilities\n hybrid_capabilities = self._detect_hybrid_capabilities()\n\n # Return if we haven't selected a collection\n if not build_config[\"collection_name\"][\"options\"] or not build_config[\"collection_name\"][\"value\"]:\n return build_config\n\n # Get collection options\n collection_options = self._get_collection_options(build_config)\n\n # Get the selected collection index\n index = build_config[\"collection_name\"][\"options\"].index(build_config[\"collection_name\"][\"value\"])\n provider = build_config[\"collection_name\"][\"options_metadata\"][index][\"provider\"]\n build_config[\"embedding_model\"][\"show\"] = not bool(provider)\n build_config[\"embedding_model\"][\"required\"] = not bool(provider)\n\n # Determine search configuration\n is_vector_search = build_config[\"search_method\"][\"value\"] == \"Vector Search\"\n is_autodetect = build_config[\"autodetect_collection\"][\"value\"]\n\n # Apply hybrid search configuration\n if hybrid_capabilities[\"available\"]:\n build_config[\"search_method\"][\"show\"] = True\n build_config[\"search_method\"][\"options\"] = [\"Hybrid Search\", \"Vector Search\"]\n build_config[\"search_method\"][\"value\"] = build_config[\"search_method\"].get(\"value\", \"Hybrid Search\")\n\n build_config[\"reranker\"][\"options\"] = hybrid_capabilities[\"reranker_models\"]\n build_config[\"reranker\"][\"options_metadata\"] = hybrid_capabilities[\"reranker_metadata\"]\n if hybrid_capabilities[\"reranker_models\"]:\n build_config[\"reranker\"][\"value\"] = hybrid_capabilities[\"reranker_models\"][0]\n else:\n build_config[\"search_method\"][\"show\"] = False\n build_config[\"search_method\"][\"options\"] = [\"Vector Search\"]\n build_config[\"search_method\"][\"value\"] = \"Vector Search\"\n build_config[\"reranker\"][\"options\"] = []\n build_config[\"reranker\"][\"options_metadata\"] = []\n\n # Configure reranker visibility and state\n hybrid_enabled = (\n collection_options[\"rerank_enabled\"] and build_config[\"search_method\"][\"value\"] == \"Hybrid Search\"\n )\n\n build_config[\"reranker\"][\"show\"] = hybrid_enabled\n build_config[\"reranker\"][\"toggle_value\"] = hybrid_enabled\n build_config[\"reranker\"][\"toggle_disable\"] = is_vector_search\n\n # Configure lexical terms\n lexical_visible = collection_options[\"lexical_enabled\"] and not is_vector_search\n build_config[\"lexical_terms\"][\"show\"] = lexical_visible\n build_config[\"lexical_terms\"][\"value\"] = \"\" if is_vector_search else build_config[\"lexical_terms\"][\"value\"]\n\n # Configure search type and score threshold\n build_config[\"search_type\"][\"show\"] = is_vector_search\n build_config[\"search_score_threshold\"][\"show\"] = is_vector_search\n\n # Force similarity search for hybrid mode or autodetect\n if hybrid_enabled or is_autodetect:\n build_config[\"search_type\"][\"value\"] = \"Similarity\"\n\n return build_config\n\n def _detect_hybrid_capabilities(self) -> dict:\n \"\"\"Detect available hybrid search and reranking capabilities.\"\"\"\n environment = self.get_environment(self.environment)\n client = DataAPIClient(environment=environment)\n admin_client = client.get_admin()\n db_admin = admin_client.get_database_admin(self.get_api_endpoint(), token=self.token)\n\n try:\n providers = db_admin.find_reranking_providers()\n reranker_models = [\n model.name for provider_data in providers.reranking_providers.values() for model in provider_data.models\n ]\n reranker_metadata = [\n {\"icon\": self.get_provider_icon(provider_name=model.name.split(\"/\")[0])}\n for provider in providers.reranking_providers.values()\n for model in provider.models\n ]\n except Exception as e: # noqa: BLE001\n self.log(f\"Hybrid search not available: {e}\")\n return {\n \"available\": False,\n \"reranker_models\": [],\n \"reranker_metadata\": [],\n }\n else:\n return {\n \"available\": True,\n \"reranker_models\": reranker_models,\n \"reranker_metadata\": reranker_metadata,\n }\n\n def _get_collection_options(self, build_config: dict) -> dict:\n \"\"\"Retrieve collection-level search options.\"\"\"\n database = self.get_database_object(api_endpoint=build_config[\"api_endpoint\"][\"value\"])\n collection = database.get_collection(\n name=build_config[\"collection_name\"][\"value\"],\n keyspace=build_config[\"keyspace\"][\"value\"],\n )\n\n col_options = collection.options()\n\n return {\n \"rerank_enabled\": bool(col_options.rerank and col_options.rerank.enabled),\n \"lexical_enabled\": bool(col_options.lexical and col_options.lexical.enabled),\n }\n\n @check_cached_vector_store\n def build_vector_store(self):\n try:\n from langchain_astradb import AstraDBVectorStore\n from langchain_astradb.utils.astradb import HybridSearchMode\n except ImportError as e:\n msg = (\n \"Could not import langchain Astra DB integration package. \"\n \"Please install it with `pip install langchain-astradb`.\"\n )\n raise ImportError(msg) from e\n\n # Get the embedding model and additional params\n embedding_params = {\"embedding\": self.embedding_model} if self.embedding_model else {}\n\n # Get the additional parameters\n additional_params = self.astradb_vectorstore_kwargs or {}\n\n # Get Langflow version and platform information\n __version__ = get_version_info()[\"version\"]\n langflow_prefix = \"\"\n # if os.getenv(\"AWS_EXECUTION_ENV\") == \"AWS_ECS_FARGATE\": # TODO: More precise way of detecting\n # langflow_prefix = \"ds-\"\n\n # Get the database object\n database = self.get_database_object()\n autodetect = self.collection_name in database.list_collection_names() and self.autodetect_collection\n\n # Bundle up the auto-detect parameters\n autodetect_params = {\n \"autodetect_collection\": autodetect,\n \"content_field\": (\n self.content_field\n if self.content_field and embedding_params\n else (\n \"page_content\"\n if embedding_params\n and self.collection_data(collection_name=self.collection_name, database=database) == 0\n else None\n )\n ),\n \"ignore_invalid_documents\": self.ignore_invalid_documents,\n }\n\n # Choose HybridSearchMode based on the selected param\n hybrid_search_mode = HybridSearchMode.DEFAULT if self.search_method == \"Hybrid Search\" else HybridSearchMode.OFF\n\n # Attempt to build the Vector Store object\n try:\n vector_store = AstraDBVectorStore(\n # Astra DB Authentication Parameters\n token=self.token,\n api_endpoint=database.api_endpoint,\n namespace=database.keyspace,\n collection_name=self.collection_name,\n environment=self.environment,\n # Hybrid Search Parameters\n hybrid_search=hybrid_search_mode,\n # Astra DB Usage Tracking Parameters\n ext_callers=[(f\"{langflow_prefix}langflow\", __version__)],\n # Astra DB Vector Store Parameters\n **autodetect_params,\n **embedding_params,\n **additional_params,\n )\n except ValueError as e:\n msg = f\"Error initializing AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n\n # Add documents to the vector store\n self._add_documents_to_vector_store(vector_store)\n\n return vector_store\n\n def _add_documents_to_vector_store(self, vector_store) -> None:\n self.ingest_data = self._prepare_ingest_data()\n\n documents = []\n for _input in self.ingest_data or []:\n if isinstance(_input, Data):\n documents.append(_input.to_lc_document())\n else:\n msg = \"Vector Store Inputs must be Data objects.\"\n raise TypeError(msg)\n\n documents = [\n Document(page_content=doc.page_content, metadata=serialize(doc.metadata, to_str=True)) for doc in documents\n ]\n\n if documents and self.deletion_field:\n self.log(f\"Deleting documents where {self.deletion_field}\")\n try:\n database = self.get_database_object()\n collection = database.get_collection(self.collection_name, keyspace=database.keyspace)\n delete_values = list({doc.metadata[self.deletion_field] for doc in documents})\n self.log(f\"Deleting documents where {self.deletion_field} matches {delete_values}.\")\n collection.delete_many({f\"metadata.{self.deletion_field}\": {\"$in\": delete_values}})\n except ValueError as e:\n msg = f\"Error deleting documents from AstraDBVectorStore based on '{self.deletion_field}': {e}\"\n raise ValueError(msg) from e\n\n if documents:\n self.log(f\"Adding {len(documents)} documents to the Vector Store.\")\n try:\n vector_store.add_documents(documents)\n except ValueError as e:\n msg = f\"Error adding documents to AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n else:\n self.log(\"No documents to add to the Vector Store.\")\n\n def _map_search_type(self) -> str:\n search_type_mapping = {\n \"Similarity with score threshold\": \"similarity_score_threshold\",\n \"MMR (Max Marginal Relevance)\": \"mmr\",\n }\n\n return search_type_mapping.get(self.search_type, \"similarity\")\n\n def _build_search_args(self):\n # Clean up the search query\n query = self.search_query if isinstance(self.search_query, str) and self.search_query.strip() else None\n lexical_terms = self.lexical_terms or None\n\n # Check if we have a search query, and if so set the args\n if query:\n args = {\n \"query\": query,\n \"search_type\": self._map_search_type(),\n \"k\": self.number_of_results,\n \"score_threshold\": self.search_score_threshold,\n \"lexical_query\": lexical_terms,\n }\n elif self.advanced_search_filter:\n args = {\n \"n\": self.number_of_results,\n }\n else:\n return {}\n\n filter_arg = self.advanced_search_filter or {}\n if filter_arg:\n args[\"filter\"] = filter_arg\n\n return args\n\n def search_documents(self, vector_store=None) -> list[Data]:\n vector_store = vector_store or self.build_vector_store()\n\n self.log(f\"Search input: {self.search_query}\")\n self.log(f\"Search type: {self.search_type}\")\n self.log(f\"Number of results: {self.number_of_results}\")\n self.log(f\"store.hybrid_search: {vector_store.hybrid_search}\")\n self.log(f\"Lexical terms: {self.lexical_terms}\")\n self.log(f\"Reranker: {self.reranker}\")\n\n try:\n search_args = self._build_search_args()\n except ValueError as e:\n msg = f\"Error in AstraDBVectorStore._build_search_args: {e}\"\n raise ValueError(msg) from e\n\n if not search_args:\n self.log(\"No search input or filters provided. Skipping search.\")\n return []\n\n docs = []\n search_method = \"search\" if \"query\" in search_args else \"metadata_search\"\n\n try:\n self.log(f\"Calling vector_store.{search_method} with args: {search_args}\")\n docs = getattr(vector_store, search_method)(**search_args)\n except ValueError as e:\n msg = f\"Error performing {search_method} in AstraDBVectorStore: {e}\"\n raise ValueError(msg) from e\n\n self.log(f\"Retrieved documents: {len(docs)}\")\n\n data = docs_to_data(docs)\n self.log(f\"Converted documents to data: {len(data)}\")\n self.status = data\n\n return data\n\n def get_retriever_kwargs(self):\n search_args = self._build_search_args()\n\n return {\n \"search_type\": self._map_search_type(),\n \"search_kwargs\": search_args,\n }\n"
4463
4483
  },
4464
4484
  "collection_name": {
4465
4485
  "_input_type": "DropdownInput",