langflow-base-nightly 1.7.0.dev18__py3-none-any.whl → 1.7.0.dev20__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 (3581) hide show
  1. langflow/agentic/__init__.py +1 -0
  2. langflow/agentic/flows/SystemMessageGen.json +3287 -0
  3. langflow/agentic/flows/TemplateAssistant.json +4285 -0
  4. langflow/agentic/mcp/__init__.py +5 -0
  5. langflow/agentic/mcp/__main__.py +10 -0
  6. langflow/agentic/mcp/server.py +606 -0
  7. langflow/agentic/mcp/support.py +50 -0
  8. langflow/agentic/schema/schema.json +112 -0
  9. langflow/agentic/utils/__init__.py +15 -0
  10. langflow/agentic/utils/component_search.py +272 -0
  11. langflow/agentic/utils/flow_component.py +373 -0
  12. langflow/agentic/utils/flow_graph.py +202 -0
  13. langflow/agentic/utils/template_create.py +83 -0
  14. langflow/agentic/utils/template_search.py +192 -0
  15. langflow/alembic/DB-MIGRATION-GUIDE.MD +513 -0
  16. langflow/alembic/__init__.py +0 -0
  17. langflow/alembic/migration_validator.py +376 -0
  18. langflow/api/utils/mcp/agentic_mcp.py +365 -0
  19. langflow/api/v1/endpoints.py +126 -24
  20. langflow/api/v1/login.py +11 -1
  21. langflow/api/v1/mcp_projects.py +46 -10
  22. langflow/api/v1/projects.py +10 -1
  23. langflow/api/v2/files.py +45 -14
  24. langflow/frontend/assets/SlackIcon-CH9tdWyp.js +1 -0
  25. langflow/frontend/assets/Wikipedia-DkfgHVf0.js +1 -0
  26. langflow/frontend/assets/Wolfram-BeafYhI_.js +1 -0
  27. langflow/frontend/assets/a-arrow-down-BEN5qAT6.js +6 -0
  28. langflow/frontend/assets/a-arrow-up-i3_YI2KH.js +6 -0
  29. langflow/frontend/assets/a-large-small-WWz6Vwdb.js +6 -0
  30. langflow/frontend/assets/accessibility-C2nyNCs7.js +6 -0
  31. langflow/frontend/assets/activity-DQazeHS8.js +6 -0
  32. langflow/frontend/assets/air-vent-CcgXIo9h.js +6 -0
  33. langflow/frontend/assets/airplay-BNSzdkZO.js +6 -0
  34. langflow/frontend/assets/alarm-clock-DTDckDZ0.js +6 -0
  35. langflow/frontend/assets/alarm-clock-check-BRyoqtME.js +6 -0
  36. langflow/frontend/assets/alarm-clock-minus-BiuNohzq.js +6 -0
  37. langflow/frontend/assets/alarm-clock-off-Q8MHDC_K.js +6 -0
  38. langflow/frontend/assets/alarm-clock-plus-BScaCIzq.js +6 -0
  39. langflow/frontend/assets/alarm-smoke-DRZhtvxs.js +6 -0
  40. langflow/frontend/assets/album-D3OGfbwa.js +6 -0
  41. langflow/frontend/assets/align-center-horizontal-D0m5huHx.js +6 -0
  42. langflow/frontend/assets/align-center-vertical-DbcV4bkJ.js +6 -0
  43. langflow/frontend/assets/align-center-wzh2QZXa.js +6 -0
  44. langflow/frontend/assets/align-end-horizontal-CoR5H86d.js +6 -0
  45. langflow/frontend/assets/align-end-vertical-DIHfMVwO.js +6 -0
  46. langflow/frontend/assets/align-horizontal-distribute-center-C__XjkHo.js +6 -0
  47. langflow/frontend/assets/align-horizontal-distribute-end-i6CyQMcA.js +6 -0
  48. langflow/frontend/assets/align-horizontal-distribute-start-BBWmY8-H.js +6 -0
  49. langflow/frontend/assets/align-horizontal-justify-center-CR6e3gSH.js +6 -0
  50. langflow/frontend/assets/align-horizontal-justify-end-CW5uCOAv.js +6 -0
  51. langflow/frontend/assets/align-horizontal-justify-start-BuftP6Nc.js +6 -0
  52. langflow/frontend/assets/align-horizontal-space-around-CJd078Hn.js +6 -0
  53. langflow/frontend/assets/align-horizontal-space-between-BYOIPi_8.js +6 -0
  54. langflow/frontend/assets/align-justify-D7FYYnpM.js +6 -0
  55. langflow/frontend/assets/align-left-IWQhWtwP.js +6 -0
  56. langflow/frontend/assets/align-right-B2HShrim.js +6 -0
  57. langflow/frontend/assets/align-start-horizontal-Bhgp4wb_.js +6 -0
  58. langflow/frontend/assets/align-start-vertical-B36DAluf.js +6 -0
  59. langflow/frontend/assets/align-vertical-distribute-center-CM2DdOMr.js +6 -0
  60. langflow/frontend/assets/align-vertical-distribute-end-aOYpuAWp.js +6 -0
  61. langflow/frontend/assets/align-vertical-distribute-start-CZpn9w38.js +6 -0
  62. langflow/frontend/assets/align-vertical-justify-center-CxPOzHlR.js +6 -0
  63. langflow/frontend/assets/align-vertical-justify-end-49fdbOQV.js +6 -0
  64. langflow/frontend/assets/align-vertical-justify-start-BPXNHYLt.js +6 -0
  65. langflow/frontend/assets/align-vertical-space-around-BWrUTMpq.js +6 -0
  66. langflow/frontend/assets/align-vertical-space-between-Cur3ZlWf.js +6 -0
  67. langflow/frontend/assets/ambulance-Dyp2z1EF.js +6 -0
  68. langflow/frontend/assets/ampersand-Cq3a76el.js +6 -0
  69. langflow/frontend/assets/ampersands-3CLem0i6.js +6 -0
  70. langflow/frontend/assets/amphora-BRw9gaQX.js +6 -0
  71. langflow/frontend/assets/anchor-CaigXYtk.js +6 -0
  72. langflow/frontend/assets/angry-DLfrljOW.js +6 -0
  73. langflow/frontend/assets/annoyed-Canvd2yQ.js +6 -0
  74. langflow/frontend/assets/antenna-CRd2m5Oe.js +6 -0
  75. langflow/frontend/assets/anvil-B_bwcYGl.js +6 -0
  76. langflow/frontend/assets/aperture-Df8xvlVF.js +6 -0
  77. langflow/frontend/assets/app-window-BoMcfXEW.js +6 -0
  78. langflow/frontend/assets/app-window-mac-BvzzO-Wj.js +6 -0
  79. langflow/frontend/assets/apple-CO8wrJRv.js +6 -0
  80. langflow/frontend/assets/archive-C-E4ToWN.js +6 -0
  81. langflow/frontend/assets/archive-restore-CjxhmKcS.js +6 -0
  82. langflow/frontend/assets/archive-x-BU3WsYOl.js +6 -0
  83. langflow/frontend/assets/armchair-Ch3imxVB.js +6 -0
  84. langflow/frontend/assets/arrow-big-down-BrmTY2Ii.js +6 -0
  85. langflow/frontend/assets/arrow-big-down-dash-BGAxmYWY.js +6 -0
  86. langflow/frontend/assets/arrow-big-left-DJ5b9pTG.js +6 -0
  87. langflow/frontend/assets/arrow-big-left-dash-fr0NKNvJ.js +6 -0
  88. langflow/frontend/assets/arrow-big-right-DqP3e98_.js +6 -0
  89. langflow/frontend/assets/arrow-big-right-dash-7SuXujJZ.js +6 -0
  90. langflow/frontend/assets/arrow-big-up-dash-gpTpAUkc.js +6 -0
  91. langflow/frontend/assets/arrow-big-up-zDXC9zFH.js +6 -0
  92. langflow/frontend/assets/arrow-down-0-1-B_rk06Dq.js +6 -0
  93. langflow/frontend/assets/arrow-down-1-0-B1F0NDaZ.js +6 -0
  94. langflow/frontend/assets/arrow-down-GvCqEeTq.js +6 -0
  95. langflow/frontend/assets/arrow-down-a-z-BJMsp_xn.js +6 -0
  96. langflow/frontend/assets/arrow-down-from-line-B673YvMt.js +6 -0
  97. langflow/frontend/assets/arrow-down-left-BwLKrYOP.js +6 -0
  98. langflow/frontend/assets/arrow-down-narrow-wide-B7GdQV6s.js +6 -0
  99. langflow/frontend/assets/arrow-down-right-WSOeex9J.js +6 -0
  100. langflow/frontend/assets/arrow-down-to-dot-SumJ3AII.js +6 -0
  101. langflow/frontend/assets/arrow-down-to-line-09XTJlqC.js +6 -0
  102. langflow/frontend/assets/arrow-down-up-DtYAVwZ7.js +6 -0
  103. langflow/frontend/assets/arrow-down-wide-narrow-BD18XtAI.js +6 -0
  104. langflow/frontend/assets/arrow-down-z-a-CogZw-RG.js +6 -0
  105. langflow/frontend/assets/arrow-left-D9ocT_ss.js +6 -0
  106. langflow/frontend/assets/arrow-left-from-line-BkRg_r3k.js +6 -0
  107. langflow/frontend/assets/arrow-left-right-Dt8NMDz0.js +6 -0
  108. langflow/frontend/assets/arrow-left-to-line-D2fGkQZv.js +6 -0
  109. langflow/frontend/assets/arrow-right-B-E8IpZ0.js +6 -0
  110. langflow/frontend/assets/arrow-right-from-line-BMm6QmG8.js +6 -0
  111. langflow/frontend/assets/arrow-right-left-BU85WYQf.js +6 -0
  112. langflow/frontend/assets/arrow-right-to-line-DAAMBl9i.js +6 -0
  113. langflow/frontend/assets/arrow-up-0-1-DrOlEdCh.js +6 -0
  114. langflow/frontend/assets/arrow-up-1-0-CWoU2wIy.js +6 -0
  115. langflow/frontend/assets/arrow-up-BmFkDf50.js +6 -0
  116. langflow/frontend/assets/arrow-up-a-z-DaHxANo8.js +6 -0
  117. langflow/frontend/assets/arrow-up-down-DeWRVUnB.js +6 -0
  118. langflow/frontend/assets/arrow-up-from-dot-DgaMH6Vf.js +6 -0
  119. langflow/frontend/assets/arrow-up-from-line-BSIaOLue.js +6 -0
  120. langflow/frontend/assets/arrow-up-left-ArTtnmdA.js +6 -0
  121. langflow/frontend/assets/arrow-up-narrow-wide-CVgYIwBE.js +6 -0
  122. langflow/frontend/assets/arrow-up-right-BBKXfGi1.js +6 -0
  123. langflow/frontend/assets/arrow-up-to-line-B6HJYcd3.js +6 -0
  124. langflow/frontend/assets/arrow-up-wide-narrow-CCmVqxkr.js +6 -0
  125. langflow/frontend/assets/arrow-up-z-a-jhOuDE89.js +6 -0
  126. langflow/frontend/assets/arrows-up-from-line-D-YCiQz_.js +6 -0
  127. langflow/frontend/assets/asterisk-Bjc1zPkI.js +6 -0
  128. langflow/frontend/assets/at-sign-Ccs2uaJm.js +6 -0
  129. langflow/frontend/assets/atom-CnUOXXhr.js +6 -0
  130. langflow/frontend/assets/audio-lines-CeTqP-J6.js +6 -0
  131. langflow/frontend/assets/audio-waveform-UY-mb2A2.js +6 -0
  132. langflow/frontend/assets/award-D1gGTZYs.js +6 -0
  133. langflow/frontend/assets/axe-CFds1641.js +6 -0
  134. langflow/frontend/assets/axis-3d-DYOtBGOM.js +6 -0
  135. langflow/frontend/assets/baby-EiXUWw5W.js +6 -0
  136. langflow/frontend/assets/backpack-BW5WwhrS.js +6 -0
  137. langflow/frontend/assets/badge-ChZoZMV8.js +6 -0
  138. langflow/frontend/assets/badge-alert-DfYMH-_q.js +6 -0
  139. langflow/frontend/assets/badge-cent-xWCvlUAA.js +6 -0
  140. langflow/frontend/assets/badge-check-B3zKgevV.js +6 -0
  141. langflow/frontend/assets/badge-dollar-sign-BSUVmqzD.js +6 -0
  142. langflow/frontend/assets/badge-euro-DIUo03hx.js +6 -0
  143. langflow/frontend/assets/badge-help-dFaxHmVQ.js +6 -0
  144. langflow/frontend/assets/badge-indian-rupee-W9jfbwX-.js +6 -0
  145. langflow/frontend/assets/badge-info-BY0XAr0Z.js +6 -0
  146. langflow/frontend/assets/badge-japanese-yen-CmDpVw9N.js +6 -0
  147. langflow/frontend/assets/badge-minus-BeZje_tn.js +6 -0
  148. langflow/frontend/assets/badge-percent-D3eoOre8.js +6 -0
  149. langflow/frontend/assets/badge-plus-CWJbHQaq.js +6 -0
  150. langflow/frontend/assets/badge-pound-sterling-Br6d_JvG.js +6 -0
  151. langflow/frontend/assets/badge-russian-ruble-CDqdelrL.js +6 -0
  152. langflow/frontend/assets/badge-swiss-franc-C39sIs1w.js +6 -0
  153. langflow/frontend/assets/badge-x-BgGCQ3l5.js +6 -0
  154. langflow/frontend/assets/baggage-claim-D4lVlIR6.js +6 -0
  155. langflow/frontend/assets/ban-DPlsneSq.js +6 -0
  156. langflow/frontend/assets/banana-D_m2c0de.js +6 -0
  157. langflow/frontend/assets/bandage-DZYeb_pl.js +6 -0
  158. langflow/frontend/assets/banknote-Dg_JF6a0.js +6 -0
  159. langflow/frontend/assets/banknote-arrow-down-CUR51l88.js +6 -0
  160. langflow/frontend/assets/banknote-arrow-up-Cng0Woim.js +6 -0
  161. langflow/frontend/assets/banknote-x-CT-4hzWq.js +6 -0
  162. langflow/frontend/assets/barcode-kjfQS4eI.js +6 -0
  163. langflow/frontend/assets/baseline-GgMPq29v.js +6 -0
  164. langflow/frontend/assets/bath-CkJ3f3Hw.js +6 -0
  165. langflow/frontend/assets/battery-C9gisHtW.js +6 -0
  166. langflow/frontend/assets/battery-charging-CjyNjhcC.js +6 -0
  167. langflow/frontend/assets/battery-full-XRJleoud.js +6 -0
  168. langflow/frontend/assets/battery-low-CAydVPkG.js +6 -0
  169. langflow/frontend/assets/battery-medium-zi-nWb3x.js +6 -0
  170. langflow/frontend/assets/battery-plus-BcqE0aqr.js +6 -0
  171. langflow/frontend/assets/battery-warning-D_Ox2070.js +6 -0
  172. langflow/frontend/assets/beaker-BgTgKDos.js +6 -0
  173. langflow/frontend/assets/bean-CbiYGFus.js +6 -0
  174. langflow/frontend/assets/bean-off-Dxr9WWB0.js +6 -0
  175. langflow/frontend/assets/bed-BMGw4f0S.js +6 -0
  176. langflow/frontend/assets/bed-double-BmTt7YIh.js +6 -0
  177. langflow/frontend/assets/bed-single-Bfdvp_9O.js +6 -0
  178. langflow/frontend/assets/beef-9E0jLXdQ.js +6 -0
  179. langflow/frontend/assets/beer-DaBKydBd.js +6 -0
  180. langflow/frontend/assets/beer-off-Iij7Pp8A.js +6 -0
  181. langflow/frontend/assets/bell-DxN-z33U.js +6 -0
  182. langflow/frontend/assets/bell-dot-DWLs7h35.js +6 -0
  183. langflow/frontend/assets/bell-electric-BlXKBvwx.js +6 -0
  184. langflow/frontend/assets/bell-minus-DjVPiObN.js +6 -0
  185. langflow/frontend/assets/bell-off-CPwlBO6x.js +6 -0
  186. langflow/frontend/assets/bell-plus-BRfAwk9w.js +6 -0
  187. langflow/frontend/assets/bell-ring-BU9LbxyB.js +6 -0
  188. langflow/frontend/assets/between-horizontal-end-IQreesop.js +6 -0
  189. langflow/frontend/assets/between-horizontal-start-BtnK1HRc.js +6 -0
  190. langflow/frontend/assets/between-vertical-end-CIUoEiOz.js +6 -0
  191. langflow/frontend/assets/between-vertical-start-DwOMzQ7i.js +6 -0
  192. langflow/frontend/assets/biceps-flexed-Ogp_-E3h.js +6 -0
  193. langflow/frontend/assets/bike-tnijozXm.js +6 -0
  194. langflow/frontend/assets/binary-BOpBzcrP.js +6 -0
  195. langflow/frontend/assets/binoculars-COtqbKCE.js +6 -0
  196. langflow/frontend/assets/biohazard-BFmHAGHC.js +6 -0
  197. langflow/frontend/assets/bird-CkH2aPr7.js +6 -0
  198. langflow/frontend/assets/bitcoin-Dx72_Cr2.js +6 -0
  199. langflow/frontend/assets/blend-CMyM4lAV.js +6 -0
  200. langflow/frontend/assets/blinds-DBHkR1bw.js +6 -0
  201. langflow/frontend/assets/blocks-D6brq653.js +6 -0
  202. langflow/frontend/assets/bluetooth-CxujqGwy.js +6 -0
  203. langflow/frontend/assets/bluetooth-connected-CahoGiWt.js +6 -0
  204. langflow/frontend/assets/bluetooth-off-BOohhTar.js +6 -0
  205. langflow/frontend/assets/bluetooth-searching-BwB45tWW.js +6 -0
  206. langflow/frontend/assets/bold-ahovihLd.js +6 -0
  207. langflow/frontend/assets/bolt-CGiJG3bn.js +6 -0
  208. langflow/frontend/assets/bomb-Dha-UvGb.js +6 -0
  209. langflow/frontend/assets/bone-B2BqfCNs.js +6 -0
  210. langflow/frontend/assets/book-a-DpTda9TD.js +6 -0
  211. langflow/frontend/assets/book-audio-DyCDzngO.js +6 -0
  212. langflow/frontend/assets/book-check-DFuWlFrx.js +6 -0
  213. langflow/frontend/assets/book-copy-CGc0bNCm.js +6 -0
  214. langflow/frontend/assets/book-dashed-BzDvjHnu.js +6 -0
  215. langflow/frontend/assets/book-down-BuhlD5QC.js +6 -0
  216. langflow/frontend/assets/book-headphones-CrCFGrHs.js +6 -0
  217. langflow/frontend/assets/book-heart-DCkco680.js +6 -0
  218. langflow/frontend/assets/book-image-CCb2x9xd.js +6 -0
  219. langflow/frontend/assets/book-key-DgzUotkU.js +6 -0
  220. langflow/frontend/assets/book-lock-DmYGN6wc.js +6 -0
  221. langflow/frontend/assets/book-marked-BnRFxgKT.js +6 -0
  222. langflow/frontend/assets/book-minus-DlPx65Ne.js +6 -0
  223. langflow/frontend/assets/book-open-CcKfIZKM.js +6 -0
  224. langflow/frontend/assets/book-open-check-B02BHw-x.js +6 -0
  225. langflow/frontend/assets/book-open-text-BGBQkn3D.js +6 -0
  226. langflow/frontend/assets/book-plus-DUWUV2gb.js +6 -0
  227. langflow/frontend/assets/book-text-BHfOHwiN.js +6 -0
  228. langflow/frontend/assets/book-type-DwxWZFem.js +6 -0
  229. langflow/frontend/assets/book-up-2-D_SXF22P.js +6 -0
  230. langflow/frontend/assets/book-up-BFFCyvlf.js +6 -0
  231. langflow/frontend/assets/book-user-BDXGN6rN.js +6 -0
  232. langflow/frontend/assets/book-x-VP_n8fv1.js +6 -0
  233. langflow/frontend/assets/book-yYnEUjML.js +6 -0
  234. langflow/frontend/assets/bookmark-check-rBWot2Zo.js +6 -0
  235. langflow/frontend/assets/bookmark-minus-BvDe7hol.js +6 -0
  236. langflow/frontend/assets/bookmark-plus-rYo0_RMV.js +6 -0
  237. langflow/frontend/assets/bookmark-wRm9YI7G.js +6 -0
  238. langflow/frontend/assets/bookmark-x-J-b8jOeA.js +6 -0
  239. langflow/frontend/assets/boom-box-E-zCfaRl.js +6 -0
  240. langflow/frontend/assets/bot-CHwd7vTa.js +6 -0
  241. langflow/frontend/assets/bot-message-square-D1LI9Dgh.js +6 -0
  242. langflow/frontend/assets/bot-off-CDzRDrH4.js +6 -0
  243. langflow/frontend/assets/bow-arrow-CXFHAcer.js +6 -0
  244. langflow/frontend/assets/box-BLpk7XlR.js +6 -0
  245. langflow/frontend/assets/boxes-CTmOgoi0.js +6 -0
  246. langflow/frontend/assets/braces-DzECLIYU.js +6 -0
  247. langflow/frontend/assets/brackets-CfHRu7_4.js +6 -0
  248. langflow/frontend/assets/brain-Dl6MyV1N.js +6 -0
  249. langflow/frontend/assets/brain-circuit-DZJA-OCE.js +6 -0
  250. langflow/frontend/assets/brain-cog-1f6PAT0H.js +6 -0
  251. langflow/frontend/assets/brick-wall-DfKIQEsG.js +6 -0
  252. langflow/frontend/assets/brick-wall-fire-CuTLGhlo.js +6 -0
  253. langflow/frontend/assets/briefcase-C8E1s_6c.js +6 -0
  254. langflow/frontend/assets/briefcase-business-CF5CZYCP.js +6 -0
  255. langflow/frontend/assets/briefcase-conveyor-belt-DSzoCLAC.js +6 -0
  256. langflow/frontend/assets/briefcase-medical-qJzs40Wf.js +6 -0
  257. langflow/frontend/assets/bring-to-front-DiU_EmmE.js +6 -0
  258. langflow/frontend/assets/brush-CaBqp6DM.js +6 -0
  259. langflow/frontend/assets/bubbles-D0wSEkME.js +6 -0
  260. langflow/frontend/assets/bug-cHva2keP.js +6 -0
  261. langflow/frontend/assets/bug-off-DuCKbLsU.js +6 -0
  262. langflow/frontend/assets/bug-play-CJQVM_5y.js +6 -0
  263. langflow/frontend/assets/building-2-0qyyhvKg.js +6 -0
  264. langflow/frontend/assets/building-ClrycX8d.js +6 -0
  265. langflow/frontend/assets/bus-front-BP_5Rg_X.js +6 -0
  266. langflow/frontend/assets/bus-lCX_14l8.js +6 -0
  267. langflow/frontend/assets/cable-CIOcrAno.js +6 -0
  268. langflow/frontend/assets/cable-car-CalBuJiQ.js +6 -0
  269. langflow/frontend/assets/cake-254Da_nR.js +6 -0
  270. langflow/frontend/assets/cake-slice-CRtjIhjB.js +6 -0
  271. langflow/frontend/assets/calculator-Bm3Xg8Iw.js +6 -0
  272. langflow/frontend/assets/calendar-1-BjsmuJcu.js +6 -0
  273. langflow/frontend/assets/calendar-DMqIMaOz.js +6 -0
  274. langflow/frontend/assets/calendar-arrow-down-CFsqKHs8.js +6 -0
  275. langflow/frontend/assets/calendar-arrow-up-CQJBaRrZ.js +6 -0
  276. langflow/frontend/assets/calendar-check-2-CYTKV2At.js +6 -0
  277. langflow/frontend/assets/calendar-check-DYZjn3aq.js +6 -0
  278. langflow/frontend/assets/calendar-clock-Cj1dz6tL.js +6 -0
  279. langflow/frontend/assets/calendar-cog-BOjrNW0c.js +6 -0
  280. langflow/frontend/assets/calendar-days-Bat12Ovo.js +6 -0
  281. langflow/frontend/assets/calendar-fold-Dm3gVwZ1.js +6 -0
  282. langflow/frontend/assets/calendar-heart-BOt3Pf4W.js +6 -0
  283. langflow/frontend/assets/calendar-minus-2-Caf9n0Xy.js +6 -0
  284. langflow/frontend/assets/calendar-minus-CPavNu5A.js +6 -0
  285. langflow/frontend/assets/calendar-off-DMC78ZGp.js +6 -0
  286. langflow/frontend/assets/calendar-plus-2-H7ETgSSO.js +6 -0
  287. langflow/frontend/assets/calendar-plus-URIjqYEn.js +6 -0
  288. langflow/frontend/assets/calendar-range-BcINkFOM.js +6 -0
  289. langflow/frontend/assets/calendar-search-CI56K2ZB.js +6 -0
  290. langflow/frontend/assets/calendar-sync-CfLwc2aD.js +6 -0
  291. langflow/frontend/assets/calendar-x-2-DJhm5IkF.js +6 -0
  292. langflow/frontend/assets/calendar-x-Bq4MQGZT.js +6 -0
  293. langflow/frontend/assets/camera-D-iC9SFG.js +6 -0
  294. langflow/frontend/assets/camera-off-CP5oVtWm.js +6 -0
  295. langflow/frontend/assets/candy-DDHMtNnZ.js +6 -0
  296. langflow/frontend/assets/candy-cane-WfHr4Cja.js +6 -0
  297. langflow/frontend/assets/candy-off-CBuBhtuU.js +6 -0
  298. langflow/frontend/assets/cannabis-M9OW8NSr.js +6 -0
  299. langflow/frontend/assets/captions-CCs3GQAh.js +6 -0
  300. langflow/frontend/assets/captions-off-BtO933jI.js +6 -0
  301. langflow/frontend/assets/car-C-V4CpBP.js +6 -0
  302. langflow/frontend/assets/car-front-fGlEehES.js +6 -0
  303. langflow/frontend/assets/car-taxi-front-BoJbZQeI.js +6 -0
  304. langflow/frontend/assets/caravan-fSjBCxRV.js +6 -0
  305. langflow/frontend/assets/carrot-CkNC_fVY.js +6 -0
  306. langflow/frontend/assets/case-lower-Bq0iQ47R.js +6 -0
  307. langflow/frontend/assets/case-sensitive-BztSWFOT.js +6 -0
  308. langflow/frontend/assets/case-upper-CgE2DUlw.js +6 -0
  309. langflow/frontend/assets/cassette-tape-DNdEiRVV.js +6 -0
  310. langflow/frontend/assets/cast-8YQmf-FT.js +6 -0
  311. langflow/frontend/assets/castle-B-rginON.js +6 -0
  312. langflow/frontend/assets/cat-DXJ5wKz7.js +6 -0
  313. langflow/frontend/assets/cctv-Cur-ybDL.js +6 -0
  314. langflow/frontend/assets/chart-area-C3_of1v1.js +6 -0
  315. langflow/frontend/assets/chart-bar-Dn52LBVb.js +6 -0
  316. langflow/frontend/assets/chart-bar-big-BDZRq6YR.js +6 -0
  317. langflow/frontend/assets/chart-bar-decreasing-Dv-fLH3Z.js +6 -0
  318. langflow/frontend/assets/chart-bar-increasing-zPyaFzsb.js +6 -0
  319. langflow/frontend/assets/chart-bar-stacked-MVVgivxI.js +6 -0
  320. langflow/frontend/assets/chart-candlestick-BATfQtBq.js +6 -0
  321. langflow/frontend/assets/chart-column-BnXDZnyB.js +6 -0
  322. langflow/frontend/assets/chart-column-big-DATKHpyP.js +6 -0
  323. langflow/frontend/assets/chart-column-decreasing-BMhXNJtE.js +6 -0
  324. langflow/frontend/assets/chart-column-increasing-CnOW1jKg.js +6 -0
  325. langflow/frontend/assets/chart-column-stacked-Cjy3N9Qy.js +6 -0
  326. langflow/frontend/assets/chart-gantt-KhjLpgV5.js +6 -0
  327. langflow/frontend/assets/chart-line-BiTjnmDo.js +6 -0
  328. langflow/frontend/assets/chart-network-DYueHW_X.js +6 -0
  329. langflow/frontend/assets/chart-no-axes-column-DiivWQMV.js +6 -0
  330. langflow/frontend/assets/chart-no-axes-column-decreasing-BHgBcFj1.js +6 -0
  331. langflow/frontend/assets/chart-no-axes-column-increasing-CA4hrFv5.js +6 -0
  332. langflow/frontend/assets/chart-no-axes-combined-BGcwSqZx.js +6 -0
  333. langflow/frontend/assets/chart-no-axes-gantt-Dz3iC8h-.js +6 -0
  334. langflow/frontend/assets/chart-pie-BAUgZTpf.js +6 -0
  335. langflow/frontend/assets/chart-scatter-BFJk7Hqq.js +6 -0
  336. langflow/frontend/assets/chart-spline-BQPQzNFw.js +6 -0
  337. langflow/frontend/assets/check-check-Bl7_b_QU.js +6 -0
  338. langflow/frontend/assets/chef-hat-dzpaTlGd.js +6 -0
  339. langflow/frontend/assets/cherry-BALcTL3I.js +6 -0
  340. langflow/frontend/assets/chevron-first-VSnUxWUQ.js +6 -0
  341. langflow/frontend/assets/chevron-last-BxFun42k.js +6 -0
  342. langflow/frontend/assets/chevron-left-BDhI7RdW.js +6 -0
  343. langflow/frontend/assets/chevron-right-DhjHPweY.js +6 -0
  344. langflow/frontend/assets/chevrons-down-Vqso9c7o.js +6 -0
  345. langflow/frontend/assets/chevrons-down-up-_TLe5vew.js +6 -0
  346. langflow/frontend/assets/chevrons-left-DlyHGlL_.js +6 -0
  347. langflow/frontend/assets/chevrons-left-right-J7cNIsfL.js +6 -0
  348. langflow/frontend/assets/chevrons-left-right-ellipsis-BbmFTl1D.js +6 -0
  349. langflow/frontend/assets/chevrons-right-CouPeQmN.js +6 -0
  350. langflow/frontend/assets/chevrons-right-left-RmzLcYUP.js +6 -0
  351. langflow/frontend/assets/chevrons-up-Byc5FW82.js +6 -0
  352. langflow/frontend/assets/chrome-CI_BDdUO.js +6 -0
  353. langflow/frontend/assets/church-XOuemziS.js +6 -0
  354. langflow/frontend/assets/cigarette-DuJjaUdZ.js +6 -0
  355. langflow/frontend/assets/cigarette-off-dN0K_NkG.js +6 -0
  356. langflow/frontend/assets/circle-alert-B-kzQMYL.js +6 -0
  357. langflow/frontend/assets/circle-arrow-down-DnurNSIq.js +6 -0
  358. langflow/frontend/assets/circle-arrow-left-Bu4GB--u.js +6 -0
  359. langflow/frontend/assets/circle-arrow-out-down-left-HEA12LTc.js +6 -0
  360. langflow/frontend/assets/circle-arrow-out-down-right-BDDsRQht.js +6 -0
  361. langflow/frontend/assets/circle-arrow-out-up-left-Bscowj2p.js +6 -0
  362. langflow/frontend/assets/circle-arrow-out-up-right-CwQit0ut.js +6 -0
  363. langflow/frontend/assets/circle-arrow-right-ZGsqjL0L.js +6 -0
  364. langflow/frontend/assets/circle-arrow-up-BQHiPjJL.js +6 -0
  365. langflow/frontend/assets/circle-check-C0Rcfbp0.js +6 -0
  366. langflow/frontend/assets/circle-check-big-B1OQXwyV.js +6 -0
  367. langflow/frontend/assets/circle-chevron-down-_MiIDEd4.js +6 -0
  368. langflow/frontend/assets/circle-chevron-left-DMDnFI-B.js +6 -0
  369. langflow/frontend/assets/circle-chevron-right-FJ_gDlKW.js +6 -0
  370. langflow/frontend/assets/circle-chevron-up-C2cyYxPi.js +6 -0
  371. langflow/frontend/assets/circle-dashed-CaSSzQ5D.js +6 -0
  372. langflow/frontend/assets/circle-divide-CaOair4t.js +6 -0
  373. langflow/frontend/assets/circle-dollar-sign-CApwu9PB.js +6 -0
  374. langflow/frontend/assets/circle-dot-CK0rVvsv.js +6 -0
  375. langflow/frontend/assets/circle-dot-dashed-Du0gwRGY.js +6 -0
  376. langflow/frontend/assets/circle-ellipsis-Cquny7ZU.js +6 -0
  377. langflow/frontend/assets/circle-equal-DtnJJ1VK.js +6 -0
  378. langflow/frontend/assets/circle-fading-arrow-up-Dgjy0kGx.js +6 -0
  379. langflow/frontend/assets/circle-fading-plus-GsUgz4uC.js +6 -0
  380. langflow/frontend/assets/circle-gauge-simTx4gy.js +6 -0
  381. langflow/frontend/assets/circle-help-oFHefhlW.js +6 -0
  382. langflow/frontend/assets/circle-minus-ekBMPPFs.js +6 -0
  383. langflow/frontend/assets/circle-off-UP2M4IoK.js +6 -0
  384. langflow/frontend/assets/circle-parking-S6-lYOwo.js +6 -0
  385. langflow/frontend/assets/circle-parking-off-DuAIHwJx.js +6 -0
  386. langflow/frontend/assets/circle-pause-C6OS1hwy.js +6 -0
  387. langflow/frontend/assets/circle-percent-BgBD9FZz.js +6 -0
  388. langflow/frontend/assets/circle-play-C3jpOkzD.js +6 -0
  389. langflow/frontend/assets/circle-plus-oMjW-wTM.js +6 -0
  390. langflow/frontend/assets/circle-power-D77l_1I8.js +6 -0
  391. langflow/frontend/assets/circle-slash-2-BhvWkT0K.js +6 -0
  392. langflow/frontend/assets/circle-slash-CV2u_8IH.js +6 -0
  393. langflow/frontend/assets/circle-small-Bc_cVHmc.js +6 -0
  394. langflow/frontend/assets/circle-stop-CRqhUr5p.js +6 -0
  395. langflow/frontend/assets/circle-user-Ba7WRnRQ.js +6 -0
  396. langflow/frontend/assets/circle-user-round-CbI1itNW.js +6 -0
  397. langflow/frontend/assets/circuit-board-xfiLd_s1.js +6 -0
  398. langflow/frontend/assets/citrus-D9d23doq.js +6 -0
  399. langflow/frontend/assets/clapperboard-C9bdDFQW.js +6 -0
  400. langflow/frontend/assets/clipboard-COY2oQHS.js +6 -0
  401. langflow/frontend/assets/clipboard-check-BH-b7oQv.js +6 -0
  402. langflow/frontend/assets/clipboard-copy-qqX_hbxG.js +6 -0
  403. langflow/frontend/assets/clipboard-list-Cw6n8Pto.js +6 -0
  404. langflow/frontend/assets/clipboard-minus-CmNYXyLR.js +6 -0
  405. langflow/frontend/assets/clipboard-paste-ZiNEydPy.js +6 -0
  406. langflow/frontend/assets/clipboard-pen-B0yp_ni5.js +6 -0
  407. langflow/frontend/assets/clipboard-pen-line-02RH7QCk.js +6 -0
  408. langflow/frontend/assets/clipboard-plus-DExFWp5z.js +6 -0
  409. langflow/frontend/assets/clipboard-type-BP3iLFe6.js +6 -0
  410. langflow/frontend/assets/clipboard-x-C8vTYWiS.js +6 -0
  411. langflow/frontend/assets/clock-1-DlOoh2Yp.js +6 -0
  412. langflow/frontend/assets/clock-10-Byb0MJzF.js +6 -0
  413. langflow/frontend/assets/clock-11-ecUbFp41.js +6 -0
  414. langflow/frontend/assets/clock-12-BZyZCGSA.js +6 -0
  415. langflow/frontend/assets/clock-2-DDYABIm8.js +6 -0
  416. langflow/frontend/assets/clock-3-DM8BsYyE.js +6 -0
  417. langflow/frontend/assets/clock-4-Dq98Mfnr.js +6 -0
  418. langflow/frontend/assets/clock-5-DLYLoR9v.js +6 -0
  419. langflow/frontend/assets/clock-6-CYWA7TSy.js +6 -0
  420. langflow/frontend/assets/clock-7-CeAutbCT.js +6 -0
  421. langflow/frontend/assets/clock-8-BZplNT9b.js +6 -0
  422. langflow/frontend/assets/clock-9-BYldJA85.js +6 -0
  423. langflow/frontend/assets/clock-Ba2M1PcP.js +6 -0
  424. langflow/frontend/assets/clock-alert-CwQA-1ot.js +6 -0
  425. langflow/frontend/assets/clock-arrow-down-v3pdpRsm.js +6 -0
  426. langflow/frontend/assets/clock-arrow-up-BZegLp9P.js +6 -0
  427. langflow/frontend/assets/clock-fading-BZVJxfOY.js +6 -0
  428. langflow/frontend/assets/cloud-Dd2P5DBm.js +6 -0
  429. langflow/frontend/assets/cloud-alert-C5u8kSc_.js +6 -0
  430. langflow/frontend/assets/cloud-cog-0YXtveIS.js +6 -0
  431. langflow/frontend/assets/cloud-download-Bl7q6HAz.js +6 -0
  432. langflow/frontend/assets/cloud-drizzle-Dh29HqeX.js +6 -0
  433. langflow/frontend/assets/cloud-fog-Ck2Ug3wM.js +6 -0
  434. langflow/frontend/assets/cloud-hail-D7Yhu58V.js +6 -0
  435. langflow/frontend/assets/cloud-lightning-ybz6-b-5.js +6 -0
  436. langflow/frontend/assets/cloud-moon-CEUFBTTu.js +6 -0
  437. langflow/frontend/assets/cloud-moon-rain-rLMia0Ja.js +6 -0
  438. langflow/frontend/assets/cloud-off-CWaVStBb.js +6 -0
  439. langflow/frontend/assets/cloud-rain-K5ZP6Km1.js +6 -0
  440. langflow/frontend/assets/cloud-rain-wind-Bf4N3m9M.js +6 -0
  441. langflow/frontend/assets/cloud-snow-yTbJ51ZG.js +6 -0
  442. langflow/frontend/assets/cloud-sun-M9yX8Mog.js +6 -0
  443. langflow/frontend/assets/cloud-sun-rain-BlNAu8lZ.js +6 -0
  444. langflow/frontend/assets/cloud-upload-rbsfM4JU.js +6 -0
  445. langflow/frontend/assets/cloudy-DDscJFzK.js +6 -0
  446. langflow/frontend/assets/clover-BHLmf_Hf.js +6 -0
  447. langflow/frontend/assets/club-C4mz33l-.js +6 -0
  448. langflow/frontend/assets/code-xml-KFyXPWCB.js +6 -0
  449. langflow/frontend/assets/codepen-CaEj8MYz.js +6 -0
  450. langflow/frontend/assets/codesandbox-DDId5WBk.js +6 -0
  451. langflow/frontend/assets/coffee-Cj_3nLPS.js +6 -0
  452. langflow/frontend/assets/cog-CyDzF3Xv.js +6 -0
  453. langflow/frontend/assets/coins-DeJ1ZkXq.js +6 -0
  454. langflow/frontend/assets/columns-2-B0rpgc8h.js +6 -0
  455. langflow/frontend/assets/columns-3-B-JpTrsh.js +6 -0
  456. langflow/frontend/assets/columns-3-cog-BfN6XfFc.js +6 -0
  457. langflow/frontend/assets/columns-4-CR7SFwRY.js +6 -0
  458. langflow/frontend/assets/combine-CNL4LOJW.js +6 -0
  459. langflow/frontend/assets/command-BiND_REq.js +6 -0
  460. langflow/frontend/assets/compass-0Lq1E9jq.js +6 -0
  461. langflow/frontend/assets/component-BB1a1pxh.js +6 -0
  462. langflow/frontend/assets/computer-C6AWmbDk.js +6 -0
  463. langflow/frontend/assets/concierge-bell-0Y42gnYF.js +6 -0
  464. langflow/frontend/assets/cone-5S8sjlFQ.js +6 -0
  465. langflow/frontend/assets/construction-Bkp9l3kO.js +6 -0
  466. langflow/frontend/assets/contact-MRVrPR4B.js +6 -0
  467. langflow/frontend/assets/contact-round-Cyb-Wkyv.js +6 -0
  468. langflow/frontend/assets/container-BwP8sFlV.js +6 -0
  469. langflow/frontend/assets/contrast-DLFY_4pi.js +6 -0
  470. langflow/frontend/assets/cookie-DCcRKphs.js +6 -0
  471. langflow/frontend/assets/cooking-pot-zdn1QI8y.js +6 -0
  472. langflow/frontend/assets/copy-BFJRM2Ys.js +6 -0
  473. langflow/frontend/assets/copy-check-DBPR_ihx.js +6 -0
  474. langflow/frontend/assets/copy-minus-CrX_plN2.js +6 -0
  475. langflow/frontend/assets/copy-plus-96OM-e-a.js +6 -0
  476. langflow/frontend/assets/copy-slash-D1FGeLsf.js +6 -0
  477. langflow/frontend/assets/copy-x-cylQjIqJ.js +6 -0
  478. langflow/frontend/assets/copyleft-DMbGnqfv.js +6 -0
  479. langflow/frontend/assets/copyright-eSk7LKZm.js +6 -0
  480. langflow/frontend/assets/corner-down-left-DXwr5A2j.js +6 -0
  481. langflow/frontend/assets/corner-down-right-BkE7pQE5.js +6 -0
  482. langflow/frontend/assets/corner-left-down-CxcWplYX.js +6 -0
  483. langflow/frontend/assets/corner-left-up-BaVHSvSB.js +6 -0
  484. langflow/frontend/assets/corner-right-down-CQD1fILr.js +6 -0
  485. langflow/frontend/assets/corner-right-up-BiZJNaQU.js +6 -0
  486. langflow/frontend/assets/corner-up-left-DUwXmTqr.js +6 -0
  487. langflow/frontend/assets/corner-up-right-B0jajDcb.js +6 -0
  488. langflow/frontend/assets/cpu-DIXEHdSH.js +6 -0
  489. langflow/frontend/assets/creative-commons-BUw2aCmZ.js +6 -0
  490. langflow/frontend/assets/credit-card-DqcWBej1.js +6 -0
  491. langflow/frontend/assets/croissant-BTxlKWp6.js +6 -0
  492. langflow/frontend/assets/crop-BXMDRveE.js +6 -0
  493. langflow/frontend/assets/cross-CGeGoQCG.js +6 -0
  494. langflow/frontend/assets/crosshair-dI1JSq21.js +6 -0
  495. langflow/frontend/assets/crown-Cl6iU52n.js +6 -0
  496. langflow/frontend/assets/cuboid-43Q4GzU9.js +6 -0
  497. langflow/frontend/assets/cup-soda-DZXsFjoW.js +6 -0
  498. langflow/frontend/assets/currency-DRsWsDLp.js +6 -0
  499. langflow/frontend/assets/cylinder-CDHzYJdI.js +6 -0
  500. langflow/frontend/assets/dam-CxlZKELk.js +6 -0
  501. langflow/frontend/assets/database-CJr-FNJ5.js +6 -0
  502. langflow/frontend/assets/database-backup-o-yYl6nP.js +6 -0
  503. langflow/frontend/assets/database-zap-DL7YJXpW.js +6 -0
  504. langflow/frontend/assets/decimals-arrow-left-D-q8HsRd.js +6 -0
  505. langflow/frontend/assets/decimals-arrow-right-CHREObAO.js +6 -0
  506. langflow/frontend/assets/delete-D872SUC4.js +6 -0
  507. langflow/frontend/assets/dessert-f-SG6XBB.js +6 -0
  508. langflow/frontend/assets/diameter-C19B7GNV.js +6 -0
  509. langflow/frontend/assets/diamond-CJA930tw.js +6 -0
  510. langflow/frontend/assets/diamond-minus-BHQcfJ1x.js +6 -0
  511. langflow/frontend/assets/diamond-percent-CWDLqktF.js +6 -0
  512. langflow/frontend/assets/diamond-plus-D3Q9mWky.js +6 -0
  513. langflow/frontend/assets/dice-1-C5FuHk0l.js +6 -0
  514. langflow/frontend/assets/dice-2-DAoSv18N.js +6 -0
  515. langflow/frontend/assets/dice-3-2v3VsmmS.js +6 -0
  516. langflow/frontend/assets/dice-4-BVpD0-Hf.js +6 -0
  517. langflow/frontend/assets/dice-5-DLeXvvSw.js +6 -0
  518. langflow/frontend/assets/dice-6-CHXOtUP7.js +6 -0
  519. langflow/frontend/assets/dices-BrlCqisi.js +6 -0
  520. langflow/frontend/assets/diff-mKC2Novh.js +6 -0
  521. langflow/frontend/assets/disc-2-8zBP-orc.js +6 -0
  522. langflow/frontend/assets/disc-3-DyXi7mYg.js +6 -0
  523. langflow/frontend/assets/disc-DlWLGtPW.js +6 -0
  524. langflow/frontend/assets/disc-album-gVsuqQTc.js +6 -0
  525. langflow/frontend/assets/divide-DMfyrb08.js +6 -0
  526. langflow/frontend/assets/dna-4FdGgAws.js +6 -0
  527. langflow/frontend/assets/dna-off-B2s4x5Jm.js +6 -0
  528. langflow/frontend/assets/dock-BfUEveo5.js +6 -0
  529. langflow/frontend/assets/dog-CxjaLXdL.js +6 -0
  530. langflow/frontend/assets/dollar-sign-DkFBfsEv.js +6 -0
  531. langflow/frontend/assets/donut-Cb9_joe5.js +6 -0
  532. langflow/frontend/assets/door-closed-B8CHkpLP.js +6 -0
  533. langflow/frontend/assets/door-open-D4V595vT.js +6 -0
  534. langflow/frontend/assets/dot-BarDopmQ.js +6 -0
  535. langflow/frontend/assets/download-gEj1k5Nq.js +6 -0
  536. langflow/frontend/assets/drafting-compass-MrYr713U.js +6 -0
  537. langflow/frontend/assets/drama-D0-cRbwh.js +6 -0
  538. langflow/frontend/assets/dribbble-BDQwNsNH.js +6 -0
  539. langflow/frontend/assets/drill-Dmhg_4t_.js +6 -0
  540. langflow/frontend/assets/droplet-JuMfAA2-.js +6 -0
  541. langflow/frontend/assets/droplet-off-BeYM02ER.js +6 -0
  542. langflow/frontend/assets/droplets-DaMLRgIF.js +6 -0
  543. langflow/frontend/assets/drum-BqBwNKmf.js +6 -0
  544. langflow/frontend/assets/drumstick-DZsM1pIS.js +6 -0
  545. langflow/frontend/assets/dumbbell-dSG1kBPb.js +6 -0
  546. langflow/frontend/assets/ear-fqcptM8F.js +6 -0
  547. langflow/frontend/assets/ear-off-DH6kW97t.js +6 -0
  548. langflow/frontend/assets/earth-0ZhKod0m.js +6 -0
  549. langflow/frontend/assets/earth-lock-DAhr18X_.js +6 -0
  550. langflow/frontend/assets/eclipse-Du3SOCuK.js +6 -0
  551. langflow/frontend/assets/egg-DcSo0Y4g.js +6 -0
  552. langflow/frontend/assets/egg-fried-BGxQ6Z_A.js +6 -0
  553. langflow/frontend/assets/egg-off-8YxmJtq5.js +6 -0
  554. langflow/frontend/assets/ellipsis-CXF2hSRc.js +6 -0
  555. langflow/frontend/assets/ellipsis-vertical-gJtOJB4U.js +6 -0
  556. langflow/frontend/assets/equal-BJwTnDs4.js +6 -0
  557. langflow/frontend/assets/equal-approximately-9Men7o_q.js +6 -0
  558. langflow/frontend/assets/equal-not-OIOoJubK.js +6 -0
  559. langflow/frontend/assets/eraser-Dc2DOnVL.js +6 -0
  560. langflow/frontend/assets/ethernet-port-5lnUYrQ0.js +6 -0
  561. langflow/frontend/assets/euro-D_hKEWYm.js +6 -0
  562. langflow/frontend/assets/expand-DlP77yko.js +6 -0
  563. langflow/frontend/assets/eye-closed-BY7NqqNi.js +6 -0
  564. langflow/frontend/assets/eye-off-BjigD_OE.js +6 -0
  565. langflow/frontend/assets/eye-rW97eEsO.js +6 -0
  566. langflow/frontend/assets/facebook-bPITr34Z.js +6 -0
  567. langflow/frontend/assets/factory-B9KOShwp.js +6 -0
  568. langflow/frontend/assets/fan-Ccg3MXB6.js +6 -0
  569. langflow/frontend/assets/fast-forward-C8izVlJs.js +6 -0
  570. langflow/frontend/assets/feather-BzArIA-e.js +6 -0
  571. langflow/frontend/assets/fence-DzfGXSKu.js +6 -0
  572. langflow/frontend/assets/ferris-wheel-DUi-JXX7.js +6 -0
  573. langflow/frontend/assets/figma-4_VvQnxT.js +6 -0
  574. langflow/frontend/assets/file-DCFrV7Q4.js +6 -0
  575. langflow/frontend/assets/file-archive-Btkq97E7.js +6 -0
  576. langflow/frontend/assets/file-audio-2-CDdVb9IQ.js +6 -0
  577. langflow/frontend/assets/file-audio-BX8aIJWm.js +6 -0
  578. langflow/frontend/assets/file-axis-3d-DSRX84gl.js +6 -0
  579. langflow/frontend/assets/file-badge-2-CMqd6IFv.js +6 -0
  580. langflow/frontend/assets/file-badge-JyAhz1B3.js +6 -0
  581. langflow/frontend/assets/file-box-QiU4s76c.js +6 -0
  582. langflow/frontend/assets/file-chart-column-C8oRmu5l.js +6 -0
  583. langflow/frontend/assets/file-chart-column-increasing-jlLy6Syb.js +6 -0
  584. langflow/frontend/assets/file-chart-line-nZdECoxK.js +6 -0
  585. langflow/frontend/assets/file-chart-pie-awDA-wt8.js +6 -0
  586. langflow/frontend/assets/file-check-2-DGNZ44sF.js +6 -0
  587. langflow/frontend/assets/file-check-BpuNh2MZ.js +6 -0
  588. langflow/frontend/assets/file-clock-DBlozspr.js +6 -0
  589. langflow/frontend/assets/file-code-2-D2CEcyp3.js +6 -0
  590. langflow/frontend/assets/file-code-DGxt4W1t.js +6 -0
  591. langflow/frontend/assets/file-cog-J6FH4rF4.js +6 -0
  592. langflow/frontend/assets/file-diff-BLiWCYSj.js +6 -0
  593. langflow/frontend/assets/file-digit-CfAFvD7W.js +6 -0
  594. langflow/frontend/assets/file-down-Bh1ghiKq.js +6 -0
  595. langflow/frontend/assets/file-heart-LakIvOFW.js +6 -0
  596. langflow/frontend/assets/file-image-BIeOXYOn.js +6 -0
  597. langflow/frontend/assets/file-input-CzBJ5XRP.js +6 -0
  598. langflow/frontend/assets/file-json-2-r2BgbONC.js +6 -0
  599. langflow/frontend/assets/file-json-DwFkQ-KU.js +6 -0
  600. langflow/frontend/assets/file-key-2-CvZ5i0ca.js +6 -0
  601. langflow/frontend/assets/file-key-D81B7nZm.js +6 -0
  602. langflow/frontend/assets/file-lock-2-CwyonEhg.js +6 -0
  603. langflow/frontend/assets/file-lock-DDVyrphW.js +6 -0
  604. langflow/frontend/assets/file-minus-2-CQNg6eu1.js +6 -0
  605. langflow/frontend/assets/file-minus-7EmXPu_k.js +6 -0
  606. langflow/frontend/assets/file-music-BstMfMxK.js +6 -0
  607. langflow/frontend/assets/file-output-BDSeD8UO.js +6 -0
  608. langflow/frontend/assets/file-pen-BY5ueYAI.js +6 -0
  609. langflow/frontend/assets/file-pen-line-DX6Th7gy.js +6 -0
  610. langflow/frontend/assets/file-plus-2-B_QaA744.js +6 -0
  611. langflow/frontend/assets/file-plus-qQBem2np.js +6 -0
  612. langflow/frontend/assets/file-question-BPis8YPT.js +6 -0
  613. langflow/frontend/assets/file-scan-DpL890np.js +6 -0
  614. langflow/frontend/assets/file-search-2-D4-1Xi4D.js +6 -0
  615. langflow/frontend/assets/file-search-MybvuYC4.js +6 -0
  616. langflow/frontend/assets/file-sliders-CmUZEDXi.js +6 -0
  617. langflow/frontend/assets/file-spreadsheet-r7vUagEb.js +6 -0
  618. langflow/frontend/assets/file-stack-CJ6ozhfC.js +6 -0
  619. langflow/frontend/assets/file-symlink-DHorNAse.js +6 -0
  620. langflow/frontend/assets/file-terminal-RGIyRXl8.js +6 -0
  621. langflow/frontend/assets/file-text-D4YyCd0h.js +6 -0
  622. langflow/frontend/assets/file-type-2-CtnIcKp1.js +6 -0
  623. langflow/frontend/assets/file-type-DFMJrmpc.js +6 -0
  624. langflow/frontend/assets/file-up-B_6YRo4k.js +6 -0
  625. langflow/frontend/assets/file-user-B5hJ7ZGf.js +6 -0
  626. langflow/frontend/assets/file-video-2-CB_cqVf9.js +6 -0
  627. langflow/frontend/assets/file-video-CqbgfXwz.js +6 -0
  628. langflow/frontend/assets/file-volume-2-CiP0vHRx.js +6 -0
  629. langflow/frontend/assets/file-volume-CB48Y7hE.js +6 -0
  630. langflow/frontend/assets/file-warning-Dlik4Z10.js +6 -0
  631. langflow/frontend/assets/file-x-2-BOERRQi9.js +6 -0
  632. langflow/frontend/assets/file-x-Bz7dINCS.js +6 -0
  633. langflow/frontend/assets/files-BncrwBTO.js +6 -0
  634. langflow/frontend/assets/film-B2SBGav4.js +6 -0
  635. langflow/frontend/assets/fingerprint-B7Lkz00j.js +6 -0
  636. langflow/frontend/assets/fire-extinguisher-D6QDO17J.js +6 -0
  637. langflow/frontend/assets/fish-POKVJYey.js +6 -0
  638. langflow/frontend/assets/fish-off-BB2CKSkD.js +6 -0
  639. langflow/frontend/assets/fish-symbol-C0TqXnen.js +6 -0
  640. langflow/frontend/assets/flag-CMhcjVQ-.js +6 -0
  641. langflow/frontend/assets/flag-off-Bk4jZ209.js +6 -0
  642. langflow/frontend/assets/flag-triangle-left-m4s8ZQKY.js +6 -0
  643. langflow/frontend/assets/flag-triangle-right-wBBdtI3y.js +6 -0
  644. langflow/frontend/assets/flame-CGmMQo-g.js +6 -0
  645. langflow/frontend/assets/flame-kindling-X96U3M2D.js +6 -0
  646. langflow/frontend/assets/flashlight-BgaVQe9c.js +6 -0
  647. langflow/frontend/assets/flashlight-off-a8FwZAVg.js +6 -0
  648. langflow/frontend/assets/flask-conical-BiCOqhl_.js +6 -0
  649. langflow/frontend/assets/flask-conical-off-DsE6nv63.js +6 -0
  650. langflow/frontend/assets/flask-round-DjH4Yykt.js +6 -0
  651. langflow/frontend/assets/flip-horizontal-2-CKKkqCL2.js +6 -0
  652. langflow/frontend/assets/flip-horizontal-C_oloEAG.js +6 -0
  653. langflow/frontend/assets/flip-vertical-2-D1ipENxU.js +6 -0
  654. langflow/frontend/assets/flip-vertical-DrqSkDXn.js +6 -0
  655. langflow/frontend/assets/flower-2-Do2xuxfw.js +6 -0
  656. langflow/frontend/assets/flower-BISxxqXh.js +6 -0
  657. langflow/frontend/assets/focus-DQFkjQQe.js +6 -0
  658. langflow/frontend/assets/fold-horizontal-BVOxfAu9.js +6 -0
  659. langflow/frontend/assets/fold-vertical-Jv9nkHIl.js +6 -0
  660. langflow/frontend/assets/folder-Cqj5hQQA.js +6 -0
  661. langflow/frontend/assets/folder-archive-FLcMdVZX.js +6 -0
  662. langflow/frontend/assets/folder-check-BqqeUTie.js +6 -0
  663. langflow/frontend/assets/folder-clock-BSsiqnuG.js +6 -0
  664. langflow/frontend/assets/folder-closed-Bj5p2GNo.js +6 -0
  665. langflow/frontend/assets/folder-code-BbVqSC0B.js +6 -0
  666. langflow/frontend/assets/folder-cog-DQYJwNRP.js +6 -0
  667. langflow/frontend/assets/folder-dot-DEkdsaUt.js +6 -0
  668. langflow/frontend/assets/folder-down-D_bLkcdH.js +6 -0
  669. langflow/frontend/assets/folder-git-2-YZaov8rm.js +6 -0
  670. langflow/frontend/assets/folder-git-cImRgTqM.js +6 -0
  671. langflow/frontend/assets/folder-heart-C4J9TGXV.js +6 -0
  672. langflow/frontend/assets/folder-input-BQVgp6nA.js +6 -0
  673. langflow/frontend/assets/folder-kanban-ctz49Aju.js +6 -0
  674. langflow/frontend/assets/folder-key-BqwWRmH0.js +6 -0
  675. langflow/frontend/assets/folder-lock-D4RPOR7q.js +6 -0
  676. langflow/frontend/assets/folder-minus-DAlVmKAp.js +6 -0
  677. langflow/frontend/assets/folder-open-B9BvzjwG.js +6 -0
  678. langflow/frontend/assets/folder-open-dot-C4yEPYGc.js +6 -0
  679. langflow/frontend/assets/folder-output-kpv3zoZi.js +6 -0
  680. langflow/frontend/assets/folder-pen-K_hfywXx.js +6 -0
  681. langflow/frontend/assets/folder-plus-CFe-cfqJ.js +6 -0
  682. langflow/frontend/assets/folder-root-DYBXMzx1.js +6 -0
  683. langflow/frontend/assets/folder-search-2-BSh2T0gJ.js +6 -0
  684. langflow/frontend/assets/folder-search-Ddmqg7ew.js +6 -0
  685. langflow/frontend/assets/folder-symlink-8xMioeAY.js +6 -0
  686. langflow/frontend/assets/folder-sync-D-Ses2dX.js +6 -0
  687. langflow/frontend/assets/folder-tree-BWZxYQyx.js +6 -0
  688. langflow/frontend/assets/folder-up-BNC_9bbn.js +6 -0
  689. langflow/frontend/assets/folder-x-B3PjCfhi.js +6 -0
  690. langflow/frontend/assets/folders-D4Wq-LCk.js +6 -0
  691. langflow/frontend/assets/footprints-DWyxiXFm.js +6 -0
  692. langflow/frontend/assets/forklift-Z5LzjkHL.js +6 -0
  693. langflow/frontend/assets/forward-CexpH8kH.js +6 -0
  694. langflow/frontend/assets/frame-B11eQLFr.js +6 -0
  695. langflow/frontend/assets/framer-DC3kYcIF.js +6 -0
  696. langflow/frontend/assets/frown-D38cJawk.js +6 -0
  697. langflow/frontend/assets/fuel-yOZnwH9Z.js +6 -0
  698. langflow/frontend/assets/fullscreen-rse7LZDd.js +6 -0
  699. langflow/frontend/assets/funnel-Bze-WMc6.js +6 -0
  700. langflow/frontend/assets/funnel-plus-DumpHSQW.js +6 -0
  701. langflow/frontend/assets/funnel-x-BlzrXJ2i.js +6 -0
  702. langflow/frontend/assets/gallery-horizontal-end-_ejLtX0i.js +6 -0
  703. langflow/frontend/assets/gallery-horizontal-yfQHSSE5.js +6 -0
  704. langflow/frontend/assets/gallery-thumbnails-Bh_kCi7o.js +6 -0
  705. langflow/frontend/assets/gallery-vertical-B6-e0Ni6.js +6 -0
  706. langflow/frontend/assets/gallery-vertical-end-Cf4F1Nxs.js +6 -0
  707. langflow/frontend/assets/gamepad-2-DShw_fj2.js +6 -0
  708. langflow/frontend/assets/gamepad-CBdn9mvE.js +6 -0
  709. langflow/frontend/assets/gauge-CNPcm4rt.js +6 -0
  710. langflow/frontend/assets/gavel-B6ct2Si_.js +6 -0
  711. langflow/frontend/assets/gem-DzbGxMVW.js +6 -0
  712. langflow/frontend/assets/ghost-CdNsbE2w.js +6 -0
  713. langflow/frontend/assets/gift-C_X28YNa.js +6 -0
  714. langflow/frontend/assets/git-branch-DpL0ndAj.js +6 -0
  715. langflow/frontend/assets/git-branch-plus-BpVWVplK.js +6 -0
  716. langflow/frontend/assets/git-commit-horizontal-DE6tF3O6.js +6 -0
  717. langflow/frontend/assets/git-commit-vertical-nGix-3vC.js +6 -0
  718. langflow/frontend/assets/git-compare-AhrF-RRS.js +6 -0
  719. langflow/frontend/assets/git-compare-arrows-B7kwRBJ2.js +6 -0
  720. langflow/frontend/assets/git-fork-DgPY318R.js +6 -0
  721. langflow/frontend/assets/git-graph-BpfTuJ2D.js +6 -0
  722. langflow/frontend/assets/git-merge-ARUHVP2M.js +6 -0
  723. langflow/frontend/assets/git-pull-request-CK59od2i.js +6 -0
  724. langflow/frontend/assets/git-pull-request-arrow-DiNfSHJ-.js +6 -0
  725. langflow/frontend/assets/git-pull-request-closed-CLbmUUdg.js +6 -0
  726. langflow/frontend/assets/git-pull-request-create-XL6nP3nQ.js +6 -0
  727. langflow/frontend/assets/git-pull-request-create-arrow-DuIsNnmr.js +6 -0
  728. langflow/frontend/assets/git-pull-request-draft-CRqnoaOC.js +6 -0
  729. langflow/frontend/assets/github-DVMZQK-G.js +6 -0
  730. langflow/frontend/assets/gitlab-Cxom8Bjl.js +6 -0
  731. langflow/frontend/assets/glass-water-BxkosC8L.js +6 -0
  732. langflow/frontend/assets/glasses-DqWOdkmJ.js +6 -0
  733. langflow/frontend/assets/globe-ZLQTD4sx.js +6 -0
  734. langflow/frontend/assets/globe-lock-DdptaQct.js +6 -0
  735. langflow/frontend/assets/goal-tiH_NoFu.js +6 -0
  736. langflow/frontend/assets/grab-DIBYz20P.js +6 -0
  737. langflow/frontend/assets/graduation-cap-ByZ_qv70.js +6 -0
  738. langflow/frontend/assets/grape-D3ICIquq.js +6 -0
  739. langflow/frontend/assets/grid-2x2-check-V91IVAw3.js +6 -0
  740. langflow/frontend/assets/grid-2x2-plus-BUc_xYLS.js +6 -0
  741. langflow/frontend/assets/grid-2x2-x-CeWyMeF5.js +6 -0
  742. langflow/frontend/assets/grid-2x2-x7LlwDu0.js +6 -0
  743. langflow/frontend/assets/grid-3x3-CTMjkuKA.js +6 -0
  744. langflow/frontend/assets/grip-BL6GYHTq.js +6 -0
  745. langflow/frontend/assets/grip-horizontal-BaHUWp_e.js +6 -0
  746. langflow/frontend/assets/grip-vertical-sDScg1ic.js +6 -0
  747. langflow/frontend/assets/group-LDwB3Uzk.js +6 -0
  748. langflow/frontend/assets/guitar-C9zll7Kx.js +6 -0
  749. langflow/frontend/assets/ham-CB9yMV6O.js +6 -0
  750. langflow/frontend/assets/hammer-CGb-Mrox.js +6 -0
  751. langflow/frontend/assets/hand-BQAHCHx1.js +6 -0
  752. langflow/frontend/assets/hand-coins-Dphsbl_0.js +6 -0
  753. langflow/frontend/assets/hand-heart-B2xjCT2t.js +6 -0
  754. langflow/frontend/assets/hand-helping-BWR2WYpz.js +6 -0
  755. langflow/frontend/assets/hand-metal-DjvSEMzS.js +6 -0
  756. langflow/frontend/assets/hand-platter-ZB4dfOX0.js +6 -0
  757. langflow/frontend/assets/handshake-DymEJdT6.js +6 -0
  758. langflow/frontend/assets/hard-drive-YV_BAntj.js +6 -0
  759. langflow/frontend/assets/hard-drive-download-Cd3RWQqH.js +6 -0
  760. langflow/frontend/assets/hard-drive-upload-DxyCK3Sk.js +6 -0
  761. langflow/frontend/assets/hard-hat-BpZz1qD2.js +6 -0
  762. langflow/frontend/assets/hash-pYFlep27.js +6 -0
  763. langflow/frontend/assets/haze-n6Dw-9DV.js +6 -0
  764. langflow/frontend/assets/hdmi-port-Bjhbglnh.js +6 -0
  765. langflow/frontend/assets/heading-1-DZceccKk.js +6 -0
  766. langflow/frontend/assets/heading-2-DgQ9xOoU.js +6 -0
  767. langflow/frontend/assets/heading-3-COBkDkog.js +6 -0
  768. langflow/frontend/assets/heading-4-BNiD2sl5.js +6 -0
  769. langflow/frontend/assets/heading-5-COsRiAIe.js +6 -0
  770. langflow/frontend/assets/heading-6-BrKthQyL.js +6 -0
  771. langflow/frontend/assets/heading-Co4-wqD4.js +6 -0
  772. langflow/frontend/assets/headphone-off-CKZHvYAk.js +6 -0
  773. langflow/frontend/assets/headphones-Hb_h-xgk.js +6 -0
  774. langflow/frontend/assets/headset-yPmR9iMu.js +6 -0
  775. langflow/frontend/assets/heart-OTPiH247.js +6 -0
  776. langflow/frontend/assets/heart-crack-CJPuUKdr.js +6 -0
  777. langflow/frontend/assets/heart-handshake-CH7wSKRr.js +6 -0
  778. langflow/frontend/assets/heart-minus-BOxqcDkS.js +6 -0
  779. langflow/frontend/assets/heart-off-DYXOwKeJ.js +6 -0
  780. langflow/frontend/assets/heart-plus-CnP5gTd9.js +6 -0
  781. langflow/frontend/assets/heart-pulse-C4DrTmPe.js +6 -0
  782. langflow/frontend/assets/heater-DCR_c8Pn.js +6 -0
  783. langflow/frontend/assets/hexagon-CqMusHLs.js +6 -0
  784. langflow/frontend/assets/highlighter-rP2pZrJ8.js +6 -0
  785. langflow/frontend/assets/history-Du8arOQO.js +6 -0
  786. langflow/frontend/assets/hop-BEuEObr9.js +6 -0
  787. langflow/frontend/assets/hop-off-BCK8NMuR.js +6 -0
  788. langflow/frontend/assets/hospital-D6ud_26T.js +6 -0
  789. langflow/frontend/assets/hotel-D13Oo-qa.js +6 -0
  790. langflow/frontend/assets/hourglass-CwCT1KJF.js +6 -0
  791. langflow/frontend/assets/house-CDeqVDAu.js +6 -0
  792. langflow/frontend/assets/house-plug-DXrAn-tK.js +6 -0
  793. langflow/frontend/assets/house-plus-CBHchovT.js +6 -0
  794. langflow/frontend/assets/house-wifi-ICdCL0Yu.js +6 -0
  795. langflow/frontend/assets/ice-cream-bowl-DNHS2ppQ.js +6 -0
  796. langflow/frontend/assets/ice-cream-cone-DWzcwjjz.js +6 -0
  797. langflow/frontend/assets/id-card-CIFLOi8-.js +6 -0
  798. langflow/frontend/assets/image-8lrhnK9q.js +6 -0
  799. langflow/frontend/assets/image-down-MivzztGn.js +6 -0
  800. langflow/frontend/assets/image-minus-CERFu_4q.js +6 -0
  801. langflow/frontend/assets/image-off-zz1D7Okh.js +6 -0
  802. langflow/frontend/assets/image-play-zoQF7erx.js +6 -0
  803. langflow/frontend/assets/image-plus-CIEH8aUL.js +6 -0
  804. langflow/frontend/assets/image-up-CT1WjShr.js +6 -0
  805. langflow/frontend/assets/image-upscale-DdRcDZ4b.js +6 -0
  806. langflow/frontend/assets/images-CPFHR4mU.js +6 -0
  807. langflow/frontend/assets/import-DcWWEiZo.js +6 -0
  808. langflow/frontend/assets/inbox-BDDxFuvW.js +6 -0
  809. langflow/frontend/assets/indent-decrease-CmDJCBeR.js +6 -0
  810. langflow/frontend/assets/indent-increase-74C2cRqK.js +6 -0
  811. langflow/frontend/assets/index--1QMMYIc.js +1 -0
  812. langflow/frontend/assets/index-0WN6pVwT.js +1 -0
  813. langflow/frontend/assets/index-0bWf-L-b.js +1 -0
  814. langflow/frontend/assets/index-1py8E_Tx.js +1 -0
  815. langflow/frontend/assets/index-1yHdKdth.js +1 -0
  816. langflow/frontend/assets/index-3qAxyhl0.js +1 -0
  817. langflow/frontend/assets/index-4EAzqPx4.js +1 -0
  818. langflow/frontend/assets/index-6v0s4dis.js +1 -0
  819. langflow/frontend/assets/index-6y8j2y-V.js +1 -0
  820. langflow/frontend/assets/index-81o9A7OA.js +1 -0
  821. langflow/frontend/assets/index-9AaoneFI.js +1 -0
  822. langflow/frontend/assets/index-9ESNmM54.js +1 -0
  823. langflow/frontend/assets/index-ABP_zOp7.js +767 -0
  824. langflow/frontend/assets/index-B-3OTSlA.js +1 -0
  825. langflow/frontend/assets/index-B-T5Td-D.js +1 -0
  826. langflow/frontend/assets/index-B0jH37wS.js +1 -0
  827. langflow/frontend/assets/index-B4AXwK-w.js +1 -0
  828. langflow/frontend/assets/index-B4Gmzhai.js +127 -0
  829. langflow/frontend/assets/index-B4xCL6g4.js +1 -0
  830. langflow/frontend/assets/index-B63jL-59.js +1 -0
  831. langflow/frontend/assets/index-B8fLSnd-.js +1 -0
  832. langflow/frontend/assets/index-B95vMWcY.js +1 -0
  833. langflow/frontend/assets/index-B9jzLxxZ.js +7 -0
  834. langflow/frontend/assets/index-BBq16oa0.js +1 -0
  835. langflow/frontend/assets/index-BHejvkeO.js +1 -0
  836. langflow/frontend/assets/index-BIYCMewV.js +1 -0
  837. langflow/frontend/assets/index-BIwweneq.js +1 -0
  838. langflow/frontend/assets/index-BJj_mWu7.js +1 -0
  839. langflow/frontend/assets/index-BM2mE-74.js +1 -0
  840. langflow/frontend/assets/index-BMo2ApPC.js +1 -0
  841. langflow/frontend/assets/index-BMt_Krw8.js +1 -0
  842. langflow/frontend/assets/index-BNQsRPDx.js +1 -0
  843. langflow/frontend/assets/index-BNbUwl9Q.js +1 -0
  844. langflow/frontend/assets/index-BPh4cRtl.js +1 -0
  845. langflow/frontend/assets/index-BPnYilh6.js +1 -0
  846. langflow/frontend/assets/index-BSRt96De.js +1 -0
  847. langflow/frontend/assets/index-BSjl5FGL.js +495 -0
  848. langflow/frontend/assets/index-BSyXWLsw.js +1 -0
  849. langflow/frontend/assets/index-BU_i9Zbz.js +1 -0
  850. langflow/frontend/assets/index-BV6_R236.js +1 -0
  851. langflow/frontend/assets/index-BW9HmKg4.js +1 -0
  852. langflow/frontend/assets/index-BZRTSMso.js +1 -0
  853. langflow/frontend/assets/index-B_iU16GD.js +2 -0
  854. langflow/frontend/assets/index-BaVEhy6J.js +1 -0
  855. langflow/frontend/assets/index-BbApnSgR.js +1 -0
  856. langflow/frontend/assets/index-Bf3b-VNo.js +1 -0
  857. langflow/frontend/assets/index-BgSnQZb1.js +1 -0
  858. langflow/frontend/assets/index-BieWTUDR.js +1 -0
  859. langflow/frontend/assets/index-BjGChXQi.js +1 -0
  860. langflow/frontend/assets/index-Bjn6v5s-.js +1 -0
  861. langflow/frontend/assets/index-Bk4_fFoi.js +1 -0
  862. langflow/frontend/assets/index-Bk7jY-8H.js +1 -0
  863. langflow/frontend/assets/index-Blfeb19y.js +1 -0
  864. langflow/frontend/assets/index-BoAAZzDw.js +1 -0
  865. langflow/frontend/assets/index-Bo_2M8J_.js +1 -0
  866. langflow/frontend/assets/index-Br9Ptc3o.js +1 -0
  867. langflow/frontend/assets/index-BtUYwrXi.js +1 -0
  868. langflow/frontend/assets/index-BvNPF0Nj.js +1 -0
  869. langflow/frontend/assets/index-Bx0j3Zts.js +1 -0
  870. langflow/frontend/assets/index-Bx_WP072.js +1 -0
  871. langflow/frontend/assets/index-BznTePCi.js +7322 -0
  872. langflow/frontend/assets/index-BztxlgQg.js +1 -0
  873. langflow/frontend/assets/index-C-EGacPa.js +1 -0
  874. langflow/frontend/assets/index-C1T6hgTG.js +1 -0
  875. langflow/frontend/assets/index-C1_MhzWh.js +1 -0
  876. langflow/frontend/assets/index-C1m00tJE.js +1 -0
  877. langflow/frontend/assets/index-C2ec-hVV.js +1 -0
  878. langflow/frontend/assets/index-C4WWmwqa.js +1 -0
  879. langflow/frontend/assets/index-C5575BDe.js +1 -0
  880. langflow/frontend/assets/index-C5HA5jhu.js +1 -0
  881. langflow/frontend/assets/index-CANEVJ8J.js +1 -0
  882. langflow/frontend/assets/index-CDSw7f9V.js +1 -0
  883. langflow/frontend/assets/index-CFtCNyIk.css +1 -0
  884. langflow/frontend/assets/index-CKqzp1QY.js +1 -0
  885. langflow/frontend/assets/index-CNPK18T8.js +1 -0
  886. langflow/frontend/assets/index-CNkw9ANg.js +185 -0
  887. langflow/frontend/assets/index-CQU61xEY.js +1 -0
  888. langflow/frontend/assets/index-CS5QOPtB.js +1 -0
  889. langflow/frontend/assets/index-CSWWIBhM.js +1 -0
  890. langflow/frontend/assets/index-CSkRImqM.js +108 -0
  891. langflow/frontend/assets/index-CT9OiF1-.js +1 -0
  892. langflow/frontend/assets/index-CT_gHlei.js +1 -0
  893. langflow/frontend/assets/index-CTlZ7MYL.js +1 -0
  894. langflow/frontend/assets/index-CUOUcAoG.js +1 -0
  895. langflow/frontend/assets/index-CVVgqrun.js +1 -0
  896. langflow/frontend/assets/index-CXROUoKH.js +281 -0
  897. langflow/frontend/assets/index-CXn2ghl7.js +1 -0
  898. langflow/frontend/assets/index-CXwF99rT.js +1 -0
  899. langflow/frontend/assets/index-CYCR1mmr.js +1 -0
  900. langflow/frontend/assets/index-CYJXTgi9.js +1 -0
  901. langflow/frontend/assets/index-CYSpVKUw.js +1 -0
  902. langflow/frontend/assets/index-C_4dzgvU.js +399 -0
  903. langflow/frontend/assets/index-CfIOcXCx.js +1 -0
  904. langflow/frontend/assets/index-CguHco91.js +1 -0
  905. langflow/frontend/assets/index-ChA6wfVn.js +1 -0
  906. langflow/frontend/assets/index-CiS50XPL.js +1 -0
  907. langflow/frontend/assets/index-CkUEhGxk.js +1 -0
  908. langflow/frontend/assets/index-ClzKNpOl.js +1 -0
  909. langflow/frontend/assets/index-Cm4m6Npi.js +1 -0
  910. langflow/frontend/assets/index-Cn124NBN.js +1 -0
  911. langflow/frontend/assets/index-CnnFKUR5.js +1 -0
  912. langflow/frontend/assets/index-CoQwPFAK.js +1 -0
  913. langflow/frontend/assets/index-CoiSdp8s.js +1 -0
  914. langflow/frontend/assets/index-CpIdJ4gh.js +1 -0
  915. langflow/frontend/assets/index-CqGuzyM6.js +1 -0
  916. langflow/frontend/assets/index-CsYajpiJ.js +1 -0
  917. langflow/frontend/assets/index-Ct_3nR15.js +1 -0
  918. langflow/frontend/assets/index-CtwDWU4c.js +1 -0
  919. langflow/frontend/assets/index-CxqptvJ_.js +1 -0
  920. langflow/frontend/assets/index-Cy44xg4x.js +205 -0
  921. langflow/frontend/assets/index-Cz5NTyl-.js +1 -0
  922. langflow/frontend/assets/index-Czzd1tfW.js +1 -0
  923. langflow/frontend/assets/index-D37gwKLY.js +1 -0
  924. langflow/frontend/assets/index-D3P5EFAs.js +1 -0
  925. langflow/frontend/assets/index-D62JU5Db.js +1 -0
  926. langflow/frontend/assets/index-D7-T6gRb.js +1 -0
  927. langflow/frontend/assets/index-D9KNLamU.js +1 -0
  928. langflow/frontend/assets/index-DAjY-u8y.js +1 -0
  929. langflow/frontend/assets/index-DDI0iNar.js +1 -0
  930. langflow/frontend/assets/index-DEFWXy4-.js +1 -0
  931. langflow/frontend/assets/index-DFn5Eg1C.js +1 -0
  932. langflow/frontend/assets/index-DG8--NSu.js +1 -0
  933. langflow/frontend/assets/index-DGax5Git.js +1 -0
  934. langflow/frontend/assets/index-DIS_JvoJ.js +1 -0
  935. langflow/frontend/assets/index-DIgVlr1v.js +1 -0
  936. langflow/frontend/assets/index-DK4lLYFX.js +1 -0
  937. langflow/frontend/assets/index-DKiJqNCP.js +1 -0
  938. langflow/frontend/assets/index-DLu_V5nk.js +1 -0
  939. langflow/frontend/assets/index-DMZv2ZyO.js +13 -0
  940. langflow/frontend/assets/index-DNntEwqj.js +1 -0
  941. langflow/frontend/assets/index-DPS9Bk-8.js +1 -0
  942. langflow/frontend/assets/index-DQNtcEXP.js +1 -0
  943. langflow/frontend/assets/index-DQk4U2uA.js +1 -0
  944. langflow/frontend/assets/index-DSqr7t6Z.js +1 -0
  945. langflow/frontend/assets/index-DVrhpOCA.js +1 -0
  946. langflow/frontend/assets/index-DVswP_Qi.js +1 -0
  947. langflow/frontend/assets/index-DVtxGsgJ.js +1 -0
  948. langflow/frontend/assets/index-DZT9mTAV.js +1 -0
  949. langflow/frontend/assets/index-DcPN05Dw.js +1 -0
  950. langflow/frontend/assets/index-Ddj5z9Km.js +1 -0
  951. langflow/frontend/assets/index-Df8dVhCf.js +1 -0
  952. langflow/frontend/assets/index-DjzRGNVZ.js +1 -0
  953. langflow/frontend/assets/index-Dk2aRJId.js +1 -0
  954. langflow/frontend/assets/index-DlnPkhvr.js +1 -0
  955. langflow/frontend/assets/index-Dpquteut.js +1 -0
  956. langflow/frontend/assets/index-DsT653vS.js +1 -0
  957. langflow/frontend/assets/index-DuFuREwl.js +1 -0
  958. langflow/frontend/assets/index-Dv82K-tH.js +1 -0
  959. langflow/frontend/assets/index-Dvq_zmre.js +20 -0
  960. langflow/frontend/assets/index-Dx3pLgkm.js +1 -0
  961. langflow/frontend/assets/index-DygpS7gP.js +1 -0
  962. langflow/frontend/assets/index-EjmYjP72.js +1 -0
  963. langflow/frontend/assets/index-FcmJj2ju.js +381 -0
  964. langflow/frontend/assets/index-GwzICAD0.js +1 -0
  965. langflow/frontend/assets/index-L9ygHvhW.js +1 -0
  966. langflow/frontend/assets/index-McZ3t4Qo.js +1 -0
  967. langflow/frontend/assets/index-O7OKAlRD.js +1 -0
  968. langflow/frontend/assets/index-QSNe5ipa.js +1 -0
  969. langflow/frontend/assets/index-Ro3kEprV.js +1 -0
  970. langflow/frontend/assets/index-VC3YRegy.js +1 -0
  971. langflow/frontend/assets/index-WTn3-emo.js +1 -0
  972. langflow/frontend/assets/index-WghflxIk.js +1 -0
  973. langflow/frontend/assets/index-XQQ6rquB.js +21 -0
  974. langflow/frontend/assets/index-ZxLPHlth.js +1 -0
  975. langflow/frontend/assets/index-ah3Ws4tr.js +1 -0
  976. langflow/frontend/assets/index-an1Tgm1f.js +1 -0
  977. langflow/frontend/assets/index-cr4EXPMM.js +1 -0
  978. langflow/frontend/assets/index-eBmHYkgL.js +1 -0
  979. langflow/frontend/assets/index-hiAdGzSn.js +1 -0
  980. langflow/frontend/assets/index-i7fheos3.js +1 -0
  981. langflow/frontend/assets/index-iYq0DNqo.js +1 -0
  982. langflow/frontend/assets/index-jozeq-_E.js +1 -0
  983. langflow/frontend/assets/index-kAXxgY1G.js +1 -0
  984. langflow/frontend/assets/index-orsNUB7f.js +1 -0
  985. langflow/frontend/assets/index-owYZmokj.js +1 -0
  986. langflow/frontend/assets/index-qFCHsIrR.js +1 -0
  987. langflow/frontend/assets/index-sXU42-Tg.js +1 -0
  988. langflow/frontend/assets/index-vnb9-xeA.js +1 -0
  989. langflow/frontend/assets/index-xAZM7wa1.js +1 -0
  990. langflow/frontend/assets/index-xgR9kMB0.js +1 -0
  991. langflow/frontend/assets/index-xpfKmxOj.js +1 -0
  992. langflow/frontend/assets/index-xx0kHa98.js +1 -0
  993. langflow/frontend/assets/index-y0zGBpmq.js +1 -0
  994. langflow/frontend/assets/index-ypySHcfg.js +1 -0
  995. langflow/frontend/assets/indian-rupee-BdGpPaBe.js +6 -0
  996. langflow/frontend/assets/infinity-CXl1GZrA.js +6 -0
  997. langflow/frontend/assets/info-JLGUqxNa.js +6 -0
  998. langflow/frontend/assets/inspection-panel-C2CnWfoF.js +6 -0
  999. langflow/frontend/assets/instagram-DeEZoyaf.js +6 -0
  1000. langflow/frontend/assets/italic-Dl8SID3u.js +6 -0
  1001. langflow/frontend/assets/iteration-ccw-CQwEPkFV.js +6 -0
  1002. langflow/frontend/assets/iteration-cw-BZOoGibY.js +6 -0
  1003. langflow/frontend/assets/japanese-yen-Cu8L6rlR.js +6 -0
  1004. langflow/frontend/assets/joystick-C9wCYVUa.js +6 -0
  1005. langflow/frontend/assets/kanban-DAZM5P27.js +6 -0
  1006. langflow/frontend/assets/key-PpRFXvjs.js +6 -0
  1007. langflow/frontend/assets/key-round-CceZIeGe.js +6 -0
  1008. langflow/frontend/assets/key-square-DNb-b56s.js +6 -0
  1009. langflow/frontend/assets/keyboard-BlJPH3AZ.js +6 -0
  1010. langflow/frontend/assets/keyboard-music-CY7AuZkU.js +6 -0
  1011. langflow/frontend/assets/keyboard-off-CfEB7F5d.js +6 -0
  1012. langflow/frontend/assets/lamp-DPeiDkca.js +6 -0
  1013. langflow/frontend/assets/lamp-ceiling-5zxbJG4N.js +6 -0
  1014. langflow/frontend/assets/lamp-desk-DA4ngo0g.js +6 -0
  1015. langflow/frontend/assets/lamp-floor-Duqktv3R.js +6 -0
  1016. langflow/frontend/assets/lamp-wall-down-CU3cMLgR.js +6 -0
  1017. langflow/frontend/assets/lamp-wall-up-qGBGGKxB.js +6 -0
  1018. langflow/frontend/assets/land-plot-Bx5qaEcP.js +6 -0
  1019. langflow/frontend/assets/landmark--1GqSMof.js +6 -0
  1020. langflow/frontend/assets/languages-DKVBzqlL.js +6 -0
  1021. langflow/frontend/assets/laptop-Bu2iiQaH.js +6 -0
  1022. langflow/frontend/assets/laptop-minimal-Bxp9TXWs.js +6 -0
  1023. langflow/frontend/assets/laptop-minimal-check-l5dg56Q-.js +6 -0
  1024. langflow/frontend/assets/lasso-select-BMQa6phc.js +6 -0
  1025. langflow/frontend/assets/lasso-tcMJO0FR.js +6 -0
  1026. langflow/frontend/assets/laugh-Dq-ddMJN.js +6 -0
  1027. langflow/frontend/assets/layers-2-DdFEmq5e.js +6 -0
  1028. langflow/frontend/assets/layers-BwSa8U3i.js +6 -0
  1029. langflow/frontend/assets/layout-dashboard-BwUjTF60.js +6 -0
  1030. langflow/frontend/assets/layout-grid-DP8xP9Ea.js +6 -0
  1031. langflow/frontend/assets/layout-list-Bt7JnaEy.js +6 -0
  1032. langflow/frontend/assets/layout-panel-left-VJU8zFQa.js +6 -0
  1033. langflow/frontend/assets/layout-panel-top-B8PoXBXV.js +6 -0
  1034. langflow/frontend/assets/layout-template-Cc2KOOrd.js +6 -0
  1035. langflow/frontend/assets/lazyIconImports-CnlUAiLx.js +2 -0
  1036. langflow/frontend/assets/leaf-EwYLMUyE.js +6 -0
  1037. langflow/frontend/assets/leafy-green-8-VmzdDn.js +6 -0
  1038. langflow/frontend/assets/lectern-CqQEU4ih.js +6 -0
  1039. langflow/frontend/assets/letter-text-vv_oUxQJ.js +6 -0
  1040. langflow/frontend/assets/library-DxUDs33R.js +6 -0
  1041. langflow/frontend/assets/library-big-DXdiTxle.js +6 -0
  1042. langflow/frontend/assets/life-buoy-yD13AeY_.js +6 -0
  1043. langflow/frontend/assets/ligature-C4bwJf_r.js +6 -0
  1044. langflow/frontend/assets/lightbulb-DvT8LO_W.js +6 -0
  1045. langflow/frontend/assets/lightbulb-off-VcMfbs_k.js +6 -0
  1046. langflow/frontend/assets/link-2-CQk7G3GB.js +6 -0
  1047. langflow/frontend/assets/link-2-off-A2Khinh3.js +6 -0
  1048. langflow/frontend/assets/link-A1U4i2RU.js +6 -0
  1049. langflow/frontend/assets/linkedin-DGEC522l.js +6 -0
  1050. langflow/frontend/assets/list-cOh4uASj.js +6 -0
  1051. langflow/frontend/assets/list-check-BfBUzeeg.js +6 -0
  1052. langflow/frontend/assets/list-checks-BCZZ42p3.js +6 -0
  1053. langflow/frontend/assets/list-collapse-Ukx1VuOG.js +6 -0
  1054. langflow/frontend/assets/list-end-Bipnnsld.js +6 -0
  1055. langflow/frontend/assets/list-filter-CjOazrwq.js +6 -0
  1056. langflow/frontend/assets/list-filter-plus-CJfT5iPD.js +6 -0
  1057. langflow/frontend/assets/list-minus-Dm1l6u2Y.js +6 -0
  1058. langflow/frontend/assets/list-music-B3V_EZtn.js +6 -0
  1059. langflow/frontend/assets/list-ordered-Djaiepr0.js +6 -0
  1060. langflow/frontend/assets/list-plus-CfXNspHi.js +6 -0
  1061. langflow/frontend/assets/list-restart-5VE8IGbL.js +6 -0
  1062. langflow/frontend/assets/list-start-DWBHAblg.js +6 -0
  1063. langflow/frontend/assets/list-todo-B5Zrm0yo.js +6 -0
  1064. langflow/frontend/assets/list-tree-CNty983W.js +6 -0
  1065. langflow/frontend/assets/list-video-CwobsAoj.js +6 -0
  1066. langflow/frontend/assets/list-x-ConcGJiN.js +6 -0
  1067. langflow/frontend/assets/loader-C3N0Fpfi.js +6 -0
  1068. langflow/frontend/assets/loader-circle-C8WYAOxR.js +6 -0
  1069. langflow/frontend/assets/loader-pinwheel-D3SitjE5.js +6 -0
  1070. langflow/frontend/assets/locate-DwOFyga3.js +6 -0
  1071. langflow/frontend/assets/locate-fixed-DYFoSsh3.js +6 -0
  1072. langflow/frontend/assets/locate-off-DMlS5uHb.js +6 -0
  1073. langflow/frontend/assets/location-edit-DlxEbVcC.js +6 -0
  1074. langflow/frontend/assets/lock-BPptsZlm.js +6 -0
  1075. langflow/frontend/assets/lock-keyhole-BBuXkRwJ.js +6 -0
  1076. langflow/frontend/assets/lock-keyhole-open-COk25wqK.js +6 -0
  1077. langflow/frontend/assets/lock-open-BSMRJ_BG.js +6 -0
  1078. langflow/frontend/assets/log-in--3_Gw77a.js +6 -0
  1079. langflow/frontend/assets/log-out-Ch_EYrit.js +6 -0
  1080. langflow/frontend/assets/logs-SGNW8oSE.js +6 -0
  1081. langflow/frontend/assets/lollipop-Dc-GspZe.js +6 -0
  1082. langflow/frontend/assets/luggage-C_UhHTEv.js +6 -0
  1083. langflow/frontend/assets/magnet-CPViTIx5.js +6 -0
  1084. langflow/frontend/assets/mail-DVbPJq5-.js +6 -0
  1085. langflow/frontend/assets/mail-check-BZ9NmD4C.js +6 -0
  1086. langflow/frontend/assets/mail-minus-VhCRZEQc.js +6 -0
  1087. langflow/frontend/assets/mail-open-BaVSAm-G.js +6 -0
  1088. langflow/frontend/assets/mail-plus-B0oO0sPp.js +6 -0
  1089. langflow/frontend/assets/mail-question-Babysw9Q.js +6 -0
  1090. langflow/frontend/assets/mail-search-4TXvYlXA.js +6 -0
  1091. langflow/frontend/assets/mail-warning-eYPPNUoZ.js +6 -0
  1092. langflow/frontend/assets/mail-x-CY2vjIJ6.js +6 -0
  1093. langflow/frontend/assets/mailbox-BtU9xkhw.js +6 -0
  1094. langflow/frontend/assets/mails-BW6IHCDD.js +6 -0
  1095. langflow/frontend/assets/map-DqmZ0OZu.js +6 -0
  1096. langflow/frontend/assets/map-pin-DGJU3hH8.js +6 -0
  1097. langflow/frontend/assets/map-pin-check-DhQlh1sV.js +6 -0
  1098. langflow/frontend/assets/map-pin-check-inside-B3oo0rgL.js +6 -0
  1099. langflow/frontend/assets/map-pin-house-DpA2n6Wq.js +6 -0
  1100. langflow/frontend/assets/map-pin-minus-E_PToQa4.js +6 -0
  1101. langflow/frontend/assets/map-pin-minus-inside-Cfhv7ZN5.js +6 -0
  1102. langflow/frontend/assets/map-pin-off-ata75prc.js +6 -0
  1103. langflow/frontend/assets/map-pin-plus-Df5KW6Ba.js +6 -0
  1104. langflow/frontend/assets/map-pin-plus-inside-NBgTmxDr.js +6 -0
  1105. langflow/frontend/assets/map-pin-x-CI7gPxg4.js +6 -0
  1106. langflow/frontend/assets/map-pin-x-inside-DlIlFpPi.js +6 -0
  1107. langflow/frontend/assets/map-pinned-dAMkuzeJ.js +6 -0
  1108. langflow/frontend/assets/map-plus-wUzb2v1q.js +6 -0
  1109. langflow/frontend/assets/mars-DrUrEJsY.js +6 -0
  1110. langflow/frontend/assets/mars-stroke-DMt8zpiw.js +6 -0
  1111. langflow/frontend/assets/martini-C17rQMzM.js +6 -0
  1112. langflow/frontend/assets/maximize-2-p_0RDewl.js +6 -0
  1113. langflow/frontend/assets/maximize-BiQMaDdO.js +6 -0
  1114. langflow/frontend/assets/medal-BmHFlq7c.js +6 -0
  1115. langflow/frontend/assets/megaphone-DQKVC9c5.js +6 -0
  1116. langflow/frontend/assets/megaphone-off-J0NmihxO.js +6 -0
  1117. langflow/frontend/assets/meh-BRvssu9W.js +6 -0
  1118. langflow/frontend/assets/memory-stick-Dq3UzdRO.js +6 -0
  1119. langflow/frontend/assets/menu-C0_m5hXI.js +6 -0
  1120. langflow/frontend/assets/merge-CBX7bmBm.js +6 -0
  1121. langflow/frontend/assets/message-circle-B_voUs0v.js +6 -0
  1122. langflow/frontend/assets/message-circle-code-BJ_doWHY.js +6 -0
  1123. langflow/frontend/assets/message-circle-dashed-BdDre0I3.js +6 -0
  1124. langflow/frontend/assets/message-circle-heart-B5fqH2Ea.js +6 -0
  1125. langflow/frontend/assets/message-circle-more-ClEHjYzk.js +6 -0
  1126. langflow/frontend/assets/message-circle-off-C7AzXskG.js +6 -0
  1127. langflow/frontend/assets/message-circle-plus-B2OJNuto.js +6 -0
  1128. langflow/frontend/assets/message-circle-question-CWGNmHKr.js +6 -0
  1129. langflow/frontend/assets/message-circle-reply-BnAFz9rl.js +6 -0
  1130. langflow/frontend/assets/message-circle-warning-CahFMQVp.js +6 -0
  1131. langflow/frontend/assets/message-circle-x-5JbVa9lL.js +6 -0
  1132. langflow/frontend/assets/message-square-C6xSK-2j.js +6 -0
  1133. langflow/frontend/assets/message-square-code-CGKiMRHI.js +6 -0
  1134. langflow/frontend/assets/message-square-dashed-CbK9eVMH.js +6 -0
  1135. langflow/frontend/assets/message-square-diff-q8Uyq09Q.js +6 -0
  1136. langflow/frontend/assets/message-square-dot-kM-C8Mfs.js +6 -0
  1137. langflow/frontend/assets/message-square-heart-ZbYv2ZtM.js +6 -0
  1138. langflow/frontend/assets/message-square-lock-C9Wq8TKP.js +6 -0
  1139. langflow/frontend/assets/message-square-more-BT3K9Joi.js +6 -0
  1140. langflow/frontend/assets/message-square-off-BZxJGC3B.js +6 -0
  1141. langflow/frontend/assets/message-square-plus-ez6eCLVd.js +6 -0
  1142. langflow/frontend/assets/message-square-quote-Cu4UkKcF.js +6 -0
  1143. langflow/frontend/assets/message-square-reply-HRwPNXLs.js +6 -0
  1144. langflow/frontend/assets/message-square-share-2uAPTpWy.js +6 -0
  1145. langflow/frontend/assets/message-square-text-CQYagUpV.js +6 -0
  1146. langflow/frontend/assets/message-square-warning-C3sL19in.js +6 -0
  1147. langflow/frontend/assets/message-square-x-yu2A1LVG.js +6 -0
  1148. langflow/frontend/assets/messages-square-CMDkPpW_.js +6 -0
  1149. langflow/frontend/assets/mic-VLQv65RX.js +6 -0
  1150. langflow/frontend/assets/mic-off-B-O30mah.js +6 -0
  1151. langflow/frontend/assets/mic-vocal-GmsrSghW.js +6 -0
  1152. langflow/frontend/assets/microchip-D_G76KtC.js +6 -0
  1153. langflow/frontend/assets/microscope-Dm1fIYP_.js +6 -0
  1154. langflow/frontend/assets/microwave-h960Mbu_.js +6 -0
  1155. langflow/frontend/assets/milestone-xGjRXEwL.js +6 -0
  1156. langflow/frontend/assets/milk-CIBjXHQG.js +6 -0
  1157. langflow/frontend/assets/milk-off-C1kBCRv5.js +6 -0
  1158. langflow/frontend/assets/minimize-2-C8k1343e.js +6 -0
  1159. langflow/frontend/assets/minimize-Cmkw90l0.js +6 -0
  1160. langflow/frontend/assets/monitor-BefmTIPy.js +6 -0
  1161. langflow/frontend/assets/monitor-check-DLYKlr1x.js +6 -0
  1162. langflow/frontend/assets/monitor-cog-C3T0-eU9.js +6 -0
  1163. langflow/frontend/assets/monitor-dot-Crco8eDf.js +6 -0
  1164. langflow/frontend/assets/monitor-down-CHtSFWNJ.js +6 -0
  1165. langflow/frontend/assets/monitor-off-C9jMZZyo.js +6 -0
  1166. langflow/frontend/assets/monitor-pause-BEDTKa6v.js +6 -0
  1167. langflow/frontend/assets/monitor-play-DminJCVq.js +6 -0
  1168. langflow/frontend/assets/monitor-smartphone-G37NbNIb.js +6 -0
  1169. langflow/frontend/assets/monitor-speaker-DRT7dKW1.js +6 -0
  1170. langflow/frontend/assets/monitor-stop-BpL_DZJZ.js +6 -0
  1171. langflow/frontend/assets/monitor-up-WO8ZK5lk.js +6 -0
  1172. langflow/frontend/assets/monitor-x-BnImIiCg.js +6 -0
  1173. langflow/frontend/assets/moon-DA9I1SYN.js +6 -0
  1174. langflow/frontend/assets/moon-star-DBZ_25GQ.js +6 -0
  1175. langflow/frontend/assets/mountain-CssPGjkt.js +6 -0
  1176. langflow/frontend/assets/mountain-snow-CR640LwG.js +6 -0
  1177. langflow/frontend/assets/mouse-CBawZu-0.js +6 -0
  1178. langflow/frontend/assets/mouse-off-XO-FliGz.js +6 -0
  1179. langflow/frontend/assets/mouse-pointer-2-DatF0JDu.js +6 -0
  1180. langflow/frontend/assets/mouse-pointer-CmhqM_K1.js +6 -0
  1181. langflow/frontend/assets/mouse-pointer-ban-DBulTJvZ.js +6 -0
  1182. langflow/frontend/assets/mouse-pointer-click-DZR_eV_D.js +6 -0
  1183. langflow/frontend/assets/move-3d-BhDB4CHt.js +6 -0
  1184. langflow/frontend/assets/move-BPiiHmwr.js +6 -0
  1185. langflow/frontend/assets/move-diagonal-2-CSb_836w.js +6 -0
  1186. langflow/frontend/assets/move-diagonal-mUQ_mvuD.js +6 -0
  1187. langflow/frontend/assets/move-down-ecYJjrjT.js +6 -0
  1188. langflow/frontend/assets/move-down-left-CkzmP8iL.js +6 -0
  1189. langflow/frontend/assets/move-down-right-BfcY_bNp.js +6 -0
  1190. langflow/frontend/assets/move-horizontal-Zf6JR26T.js +6 -0
  1191. langflow/frontend/assets/move-left-DFy0Je0e.js +6 -0
  1192. langflow/frontend/assets/move-right-J6lvmibn.js +6 -0
  1193. langflow/frontend/assets/move-up-BrRRwhJd.js +6 -0
  1194. langflow/frontend/assets/move-up-left-Vp8vw9j_.js +6 -0
  1195. langflow/frontend/assets/move-up-right-k7oMU8Li.js +6 -0
  1196. langflow/frontend/assets/move-vertical-CJEKzfIC.js +6 -0
  1197. langflow/frontend/assets/music-2-BvagA_Oq.js +6 -0
  1198. langflow/frontend/assets/music-3-4vaM2prH.js +6 -0
  1199. langflow/frontend/assets/music-4-n_hOKm4b.js +6 -0
  1200. langflow/frontend/assets/music-BbgzsmBt.js +6 -0
  1201. langflow/frontend/assets/navigation-2-3Uo7-c2E.js +6 -0
  1202. langflow/frontend/assets/navigation-2-off-aiwHSLna.js +6 -0
  1203. langflow/frontend/assets/navigation-irkyIXIt.js +6 -0
  1204. langflow/frontend/assets/navigation-off-nliSEETI.js +6 -0
  1205. langflow/frontend/assets/network-9gqUj-w6.js +6 -0
  1206. langflow/frontend/assets/newspaper-C4O8a7Nv.js +6 -0
  1207. langflow/frontend/assets/nfc-C5J_NaIV.js +6 -0
  1208. langflow/frontend/assets/non-binary-pq7uslP8.js +6 -0
  1209. langflow/frontend/assets/notebook-B5pRoXY4.js +6 -0
  1210. langflow/frontend/assets/notebook-pen-uqwn-XWg.js +6 -0
  1211. langflow/frontend/assets/notebook-tabs-DRGGsjbu.js +6 -0
  1212. langflow/frontend/assets/notebook-text-ERQtCYDw.js +6 -0
  1213. langflow/frontend/assets/notepad-text-CFB5ljMl.js +6 -0
  1214. langflow/frontend/assets/notepad-text-dashed-CEDUjwd8.js +6 -0
  1215. langflow/frontend/assets/nut-off-0eyVPQtD.js +6 -0
  1216. langflow/frontend/assets/nut-qXcdNyKr.js +6 -0
  1217. langflow/frontend/assets/octagon-DXReEL1w.js +6 -0
  1218. langflow/frontend/assets/octagon-alert-9LagwnJ7.js +6 -0
  1219. langflow/frontend/assets/octagon-minus-D_6IsBKV.js +6 -0
  1220. langflow/frontend/assets/octagon-pause-C5o-rXIC.js +6 -0
  1221. langflow/frontend/assets/octagon-x-BHo-2k3p.js +6 -0
  1222. langflow/frontend/assets/omega-B7K8IIiT.js +6 -0
  1223. langflow/frontend/assets/option-Cwvqd-6M.js +6 -0
  1224. langflow/frontend/assets/orbit-BaPY0TZe.js +6 -0
  1225. langflow/frontend/assets/origami-CDMepbZX.js +6 -0
  1226. langflow/frontend/assets/package-2-DX5gQcnt.js +6 -0
  1227. langflow/frontend/assets/package-B4i-sTpB.js +6 -0
  1228. langflow/frontend/assets/package-check-rL9_tyQ4.js +6 -0
  1229. langflow/frontend/assets/package-minus-Bd6r1UHc.js +6 -0
  1230. langflow/frontend/assets/package-open-kRRhzupl.js +6 -0
  1231. langflow/frontend/assets/package-plus-CSEMKW5y.js +6 -0
  1232. langflow/frontend/assets/package-search-CrD5AZoH.js +6 -0
  1233. langflow/frontend/assets/package-x-TH_1HdB0.js +6 -0
  1234. langflow/frontend/assets/paint-bucket-D8SQd-HA.js +6 -0
  1235. langflow/frontend/assets/paint-roller-DaEB2tPq.js +6 -0
  1236. langflow/frontend/assets/paintbrush-CjMQyHlq.js +6 -0
  1237. langflow/frontend/assets/paintbrush-vertical-Bet3bz9e.js +6 -0
  1238. langflow/frontend/assets/palette-CORkBB2f.js +6 -0
  1239. langflow/frontend/assets/panel-bottom-C4GOPcrG.js +6 -0
  1240. langflow/frontend/assets/panel-bottom-close-CNglo2B6.js +6 -0
  1241. langflow/frontend/assets/panel-bottom-dashed-BmaQQjRl.js +6 -0
  1242. langflow/frontend/assets/panel-bottom-open-By3qS4Hr.js +6 -0
  1243. langflow/frontend/assets/panel-left-close-Ds--fhBX.js +6 -0
  1244. langflow/frontend/assets/panel-left-dashed-waWjiqPD.js +6 -0
  1245. langflow/frontend/assets/panel-left-open-Bf47qukx.js +6 -0
  1246. langflow/frontend/assets/panel-right-DCXAyE2G.js +6 -0
  1247. langflow/frontend/assets/panel-right-close-B5eI_syN.js +6 -0
  1248. langflow/frontend/assets/panel-right-dashed-Dx29u5qg.js +6 -0
  1249. langflow/frontend/assets/panel-right-open-Baf5qsVX.js +6 -0
  1250. langflow/frontend/assets/panel-top-B5wq-Fai.js +6 -0
  1251. langflow/frontend/assets/panel-top-close-C27ZC8aI.js +6 -0
  1252. langflow/frontend/assets/panel-top-dashed-BVxcVRMr.js +6 -0
  1253. langflow/frontend/assets/panel-top-open-qI_eD44t.js +6 -0
  1254. langflow/frontend/assets/panels-left-bottom-G1rWvJij.js +6 -0
  1255. langflow/frontend/assets/panels-right-bottom-Ch5zPDEZ.js +6 -0
  1256. langflow/frontend/assets/panels-top-left-Bt11sbuD.js +6 -0
  1257. langflow/frontend/assets/paperclip-p1U01oOU.js +6 -0
  1258. langflow/frontend/assets/parentheses-Ucl8VF4v.js +6 -0
  1259. langflow/frontend/assets/parking-meter-D-6zZC9G.js +6 -0
  1260. langflow/frontend/assets/party-popper-B0rUdcj4.js +6 -0
  1261. langflow/frontend/assets/pause-CYIMJ6eJ.js +6 -0
  1262. langflow/frontend/assets/paw-print-CWghVeNl.js +6 -0
  1263. langflow/frontend/assets/pc-case-B0Yhk0ek.js +6 -0
  1264. langflow/frontend/assets/pen-BOe4y69p.js +6 -0
  1265. langflow/frontend/assets/pen-line-EIqDFyj7.js +6 -0
  1266. langflow/frontend/assets/pen-off-CrEJ7RIh.js +6 -0
  1267. langflow/frontend/assets/pen-tool-CG62fy_v.js +6 -0
  1268. langflow/frontend/assets/pencil-line-BYNW6-cX.js +6 -0
  1269. langflow/frontend/assets/pencil-off-BPFPM_na.js +6 -0
  1270. langflow/frontend/assets/pencil-ruler-Bg4OOveo.js +6 -0
  1271. langflow/frontend/assets/pencil-y8VyKXDe.js +6 -0
  1272. langflow/frontend/assets/pentagon-eSc-FhDK.js +6 -0
  1273. langflow/frontend/assets/percent-PNLsGinj.js +6 -0
  1274. langflow/frontend/assets/person-standing-CmyVROg4.js +6 -0
  1275. langflow/frontend/assets/philippine-peso-DKFGI0PU.js +6 -0
  1276. langflow/frontend/assets/phone-Dp6GXQI0.js +6 -0
  1277. langflow/frontend/assets/phone-call-BXiSzrCT.js +6 -0
  1278. langflow/frontend/assets/phone-forwarded-B23dg_H-.js +6 -0
  1279. langflow/frontend/assets/phone-incoming-CLQ8IZ0y.js +6 -0
  1280. langflow/frontend/assets/phone-missed-CCSuFDLI.js +6 -0
  1281. langflow/frontend/assets/phone-off-DSBT8LtY.js +6 -0
  1282. langflow/frontend/assets/phone-outgoing-dcmhGO87.js +6 -0
  1283. langflow/frontend/assets/pi-CAXOCW1h.js +6 -0
  1284. langflow/frontend/assets/piano-DfcvG_ob.js +6 -0
  1285. langflow/frontend/assets/pickaxe-nd4_MGt9.js +6 -0
  1286. langflow/frontend/assets/picture-in-picture-2-BOeUxAlp.js +6 -0
  1287. langflow/frontend/assets/picture-in-picture-BoR1YGcs.js +6 -0
  1288. langflow/frontend/assets/piggy-bank-Dgs8lf9z.js +6 -0
  1289. langflow/frontend/assets/pilcrow-BjWTG-ve.js +6 -0
  1290. langflow/frontend/assets/pilcrow-left-fQ4Ys-xg.js +6 -0
  1291. langflow/frontend/assets/pilcrow-right-CrXUqhhH.js +6 -0
  1292. langflow/frontend/assets/pill-Pr4Um9-Q.js +6 -0
  1293. langflow/frontend/assets/pill-bottle-BRL36rfg.js +6 -0
  1294. langflow/frontend/assets/pin-CfZK1Zlm.js +6 -0
  1295. langflow/frontend/assets/pin-off-De4kBCNa.js +6 -0
  1296. langflow/frontend/assets/pipette-ZlHGMIPy.js +6 -0
  1297. langflow/frontend/assets/pizza-lVQj7K3x.js +6 -0
  1298. langflow/frontend/assets/plane-_JNwK-d3.js +6 -0
  1299. langflow/frontend/assets/plane-landing-CdgOOK35.js +6 -0
  1300. langflow/frontend/assets/plane-takeoff-DkAohELl.js +6 -0
  1301. langflow/frontend/assets/play-BYM7lBf5.js +6 -0
  1302. langflow/frontend/assets/plug-2-C4jX9_w5.js +6 -0
  1303. langflow/frontend/assets/plug-BukZG44Y.js +6 -0
  1304. langflow/frontend/assets/plug-zap-CORwwxMQ.js +6 -0
  1305. langflow/frontend/assets/pocket-BHWkQoAk.js +6 -0
  1306. langflow/frontend/assets/pocket-knife-DRyPwgeP.js +6 -0
  1307. langflow/frontend/assets/podcast-m8wdQrwD.js +6 -0
  1308. langflow/frontend/assets/pointer-QFDN5kFZ.js +6 -0
  1309. langflow/frontend/assets/pointer-off-rtSfeNPe.js +6 -0
  1310. langflow/frontend/assets/popcorn-BjcfTXPh.js +6 -0
  1311. langflow/frontend/assets/popsicle-cOy72NCv.js +6 -0
  1312. langflow/frontend/assets/pound-sterling-TW2x00gy.js +6 -0
  1313. langflow/frontend/assets/power-_k9xwmC1.js +6 -0
  1314. langflow/frontend/assets/power-off-DMgcNJ8w.js +6 -0
  1315. langflow/frontend/assets/presentation-CydgTVda.js +6 -0
  1316. langflow/frontend/assets/printer-B2Tp2DQ1.js +6 -0
  1317. langflow/frontend/assets/printer-check-DYE9k_uK.js +6 -0
  1318. langflow/frontend/assets/projector-B6ELhI1U.js +6 -0
  1319. langflow/frontend/assets/proportions-BioP67DD.js +6 -0
  1320. langflow/frontend/assets/puzzle-Dnn0u3xd.js +6 -0
  1321. langflow/frontend/assets/pyramid-BVQ0OfTp.js +6 -0
  1322. langflow/frontend/assets/qr-code-C9OzJf_X.js +6 -0
  1323. langflow/frontend/assets/quote-CcCUzU3i.js +6 -0
  1324. langflow/frontend/assets/rabbit-CWtBmPW0.js +6 -0
  1325. langflow/frontend/assets/radar-DJkmx8dS.js +6 -0
  1326. langflow/frontend/assets/radiation-B36O45b8.js +6 -0
  1327. langflow/frontend/assets/radical-CxEbEpfn.js +6 -0
  1328. langflow/frontend/assets/radio-Bj94lS4M.js +6 -0
  1329. langflow/frontend/assets/radio-receiver-MG3R_JLP.js +6 -0
  1330. langflow/frontend/assets/radio-tower-DtH9vPkS.js +6 -0
  1331. langflow/frontend/assets/radius-45hWVPNS.js +6 -0
  1332. langflow/frontend/assets/rail-symbol-BrWnLVLv.js +6 -0
  1333. langflow/frontend/assets/rainbow-BWH9LLk-.js +6 -0
  1334. langflow/frontend/assets/rat-Dqn7ft0N.js +6 -0
  1335. langflow/frontend/assets/ratio-DuC227_O.js +6 -0
  1336. langflow/frontend/assets/receipt-Bf94UpG8.js +6 -0
  1337. langflow/frontend/assets/receipt-cent-Y9wJv4JJ.js +6 -0
  1338. langflow/frontend/assets/receipt-euro-GPu31UKy.js +6 -0
  1339. langflow/frontend/assets/receipt-indian-rupee-DaeSEI8G.js +6 -0
  1340. langflow/frontend/assets/receipt-japanese-yen-CV4KDO6B.js +6 -0
  1341. langflow/frontend/assets/receipt-pound-sterling-Dt2nVgyo.js +6 -0
  1342. langflow/frontend/assets/receipt-russian-ruble-B0AffP7L.js +6 -0
  1343. langflow/frontend/assets/receipt-swiss-franc-BSJ1JbS7.js +6 -0
  1344. langflow/frontend/assets/receipt-text-B4GmolER.js +6 -0
  1345. langflow/frontend/assets/rectangle-ellipsis-DXopAi3E.js +6 -0
  1346. langflow/frontend/assets/rectangle-goggles-utWG4_0o.js +6 -0
  1347. langflow/frontend/assets/rectangle-horizontal-DAjdpOo-.js +6 -0
  1348. langflow/frontend/assets/rectangle-vertical-Cxb1k66a.js +6 -0
  1349. langflow/frontend/assets/recycle-DUhMcHeJ.js +6 -0
  1350. langflow/frontend/assets/redo-2-JkEIaU5A.js +6 -0
  1351. langflow/frontend/assets/redo-Nb2o_fVS.js +6 -0
  1352. langflow/frontend/assets/redo-dot-B402Sbdh.js +6 -0
  1353. langflow/frontend/assets/refresh-ccw-bv40AbPo.js +6 -0
  1354. langflow/frontend/assets/refresh-ccw-dot-CpLe9EX9.js +6 -0
  1355. langflow/frontend/assets/refresh-cw-CntfliZt.js +6 -0
  1356. langflow/frontend/assets/refresh-cw-off-BBxE02op.js +6 -0
  1357. langflow/frontend/assets/refrigerator-CMiAj4CW.js +6 -0
  1358. langflow/frontend/assets/regex-CVMJaUkp.js +6 -0
  1359. langflow/frontend/assets/remove-formatting-C5kDIMR1.js +6 -0
  1360. langflow/frontend/assets/repeat-1-D6vyjASu.js +6 -0
  1361. langflow/frontend/assets/repeat-2-CPWCkkad.js +6 -0
  1362. langflow/frontend/assets/repeat-Cs8bMh8E.js +6 -0
  1363. langflow/frontend/assets/replace-all-CpABo_lV.js +6 -0
  1364. langflow/frontend/assets/replace-ehbZAo8S.js +6 -0
  1365. langflow/frontend/assets/reply-DlzYgOpt.js +6 -0
  1366. langflow/frontend/assets/reply-all-CRUmk8z2.js +6 -0
  1367. langflow/frontend/assets/rewind-5SUHeRRk.js +6 -0
  1368. langflow/frontend/assets/ribbon-B9JK9qe8.js +6 -0
  1369. langflow/frontend/assets/rocket-Bl1mxGyq.js +6 -0
  1370. langflow/frontend/assets/rocking-chair-xuDG6Bu4.js +6 -0
  1371. langflow/frontend/assets/roller-coaster-DZCge4fV.js +6 -0
  1372. langflow/frontend/assets/rotate-3d-DUjfcFOj.js +6 -0
  1373. langflow/frontend/assets/rotate-ccw-C_Rrm_Eq.js +6 -0
  1374. langflow/frontend/assets/rotate-ccw-key-BYgIqTFY.js +6 -0
  1375. langflow/frontend/assets/rotate-ccw-square-BNcVAXr3.js +6 -0
  1376. langflow/frontend/assets/rotate-cw-BymeBpfd.js +6 -0
  1377. langflow/frontend/assets/rotate-cw-square-BT9MiAOI.js +6 -0
  1378. langflow/frontend/assets/route-C6S5WzGF.js +6 -0
  1379. langflow/frontend/assets/route-off-BN7G8szR.js +6 -0
  1380. langflow/frontend/assets/router-K0nMIDSx.js +6 -0
  1381. langflow/frontend/assets/rows-2-C9fIv2Lu.js +6 -0
  1382. langflow/frontend/assets/rows-3-B7qvJUTL.js +6 -0
  1383. langflow/frontend/assets/rows-4-B2EQ9MXK.js +6 -0
  1384. langflow/frontend/assets/rss-DVpsYU3H.js +6 -0
  1385. langflow/frontend/assets/ruler-BxeSGWOr.js +6 -0
  1386. langflow/frontend/assets/ruler-dimension-line-Ciuxjet9.js +6 -0
  1387. langflow/frontend/assets/russian-ruble-BB_f3XI2.js +6 -0
  1388. langflow/frontend/assets/sailboat-DhsQbIpV.js +6 -0
  1389. langflow/frontend/assets/salad-Bl5ayweY.js +6 -0
  1390. langflow/frontend/assets/sandwich-DuXzIVtJ.js +6 -0
  1391. langflow/frontend/assets/satellite-CHjuGaAr.js +6 -0
  1392. langflow/frontend/assets/satellite-dish-BUz8hCOf.js +6 -0
  1393. langflow/frontend/assets/saudi-riyal--zTmMgWh.js +6 -0
  1394. langflow/frontend/assets/save-all-C9_juMma.js +6 -0
  1395. langflow/frontend/assets/save-off-BJDA7Swa.js +6 -0
  1396. langflow/frontend/assets/save-u6dUzXZF.js +6 -0
  1397. langflow/frontend/assets/scale-3d-3wTvDlhi.js +6 -0
  1398. langflow/frontend/assets/scale-AxIcP8pU.js +6 -0
  1399. langflow/frontend/assets/scaling-Bx5PUS-M.js +6 -0
  1400. langflow/frontend/assets/scan--_1rGcf6.js +6 -0
  1401. langflow/frontend/assets/scan-barcode-LE_nGU4E.js +6 -0
  1402. langflow/frontend/assets/scan-eye-6MlNrH6i.js +6 -0
  1403. langflow/frontend/assets/scan-face-DlB9r0q7.js +6 -0
  1404. langflow/frontend/assets/scan-heart-BEekTVwM.js +6 -0
  1405. langflow/frontend/assets/scan-line-D4WPcOu4.js +6 -0
  1406. langflow/frontend/assets/scan-qr-code-BIjBg1fs.js +6 -0
  1407. langflow/frontend/assets/scan-search-CUJ5QUWM.js +6 -0
  1408. langflow/frontend/assets/scan-text-BXpArFGZ.js +6 -0
  1409. langflow/frontend/assets/school-DyoHAWeZ.js +6 -0
  1410. langflow/frontend/assets/scissors-P_JSyeDi.js +6 -0
  1411. langflow/frontend/assets/scissors-line-dashed-D-iMXDSz.js +6 -0
  1412. langflow/frontend/assets/screen-share-C-QH25Y8.js +6 -0
  1413. langflow/frontend/assets/screen-share-off-B7juKMAI.js +6 -0
  1414. langflow/frontend/assets/scroll-DZZAqxFX.js +6 -0
  1415. langflow/frontend/assets/scroll-text-CkBg5T14.js +6 -0
  1416. langflow/frontend/assets/search-check-CAZiSWyN.js +6 -0
  1417. langflow/frontend/assets/search-code-DpVPFbYc.js +6 -0
  1418. langflow/frontend/assets/search-slash-DMP2Aaf2.js +6 -0
  1419. langflow/frontend/assets/search-x-Hs_x9oAu.js +6 -0
  1420. langflow/frontend/assets/section-v0yphlTY.js +6 -0
  1421. langflow/frontend/assets/send-DRhWQDq7.js +6 -0
  1422. langflow/frontend/assets/send-horizontal-BrOGexs6.js +6 -0
  1423. langflow/frontend/assets/send-to-back-CrckLjkf.js +6 -0
  1424. langflow/frontend/assets/separator-horizontal-Dr_fD4uy.js +6 -0
  1425. langflow/frontend/assets/separator-vertical-CfXv2THC.js +6 -0
  1426. langflow/frontend/assets/server-cog-BDs4UStJ.js +6 -0
  1427. langflow/frontend/assets/server-crash-DCjGt-db.js +6 -0
  1428. langflow/frontend/assets/server-off-C1S_w1fq.js +6 -0
  1429. langflow/frontend/assets/server-xJw6BAPu.js +6 -0
  1430. langflow/frontend/assets/settings-2-3_h2yVgn.js +6 -0
  1431. langflow/frontend/assets/settings-U9e-7JSB.js +6 -0
  1432. langflow/frontend/assets/shapes-DFBL7M-u.js +6 -0
  1433. langflow/frontend/assets/share-2-B2e09xjW.js +6 -0
  1434. langflow/frontend/assets/share-9yUm1xGN.js +6 -0
  1435. langflow/frontend/assets/sheet-n9Htex2-.js +6 -0
  1436. langflow/frontend/assets/shell-C0aEUTfi.js +6 -0
  1437. langflow/frontend/assets/shield-D5DcABQN.js +6 -0
  1438. langflow/frontend/assets/shield-alert-D1m4Tgts.js +6 -0
  1439. langflow/frontend/assets/shield-ban-DiVXqNiI.js +6 -0
  1440. langflow/frontend/assets/shield-check-D_O9v7LF.js +6 -0
  1441. langflow/frontend/assets/shield-ellipsis-BEZSwpEg.js +6 -0
  1442. langflow/frontend/assets/shield-half-Cho99G7W.js +6 -0
  1443. langflow/frontend/assets/shield-minus-BuHrbXm5.js +6 -0
  1444. langflow/frontend/assets/shield-off-Dbfg0qZu.js +6 -0
  1445. langflow/frontend/assets/shield-plus-B3Ua1mVw.js +6 -0
  1446. langflow/frontend/assets/shield-question-vuuOi8FA.js +6 -0
  1447. langflow/frontend/assets/shield-user-gfL4c_sp.js +6 -0
  1448. langflow/frontend/assets/shield-x-DUGov3wo.js +6 -0
  1449. langflow/frontend/assets/ship-CzauyqDt.js +6 -0
  1450. langflow/frontend/assets/ship-wheel-BD10WX3D.js +6 -0
  1451. langflow/frontend/assets/shirt-D6bG36pR.js +6 -0
  1452. langflow/frontend/assets/shopping-bag-BxOe32F4.js +6 -0
  1453. langflow/frontend/assets/shopping-basket-D_M5yWkW.js +6 -0
  1454. langflow/frontend/assets/shopping-cart-cTWTvhjX.js +6 -0
  1455. langflow/frontend/assets/shovel-CstjfZbJ.js +6 -0
  1456. langflow/frontend/assets/shower-head--wcX2RkG.js +6 -0
  1457. langflow/frontend/assets/shredder-Dnq_gKjb.js +6 -0
  1458. langflow/frontend/assets/shrimp-BZCu9nAL.js +6 -0
  1459. langflow/frontend/assets/shrink-D-oyLenr.js +6 -0
  1460. langflow/frontend/assets/shrub-zYnLfdKO.js +6 -0
  1461. langflow/frontend/assets/shuffle-CSOOlXR7.js +6 -0
  1462. langflow/frontend/assets/sigma-Baf8eiiJ.js +6 -0
  1463. langflow/frontend/assets/signal-D6QxROgM.js +6 -0
  1464. langflow/frontend/assets/signal-high-Dy9kGN5j.js +6 -0
  1465. langflow/frontend/assets/signal-low-nUlLCi_F.js +6 -0
  1466. langflow/frontend/assets/signal-medium-Ca-PwNdt.js +6 -0
  1467. langflow/frontend/assets/signal-zero-DsF6ihB7.js +6 -0
  1468. langflow/frontend/assets/signature-CuFMGyKM.js +6 -0
  1469. langflow/frontend/assets/signpost-B_K242Vj.js +6 -0
  1470. langflow/frontend/assets/signpost-big-DqnGctyL.js +6 -0
  1471. langflow/frontend/assets/siren-BIXlZkZY.js +6 -0
  1472. langflow/frontend/assets/skip-back-BNIf4333.js +6 -0
  1473. langflow/frontend/assets/skip-forward-Df3a8DYc.js +6 -0
  1474. langflow/frontend/assets/skull-DqFoWSSO.js +6 -0
  1475. langflow/frontend/assets/slack-D3TmmD-j.js +6 -0
  1476. langflow/frontend/assets/slash-DIBkoUw_.js +6 -0
  1477. langflow/frontend/assets/slice-D7eKpJ77.js +6 -0
  1478. langflow/frontend/assets/sliders-horizontal-CGrr6ZqL.js +6 -0
  1479. langflow/frontend/assets/sliders-vertical-DiXvW3sd.js +6 -0
  1480. langflow/frontend/assets/smartphone-DkyeiBsS.js +6 -0
  1481. langflow/frontend/assets/smartphone-charging-wQic5NW6.js +6 -0
  1482. langflow/frontend/assets/smartphone-nfc-DYtneMYc.js +6 -0
  1483. langflow/frontend/assets/smile-BNZF4CuQ.js +6 -0
  1484. langflow/frontend/assets/smile-plus-BJ6-32AR.js +6 -0
  1485. langflow/frontend/assets/snail-OnymkEIK.js +6 -0
  1486. langflow/frontend/assets/snowflake-eg3S5uni.js +6 -0
  1487. langflow/frontend/assets/sofa-BPe1KVbi.js +6 -0
  1488. langflow/frontend/assets/soup-D2dL0yJG.js +6 -0
  1489. langflow/frontend/assets/space-CplgpqV4.js +6 -0
  1490. langflow/frontend/assets/spade-GX5v_Rvl.js +6 -0
  1491. langflow/frontend/assets/sparkle-D5gBLKya.js +6 -0
  1492. langflow/frontend/assets/sparkles-BEHfAOo9.js +6 -0
  1493. langflow/frontend/assets/speaker-8G4QIkS9.js +6 -0
  1494. langflow/frontend/assets/speech-Dt2aVTN9.js +6 -0
  1495. langflow/frontend/assets/spell-check-2-C9KvvbSw.js +6 -0
  1496. langflow/frontend/assets/spell-check-BCoHRDy3.js +6 -0
  1497. langflow/frontend/assets/spline-pT6kyXVw.js +6 -0
  1498. langflow/frontend/assets/spline-pointer-DuCr2mFS.js +6 -0
  1499. langflow/frontend/assets/split-BzhAVwex.js +6 -0
  1500. langflow/frontend/assets/spray-can-BFOzSsQz.js +6 -0
  1501. langflow/frontend/assets/sprout-BPERAV31.js +6 -0
  1502. langflow/frontend/assets/square-Dwso3LLe.js +6 -0
  1503. langflow/frontend/assets/square-activity-BfKT1ohZ.js +6 -0
  1504. langflow/frontend/assets/square-arrow-down-CRg6fE8r.js +6 -0
  1505. langflow/frontend/assets/square-arrow-down-left-Uq50GdMZ.js +6 -0
  1506. langflow/frontend/assets/square-arrow-down-right-B9r_AqpS.js +6 -0
  1507. langflow/frontend/assets/square-arrow-left-CyGZKkUg.js +6 -0
  1508. langflow/frontend/assets/square-arrow-out-down-left-DyVElWP5.js +6 -0
  1509. langflow/frontend/assets/square-arrow-out-down-right-CzD-PJCL.js +6 -0
  1510. langflow/frontend/assets/square-arrow-out-up-left-B37joCQn.js +6 -0
  1511. langflow/frontend/assets/square-arrow-out-up-right-C1oUSySZ.js +6 -0
  1512. langflow/frontend/assets/square-arrow-right-DVeo3cgL.js +6 -0
  1513. langflow/frontend/assets/square-arrow-up-DD6ZgJjQ.js +6 -0
  1514. langflow/frontend/assets/square-arrow-up-left-CM16lTyf.js +6 -0
  1515. langflow/frontend/assets/square-arrow-up-right-C_Puq2Ex.js +6 -0
  1516. langflow/frontend/assets/square-asterisk-Da5iHbhJ.js +6 -0
  1517. langflow/frontend/assets/square-bottom-dashed-scissors-DPzhWsmT.js +6 -0
  1518. langflow/frontend/assets/square-chart-gantt-We-6_hzq.js +6 -0
  1519. langflow/frontend/assets/square-check-CY3rdbSw.js +6 -0
  1520. langflow/frontend/assets/square-check-big-BxCzelPF.js +6 -0
  1521. langflow/frontend/assets/square-chevron-down-gDNNFMC2.js +6 -0
  1522. langflow/frontend/assets/square-chevron-left-D9CB6EUl.js +6 -0
  1523. langflow/frontend/assets/square-chevron-right-B_T8aTrO.js +6 -0
  1524. langflow/frontend/assets/square-chevron-up-D64QYRcs.js +6 -0
  1525. langflow/frontend/assets/square-code-B3Xp9Y1_.js +6 -0
  1526. langflow/frontend/assets/square-dashed-DFY8t-v9.js +6 -0
  1527. langflow/frontend/assets/square-dashed-bottom-BApSaHVd.js +6 -0
  1528. langflow/frontend/assets/square-dashed-bottom-code-dWerbw89.js +6 -0
  1529. langflow/frontend/assets/square-dashed-kanban-CVtRgZ89.js +6 -0
  1530. langflow/frontend/assets/square-dashed-mouse-pointer-CK8LB_I8.js +6 -0
  1531. langflow/frontend/assets/square-divide-CKNuwO-p.js +6 -0
  1532. langflow/frontend/assets/square-dot-B07zWKHD.js +6 -0
  1533. langflow/frontend/assets/square-equal-D8DbSRuU.js +6 -0
  1534. langflow/frontend/assets/square-function-CfSMB0pG.js +6 -0
  1535. langflow/frontend/assets/square-kanban-CMgaRcAJ.js +6 -0
  1536. langflow/frontend/assets/square-library-DV_V798k.js +6 -0
  1537. langflow/frontend/assets/square-m-vI0XXtyS.js +6 -0
  1538. langflow/frontend/assets/square-menu-BYg42PGg.js +6 -0
  1539. langflow/frontend/assets/square-minus-S6YcLW3Y.js +6 -0
  1540. langflow/frontend/assets/square-mouse-pointer-TooGjW2R.js +6 -0
  1541. langflow/frontend/assets/square-parking-MRFz2LFm.js +6 -0
  1542. langflow/frontend/assets/square-parking-off-C1_Jc3KY.js +6 -0
  1543. langflow/frontend/assets/square-pen-CDBYcffV.js +6 -0
  1544. langflow/frontend/assets/square-percent-DhFI846p.js +6 -0
  1545. langflow/frontend/assets/square-pi-CA3PttNr.js +6 -0
  1546. langflow/frontend/assets/square-pilcrow-WYhshN5v.js +6 -0
  1547. langflow/frontend/assets/square-play-D4USrG1G.js +6 -0
  1548. langflow/frontend/assets/square-plus-DUpS26Cq.js +6 -0
  1549. langflow/frontend/assets/square-power-Csh1xI0n.js +6 -0
  1550. langflow/frontend/assets/square-radical-CrhEVFp1.js +6 -0
  1551. langflow/frontend/assets/square-round-corner-CjvhHyl2.js +6 -0
  1552. langflow/frontend/assets/square-scissors-CzCHxKRn.js +6 -0
  1553. langflow/frontend/assets/square-sigma-DhEPOg9V.js +6 -0
  1554. langflow/frontend/assets/square-slash-mUSDIdpv.js +6 -0
  1555. langflow/frontend/assets/square-split-horizontal-Bzd4Mf7D.js +6 -0
  1556. langflow/frontend/assets/square-split-vertical-kHjC7Nvn.js +6 -0
  1557. langflow/frontend/assets/square-square-DN_DVL5R.js +6 -0
  1558. langflow/frontend/assets/square-stack-Dyed8N93.js +6 -0
  1559. langflow/frontend/assets/square-terminal-Dzc8r2aF.js +6 -0
  1560. langflow/frontend/assets/square-user-B8hTVJ_4.js +6 -0
  1561. langflow/frontend/assets/square-user-round-CJkVABHV.js +6 -0
  1562. langflow/frontend/assets/square-x-9IP-mC19.js +6 -0
  1563. langflow/frontend/assets/squares-exclude-92-k-Xbc.js +6 -0
  1564. langflow/frontend/assets/squares-intersect-BcKa-yXO.js +6 -0
  1565. langflow/frontend/assets/squares-subtract-BstvugcN.js +6 -0
  1566. langflow/frontend/assets/squares-unite-CrhVkBtG.js +6 -0
  1567. langflow/frontend/assets/squircle-Bxgk3W2M.js +6 -0
  1568. langflow/frontend/assets/squirrel-CgptaumE.js +6 -0
  1569. langflow/frontend/assets/stamp-jC9rLSt-.js +6 -0
  1570. langflow/frontend/assets/star-1M_SJT4S.js +6 -0
  1571. langflow/frontend/assets/star-half-CeXTDyUG.js +6 -0
  1572. langflow/frontend/assets/star-off-PEH005G_.js +6 -0
  1573. langflow/frontend/assets/step-back-khGRFPgA.js +6 -0
  1574. langflow/frontend/assets/step-forward-Dt-6kPtG.js +6 -0
  1575. langflow/frontend/assets/stethoscope-DRuhRxc0.js +6 -0
  1576. langflow/frontend/assets/sticker-26l-6bgN.js +6 -0
  1577. langflow/frontend/assets/sticky-note-Cr-kBtRk.js +6 -0
  1578. langflow/frontend/assets/store-BChq7UPX.js +6 -0
  1579. langflow/frontend/assets/stretch-horizontal-BgCSl_VF.js +6 -0
  1580. langflow/frontend/assets/stretch-vertical-DxQe-N0R.js +6 -0
  1581. langflow/frontend/assets/strikethrough-DHi5CFBg.js +6 -0
  1582. langflow/frontend/assets/subscript-CzSaOLLm.js +6 -0
  1583. langflow/frontend/assets/sun-dim-D_EpQSZ1.js +6 -0
  1584. langflow/frontend/assets/sun-medium-551blOr4.js +6 -0
  1585. langflow/frontend/assets/sun-moon-Da5_hqjE.js +6 -0
  1586. langflow/frontend/assets/sun-nhFZFpen.js +6 -0
  1587. langflow/frontend/assets/sun-snow-DyxaEUDz.js +6 -0
  1588. langflow/frontend/assets/sunrise-C9tonCrS.js +6 -0
  1589. langflow/frontend/assets/sunset-CD06Mbmq.js +6 -0
  1590. langflow/frontend/assets/superscript-DmOIONqx.js +6 -0
  1591. langflow/frontend/assets/swatch-book-BwQAsHlS.js +6 -0
  1592. langflow/frontend/assets/swiss-franc-3JMcrDwF.js +6 -0
  1593. langflow/frontend/assets/switch-camera-DNpPZ4fJ.js +6 -0
  1594. langflow/frontend/assets/sword-DijWtHzr.js +6 -0
  1595. langflow/frontend/assets/swords-CgsF-qwX.js +6 -0
  1596. langflow/frontend/assets/syringe-C8nadHKx.js +6 -0
  1597. langflow/frontend/assets/table-2-G-ZVuKFR.js +6 -0
  1598. langflow/frontend/assets/table-cells-merge-B75t0b4x.js +6 -0
  1599. langflow/frontend/assets/table-cells-split-B9twAhtb.js +6 -0
  1600. langflow/frontend/assets/table-columns-split-ZjjZDVhD.js +6 -0
  1601. langflow/frontend/assets/table-of-contents-DKeGUmAu.js +6 -0
  1602. langflow/frontend/assets/table-properties-BT4JYR4h.js +6 -0
  1603. langflow/frontend/assets/table-rows-split-CXHfa0L6.js +6 -0
  1604. langflow/frontend/assets/table-uUp2g9l8.js +6 -0
  1605. langflow/frontend/assets/tablet-C66DQoUW.js +6 -0
  1606. langflow/frontend/assets/tablet-smartphone-3SienPpa.js +6 -0
  1607. langflow/frontend/assets/tablets-CionxNtg.js +6 -0
  1608. langflow/frontend/assets/tag-BFz7h6j0.js +6 -0
  1609. langflow/frontend/assets/tags-Bn3Byi5c.js +6 -0
  1610. langflow/frontend/assets/tally-1-D-O5opNH.js +6 -0
  1611. langflow/frontend/assets/tally-2-47rl7x1A.js +6 -0
  1612. langflow/frontend/assets/tally-3-CRMNowo8.js +6 -0
  1613. langflow/frontend/assets/tally-4-BaA0OW14.js +6 -0
  1614. langflow/frontend/assets/tally-5-BaRCYaAj.js +6 -0
  1615. langflow/frontend/assets/tangent-DK-fQUN-.js +6 -0
  1616. langflow/frontend/assets/target-CQv0K2-h.js +6 -0
  1617. langflow/frontend/assets/telescope-vovn7Hmw.js +6 -0
  1618. langflow/frontend/assets/tent-tree-DT3MvcXz.js +6 -0
  1619. langflow/frontend/assets/tent-v1N5aOOW.js +6 -0
  1620. langflow/frontend/assets/terminal-BIPD9tXW.js +6 -0
  1621. langflow/frontend/assets/test-tube-CHOU1gjW.js +6 -0
  1622. langflow/frontend/assets/test-tube-diagonal-XC8nx34B.js +6 -0
  1623. langflow/frontend/assets/test-tubes-C8O0f6RS.js +6 -0
  1624. langflow/frontend/assets/text-BOpdRg2b.js +6 -0
  1625. langflow/frontend/assets/text-cursor-ias3LO93.js +6 -0
  1626. langflow/frontend/assets/text-cursor-input-H2gaMkp7.js +6 -0
  1627. langflow/frontend/assets/text-quote-DurxfeKj.js +6 -0
  1628. langflow/frontend/assets/text-search-61n8tmlf.js +6 -0
  1629. langflow/frontend/assets/text-select-BfO9MFr2.js +6 -0
  1630. langflow/frontend/assets/theater-DIjE3XbD.js +6 -0
  1631. langflow/frontend/assets/thermometer-C1XDbetA.js +6 -0
  1632. langflow/frontend/assets/thermometer-snowflake-BehyKxlY.js +6 -0
  1633. langflow/frontend/assets/thermometer-sun-j6YVjioj.js +6 -0
  1634. langflow/frontend/assets/thumbs-down-DqWn2Kem.js +6 -0
  1635. langflow/frontend/assets/thumbs-up-DM1x05l-.js +6 -0
  1636. langflow/frontend/assets/ticket-BGbr8vzL.js +6 -0
  1637. langflow/frontend/assets/ticket-check-fVDV7KNG.js +6 -0
  1638. langflow/frontend/assets/ticket-minus-3LvccH-p.js +6 -0
  1639. langflow/frontend/assets/ticket-percent-Me_uH0PT.js +6 -0
  1640. langflow/frontend/assets/ticket-plus-D5rkEJ4Q.js +6 -0
  1641. langflow/frontend/assets/ticket-slash-u_6uJpEO.js +6 -0
  1642. langflow/frontend/assets/ticket-x-DUDfvwNP.js +6 -0
  1643. langflow/frontend/assets/tickets-Dk5lNK2C.js +6 -0
  1644. langflow/frontend/assets/tickets-plane-B-WBrFyU.js +6 -0
  1645. langflow/frontend/assets/timer-FqXCSZRW.js +6 -0
  1646. langflow/frontend/assets/timer-off-mJxNB6Ap.js +6 -0
  1647. langflow/frontend/assets/timer-reset-wdDGkAGI.js +6 -0
  1648. langflow/frontend/assets/toggle-left-Cx4QLhPD.js +6 -0
  1649. langflow/frontend/assets/toggle-right-BaSZ38mS.js +6 -0
  1650. langflow/frontend/assets/toilet-wKfwRGxw.js +6 -0
  1651. langflow/frontend/assets/tornado-CLJoX7vM.js +6 -0
  1652. langflow/frontend/assets/torus-V0aZzbA0.js +6 -0
  1653. langflow/frontend/assets/touchpad-BMHLCedC.js +6 -0
  1654. langflow/frontend/assets/touchpad-off-Cjv1yQ0i.js +6 -0
  1655. langflow/frontend/assets/tower-control-B226_51n.js +6 -0
  1656. langflow/frontend/assets/toy-brick-DI3g1rgj.js +6 -0
  1657. langflow/frontend/assets/tractor-BI2_8acA.js +6 -0
  1658. langflow/frontend/assets/traffic-cone-d2JUCOyj.js +6 -0
  1659. langflow/frontend/assets/train-front-DN9E0VxK.js +6 -0
  1660. langflow/frontend/assets/train-front-tunnel-DzmLvWUF.js +6 -0
  1661. langflow/frontend/assets/train-track-D17R5fNf.js +6 -0
  1662. langflow/frontend/assets/tram-front-qWNA5wpI.js +6 -0
  1663. langflow/frontend/assets/transgender-DgGra8DX.js +6 -0
  1664. langflow/frontend/assets/trash-hLkVWzQl.js +6 -0
  1665. langflow/frontend/assets/tree-deciduous-BsLuJi98.js +6 -0
  1666. langflow/frontend/assets/tree-palm-DUFYctFO.js +6 -0
  1667. langflow/frontend/assets/tree-pine-BTu3oTx-.js +6 -0
  1668. langflow/frontend/assets/trees-DvveXYUR.js +6 -0
  1669. langflow/frontend/assets/trello-BYyusf3e.js +6 -0
  1670. langflow/frontend/assets/trending-down-C10HRpJI.js +6 -0
  1671. langflow/frontend/assets/trending-up-down-C9b8vL9Z.js +6 -0
  1672. langflow/frontend/assets/trending-up-h_mfLkUK.js +6 -0
  1673. langflow/frontend/assets/triangle-N2IQeFss.js +6 -0
  1674. langflow/frontend/assets/triangle-alert-DR0OFN8I.js +6 -0
  1675. langflow/frontend/assets/triangle-dashed-8DxflU0s.js +6 -0
  1676. langflow/frontend/assets/triangle-right-D1cgdzbe.js +6 -0
  1677. langflow/frontend/assets/trophy-mbl8JCvd.js +6 -0
  1678. langflow/frontend/assets/truck-DA8-xTmd.js +6 -0
  1679. langflow/frontend/assets/truck-electric-BnR5TKe2.js +6 -0
  1680. langflow/frontend/assets/turtle-ZmkxTvT4.js +6 -0
  1681. langflow/frontend/assets/tv-CjPN5g_R.js +6 -0
  1682. langflow/frontend/assets/tv-minimal-CIPHdgw1.js +6 -0
  1683. langflow/frontend/assets/tv-minimal-play-DubrWVWR.js +6 -0
  1684. langflow/frontend/assets/twitch-BwS8RGp8.js +6 -0
  1685. langflow/frontend/assets/twitter-iNcwuEdM.js +6 -0
  1686. langflow/frontend/assets/type-DRcIfFm2.js +6 -0
  1687. langflow/frontend/assets/type-outline-zXaonv6n.js +6 -0
  1688. langflow/frontend/assets/umbrella-CmPXzS_i.js +6 -0
  1689. langflow/frontend/assets/umbrella-off-DniESxCp.js +6 -0
  1690. langflow/frontend/assets/underline-Cx9TBHTD.js +6 -0
  1691. langflow/frontend/assets/undo-2-COh52O_B.js +6 -0
  1692. langflow/frontend/assets/undo-B_zczegi.js +6 -0
  1693. langflow/frontend/assets/undo-dot-NaNC_IW8.js +6 -0
  1694. langflow/frontend/assets/unfold-horizontal-BD2O2VCA.js +6 -0
  1695. langflow/frontend/assets/unfold-vertical-CBKn4kGI.js +6 -0
  1696. langflow/frontend/assets/ungroup-BxidgRp8.js +6 -0
  1697. langflow/frontend/assets/university-Cnfx6a-N.js +6 -0
  1698. langflow/frontend/assets/unlink-2-5i7X0qTI.js +6 -0
  1699. langflow/frontend/assets/unlink-CS0v58QY.js +6 -0
  1700. langflow/frontend/assets/unplug-D6ATo-O0.js +6 -0
  1701. langflow/frontend/assets/upload-DSSWCIft.js +6 -0
  1702. langflow/frontend/assets/usb-Drhdkf4h.js +6 -0
  1703. langflow/frontend/assets/use-post-add-user-CDPuGwVE.js +1 -0
  1704. langflow/frontend/assets/user-check-Dbg-AInJ.js +6 -0
  1705. langflow/frontend/assets/user-cog-CeZ_6YkF.js +6 -0
  1706. langflow/frontend/assets/user-iQZoArX8.js +6 -0
  1707. langflow/frontend/assets/user-lock-WOGG7OIZ.js +6 -0
  1708. langflow/frontend/assets/user-minus-ukiNBMbq.js +6 -0
  1709. langflow/frontend/assets/user-pen-CvyjVA7o.js +6 -0
  1710. langflow/frontend/assets/user-plus-CVjKOmkM.js +6 -0
  1711. langflow/frontend/assets/user-round-check-D-DxXiSi.js +6 -0
  1712. langflow/frontend/assets/user-round-cog-CnG7Y6n4.js +6 -0
  1713. langflow/frontend/assets/user-round-j7tGuEdz.js +6 -0
  1714. langflow/frontend/assets/user-round-minus-C3K_aIxb.js +6 -0
  1715. langflow/frontend/assets/user-round-pen-fHpsUtCB.js +6 -0
  1716. langflow/frontend/assets/user-round-plus-p-Xf-A-r.js +6 -0
  1717. langflow/frontend/assets/user-round-search-DU2PNXys.js +6 -0
  1718. langflow/frontend/assets/user-round-x-CL3Ps75G.js +6 -0
  1719. langflow/frontend/assets/user-search-CLwOZU3O.js +6 -0
  1720. langflow/frontend/assets/user-x-DWc00Z_h.js +6 -0
  1721. langflow/frontend/assets/users-DgAm-Czv.js +6 -0
  1722. langflow/frontend/assets/users-round-DRU0Dp53.js +6 -0
  1723. langflow/frontend/assets/utensils-CqNLqAKE.js +6 -0
  1724. langflow/frontend/assets/utensils-crossed-jzoTBKMW.js +6 -0
  1725. langflow/frontend/assets/utility-pole-B4ydv_lW.js +6 -0
  1726. langflow/frontend/assets/variable-eHXkoAzJ.js +6 -0
  1727. langflow/frontend/assets/vault-DyeSTbo3.js +6 -0
  1728. langflow/frontend/assets/vegan-CjYxy6Kx.js +6 -0
  1729. langflow/frontend/assets/venetian-mask-e9ruXmqA.js +6 -0
  1730. langflow/frontend/assets/venus-BSAxI4Q5.js +6 -0
  1731. langflow/frontend/assets/venus-and-mars-BSFD2pth.js +6 -0
  1732. langflow/frontend/assets/vibrate-DTuQnqHL.js +6 -0
  1733. langflow/frontend/assets/vibrate-off-Cr7jkzjd.js +6 -0
  1734. langflow/frontend/assets/video-Rv2mEg1Q.js +6 -0
  1735. langflow/frontend/assets/video-off-CKSxqha6.js +6 -0
  1736. langflow/frontend/assets/videotape-PTTemm3o.js +6 -0
  1737. langflow/frontend/assets/view-xYJ4Kbf0.js +6 -0
  1738. langflow/frontend/assets/voicemail-D4gERIyq.js +6 -0
  1739. langflow/frontend/assets/volleyball-ilUr5BG0.js +6 -0
  1740. langflow/frontend/assets/volume-1-CerDvjrk.js +6 -0
  1741. langflow/frontend/assets/volume-2-D5z-cRyJ.js +6 -0
  1742. langflow/frontend/assets/volume-CS8doUzS.js +6 -0
  1743. langflow/frontend/assets/volume-off-DOBtp-_R.js +6 -0
  1744. langflow/frontend/assets/volume-x-Cc1Mk6ns.js +6 -0
  1745. langflow/frontend/assets/vote-CPwzdmRy.js +6 -0
  1746. langflow/frontend/assets/wallet-CcyaxG1y.js +6 -0
  1747. langflow/frontend/assets/wallet-cards-Bb6N0jvr.js +6 -0
  1748. langflow/frontend/assets/wallet-minimal-BvtFmI5Z.js +6 -0
  1749. langflow/frontend/assets/wallpaper-Dz71EsSn.js +6 -0
  1750. langflow/frontend/assets/wand-Kai6h0Xr.js +6 -0
  1751. langflow/frontend/assets/wand-sparkles-DLbQMKGC.js +6 -0
  1752. langflow/frontend/assets/warehouse-DBoMmdhd.js +6 -0
  1753. langflow/frontend/assets/washing-machine-DHmlFJ3A.js +6 -0
  1754. langflow/frontend/assets/watch-DfkGvUm1.js +6 -0
  1755. langflow/frontend/assets/waves-Cd4JKFbX.js +6 -0
  1756. langflow/frontend/assets/waves-ladder-tjR07mv9.js +6 -0
  1757. langflow/frontend/assets/waypoints-Bb_EYyFE.js +6 -0
  1758. langflow/frontend/assets/webcam-Up9cGsW5.js +6 -0
  1759. langflow/frontend/assets/webhook-drjDWswy.js +6 -0
  1760. langflow/frontend/assets/webhook-off-DG52EKd-.js +6 -0
  1761. langflow/frontend/assets/weight-CZxgLk9R.js +6 -0
  1762. langflow/frontend/assets/wheat-8mjCX3wu.js +6 -0
  1763. langflow/frontend/assets/wheat-off-lOZpqvRC.js +6 -0
  1764. langflow/frontend/assets/whole-word-DkYFC9yl.js +6 -0
  1765. langflow/frontend/assets/wifi-BsCMPxM-.js +6 -0
  1766. langflow/frontend/assets/wifi-high-DGGYdUCW.js +6 -0
  1767. langflow/frontend/assets/wifi-low-a0fn0wut.js +6 -0
  1768. langflow/frontend/assets/wifi-off-fMoWlSdt.js +6 -0
  1769. langflow/frontend/assets/wifi-pen-O5yj5Wcp.js +6 -0
  1770. langflow/frontend/assets/wifi-zero-BrVgapeH.js +6 -0
  1771. langflow/frontend/assets/wind-BDwAcZF4.js +6 -0
  1772. langflow/frontend/assets/wind-arrow-down-B1Inkiyr.js +6 -0
  1773. langflow/frontend/assets/wine-CMXvXaEo.js +6 -0
  1774. langflow/frontend/assets/wine-off-Ko62f_nP.js +6 -0
  1775. langflow/frontend/assets/workflow-MXMJ5DGr.js +6 -0
  1776. langflow/frontend/assets/worm-DOF_TRoD.js +6 -0
  1777. langflow/frontend/assets/wrap-text-WFkJgMM-.js +6 -0
  1778. langflow/frontend/assets/wrench-Bj9Pufgg.js +6 -0
  1779. langflow/frontend/assets/youtube-DPJ24OJB.js +6 -0
  1780. langflow/frontend/assets/zap-Cbcs3ReZ.js +6 -0
  1781. langflow/frontend/assets/zap-off-2yg3tKTw.js +6 -0
  1782. langflow/frontend/assets/zoom-in-CqdW7KV-.js +6 -0
  1783. langflow/frontend/assets/zoom-out-8jqGDP4Q.js +6 -0
  1784. langflow/frontend/index.html +2 -2
  1785. langflow/initial_setup/constants.py +3 -0
  1786. langflow/initial_setup/setup.py +177 -1
  1787. langflow/initial_setup/starter_projects/Document Q&A.json +22 -2
  1788. langflow/initial_setup/starter_projects/Financial Report Parser.json +1 -1
  1789. langflow/initial_setup/starter_projects/Hybrid Search RAG.json +1 -1
  1790. langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +1 -1
  1791. langflow/initial_setup/starter_projects/Instagram Copywriter.json +1 -1
  1792. langflow/initial_setup/starter_projects/Invoice Summarizer.json +1 -1
  1793. langflow/initial_setup/starter_projects/Knowledge Retrieval.json +1 -1
  1794. langflow/initial_setup/starter_projects/Market Research.json +2 -2
  1795. langflow/initial_setup/starter_projects/News Aggregator.json +22 -3
  1796. langflow/initial_setup/starter_projects/Nvidia Remix.json +3 -3
  1797. langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +1 -1
  1798. langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +23 -3
  1799. langflow/initial_setup/starter_projects/Price Deal Finder.json +1 -1
  1800. langflow/initial_setup/starter_projects/Research Agent.json +1 -1
  1801. langflow/initial_setup/starter_projects/Research Translation Loop.json +7 -4
  1802. langflow/initial_setup/starter_projects/SaaS Pricing.json +1 -1
  1803. langflow/initial_setup/starter_projects/Search agent.json +1 -1
  1804. langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +4 -4
  1805. langflow/initial_setup/starter_projects/Simple Agent.json +1 -1
  1806. langflow/initial_setup/starter_projects/Social Media Agent.json +3 -3
  1807. langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +22 -2
  1808. langflow/initial_setup/starter_projects/Travel Planning Agents.json +3 -3
  1809. langflow/initial_setup/starter_projects/Vector Store RAG.json +22 -2
  1810. langflow/initial_setup/starter_projects/Youtube Analysis.json +1 -1
  1811. langflow/logging/logger.py +32 -1
  1812. langflow/main.py +41 -1
  1813. langflow/services/storage/local.py +6 -3
  1814. langflow/services/storage/s3.py +13 -2
  1815. langflow/services/storage/service.py +1 -1
  1816. langflow_base_nightly-1.7.0.dev20.dist-info/METADATA +99 -0
  1817. langflow_base_nightly-1.7.0.dev20.dist-info/RECORD +2277 -0
  1818. langflow/frontend/assets/SlackIcon-Us_ry2Iv.js +0 -1
  1819. langflow/frontend/assets/Wikipedia-CeUspeQb.js +0 -1
  1820. langflow/frontend/assets/Wolfram-CT4YZ45a.js +0 -1
  1821. langflow/frontend/assets/a-arrow-down-9eaDjALR.js +0 -6
  1822. langflow/frontend/assets/a-arrow-up-CaEMRHPn.js +0 -6
  1823. langflow/frontend/assets/a-large-small-BYdoyL6o.js +0 -6
  1824. langflow/frontend/assets/accessibility-DjOhsjoB.js +0 -6
  1825. langflow/frontend/assets/activity-JXGSwFHD.js +0 -6
  1826. langflow/frontend/assets/air-vent-Bv58oKFA.js +0 -6
  1827. langflow/frontend/assets/airplay-DRJ26--l.js +0 -6
  1828. langflow/frontend/assets/alarm-clock-C-G-xhcf.js +0 -6
  1829. langflow/frontend/assets/alarm-clock-check-CqMVtN7S.js +0 -6
  1830. langflow/frontend/assets/alarm-clock-minus-Caeuiqlb.js +0 -6
  1831. langflow/frontend/assets/alarm-clock-off-CEM5qH_6.js +0 -6
  1832. langflow/frontend/assets/alarm-clock-plus-Bq2Gj4CA.js +0 -6
  1833. langflow/frontend/assets/alarm-smoke-8FCuL96f.js +0 -6
  1834. langflow/frontend/assets/album-CfBnHsl0.js +0 -6
  1835. langflow/frontend/assets/align-center-horizontal-C-X6AeI_.js +0 -6
  1836. langflow/frontend/assets/align-center-vertical-Ce-2KSEO.js +0 -6
  1837. langflow/frontend/assets/align-center-xyR0y5_m.js +0 -6
  1838. langflow/frontend/assets/align-end-horizontal-CnXc24Zd.js +0 -6
  1839. langflow/frontend/assets/align-end-vertical-gMjHHjT6.js +0 -6
  1840. langflow/frontend/assets/align-horizontal-distribute-center-CiQsP9o4.js +0 -6
  1841. langflow/frontend/assets/align-horizontal-distribute-end-BKJCFccI.js +0 -6
  1842. langflow/frontend/assets/align-horizontal-distribute-start-uJzRzLdr.js +0 -6
  1843. langflow/frontend/assets/align-horizontal-justify-center-c-ikgjpD.js +0 -6
  1844. langflow/frontend/assets/align-horizontal-justify-end-j7WWmYIM.js +0 -6
  1845. langflow/frontend/assets/align-horizontal-justify-start-Y6ptjruY.js +0 -6
  1846. langflow/frontend/assets/align-horizontal-space-around-2plB6Y-F.js +0 -6
  1847. langflow/frontend/assets/align-horizontal-space-between-DHs0HJ4f.js +0 -6
  1848. langflow/frontend/assets/align-justify-C20CL-_a.js +0 -6
  1849. langflow/frontend/assets/align-left-hnPdfQtc.js +0 -6
  1850. langflow/frontend/assets/align-right-COvhzFSf.js +0 -6
  1851. langflow/frontend/assets/align-start-horizontal-CvyhshiN.js +0 -6
  1852. langflow/frontend/assets/align-start-vertical-1_rDzqd9.js +0 -6
  1853. langflow/frontend/assets/align-vertical-distribute-center-CgVET2e6.js +0 -6
  1854. langflow/frontend/assets/align-vertical-distribute-end-DCKvptXv.js +0 -6
  1855. langflow/frontend/assets/align-vertical-distribute-start-LNAtc6vO.js +0 -6
  1856. langflow/frontend/assets/align-vertical-justify-center-Bct6OGxW.js +0 -6
  1857. langflow/frontend/assets/align-vertical-justify-end-Do-PmuX3.js +0 -6
  1858. langflow/frontend/assets/align-vertical-justify-start-Cmsyquqk.js +0 -6
  1859. langflow/frontend/assets/align-vertical-space-around-BpzGMxig.js +0 -6
  1860. langflow/frontend/assets/align-vertical-space-between-CrjH1Wsg.js +0 -6
  1861. langflow/frontend/assets/ambulance-AYbR_5rS.js +0 -6
  1862. langflow/frontend/assets/ampersand-DMmLeWTW.js +0 -6
  1863. langflow/frontend/assets/ampersands-DJlMmK1p.js +0 -6
  1864. langflow/frontend/assets/amphora-M87j_vkr.js +0 -6
  1865. langflow/frontend/assets/anchor-WsOOhT57.js +0 -6
  1866. langflow/frontend/assets/angry-BQrk2lvw.js +0 -6
  1867. langflow/frontend/assets/annoyed-BWde01bx.js +0 -6
  1868. langflow/frontend/assets/antenna-ScPfnfvX.js +0 -6
  1869. langflow/frontend/assets/anvil-BYh1TlH6.js +0 -6
  1870. langflow/frontend/assets/aperture-CQwEbKWx.js +0 -6
  1871. langflow/frontend/assets/app-window-ByM2RJAS.js +0 -6
  1872. langflow/frontend/assets/app-window-mac-Vih3hWkx.js +0 -6
  1873. langflow/frontend/assets/apple-mD72t9z7.js +0 -6
  1874. langflow/frontend/assets/archive-DG34WUmN.js +0 -6
  1875. langflow/frontend/assets/archive-restore-BkHSLHhu.js +0 -6
  1876. langflow/frontend/assets/archive-x-B7sj7uX9.js +0 -6
  1877. langflow/frontend/assets/armchair-wIT5Z84C.js +0 -6
  1878. langflow/frontend/assets/arrow-big-down-DuSZd0gG.js +0 -6
  1879. langflow/frontend/assets/arrow-big-down-dash-CPR-06bq.js +0 -6
  1880. langflow/frontend/assets/arrow-big-left-CPoj7w2v.js +0 -6
  1881. langflow/frontend/assets/arrow-big-left-dash-rtvL8wAQ.js +0 -6
  1882. langflow/frontend/assets/arrow-big-right-EiX8GIIy.js +0 -6
  1883. langflow/frontend/assets/arrow-big-right-dash-BAZCGib4.js +0 -6
  1884. langflow/frontend/assets/arrow-big-up-Kng9fG4_.js +0 -6
  1885. langflow/frontend/assets/arrow-big-up-dash-B46R2feM.js +0 -6
  1886. langflow/frontend/assets/arrow-down-0-1-pSkZgQLN.js +0 -6
  1887. langflow/frontend/assets/arrow-down-1-0-3ufgg8Hs.js +0 -6
  1888. langflow/frontend/assets/arrow-down-a-z-CsYxuBZw.js +0 -6
  1889. langflow/frontend/assets/arrow-down-auDYdy0-.js +0 -6
  1890. langflow/frontend/assets/arrow-down-from-line-DQXlFST2.js +0 -6
  1891. langflow/frontend/assets/arrow-down-left-CLIkyms-.js +0 -6
  1892. langflow/frontend/assets/arrow-down-narrow-wide-BtD-38OZ.js +0 -6
  1893. langflow/frontend/assets/arrow-down-right-DDOOCNwI.js +0 -6
  1894. langflow/frontend/assets/arrow-down-to-dot-BKVmCFv6.js +0 -6
  1895. langflow/frontend/assets/arrow-down-to-line-Ce50RpT9.js +0 -6
  1896. langflow/frontend/assets/arrow-down-up-CiAQkYa1.js +0 -6
  1897. langflow/frontend/assets/arrow-down-wide-narrow-bHNonS6J.js +0 -6
  1898. langflow/frontend/assets/arrow-down-z-a-B5JO0Xtq.js +0 -6
  1899. langflow/frontend/assets/arrow-left-D3Ah01pI.js +0 -6
  1900. langflow/frontend/assets/arrow-left-from-line-OMu75jWB.js +0 -6
  1901. langflow/frontend/assets/arrow-left-right-TliOqk7V.js +0 -6
  1902. langflow/frontend/assets/arrow-left-to-line-3fgCJ_5x.js +0 -6
  1903. langflow/frontend/assets/arrow-right-CYsoGpxf.js +0 -6
  1904. langflow/frontend/assets/arrow-right-from-line-CzDWJYnm.js +0 -6
  1905. langflow/frontend/assets/arrow-right-left-DjMq1jTi.js +0 -6
  1906. langflow/frontend/assets/arrow-right-to-line-DsfzSjPT.js +0 -6
  1907. langflow/frontend/assets/arrow-up-0-1-LLxE7vpt.js +0 -6
  1908. langflow/frontend/assets/arrow-up-1-0-GwLVJWY_.js +0 -6
  1909. langflow/frontend/assets/arrow-up-DdKJFQ-z.js +0 -6
  1910. langflow/frontend/assets/arrow-up-a-z-BN8GFxSk.js +0 -6
  1911. langflow/frontend/assets/arrow-up-down-Cl_bY03Q.js +0 -6
  1912. langflow/frontend/assets/arrow-up-from-dot-D3HppUqI.js +0 -6
  1913. langflow/frontend/assets/arrow-up-from-line-C-eCZKPp.js +0 -6
  1914. langflow/frontend/assets/arrow-up-left-Btnb4zIn.js +0 -6
  1915. langflow/frontend/assets/arrow-up-narrow-wide-DnlD7kIK.js +0 -6
  1916. langflow/frontend/assets/arrow-up-right-Dckks3Py.js +0 -6
  1917. langflow/frontend/assets/arrow-up-to-line-FruPJbVs.js +0 -6
  1918. langflow/frontend/assets/arrow-up-wide-narrow-Dz3-sQX7.js +0 -6
  1919. langflow/frontend/assets/arrow-up-z-a-B2Pzma1X.js +0 -6
  1920. langflow/frontend/assets/arrows-up-from-line-CLfwjEuJ.js +0 -6
  1921. langflow/frontend/assets/asterisk-fxtPNL0_.js +0 -6
  1922. langflow/frontend/assets/at-sign-NQa4XpR-.js +0 -6
  1923. langflow/frontend/assets/atom-CHS-V1yH.js +0 -6
  1924. langflow/frontend/assets/audio-lines-DSYmqMlR.js +0 -6
  1925. langflow/frontend/assets/audio-waveform-Cbes4iZt.js +0 -6
  1926. langflow/frontend/assets/award-CQLBD6vm.js +0 -6
  1927. langflow/frontend/assets/axe-CDSBX1WJ.js +0 -6
  1928. langflow/frontend/assets/axis-3d-JwTBYQ4W.js +0 -6
  1929. langflow/frontend/assets/baby-CeC4STvW.js +0 -6
  1930. langflow/frontend/assets/backpack-BIk7eTn2.js +0 -6
  1931. langflow/frontend/assets/badge-SSCVw83X.js +0 -6
  1932. langflow/frontend/assets/badge-alert-AceYdloh.js +0 -6
  1933. langflow/frontend/assets/badge-cent-CnX7Qtaz.js +0 -6
  1934. langflow/frontend/assets/badge-check-BcSI27iI.js +0 -6
  1935. langflow/frontend/assets/badge-dollar-sign-Cu1Ch8b7.js +0 -6
  1936. langflow/frontend/assets/badge-euro-RhYT-nlY.js +0 -6
  1937. langflow/frontend/assets/badge-help-coijnp9e.js +0 -6
  1938. langflow/frontend/assets/badge-indian-rupee-DGPROvXJ.js +0 -6
  1939. langflow/frontend/assets/badge-info-DTvhghnk.js +0 -6
  1940. langflow/frontend/assets/badge-japanese-yen-CFZAJaT_.js +0 -6
  1941. langflow/frontend/assets/badge-minus-BExqVksu.js +0 -6
  1942. langflow/frontend/assets/badge-percent-DShM6HKz.js +0 -6
  1943. langflow/frontend/assets/badge-plus-ROtWLgFs.js +0 -6
  1944. langflow/frontend/assets/badge-pound-sterling-Du2A9r0c.js +0 -6
  1945. langflow/frontend/assets/badge-russian-ruble-DfG6ozE_.js +0 -6
  1946. langflow/frontend/assets/badge-swiss-franc-D39ehTw1.js +0 -6
  1947. langflow/frontend/assets/badge-x-DotUI_vO.js +0 -6
  1948. langflow/frontend/assets/baggage-claim-DbwgDEdK.js +0 -6
  1949. langflow/frontend/assets/ban-Bs5bMT0f.js +0 -6
  1950. langflow/frontend/assets/banana-DrGKaTmd.js +0 -6
  1951. langflow/frontend/assets/bandage-B285aATB.js +0 -6
  1952. langflow/frontend/assets/banknote-BYkjXRkl.js +0 -6
  1953. langflow/frontend/assets/banknote-arrow-down-BwJVB3pk.js +0 -6
  1954. langflow/frontend/assets/banknote-arrow-up-CikTozgR.js +0 -6
  1955. langflow/frontend/assets/banknote-x-BtWl1nfV.js +0 -6
  1956. langflow/frontend/assets/barcode-L-_5HuRe.js +0 -6
  1957. langflow/frontend/assets/baseline-BFNYNpjP.js +0 -6
  1958. langflow/frontend/assets/bath-DjQ9774-.js +0 -6
  1959. langflow/frontend/assets/battery-WIP2nbkW.js +0 -6
  1960. langflow/frontend/assets/battery-charging-FfXfIVSo.js +0 -6
  1961. langflow/frontend/assets/battery-full-Bkza2rDe.js +0 -6
  1962. langflow/frontend/assets/battery-low-BlyDxm3y.js +0 -6
  1963. langflow/frontend/assets/battery-medium-DIlyUjYi.js +0 -6
  1964. langflow/frontend/assets/battery-plus-B4BVIkOc.js +0 -6
  1965. langflow/frontend/assets/battery-warning-BPPmGx7B.js +0 -6
  1966. langflow/frontend/assets/beaker-rPaFYa8m.js +0 -6
  1967. langflow/frontend/assets/bean-off-B3KGSr83.js +0 -6
  1968. langflow/frontend/assets/bean-q7tfs-JQ.js +0 -6
  1969. langflow/frontend/assets/bed-double-6iRpTsKs.js +0 -6
  1970. langflow/frontend/assets/bed-single-DfKKzIRJ.js +0 -6
  1971. langflow/frontend/assets/bed-xRSuL4xl.js +0 -6
  1972. langflow/frontend/assets/beef-Bf97McuD.js +0 -6
  1973. langflow/frontend/assets/beer-DN2tdlwQ.js +0 -6
  1974. langflow/frontend/assets/beer-off-l8Fcji8A.js +0 -6
  1975. langflow/frontend/assets/bell-SnxJLh-C.js +0 -6
  1976. langflow/frontend/assets/bell-dot-CcePE0rB.js +0 -6
  1977. langflow/frontend/assets/bell-electric-D_DPGWQ3.js +0 -6
  1978. langflow/frontend/assets/bell-minus-BPL82piC.js +0 -6
  1979. langflow/frontend/assets/bell-off-CESU8Xng.js +0 -6
  1980. langflow/frontend/assets/bell-plus-BK9zWlwu.js +0 -6
  1981. langflow/frontend/assets/bell-ring-wQpkeGE0.js +0 -6
  1982. langflow/frontend/assets/between-horizontal-end-CgvCPu6F.js +0 -6
  1983. langflow/frontend/assets/between-horizontal-start-BM-oIN65.js +0 -6
  1984. langflow/frontend/assets/between-vertical-end-DgUv9Kch.js +0 -6
  1985. langflow/frontend/assets/between-vertical-start-DI4khPmx.js +0 -6
  1986. langflow/frontend/assets/biceps-flexed-B-pNR-Iz.js +0 -6
  1987. langflow/frontend/assets/bike-DgvHUFiH.js +0 -6
  1988. langflow/frontend/assets/binary-BoGqGi4w.js +0 -6
  1989. langflow/frontend/assets/binoculars-DsJi8UEW.js +0 -6
  1990. langflow/frontend/assets/biohazard-BIW42Zq0.js +0 -6
  1991. langflow/frontend/assets/bird-CuusA6ze.js +0 -6
  1992. langflow/frontend/assets/bitcoin-F62LP_7K.js +0 -6
  1993. langflow/frontend/assets/blend-BLXY6Lk1.js +0 -6
  1994. langflow/frontend/assets/blinds-zERZSz8U.js +0 -6
  1995. langflow/frontend/assets/blocks-SRnoECwA.js +0 -6
  1996. langflow/frontend/assets/bluetooth-D18s-Ag1.js +0 -6
  1997. langflow/frontend/assets/bluetooth-connected-DQU4z1Ex.js +0 -6
  1998. langflow/frontend/assets/bluetooth-off-DD_EZzgE.js +0 -6
  1999. langflow/frontend/assets/bluetooth-searching-BMQ2xdKQ.js +0 -6
  2000. langflow/frontend/assets/bold-CLpbUnw-.js +0 -6
  2001. langflow/frontend/assets/bolt-Brm3_hN-.js +0 -6
  2002. langflow/frontend/assets/bomb-B_eiUzfH.js +0 -6
  2003. langflow/frontend/assets/bone-tKmIFd62.js +0 -6
  2004. langflow/frontend/assets/book-Dgqx_KG4.js +0 -6
  2005. langflow/frontend/assets/book-a-Bckwf3W-.js +0 -6
  2006. langflow/frontend/assets/book-audio-BPv8p8xe.js +0 -6
  2007. langflow/frontend/assets/book-check-C_PYfE94.js +0 -6
  2008. langflow/frontend/assets/book-copy-Duo5NQXE.js +0 -6
  2009. langflow/frontend/assets/book-dashed-BTn0L6L-.js +0 -6
  2010. langflow/frontend/assets/book-down-YtBeDMQd.js +0 -6
  2011. langflow/frontend/assets/book-headphones-C0aN3fMN.js +0 -6
  2012. langflow/frontend/assets/book-heart-Sjgqp0AF.js +0 -6
  2013. langflow/frontend/assets/book-image-KCJ3-MYD.js +0 -6
  2014. langflow/frontend/assets/book-key-Dt6aNLBF.js +0 -6
  2015. langflow/frontend/assets/book-lock-CWqq9DSW.js +0 -6
  2016. langflow/frontend/assets/book-marked-CuJmrOJs.js +0 -6
  2017. langflow/frontend/assets/book-minus-DxRXjinD.js +0 -6
  2018. langflow/frontend/assets/book-open-COn461WL.js +0 -6
  2019. langflow/frontend/assets/book-open-check-CigH7vAN.js +0 -6
  2020. langflow/frontend/assets/book-open-text-CyB0vdMX.js +0 -6
  2021. langflow/frontend/assets/book-plus-CFD_sA0k.js +0 -6
  2022. langflow/frontend/assets/book-text-DL7RhYmU.js +0 -6
  2023. langflow/frontend/assets/book-type-CmEXEgBr.js +0 -6
  2024. langflow/frontend/assets/book-up-2-BxHujXyx.js +0 -6
  2025. langflow/frontend/assets/book-up-CEJ8m6mT.js +0 -6
  2026. langflow/frontend/assets/book-user-CNDuFpqp.js +0 -6
  2027. langflow/frontend/assets/book-x-D495vwDJ.js +0 -6
  2028. langflow/frontend/assets/bookmark-Gha1TJIQ.js +0 -6
  2029. langflow/frontend/assets/bookmark-check-S0x3O2Sy.js +0 -6
  2030. langflow/frontend/assets/bookmark-minus-hG3YmHl3.js +0 -6
  2031. langflow/frontend/assets/bookmark-plus-Cs_jsLbF.js +0 -6
  2032. langflow/frontend/assets/bookmark-x-CC0lT9Zu.js +0 -6
  2033. langflow/frontend/assets/boom-box-pPPOvgxg.js +0 -6
  2034. langflow/frontend/assets/bot-DiPUiJyb.js +0 -6
  2035. langflow/frontend/assets/bot-message-square-Dxm8RSCF.js +0 -6
  2036. langflow/frontend/assets/bot-off-B7oYm7VC.js +0 -6
  2037. langflow/frontend/assets/bow-arrow-Crmp-czF.js +0 -6
  2038. langflow/frontend/assets/box-D6OU2H17.js +0 -6
  2039. langflow/frontend/assets/boxes-h7HzuAHj.js +0 -6
  2040. langflow/frontend/assets/braces-BHT-4SQr.js +0 -6
  2041. langflow/frontend/assets/brackets-yEjUxK6Y.js +0 -6
  2042. langflow/frontend/assets/brain-BawwrieI.js +0 -6
  2043. langflow/frontend/assets/brain-circuit-Dju9JhQF.js +0 -6
  2044. langflow/frontend/assets/brain-cog-Dh0lEsSU.js +0 -6
  2045. langflow/frontend/assets/brick-wall-4wypNOy2.js +0 -6
  2046. langflow/frontend/assets/brick-wall-fire-DGT9818K.js +0 -6
  2047. langflow/frontend/assets/briefcase-DBvMD1t0.js +0 -6
  2048. langflow/frontend/assets/briefcase-business-DQGznxJE.js +0 -6
  2049. langflow/frontend/assets/briefcase-conveyor-belt-BhySEtuI.js +0 -6
  2050. langflow/frontend/assets/briefcase-medical-BrCyLDvE.js +0 -6
  2051. langflow/frontend/assets/bring-to-front-BPIyY3_p.js +0 -6
  2052. langflow/frontend/assets/brush-HS_Bo7Fj.js +0 -6
  2053. langflow/frontend/assets/bubbles-CF8rwh_3.js +0 -6
  2054. langflow/frontend/assets/bug-CLaK6jYD.js +0 -6
  2055. langflow/frontend/assets/bug-off-DQZcVsmQ.js +0 -6
  2056. langflow/frontend/assets/bug-play-DmulNNUt.js +0 -6
  2057. langflow/frontend/assets/building-2-B1dTvyeM.js +0 -6
  2058. langflow/frontend/assets/building-Da3oU5Hc.js +0 -6
  2059. langflow/frontend/assets/bus-B7oc2rjY.js +0 -6
  2060. langflow/frontend/assets/bus-front-B8TSqxh0.js +0 -6
  2061. langflow/frontend/assets/cable-BZAx9MDF.js +0 -6
  2062. langflow/frontend/assets/cable-car-1qPYjMxx.js +0 -6
  2063. langflow/frontend/assets/cake-C8rgBFAT.js +0 -6
  2064. langflow/frontend/assets/cake-slice-cw-qKnDf.js +0 -6
  2065. langflow/frontend/assets/calculator-D2MrW5Xk.js +0 -6
  2066. langflow/frontend/assets/calendar-1-BExpA6ta.js +0 -6
  2067. langflow/frontend/assets/calendar-CuJKXjG3.js +0 -6
  2068. langflow/frontend/assets/calendar-arrow-down-DkKRy2nA.js +0 -6
  2069. langflow/frontend/assets/calendar-arrow-up-D1I_gfyI.js +0 -6
  2070. langflow/frontend/assets/calendar-check-2-DQWULtyH.js +0 -6
  2071. langflow/frontend/assets/calendar-check-DQhdrkZp.js +0 -6
  2072. langflow/frontend/assets/calendar-clock-CHIptkFP.js +0 -6
  2073. langflow/frontend/assets/calendar-cog-AW3hKE87.js +0 -6
  2074. langflow/frontend/assets/calendar-days-Bopwrf5C.js +0 -6
  2075. langflow/frontend/assets/calendar-fold-BwVOJMR8.js +0 -6
  2076. langflow/frontend/assets/calendar-heart-BS45tCGf.js +0 -6
  2077. langflow/frontend/assets/calendar-minus-2--B-gVq4j.js +0 -6
  2078. langflow/frontend/assets/calendar-minus-DB9O9Hbr.js +0 -6
  2079. langflow/frontend/assets/calendar-off-C-dfM-Hv.js +0 -6
  2080. langflow/frontend/assets/calendar-plus-2-Dlv_511O.js +0 -6
  2081. langflow/frontend/assets/calendar-plus-C4BSQJvR.js +0 -6
  2082. langflow/frontend/assets/calendar-range-zWaineOX.js +0 -6
  2083. langflow/frontend/assets/calendar-search-BJ7UEjxV.js +0 -6
  2084. langflow/frontend/assets/calendar-sync-BNUftU98.js +0 -6
  2085. langflow/frontend/assets/calendar-x-2-DsInHaoq.js +0 -6
  2086. langflow/frontend/assets/calendar-x-2SduZBt7.js +0 -6
  2087. langflow/frontend/assets/camera--JcmW8RC.js +0 -6
  2088. langflow/frontend/assets/camera-off-C8jCmpeX.js +0 -6
  2089. langflow/frontend/assets/candy-D0kdIzfJ.js +0 -6
  2090. langflow/frontend/assets/candy-cane-COTINPwk.js +0 -6
  2091. langflow/frontend/assets/candy-off-B0hPkXZp.js +0 -6
  2092. langflow/frontend/assets/cannabis-Daq6x4sL.js +0 -6
  2093. langflow/frontend/assets/captions-CoTHIP0t.js +0 -6
  2094. langflow/frontend/assets/captions-off-tVHACeYV.js +0 -6
  2095. langflow/frontend/assets/car-Cdvoz-U0.js +0 -6
  2096. langflow/frontend/assets/car-front-CWgEq90F.js +0 -6
  2097. langflow/frontend/assets/car-taxi-front-Bm41ZYfy.js +0 -6
  2098. langflow/frontend/assets/caravan-Q6bFP64_.js +0 -6
  2099. langflow/frontend/assets/carrot-EeiBMgfr.js +0 -6
  2100. langflow/frontend/assets/case-lower-CMe0CBgD.js +0 -6
  2101. langflow/frontend/assets/case-sensitive-jg-1Zpdj.js +0 -6
  2102. langflow/frontend/assets/case-upper-BFPzmh7m.js +0 -6
  2103. langflow/frontend/assets/cassette-tape-B5H9XiYB.js +0 -6
  2104. langflow/frontend/assets/cast-BmP2fk4X.js +0 -6
  2105. langflow/frontend/assets/castle-DqWzUjOb.js +0 -6
  2106. langflow/frontend/assets/cat-CfQcS4NI.js +0 -6
  2107. langflow/frontend/assets/cctv-mmSJ1h1f.js +0 -6
  2108. langflow/frontend/assets/chart-area-Brjc8erB.js +0 -6
  2109. langflow/frontend/assets/chart-bar-big-C5rOgyMT.js +0 -6
  2110. langflow/frontend/assets/chart-bar-decreasing-D84n8SsJ.js +0 -6
  2111. langflow/frontend/assets/chart-bar-increasing-MqRGa4WD.js +0 -6
  2112. langflow/frontend/assets/chart-bar-sXRu3HWh.js +0 -6
  2113. langflow/frontend/assets/chart-bar-stacked-DyGYNenL.js +0 -6
  2114. langflow/frontend/assets/chart-candlestick-DA9KiwoI.js +0 -6
  2115. langflow/frontend/assets/chart-column-BKLyjPZh.js +0 -6
  2116. langflow/frontend/assets/chart-column-big-BEwYgHOy.js +0 -6
  2117. langflow/frontend/assets/chart-column-decreasing-BjA7UU8K.js +0 -6
  2118. langflow/frontend/assets/chart-column-increasing-VKCTiknT.js +0 -6
  2119. langflow/frontend/assets/chart-column-stacked-BZVuC3aw.js +0 -6
  2120. langflow/frontend/assets/chart-gantt-Bd_k849R.js +0 -6
  2121. langflow/frontend/assets/chart-line-CZLbNVZC.js +0 -6
  2122. langflow/frontend/assets/chart-network-MMJ2JQ5X.js +0 -6
  2123. langflow/frontend/assets/chart-no-axes-column-decreasing-CesadWUY.js +0 -6
  2124. langflow/frontend/assets/chart-no-axes-column-increasing-CSq2goV6.js +0 -6
  2125. langflow/frontend/assets/chart-no-axes-column-qNDgS1OU.js +0 -6
  2126. langflow/frontend/assets/chart-no-axes-combined-CY8sFDth.js +0 -6
  2127. langflow/frontend/assets/chart-no-axes-gantt-BDcUJUQ7.js +0 -6
  2128. langflow/frontend/assets/chart-pie-DjxCWkrd.js +0 -6
  2129. langflow/frontend/assets/chart-scatter-y6TzULil.js +0 -6
  2130. langflow/frontend/assets/chart-spline-CEA5cVhQ.js +0 -6
  2131. langflow/frontend/assets/check-check-ClNZOHnK.js +0 -6
  2132. langflow/frontend/assets/chef-hat-CaPpeL-C.js +0 -6
  2133. langflow/frontend/assets/cherry-BySmaCla.js +0 -6
  2134. langflow/frontend/assets/chevron-first-BCecWZmL.js +0 -6
  2135. langflow/frontend/assets/chevron-last-Du9es2JJ.js +0 -6
  2136. langflow/frontend/assets/chevron-left-Cq3I1qba.js +0 -6
  2137. langflow/frontend/assets/chevron-right-CwFaSf0F.js +0 -6
  2138. langflow/frontend/assets/chevrons-down-BRuUUFNf.js +0 -6
  2139. langflow/frontend/assets/chevrons-down-up-Cqdon8Cs.js +0 -6
  2140. langflow/frontend/assets/chevrons-left-CPqh4Ona.js +0 -6
  2141. langflow/frontend/assets/chevrons-left-right-BJgOt5VE.js +0 -6
  2142. langflow/frontend/assets/chevrons-left-right-ellipsis-DbRjI8TG.js +0 -6
  2143. langflow/frontend/assets/chevrons-right-CFQExgTg.js +0 -6
  2144. langflow/frontend/assets/chevrons-right-left-D5m2CE6v.js +0 -6
  2145. langflow/frontend/assets/chevrons-up-B7e8Mo5C.js +0 -6
  2146. langflow/frontend/assets/chrome-Dqyot24M.js +0 -6
  2147. langflow/frontend/assets/church-DtIQd7CT.js +0 -6
  2148. langflow/frontend/assets/cigarette-7ATwPdNN.js +0 -6
  2149. langflow/frontend/assets/cigarette-off-DiZdQPKm.js +0 -6
  2150. langflow/frontend/assets/circle-alert-D-Gecvfl.js +0 -6
  2151. langflow/frontend/assets/circle-arrow-down-BdeVznuS.js +0 -6
  2152. langflow/frontend/assets/circle-arrow-left-B4to1ZJF.js +0 -6
  2153. langflow/frontend/assets/circle-arrow-out-down-left-CF9Cd-oH.js +0 -6
  2154. langflow/frontend/assets/circle-arrow-out-down-right-DMBy-lFt.js +0 -6
  2155. langflow/frontend/assets/circle-arrow-out-up-left-DPYjVu0c.js +0 -6
  2156. langflow/frontend/assets/circle-arrow-out-up-right-CbfpCfrW.js +0 -6
  2157. langflow/frontend/assets/circle-arrow-right-BcKLMMHF.js +0 -6
  2158. langflow/frontend/assets/circle-arrow-up-BGdsVL2T.js +0 -6
  2159. langflow/frontend/assets/circle-check-Z0NiciJJ.js +0 -6
  2160. langflow/frontend/assets/circle-check-big-JI3bLOj7.js +0 -6
  2161. langflow/frontend/assets/circle-chevron-down-BgrEZa9q.js +0 -6
  2162. langflow/frontend/assets/circle-chevron-left-BAKwtEiL.js +0 -6
  2163. langflow/frontend/assets/circle-chevron-right-C1ZH0eJ-.js +0 -6
  2164. langflow/frontend/assets/circle-chevron-up-Cnf8gp85.js +0 -6
  2165. langflow/frontend/assets/circle-dashed-D_TuIt7c.js +0 -6
  2166. langflow/frontend/assets/circle-divide-ClTrdvFQ.js +0 -6
  2167. langflow/frontend/assets/circle-dollar-sign-DA5-kn0L.js +0 -6
  2168. langflow/frontend/assets/circle-dot-ZAt1HAeI.js +0 -6
  2169. langflow/frontend/assets/circle-dot-dashed-BXjOc_4Q.js +0 -6
  2170. langflow/frontend/assets/circle-ellipsis-B1_tW3gr.js +0 -6
  2171. langflow/frontend/assets/circle-equal-DU62SrTQ.js +0 -6
  2172. langflow/frontend/assets/circle-fading-arrow-up-DFKzqMFv.js +0 -6
  2173. langflow/frontend/assets/circle-fading-plus-PzLo7r_0.js +0 -6
  2174. langflow/frontend/assets/circle-gauge-BcbNHJuX.js +0 -6
  2175. langflow/frontend/assets/circle-help-Ckm9gPgw.js +0 -6
  2176. langflow/frontend/assets/circle-minus-GpfPuNbr.js +0 -6
  2177. langflow/frontend/assets/circle-off-B5-aZjI1.js +0 -6
  2178. langflow/frontend/assets/circle-parking-CBSJbjze.js +0 -6
  2179. langflow/frontend/assets/circle-parking-off-B3wkqs4x.js +0 -6
  2180. langflow/frontend/assets/circle-pause-Cm3mIQ0t.js +0 -6
  2181. langflow/frontend/assets/circle-percent-DwXphTWo.js +0 -6
  2182. langflow/frontend/assets/circle-play-BD9MY0Gt.js +0 -6
  2183. langflow/frontend/assets/circle-plus-DCH9xjyb.js +0 -6
  2184. langflow/frontend/assets/circle-power-BR7bIRlN.js +0 -6
  2185. langflow/frontend/assets/circle-slash-2-CWE54o-b.js +0 -6
  2186. langflow/frontend/assets/circle-slash-CCqdU40d.js +0 -6
  2187. langflow/frontend/assets/circle-small-BnCPeGmh.js +0 -6
  2188. langflow/frontend/assets/circle-stop-ABs_aXda.js +0 -6
  2189. langflow/frontend/assets/circle-user-BpliOyeX.js +0 -6
  2190. langflow/frontend/assets/circle-user-round-DyqUN_rV.js +0 -6
  2191. langflow/frontend/assets/circuit-board-BLg6EVSA.js +0 -6
  2192. langflow/frontend/assets/citrus-DdWQAj1w.js +0 -6
  2193. langflow/frontend/assets/clapperboard-CnrJj1ti.js +0 -6
  2194. langflow/frontend/assets/clipboard-Cvdzmyts.js +0 -6
  2195. langflow/frontend/assets/clipboard-check-CsyaUwBV.js +0 -6
  2196. langflow/frontend/assets/clipboard-copy-_vz48E8U.js +0 -6
  2197. langflow/frontend/assets/clipboard-list-CEpgqIGv.js +0 -6
  2198. langflow/frontend/assets/clipboard-minus-CEwOZOit.js +0 -6
  2199. langflow/frontend/assets/clipboard-paste-C6bTwu3o.js +0 -6
  2200. langflow/frontend/assets/clipboard-pen-De8N2op_.js +0 -6
  2201. langflow/frontend/assets/clipboard-pen-line-BVPqQCn4.js +0 -6
  2202. langflow/frontend/assets/clipboard-plus-CSDySz8C.js +0 -6
  2203. langflow/frontend/assets/clipboard-type-CSnYo0DH.js +0 -6
  2204. langflow/frontend/assets/clipboard-x-CA4uZ8Yv.js +0 -6
  2205. langflow/frontend/assets/clock-1-BX-HR18I.js +0 -6
  2206. langflow/frontend/assets/clock-10-BUe9wlT6.js +0 -6
  2207. langflow/frontend/assets/clock-11-D-prECX8.js +0 -6
  2208. langflow/frontend/assets/clock-12-Bj_bnwHJ.js +0 -6
  2209. langflow/frontend/assets/clock-2-y9ZDf_IT.js +0 -6
  2210. langflow/frontend/assets/clock-3-R9cvwwHx.js +0 -6
  2211. langflow/frontend/assets/clock-4-Dph5bEZh.js +0 -6
  2212. langflow/frontend/assets/clock-5-CggQkeAD.js +0 -6
  2213. langflow/frontend/assets/clock-6-CXqRgUB2.js +0 -6
  2214. langflow/frontend/assets/clock-7-BUYxWl1O.js +0 -6
  2215. langflow/frontend/assets/clock-8-ChteRlK8.js +0 -6
  2216. langflow/frontend/assets/clock-9-BGmyi_VK.js +0 -6
  2217. langflow/frontend/assets/clock-alert-BT09qwLs.js +0 -6
  2218. langflow/frontend/assets/clock-arrow-down-Cy18e_2R.js +0 -6
  2219. langflow/frontend/assets/clock-arrow-up-DPaUuL0B.js +0 -6
  2220. langflow/frontend/assets/clock-fading-CIvuz1mw.js +0 -6
  2221. langflow/frontend/assets/clock-rr6Ek8IQ.js +0 -6
  2222. langflow/frontend/assets/cloud-ISds0Edr.js +0 -6
  2223. langflow/frontend/assets/cloud-alert-rTmD9KLN.js +0 -6
  2224. langflow/frontend/assets/cloud-cog-CeIudCEo.js +0 -6
  2225. langflow/frontend/assets/cloud-download-7OK9E-IE.js +0 -6
  2226. langflow/frontend/assets/cloud-drizzle-BgTYS6s4.js +0 -6
  2227. langflow/frontend/assets/cloud-fog-B4h6Q1tp.js +0 -6
  2228. langflow/frontend/assets/cloud-hail-C0mVSW15.js +0 -6
  2229. langflow/frontend/assets/cloud-lightning-D1POwx-2.js +0 -6
  2230. langflow/frontend/assets/cloud-moon-CzX06DuN.js +0 -6
  2231. langflow/frontend/assets/cloud-moon-rain-zxDpykHS.js +0 -6
  2232. langflow/frontend/assets/cloud-off-mQYJQblC.js +0 -6
  2233. langflow/frontend/assets/cloud-rain-8hbx9h2Q.js +0 -6
  2234. langflow/frontend/assets/cloud-rain-wind-BIkbntFK.js +0 -6
  2235. langflow/frontend/assets/cloud-snow-D_0QZSPi.js +0 -6
  2236. langflow/frontend/assets/cloud-sun-pZ5LSZr_.js +0 -6
  2237. langflow/frontend/assets/cloud-sun-rain-C_txrNKU.js +0 -6
  2238. langflow/frontend/assets/cloud-upload-DIfCC_PO.js +0 -6
  2239. langflow/frontend/assets/cloudy-Bv74kfE3.js +0 -6
  2240. langflow/frontend/assets/clover-DJgtAjEr.js +0 -6
  2241. langflow/frontend/assets/club-_cmjoK_i.js +0 -6
  2242. langflow/frontend/assets/code-xml-BMSDHDjS.js +0 -6
  2243. langflow/frontend/assets/codepen-BPQtBs8W.js +0 -6
  2244. langflow/frontend/assets/codesandbox-DcyGhg8-.js +0 -6
  2245. langflow/frontend/assets/coffee-DVCnyZKe.js +0 -6
  2246. langflow/frontend/assets/cog-Dl4eJkV1.js +0 -6
  2247. langflow/frontend/assets/coins-BgLo7alw.js +0 -6
  2248. langflow/frontend/assets/columns-2-4JYQ9FnC.js +0 -6
  2249. langflow/frontend/assets/columns-3-D9WsoAtb.js +0 -6
  2250. langflow/frontend/assets/columns-3-cog-CZUx7EoD.js +0 -6
  2251. langflow/frontend/assets/columns-4-DHpfb0ZX.js +0 -6
  2252. langflow/frontend/assets/combine-UwB2Lgmm.js +0 -6
  2253. langflow/frontend/assets/command-CCLFONZt.js +0 -6
  2254. langflow/frontend/assets/compass-Crso02wN.js +0 -6
  2255. langflow/frontend/assets/component-guEKSsvn.js +0 -6
  2256. langflow/frontend/assets/computer-CiYFjDoG.js +0 -6
  2257. langflow/frontend/assets/concierge-bell-BmdH4pVI.js +0 -6
  2258. langflow/frontend/assets/cone-BLpOGb-s.js +0 -6
  2259. langflow/frontend/assets/construction-CfO02Mao.js +0 -6
  2260. langflow/frontend/assets/contact-DtlU7gCz.js +0 -6
  2261. langflow/frontend/assets/contact-round-C57dX7sd.js +0 -6
  2262. langflow/frontend/assets/container-DUVtmAtr.js +0 -6
  2263. langflow/frontend/assets/contrast-D0evG4E4.js +0 -6
  2264. langflow/frontend/assets/cookie-dBSZe9o6.js +0 -6
  2265. langflow/frontend/assets/cooking-pot-NMch466O.js +0 -6
  2266. langflow/frontend/assets/copy-C2tgcwuQ.js +0 -6
  2267. langflow/frontend/assets/copy-check-CG4K1dCb.js +0 -6
  2268. langflow/frontend/assets/copy-minus-x1TMN8Qw.js +0 -6
  2269. langflow/frontend/assets/copy-plus-C9tH6cNh.js +0 -6
  2270. langflow/frontend/assets/copy-slash-CmHErJia.js +0 -6
  2271. langflow/frontend/assets/copy-x-C1euOG0F.js +0 -6
  2272. langflow/frontend/assets/copyleft-Db90l3Tw.js +0 -6
  2273. langflow/frontend/assets/copyright-pV51xEsx.js +0 -6
  2274. langflow/frontend/assets/corner-down-left-CzIneTyh.js +0 -6
  2275. langflow/frontend/assets/corner-down-right-DHLaJfOX.js +0 -6
  2276. langflow/frontend/assets/corner-left-down-B9tznnhA.js +0 -6
  2277. langflow/frontend/assets/corner-left-up-DPw8pvK7.js +0 -6
  2278. langflow/frontend/assets/corner-right-down-B1-hQPbv.js +0 -6
  2279. langflow/frontend/assets/corner-right-up-D3GVP06q.js +0 -6
  2280. langflow/frontend/assets/corner-up-left-DvFTK-hi.js +0 -6
  2281. langflow/frontend/assets/corner-up-right-B_mSqbVC.js +0 -6
  2282. langflow/frontend/assets/cpu-C2UUxbN-.js +0 -6
  2283. langflow/frontend/assets/creative-commons-BYVC5CpE.js +0 -6
  2284. langflow/frontend/assets/credit-card-B8Ulbya5.js +0 -6
  2285. langflow/frontend/assets/croissant-BstBkOk-.js +0 -6
  2286. langflow/frontend/assets/crop-CrEcD3AZ.js +0 -6
  2287. langflow/frontend/assets/cross-B0sUKY8p.js +0 -6
  2288. langflow/frontend/assets/crosshair-BA3RliiT.js +0 -6
  2289. langflow/frontend/assets/crown-CH7Kuj25.js +0 -6
  2290. langflow/frontend/assets/cuboid-ClkSX1Gl.js +0 -6
  2291. langflow/frontend/assets/cup-soda-Dzbh2XEJ.js +0 -6
  2292. langflow/frontend/assets/currency-CHAx-mXw.js +0 -6
  2293. langflow/frontend/assets/cylinder-Dgc_2uzR.js +0 -6
  2294. langflow/frontend/assets/dam-RgFHpyUx.js +0 -6
  2295. langflow/frontend/assets/database-OgFLip_j.js +0 -6
  2296. langflow/frontend/assets/database-backup-DW-QWa60.js +0 -6
  2297. langflow/frontend/assets/database-zap-RQTzWPOZ.js +0 -6
  2298. langflow/frontend/assets/decimals-arrow-left-BZbFcTaY.js +0 -6
  2299. langflow/frontend/assets/decimals-arrow-right-B3g1RCLs.js +0 -6
  2300. langflow/frontend/assets/delete-ts7-suHg.js +0 -6
  2301. langflow/frontend/assets/dessert-Dnc1SWI8.js +0 -6
  2302. langflow/frontend/assets/diameter-D1oL3BkC.js +0 -6
  2303. langflow/frontend/assets/diamond-DEbnCDdW.js +0 -6
  2304. langflow/frontend/assets/diamond-minus-qiEa4VeO.js +0 -6
  2305. langflow/frontend/assets/diamond-percent-C-hICqmH.js +0 -6
  2306. langflow/frontend/assets/diamond-plus-2DUAwUCR.js +0 -6
  2307. langflow/frontend/assets/dice-1-C0GootU8.js +0 -6
  2308. langflow/frontend/assets/dice-2-CtrT78nm.js +0 -6
  2309. langflow/frontend/assets/dice-3-B-7CR4_b.js +0 -6
  2310. langflow/frontend/assets/dice-4-BspZjbfx.js +0 -6
  2311. langflow/frontend/assets/dice-5-BTNywaNY.js +0 -6
  2312. langflow/frontend/assets/dice-6-WfTJvAOh.js +0 -6
  2313. langflow/frontend/assets/dices-BbBsoqAW.js +0 -6
  2314. langflow/frontend/assets/diff-B0s_M458.js +0 -6
  2315. langflow/frontend/assets/disc-2-D910oD8Y.js +0 -6
  2316. langflow/frontend/assets/disc-3-BUPcNa1Y.js +0 -6
  2317. langflow/frontend/assets/disc-album-BSHpZ6tf.js +0 -6
  2318. langflow/frontend/assets/disc-aqCKY_1o.js +0 -6
  2319. langflow/frontend/assets/divide-TsjYdxiC.js +0 -6
  2320. langflow/frontend/assets/dna-jygECTkf.js +0 -6
  2321. langflow/frontend/assets/dna-off-Dn4r9y3L.js +0 -6
  2322. langflow/frontend/assets/dock-DrbnTaRq.js +0 -6
  2323. langflow/frontend/assets/dog-xL2XgQWP.js +0 -6
  2324. langflow/frontend/assets/dollar-sign-owk8CFFE.js +0 -6
  2325. langflow/frontend/assets/donut-BdRW99gm.js +0 -6
  2326. langflow/frontend/assets/door-closed-B79lbKyI.js +0 -6
  2327. langflow/frontend/assets/door-open-BeQpxYa8.js +0 -6
  2328. langflow/frontend/assets/dot-gNU3N0tX.js +0 -6
  2329. langflow/frontend/assets/download-CZUDGUSp.js +0 -6
  2330. langflow/frontend/assets/drafting-compass-0CD5CY5s.js +0 -6
  2331. langflow/frontend/assets/drama-DoR6OsYX.js +0 -6
  2332. langflow/frontend/assets/dribbble-CnYCa2BE.js +0 -6
  2333. langflow/frontend/assets/drill-M56V7Vdn.js +0 -6
  2334. langflow/frontend/assets/droplet-D8pmq39R.js +0 -6
  2335. langflow/frontend/assets/droplet-off-Mu2Q1HfB.js +0 -6
  2336. langflow/frontend/assets/droplets-CQb9JmvG.js +0 -6
  2337. langflow/frontend/assets/drum-C2e0Us05.js +0 -6
  2338. langflow/frontend/assets/drumstick-54uTTDpl.js +0 -6
  2339. langflow/frontend/assets/dumbbell-D37LQyeJ.js +0 -6
  2340. langflow/frontend/assets/ear-off-ZYzR0mU5.js +0 -6
  2341. langflow/frontend/assets/ear-yCKCe0f8.js +0 -6
  2342. langflow/frontend/assets/earth-DDe8e7AM.js +0 -6
  2343. langflow/frontend/assets/earth-lock-CTf5hSKz.js +0 -6
  2344. langflow/frontend/assets/eclipse-Ckh-nvWY.js +0 -6
  2345. langflow/frontend/assets/egg-DBoRiOjt.js +0 -6
  2346. langflow/frontend/assets/egg-fried-pCb0X569.js +0 -6
  2347. langflow/frontend/assets/egg-off-DQgkLE-K.js +0 -6
  2348. langflow/frontend/assets/ellipsis-uXqZ2dXT.js +0 -6
  2349. langflow/frontend/assets/ellipsis-vertical-om5ySLop.js +0 -6
  2350. langflow/frontend/assets/equal-BwPOdSe7.js +0 -6
  2351. langflow/frontend/assets/equal-approximately-C2uPsv65.js +0 -6
  2352. langflow/frontend/assets/equal-not-CuZ_iBNQ.js +0 -6
  2353. langflow/frontend/assets/eraser-DKnTayMO.js +0 -6
  2354. langflow/frontend/assets/ethernet-port-D-hmYqE9.js +0 -6
  2355. langflow/frontend/assets/euro-4FhylVum.js +0 -6
  2356. langflow/frontend/assets/expand-DGuHJZtp.js +0 -6
  2357. langflow/frontend/assets/eye-2lruycw0.js +0 -6
  2358. langflow/frontend/assets/eye-closed-D7fKsq1v.js +0 -6
  2359. langflow/frontend/assets/eye-off-B7DTNfPe.js +0 -6
  2360. langflow/frontend/assets/facebook-Bo3KRJjk.js +0 -6
  2361. langflow/frontend/assets/factory-DtAJt4rU.js +0 -6
  2362. langflow/frontend/assets/fan-DQPDw_WI.js +0 -6
  2363. langflow/frontend/assets/fast-forward-BJJD4cHS.js +0 -6
  2364. langflow/frontend/assets/feather-DyQJOlhi.js +0 -6
  2365. langflow/frontend/assets/fence-Dy4ujlzr.js +0 -6
  2366. langflow/frontend/assets/ferris-wheel-CEb8dUdY.js +0 -6
  2367. langflow/frontend/assets/figma-D_0zyllL.js +0 -6
  2368. langflow/frontend/assets/file-BgCI5bKS.js +0 -6
  2369. langflow/frontend/assets/file-archive-nTx4t6XU.js +0 -6
  2370. langflow/frontend/assets/file-audio-2-lLlctC0F.js +0 -6
  2371. langflow/frontend/assets/file-audio-Bx2b2iS1.js +0 -6
  2372. langflow/frontend/assets/file-axis-3d-CFDr-mmw.js +0 -6
  2373. langflow/frontend/assets/file-badge-2-BodHR2dH.js +0 -6
  2374. langflow/frontend/assets/file-badge-RFsPKKYQ.js +0 -6
  2375. langflow/frontend/assets/file-box-LbnU_3W_.js +0 -6
  2376. langflow/frontend/assets/file-chart-column-DHHc2woy.js +0 -6
  2377. langflow/frontend/assets/file-chart-column-increasing-9okIUsoY.js +0 -6
  2378. langflow/frontend/assets/file-chart-line-BTGuPMjT.js +0 -6
  2379. langflow/frontend/assets/file-chart-pie-BlMvG50t.js +0 -6
  2380. langflow/frontend/assets/file-check-2-DTdcYTxS.js +0 -6
  2381. langflow/frontend/assets/file-check-7k4_fcLr.js +0 -6
  2382. langflow/frontend/assets/file-clock-Dg2QuFmG.js +0 -6
  2383. langflow/frontend/assets/file-code-2-CjCuexCU.js +0 -6
  2384. langflow/frontend/assets/file-code-D6Ct4NQA.js +0 -6
  2385. langflow/frontend/assets/file-cog-DjOTW2x1.js +0 -6
  2386. langflow/frontend/assets/file-diff-BV2KRZid.js +0 -6
  2387. langflow/frontend/assets/file-digit-D4XCzaOy.js +0 -6
  2388. langflow/frontend/assets/file-down-BUEDjMhC.js +0 -6
  2389. langflow/frontend/assets/file-heart-Doy3NQTr.js +0 -6
  2390. langflow/frontend/assets/file-image-D3ALo4rp.js +0 -6
  2391. langflow/frontend/assets/file-input-DxzFaJFK.js +0 -6
  2392. langflow/frontend/assets/file-json-2-PLrIFXcL.js +0 -6
  2393. langflow/frontend/assets/file-json-Chtai1j7.js +0 -6
  2394. langflow/frontend/assets/file-key-2-BRXagJAL.js +0 -6
  2395. langflow/frontend/assets/file-key-CwrjLLmh.js +0 -6
  2396. langflow/frontend/assets/file-lock-2-LuGS32Sp.js +0 -6
  2397. langflow/frontend/assets/file-lock-Rl-QSnAz.js +0 -6
  2398. langflow/frontend/assets/file-minus-2-wIJPGjAu.js +0 -6
  2399. langflow/frontend/assets/file-minus-DzxqLtIi.js +0 -6
  2400. langflow/frontend/assets/file-music-Bymengv5.js +0 -6
  2401. langflow/frontend/assets/file-output-BR8jMUko.js +0 -6
  2402. langflow/frontend/assets/file-pen-D8tQHRJU.js +0 -6
  2403. langflow/frontend/assets/file-pen-line-CK81CmAH.js +0 -6
  2404. langflow/frontend/assets/file-plus-2-HZ-sPLpE.js +0 -6
  2405. langflow/frontend/assets/file-plus-DkZZ43KA.js +0 -6
  2406. langflow/frontend/assets/file-question-De5nvYiI.js +0 -6
  2407. langflow/frontend/assets/file-scan-D3BrRtkT.js +0 -6
  2408. langflow/frontend/assets/file-search-2-30XAjKkS.js +0 -6
  2409. langflow/frontend/assets/file-search-7CSiHvFK.js +0 -6
  2410. langflow/frontend/assets/file-sliders-Ccfqf4aW.js +0 -6
  2411. langflow/frontend/assets/file-spreadsheet-CMkVlrA2.js +0 -6
  2412. langflow/frontend/assets/file-stack-DT3zhna_.js +0 -6
  2413. langflow/frontend/assets/file-symlink-DGRiYlUV.js +0 -6
  2414. langflow/frontend/assets/file-terminal-DwxTcqtO.js +0 -6
  2415. langflow/frontend/assets/file-text-M7y0fhWj.js +0 -6
  2416. langflow/frontend/assets/file-type-2-nbzHln4x.js +0 -6
  2417. langflow/frontend/assets/file-type-rQtkB28l.js +0 -6
  2418. langflow/frontend/assets/file-up-D2H5-lji.js +0 -6
  2419. langflow/frontend/assets/file-user-DcMhwk5m.js +0 -6
  2420. langflow/frontend/assets/file-video-2-C5iIElxE.js +0 -6
  2421. langflow/frontend/assets/file-video-BCINtsZg.js +0 -6
  2422. langflow/frontend/assets/file-volume-2-6lZFbWfm.js +0 -6
  2423. langflow/frontend/assets/file-volume-Biszrl6h.js +0 -6
  2424. langflow/frontend/assets/file-warning-CmgVFf6J.js +0 -6
  2425. langflow/frontend/assets/file-x-2-JUoOpeOo.js +0 -6
  2426. langflow/frontend/assets/file-x-BjnvUpBL.js +0 -6
  2427. langflow/frontend/assets/files-C5BxTslf.js +0 -6
  2428. langflow/frontend/assets/film-BFSHN3oe.js +0 -6
  2429. langflow/frontend/assets/fingerprint-Csit4LVp.js +0 -6
  2430. langflow/frontend/assets/fire-extinguisher-D8VXg1Xl.js +0 -6
  2431. langflow/frontend/assets/fish-aSZXSnmi.js +0 -6
  2432. langflow/frontend/assets/fish-off-_KhOPml4.js +0 -6
  2433. langflow/frontend/assets/fish-symbol-TS6BemzM.js +0 -6
  2434. langflow/frontend/assets/flag-CDKQxgw4.js +0 -6
  2435. langflow/frontend/assets/flag-off-snRLHCD_.js +0 -6
  2436. langflow/frontend/assets/flag-triangle-left-p1wRc3Ls.js +0 -6
  2437. langflow/frontend/assets/flag-triangle-right-Br_DpBch.js +0 -6
  2438. langflow/frontend/assets/flame-CfuHx_MO.js +0 -6
  2439. langflow/frontend/assets/flame-kindling-CtWnSNMy.js +0 -6
  2440. langflow/frontend/assets/flashlight-DRf2ZbpF.js +0 -6
  2441. langflow/frontend/assets/flashlight-off-2w3Nzjx-.js +0 -6
  2442. langflow/frontend/assets/flask-conical-CX8msMIb.js +0 -6
  2443. langflow/frontend/assets/flask-conical-off-Cr_PzyBA.js +0 -6
  2444. langflow/frontend/assets/flask-round-D2AwG3dv.js +0 -6
  2445. langflow/frontend/assets/flip-horizontal-2-DJ2AVD1P.js +0 -6
  2446. langflow/frontend/assets/flip-horizontal-BE0FI9jo.js +0 -6
  2447. langflow/frontend/assets/flip-vertical-2-Df78KFm6.js +0 -6
  2448. langflow/frontend/assets/flip-vertical-y-kYuE7I.js +0 -6
  2449. langflow/frontend/assets/flower-2-DTF2639o.js +0 -6
  2450. langflow/frontend/assets/flower-imOzkrnB.js +0 -6
  2451. langflow/frontend/assets/focus-B8YJBYPy.js +0 -6
  2452. langflow/frontend/assets/fold-horizontal-CUyqEpyC.js +0 -6
  2453. langflow/frontend/assets/fold-vertical-BuLokj6V.js +0 -6
  2454. langflow/frontend/assets/folder-B81GiGSS.js +0 -6
  2455. langflow/frontend/assets/folder-archive-DVM4hQ4e.js +0 -6
  2456. langflow/frontend/assets/folder-check-CjOqJPj5.js +0 -6
  2457. langflow/frontend/assets/folder-clock-CYoAIMTg.js +0 -6
  2458. langflow/frontend/assets/folder-closed-B2rWx3UG.js +0 -6
  2459. langflow/frontend/assets/folder-code-D2LvC0Yk.js +0 -6
  2460. langflow/frontend/assets/folder-cog-BCgWrDyu.js +0 -6
  2461. langflow/frontend/assets/folder-dot-eTxWx_Gb.js +0 -6
  2462. langflow/frontend/assets/folder-down-BmRuTS3_.js +0 -6
  2463. langflow/frontend/assets/folder-git-2-Deilw91G.js +0 -6
  2464. langflow/frontend/assets/folder-git-DPLi_am2.js +0 -6
  2465. langflow/frontend/assets/folder-heart-DiU_Y7cB.js +0 -6
  2466. langflow/frontend/assets/folder-input-DBEBqukG.js +0 -6
  2467. langflow/frontend/assets/folder-kanban-HS5hd1H_.js +0 -6
  2468. langflow/frontend/assets/folder-key-QPS2EXq0.js +0 -6
  2469. langflow/frontend/assets/folder-lock-DIVIA8TZ.js +0 -6
  2470. langflow/frontend/assets/folder-minus-DzwLZNVm.js +0 -6
  2471. langflow/frontend/assets/folder-open-DcjJ8Fh8.js +0 -6
  2472. langflow/frontend/assets/folder-open-dot-Czw-sX9k.js +0 -6
  2473. langflow/frontend/assets/folder-output-PX85S3mm.js +0 -6
  2474. langflow/frontend/assets/folder-pen-C-zxJ_Hy.js +0 -6
  2475. langflow/frontend/assets/folder-plus-CKBtX7bC.js +0 -6
  2476. langflow/frontend/assets/folder-root-DYZvIUYC.js +0 -6
  2477. langflow/frontend/assets/folder-search-2-BL8KesXu.js +0 -6
  2478. langflow/frontend/assets/folder-search-Cp9m0Gd0.js +0 -6
  2479. langflow/frontend/assets/folder-symlink-CO14LhSU.js +0 -6
  2480. langflow/frontend/assets/folder-sync-hhW7dtwP.js +0 -6
  2481. langflow/frontend/assets/folder-tree-BPjpxrHr.js +0 -6
  2482. langflow/frontend/assets/folder-up-ChaLrHPp.js +0 -6
  2483. langflow/frontend/assets/folder-x-D-1m5y33.js +0 -6
  2484. langflow/frontend/assets/folders-CB95Saji.js +0 -6
  2485. langflow/frontend/assets/footprints-EznvHGh5.js +0 -6
  2486. langflow/frontend/assets/forklift-BVCBa6jY.js +0 -6
  2487. langflow/frontend/assets/forward-C1iVolqu.js +0 -6
  2488. langflow/frontend/assets/frame-DNDRrTNk.js +0 -6
  2489. langflow/frontend/assets/framer-CMMWU-1T.js +0 -6
  2490. langflow/frontend/assets/frown-DP1jIb1u.js +0 -6
  2491. langflow/frontend/assets/fuel-Dh9an1tH.js +0 -6
  2492. langflow/frontend/assets/fullscreen-CxQlqVK-.js +0 -6
  2493. langflow/frontend/assets/funnel-DYmd_HdI.js +0 -6
  2494. langflow/frontend/assets/funnel-plus-DSDSI8CB.js +0 -6
  2495. langflow/frontend/assets/funnel-x-JX4ZBBIO.js +0 -6
  2496. langflow/frontend/assets/gallery-horizontal-DoLdjoaf.js +0 -6
  2497. langflow/frontend/assets/gallery-horizontal-end-RMxxyINw.js +0 -6
  2498. langflow/frontend/assets/gallery-thumbnails-EgmLv4YY.js +0 -6
  2499. langflow/frontend/assets/gallery-vertical-YmsgVcuN.js +0 -6
  2500. langflow/frontend/assets/gallery-vertical-end-CLIRyDvg.js +0 -6
  2501. langflow/frontend/assets/gamepad-2-x4GJaYvn.js +0 -6
  2502. langflow/frontend/assets/gamepad-D8VsJG0p.js +0 -6
  2503. langflow/frontend/assets/gauge-SJTeiKVQ.js +0 -6
  2504. langflow/frontend/assets/gavel-B5RjdN8V.js +0 -6
  2505. langflow/frontend/assets/gem-jeeIVOyW.js +0 -6
  2506. langflow/frontend/assets/ghost-DZN8Y0VB.js +0 -6
  2507. langflow/frontend/assets/gift-D9PGjSon.js +0 -6
  2508. langflow/frontend/assets/git-branch-mAjsDbYi.js +0 -6
  2509. langflow/frontend/assets/git-branch-plus-DZis-IPm.js +0 -6
  2510. langflow/frontend/assets/git-commit-horizontal-BO6LgYbk.js +0 -6
  2511. langflow/frontend/assets/git-commit-vertical-C4poVr67.js +0 -6
  2512. langflow/frontend/assets/git-compare-Df33agfF.js +0 -6
  2513. langflow/frontend/assets/git-compare-arrows-K0ChJ2X2.js +0 -6
  2514. langflow/frontend/assets/git-fork-BXsiu2Ey.js +0 -6
  2515. langflow/frontend/assets/git-graph-BGo4_6Pg.js +0 -6
  2516. langflow/frontend/assets/git-merge-BD73VcR6.js +0 -6
  2517. langflow/frontend/assets/git-pull-request-arrow-DUTzRchB.js +0 -6
  2518. langflow/frontend/assets/git-pull-request-closed-CZbHDceO.js +0 -6
  2519. langflow/frontend/assets/git-pull-request-create-Dp-XQVj3.js +0 -6
  2520. langflow/frontend/assets/git-pull-request-create-arrow-C8LHFBbe.js +0 -6
  2521. langflow/frontend/assets/git-pull-request-draft-CEkepoUD.js +0 -6
  2522. langflow/frontend/assets/git-pull-request-gsSggnIc.js +0 -6
  2523. langflow/frontend/assets/github-BzKDbrS_.js +0 -6
  2524. langflow/frontend/assets/gitlab-A2WluwT9.js +0 -6
  2525. langflow/frontend/assets/glass-water-K-hADKoa.js +0 -6
  2526. langflow/frontend/assets/glasses-DCDMc4a_.js +0 -6
  2527. langflow/frontend/assets/globe--_05dSJ5.js +0 -6
  2528. langflow/frontend/assets/globe-lock-CpHDUNbG.js +0 -6
  2529. langflow/frontend/assets/goal-DhloJjtR.js +0 -6
  2530. langflow/frontend/assets/grab-DmjrXMMX.js +0 -6
  2531. langflow/frontend/assets/graduation-cap-DX_tY0jc.js +0 -6
  2532. langflow/frontend/assets/grape-BVnlQWVh.js +0 -6
  2533. langflow/frontend/assets/grid-2x2-Bc9y0pyt.js +0 -6
  2534. langflow/frontend/assets/grid-2x2-check-vTAG-fzG.js +0 -6
  2535. langflow/frontend/assets/grid-2x2-plus-5KL7nCxj.js +0 -6
  2536. langflow/frontend/assets/grid-2x2-x-rS3VvhOy.js +0 -6
  2537. langflow/frontend/assets/grid-3x3-Co2xPmHv.js +0 -6
  2538. langflow/frontend/assets/grip-Df0g2DGG.js +0 -6
  2539. langflow/frontend/assets/grip-horizontal-BO2dAjYG.js +0 -6
  2540. langflow/frontend/assets/grip-vertical-5o6l346_.js +0 -6
  2541. langflow/frontend/assets/group-CzyyxbE0.js +0 -6
  2542. langflow/frontend/assets/guitar-DLWWG6iG.js +0 -6
  2543. langflow/frontend/assets/ham-B9z5Aj2j.js +0 -6
  2544. langflow/frontend/assets/hammer-DVSJJ8mt.js +0 -6
  2545. langflow/frontend/assets/hand-C8e8RVQX.js +0 -6
  2546. langflow/frontend/assets/hand-coins-B8KT6KYb.js +0 -6
  2547. langflow/frontend/assets/hand-heart-HH-h6TuY.js +0 -6
  2548. langflow/frontend/assets/hand-helping-DlrRO9XZ.js +0 -6
  2549. langflow/frontend/assets/hand-metal-DcinDoRY.js +0 -6
  2550. langflow/frontend/assets/hand-platter-CxHXkpH_.js +0 -6
  2551. langflow/frontend/assets/handshake-TGfQCxRx.js +0 -6
  2552. langflow/frontend/assets/hard-drive-BJffTUQ5.js +0 -6
  2553. langflow/frontend/assets/hard-drive-download-DLtdbclQ.js +0 -6
  2554. langflow/frontend/assets/hard-drive-upload-kJN8heMo.js +0 -6
  2555. langflow/frontend/assets/hard-hat-HpUJLm8Z.js +0 -6
  2556. langflow/frontend/assets/hash-_VJXXJfM.js +0 -6
  2557. langflow/frontend/assets/haze-BXTuvki4.js +0 -6
  2558. langflow/frontend/assets/hdmi-port-CJ8Ox6yX.js +0 -6
  2559. langflow/frontend/assets/heading-1-C2oqvpYB.js +0 -6
  2560. langflow/frontend/assets/heading-2-CT6h-JqZ.js +0 -6
  2561. langflow/frontend/assets/heading-3-Cwr7gmTa.js +0 -6
  2562. langflow/frontend/assets/heading-4-B8CzpRTq.js +0 -6
  2563. langflow/frontend/assets/heading-5-rHlLgyp2.js +0 -6
  2564. langflow/frontend/assets/heading-6-BJcOv1-N.js +0 -6
  2565. langflow/frontend/assets/heading-_niO4huG.js +0 -6
  2566. langflow/frontend/assets/headphone-off-Bcd86ged.js +0 -6
  2567. langflow/frontend/assets/headphones-D4AypE3j.js +0 -6
  2568. langflow/frontend/assets/headset-DOLzvpJN.js +0 -6
  2569. langflow/frontend/assets/heart-crack-DLIyDSyc.js +0 -6
  2570. langflow/frontend/assets/heart-handshake-DUDq-2bs.js +0 -6
  2571. langflow/frontend/assets/heart-minus-ODTNsyrt.js +0 -6
  2572. langflow/frontend/assets/heart-off-DnRgqWAu.js +0 -6
  2573. langflow/frontend/assets/heart-plus-Bi8ShabO.js +0 -6
  2574. langflow/frontend/assets/heart-pulse-aDE96gF9.js +0 -6
  2575. langflow/frontend/assets/heart-ujvOuBdC.js +0 -6
  2576. langflow/frontend/assets/heater-B7khcyE7.js +0 -6
  2577. langflow/frontend/assets/hexagon-BWo-d30G.js +0 -6
  2578. langflow/frontend/assets/highlighter-ERo9X6Pv.js +0 -6
  2579. langflow/frontend/assets/history-B8LLGE-j.js +0 -6
  2580. langflow/frontend/assets/hop-C0UGpuhZ.js +0 -6
  2581. langflow/frontend/assets/hop-off-C0G-1tHX.js +0 -6
  2582. langflow/frontend/assets/hospital-CHbU3HWB.js +0 -6
  2583. langflow/frontend/assets/hotel-iiIap0Mu.js +0 -6
  2584. langflow/frontend/assets/hourglass-BFXjIa3X.js +0 -6
  2585. langflow/frontend/assets/house-plug-CfqOpRdm.js +0 -6
  2586. langflow/frontend/assets/house-plus-BLtRGwT4.js +0 -6
  2587. langflow/frontend/assets/house-wifi-MgYtuynk.js +0 -6
  2588. langflow/frontend/assets/house-wsFNig_N.js +0 -6
  2589. langflow/frontend/assets/ice-cream-bowl-qCunWpf4.js +0 -6
  2590. langflow/frontend/assets/ice-cream-cone-BTB82XDE.js +0 -6
  2591. langflow/frontend/assets/id-card-BuOBmRe6.js +0 -6
  2592. langflow/frontend/assets/image--lpmpxLH.js +0 -6
  2593. langflow/frontend/assets/image-down-BYuuus5_.js +0 -6
  2594. langflow/frontend/assets/image-minus-C6L4KamL.js +0 -6
  2595. langflow/frontend/assets/image-off-ghYqm0S8.js +0 -6
  2596. langflow/frontend/assets/image-play-DMFs592Y.js +0 -6
  2597. langflow/frontend/assets/image-plus-D7KasOnB.js +0 -6
  2598. langflow/frontend/assets/image-up-SxGTq0a1.js +0 -6
  2599. langflow/frontend/assets/image-upscale-DcnH9ujq.js +0 -6
  2600. langflow/frontend/assets/images-CeIMjAuX.js +0 -6
  2601. langflow/frontend/assets/import-DbQQqK3M.js +0 -6
  2602. langflow/frontend/assets/inbox-Y0iUKqcT.js +0 -6
  2603. langflow/frontend/assets/indent-decrease-Bwrscpy0.js +0 -6
  2604. langflow/frontend/assets/indent-increase-CQLt5g62.js +0 -6
  2605. langflow/frontend/assets/index--KnEw8BT.js +0 -1
  2606. langflow/frontend/assets/index-1EUQcjIq.js +0 -1
  2607. langflow/frontend/assets/index-29PZUoyO.js +0 -1
  2608. langflow/frontend/assets/index-5XPr72Qd.js +0 -1
  2609. langflow/frontend/assets/index-6jW9iy86.js +0 -2
  2610. langflow/frontend/assets/index-8Cll8WPK.js +0 -1
  2611. langflow/frontend/assets/index-8Gg12NVg.js +0 -1
  2612. langflow/frontend/assets/index-98JjDf8-.js +0 -1
  2613. langflow/frontend/assets/index-B2AsESpW.js +0 -1
  2614. langflow/frontend/assets/index-B4-7X9AI.js +0 -1
  2615. langflow/frontend/assets/index-B4JjT38u.js +0 -1
  2616. langflow/frontend/assets/index-B4dwBdev.js +0 -1
  2617. langflow/frontend/assets/index-B7mcLcIr.js +0 -1
  2618. langflow/frontend/assets/index-B9XFmSSH.js +0 -381
  2619. langflow/frontend/assets/index-BAB4fGIJ.js +0 -1
  2620. langflow/frontend/assets/index-BBi2ebw5.js +0 -1
  2621. langflow/frontend/assets/index-BDhvPtDu.js +0 -1
  2622. langflow/frontend/assets/index-BFSylzA5.js +0 -1
  2623. langflow/frontend/assets/index-BFZ64h4D.js +0 -1
  2624. langflow/frontend/assets/index-BHqTnZwj.js +0 -1
  2625. langflow/frontend/assets/index-BMyMHUkT.js +0 -1
  2626. langflow/frontend/assets/index-BPk9UESJ.js +0 -1
  2627. langflow/frontend/assets/index-BPz83s1E.js +0 -1
  2628. langflow/frontend/assets/index-BRW6ewbc.js +0 -1
  2629. langflow/frontend/assets/index-BRbLkm9V.js +0 -1
  2630. langflow/frontend/assets/index-BSKRBsEx.js +0 -1
  2631. langflow/frontend/assets/index-BTHVLy-7.js +0 -1
  2632. langflow/frontend/assets/index-BUPdGJci.js +0 -205
  2633. langflow/frontend/assets/index-BWsNpA_z.js +0 -1
  2634. langflow/frontend/assets/index-BX8Lhns7.js +0 -1
  2635. langflow/frontend/assets/index-BXErfbhD.js +0 -1
  2636. langflow/frontend/assets/index-BXr6QTLv.js +0 -1
  2637. langflow/frontend/assets/index-BZ-UFtDF.js +0 -1
  2638. langflow/frontend/assets/index-BaAcfnsO.js +0 -1
  2639. langflow/frontend/assets/index-BasAglYR.js +0 -1
  2640. langflow/frontend/assets/index-BcV29rpT.js +0 -1
  2641. langflow/frontend/assets/index-Bddr2Dt5.js +0 -1
  2642. langflow/frontend/assets/index-BewpJJiY.js +0 -1
  2643. langflow/frontend/assets/index-BgGMy7m0.js +0 -1
  2644. langflow/frontend/assets/index-BgkW0SGv.js +0 -1
  2645. langflow/frontend/assets/index-BgzuKUJw.js +0 -1
  2646. langflow/frontend/assets/index-BjC0H4lI.js +0 -1
  2647. langflow/frontend/assets/index-Bk5XZgoA.js +0 -1
  2648. langflow/frontend/assets/index-BkVUqli0.js +0 -1
  2649. langflow/frontend/assets/index-Bl7KWzZw.js +0 -1
  2650. langflow/frontend/assets/index-BmQcDkkL.js +0 -1
  2651. langflow/frontend/assets/index-BoLBdJ7H.js +0 -1
  2652. langflow/frontend/assets/index-Bp9wTHpt.js +0 -1
  2653. langflow/frontend/assets/index-BpJbimWy.js +0 -1
  2654. langflow/frontend/assets/index-Brz-V1eY.js +0 -1
  2655. langflow/frontend/assets/index-Bv8qlvTh.js +0 -767
  2656. langflow/frontend/assets/index-Bvd4PGe1.js +0 -1
  2657. langflow/frontend/assets/index-ByN0ffsP.js +0 -1
  2658. langflow/frontend/assets/index-BzBbkJh4.js +0 -1
  2659. langflow/frontend/assets/index-BzRdbD8k.js +0 -127
  2660. langflow/frontend/assets/index-C14AFgfo.js +0 -1
  2661. langflow/frontend/assets/index-C3T9XNME.js +0 -1
  2662. langflow/frontend/assets/index-C4rXXdIu.js +0 -1
  2663. langflow/frontend/assets/index-C576x0WV.js +0 -1
  2664. langflow/frontend/assets/index-C5CbD6QO.js +0 -1
  2665. langflow/frontend/assets/index-C8DIeWQq.js +0 -1
  2666. langflow/frontend/assets/index-C9DroFfA.js +0 -1
  2667. langflow/frontend/assets/index-CBIfuke7.js +0 -1
  2668. langflow/frontend/assets/index-CC-BvXJs.js +0 -1
  2669. langflow/frontend/assets/index-CC462a3K.js +0 -1
  2670. langflow/frontend/assets/index-CErPSub6.js +0 -1
  2671. langflow/frontend/assets/index-CJW7PPoy.js +0 -1
  2672. langflow/frontend/assets/index-CPfe5I3t.js +0 -1
  2673. langflow/frontend/assets/index-CQe6QFmd.js +0 -1
  2674. langflow/frontend/assets/index-CRZ8gVYx.js +0 -1
  2675. langflow/frontend/assets/index-CWFH4Pao.js +0 -1
  2676. langflow/frontend/assets/index-CWeo5Ory.js +0 -185
  2677. langflow/frontend/assets/index-CXK4MbMY.js +0 -1
  2678. langflow/frontend/assets/index-CZgBm-ZJ.js +0 -1
  2679. langflow/frontend/assets/index-CZkUxfOh.js +0 -1
  2680. langflow/frontend/assets/index-C_lehBkg.js +0 -1
  2681. langflow/frontend/assets/index-CbBwlEe-.js +0 -1
  2682. langflow/frontend/assets/index-CcLE6_IE.js +0 -1
  2683. langflow/frontend/assets/index-CeJhzK45.js +0 -7320
  2684. langflow/frontend/assets/index-CeLq8eye.js +0 -13
  2685. langflow/frontend/assets/index-CfhzW9Hx.js +0 -1
  2686. langflow/frontend/assets/index-CfltpNlT.js +0 -1
  2687. langflow/frontend/assets/index-CgcCDmA3.js +0 -1
  2688. langflow/frontend/assets/index-ChPSIM0s.js +0 -1
  2689. langflow/frontend/assets/index-CkhM1lz8.js +0 -281
  2690. langflow/frontend/assets/index-Cl6wvpKb.js +0 -1
  2691. langflow/frontend/assets/index-CnOaJter.js +0 -1
  2692. langflow/frontend/assets/index-Comf51_g.js +0 -1
  2693. langflow/frontend/assets/index-CoptJ2Bg.js +0 -1
  2694. langflow/frontend/assets/index-Cq-tm2ZB.js +0 -1
  2695. langflow/frontend/assets/index-CrTYGn2f.js +0 -1
  2696. langflow/frontend/assets/index-CtePOmcv.js +0 -1
  2697. langflow/frontend/assets/index-Cu6Q5d_j.js +0 -1
  2698. langflow/frontend/assets/index-Cu7S3apw.js +0 -1
  2699. langflow/frontend/assets/index-Cu8Ura34.js +0 -1
  2700. langflow/frontend/assets/index-CubrrrxM.js +0 -1
  2701. langflow/frontend/assets/index-Cur6Glh7.js +0 -1
  2702. langflow/frontend/assets/index-CutpSCVT.js +0 -1
  2703. langflow/frontend/assets/index-Cv3JYvae.js +0 -1
  2704. langflow/frontend/assets/index-CvLMfAbY.js +0 -1
  2705. langflow/frontend/assets/index-CvaWmNDd.js +0 -1
  2706. langflow/frontend/assets/index-CxX4G6jn.js +0 -1
  2707. langflow/frontend/assets/index-CxX5p2Qt.js +0 -1
  2708. langflow/frontend/assets/index-Cy1bNfv1.js +0 -1
  2709. langflow/frontend/assets/index-CzV6zI47.js +0 -1
  2710. langflow/frontend/assets/index-D-VMgEr1.js +0 -1
  2711. langflow/frontend/assets/index-D16OeWcX.js +0 -1
  2712. langflow/frontend/assets/index-D1bzsnKI.js +0 -1
  2713. langflow/frontend/assets/index-D1yozt2k.js +0 -1
  2714. langflow/frontend/assets/index-D3M7FnF-.js +0 -1
  2715. langflow/frontend/assets/index-D4jDW0ar.js +0 -495
  2716. langflow/frontend/assets/index-D5z5GmZX.js +0 -1
  2717. langflow/frontend/assets/index-D8mGlxnI.js +0 -1
  2718. langflow/frontend/assets/index-DAEurvCd.css +0 -1
  2719. langflow/frontend/assets/index-DBbJnsbR.js +0 -1
  2720. langflow/frontend/assets/index-DFXzzB0U.js +0 -20
  2721. langflow/frontend/assets/index-DGTIHXSW.js +0 -1
  2722. langflow/frontend/assets/index-DH3cYxHx.js +0 -1
  2723. langflow/frontend/assets/index-DJoguFjq.js +0 -1
  2724. langflow/frontend/assets/index-DK6oNMXD.js +0 -1
  2725. langflow/frontend/assets/index-DLKUdxpn.js +0 -1
  2726. langflow/frontend/assets/index-DNHqbgWU.js +0 -1
  2727. langflow/frontend/assets/index-DPUxVjMD.js +0 -1
  2728. langflow/frontend/assets/index-DTBs8ITA.js +0 -1
  2729. langflow/frontend/assets/index-DTFIOnT4.js +0 -7
  2730. langflow/frontend/assets/index-DTItNznv.js +0 -21
  2731. langflow/frontend/assets/index-DWLXm_oO.js +0 -1
  2732. langflow/frontend/assets/index-DWx8F7Gg.js +0 -1
  2733. langflow/frontend/assets/index-DXejUIAr.js +0 -1
  2734. langflow/frontend/assets/index-DYb_0qdi.js +0 -1
  2735. langflow/frontend/assets/index-D_kwFpmP.js +0 -1
  2736. langflow/frontend/assets/index-DbSVfwG1.js +0 -1
  2737. langflow/frontend/assets/index-DdKL3XIU.js +0 -1
  2738. langflow/frontend/assets/index-DeG9S3tr.js +0 -1
  2739. langflow/frontend/assets/index-DhC1XvtN.js +0 -1
  2740. langflow/frontend/assets/index-DicOFbQ_.js +0 -1
  2741. langflow/frontend/assets/index-Dkn_Eh6e.js +0 -1
  2742. langflow/frontend/assets/index-DlHOIimc.js +0 -1
  2743. langflow/frontend/assets/index-DoiIm4xx.js +0 -1
  2744. langflow/frontend/assets/index-DpFBag2E.js +0 -1
  2745. langflow/frontend/assets/index-DpZhV-uW.js +0 -1
  2746. langflow/frontend/assets/index-DqnDzUof.js +0 -1
  2747. langflow/frontend/assets/index-DrA7vc0p.js +0 -1
  2748. langflow/frontend/assets/index-DtgyIkY4.js +0 -1
  2749. langflow/frontend/assets/index-DuPgnV9t.js +0 -1
  2750. langflow/frontend/assets/index-DwL4yp6n.js +0 -1
  2751. langflow/frontend/assets/index-DzcJfrGS.js +0 -1
  2752. langflow/frontend/assets/index-EuaST_Qf.js +0 -1
  2753. langflow/frontend/assets/index-GjwRYtS-.js +0 -1
  2754. langflow/frontend/assets/index-H6ZrNrxY.js +0 -1
  2755. langflow/frontend/assets/index-Ien0c_iE.js +0 -1
  2756. langflow/frontend/assets/index-Iovu5b5y.js +0 -1
  2757. langflow/frontend/assets/index-Nan9ElYz.js +0 -1
  2758. langflow/frontend/assets/index-NqL5he8K.js +0 -1
  2759. langflow/frontend/assets/index-QIvaJk8A.js +0 -1
  2760. langflow/frontend/assets/index-Qg8PJwVF.js +0 -1
  2761. langflow/frontend/assets/index-T8pQijy_.js +0 -1
  2762. langflow/frontend/assets/index-VG6KlFH5.js +0 -1
  2763. langflow/frontend/assets/index-Y_m7R84j.js +0 -1
  2764. langflow/frontend/assets/index-b6QfLAE8.js +0 -1
  2765. langflow/frontend/assets/index-bsMtdRle.js +0 -1
  2766. langflow/frontend/assets/index-d5gDb8Qx.js +0 -1
  2767. langflow/frontend/assets/index-e2L4TCgN.js +0 -1
  2768. langflow/frontend/assets/index-eIKy_Wl0.js +0 -1
  2769. langflow/frontend/assets/index-ehVwFpGU.js +0 -108
  2770. langflow/frontend/assets/index-f_2AeGCs.js +0 -1
  2771. langflow/frontend/assets/index-fncb7fql.js +0 -1
  2772. langflow/frontend/assets/index-iQwKU8_T.js +0 -1
  2773. langflow/frontend/assets/index-jAZTZjvO.js +0 -1
  2774. langflow/frontend/assets/index-jbpXNToH.js +0 -1
  2775. langflow/frontend/assets/index-kLOWUhQR.js +0 -1
  2776. langflow/frontend/assets/index-kmZdzHEW.js +0 -1
  2777. langflow/frontend/assets/index-l8MrlW3v.js +0 -1
  2778. langflow/frontend/assets/index-lZpJseCp.js +0 -1
  2779. langflow/frontend/assets/index-nQbTiTRx.js +0 -399
  2780. langflow/frontend/assets/index-nsAGPYFk.js +0 -1
  2781. langflow/frontend/assets/index-o8TkImQk.js +0 -1
  2782. langflow/frontend/assets/index-sjJRRTXU.js +0 -1
  2783. langflow/frontend/assets/index-tr0BPrPI.js +0 -1
  2784. langflow/frontend/assets/index-vi038SM9.js +0 -1
  2785. langflow/frontend/assets/index-xbv0pViQ.js +0 -1
  2786. langflow/frontend/assets/index-xn9ydmE-.js +0 -1
  2787. langflow/frontend/assets/index-xqOzOZYD.js +0 -1
  2788. langflow/frontend/assets/index-yL1V3Qv-.js +0 -1
  2789. langflow/frontend/assets/indian-rupee-pVdF2Gi1.js +0 -6
  2790. langflow/frontend/assets/infinity-BUlY5Zqf.js +0 -6
  2791. langflow/frontend/assets/info-9re3sk28.js +0 -6
  2792. langflow/frontend/assets/inspection-panel-BYy9V3ab.js +0 -6
  2793. langflow/frontend/assets/instagram-By8sntmX.js +0 -6
  2794. langflow/frontend/assets/italic-wIPJkQNf.js +0 -6
  2795. langflow/frontend/assets/iteration-ccw-BZj13mio.js +0 -6
  2796. langflow/frontend/assets/iteration-cw-BDJe2WLL.js +0 -6
  2797. langflow/frontend/assets/japanese-yen-BHvFxTBz.js +0 -6
  2798. langflow/frontend/assets/joystick-AxZwTLDe.js +0 -6
  2799. langflow/frontend/assets/kanban-P8WEKyMi.js +0 -6
  2800. langflow/frontend/assets/key-Nlu2UcDg.js +0 -6
  2801. langflow/frontend/assets/key-round-OCt8gZLV.js +0 -6
  2802. langflow/frontend/assets/key-square-RRX_LK7y.js +0 -6
  2803. langflow/frontend/assets/keyboard-CSPOwXE6.js +0 -6
  2804. langflow/frontend/assets/keyboard-music-774jHyCO.js +0 -6
  2805. langflow/frontend/assets/keyboard-off-CE7Vflf3.js +0 -6
  2806. langflow/frontend/assets/lamp-CpgHgK1U.js +0 -6
  2807. langflow/frontend/assets/lamp-ceiling-BZCeTFuw.js +0 -6
  2808. langflow/frontend/assets/lamp-desk-DGgeTiSx.js +0 -6
  2809. langflow/frontend/assets/lamp-floor-B3RleqUY.js +0 -6
  2810. langflow/frontend/assets/lamp-wall-down-BilrVJrs.js +0 -6
  2811. langflow/frontend/assets/lamp-wall-up-1bECQE2f.js +0 -6
  2812. langflow/frontend/assets/land-plot-C-TvGPDJ.js +0 -6
  2813. langflow/frontend/assets/landmark-Cv7EjgP6.js +0 -6
  2814. langflow/frontend/assets/languages-DvIqji6H.js +0 -6
  2815. langflow/frontend/assets/laptop-BNspbQHL.js +0 -6
  2816. langflow/frontend/assets/laptop-minimal-DapwSIsQ.js +0 -6
  2817. langflow/frontend/assets/laptop-minimal-check-DhzfpFEx.js +0 -6
  2818. langflow/frontend/assets/lasso-nPrVjdsP.js +0 -6
  2819. langflow/frontend/assets/lasso-select-BawoC0lx.js +0 -6
  2820. langflow/frontend/assets/laugh-D8kPrPMU.js +0 -6
  2821. langflow/frontend/assets/layers-2-_WH5lJ1o.js +0 -6
  2822. langflow/frontend/assets/layers-hptgFceS.js +0 -6
  2823. langflow/frontend/assets/layout-dashboard-B27B_DfP.js +0 -6
  2824. langflow/frontend/assets/layout-grid-DqNylleT.js +0 -6
  2825. langflow/frontend/assets/layout-list-C_TpsrJp.js +0 -6
  2826. langflow/frontend/assets/layout-panel-left-YO6pxpjB.js +0 -6
  2827. langflow/frontend/assets/layout-panel-top-DJdj4WTE.js +0 -6
  2828. langflow/frontend/assets/layout-template-D6WWOPH1.js +0 -6
  2829. langflow/frontend/assets/lazyIconImports-DBIChvrW.js +0 -2
  2830. langflow/frontend/assets/leaf-gFzIiT_y.js +0 -6
  2831. langflow/frontend/assets/leafy-green-DocswmTW.js +0 -6
  2832. langflow/frontend/assets/lectern-DZw2qavD.js +0 -6
  2833. langflow/frontend/assets/letter-text-B-cw7ff9.js +0 -6
  2834. langflow/frontend/assets/library-big-Db6njVrA.js +0 -6
  2835. langflow/frontend/assets/library-dnIZ0Zl4.js +0 -6
  2836. langflow/frontend/assets/life-buoy-BhCy4ht_.js +0 -6
  2837. langflow/frontend/assets/ligature-DkfmSwiv.js +0 -6
  2838. langflow/frontend/assets/lightbulb-C18dWXpp.js +0 -6
  2839. langflow/frontend/assets/lightbulb-off-BF5r0iL0.js +0 -6
  2840. langflow/frontend/assets/link-2-BYQhnbje.js +0 -6
  2841. langflow/frontend/assets/link-2-off-BEcG4R3r.js +0 -6
  2842. langflow/frontend/assets/link-AH5Wl-a4.js +0 -6
  2843. langflow/frontend/assets/linkedin-CEBp4FBE.js +0 -6
  2844. langflow/frontend/assets/list-CG0vfZ4V.js +0 -6
  2845. langflow/frontend/assets/list-check-C-rzLxA6.js +0 -6
  2846. langflow/frontend/assets/list-checks-CRUr9PvA.js +0 -6
  2847. langflow/frontend/assets/list-collapse-DnYuQ6r3.js +0 -6
  2848. langflow/frontend/assets/list-end-Dm7rhbCd.js +0 -6
  2849. langflow/frontend/assets/list-filter-Cse_ZX6c.js +0 -6
  2850. langflow/frontend/assets/list-filter-plus-DreWy2aT.js +0 -6
  2851. langflow/frontend/assets/list-minus-COgNwXUK.js +0 -6
  2852. langflow/frontend/assets/list-music-DAdKnyGv.js +0 -6
  2853. langflow/frontend/assets/list-ordered-xeop85yr.js +0 -6
  2854. langflow/frontend/assets/list-plus-BB1bVCo6.js +0 -6
  2855. langflow/frontend/assets/list-restart-M8UXDvuc.js +0 -6
  2856. langflow/frontend/assets/list-start-BU-fLD0Y.js +0 -6
  2857. langflow/frontend/assets/list-todo-DlW3CMOx.js +0 -6
  2858. langflow/frontend/assets/list-tree-CchaAYj2.js +0 -6
  2859. langflow/frontend/assets/list-video-DjprPMBU.js +0 -6
  2860. langflow/frontend/assets/list-x-DqO1RMBC.js +0 -6
  2861. langflow/frontend/assets/loader-5ODGFx3b.js +0 -6
  2862. langflow/frontend/assets/loader-circle-DMvRPzIg.js +0 -6
  2863. langflow/frontend/assets/loader-pinwheel-gS2KgThI.js +0 -6
  2864. langflow/frontend/assets/locate-fixed-vswgnTb8.js +0 -6
  2865. langflow/frontend/assets/locate-off-PGrPX3-Z.js +0 -6
  2866. langflow/frontend/assets/locate-uiiGWHSr.js +0 -6
  2867. langflow/frontend/assets/location-edit-D49GoYAs.js +0 -6
  2868. langflow/frontend/assets/lock-Dxur9uP4.js +0 -6
  2869. langflow/frontend/assets/lock-keyhole-D_-u2JOw.js +0 -6
  2870. langflow/frontend/assets/lock-keyhole-open-DmZ6bQjJ.js +0 -6
  2871. langflow/frontend/assets/lock-open-h1Ym2xNL.js +0 -6
  2872. langflow/frontend/assets/log-in-Cl9pQnv7.js +0 -6
  2873. langflow/frontend/assets/log-out-JYJLo8eH.js +0 -6
  2874. langflow/frontend/assets/logs-GcXrmpIo.js +0 -6
  2875. langflow/frontend/assets/lollipop-BlIf0gIL.js +0 -6
  2876. langflow/frontend/assets/luggage-ChDcSLir.js +0 -6
  2877. langflow/frontend/assets/magnet-CbTUrk8x.js +0 -6
  2878. langflow/frontend/assets/mail-Cf4gAoUh.js +0 -6
  2879. langflow/frontend/assets/mail-check-Ce4qmAmv.js +0 -6
  2880. langflow/frontend/assets/mail-minus-Dgqf6Ald.js +0 -6
  2881. langflow/frontend/assets/mail-open-CbUUxcsM.js +0 -6
  2882. langflow/frontend/assets/mail-plus-BrkiFK_t.js +0 -6
  2883. langflow/frontend/assets/mail-question-09_XCtkE.js +0 -6
  2884. langflow/frontend/assets/mail-search-CafN7oQe.js +0 -6
  2885. langflow/frontend/assets/mail-warning-CeDkPBCu.js +0 -6
  2886. langflow/frontend/assets/mail-x-KYocmNqK.js +0 -6
  2887. langflow/frontend/assets/mailbox-DsBreztD.js +0 -6
  2888. langflow/frontend/assets/mails-n7o2pBaH.js +0 -6
  2889. langflow/frontend/assets/map-Ohn-fSvu.js +0 -6
  2890. langflow/frontend/assets/map-pin-D85V5JCr.js +0 -6
  2891. langflow/frontend/assets/map-pin-check-gad7z6qe.js +0 -6
  2892. langflow/frontend/assets/map-pin-check-inside-CEabgSgu.js +0 -6
  2893. langflow/frontend/assets/map-pin-house-BNgb46Ym.js +0 -6
  2894. langflow/frontend/assets/map-pin-minus-3R9LpdKu.js +0 -6
  2895. langflow/frontend/assets/map-pin-minus-inside-Bg71nHn1.js +0 -6
  2896. langflow/frontend/assets/map-pin-off-DmD-D3XC.js +0 -6
  2897. langflow/frontend/assets/map-pin-plus-Bkf6L6uc.js +0 -6
  2898. langflow/frontend/assets/map-pin-plus-inside-DpfCc6vJ.js +0 -6
  2899. langflow/frontend/assets/map-pin-x-DF0xYkej.js +0 -6
  2900. langflow/frontend/assets/map-pin-x-inside-1BZADHy2.js +0 -6
  2901. langflow/frontend/assets/map-pinned-B_AlAX4L.js +0 -6
  2902. langflow/frontend/assets/map-plus-idyGiDTJ.js +0 -6
  2903. langflow/frontend/assets/mars-fMEU-Od8.js +0 -6
  2904. langflow/frontend/assets/mars-stroke-D5ZuK8Lg.js +0 -6
  2905. langflow/frontend/assets/martini-JabiLK4t.js +0 -6
  2906. langflow/frontend/assets/maximize-2-DH1SC2Ho.js +0 -6
  2907. langflow/frontend/assets/maximize-Df7rwZG4.js +0 -6
  2908. langflow/frontend/assets/medal-D5AiQRH8.js +0 -6
  2909. langflow/frontend/assets/megaphone-CnkmiqKU.js +0 -6
  2910. langflow/frontend/assets/megaphone-off-CmGcOh0R.js +0 -6
  2911. langflow/frontend/assets/meh-DWPngCKS.js +0 -6
  2912. langflow/frontend/assets/memory-stick-CUtJOVHZ.js +0 -6
  2913. langflow/frontend/assets/menu-CsSwaQn5.js +0 -6
  2914. langflow/frontend/assets/merge-xIyfmu2O.js +0 -6
  2915. langflow/frontend/assets/message-circle-code-Cezrn02-.js +0 -6
  2916. langflow/frontend/assets/message-circle-dashed-WB5z55Qy.js +0 -6
  2917. langflow/frontend/assets/message-circle-heart-DGI-Tcn0.js +0 -6
  2918. langflow/frontend/assets/message-circle-more-brCFjtJN.js +0 -6
  2919. langflow/frontend/assets/message-circle-off-BTdLdJNp.js +0 -6
  2920. langflow/frontend/assets/message-circle-plus-B_2WfCif.js +0 -6
  2921. langflow/frontend/assets/message-circle-question-eYTma3IV.js +0 -6
  2922. langflow/frontend/assets/message-circle-reply-CslnuJW8.js +0 -6
  2923. langflow/frontend/assets/message-circle-s74I4lfR.js +0 -6
  2924. langflow/frontend/assets/message-circle-warning-D373lMUK.js +0 -6
  2925. langflow/frontend/assets/message-circle-x-CBA5fKhi.js +0 -6
  2926. langflow/frontend/assets/message-square-CDhJsLYb.js +0 -6
  2927. langflow/frontend/assets/message-square-code-BgCsx74Q.js +0 -6
  2928. langflow/frontend/assets/message-square-dashed-BksTHg5f.js +0 -6
  2929. langflow/frontend/assets/message-square-diff-D_uo-iqE.js +0 -6
  2930. langflow/frontend/assets/message-square-dot-D_oNxern.js +0 -6
  2931. langflow/frontend/assets/message-square-heart-CKqYgNM8.js +0 -6
  2932. langflow/frontend/assets/message-square-lock-DYxomewv.js +0 -6
  2933. langflow/frontend/assets/message-square-more-DmGZkKIr.js +0 -6
  2934. langflow/frontend/assets/message-square-off-BNpk0YUO.js +0 -6
  2935. langflow/frontend/assets/message-square-plus-CXppGew5.js +0 -6
  2936. langflow/frontend/assets/message-square-quote-D84NlZSJ.js +0 -6
  2937. langflow/frontend/assets/message-square-reply-CynfrCd9.js +0 -6
  2938. langflow/frontend/assets/message-square-share-HVoqVtr_.js +0 -6
  2939. langflow/frontend/assets/message-square-text-ptBRDcOw.js +0 -6
  2940. langflow/frontend/assets/message-square-warning-CSrrKg08.js +0 -6
  2941. langflow/frontend/assets/message-square-x-BkSBEYee.js +0 -6
  2942. langflow/frontend/assets/messages-square-DMMmBLdo.js +0 -6
  2943. langflow/frontend/assets/mic-fCXDLun1.js +0 -6
  2944. langflow/frontend/assets/mic-off-B3bT4SXl.js +0 -6
  2945. langflow/frontend/assets/mic-vocal-DJSTGqO_.js +0 -6
  2946. langflow/frontend/assets/microchip-iUqIwvrW.js +0 -6
  2947. langflow/frontend/assets/microscope-bQYVM2jl.js +0 -6
  2948. langflow/frontend/assets/microwave-CLWy_Pd0.js +0 -6
  2949. langflow/frontend/assets/milestone-BlJCDkCk.js +0 -6
  2950. langflow/frontend/assets/milk-D-3yaWQN.js +0 -6
  2951. langflow/frontend/assets/milk-off-DePzvvB7.js +0 -6
  2952. langflow/frontend/assets/minimize-2-RZW3jf4N.js +0 -6
  2953. langflow/frontend/assets/minimize-B2R3tdtN.js +0 -6
  2954. langflow/frontend/assets/monitor-CJbP7Qhz.js +0 -6
  2955. langflow/frontend/assets/monitor-check-BK5o4IqH.js +0 -6
  2956. langflow/frontend/assets/monitor-cog-CwXrK3Pr.js +0 -6
  2957. langflow/frontend/assets/monitor-dot-BMOxg8oq.js +0 -6
  2958. langflow/frontend/assets/monitor-down-Pua8s36n.js +0 -6
  2959. langflow/frontend/assets/monitor-off-BzAiIDi4.js +0 -6
  2960. langflow/frontend/assets/monitor-pause-BuPweD-T.js +0 -6
  2961. langflow/frontend/assets/monitor-play-BH2UflZ-.js +0 -6
  2962. langflow/frontend/assets/monitor-smartphone-xnQ1eQ7B.js +0 -6
  2963. langflow/frontend/assets/monitor-speaker-C3iNl2jP.js +0 -6
  2964. langflow/frontend/assets/monitor-stop-CPBDxXNy.js +0 -6
  2965. langflow/frontend/assets/monitor-up-BEJpP5DZ.js +0 -6
  2966. langflow/frontend/assets/monitor-x-8YaUhKJk.js +0 -6
  2967. langflow/frontend/assets/moon-BjshRoPI.js +0 -6
  2968. langflow/frontend/assets/moon-star-BKdvPz2s.js +0 -6
  2969. langflow/frontend/assets/mountain-HvxMAgao.js +0 -6
  2970. langflow/frontend/assets/mountain-snow-CVlRmDBQ.js +0 -6
  2971. langflow/frontend/assets/mouse-off-tNoJZHwB.js +0 -6
  2972. langflow/frontend/assets/mouse-pointer-2-Cf44OEHG.js +0 -6
  2973. langflow/frontend/assets/mouse-pointer-Cc1JIYdz.js +0 -6
  2974. langflow/frontend/assets/mouse-pointer-ban-CfLlWQBp.js +0 -6
  2975. langflow/frontend/assets/mouse-pointer-click-Bu_OV0as.js +0 -6
  2976. langflow/frontend/assets/mouse-qWjRPujp.js +0 -6
  2977. langflow/frontend/assets/move-3d-7FG8qdZq.js +0 -6
  2978. langflow/frontend/assets/move-DGkdpLW3.js +0 -6
  2979. langflow/frontend/assets/move-diagonal-2-DhmhqD3F.js +0 -6
  2980. langflow/frontend/assets/move-diagonal-5Dk53P6l.js +0 -6
  2981. langflow/frontend/assets/move-down-C0MsI51d.js +0 -6
  2982. langflow/frontend/assets/move-down-left-91Wg7LLx.js +0 -6
  2983. langflow/frontend/assets/move-down-right-wi3S4tSz.js +0 -6
  2984. langflow/frontend/assets/move-horizontal-Bosh6Uqs.js +0 -6
  2985. langflow/frontend/assets/move-left-BnM0MTHa.js +0 -6
  2986. langflow/frontend/assets/move-right-srPQk6dT.js +0 -6
  2987. langflow/frontend/assets/move-up-BDqsDuVH.js +0 -6
  2988. langflow/frontend/assets/move-up-left-0IBHw-J0.js +0 -6
  2989. langflow/frontend/assets/move-up-right-DJCXUy6C.js +0 -6
  2990. langflow/frontend/assets/move-vertical-BG8O7T82.js +0 -6
  2991. langflow/frontend/assets/music-2-ChQnsdQR.js +0 -6
  2992. langflow/frontend/assets/music-3-CxpKR-4Q.js +0 -6
  2993. langflow/frontend/assets/music-4-CrhxpY0T.js +0 -6
  2994. langflow/frontend/assets/music-yzngTDUB.js +0 -6
  2995. langflow/frontend/assets/navigation-2-CYik-3lv.js +0 -6
  2996. langflow/frontend/assets/navigation-2-off-BsaYT4LD.js +0 -6
  2997. langflow/frontend/assets/navigation-CMMGuQFX.js +0 -6
  2998. langflow/frontend/assets/navigation-off-0ipJASQV.js +0 -6
  2999. langflow/frontend/assets/network-DM9i9N65.js +0 -6
  3000. langflow/frontend/assets/newspaper-CzEpqUvG.js +0 -6
  3001. langflow/frontend/assets/nfc-2YMUSLgo.js +0 -6
  3002. langflow/frontend/assets/non-binary-DhzkWXZ3.js +0 -6
  3003. langflow/frontend/assets/notebook-DmLTsHzB.js +0 -6
  3004. langflow/frontend/assets/notebook-pen-Bplxg1Vd.js +0 -6
  3005. langflow/frontend/assets/notebook-tabs-CWiYgQ6b.js +0 -6
  3006. langflow/frontend/assets/notebook-text-4AX1Uxq9.js +0 -6
  3007. langflow/frontend/assets/notepad-text-FyNar9Ot.js +0 -6
  3008. langflow/frontend/assets/notepad-text-dashed-DuuBcDav.js +0 -6
  3009. langflow/frontend/assets/nut-8PAXfP_9.js +0 -6
  3010. langflow/frontend/assets/nut-off-Da1kk8Gn.js +0 -6
  3011. langflow/frontend/assets/octagon-CSYndWzF.js +0 -6
  3012. langflow/frontend/assets/octagon-alert-fcFrl2Tx.js +0 -6
  3013. langflow/frontend/assets/octagon-minus-DaZ-e0uO.js +0 -6
  3014. langflow/frontend/assets/octagon-pause-CSHmWRJH.js +0 -6
  3015. langflow/frontend/assets/octagon-x-DhPGUpzU.js +0 -6
  3016. langflow/frontend/assets/omega-Tq0tkdwK.js +0 -6
  3017. langflow/frontend/assets/option-DUMCNykK.js +0 -6
  3018. langflow/frontend/assets/orbit-Bpo2MMcJ.js +0 -6
  3019. langflow/frontend/assets/origami-DHwua3oI.js +0 -6
  3020. langflow/frontend/assets/package-2-DsTkH1Ko.js +0 -6
  3021. langflow/frontend/assets/package-BPc3Uv3D.js +0 -6
  3022. langflow/frontend/assets/package-check-DysEWrd8.js +0 -6
  3023. langflow/frontend/assets/package-minus-ZtOr1XeF.js +0 -6
  3024. langflow/frontend/assets/package-open-Bc1Ym2tK.js +0 -6
  3025. langflow/frontend/assets/package-plus-B9MLdQFX.js +0 -6
  3026. langflow/frontend/assets/package-search-CNA7GCzs.js +0 -6
  3027. langflow/frontend/assets/package-x-DCfHvJtF.js +0 -6
  3028. langflow/frontend/assets/paint-bucket-DIN5z8wi.js +0 -6
  3029. langflow/frontend/assets/paint-roller-BQpWf9ZY.js +0 -6
  3030. langflow/frontend/assets/paintbrush-BLMVtbpo.js +0 -6
  3031. langflow/frontend/assets/paintbrush-vertical-2I6wo4bZ.js +0 -6
  3032. langflow/frontend/assets/palette-ClueFKAJ.js +0 -6
  3033. langflow/frontend/assets/panel-bottom-BLgQ78t-.js +0 -6
  3034. langflow/frontend/assets/panel-bottom-close-D3XIljT-.js +0 -6
  3035. langflow/frontend/assets/panel-bottom-dashed-DJl6R4zr.js +0 -6
  3036. langflow/frontend/assets/panel-bottom-open-CtLeVRug.js +0 -6
  3037. langflow/frontend/assets/panel-left-close-cvut2RW8.js +0 -6
  3038. langflow/frontend/assets/panel-left-dashed-D_WVbQH8.js +0 -6
  3039. langflow/frontend/assets/panel-left-open-ZxfOqpAK.js +0 -6
  3040. langflow/frontend/assets/panel-right-Q-s4q0iq.js +0 -6
  3041. langflow/frontend/assets/panel-right-close-DKhTf9X2.js +0 -6
  3042. langflow/frontend/assets/panel-right-dashed-CXsYZCfY.js +0 -6
  3043. langflow/frontend/assets/panel-right-open-o8m0164W.js +0 -6
  3044. langflow/frontend/assets/panel-top-6Niumkhc.js +0 -6
  3045. langflow/frontend/assets/panel-top-close-DFY_8hAS.js +0 -6
  3046. langflow/frontend/assets/panel-top-dashed-CzI3JpHf.js +0 -6
  3047. langflow/frontend/assets/panel-top-open-CNp_wFmB.js +0 -6
  3048. langflow/frontend/assets/panels-left-bottom-BLGWreF8.js +0 -6
  3049. langflow/frontend/assets/panels-right-bottom-CZpPuhQ8.js +0 -6
  3050. langflow/frontend/assets/panels-top-left-jM4GJMlR.js +0 -6
  3051. langflow/frontend/assets/paperclip-b5cDxy2w.js +0 -6
  3052. langflow/frontend/assets/parentheses-COIRxaKb.js +0 -6
  3053. langflow/frontend/assets/parking-meter-u8DFChjG.js +0 -6
  3054. langflow/frontend/assets/party-popper-BB4QHVze.js +0 -6
  3055. langflow/frontend/assets/pause-Dp-DSQVn.js +0 -6
  3056. langflow/frontend/assets/paw-print-Cqre9uEB.js +0 -6
  3057. langflow/frontend/assets/pc-case-Bzy43tu0.js +0 -6
  3058. langflow/frontend/assets/pen-Dr_UXQL6.js +0 -6
  3059. langflow/frontend/assets/pen-line-T_qrYPeG.js +0 -6
  3060. langflow/frontend/assets/pen-off-THdXN8rq.js +0 -6
  3061. langflow/frontend/assets/pen-tool-BRvkh_lo.js +0 -6
  3062. langflow/frontend/assets/pencil-C8D5tKd8.js +0 -6
  3063. langflow/frontend/assets/pencil-line-BRbHGRNl.js +0 -6
  3064. langflow/frontend/assets/pencil-off-BsUpqnn3.js +0 -6
  3065. langflow/frontend/assets/pencil-ruler-H4id9sMM.js +0 -6
  3066. langflow/frontend/assets/pentagon-Be-3ZvbV.js +0 -6
  3067. langflow/frontend/assets/percent-CT_oc5Dk.js +0 -6
  3068. langflow/frontend/assets/person-standing-CEPUN0Jg.js +0 -6
  3069. langflow/frontend/assets/philippine-peso-Dk1UCG3K.js +0 -6
  3070. langflow/frontend/assets/phone-Df99jJgq.js +0 -6
  3071. langflow/frontend/assets/phone-call-5upT_rU7.js +0 -6
  3072. langflow/frontend/assets/phone-forwarded-CCCRbah3.js +0 -6
  3073. langflow/frontend/assets/phone-incoming-B0-AEYFS.js +0 -6
  3074. langflow/frontend/assets/phone-missed-CoiWozLV.js +0 -6
  3075. langflow/frontend/assets/phone-off-DbS5yBnk.js +0 -6
  3076. langflow/frontend/assets/phone-outgoing-NJrwcRqd.js +0 -6
  3077. langflow/frontend/assets/pi-CNLEtWgh.js +0 -6
  3078. langflow/frontend/assets/piano-CxzP5TAT.js +0 -6
  3079. langflow/frontend/assets/pickaxe-DPDfdtc0.js +0 -6
  3080. langflow/frontend/assets/picture-in-picture-2-Bg8Max8O.js +0 -6
  3081. langflow/frontend/assets/picture-in-picture-3236Alj3.js +0 -6
  3082. langflow/frontend/assets/piggy-bank-_XHB1Wx2.js +0 -6
  3083. langflow/frontend/assets/pilcrow-BcXcTTfn.js +0 -6
  3084. langflow/frontend/assets/pilcrow-left-BLtCEaRs.js +0 -6
  3085. langflow/frontend/assets/pilcrow-right-C85rcTmF.js +0 -6
  3086. langflow/frontend/assets/pill-DFkz07mM.js +0 -6
  3087. langflow/frontend/assets/pill-bottle-_qAs7GLc.js +0 -6
  3088. langflow/frontend/assets/pin-08uT_veg.js +0 -6
  3089. langflow/frontend/assets/pin-off-hMFmavIr.js +0 -6
  3090. langflow/frontend/assets/pipette--ANbg8cI.js +0 -6
  3091. langflow/frontend/assets/pizza-CnBoZbDr.js +0 -6
  3092. langflow/frontend/assets/plane-BBD_iihR.js +0 -6
  3093. langflow/frontend/assets/plane-landing-CkjIDAYJ.js +0 -6
  3094. langflow/frontend/assets/plane-takeoff-Bch4qnRB.js +0 -6
  3095. langflow/frontend/assets/play-BsfdlD7v.js +0 -6
  3096. langflow/frontend/assets/plug-2-BcyoDX6D.js +0 -6
  3097. langflow/frontend/assets/plug-BIBbsc5k.js +0 -6
  3098. langflow/frontend/assets/plug-zap-BDrG5bOE.js +0 -6
  3099. langflow/frontend/assets/pocket-M57mDIeX.js +0 -6
  3100. langflow/frontend/assets/pocket-knife-aPjQv4Mi.js +0 -6
  3101. langflow/frontend/assets/podcast-D1tjChJk.js +0 -6
  3102. langflow/frontend/assets/pointer-BSydXCFF.js +0 -6
  3103. langflow/frontend/assets/pointer-off-DZ4rzik4.js +0 -6
  3104. langflow/frontend/assets/popcorn-BHV-8DFJ.js +0 -6
  3105. langflow/frontend/assets/popsicle-DjWTg8e9.js +0 -6
  3106. langflow/frontend/assets/pound-sterling-gMOdCVxB.js +0 -6
  3107. langflow/frontend/assets/power-BG-Umc9T.js +0 -6
  3108. langflow/frontend/assets/power-off-D7eTrV8y.js +0 -6
  3109. langflow/frontend/assets/presentation-Cu7KQGtu.js +0 -6
  3110. langflow/frontend/assets/printer-CmjSUXNd.js +0 -6
  3111. langflow/frontend/assets/printer-check-BOB49PGS.js +0 -6
  3112. langflow/frontend/assets/projector-DmOr-6dP.js +0 -6
  3113. langflow/frontend/assets/proportions-D5RpzImo.js +0 -6
  3114. langflow/frontend/assets/puzzle-EV728iB-.js +0 -6
  3115. langflow/frontend/assets/pyramid-BYNsaNoD.js +0 -6
  3116. langflow/frontend/assets/qr-code-C_-pMZyx.js +0 -6
  3117. langflow/frontend/assets/quote-BrDJPCkP.js +0 -6
  3118. langflow/frontend/assets/rabbit-nPO88EMa.js +0 -6
  3119. langflow/frontend/assets/radar-DmKqqNYR.js +0 -6
  3120. langflow/frontend/assets/radiation-D9ZSjZUT.js +0 -6
  3121. langflow/frontend/assets/radical-Paa6bjM7.js +0 -6
  3122. langflow/frontend/assets/radio-receiver-BMvHpUZt.js +0 -6
  3123. langflow/frontend/assets/radio-sHGJBlPl.js +0 -6
  3124. langflow/frontend/assets/radio-tower-YRdbvcC3.js +0 -6
  3125. langflow/frontend/assets/radius-BF3J88eF.js +0 -6
  3126. langflow/frontend/assets/rail-symbol-BtuRkLOe.js +0 -6
  3127. langflow/frontend/assets/rainbow-DgijBsWj.js +0 -6
  3128. langflow/frontend/assets/rat-DNEq5_LI.js +0 -6
  3129. langflow/frontend/assets/ratio-BqDwoQX7.js +0 -6
  3130. langflow/frontend/assets/receipt-CSQ3QIja.js +0 -6
  3131. langflow/frontend/assets/receipt-cent-1P1hpbSE.js +0 -6
  3132. langflow/frontend/assets/receipt-euro-oGO9VYeO.js +0 -6
  3133. langflow/frontend/assets/receipt-indian-rupee-DU7YlfC3.js +0 -6
  3134. langflow/frontend/assets/receipt-japanese-yen-Donq0Hi9.js +0 -6
  3135. langflow/frontend/assets/receipt-pound-sterling-BchAADEY.js +0 -6
  3136. langflow/frontend/assets/receipt-russian-ruble-C3aU-Yas.js +0 -6
  3137. langflow/frontend/assets/receipt-swiss-franc-CvWAUPxo.js +0 -6
  3138. langflow/frontend/assets/receipt-text-B2XL36eK.js +0 -6
  3139. langflow/frontend/assets/rectangle-ellipsis--7K_D3YS.js +0 -6
  3140. langflow/frontend/assets/rectangle-goggles-iDDCDTAV.js +0 -6
  3141. langflow/frontend/assets/rectangle-horizontal-FpEjMJDU.js +0 -6
  3142. langflow/frontend/assets/rectangle-vertical-Bdh_eXUL.js +0 -6
  3143. langflow/frontend/assets/recycle-04Ly4CSR.js +0 -6
  3144. langflow/frontend/assets/redo-2-BDeJbmJc.js +0 -6
  3145. langflow/frontend/assets/redo-BAZjkNfJ.js +0 -6
  3146. langflow/frontend/assets/redo-dot-CJfH6IaL.js +0 -6
  3147. langflow/frontend/assets/refresh-ccw-C8IAUkqu.js +0 -6
  3148. langflow/frontend/assets/refresh-ccw-dot-B78c1h9T.js +0 -6
  3149. langflow/frontend/assets/refresh-cw-off-Cp-oGnzF.js +0 -6
  3150. langflow/frontend/assets/refresh-cw-yV65zfzr.js +0 -6
  3151. langflow/frontend/assets/refrigerator-D-UPdTju.js +0 -6
  3152. langflow/frontend/assets/regex-BtprV8Bm.js +0 -6
  3153. langflow/frontend/assets/remove-formatting-Bjo4M7Op.js +0 -6
  3154. langflow/frontend/assets/repeat-1-CtraS-Ll.js +0 -6
  3155. langflow/frontend/assets/repeat-2-DJXWb53E.js +0 -6
  3156. langflow/frontend/assets/repeat-UTALalrF.js +0 -6
  3157. langflow/frontend/assets/replace-Pr2T4Qd-.js +0 -6
  3158. langflow/frontend/assets/replace-all-DYvU2u4L.js +0 -6
  3159. langflow/frontend/assets/reply-BTFwDccp.js +0 -6
  3160. langflow/frontend/assets/reply-all-1joLgLPU.js +0 -6
  3161. langflow/frontend/assets/rewind-DTr3rgh9.js +0 -6
  3162. langflow/frontend/assets/ribbon-DOgd3YW7.js +0 -6
  3163. langflow/frontend/assets/rocket-CKny08bZ.js +0 -6
  3164. langflow/frontend/assets/rocking-chair-C2c_5w-s.js +0 -6
  3165. langflow/frontend/assets/roller-coaster-yr32QkYK.js +0 -6
  3166. langflow/frontend/assets/rotate-3d-CD6nvKxz.js +0 -6
  3167. langflow/frontend/assets/rotate-ccw-key-CVGeiKlz.js +0 -6
  3168. langflow/frontend/assets/rotate-ccw-square-CNyvDwK6.js +0 -6
  3169. langflow/frontend/assets/rotate-ccw-zwREArm8.js +0 -6
  3170. langflow/frontend/assets/rotate-cw-DuFGH8SC.js +0 -6
  3171. langflow/frontend/assets/rotate-cw-square-DR5lnUQY.js +0 -6
  3172. langflow/frontend/assets/route-BNnVRtHA.js +0 -6
  3173. langflow/frontend/assets/route-off-OgI_UGn7.js +0 -6
  3174. langflow/frontend/assets/router-DL2Fypr3.js +0 -6
  3175. langflow/frontend/assets/rows-2-DYmd4lU4.js +0 -6
  3176. langflow/frontend/assets/rows-3-ByGNXg5v.js +0 -6
  3177. langflow/frontend/assets/rows-4-DsVvupEo.js +0 -6
  3178. langflow/frontend/assets/rss-BLYOdSyo.js +0 -6
  3179. langflow/frontend/assets/ruler-Cdv8cdPo.js +0 -6
  3180. langflow/frontend/assets/ruler-dimension-line-B42wtcW6.js +0 -6
  3181. langflow/frontend/assets/russian-ruble-B63qxpyb.js +0 -6
  3182. langflow/frontend/assets/sailboat-C3-NFoCh.js +0 -6
  3183. langflow/frontend/assets/salad-DmiJ3fa3.js +0 -6
  3184. langflow/frontend/assets/sandwich-yEfOy5L1.js +0 -6
  3185. langflow/frontend/assets/satellite-ComPVjQz.js +0 -6
  3186. langflow/frontend/assets/satellite-dish-DCFu2Urr.js +0 -6
  3187. langflow/frontend/assets/saudi-riyal-DdPrrK6l.js +0 -6
  3188. langflow/frontend/assets/save-BUv5KSOB.js +0 -6
  3189. langflow/frontend/assets/save-all-Ak9ZJPV3.js +0 -6
  3190. langflow/frontend/assets/save-off-DflJ0ZQT.js +0 -6
  3191. langflow/frontend/assets/scale-3d-Be0yOpRQ.js +0 -6
  3192. langflow/frontend/assets/scale-CgxVkyxS.js +0 -6
  3193. langflow/frontend/assets/scaling-C_sDK5iR.js +0 -6
  3194. langflow/frontend/assets/scan-BA42Xs-4.js +0 -6
  3195. langflow/frontend/assets/scan-barcode-CxJKO7Er.js +0 -6
  3196. langflow/frontend/assets/scan-eye-CwqGN7-t.js +0 -6
  3197. langflow/frontend/assets/scan-face-B16FacLf.js +0 -6
  3198. langflow/frontend/assets/scan-heart-BJBG9f1h.js +0 -6
  3199. langflow/frontend/assets/scan-line-3BQ-6j26.js +0 -6
  3200. langflow/frontend/assets/scan-qr-code-DiGjYWyL.js +0 -6
  3201. langflow/frontend/assets/scan-search-ucg5af2u.js +0 -6
  3202. langflow/frontend/assets/scan-text-BJl03U-2.js +0 -6
  3203. langflow/frontend/assets/school-Bwtd3p3G.js +0 -6
  3204. langflow/frontend/assets/scissors-BmS3IwWA.js +0 -6
  3205. langflow/frontend/assets/scissors-line-dashed-9SHwsj2_.js +0 -6
  3206. langflow/frontend/assets/screen-share-DO62dUK0.js +0 -6
  3207. langflow/frontend/assets/screen-share-off-BJMAFr5c.js +0 -6
  3208. langflow/frontend/assets/scroll-D-CT_ZbG.js +0 -6
  3209. langflow/frontend/assets/scroll-text-CDdTa5ex.js +0 -6
  3210. langflow/frontend/assets/search-check-qxCprpoj.js +0 -6
  3211. langflow/frontend/assets/search-code-CJAVDuEb.js +0 -6
  3212. langflow/frontend/assets/search-slash-DLpiELjT.js +0 -6
  3213. langflow/frontend/assets/search-x-D48oZEtI.js +0 -6
  3214. langflow/frontend/assets/section-CqdMT4PA.js +0 -6
  3215. langflow/frontend/assets/send-Br-A3h4q.js +0 -6
  3216. langflow/frontend/assets/send-horizontal-CjRGHYs6.js +0 -6
  3217. langflow/frontend/assets/send-to-back-C4IeGAiR.js +0 -6
  3218. langflow/frontend/assets/separator-horizontal-4uetF9jq.js +0 -6
  3219. langflow/frontend/assets/separator-vertical-_jTFaHgP.js +0 -6
  3220. langflow/frontend/assets/server-CQ0C9ooa.js +0 -6
  3221. langflow/frontend/assets/server-cog-01CNI2S0.js +0 -6
  3222. langflow/frontend/assets/server-crash-CSeWRvDW.js +0 -6
  3223. langflow/frontend/assets/server-off-NOVB-Qu7.js +0 -6
  3224. langflow/frontend/assets/settings-2-CjEybQ7L.js +0 -6
  3225. langflow/frontend/assets/settings-BhOTnIj9.js +0 -6
  3226. langflow/frontend/assets/shapes-NQG_fbbX.js +0 -6
  3227. langflow/frontend/assets/share-2-Dot5r7f-.js +0 -6
  3228. langflow/frontend/assets/share-C9Ag2FpH.js +0 -6
  3229. langflow/frontend/assets/sheet-DU_yk1hA.js +0 -6
  3230. langflow/frontend/assets/shell-Cru3Zoji.js +0 -6
  3231. langflow/frontend/assets/shield-C9ps7W5H.js +0 -6
  3232. langflow/frontend/assets/shield-alert-CwW2EChY.js +0 -6
  3233. langflow/frontend/assets/shield-ban-BmaWmIH4.js +0 -6
  3234. langflow/frontend/assets/shield-check-DAV71iE6.js +0 -6
  3235. langflow/frontend/assets/shield-ellipsis-URxRGTr5.js +0 -6
  3236. langflow/frontend/assets/shield-half-BDybZkvA.js +0 -6
  3237. langflow/frontend/assets/shield-minus-Cr-G4WP4.js +0 -6
  3238. langflow/frontend/assets/shield-off-CR2hFw-p.js +0 -6
  3239. langflow/frontend/assets/shield-plus-BaUiwFvP.js +0 -6
  3240. langflow/frontend/assets/shield-question-BRkw5Nvy.js +0 -6
  3241. langflow/frontend/assets/shield-user-Bamz5Vrk.js +0 -6
  3242. langflow/frontend/assets/shield-x-1_7oCw38.js +0 -6
  3243. langflow/frontend/assets/ship-D_FgOoRy.js +0 -6
  3244. langflow/frontend/assets/ship-wheel-Bo1u3ivD.js +0 -6
  3245. langflow/frontend/assets/shirt-CHOPR50v.js +0 -6
  3246. langflow/frontend/assets/shopping-bag-CY1fwWKU.js +0 -6
  3247. langflow/frontend/assets/shopping-basket-CqPhL_tX.js +0 -6
  3248. langflow/frontend/assets/shopping-cart-DtKoil_0.js +0 -6
  3249. langflow/frontend/assets/shovel-BOvUP1YA.js +0 -6
  3250. langflow/frontend/assets/shower-head-C0CVzaQF.js +0 -6
  3251. langflow/frontend/assets/shredder-ByNDhX8v.js +0 -6
  3252. langflow/frontend/assets/shrimp-BOjolZpe.js +0 -6
  3253. langflow/frontend/assets/shrink-DyJEQMNf.js +0 -6
  3254. langflow/frontend/assets/shrub-BMxEAk2c.js +0 -6
  3255. langflow/frontend/assets/shuffle-BaUzpVog.js +0 -6
  3256. langflow/frontend/assets/sigma-BCtAKYdA.js +0 -6
  3257. langflow/frontend/assets/signal-CNgQJ2Dr.js +0 -6
  3258. langflow/frontend/assets/signal-high-BgHSkAzD.js +0 -6
  3259. langflow/frontend/assets/signal-low-Ci8SAJ_k.js +0 -6
  3260. langflow/frontend/assets/signal-medium-Dk4VtLJc.js +0 -6
  3261. langflow/frontend/assets/signal-zero-DcEdqxKZ.js +0 -6
  3262. langflow/frontend/assets/signature-DP-Rk0Qy.js +0 -6
  3263. langflow/frontend/assets/signpost-CtV-7AsP.js +0 -6
  3264. langflow/frontend/assets/signpost-big-DpyBipQ2.js +0 -6
  3265. langflow/frontend/assets/siren-DqicTbFC.js +0 -6
  3266. langflow/frontend/assets/skip-back-ITWPZhPB.js +0 -6
  3267. langflow/frontend/assets/skip-forward-B1tO1pX0.js +0 -6
  3268. langflow/frontend/assets/skull-6DXBnwla.js +0 -6
  3269. langflow/frontend/assets/slack-BBRoUvgi.js +0 -6
  3270. langflow/frontend/assets/slash-C0USDbov.js +0 -6
  3271. langflow/frontend/assets/slice-_XP4BC4d.js +0 -6
  3272. langflow/frontend/assets/sliders-horizontal-D7l7XYLw.js +0 -6
  3273. langflow/frontend/assets/sliders-vertical-fePs_FjS.js +0 -6
  3274. langflow/frontend/assets/smartphone-Ceal3P7K.js +0 -6
  3275. langflow/frontend/assets/smartphone-charging-BZHJ54_w.js +0 -6
  3276. langflow/frontend/assets/smartphone-nfc-Ju4uDMr5.js +0 -6
  3277. langflow/frontend/assets/smile-C4rwgUhy.js +0 -6
  3278. langflow/frontend/assets/smile-plus-BKUfpeuv.js +0 -6
  3279. langflow/frontend/assets/snail-Bo_OkcI8.js +0 -6
  3280. langflow/frontend/assets/snowflake-DP5eXGQI.js +0 -6
  3281. langflow/frontend/assets/sofa-DSxb6EpD.js +0 -6
  3282. langflow/frontend/assets/soup-m91lL-V_.js +0 -6
  3283. langflow/frontend/assets/space-CGPFqIma.js +0 -6
  3284. langflow/frontend/assets/spade-CVvhPUAD.js +0 -6
  3285. langflow/frontend/assets/sparkle-Cmz7HXs4.js +0 -6
  3286. langflow/frontend/assets/sparkles-CQLLkLWv.js +0 -6
  3287. langflow/frontend/assets/speaker-D1hIVm4-.js +0 -6
  3288. langflow/frontend/assets/speech-B4WCtMkN.js +0 -6
  3289. langflow/frontend/assets/spell-check-2-CHPwz3mR.js +0 -6
  3290. langflow/frontend/assets/spell-check-ByuMNdM2.js +0 -6
  3291. langflow/frontend/assets/spline-DTya-ZiD.js +0 -6
  3292. langflow/frontend/assets/spline-pointer-Cz8V23Bg.js +0 -6
  3293. langflow/frontend/assets/split-RojssMQv.js +0 -6
  3294. langflow/frontend/assets/spray-can-BGxZL3MH.js +0 -6
  3295. langflow/frontend/assets/sprout-BVcT_n0X.js +0 -6
  3296. langflow/frontend/assets/square-D0HQNqQo.js +0 -6
  3297. langflow/frontend/assets/square-activity-Bxw6rt6V.js +0 -6
  3298. langflow/frontend/assets/square-arrow-down-left-Ckg3cQWa.js +0 -6
  3299. langflow/frontend/assets/square-arrow-down-right-BFSrNWuj.js +0 -6
  3300. langflow/frontend/assets/square-arrow-down-zyOwPpQ3.js +0 -6
  3301. langflow/frontend/assets/square-arrow-left-DyXEGvIQ.js +0 -6
  3302. langflow/frontend/assets/square-arrow-out-down-left-BqhjM_a7.js +0 -6
  3303. langflow/frontend/assets/square-arrow-out-down-right-CKG4yS8i.js +0 -6
  3304. langflow/frontend/assets/square-arrow-out-up-left-Z1q_2Yow.js +0 -6
  3305. langflow/frontend/assets/square-arrow-out-up-right-onOI06xk.js +0 -6
  3306. langflow/frontend/assets/square-arrow-right-BBrpKIbp.js +0 -6
  3307. langflow/frontend/assets/square-arrow-up-BTZCPn6I.js +0 -6
  3308. langflow/frontend/assets/square-arrow-up-left-D7PYEMnw.js +0 -6
  3309. langflow/frontend/assets/square-arrow-up-right-NPJMPvtn.js +0 -6
  3310. langflow/frontend/assets/square-asterisk-D3yrNXTD.js +0 -6
  3311. langflow/frontend/assets/square-bottom-dashed-scissors-DFgLFSIf.js +0 -6
  3312. langflow/frontend/assets/square-chart-gantt-BJB-Fl0R.js +0 -6
  3313. langflow/frontend/assets/square-check-big-ISjyl8v2.js +0 -6
  3314. langflow/frontend/assets/square-check-mNLwMXKc.js +0 -6
  3315. langflow/frontend/assets/square-chevron-down-U79mnGVE.js +0 -6
  3316. langflow/frontend/assets/square-chevron-left-DyXXhhIx.js +0 -6
  3317. langflow/frontend/assets/square-chevron-right-7tliVWcK.js +0 -6
  3318. langflow/frontend/assets/square-chevron-up-CspIizbF.js +0 -6
  3319. langflow/frontend/assets/square-code-DOblauPz.js +0 -6
  3320. langflow/frontend/assets/square-dashed-WWTP-4tZ.js +0 -6
  3321. langflow/frontend/assets/square-dashed-bottom-code-DJiNLgX5.js +0 -6
  3322. langflow/frontend/assets/square-dashed-bottom-vpqvJqBy.js +0 -6
  3323. langflow/frontend/assets/square-dashed-kanban-D7pLL3K4.js +0 -6
  3324. langflow/frontend/assets/square-dashed-mouse-pointer-Dxv_Z_1M.js +0 -6
  3325. langflow/frontend/assets/square-divide-B5HvOg8-.js +0 -6
  3326. langflow/frontend/assets/square-dot-DvC7uJ_l.js +0 -6
  3327. langflow/frontend/assets/square-equal-SCHeo_r5.js +0 -6
  3328. langflow/frontend/assets/square-function-Dc_QgMWt.js +0 -6
  3329. langflow/frontend/assets/square-kanban-DK__Lha4.js +0 -6
  3330. langflow/frontend/assets/square-library-Dswl3lkL.js +0 -6
  3331. langflow/frontend/assets/square-m-DHOa3uam.js +0 -6
  3332. langflow/frontend/assets/square-menu-B-yrrTGb.js +0 -6
  3333. langflow/frontend/assets/square-minus-DHEhUTfl.js +0 -6
  3334. langflow/frontend/assets/square-mouse-pointer-DH-vGEWM.js +0 -6
  3335. langflow/frontend/assets/square-parking-BtbW2gIG.js +0 -6
  3336. langflow/frontend/assets/square-parking-off-BpumDarQ.js +0 -6
  3337. langflow/frontend/assets/square-pen-BwI5WjdB.js +0 -6
  3338. langflow/frontend/assets/square-percent-jqoYXabq.js +0 -6
  3339. langflow/frontend/assets/square-pi-BTwJI-r6.js +0 -6
  3340. langflow/frontend/assets/square-pilcrow-CxhdrEsR.js +0 -6
  3341. langflow/frontend/assets/square-play-BhlR3T7N.js +0 -6
  3342. langflow/frontend/assets/square-plus-BQtsOTt7.js +0 -6
  3343. langflow/frontend/assets/square-power-BjcTeS6Z.js +0 -6
  3344. langflow/frontend/assets/square-radical-DetASslS.js +0 -6
  3345. langflow/frontend/assets/square-round-corner-Cj92w0hp.js +0 -6
  3346. langflow/frontend/assets/square-scissors-CN6MR7EJ.js +0 -6
  3347. langflow/frontend/assets/square-sigma-Bt_u2eio.js +0 -6
  3348. langflow/frontend/assets/square-slash-BeI8GZ6O.js +0 -6
  3349. langflow/frontend/assets/square-split-horizontal-Bbx1W4jE.js +0 -6
  3350. langflow/frontend/assets/square-split-vertical-DQtp3zi9.js +0 -6
  3351. langflow/frontend/assets/square-square-A1qfX42u.js +0 -6
  3352. langflow/frontend/assets/square-stack-09VDaGLI.js +0 -6
  3353. langflow/frontend/assets/square-terminal-cRoANFJL.js +0 -6
  3354. langflow/frontend/assets/square-user-DFqqsEPC.js +0 -6
  3355. langflow/frontend/assets/square-user-round-BzKvleAN.js +0 -6
  3356. langflow/frontend/assets/square-x-yAbKKPWJ.js +0 -6
  3357. langflow/frontend/assets/squares-exclude-C_-__PnC.js +0 -6
  3358. langflow/frontend/assets/squares-intersect-CpUheze2.js +0 -6
  3359. langflow/frontend/assets/squares-subtract-CXe3a-Fs.js +0 -6
  3360. langflow/frontend/assets/squares-unite-CPOQWwVe.js +0 -6
  3361. langflow/frontend/assets/squircle-SC_0Xpdp.js +0 -6
  3362. langflow/frontend/assets/squirrel-CCkv_Spc.js +0 -6
  3363. langflow/frontend/assets/stamp-CwufY9O2.js +0 -6
  3364. langflow/frontend/assets/star-DMbG0DIu.js +0 -6
  3365. langflow/frontend/assets/star-half-DOaKzl5L.js +0 -6
  3366. langflow/frontend/assets/star-off-C59cUAQx.js +0 -6
  3367. langflow/frontend/assets/step-back-Dmh4hvAL.js +0 -6
  3368. langflow/frontend/assets/step-forward-NgdVCK4w.js +0 -6
  3369. langflow/frontend/assets/stethoscope-CSdO0tZO.js +0 -6
  3370. langflow/frontend/assets/sticker-CipkF4y0.js +0 -6
  3371. langflow/frontend/assets/sticky-note-Lyv9_dwm.js +0 -6
  3372. langflow/frontend/assets/store-pMKUblEf.js +0 -6
  3373. langflow/frontend/assets/stretch-horizontal-DjoPpYMU.js +0 -6
  3374. langflow/frontend/assets/stretch-vertical-BLrsfwxu.js +0 -6
  3375. langflow/frontend/assets/strikethrough-nOGYTph1.js +0 -6
  3376. langflow/frontend/assets/subscript-BoVIWNX3.js +0 -6
  3377. langflow/frontend/assets/sun-I1ZjVOpb.js +0 -6
  3378. langflow/frontend/assets/sun-dim-DxuoBIlI.js +0 -6
  3379. langflow/frontend/assets/sun-medium-YM9NcIo-.js +0 -6
  3380. langflow/frontend/assets/sun-moon-CxggdPBy.js +0 -6
  3381. langflow/frontend/assets/sun-snow-HymTjSDa.js +0 -6
  3382. langflow/frontend/assets/sunrise-DF-CESTd.js +0 -6
  3383. langflow/frontend/assets/sunset-C9zEKy65.js +0 -6
  3384. langflow/frontend/assets/superscript-BK6lIMJS.js +0 -6
  3385. langflow/frontend/assets/swatch-book-WwPb1dA_.js +0 -6
  3386. langflow/frontend/assets/swiss-franc-BtKN1w4J.js +0 -6
  3387. langflow/frontend/assets/switch-camera-D2nfnAu9.js +0 -6
  3388. langflow/frontend/assets/sword-C4-WvC_-.js +0 -6
  3389. langflow/frontend/assets/swords-B8N25Ddp.js +0 -6
  3390. langflow/frontend/assets/syringe-DsQQlNXY.js +0 -6
  3391. langflow/frontend/assets/table-2-BQvrEkTN.js +0 -6
  3392. langflow/frontend/assets/table-CvKoBitD.js +0 -6
  3393. langflow/frontend/assets/table-cells-merge-CppV8Wz3.js +0 -6
  3394. langflow/frontend/assets/table-cells-split-CcHVl0xn.js +0 -6
  3395. langflow/frontend/assets/table-columns-split-D6HoEG7P.js +0 -6
  3396. langflow/frontend/assets/table-of-contents-eTuKgrwB.js +0 -6
  3397. langflow/frontend/assets/table-properties-ADoOx_f7.js +0 -6
  3398. langflow/frontend/assets/table-rows-split-xh9VuNIi.js +0 -6
  3399. langflow/frontend/assets/tablet-DzEg03_1.js +0 -6
  3400. langflow/frontend/assets/tablet-smartphone-ixnzuMHd.js +0 -6
  3401. langflow/frontend/assets/tablets-0OsDPEFP.js +0 -6
  3402. langflow/frontend/assets/tag-Dmu2ua7P.js +0 -6
  3403. langflow/frontend/assets/tags-BsPzv4Yc.js +0 -6
  3404. langflow/frontend/assets/tally-1-8jLiE_sX.js +0 -6
  3405. langflow/frontend/assets/tally-2-B1isRFWT.js +0 -6
  3406. langflow/frontend/assets/tally-3-DXKCdYaS.js +0 -6
  3407. langflow/frontend/assets/tally-4-BXEHQo27.js +0 -6
  3408. langflow/frontend/assets/tally-5-C3nEQteI.js +0 -6
  3409. langflow/frontend/assets/tangent-BzPyXsIg.js +0 -6
  3410. langflow/frontend/assets/target-DHXyLbd9.js +0 -6
  3411. langflow/frontend/assets/telescope-DEiGCwr9.js +0 -6
  3412. langflow/frontend/assets/tent-CVNhLVOE.js +0 -6
  3413. langflow/frontend/assets/tent-tree-mBsJGV2B.js +0 -6
  3414. langflow/frontend/assets/terminal-DMm5d_QO.js +0 -6
  3415. langflow/frontend/assets/test-tube-CzEEApmA.js +0 -6
  3416. langflow/frontend/assets/test-tube-diagonal-DlGbblJV.js +0 -6
  3417. langflow/frontend/assets/test-tubes-CXc14UPo.js +0 -6
  3418. langflow/frontend/assets/text-CUHV3ow7.js +0 -6
  3419. langflow/frontend/assets/text-cursor-DXNfjJi6.js +0 -6
  3420. langflow/frontend/assets/text-cursor-input-DNteLXaE.js +0 -6
  3421. langflow/frontend/assets/text-quote-CuJlyrzF.js +0 -6
  3422. langflow/frontend/assets/text-search-B-HUby4S.js +0 -6
  3423. langflow/frontend/assets/text-select-D5xXaHo2.js +0 -6
  3424. langflow/frontend/assets/theater-c2osSZbd.js +0 -6
  3425. langflow/frontend/assets/thermometer-SgO76fOu.js +0 -6
  3426. langflow/frontend/assets/thermometer-snowflake-CfWjpcR7.js +0 -6
  3427. langflow/frontend/assets/thermometer-sun-Ak9ymKKF.js +0 -6
  3428. langflow/frontend/assets/thumbs-down-NLF3IlDF.js +0 -6
  3429. langflow/frontend/assets/thumbs-up-nKN8tGE9.js +0 -6
  3430. langflow/frontend/assets/ticket-check-C-2IPGrf.js +0 -6
  3431. langflow/frontend/assets/ticket-minus-DZkV3l1x.js +0 -6
  3432. langflow/frontend/assets/ticket-percent-xkY5ER6p.js +0 -6
  3433. langflow/frontend/assets/ticket-plus-ZgcciTYK.js +0 -6
  3434. langflow/frontend/assets/ticket-slash-BHf3hG7v.js +0 -6
  3435. langflow/frontend/assets/ticket-uI-c-GK0.js +0 -6
  3436. langflow/frontend/assets/ticket-x-BS5QEUOA.js +0 -6
  3437. langflow/frontend/assets/tickets-Cr1-Fy3S.js +0 -6
  3438. langflow/frontend/assets/tickets-plane-DrUdSYAt.js +0 -6
  3439. langflow/frontend/assets/timer-C7junahN.js +0 -6
  3440. langflow/frontend/assets/timer-off-BfU_Mc7j.js +0 -6
  3441. langflow/frontend/assets/timer-reset-BwODmBL5.js +0 -6
  3442. langflow/frontend/assets/toggle-left-BHaV1KPl.js +0 -6
  3443. langflow/frontend/assets/toggle-right-Bb8K-BH_.js +0 -6
  3444. langflow/frontend/assets/toilet-DR7J8JzJ.js +0 -6
  3445. langflow/frontend/assets/tornado-DZYL5kc1.js +0 -6
  3446. langflow/frontend/assets/torus-BiNs_Qf5.js +0 -6
  3447. langflow/frontend/assets/touchpad-D8YmnBt8.js +0 -6
  3448. langflow/frontend/assets/touchpad-off-De3ChH3v.js +0 -6
  3449. langflow/frontend/assets/tower-control-DQx4sLzk.js +0 -6
  3450. langflow/frontend/assets/toy-brick-CHO7RtAj.js +0 -6
  3451. langflow/frontend/assets/tractor-DYxf-yiC.js +0 -6
  3452. langflow/frontend/assets/traffic-cone-Cpoa90h8.js +0 -6
  3453. langflow/frontend/assets/train-front-DYVPQpty.js +0 -6
  3454. langflow/frontend/assets/train-front-tunnel-x1dRbVtR.js +0 -6
  3455. langflow/frontend/assets/train-track-ewR6llkC.js +0 -6
  3456. langflow/frontend/assets/tram-front-C4rLHTj3.js +0 -6
  3457. langflow/frontend/assets/transgender-CuV-dpwE.js +0 -6
  3458. langflow/frontend/assets/trash-DXs4vV7S.js +0 -6
  3459. langflow/frontend/assets/tree-deciduous-BzdMqR7v.js +0 -6
  3460. langflow/frontend/assets/tree-palm-3RdDYpck.js +0 -6
  3461. langflow/frontend/assets/tree-pine-vTurUP2D.js +0 -6
  3462. langflow/frontend/assets/trees-iWKuamny.js +0 -6
  3463. langflow/frontend/assets/trello-dZZE2jDr.js +0 -6
  3464. langflow/frontend/assets/trending-down-BZqp_cpg.js +0 -6
  3465. langflow/frontend/assets/trending-up-RMbPjKQc.js +0 -6
  3466. langflow/frontend/assets/trending-up-down-Cbp1auzy.js +0 -6
  3467. langflow/frontend/assets/triangle-CpLPwgCY.js +0 -6
  3468. langflow/frontend/assets/triangle-alert-CpQKEoL_.js +0 -6
  3469. langflow/frontend/assets/triangle-dashed-uQj5q-gn.js +0 -6
  3470. langflow/frontend/assets/triangle-right-B6WO3p_9.js +0 -6
  3471. langflow/frontend/assets/trophy-BZo88b7i.js +0 -6
  3472. langflow/frontend/assets/truck-D_EfGY-X.js +0 -6
  3473. langflow/frontend/assets/truck-electric-6qEms0iz.js +0 -6
  3474. langflow/frontend/assets/turtle-BQ7cahEZ.js +0 -6
  3475. langflow/frontend/assets/tv--xVc9BM8.js +0 -6
  3476. langflow/frontend/assets/tv-minimal-CjVu7M15.js +0 -6
  3477. langflow/frontend/assets/tv-minimal-play-Cj3-8eZr.js +0 -6
  3478. langflow/frontend/assets/twitch-DDFWEziZ.js +0 -6
  3479. langflow/frontend/assets/twitter-DywAeMGx.js +0 -6
  3480. langflow/frontend/assets/type-BH-XCjEX.js +0 -6
  3481. langflow/frontend/assets/type-outline-Dz7aYXzQ.js +0 -6
  3482. langflow/frontend/assets/umbrella-DWxUmr0j.js +0 -6
  3483. langflow/frontend/assets/umbrella-off-CJrUaj1X.js +0 -6
  3484. langflow/frontend/assets/underline-C1uX-GRW.js +0 -6
  3485. langflow/frontend/assets/undo-2-Bdu-pc1g.js +0 -6
  3486. langflow/frontend/assets/undo-BU40A3HY.js +0 -6
  3487. langflow/frontend/assets/undo-dot-C90GOIpt.js +0 -6
  3488. langflow/frontend/assets/unfold-horizontal-3_HC0rIG.js +0 -6
  3489. langflow/frontend/assets/unfold-vertical-BeaLK0Ql.js +0 -6
  3490. langflow/frontend/assets/ungroup-c11hWNSA.js +0 -6
  3491. langflow/frontend/assets/university-BxakLIUS.js +0 -6
  3492. langflow/frontend/assets/unlink-2-CDTQlVnM.js +0 -6
  3493. langflow/frontend/assets/unlink-Rr0evvxv.js +0 -6
  3494. langflow/frontend/assets/unplug-BZrFwvdA.js +0 -6
  3495. langflow/frontend/assets/upload-BvfsMq_a.js +0 -6
  3496. langflow/frontend/assets/usb-DfAX7Hqp.js +0 -6
  3497. langflow/frontend/assets/use-post-add-user-DEjgmv08.js +0 -1
  3498. langflow/frontend/assets/user-D8KVs9Gs.js +0 -6
  3499. langflow/frontend/assets/user-check-5lpM2hRI.js +0 -6
  3500. langflow/frontend/assets/user-cog-DldDysSp.js +0 -6
  3501. langflow/frontend/assets/user-lock-DGwGaf5U.js +0 -6
  3502. langflow/frontend/assets/user-minus-CU2zdpfi.js +0 -6
  3503. langflow/frontend/assets/user-pen-CxkRk5qP.js +0 -6
  3504. langflow/frontend/assets/user-plus-DLtSlns-.js +0 -6
  3505. langflow/frontend/assets/user-round-BM1w-1L9.js +0 -6
  3506. langflow/frontend/assets/user-round-check-C0RRxCI2.js +0 -6
  3507. langflow/frontend/assets/user-round-cog-C8w1jn42.js +0 -6
  3508. langflow/frontend/assets/user-round-minus-BPiddl9C.js +0 -6
  3509. langflow/frontend/assets/user-round-pen-NueFdQDh.js +0 -6
  3510. langflow/frontend/assets/user-round-plus-ROhE8p3t.js +0 -6
  3511. langflow/frontend/assets/user-round-search-BlvdRH_s.js +0 -6
  3512. langflow/frontend/assets/user-round-x-BhE1Tahv.js +0 -6
  3513. langflow/frontend/assets/user-search-BFuk2kiu.js +0 -6
  3514. langflow/frontend/assets/user-x-DphT8NyO.js +0 -6
  3515. langflow/frontend/assets/users-Crqhr_f7.js +0 -6
  3516. langflow/frontend/assets/users-round-Dz5gTdY6.js +0 -6
  3517. langflow/frontend/assets/utensils-CkYrnzmR.js +0 -6
  3518. langflow/frontend/assets/utensils-crossed-Cqf3whv4.js +0 -6
  3519. langflow/frontend/assets/utility-pole-CJ9Y7eYZ.js +0 -6
  3520. langflow/frontend/assets/variable-DTB-uYdL.js +0 -6
  3521. langflow/frontend/assets/vault-Csqqy-Hs.js +0 -6
  3522. langflow/frontend/assets/vegan-dl8I2e2Y.js +0 -6
  3523. langflow/frontend/assets/venetian-mask-B6qzfBbF.js +0 -6
  3524. langflow/frontend/assets/venus-1BZycY_o.js +0 -6
  3525. langflow/frontend/assets/venus-and-mars-DeMX52La.js +0 -6
  3526. langflow/frontend/assets/vibrate-iL8WUThK.js +0 -6
  3527. langflow/frontend/assets/vibrate-off-CrAMFgjX.js +0 -6
  3528. langflow/frontend/assets/video-BRWuafCQ.js +0 -6
  3529. langflow/frontend/assets/video-off-m-A-uoDM.js +0 -6
  3530. langflow/frontend/assets/videotape-3TA_qY--.js +0 -6
  3531. langflow/frontend/assets/view-BINXbJwA.js +0 -6
  3532. langflow/frontend/assets/voicemail-DC5KRuwX.js +0 -6
  3533. langflow/frontend/assets/volleyball-IrR0frqb.js +0 -6
  3534. langflow/frontend/assets/volume-1-C3mGv4B9.js +0 -6
  3535. langflow/frontend/assets/volume-2-DqxSWvYL.js +0 -6
  3536. langflow/frontend/assets/volume-jK9_8FE1.js +0 -6
  3537. langflow/frontend/assets/volume-off-BeJMxa9w.js +0 -6
  3538. langflow/frontend/assets/volume-x-DZroQO2S.js +0 -6
  3539. langflow/frontend/assets/vote-uLR1dkZK.js +0 -6
  3540. langflow/frontend/assets/wallet-DwTZCoxl.js +0 -6
  3541. langflow/frontend/assets/wallet-cards-B5jyn9yh.js +0 -6
  3542. langflow/frontend/assets/wallet-minimal-DSQwDgSd.js +0 -6
  3543. langflow/frontend/assets/wallpaper-DxER0w2t.js +0 -6
  3544. langflow/frontend/assets/wand-BG5sbV61.js +0 -6
  3545. langflow/frontend/assets/wand-sparkles-BlVPmqxl.js +0 -6
  3546. langflow/frontend/assets/warehouse-Cpf_KBkY.js +0 -6
  3547. langflow/frontend/assets/washing-machine-BI3TmUYy.js +0 -6
  3548. langflow/frontend/assets/watch-ChYtOk1k.js +0 -6
  3549. langflow/frontend/assets/waves-ladder-CvrCrCWg.js +0 -6
  3550. langflow/frontend/assets/waves-pHzhSVfJ.js +0 -6
  3551. langflow/frontend/assets/waypoints-C6l3WFJv.js +0 -6
  3552. langflow/frontend/assets/webcam-DvAx85E9.js +0 -6
  3553. langflow/frontend/assets/webhook-CsqTmbPQ.js +0 -6
  3554. langflow/frontend/assets/webhook-off-CfD_m8hg.js +0 -6
  3555. langflow/frontend/assets/weight-CGZTQ3--.js +0 -6
  3556. langflow/frontend/assets/wheat-CkpVpRdu.js +0 -6
  3557. langflow/frontend/assets/wheat-off-CO3uO4R-.js +0 -6
  3558. langflow/frontend/assets/whole-word-CdPPeN8f.js +0 -6
  3559. langflow/frontend/assets/wifi-BcauAZNm.js +0 -6
  3560. langflow/frontend/assets/wifi-high-D59VM0EE.js +0 -6
  3561. langflow/frontend/assets/wifi-low-DhBAgD-v.js +0 -6
  3562. langflow/frontend/assets/wifi-off-DgbOdOpf.js +0 -6
  3563. langflow/frontend/assets/wifi-pen-DmOGocSb.js +0 -6
  3564. langflow/frontend/assets/wifi-zero-Dh57KBRK.js +0 -6
  3565. langflow/frontend/assets/wind-BKTGY5sD.js +0 -6
  3566. langflow/frontend/assets/wind-arrow-down-gVTwaNSF.js +0 -6
  3567. langflow/frontend/assets/wine-D8jrY3Hr.js +0 -6
  3568. langflow/frontend/assets/wine-off-Dw_6ZU3S.js +0 -6
  3569. langflow/frontend/assets/workflow-DuspoKXG.js +0 -6
  3570. langflow/frontend/assets/worm-BgywYnXR.js +0 -6
  3571. langflow/frontend/assets/wrap-text-5Xt0DrUx.js +0 -6
  3572. langflow/frontend/assets/wrench-xBwFmbMt.js +0 -6
  3573. langflow/frontend/assets/youtube-B1jNh5Ie.js +0 -6
  3574. langflow/frontend/assets/zap-BPfwGU9e.js +0 -6
  3575. langflow/frontend/assets/zap-off-CrFCnssK.js +0 -6
  3576. langflow/frontend/assets/zoom-in-xsJJYN2q.js +0 -6
  3577. langflow/frontend/assets/zoom-out-CLqpjEps.js +0 -6
  3578. langflow_base_nightly-1.7.0.dev18.dist-info/METADATA +0 -98
  3579. langflow_base_nightly-1.7.0.dev18.dist-info/RECORD +0 -2259
  3580. {langflow_base_nightly-1.7.0.dev18.dist-info → langflow_base_nightly-1.7.0.dev20.dist-info}/WHEEL +0 -0
  3581. {langflow_base_nightly-1.7.0.dev18.dist-info → langflow_base_nightly-1.7.0.dev20.dist-info}/entry_points.txt +0 -0
@@ -1184,7 +1184,7 @@
1184
1184
  },
1185
1185
  {
1186
1186
  "name": "pydantic",
1187
- "version": "2.10.6"
1187
+ "version": "2.11.10"
1188
1188
  },
1189
1189
  {
1190
1190
  "name": "lfx",
@@ -1896,7 +1896,7 @@
1896
1896
  "last_updated": "2025-09-30T16:16:26.172Z",
1897
1897
  "legacy": false,
1898
1898
  "metadata": {
1899
- "code_hash": "5d810fae1fd1",
1899
+ "code_hash": "790473c08728",
1900
1900
  "dependencies": {
1901
1901
  "dependencies": [
1902
1902
  {
@@ -1957,6 +1957,25 @@
1957
1957
  "pinned": false,
1958
1958
  "template": {
1959
1959
  "_type": "Component",
1960
+ "append_mode": {
1961
+ "_input_type": "BoolInput",
1962
+ "advanced": false,
1963
+ "display_name": "Append",
1964
+ "dynamic": false,
1965
+ "info": "Append to file if it exists (only for plain text formats). Disabled for binary formats like Excel.",
1966
+ "list": false,
1967
+ "list_add_label": "Add More",
1968
+ "name": "append_mode",
1969
+ "placeholder": "",
1970
+ "required": false,
1971
+ "show": false,
1972
+ "title_case": false,
1973
+ "tool_mode": false,
1974
+ "trace_as_metadata": true,
1975
+ "track_in_telemetry": true,
1976
+ "type": "bool",
1977
+ "value": false
1978
+ },
1960
1979
  "aws_access_key_id": {
1961
1980
  "_input_type": "SecretStrInput",
1962
1981
  "advanced": true,
@@ -2081,7 +2100,7 @@
2081
2100
  "show": true,
2082
2101
  "title_case": false,
2083
2102
  "type": "code",
2084
- "value": "import json\nfrom collections.abc import AsyncIterator, Iterator\nfrom pathlib import Path\n\nimport orjson\nimport pandas as pd\nfrom fastapi import UploadFile\nfrom fastapi.encoders import jsonable_encoder\n\nfrom lfx.custom import Component\nfrom lfx.inputs import SortableListInput\nfrom lfx.io import DropdownInput, HandleInput, SecretStrInput, StrInput\nfrom lfx.schema import Data, DataFrame, Message\nfrom lfx.services.deps import get_settings_service, get_storage_service, session_scope\nfrom lfx.template.field.base import Output\n\n\nclass SaveToFileComponent(Component):\n display_name = \"Write File\"\n description = \"Save data to local file, AWS S3, or Google Drive in the selected format.\"\n documentation: str = \"https://docs.langflow.org/components-processing#save-file\"\n icon = \"file-text\"\n name = \"SaveToFile\"\n\n # File format options for different storage types\n LOCAL_DATA_FORMAT_CHOICES = [\"csv\", \"excel\", \"json\", \"markdown\"]\n LOCAL_MESSAGE_FORMAT_CHOICES = [\"txt\", \"json\", \"markdown\"]\n AWS_FORMAT_CHOICES = [\n \"txt\",\n \"json\",\n \"csv\",\n \"xml\",\n \"html\",\n \"md\",\n \"yaml\",\n \"log\",\n \"tsv\",\n \"jsonl\",\n \"parquet\",\n \"xlsx\",\n \"zip\",\n ]\n GDRIVE_FORMAT_CHOICES = [\"txt\", \"json\", \"csv\", \"xlsx\", \"slides\", \"docs\", \"jpg\", \"mp3\"]\n\n inputs = [\n # Storage location selection\n SortableListInput(\n name=\"storage_location\",\n display_name=\"Storage Location\",\n placeholder=\"Select Location\",\n info=\"Choose where to save the file.\",\n options=[\n {\"name\": \"Local\", \"icon\": \"hard-drive\"},\n {\"name\": \"AWS\", \"icon\": \"Amazon\"},\n {\"name\": \"Google Drive\", \"icon\": \"google\"},\n ],\n real_time_refresh=True,\n limit=1,\n ),\n # Common inputs\n HandleInput(\n name=\"input\",\n display_name=\"File Content\",\n info=\"The input to save.\",\n dynamic=True,\n input_types=[\"Data\", \"DataFrame\", \"Message\"],\n required=True,\n ),\n StrInput(\n name=\"file_name\",\n display_name=\"File Name\",\n info=\"Name file will be saved as (without extension).\",\n required=True,\n show=False,\n tool_mode=True,\n ),\n # Format inputs (dynamic based on storage location)\n DropdownInput(\n name=\"local_format\",\n display_name=\"File Format\",\n options=list(dict.fromkeys(LOCAL_DATA_FORMAT_CHOICES + LOCAL_MESSAGE_FORMAT_CHOICES)),\n info=\"Select the file format for local storage.\",\n value=\"json\",\n show=False,\n ),\n DropdownInput(\n name=\"aws_format\",\n display_name=\"File Format\",\n options=AWS_FORMAT_CHOICES,\n info=\"Select the file format for AWS S3 storage.\",\n value=\"txt\",\n show=False,\n ),\n DropdownInput(\n name=\"gdrive_format\",\n display_name=\"File Format\",\n options=GDRIVE_FORMAT_CHOICES,\n info=\"Select the file format for Google Drive storage.\",\n value=\"txt\",\n show=False,\n ),\n # AWS S3 specific inputs\n SecretStrInput(\n name=\"aws_access_key_id\",\n display_name=\"AWS Access Key ID\",\n info=\"AWS Access key ID.\",\n show=False,\n advanced=True,\n ),\n SecretStrInput(\n name=\"aws_secret_access_key\",\n display_name=\"AWS Secret Key\",\n info=\"AWS Secret Key.\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"bucket_name\",\n display_name=\"S3 Bucket Name\",\n info=\"Enter the name of the S3 bucket.\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"aws_region\",\n display_name=\"AWS Region\",\n info=\"AWS region (e.g., us-east-1, eu-west-1).\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"s3_prefix\",\n display_name=\"S3 Prefix\",\n info=\"Prefix for all files in S3.\",\n show=False,\n advanced=True,\n ),\n # Google Drive specific inputs\n SecretStrInput(\n name=\"service_account_key\",\n display_name=\"GCP Credentials Secret Key\",\n info=\"Your Google Cloud Platform service account JSON key as a secret string (complete JSON content).\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"folder_id\",\n display_name=\"Google Drive Folder ID\",\n info=(\n \"The Google Drive folder ID where the file will be uploaded. \"\n \"The folder must be shared with the service account email.\"\n ),\n show=False,\n advanced=True,\n ),\n ]\n\n outputs = [Output(display_name=\"File Path\", name=\"message\", method=\"save_to_file\")]\n\n def update_build_config(self, build_config, field_value, field_name=None):\n \"\"\"Update build configuration to show/hide fields based on storage location selection.\"\"\"\n if field_name != \"storage_location\":\n return build_config\n\n # Extract selected storage location\n selected = [location[\"name\"] for location in field_value] if isinstance(field_value, list) else []\n\n # Hide all dynamic fields first\n dynamic_fields = [\n \"file_name\", # Common fields (input is always visible)\n \"local_format\",\n \"aws_format\",\n \"gdrive_format\",\n \"aws_access_key_id\",\n \"aws_secret_access_key\",\n \"bucket_name\",\n \"aws_region\",\n \"s3_prefix\",\n \"service_account_key\",\n \"folder_id\",\n ]\n\n for f_name in dynamic_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = False\n\n # Show fields based on selected storage location\n if len(selected) == 1:\n location = selected[0]\n\n # Show file_name when any storage location is selected (input is always visible)\n if \"file_name\" in build_config:\n build_config[\"file_name\"][\"show\"] = True\n\n if location == \"Local\":\n if \"local_format\" in build_config:\n build_config[\"local_format\"][\"show\"] = True\n\n elif location == \"AWS\":\n aws_fields = [\n \"aws_format\",\n \"aws_access_key_id\",\n \"aws_secret_access_key\",\n \"bucket_name\",\n \"aws_region\",\n \"s3_prefix\",\n ]\n for f_name in aws_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = True\n\n elif location == \"Google Drive\":\n gdrive_fields = [\"gdrive_format\", \"service_account_key\", \"folder_id\"]\n for f_name in gdrive_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = True\n\n return build_config\n\n async def save_to_file(self) -> Message:\n \"\"\"Save the input to a file and upload it, returning a confirmation message.\"\"\"\n # Validate inputs\n if not self.file_name:\n msg = \"File name must be provided.\"\n raise ValueError(msg)\n if not self._get_input_type():\n msg = \"Input type is not set.\"\n raise ValueError(msg)\n\n # Get selected storage location\n storage_location = self._get_selected_storage_location()\n if not storage_location:\n msg = \"Storage location must be selected.\"\n raise ValueError(msg)\n\n # Route to appropriate save method based on storage location\n if storage_location == \"Local\":\n return await self._save_to_local()\n if storage_location == \"AWS\":\n return await self._save_to_aws()\n if storage_location == \"Google Drive\":\n return await self._save_to_google_drive()\n msg = f\"Unsupported storage location: {storage_location}\"\n raise ValueError(msg)\n\n def _get_input_type(self) -> str:\n \"\"\"Determine the input type based on the provided input.\"\"\"\n # Use exact type checking (type() is) instead of isinstance() to avoid inheritance issues.\n # Since Message inherits from Data, isinstance(message, Data) would return True for Message objects,\n # causing Message inputs to be incorrectly identified as Data type.\n if type(self.input) is DataFrame:\n return \"DataFrame\"\n if type(self.input) is Message:\n return \"Message\"\n if type(self.input) is Data:\n return \"Data\"\n msg = f\"Unsupported input type: {type(self.input)}\"\n raise ValueError(msg)\n\n def _get_default_format(self) -> str:\n \"\"\"Return the default file format based on input type.\"\"\"\n if self._get_input_type() == \"DataFrame\":\n return \"csv\"\n if self._get_input_type() == \"Data\":\n return \"json\"\n if self._get_input_type() == \"Message\":\n return \"json\"\n return \"json\" # Fallback\n\n def _adjust_file_path_with_format(self, path: Path, fmt: str) -> Path:\n \"\"\"Adjust the file path to include the correct extension.\"\"\"\n file_extension = path.suffix.lower().lstrip(\".\")\n if fmt == \"excel\":\n return Path(f\"{path}.xlsx\").expanduser() if file_extension not in [\"xlsx\", \"xls\"] else path\n return Path(f\"{path}.{fmt}\").expanduser() if file_extension != fmt else path\n\n async def _upload_file(self, file_path: Path) -> None:\n \"\"\"Upload the saved file using the upload_user_file service.\"\"\"\n from langflow.api.v2.files import upload_user_file\n from langflow.services.database.models.user.crud import get_user_by_id\n\n # Ensure the file exists\n if not file_path.exists():\n msg = f\"File not found: {file_path}\"\n raise FileNotFoundError(msg)\n\n # Upload the file\n with file_path.open(\"rb\") as f:\n async with session_scope() as db:\n if not self.user_id:\n msg = \"User ID is required for file saving.\"\n raise ValueError(msg)\n current_user = await get_user_by_id(db, self.user_id)\n\n await upload_user_file(\n file=UploadFile(filename=file_path.name, file=f, size=file_path.stat().st_size),\n session=db,\n current_user=current_user,\n storage_service=get_storage_service(),\n settings_service=get_settings_service(),\n )\n\n def _save_dataframe(self, dataframe: DataFrame, path: Path, fmt: str) -> str:\n \"\"\"Save a DataFrame to the specified file format.\"\"\"\n if fmt == \"csv\":\n dataframe.to_csv(path, index=False)\n elif fmt == \"excel\":\n dataframe.to_excel(path, index=False, engine=\"openpyxl\")\n elif fmt == \"json\":\n dataframe.to_json(path, orient=\"records\", indent=2)\n elif fmt == \"markdown\":\n path.write_text(dataframe.to_markdown(index=False), encoding=\"utf-8\")\n else:\n msg = f\"Unsupported DataFrame format: {fmt}\"\n raise ValueError(msg)\n return f\"DataFrame saved successfully as '{path}'\"\n\n def _save_data(self, data: Data, path: Path, fmt: str) -> str:\n \"\"\"Save a Data object to the specified file format.\"\"\"\n if fmt == \"csv\":\n pd.DataFrame(data.data).to_csv(path, index=False)\n elif fmt == \"excel\":\n pd.DataFrame(data.data).to_excel(path, index=False, engine=\"openpyxl\")\n elif fmt == \"json\":\n path.write_text(\n orjson.dumps(jsonable_encoder(data.data), option=orjson.OPT_INDENT_2).decode(\"utf-8\"), encoding=\"utf-8\"\n )\n elif fmt == \"markdown\":\n path.write_text(pd.DataFrame(data.data).to_markdown(index=False), encoding=\"utf-8\")\n else:\n msg = f\"Unsupported Data format: {fmt}\"\n raise ValueError(msg)\n return f\"Data saved successfully as '{path}'\"\n\n async def _save_message(self, message: Message, path: Path, fmt: str) -> str:\n \"\"\"Save a Message to the specified file format, handling async iterators.\"\"\"\n content = \"\"\n if message.text is None:\n content = \"\"\n elif isinstance(message.text, AsyncIterator):\n async for item in message.text:\n content += str(item) + \" \"\n content = content.strip()\n elif isinstance(message.text, Iterator):\n content = \" \".join(str(item) for item in message.text)\n else:\n content = str(message.text)\n\n if fmt == \"txt\":\n path.write_text(content, encoding=\"utf-8\")\n elif fmt == \"json\":\n path.write_text(json.dumps({\"message\": content}, indent=2), encoding=\"utf-8\")\n elif fmt == \"markdown\":\n path.write_text(f\"**Message:**\\n\\n{content}\", encoding=\"utf-8\")\n else:\n msg = f\"Unsupported Message format: {fmt}\"\n raise ValueError(msg)\n return f\"Message saved successfully as '{path}'\"\n\n def _get_selected_storage_location(self) -> str:\n \"\"\"Get the selected storage location from the SortableListInput.\"\"\"\n if hasattr(self, \"storage_location\") and self.storage_location:\n if isinstance(self.storage_location, list) and len(self.storage_location) > 0:\n return self.storage_location[0].get(\"name\", \"\")\n if isinstance(self.storage_location, dict):\n return self.storage_location.get(\"name\", \"\")\n return \"\"\n\n def _get_file_format_for_location(self, location: str) -> str:\n \"\"\"Get the appropriate file format based on storage location.\"\"\"\n if location == \"Local\":\n return getattr(self, \"local_format\", None) or self._get_default_format()\n if location == \"AWS\":\n return getattr(self, \"aws_format\", \"txt\")\n if location == \"Google Drive\":\n return getattr(self, \"gdrive_format\", \"txt\")\n return self._get_default_format()\n\n async def _save_to_local(self) -> Message:\n \"\"\"Save file to local storage (original functionality).\"\"\"\n file_format = self._get_file_format_for_location(\"Local\")\n\n # Validate file format based on input type\n allowed_formats = (\n self.LOCAL_MESSAGE_FORMAT_CHOICES if self._get_input_type() == \"Message\" else self.LOCAL_DATA_FORMAT_CHOICES\n )\n if file_format not in allowed_formats:\n msg = f\"Invalid file format '{file_format}' for {self._get_input_type()}. Allowed: {allowed_formats}\"\n raise ValueError(msg)\n\n # Prepare file path\n file_path = Path(self.file_name).expanduser()\n if not file_path.parent.exists():\n file_path.parent.mkdir(parents=True, exist_ok=True)\n file_path = self._adjust_file_path_with_format(file_path, file_format)\n\n # Save the input to file based on type\n if self._get_input_type() == \"DataFrame\":\n confirmation = self._save_dataframe(self.input, file_path, file_format)\n elif self._get_input_type() == \"Data\":\n confirmation = self._save_data(self.input, file_path, file_format)\n elif self._get_input_type() == \"Message\":\n confirmation = await self._save_message(self.input, file_path, file_format)\n else:\n msg = f\"Unsupported input type: {self._get_input_type()}\"\n raise ValueError(msg)\n\n # Upload the saved file\n await self._upload_file(file_path)\n\n # Return the final file path and confirmation message\n final_path = Path.cwd() / file_path if not file_path.is_absolute() else file_path\n return Message(text=f\"{confirmation} at {final_path}\")\n\n async def _save_to_aws(self) -> Message:\n \"\"\"Save file to AWS S3 using S3 functionality.\"\"\"\n # Validate AWS credentials\n if not getattr(self, \"aws_access_key_id\", None):\n msg = \"AWS Access Key ID is required for S3 storage\"\n raise ValueError(msg)\n if not getattr(self, \"aws_secret_access_key\", None):\n msg = \"AWS Secret Key is required for S3 storage\"\n raise ValueError(msg)\n if not getattr(self, \"bucket_name\", None):\n msg = \"S3 Bucket Name is required for S3 storage\"\n raise ValueError(msg)\n\n # Use S3 upload functionality\n try:\n import boto3\n except ImportError as e:\n msg = \"boto3 is not installed. Please install it using `uv pip install boto3`.\"\n raise ImportError(msg) from e\n\n # Create S3 client\n client_config = {\n \"aws_access_key_id\": self.aws_access_key_id,\n \"aws_secret_access_key\": self.aws_secret_access_key,\n }\n\n if hasattr(self, \"aws_region\") and self.aws_region:\n client_config[\"region_name\"] = self.aws_region\n\n s3_client = boto3.client(\"s3\", **client_config)\n\n # Extract content\n content = self._extract_content_for_upload()\n file_format = self._get_file_format_for_location(\"AWS\")\n\n # Generate file path\n file_path = f\"{self.file_name}.{file_format}\"\n if hasattr(self, \"s3_prefix\") and self.s3_prefix:\n file_path = f\"{self.s3_prefix.rstrip('/')}/{file_path}\"\n\n # Create temporary file\n import tempfile\n\n with tempfile.NamedTemporaryFile(mode=\"w\", suffix=f\".{file_format}\", delete=False) as temp_file:\n temp_file.write(content)\n temp_file_path = temp_file.name\n\n try:\n # Upload to S3\n s3_client.upload_file(temp_file_path, self.bucket_name, file_path)\n s3_url = f\"s3://{self.bucket_name}/{file_path}\"\n return Message(text=f\"File successfully uploaded to {s3_url}\")\n finally:\n # Clean up temp file\n if Path(temp_file_path).exists():\n Path(temp_file_path).unlink()\n\n async def _save_to_google_drive(self) -> Message:\n \"\"\"Save file to Google Drive using Google Drive functionality.\"\"\"\n # Validate Google Drive credentials\n if not getattr(self, \"service_account_key\", None):\n msg = \"GCP Credentials Secret Key is required for Google Drive storage\"\n raise ValueError(msg)\n if not getattr(self, \"folder_id\", None):\n msg = \"Google Drive Folder ID is required for Google Drive storage\"\n raise ValueError(msg)\n\n # Use Google Drive upload functionality\n try:\n import json\n import tempfile\n\n from google.oauth2 import service_account\n from googleapiclient.discovery import build\n from googleapiclient.http import MediaFileUpload\n except ImportError as e:\n msg = \"Google API client libraries are not installed. Please install them.\"\n raise ImportError(msg) from e\n\n # Parse credentials\n try:\n credentials_dict = json.loads(self.service_account_key)\n except json.JSONDecodeError as e:\n msg = f\"Invalid JSON in service account key: {e!s}\"\n raise ValueError(msg) from e\n\n # Create Google Drive service\n credentials = service_account.Credentials.from_service_account_info(\n credentials_dict, scopes=[\"https://www.googleapis.com/auth/drive.file\"]\n )\n drive_service = build(\"drive\", \"v3\", credentials=credentials)\n\n # Extract content and format\n content = self._extract_content_for_upload()\n file_format = self._get_file_format_for_location(\"Google Drive\")\n\n # Handle special Google Drive formats\n if file_format in [\"slides\", \"docs\"]:\n return await self._save_to_google_apps(drive_service, credentials, content, file_format)\n\n # Create temporary file\n file_path = f\"{self.file_name}.{file_format}\"\n with tempfile.NamedTemporaryFile(mode=\"w\", suffix=f\".{file_format}\", delete=False) as temp_file:\n temp_file.write(content)\n temp_file_path = temp_file.name\n\n try:\n # Upload to Google Drive\n file_metadata = {\"name\": file_path, \"parents\": [self.folder_id]}\n media = MediaFileUpload(temp_file_path, resumable=True)\n\n uploaded_file = drive_service.files().create(body=file_metadata, media_body=media, fields=\"id\").execute()\n\n file_id = uploaded_file.get(\"id\")\n file_url = f\"https://drive.google.com/file/d/{file_id}/view\"\n return Message(text=f\"File successfully uploaded to Google Drive: {file_url}\")\n finally:\n # Clean up temp file\n if Path(temp_file_path).exists():\n Path(temp_file_path).unlink()\n\n async def _save_to_google_apps(self, drive_service, credentials, content: str, app_type: str) -> Message:\n \"\"\"Save content to Google Apps (Slides or Docs).\"\"\"\n import time\n\n if app_type == \"slides\":\n from googleapiclient.discovery import build\n\n slides_service = build(\"slides\", \"v1\", credentials=credentials)\n\n file_metadata = {\n \"name\": self.file_name,\n \"mimeType\": \"application/vnd.google-apps.presentation\",\n \"parents\": [self.folder_id],\n }\n\n created_file = drive_service.files().create(body=file_metadata, fields=\"id\").execute()\n presentation_id = created_file[\"id\"]\n\n time.sleep(2) # Wait for file to be available # noqa: ASYNC251\n\n presentation = slides_service.presentations().get(presentationId=presentation_id).execute()\n slide_id = presentation[\"slides\"][0][\"objectId\"]\n\n # Add content to slide\n requests = [\n {\n \"createShape\": {\n \"objectId\": \"TextBox_01\",\n \"shapeType\": \"TEXT_BOX\",\n \"elementProperties\": {\n \"pageObjectId\": slide_id,\n \"size\": {\n \"height\": {\"magnitude\": 3000000, \"unit\": \"EMU\"},\n \"width\": {\"magnitude\": 6000000, \"unit\": \"EMU\"},\n },\n \"transform\": {\n \"scaleX\": 1,\n \"scaleY\": 1,\n \"translateX\": 1000000,\n \"translateY\": 1000000,\n \"unit\": \"EMU\",\n },\n },\n }\n },\n {\"insertText\": {\"objectId\": \"TextBox_01\", \"insertionIndex\": 0, \"text\": content}},\n ]\n\n slides_service.presentations().batchUpdate(\n presentationId=presentation_id, body={\"requests\": requests}\n ).execute()\n file_url = f\"https://docs.google.com/presentation/d/{presentation_id}/edit\"\n\n elif app_type == \"docs\":\n from googleapiclient.discovery import build\n\n docs_service = build(\"docs\", \"v1\", credentials=credentials)\n\n file_metadata = {\n \"name\": self.file_name,\n \"mimeType\": \"application/vnd.google-apps.document\",\n \"parents\": [self.folder_id],\n }\n\n created_file = drive_service.files().create(body=file_metadata, fields=\"id\").execute()\n document_id = created_file[\"id\"]\n\n time.sleep(2) # Wait for file to be available # noqa: ASYNC251\n\n # Add content to document\n requests = [{\"insertText\": {\"location\": {\"index\": 1}, \"text\": content}}]\n docs_service.documents().batchUpdate(documentId=document_id, body={\"requests\": requests}).execute()\n file_url = f\"https://docs.google.com/document/d/{document_id}/edit\"\n\n return Message(text=f\"File successfully created in Google {app_type.title()}: {file_url}\")\n\n def _extract_content_for_upload(self) -> str:\n \"\"\"Extract content from input for upload to cloud services.\"\"\"\n if self._get_input_type() == \"DataFrame\":\n return self.input.to_csv(index=False)\n if self._get_input_type() == \"Data\":\n if hasattr(self.input, \"data\") and self.input.data:\n if isinstance(self.input.data, dict):\n import json\n\n return json.dumps(self.input.data, indent=2, ensure_ascii=False)\n return str(self.input.data)\n return str(self.input)\n if self._get_input_type() == \"Message\":\n return str(self.input.text) if self.input.text else str(self.input)\n return str(self.input)\n"
2103
+ "value": "import json\nfrom collections.abc import AsyncIterator, Iterator\nfrom pathlib import Path\n\nimport orjson\nimport pandas as pd\nfrom fastapi import UploadFile\nfrom fastapi.encoders import jsonable_encoder\n\nfrom lfx.custom import Component\nfrom lfx.inputs import SortableListInput\nfrom lfx.io import BoolInput, DropdownInput, HandleInput, SecretStrInput, StrInput\nfrom lfx.schema import Data, DataFrame, Message\nfrom lfx.services.deps import get_settings_service, get_storage_service, session_scope\nfrom lfx.template.field.base import Output\n\n\nclass SaveToFileComponent(Component):\n display_name = \"Write File\"\n description = \"Save data to local file, AWS S3, or Google Drive in the selected format.\"\n documentation: str = \"https://docs.langflow.org/components-processing#save-file\"\n icon = \"file-text\"\n name = \"SaveToFile\"\n\n # File format options for different storage types\n LOCAL_DATA_FORMAT_CHOICES = [\"csv\", \"excel\", \"json\", \"markdown\"]\n LOCAL_MESSAGE_FORMAT_CHOICES = [\"txt\", \"json\", \"markdown\"]\n AWS_FORMAT_CHOICES = [\n \"txt\",\n \"json\",\n \"csv\",\n \"xml\",\n \"html\",\n \"md\",\n \"yaml\",\n \"log\",\n \"tsv\",\n \"jsonl\",\n \"parquet\",\n \"xlsx\",\n \"zip\",\n ]\n GDRIVE_FORMAT_CHOICES = [\"txt\", \"json\", \"csv\", \"xlsx\", \"slides\", \"docs\", \"jpg\", \"mp3\"]\n\n inputs = [\n # Storage location selection\n SortableListInput(\n name=\"storage_location\",\n display_name=\"Storage Location\",\n placeholder=\"Select Location\",\n info=\"Choose where to save the file.\",\n options=[\n {\"name\": \"Local\", \"icon\": \"hard-drive\"},\n {\"name\": \"AWS\", \"icon\": \"Amazon\"},\n {\"name\": \"Google Drive\", \"icon\": \"google\"},\n ],\n real_time_refresh=True,\n limit=1,\n ),\n # Common inputs\n HandleInput(\n name=\"input\",\n display_name=\"File Content\",\n info=\"The input to save.\",\n dynamic=True,\n input_types=[\"Data\", \"DataFrame\", \"Message\"],\n required=True,\n ),\n StrInput(\n name=\"file_name\",\n display_name=\"File Name\",\n info=\"Name file will be saved as (without extension).\",\n required=True,\n show=False,\n tool_mode=True,\n ),\n BoolInput(\n name=\"append_mode\",\n display_name=\"Append\",\n info=\"Append to file if it exists (only for plain text formats). Disabled for binary formats like Excel.\",\n value=False,\n show=False,\n ),\n # Format inputs (dynamic based on storage location)\n DropdownInput(\n name=\"local_format\",\n display_name=\"File Format\",\n options=list(dict.fromkeys(LOCAL_DATA_FORMAT_CHOICES + LOCAL_MESSAGE_FORMAT_CHOICES)),\n info=\"Select the file format for local storage.\",\n value=\"json\",\n show=False,\n ),\n DropdownInput(\n name=\"aws_format\",\n display_name=\"File Format\",\n options=AWS_FORMAT_CHOICES,\n info=\"Select the file format for AWS S3 storage.\",\n value=\"txt\",\n show=False,\n ),\n DropdownInput(\n name=\"gdrive_format\",\n display_name=\"File Format\",\n options=GDRIVE_FORMAT_CHOICES,\n info=\"Select the file format for Google Drive storage.\",\n value=\"txt\",\n show=False,\n ),\n # AWS S3 specific inputs\n SecretStrInput(\n name=\"aws_access_key_id\",\n display_name=\"AWS Access Key ID\",\n info=\"AWS Access key ID.\",\n show=False,\n advanced=True,\n ),\n SecretStrInput(\n name=\"aws_secret_access_key\",\n display_name=\"AWS Secret Key\",\n info=\"AWS Secret Key.\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"bucket_name\",\n display_name=\"S3 Bucket Name\",\n info=\"Enter the name of the S3 bucket.\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"aws_region\",\n display_name=\"AWS Region\",\n info=\"AWS region (e.g., us-east-1, eu-west-1).\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"s3_prefix\",\n display_name=\"S3 Prefix\",\n info=\"Prefix for all files in S3.\",\n show=False,\n advanced=True,\n ),\n # Google Drive specific inputs\n SecretStrInput(\n name=\"service_account_key\",\n display_name=\"GCP Credentials Secret Key\",\n info=\"Your Google Cloud Platform service account JSON key as a secret string (complete JSON content).\",\n show=False,\n advanced=True,\n ),\n StrInput(\n name=\"folder_id\",\n display_name=\"Google Drive Folder ID\",\n info=(\n \"The Google Drive folder ID where the file will be uploaded. \"\n \"The folder must be shared with the service account email.\"\n ),\n show=False,\n advanced=True,\n ),\n ]\n\n outputs = [Output(display_name=\"File Path\", name=\"message\", method=\"save_to_file\")]\n\n def update_build_config(self, build_config, field_value, field_name=None):\n \"\"\"Update build configuration to show/hide fields based on storage location selection.\"\"\"\n if field_name != \"storage_location\":\n return build_config\n\n # Extract selected storage location\n selected = [location[\"name\"] for location in field_value] if isinstance(field_value, list) else []\n\n # Hide all dynamic fields first\n dynamic_fields = [\n \"file_name\", # Common fields (input is always visible)\n \"append_mode\",\n \"local_format\",\n \"aws_format\",\n \"gdrive_format\",\n \"aws_access_key_id\",\n \"aws_secret_access_key\",\n \"bucket_name\",\n \"aws_region\",\n \"s3_prefix\",\n \"service_account_key\",\n \"folder_id\",\n ]\n\n for f_name in dynamic_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = False\n\n # Show fields based on selected storage location\n if len(selected) == 1:\n location = selected[0]\n\n # Show file_name and append_mode when any storage location is selected\n if \"file_name\" in build_config:\n build_config[\"file_name\"][\"show\"] = True\n if \"append_mode\" in build_config:\n build_config[\"append_mode\"][\"show\"] = True\n\n if location == \"Local\":\n if \"local_format\" in build_config:\n build_config[\"local_format\"][\"show\"] = True\n\n elif location == \"AWS\":\n aws_fields = [\n \"aws_format\",\n \"aws_access_key_id\",\n \"aws_secret_access_key\",\n \"bucket_name\",\n \"aws_region\",\n \"s3_prefix\",\n ]\n for f_name in aws_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = True\n\n elif location == \"Google Drive\":\n gdrive_fields = [\"gdrive_format\", \"service_account_key\", \"folder_id\"]\n for f_name in gdrive_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = True\n\n return build_config\n\n async def save_to_file(self) -> Message:\n \"\"\"Save the input to a file and upload it, returning a confirmation message.\"\"\"\n # Validate inputs\n if not self.file_name:\n msg = \"File name must be provided.\"\n raise ValueError(msg)\n if not self._get_input_type():\n msg = \"Input type is not set.\"\n raise ValueError(msg)\n\n # Get selected storage location\n storage_location = self._get_selected_storage_location()\n if not storage_location:\n msg = \"Storage location must be selected.\"\n raise ValueError(msg)\n\n # Route to appropriate save method based on storage location\n if storage_location == \"Local\":\n return await self._save_to_local()\n if storage_location == \"AWS\":\n return await self._save_to_aws()\n if storage_location == \"Google Drive\":\n return await self._save_to_google_drive()\n msg = f\"Unsupported storage location: {storage_location}\"\n raise ValueError(msg)\n\n def _get_input_type(self) -> str:\n \"\"\"Determine the input type based on the provided input.\"\"\"\n # Use exact type checking (type() is) instead of isinstance() to avoid inheritance issues.\n # Since Message inherits from Data, isinstance(message, Data) would return True for Message objects,\n # causing Message inputs to be incorrectly identified as Data type.\n if type(self.input) is DataFrame:\n return \"DataFrame\"\n if type(self.input) is Message:\n return \"Message\"\n if type(self.input) is Data:\n return \"Data\"\n msg = f\"Unsupported input type: {type(self.input)}\"\n raise ValueError(msg)\n\n def _get_default_format(self) -> str:\n \"\"\"Return the default file format based on input type.\"\"\"\n if self._get_input_type() == \"DataFrame\":\n return \"csv\"\n if self._get_input_type() == \"Data\":\n return \"json\"\n if self._get_input_type() == \"Message\":\n return \"json\"\n return \"json\" # Fallback\n\n def _adjust_file_path_with_format(self, path: Path, fmt: str) -> Path:\n \"\"\"Adjust the file path to include the correct extension.\"\"\"\n file_extension = path.suffix.lower().lstrip(\".\")\n if fmt == \"excel\":\n return Path(f\"{path}.xlsx\").expanduser() if file_extension not in [\"xlsx\", \"xls\"] else path\n return Path(f\"{path}.{fmt}\").expanduser() if file_extension != fmt else path\n\n def _is_plain_text_format(self, fmt: str) -> bool:\n \"\"\"Check if a file format is plain text (supports appending).\"\"\"\n plain_text_formats = [\"txt\", \"json\", \"markdown\", \"md\", \"csv\", \"xml\", \"html\", \"yaml\", \"log\", \"tsv\", \"jsonl\"]\n return fmt.lower() in plain_text_formats\n\n async def _upload_file(self, file_path: Path) -> None:\n \"\"\"Upload the saved file using the upload_user_file service.\"\"\"\n from langflow.api.v2.files import upload_user_file\n from langflow.services.database.models.user.crud import get_user_by_id\n\n # Ensure the file exists\n if not file_path.exists():\n msg = f\"File not found: {file_path}\"\n raise FileNotFoundError(msg)\n\n # Upload the file - always use append=False because the local file already contains\n # the correct content (either new or appended locally)\n with file_path.open(\"rb\") as f:\n async with session_scope() as db:\n if not self.user_id:\n msg = \"User ID is required for file saving.\"\n raise ValueError(msg)\n current_user = await get_user_by_id(db, self.user_id)\n\n await upload_user_file(\n file=UploadFile(filename=file_path.name, file=f, size=file_path.stat().st_size),\n session=db,\n current_user=current_user,\n storage_service=get_storage_service(),\n settings_service=get_settings_service(),\n append=False,\n )\n\n def _save_dataframe(self, dataframe: DataFrame, path: Path, fmt: str) -> str:\n \"\"\"Save a DataFrame to the specified file format.\"\"\"\n append_mode = getattr(self, \"append_mode\", False)\n should_append = append_mode and path.exists() and self._is_plain_text_format(fmt)\n\n if fmt == \"csv\":\n dataframe.to_csv(path, index=False, mode=\"a\" if should_append else \"w\", header=not should_append)\n elif fmt == \"excel\":\n dataframe.to_excel(path, index=False, engine=\"openpyxl\")\n elif fmt == \"json\":\n if should_append:\n # Read and parse existing JSON\n existing_data = []\n try:\n existing_content = path.read_text(encoding=\"utf-8\").strip()\n if existing_content:\n parsed = json.loads(existing_content)\n # Handle case where existing content is a single object\n if isinstance(parsed, dict):\n existing_data = [parsed]\n elif isinstance(parsed, list):\n existing_data = parsed\n except (json.JSONDecodeError, FileNotFoundError):\n # Treat parse errors or missing file as empty array\n existing_data = []\n\n # Append new data\n new_records = json.loads(dataframe.to_json(orient=\"records\"))\n existing_data.extend(new_records)\n\n # Write back as a single JSON array\n path.write_text(json.dumps(existing_data, indent=2), encoding=\"utf-8\")\n else:\n dataframe.to_json(path, orient=\"records\", indent=2)\n elif fmt == \"markdown\":\n content = dataframe.to_markdown(index=False)\n if should_append:\n path.write_text(path.read_text(encoding=\"utf-8\") + \"\\n\\n\" + content, encoding=\"utf-8\")\n else:\n path.write_text(content, encoding=\"utf-8\")\n else:\n msg = f\"Unsupported DataFrame format: {fmt}\"\n raise ValueError(msg)\n action = \"appended to\" if should_append else \"saved successfully as\"\n return f\"DataFrame {action} '{path}'\"\n\n def _save_data(self, data: Data, path: Path, fmt: str) -> str:\n \"\"\"Save a Data object to the specified file format.\"\"\"\n append_mode = getattr(self, \"append_mode\", False)\n should_append = append_mode and path.exists() and self._is_plain_text_format(fmt)\n\n if fmt == \"csv\":\n pd.DataFrame(data.data).to_csv(\n path,\n index=False,\n mode=\"a\" if should_append else \"w\",\n header=not should_append,\n )\n elif fmt == \"excel\":\n pd.DataFrame(data.data).to_excel(path, index=False, engine=\"openpyxl\")\n elif fmt == \"json\":\n new_data = jsonable_encoder(data.data)\n if should_append:\n # Read and parse existing JSON\n existing_data = []\n try:\n existing_content = path.read_text(encoding=\"utf-8\").strip()\n if existing_content:\n parsed = json.loads(existing_content)\n # Handle case where existing content is a single object\n if isinstance(parsed, dict):\n existing_data = [parsed]\n elif isinstance(parsed, list):\n existing_data = parsed\n except (json.JSONDecodeError, FileNotFoundError):\n # Treat parse errors or missing file as empty array\n existing_data = []\n\n # Append new data\n if isinstance(new_data, list):\n existing_data.extend(new_data)\n else:\n existing_data.append(new_data)\n\n # Write back as a single JSON array\n path.write_text(json.dumps(existing_data, indent=2), encoding=\"utf-8\")\n else:\n content = orjson.dumps(new_data, option=orjson.OPT_INDENT_2).decode(\"utf-8\")\n path.write_text(content, encoding=\"utf-8\")\n elif fmt == \"markdown\":\n content = pd.DataFrame(data.data).to_markdown(index=False)\n if should_append:\n path.write_text(path.read_text(encoding=\"utf-8\") + \"\\n\\n\" + content, encoding=\"utf-8\")\n else:\n path.write_text(content, encoding=\"utf-8\")\n else:\n msg = f\"Unsupported Data format: {fmt}\"\n raise ValueError(msg)\n action = \"appended to\" if should_append else \"saved successfully as\"\n return f\"Data {action} '{path}'\"\n\n async def _save_message(self, message: Message, path: Path, fmt: str) -> str:\n \"\"\"Save a Message to the specified file format, handling async iterators.\"\"\"\n content = \"\"\n if message.text is None:\n content = \"\"\n elif isinstance(message.text, AsyncIterator):\n async for item in message.text:\n content += str(item) + \" \"\n content = content.strip()\n elif isinstance(message.text, Iterator):\n content = \" \".join(str(item) for item in message.text)\n else:\n content = str(message.text)\n\n append_mode = getattr(self, \"append_mode\", False)\n should_append = append_mode and path.exists() and self._is_plain_text_format(fmt)\n\n if fmt == \"txt\":\n if should_append:\n path.write_text(path.read_text(encoding=\"utf-8\") + \"\\n\" + content, encoding=\"utf-8\")\n else:\n path.write_text(content, encoding=\"utf-8\")\n elif fmt == \"json\":\n new_message = {\"message\": content}\n if should_append:\n # Read and parse existing JSON\n existing_data = []\n try:\n existing_content = path.read_text(encoding=\"utf-8\").strip()\n if existing_content:\n parsed = json.loads(existing_content)\n # Handle case where existing content is a single object\n if isinstance(parsed, dict):\n existing_data = [parsed]\n elif isinstance(parsed, list):\n existing_data = parsed\n except (json.JSONDecodeError, FileNotFoundError):\n # Treat parse errors or missing file as empty array\n existing_data = []\n\n # Append new message\n existing_data.append(new_message)\n\n # Write back as a single JSON array\n path.write_text(json.dumps(existing_data, indent=2), encoding=\"utf-8\")\n else:\n path.write_text(json.dumps(new_message, indent=2), encoding=\"utf-8\")\n elif fmt == \"markdown\":\n md_content = f\"**Message:**\\n\\n{content}\"\n if should_append:\n path.write_text(path.read_text(encoding=\"utf-8\") + \"\\n\\n\" + md_content, encoding=\"utf-8\")\n else:\n path.write_text(md_content, encoding=\"utf-8\")\n else:\n msg = f\"Unsupported Message format: {fmt}\"\n raise ValueError(msg)\n action = \"appended to\" if should_append else \"saved successfully as\"\n return f\"Message {action} '{path}'\"\n\n def _get_selected_storage_location(self) -> str:\n \"\"\"Get the selected storage location from the SortableListInput.\"\"\"\n if hasattr(self, \"storage_location\") and self.storage_location:\n if isinstance(self.storage_location, list) and len(self.storage_location) > 0:\n return self.storage_location[0].get(\"name\", \"\")\n if isinstance(self.storage_location, dict):\n return self.storage_location.get(\"name\", \"\")\n return \"\"\n\n def _get_file_format_for_location(self, location: str) -> str:\n \"\"\"Get the appropriate file format based on storage location.\"\"\"\n if location == \"Local\":\n return getattr(self, \"local_format\", None) or self._get_default_format()\n if location == \"AWS\":\n return getattr(self, \"aws_format\", \"txt\")\n if location == \"Google Drive\":\n return getattr(self, \"gdrive_format\", \"txt\")\n return self._get_default_format()\n\n async def _save_to_local(self) -> Message:\n \"\"\"Save file to local storage (original functionality).\"\"\"\n file_format = self._get_file_format_for_location(\"Local\")\n\n # Validate file format based on input type\n allowed_formats = (\n self.LOCAL_MESSAGE_FORMAT_CHOICES if self._get_input_type() == \"Message\" else self.LOCAL_DATA_FORMAT_CHOICES\n )\n if file_format not in allowed_formats:\n msg = f\"Invalid file format '{file_format}' for {self._get_input_type()}. Allowed: {allowed_formats}\"\n raise ValueError(msg)\n\n # Prepare file path\n file_path = Path(self.file_name).expanduser()\n if not file_path.parent.exists():\n file_path.parent.mkdir(parents=True, exist_ok=True)\n file_path = self._adjust_file_path_with_format(file_path, file_format)\n\n # Save the input to file based on type\n if self._get_input_type() == \"DataFrame\":\n confirmation = self._save_dataframe(self.input, file_path, file_format)\n elif self._get_input_type() == \"Data\":\n confirmation = self._save_data(self.input, file_path, file_format)\n elif self._get_input_type() == \"Message\":\n confirmation = await self._save_message(self.input, file_path, file_format)\n else:\n msg = f\"Unsupported input type: {self._get_input_type()}\"\n raise ValueError(msg)\n\n # Upload the saved file\n await self._upload_file(file_path)\n\n # Return the final file path and confirmation message\n final_path = Path.cwd() / file_path if not file_path.is_absolute() else file_path\n return Message(text=f\"{confirmation} at {final_path}\")\n\n async def _save_to_aws(self) -> Message:\n \"\"\"Save file to AWS S3 using S3 functionality.\"\"\"\n # Validate AWS credentials\n if not getattr(self, \"aws_access_key_id\", None):\n msg = \"AWS Access Key ID is required for S3 storage\"\n raise ValueError(msg)\n if not getattr(self, \"aws_secret_access_key\", None):\n msg = \"AWS Secret Key is required for S3 storage\"\n raise ValueError(msg)\n if not getattr(self, \"bucket_name\", None):\n msg = \"S3 Bucket Name is required for S3 storage\"\n raise ValueError(msg)\n\n # Use S3 upload functionality\n try:\n import boto3\n except ImportError as e:\n msg = \"boto3 is not installed. Please install it using `uv pip install boto3`.\"\n raise ImportError(msg) from e\n\n # Create S3 client\n client_config = {\n \"aws_access_key_id\": self.aws_access_key_id,\n \"aws_secret_access_key\": self.aws_secret_access_key,\n }\n\n if hasattr(self, \"aws_region\") and self.aws_region:\n client_config[\"region_name\"] = self.aws_region\n\n s3_client = boto3.client(\"s3\", **client_config)\n\n # Extract content\n content = self._extract_content_for_upload()\n file_format = self._get_file_format_for_location(\"AWS\")\n\n # Generate file path\n file_path = f\"{self.file_name}.{file_format}\"\n if hasattr(self, \"s3_prefix\") and self.s3_prefix:\n file_path = f\"{self.s3_prefix.rstrip('/')}/{file_path}\"\n\n # Create temporary file\n import tempfile\n\n with tempfile.NamedTemporaryFile(mode=\"w\", suffix=f\".{file_format}\", delete=False) as temp_file:\n temp_file.write(content)\n temp_file_path = temp_file.name\n\n try:\n # Upload to S3\n s3_client.upload_file(temp_file_path, self.bucket_name, file_path)\n s3_url = f\"s3://{self.bucket_name}/{file_path}\"\n return Message(text=f\"File successfully uploaded to {s3_url}\")\n finally:\n # Clean up temp file\n if Path(temp_file_path).exists():\n Path(temp_file_path).unlink()\n\n async def _save_to_google_drive(self) -> Message:\n \"\"\"Save file to Google Drive using Google Drive functionality.\"\"\"\n # Validate Google Drive credentials\n if not getattr(self, \"service_account_key\", None):\n msg = \"GCP Credentials Secret Key is required for Google Drive storage\"\n raise ValueError(msg)\n if not getattr(self, \"folder_id\", None):\n msg = \"Google Drive Folder ID is required for Google Drive storage\"\n raise ValueError(msg)\n\n # Use Google Drive upload functionality\n try:\n import json\n import tempfile\n\n from google.oauth2 import service_account\n from googleapiclient.discovery import build\n from googleapiclient.http import MediaFileUpload\n except ImportError as e:\n msg = \"Google API client libraries are not installed. Please install them.\"\n raise ImportError(msg) from e\n\n # Parse credentials\n try:\n credentials_dict = json.loads(self.service_account_key)\n except json.JSONDecodeError as e:\n msg = f\"Invalid JSON in service account key: {e!s}\"\n raise ValueError(msg) from e\n\n # Create Google Drive service\n credentials = service_account.Credentials.from_service_account_info(\n credentials_dict, scopes=[\"https://www.googleapis.com/auth/drive.file\"]\n )\n drive_service = build(\"drive\", \"v3\", credentials=credentials)\n\n # Extract content and format\n content = self._extract_content_for_upload()\n file_format = self._get_file_format_for_location(\"Google Drive\")\n\n # Handle special Google Drive formats\n if file_format in [\"slides\", \"docs\"]:\n return await self._save_to_google_apps(drive_service, credentials, content, file_format)\n\n # Create temporary file\n file_path = f\"{self.file_name}.{file_format}\"\n with tempfile.NamedTemporaryFile(mode=\"w\", suffix=f\".{file_format}\", delete=False) as temp_file:\n temp_file.write(content)\n temp_file_path = temp_file.name\n\n try:\n # Upload to Google Drive\n file_metadata = {\"name\": file_path, \"parents\": [self.folder_id]}\n media = MediaFileUpload(temp_file_path, resumable=True)\n\n uploaded_file = drive_service.files().create(body=file_metadata, media_body=media, fields=\"id\").execute()\n\n file_id = uploaded_file.get(\"id\")\n file_url = f\"https://drive.google.com/file/d/{file_id}/view\"\n return Message(text=f\"File successfully uploaded to Google Drive: {file_url}\")\n finally:\n # Clean up temp file\n if Path(temp_file_path).exists():\n Path(temp_file_path).unlink()\n\n async def _save_to_google_apps(self, drive_service, credentials, content: str, app_type: str) -> Message:\n \"\"\"Save content to Google Apps (Slides or Docs).\"\"\"\n import time\n\n if app_type == \"slides\":\n from googleapiclient.discovery import build\n\n slides_service = build(\"slides\", \"v1\", credentials=credentials)\n\n file_metadata = {\n \"name\": self.file_name,\n \"mimeType\": \"application/vnd.google-apps.presentation\",\n \"parents\": [self.folder_id],\n }\n\n created_file = drive_service.files().create(body=file_metadata, fields=\"id\").execute()\n presentation_id = created_file[\"id\"]\n\n time.sleep(2) # Wait for file to be available # noqa: ASYNC251\n\n presentation = slides_service.presentations().get(presentationId=presentation_id).execute()\n slide_id = presentation[\"slides\"][0][\"objectId\"]\n\n # Add content to slide\n requests = [\n {\n \"createShape\": {\n \"objectId\": \"TextBox_01\",\n \"shapeType\": \"TEXT_BOX\",\n \"elementProperties\": {\n \"pageObjectId\": slide_id,\n \"size\": {\n \"height\": {\"magnitude\": 3000000, \"unit\": \"EMU\"},\n \"width\": {\"magnitude\": 6000000, \"unit\": \"EMU\"},\n },\n \"transform\": {\n \"scaleX\": 1,\n \"scaleY\": 1,\n \"translateX\": 1000000,\n \"translateY\": 1000000,\n \"unit\": \"EMU\",\n },\n },\n }\n },\n {\"insertText\": {\"objectId\": \"TextBox_01\", \"insertionIndex\": 0, \"text\": content}},\n ]\n\n slides_service.presentations().batchUpdate(\n presentationId=presentation_id, body={\"requests\": requests}\n ).execute()\n file_url = f\"https://docs.google.com/presentation/d/{presentation_id}/edit\"\n\n elif app_type == \"docs\":\n from googleapiclient.discovery import build\n\n docs_service = build(\"docs\", \"v1\", credentials=credentials)\n\n file_metadata = {\n \"name\": self.file_name,\n \"mimeType\": \"application/vnd.google-apps.document\",\n \"parents\": [self.folder_id],\n }\n\n created_file = drive_service.files().create(body=file_metadata, fields=\"id\").execute()\n document_id = created_file[\"id\"]\n\n time.sleep(2) # Wait for file to be available # noqa: ASYNC251\n\n # Add content to document\n requests = [{\"insertText\": {\"location\": {\"index\": 1}, \"text\": content}}]\n docs_service.documents().batchUpdate(documentId=document_id, body={\"requests\": requests}).execute()\n file_url = f\"https://docs.google.com/document/d/{document_id}/edit\"\n\n return Message(text=f\"File successfully created in Google {app_type.title()}: {file_url}\")\n\n def _extract_content_for_upload(self) -> str:\n \"\"\"Extract content from input for upload to cloud services.\"\"\"\n if self._get_input_type() == \"DataFrame\":\n return self.input.to_csv(index=False)\n if self._get_input_type() == \"Data\":\n if hasattr(self.input, \"data\") and self.input.data:\n if isinstance(self.input.data, dict):\n import json\n\n return json.dumps(self.input.data, indent=2, ensure_ascii=False)\n return str(self.input.data)\n return str(self.input)\n if self._get_input_type() == \"Message\":\n return str(self.input.text) if self.input.text else str(self.input)\n return str(self.input)\n"
2085
2104
  },
2086
2105
  "file_name": {
2087
2106
  "_input_type": "StrInput",
@@ -819,7 +819,7 @@
819
819
  },
820
820
  {
821
821
  "name": "pydantic",
822
- "version": "2.10.6"
822
+ "version": "2.11.10"
823
823
  },
824
824
  {
825
825
  "name": "lfx",
@@ -2645,7 +2645,7 @@
2645
2645
  "legacy": false,
2646
2646
  "lf_version": "1.4.2",
2647
2647
  "metadata": {
2648
- "code_hash": "24a7838f06c9",
2648
+ "code_hash": "7ed97e9f206c",
2649
2649
  "dependencies": {
2650
2650
  "dependencies": [
2651
2651
  {
@@ -2705,7 +2705,7 @@
2705
2705
  "show": true,
2706
2706
  "title_case": false,
2707
2707
  "type": "code",
2708
- "value": "from __future__ import annotations\n\nimport asyncio\nimport json\nimport uuid\n\nfrom langchain_core.tools import StructuredTool # noqa: TC002\n\nfrom lfx.base.agents.utils import maybe_unflatten_dict, safe_cache_get, safe_cache_set\nfrom lfx.base.mcp.util import (\n MCPStdioClient,\n MCPStreamableHttpClient,\n create_input_schema_from_json_schema,\n update_tools,\n)\nfrom lfx.custom.custom_component.component_with_cache import ComponentWithCache\nfrom lfx.inputs.inputs import InputTypes # noqa: TC001\nfrom lfx.io import BoolInput, DropdownInput, McpInput, MessageTextInput, Output\nfrom lfx.io.schema import flatten_schema, schema_to_langflow_inputs\nfrom lfx.log.logger import logger\nfrom lfx.schema.dataframe import DataFrame\nfrom lfx.schema.message import Message\nfrom lfx.services.deps import get_settings_service, get_storage_service, session_scope\n\n\nclass MCPToolsComponent(ComponentWithCache):\n schema_inputs: list = []\n tools: list[StructuredTool] = []\n _not_load_actions: bool = False\n _tool_cache: dict = {}\n _last_selected_server: str | None = None # Cache for the last selected server\n\n def __init__(self, **data) -> None:\n super().__init__(**data)\n # Initialize cache keys to avoid CacheMiss when accessing them\n self._ensure_cache_structure()\n\n # Initialize clients with access to the component cache\n self.stdio_client: MCPStdioClient = MCPStdioClient(component_cache=self._shared_component_cache)\n self.streamable_http_client: MCPStreamableHttpClient = MCPStreamableHttpClient(\n component_cache=self._shared_component_cache\n )\n\n def _ensure_cache_structure(self):\n \"\"\"Ensure the cache has the required structure.\"\"\"\n # Check if servers key exists and is not CacheMiss\n servers_value = safe_cache_get(self._shared_component_cache, \"servers\")\n if servers_value is None:\n safe_cache_set(self._shared_component_cache, \"servers\", {})\n\n # Check if last_selected_server key exists and is not CacheMiss\n last_server_value = safe_cache_get(self._shared_component_cache, \"last_selected_server\")\n if last_server_value is None:\n safe_cache_set(self._shared_component_cache, \"last_selected_server\", \"\")\n\n default_keys: list[str] = [\n \"code\",\n \"_type\",\n \"tool_mode\",\n \"tool_placeholder\",\n \"mcp_server\",\n \"tool\",\n \"use_cache\",\n \"verify_ssl\",\n ]\n\n display_name = \"MCP Tools\"\n description = \"Connect to an MCP server to use its tools.\"\n documentation: str = \"https://docs.langflow.org/mcp-client\"\n icon = \"Mcp\"\n name = \"MCPTools\"\n\n inputs = [\n McpInput(\n name=\"mcp_server\",\n display_name=\"MCP Server\",\n info=\"Select the MCP Server that will be used by this component\",\n real_time_refresh=True,\n ),\n BoolInput(\n name=\"use_cache\",\n display_name=\"Use Cached Server\",\n info=(\n \"Enable caching of MCP Server and tools to improve performance. \"\n \"Disable to always fetch fresh tools and server updates.\"\n ),\n value=False,\n advanced=True,\n ),\n BoolInput(\n name=\"verify_ssl\",\n display_name=\"Verify SSL Certificate\",\n info=(\n \"Enable SSL certificate verification for HTTPS connections. \"\n \"Disable only for development/testing with self-signed certificates.\"\n ),\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"tool\",\n display_name=\"Tool\",\n options=[],\n value=\"\",\n info=\"Select the tool to execute\",\n show=False,\n required=True,\n real_time_refresh=True,\n ),\n MessageTextInput(\n name=\"tool_placeholder\",\n display_name=\"Tool Placeholder\",\n info=\"Placeholder for the tool\",\n value=\"\",\n show=False,\n tool_mode=False,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Response\", name=\"response\", method=\"build_output\"),\n ]\n\n async def _validate_schema_inputs(self, tool_obj) -> list[InputTypes]:\n \"\"\"Validate and process schema inputs for a tool.\"\"\"\n try:\n if not tool_obj or not hasattr(tool_obj, \"args_schema\"):\n msg = \"Invalid tool object or missing input schema\"\n raise ValueError(msg)\n\n flat_schema = flatten_schema(tool_obj.args_schema.schema())\n input_schema = create_input_schema_from_json_schema(flat_schema)\n if not input_schema:\n msg = f\"Empty input schema for tool '{tool_obj.name}'\"\n raise ValueError(msg)\n\n schema_inputs = schema_to_langflow_inputs(input_schema)\n if not schema_inputs:\n msg = f\"No input parameters defined for tool '{tool_obj.name}'\"\n await logger.awarning(msg)\n return []\n\n except Exception as e:\n msg = f\"Error validating schema inputs: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n else:\n return schema_inputs\n\n async def update_tool_list(self, mcp_server_value=None):\n # Accepts mcp_server_value as dict {name, config} or uses self.mcp_server\n mcp_server = mcp_server_value if mcp_server_value is not None else getattr(self, \"mcp_server\", None)\n server_name = None\n server_config_from_value = None\n if isinstance(mcp_server, dict):\n server_name = mcp_server.get(\"name\")\n server_config_from_value = mcp_server.get(\"config\")\n else:\n server_name = mcp_server\n if not server_name:\n self.tools = []\n return [], {\"name\": server_name, \"config\": server_config_from_value}\n\n # Check if caching is enabled, default to False\n use_cache = getattr(self, \"use_cache\", False)\n\n # Use shared cache if available and caching is enabled\n cached = None\n if use_cache:\n servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n cached = servers_cache.get(server_name) if isinstance(servers_cache, dict) else None\n\n if cached is not None:\n try:\n self.tools = cached[\"tools\"]\n self.tool_names = cached[\"tool_names\"]\n self._tool_cache = cached[\"tool_cache\"]\n server_config_from_value = cached[\"config\"]\n except (TypeError, KeyError, AttributeError) as e:\n # Handle corrupted cache data by clearing it and continuing to fetch fresh tools\n msg = f\"Unable to use cached data for MCP Server{server_name}: {e}\"\n await logger.awarning(msg)\n # Clear the corrupted cache entry\n current_servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n if isinstance(current_servers_cache, dict) and server_name in current_servers_cache:\n current_servers_cache.pop(server_name)\n safe_cache_set(self._shared_component_cache, \"servers\", current_servers_cache)\n else:\n return self.tools, {\"name\": server_name, \"config\": server_config_from_value}\n\n try:\n try:\n from langflow.api.v2.mcp import get_server\n from langflow.services.database.models.user.crud import get_user_by_id\n except ImportError as e:\n msg = (\n \"Langflow MCP server functionality is not available. \"\n \"This feature requires the full Langflow installation.\"\n )\n raise ImportError(msg) from e\n async with session_scope() as db:\n if not self.user_id:\n msg = \"User ID is required for fetching MCP tools.\"\n raise ValueError(msg)\n current_user = await get_user_by_id(db, self.user_id)\n\n # Try to get server config from DB/API\n server_config = await get_server(\n server_name,\n current_user,\n db,\n storage_service=get_storage_service(),\n settings_service=get_settings_service(),\n )\n\n # If get_server returns empty but we have a config, use it\n if not server_config and server_config_from_value:\n server_config = server_config_from_value\n\n if not server_config:\n self.tools = []\n return [], {\"name\": server_name, \"config\": server_config}\n\n # Add verify_ssl option to server config if not present\n if \"verify_ssl\" not in server_config:\n verify_ssl = getattr(self, \"verify_ssl\", True)\n server_config[\"verify_ssl\"] = verify_ssl\n\n _, tool_list, tool_cache = await update_tools(\n server_name=server_name,\n server_config=server_config,\n mcp_stdio_client=self.stdio_client,\n mcp_streamable_http_client=self.streamable_http_client,\n )\n\n self.tool_names = [tool.name for tool in tool_list if hasattr(tool, \"name\")]\n self._tool_cache = tool_cache\n self.tools = tool_list\n\n # Cache the result only if caching is enabled\n if use_cache:\n cache_data = {\n \"tools\": tool_list,\n \"tool_names\": self.tool_names,\n \"tool_cache\": tool_cache,\n \"config\": server_config,\n }\n\n # Safely update the servers cache\n current_servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n if isinstance(current_servers_cache, dict):\n current_servers_cache[server_name] = cache_data\n safe_cache_set(self._shared_component_cache, \"servers\", current_servers_cache)\n\n except (TimeoutError, asyncio.TimeoutError) as e:\n msg = f\"Timeout updating tool list: {e!s}\"\n await logger.aexception(msg)\n raise TimeoutError(msg) from e\n except Exception as e:\n msg = f\"Error updating tool list: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n else:\n return tool_list, {\"name\": server_name, \"config\": server_config}\n\n async def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None) -> dict:\n \"\"\"Toggle the visibility of connection-specific fields based on the selected mode.\"\"\"\n try:\n if field_name == \"tool\":\n try:\n if len(self.tools) == 0:\n try:\n self.tools, build_config[\"mcp_server\"][\"value\"] = await self.update_tool_list()\n build_config[\"tool\"][\"options\"] = [tool.name for tool in self.tools]\n build_config[\"tool\"][\"placeholder\"] = \"Select a tool\"\n except (TimeoutError, asyncio.TimeoutError) as e:\n msg = f\"Timeout updating tool list: {e!s}\"\n await logger.aexception(msg)\n if not build_config[\"tools_metadata\"][\"show\"]:\n build_config[\"tool\"][\"show\"] = True\n build_config[\"tool\"][\"options\"] = []\n build_config[\"tool\"][\"value\"] = \"\"\n build_config[\"tool\"][\"placeholder\"] = \"Timeout on MCP server\"\n else:\n build_config[\"tool\"][\"show\"] = False\n except ValueError:\n if not build_config[\"tools_metadata\"][\"show\"]:\n build_config[\"tool\"][\"show\"] = True\n build_config[\"tool\"][\"options\"] = []\n build_config[\"tool\"][\"value\"] = \"\"\n build_config[\"tool\"][\"placeholder\"] = \"Error on MCP Server\"\n else:\n build_config[\"tool\"][\"show\"] = False\n\n if field_value == \"\":\n return build_config\n tool_obj = None\n for tool in self.tools:\n if tool.name == field_value:\n tool_obj = tool\n break\n if tool_obj is None:\n msg = f\"Tool {field_value} not found in available tools: {self.tools}\"\n await logger.awarning(msg)\n return build_config\n await self._update_tool_config(build_config, field_value)\n except Exception as e:\n build_config[\"tool\"][\"options\"] = []\n msg = f\"Failed to update tools: {e!s}\"\n raise ValueError(msg) from e\n else:\n return build_config\n elif field_name == \"mcp_server\":\n if not field_value:\n build_config[\"tool\"][\"show\"] = False\n build_config[\"tool\"][\"options\"] = []\n build_config[\"tool\"][\"value\"] = \"\"\n build_config[\"tool\"][\"placeholder\"] = \"\"\n build_config[\"tool_placeholder\"][\"tool_mode\"] = False\n self.remove_non_default_keys(build_config)\n return build_config\n\n build_config[\"tool_placeholder\"][\"tool_mode\"] = True\n\n current_server_name = field_value.get(\"name\") if isinstance(field_value, dict) else field_value\n _last_selected_server = safe_cache_get(self._shared_component_cache, \"last_selected_server\", \"\")\n server_changed = current_server_name != _last_selected_server\n\n # Determine if \"Tool Mode\" is active by checking if the tool dropdown is hidden.\n is_in_tool_mode = build_config[\"tools_metadata\"][\"show\"]\n\n # Get use_cache setting to determine if we should use cached data\n use_cache = getattr(self, \"use_cache\", False)\n\n # Fast path: if server didn't change and we already have options, keep them as-is\n # BUT only if caching is enabled or we're in tool mode\n existing_options = build_config.get(\"tool\", {}).get(\"options\") or []\n if not server_changed and existing_options:\n # In non-tool mode with cache disabled, skip the fast path to force refresh\n if not is_in_tool_mode and not use_cache:\n pass # Continue to refresh logic below\n else:\n if not is_in_tool_mode:\n build_config[\"tool\"][\"show\"] = True\n return build_config\n\n # To avoid unnecessary updates, only proceed if the server has actually changed\n # OR if caching is disabled (to force refresh in non-tool mode)\n if (_last_selected_server in (current_server_name, \"\")) and build_config[\"tool\"][\"show\"] and use_cache:\n if current_server_name:\n servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n if isinstance(servers_cache, dict):\n cached = servers_cache.get(current_server_name)\n if cached is not None and cached.get(\"tool_names\"):\n cached_tools = cached[\"tool_names\"]\n current_tools = build_config[\"tool\"][\"options\"]\n if current_tools == cached_tools:\n return build_config\n else:\n return build_config\n safe_cache_set(self._shared_component_cache, \"last_selected_server\", current_server_name)\n\n # Check if tools are already cached for this server before clearing\n cached_tools = None\n if current_server_name and use_cache:\n servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n if isinstance(servers_cache, dict):\n cached = servers_cache.get(current_server_name)\n if cached is not None:\n try:\n cached_tools = cached[\"tools\"]\n self.tools = cached_tools\n self.tool_names = cached[\"tool_names\"]\n self._tool_cache = cached[\"tool_cache\"]\n except (TypeError, KeyError, AttributeError) as e:\n # Handle corrupted cache data by ignoring it\n msg = f\"Unable to use cached data for MCP Server,{current_server_name}: {e}\"\n await logger.awarning(msg)\n cached_tools = None\n\n # Only clear tools if we don't have cached tools for the current server\n if not cached_tools:\n self.tools = [] # Clear previous tools only if no cache\n\n # Clear previous tool inputs if:\n # 1. Server actually changed\n # 2. Cache is disabled (meaning tool list will be refreshed)\n if server_changed or not use_cache:\n self.remove_non_default_keys(build_config)\n\n # Only show the tool dropdown if not in tool_mode\n if not is_in_tool_mode:\n build_config[\"tool\"][\"show\"] = True\n if cached_tools:\n # Use cached tools to populate options immediately\n build_config[\"tool\"][\"options\"] = [tool.name for tool in cached_tools]\n build_config[\"tool\"][\"placeholder\"] = \"Select a tool\"\n else:\n # Show loading state only when we need to fetch tools\n build_config[\"tool\"][\"placeholder\"] = \"Loading tools...\"\n build_config[\"tool\"][\"options\"] = []\n # Force a value refresh when:\n # 1. Server changed\n # 2. We don't have cached tools\n # 3. Cache is disabled (to force refresh on config changes)\n if server_changed or not cached_tools or not use_cache:\n build_config[\"tool\"][\"value\"] = uuid.uuid4()\n else:\n # Keep the tool dropdown hidden if in tool_mode\n self._not_load_actions = True\n build_config[\"tool\"][\"show\"] = False\n\n elif field_name == \"tool_mode\":\n build_config[\"tool\"][\"placeholder\"] = \"\"\n build_config[\"tool\"][\"show\"] = not bool(field_value) and bool(build_config[\"mcp_server\"])\n self.remove_non_default_keys(build_config)\n self.tool = build_config[\"tool\"][\"value\"]\n if field_value:\n self._not_load_actions = True\n else:\n build_config[\"tool\"][\"value\"] = uuid.uuid4()\n build_config[\"tool\"][\"options\"] = []\n build_config[\"tool\"][\"show\"] = True\n build_config[\"tool\"][\"placeholder\"] = \"Loading tools...\"\n elif field_name == \"tools_metadata\":\n self._not_load_actions = False\n\n except Exception as e:\n msg = f\"Error in update_build_config: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n else:\n return build_config\n\n def get_inputs_for_all_tools(self, tools: list) -> dict:\n \"\"\"Get input schemas for all tools.\"\"\"\n inputs = {}\n for tool in tools:\n if not tool or not hasattr(tool, \"name\"):\n continue\n try:\n flat_schema = flatten_schema(tool.args_schema.schema())\n input_schema = create_input_schema_from_json_schema(flat_schema)\n langflow_inputs = schema_to_langflow_inputs(input_schema)\n inputs[tool.name] = langflow_inputs\n except (AttributeError, ValueError, TypeError, KeyError) as e:\n msg = f\"Error getting inputs for tool {getattr(tool, 'name', 'unknown')}: {e!s}\"\n logger.exception(msg)\n continue\n return inputs\n\n def remove_non_default_keys(self, build_config: dict) -> None:\n \"\"\"Remove non-default keys from the build config.\"\"\"\n for key in list(build_config.keys()):\n if key not in self.default_keys:\n build_config.pop(key)\n\n async def _update_tool_config(self, build_config: dict, tool_name: str) -> None:\n \"\"\"Update tool configuration with proper error handling.\"\"\"\n if not self.tools:\n self.tools, build_config[\"mcp_server\"][\"value\"] = await self.update_tool_list()\n\n if not tool_name:\n return\n\n tool_obj = next((tool for tool in self.tools if tool.name == tool_name), None)\n if not tool_obj:\n msg = f\"Tool {tool_name} not found in available tools: {self.tools}\"\n self.remove_non_default_keys(build_config)\n build_config[\"tool\"][\"value\"] = \"\"\n await logger.awarning(msg)\n return\n\n try:\n # Store current values before removing inputs (only for the current tool)\n current_values = {}\n for key, value in build_config.items():\n if key not in self.default_keys and isinstance(value, dict) and \"value\" in value:\n current_values[key] = value[\"value\"]\n\n # Remove ALL non-default keys (all previous tool inputs)\n self.remove_non_default_keys(build_config)\n\n # Get and validate new inputs for the selected tool\n self.schema_inputs = await self._validate_schema_inputs(tool_obj)\n if not self.schema_inputs:\n msg = f\"No input parameters to configure for tool '{tool_name}'\"\n await logger.ainfo(msg)\n return\n\n # Add new inputs to build config for the selected tool only\n for schema_input in self.schema_inputs:\n if not schema_input or not hasattr(schema_input, \"name\"):\n msg = \"Invalid schema input detected, skipping\"\n await logger.awarning(msg)\n continue\n\n try:\n name = schema_input.name\n input_dict = schema_input.to_dict()\n input_dict.setdefault(\"value\", None)\n input_dict.setdefault(\"required\", True)\n\n build_config[name] = input_dict\n\n # Preserve existing value if the parameter name exists in current_values\n if name in current_values:\n build_config[name][\"value\"] = current_values[name]\n\n except (AttributeError, KeyError, TypeError) as e:\n msg = f\"Error processing schema input {schema_input}: {e!s}\"\n await logger.aexception(msg)\n continue\n except ValueError as e:\n msg = f\"Schema validation error for tool {tool_name}: {e!s}\"\n await logger.aexception(msg)\n self.schema_inputs = []\n return\n except (AttributeError, KeyError, TypeError) as e:\n msg = f\"Error updating tool config: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n\n async def build_output(self) -> DataFrame:\n \"\"\"Build output with improved error handling and validation.\"\"\"\n try:\n self.tools, _ = await self.update_tool_list()\n if self.tool != \"\":\n # Set session context for persistent MCP sessions using Langflow session ID\n session_context = self._get_session_context()\n if session_context:\n self.stdio_client.set_session_context(session_context)\n self.streamable_http_client.set_session_context(session_context)\n exec_tool = self._tool_cache[self.tool]\n tool_args = self.get_inputs_for_all_tools(self.tools)[self.tool]\n kwargs = {}\n for arg in tool_args:\n value = getattr(self, arg.name, None)\n if value is not None:\n if isinstance(value, Message):\n kwargs[arg.name] = value.text\n else:\n kwargs[arg.name] = value\n\n unflattened_kwargs = maybe_unflatten_dict(kwargs)\n\n output = await exec_tool.coroutine(**unflattened_kwargs)\n tool_content = []\n for item in output.content:\n item_dict = item.model_dump()\n item_dict = self.process_output_item(item_dict)\n tool_content.append(item_dict)\n\n if isinstance(tool_content, list) and all(isinstance(x, dict) for x in tool_content):\n return DataFrame(tool_content)\n return DataFrame(data=tool_content)\n return DataFrame(data=[{\"error\": \"You must select a tool\"}])\n except Exception as e:\n msg = f\"Error in build_output: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n\n def process_output_item(self, item_dict):\n \"\"\"Process the output of a tool.\"\"\"\n if item_dict.get(\"type\") == \"text\":\n text = item_dict.get(\"text\")\n try:\n return json.loads(text)\n # convert it to dict\n except json.JSONDecodeError:\n return item_dict\n return item_dict\n\n def _get_session_context(self) -> str | None:\n \"\"\"Get the Langflow session ID for MCP session caching.\"\"\"\n # Try to get session ID from the component's execution context\n if hasattr(self, \"graph\") and hasattr(self.graph, \"session_id\"):\n session_id = self.graph.session_id\n # Include server name to ensure different servers get different sessions\n server_name = \"\"\n mcp_server = getattr(self, \"mcp_server\", None)\n if isinstance(mcp_server, dict):\n server_name = mcp_server.get(\"name\", \"\")\n elif mcp_server:\n server_name = str(mcp_server)\n return f\"{session_id}_{server_name}\" if session_id else None\n return None\n\n async def _get_tools(self):\n \"\"\"Get cached tools or update if necessary.\"\"\"\n mcp_server = getattr(self, \"mcp_server\", None)\n if not self._not_load_actions:\n tools, _ = await self.update_tool_list(mcp_server)\n return tools\n return []\n"
2708
+ "value": "from __future__ import annotations\n\nimport asyncio\nimport json\nimport uuid\n\nfrom langchain_core.tools import StructuredTool # noqa: TC002\n\nfrom lfx.base.agents.utils import maybe_unflatten_dict, safe_cache_get, safe_cache_set\nfrom lfx.base.mcp.util import (\n MCPStdioClient,\n MCPStreamableHttpClient,\n create_input_schema_from_json_schema,\n update_tools,\n)\nfrom lfx.custom.custom_component.component_with_cache import ComponentWithCache\nfrom lfx.inputs.inputs import InputTypes # noqa: TC001\nfrom lfx.io import BoolInput, DropdownInput, McpInput, MessageTextInput, Output\nfrom lfx.io.schema import flatten_schema, schema_to_langflow_inputs\nfrom lfx.log.logger import logger\nfrom lfx.schema.dataframe import DataFrame\nfrom lfx.schema.message import Message\nfrom lfx.services.deps import get_settings_service, get_storage_service, session_scope\n\n\nclass MCPToolsComponent(ComponentWithCache):\n schema_inputs: list = []\n tools: list[StructuredTool] = []\n _not_load_actions: bool = False\n _tool_cache: dict = {}\n _last_selected_server: str | None = None # Cache for the last selected server\n\n def __init__(self, **data) -> None:\n super().__init__(**data)\n # Initialize cache keys to avoid CacheMiss when accessing them\n self._ensure_cache_structure()\n\n # Initialize clients with access to the component cache\n self.stdio_client: MCPStdioClient = MCPStdioClient(component_cache=self._shared_component_cache)\n self.streamable_http_client: MCPStreamableHttpClient = MCPStreamableHttpClient(\n component_cache=self._shared_component_cache\n )\n\n def _ensure_cache_structure(self):\n \"\"\"Ensure the cache has the required structure.\"\"\"\n # Check if servers key exists and is not CacheMiss\n servers_value = safe_cache_get(self._shared_component_cache, \"servers\")\n if servers_value is None:\n safe_cache_set(self._shared_component_cache, \"servers\", {})\n\n # Check if last_selected_server key exists and is not CacheMiss\n last_server_value = safe_cache_get(self._shared_component_cache, \"last_selected_server\")\n if last_server_value is None:\n safe_cache_set(self._shared_component_cache, \"last_selected_server\", \"\")\n\n default_keys: list[str] = [\n \"code\",\n \"_type\",\n \"tool_mode\",\n \"tool_placeholder\",\n \"mcp_server\",\n \"tool\",\n \"use_cache\",\n \"verify_ssl\",\n ]\n\n display_name = \"MCP Tools\"\n description = \"Connect to an MCP server to use its tools.\"\n documentation: str = \"https://docs.langflow.org/mcp-client\"\n icon = \"Mcp\"\n name = \"MCPTools\"\n\n inputs = [\n McpInput(\n name=\"mcp_server\",\n display_name=\"MCP Server\",\n info=\"Select the MCP Server that will be used by this component\",\n real_time_refresh=True,\n ),\n BoolInput(\n name=\"use_cache\",\n display_name=\"Use Cached Server\",\n info=(\n \"Enable caching of MCP Server and tools to improve performance. \"\n \"Disable to always fetch fresh tools and server updates.\"\n ),\n value=False,\n advanced=True,\n ),\n BoolInput(\n name=\"verify_ssl\",\n display_name=\"Verify SSL Certificate\",\n info=(\n \"Enable SSL certificate verification for HTTPS connections. \"\n \"Disable only for development/testing with self-signed certificates.\"\n ),\n value=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"tool\",\n display_name=\"Tool\",\n options=[],\n value=\"\",\n info=\"Select the tool to execute\",\n show=False,\n required=True,\n real_time_refresh=True,\n ),\n MessageTextInput(\n name=\"tool_placeholder\",\n display_name=\"Tool Placeholder\",\n info=\"Placeholder for the tool\",\n value=\"\",\n show=False,\n tool_mode=False,\n ),\n ]\n\n outputs = [\n Output(display_name=\"Response\", name=\"response\", method=\"build_output\"),\n ]\n\n async def _validate_schema_inputs(self, tool_obj) -> list[InputTypes]:\n \"\"\"Validate and process schema inputs for a tool.\"\"\"\n try:\n if not tool_obj or not hasattr(tool_obj, \"args_schema\"):\n msg = \"Invalid tool object or missing input schema\"\n raise ValueError(msg)\n\n flat_schema = flatten_schema(tool_obj.args_schema.schema())\n input_schema = create_input_schema_from_json_schema(flat_schema)\n if not input_schema:\n msg = f\"Empty input schema for tool '{tool_obj.name}'\"\n raise ValueError(msg)\n\n schema_inputs = schema_to_langflow_inputs(input_schema)\n if not schema_inputs:\n msg = f\"No input parameters defined for tool '{tool_obj.name}'\"\n await logger.awarning(msg)\n return []\n\n except Exception as e:\n msg = f\"Error validating schema inputs: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n else:\n return schema_inputs\n\n async def update_tool_list(self, mcp_server_value=None):\n # Accepts mcp_server_value as dict {name, config} or uses self.mcp_server\n mcp_server = mcp_server_value if mcp_server_value is not None else getattr(self, \"mcp_server\", None)\n server_name = None\n server_config_from_value = None\n if isinstance(mcp_server, dict):\n server_name = mcp_server.get(\"name\")\n server_config_from_value = mcp_server.get(\"config\")\n else:\n server_name = mcp_server\n if not server_name:\n self.tools = []\n return [], {\"name\": server_name, \"config\": server_config_from_value}\n\n # Check if caching is enabled, default to False\n use_cache = getattr(self, \"use_cache\", False)\n\n # Use shared cache if available and caching is enabled\n cached = None\n if use_cache:\n servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n cached = servers_cache.get(server_name) if isinstance(servers_cache, dict) else None\n\n if cached is not None:\n try:\n self.tools = cached[\"tools\"]\n self.tool_names = cached[\"tool_names\"]\n self._tool_cache = cached[\"tool_cache\"]\n server_config_from_value = cached[\"config\"]\n except (TypeError, KeyError, AttributeError) as e:\n # Handle corrupted cache data by clearing it and continuing to fetch fresh tools\n msg = f\"Unable to use cached data for MCP Server{server_name}: {e}\"\n await logger.awarning(msg)\n # Clear the corrupted cache entry\n current_servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n if isinstance(current_servers_cache, dict) and server_name in current_servers_cache:\n current_servers_cache.pop(server_name)\n safe_cache_set(self._shared_component_cache, \"servers\", current_servers_cache)\n else:\n return self.tools, {\"name\": server_name, \"config\": server_config_from_value}\n\n try:\n try:\n from langflow.api.v2.mcp import get_server\n from langflow.services.database.models.user.crud import get_user_by_id\n except ImportError as e:\n msg = (\n \"Langflow MCP server functionality is not available. \"\n \"This feature requires the full Langflow installation.\"\n )\n raise ImportError(msg) from e\n async with session_scope() as db:\n if not self.user_id:\n msg = \"User ID is required for fetching MCP tools.\"\n raise ValueError(msg)\n current_user = await get_user_by_id(db, self.user_id)\n\n # Try to get server config from DB/API\n server_config = await get_server(\n server_name,\n current_user,\n db,\n storage_service=get_storage_service(),\n settings_service=get_settings_service(),\n )\n\n # If get_server returns empty but we have a config, use it\n if not server_config and server_config_from_value:\n server_config = server_config_from_value\n\n if not server_config:\n self.tools = []\n return [], {\"name\": server_name, \"config\": server_config}\n\n # Add verify_ssl option to server config if not present\n if \"verify_ssl\" not in server_config:\n verify_ssl = getattr(self, \"verify_ssl\", True)\n server_config[\"verify_ssl\"] = verify_ssl\n\n _, tool_list, tool_cache = await update_tools(\n server_name=server_name,\n server_config=server_config,\n mcp_stdio_client=self.stdio_client,\n mcp_streamable_http_client=self.streamable_http_client,\n )\n\n self.tool_names = [tool.name for tool in tool_list if hasattr(tool, \"name\")]\n self._tool_cache = tool_cache\n self.tools = tool_list\n\n # Cache the result only if caching is enabled\n if use_cache:\n cache_data = {\n \"tools\": tool_list,\n \"tool_names\": self.tool_names,\n \"tool_cache\": tool_cache,\n \"config\": server_config,\n }\n\n # Safely update the servers cache\n current_servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n if isinstance(current_servers_cache, dict):\n current_servers_cache[server_name] = cache_data\n safe_cache_set(self._shared_component_cache, \"servers\", current_servers_cache)\n\n except (TimeoutError, asyncio.TimeoutError) as e:\n msg = f\"Timeout updating tool list: {e!s}\"\n await logger.aexception(msg)\n raise TimeoutError(msg) from e\n except Exception as e:\n msg = f\"Error updating tool list: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n else:\n return tool_list, {\"name\": server_name, \"config\": server_config}\n\n async def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None) -> dict:\n \"\"\"Toggle the visibility of connection-specific fields based on the selected mode.\"\"\"\n try:\n if field_name == \"tool\":\n try:\n if len(self.tools) == 0:\n try:\n self.tools, build_config[\"mcp_server\"][\"value\"] = await self.update_tool_list()\n build_config[\"tool\"][\"options\"] = [tool.name for tool in self.tools]\n build_config[\"tool\"][\"placeholder\"] = \"Select a tool\"\n except (TimeoutError, asyncio.TimeoutError) as e:\n msg = f\"Timeout updating tool list: {e!s}\"\n await logger.aexception(msg)\n if not build_config[\"tools_metadata\"][\"show\"]:\n build_config[\"tool\"][\"show\"] = True\n build_config[\"tool\"][\"options\"] = []\n build_config[\"tool\"][\"value\"] = \"\"\n build_config[\"tool\"][\"placeholder\"] = \"Timeout on MCP server\"\n else:\n build_config[\"tool\"][\"show\"] = False\n except ValueError:\n if not build_config[\"tools_metadata\"][\"show\"]:\n build_config[\"tool\"][\"show\"] = True\n build_config[\"tool\"][\"options\"] = []\n build_config[\"tool\"][\"value\"] = \"\"\n build_config[\"tool\"][\"placeholder\"] = \"Error on MCP Server\"\n else:\n build_config[\"tool\"][\"show\"] = False\n\n if field_value == \"\":\n return build_config\n tool_obj = None\n for tool in self.tools:\n if tool.name == field_value:\n tool_obj = tool\n break\n if tool_obj is None:\n msg = f\"Tool {field_value} not found in available tools: {self.tools}\"\n await logger.awarning(msg)\n return build_config\n await self._update_tool_config(build_config, field_value)\n except Exception as e:\n build_config[\"tool\"][\"options\"] = []\n msg = f\"Failed to update tools: {e!s}\"\n raise ValueError(msg) from e\n else:\n return build_config\n elif field_name == \"mcp_server\":\n if not field_value:\n build_config[\"tool\"][\"show\"] = False\n build_config[\"tool\"][\"options\"] = []\n build_config[\"tool\"][\"value\"] = \"\"\n build_config[\"tool\"][\"placeholder\"] = \"\"\n build_config[\"tool_placeholder\"][\"tool_mode\"] = False\n self.remove_non_default_keys(build_config)\n return build_config\n\n build_config[\"tool_placeholder\"][\"tool_mode\"] = True\n\n current_server_name = field_value.get(\"name\") if isinstance(field_value, dict) else field_value\n _last_selected_server = safe_cache_get(self._shared_component_cache, \"last_selected_server\", \"\")\n server_changed = current_server_name != _last_selected_server\n\n # Determine if \"Tool Mode\" is active by checking if the tool dropdown is hidden.\n is_in_tool_mode = build_config[\"tools_metadata\"][\"show\"]\n\n # Get use_cache setting to determine if we should use cached data\n use_cache = getattr(self, \"use_cache\", False)\n\n # Fast path: if server didn't change and we already have options, keep them as-is\n # BUT only if caching is enabled or we're in tool mode\n existing_options = build_config.get(\"tool\", {}).get(\"options\") or []\n if not server_changed and existing_options:\n # In non-tool mode with cache disabled, skip the fast path to force refresh\n if not is_in_tool_mode and not use_cache:\n pass # Continue to refresh logic below\n else:\n if not is_in_tool_mode:\n build_config[\"tool\"][\"show\"] = True\n return build_config\n\n # To avoid unnecessary updates, only proceed if the server has actually changed\n # OR if caching is disabled (to force refresh in non-tool mode)\n if (_last_selected_server in (current_server_name, \"\")) and build_config[\"tool\"][\"show\"] and use_cache:\n if current_server_name:\n servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n if isinstance(servers_cache, dict):\n cached = servers_cache.get(current_server_name)\n if cached is not None and cached.get(\"tool_names\"):\n cached_tools = cached[\"tool_names\"]\n current_tools = build_config[\"tool\"][\"options\"]\n if current_tools == cached_tools:\n return build_config\n else:\n return build_config\n safe_cache_set(self._shared_component_cache, \"last_selected_server\", current_server_name)\n\n # Check if tools are already cached for this server before clearing\n cached_tools = None\n if current_server_name and use_cache:\n servers_cache = safe_cache_get(self._shared_component_cache, \"servers\", {})\n if isinstance(servers_cache, dict):\n cached = servers_cache.get(current_server_name)\n if cached is not None:\n try:\n cached_tools = cached[\"tools\"]\n self.tools = cached_tools\n self.tool_names = cached[\"tool_names\"]\n self._tool_cache = cached[\"tool_cache\"]\n except (TypeError, KeyError, AttributeError) as e:\n # Handle corrupted cache data by ignoring it\n msg = f\"Unable to use cached data for MCP Server,{current_server_name}: {e}\"\n await logger.awarning(msg)\n cached_tools = None\n\n # Only clear tools if we don't have cached tools for the current server\n if not cached_tools:\n self.tools = [] # Clear previous tools only if no cache\n\n # Clear previous tool inputs if:\n # 1. Server actually changed\n # 2. Cache is disabled (meaning tool list will be refreshed)\n if server_changed or not use_cache:\n self.remove_non_default_keys(build_config)\n\n # Only show the tool dropdown if not in tool_mode\n if not is_in_tool_mode:\n build_config[\"tool\"][\"show\"] = True\n if cached_tools:\n # Use cached tools to populate options immediately\n build_config[\"tool\"][\"options\"] = [tool.name for tool in cached_tools]\n build_config[\"tool\"][\"placeholder\"] = \"Select a tool\"\n else:\n # Show loading state only when we need to fetch tools\n build_config[\"tool\"][\"placeholder\"] = \"Loading tools...\"\n build_config[\"tool\"][\"options\"] = []\n # Force a value refresh when:\n # 1. Server changed\n # 2. We don't have cached tools\n # 3. Cache is disabled (to force refresh on config changes)\n if server_changed or not cached_tools or not use_cache:\n build_config[\"tool\"][\"value\"] = uuid.uuid4()\n else:\n # Keep the tool dropdown hidden if in tool_mode\n self._not_load_actions = True\n build_config[\"tool\"][\"show\"] = False\n\n elif field_name == \"tool_mode\":\n build_config[\"tool\"][\"placeholder\"] = \"\"\n build_config[\"tool\"][\"show\"] = not bool(field_value) and bool(build_config[\"mcp_server\"])\n self.remove_non_default_keys(build_config)\n self.tool = build_config[\"tool\"][\"value\"]\n if field_value:\n self._not_load_actions = True\n else:\n build_config[\"tool\"][\"value\"] = uuid.uuid4()\n build_config[\"tool\"][\"options\"] = []\n build_config[\"tool\"][\"show\"] = True\n build_config[\"tool\"][\"placeholder\"] = \"Loading tools...\"\n elif field_name == \"tools_metadata\":\n self._not_load_actions = False\n\n except Exception as e:\n msg = f\"Error in update_build_config: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n else:\n return build_config\n\n def get_inputs_for_all_tools(self, tools: list) -> dict:\n \"\"\"Get input schemas for all tools.\"\"\"\n inputs = {}\n for tool in tools:\n if not tool or not hasattr(tool, \"name\"):\n continue\n try:\n flat_schema = flatten_schema(tool.args_schema.schema())\n input_schema = create_input_schema_from_json_schema(flat_schema)\n langflow_inputs = schema_to_langflow_inputs(input_schema)\n inputs[tool.name] = langflow_inputs\n except (AttributeError, ValueError, TypeError, KeyError) as e:\n msg = f\"Error getting inputs for tool {getattr(tool, 'name', 'unknown')}: {e!s}\"\n logger.exception(msg)\n continue\n return inputs\n\n def remove_non_default_keys(self, build_config: dict) -> None:\n \"\"\"Remove non-default keys from the build config.\"\"\"\n for key in list(build_config.keys()):\n if key not in self.default_keys:\n build_config.pop(key)\n\n async def _update_tool_config(self, build_config: dict, tool_name: str) -> None:\n \"\"\"Update tool configuration with proper error handling.\"\"\"\n if not self.tools:\n self.tools, build_config[\"mcp_server\"][\"value\"] = await self.update_tool_list()\n\n if not tool_name:\n return\n\n tool_obj = next((tool for tool in self.tools if tool.name == tool_name), None)\n if not tool_obj:\n msg = f\"Tool {tool_name} not found in available tools: {self.tools}\"\n self.remove_non_default_keys(build_config)\n build_config[\"tool\"][\"value\"] = \"\"\n await logger.awarning(msg)\n return\n\n try:\n # Store current values before removing inputs (only for the current tool)\n current_values = {}\n for key, value in build_config.items():\n if key not in self.default_keys and isinstance(value, dict) and \"value\" in value:\n current_values[key] = value[\"value\"]\n\n # Remove ALL non-default keys (all previous tool inputs)\n self.remove_non_default_keys(build_config)\n\n # Get and validate new inputs for the selected tool\n self.schema_inputs = await self._validate_schema_inputs(tool_obj)\n if not self.schema_inputs:\n msg = f\"No input parameters to configure for tool '{tool_name}'\"\n await logger.ainfo(msg)\n return\n\n # Add new inputs to build config for the selected tool only\n for schema_input in self.schema_inputs:\n if not schema_input or not hasattr(schema_input, \"name\"):\n msg = \"Invalid schema input detected, skipping\"\n await logger.awarning(msg)\n continue\n\n try:\n name = schema_input.name\n input_dict = schema_input.to_dict()\n input_dict.setdefault(\"value\", None)\n input_dict.setdefault(\"required\", True)\n\n build_config[name] = input_dict\n\n # Preserve existing value if the parameter name exists in current_values\n if name in current_values:\n build_config[name][\"value\"] = current_values[name]\n\n except (AttributeError, KeyError, TypeError) as e:\n msg = f\"Error processing schema input {schema_input}: {e!s}\"\n await logger.aexception(msg)\n continue\n except ValueError as e:\n msg = f\"Schema validation error for tool {tool_name}: {e!s}\"\n await logger.aexception(msg)\n self.schema_inputs = []\n return\n except (AttributeError, KeyError, TypeError) as e:\n msg = f\"Error updating tool config: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n\n async def build_output(self) -> DataFrame:\n \"\"\"Build output with improved error handling and validation.\"\"\"\n try:\n self.tools, _ = await self.update_tool_list()\n if self.tool != \"\":\n # Set session context for persistent MCP sessions using Langflow session ID\n session_context = self._get_session_context()\n if session_context:\n self.stdio_client.set_session_context(session_context)\n self.streamable_http_client.set_session_context(session_context)\n exec_tool = self._tool_cache[self.tool]\n tool_args = self.get_inputs_for_all_tools(self.tools)[self.tool]\n kwargs = {}\n for arg in tool_args:\n value = getattr(self, arg.name, None)\n if value is not None:\n if isinstance(value, Message):\n kwargs[arg.name] = value.text\n else:\n kwargs[arg.name] = value\n\n unflattened_kwargs = maybe_unflatten_dict(kwargs)\n\n output = await exec_tool.coroutine(**unflattened_kwargs)\n tool_content = []\n for item in output.content:\n item_dict = item.model_dump()\n item_dict = self.process_output_item(item_dict)\n tool_content.append(item_dict)\n\n if isinstance(tool_content, list) and all(isinstance(x, dict) for x in tool_content):\n return DataFrame(tool_content)\n return DataFrame(data=tool_content)\n return DataFrame(data=[{\"error\": \"You must select a tool\"}])\n except Exception as e:\n msg = f\"Error in build_output: {e!s}\"\n await logger.aexception(msg)\n raise ValueError(msg) from e\n\n def process_output_item(self, item_dict):\n \"\"\"Process the output of a tool.\"\"\"\n if item_dict.get(\"type\") == \"text\":\n text = item_dict.get(\"text\")\n try:\n return json.loads(text)\n except json.JSONDecodeError:\n return item_dict\n return item_dict\n\n def _get_session_context(self) -> str | None:\n \"\"\"Get the Langflow session ID for MCP session caching.\"\"\"\n # Try to get session ID from the component's execution context\n if hasattr(self, \"graph\") and hasattr(self.graph, \"session_id\"):\n session_id = self.graph.session_id\n # Include server name to ensure different servers get different sessions\n server_name = \"\"\n mcp_server = getattr(self, \"mcp_server\", None)\n if isinstance(mcp_server, dict):\n server_name = mcp_server.get(\"name\", \"\")\n elif mcp_server:\n server_name = str(mcp_server)\n return f\"{session_id}_{server_name}\" if session_id else None\n return None\n\n async def _get_tools(self):\n \"\"\"Get cached tools or update if necessary.\"\"\"\n mcp_server = getattr(self, \"mcp_server\", None)\n if not self._not_load_actions:\n tools, _ = await self.update_tool_list(mcp_server)\n return tools\n return []\n"
2709
2709
  },
2710
2710
  "mcp_server": {
2711
2711
  "_input_type": "McpInput",
@@ -1245,7 +1245,7 @@
1245
1245
  },
1246
1246
  {
1247
1247
  "name": "pydantic",
1248
- "version": "2.10.6"
1248
+ "version": "2.11.10"
1249
1249
  },
1250
1250
  {
1251
1251
  "name": "lfx",
@@ -931,7 +931,7 @@
931
931
  "legacy": false,
932
932
  "lf_version": "1.6.0",
933
933
  "metadata": {
934
- "code_hash": "85abc1094130",
934
+ "code_hash": "6e78c258044c",
935
935
  "dependencies": {
936
936
  "dependencies": [
937
937
  {
@@ -999,7 +999,7 @@
999
999
  "show": true,
1000
1000
  "title_case": false,
1001
1001
  "type": "code",
1002
- "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"
1002
+ "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 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 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"
1003
1003
  },
1004
1004
  "concurrency_multithreading": {
1005
1005
  "_input_type": "IntInput",
@@ -1081,6 +1081,26 @@
1081
1081
  "type": "other",
1082
1082
  "value": ""
1083
1083
  },
1084
+ "file_path_str": {
1085
+ "_input_type": "StrInput",
1086
+ "advanced": true,
1087
+ "display_name": "File Path",
1088
+ "dynamic": false,
1089
+ "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.",
1090
+ "list": false,
1091
+ "list_add_label": "Add More",
1092
+ "load_from_db": false,
1093
+ "name": "file_path_str",
1094
+ "placeholder": "",
1095
+ "required": false,
1096
+ "show": false,
1097
+ "title_case": false,
1098
+ "tool_mode": true,
1099
+ "trace_as_metadata": true,
1100
+ "track_in_telemetry": false,
1101
+ "type": "str",
1102
+ "value": ""
1103
+ },
1084
1104
  "ignore_unspecified_files": {
1085
1105
  "_input_type": "BoolInput",
1086
1106
  "advanced": true,
@@ -2077,7 +2097,7 @@
2077
2097
  "dependencies": [
2078
2098
  {
2079
2099
  "name": "pydantic",
2080
- "version": "2.10.6"
2100
+ "version": "2.11.10"
2081
2101
  },
2082
2102
  {
2083
2103
  "name": "trustcall",
@@ -1612,7 +1612,7 @@
1612
1612
  },
1613
1613
  {
1614
1614
  "name": "pydantic",
1615
- "version": "2.10.6"
1615
+ "version": "2.11.10"
1616
1616
  },
1617
1617
  {
1618
1618
  "name": "lfx",
@@ -2585,7 +2585,7 @@
2585
2585
  },
2586
2586
  {
2587
2587
  "name": "pydantic",
2588
- "version": "2.10.6"
2588
+ "version": "2.11.10"
2589
2589
  },
2590
2590
  {
2591
2591
  "name": "lfx",