langflow-base-nightly 1.7.0.dev52__py3-none-any.whl → 1.7.0.dev55__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- langflow/agentic/utils/template_create.py +4 -2
- langflow/api/router.py +4 -0
- langflow/api/utils/core.py +1 -1
- langflow/api/utils/mcp/agentic_mcp.py +8 -7
- langflow/api/v1/__init__.py +4 -0
- langflow/api/v1/flows.py +122 -19
- langflow/api/v1/login.py +9 -7
- langflow/api/v1/model_options.py +22 -0
- langflow/api/v1/models.py +757 -0
- langflow/api/v1/monitor.py +4 -17
- langflow/api/v1/openai_responses.py +9 -0
- langflow/api/v1/schemas.py +9 -1
- langflow/api/v1/variable.py +137 -4
- langflow/frontend/assets/SlackIcon-CiDRMRPJ.js +1 -0
- langflow/frontend/assets/Wikipedia-Dy2BbcVZ.js +1 -0
- langflow/frontend/assets/Wolfram-Cqcm65J8.js +1 -0
- langflow/frontend/assets/a-arrow-down-D0QDfPwx.js +6 -0
- langflow/frontend/assets/a-arrow-up-DToMBqme.js +6 -0
- langflow/frontend/assets/a-large-small-DoI6Lbmh.js +6 -0
- langflow/frontend/assets/accessibility-Cw-mNMt4.js +6 -0
- langflow/frontend/assets/activity-hWot7v0y.js +6 -0
- langflow/frontend/assets/air-vent-Byvqj6UO.js +6 -0
- langflow/frontend/assets/airplay-DHukvi2i.js +6 -0
- langflow/frontend/assets/alarm-clock-DtrrEQBq.js +6 -0
- langflow/frontend/assets/alarm-clock-check-D6AI3OPX.js +6 -0
- langflow/frontend/assets/alarm-clock-minus-BL3qcCTv.js +6 -0
- langflow/frontend/assets/alarm-clock-off-Cp1EL8zC.js +6 -0
- langflow/frontend/assets/alarm-clock-plus-kX0kuGbg.js +6 -0
- langflow/frontend/assets/alarm-smoke-B_ihQo4m.js +6 -0
- langflow/frontend/assets/album-C7gkxb6p.js +6 -0
- langflow/frontend/assets/align-center-DtKFvIp-.js +6 -0
- langflow/frontend/assets/align-center-horizontal-CmKZBJ3p.js +6 -0
- langflow/frontend/assets/align-center-vertical-BVHpQ5jm.js +6 -0
- langflow/frontend/assets/align-end-horizontal-CnTv9v1g.js +6 -0
- langflow/frontend/assets/align-end-vertical-DOXV_CPn.js +6 -0
- langflow/frontend/assets/align-horizontal-distribute-center-Gp4cXira.js +6 -0
- langflow/frontend/assets/align-horizontal-distribute-end-TJv5yc-l.js +6 -0
- langflow/frontend/assets/align-horizontal-distribute-start-Dma5h49X.js +6 -0
- langflow/frontend/assets/align-horizontal-justify-center-D_Va6wiK.js +6 -0
- langflow/frontend/assets/align-horizontal-justify-end-C6QiubjB.js +6 -0
- langflow/frontend/assets/align-horizontal-justify-start-XdwaVYgG.js +6 -0
- langflow/frontend/assets/align-horizontal-space-around-X1tLLrkW.js +6 -0
- langflow/frontend/assets/align-horizontal-space-between-Dh3018_K.js +6 -0
- langflow/frontend/assets/align-justify-DHg8_U1g.js +6 -0
- langflow/frontend/assets/align-left-DhwQkbhk.js +6 -0
- langflow/frontend/assets/align-right-BPRo6jGb.js +6 -0
- langflow/frontend/assets/align-start-horizontal-BCuSphdX.js +6 -0
- langflow/frontend/assets/align-start-vertical-ab2DXCS5.js +6 -0
- langflow/frontend/assets/align-vertical-distribute-center-DFhGK-rN.js +6 -0
- langflow/frontend/assets/align-vertical-distribute-end-Dfe56eVW.js +6 -0
- langflow/frontend/assets/align-vertical-distribute-start-URfCfDOt.js +6 -0
- langflow/frontend/assets/align-vertical-justify-center-Io8SQ_x_.js +6 -0
- langflow/frontend/assets/align-vertical-justify-end-BRreSma-.js +6 -0
- langflow/frontend/assets/align-vertical-justify-start-BKE4PAN5.js +6 -0
- langflow/frontend/assets/align-vertical-space-around-BUAWwmKu.js +6 -0
- langflow/frontend/assets/align-vertical-space-between-D0dmJ62l.js +6 -0
- langflow/frontend/assets/ambulance-CBSM6r9I.js +6 -0
- langflow/frontend/assets/ampersand-OwbxfSoT.js +6 -0
- langflow/frontend/assets/ampersands-phDhbc5_.js +6 -0
- langflow/frontend/assets/amphora-XJ0wSntH.js +6 -0
- langflow/frontend/assets/anchor-YZR9yXb1.js +6 -0
- langflow/frontend/assets/angry-7RJyr8Ks.js +6 -0
- langflow/frontend/assets/annoyed-CQgFRIXq.js +6 -0
- langflow/frontend/assets/antenna-DWt3JquC.js +6 -0
- langflow/frontend/assets/anvil-oydRBR5k.js +6 -0
- langflow/frontend/assets/aperture-ConT4Ais.js +6 -0
- langflow/frontend/assets/app-window-BEQBdken.js +6 -0
- langflow/frontend/assets/app-window-mac-derfeq8Q.js +6 -0
- langflow/frontend/assets/apple-oQkXFKHk.js +6 -0
- langflow/frontend/assets/archive-DL4Jju_X.js +6 -0
- langflow/frontend/assets/archive-restore-tbbdtHnz.js +6 -0
- langflow/frontend/assets/archive-x-B9xJPjFQ.js +6 -0
- langflow/frontend/assets/armchair-BZsNazfR.js +6 -0
- langflow/frontend/assets/arrow-big-down-_w3gYubJ.js +6 -0
- langflow/frontend/assets/arrow-big-down-dash-ZWzf7_Vm.js +6 -0
- langflow/frontend/assets/arrow-big-left-CwRD-vU8.js +6 -0
- langflow/frontend/assets/arrow-big-left-dash-CLj6et2F.js +6 -0
- langflow/frontend/assets/arrow-big-right-BU1ZIOoI.js +6 -0
- langflow/frontend/assets/arrow-big-right-dash-mVNtCmy4.js +6 -0
- langflow/frontend/assets/arrow-big-up-MZBxWcLb.js +6 -0
- langflow/frontend/assets/arrow-big-up-dash-BTSaZ3rL.js +6 -0
- langflow/frontend/assets/arrow-down-0-1-CtQvLh_F.js +6 -0
- langflow/frontend/assets/arrow-down-1-0-G0DV_-jJ.js +6 -0
- langflow/frontend/assets/arrow-down-B-l93xHD.js +6 -0
- langflow/frontend/assets/arrow-down-a-z-Tzg5tpD_.js +6 -0
- langflow/frontend/assets/arrow-down-from-line-B66kDVSw.js +6 -0
- langflow/frontend/assets/arrow-down-left-Bb9_3CCF.js +6 -0
- langflow/frontend/assets/arrow-down-narrow-wide-DVQ_iZIB.js +6 -0
- langflow/frontend/assets/arrow-down-right-BrFOGPEk.js +6 -0
- langflow/frontend/assets/arrow-down-to-dot-BUHlbyD0.js +6 -0
- langflow/frontend/assets/arrow-down-to-line-CUx9iPzf.js +6 -0
- langflow/frontend/assets/arrow-down-up-DEGIbqld.js +6 -0
- langflow/frontend/assets/arrow-down-wide-narrow-BDGmkk1h.js +6 -0
- langflow/frontend/assets/arrow-down-z-a-CZLqKUx0.js +6 -0
- langflow/frontend/assets/arrow-left-B_OBt03y.js +6 -0
- langflow/frontend/assets/arrow-left-from-line-9ufi0ecO.js +6 -0
- langflow/frontend/assets/arrow-left-right-gOh2Y7oY.js +6 -0
- langflow/frontend/assets/arrow-left-to-line-D70iFjNH.js +6 -0
- langflow/frontend/assets/arrow-right-CKq9pdal.js +6 -0
- langflow/frontend/assets/arrow-right-from-line-DvnunoU0.js +6 -0
- langflow/frontend/assets/arrow-right-left-_2oF7m9r.js +6 -0
- langflow/frontend/assets/arrow-right-to-line-BxWsuvcP.js +6 -0
- langflow/frontend/assets/arrow-up-0-1-UrjSfDJn.js +6 -0
- langflow/frontend/assets/arrow-up-1-0-CM2dh3AB.js +6 -0
- langflow/frontend/assets/arrow-up-D_Y7BGJZ.js +6 -0
- langflow/frontend/assets/arrow-up-a-z-CZ5_KOss.js +6 -0
- langflow/frontend/assets/arrow-up-down-D-WPBja4.js +6 -0
- langflow/frontend/assets/arrow-up-from-dot-C1ebyeMB.js +6 -0
- langflow/frontend/assets/arrow-up-from-line-BGDFNOIe.js +6 -0
- langflow/frontend/assets/arrow-up-left-oYJa1lK6.js +6 -0
- langflow/frontend/assets/arrow-up-narrow-wide-CL-SemHX.js +6 -0
- langflow/frontend/assets/arrow-up-right-q5RfBzKt.js +6 -0
- langflow/frontend/assets/arrow-up-to-line-D9O_vbe8.js +6 -0
- langflow/frontend/assets/arrow-up-wide-narrow-C1Q3vBuZ.js +6 -0
- langflow/frontend/assets/arrow-up-z-a-D-kVvjSu.js +6 -0
- langflow/frontend/assets/arrows-up-from-line-DJQdeKsZ.js +6 -0
- langflow/frontend/assets/asterisk-Ca3MsPZE.js +6 -0
- langflow/frontend/assets/at-sign-BAJSJ1qU.js +6 -0
- langflow/frontend/assets/atom-BvwGZJ3B.js +6 -0
- langflow/frontend/assets/audio-lines-Du741dSy.js +6 -0
- langflow/frontend/assets/audio-waveform-esSOCFic.js +6 -0
- langflow/frontend/assets/award-B4Q8oZG_.js +6 -0
- langflow/frontend/assets/axe-CVfqqqJ0.js +6 -0
- langflow/frontend/assets/axis-3d-DeT-zV7X.js +6 -0
- langflow/frontend/assets/baby-BdI6Bx5H.js +6 -0
- langflow/frontend/assets/backpack-YYgLRu05.js +6 -0
- langflow/frontend/assets/badge-CtIB0t_6.js +6 -0
- langflow/frontend/assets/badge-alert-BqPiZdq9.js +6 -0
- langflow/frontend/assets/badge-cent-Dzwmq_lP.js +6 -0
- langflow/frontend/assets/badge-check-DszgZEqQ.js +6 -0
- langflow/frontend/assets/badge-dollar-sign-D6_EslRQ.js +6 -0
- langflow/frontend/assets/badge-euro-BQql-pg0.js +6 -0
- langflow/frontend/assets/badge-help-BnNCR5F0.js +6 -0
- langflow/frontend/assets/badge-indian-rupee-BIYCaJCb.js +6 -0
- langflow/frontend/assets/badge-info-Dri8mwgT.js +6 -0
- langflow/frontend/assets/badge-japanese-yen-BwcOCoeZ.js +6 -0
- langflow/frontend/assets/badge-minus-DBkvvSwv.js +6 -0
- langflow/frontend/assets/badge-percent-Cxy2Fo-N.js +6 -0
- langflow/frontend/assets/badge-plus-DE8fShhE.js +6 -0
- langflow/frontend/assets/badge-pound-sterling-BofEzkg2.js +6 -0
- langflow/frontend/assets/badge-russian-ruble-Cm0gaD62.js +6 -0
- langflow/frontend/assets/badge-swiss-franc-DrYVhggb.js +6 -0
- langflow/frontend/assets/badge-x-BX5JqZV7.js +6 -0
- langflow/frontend/assets/baggage-claim-DvpoauZf.js +6 -0
- langflow/frontend/assets/ban-B1KHPWy2.js +6 -0
- langflow/frontend/assets/banana-CfdacHC0.js +6 -0
- langflow/frontend/assets/bandage-D_DmeXTQ.js +6 -0
- langflow/frontend/assets/banknote-CGf35Nu_.js +6 -0
- langflow/frontend/assets/banknote-arrow-down-Bsk5AYgW.js +6 -0
- langflow/frontend/assets/banknote-arrow-up-DxrrWbYd.js +6 -0
- langflow/frontend/assets/banknote-x-CNLoLyte.js +6 -0
- langflow/frontend/assets/barcode-CkAiQpv_.js +6 -0
- langflow/frontend/assets/baseline-DmSN7vJT.js +6 -0
- langflow/frontend/assets/bath-BVUupyhv.js +6 -0
- langflow/frontend/assets/battery-CEAwSkFP.js +6 -0
- langflow/frontend/assets/battery-charging-BfLCX2-h.js +6 -0
- langflow/frontend/assets/battery-full-0iDVp-o0.js +6 -0
- langflow/frontend/assets/battery-low-BcZQ08Dw.js +6 -0
- langflow/frontend/assets/battery-medium-DGqJYD1t.js +6 -0
- langflow/frontend/assets/battery-plus-BOSFZqZe.js +6 -0
- langflow/frontend/assets/battery-warning-ic4lJJVp.js +6 -0
- langflow/frontend/assets/beaker-BFuons2p.js +6 -0
- langflow/frontend/assets/bean-8vnDx1I9.js +6 -0
- langflow/frontend/assets/bean-off-Ysohtf4O.js +6 -0
- langflow/frontend/assets/bed-DuqIrPmN.js +6 -0
- langflow/frontend/assets/bed-double-BAIWPGsm.js +6 -0
- langflow/frontend/assets/bed-single-YYvXUljj.js +6 -0
- langflow/frontend/assets/beef-CK-4EOk9.js +6 -0
- langflow/frontend/assets/beer-DxRkOXll.js +6 -0
- langflow/frontend/assets/beer-off-ca2uo1xU.js +6 -0
- langflow/frontend/assets/bell-Udiy8X0N.js +6 -0
- langflow/frontend/assets/bell-dot-BBHKkc5C.js +6 -0
- langflow/frontend/assets/bell-electric-gUJz2OHW.js +6 -0
- langflow/frontend/assets/bell-minus-CVq_mjkN.js +6 -0
- langflow/frontend/assets/bell-off-0qN--6Yo.js +6 -0
- langflow/frontend/assets/bell-plus-BhRzK6QJ.js +6 -0
- langflow/frontend/assets/bell-ring-DjQSsyYE.js +6 -0
- langflow/frontend/assets/between-horizontal-end-NpyCdfOE.js +6 -0
- langflow/frontend/assets/between-horizontal-start-Dnpc4BAO.js +6 -0
- langflow/frontend/assets/between-vertical-end-CHrjEpfS.js +6 -0
- langflow/frontend/assets/between-vertical-start-DKJs53Sx.js +6 -0
- langflow/frontend/assets/biceps-flexed-CsE7dV3u.js +6 -0
- langflow/frontend/assets/bike-CVR0RzpQ.js +6 -0
- langflow/frontend/assets/binary-Bcih0o69.js +6 -0
- langflow/frontend/assets/binoculars-ICtPwNib.js +6 -0
- langflow/frontend/assets/biohazard-D03rerME.js +6 -0
- langflow/frontend/assets/bird-B5I4-Y1a.js +6 -0
- langflow/frontend/assets/bitcoin-CY0RUO73.js +6 -0
- langflow/frontend/assets/blend-ByVWGP-D.js +6 -0
- langflow/frontend/assets/blinds-8P6aWn71.js +6 -0
- langflow/frontend/assets/blocks-C7fg3_Sh.js +6 -0
- langflow/frontend/assets/bluetooth-DF_2-I3H.js +6 -0
- langflow/frontend/assets/bluetooth-connected-C7eddUdy.js +6 -0
- langflow/frontend/assets/bluetooth-off-Br88awpS.js +6 -0
- langflow/frontend/assets/bluetooth-searching-B4WptJbX.js +6 -0
- langflow/frontend/assets/bold-CqjK5dvo.js +6 -0
- langflow/frontend/assets/bolt-D9ewNwxl.js +6 -0
- langflow/frontend/assets/bomb-D89BBj0x.js +6 -0
- langflow/frontend/assets/bone-DZfW0e9X.js +6 -0
- langflow/frontend/assets/book-CU5lbLsx.js +6 -0
- langflow/frontend/assets/book-a-DyEiNbAO.js +6 -0
- langflow/frontend/assets/book-audio-BOz0SK3h.js +6 -0
- langflow/frontend/assets/book-check-bAiLk1v0.js +6 -0
- langflow/frontend/assets/book-copy-Bjyl8Dxj.js +6 -0
- langflow/frontend/assets/book-dashed-87-hTIj-.js +6 -0
- langflow/frontend/assets/book-down-DMGDvX6c.js +6 -0
- langflow/frontend/assets/book-headphones-DxzgLbtY.js +6 -0
- langflow/frontend/assets/book-heart-CoddRiQc.js +6 -0
- langflow/frontend/assets/book-image-Bvm0otFu.js +6 -0
- langflow/frontend/assets/book-key-Crv25-1b.js +6 -0
- langflow/frontend/assets/book-lock-CE-TUGNT.js +6 -0
- langflow/frontend/assets/book-marked-DyXwsEf8.js +6 -0
- langflow/frontend/assets/book-minus-B4Q7tkGf.js +6 -0
- langflow/frontend/assets/book-open-BwdF_mSV.js +6 -0
- langflow/frontend/assets/book-open-check-DAKXiQog.js +6 -0
- langflow/frontend/assets/book-open-text-DmYpNWDa.js +6 -0
- langflow/frontend/assets/book-plus-nDtW0juH.js +6 -0
- langflow/frontend/assets/book-text-A0c-fc0P.js +6 -0
- langflow/frontend/assets/book-type-Byqm2yjx.js +6 -0
- langflow/frontend/assets/book-up-2-CoIJp0vk.js +6 -0
- langflow/frontend/assets/book-up-PCEt_ENQ.js +6 -0
- langflow/frontend/assets/book-user-TA8Et36C.js +6 -0
- langflow/frontend/assets/book-x-BFRasTEI.js +6 -0
- langflow/frontend/assets/bookmark-BJ6wtUhD.js +6 -0
- langflow/frontend/assets/bookmark-check-CxMqJ7-P.js +6 -0
- langflow/frontend/assets/bookmark-minus-B0_-EHIw.js +6 -0
- langflow/frontend/assets/bookmark-plus-CZbCCZjc.js +6 -0
- langflow/frontend/assets/bookmark-x-CXVmt1v4.js +6 -0
- langflow/frontend/assets/boom-box-CgZrwetT.js +6 -0
- langflow/frontend/assets/bot-DQRMipsE.js +6 -0
- langflow/frontend/assets/bot-message-square-CZBvDG_-.js +6 -0
- langflow/frontend/assets/bot-off-vPdD2RlP.js +6 -0
- langflow/frontend/assets/bow-arrow-EPgHlepf.js +6 -0
- langflow/frontend/assets/box-BgDOdcN1.js +6 -0
- langflow/frontend/assets/boxes-1Ph2c29h.js +6 -0
- langflow/frontend/assets/braces-C3gETHIP.js +6 -0
- langflow/frontend/assets/brackets-DQQ4xUwP.js +6 -0
- langflow/frontend/assets/brain-CKgUPawu.js +6 -0
- langflow/frontend/assets/brain-circuit-71o2XFnH.js +6 -0
- langflow/frontend/assets/brain-cog-CkwmrEVa.js +6 -0
- langflow/frontend/assets/brick-wall-CIfP2291.js +6 -0
- langflow/frontend/assets/brick-wall-fire-CVapRCpF.js +6 -0
- langflow/frontend/assets/briefcase-CUCjqLGO.js +6 -0
- langflow/frontend/assets/briefcase-business-C6KvOrlm.js +6 -0
- langflow/frontend/assets/briefcase-conveyor-belt-D8-KT8xV.js +6 -0
- langflow/frontend/assets/briefcase-medical-BMcjLsMG.js +6 -0
- langflow/frontend/assets/bring-to-front-BglFFtX9.js +6 -0
- langflow/frontend/assets/brush-BlEF7vZs.js +6 -0
- langflow/frontend/assets/bubbles-Cm5afSpk.js +6 -0
- langflow/frontend/assets/bug-CROT4EB9.js +6 -0
- langflow/frontend/assets/bug-off-B5pdze6F.js +6 -0
- langflow/frontend/assets/bug-play-B6XD7tsh.js +6 -0
- langflow/frontend/assets/building-2-CsWtjYjF.js +6 -0
- langflow/frontend/assets/building-CzrfPDJV.js +6 -0
- langflow/frontend/assets/bus-C-85lnrJ.js +6 -0
- langflow/frontend/assets/bus-front-Cxmu9qEn.js +6 -0
- langflow/frontend/assets/cable-B58qv4J-.js +6 -0
- langflow/frontend/assets/cable-car-BHokOmFT.js +6 -0
- langflow/frontend/assets/cake-CGFaGIrC.js +6 -0
- langflow/frontend/assets/cake-slice-BBjohR7D.js +6 -0
- langflow/frontend/assets/calculator-B-0BeATJ.js +6 -0
- langflow/frontend/assets/calendar-1-cuaB_r0e.js +6 -0
- langflow/frontend/assets/calendar-DTeTAlFN.js +6 -0
- langflow/frontend/assets/calendar-arrow-down-C-nN5_4E.js +6 -0
- langflow/frontend/assets/calendar-arrow-up-friUOxYZ.js +6 -0
- langflow/frontend/assets/calendar-check-2-Ddx3rWxC.js +6 -0
- langflow/frontend/assets/calendar-check-CVcw0Oaa.js +6 -0
- langflow/frontend/assets/calendar-clock-DB3BqPqH.js +6 -0
- langflow/frontend/assets/calendar-cog-qufoRfNY.js +6 -0
- langflow/frontend/assets/calendar-days-JGKw613e.js +6 -0
- langflow/frontend/assets/calendar-fold-xVSKci71.js +6 -0
- langflow/frontend/assets/calendar-heart-DVc8QSMQ.js +6 -0
- langflow/frontend/assets/calendar-minus-2-XIDnJ8bN.js +6 -0
- langflow/frontend/assets/calendar-minus-BG-9Gyu2.js +6 -0
- langflow/frontend/assets/calendar-off-U_58_9a9.js +6 -0
- langflow/frontend/assets/calendar-plus-2-DlZ32tDq.js +6 -0
- langflow/frontend/assets/calendar-plus-wPVwP8XH.js +6 -0
- langflow/frontend/assets/calendar-range-Dh3Mn4wk.js +6 -0
- langflow/frontend/assets/calendar-search-BYxcN8lZ.js +6 -0
- langflow/frontend/assets/calendar-sync-Dml9hu0M.js +6 -0
- langflow/frontend/assets/calendar-x-2-BCfg_6G9.js +6 -0
- langflow/frontend/assets/calendar-x-_X2UsDsD.js +6 -0
- langflow/frontend/assets/camera-Bq6YMUSz.js +6 -0
- langflow/frontend/assets/camera-off-D87mM-V8.js +6 -0
- langflow/frontend/assets/candy-B-0zd1zJ.js +6 -0
- langflow/frontend/assets/candy-cane-B02xZ8Yh.js +6 -0
- langflow/frontend/assets/candy-off-B31YgP4X.js +6 -0
- langflow/frontend/assets/cannabis-vbR60kvp.js +6 -0
- langflow/frontend/assets/captions-IapwnCWY.js +6 -0
- langflow/frontend/assets/captions-off-Cqyp0BCZ.js +6 -0
- langflow/frontend/assets/car-CFU8YDmN.js +6 -0
- langflow/frontend/assets/car-front-uwGBK8Yy.js +6 -0
- langflow/frontend/assets/car-taxi-front-9uT_Py1s.js +6 -0
- langflow/frontend/assets/caravan-CucvY9fQ.js +6 -0
- langflow/frontend/assets/carrot-Bb2TYO_E.js +6 -0
- langflow/frontend/assets/case-lower-DAlIbIk7.js +6 -0
- langflow/frontend/assets/case-sensitive-DVwMfk_g.js +6 -0
- langflow/frontend/assets/case-upper-DCIiTCMq.js +6 -0
- langflow/frontend/assets/cassette-tape-Bdfd7Nu2.js +6 -0
- langflow/frontend/assets/cast-C703ktdG.js +6 -0
- langflow/frontend/assets/castle-CMOrKjig.js +6 -0
- langflow/frontend/assets/cat-BAQE-Uvu.js +6 -0
- langflow/frontend/assets/cctv-Bm1ksqgN.js +6 -0
- langflow/frontend/assets/chart-area-0ZVeQsVc.js +6 -0
- langflow/frontend/assets/chart-bar-D9XeOk_i.js +6 -0
- langflow/frontend/assets/chart-bar-big-CW3qe26X.js +6 -0
- langflow/frontend/assets/chart-bar-decreasing-C0-1_ZyP.js +6 -0
- langflow/frontend/assets/chart-bar-increasing-CkeXMrpE.js +6 -0
- langflow/frontend/assets/chart-bar-stacked-LJjgMToq.js +6 -0
- langflow/frontend/assets/chart-candlestick-k1gVX8Te.js +6 -0
- langflow/frontend/assets/chart-column-BBJrPy0c.js +6 -0
- langflow/frontend/assets/chart-column-big-DcVBLwTs.js +6 -0
- langflow/frontend/assets/chart-column-decreasing-Cadd5KDq.js +6 -0
- langflow/frontend/assets/chart-column-increasing-CVGwOZ7O.js +6 -0
- langflow/frontend/assets/chart-column-stacked-nkTWIhS7.js +6 -0
- langflow/frontend/assets/chart-gantt-CDUJnFDM.js +6 -0
- langflow/frontend/assets/chart-line-CZBVm0lz.js +6 -0
- langflow/frontend/assets/chart-network-35pXQTAP.js +6 -0
- langflow/frontend/assets/chart-no-axes-column-cNjR2jbE.js +6 -0
- langflow/frontend/assets/chart-no-axes-column-decreasing-BOmLD1-Q.js +6 -0
- langflow/frontend/assets/chart-no-axes-column-increasing-yAD6_Y5Q.js +6 -0
- langflow/frontend/assets/chart-no-axes-combined-BkyhRYPE.js +6 -0
- langflow/frontend/assets/chart-no-axes-gantt-BnnWuplR.js +6 -0
- langflow/frontend/assets/chart-pie-D345szvo.js +6 -0
- langflow/frontend/assets/chart-scatter-BCE828AF.js +6 -0
- langflow/frontend/assets/chart-spline-DezWqFYo.js +6 -0
- langflow/frontend/assets/check-check-jYR0NdUS.js +6 -0
- langflow/frontend/assets/chef-hat-dWKJciCE.js +6 -0
- langflow/frontend/assets/cherry-C1B8wlvn.js +6 -0
- langflow/frontend/assets/chevron-first-DMbVTlgQ.js +6 -0
- langflow/frontend/assets/chevron-last-DUFi9nfs.js +6 -0
- langflow/frontend/assets/chevron-left-YByHwjJF.js +6 -0
- langflow/frontend/assets/chevron-right-BY1WKmJZ.js +6 -0
- langflow/frontend/assets/chevrons-down-CrEwkPTZ.js +6 -0
- langflow/frontend/assets/chevrons-down-up-B5omkIRL.js +6 -0
- langflow/frontend/assets/chevrons-left-CM5G6uIl.js +6 -0
- langflow/frontend/assets/chevrons-left-right-B3JKONgK.js +6 -0
- langflow/frontend/assets/chevrons-left-right-ellipsis-BsM6mFG_.js +6 -0
- langflow/frontend/assets/chevrons-right-fATY3ztz.js +6 -0
- langflow/frontend/assets/chevrons-right-left-CByP6P6z.js +6 -0
- langflow/frontend/assets/chevrons-up-CbWgePoj.js +6 -0
- langflow/frontend/assets/chrome-CWus5OOn.js +6 -0
- langflow/frontend/assets/church-DpYoZOhe.js +6 -0
- langflow/frontend/assets/cigarette-BmmVmlkc.js +6 -0
- langflow/frontend/assets/cigarette-off-CIEgMxHs.js +6 -0
- langflow/frontend/assets/circle-alert-CGmUq1ya.js +6 -0
- langflow/frontend/assets/circle-arrow-down-8jMDMeCm.js +6 -0
- langflow/frontend/assets/circle-arrow-left-CWYEEHDb.js +6 -0
- langflow/frontend/assets/circle-arrow-out-down-left-PqJt80DA.js +6 -0
- langflow/frontend/assets/circle-arrow-out-down-right-Bo9MkoPr.js +6 -0
- langflow/frontend/assets/circle-arrow-out-up-left-Bc0KGGYv.js +6 -0
- langflow/frontend/assets/circle-arrow-out-up-right-ByDZT4Rk.js +6 -0
- langflow/frontend/assets/circle-arrow-right-HbEOzhU9.js +6 -0
- langflow/frontend/assets/circle-arrow-up-ytUDzbm6.js +6 -0
- langflow/frontend/assets/circle-check-big-CXyZID9v.js +6 -0
- langflow/frontend/assets/circle-check-pEV54vM8.js +6 -0
- langflow/frontend/assets/circle-chevron-down-DS_rpf-8.js +6 -0
- langflow/frontend/assets/circle-chevron-left-CKeX3Rs-.js +6 -0
- langflow/frontend/assets/circle-chevron-right-DCI9ueTi.js +6 -0
- langflow/frontend/assets/circle-chevron-up-CptWpWQz.js +6 -0
- langflow/frontend/assets/circle-dashed-BYSh0yLh.js +6 -0
- langflow/frontend/assets/circle-divide-CaJ8BhKC.js +6 -0
- langflow/frontend/assets/circle-dollar-sign-bP6otW6i.js +6 -0
- langflow/frontend/assets/circle-dot-Dm-xR7J-.js +6 -0
- langflow/frontend/assets/circle-dot-dashed-DgOLrW-Y.js +6 -0
- langflow/frontend/assets/circle-ellipsis-CyuQbkx5.js +6 -0
- langflow/frontend/assets/circle-equal-ssfZnjeF.js +6 -0
- langflow/frontend/assets/circle-fading-arrow-up-CySl1dVh.js +6 -0
- langflow/frontend/assets/circle-fading-plus-DMkF1waP.js +6 -0
- langflow/frontend/assets/circle-gauge-BGrOst9L.js +6 -0
- langflow/frontend/assets/circle-help-CdMXDZFr.js +6 -0
- langflow/frontend/assets/circle-minus-DXLI43-p.js +6 -0
- langflow/frontend/assets/circle-off-C0JmuYH0.js +6 -0
- langflow/frontend/assets/circle-parking-CaoT_oV9.js +6 -0
- langflow/frontend/assets/circle-parking-off-Wl6mU15R.js +6 -0
- langflow/frontend/assets/circle-pause-nra2vq3x.js +6 -0
- langflow/frontend/assets/circle-percent-BtjKjrfI.js +6 -0
- langflow/frontend/assets/circle-play-BE-c8K8S.js +6 -0
- langflow/frontend/assets/circle-plus-PzFpxIZH.js +6 -0
- langflow/frontend/assets/circle-power-Ha2F1tSB.js +6 -0
- langflow/frontend/assets/circle-slash-2-DHcrnWlR.js +6 -0
- langflow/frontend/assets/circle-slash-CA-S0W4g.js +6 -0
- langflow/frontend/assets/circle-small-BvhryrIK.js +6 -0
- langflow/frontend/assets/circle-stop-Ct35yBZk.js +6 -0
- langflow/frontend/assets/circle-user-CPz8bqCl.js +6 -0
- langflow/frontend/assets/circle-user-round-yXIR-WgU.js +6 -0
- langflow/frontend/assets/circuit-board-CVkWlM5E.js +6 -0
- langflow/frontend/assets/citrus-BZCxNd7O.js +6 -0
- langflow/frontend/assets/clapperboard-dK4xZgsP.js +6 -0
- langflow/frontend/assets/clipboard-Ds5Z07sv.js +6 -0
- langflow/frontend/assets/clipboard-check-CT7rgWE7.js +6 -0
- langflow/frontend/assets/clipboard-copy-7ubC4Yza.js +6 -0
- langflow/frontend/assets/clipboard-list-o0oDhA77.js +6 -0
- langflow/frontend/assets/clipboard-minus-0Tz_adOm.js +6 -0
- langflow/frontend/assets/clipboard-paste-CoL1xZzr.js +6 -0
- langflow/frontend/assets/clipboard-pen-DuFR5bFR.js +6 -0
- langflow/frontend/assets/clipboard-pen-line-DGQtHbq3.js +6 -0
- langflow/frontend/assets/clipboard-plus-Y_fHUXMT.js +6 -0
- langflow/frontend/assets/clipboard-type-Du6tDpB5.js +6 -0
- langflow/frontend/assets/clipboard-x-CXlHspQq.js +6 -0
- langflow/frontend/assets/clock-1-Cy6_CrM-.js +6 -0
- langflow/frontend/assets/clock-10-DsU4PSzZ.js +6 -0
- langflow/frontend/assets/clock-11-DW5wXcwz.js +6 -0
- langflow/frontend/assets/clock-12-DRROOWaF.js +6 -0
- langflow/frontend/assets/clock-2-BYx-WvG0.js +6 -0
- langflow/frontend/assets/clock-3-BuBfWBH5.js +6 -0
- langflow/frontend/assets/clock-4-YZVu0Ndv.js +6 -0
- langflow/frontend/assets/clock-4ZjirP4v.js +6 -0
- langflow/frontend/assets/clock-5-OFWQOHb4.js +6 -0
- langflow/frontend/assets/clock-6-DxeICftX.js +6 -0
- langflow/frontend/assets/clock-7-CXQOXN6H.js +6 -0
- langflow/frontend/assets/clock-8-3KkUcd3O.js +6 -0
- langflow/frontend/assets/clock-9-6wbf25s1.js +6 -0
- langflow/frontend/assets/clock-alert-D452LIEg.js +6 -0
- langflow/frontend/assets/clock-arrow-down-TZUf1BSr.js +6 -0
- langflow/frontend/assets/clock-arrow-up-FXv7ULpb.js +6 -0
- langflow/frontend/assets/clock-fading-Da23qbqo.js +6 -0
- langflow/frontend/assets/cloud-Bo7mxJI_.js +6 -0
- langflow/frontend/assets/cloud-alert-BS8A9duL.js +6 -0
- langflow/frontend/assets/cloud-cog-Dpz4nFHS.js +6 -0
- langflow/frontend/assets/cloud-download-BVDMyr-G.js +6 -0
- langflow/frontend/assets/cloud-drizzle-BF3Y0HIk.js +6 -0
- langflow/frontend/assets/cloud-fog-B36RLGg6.js +6 -0
- langflow/frontend/assets/cloud-hail-CIDuu6t8.js +6 -0
- langflow/frontend/assets/cloud-lightning-CAi65H2c.js +6 -0
- langflow/frontend/assets/cloud-moon-qTvrUE7I.js +6 -0
- langflow/frontend/assets/cloud-moon-rain-ow_c2stP.js +6 -0
- langflow/frontend/assets/cloud-off-BLZed7la.js +6 -0
- langflow/frontend/assets/cloud-rain-CkjUfBVa.js +6 -0
- langflow/frontend/assets/cloud-rain-wind-B8R8wlV5.js +6 -0
- langflow/frontend/assets/cloud-snow-jnovgErB.js +6 -0
- langflow/frontend/assets/cloud-sun-Bfiu6mlL.js +6 -0
- langflow/frontend/assets/cloud-sun-rain-DHrnuDTE.js +6 -0
- langflow/frontend/assets/cloud-upload-E5DtpyCY.js +6 -0
- langflow/frontend/assets/cloudy-DpXNakKX.js +6 -0
- langflow/frontend/assets/clover-CSiWVDIr.js +6 -0
- langflow/frontend/assets/club-BwR217MS.js +6 -0
- langflow/frontend/assets/code-xml-DlFYVj3F.js +6 -0
- langflow/frontend/assets/codepen-UiUQU8WH.js +6 -0
- langflow/frontend/assets/codesandbox-B_mdLC3X.js +6 -0
- langflow/frontend/assets/coffee-DikHS02J.js +6 -0
- langflow/frontend/assets/cog-D2FSybxc.js +6 -0
- langflow/frontend/assets/coins-B3Ya8Atq.js +6 -0
- langflow/frontend/assets/columns-2-Drto25WB.js +6 -0
- langflow/frontend/assets/columns-3-CmrffVop.js +6 -0
- langflow/frontend/assets/columns-3-cog-CoWf_Nd8.js +6 -0
- langflow/frontend/assets/columns-4-H_EZ1mDg.js +6 -0
- langflow/frontend/assets/combine-mDtTaynV.js +6 -0
- langflow/frontend/assets/command-DSyz5JVi.js +6 -0
- langflow/frontend/assets/compass-BUS0JqW-.js +6 -0
- langflow/frontend/assets/component-CfzKr799.js +6 -0
- langflow/frontend/assets/computer-CN82ro8w.js +6 -0
- langflow/frontend/assets/concierge-bell-ByYUTkOH.js +6 -0
- langflow/frontend/assets/cone-D28CyZL2.js +6 -0
- langflow/frontend/assets/construction-BXaUJNkf.js +6 -0
- langflow/frontend/assets/contact-BODZSa_7.js +6 -0
- langflow/frontend/assets/contact-round-vAysxw5u.js +6 -0
- langflow/frontend/assets/container-i-a2gr02.js +6 -0
- langflow/frontend/assets/contrast-CbcHXjip.js +6 -0
- langflow/frontend/assets/cookie-hLfPjk6N.js +6 -0
- langflow/frontend/assets/cooking-pot-B4uLRrHG.js +6 -0
- langflow/frontend/assets/copy-4ZcB4prM.js +6 -0
- langflow/frontend/assets/copy-check-CUGgeRgc.js +6 -0
- langflow/frontend/assets/copy-minus-CB5xeyvB.js +6 -0
- langflow/frontend/assets/copy-plus-B8G2k-oB.js +6 -0
- langflow/frontend/assets/copy-slash-5Ap4tA3k.js +6 -0
- langflow/frontend/assets/copy-x-BhfHJzxP.js +6 -0
- langflow/frontend/assets/copyleft-CXRD8E9w.js +6 -0
- langflow/frontend/assets/copyright-BiA3grV6.js +6 -0
- langflow/frontend/assets/corner-down-left-ClJMDHI0.js +6 -0
- langflow/frontend/assets/corner-down-right-DCRPuYSm.js +6 -0
- langflow/frontend/assets/corner-left-down-BvS0G4W9.js +6 -0
- langflow/frontend/assets/corner-left-up-DWHo1WXV.js +6 -0
- langflow/frontend/assets/corner-right-down-BBB10evG.js +6 -0
- langflow/frontend/assets/corner-right-up-DXbv20S0.js +6 -0
- langflow/frontend/assets/corner-up-left-DomYLrA5.js +6 -0
- langflow/frontend/assets/corner-up-right-DEtvY6ys.js +6 -0
- langflow/frontend/assets/cpu-Dh88Q9fD.js +6 -0
- langflow/frontend/assets/creative-commons-BAe3nwZQ.js +6 -0
- langflow/frontend/assets/credit-card-DaB3cpBZ.js +6 -0
- langflow/frontend/assets/croissant-D96TGpzu.js +6 -0
- langflow/frontend/assets/crop-C8FxaeL1.js +6 -0
- langflow/frontend/assets/cross-5bdVltt9.js +6 -0
- langflow/frontend/assets/crosshair-CyZbfDct.js +6 -0
- langflow/frontend/assets/crown-BZnnOYwP.js +6 -0
- langflow/frontend/assets/cuboid-BqWogU5y.js +6 -0
- langflow/frontend/assets/cup-soda-Dz7NtIvF.js +6 -0
- langflow/frontend/assets/currency-5tPdc9Zh.js +6 -0
- langflow/frontend/assets/cylinder-B4mmn8ns.js +6 -0
- langflow/frontend/assets/dam-C2fbdkPV.js +6 -0
- langflow/frontend/assets/database-C8DmijcH.js +6 -0
- langflow/frontend/assets/database-backup-71ce-aHZ.js +6 -0
- langflow/frontend/assets/database-zap-DzH5GBmm.js +6 -0
- langflow/frontend/assets/decimals-arrow-left-DlR2OMIu.js +6 -0
- langflow/frontend/assets/decimals-arrow-right-Dx4ObfYv.js +6 -0
- langflow/frontend/assets/delete-BHxYtCY6.js +6 -0
- langflow/frontend/assets/dessert-CfOk8Cm8.js +6 -0
- langflow/frontend/assets/diameter-PFK47COt.js +6 -0
- langflow/frontend/assets/diamond-D2hRkW3R.js +6 -0
- langflow/frontend/assets/diamond-minus-BmmkztHK.js +6 -0
- langflow/frontend/assets/diamond-percent-Um3urkva.js +6 -0
- langflow/frontend/assets/diamond-plus-BctFfXFQ.js +6 -0
- langflow/frontend/assets/dice-1-iAashtM4.js +6 -0
- langflow/frontend/assets/dice-2-DYFUv-fQ.js +6 -0
- langflow/frontend/assets/dice-3-BKhH_7UE.js +6 -0
- langflow/frontend/assets/dice-4-DXL3N_4x.js +6 -0
- langflow/frontend/assets/dice-5-DnplP8dS.js +6 -0
- langflow/frontend/assets/dice-6-B60nh8vo.js +6 -0
- langflow/frontend/assets/dices-Dhvt0dI6.js +6 -0
- langflow/frontend/assets/diff-C0ITnBBr.js +6 -0
- langflow/frontend/assets/disc-2-BuaKHZRj.js +6 -0
- langflow/frontend/assets/disc-3-NMQNF-ZM.js +6 -0
- langflow/frontend/assets/disc-album-BcLrWjhq.js +6 -0
- langflow/frontend/assets/disc-yALpXpks.js +6 -0
- langflow/frontend/assets/divide-Dh7ujBOW.js +6 -0
- langflow/frontend/assets/dna-Bjifao3X.js +6 -0
- langflow/frontend/assets/dna-off-BUJlgzYb.js +6 -0
- langflow/frontend/assets/dock-B7EXITnl.js +6 -0
- langflow/frontend/assets/dog-B7U04mka.js +6 -0
- langflow/frontend/assets/dollar-sign-BMgFrD98.js +6 -0
- langflow/frontend/assets/donut-Bi1ebPXI.js +6 -0
- langflow/frontend/assets/door-closed-CSJ7S_5P.js +6 -0
- langflow/frontend/assets/door-open-DETl8Hsq.js +6 -0
- langflow/frontend/assets/dot-D3t9y3Ei.js +6 -0
- langflow/frontend/assets/download-QVQHjJbn.js +6 -0
- langflow/frontend/assets/drafting-compass-C_G_-w6o.js +6 -0
- langflow/frontend/assets/drama-C3d5snUt.js +6 -0
- langflow/frontend/assets/dribbble-gc8Hu2iM.js +6 -0
- langflow/frontend/assets/drill-C-_x7kVx.js +6 -0
- langflow/frontend/assets/droplet-CGpBURa1.js +6 -0
- langflow/frontend/assets/droplet-off-Pzyqut0G.js +6 -0
- langflow/frontend/assets/droplets-DUbFcMnM.js +6 -0
- langflow/frontend/assets/drum-Dc54lUwD.js +6 -0
- langflow/frontend/assets/drumstick-HKILk0Ot.js +6 -0
- langflow/frontend/assets/dumbbell-CW1875td.js +6 -0
- langflow/frontend/assets/ear-0Ch7ti8X.js +6 -0
- langflow/frontend/assets/ear-off-DraFLzw1.js +6 -0
- langflow/frontend/assets/earth-CFLvTzOE.js +6 -0
- langflow/frontend/assets/earth-lock-DnZmTPsn.js +6 -0
- langflow/frontend/assets/eclipse-CUbD3Qmh.js +6 -0
- langflow/frontend/assets/egg-Cbjn6S80.js +6 -0
- langflow/frontend/assets/egg-fried-CdBx5g4H.js +6 -0
- langflow/frontend/assets/egg-off-CxJ1u2w-.js +6 -0
- langflow/frontend/assets/ellipsis-BlbxdKlT.js +6 -0
- langflow/frontend/assets/ellipsis-vertical-COL6TUrg.js +6 -0
- langflow/frontend/assets/equal-BAjxFHm9.js +6 -0
- langflow/frontend/assets/equal-approximately-C_CIwv4D.js +6 -0
- langflow/frontend/assets/equal-not-Do3tztaX.js +6 -0
- langflow/frontend/assets/eraser-DF0f0uKS.js +6 -0
- langflow/frontend/assets/ethernet-port-WBTFOR3g.js +6 -0
- langflow/frontend/assets/euro-CEzliHoa.js +6 -0
- langflow/frontend/assets/expand-CuqWvmGR.js +6 -0
- langflow/frontend/assets/eye-BGqdGvP5.js +6 -0
- langflow/frontend/assets/eye-closed-DLJqwgv0.js +6 -0
- langflow/frontend/assets/eye-off-KDImmRkJ.js +6 -0
- langflow/frontend/assets/facebook-CYcXd9Iu.js +6 -0
- langflow/frontend/assets/factory-BWOF7gQH.js +6 -0
- langflow/frontend/assets/fan-CbdBZoHh.js +6 -0
- langflow/frontend/assets/fast-forward-nZ4kgGaR.js +6 -0
- langflow/frontend/assets/feather-Bpthyo1u.js +6 -0
- langflow/frontend/assets/fence-Cme7hk6F.js +6 -0
- langflow/frontend/assets/ferris-wheel-jGi85-Eg.js +6 -0
- langflow/frontend/assets/figma-Cjv8Tt79.js +6 -0
- langflow/frontend/assets/file-archive-Dly_3YF2.js +6 -0
- langflow/frontend/assets/file-audio-2-xj82e07p.js +6 -0
- langflow/frontend/assets/file-audio-9pU0xORZ.js +6 -0
- langflow/frontend/assets/file-axis-3d-BnYGLTM3.js +6 -0
- langflow/frontend/assets/file-badge-2-D0HG_ejF.js +6 -0
- langflow/frontend/assets/file-badge-BuHpQjAI.js +6 -0
- langflow/frontend/assets/file-box-D1VeNtpk.js +6 -0
- langflow/frontend/assets/file-chart-column-CnCcp9LE.js +6 -0
- langflow/frontend/assets/file-chart-column-increasing-C1rCConI.js +6 -0
- langflow/frontend/assets/file-chart-line-hgrAAx_4.js +6 -0
- langflow/frontend/assets/file-chart-pie-Dib4XDbW.js +6 -0
- langflow/frontend/assets/file-check-2-rLTogQx4.js +6 -0
- langflow/frontend/assets/file-check-DsnWAUT2.js +6 -0
- langflow/frontend/assets/file-clock---MrJeyO.js +6 -0
- langflow/frontend/assets/file-code-2-BdBTEdln.js +6 -0
- langflow/frontend/assets/file-code-BSD6ungW.js +6 -0
- langflow/frontend/assets/file-cog-BZQy-ba9.js +6 -0
- langflow/frontend/assets/file-dKQZYwuH.js +6 -0
- langflow/frontend/assets/file-diff-CH7EDtJC.js +6 -0
- langflow/frontend/assets/file-digit-D7_d-0CW.js +6 -0
- langflow/frontend/assets/file-down-Dt_7usLA.js +6 -0
- langflow/frontend/assets/file-heart-DT8xufAg.js +6 -0
- langflow/frontend/assets/file-image-DxvKruYd.js +6 -0
- langflow/frontend/assets/file-input-DxHp4Alf.js +6 -0
- langflow/frontend/assets/file-json-1-XvNhLQ.js +6 -0
- langflow/frontend/assets/file-json-2-DRiAa60m.js +6 -0
- langflow/frontend/assets/file-key-2-MRdv5jhW.js +6 -0
- langflow/frontend/assets/file-key-BzyIQNd6.js +6 -0
- langflow/frontend/assets/file-lock-2-Bkidiloq.js +6 -0
- langflow/frontend/assets/file-lock-D7DhBd2i.js +6 -0
- langflow/frontend/assets/file-minus-2-DyXNKy2T.js +6 -0
- langflow/frontend/assets/file-minus-DF3g9dIu.js +6 -0
- langflow/frontend/assets/file-music-DqiM-iAp.js +6 -0
- langflow/frontend/assets/file-output-D_Wg1CeJ.js +6 -0
- langflow/frontend/assets/file-pen-Bxm1mc6w.js +6 -0
- langflow/frontend/assets/file-pen-line-C4OMd3fE.js +6 -0
- langflow/frontend/assets/file-plus-2-kLdziRLd.js +6 -0
- langflow/frontend/assets/file-plus-CTa-OXIp.js +6 -0
- langflow/frontend/assets/file-question-CfxvLxIm.js +6 -0
- langflow/frontend/assets/file-scan-pgmy9fvz.js +6 -0
- langflow/frontend/assets/file-search-2-BwkJ5R6W.js +6 -0
- langflow/frontend/assets/file-search-DgBAyK6K.js +6 -0
- langflow/frontend/assets/file-sliders-B_OpLmha.js +6 -0
- langflow/frontend/assets/file-spreadsheet-DOtP8Gg9.js +6 -0
- langflow/frontend/assets/file-stack-DgDtpiMd.js +6 -0
- langflow/frontend/assets/file-symlink-vbXhuo8H.js +6 -0
- langflow/frontend/assets/file-terminal-DVvboZq6.js +6 -0
- langflow/frontend/assets/file-text-DGC7sdsW.js +6 -0
- langflow/frontend/assets/file-type-2-CfUahUxh.js +6 -0
- langflow/frontend/assets/file-type-BfSvTYPv.js +6 -0
- langflow/frontend/assets/file-up-Bvvikwm4.js +6 -0
- langflow/frontend/assets/file-user-DaUm7IPn.js +6 -0
- langflow/frontend/assets/file-video-2-DKvfIpuU.js +6 -0
- langflow/frontend/assets/file-video-Bu3OwNfA.js +6 -0
- langflow/frontend/assets/file-volume-2-9TCupQJ0.js +6 -0
- langflow/frontend/assets/file-volume-B79HFEYG.js +6 -0
- langflow/frontend/assets/file-warning-ox5Dn4wi.js +6 -0
- langflow/frontend/assets/file-x-2-BIUsvjws.js +6 -0
- langflow/frontend/assets/file-x-BbofT8LN.js +6 -0
- langflow/frontend/assets/files-DDq74A_H.js +6 -0
- langflow/frontend/assets/film-Cc-5l2Ug.js +6 -0
- langflow/frontend/assets/fingerprint-Bk43daa2.js +6 -0
- langflow/frontend/assets/fire-extinguisher-BpYWRcDE.js +6 -0
- langflow/frontend/assets/fish-CcgTXDr0.js +6 -0
- langflow/frontend/assets/fish-off-CTSoMjtL.js +6 -0
- langflow/frontend/assets/fish-symbol-4qaq4eUT.js +6 -0
- langflow/frontend/assets/flag-off-B6WIJPdA.js +6 -0
- langflow/frontend/assets/flag-s8A97f1C.js +6 -0
- langflow/frontend/assets/flag-triangle-left-Cb13gKSR.js +6 -0
- langflow/frontend/assets/flag-triangle-right-B2eU89J-.js +6 -0
- langflow/frontend/assets/flame-BdBUc1r8.js +6 -0
- langflow/frontend/assets/flame-kindling-B7n5jjlj.js +6 -0
- langflow/frontend/assets/flashlight-fNk35AiJ.js +6 -0
- langflow/frontend/assets/flashlight-off-D_RazXUc.js +6 -0
- langflow/frontend/assets/flask-conical-BGnLLMGf.js +6 -0
- langflow/frontend/assets/flask-conical-off-CnQAoWVR.js +6 -0
- langflow/frontend/assets/flask-round-fIBIuEdL.js +6 -0
- langflow/frontend/assets/flip-horizontal-2-CrrY3ni3.js +6 -0
- langflow/frontend/assets/flip-horizontal-hx2JiivV.js +6 -0
- langflow/frontend/assets/flip-vertical-2-DwP6Bzum.js +6 -0
- langflow/frontend/assets/flip-vertical-DcWXhqJt.js +6 -0
- langflow/frontend/assets/flower-2-BVqurWNh.js +6 -0
- langflow/frontend/assets/flower-DJSvFbmv.js +6 -0
- langflow/frontend/assets/focus-DdtKbmAh.js +6 -0
- langflow/frontend/assets/fold-horizontal-ZEKAo_f5.js +6 -0
- langflow/frontend/assets/fold-vertical-tn9KV2gT.js +6 -0
- langflow/frontend/assets/folder-D65_ctxW.js +6 -0
- langflow/frontend/assets/folder-archive-CSZUIv0L.js +6 -0
- langflow/frontend/assets/folder-check-DAD0Wbb0.js +6 -0
- langflow/frontend/assets/folder-clock-DKBSEbt1.js +6 -0
- langflow/frontend/assets/folder-closed-Da_IyQl-.js +6 -0
- langflow/frontend/assets/folder-code-BjK12yQl.js +6 -0
- langflow/frontend/assets/folder-cog-gMICaCve.js +6 -0
- langflow/frontend/assets/folder-dot-YKXGT1nq.js +6 -0
- langflow/frontend/assets/folder-down-U1ORGhse.js +6 -0
- langflow/frontend/assets/folder-git-2-CbITkZ8X.js +6 -0
- langflow/frontend/assets/folder-git-DqiNhlgf.js +6 -0
- langflow/frontend/assets/folder-heart-D3Oj_-2a.js +6 -0
- langflow/frontend/assets/folder-input-nAAMicET.js +6 -0
- langflow/frontend/assets/folder-kanban-CSdvrbDp.js +6 -0
- langflow/frontend/assets/folder-key-DLXTk8pJ.js +6 -0
- langflow/frontend/assets/folder-lock-WUABa7Oe.js +6 -0
- langflow/frontend/assets/folder-minus-B5xGdFAn.js +6 -0
- langflow/frontend/assets/folder-open-Bgv6WmI3.js +6 -0
- langflow/frontend/assets/folder-open-dot-DC2HgEPN.js +6 -0
- langflow/frontend/assets/folder-output-DwyLKy4X.js +6 -0
- langflow/frontend/assets/folder-pen-tcF02hyr.js +6 -0
- langflow/frontend/assets/folder-plus-B9_vaYDU.js +6 -0
- langflow/frontend/assets/folder-root-VwCr5OUC.js +6 -0
- langflow/frontend/assets/folder-search-2-BfQXzu7L.js +6 -0
- langflow/frontend/assets/folder-search-paV45aMl.js +6 -0
- langflow/frontend/assets/folder-symlink-COgmF5VW.js +6 -0
- langflow/frontend/assets/folder-sync-DrURUnNI.js +6 -0
- langflow/frontend/assets/folder-tree-CdICwYAj.js +6 -0
- langflow/frontend/assets/folder-up-D4WwIsp_.js +6 -0
- langflow/frontend/assets/folder-x-J2_4fdUF.js +6 -0
- langflow/frontend/assets/folders-7Xpsj7jV.js +6 -0
- langflow/frontend/assets/footprints-DVRSLXMk.js +6 -0
- langflow/frontend/assets/forklift-VMigNBFJ.js +6 -0
- langflow/frontend/assets/forward-CE54kWRO.js +6 -0
- langflow/frontend/assets/frame-BdXE1XDm.js +6 -0
- langflow/frontend/assets/framer-CA5fZhO7.js +6 -0
- langflow/frontend/assets/frown-oWG9DrD9.js +6 -0
- langflow/frontend/assets/fuel-ClmPVHZi.js +6 -0
- langflow/frontend/assets/fullscreen-DZIeVmwf.js +6 -0
- langflow/frontend/assets/funnel-DXZIwh3S.js +6 -0
- langflow/frontend/assets/funnel-plus-I5y8cnUa.js +6 -0
- langflow/frontend/assets/funnel-x-BRv8lJ4W.js +6 -0
- langflow/frontend/assets/gallery-horizontal-CTWQRiwE.js +6 -0
- langflow/frontend/assets/gallery-horizontal-end-CgCNLcQc.js +6 -0
- langflow/frontend/assets/gallery-thumbnails-DN-r2ZhB.js +6 -0
- langflow/frontend/assets/gallery-vertical-BsYEUvUD.js +6 -0
- langflow/frontend/assets/gallery-vertical-end-B3eXPsrk.js +6 -0
- langflow/frontend/assets/gamepad-2-Dw8h7uZr.js +6 -0
- langflow/frontend/assets/gamepad-CCft0e71.js +6 -0
- langflow/frontend/assets/gauge-mS-OblJR.js +6 -0
- langflow/frontend/assets/gavel-CupBXWg7.js +6 -0
- langflow/frontend/assets/gem-BUEaPolw.js +6 -0
- langflow/frontend/assets/ghost-3ME0nRk0.js +6 -0
- langflow/frontend/assets/gift-BtPeSI-o.js +6 -0
- langflow/frontend/assets/git-branch-D6kfZJaL.js +6 -0
- langflow/frontend/assets/git-branch-plus-3njkIJRK.js +6 -0
- langflow/frontend/assets/git-commit-horizontal-CFXGXdxi.js +6 -0
- langflow/frontend/assets/git-commit-vertical-CodAcvyH.js +6 -0
- langflow/frontend/assets/git-compare-DFPGVUFR.js +6 -0
- langflow/frontend/assets/git-compare-arrows-G2uE17iL.js +6 -0
- langflow/frontend/assets/git-fork-QJnff6sK.js +6 -0
- langflow/frontend/assets/git-graph-BucU4GOG.js +6 -0
- langflow/frontend/assets/git-merge-B0MmNtRI.js +6 -0
- langflow/frontend/assets/git-pull-request-DSB5VAZk.js +6 -0
- langflow/frontend/assets/git-pull-request-arrow-CmrmZgBw.js +6 -0
- langflow/frontend/assets/git-pull-request-closed-IdMIAzQ5.js +6 -0
- langflow/frontend/assets/git-pull-request-create-BaiY-zu7.js +6 -0
- langflow/frontend/assets/git-pull-request-create-arrow-Boj2Q1Ag.js +6 -0
- langflow/frontend/assets/git-pull-request-draft-BrbDUuPH.js +6 -0
- langflow/frontend/assets/github-B_uKXLGN.js +6 -0
- langflow/frontend/assets/gitlab-Dssfz-7b.js +6 -0
- langflow/frontend/assets/glass-water-DctUWtdy.js +6 -0
- langflow/frontend/assets/glasses-CJUqREJR.js +6 -0
- langflow/frontend/assets/globe-CW-N7YFg.js +6 -0
- langflow/frontend/assets/globe-lock-DmWaI8LB.js +6 -0
- langflow/frontend/assets/goal-C-A92vzq.js +6 -0
- langflow/frontend/assets/grab-DXNtbqNu.js +6 -0
- langflow/frontend/assets/graduation-cap-BvKxds3-.js +6 -0
- langflow/frontend/assets/grape-vxg-QmAa.js +6 -0
- langflow/frontend/assets/grid-2x2-Bda9xvw8.js +6 -0
- langflow/frontend/assets/grid-2x2-check-Cq4oXCG_.js +6 -0
- langflow/frontend/assets/grid-2x2-plus-DlbSyK4w.js +6 -0
- langflow/frontend/assets/grid-2x2-x-COkPyLW2.js +6 -0
- langflow/frontend/assets/grid-3x3-P5m98H0I.js +6 -0
- langflow/frontend/assets/grip-C8l1seJj.js +6 -0
- langflow/frontend/assets/grip-horizontal-C8xf9EqD.js +6 -0
- langflow/frontend/assets/grip-vertical-Dp8b3qVy.js +6 -0
- langflow/frontend/assets/group-NMh_xbhf.js +6 -0
- langflow/frontend/assets/guitar-Dohq_76_.js +6 -0
- langflow/frontend/assets/ham-CmDFmjBB.js +6 -0
- langflow/frontend/assets/hammer-_CGQRxth.js +6 -0
- langflow/frontend/assets/hand-CHd9erzR.js +6 -0
- langflow/frontend/assets/hand-coins-BhEGokvW.js +6 -0
- langflow/frontend/assets/hand-heart-7Oby7SAS.js +6 -0
- langflow/frontend/assets/hand-helping-CXMrHB_F.js +6 -0
- langflow/frontend/assets/hand-metal-C6MrIW5O.js +6 -0
- langflow/frontend/assets/hand-platter-Cbs2yD55.js +6 -0
- langflow/frontend/assets/handshake-DnW2f3e-.js +6 -0
- langflow/frontend/assets/hard-drive-B5MqVYDD.js +6 -0
- langflow/frontend/assets/hard-drive-download-DQm3Jx-J.js +6 -0
- langflow/frontend/assets/hard-drive-upload-UyeC7okZ.js +6 -0
- langflow/frontend/assets/hard-hat-DuBdE6ld.js +6 -0
- langflow/frontend/assets/hash-41NgbFLv.js +6 -0
- langflow/frontend/assets/haze-BoMT93pB.js +6 -0
- langflow/frontend/assets/hdmi-port-CKp8ZzL2.js +6 -0
- langflow/frontend/assets/heading-1-OsGkodnl.js +6 -0
- langflow/frontend/assets/heading-2-ByrEnN6x.js +6 -0
- langflow/frontend/assets/heading-3-C5NsklPz.js +6 -0
- langflow/frontend/assets/heading-4-Bhl4hzbe.js +6 -0
- langflow/frontend/assets/heading-5-DBI6pawb.js +6 -0
- langflow/frontend/assets/heading-6-DfxwQfT7.js +6 -0
- langflow/frontend/assets/heading-zd0OZwON.js +6 -0
- langflow/frontend/assets/headphone-off-mURIsBWJ.js +6 -0
- langflow/frontend/assets/headphones-BFe-lgHV.js +6 -0
- langflow/frontend/assets/headset-Bwf3fpi7.js +6 -0
- langflow/frontend/assets/heart-Dq1D84te.js +6 -0
- langflow/frontend/assets/heart-crack-CG--JiGk.js +6 -0
- langflow/frontend/assets/heart-handshake-oDkkGSno.js +6 -0
- langflow/frontend/assets/heart-minus-CCNRC1c0.js +6 -0
- langflow/frontend/assets/heart-off-BAPYXlds.js +6 -0
- langflow/frontend/assets/heart-plus-CvC3EhpP.js +6 -0
- langflow/frontend/assets/heart-pulse-DF-ORHct.js +6 -0
- langflow/frontend/assets/heater-eJfnwYYQ.js +6 -0
- langflow/frontend/assets/hexagon-BcDEx4Wb.js +6 -0
- langflow/frontend/assets/highlighter-j24gyp2u.js +6 -0
- langflow/frontend/assets/history-myIN6jVF.js +6 -0
- langflow/frontend/assets/hop-DSJJg5IW.js +6 -0
- langflow/frontend/assets/hop-off-CDIpY23y.js +6 -0
- langflow/frontend/assets/hospital-C2kjtT3N.js +6 -0
- langflow/frontend/assets/hotel-BiI9qopK.js +6 -0
- langflow/frontend/assets/hourglass-DdgptFb-.js +6 -0
- langflow/frontend/assets/house-D9nykhn2.js +6 -0
- langflow/frontend/assets/house-plug-CE2Jg8bl.js +6 -0
- langflow/frontend/assets/house-plus-DT80fPIW.js +6 -0
- langflow/frontend/assets/house-wifi-BB9Ytt9Q.js +6 -0
- langflow/frontend/assets/ice-cream-bowl-BtGfB4bc.js +6 -0
- langflow/frontend/assets/ice-cream-cone-q1HuFU8K.js +6 -0
- langflow/frontend/assets/id-card-CT13zAKZ.js +6 -0
- langflow/frontend/assets/image-D0ZjsAQs.js +6 -0
- langflow/frontend/assets/image-down-Du2TxYUV.js +6 -0
- langflow/frontend/assets/image-minus-DtJgK1SX.js +6 -0
- langflow/frontend/assets/image-off-CJM0L0Pm.js +6 -0
- langflow/frontend/assets/image-play-rO_sigy3.js +6 -0
- langflow/frontend/assets/image-plus-BtHXKAhF.js +6 -0
- langflow/frontend/assets/image-up-BedomcGK.js +6 -0
- langflow/frontend/assets/image-upscale-CTytoZQ7.js +6 -0
- langflow/frontend/assets/images-DQdzA8PB.js +6 -0
- langflow/frontend/assets/import-BSj_tVee.js +6 -0
- langflow/frontend/assets/inbox-CLdA6iO6.js +6 -0
- langflow/frontend/assets/indent-decrease-eBOWpxsA.js +6 -0
- langflow/frontend/assets/indent-increase-PUZyQsBH.js +6 -0
- langflow/frontend/assets/index--3O3NqKN.js +1 -0
- langflow/frontend/assets/index--IHrpBoo.js +1 -0
- langflow/frontend/assets/index-2kWQOuop.js +1 -0
- langflow/frontend/assets/index-5KYiBJ4r.js +1 -0
- langflow/frontend/assets/index-7l4lKqCJ.js +1 -0
- langflow/frontend/assets/index-8zD_EsG6.js +1 -0
- langflow/frontend/assets/index-9-TuTYSh.js +1 -0
- langflow/frontend/assets/index-Ayc8Z_Hb.js +1 -0
- langflow/frontend/assets/index-B0jfUxmL.js +1 -0
- langflow/frontend/assets/index-B12iJWz4.js +1 -0
- langflow/frontend/assets/index-B2tpdHrx.js +1 -0
- langflow/frontend/assets/index-B5ecjJUs.js +1 -0
- langflow/frontend/assets/index-B8V3us4q.js +1 -0
- langflow/frontend/assets/index-B94OQ3jt.js +1 -0
- langflow/frontend/assets/index-B9ommOZl.js +1 -0
- langflow/frontend/assets/index-BCAS0lQ_.js +1 -0
- langflow/frontend/assets/index-BDRoIsie.js +1 -0
- langflow/frontend/assets/index-BEDcwmO-.js +1 -0
- langflow/frontend/assets/index-BG8kF-GV.js +1 -0
- langflow/frontend/assets/index-BHAQc8Wu.js +1 -0
- langflow/frontend/assets/index-BI78KkAp.js +1 -0
- langflow/frontend/assets/index-BIK_Gncf.js +1 -0
- langflow/frontend/assets/index-BIitGLYF.js +1 -0
- langflow/frontend/assets/index-BJ2E8Jz2.js +1 -0
- langflow/frontend/assets/index-BJJAM1fq.js +1 -0
- langflow/frontend/assets/index-BJvXXLH0.js +1 -0
- langflow/frontend/assets/index-BK7ASEdZ.js +1 -0
- langflow/frontend/assets/index-BL9t0aq2.js +1 -0
- langflow/frontend/assets/index-BMw6t_pn.js +1 -0
- langflow/frontend/assets/index-BN_YNwOx.js +1 -0
- langflow/frontend/assets/index-BPkpEYRa.js +1 -0
- langflow/frontend/assets/index-BPoAfmHl.js +1 -0
- langflow/frontend/assets/index-BQ4YbPOt.js +1 -0
- langflow/frontend/assets/index-BRWCSHPL.js +1 -0
- langflow/frontend/assets/index-BTIO2Hd1.js +1 -0
- langflow/frontend/assets/index-BTn9ARUB.js +13 -0
- langflow/frontend/assets/index-BVLcStRP.js +1 -0
- langflow/frontend/assets/index-BVTk2F-Y.js +1 -0
- langflow/frontend/assets/index-BVnY-2eL.js +1 -0
- langflow/frontend/assets/index-BW_0_NQR.js +1 -0
- langflow/frontend/assets/index-BYGyku6g.js +1 -0
- langflow/frontend/assets/index-BYVzErJa.js +1 -0
- langflow/frontend/assets/index-BYaZbRmc.js +1 -0
- langflow/frontend/assets/index-BYnidR2j.js +1 -0
- langflow/frontend/assets/index-B_WRaKpb.js +1 -0
- langflow/frontend/assets/index-Bbd-X_I4.js +1 -0
- langflow/frontend/assets/index-Bd02jzx4.css +1 -0
- langflow/frontend/assets/index-BebbP1_3.js +2 -0
- langflow/frontend/assets/index-BfpDvtx9.js +1 -0
- langflow/frontend/assets/index-BguOvTIt.js +1 -0
- langflow/frontend/assets/index-Bh4jFZOt.js +1 -0
- langflow/frontend/assets/index-BlbxL0_F.js +1 -0
- langflow/frontend/assets/index-BlpMuHC1.js +1 -0
- langflow/frontend/assets/index-BmILSNO1.js +1 -0
- langflow/frontend/assets/index-Bnb_9gFT.js +1 -0
- langflow/frontend/assets/index-BnhOQvim.js +1 -0
- langflow/frontend/assets/index-BpQ_FwEx.js +1 -0
- langflow/frontend/assets/index-BrhCPWHl.js +1 -0
- langflow/frontend/assets/index-Bs66S-cg.js +1 -0
- langflow/frontend/assets/index-Bt8ozu-9.js +1 -0
- langflow/frontend/assets/index-Bte_MSlg.js +21 -0
- langflow/frontend/assets/index-Bu9UBPcf.js +1 -0
- langflow/frontend/assets/index-BuWUz5Es.js +1 -0
- langflow/frontend/assets/index-BxDCY7GA.js +1 -0
- langflow/frontend/assets/index-ByYWULC4.js +1 -0
- langflow/frontend/assets/index-Bylvmlsj.js +399 -0
- langflow/frontend/assets/index-BzcJzsWn.js +1 -0
- langflow/frontend/assets/index-C6jWT2p-.js +1 -0
- langflow/frontend/assets/index-C9Y1VV1M.js +1 -0
- langflow/frontend/assets/index-C9k7xHBe.js +1 -0
- langflow/frontend/assets/index-CB1BfuBr.js +1 -0
- langflow/frontend/assets/index-CDtwENIK.js +1 -0
- langflow/frontend/assets/index-CE488wQD.js +1 -0
- langflow/frontend/assets/index-CGvfR3yr.js +1 -0
- langflow/frontend/assets/index-CHJ-CBzq.js +1 -0
- langflow/frontend/assets/index-CHZjBnIE.js +1 -0
- langflow/frontend/assets/index-CI-vC5Lq.js +1 -0
- langflow/frontend/assets/index-CIZmTxGi.js +1 -0
- langflow/frontend/assets/index-CIcq7OmA.js +1 -0
- langflow/frontend/assets/index-CKMr8E1p.js +1 -0
- langflow/frontend/assets/index-CKTmIMMn.js +1 -0
- langflow/frontend/assets/index-CKpOimEN.js +381 -0
- langflow/frontend/assets/index-CLcE4nRm.js +1 -0
- langflow/frontend/assets/index-CM1jxAtr.js +1 -0
- langflow/frontend/assets/index-CM9ccl8R.js +1 -0
- langflow/frontend/assets/index-CN1xk2bm.js +1 -0
- langflow/frontend/assets/index-CPhJ9MJ3.js +1 -0
- langflow/frontend/assets/index-CPq9Cq75.js +1 -0
- langflow/frontend/assets/index-CQLuLC1H.js +1 -0
- langflow/frontend/assets/index-CQtCkREE.js +1 -0
- langflow/frontend/assets/index-CRzDwBcv.js +1 -0
- langflow/frontend/assets/index-CSKeDy3F.js +1 -0
- langflow/frontend/assets/index-CTTFx3hy.js +1 -0
- langflow/frontend/assets/index-CWO6aLRj.js +1 -0
- langflow/frontend/assets/index-CXJx-x2V.js +1 -0
- langflow/frontend/assets/index-CY8ExIlC.js +1 -0
- langflow/frontend/assets/index-CYS-koZD.js +1 -0
- langflow/frontend/assets/index-CYlls8yU.js +1 -0
- langflow/frontend/assets/index-CZDezo23.js +1 -0
- langflow/frontend/assets/index-Cc6LQgxi.js +1 -0
- langflow/frontend/assets/index-Cea1VdoP.js +20 -0
- langflow/frontend/assets/index-Ch73zLO7.js +1 -0
- langflow/frontend/assets/index-Chvm9gnt.js +1 -0
- langflow/frontend/assets/index-CiMhzwVm.js +1 -0
- langflow/frontend/assets/index-CjIpaN28.js +1 -0
- langflow/frontend/assets/index-Cmqey3tV.js +1 -0
- langflow/frontend/assets/index-CpKrIPML.js +205 -0
- langflow/frontend/assets/index-CpXuZ5Yj.js +1 -0
- langflow/frontend/assets/index-Cql8nLGl.js +1 -0
- langflow/frontend/assets/index-Cu5di6tV.js +1 -0
- langflow/frontend/assets/index-Cy2hauYT.js +185 -0
- langflow/frontend/assets/index-CyPXGUjM.js +1 -0
- langflow/frontend/assets/index-CzVx1ZZG.js +1 -0
- langflow/frontend/assets/index-D-sbAj3-.js +767 -0
- langflow/frontend/assets/index-D0faXIRw.js +1 -0
- langflow/frontend/assets/index-D2F1nNcS.js +1 -0
- langflow/frontend/assets/index-D6rNZM8d.js +1 -0
- langflow/frontend/assets/index-D7c71Ncp.js +7323 -0
- langflow/frontend/assets/index-D7nicSdX.js +1 -0
- langflow/frontend/assets/index-D8b32AEu.js +1 -0
- langflow/frontend/assets/index-DAp88IjZ.js +1 -0
- langflow/frontend/assets/index-DBLewSdZ.js +1 -0
- langflow/frontend/assets/index-DCAYv_9J.js +1 -0
- langflow/frontend/assets/index-DCdIQCmd.js +281 -0
- langflow/frontend/assets/index-DCjaZqzk.js +1 -0
- langflow/frontend/assets/index-DFsk-5F7.js +1 -0
- langflow/frontend/assets/index-DGHIyISG.js +1 -0
- langflow/frontend/assets/index-DHr2zhC0.js +1 -0
- langflow/frontend/assets/index-DJYsexlm.js +1 -0
- langflow/frontend/assets/index-DK6ZzpFl.js +1 -0
- langflow/frontend/assets/index-DL-XWPcx.js +7 -0
- langflow/frontend/assets/index-DNRIGLMN.js +1 -0
- langflow/frontend/assets/index-DORDRALN.js +1 -0
- langflow/frontend/assets/index-DOVsIs1Y.js +1 -0
- langflow/frontend/assets/index-DOYJ_CZN.js +1 -0
- langflow/frontend/assets/index-DQvsXVLs.js +1 -0
- langflow/frontend/assets/index-DThcEP2S.js +1 -0
- langflow/frontend/assets/index-DWW4i1mS.js +1 -0
- langflow/frontend/assets/index-DZydxXk-.js +1 -0
- langflow/frontend/assets/index-Daw8xyJf.js +1 -0
- langflow/frontend/assets/index-Dc0nF4D_.js +1 -0
- langflow/frontend/assets/index-DctkFwnK.js +108 -0
- langflow/frontend/assets/index-DjCcbnqJ.js +127 -0
- langflow/frontend/assets/index-DjG319lz.js +1 -0
- langflow/frontend/assets/index-DkxwwfUL.js +1 -0
- langflow/frontend/assets/index-DlNYEnyO.js +1 -0
- langflow/frontend/assets/index-DpNGpygE.js +14 -0
- langflow/frontend/assets/index-DwGroZ5i.js +1 -0
- langflow/frontend/assets/index-DwdF4A_k.js +1 -0
- langflow/frontend/assets/index-DwupFUE1.js +1 -0
- langflow/frontend/assets/index-DyFJaxvz.js +1 -0
- langflow/frontend/assets/index-DylRhyva.js +1 -0
- langflow/frontend/assets/index-Dz6LtjFc.js +1 -0
- langflow/frontend/assets/index-E_woFm9H.js +1 -0
- langflow/frontend/assets/index-IYvFl1oN.js +1 -0
- langflow/frontend/assets/index-KWmSW1LE.js +1 -0
- langflow/frontend/assets/index-KyJaEIZu.js +495 -0
- langflow/frontend/assets/index-L2r_nVW-.js +1 -0
- langflow/frontend/assets/index-LKY1_Kuv.js +1 -0
- langflow/frontend/assets/index-LykvuH3z.js +1 -0
- langflow/frontend/assets/index-PgeGlQPr.js +1 -0
- langflow/frontend/assets/index-Pj0GaUuE.js +1 -0
- langflow/frontend/assets/index-RHN6mdhz.js +1 -0
- langflow/frontend/assets/index-T-7O_UCg.js +1 -0
- langflow/frontend/assets/index-TaFYKyCQ.js +1 -0
- langflow/frontend/assets/index-V652fUKL.js +1 -0
- langflow/frontend/assets/index-WVOTQJ09.js +1 -0
- langflow/frontend/assets/index-WuyU7hfS.js +1 -0
- langflow/frontend/assets/index-XdlnxfM1.js +1 -0
- langflow/frontend/assets/index-Zb3do5-I.js +1 -0
- langflow/frontend/assets/index-_msEUPyj.js +1 -0
- langflow/frontend/assets/index-cP7Rj7nE.js +1 -0
- langflow/frontend/assets/index-dHzQlvPn.js +1 -0
- langflow/frontend/assets/index-gItsUULG.js +1 -0
- langflow/frontend/assets/index-heRrRQYO.js +1 -0
- langflow/frontend/assets/index-iP58GKwK.js +1 -0
- langflow/frontend/assets/index-iwuC6nMx.js +1 -0
- langflow/frontend/assets/index-jONH7mX0.js +1 -0
- langflow/frontend/assets/index-mj8XK9Tl.js +1 -0
- langflow/frontend/assets/index-oiBWx4w9.js +1 -0
- langflow/frontend/assets/index-pKCSZFwa.js +1 -0
- langflow/frontend/assets/index-qF5m8J6W.js +1 -0
- langflow/frontend/assets/index-s2HlLerd.js +1 -0
- langflow/frontend/assets/index-sDM3dLyW.js +1 -0
- langflow/frontend/assets/index-twqYNsoX.js +1 -0
- langflow/frontend/assets/index-ukjxiqG1.js +1 -0
- langflow/frontend/assets/indian-rupee-DDsHHnpw.js +6 -0
- langflow/frontend/assets/infinity-BBPXbhl6.js +6 -0
- langflow/frontend/assets/info-pijX_lAI.js +6 -0
- langflow/frontend/assets/inspection-panel-B3s01EPS.js +6 -0
- langflow/frontend/assets/instagram-DQjEVc1a.js +6 -0
- langflow/frontend/assets/italic-DmZqJc3s.js +6 -0
- langflow/frontend/assets/iteration-ccw-Btg_E23q.js +6 -0
- langflow/frontend/assets/iteration-cw-Db00y5_M.js +6 -0
- langflow/frontend/assets/japanese-yen-GDtYmkLT.js +6 -0
- langflow/frontend/assets/joystick-oCzqrBnq.js +6 -0
- langflow/frontend/assets/kanban-we0yz9mS.js +6 -0
- langflow/frontend/assets/key-DAr2T7wP.js +6 -0
- langflow/frontend/assets/key-round-BlVlTn-g.js +6 -0
- langflow/frontend/assets/key-square-QfUsUzpk.js +6 -0
- langflow/frontend/assets/keyboard-BU9Zjv_Y.js +6 -0
- langflow/frontend/assets/keyboard-music-Gpxy8HJ1.js +6 -0
- langflow/frontend/assets/keyboard-off-DyG_chgi.js +6 -0
- langflow/frontend/assets/lamp-CHwGph0N.js +6 -0
- langflow/frontend/assets/lamp-ceiling-BvzzpZjI.js +6 -0
- langflow/frontend/assets/lamp-desk-wFruCDAT.js +6 -0
- langflow/frontend/assets/lamp-floor-BmL4iQON.js +6 -0
- langflow/frontend/assets/lamp-wall-down-CqQUSQrD.js +6 -0
- langflow/frontend/assets/lamp-wall-up-DaIm2ZHs.js +6 -0
- langflow/frontend/assets/land-plot-BOPhLWQf.js +6 -0
- langflow/frontend/assets/landmark-CDhFL2--.js +6 -0
- langflow/frontend/assets/languages-DeYdLiLU.js +6 -0
- langflow/frontend/assets/laptop-bZpl3U9i.js +6 -0
- langflow/frontend/assets/laptop-minimal-D3HG41A6.js +6 -0
- langflow/frontend/assets/laptop-minimal-check-BCTwuOkq.js +6 -0
- langflow/frontend/assets/lasso-8Rzjwdvb.js +6 -0
- langflow/frontend/assets/lasso-select-KR_FJ8Sz.js +6 -0
- langflow/frontend/assets/laugh-DPLw2kQc.js +6 -0
- langflow/frontend/assets/layers-2-ccTMvAQJ.js +6 -0
- langflow/frontend/assets/layers-C9PBhMbR.js +6 -0
- langflow/frontend/assets/layout-dashboard-DWhDHJLb.js +6 -0
- langflow/frontend/assets/layout-grid-j545VrOo.js +6 -0
- langflow/frontend/assets/layout-list-B6mdFVQM.js +6 -0
- langflow/frontend/assets/layout-panel-left-DNm1Lb-C.js +6 -0
- langflow/frontend/assets/layout-panel-top--RhZXVol.js +6 -0
- langflow/frontend/assets/layout-template-Bqrsfj6g.js +6 -0
- langflow/frontend/assets/lazyIconImports-DRfFaNPB.js +2 -0
- langflow/frontend/assets/leaf-C4sMkYhR.js +6 -0
- langflow/frontend/assets/leafy-green-C6iBk6n7.js +6 -0
- langflow/frontend/assets/lectern-D_jCIZYa.js +6 -0
- langflow/frontend/assets/letter-text-C20LU8vc.js +6 -0
- langflow/frontend/assets/library-C6q6nxw1.js +6 -0
- langflow/frontend/assets/library-big-BMOPwYLP.js +6 -0
- langflow/frontend/assets/life-buoy-BdTs-3qm.js +6 -0
- langflow/frontend/assets/ligature-59BNBdFO.js +6 -0
- langflow/frontend/assets/lightbulb-B6rFe3OL.js +6 -0
- langflow/frontend/assets/lightbulb-off-B21C0ap6.js +6 -0
- langflow/frontend/assets/link-2-DFDRgD6E.js +6 -0
- langflow/frontend/assets/link-2-off-DuyJz9Te.js +6 -0
- langflow/frontend/assets/link-BW7ikAR2.js +6 -0
- langflow/frontend/assets/linkedin-BC54gln0.js +6 -0
- langflow/frontend/assets/list-D9uknRtj.js +6 -0
- langflow/frontend/assets/list-check-CZp0P9j8.js +6 -0
- langflow/frontend/assets/list-checks-DtbWypeT.js +6 -0
- langflow/frontend/assets/list-collapse-BYTfMbYt.js +6 -0
- langflow/frontend/assets/list-end-CNOAFpq7.js +6 -0
- langflow/frontend/assets/list-filter-B0frV5dv.js +6 -0
- langflow/frontend/assets/list-filter-plus-CK5Lcsa4.js +6 -0
- langflow/frontend/assets/list-minus-C6ulm7vt.js +6 -0
- langflow/frontend/assets/list-music-B4L-9duN.js +6 -0
- langflow/frontend/assets/list-ordered-C86H0C6g.js +6 -0
- langflow/frontend/assets/list-plus-D78K3DjW.js +6 -0
- langflow/frontend/assets/list-restart-CVZZyeJ2.js +6 -0
- langflow/frontend/assets/list-start-gDuX8tMg.js +6 -0
- langflow/frontend/assets/list-todo-DtkFXzaW.js +6 -0
- langflow/frontend/assets/list-tree-Oi6vkVwR.js +6 -0
- langflow/frontend/assets/list-video-DE73_LYJ.js +6 -0
- langflow/frontend/assets/list-x-CgQzsjRB.js +6 -0
- langflow/frontend/assets/loader-RDvq_gck.js +6 -0
- langflow/frontend/assets/loader-circle-DkJY-7be.js +6 -0
- langflow/frontend/assets/loader-pinwheel-DqLtT1OW.js +6 -0
- langflow/frontend/assets/locate-27R1wayC.js +6 -0
- langflow/frontend/assets/locate-fixed-B25GqMPm.js +6 -0
- langflow/frontend/assets/locate-off-DxcIo3ue.js +6 -0
- langflow/frontend/assets/location-edit-C8GKuWlO.js +6 -0
- langflow/frontend/assets/lock-DbdTPRie.js +6 -0
- langflow/frontend/assets/lock-keyhole-Cx4a6BYs.js +6 -0
- langflow/frontend/assets/lock-keyhole-open-DTLQHZiP.js +6 -0
- langflow/frontend/assets/lock-open-CnTQhpTU.js +6 -0
- langflow/frontend/assets/log-in-DEu4f9CT.js +6 -0
- langflow/frontend/assets/log-out-Rw31_grB.js +6 -0
- langflow/frontend/assets/logs-C_xcALe5.js +6 -0
- langflow/frontend/assets/lollipop-B6UBSkOr.js +6 -0
- langflow/frontend/assets/luggage-B759at-b.js +6 -0
- langflow/frontend/assets/magnet-CeNQFjoD.js +6 -0
- langflow/frontend/assets/mail-De4rBGVq.js +6 -0
- langflow/frontend/assets/mail-check-CbJ1IOaN.js +6 -0
- langflow/frontend/assets/mail-minus-RnPcqZ0v.js +6 -0
- langflow/frontend/assets/mail-open-D9M_LY0y.js +6 -0
- langflow/frontend/assets/mail-plus-BT5pdOrC.js +6 -0
- langflow/frontend/assets/mail-question-C2SIW5_-.js +6 -0
- langflow/frontend/assets/mail-search-Cyt39aW3.js +6 -0
- langflow/frontend/assets/mail-warning-DeMRXgCc.js +6 -0
- langflow/frontend/assets/mail-x-B8pe3ypI.js +6 -0
- langflow/frontend/assets/mailbox-DOr4Jgda.js +6 -0
- langflow/frontend/assets/mails-Ce7xii1i.js +6 -0
- langflow/frontend/assets/map-DpiPYH-Q.js +6 -0
- langflow/frontend/assets/map-pin-Cc26OxY-.js +6 -0
- langflow/frontend/assets/map-pin-check-CByGWxEF.js +6 -0
- langflow/frontend/assets/map-pin-check-inside-DiG2kXfQ.js +6 -0
- langflow/frontend/assets/map-pin-house-23Gzpmu2.js +6 -0
- langflow/frontend/assets/map-pin-minus-ITQdHJk5.js +6 -0
- langflow/frontend/assets/map-pin-minus-inside-B679vGwS.js +6 -0
- langflow/frontend/assets/map-pin-off-CWKH97P5.js +6 -0
- langflow/frontend/assets/map-pin-plus-DfAOd7pB.js +6 -0
- langflow/frontend/assets/map-pin-plus-inside-JzHwlP76.js +6 -0
- langflow/frontend/assets/map-pin-x-DUyBhfDm.js +6 -0
- langflow/frontend/assets/map-pin-x-inside-C6k1KmNh.js +6 -0
- langflow/frontend/assets/map-pinned-BpuyCi6Y.js +6 -0
- langflow/frontend/assets/map-plus-DO7OUsBp.js +6 -0
- langflow/frontend/assets/mars-09Pgjyim.js +6 -0
- langflow/frontend/assets/mars-stroke-DoS_IHT5.js +6 -0
- langflow/frontend/assets/martini-C4dLdwZz.js +6 -0
- langflow/frontend/assets/maximize-2-BgGWLpMa.js +6 -0
- langflow/frontend/assets/maximize-BnmFD7Ea.js +6 -0
- langflow/frontend/assets/medal-CVtEX92m.js +6 -0
- langflow/frontend/assets/megaphone-B_S1jdP6.js +6 -0
- langflow/frontend/assets/megaphone-off-CRjvXD1m.js +6 -0
- langflow/frontend/assets/meh-C8uPKyUp.js +6 -0
- langflow/frontend/assets/memory-stick-Bj3nN5dk.js +6 -0
- langflow/frontend/assets/menu-B9s_-3BK.js +6 -0
- langflow/frontend/assets/merge-J8TxoB_I.js +6 -0
- langflow/frontend/assets/message-circle-code-f4mtGDDw.js +6 -0
- langflow/frontend/assets/message-circle-dashed-r3VtirOd.js +6 -0
- langflow/frontend/assets/message-circle-heart-Bgz1ew21.js +6 -0
- langflow/frontend/assets/message-circle-jUyFs-es.js +6 -0
- langflow/frontend/assets/message-circle-more-Bla7Vdfj.js +6 -0
- langflow/frontend/assets/message-circle-off-CLEvmyW9.js +6 -0
- langflow/frontend/assets/message-circle-plus-a11z-ovw.js +6 -0
- langflow/frontend/assets/message-circle-question-B5_XYWTb.js +6 -0
- langflow/frontend/assets/message-circle-reply-CPOzJ66g.js +6 -0
- langflow/frontend/assets/message-circle-warning-DRIi-daa.js +6 -0
- langflow/frontend/assets/message-circle-x-CIBETEKZ.js +6 -0
- langflow/frontend/assets/message-square-code-B2wt6I5-.js +6 -0
- langflow/frontend/assets/message-square-dashed-4X0h0pQb.js +6 -0
- langflow/frontend/assets/message-square-diff-xWeaewsx.js +6 -0
- langflow/frontend/assets/message-square-dot--0-tnQXG.js +6 -0
- langflow/frontend/assets/message-square-heart-5g8BhHmh.js +6 -0
- langflow/frontend/assets/message-square-k6VTaNBS.js +6 -0
- langflow/frontend/assets/message-square-lock-RQv6B-95.js +6 -0
- langflow/frontend/assets/message-square-more-CG788VX0.js +6 -0
- langflow/frontend/assets/message-square-off-BhjWfl1b.js +6 -0
- langflow/frontend/assets/message-square-plus-BI-H6jxM.js +6 -0
- langflow/frontend/assets/message-square-quote-Cp8iAUVq.js +6 -0
- langflow/frontend/assets/message-square-reply-ciwL0PNR.js +6 -0
- langflow/frontend/assets/message-square-share-BtRNOwXY.js +6 -0
- langflow/frontend/assets/message-square-text-CQcrmsOB.js +6 -0
- langflow/frontend/assets/message-square-warning-BW_paLfj.js +6 -0
- langflow/frontend/assets/message-square-x-CzT3l51X.js +6 -0
- langflow/frontend/assets/messages-square-Bk4KnQ8F.js +6 -0
- langflow/frontend/assets/mic-CVjPC0nA.js +6 -0
- langflow/frontend/assets/mic-off-cvNpAnCO.js +6 -0
- langflow/frontend/assets/mic-vocal-Bvu_7-1P.js +6 -0
- langflow/frontend/assets/microchip-CL7Q_1xX.js +6 -0
- langflow/frontend/assets/microscope-DRVScFmr.js +6 -0
- langflow/frontend/assets/microwave--4oIy06y.js +6 -0
- langflow/frontend/assets/milestone-KpASYh3p.js +6 -0
- langflow/frontend/assets/milk-ZOs_y1PL.js +6 -0
- langflow/frontend/assets/milk-off-CvETS96K.js +6 -0
- langflow/frontend/assets/minimize-2-ZcENftRc.js +6 -0
- langflow/frontend/assets/minimize-D7d37njo.js +6 -0
- langflow/frontend/assets/monitor-DOlbFky5.js +6 -0
- langflow/frontend/assets/monitor-check-DmUCeR9A.js +6 -0
- langflow/frontend/assets/monitor-cog-m74VAarh.js +6 -0
- langflow/frontend/assets/monitor-dot-CaDHU0F7.js +6 -0
- langflow/frontend/assets/monitor-down-5IIJ7Hp3.js +6 -0
- langflow/frontend/assets/monitor-off-BF07OCtl.js +6 -0
- langflow/frontend/assets/monitor-pause-BWHoCkC-.js +6 -0
- langflow/frontend/assets/monitor-play-xck1Q3K3.js +6 -0
- langflow/frontend/assets/monitor-smartphone-BAz_rtXC.js +6 -0
- langflow/frontend/assets/monitor-speaker-CSzIdDUR.js +6 -0
- langflow/frontend/assets/monitor-stop-Cg4Yysvq.js +6 -0
- langflow/frontend/assets/monitor-up-BibsRz8A.js +6 -0
- langflow/frontend/assets/monitor-x-CnIc-XPo.js +6 -0
- langflow/frontend/assets/moon-CwBh9jCb.js +6 -0
- langflow/frontend/assets/moon-star-Cqz6Au_k.js +6 -0
- langflow/frontend/assets/mountain-DBNjOkPk.js +6 -0
- langflow/frontend/assets/mountain-snow-o4r6usrx.js +6 -0
- langflow/frontend/assets/mouse-C1nhRUcr.js +6 -0
- langflow/frontend/assets/mouse-off-CASRo_QW.js +6 -0
- langflow/frontend/assets/mouse-pointer-2-Mb8VGr0o.js +6 -0
- langflow/frontend/assets/mouse-pointer-D94fPNG2.js +6 -0
- langflow/frontend/assets/mouse-pointer-ban-KUQlGU-A.js +6 -0
- langflow/frontend/assets/mouse-pointer-click-CaZdrkEQ.js +6 -0
- langflow/frontend/assets/move-3d-C0T67La1.js +6 -0
- langflow/frontend/assets/move-Bpi1PuOT.js +6 -0
- langflow/frontend/assets/move-diagonal-2-uxLMwSLU.js +6 -0
- langflow/frontend/assets/move-diagonal-BI_kq6Ri.js +6 -0
- langflow/frontend/assets/move-down-BaiJALD6.js +6 -0
- langflow/frontend/assets/move-down-left-DvHTc324.js +6 -0
- langflow/frontend/assets/move-down-right-bDhB8pmN.js +6 -0
- langflow/frontend/assets/move-horizontal-Gg4hQwWM.js +6 -0
- langflow/frontend/assets/move-left-DyKB1bwc.js +6 -0
- langflow/frontend/assets/move-right-BA7N--Qc.js +6 -0
- langflow/frontend/assets/move-up-DFrSH8tg.js +6 -0
- langflow/frontend/assets/move-up-left-BTjfll8R.js +6 -0
- langflow/frontend/assets/move-up-right-CtNx6SNy.js +6 -0
- langflow/frontend/assets/move-vertical-DL7X4ZR7.js +6 -0
- langflow/frontend/assets/music-2-mR0Ncuz9.js +6 -0
- langflow/frontend/assets/music-3-D5hWNdP9.js +6 -0
- langflow/frontend/assets/music-4-C02EtyPP.js +6 -0
- langflow/frontend/assets/music-JFE7Sjcf.js +6 -0
- langflow/frontend/assets/navigation-2-BdKxOaeL.js +6 -0
- langflow/frontend/assets/navigation-2-off-DRqqqtsH.js +6 -0
- langflow/frontend/assets/navigation-BXXLD9fO.js +6 -0
- langflow/frontend/assets/navigation-off-BXq2L8Di.js +6 -0
- langflow/frontend/assets/network-B0vJejCu.js +6 -0
- langflow/frontend/assets/newspaper-DOjvrahU.js +6 -0
- langflow/frontend/assets/nfc-DjQCvvsE.js +6 -0
- langflow/frontend/assets/non-binary-D9LpkBPk.js +6 -0
- langflow/frontend/assets/notebook-DndOO5LI.js +6 -0
- langflow/frontend/assets/notebook-pen-BUm3h1SI.js +6 -0
- langflow/frontend/assets/notebook-tabs-K5Tr_Osa.js +6 -0
- langflow/frontend/assets/notebook-text-eJKgVHF9.js +6 -0
- langflow/frontend/assets/notepad-text-DdGjs0YI.js +6 -0
- langflow/frontend/assets/notepad-text-dashed-CAnbEisZ.js +6 -0
- langflow/frontend/assets/nut-B_EAyVRW.js +6 -0
- langflow/frontend/assets/nut-off-Dj7aFgNZ.js +6 -0
- langflow/frontend/assets/octagon-BkhRt-4I.js +6 -0
- langflow/frontend/assets/octagon-alert-CqRFnA7H.js +6 -0
- langflow/frontend/assets/octagon-minus-DLVOuzms.js +6 -0
- langflow/frontend/assets/octagon-pause-js4QzBZA.js +6 -0
- langflow/frontend/assets/octagon-x-Dk9a4j2g.js +6 -0
- langflow/frontend/assets/omega-mYamy5wP.js +6 -0
- langflow/frontend/assets/option-CUYRIOMu.js +6 -0
- langflow/frontend/assets/orbit-CKv-3NP9.js +6 -0
- langflow/frontend/assets/origami-Db03P-HH.js +6 -0
- langflow/frontend/assets/package-2-2Juwg_5K.js +6 -0
- langflow/frontend/assets/package-BRGSHC5m.js +6 -0
- langflow/frontend/assets/package-check-B2UvoBTd.js +6 -0
- langflow/frontend/assets/package-minus-eCu1HcH4.js +6 -0
- langflow/frontend/assets/package-open-D5apDq0b.js +6 -0
- langflow/frontend/assets/package-plus-DcmauE5Y.js +6 -0
- langflow/frontend/assets/package-search-DPrIAldx.js +6 -0
- langflow/frontend/assets/package-x-XPlCRqVg.js +6 -0
- langflow/frontend/assets/paint-bucket-Dtt7DipG.js +6 -0
- langflow/frontend/assets/paint-roller-D54hQ9EL.js +6 -0
- langflow/frontend/assets/paintbrush-D6DVlQY-.js +6 -0
- langflow/frontend/assets/paintbrush-vertical-Cvrh0dv8.js +6 -0
- langflow/frontend/assets/palette-DZjLqWEE.js +6 -0
- langflow/frontend/assets/panel-bottom-DKkfhNbE.js +6 -0
- langflow/frontend/assets/panel-bottom-close-Y9inZ-Lg.js +6 -0
- langflow/frontend/assets/panel-bottom-dashed-BkJIn8pA.js +6 -0
- langflow/frontend/assets/panel-bottom-open-q4f0GVbZ.js +6 -0
- langflow/frontend/assets/panel-left-close-BmtAQrKJ.js +6 -0
- langflow/frontend/assets/panel-left-dashed-ChlwFy74.js +6 -0
- langflow/frontend/assets/panel-left-open-XHXZVNWv.js +6 -0
- langflow/frontend/assets/panel-right-B_GO73R6.js +6 -0
- langflow/frontend/assets/panel-right-close-CjTH2SAn.js +6 -0
- langflow/frontend/assets/panel-right-dashed-L5Yp190t.js +6 -0
- langflow/frontend/assets/panel-right-open--iHtcOYZ.js +6 -0
- langflow/frontend/assets/panel-top-DOXfrMML.js +6 -0
- langflow/frontend/assets/panel-top-close-CfDHwCd3.js +6 -0
- langflow/frontend/assets/panel-top-dashed-CLOfFL5Y.js +6 -0
- langflow/frontend/assets/panel-top-open-C6x3bGks.js +6 -0
- langflow/frontend/assets/panels-left-bottom-DErJphT8.js +6 -0
- langflow/frontend/assets/panels-right-bottom-D81AMxRS.js +6 -0
- langflow/frontend/assets/panels-top-left-C2K8WXtA.js +6 -0
- langflow/frontend/assets/paperclip-DoulwVXo.js +6 -0
- langflow/frontend/assets/parentheses-D1sMSJok.js +6 -0
- langflow/frontend/assets/parking-meter-kicxVB57.js +6 -0
- langflow/frontend/assets/party-popper-DOehfOsh.js +6 -0
- langflow/frontend/assets/pause-DC3AS1_H.js +6 -0
- langflow/frontend/assets/paw-print-DjOLImjW.js +6 -0
- langflow/frontend/assets/pc-case-DQC3GYeR.js +6 -0
- langflow/frontend/assets/pen-DM7kR0Jw.js +6 -0
- langflow/frontend/assets/pen-line-Bsvdd4jV.js +6 -0
- langflow/frontend/assets/pen-off-CAEWPqXv.js +6 -0
- langflow/frontend/assets/pen-tool-BcVfRopU.js +6 -0
- langflow/frontend/assets/pencil-BlUEec4X.js +6 -0
- langflow/frontend/assets/pencil-line-L2QYrPj8.js +6 -0
- langflow/frontend/assets/pencil-off-CGzZM-T2.js +6 -0
- langflow/frontend/assets/pencil-ruler-B3oatjJU.js +6 -0
- langflow/frontend/assets/pentagon-BLB278_6.js +6 -0
- langflow/frontend/assets/percent-BDXmF2EC.js +6 -0
- langflow/frontend/assets/person-standing-Dzk1Z3_N.js +6 -0
- langflow/frontend/assets/philippine-peso-8pW6097O.js +6 -0
- langflow/frontend/assets/phone-BSB5gkXg.js +6 -0
- langflow/frontend/assets/phone-call-DaUk93Y4.js +6 -0
- langflow/frontend/assets/phone-forwarded-Dc7TrVMY.js +6 -0
- langflow/frontend/assets/phone-incoming-BDqjCVEn.js +6 -0
- langflow/frontend/assets/phone-missed-C6jXid_r.js +6 -0
- langflow/frontend/assets/phone-off-DX2bd0Rz.js +6 -0
- langflow/frontend/assets/phone-outgoing-CIBRSzlg.js +6 -0
- langflow/frontend/assets/pi-DFvu6Rvd.js +6 -0
- langflow/frontend/assets/piano-BrBrplYm.js +6 -0
- langflow/frontend/assets/pickaxe-C-_uD3S4.js +6 -0
- langflow/frontend/assets/picture-in-picture-2-CYPLZgIz.js +6 -0
- langflow/frontend/assets/picture-in-picture-CzJMCFL0.js +6 -0
- langflow/frontend/assets/piggy-bank-VrsksHBR.js +6 -0
- langflow/frontend/assets/pilcrow-CRVQVjXq.js +6 -0
- langflow/frontend/assets/pilcrow-left-Bw5MDtcD.js +6 -0
- langflow/frontend/assets/pilcrow-right-BSvYW3Bs.js +6 -0
- langflow/frontend/assets/pill-CCgZIZaU.js +6 -0
- langflow/frontend/assets/pill-bottle-Bz8L-myc.js +6 -0
- langflow/frontend/assets/pin-CpcZfyaQ.js +6 -0
- langflow/frontend/assets/pin-off-BWxMlSF9.js +6 -0
- langflow/frontend/assets/pipette-DIOU6U4M.js +6 -0
- langflow/frontend/assets/pizza-DPndoBkE.js +6 -0
- langflow/frontend/assets/plane-BjKU1SMi.js +6 -0
- langflow/frontend/assets/plane-landing-BwaoIaxM.js +6 -0
- langflow/frontend/assets/plane-takeoff-cJrbN5JR.js +6 -0
- langflow/frontend/assets/play-JWwcgO_a.js +6 -0
- langflow/frontend/assets/plug-2-BkULzhLG.js +6 -0
- langflow/frontend/assets/plug-EGvNpePB.js +6 -0
- langflow/frontend/assets/plug-zap-PocgL_HA.js +6 -0
- langflow/frontend/assets/pocket-B1PYQMj8.js +6 -0
- langflow/frontend/assets/pocket-knife-W8PnIhO8.js +6 -0
- langflow/frontend/assets/podcast-Bn9vBhTr.js +6 -0
- langflow/frontend/assets/pointer-ZXX5ydr8.js +6 -0
- langflow/frontend/assets/pointer-off-DGMoG6N9.js +6 -0
- langflow/frontend/assets/popcorn-CjKmsViy.js +6 -0
- langflow/frontend/assets/popsicle-CEJfaRsa.js +6 -0
- langflow/frontend/assets/pound-sterling-4pIuM8qN.js +6 -0
- langflow/frontend/assets/power-Ce_RpKLS.js +6 -0
- langflow/frontend/assets/power-off-BTk6a4jN.js +6 -0
- langflow/frontend/assets/presentation-zDaQAcCi.js +6 -0
- langflow/frontend/assets/printer-DiHhWOSl.js +6 -0
- langflow/frontend/assets/printer-check-DD2-75np.js +6 -0
- langflow/frontend/assets/projector-BPXyhKc4.js +6 -0
- langflow/frontend/assets/proportions-CMaVT9lx.js +6 -0
- langflow/frontend/assets/puzzle-Dt6QmOyl.js +6 -0
- langflow/frontend/assets/pyramid-Bv9KPys4.js +6 -0
- langflow/frontend/assets/qr-code-BQh4vsHb.js +6 -0
- langflow/frontend/assets/quote-BIyJsKFu.js +6 -0
- langflow/frontend/assets/rabbit-CwpQ58xh.js +6 -0
- langflow/frontend/assets/radar-BPXLopgw.js +6 -0
- langflow/frontend/assets/radiation-XiU5J_0y.js +6 -0
- langflow/frontend/assets/radical-DBsO9JOZ.js +6 -0
- langflow/frontend/assets/radio-8plMkBKD.js +6 -0
- langflow/frontend/assets/radio-receiver-DGCIRtlV.js +6 -0
- langflow/frontend/assets/radio-tower-D-K-Dq1j.js +6 -0
- langflow/frontend/assets/radius-BtxdGraC.js +6 -0
- langflow/frontend/assets/rail-symbol-2saYAXmw.js +6 -0
- langflow/frontend/assets/rainbow-D-vQhn_P.js +6 -0
- langflow/frontend/assets/rat-ksp-2Opn.js +6 -0
- langflow/frontend/assets/ratio-b2pIUzfC.js +6 -0
- langflow/frontend/assets/receipt-DnxW2sTC.js +6 -0
- langflow/frontend/assets/receipt-cent-DgTFiFsN.js +6 -0
- langflow/frontend/assets/receipt-euro-CroU75OQ.js +6 -0
- langflow/frontend/assets/receipt-indian-rupee-BelGNdhL.js +6 -0
- langflow/frontend/assets/receipt-japanese-yen-Dneos7wW.js +6 -0
- langflow/frontend/assets/receipt-pound-sterling-D9oMyPW3.js +6 -0
- langflow/frontend/assets/receipt-russian-ruble-BaAMI2z5.js +6 -0
- langflow/frontend/assets/receipt-swiss-franc-CApWMWoy.js +6 -0
- langflow/frontend/assets/receipt-text-DWaWoT63.js +6 -0
- langflow/frontend/assets/rectangle-ellipsis-Dy7FN8ah.js +6 -0
- langflow/frontend/assets/rectangle-goggles-BZVdtly_.js +6 -0
- langflow/frontend/assets/rectangle-horizontal-DhnV4Cu8.js +6 -0
- langflow/frontend/assets/rectangle-vertical-SWDCzzA3.js +6 -0
- langflow/frontend/assets/recycle-BXD3AUyp.js +6 -0
- langflow/frontend/assets/redo-2-W_Any8U_.js +6 -0
- langflow/frontend/assets/redo-BxyriiyO.js +6 -0
- langflow/frontend/assets/redo-dot-DXqHkWDY.js +6 -0
- langflow/frontend/assets/refresh-ccw-DDJPywZK.js +6 -0
- langflow/frontend/assets/refresh-ccw-dot-CaQZuaz7.js +6 -0
- langflow/frontend/assets/refresh-cw-off-BAgYS8rV.js +6 -0
- langflow/frontend/assets/refresh-cw-qPmtnxQM.js +6 -0
- langflow/frontend/assets/refrigerator-79QxWziD.js +6 -0
- langflow/frontend/assets/regex-DAMPVDJy.js +6 -0
- langflow/frontend/assets/remove-formatting-Bzr7ewLV.js +6 -0
- langflow/frontend/assets/repeat-1-CoOD4iUH.js +6 -0
- langflow/frontend/assets/repeat-2-go-DpP_V.js +6 -0
- langflow/frontend/assets/repeat-Cb229YM9.js +6 -0
- langflow/frontend/assets/replace-CEVfl2u6.js +6 -0
- langflow/frontend/assets/replace-all-DWkdmDKo.js +6 -0
- langflow/frontend/assets/reply-7f-PQSmd.js +6 -0
- langflow/frontend/assets/reply-all-REIVdVRK.js +6 -0
- langflow/frontend/assets/rewind-jMTQjdh4.js +6 -0
- langflow/frontend/assets/ribbon-DwOcydsj.js +6 -0
- langflow/frontend/assets/rocket-B3qiDK0E.js +6 -0
- langflow/frontend/assets/rocking-chair-DVFxjG7x.js +6 -0
- langflow/frontend/assets/roller-coaster-B_hAk2yh.js +6 -0
- langflow/frontend/assets/rotate-3d-CJDyYXfO.js +6 -0
- langflow/frontend/assets/rotate-ccw-DTYUML5q.js +6 -0
- langflow/frontend/assets/rotate-ccw-key-B6lAxVk3.js +6 -0
- langflow/frontend/assets/rotate-ccw-square-ZpzHg3BG.js +6 -0
- langflow/frontend/assets/rotate-cw--goANcZb.js +6 -0
- langflow/frontend/assets/rotate-cw-square-CQme4RDc.js +6 -0
- langflow/frontend/assets/route-U0PdlpK1.js +6 -0
- langflow/frontend/assets/route-off-Dmd6qmJr.js +6 -0
- langflow/frontend/assets/router-CqVHwsp4.js +6 -0
- langflow/frontend/assets/rows-2-DZd3r_d1.js +6 -0
- langflow/frontend/assets/rows-3-DlRhRNBS.js +6 -0
- langflow/frontend/assets/rows-4-Bnr3F5Ig.js +6 -0
- langflow/frontend/assets/rss-hfQ63sRl.js +6 -0
- langflow/frontend/assets/ruler-CNOWvm8e.js +6 -0
- langflow/frontend/assets/ruler-dimension-line-B-_7fa-e.js +6 -0
- langflow/frontend/assets/russian-ruble-CWj2DXGa.js +6 -0
- langflow/frontend/assets/sailboat-BN755CkX.js +6 -0
- langflow/frontend/assets/salad-B1FASsWL.js +6 -0
- langflow/frontend/assets/sandwich-B8Gbp6Uu.js +6 -0
- langflow/frontend/assets/satellite-DJ_-Qrkd.js +6 -0
- langflow/frontend/assets/satellite-dish-C5W00Cw4.js +6 -0
- langflow/frontend/assets/saudi-riyal-BaHsEeX2.js +6 -0
- langflow/frontend/assets/save-all-Cq-IUzX0.js +6 -0
- langflow/frontend/assets/save-off-BFUHSfZB.js +6 -0
- langflow/frontend/assets/save-rUXWuhsE.js +6 -0
- langflow/frontend/assets/scale-3d-DRHbTf94.js +6 -0
- langflow/frontend/assets/scale-Bwvd5eQq.js +6 -0
- langflow/frontend/assets/scaling-T7W3r6OS.js +6 -0
- langflow/frontend/assets/scan-BYcsyfUO.js +6 -0
- langflow/frontend/assets/scan-barcode-WDmK-SAE.js +6 -0
- langflow/frontend/assets/scan-eye-DvLqoQk9.js +6 -0
- langflow/frontend/assets/scan-face-ErJORfeD.js +6 -0
- langflow/frontend/assets/scan-heart-B17SEF1b.js +6 -0
- langflow/frontend/assets/scan-line-DJVPfHlj.js +6 -0
- langflow/frontend/assets/scan-qr-code-Dp5pDTe9.js +6 -0
- langflow/frontend/assets/scan-search-CyMMc6uG.js +6 -0
- langflow/frontend/assets/scan-text-BvfPVvZd.js +6 -0
- langflow/frontend/assets/school-6RZvHm3Y.js +6 -0
- langflow/frontend/assets/scissors-BnZH5FLV.js +6 -0
- langflow/frontend/assets/scissors-line-dashed-B8CnhLpp.js +6 -0
- langflow/frontend/assets/screen-share-B-IdJsWf.js +6 -0
- langflow/frontend/assets/screen-share-off-BcLgB-QY.js +6 -0
- langflow/frontend/assets/scroll-BAbvzFhw.js +6 -0
- langflow/frontend/assets/scroll-text-CTyVAGzP.js +6 -0
- langflow/frontend/assets/search-check-ZLjbC5QE.js +6 -0
- langflow/frontend/assets/search-code-Dz2bEMJ1.js +6 -0
- langflow/frontend/assets/search-slash-C0GPHmeV.js +6 -0
- langflow/frontend/assets/search-x-DSRVo8Q0.js +6 -0
- langflow/frontend/assets/section-BXtLLfVB.js +6 -0
- langflow/frontend/assets/send-horizontal-Bk0C5xTn.js +6 -0
- langflow/frontend/assets/send-to-back-DVDTCTmY.js +6 -0
- langflow/frontend/assets/send-y3xac-Z8.js +6 -0
- langflow/frontend/assets/separator-horizontal-DjhyGqlL.js +6 -0
- langflow/frontend/assets/separator-vertical-C8yHKi3A.js +6 -0
- langflow/frontend/assets/server-DLMBtLRi.js +6 -0
- langflow/frontend/assets/server-cog-C_acTz3o.js +6 -0
- langflow/frontend/assets/server-crash-DiB_eAS0.js +6 -0
- langflow/frontend/assets/server-off-Ce2m2PO8.js +6 -0
- langflow/frontend/assets/settings-2-BXS8p9yd.js +6 -0
- langflow/frontend/assets/settings-CECtcUku.js +6 -0
- langflow/frontend/assets/shapes-CyAdB2p1.js +6 -0
- langflow/frontend/assets/share-2-CkR2XJ4w.js +6 -0
- langflow/frontend/assets/share-aU1oQycm.js +6 -0
- langflow/frontend/assets/sheet-wd6yVF1G.js +6 -0
- langflow/frontend/assets/shell-BsVxCNun.js +6 -0
- langflow/frontend/assets/shield-BYup7Kta.js +6 -0
- langflow/frontend/assets/shield-alert-jWbvzd7t.js +6 -0
- langflow/frontend/assets/shield-ban-CMOWtw6F.js +6 -0
- langflow/frontend/assets/shield-check-CGQOVQ5t.js +6 -0
- langflow/frontend/assets/shield-ellipsis-BjZtu1ZK.js +6 -0
- langflow/frontend/assets/shield-half-hSgNZ-Dk.js +6 -0
- langflow/frontend/assets/shield-minus-vA1GzWXQ.js +6 -0
- langflow/frontend/assets/shield-off-BI1Unp0c.js +6 -0
- langflow/frontend/assets/shield-plus-jS3THPuG.js +6 -0
- langflow/frontend/assets/shield-question-CvfF4Pzd.js +6 -0
- langflow/frontend/assets/shield-user-BET3N5mT.js +6 -0
- langflow/frontend/assets/shield-x-COkQc8o5.js +6 -0
- langflow/frontend/assets/ship-CcNhSIdY.js +6 -0
- langflow/frontend/assets/ship-wheel-Bw6rSHjc.js +6 -0
- langflow/frontend/assets/shirt-C5JGmzKr.js +6 -0
- langflow/frontend/assets/shopping-bag-BQ76dBeS.js +6 -0
- langflow/frontend/assets/shopping-basket-Dblk_9d-.js +6 -0
- langflow/frontend/assets/shopping-cart-CZAlfqop.js +6 -0
- langflow/frontend/assets/shovel-CDBUKSze.js +6 -0
- langflow/frontend/assets/shower-head-CpzqDVGY.js +6 -0
- langflow/frontend/assets/shredder-JSFjoB_H.js +6 -0
- langflow/frontend/assets/shrimp-CFl1_DR9.js +6 -0
- langflow/frontend/assets/shrink-hfrXOzVx.js +6 -0
- langflow/frontend/assets/shrub-qz_D8MIN.js +6 -0
- langflow/frontend/assets/shuffle-B0RZ6qeq.js +6 -0
- langflow/frontend/assets/sigma-DgOloNah.js +6 -0
- langflow/frontend/assets/signal-MDPVUvhX.js +6 -0
- langflow/frontend/assets/signal-high-D1zK4rF8.js +6 -0
- langflow/frontend/assets/signal-low-Dua5YeAL.js +6 -0
- langflow/frontend/assets/signal-medium-BmB_4ag4.js +6 -0
- langflow/frontend/assets/signal-zero-D3JYrbLc.js +6 -0
- langflow/frontend/assets/signature-BfLVCz_j.js +6 -0
- langflow/frontend/assets/signpost-C9alkE0N.js +6 -0
- langflow/frontend/assets/signpost-big-CZqm-mwM.js +6 -0
- langflow/frontend/assets/siren-C5_yv4zf.js +6 -0
- langflow/frontend/assets/skip-back-CoBWwFvy.js +6 -0
- langflow/frontend/assets/skip-forward-BvNbx8_A.js +6 -0
- langflow/frontend/assets/skull-CoN9k39Z.js +6 -0
- langflow/frontend/assets/slack-DR-xhp_D.js +6 -0
- langflow/frontend/assets/slash-YOt-xLyu.js +6 -0
- langflow/frontend/assets/slice-CTm9mXYF.js +6 -0
- langflow/frontend/assets/sliders-horizontal-Bbllrlfg.js +6 -0
- langflow/frontend/assets/sliders-vertical-BqJXkXug.js +6 -0
- langflow/frontend/assets/smartphone-charging-qqe-f_oj.js +6 -0
- langflow/frontend/assets/smartphone-nfc-gg3LXEcw.js +6 -0
- langflow/frontend/assets/smartphone-pTpD7ZG6.js +6 -0
- langflow/frontend/assets/smile-C9kL5Bua.js +6 -0
- langflow/frontend/assets/smile-plus-btM6Cy_d.js +6 -0
- langflow/frontend/assets/snail-CGrap-4v.js +6 -0
- langflow/frontend/assets/snowflake-CVgE3j4c.js +6 -0
- langflow/frontend/assets/sofa-B9ORaq0V.js +6 -0
- langflow/frontend/assets/soup-9KCvJm6J.js +6 -0
- langflow/frontend/assets/space-CawtjWB3.js +6 -0
- langflow/frontend/assets/spade-W3RW53k8.js +6 -0
- langflow/frontend/assets/sparkle-C0YNDR10.js +6 -0
- langflow/frontend/assets/sparkles-BAmY14PC.js +6 -0
- langflow/frontend/assets/speaker-CLczsiCK.js +6 -0
- langflow/frontend/assets/speech-LrPI1Bg8.js +6 -0
- langflow/frontend/assets/spell-check-2-vl6PmkgZ.js +6 -0
- langflow/frontend/assets/spell-check-B6_0sdGp.js +6 -0
- langflow/frontend/assets/spline-Cps3LTJ7.js +6 -0
- langflow/frontend/assets/spline-pointer-CgACMmpv.js +6 -0
- langflow/frontend/assets/split-Du8iRMG7.js +6 -0
- langflow/frontend/assets/spray-can-CRoAiiwu.js +6 -0
- langflow/frontend/assets/sprout-CMvJ56QM.js +6 -0
- langflow/frontend/assets/square-CkroTjSQ.js +6 -0
- langflow/frontend/assets/square-activity-CcOSYBrS.js +6 -0
- langflow/frontend/assets/square-arrow-down-BVdJOZEJ.js +6 -0
- langflow/frontend/assets/square-arrow-down-left-Cmzi6p1x.js +6 -0
- langflow/frontend/assets/square-arrow-down-right-CZLHVnQz.js +6 -0
- langflow/frontend/assets/square-arrow-left-DjVpjsrO.js +6 -0
- langflow/frontend/assets/square-arrow-out-down-left-wXj5IWRk.js +6 -0
- langflow/frontend/assets/square-arrow-out-down-right-CwtDp41D.js +6 -0
- langflow/frontend/assets/square-arrow-out-up-left-FRvjXB1a.js +6 -0
- langflow/frontend/assets/square-arrow-out-up-right-DlPfPEyw.js +6 -0
- langflow/frontend/assets/square-arrow-right-CXsKizML.js +6 -0
- langflow/frontend/assets/square-arrow-up-CEkTBxex.js +6 -0
- langflow/frontend/assets/square-arrow-up-left-BP02lXAS.js +6 -0
- langflow/frontend/assets/square-arrow-up-right-BmSDFkDr.js +6 -0
- langflow/frontend/assets/square-asterisk-hbwvBM2B.js +6 -0
- langflow/frontend/assets/square-bottom-dashed-scissors-DYKrJw1y.js +6 -0
- langflow/frontend/assets/square-chart-gantt-Vwnfo_Pn.js +6 -0
- langflow/frontend/assets/square-check-C04cs5ZB.js +6 -0
- langflow/frontend/assets/square-check-big-BF3AAHOB.js +6 -0
- langflow/frontend/assets/square-chevron-down-DmNdYA3q.js +6 -0
- langflow/frontend/assets/square-chevron-left-BtlOVCVY.js +6 -0
- langflow/frontend/assets/square-chevron-right-GIZBQEzx.js +6 -0
- langflow/frontend/assets/square-chevron-up-CQEO5ONV.js +6 -0
- langflow/frontend/assets/square-code-CD0gAgvN.js +6 -0
- langflow/frontend/assets/square-dashed-BDrI1c-R.js +6 -0
- langflow/frontend/assets/square-dashed-bottom-BJL9d4pa.js +6 -0
- langflow/frontend/assets/square-dashed-bottom-code-BeOBZkR0.js +6 -0
- langflow/frontend/assets/square-dashed-kanban-CErbmiES.js +6 -0
- langflow/frontend/assets/square-dashed-mouse-pointer-Zmi5agfp.js +6 -0
- langflow/frontend/assets/square-divide-B6A6zkw1.js +6 -0
- langflow/frontend/assets/square-dot-P6fcdHPf.js +6 -0
- langflow/frontend/assets/square-equal-WJbHP_t4.js +6 -0
- langflow/frontend/assets/square-function-CettiR3X.js +6 -0
- langflow/frontend/assets/square-kanban-BsXU8E_y.js +6 -0
- langflow/frontend/assets/square-library-BmQ3hTyB.js +6 -0
- langflow/frontend/assets/square-m-DwfZ-vok.js +6 -0
- langflow/frontend/assets/square-menu-Dpthf6jm.js +6 -0
- langflow/frontend/assets/square-minus-Tj5ClIqx.js +6 -0
- langflow/frontend/assets/square-mouse-pointer-mr8timW7.js +6 -0
- langflow/frontend/assets/square-parking-Bk9SzHc8.js +6 -0
- langflow/frontend/assets/square-parking-off-IrrpobT0.js +6 -0
- langflow/frontend/assets/square-pen-KiRrTvtS.js +6 -0
- langflow/frontend/assets/square-percent-C8aOSpg0.js +6 -0
- langflow/frontend/assets/square-pi-DgKhv0At.js +6 -0
- langflow/frontend/assets/square-pilcrow-COH3OK9n.js +6 -0
- langflow/frontend/assets/square-play-CAUGl-72.js +6 -0
- langflow/frontend/assets/square-plus-CRlzaeG6.js +6 -0
- langflow/frontend/assets/square-power-BUV-DpO9.js +6 -0
- langflow/frontend/assets/square-radical-mDbhE1Jp.js +6 -0
- langflow/frontend/assets/square-round-corner-D8ikBzW8.js +6 -0
- langflow/frontend/assets/square-scissors-sOPUwUTq.js +6 -0
- langflow/frontend/assets/square-sigma-pZR7i2en.js +6 -0
- langflow/frontend/assets/square-slash-CecdJ-2g.js +6 -0
- langflow/frontend/assets/square-split-horizontal-Cn1YMMw-.js +6 -0
- langflow/frontend/assets/square-split-vertical-C3Z8n5KC.js +6 -0
- langflow/frontend/assets/square-square-CiXxR3Ie.js +6 -0
- langflow/frontend/assets/square-stack-B2uKFYXm.js +6 -0
- langflow/frontend/assets/square-terminal-DE1v-WES.js +6 -0
- langflow/frontend/assets/square-user-CdQ5nItk.js +6 -0
- langflow/frontend/assets/square-user-round-BAGRGZ4p.js +6 -0
- langflow/frontend/assets/square-x-BI3Pn3yZ.js +6 -0
- langflow/frontend/assets/squares-exclude-CBt3NOOB.js +6 -0
- langflow/frontend/assets/squares-intersect-C1ol5eE2.js +6 -0
- langflow/frontend/assets/squares-subtract-CxQ-opYW.js +6 -0
- langflow/frontend/assets/squares-unite-bHbJjImE.js +6 -0
- langflow/frontend/assets/squircle-BKxd9XrI.js +6 -0
- langflow/frontend/assets/squirrel-BdGL91Qm.js +6 -0
- langflow/frontend/assets/stamp-BIQg-SUE.js +6 -0
- langflow/frontend/assets/star-Cpa4WlZd.js +6 -0
- langflow/frontend/assets/star-half-BnsiPaVT.js +6 -0
- langflow/frontend/assets/star-off-AO1QRqoS.js +6 -0
- langflow/frontend/assets/step-back-CcOvZiFD.js +6 -0
- langflow/frontend/assets/step-forward-C4x-q-G6.js +6 -0
- langflow/frontend/assets/stethoscope-CANnOOAi.js +6 -0
- langflow/frontend/assets/sticker-Q5M0hcLB.js +6 -0
- langflow/frontend/assets/sticky-note-C4QwXCe_.js +6 -0
- langflow/frontend/assets/store-CJCVnYZH.js +6 -0
- langflow/frontend/assets/stretch-horizontal-3ZhE2sCc.js +6 -0
- langflow/frontend/assets/stretch-vertical-mf41Xa4e.js +6 -0
- langflow/frontend/assets/strikethrough-yFT7jPwx.js +6 -0
- langflow/frontend/assets/subscript-VCxtxqO7.js +6 -0
- langflow/frontend/assets/sun-dim-4VSc0tI8.js +6 -0
- langflow/frontend/assets/sun-medium-CJ4xVMuF.js +6 -0
- langflow/frontend/assets/sun-moon-BO47Jkl4.js +6 -0
- langflow/frontend/assets/sun-rRloNURd.js +6 -0
- langflow/frontend/assets/sun-snow-BlSdUi7g.js +6 -0
- langflow/frontend/assets/sunrise-sO4wXyPP.js +6 -0
- langflow/frontend/assets/sunset-E9GFs51P.js +6 -0
- langflow/frontend/assets/superscript-BWmyCaUT.js +6 -0
- langflow/frontend/assets/swatch-book-BmWfAu49.js +6 -0
- langflow/frontend/assets/swiss-franc-hV1KP_fg.js +6 -0
- langflow/frontend/assets/switch-camera-BWkYvwXl.js +6 -0
- langflow/frontend/assets/sword-BDSHehSN.js +6 -0
- langflow/frontend/assets/swords-BRibwz0-.js +6 -0
- langflow/frontend/assets/syringe-C7_FV9Po.js +6 -0
- langflow/frontend/assets/table-2-CkYqc62r.js +6 -0
- langflow/frontend/assets/table-CASDU2H0.js +6 -0
- langflow/frontend/assets/table-cells-merge-DpXjO7d-.js +6 -0
- langflow/frontend/assets/table-cells-split-aydpayp8.js +6 -0
- langflow/frontend/assets/table-columns-split-B8VrYcuj.js +6 -0
- langflow/frontend/assets/table-of-contents-oGuU6U6i.js +6 -0
- langflow/frontend/assets/table-properties-DAgm8rqw.js +6 -0
- langflow/frontend/assets/table-rows-split-BFIJj2J8.js +6 -0
- langflow/frontend/assets/tablet-BliqtQBM.js +6 -0
- langflow/frontend/assets/tablet-smartphone-CE2tqU0B.js +6 -0
- langflow/frontend/assets/tablets-CswnoDNg.js +6 -0
- langflow/frontend/assets/tag-BerZ0133.js +6 -0
- langflow/frontend/assets/tags-DYlK_nbG.js +6 -0
- langflow/frontend/assets/tally-1-IN24qgmu.js +6 -0
- langflow/frontend/assets/tally-2-D02oV5rO.js +6 -0
- langflow/frontend/assets/tally-3-DYlGnbrA.js +6 -0
- langflow/frontend/assets/tally-4-D2KLKgKj.js +6 -0
- langflow/frontend/assets/tally-5-Cd0kRXrn.js +6 -0
- langflow/frontend/assets/tangent-G01MUkHP.js +6 -0
- langflow/frontend/assets/target-DbUvoffS.js +6 -0
- langflow/frontend/assets/telescope-KhvkA8ff.js +6 -0
- langflow/frontend/assets/tent-BgTD0ty8.js +6 -0
- langflow/frontend/assets/tent-tree-_R3-gT0M.js +6 -0
- langflow/frontend/assets/terminal-CqO1pA0S.js +6 -0
- langflow/frontend/assets/test-tube-Cosu5dmV.js +6 -0
- langflow/frontend/assets/test-tube-diagonal-BdAA9XeL.js +6 -0
- langflow/frontend/assets/test-tubes-Cd4n2GvV.js +6 -0
- langflow/frontend/assets/text-B0Xnj4ft.js +6 -0
- langflow/frontend/assets/text-cursor-Cy8p6TjV.js +6 -0
- langflow/frontend/assets/text-cursor-input-DgOo4wY8.js +6 -0
- langflow/frontend/assets/text-quote-C92ek5Lo.js +6 -0
- langflow/frontend/assets/text-search-Cy6e1fBt.js +6 -0
- langflow/frontend/assets/text-select-BdMHFJow.js +6 -0
- langflow/frontend/assets/theater-DK0cChU_.js +6 -0
- langflow/frontend/assets/thermometer-BcSnLB44.js +6 -0
- langflow/frontend/assets/thermometer-snowflake-BFFQB-J0.js +6 -0
- langflow/frontend/assets/thermometer-sun-By6M7z2S.js +6 -0
- langflow/frontend/assets/thumbs-down-DpArakqZ.js +6 -0
- langflow/frontend/assets/thumbs-up-OCTYaIsr.js +6 -0
- langflow/frontend/assets/ticket-DKk9KFsa.js +6 -0
- langflow/frontend/assets/ticket-check-CxlmH0TZ.js +6 -0
- langflow/frontend/assets/ticket-minus-yYNVgAXv.js +6 -0
- langflow/frontend/assets/ticket-percent-DTK_Eij8.js +6 -0
- langflow/frontend/assets/ticket-plus-DZH6kdc0.js +6 -0
- langflow/frontend/assets/ticket-slash-DaT9cJnH.js +6 -0
- langflow/frontend/assets/ticket-x-C91cugzp.js +6 -0
- langflow/frontend/assets/tickets-D8_swpjZ.js +6 -0
- langflow/frontend/assets/tickets-plane-Bs7N6tut.js +6 -0
- langflow/frontend/assets/timer-D1A5dgcp.js +6 -0
- langflow/frontend/assets/timer-off-Bnj53uqH.js +6 -0
- langflow/frontend/assets/timer-reset-CH2_6LXB.js +6 -0
- langflow/frontend/assets/toggle-left-Bms5HJPp.js +6 -0
- langflow/frontend/assets/toggle-right-Cm22-5tq.js +6 -0
- langflow/frontend/assets/toilet-B_EZH3rv.js +6 -0
- langflow/frontend/assets/tornado-DH7xrdf8.js +6 -0
- langflow/frontend/assets/torus-CeDcEzNl.js +6 -0
- langflow/frontend/assets/touchpad-BkFD1ONX.js +6 -0
- langflow/frontend/assets/touchpad-off-B0uLi6UN.js +6 -0
- langflow/frontend/assets/tower-control-vAS-GcnT.js +6 -0
- langflow/frontend/assets/toy-brick-Cp_hT2tX.js +6 -0
- langflow/frontend/assets/tractor-C6J-q888.js +6 -0
- langflow/frontend/assets/traffic-cone-Bf6tu1aR.js +6 -0
- langflow/frontend/assets/train-front-DFS_gdr7.js +6 -0
- langflow/frontend/assets/train-front-tunnel-B_B45p2C.js +6 -0
- langflow/frontend/assets/train-track-BYxDcy6T.js +6 -0
- langflow/frontend/assets/tram-front-mrGC7NJo.js +6 -0
- langflow/frontend/assets/transgender-imH1_ahf.js +6 -0
- langflow/frontend/assets/trash-CLIJ7hzA.js +6 -0
- langflow/frontend/assets/tree-deciduous-CcMF7uqB.js +6 -0
- langflow/frontend/assets/tree-palm-Cz7loG-5.js +6 -0
- langflow/frontend/assets/tree-pine-_KnmdDVv.js +6 -0
- langflow/frontend/assets/trees-DcMR2K_M.js +6 -0
- langflow/frontend/assets/trello-BNZfFWYi.js +6 -0
- langflow/frontend/assets/trending-down-BWrM4zQ0.js +6 -0
- langflow/frontend/assets/trending-up-BWgdc-K5.js +6 -0
- langflow/frontend/assets/trending-up-down-DQhSV3Za.js +6 -0
- langflow/frontend/assets/triangle-BQ6LFOFJ.js +6 -0
- langflow/frontend/assets/triangle-alert-BdJuJY-l.js +6 -0
- langflow/frontend/assets/triangle-dashed-Ch_AzxG9.js +6 -0
- langflow/frontend/assets/triangle-right-DqHR4ZXG.js +6 -0
- langflow/frontend/assets/trophy-eLjuXzFa.js +6 -0
- langflow/frontend/assets/truck-DXuqRqEe.js +6 -0
- langflow/frontend/assets/truck-electric-D3HyVQnU.js +6 -0
- langflow/frontend/assets/turtle-BuFnjN3h.js +6 -0
- langflow/frontend/assets/tv-BlUmv2d2.js +6 -0
- langflow/frontend/assets/tv-minimal-CpWoecoV.js +6 -0
- langflow/frontend/assets/tv-minimal-play-CPnVQl2f.js +6 -0
- langflow/frontend/assets/twitch-BkdmleL2.js +6 -0
- langflow/frontend/assets/twitter-05QHmZD0.js +6 -0
- langflow/frontend/assets/type-DNr3dfa5.js +6 -0
- langflow/frontend/assets/type-outline-CIrmdXWg.js +6 -0
- langflow/frontend/assets/umbrella-BdhvIGDz.js +6 -0
- langflow/frontend/assets/umbrella-off-BHSI8Bue.js +6 -0
- langflow/frontend/assets/underline-BslkaCEJ.js +6 -0
- langflow/frontend/assets/undo-2-BMx3oDcQ.js +6 -0
- langflow/frontend/assets/undo-CH0IX0A-.js +6 -0
- langflow/frontend/assets/undo-dot-B6yP9J8b.js +6 -0
- langflow/frontend/assets/unfold-horizontal-qqXqOLiN.js +6 -0
- langflow/frontend/assets/unfold-vertical-CLJkyOZ8.js +6 -0
- langflow/frontend/assets/ungroup--gpU_yyB.js +6 -0
- langflow/frontend/assets/university-DcMAR2QE.js +6 -0
- langflow/frontend/assets/unlink-2-DgHQM-Ol.js +6 -0
- langflow/frontend/assets/unlink-CFlKKKjg.js +6 -0
- langflow/frontend/assets/unplug-t7thfy3A.js +6 -0
- langflow/frontend/assets/upload-B47QANX4.js +6 -0
- langflow/frontend/assets/usb-Bao-9jlF.js +6 -0
- langflow/frontend/assets/use-post-add-user-DcUHAOql.js +1 -0
- langflow/frontend/assets/user-Drfvifu4.js +6 -0
- langflow/frontend/assets/user-check-Cl2Cugpa.js +6 -0
- langflow/frontend/assets/user-cog-yKYAgaSS.js +6 -0
- langflow/frontend/assets/user-lock-BspYeCuz.js +6 -0
- langflow/frontend/assets/user-minus-AkYkI7UT.js +6 -0
- langflow/frontend/assets/user-pen-nm0syYEm.js +6 -0
- langflow/frontend/assets/user-plus-ClieQhai.js +6 -0
- langflow/frontend/assets/user-round-DOm2Rvec.js +6 -0
- langflow/frontend/assets/user-round-check-CkC7KhO_.js +6 -0
- langflow/frontend/assets/user-round-cog-B40OFz4y.js +6 -0
- langflow/frontend/assets/user-round-minus-DzKXVvj5.js +6 -0
- langflow/frontend/assets/user-round-pen-B7Hx7T-z.js +6 -0
- langflow/frontend/assets/user-round-plus-gPUNVs5p.js +6 -0
- langflow/frontend/assets/user-round-search-BuCrN7rk.js +6 -0
- langflow/frontend/assets/user-round-x-Clw_HKFu.js +6 -0
- langflow/frontend/assets/user-search-7r9kPJdn.js +6 -0
- langflow/frontend/assets/user-x-D-08UDtO.js +6 -0
- langflow/frontend/assets/users-C4G9vyGr.js +6 -0
- langflow/frontend/assets/users-round-C3zj8mhR.js +6 -0
- langflow/frontend/assets/utensils-BVhMMIp4.js +6 -0
- langflow/frontend/assets/utensils-crossed-DwXOXddJ.js +6 -0
- langflow/frontend/assets/utility-pole-CPmMsN8O.js +6 -0
- langflow/frontend/assets/variable-ihOqLInK.js +6 -0
- langflow/frontend/assets/vault-BL-zlOyC.js +6 -0
- langflow/frontend/assets/vegan-HSv936HT.js +6 -0
- langflow/frontend/assets/venetian-mask-CPF9ez22.js +6 -0
- langflow/frontend/assets/venus-WD9kncdm.js +6 -0
- langflow/frontend/assets/venus-and-mars-DJuedjXD.js +6 -0
- langflow/frontend/assets/vibrate-BlIj-Jgh.js +6 -0
- langflow/frontend/assets/vibrate-off-Bs5X_4sP.js +6 -0
- langflow/frontend/assets/video-Cp1GFFC_.js +6 -0
- langflow/frontend/assets/video-off-BYJF_42a.js +6 -0
- langflow/frontend/assets/videotape-CuedGIlK.js +6 -0
- langflow/frontend/assets/view-uwAlPOmt.js +6 -0
- langflow/frontend/assets/voicemail-IRTIXCuv.js +6 -0
- langflow/frontend/assets/volleyball-Dm8hJeFi.js +6 -0
- langflow/frontend/assets/volume-1-B7dG7AaQ.js +6 -0
- langflow/frontend/assets/volume-1UMvsCQJ.js +6 -0
- langflow/frontend/assets/volume-2-Dbb7rUtl.js +6 -0
- langflow/frontend/assets/volume-off-kXe4C-Hg.js +6 -0
- langflow/frontend/assets/volume-x-Bd5C5IxT.js +6 -0
- langflow/frontend/assets/vote-CBtMBPq5.js +6 -0
- langflow/frontend/assets/wallet-D8Q8uawC.js +6 -0
- langflow/frontend/assets/wallet-cards-_GGB7vF_.js +6 -0
- langflow/frontend/assets/wallet-minimal-CucBi0Jd.js +6 -0
- langflow/frontend/assets/wallpaper-C_9hKf-n.js +6 -0
- langflow/frontend/assets/wand-DPL3CBte.js +6 -0
- langflow/frontend/assets/wand-sparkles-Cl_E8IQM.js +6 -0
- langflow/frontend/assets/warehouse-si5e0uad.js +6 -0
- langflow/frontend/assets/washing-machine-DAoYXz8S.js +6 -0
- langflow/frontend/assets/watch-vHRKFSRo.js +6 -0
- langflow/frontend/assets/waves-DIE8r4QU.js +6 -0
- langflow/frontend/assets/waves-ladder-DmCrSafi.js +6 -0
- langflow/frontend/assets/waypoints-BxAb3sb6.js +6 -0
- langflow/frontend/assets/webcam-DXKnwxjx.js +6 -0
- langflow/frontend/assets/webhook-DIcfjt0z.js +6 -0
- langflow/frontend/assets/webhook-off-Cizw6u19.js +6 -0
- langflow/frontend/assets/weight-C8waPDsY.js +6 -0
- langflow/frontend/assets/wheat-DjhsGbzN.js +6 -0
- langflow/frontend/assets/wheat-off-D159TbMR.js +6 -0
- langflow/frontend/assets/whole-word-BWpJx-dg.js +6 -0
- langflow/frontend/assets/wifi-Bvv6U9Hi.js +6 -0
- langflow/frontend/assets/wifi-high-Ct1ZekJ4.js +6 -0
- langflow/frontend/assets/wifi-low-BfylmAcn.js +6 -0
- langflow/frontend/assets/wifi-off-BD5Wk1pw.js +6 -0
- langflow/frontend/assets/wifi-pen-Bxkh4qXC.js +6 -0
- langflow/frontend/assets/wifi-zero-CqfrN4bl.js +6 -0
- langflow/frontend/assets/wind-D6hRFy66.js +6 -0
- langflow/frontend/assets/wind-arrow-down-DGVpj5j-.js +6 -0
- langflow/frontend/assets/wine-Dbt_7b9f.js +6 -0
- langflow/frontend/assets/wine-off-BuB0kkR9.js +6 -0
- langflow/frontend/assets/workflow-Cfb_GZf0.js +6 -0
- langflow/frontend/assets/worm-B7O5ml_A.js +6 -0
- langflow/frontend/assets/wrap-text-Pa-62zfV.js +6 -0
- langflow/frontend/assets/wrench-BIR5N1wl.js +6 -0
- langflow/frontend/assets/youtube-DvEYbar7.js +6 -0
- langflow/frontend/assets/zap-B7FF_DHv.js +6 -0
- langflow/frontend/assets/zap-off-ZtPxT6cL.js +6 -0
- langflow/frontend/assets/zoom-in-B0wOuivz.js +6 -0
- langflow/frontend/assets/zoom-out-DEmL9kzZ.js +6 -0
- langflow/frontend/index.html +2 -2
- langflow/initial_setup/setup.py +9 -1
- langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +8 -18
- langflow/initial_setup/starter_projects/Basic Prompting.json +4 -10
- langflow/initial_setup/starter_projects/Blog Writer.json +4 -10
- langflow/initial_setup/starter_projects/Custom Component Generator.json +6 -16
- langflow/initial_setup/starter_projects/Document Q&A.json +6 -12
- langflow/initial_setup/starter_projects/Financial Report Parser.json +45 -10
- langflow/initial_setup/starter_projects/Hybrid Search RAG.json +46 -11
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +49 -20
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +41 -340
- langflow/initial_setup/starter_projects/Invoice Summarizer.json +33 -320
- langflow/initial_setup/starter_projects/Knowledge Ingestion.json +2 -2
- langflow/initial_setup/starter_projects/Knowledge Retrieval.json +2 -2
- langflow/initial_setup/starter_projects/Market Research.json +80 -336
- langflow/initial_setup/starter_projects/Meeting Summary.json +2 -2
- langflow/initial_setup/starter_projects/Memory Chatbot.json +4 -10
- langflow/initial_setup/starter_projects/News Aggregator.json +33 -320
- langflow/initial_setup/starter_projects/Nvidia Remix.json +45 -417
- langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +35 -322
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +48 -13
- langflow/initial_setup/starter_projects/Price Deal Finder.json +33 -320
- langflow/initial_setup/starter_projects/Research Agent.json +40 -337
- langflow/initial_setup/starter_projects/Research Translation Loop.json +342 -362
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +4 -10
- langflow/initial_setup/starter_projects/SaaS Pricing.json +35 -326
- langflow/initial_setup/starter_projects/Search agent.json +33 -320
- langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +118 -993
- langflow/initial_setup/starter_projects/Simple Agent.json +33 -320
- langflow/initial_setup/starter_projects/Social Media Agent.json +33 -320
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +5 -5
- langflow/initial_setup/starter_projects/Travel Planning Agents.json +103 -969
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +10 -28
- langflow/initial_setup/starter_projects/Vector Store RAG.json +9 -21
- langflow/initial_setup/starter_projects/Youtube Analysis.json +57 -324
- langflow/inputs/__init__.py +2 -0
- langflow/inputs/inputs.py +2 -0
- langflow/main.py +5 -0
- langflow/memory.py +2 -6
- langflow/processing/process.py +7 -3
- langflow/services/database/models/variable/model.py +1 -2
- langflow/services/deps.py +2 -2
- langflow/services/tracing/arize_phoenix.py +63 -12
- langflow/services/variable/base.py +43 -1
- langflow/services/variable/kubernetes.py +65 -1
- langflow/services/variable/service.py +119 -15
- langflow/tests/api/v1/__init__.py +0 -0
- langflow/tests/api/v1/test_openai_responses_error.py +98 -0
- langflow_base_nightly-1.7.0.dev55.dist-info/METADATA +99 -0
- langflow_base_nightly-1.7.0.dev55.dist-info/RECORD +2283 -0
- langflow/base/models/openai_constants.py +0 -7
- langflow/frontend/assets/SlackIcon-2tL0BoK4.js +0 -1
- langflow/frontend/assets/Wikipedia-Dw5Rv487.js +0 -1
- langflow/frontend/assets/Wolfram-Vsga0g9P.js +0 -1
- langflow/frontend/assets/a-arrow-down-CtCPHkgr.js +0 -6
- langflow/frontend/assets/a-arrow-up-CCRqaxh3.js +0 -6
- langflow/frontend/assets/a-large-small-Ds4nmckW.js +0 -6
- langflow/frontend/assets/accessibility-CFQ3RZ22.js +0 -6
- langflow/frontend/assets/activity-BG2mngNA.js +0 -6
- langflow/frontend/assets/air-vent-D1H2ntZC.js +0 -6
- langflow/frontend/assets/airplay-CgtC06sx.js +0 -6
- langflow/frontend/assets/alarm-clock-B2ebS7mK.js +0 -6
- langflow/frontend/assets/alarm-clock-check-DN7RJ7In.js +0 -6
- langflow/frontend/assets/alarm-clock-minus-Dv054kv7.js +0 -6
- langflow/frontend/assets/alarm-clock-off-Cs_lq2yR.js +0 -6
- langflow/frontend/assets/alarm-clock-plus-CWqRI2eI.js +0 -6
- langflow/frontend/assets/alarm-smoke-DRMoUyKJ.js +0 -6
- langflow/frontend/assets/album-BOrmg-Fc.js +0 -6
- langflow/frontend/assets/align-center-aNn9ipln.js +0 -6
- langflow/frontend/assets/align-center-horizontal-YdLHi16A.js +0 -6
- langflow/frontend/assets/align-center-vertical-DlfgmMi5.js +0 -6
- langflow/frontend/assets/align-end-horizontal-C4HYPLli.js +0 -6
- langflow/frontend/assets/align-end-vertical-C9QD7_Ub.js +0 -6
- langflow/frontend/assets/align-horizontal-distribute-center-B2vfqgL8.js +0 -6
- langflow/frontend/assets/align-horizontal-distribute-end-DF7ZLFgo.js +0 -6
- langflow/frontend/assets/align-horizontal-distribute-start-Bsxg7Skv.js +0 -6
- langflow/frontend/assets/align-horizontal-justify-center-DPTf56Nd.js +0 -6
- langflow/frontend/assets/align-horizontal-justify-end-CqLsMuy2.js +0 -6
- langflow/frontend/assets/align-horizontal-justify-start-Uk3K2-_R.js +0 -6
- langflow/frontend/assets/align-horizontal-space-around-Dam48X6y.js +0 -6
- langflow/frontend/assets/align-horizontal-space-between-BCyYRzlS.js +0 -6
- langflow/frontend/assets/align-justify-BBQFCtzK.js +0 -6
- langflow/frontend/assets/align-left-BL1htpd_.js +0 -6
- langflow/frontend/assets/align-right-D5DOlRYC.js +0 -6
- langflow/frontend/assets/align-start-horizontal-D3b3WlfA.js +0 -6
- langflow/frontend/assets/align-start-vertical-DUfOeO71.js +0 -6
- langflow/frontend/assets/align-vertical-distribute-center-BNZy0POQ.js +0 -6
- langflow/frontend/assets/align-vertical-distribute-end-OzsHhNCw.js +0 -6
- langflow/frontend/assets/align-vertical-distribute-start-CxD4XYMO.js +0 -6
- langflow/frontend/assets/align-vertical-justify-center-CuD52dRx.js +0 -6
- langflow/frontend/assets/align-vertical-justify-end-CtKklri1.js +0 -6
- langflow/frontend/assets/align-vertical-justify-start-CPw57gyF.js +0 -6
- langflow/frontend/assets/align-vertical-space-around-DpZXdBsT.js +0 -6
- langflow/frontend/assets/align-vertical-space-between-w2JF7Uh-.js +0 -6
- langflow/frontend/assets/ambulance-VkAHfUCz.js +0 -6
- langflow/frontend/assets/ampersand-Du3Kk5nC.js +0 -6
- langflow/frontend/assets/ampersands-KWvMoTzu.js +0 -6
- langflow/frontend/assets/amphora-CzPrQ0gj.js +0 -6
- langflow/frontend/assets/anchor-zMpUjhzP.js +0 -6
- langflow/frontend/assets/angry-p89nHJ5X.js +0 -6
- langflow/frontend/assets/annoyed-BuY415Wh.js +0 -6
- langflow/frontend/assets/antenna-up4E5x8_.js +0 -6
- langflow/frontend/assets/anvil-DuuW3Sc2.js +0 -6
- langflow/frontend/assets/aperture-BWiAz6MA.js +0 -6
- langflow/frontend/assets/app-window-D1KK3Nkd.js +0 -6
- langflow/frontend/assets/app-window-mac-DIEf1Vhe.js +0 -6
- langflow/frontend/assets/apple-BKbGAPMT.js +0 -6
- langflow/frontend/assets/archive-nl-4wwcv.js +0 -6
- langflow/frontend/assets/archive-restore-CUFEvkX4.js +0 -6
- langflow/frontend/assets/archive-x-BMUxaj-5.js +0 -6
- langflow/frontend/assets/armchair-BughlihF.js +0 -6
- langflow/frontend/assets/arrow-big-down-C6W0jqjt.js +0 -6
- langflow/frontend/assets/arrow-big-down-dash-4SsEGiEr.js +0 -6
- langflow/frontend/assets/arrow-big-left-Bfj36Xuj.js +0 -6
- langflow/frontend/assets/arrow-big-left-dash-2diQgbSm.js +0 -6
- langflow/frontend/assets/arrow-big-right-DaoNh42J.js +0 -6
- langflow/frontend/assets/arrow-big-right-dash-By3aDv6Z.js +0 -6
- langflow/frontend/assets/arrow-big-up-Cf8AnIXN.js +0 -6
- langflow/frontend/assets/arrow-big-up-dash-BDtm1M0h.js +0 -6
- langflow/frontend/assets/arrow-down-0-1-DGG7H-P_.js +0 -6
- langflow/frontend/assets/arrow-down-1-0-C1QHag0Q.js +0 -6
- langflow/frontend/assets/arrow-down-C4X7neKy.js +0 -6
- langflow/frontend/assets/arrow-down-a-z-D1V0VBM6.js +0 -6
- langflow/frontend/assets/arrow-down-from-line-Tqy33Jn5.js +0 -6
- langflow/frontend/assets/arrow-down-left-Bg9dfH4j.js +0 -6
- langflow/frontend/assets/arrow-down-narrow-wide-Z1qxj7P_.js +0 -6
- langflow/frontend/assets/arrow-down-right-Bz-AlXge.js +0 -6
- langflow/frontend/assets/arrow-down-to-dot-a-6DY7b3.js +0 -6
- langflow/frontend/assets/arrow-down-to-line-BlR_nLQ5.js +0 -6
- langflow/frontend/assets/arrow-down-up-BW5-D-uV.js +0 -6
- langflow/frontend/assets/arrow-down-wide-narrow-CLlp3bQ4.js +0 -6
- langflow/frontend/assets/arrow-down-z-a-BdmSATHR.js +0 -6
- langflow/frontend/assets/arrow-left-DPAAl7dH.js +0 -6
- langflow/frontend/assets/arrow-left-from-line-Iq3thc0m.js +0 -6
- langflow/frontend/assets/arrow-left-right-Cp8sQ-fa.js +0 -6
- langflow/frontend/assets/arrow-left-to-line-DiIc-bIa.js +0 -6
- langflow/frontend/assets/arrow-right-HaVKQEd-.js +0 -6
- langflow/frontend/assets/arrow-right-from-line-B6dsw318.js +0 -6
- langflow/frontend/assets/arrow-right-left-l8CeAnC9.js +0 -6
- langflow/frontend/assets/arrow-right-to-line-BXqcRvfu.js +0 -6
- langflow/frontend/assets/arrow-up-0-1-lgHriEc5.js +0 -6
- langflow/frontend/assets/arrow-up-1-0-DbhnhtOe.js +0 -6
- langflow/frontend/assets/arrow-up-a-z-DXEkdnlz.js +0 -6
- langflow/frontend/assets/arrow-up-down-W95JpeW_.js +0 -6
- langflow/frontend/assets/arrow-up-from-dot-8xXJpTeh.js +0 -6
- langflow/frontend/assets/arrow-up-from-line-Ehlp11Oq.js +0 -6
- langflow/frontend/assets/arrow-up-gcEvpUBt.js +0 -6
- langflow/frontend/assets/arrow-up-left-CUc2Nurf.js +0 -6
- langflow/frontend/assets/arrow-up-narrow-wide-CDEqt6dn.js +0 -6
- langflow/frontend/assets/arrow-up-right-C8LUMgyi.js +0 -6
- langflow/frontend/assets/arrow-up-to-line-kMqd0Krh.js +0 -6
- langflow/frontend/assets/arrow-up-wide-narrow-Ca-4HU4E.js +0 -6
- langflow/frontend/assets/arrow-up-z-a-WdYks7-u.js +0 -6
- langflow/frontend/assets/arrows-up-from-line-CmgQtZjw.js +0 -6
- langflow/frontend/assets/asterisk-D2fam27C.js +0 -6
- langflow/frontend/assets/at-sign-UX6734bA.js +0 -6
- langflow/frontend/assets/atom-D9VA82hQ.js +0 -6
- langflow/frontend/assets/audio-lines-zw9eqKuz.js +0 -6
- langflow/frontend/assets/audio-waveform-DjUMj6Xm.js +0 -6
- langflow/frontend/assets/award-D5kHVTMP.js +0 -6
- langflow/frontend/assets/axe-DnF5vULo.js +0 -6
- langflow/frontend/assets/axis-3d-CcrPEX8P.js +0 -6
- langflow/frontend/assets/baby-jchF2TWh.js +0 -6
- langflow/frontend/assets/backpack-BFgkgPXP.js +0 -6
- langflow/frontend/assets/badge-SlXVA9sA.js +0 -6
- langflow/frontend/assets/badge-alert-HQeDA_BM.js +0 -6
- langflow/frontend/assets/badge-cent-BI2UoOWa.js +0 -6
- langflow/frontend/assets/badge-check-1wcvAore.js +0 -6
- langflow/frontend/assets/badge-dollar-sign-t5mVxT-7.js +0 -6
- langflow/frontend/assets/badge-euro-CuQbYA0Q.js +0 -6
- langflow/frontend/assets/badge-help-CVSoNVlm.js +0 -6
- langflow/frontend/assets/badge-indian-rupee-BfFBeVC1.js +0 -6
- langflow/frontend/assets/badge-info-CIKPyIoh.js +0 -6
- langflow/frontend/assets/badge-japanese-yen-gIuEDd3y.js +0 -6
- langflow/frontend/assets/badge-minus-QFER_1tr.js +0 -6
- langflow/frontend/assets/badge-percent-CYi2iiOM.js +0 -6
- langflow/frontend/assets/badge-plus-BOBnAhWZ.js +0 -6
- langflow/frontend/assets/badge-pound-sterling-CDDk4Clp.js +0 -6
- langflow/frontend/assets/badge-russian-ruble-Cw2zeVY6.js +0 -6
- langflow/frontend/assets/badge-swiss-franc-BNaHyFBF.js +0 -6
- langflow/frontend/assets/badge-x-INaZjGBv.js +0 -6
- langflow/frontend/assets/baggage-claim-BuCzaLUK.js +0 -6
- langflow/frontend/assets/ban-C0_KH0xx.js +0 -6
- langflow/frontend/assets/banana-JaSLI-eN.js +0 -6
- langflow/frontend/assets/bandage-BLq5FbwZ.js +0 -6
- langflow/frontend/assets/banknote-CcWSwsXX.js +0 -6
- langflow/frontend/assets/banknote-arrow-down-yYDB5YRe.js +0 -6
- langflow/frontend/assets/banknote-arrow-up-cP9YOTlq.js +0 -6
- langflow/frontend/assets/banknote-x-BLetLkx8.js +0 -6
- langflow/frontend/assets/barcode-TBNucGW-.js +0 -6
- langflow/frontend/assets/baseline-CxbI_Ryx.js +0 -6
- langflow/frontend/assets/bath-B0wQiu7v.js +0 -6
- langflow/frontend/assets/battery-DygTKT09.js +0 -6
- langflow/frontend/assets/battery-charging-Bpu1nXid.js +0 -6
- langflow/frontend/assets/battery-full-DG7mNFn1.js +0 -6
- langflow/frontend/assets/battery-low-CGnrPGIZ.js +0 -6
- langflow/frontend/assets/battery-medium-2JaYO87F.js +0 -6
- langflow/frontend/assets/battery-plus-Q_eqIrSE.js +0 -6
- langflow/frontend/assets/battery-warning-CQxD-Dhz.js +0 -6
- langflow/frontend/assets/beaker-DFbKvt8K.js +0 -6
- langflow/frontend/assets/bean-Cdl6jl6W.js +0 -6
- langflow/frontend/assets/bean-off-D_8urmiA.js +0 -6
- langflow/frontend/assets/bed-BmkmEhct.js +0 -6
- langflow/frontend/assets/bed-double-BB_aBwdj.js +0 -6
- langflow/frontend/assets/bed-single-jV6zkSeY.js +0 -6
- langflow/frontend/assets/beef-BnEyO_PD.js +0 -6
- langflow/frontend/assets/beer-CbBgcz-w.js +0 -6
- langflow/frontend/assets/beer-off-BJJuRDVu.js +0 -6
- langflow/frontend/assets/bell-DiADno6X.js +0 -6
- langflow/frontend/assets/bell-dot-BJZcEZCk.js +0 -6
- langflow/frontend/assets/bell-electric-YB2kEu6w.js +0 -6
- langflow/frontend/assets/bell-minus-CcaDnyzi.js +0 -6
- langflow/frontend/assets/bell-off-BgHN2ufQ.js +0 -6
- langflow/frontend/assets/bell-plus-Bbu7et3O.js +0 -6
- langflow/frontend/assets/bell-ring-DsnFMVte.js +0 -6
- langflow/frontend/assets/between-horizontal-end-Aw5uRfrp.js +0 -6
- langflow/frontend/assets/between-horizontal-start-BlpAv55e.js +0 -6
- langflow/frontend/assets/between-vertical-end-B9evwoxW.js +0 -6
- langflow/frontend/assets/between-vertical-start-jLR0hN4S.js +0 -6
- langflow/frontend/assets/biceps-flexed-lEiRddud.js +0 -6
- langflow/frontend/assets/bike-CVItDlq_.js +0 -6
- langflow/frontend/assets/binary-QU98JXFD.js +0 -6
- langflow/frontend/assets/binoculars-Ca4_VNEP.js +0 -6
- langflow/frontend/assets/biohazard-k30hEyRQ.js +0 -6
- langflow/frontend/assets/bird-DHBHGvUU.js +0 -6
- langflow/frontend/assets/bitcoin-BS428A8y.js +0 -6
- langflow/frontend/assets/blend-BUucrrRp.js +0 -6
- langflow/frontend/assets/blinds-DACp4fUy.js +0 -6
- langflow/frontend/assets/blocks-DbFLBEIs.js +0 -6
- langflow/frontend/assets/bluetooth-BsO-Fp_k.js +0 -6
- langflow/frontend/assets/bluetooth-connected-DBX2rvgB.js +0 -6
- langflow/frontend/assets/bluetooth-off-CGx_M-Y5.js +0 -6
- langflow/frontend/assets/bluetooth-searching-DM4PPvxZ.js +0 -6
- langflow/frontend/assets/bold-Di484--c.js +0 -6
- langflow/frontend/assets/bolt-CsIGutbM.js +0 -6
- langflow/frontend/assets/bomb-Dmvj27RW.js +0 -6
- langflow/frontend/assets/bone-CTPrfpcz.js +0 -6
- langflow/frontend/assets/book-C0WSUBUR.js +0 -6
- langflow/frontend/assets/book-a-CwmRjeAV.js +0 -6
- langflow/frontend/assets/book-audio-DAtoSRde.js +0 -6
- langflow/frontend/assets/book-check-Mp7bATps.js +0 -6
- langflow/frontend/assets/book-copy-C-OiHUrx.js +0 -6
- langflow/frontend/assets/book-dashed-wex_u7RN.js +0 -6
- langflow/frontend/assets/book-down-B9fqXXLP.js +0 -6
- langflow/frontend/assets/book-headphones-CKDXG8Fr.js +0 -6
- langflow/frontend/assets/book-heart-ClG6w6SX.js +0 -6
- langflow/frontend/assets/book-image-5u05Fo77.js +0 -6
- langflow/frontend/assets/book-key-Bpq9plwo.js +0 -6
- langflow/frontend/assets/book-lock-CT6mwrMm.js +0 -6
- langflow/frontend/assets/book-marked-BIiQ1ukl.js +0 -6
- langflow/frontend/assets/book-minus-SWjp7P_W.js +0 -6
- langflow/frontend/assets/book-open-DfNQZzHi.js +0 -6
- langflow/frontend/assets/book-open-check-CY30kKMC.js +0 -6
- langflow/frontend/assets/book-open-text-DPzMwevc.js +0 -6
- langflow/frontend/assets/book-plus-WVs1bePp.js +0 -6
- langflow/frontend/assets/book-text-CzbbJ9LG.js +0 -6
- langflow/frontend/assets/book-type-BN35WPrW.js +0 -6
- langflow/frontend/assets/book-up-2-KiLiu1-m.js +0 -6
- langflow/frontend/assets/book-up-ZglUa_h-.js +0 -6
- langflow/frontend/assets/book-user-C2Up4w08.js +0 -6
- langflow/frontend/assets/book-x-WO5AX9sT.js +0 -6
- langflow/frontend/assets/bookmark-CSQGhHtO.js +0 -6
- langflow/frontend/assets/bookmark-check-BXYJi0NT.js +0 -6
- langflow/frontend/assets/bookmark-minus-BUmp-MGP.js +0 -6
- langflow/frontend/assets/bookmark-plus-D-twXCK7.js +0 -6
- langflow/frontend/assets/bookmark-x-BvH3SL1B.js +0 -6
- langflow/frontend/assets/boom-box-DMHnaqRR.js +0 -6
- langflow/frontend/assets/bot-DSLqSL9g.js +0 -6
- langflow/frontend/assets/bot-message-square-BGaJzhjF.js +0 -6
- langflow/frontend/assets/bot-off-CqToOHdG.js +0 -6
- langflow/frontend/assets/bow-arrow-Bt2ER62q.js +0 -6
- langflow/frontend/assets/box-DXpjqKuH.js +0 -6
- langflow/frontend/assets/boxes-DeB16DNE.js +0 -6
- langflow/frontend/assets/braces-BCzJ3MYq.js +0 -6
- langflow/frontend/assets/brackets-C4FNuXta.js +0 -6
- langflow/frontend/assets/brain-DFLv0Ew1.js +0 -6
- langflow/frontend/assets/brain-circuit-Dr0NCFcL.js +0 -6
- langflow/frontend/assets/brain-cog-0rWbmbOW.js +0 -6
- langflow/frontend/assets/brick-wall-CLo5MeED.js +0 -6
- langflow/frontend/assets/brick-wall-fire-CcXKADrC.js +0 -6
- langflow/frontend/assets/briefcase-CANcl425.js +0 -6
- langflow/frontend/assets/briefcase-business-CWy5tOof.js +0 -6
- langflow/frontend/assets/briefcase-conveyor-belt-D_wc2LYv.js +0 -6
- langflow/frontend/assets/briefcase-medical-HkLm_YOd.js +0 -6
- langflow/frontend/assets/bring-to-front-D-5n0cQh.js +0 -6
- langflow/frontend/assets/brush-XErknzPu.js +0 -6
- langflow/frontend/assets/bubbles-mqIRxseg.js +0 -6
- langflow/frontend/assets/bug-4ZaBkI0g.js +0 -6
- langflow/frontend/assets/bug-off-x2PjBwDj.js +0 -6
- langflow/frontend/assets/bug-play-DIwO_WwF.js +0 -6
- langflow/frontend/assets/building-2-ByEAjLQd.js +0 -6
- langflow/frontend/assets/building-Bd5Xs1LN.js +0 -6
- langflow/frontend/assets/bus-front-DpybCoBw.js +0 -6
- langflow/frontend/assets/bus-nSu5Yghx.js +0 -6
- langflow/frontend/assets/cable-5DILgzkz.js +0 -6
- langflow/frontend/assets/cable-car-DxxaWY1w.js +0 -6
- langflow/frontend/assets/cake-Clhth2Va.js +0 -6
- langflow/frontend/assets/cake-slice-vpfVB8xx.js +0 -6
- langflow/frontend/assets/calculator-BNmc2lEZ.js +0 -6
- langflow/frontend/assets/calendar-1-C00Irhv9.js +0 -6
- langflow/frontend/assets/calendar-BV9IwxUy.js +0 -6
- langflow/frontend/assets/calendar-arrow-down-RVRQhCwj.js +0 -6
- langflow/frontend/assets/calendar-arrow-up-CngrUVjc.js +0 -6
- langflow/frontend/assets/calendar-check-2-FpbvvuY1.js +0 -6
- langflow/frontend/assets/calendar-check-CBlNgO10.js +0 -6
- langflow/frontend/assets/calendar-clock-D4GyGUNY.js +0 -6
- langflow/frontend/assets/calendar-cog-NdDLy0rY.js +0 -6
- langflow/frontend/assets/calendar-days-B9Lzu7Pp.js +0 -6
- langflow/frontend/assets/calendar-fold-Be2nT1G5.js +0 -6
- langflow/frontend/assets/calendar-heart-CEIJdPUF.js +0 -6
- langflow/frontend/assets/calendar-minus-2-frWEUEgu.js +0 -6
- langflow/frontend/assets/calendar-minus-Bp_a49SQ.js +0 -6
- langflow/frontend/assets/calendar-off-D0KQGf9i.js +0 -6
- langflow/frontend/assets/calendar-plus-2-CedJAZCW.js +0 -6
- langflow/frontend/assets/calendar-plus-C0GWj3qf.js +0 -6
- langflow/frontend/assets/calendar-range-B519OcK6.js +0 -6
- langflow/frontend/assets/calendar-search-6DPLiS45.js +0 -6
- langflow/frontend/assets/calendar-sync-pvExHh22.js +0 -6
- langflow/frontend/assets/calendar-x-2-CI80rOaP.js +0 -6
- langflow/frontend/assets/calendar-x-DyJVDIMK.js +0 -6
- langflow/frontend/assets/camera-C7qFVCW7.js +0 -6
- langflow/frontend/assets/camera-off-CLS5AOT2.js +0 -6
- langflow/frontend/assets/candy-DPrpiC8M.js +0 -6
- langflow/frontend/assets/candy-cane-CK6wx2af.js +0 -6
- langflow/frontend/assets/candy-off-CRqid0h0.js +0 -6
- langflow/frontend/assets/cannabis-CN5EchX-.js +0 -6
- langflow/frontend/assets/captions-CGBpcQVT.js +0 -6
- langflow/frontend/assets/captions-off-Dr8mtWu2.js +0 -6
- langflow/frontend/assets/car-D7kdtjCP.js +0 -6
- langflow/frontend/assets/car-front-C9J-mmQr.js +0 -6
- langflow/frontend/assets/car-taxi-front-CcwpWzgG.js +0 -6
- langflow/frontend/assets/caravan-D2iG73yW.js +0 -6
- langflow/frontend/assets/carrot-COPqTYxk.js +0 -6
- langflow/frontend/assets/case-lower-DVN3prZZ.js +0 -6
- langflow/frontend/assets/case-sensitive-jaTHM7kD.js +0 -6
- langflow/frontend/assets/case-upper-zDLQctHY.js +0 -6
- langflow/frontend/assets/cassette-tape-XBVc5S2S.js +0 -6
- langflow/frontend/assets/cast-FpSLV9nh.js +0 -6
- langflow/frontend/assets/castle-mhUc3Sa7.js +0 -6
- langflow/frontend/assets/cat-MlrlJF7V.js +0 -6
- langflow/frontend/assets/cctv-Bo3Gq1sP.js +0 -6
- langflow/frontend/assets/chart-area-DKgJngK6.js +0 -6
- langflow/frontend/assets/chart-bar-C9CxjWgM.js +0 -6
- langflow/frontend/assets/chart-bar-big-CCxPgjFr.js +0 -6
- langflow/frontend/assets/chart-bar-decreasing-NaEbZY3u.js +0 -6
- langflow/frontend/assets/chart-bar-increasing-Sw1AbJuH.js +0 -6
- langflow/frontend/assets/chart-bar-stacked-jeK6f5No.js +0 -6
- langflow/frontend/assets/chart-candlestick-azHfH7D7.js +0 -6
- langflow/frontend/assets/chart-column-big-CfVzAcJS.js +0 -6
- langflow/frontend/assets/chart-column-bxAdhgLd.js +0 -6
- langflow/frontend/assets/chart-column-decreasing-wNdMoBal.js +0 -6
- langflow/frontend/assets/chart-column-increasing-BiOQfUbI.js +0 -6
- langflow/frontend/assets/chart-column-stacked-CfuZmPkv.js +0 -6
- langflow/frontend/assets/chart-gantt-XebrMfT0.js +0 -6
- langflow/frontend/assets/chart-line-BqzGA7_U.js +0 -6
- langflow/frontend/assets/chart-network-B6SE-MbP.js +0 -6
- langflow/frontend/assets/chart-no-axes-column-decreasing-dKkdagVp.js +0 -6
- langflow/frontend/assets/chart-no-axes-column-increasing-ZGWI5eFL.js +0 -6
- langflow/frontend/assets/chart-no-axes-column-lxCQO5Sz.js +0 -6
- langflow/frontend/assets/chart-no-axes-combined-D_ojxnc_.js +0 -6
- langflow/frontend/assets/chart-no-axes-gantt-DBNney9_.js +0 -6
- langflow/frontend/assets/chart-pie-B_yT36Ep.js +0 -6
- langflow/frontend/assets/chart-scatter-4EkeZnGv.js +0 -6
- langflow/frontend/assets/chart-spline-BlR_Utwj.js +0 -6
- langflow/frontend/assets/check-check-mjvBs4hp.js +0 -6
- langflow/frontend/assets/chef-hat-B5L-WaDA.js +0 -6
- langflow/frontend/assets/cherry-Ch61XZPa.js +0 -6
- langflow/frontend/assets/chevron-first-wAAVqtUY.js +0 -6
- langflow/frontend/assets/chevron-last-zAcQaPuR.js +0 -6
- langflow/frontend/assets/chevron-left-Cr1bv0gY.js +0 -6
- langflow/frontend/assets/chevron-right-DIgt3AeP.js +0 -6
- langflow/frontend/assets/chevrons-down-BNaVPrEa.js +0 -6
- langflow/frontend/assets/chevrons-down-up-CeENTSlN.js +0 -6
- langflow/frontend/assets/chevrons-left-D8K24j17.js +0 -6
- langflow/frontend/assets/chevrons-left-right-ellipsis-C1Z-bVSM.js +0 -6
- langflow/frontend/assets/chevrons-left-right-iM7Q1uj8.js +0 -6
- langflow/frontend/assets/chevrons-right-CgPqkzi_.js +0 -6
- langflow/frontend/assets/chevrons-right-left-CUpBdX_-.js +0 -6
- langflow/frontend/assets/chevrons-up-CaVyxK6a.js +0 -6
- langflow/frontend/assets/chrome-Bt5-4_H_.js +0 -6
- langflow/frontend/assets/church-DdkDjgks.js +0 -6
- langflow/frontend/assets/cigarette-DqL9Cjvu.js +0 -6
- langflow/frontend/assets/cigarette-off-I5I89xh1.js +0 -6
- langflow/frontend/assets/circle-alert-BJZZ6CO5.js +0 -6
- langflow/frontend/assets/circle-arrow-down-CTOimXb4.js +0 -6
- langflow/frontend/assets/circle-arrow-left-Dk5OY4Uh.js +0 -6
- langflow/frontend/assets/circle-arrow-out-down-left-BpkzawyV.js +0 -6
- langflow/frontend/assets/circle-arrow-out-down-right-CidgXyBq.js +0 -6
- langflow/frontend/assets/circle-arrow-out-up-left-DRpCQvgG.js +0 -6
- langflow/frontend/assets/circle-arrow-out-up-right-CW5LRpAW.js +0 -6
- langflow/frontend/assets/circle-arrow-right-C3Zd06oq.js +0 -6
- langflow/frontend/assets/circle-arrow-up-Dds4-Gqg.js +0 -6
- langflow/frontend/assets/circle-check-C-PYs05d.js +0 -6
- langflow/frontend/assets/circle-check-big-CygsBNqe.js +0 -6
- langflow/frontend/assets/circle-chevron-down-lvNfB3ez.js +0 -6
- langflow/frontend/assets/circle-chevron-left-1PPcojcN.js +0 -6
- langflow/frontend/assets/circle-chevron-right-j3pY_Mxs.js +0 -6
- langflow/frontend/assets/circle-chevron-up-CDckgjCL.js +0 -6
- langflow/frontend/assets/circle-dashed-BaI69AOK.js +0 -6
- langflow/frontend/assets/circle-divide-B5CPfVbp.js +0 -6
- langflow/frontend/assets/circle-dollar-sign-Bp7pbLvl.js +0 -6
- langflow/frontend/assets/circle-dot-C7xCjxhN.js +0 -6
- langflow/frontend/assets/circle-dot-dashed-DVJN1RfK.js +0 -6
- langflow/frontend/assets/circle-ellipsis-Wj3512-X.js +0 -6
- langflow/frontend/assets/circle-equal-CVspIQ-T.js +0 -6
- langflow/frontend/assets/circle-fading-arrow-up-4XPTqKP-.js +0 -6
- langflow/frontend/assets/circle-fading-plus-k068hbcc.js +0 -6
- langflow/frontend/assets/circle-gauge-BqlhJFC6.js +0 -6
- langflow/frontend/assets/circle-help-BGQkusPB.js +0 -6
- langflow/frontend/assets/circle-minus-B3xEYd3J.js +0 -6
- langflow/frontend/assets/circle-off-DISfMryN.js +0 -6
- langflow/frontend/assets/circle-parking-Drj98qPb.js +0 -6
- langflow/frontend/assets/circle-parking-off-ZJJvH3Mz.js +0 -6
- langflow/frontend/assets/circle-pause-DJiqJR71.js +0 -6
- langflow/frontend/assets/circle-percent-BLl-oEAZ.js +0 -6
- langflow/frontend/assets/circle-play-BhmSYr8V.js +0 -6
- langflow/frontend/assets/circle-plus-D-iSwALE.js +0 -6
- langflow/frontend/assets/circle-power-C4SsikU1.js +0 -6
- langflow/frontend/assets/circle-slash-2-DM0X_FvC.js +0 -6
- langflow/frontend/assets/circle-slash-CsEYnPZ_.js +0 -6
- langflow/frontend/assets/circle-small-nq2KJRbI.js +0 -6
- langflow/frontend/assets/circle-stop-DHpR4Exj.js +0 -6
- langflow/frontend/assets/circle-user-round-CPdDJgym.js +0 -6
- langflow/frontend/assets/circle-user-vySTUTfe.js +0 -6
- langflow/frontend/assets/circuit-board-C6MASNwG.js +0 -6
- langflow/frontend/assets/citrus-4s-La7fq.js +0 -6
- langflow/frontend/assets/clapperboard-Cm3_2ZAe.js +0 -6
- langflow/frontend/assets/clipboard-B_CddeJZ.js +0 -6
- langflow/frontend/assets/clipboard-check-DQLHZEhO.js +0 -6
- langflow/frontend/assets/clipboard-copy-Wkp10wfJ.js +0 -6
- langflow/frontend/assets/clipboard-list-DTjvLiis.js +0 -6
- langflow/frontend/assets/clipboard-minus-9Mtcennl.js +0 -6
- langflow/frontend/assets/clipboard-paste-D9O3Ylr7.js +0 -6
- langflow/frontend/assets/clipboard-pen-BMsMKD2E.js +0 -6
- langflow/frontend/assets/clipboard-pen-line-BMqQ6TEF.js +0 -6
- langflow/frontend/assets/clipboard-plus-DToSFtda.js +0 -6
- langflow/frontend/assets/clipboard-type-BUAJGhbt.js +0 -6
- langflow/frontend/assets/clipboard-x-UXuP7iFz.js +0 -6
- langflow/frontend/assets/clock-1-DC05Gf9x.js +0 -6
- langflow/frontend/assets/clock-10-CUsZ-pQX.js +0 -6
- langflow/frontend/assets/clock-11-B02Ke-8J.js +0 -6
- langflow/frontend/assets/clock-12-Di6togjy.js +0 -6
- langflow/frontend/assets/clock-2-DQR12kNA.js +0 -6
- langflow/frontend/assets/clock-3-Bp-StvZ1.js +0 -6
- langflow/frontend/assets/clock-4-BFseYkQo.js +0 -6
- langflow/frontend/assets/clock-5-DAr7BU6j.js +0 -6
- langflow/frontend/assets/clock-6-Z_qV9P3A.js +0 -6
- langflow/frontend/assets/clock-7-D82hLWju.js +0 -6
- langflow/frontend/assets/clock-8-Degkhg1B.js +0 -6
- langflow/frontend/assets/clock-9-CB_xmTKJ.js +0 -6
- langflow/frontend/assets/clock-Dwr8Maiz.js +0 -6
- langflow/frontend/assets/clock-alert-Cyvoz8nE.js +0 -6
- langflow/frontend/assets/clock-arrow-down-BFZLdybm.js +0 -6
- langflow/frontend/assets/clock-arrow-up-DvXlJ-05.js +0 -6
- langflow/frontend/assets/clock-fading-BflG8l3I.js +0 -6
- langflow/frontend/assets/cloud-DjN7iGQU.js +0 -6
- langflow/frontend/assets/cloud-alert-Cnxn036m.js +0 -6
- langflow/frontend/assets/cloud-cog-DSR0q3-t.js +0 -6
- langflow/frontend/assets/cloud-download-m6j-tfyW.js +0 -6
- langflow/frontend/assets/cloud-drizzle-B--SoqIh.js +0 -6
- langflow/frontend/assets/cloud-fog-CUu05M5x.js +0 -6
- langflow/frontend/assets/cloud-hail-D93BL0E6.js +0 -6
- langflow/frontend/assets/cloud-lightning-Qrpo-CpL.js +0 -6
- langflow/frontend/assets/cloud-moon-CJ4K-LoM.js +0 -6
- langflow/frontend/assets/cloud-moon-rain-BEOCPFQC.js +0 -6
- langflow/frontend/assets/cloud-off-CBKavV70.js +0 -6
- langflow/frontend/assets/cloud-rain-Bzf3tp-U.js +0 -6
- langflow/frontend/assets/cloud-rain-wind-CufkoFAV.js +0 -6
- langflow/frontend/assets/cloud-snow-D-5b0vs5.js +0 -6
- langflow/frontend/assets/cloud-sun-Bd1Mw8DI.js +0 -6
- langflow/frontend/assets/cloud-sun-rain-B7by-4h4.js +0 -6
- langflow/frontend/assets/cloud-upload-JgcFevtG.js +0 -6
- langflow/frontend/assets/cloudy-k1L-aZmY.js +0 -6
- langflow/frontend/assets/clover-9wPrYs0-.js +0 -6
- langflow/frontend/assets/club-Czxfd3St.js +0 -6
- langflow/frontend/assets/code-xml-CPtClBo2.js +0 -6
- langflow/frontend/assets/codepen-kxAgvgvA.js +0 -6
- langflow/frontend/assets/codesandbox-48JkoYcs.js +0 -6
- langflow/frontend/assets/coffee-WchMaWeO.js +0 -6
- langflow/frontend/assets/cog-Bkt4M04y.js +0 -6
- langflow/frontend/assets/coins-CJ4VxQxb.js +0 -6
- langflow/frontend/assets/columns-2-gJIRvHiD.js +0 -6
- langflow/frontend/assets/columns-3-91Za2kQq.js +0 -6
- langflow/frontend/assets/columns-3-cog-1YJVHWoE.js +0 -6
- langflow/frontend/assets/columns-4-BBkw9Zg6.js +0 -6
- langflow/frontend/assets/combine-BnqLlAns.js +0 -6
- langflow/frontend/assets/command-D2mXrc-p.js +0 -6
- langflow/frontend/assets/compass-B9gERr7w.js +0 -6
- langflow/frontend/assets/component-DaSz19fb.js +0 -6
- langflow/frontend/assets/computer-B7swJrTu.js +0 -6
- langflow/frontend/assets/concierge-bell-CdSgH9ky.js +0 -6
- langflow/frontend/assets/cone-CcuQIKYg.js +0 -6
- langflow/frontend/assets/construction-DhgyGiSE.js +0 -6
- langflow/frontend/assets/contact-BIJeu_J9.js +0 -6
- langflow/frontend/assets/contact-round-D_iM1wvy.js +0 -6
- langflow/frontend/assets/container-BLrXsA-m.js +0 -6
- langflow/frontend/assets/contrast-DEFAvvhZ.js +0 -6
- langflow/frontend/assets/cookie-CHwSogHF.js +0 -6
- langflow/frontend/assets/cooking-pot-D3iUj8u2.js +0 -6
- langflow/frontend/assets/copy-CwNuREWX.js +0 -6
- langflow/frontend/assets/copy-check-D3quPX4X.js +0 -6
- langflow/frontend/assets/copy-minus-C9zYd6zO.js +0 -6
- langflow/frontend/assets/copy-plus-BTb20aN4.js +0 -6
- langflow/frontend/assets/copy-slash-BRVuZVOd.js +0 -6
- langflow/frontend/assets/copy-x-DU75SNBd.js +0 -6
- langflow/frontend/assets/copyleft-Dtxh7KEo.js +0 -6
- langflow/frontend/assets/copyright-CQy2heJn.js +0 -6
- langflow/frontend/assets/corner-down-left-BoDQuj5S.js +0 -6
- langflow/frontend/assets/corner-down-right-apUyoyNA.js +0 -6
- langflow/frontend/assets/corner-left-down-Dh5dA0fk.js +0 -6
- langflow/frontend/assets/corner-left-up-CgYh0wMR.js +0 -6
- langflow/frontend/assets/corner-right-down-B9owL0Do.js +0 -6
- langflow/frontend/assets/corner-right-up-CMrbI2-d.js +0 -6
- langflow/frontend/assets/corner-up-left-CqjYa9Uv.js +0 -6
- langflow/frontend/assets/corner-up-right-BQVECb6W.js +0 -6
- langflow/frontend/assets/cpu-B6RhNtuj.js +0 -6
- langflow/frontend/assets/creative-commons-BtVZRGqV.js +0 -6
- langflow/frontend/assets/credit-card-DWjdwAWf.js +0 -6
- langflow/frontend/assets/croissant-qAQouZLG.js +0 -6
- langflow/frontend/assets/crop-DOmAVCOW.js +0 -6
- langflow/frontend/assets/cross-DXkRc22j.js +0 -6
- langflow/frontend/assets/crosshair-B6JLZ3Vx.js +0 -6
- langflow/frontend/assets/crown-CUvy0ktj.js +0 -6
- langflow/frontend/assets/cuboid-f1CibVbz.js +0 -6
- langflow/frontend/assets/cup-soda-Bt1IlYlB.js +0 -6
- langflow/frontend/assets/currency-D0L0RRED.js +0 -6
- langflow/frontend/assets/cylinder-CCprMMHe.js +0 -6
- langflow/frontend/assets/dam-Fh6j-Qfc.js +0 -6
- langflow/frontend/assets/database-DKRbMusQ.js +0 -6
- langflow/frontend/assets/database-backup-B-K32lif.js +0 -6
- langflow/frontend/assets/database-zap-VSPmpIKP.js +0 -6
- langflow/frontend/assets/decimals-arrow-left-DY7vtsGW.js +0 -6
- langflow/frontend/assets/decimals-arrow-right-CnGHroQg.js +0 -6
- langflow/frontend/assets/delete-CGD2yO4V.js +0 -6
- langflow/frontend/assets/dessert-eI1vSC2l.js +0 -6
- langflow/frontend/assets/diameter-D13_YLfb.js +0 -6
- langflow/frontend/assets/diamond-B2yFvfo2.js +0 -6
- langflow/frontend/assets/diamond-minus-BH-Avc4T.js +0 -6
- langflow/frontend/assets/diamond-percent-Dijtk8Hw.js +0 -6
- langflow/frontend/assets/diamond-plus-a6BhC0zt.js +0 -6
- langflow/frontend/assets/dice-1-CXPlHvMH.js +0 -6
- langflow/frontend/assets/dice-2-CLT6U_Lh.js +0 -6
- langflow/frontend/assets/dice-3-BJxV1W4c.js +0 -6
- langflow/frontend/assets/dice-4-Ce_vcqav.js +0 -6
- langflow/frontend/assets/dice-5-BO9ipxYh.js +0 -6
- langflow/frontend/assets/dice-6-DLN1Zl06.js +0 -6
- langflow/frontend/assets/dices-Cc_38rFb.js +0 -6
- langflow/frontend/assets/diff-BUIyH3-S.js +0 -6
- langflow/frontend/assets/disc-2-DzYUjpQ-.js +0 -6
- langflow/frontend/assets/disc-3-DAZeIh0u.js +0 -6
- langflow/frontend/assets/disc-DfRimuXy.js +0 -6
- langflow/frontend/assets/disc-album-C3g5DzCJ.js +0 -6
- langflow/frontend/assets/divide-QCSCPsoM.js +0 -6
- langflow/frontend/assets/dna-Sn3aMbqS.js +0 -6
- langflow/frontend/assets/dna-off-D2I4BOPi.js +0 -6
- langflow/frontend/assets/dock-ByKdD_Tm.js +0 -6
- langflow/frontend/assets/dog-e8Qqz08m.js +0 -6
- langflow/frontend/assets/dollar-sign-C7pnHZKm.js +0 -6
- langflow/frontend/assets/donut-BkldCOtc.js +0 -6
- langflow/frontend/assets/door-closed-XI3yg4jo.js +0 -6
- langflow/frontend/assets/door-open-D4CrkHK-.js +0 -6
- langflow/frontend/assets/dot-DBBgVHtb.js +0 -6
- langflow/frontend/assets/download-0RP7mkqc.js +0 -6
- langflow/frontend/assets/drafting-compass-Cf5UdMsb.js +0 -6
- langflow/frontend/assets/drama-BvmC4kCm.js +0 -6
- langflow/frontend/assets/dribbble-CXxeUg_k.js +0 -6
- langflow/frontend/assets/drill-CHzbrLT6.js +0 -6
- langflow/frontend/assets/droplet-mcHiEm1e.js +0 -6
- langflow/frontend/assets/droplet-off-Bip4k7cL.js +0 -6
- langflow/frontend/assets/droplets-BSoMqs46.js +0 -6
- langflow/frontend/assets/drum-5y1z3qoL.js +0 -6
- langflow/frontend/assets/drumstick-DO-dpLMz.js +0 -6
- langflow/frontend/assets/dumbbell-DaAY0ZMd.js +0 -6
- langflow/frontend/assets/ear-DEOATkGx.js +0 -6
- langflow/frontend/assets/ear-off-CkAk_Z6W.js +0 -6
- langflow/frontend/assets/earth-DUfIsOLc.js +0 -6
- langflow/frontend/assets/earth-lock-DjBR2B2w.js +0 -6
- langflow/frontend/assets/eclipse-CG5Spe7E.js +0 -6
- langflow/frontend/assets/egg-CzYmR2Eb.js +0 -6
- langflow/frontend/assets/egg-fried-CaR1xs1C.js +0 -6
- langflow/frontend/assets/egg-off-BqiRbbax.js +0 -6
- langflow/frontend/assets/ellipsis-Zb5OdEJM.js +0 -6
- langflow/frontend/assets/ellipsis-vertical-UjAFDINY.js +0 -6
- langflow/frontend/assets/equal-BN0BnQTF.js +0 -6
- langflow/frontend/assets/equal-approximately-Dy8R6sCg.js +0 -6
- langflow/frontend/assets/equal-not-BVuYG0T3.js +0 -6
- langflow/frontend/assets/eraser-IyC5f2Pg.js +0 -6
- langflow/frontend/assets/ethernet-port-CcvPnxEp.js +0 -6
- langflow/frontend/assets/euro-kvVySsWo.js +0 -6
- langflow/frontend/assets/expand-CZSEs3he.js +0 -6
- langflow/frontend/assets/eye-5XqoPBmL.js +0 -6
- langflow/frontend/assets/eye-closed-tLUeGcQl.js +0 -6
- langflow/frontend/assets/eye-off-DyvbxiJx.js +0 -6
- langflow/frontend/assets/facebook-DUtKHx_t.js +0 -6
- langflow/frontend/assets/factory-BMzxQdhr.js +0 -6
- langflow/frontend/assets/fan-Ce9beViF.js +0 -6
- langflow/frontend/assets/fast-forward-BmBdNZMt.js +0 -6
- langflow/frontend/assets/feather-DwrsAQUR.js +0 -6
- langflow/frontend/assets/fence-C28vXtQv.js +0 -6
- langflow/frontend/assets/ferris-wheel-BPCpMIZ3.js +0 -6
- langflow/frontend/assets/figma-CrjuLC3o.js +0 -6
- langflow/frontend/assets/file-775e9FsS.js +0 -6
- langflow/frontend/assets/file-archive-DvCLZ4Bd.js +0 -6
- langflow/frontend/assets/file-audio-2-D9_dkewe.js +0 -6
- langflow/frontend/assets/file-audio-CCoup7q0.js +0 -6
- langflow/frontend/assets/file-axis-3d-Way_tv-d.js +0 -6
- langflow/frontend/assets/file-badge-2-BjnvMGUB.js +0 -6
- langflow/frontend/assets/file-badge-CvDdEfsc.js +0 -6
- langflow/frontend/assets/file-box-CIR7b-wX.js +0 -6
- langflow/frontend/assets/file-chart-column-Dy-svbrO.js +0 -6
- langflow/frontend/assets/file-chart-column-increasing-BYEzzZYd.js +0 -6
- langflow/frontend/assets/file-chart-line-nssg-w6l.js +0 -6
- langflow/frontend/assets/file-chart-pie-Dy1eEqq8.js +0 -6
- langflow/frontend/assets/file-check-2-DnKCtjYa.js +0 -6
- langflow/frontend/assets/file-check-C1li3p_J.js +0 -6
- langflow/frontend/assets/file-clock-Bt8ozlbn.js +0 -6
- langflow/frontend/assets/file-code-2-DS9jmEqy.js +0 -6
- langflow/frontend/assets/file-code-X-0cj2HC.js +0 -6
- langflow/frontend/assets/file-cog-B1c6vttd.js +0 -6
- langflow/frontend/assets/file-diff-C0_1OmL8.js +0 -6
- langflow/frontend/assets/file-digit-mu3srpOU.js +0 -6
- langflow/frontend/assets/file-down-D4p_S5i4.js +0 -6
- langflow/frontend/assets/file-heart-ViSEX3tH.js +0 -6
- langflow/frontend/assets/file-image-DpX3JkBq.js +0 -6
- langflow/frontend/assets/file-input-D1yXzkMP.js +0 -6
- langflow/frontend/assets/file-json-2-CCt1zDTo.js +0 -6
- langflow/frontend/assets/file-json-keLvrAHj.js +0 -6
- langflow/frontend/assets/file-key-2-Bvx5KAUC.js +0 -6
- langflow/frontend/assets/file-key-Dwpwv-bi.js +0 -6
- langflow/frontend/assets/file-lock-2-BiG8pTpF.js +0 -6
- langflow/frontend/assets/file-lock-DyeJ_y_W.js +0 -6
- langflow/frontend/assets/file-minus-2-CPYOt8eu.js +0 -6
- langflow/frontend/assets/file-minus-CRMGvpk8.js +0 -6
- langflow/frontend/assets/file-music-WVDX8HFp.js +0 -6
- langflow/frontend/assets/file-output-1ShsYv8R.js +0 -6
- langflow/frontend/assets/file-pen-CWxE47_Z.js +0 -6
- langflow/frontend/assets/file-pen-line-184rJjYh.js +0 -6
- langflow/frontend/assets/file-plus-2-D7b5KUnz.js +0 -6
- langflow/frontend/assets/file-plus-6WosvkZk.js +0 -6
- langflow/frontend/assets/file-question-Dwf4_Wde.js +0 -6
- langflow/frontend/assets/file-scan-CiVyMyiX.js +0 -6
- langflow/frontend/assets/file-search-2-C6QsjxtT.js +0 -6
- langflow/frontend/assets/file-search-Bp2w_7MR.js +0 -6
- langflow/frontend/assets/file-sliders-NSODbjCA.js +0 -6
- langflow/frontend/assets/file-spreadsheet-DBqsagaK.js +0 -6
- langflow/frontend/assets/file-stack-DDo3st9X.js +0 -6
- langflow/frontend/assets/file-symlink-Z5TXUq6Q.js +0 -6
- langflow/frontend/assets/file-terminal-COLvqDGL.js +0 -6
- langflow/frontend/assets/file-text-COxgrRB7.js +0 -6
- langflow/frontend/assets/file-type-2-ByBSA-Vh.js +0 -6
- langflow/frontend/assets/file-type-CppSoo5t.js +0 -6
- langflow/frontend/assets/file-up-BS16X30d.js +0 -6
- langflow/frontend/assets/file-user-RmpHfsna.js +0 -6
- langflow/frontend/assets/file-video-2-CGowHWdI.js +0 -6
- langflow/frontend/assets/file-video-Bnd5OWo1.js +0 -6
- langflow/frontend/assets/file-volume-2-BCpdt1QC.js +0 -6
- langflow/frontend/assets/file-volume-BCQL9YVr.js +0 -6
- langflow/frontend/assets/file-warning-CkPrdFLk.js +0 -6
- langflow/frontend/assets/file-x-2-e4CmOLMg.js +0 -6
- langflow/frontend/assets/file-x-ByfgTRgf.js +0 -6
- langflow/frontend/assets/files-CwI6Xavy.js +0 -6
- langflow/frontend/assets/film-M3anFLzZ.js +0 -6
- langflow/frontend/assets/fingerprint-DkJhwQdn.js +0 -6
- langflow/frontend/assets/fire-extinguisher-aB3x2NBU.js +0 -6
- langflow/frontend/assets/fish-MfhZb_pI.js +0 -6
- langflow/frontend/assets/fish-off-B3YrU4bN.js +0 -6
- langflow/frontend/assets/fish-symbol-BPBDboM5.js +0 -6
- langflow/frontend/assets/flag-DPBH2KQa.js +0 -6
- langflow/frontend/assets/flag-off-B-JMfyQQ.js +0 -6
- langflow/frontend/assets/flag-triangle-left-Bax5Pi2c.js +0 -6
- langflow/frontend/assets/flag-triangle-right-C7YNhxr0.js +0 -6
- langflow/frontend/assets/flame-CWN--iwe.js +0 -6
- langflow/frontend/assets/flame-kindling-DXWIIq3U.js +0 -6
- langflow/frontend/assets/flashlight-DQw4NvfW.js +0 -6
- langflow/frontend/assets/flashlight-off-CouCcKj5.js +0 -6
- langflow/frontend/assets/flask-conical-CaMRiHi2.js +0 -6
- langflow/frontend/assets/flask-conical-off-CGtqWvwZ.js +0 -6
- langflow/frontend/assets/flask-round-By-We2UU.js +0 -6
- langflow/frontend/assets/flip-horizontal-2-Cqi9gy_Q.js +0 -6
- langflow/frontend/assets/flip-horizontal-CeX9391Y.js +0 -6
- langflow/frontend/assets/flip-vertical-2-C1oVyQ-i.js +0 -6
- langflow/frontend/assets/flip-vertical-D6in1WfD.js +0 -6
- langflow/frontend/assets/flower-2-DkiGUffp.js +0 -6
- langflow/frontend/assets/flower-BzWC05zr.js +0 -6
- langflow/frontend/assets/focus-BDb91_18.js +0 -6
- langflow/frontend/assets/fold-horizontal-CxCADeKL.js +0 -6
- langflow/frontend/assets/fold-vertical-XKHK_6gl.js +0 -6
- langflow/frontend/assets/folder-C4kr4Yii.js +0 -6
- langflow/frontend/assets/folder-archive-B2RnglTS.js +0 -6
- langflow/frontend/assets/folder-check-B18f92-T.js +0 -6
- langflow/frontend/assets/folder-clock-BvwxO4ca.js +0 -6
- langflow/frontend/assets/folder-closed-D1-y1tJX.js +0 -6
- langflow/frontend/assets/folder-code-BBQ8TLJw.js +0 -6
- langflow/frontend/assets/folder-cog-DsgTMOuN.js +0 -6
- langflow/frontend/assets/folder-dot-Bi4KPwwF.js +0 -6
- langflow/frontend/assets/folder-down-BW3L5XJB.js +0 -6
- langflow/frontend/assets/folder-git-2-DOF28Rao.js +0 -6
- langflow/frontend/assets/folder-git-CgFjGLg_.js +0 -6
- langflow/frontend/assets/folder-heart-6gTexi-_.js +0 -6
- langflow/frontend/assets/folder-input-wNYvr0vF.js +0 -6
- langflow/frontend/assets/folder-kanban-BxM_3Tba.js +0 -6
- langflow/frontend/assets/folder-key-C6y0hRNt.js +0 -6
- langflow/frontend/assets/folder-lock-DckEWHHY.js +0 -6
- langflow/frontend/assets/folder-minus-BU2HlAd9.js +0 -6
- langflow/frontend/assets/folder-open-DGO1bVJt.js +0 -6
- langflow/frontend/assets/folder-open-dot-Us4QKiZC.js +0 -6
- langflow/frontend/assets/folder-output-Cfu88Wh6.js +0 -6
- langflow/frontend/assets/folder-pen-B0uiM4Qa.js +0 -6
- langflow/frontend/assets/folder-plus-Bj8JxXqN.js +0 -6
- langflow/frontend/assets/folder-root-DfSSUXA7.js +0 -6
- langflow/frontend/assets/folder-search-2-D7BSPdpT.js +0 -6
- langflow/frontend/assets/folder-search-CJ8WwGUy.js +0 -6
- langflow/frontend/assets/folder-symlink-B56qWa2h.js +0 -6
- langflow/frontend/assets/folder-sync-B4DlI5De.js +0 -6
- langflow/frontend/assets/folder-tree-CovpJwth.js +0 -6
- langflow/frontend/assets/folder-up-AEhgOKku.js +0 -6
- langflow/frontend/assets/folder-x-CuLCnUjC.js +0 -6
- langflow/frontend/assets/folders-DJkGilme.js +0 -6
- langflow/frontend/assets/footprints-C_YamkTa.js +0 -6
- langflow/frontend/assets/forklift-Bb2m9Z9X.js +0 -6
- langflow/frontend/assets/forward-D1aRQrMC.js +0 -6
- langflow/frontend/assets/frame-B7kgJ5pk.js +0 -6
- langflow/frontend/assets/framer-C9xmBpZN.js +0 -6
- langflow/frontend/assets/frown-CODYs-DB.js +0 -6
- langflow/frontend/assets/fuel-BUC1c6xp.js +0 -6
- langflow/frontend/assets/fullscreen-D6qZ1dCZ.js +0 -6
- langflow/frontend/assets/funnel-NmGpyDBe.js +0 -6
- langflow/frontend/assets/funnel-plus-CinXg476.js +0 -6
- langflow/frontend/assets/funnel-x-Cytobkse.js +0 -6
- langflow/frontend/assets/gallery-horizontal-Dd_Oyhlh.js +0 -6
- langflow/frontend/assets/gallery-horizontal-end-Bz8VboGY.js +0 -6
- langflow/frontend/assets/gallery-thumbnails-CSByasiY.js +0 -6
- langflow/frontend/assets/gallery-vertical-BshJa-Ww.js +0 -6
- langflow/frontend/assets/gallery-vertical-end-D_zaBwZV.js +0 -6
- langflow/frontend/assets/gamepad-2-CYQNQQg9.js +0 -6
- langflow/frontend/assets/gamepad-BEWoxbkC.js +0 -6
- langflow/frontend/assets/gauge-IMlzM7Zz.js +0 -6
- langflow/frontend/assets/gavel-Di3NsTKn.js +0 -6
- langflow/frontend/assets/gem-BrsC4xPD.js +0 -6
- langflow/frontend/assets/ghost-D2uWMo1c.js +0 -6
- langflow/frontend/assets/gift-BJEYG-A4.js +0 -6
- langflow/frontend/assets/git-branch-BN8nBxYI.js +0 -6
- langflow/frontend/assets/git-branch-plus-B9V5vY5I.js +0 -6
- langflow/frontend/assets/git-commit-horizontal-BRv_Mvgr.js +0 -6
- langflow/frontend/assets/git-commit-vertical-Bj8QydSr.js +0 -6
- langflow/frontend/assets/git-compare-BdkAjRpn.js +0 -6
- langflow/frontend/assets/git-compare-arrows-BH5e4pQK.js +0 -6
- langflow/frontend/assets/git-fork-DSpd2wcF.js +0 -6
- langflow/frontend/assets/git-graph-BciM89t9.js +0 -6
- langflow/frontend/assets/git-merge-CInir8lX.js +0 -6
- langflow/frontend/assets/git-pull-request-DlZtAKT0.js +0 -6
- langflow/frontend/assets/git-pull-request-arrow-CYfhUyQZ.js +0 -6
- langflow/frontend/assets/git-pull-request-closed-BsIWaKg9.js +0 -6
- langflow/frontend/assets/git-pull-request-create-DdvEC6GD.js +0 -6
- langflow/frontend/assets/git-pull-request-create-arrow-DmoLW0L2.js +0 -6
- langflow/frontend/assets/git-pull-request-draft-CxPKYdCn.js +0 -6
- langflow/frontend/assets/github-C6bhzgOH.js +0 -6
- langflow/frontend/assets/gitlab-rQ7eE7z0.js +0 -6
- langflow/frontend/assets/glass-water-CLnYoscl.js +0 -6
- langflow/frontend/assets/glasses-DCkfO2Zg.js +0 -6
- langflow/frontend/assets/globe-BpOkFfqi.js +0 -6
- langflow/frontend/assets/globe-lock-DLO0UL5k.js +0 -6
- langflow/frontend/assets/goal-C4i0Tmci.js +0 -6
- langflow/frontend/assets/grab-CI8OiCgx.js +0 -6
- langflow/frontend/assets/graduation-cap-B8X2Bs26.js +0 -6
- langflow/frontend/assets/grape-CRxw6ljU.js +0 -6
- langflow/frontend/assets/grid-2x2-D8bDkG_F.js +0 -6
- langflow/frontend/assets/grid-2x2-check-ry9ms7kr.js +0 -6
- langflow/frontend/assets/grid-2x2-plus-BBgrN9WP.js +0 -6
- langflow/frontend/assets/grid-2x2-x-DDei7ORU.js +0 -6
- langflow/frontend/assets/grid-3x3-BHXVk3AI.js +0 -6
- langflow/frontend/assets/grip-BXaaYhK_.js +0 -6
- langflow/frontend/assets/grip-horizontal-DOo9psID.js +0 -6
- langflow/frontend/assets/grip-vertical-Yru2-H-3.js +0 -6
- langflow/frontend/assets/group-CjFb75Jl.js +0 -6
- langflow/frontend/assets/guitar-6C2vdiFb.js +0 -6
- langflow/frontend/assets/ham-BTttcqse.js +0 -6
- langflow/frontend/assets/hammer-B8kElYjx.js +0 -6
- langflow/frontend/assets/hand-7mR0KOU8.js +0 -6
- langflow/frontend/assets/hand-coins-D5bXR1qE.js +0 -6
- langflow/frontend/assets/hand-heart-Bf_qk4AJ.js +0 -6
- langflow/frontend/assets/hand-helping-DwPTCwCz.js +0 -6
- langflow/frontend/assets/hand-metal-CdPh6gkj.js +0 -6
- langflow/frontend/assets/hand-platter-iTTTCgch.js +0 -6
- langflow/frontend/assets/handshake-DEKKKmFA.js +0 -6
- langflow/frontend/assets/hard-drive-DwWsOW-s.js +0 -6
- langflow/frontend/assets/hard-drive-download-CZ952Fw0.js +0 -6
- langflow/frontend/assets/hard-drive-upload-C3C6VQ91.js +0 -6
- langflow/frontend/assets/hard-hat-bT5D4G2Q.js +0 -6
- langflow/frontend/assets/hash-CSioKy0P.js +0 -6
- langflow/frontend/assets/haze-C_6eoFr9.js +0 -6
- langflow/frontend/assets/hdmi-port-BrAKz3tl.js +0 -6
- langflow/frontend/assets/heading-1-Cm4uwsSQ.js +0 -6
- langflow/frontend/assets/heading-2-eFZ1zYX5.js +0 -6
- langflow/frontend/assets/heading-3-CnsMyMTO.js +0 -6
- langflow/frontend/assets/heading-4-Bj3lqLc1.js +0 -6
- langflow/frontend/assets/heading-5-B5VefvDM.js +0 -6
- langflow/frontend/assets/heading-6-CvMLWdpc.js +0 -6
- langflow/frontend/assets/heading-Cn8wA1K8.js +0 -6
- langflow/frontend/assets/headphone-off-B3nJD_Av.js +0 -6
- langflow/frontend/assets/headphones-CGVnX7E9.js +0 -6
- langflow/frontend/assets/headset-DwzCWj9O.js +0 -6
- langflow/frontend/assets/heart-D4LLBQB9.js +0 -6
- langflow/frontend/assets/heart-crack-BhDDBIpE.js +0 -6
- langflow/frontend/assets/heart-handshake-CToIE0FU.js +0 -6
- langflow/frontend/assets/heart-minus-CoXH9SAu.js +0 -6
- langflow/frontend/assets/heart-off-BcREpstq.js +0 -6
- langflow/frontend/assets/heart-plus-Bf3OK1pt.js +0 -6
- langflow/frontend/assets/heart-pulse-CbkUJVNa.js +0 -6
- langflow/frontend/assets/heater-DD8DZ6At.js +0 -6
- langflow/frontend/assets/hexagon-DZnqx_O5.js +0 -6
- langflow/frontend/assets/highlighter-ChtNrau4.js +0 -6
- langflow/frontend/assets/history-B6O21AGa.js +0 -6
- langflow/frontend/assets/hop-DC6q-iit.js +0 -6
- langflow/frontend/assets/hop-off-B881EoK_.js +0 -6
- langflow/frontend/assets/hospital-_I9yNusu.js +0 -6
- langflow/frontend/assets/hotel-M6hj2WnQ.js +0 -6
- langflow/frontend/assets/hourglass-Cic7XeB_.js +0 -6
- langflow/frontend/assets/house-BUHY4X5A.js +0 -6
- langflow/frontend/assets/house-plug-yG_gTn3T.js +0 -6
- langflow/frontend/assets/house-plus-BByw5g5k.js +0 -6
- langflow/frontend/assets/house-wifi-DYmeNpbK.js +0 -6
- langflow/frontend/assets/ice-cream-bowl-BggIogGa.js +0 -6
- langflow/frontend/assets/ice-cream-cone-B5wkhWeA.js +0 -6
- langflow/frontend/assets/id-card-Bfy0HSx5.js +0 -6
- langflow/frontend/assets/image-DSL4UUHn.js +0 -6
- langflow/frontend/assets/image-down-DmwX5RE8.js +0 -6
- langflow/frontend/assets/image-minus-D1B7qEbk.js +0 -6
- langflow/frontend/assets/image-off-8TF7LUuy.js +0 -6
- langflow/frontend/assets/image-play-TBf432Ol.js +0 -6
- langflow/frontend/assets/image-plus-B2_YnhBR.js +0 -6
- langflow/frontend/assets/image-up-CfC1AKHj.js +0 -6
- langflow/frontend/assets/image-upscale-QQ6bmkYu.js +0 -6
- langflow/frontend/assets/images-BCDCCNB_.js +0 -6
- langflow/frontend/assets/import-O8KNetzv.js +0 -6
- langflow/frontend/assets/inbox-CaxjVG6P.js +0 -6
- langflow/frontend/assets/indent-decrease-CJ4hfRcn.js +0 -6
- langflow/frontend/assets/indent-increase-Cu9yDmbp.js +0 -6
- langflow/frontend/assets/index--3gV7rCD.js +0 -1
- langflow/frontend/assets/index-0YKmtVW6.js +0 -1
- langflow/frontend/assets/index-0mWG3PZo.js +0 -1
- langflow/frontend/assets/index-1H6ZgCyv.js +0 -1
- langflow/frontend/assets/index-2_a5igZb.js +0 -1
- langflow/frontend/assets/index-4HG7wLAf.js +0 -1
- langflow/frontend/assets/index-6WS40jWN.js +0 -1
- langflow/frontend/assets/index-74K4GOMO.js +0 -1
- langflow/frontend/assets/index-8TKmKX-5.js +0 -1
- langflow/frontend/assets/index-A9b6ZfHf.js +0 -1
- langflow/frontend/assets/index-B0bSADPk.js +0 -1
- langflow/frontend/assets/index-B3eP4cUB.js +0 -1
- langflow/frontend/assets/index-B40iEZ9U.js +0 -1
- langflow/frontend/assets/index-B4NxF5gq.js +0 -1
- langflow/frontend/assets/index-B5NxWXI_.js +0 -1
- langflow/frontend/assets/index-B5xkE5Dp.js +0 -185
- langflow/frontend/assets/index-B7YfhZGf.js +0 -1
- langflow/frontend/assets/index-B8LNFr4a.js +0 -1
- langflow/frontend/assets/index-B9FJd-7v.js +0 -1
- langflow/frontend/assets/index-B9LPAgT7.js +0 -1
- langflow/frontend/assets/index-B9LtaQjA.js +0 -1
- langflow/frontend/assets/index-BADDEMXw.js +0 -1
- langflow/frontend/assets/index-BBsghJUT.js +0 -1
- langflow/frontend/assets/index-BCDXXreA.js +0 -1
- langflow/frontend/assets/index-BCVK3zTe.js +0 -1
- langflow/frontend/assets/index-BFC4khO6.js +0 -1
- langflow/frontend/assets/index-BI2VzYOd.js +0 -1
- langflow/frontend/assets/index-BIjCQDQH.js +0 -1
- langflow/frontend/assets/index-BLsmS-RO.js +0 -7
- langflow/frontend/assets/index-BLtkDnaL.css +0 -1
- langflow/frontend/assets/index-BLuEFOWC.js +0 -281
- langflow/frontend/assets/index-BM2YzGYb.js +0 -1
- langflow/frontend/assets/index-BMUtLdUf.js +0 -1
- langflow/frontend/assets/index-BNB45uNs.js +0 -1
- langflow/frontend/assets/index-BOs02Xm7.js +0 -1
- langflow/frontend/assets/index-BOyK_V6Y.js +0 -1
- langflow/frontend/assets/index-BP_8EDe_.js +0 -1
- langflow/frontend/assets/index-BSf9WcPF.js +0 -1
- langflow/frontend/assets/index-BUoqrFjF.js +0 -1
- langflow/frontend/assets/index-BWEOo0An.js +0 -1
- langflow/frontend/assets/index-BX2NSIP7.js +0 -1
- langflow/frontend/assets/index-BX4kfz-h.js +0 -1
- langflow/frontend/assets/index-BXsbGYTZ.js +0 -1
- langflow/frontend/assets/index-BZ118y8y.js +0 -1
- langflow/frontend/assets/index-B_5ttNw_.js +0 -1
- langflow/frontend/assets/index-Bb6VCv4x.js +0 -1
- langflow/frontend/assets/index-BbDjIh3p.js +0 -1
- langflow/frontend/assets/index-Be6iW0kT.js +0 -1
- langflow/frontend/assets/index-BfkUC5sq.js +0 -1
- langflow/frontend/assets/index-BhW3dn9V.js +0 -1
- langflow/frontend/assets/index-BiteWVAf.js +0 -1
- langflow/frontend/assets/index-BjMPvpmE.js +0 -1
- langflow/frontend/assets/index-BjQCXmxz.js +0 -1
- langflow/frontend/assets/index-Bk3EWRyC.js +0 -381
- langflow/frontend/assets/index-BkLZjjF-.js +0 -1
- langflow/frontend/assets/index-BlKubfyS.js +0 -205
- langflow/frontend/assets/index-Br2_x2Sb.js +0 -767
- langflow/frontend/assets/index-BsAX4xrP.js +0 -1
- langflow/frontend/assets/index-Bt7PA0RM.js +0 -1
- langflow/frontend/assets/index-Btzsi1-V.js +0 -1
- langflow/frontend/assets/index-BvigoCn0.js +0 -108
- langflow/frontend/assets/index-BxAMRMAU.js +0 -1
- langflow/frontend/assets/index-BxvBRm2_.js +0 -1
- langflow/frontend/assets/index-C-rzMfJg.js +0 -1
- langflow/frontend/assets/index-C0i80GG8.js +0 -1
- langflow/frontend/assets/index-C0lIHsbS.js +0 -1
- langflow/frontend/assets/index-C6c-Yen7.js +0 -1
- langflow/frontend/assets/index-C7_U2_ZM.js +0 -7322
- langflow/frontend/assets/index-C7zZGqlQ.js +0 -1
- langflow/frontend/assets/index-CC1WVKVn.js +0 -1
- langflow/frontend/assets/index-CD6CpHXs.js +0 -1
- langflow/frontend/assets/index-CDdR2nB4.js +0 -1
- langflow/frontend/assets/index-CE3xUvpF.js +0 -1
- langflow/frontend/assets/index-CECINQe4.js +0 -1
- langflow/frontend/assets/index-CGuQN8g5.js +0 -1
- langflow/frontend/assets/index-CK6xR2Dk.js +0 -1
- langflow/frontend/assets/index-CLIsd6aw.js +0 -1
- langflow/frontend/assets/index-CMVgrBIO.js +0 -1
- langflow/frontend/assets/index-CMVxBPvf.js +0 -1
- langflow/frontend/assets/index-CNveoZuD.js +0 -1
- langflow/frontend/assets/index-CODoMRwd.js +0 -1
- langflow/frontend/assets/index-CP5_2aSr.js +0 -1
- langflow/frontend/assets/index-CS2p65kX.js +0 -1
- langflow/frontend/assets/index-CS85Qssq.js +0 -1
- langflow/frontend/assets/index-CSjRBQo9.js +0 -1
- langflow/frontend/assets/index-CTLk1uys.js +0 -1
- langflow/frontend/assets/index-CVHTBHe8.js +0 -1
- langflow/frontend/assets/index-CWMKfQPi.js +0 -1
- langflow/frontend/assets/index-CXPZRRbs.js +0 -1
- langflow/frontend/assets/index-CXwNq39y.js +0 -1
- langflow/frontend/assets/index-CYsaz2n6.js +0 -1
- langflow/frontend/assets/index-Cai7opH_.js +0 -1
- langflow/frontend/assets/index-CbDaouuG.js +0 -1
- langflow/frontend/assets/index-CbgddlPN.js +0 -1
- langflow/frontend/assets/index-Ccr7CgJi.js +0 -1
- langflow/frontend/assets/index-CdB1B3_j.js +0 -1
- langflow/frontend/assets/index-CfEtvlIY.js +0 -1
- langflow/frontend/assets/index-Cfo5O_SK.js +0 -1
- langflow/frontend/assets/index-CgXa5sTr.js +0 -1
- langflow/frontend/assets/index-ChxlOA_I.js +0 -1
- langflow/frontend/assets/index-CiL800BL.js +0 -1
- langflow/frontend/assets/index-CiQjjlbl.js +0 -495
- langflow/frontend/assets/index-Ck3ev9I6.js +0 -1
- langflow/frontend/assets/index-Ck74ZEbx.js +0 -1
- langflow/frontend/assets/index-Ck_RuENf.js +0 -1
- langflow/frontend/assets/index-ClHmEQtn.js +0 -1
- langflow/frontend/assets/index-CmSP2bv6.js +0 -1
- langflow/frontend/assets/index-Cn3UZ1a5.js +0 -1
- langflow/frontend/assets/index-CoZ4T4md.js +0 -1
- langflow/frontend/assets/index-CrAA9e94.js +0 -1
- langflow/frontend/assets/index-CrHrTxY3.js +0 -1
- langflow/frontend/assets/index-CxjsVmbN.js +0 -1
- langflow/frontend/assets/index-Cz9OqsuF.js +0 -399
- langflow/frontend/assets/index-D-QNoyxA.js +0 -1
- langflow/frontend/assets/index-D-Yw-cAX.js +0 -1
- langflow/frontend/assets/index-D247NBZ_.js +0 -1
- langflow/frontend/assets/index-D31Bu6tT.js +0 -1
- langflow/frontend/assets/index-D3i5bEw0.js +0 -1
- langflow/frontend/assets/index-D5ooBhm5.js +0 -1
- langflow/frontend/assets/index-D6z0Xyqf.js +0 -1
- langflow/frontend/assets/index-D822mY-E.js +0 -1
- langflow/frontend/assets/index-DA6SD-VO.js +0 -1
- langflow/frontend/assets/index-DBjIKmb3.js +0 -1
- langflow/frontend/assets/index-DEBCKV0u.js +0 -1
- langflow/frontend/assets/index-DJ83-A6j.js +0 -1
- langflow/frontend/assets/index-DJFCvst2.js +0 -1
- langflow/frontend/assets/index-DOb6iHVe.js +0 -1
- langflow/frontend/assets/index-DQ8pea33.js +0 -1
- langflow/frontend/assets/index-DQF09isZ.js +0 -1
- langflow/frontend/assets/index-DQZqSAUz.js +0 -1
- langflow/frontend/assets/index-DRZ-m5J8.js +0 -1
- langflow/frontend/assets/index-DSOzljGe.js +0 -21
- langflow/frontend/assets/index-DT5Gj8Hy.js +0 -1
- langflow/frontend/assets/index-DTnR1pfr.js +0 -1
- langflow/frontend/assets/index-DU5zlPfd.js +0 -1
- langflow/frontend/assets/index-DVKOYHlY.js +0 -1
- langflow/frontend/assets/index-DYTRIosc.js +0 -1
- langflow/frontend/assets/index-DchlI23-.js +0 -1
- langflow/frontend/assets/index-Ddscyq5K.js +0 -1
- langflow/frontend/assets/index-Dg7xB1bS.js +0 -1
- langflow/frontend/assets/index-DgMVj5wD.js +0 -1
- langflow/frontend/assets/index-DhLTa2H-.js +0 -13
- langflow/frontend/assets/index-DiLXwFnx.js +0 -1
- langflow/frontend/assets/index-DicUsAP7.js +0 -1
- langflow/frontend/assets/index-DjsXS0eD.js +0 -1
- langflow/frontend/assets/index-DlVOavxp.js +0 -1
- langflow/frontend/assets/index-DmFO-jtr.js +0 -1
- langflow/frontend/assets/index-Dperwg8a.js +0 -1
- langflow/frontend/assets/index-Dprjlr2r.js +0 -1
- langflow/frontend/assets/index-DuSsA-8a.js +0 -1
- langflow/frontend/assets/index-DyDX-PtY.js +0 -1
- langflow/frontend/assets/index-DyfjRUTO.js +0 -1
- langflow/frontend/assets/index-DzNHMPVR.js +0 -1
- langflow/frontend/assets/index-EO5jfG_p.js +0 -1
- langflow/frontend/assets/index-IAMHthNG.js +0 -1
- langflow/frontend/assets/index-LByp0vrK.js +0 -1
- langflow/frontend/assets/index-LOgjizon.js +0 -1
- langflow/frontend/assets/index-Lf-EjJVl.js +0 -1
- langflow/frontend/assets/index-M1IRQt_Q.js +0 -1
- langflow/frontend/assets/index-MTLgayGT.js +0 -2
- langflow/frontend/assets/index-Ng1NKN_z.js +0 -1
- langflow/frontend/assets/index-O57qTeHw.js +0 -1
- langflow/frontend/assets/index-OMQVVDm6.js +0 -1
- langflow/frontend/assets/index-PcvnBUF3.js +0 -1
- langflow/frontend/assets/index-RlVff2u1.js +0 -1
- langflow/frontend/assets/index-SHsaTYxY.js +0 -1
- langflow/frontend/assets/index-TDwWWvr2.js +0 -1
- langflow/frontend/assets/index-UEkc8KhM.js +0 -1
- langflow/frontend/assets/index-UjNKqj38.js +0 -127
- langflow/frontend/assets/index-W4HR3lti.js +0 -1
- langflow/frontend/assets/index-WEUJ9tXZ.js +0 -1
- langflow/frontend/assets/index-XMBsUtbe.js +0 -1
- langflow/frontend/assets/index-XymNA0xd.js +0 -1
- langflow/frontend/assets/index-_85X7JuF.js +0 -1
- langflow/frontend/assets/index-_lGgW6DK.js +0 -1
- langflow/frontend/assets/index-e32RF9qm.js +0 -1
- langflow/frontend/assets/index-eWgvebzR.js +0 -20
- langflow/frontend/assets/index-lhxpdMtR.js +0 -1
- langflow/frontend/assets/index-qYcmTfA2.js +0 -1
- langflow/frontend/assets/index-r_z6jw3I.js +0 -1
- langflow/frontend/assets/index-u5-4KBZb.js +0 -1
- langflow/frontend/assets/index-uUxZTu1H.js +0 -1
- langflow/frontend/assets/index-wTI74G_l.js +0 -1
- langflow/frontend/assets/index-zRmak2Vu.js +0 -1
- langflow/frontend/assets/indian-rupee-BJgxlYc5.js +0 -6
- langflow/frontend/assets/infinity-C7IeWGAo.js +0 -6
- langflow/frontend/assets/info-D9iPSDPH.js +0 -6
- langflow/frontend/assets/inspection-panel-CQyCpPK3.js +0 -6
- langflow/frontend/assets/instagram-DSTYbTEX.js +0 -6
- langflow/frontend/assets/italic-xycmyUQ8.js +0 -6
- langflow/frontend/assets/iteration-ccw-YCcbhGC_.js +0 -6
- langflow/frontend/assets/iteration-cw-DUevi2KD.js +0 -6
- langflow/frontend/assets/japanese-yen-ydgkmwhN.js +0 -6
- langflow/frontend/assets/joystick-kXjyInjJ.js +0 -6
- langflow/frontend/assets/kanban-W5UQy_jy.js +0 -6
- langflow/frontend/assets/key-3GDozPgJ.js +0 -6
- langflow/frontend/assets/key-round-vs89v3Jh.js +0 -6
- langflow/frontend/assets/key-square-DS6MUEvP.js +0 -6
- langflow/frontend/assets/keyboard-DLezeASj.js +0 -6
- langflow/frontend/assets/keyboard-music-DXFCFuQf.js +0 -6
- langflow/frontend/assets/keyboard-off-DZoaddpG.js +0 -6
- langflow/frontend/assets/lamp-DjzhF5wP.js +0 -6
- langflow/frontend/assets/lamp-ceiling-oz5DIV4I.js +0 -6
- langflow/frontend/assets/lamp-desk-DSvj5OJD.js +0 -6
- langflow/frontend/assets/lamp-floor-Crf1KlYg.js +0 -6
- langflow/frontend/assets/lamp-wall-down-C9EIJjho.js +0 -6
- langflow/frontend/assets/lamp-wall-up-sfszju7d.js +0 -6
- langflow/frontend/assets/land-plot-ChdFk66-.js +0 -6
- langflow/frontend/assets/landmark-B6JkXgpA.js +0 -6
- langflow/frontend/assets/languages-BGnyv8im.js +0 -6
- langflow/frontend/assets/laptop-DeMiO2Fc.js +0 -6
- langflow/frontend/assets/laptop-minimal-BSKEiZu7.js +0 -6
- langflow/frontend/assets/laptop-minimal-check-DzrqcbdL.js +0 -6
- langflow/frontend/assets/lasso-CiP2Lrto.js +0 -6
- langflow/frontend/assets/lasso-select-BmKysTFZ.js +0 -6
- langflow/frontend/assets/laugh-DY9685iy.js +0 -6
- langflow/frontend/assets/layers-2-DmgK8VJ2.js +0 -6
- langflow/frontend/assets/layers-C7s3_aAR.js +0 -6
- langflow/frontend/assets/layout-dashboard-CJUf-VVz.js +0 -6
- langflow/frontend/assets/layout-grid-rNmCwSL-.js +0 -6
- langflow/frontend/assets/layout-list-DJ-6dA3E.js +0 -6
- langflow/frontend/assets/layout-panel-left-Bkx3-XKI.js +0 -6
- langflow/frontend/assets/layout-panel-top-Bq_5HbL2.js +0 -6
- langflow/frontend/assets/layout-template-BQ9KU4kY.js +0 -6
- langflow/frontend/assets/lazyIconImports-C-AI1paP.js +0 -2
- langflow/frontend/assets/leaf-CKRO-uXn.js +0 -6
- langflow/frontend/assets/leafy-green-TYJKJuSE.js +0 -6
- langflow/frontend/assets/lectern-D7WzgpCI.js +0 -6
- langflow/frontend/assets/letter-text-DyOpunwi.js +0 -6
- langflow/frontend/assets/library-Ba2WQdb9.js +0 -6
- langflow/frontend/assets/library-big-BDb88yZU.js +0 -6
- langflow/frontend/assets/life-buoy-CpMkiuL0.js +0 -6
- langflow/frontend/assets/ligature-bgH58XUI.js +0 -6
- langflow/frontend/assets/lightbulb-BdsTMQxl.js +0 -6
- langflow/frontend/assets/lightbulb-off-rbyDvWRe.js +0 -6
- langflow/frontend/assets/link-2-DhTbbEz_.js +0 -6
- langflow/frontend/assets/link-2-off-BfETUtEz.js +0 -6
- langflow/frontend/assets/link-CcQZ1jfw.js +0 -6
- langflow/frontend/assets/linkedin-CEyAFVAH.js +0 -6
- langflow/frontend/assets/list-BnJMbteE.js +0 -6
- langflow/frontend/assets/list-check-Bse5eS25.js +0 -6
- langflow/frontend/assets/list-checks-CUW1X6ey.js +0 -6
- langflow/frontend/assets/list-collapse-cPLboM87.js +0 -6
- langflow/frontend/assets/list-end-CWzEITqO.js +0 -6
- langflow/frontend/assets/list-filter-VBnrg6Gr.js +0 -6
- langflow/frontend/assets/list-filter-plus-wA0ooYg5.js +0 -6
- langflow/frontend/assets/list-minus-BlaNdM3S.js +0 -6
- langflow/frontend/assets/list-music-DR80y7Ig.js +0 -6
- langflow/frontend/assets/list-ordered-vvaKlmpG.js +0 -6
- langflow/frontend/assets/list-plus-DLxI1GLR.js +0 -6
- langflow/frontend/assets/list-restart-C2akjdn9.js +0 -6
- langflow/frontend/assets/list-start-Dveai694.js +0 -6
- langflow/frontend/assets/list-todo-DnYIEpys.js +0 -6
- langflow/frontend/assets/list-tree-D8H7QJY8.js +0 -6
- langflow/frontend/assets/list-video-dtp8GdM4.js +0 -6
- langflow/frontend/assets/list-x-Xc73BW9W.js +0 -6
- langflow/frontend/assets/loader-BG5SqKap.js +0 -6
- langflow/frontend/assets/loader-circle-BV9FnS4J.js +0 -6
- langflow/frontend/assets/loader-pinwheel-BY76cSBp.js +0 -6
- langflow/frontend/assets/locate-_oqqNc-F.js +0 -6
- langflow/frontend/assets/locate-fixed-CpYE2lNA.js +0 -6
- langflow/frontend/assets/locate-off-D6BkCdaZ.js +0 -6
- langflow/frontend/assets/location-edit-DUGWeEBn.js +0 -6
- langflow/frontend/assets/lock-CIIECZ_y.js +0 -6
- langflow/frontend/assets/lock-keyhole-B84UqGHZ.js +0 -6
- langflow/frontend/assets/lock-keyhole-open-D1csvcxJ.js +0 -6
- langflow/frontend/assets/lock-open-CibuEOd1.js +0 -6
- langflow/frontend/assets/log-in-CIJC28Zs.js +0 -6
- langflow/frontend/assets/log-out-BMcpuxgZ.js +0 -6
- langflow/frontend/assets/logs-BundlPcG.js +0 -6
- langflow/frontend/assets/lollipop-M0ZWNRGZ.js +0 -6
- langflow/frontend/assets/luggage-BHDmxakx.js +0 -6
- langflow/frontend/assets/magnet-BbzHhtcX.js +0 -6
- langflow/frontend/assets/mail-DsI1b2Sl.js +0 -6
- langflow/frontend/assets/mail-check-c6DAqMCJ.js +0 -6
- langflow/frontend/assets/mail-minus-B_ORq69v.js +0 -6
- langflow/frontend/assets/mail-open-DkF2gbv0.js +0 -6
- langflow/frontend/assets/mail-plus-DLy6lDZ-.js +0 -6
- langflow/frontend/assets/mail-question-BniWlEow.js +0 -6
- langflow/frontend/assets/mail-search-CiM15Y-A.js +0 -6
- langflow/frontend/assets/mail-warning-B2PzAYxL.js +0 -6
- langflow/frontend/assets/mail-x-CkVyqbro.js +0 -6
- langflow/frontend/assets/mailbox-CzZCaasz.js +0 -6
- langflow/frontend/assets/mails-DbRz1ZoE.js +0 -6
- langflow/frontend/assets/map-DiIIng_l.js +0 -6
- langflow/frontend/assets/map-pin-CRfNVjwo.js +0 -6
- langflow/frontend/assets/map-pin-check-CD5ECGah.js +0 -6
- langflow/frontend/assets/map-pin-check-inside-B14Btfhp.js +0 -6
- langflow/frontend/assets/map-pin-house-BGwkPK11.js +0 -6
- langflow/frontend/assets/map-pin-minus-B7LyQKwD.js +0 -6
- langflow/frontend/assets/map-pin-minus-inside-DYmfeZ52.js +0 -6
- langflow/frontend/assets/map-pin-off-CclKjFO4.js +0 -6
- langflow/frontend/assets/map-pin-plus-CejWQmbJ.js +0 -6
- langflow/frontend/assets/map-pin-plus-inside-BzNva5vZ.js +0 -6
- langflow/frontend/assets/map-pin-x-CQJuOeTu.js +0 -6
- langflow/frontend/assets/map-pin-x-inside-BkS7wNzk.js +0 -6
- langflow/frontend/assets/map-pinned-CYl_mWai.js +0 -6
- langflow/frontend/assets/map-plus-D-4QggmL.js +0 -6
- langflow/frontend/assets/mars-l8Z9FjFm.js +0 -6
- langflow/frontend/assets/mars-stroke-DKRIIW3K.js +0 -6
- langflow/frontend/assets/martini-DLaGHwAE.js +0 -6
- langflow/frontend/assets/maximize-2-CgRJ-WxU.js +0 -6
- langflow/frontend/assets/maximize-BE9yszgs.js +0 -6
- langflow/frontend/assets/medal-cxx0uQk1.js +0 -6
- langflow/frontend/assets/megaphone-BWeA_icL.js +0 -6
- langflow/frontend/assets/megaphone-off-AutSYw6s.js +0 -6
- langflow/frontend/assets/meh-aZfQLyJo.js +0 -6
- langflow/frontend/assets/memory-stick-CoBt60ML.js +0 -6
- langflow/frontend/assets/menu-DQfCjGlO.js +0 -6
- langflow/frontend/assets/merge-vWcRachC.js +0 -6
- langflow/frontend/assets/message-circle-BTcAV-Ej.js +0 -6
- langflow/frontend/assets/message-circle-code-BDY4aQ-e.js +0 -6
- langflow/frontend/assets/message-circle-dashed-BUYXqXrB.js +0 -6
- langflow/frontend/assets/message-circle-heart-CD7H6LOP.js +0 -6
- langflow/frontend/assets/message-circle-more-D74dNSRA.js +0 -6
- langflow/frontend/assets/message-circle-off-AR3f4YvB.js +0 -6
- langflow/frontend/assets/message-circle-plus-HH66gkm5.js +0 -6
- langflow/frontend/assets/message-circle-question-BZD1Wrwu.js +0 -6
- langflow/frontend/assets/message-circle-reply-CLC2HEtB.js +0 -6
- langflow/frontend/assets/message-circle-warning-Co_yXv8R.js +0 -6
- langflow/frontend/assets/message-circle-x-BTxHj511.js +0 -6
- langflow/frontend/assets/message-square-CyQWJT3j.js +0 -6
- langflow/frontend/assets/message-square-code-DEXlyRbL.js +0 -6
- langflow/frontend/assets/message-square-dashed-CFbzDEOq.js +0 -6
- langflow/frontend/assets/message-square-diff-Co-qYuXQ.js +0 -6
- langflow/frontend/assets/message-square-dot-D9tS90jO.js +0 -6
- langflow/frontend/assets/message-square-heart-CFbt0_VY.js +0 -6
- langflow/frontend/assets/message-square-lock-DL3Dm5hQ.js +0 -6
- langflow/frontend/assets/message-square-more-DlSudYPp.js +0 -6
- langflow/frontend/assets/message-square-off-DR0EpX-c.js +0 -6
- langflow/frontend/assets/message-square-plus-pAt43OIO.js +0 -6
- langflow/frontend/assets/message-square-quote-BhsYThYn.js +0 -6
- langflow/frontend/assets/message-square-reply-Dg8LKJw9.js +0 -6
- langflow/frontend/assets/message-square-share-C_k-Lwv7.js +0 -6
- langflow/frontend/assets/message-square-text-BBbOWAb7.js +0 -6
- langflow/frontend/assets/message-square-warning-BIJF4XM_.js +0 -6
- langflow/frontend/assets/message-square-x-CwH3LJhW.js +0 -6
- langflow/frontend/assets/messages-square-CPsbQ3bl.js +0 -6
- langflow/frontend/assets/mic-CccM8OCN.js +0 -6
- langflow/frontend/assets/mic-off-BvN8E_Di.js +0 -6
- langflow/frontend/assets/mic-vocal-CWFRkDl6.js +0 -6
- langflow/frontend/assets/microchip-D8fQeuL5.js +0 -6
- langflow/frontend/assets/microscope-BsB19BJX.js +0 -6
- langflow/frontend/assets/microwave-DX4tH5rB.js +0 -6
- langflow/frontend/assets/milestone-B7_-oO9w.js +0 -6
- langflow/frontend/assets/milk-CX8Tqzn5.js +0 -6
- langflow/frontend/assets/milk-off-DLhtA-bN.js +0 -6
- langflow/frontend/assets/minimize-2-CuZ8X4DU.js +0 -6
- langflow/frontend/assets/minimize-DyV-cO4j.js +0 -6
- langflow/frontend/assets/monitor-BIFDRVT-.js +0 -6
- langflow/frontend/assets/monitor-check-BqZjAu3A.js +0 -6
- langflow/frontend/assets/monitor-cog-BWufeT7Q.js +0 -6
- langflow/frontend/assets/monitor-dot-DtFwhKid.js +0 -6
- langflow/frontend/assets/monitor-down-a1FPnquS.js +0 -6
- langflow/frontend/assets/monitor-off-CFZ3Bcia.js +0 -6
- langflow/frontend/assets/monitor-pause-BhdR0uGT.js +0 -6
- langflow/frontend/assets/monitor-play-LfxY_Ou4.js +0 -6
- langflow/frontend/assets/monitor-smartphone-B6QFV7Gp.js +0 -6
- langflow/frontend/assets/monitor-speaker-3dv39rE8.js +0 -6
- langflow/frontend/assets/monitor-stop-Dmu-dlu7.js +0 -6
- langflow/frontend/assets/monitor-up-zDpfxNPD.js +0 -6
- langflow/frontend/assets/monitor-x-BAp987wG.js +0 -6
- langflow/frontend/assets/moon-czBu3_xv.js +0 -6
- langflow/frontend/assets/moon-star-gEbYeYbK.js +0 -6
- langflow/frontend/assets/mountain-BXYJ77Rn.js +0 -6
- langflow/frontend/assets/mountain-snow-B653pqAn.js +0 -6
- langflow/frontend/assets/mouse-off-0aif-NJL.js +0 -6
- langflow/frontend/assets/mouse-pointer-2-epUIV-er.js +0 -6
- langflow/frontend/assets/mouse-pointer-ban-1xsxr2Cn.js +0 -6
- langflow/frontend/assets/mouse-pointer-click-syh3orrJ.js +0 -6
- langflow/frontend/assets/mouse-pointer-e26nfqwR.js +0 -6
- langflow/frontend/assets/mouse-s8bNpYm0.js +0 -6
- langflow/frontend/assets/move-3d-BvtPL499.js +0 -6
- langflow/frontend/assets/move-DvVQsW2_.js +0 -6
- langflow/frontend/assets/move-diagonal-2-CW3Jv6He.js +0 -6
- langflow/frontend/assets/move-diagonal-BgPsj6d3.js +0 -6
- langflow/frontend/assets/move-down-BLyzLZPr.js +0 -6
- langflow/frontend/assets/move-down-left-CdmUNW0U.js +0 -6
- langflow/frontend/assets/move-down-right-CxXmXUca.js +0 -6
- langflow/frontend/assets/move-horizontal-BgyNOSGe.js +0 -6
- langflow/frontend/assets/move-left-De41EPwt.js +0 -6
- langflow/frontend/assets/move-right-BMS3qOaU.js +0 -6
- langflow/frontend/assets/move-up-DDaHGEdA.js +0 -6
- langflow/frontend/assets/move-up-left-C3KUnQFi.js +0 -6
- langflow/frontend/assets/move-up-right-wSqt1zdT.js +0 -6
- langflow/frontend/assets/move-vertical-CruvB0f0.js +0 -6
- langflow/frontend/assets/music-2-DErLeopY.js +0 -6
- langflow/frontend/assets/music-3-DLLxoeBk.js +0 -6
- langflow/frontend/assets/music-4-Dviu0uet.js +0 -6
- langflow/frontend/assets/music-73Va2bTb.js +0 -6
- langflow/frontend/assets/navigation-2-Dp0cIWmF.js +0 -6
- langflow/frontend/assets/navigation-2-off-ChVwk_zM.js +0 -6
- langflow/frontend/assets/navigation-kxQ1Fqub.js +0 -6
- langflow/frontend/assets/navigation-off-DFeAofya.js +0 -6
- langflow/frontend/assets/network-CaEVNcVM.js +0 -6
- langflow/frontend/assets/newspaper-CFb6rc28.js +0 -6
- langflow/frontend/assets/nfc-BnyLtVma.js +0 -6
- langflow/frontend/assets/non-binary-C0JMDXPn.js +0 -6
- langflow/frontend/assets/notebook-CRVO5PgM.js +0 -6
- langflow/frontend/assets/notebook-pen-ClK03ekN.js +0 -6
- langflow/frontend/assets/notebook-tabs-DCvciMOE.js +0 -6
- langflow/frontend/assets/notebook-text-BWJ-gCI-.js +0 -6
- langflow/frontend/assets/notepad-text-CjLATBY3.js +0 -6
- langflow/frontend/assets/notepad-text-dashed-Dgh4J08Y.js +0 -6
- langflow/frontend/assets/nut-SWU70a-q.js +0 -6
- langflow/frontend/assets/nut-off-DRKo1Idp.js +0 -6
- langflow/frontend/assets/octagon-DUTVMubP.js +0 -6
- langflow/frontend/assets/octagon-alert-C5O9ApjH.js +0 -6
- langflow/frontend/assets/octagon-minus-C1oerlu8.js +0 -6
- langflow/frontend/assets/octagon-pause-DuNMfhi5.js +0 -6
- langflow/frontend/assets/octagon-x-HJ9YsWgj.js +0 -6
- langflow/frontend/assets/omega-CC_uLjYz.js +0 -6
- langflow/frontend/assets/option-D-_joiz2.js +0 -6
- langflow/frontend/assets/orbit-DiGlLPJM.js +0 -6
- langflow/frontend/assets/origami-BbIcjyKs.js +0 -6
- langflow/frontend/assets/package-2-BgQcmmcD.js +0 -6
- langflow/frontend/assets/package-BtFqWy1B.js +0 -6
- langflow/frontend/assets/package-check-BI6DglxF.js +0 -6
- langflow/frontend/assets/package-minus-bgC3f6fw.js +0 -6
- langflow/frontend/assets/package-open-BWwO8irc.js +0 -6
- langflow/frontend/assets/package-plus-BTZ9zBFV.js +0 -6
- langflow/frontend/assets/package-search-BeSVBfSK.js +0 -6
- langflow/frontend/assets/package-x-DwBmnRRB.js +0 -6
- langflow/frontend/assets/paint-bucket-BQahE9bZ.js +0 -6
- langflow/frontend/assets/paint-roller-pjsM9YFD.js +0 -6
- langflow/frontend/assets/paintbrush-C08C-QKC.js +0 -6
- langflow/frontend/assets/paintbrush-vertical-CZXzKU1Q.js +0 -6
- langflow/frontend/assets/palette-BRZOleDF.js +0 -6
- langflow/frontend/assets/panel-bottom-CxNaYrTU.js +0 -6
- langflow/frontend/assets/panel-bottom-close-CDEp0NvM.js +0 -6
- langflow/frontend/assets/panel-bottom-dashed-CMeDPGMr.js +0 -6
- langflow/frontend/assets/panel-bottom-open-CZIHe0UT.js +0 -6
- langflow/frontend/assets/panel-left-close-BXI4BGwP.js +0 -6
- langflow/frontend/assets/panel-left-dashed-C03n5lCs.js +0 -6
- langflow/frontend/assets/panel-left-open-06lsrBtO.js +0 -6
- langflow/frontend/assets/panel-right-CMfbehJ1.js +0 -6
- langflow/frontend/assets/panel-right-close-C7tPaKSv.js +0 -6
- langflow/frontend/assets/panel-right-dashed-C9RkAVyT.js +0 -6
- langflow/frontend/assets/panel-right-open-CNpNPOYm.js +0 -6
- langflow/frontend/assets/panel-top-Da0u_Hkh.js +0 -6
- langflow/frontend/assets/panel-top-close-BnztDTyd.js +0 -6
- langflow/frontend/assets/panel-top-dashed-Bh3ZC_bF.js +0 -6
- langflow/frontend/assets/panel-top-open-Bj5nFjLg.js +0 -6
- langflow/frontend/assets/panels-left-bottom-DSyoIQv_.js +0 -6
- langflow/frontend/assets/panels-right-bottom-CIDoNP-l.js +0 -6
- langflow/frontend/assets/panels-top-left-CE5VOoBt.js +0 -6
- langflow/frontend/assets/paperclip-DD8lPxhn.js +0 -6
- langflow/frontend/assets/parentheses-C4xK4oyy.js +0 -6
- langflow/frontend/assets/parking-meter-OZjlKzY8.js +0 -6
- langflow/frontend/assets/party-popper-CkTcLdcc.js +0 -6
- langflow/frontend/assets/pause-Cb1EXrgy.js +0 -6
- langflow/frontend/assets/paw-print-BEKnghuQ.js +0 -6
- langflow/frontend/assets/pc-case-CpzFJ-Xp.js +0 -6
- langflow/frontend/assets/pen-COnz-_cH.js +0 -6
- langflow/frontend/assets/pen-line-C4zNmJFH.js +0 -6
- langflow/frontend/assets/pen-off-VUoykf6s.js +0 -6
- langflow/frontend/assets/pen-tool-D4FZSygW.js +0 -6
- langflow/frontend/assets/pencil-ByPKRMmq.js +0 -6
- langflow/frontend/assets/pencil-line-Bv9je-vI.js +0 -6
- langflow/frontend/assets/pencil-off-CiZ7AhV_.js +0 -6
- langflow/frontend/assets/pencil-ruler-BHLMuNMv.js +0 -6
- langflow/frontend/assets/pentagon-CUI4YzSr.js +0 -6
- langflow/frontend/assets/percent-YOQjWteA.js +0 -6
- langflow/frontend/assets/person-standing-DqB1SUPk.js +0 -6
- langflow/frontend/assets/philippine-peso-D20f1BOA.js +0 -6
- langflow/frontend/assets/phone-5ocAjAeA.js +0 -6
- langflow/frontend/assets/phone-call-_ZG7-CAB.js +0 -6
- langflow/frontend/assets/phone-forwarded-CgnJsqjh.js +0 -6
- langflow/frontend/assets/phone-incoming-BoccloKk.js +0 -6
- langflow/frontend/assets/phone-missed-H7zfYDh-.js +0 -6
- langflow/frontend/assets/phone-off-ByW5LAJG.js +0 -6
- langflow/frontend/assets/phone-outgoing-DNzoWzfU.js +0 -6
- langflow/frontend/assets/pi-DfB2iqyH.js +0 -6
- langflow/frontend/assets/piano-DwFcC0JU.js +0 -6
- langflow/frontend/assets/pickaxe-Bg0aL2jN.js +0 -6
- langflow/frontend/assets/picture-in-picture-2-C8kFaPgp.js +0 -6
- langflow/frontend/assets/picture-in-picture-D39ISPrR.js +0 -6
- langflow/frontend/assets/piggy-bank-DlTvkJoR.js +0 -6
- langflow/frontend/assets/pilcrow-left-dzYwLdX_.js +0 -6
- langflow/frontend/assets/pilcrow-nbTh8hD5.js +0 -6
- langflow/frontend/assets/pilcrow-right-C70t14lp.js +0 -6
- langflow/frontend/assets/pill-CdYW6M-g.js +0 -6
- langflow/frontend/assets/pill-bottle-D_nhWd9Q.js +0 -6
- langflow/frontend/assets/pin-off-Crm0xbt8.js +0 -6
- langflow/frontend/assets/pin-vgdy6tSf.js +0 -6
- langflow/frontend/assets/pipette-C2BmXW7M.js +0 -6
- langflow/frontend/assets/pizza-DXeU5s7P.js +0 -6
- langflow/frontend/assets/plane-DTSQkNpR.js +0 -6
- langflow/frontend/assets/plane-landing-hc8Xagim.js +0 -6
- langflow/frontend/assets/plane-takeoff-DUJr8dpo.js +0 -6
- langflow/frontend/assets/play-B6y6WOMM.js +0 -6
- langflow/frontend/assets/plug-2-BA03G-3z.js +0 -6
- langflow/frontend/assets/plug-wJRSXj2b.js +0 -6
- langflow/frontend/assets/plug-zap-0WFLOl5w.js +0 -6
- langflow/frontend/assets/pocket-DsKmk-0s.js +0 -6
- langflow/frontend/assets/pocket-knife-CExwfU6i.js +0 -6
- langflow/frontend/assets/podcast-DqNXzQVP.js +0 -6
- langflow/frontend/assets/pointer-DYXGfH8h.js +0 -6
- langflow/frontend/assets/pointer-off-DzibPpLF.js +0 -6
- langflow/frontend/assets/popcorn-BX7PJk1X.js +0 -6
- langflow/frontend/assets/popsicle-BMI0Dhp1.js +0 -6
- langflow/frontend/assets/pound-sterling-D9niYSEY.js +0 -6
- langflow/frontend/assets/power-CFY25KOZ.js +0 -6
- langflow/frontend/assets/power-off-CgbhJZIb.js +0 -6
- langflow/frontend/assets/presentation-15n5C93j.js +0 -6
- langflow/frontend/assets/printer-CrtLAfFr.js +0 -6
- langflow/frontend/assets/printer-check-Biw-qkdA.js +0 -6
- langflow/frontend/assets/projector-C-rWGn6Y.js +0 -6
- langflow/frontend/assets/proportions-CPKUKklF.js +0 -6
- langflow/frontend/assets/puzzle-BogCZndg.js +0 -6
- langflow/frontend/assets/pyramid-CLmULo-F.js +0 -6
- langflow/frontend/assets/qr-code-CNa3svnh.js +0 -6
- langflow/frontend/assets/quote-D7jbb2LO.js +0 -6
- langflow/frontend/assets/rabbit-w-WHu6bn.js +0 -6
- langflow/frontend/assets/radar-D5VHDH4S.js +0 -6
- langflow/frontend/assets/radiation-D6ABhSfJ.js +0 -6
- langflow/frontend/assets/radical-D49gJE7n.js +0 -6
- langflow/frontend/assets/radio-CA3RpggF.js +0 -6
- langflow/frontend/assets/radio-receiver-D-OBUKVX.js +0 -6
- langflow/frontend/assets/radio-tower-kOimQjiP.js +0 -6
- langflow/frontend/assets/radius-CapQG2SA.js +0 -6
- langflow/frontend/assets/rail-symbol-BQK_EzBv.js +0 -6
- langflow/frontend/assets/rainbow-DlSxTS29.js +0 -6
- langflow/frontend/assets/rat-pwEP0WRp.js +0 -6
- langflow/frontend/assets/ratio-BoliHhGa.js +0 -6
- langflow/frontend/assets/receipt-0hyA5eQ1.js +0 -6
- langflow/frontend/assets/receipt-cent-CEPPAQwQ.js +0 -6
- langflow/frontend/assets/receipt-euro-BwvzJIOF.js +0 -6
- langflow/frontend/assets/receipt-indian-rupee-C7IskKR5.js +0 -6
- langflow/frontend/assets/receipt-japanese-yen-WHwwOvl3.js +0 -6
- langflow/frontend/assets/receipt-pound-sterling-0QGPXozW.js +0 -6
- langflow/frontend/assets/receipt-russian-ruble-DPHoHE69.js +0 -6
- langflow/frontend/assets/receipt-swiss-franc-C1iPXZhb.js +0 -6
- langflow/frontend/assets/receipt-text-Dtb9o-kd.js +0 -6
- langflow/frontend/assets/rectangle-ellipsis-CxkqTyix.js +0 -6
- langflow/frontend/assets/rectangle-goggles-dvjfDeEX.js +0 -6
- langflow/frontend/assets/rectangle-horizontal-QZkUKJrX.js +0 -6
- langflow/frontend/assets/rectangle-vertical-BtQflQd9.js +0 -6
- langflow/frontend/assets/recycle-DFlIs0OV.js +0 -6
- langflow/frontend/assets/redo-2-DstL0EhV.js +0 -6
- langflow/frontend/assets/redo-C_adLbRf.js +0 -6
- langflow/frontend/assets/redo-dot-CGKqOmku.js +0 -6
- langflow/frontend/assets/refresh-ccw-BPYFTW79.js +0 -6
- langflow/frontend/assets/refresh-ccw-dot-BXACMqs9.js +0 -6
- langflow/frontend/assets/refresh-cw-DAv6ZUS3.js +0 -6
- langflow/frontend/assets/refresh-cw-off-C-Wpc23l.js +0 -6
- langflow/frontend/assets/refrigerator-B0bkJiOw.js +0 -6
- langflow/frontend/assets/regex-mbvApI9p.js +0 -6
- langflow/frontend/assets/remove-formatting-CNEktcFe.js +0 -6
- langflow/frontend/assets/repeat-1-DXu_VBHj.js +0 -6
- langflow/frontend/assets/repeat-2-DY5JPWfY.js +0 -6
- langflow/frontend/assets/repeat-Cd62-KlF.js +0 -6
- langflow/frontend/assets/replace-Dn-tvVSY.js +0 -6
- langflow/frontend/assets/replace-all-77fjD3kB.js +0 -6
- langflow/frontend/assets/reply-C2Z4d4Nn.js +0 -6
- langflow/frontend/assets/reply-all-CYkr-Ezo.js +0 -6
- langflow/frontend/assets/rewind-BX_Isy0P.js +0 -6
- langflow/frontend/assets/ribbon-B1560qAp.js +0 -6
- langflow/frontend/assets/rocket-DCKMPh3d.js +0 -6
- langflow/frontend/assets/rocking-chair-BBKn-hHt.js +0 -6
- langflow/frontend/assets/roller-coaster-eHsQDfbt.js +0 -6
- langflow/frontend/assets/rotate-3d-CEwwXBRY.js +0 -6
- langflow/frontend/assets/rotate-ccw-goVjAV9D.js +0 -6
- langflow/frontend/assets/rotate-ccw-key-ClbAsofo.js +0 -6
- langflow/frontend/assets/rotate-ccw-square-BT8R5yIu.js +0 -6
- langflow/frontend/assets/rotate-cw-Fxk1arE0.js +0 -6
- langflow/frontend/assets/rotate-cw-square-Clk9CPUd.js +0 -6
- langflow/frontend/assets/route-D0MxIbyh.js +0 -6
- langflow/frontend/assets/route-off-D944yCCo.js +0 -6
- langflow/frontend/assets/router-mOydy9En.js +0 -6
- langflow/frontend/assets/rows-2-3jKBWiam.js +0 -6
- langflow/frontend/assets/rows-3-0auyW8JV.js +0 -6
- langflow/frontend/assets/rows-4-uiEjyQOS.js +0 -6
- langflow/frontend/assets/rss-CjinSlis.js +0 -6
- langflow/frontend/assets/ruler-B1nxL7cH.js +0 -6
- langflow/frontend/assets/ruler-dimension-line-C0zf-jrE.js +0 -6
- langflow/frontend/assets/russian-ruble-w_K_2IIP.js +0 -6
- langflow/frontend/assets/sailboat-DszVLWz_.js +0 -6
- langflow/frontend/assets/salad-w6JrktMQ.js +0 -6
- langflow/frontend/assets/sandwich-DyyfXt64.js +0 -6
- langflow/frontend/assets/satellite-dish-Ca1uwri2.js +0 -6
- langflow/frontend/assets/satellite-kkWQLUWk.js +0 -6
- langflow/frontend/assets/saudi-riyal-3bJzW9F4.js +0 -6
- langflow/frontend/assets/save-C6Y1vEfu.js +0 -6
- langflow/frontend/assets/save-all-CUgPISmt.js +0 -6
- langflow/frontend/assets/save-off-Bpj1MiTh.js +0 -6
- langflow/frontend/assets/scale-3d-zr9uX072.js +0 -6
- langflow/frontend/assets/scale-BfuIy9Sl.js +0 -6
- langflow/frontend/assets/scaling-xQoqSjyV.js +0 -6
- langflow/frontend/assets/scan-DbCBoZaq.js +0 -6
- langflow/frontend/assets/scan-barcode-CW3cIC2N.js +0 -6
- langflow/frontend/assets/scan-eye-ByThVhf4.js +0 -6
- langflow/frontend/assets/scan-face-JmKVfBG4.js +0 -6
- langflow/frontend/assets/scan-heart-mqL7QZA-.js +0 -6
- langflow/frontend/assets/scan-line-CdWIOXtx.js +0 -6
- langflow/frontend/assets/scan-qr-code-B_unCDs0.js +0 -6
- langflow/frontend/assets/scan-search-CGiNO2Cy.js +0 -6
- langflow/frontend/assets/scan-text-DU0JJ5dm.js +0 -6
- langflow/frontend/assets/school-BH0_MXxO.js +0 -6
- langflow/frontend/assets/scissors-line-dashed-B0XvPJ63.js +0 -6
- langflow/frontend/assets/scissors-mCSfqw30.js +0 -6
- langflow/frontend/assets/screen-share-B-3Xl50_.js +0 -6
- langflow/frontend/assets/screen-share-off-DDolhYm3.js +0 -6
- langflow/frontend/assets/scroll-B76UEdE7.js +0 -6
- langflow/frontend/assets/scroll-text-a3oScRcz.js +0 -6
- langflow/frontend/assets/search-check-C2hY5Rzo.js +0 -6
- langflow/frontend/assets/search-code-DEx2xD9W.js +0 -6
- langflow/frontend/assets/search-slash-LKU7Oduu.js +0 -6
- langflow/frontend/assets/search-x-BisLyQeU.js +0 -6
- langflow/frontend/assets/section-CRklQaDI.js +0 -6
- langflow/frontend/assets/send-B6crGI_G.js +0 -6
- langflow/frontend/assets/send-horizontal-DNyJrWQp.js +0 -6
- langflow/frontend/assets/send-to-back-DiGkUbBy.js +0 -6
- langflow/frontend/assets/separator-horizontal-DLksqhEW.js +0 -6
- langflow/frontend/assets/separator-vertical-Cm1AYxun.js +0 -6
- langflow/frontend/assets/server-BlhoNPZy.js +0 -6
- langflow/frontend/assets/server-cog-CproYMFp.js +0 -6
- langflow/frontend/assets/server-crash-ub5HRrYs.js +0 -6
- langflow/frontend/assets/server-off-D7MU9sKQ.js +0 -6
- langflow/frontend/assets/settings-2-CQsbvdlt.js +0 -6
- langflow/frontend/assets/settings-Blki0Ds-.js +0 -6
- langflow/frontend/assets/shapes-D3ozuUP1.js +0 -6
- langflow/frontend/assets/share-2-CBrk81py.js +0 -6
- langflow/frontend/assets/share-CJnTtMB7.js +0 -6
- langflow/frontend/assets/sheet-CC0wtY6g.js +0 -6
- langflow/frontend/assets/shell-95iFj5f0.js +0 -6
- langflow/frontend/assets/shield-C0FL8-4j.js +0 -6
- langflow/frontend/assets/shield-alert-CZDBHehH.js +0 -6
- langflow/frontend/assets/shield-ban-Dt6kiQXF.js +0 -6
- langflow/frontend/assets/shield-check-0wXPWliZ.js +0 -6
- langflow/frontend/assets/shield-ellipsis-DUCDILqJ.js +0 -6
- langflow/frontend/assets/shield-half-BfBkuvx2.js +0 -6
- langflow/frontend/assets/shield-minus-BnOuQdkj.js +0 -6
- langflow/frontend/assets/shield-off-gvj0346C.js +0 -6
- langflow/frontend/assets/shield-plus-R3MJntqy.js +0 -6
- langflow/frontend/assets/shield-question-ChMCft8_.js +0 -6
- langflow/frontend/assets/shield-user-CMekySdS.js +0 -6
- langflow/frontend/assets/shield-x-D_BGwcsd.js +0 -6
- langflow/frontend/assets/ship-CmTaVyrb.js +0 -6
- langflow/frontend/assets/ship-wheel-hbyU2XL4.js +0 -6
- langflow/frontend/assets/shirt-BMkOyAQk.js +0 -6
- langflow/frontend/assets/shopping-bag-C8_w1pQu.js +0 -6
- langflow/frontend/assets/shopping-basket-BzkbInuz.js +0 -6
- langflow/frontend/assets/shopping-cart-BYtIsqBi.js +0 -6
- langflow/frontend/assets/shovel-sKsBv4E3.js +0 -6
- langflow/frontend/assets/shower-head-BFClr4Ic.js +0 -6
- langflow/frontend/assets/shredder-C0ZIIEgm.js +0 -6
- langflow/frontend/assets/shrimp-CanAqt7B.js +0 -6
- langflow/frontend/assets/shrink-BoAjraIm.js +0 -6
- langflow/frontend/assets/shrub-Bfq9DRu9.js +0 -6
- langflow/frontend/assets/shuffle-BMbh_Pqk.js +0 -6
- langflow/frontend/assets/sigma-CGNjuJWU.js +0 -6
- langflow/frontend/assets/signal-Cfr3xVyp.js +0 -6
- langflow/frontend/assets/signal-high-EyI0DBZJ.js +0 -6
- langflow/frontend/assets/signal-low-C5RcWTNp.js +0 -6
- langflow/frontend/assets/signal-medium-BBKKj0dm.js +0 -6
- langflow/frontend/assets/signal-zero-YMullcG2.js +0 -6
- langflow/frontend/assets/signature-DZqXd_zV.js +0 -6
- langflow/frontend/assets/signpost-big-BbRjoIBo.js +0 -6
- langflow/frontend/assets/signpost-x3iyurYF.js +0 -6
- langflow/frontend/assets/siren-ClV3xjKe.js +0 -6
- langflow/frontend/assets/skip-back-CqLkAFxw.js +0 -6
- langflow/frontend/assets/skip-forward-ClOpr2Ly.js +0 -6
- langflow/frontend/assets/skull-C2ACnWJk.js +0 -6
- langflow/frontend/assets/slack-CXnbfIYn.js +0 -6
- langflow/frontend/assets/slash-BSUxseCA.js +0 -6
- langflow/frontend/assets/slice-DmfCGJ4i.js +0 -6
- langflow/frontend/assets/sliders-horizontal-D0XUXE6T.js +0 -6
- langflow/frontend/assets/sliders-vertical-XLmMbKcx.js +0 -6
- langflow/frontend/assets/smartphone-ClIPaj9J.js +0 -6
- langflow/frontend/assets/smartphone-charging-CRsJ8fbd.js +0 -6
- langflow/frontend/assets/smartphone-nfc-OuQXtX2F.js +0 -6
- langflow/frontend/assets/smile-DxOJNG8w.js +0 -6
- langflow/frontend/assets/smile-plus-CnfhYkMt.js +0 -6
- langflow/frontend/assets/snail-ADdYB0Dk.js +0 -6
- langflow/frontend/assets/snowflake-BhW3JdpK.js +0 -6
- langflow/frontend/assets/sofa-Mb-UbGH5.js +0 -6
- langflow/frontend/assets/soup-CUWnWjoV.js +0 -6
- langflow/frontend/assets/space-CrOQ2Mw3.js +0 -6
- langflow/frontend/assets/spade-DdI35uM9.js +0 -6
- langflow/frontend/assets/sparkle-D2V2VxRK.js +0 -6
- langflow/frontend/assets/sparkles-EWtzE2pt.js +0 -6
- langflow/frontend/assets/speaker-B27eUKDO.js +0 -6
- langflow/frontend/assets/speech-aDCiTzxo.js +0 -6
- langflow/frontend/assets/spell-check-2-CaOzgHR6.js +0 -6
- langflow/frontend/assets/spell-check-i5NmZ_4F.js +0 -6
- langflow/frontend/assets/spline-6L3BurK6.js +0 -6
- langflow/frontend/assets/spline-pointer-D8x002P1.js +0 -6
- langflow/frontend/assets/split-sF7j9wdJ.js +0 -6
- langflow/frontend/assets/spray-can-BiluaeKC.js +0 -6
- langflow/frontend/assets/sprout-mo-k6WFU.js +0 -6
- langflow/frontend/assets/square-Cg5b3I31.js +0 -6
- langflow/frontend/assets/square-activity-Bay5Z9hn.js +0 -6
- langflow/frontend/assets/square-arrow-down-CiA08_E5.js +0 -6
- langflow/frontend/assets/square-arrow-down-left-B7WYag99.js +0 -6
- langflow/frontend/assets/square-arrow-down-right-7We3sc-R.js +0 -6
- langflow/frontend/assets/square-arrow-left-BqmjGxPj.js +0 -6
- langflow/frontend/assets/square-arrow-out-down-left-CBRTbm_i.js +0 -6
- langflow/frontend/assets/square-arrow-out-down-right-3US-tDUG.js +0 -6
- langflow/frontend/assets/square-arrow-out-up-left-S_QuNqDP.js +0 -6
- langflow/frontend/assets/square-arrow-out-up-right-COzKBKps.js +0 -6
- langflow/frontend/assets/square-arrow-right-X6-zbNND.js +0 -6
- langflow/frontend/assets/square-arrow-up-B6i5TxFp.js +0 -6
- langflow/frontend/assets/square-arrow-up-left-DUKCB95k.js +0 -6
- langflow/frontend/assets/square-arrow-up-right-BP531IK3.js +0 -6
- langflow/frontend/assets/square-asterisk-CdZRv003.js +0 -6
- langflow/frontend/assets/square-bottom-dashed-scissors-B457ujeN.js +0 -6
- langflow/frontend/assets/square-chart-gantt-CDO8CVkz.js +0 -6
- langflow/frontend/assets/square-check-DWRTDfjZ.js +0 -6
- langflow/frontend/assets/square-check-big-DGAJ_xR5.js +0 -6
- langflow/frontend/assets/square-chevron-down-CGV1PW-m.js +0 -6
- langflow/frontend/assets/square-chevron-left-DvogyU6O.js +0 -6
- langflow/frontend/assets/square-chevron-right-Db4MxZI3.js +0 -6
- langflow/frontend/assets/square-chevron-up-Dw9J-Zmx.js +0 -6
- langflow/frontend/assets/square-code-YWoMKMs1.js +0 -6
- langflow/frontend/assets/square-dashed-DKwuPQBv.js +0 -6
- langflow/frontend/assets/square-dashed-bottom-DHcB6149.js +0 -6
- langflow/frontend/assets/square-dashed-bottom-code-Ru51JJHN.js +0 -6
- langflow/frontend/assets/square-dashed-kanban-Bx5hjW3v.js +0 -6
- langflow/frontend/assets/square-dashed-mouse-pointer-BVWy-ijI.js +0 -6
- langflow/frontend/assets/square-divide-D81ViHR4.js +0 -6
- langflow/frontend/assets/square-dot-CmS8y1AH.js +0 -6
- langflow/frontend/assets/square-equal-h7OfUibz.js +0 -6
- langflow/frontend/assets/square-function-FmKr_qA9.js +0 -6
- langflow/frontend/assets/square-kanban-DO1M6u5f.js +0 -6
- langflow/frontend/assets/square-library-nIRQfXRT.js +0 -6
- langflow/frontend/assets/square-m-CPEqAqx2.js +0 -6
- langflow/frontend/assets/square-menu-BqiFDkFm.js +0 -6
- langflow/frontend/assets/square-minus-Do0SkTCl.js +0 -6
- langflow/frontend/assets/square-mouse-pointer-y_mHMWko.js +0 -6
- langflow/frontend/assets/square-parking-BSlt1GoK.js +0 -6
- langflow/frontend/assets/square-parking-off-BZ_cp3aG.js +0 -6
- langflow/frontend/assets/square-pen-B-1TDB3t.js +0 -6
- langflow/frontend/assets/square-percent-B49erIWi.js +0 -6
- langflow/frontend/assets/square-pi-CNlM28Qq.js +0 -6
- langflow/frontend/assets/square-pilcrow-CoAjX8F-.js +0 -6
- langflow/frontend/assets/square-play-BSSDUBaT.js +0 -6
- langflow/frontend/assets/square-plus-DjsO049R.js +0 -6
- langflow/frontend/assets/square-power-40jdYYQa.js +0 -6
- langflow/frontend/assets/square-radical-CxAio9qb.js +0 -6
- langflow/frontend/assets/square-round-corner-DAIo12UZ.js +0 -6
- langflow/frontend/assets/square-scissors-BqM2ApW5.js +0 -6
- langflow/frontend/assets/square-sigma-PBQHXnRy.js +0 -6
- langflow/frontend/assets/square-slash-CG9gnL_b.js +0 -6
- langflow/frontend/assets/square-split-horizontal-CHq0E2VP.js +0 -6
- langflow/frontend/assets/square-split-vertical-DR-m68oF.js +0 -6
- langflow/frontend/assets/square-square-CHfwNCHF.js +0 -6
- langflow/frontend/assets/square-stack-K1A5ahG6.js +0 -6
- langflow/frontend/assets/square-terminal-DQkUaPcW.js +0 -6
- langflow/frontend/assets/square-user-MvhzBJjw.js +0 -6
- langflow/frontend/assets/square-user-round-DElo7lNu.js +0 -6
- langflow/frontend/assets/square-x-Der7dxTy.js +0 -6
- langflow/frontend/assets/squares-exclude-DIXrxfpq.js +0 -6
- langflow/frontend/assets/squares-intersect-CwDm0w68.js +0 -6
- langflow/frontend/assets/squares-subtract-D0AgrDSl.js +0 -6
- langflow/frontend/assets/squares-unite-FOsu-pqI.js +0 -6
- langflow/frontend/assets/squircle-B8wMhbiq.js +0 -6
- langflow/frontend/assets/squirrel-xFqEwvv2.js +0 -6
- langflow/frontend/assets/stamp-BI4Q1U7M.js +0 -6
- langflow/frontend/assets/star-DDrBV0z8.js +0 -6
- langflow/frontend/assets/star-half-5u_gljBw.js +0 -6
- langflow/frontend/assets/star-off-DeC0I6-M.js +0 -6
- langflow/frontend/assets/step-back-Df8gO4mw.js +0 -6
- langflow/frontend/assets/step-forward-DPEfnIoR.js +0 -6
- langflow/frontend/assets/stethoscope-DfmfNJtA.js +0 -6
- langflow/frontend/assets/sticker-s2E0f7sK.js +0 -6
- langflow/frontend/assets/sticky-note-CU7sAppk.js +0 -6
- langflow/frontend/assets/store-DVPLpNNW.js +0 -6
- langflow/frontend/assets/stretch-horizontal-D7i8_SJT.js +0 -6
- langflow/frontend/assets/stretch-vertical-CVA_xVYc.js +0 -6
- langflow/frontend/assets/strikethrough-Dk6iQKVd.js +0 -6
- langflow/frontend/assets/subscript-_h26d4A6.js +0 -6
- langflow/frontend/assets/sun-BCB2uZSD.js +0 -6
- langflow/frontend/assets/sun-dim-WVcIn4mw.js +0 -6
- langflow/frontend/assets/sun-medium-CaP_n--X.js +0 -6
- langflow/frontend/assets/sun-moon-C4BdHEoR.js +0 -6
- langflow/frontend/assets/sun-snow-CFo2A2KW.js +0 -6
- langflow/frontend/assets/sunrise-CCkUcpOP.js +0 -6
- langflow/frontend/assets/sunset-DEXEkljK.js +0 -6
- langflow/frontend/assets/superscript-Da6P82Z-.js +0 -6
- langflow/frontend/assets/swatch-book-DI5lpKtR.js +0 -6
- langflow/frontend/assets/swiss-franc-NRWY6J9w.js +0 -6
- langflow/frontend/assets/switch-camera-yuyRgkDh.js +0 -6
- langflow/frontend/assets/sword-BnUxF2cm.js +0 -6
- langflow/frontend/assets/swords-BbCX-ySC.js +0 -6
- langflow/frontend/assets/syringe-HePt9NFz.js +0 -6
- langflow/frontend/assets/table-2-D3bdM62y.js +0 -6
- langflow/frontend/assets/table-CjuI5Y97.js +0 -6
- langflow/frontend/assets/table-cells-merge-B3kBSpBh.js +0 -6
- langflow/frontend/assets/table-cells-split-CIb9RCXh.js +0 -6
- langflow/frontend/assets/table-columns-split-DXmJRFF7.js +0 -6
- langflow/frontend/assets/table-of-contents-Darr8VJW.js +0 -6
- langflow/frontend/assets/table-properties-Dxa3G4Yj.js +0 -6
- langflow/frontend/assets/table-rows-split-qphdvVSu.js +0 -6
- langflow/frontend/assets/tablet-DIWZcatK.js +0 -6
- langflow/frontend/assets/tablet-smartphone-YkbCfOG6.js +0 -6
- langflow/frontend/assets/tablets-D-uVQv9p.js +0 -6
- langflow/frontend/assets/tag-BrEzUpzu.js +0 -6
- langflow/frontend/assets/tags-B_HIAY9Z.js +0 -6
- langflow/frontend/assets/tally-1-DyZgz8we.js +0 -6
- langflow/frontend/assets/tally-2-C6uae1Mq.js +0 -6
- langflow/frontend/assets/tally-3-woXh13sV.js +0 -6
- langflow/frontend/assets/tally-4-neI-9ZWv.js +0 -6
- langflow/frontend/assets/tally-5-xQFkBJss.js +0 -6
- langflow/frontend/assets/tangent-JvLPH-JU.js +0 -6
- langflow/frontend/assets/target-7L_4kDfz.js +0 -6
- langflow/frontend/assets/telescope-BQa7rUFV.js +0 -6
- langflow/frontend/assets/tent-BlCh4PeV.js +0 -6
- langflow/frontend/assets/tent-tree-BGIlSOmb.js +0 -6
- langflow/frontend/assets/terminal-BQbCAXs8.js +0 -6
- langflow/frontend/assets/test-tube-Nu4vHbIc.js +0 -6
- langflow/frontend/assets/test-tube-diagonal-CGk5M-KE.js +0 -6
- langflow/frontend/assets/test-tubes-rd3A03V0.js +0 -6
- langflow/frontend/assets/text-cursor-DXuIRvAG.js +0 -6
- langflow/frontend/assets/text-cursor-input-CKUe6cWU.js +0 -6
- langflow/frontend/assets/text-fF8bIhLg.js +0 -6
- langflow/frontend/assets/text-quote-B5UmeuBK.js +0 -6
- langflow/frontend/assets/text-search-a22gbAoF.js +0 -6
- langflow/frontend/assets/text-select-bFrdPmxL.js +0 -6
- langflow/frontend/assets/theater-ClIK7n2c.js +0 -6
- langflow/frontend/assets/thermometer-CaTC18e6.js +0 -6
- langflow/frontend/assets/thermometer-snowflake-DSlvvyO-.js +0 -6
- langflow/frontend/assets/thermometer-sun-D6Z6YT7z.js +0 -6
- langflow/frontend/assets/thumbs-down-Cg52ipYp.js +0 -6
- langflow/frontend/assets/thumbs-up-CfbK2Ihg.js +0 -6
- langflow/frontend/assets/ticket-B7_7qIJG.js +0 -6
- langflow/frontend/assets/ticket-check-H36bPnOu.js +0 -6
- langflow/frontend/assets/ticket-minus-CPtD_Cr_.js +0 -6
- langflow/frontend/assets/ticket-percent-3TI0U9Ke.js +0 -6
- langflow/frontend/assets/ticket-plus-C-YaHL5K.js +0 -6
- langflow/frontend/assets/ticket-slash-CSv7rDaH.js +0 -6
- langflow/frontend/assets/ticket-x-BFDy9-xd.js +0 -6
- langflow/frontend/assets/tickets-BeSybnzT.js +0 -6
- langflow/frontend/assets/tickets-plane-CjVQGzkX.js +0 -6
- langflow/frontend/assets/timer-BfZoHUHE.js +0 -6
- langflow/frontend/assets/timer-off-BvAhzeEo.js +0 -6
- langflow/frontend/assets/timer-reset-BL3x0EW0.js +0 -6
- langflow/frontend/assets/toggle-left-D7Sp9Da2.js +0 -6
- langflow/frontend/assets/toggle-right-f1fs4TD5.js +0 -6
- langflow/frontend/assets/toilet-n-R6qAT-.js +0 -6
- langflow/frontend/assets/tornado-DtO9WPrw.js +0 -6
- langflow/frontend/assets/torus-DQgzxbQh.js +0 -6
- langflow/frontend/assets/touchpad-CQhgRsPy.js +0 -6
- langflow/frontend/assets/touchpad-off-BbHDbGtI.js +0 -6
- langflow/frontend/assets/tower-control-BHfpoizg.js +0 -6
- langflow/frontend/assets/toy-brick-DV6H7aQ2.js +0 -6
- langflow/frontend/assets/tractor-CJMK07JK.js +0 -6
- langflow/frontend/assets/traffic-cone-CjQLLeOi.js +0 -6
- langflow/frontend/assets/train-front-BjdnhYbI.js +0 -6
- langflow/frontend/assets/train-front-tunnel-Dkm8m-4H.js +0 -6
- langflow/frontend/assets/train-track-BvmqUT8u.js +0 -6
- langflow/frontend/assets/tram-front-BzxJsk9t.js +0 -6
- langflow/frontend/assets/transgender-CdGml6YZ.js +0 -6
- langflow/frontend/assets/trash-BO0sRyEw.js +0 -6
- langflow/frontend/assets/tree-deciduous-BBqILE9o.js +0 -6
- langflow/frontend/assets/tree-palm-366vRf_6.js +0 -6
- langflow/frontend/assets/tree-pine-C_HBFt0t.js +0 -6
- langflow/frontend/assets/trees-DkMlPrUx.js +0 -6
- langflow/frontend/assets/trello-B14JlNoH.js +0 -6
- langflow/frontend/assets/trending-down-nAWtL7_F.js +0 -6
- langflow/frontend/assets/trending-up-CeadtIan.js +0 -6
- langflow/frontend/assets/trending-up-down-Gpazl6Ba.js +0 -6
- langflow/frontend/assets/triangle-B-xiFgIN.js +0 -6
- langflow/frontend/assets/triangle-alert-BgxDUJ49.js +0 -6
- langflow/frontend/assets/triangle-dashed-DkO88IM7.js +0 -6
- langflow/frontend/assets/triangle-right-D9upTQX5.js +0 -6
- langflow/frontend/assets/trophy-crMVgdaS.js +0 -6
- langflow/frontend/assets/truck-W7VMqCeJ.js +0 -6
- langflow/frontend/assets/truck-electric-CYFhuJIx.js +0 -6
- langflow/frontend/assets/turtle-DBCXnES7.js +0 -6
- langflow/frontend/assets/tv-BhKvnXoz.js +0 -6
- langflow/frontend/assets/tv-minimal-DCJ7eYdd.js +0 -6
- langflow/frontend/assets/tv-minimal-play-CYZAvm4j.js +0 -6
- langflow/frontend/assets/twitch-C8-EvyF3.js +0 -6
- langflow/frontend/assets/twitter-ByeH_cjW.js +0 -6
- langflow/frontend/assets/type-BTHayhLn.js +0 -6
- langflow/frontend/assets/type-outline-DPn9npi2.js +0 -6
- langflow/frontend/assets/umbrella-C8NJqj54.js +0 -6
- langflow/frontend/assets/umbrella-off-CcEGZ2h1.js +0 -6
- langflow/frontend/assets/underline-DIcVvnY0.js +0 -6
- langflow/frontend/assets/undo-2-B3Qb7lp1.js +0 -6
- langflow/frontend/assets/undo-2rV23GVf.js +0 -6
- langflow/frontend/assets/undo-dot-D23s0Kql.js +0 -6
- langflow/frontend/assets/unfold-horizontal-DBlcq_ox.js +0 -6
- langflow/frontend/assets/unfold-vertical-Beb3CyqI.js +0 -6
- langflow/frontend/assets/ungroup-DgRXSk4V.js +0 -6
- langflow/frontend/assets/university-DFfzq4yY.js +0 -6
- langflow/frontend/assets/unlink-2-CL-4R8_h.js +0 -6
- langflow/frontend/assets/unlink-CZZ6mYr8.js +0 -6
- langflow/frontend/assets/unplug-bOMP8RoY.js +0 -6
- langflow/frontend/assets/upload-Be6IccFe.js +0 -6
- langflow/frontend/assets/usb-Cuix0WAy.js +0 -6
- langflow/frontend/assets/use-post-add-user-0gbs8kED.js +0 -1
- langflow/frontend/assets/user-D-e7h2wY.js +0 -6
- langflow/frontend/assets/user-check-BvZhi2ff.js +0 -6
- langflow/frontend/assets/user-cog-D3spJ6D0.js +0 -6
- langflow/frontend/assets/user-lock-BqNfej1n.js +0 -6
- langflow/frontend/assets/user-minus-Kjykart7.js +0 -6
- langflow/frontend/assets/user-pen-BkBZI7p4.js +0 -6
- langflow/frontend/assets/user-plus-CW-bKR0m.js +0 -6
- langflow/frontend/assets/user-round-DDT0m1G_.js +0 -6
- langflow/frontend/assets/user-round-check-U2FTJtYL.js +0 -6
- langflow/frontend/assets/user-round-cog-CGqU2DbR.js +0 -6
- langflow/frontend/assets/user-round-minus-jaZrNxjf.js +0 -6
- langflow/frontend/assets/user-round-pen-Bm4Dl2-s.js +0 -6
- langflow/frontend/assets/user-round-plus-Mr8N1t3e.js +0 -6
- langflow/frontend/assets/user-round-search-DgPSExby.js +0 -6
- langflow/frontend/assets/user-round-x-CZKhIxyJ.js +0 -6
- langflow/frontend/assets/user-search-y33vuAcn.js +0 -6
- langflow/frontend/assets/user-x-qQYgY5nd.js +0 -6
- langflow/frontend/assets/users-BT4aT6hI.js +0 -6
- langflow/frontend/assets/users-round-D5_7S_AN.js +0 -6
- langflow/frontend/assets/utensils-DfBHAJAu.js +0 -6
- langflow/frontend/assets/utensils-crossed-Bw_hz9-k.js +0 -6
- langflow/frontend/assets/utility-pole-BOXwObmv.js +0 -6
- langflow/frontend/assets/variable-S8ICgs0d.js +0 -6
- langflow/frontend/assets/vault-Bont0uC4.js +0 -6
- langflow/frontend/assets/vegan-BpGnF0mH.js +0 -6
- langflow/frontend/assets/venetian-mask-CGYUUHD8.js +0 -6
- langflow/frontend/assets/venus-and-mars-B6iyzAHC.js +0 -6
- langflow/frontend/assets/venus-dhRZOhhW.js +0 -6
- langflow/frontend/assets/vibrate-DpzcDxHV.js +0 -6
- langflow/frontend/assets/vibrate-off-IVDTMLXZ.js +0 -6
- langflow/frontend/assets/video-_rkC-UsK.js +0 -6
- langflow/frontend/assets/video-off-KcPee88z.js +0 -6
- langflow/frontend/assets/videotape-BccaJ7Fi.js +0 -6
- langflow/frontend/assets/view-DJEfaGoV.js +0 -6
- langflow/frontend/assets/voicemail-B7TaNJUk.js +0 -6
- langflow/frontend/assets/volleyball-BrS7UTVJ.js +0 -6
- langflow/frontend/assets/volume-1-Dvs4GL2J.js +0 -6
- langflow/frontend/assets/volume-2-BNBeZxmp.js +0 -6
- langflow/frontend/assets/volume-NAmD4TpF.js +0 -6
- langflow/frontend/assets/volume-off-Aezug7Y5.js +0 -6
- langflow/frontend/assets/volume-x-BQzNCGOC.js +0 -6
- langflow/frontend/assets/vote-BXFecmlb.js +0 -6
- langflow/frontend/assets/wallet-BgMzS6ho.js +0 -6
- langflow/frontend/assets/wallet-cards-BV-40ynH.js +0 -6
- langflow/frontend/assets/wallet-minimal-P7-4r_Ei.js +0 -6
- langflow/frontend/assets/wallpaper-e3X-1FSH.js +0 -6
- langflow/frontend/assets/wand-sparkles-fEGeescY.js +0 -6
- langflow/frontend/assets/wand-ymspreQD.js +0 -6
- langflow/frontend/assets/warehouse-ClZO0O7S.js +0 -6
- langflow/frontend/assets/washing-machine-CQE97-Yn.js +0 -6
- langflow/frontend/assets/watch-C0cfQixr.js +0 -6
- langflow/frontend/assets/waves-Di02xtQH.js +0 -6
- langflow/frontend/assets/waves-ladder-DY0SBRAj.js +0 -6
- langflow/frontend/assets/waypoints-CqG9twzJ.js +0 -6
- langflow/frontend/assets/webcam-xsbw73N4.js +0 -6
- langflow/frontend/assets/webhook-DHv9DFBd.js +0 -6
- langflow/frontend/assets/webhook-off-BlifNIUy.js +0 -6
- langflow/frontend/assets/weight-C-2e-51W.js +0 -6
- langflow/frontend/assets/wheat-EsboKBDY.js +0 -6
- langflow/frontend/assets/wheat-off-CtuJsvon.js +0 -6
- langflow/frontend/assets/whole-word-CG7fL5NF.js +0 -6
- langflow/frontend/assets/wifi-CQcWod8a.js +0 -6
- langflow/frontend/assets/wifi-high-CvpGqiAJ.js +0 -6
- langflow/frontend/assets/wifi-low-COVC5mLG.js +0 -6
- langflow/frontend/assets/wifi-off-B5YKUCox.js +0 -6
- langflow/frontend/assets/wifi-pen-DWfynfE3.js +0 -6
- langflow/frontend/assets/wifi-zero-B-uFyjqf.js +0 -6
- langflow/frontend/assets/wind-Dc1mP-Q1.js +0 -6
- langflow/frontend/assets/wind-arrow-down-D7ryAcOg.js +0 -6
- langflow/frontend/assets/wine-DDHvlFZD.js +0 -6
- langflow/frontend/assets/wine-off-HqyJATcz.js +0 -6
- langflow/frontend/assets/workflow-Dp_mwdeE.js +0 -6
- langflow/frontend/assets/worm-DU2P8iee.js +0 -6
- langflow/frontend/assets/wrap-text-CWp14OYP.js +0 -6
- langflow/frontend/assets/wrench-D7w3Oi34.js +0 -6
- langflow/frontend/assets/youtube-FimfJYgE.js +0 -6
- langflow/frontend/assets/zap-DM7WZEe0.js +0 -6
- langflow/frontend/assets/zap-off-VrmgXyQw.js +0 -6
- langflow/frontend/assets/zoom-in-T9nE8S-9.js +0 -6
- langflow/frontend/assets/zoom-out-Cf6vzi4q.js +0 -6
- langflow_base_nightly-1.7.0.dev52.dist-info/METADATA +0 -99
- langflow_base_nightly-1.7.0.dev52.dist-info/RECORD +0 -2278
- {langflow_base_nightly-1.7.0.dev52.dist-info → langflow_base_nightly-1.7.0.dev55.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-1.7.0.dev52.dist-info → langflow_base_nightly-1.7.0.dev55.dist-info}/entry_points.txt +0 -0
|
@@ -931,7 +931,7 @@
|
|
|
931
931
|
"legacy": false,
|
|
932
932
|
"lf_version": "1.6.0",
|
|
933
933
|
"metadata": {
|
|
934
|
-
"code_hash": "
|
|
934
|
+
"code_hash": "9cad30eb26b9",
|
|
935
935
|
"dependencies": {
|
|
936
936
|
"dependencies": [
|
|
937
937
|
{
|
|
@@ -1007,7 +1007,7 @@
|
|
|
1007
1007
|
"show": true,
|
|
1008
1008
|
"title_case": false,
|
|
1009
1009
|
"type": "code",
|
|
1010
|
-
"value": "\"\"\"Enhanced file component with Docling support and process isolation.\n\nNotes:\n-----\n- ALL Docling parsing/export runs in a separate OS process to prevent memory\n growth and native library state from impacting the main Langflow process.\n- Standard text/structured parsing continues to use existing BaseFileComponent\n utilities (and optional threading via `parallel_load_data`).\n\"\"\"\n\nfrom __future__ import annotations\n\nimport contextlib\nimport json\nimport subprocess\nimport sys\nimport textwrap\nfrom copy import deepcopy\nfrom pathlib import Path\nfrom tempfile import NamedTemporaryFile\nfrom typing import Any\n\nfrom lfx.base.data.base_file import BaseFileComponent\nfrom lfx.base.data.storage_utils import parse_storage_path, validate_image_content_type\nfrom lfx.base.data.utils import TEXT_FILE_TYPES, parallel_load_data, parse_text_file_to_data\nfrom lfx.inputs.inputs import DropdownInput, MessageTextInput, StrInput\nfrom lfx.io import BoolInput, FileInput, IntInput, Output\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame # noqa: TC001\nfrom lfx.schema.message import Message\nfrom lfx.services.deps import get_settings_service, get_storage_service\nfrom lfx.utils.async_helpers import run_until_complete\n\n\nclass FileComponent(BaseFileComponent):\n \"\"\"File component with optional Docling processing (isolated in a subprocess).\"\"\"\n\n display_name = \"Read File\"\n # description is now a dynamic property - see get_tool_description()\n _base_description = \"Loads content from one or more files.\"\n documentation: str = \"https://docs.langflow.org/read-file\"\n icon = \"file-text\"\n name = \"File\"\n add_tool_output = True # Enable tool mode toggle without requiring tool_mode inputs\n\n # Extensions that can be processed without Docling (using standard text parsing)\n TEXT_EXTENSIONS = TEXT_FILE_TYPES\n\n # Extensions that require Docling for processing (images, advanced office formats, etc.)\n DOCLING_ONLY_EXTENSIONS = [\n \"adoc\",\n \"asciidoc\",\n \"asc\",\n \"bmp\",\n \"dotx\",\n \"dotm\",\n \"docm\",\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"potx\",\n \"ppsx\",\n \"pptm\",\n \"potm\",\n \"ppsm\",\n \"pptx\",\n \"tiff\",\n \"xls\",\n \"xlsx\",\n \"xhtml\",\n \"webp\",\n ]\n\n # Docling-supported/compatible extensions; TEXT_FILE_TYPES are supported by the base loader.\n VALID_EXTENSIONS = [\n *TEXT_EXTENSIONS,\n *DOCLING_ONLY_EXTENSIONS,\n ]\n\n # Fixed export settings used when markdown export is requested.\n EXPORT_FORMAT = \"Markdown\"\n IMAGE_MODE = \"placeholder\"\n\n _base_inputs = deepcopy(BaseFileComponent.get_base_inputs())\n\n for input_item in _base_inputs:\n if isinstance(input_item, FileInput) and input_item.name == \"path\":\n input_item.real_time_refresh = True\n input_item.tool_mode = False # Disable tool mode for file upload input\n input_item.required = False # Make it optional so it doesn't error in tool mode\n break\n\n inputs = [\n *_base_inputs,\n StrInput(\n name=\"file_path_str\",\n display_name=\"File Path\",\n info=(\n \"Path to the file to read. Used when component is called as a tool. \"\n \"If not provided, will use the uploaded file from 'path' input.\"\n ),\n show=False,\n advanced=True,\n tool_mode=True, # Required for Toolset toggle, but _get_tools() ignores this parameter\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 # ------------------------------ Tool description with file names --------------\n\n def get_tool_description(self) -> str:\n \"\"\"Return a dynamic description that includes the names of uploaded files.\n\n This helps the Agent understand which files are available to read.\n \"\"\"\n base_description = \"Loads and returns the content from uploaded files.\"\n\n # Get the list of uploaded file paths\n file_paths = getattr(self, \"path\", None)\n if not file_paths:\n return base_description\n\n # Ensure it's a list\n if not isinstance(file_paths, list):\n file_paths = [file_paths]\n\n # Extract just the file names from the paths\n file_names = []\n for fp in file_paths:\n if fp:\n name = Path(fp).name\n file_names.append(name)\n\n if file_names:\n files_str = \", \".join(file_names)\n return f\"{base_description} Available files: {files_str}. Call this tool to read these files.\"\n\n return base_description\n\n @property\n def description(self) -> str:\n \"\"\"Dynamic description property that includes uploaded file names.\"\"\"\n return self.get_tool_description()\n\n async def _get_tools(self) -> list:\n \"\"\"Override to create a tool without parameters.\n\n The Read File component should use the files already uploaded via UI,\n not accept file paths from the Agent (which wouldn't know the internal paths).\n \"\"\"\n from langchain_core.tools import StructuredTool\n from pydantic import BaseModel\n\n # Empty schema - no parameters needed\n class EmptySchema(BaseModel):\n \"\"\"No parameters required - uses pre-uploaded files.\"\"\"\n\n async def read_files_tool() -> str:\n \"\"\"Read the content of uploaded files.\"\"\"\n try:\n result = self.load_files_message()\n if hasattr(result, \"get_text\"):\n return result.get_text()\n if hasattr(result, \"text\"):\n return result.text\n return str(result)\n except (FileNotFoundError, ValueError, OSError, RuntimeError) as e:\n return f\"Error reading files: {e}\"\n\n description = self.get_tool_description()\n\n tool = StructuredTool(\n name=\"load_files_message\",\n description=description,\n coroutine=read_files_tool,\n args_schema=EmptySchema,\n handle_tool_error=True,\n tags=[\"load_files_message\"],\n metadata={\n \"display_name\": \"Read File\",\n \"display_description\": description,\n },\n )\n\n return [tool]\n\n # ------------------------------ UI helpers --------------------------------------\n\n def _path_value(self, template: dict) -> list[str]:\n \"\"\"Return the list of currently selected file paths from the template.\"\"\"\n return template.get(\"path\", {}).get(\"file_path\", [])\n\n def update_build_config(\n self,\n build_config: dict[str, Any],\n field_value: Any,\n field_name: str | None = None,\n ) -> dict[str, Any]:\n \"\"\"Show/hide Advanced Parser and related fields based on selection context.\"\"\"\n if field_name == \"path\":\n paths = self._path_value(build_config)\n\n # If all files can be processed by docling, do so\n allow_advanced = all(not file_path.endswith((\".csv\", \".xlsx\", \".parquet\")) for file_path in paths)\n build_config[\"advanced_mode\"][\"show\"] = allow_advanced\n if not allow_advanced:\n build_config[\"advanced_mode\"][\"value\"] = False\n for f in (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\"):\n if f in build_config:\n build_config[f][\"show\"] = False\n\n # Docling Processing\n elif field_name == \"advanced_mode\":\n for f in (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\"):\n if f in build_config:\n build_config[f][\"show\"] = bool(field_value)\n if f == \"pipeline\":\n build_config[f][\"advanced\"] = not bool(field_value)\n\n elif field_name == \"pipeline\":\n if field_value == \"standard\":\n build_config[\"ocr_engine\"][\"show\"] = True\n build_config[\"ocr_engine\"][\"value\"] = \"easyocr\"\n else:\n build_config[\"ocr_engine\"][\"show\"] = False\n build_config[\"ocr_engine\"][\"value\"] = \"None\"\n\n return build_config\n\n def update_outputs(self, frontend_node: dict[str, Any], field_name: str, field_value: Any) -> dict[str, Any]: # noqa: ARG002\n \"\"\"Dynamically show outputs based on file count/type and advanced mode.\"\"\"\n if field_name not in [\"path\", \"advanced_mode\", \"pipeline\"]:\n return frontend_node\n\n template = frontend_node.get(\"template\", {})\n paths = self._path_value(template)\n if not paths:\n return frontend_node\n\n frontend_node[\"outputs\"] = []\n if len(paths) == 1:\n file_path = paths[0] if field_name == \"path\" else frontend_node[\"template\"][\"path\"][\"file_path\"][0]\n if file_path.endswith((\".csv\", \".xlsx\", \".parquet\")):\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Structured Content\",\n name=\"dataframe\",\n method=\"load_files_structured\",\n tool_mode=True,\n ),\n )\n elif file_path.endswith(\".json\"):\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Structured Content\", name=\"json\", method=\"load_files_json\", tool_mode=True),\n )\n\n advanced_mode = frontend_node.get(\"template\", {}).get(\"advanced_mode\", {}).get(\"value\", False)\n if advanced_mode:\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Structured Output\",\n name=\"advanced_dataframe\",\n method=\"load_files_dataframe\",\n tool_mode=True,\n ),\n )\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Markdown\", name=\"advanced_markdown\", method=\"load_files_markdown\", tool_mode=True\n ),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"File Path\", name=\"path\", method=\"load_files_path\", tool_mode=True),\n )\n else:\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Raw Content\", name=\"message\", method=\"load_files_message\", tool_mode=True),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"File Path\", name=\"path\", method=\"load_files_path\", tool_mode=True),\n )\n else:\n # Multiple files => DataFrame output; advanced parser disabled\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Files\", name=\"dataframe\", method=\"load_files\", tool_mode=True)\n )\n\n return frontend_node\n\n # ------------------------------ Core processing ----------------------------------\n\n def _validate_and_resolve_paths(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Override to handle file_path_str input from tool mode.\n\n When called as a tool, the file_path_str parameter can be set.\n If not provided, it will fall back to using the path FileInput (uploaded file).\n Priority:\n 1. file_path_str (if provided by the tool call)\n 2. path (uploaded file from UI)\n \"\"\"\n # Check if file_path_str is provided (from tool mode)\n file_path_str = getattr(self, \"file_path_str\", None)\n if file_path_str:\n # Use the string path from tool mode\n from pathlib import Path\n\n from lfx.schema.data import Data\n\n resolved_path = Path(self.resolve_path(file_path_str))\n if not resolved_path.exists():\n msg = f\"File or directory not found: {file_path_str}\"\n self.log(msg)\n if not self.silent_errors:\n raise ValueError(msg)\n return []\n\n data_obj = Data(data={self.SERVER_FILE_PATH_FIELDNAME: str(resolved_path)})\n return [BaseFileComponent.BaseFile(data_obj, resolved_path, delete_after_processing=False)]\n\n # Otherwise use the default implementation (uses path FileInput)\n return super()._validate_and_resolve_paths()\n\n def _is_docling_compatible(self, file_path: str) -> bool:\n \"\"\"Lightweight extension gate for Docling-compatible types.\"\"\"\n docling_exts = (\n \".adoc\",\n \".asciidoc\",\n \".asc\",\n \".bmp\",\n \".csv\",\n \".dotx\",\n \".dotm\",\n \".docm\",\n \".docx\",\n \".htm\",\n \".html\",\n \".jpg\",\n \".jpeg\",\n \".json\",\n \".md\",\n \".pdf\",\n \".png\",\n \".potx\",\n \".ppsx\",\n \".pptm\",\n \".potm\",\n \".ppsm\",\n \".pptx\",\n \".tiff\",\n \".txt\",\n \".xls\",\n \".xlsx\",\n \".xhtml\",\n \".xml\",\n \".webp\",\n )\n return file_path.lower().endswith(docling_exts)\n\n async def _get_local_file_for_docling(self, file_path: str) -> tuple[str, bool]:\n \"\"\"Get a local file path for Docling processing, downloading from S3 if needed.\n\n Args:\n file_path: Either a local path or S3 key (format \"flow_id/filename\")\n\n Returns:\n tuple[str, bool]: (local_path, should_delete) where should_delete indicates\n if this is a temporary file that should be cleaned up\n \"\"\"\n settings = get_settings_service().settings\n if settings.storage_type == \"local\":\n return file_path, False\n\n # S3 storage - download to temp file\n parsed = parse_storage_path(file_path)\n if not parsed:\n msg = f\"Invalid S3 path format: {file_path}. Expected 'flow_id/filename'\"\n raise ValueError(msg)\n\n storage_service = get_storage_service()\n flow_id, filename = parsed\n\n # Get file content from S3\n content = await storage_service.get_file(flow_id, filename)\n\n suffix = Path(filename).suffix\n with NamedTemporaryFile(mode=\"wb\", suffix=suffix, delete=False) as tmp_file:\n tmp_file.write(content)\n temp_path = tmp_file.name\n\n return temp_path, True\n\n def _process_docling_in_subprocess(self, file_path: str) -> Data | None:\n \"\"\"Run Docling in a separate OS process and map the result to a Data object.\n\n We avoid multiprocessing pickling by launching `python -c \"<script>\"` and\n passing JSON config via stdin. The child prints a JSON result to stdout.\n\n For S3 storage, the file is downloaded to a temp file first.\n \"\"\"\n if not file_path:\n return None\n\n settings = get_settings_service().settings\n if settings.storage_type == \"s3\":\n local_path, should_delete = run_until_complete(self._get_local_file_for_docling(file_path))\n else:\n local_path = file_path\n should_delete = False\n\n try:\n return self._process_docling_subprocess_impl(local_path, file_path)\n finally:\n # Clean up temp file if we created one\n if should_delete:\n with contextlib.suppress(Exception):\n Path(local_path).unlink() # Ignore cleanup errors\n\n def _process_docling_subprocess_impl(self, local_file_path: str, original_file_path: str) -> Data | None:\n \"\"\"Implementation of Docling subprocess processing.\n\n Args:\n local_file_path: Path to local file to process\n original_file_path: Original file path to include in metadata\n Returns:\n Data object with processed content\n \"\"\"\n args: dict[str, Any] = {\n \"file_path\": local_file_path,\n \"markdown\": bool(self.markdown),\n \"image_mode\": str(self.IMAGE_MODE),\n \"md_image_placeholder\": str(self.md_image_placeholder),\n \"md_page_break_placeholder\": str(self.md_page_break_placeholder),\n \"pipeline\": str(self.pipeline),\n \"ocr_engine\": (\n self.ocr_engine if self.ocr_engine and self.ocr_engine != \"None\" and self.pipeline != \"vlm\" else None\n ),\n }\n\n self.log(f\"Starting Docling subprocess for file: {local_file_path}\")\n self.log(args)\n\n # Child script for isolating the docling processing\n child_script = textwrap.dedent(\n r\"\"\"\n import json, sys\n\n def try_imports():\n try:\n from docling.datamodel.base_models import ConversionStatus, InputFormat # type: ignore\n from docling.document_converter import DocumentConverter # type: ignore\n from docling_core.types.doc import ImageRefMode # type: ignore\n return ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, \"latest\"\n except Exception as e:\n raise e\n\n def create_converter(strategy, input_format, DocumentConverter, pipeline, ocr_engine):\n # --- Standard PDF/IMAGE pipeline (your existing behavior), with optional OCR ---\n if pipeline == \"standard\":\n try:\n from docling.datamodel.pipeline_options import PdfPipelineOptions # type: ignore\n from docling.document_converter import PdfFormatOption # type: ignore\n\n pipe = PdfPipelineOptions()\n pipe.do_ocr = False\n\n if ocr_engine:\n try:\n from docling.models.factories import get_ocr_factory # type: ignore\n pipe.do_ocr = True\n fac = get_ocr_factory(allow_external_plugins=False)\n pipe.ocr_options = fac.create_options(kind=ocr_engine)\n except Exception:\n # If OCR setup fails, disable it\n pipe.do_ocr = False\n\n fmt = {}\n if hasattr(input_format, \"PDF\"):\n fmt[getattr(input_format, \"PDF\")] = PdfFormatOption(pipeline_options=pipe)\n if hasattr(input_format, \"IMAGE\"):\n fmt[getattr(input_format, \"IMAGE\")] = PdfFormatOption(pipeline_options=pipe)\n\n return DocumentConverter(format_options=fmt)\n except Exception:\n return DocumentConverter()\n\n # --- Vision-Language Model (VLM) pipeline ---\n if pipeline == \"vlm\":\n try:\n from docling.datamodel.pipeline_options import VlmPipelineOptions\n from docling.datamodel.vlm_model_specs import GRANITEDOCLING_MLX, GRANITEDOCLING_TRANSFORMERS\n from docling.document_converter import PdfFormatOption\n from docling.pipeline.vlm_pipeline import VlmPipeline\n\n vl_pipe = VlmPipelineOptions(\n vlm_options=GRANITEDOCLING_TRANSFORMERS,\n )\n\n if sys.platform == \"darwin\":\n try:\n import mlx_vlm\n vl_pipe.vlm_options = GRANITEDOCLING_MLX\n except ImportError as e:\n raise e\n\n # VLM paths generally don't need OCR; keep OCR off by default here.\n fmt = {}\n if hasattr(input_format, \"PDF\"):\n fmt[getattr(input_format, \"PDF\")] = PdfFormatOption(\n pipeline_cls=VlmPipeline,\n pipeline_options=vl_pipe\n )\n if hasattr(input_format, \"IMAGE\"):\n fmt[getattr(input_format, \"IMAGE\")] = PdfFormatOption(\n pipeline_cls=VlmPipeline,\n pipeline_options=vl_pipe\n )\n\n return DocumentConverter(format_options=fmt)\n except Exception as e:\n raise e\n\n # --- Fallback: default converter with no special options ---\n return DocumentConverter()\n\n def export_markdown(document, ImageRefMode, image_mode, img_ph, pg_ph):\n try:\n mode = getattr(ImageRefMode, image_mode.upper(), image_mode)\n return document.export_to_markdown(\n image_mode=mode,\n image_placeholder=img_ph,\n page_break_placeholder=pg_ph,\n )\n except Exception:\n try:\n return document.export_to_text()\n except Exception:\n return str(document)\n\n def to_rows(doc_dict):\n rows = []\n for t in doc_dict.get(\"texts\", []):\n prov = t.get(\"prov\") or []\n page_no = None\n if prov and isinstance(prov, list) and isinstance(prov[0], dict):\n page_no = prov[0].get(\"page_no\")\n rows.append({\n \"page_no\": page_no,\n \"label\": t.get(\"label\"),\n \"text\": t.get(\"text\"),\n \"level\": t.get(\"level\"),\n })\n return rows\n\n def main():\n cfg = json.loads(sys.stdin.read())\n file_path = cfg[\"file_path\"]\n markdown = cfg[\"markdown\"]\n image_mode = cfg[\"image_mode\"]\n img_ph = cfg[\"md_image_placeholder\"]\n pg_ph = cfg[\"md_page_break_placeholder\"]\n pipeline = cfg[\"pipeline\"]\n ocr_engine = cfg.get(\"ocr_engine\")\n meta = {\"file_path\": file_path}\n\n try:\n ConversionStatus, InputFormat, DocumentConverter, ImageRefMode, strategy = try_imports()\n converter = create_converter(strategy, InputFormat, DocumentConverter, pipeline, ocr_engine)\n try:\n res = converter.convert(file_path)\n except Exception as e:\n print(json.dumps({\"ok\": False, \"error\": f\"Docling conversion error: {e}\", \"meta\": meta}))\n return\n\n ok = False\n if hasattr(res, \"status\"):\n try:\n ok = (res.status == ConversionStatus.SUCCESS) or (str(res.status).lower() == \"success\")\n except Exception:\n ok = (str(res.status).lower() == \"success\")\n if not ok and hasattr(res, \"document\"):\n ok = getattr(res, \"document\", None) is not None\n if not ok:\n print(json.dumps({\"ok\": False, \"error\": \"Docling conversion failed\", \"meta\": meta}))\n return\n\n doc = getattr(res, \"document\", None)\n if doc is None:\n print(json.dumps({\"ok\": False, \"error\": \"Docling produced no document\", \"meta\": meta}))\n return\n\n if markdown:\n text = export_markdown(doc, ImageRefMode, image_mode, img_ph, pg_ph)\n print(json.dumps({\"ok\": True, \"mode\": \"markdown\", \"text\": text, \"meta\": meta}))\n return\n\n # structured\n try:\n doc_dict = doc.export_to_dict()\n except Exception as e:\n print(json.dumps({\"ok\": False, \"error\": f\"Docling export_to_dict failed: {e}\", \"meta\": meta}))\n return\n\n rows = to_rows(doc_dict)\n print(json.dumps({\"ok\": True, \"mode\": \"structured\", \"doc\": rows, \"meta\": meta}))\n except Exception as e:\n print(\n json.dumps({\n \"ok\": False,\n \"error\": f\"Docling processing error: {e}\",\n \"meta\": {\"file_path\": file_path},\n })\n )\n\n if __name__ == \"__main__\":\n main()\n \"\"\"\n )\n\n # Validate file_path to avoid command injection or unsafe input\n if not isinstance(args[\"file_path\"], str) or any(c in args[\"file_path\"] for c in [\";\", \"|\", \"&\", \"$\", \"`\"]):\n return Data(data={\"error\": \"Unsafe file path detected.\", \"file_path\": args[\"file_path\"]})\n\n proc = subprocess.run( # noqa: S603\n [sys.executable, \"-u\", \"-c\", child_script],\n input=json.dumps(args).encode(\"utf-8\"),\n capture_output=True,\n check=False,\n )\n\n if not proc.stdout:\n err_msg = proc.stderr.decode(\"utf-8\", errors=\"replace\") or \"no output from child process\"\n return Data(data={\"error\": f\"Docling subprocess error: {err_msg}\", \"file_path\": original_file_path})\n\n try:\n result = json.loads(proc.stdout.decode(\"utf-8\"))\n except Exception as e: # noqa: BLE001\n err_msg = proc.stderr.decode(\"utf-8\", errors=\"replace\")\n return Data(\n data={\n \"error\": f\"Invalid JSON from Docling subprocess: {e}. stderr={err_msg}\",\n \"file_path\": original_file_path,\n },\n )\n\n if not result.get(\"ok\"):\n return Data(data={\"error\": result.get(\"error\", \"Unknown Docling error\"), **result.get(\"meta\", {})})\n\n meta = result.get(\"meta\", {})\n if result.get(\"mode\") == \"markdown\":\n exported_content = str(result.get(\"text\", \"\"))\n return Data(\n text=exported_content,\n data={\"exported_content\": exported_content, \"export_format\": self.EXPORT_FORMAT, **meta},\n )\n\n rows = list(result.get(\"doc\", []))\n return Data(data={\"doc\": rows, \"export_format\": self.EXPORT_FORMAT, **meta})\n\n def process_files(\n self,\n file_list: list[BaseFileComponent.BaseFile],\n ) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Process input files.\n\n - advanced_mode => Docling in a separate process.\n - Otherwise => standard parsing in current process (optionally threaded).\n \"\"\"\n if not file_list:\n msg = \"No files to process.\"\n raise ValueError(msg)\n\n # Validate image files to detect content/extension mismatches\n # This prevents API errors like \"Image does not match the provided media type\"\n image_extensions = {\"jpeg\", \"jpg\", \"png\", \"gif\", \"webp\", \"bmp\", \"tiff\"}\n for file in file_list:\n extension = file.path.suffix[1:].lower()\n if extension in image_extensions:\n # file.path is already resolved, read bytes directly\n try:\n content = file.path.read_bytes()\n is_valid, error_msg = validate_image_content_type(\n str(file.path),\n content=content,\n )\n if not is_valid:\n self.log(error_msg)\n if not self.silent_errors:\n raise ValueError(error_msg)\n except OSError as e:\n self.log(f\"Could not read file for validation: {e}\")\n # Continue - let it fail later with better error\n\n # Validate that files requiring Docling are only processed when advanced mode is enabled\n if not self.advanced_mode:\n for file in file_list:\n extension = file.path.suffix[1:].lower()\n if extension in self.DOCLING_ONLY_EXTENSIONS:\n msg = (\n f\"File '{file.path.name}' has extension '.{extension}' which requires \"\n f\"Advanced Parser mode. Please enable 'Advanced Parser' to process this file.\"\n )\n self.log(msg)\n raise ValueError(msg)\n\n def process_file_standard(file_path: str, *, silent_errors: bool = False) -> Data | None:\n try:\n return parse_text_file_to_data(file_path, silent_errors=silent_errors)\n except FileNotFoundError as e:\n self.log(f\"File not found: {file_path}. Error: {e}\")\n if not silent_errors:\n raise\n return None\n except Exception as e:\n self.log(f\"Unexpected error processing {file_path}: {e}\")\n if not silent_errors:\n raise\n return None\n\n docling_compatible = all(self._is_docling_compatible(str(f.path)) for f in file_list)\n\n # Advanced path: Check if ALL files are compatible with Docling\n if self.advanced_mode and docling_compatible:\n final_return: list[BaseFileComponent.BaseFile] = []\n for file in file_list:\n file_path = str(file.path)\n advanced_data: Data | None = self._process_docling_in_subprocess(file_path)\n\n # --- UNNEST: expand each element in `doc` to its own Data row\n payload = getattr(advanced_data, \"data\", {}) or {}\n doc_rows = payload.get(\"doc\")\n if isinstance(doc_rows, list) and doc_rows:\n # Non-empty list of structured rows\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 elif isinstance(doc_rows, list) and not doc_rows:\n # Empty list - file was processed but no text content found\n # Create a Data object indicating no content was extracted\n self.log(f\"No text extracted from '{file_path}', creating placeholder data\")\n empty_data = Data(\n data={\n \"file_path\": file_path,\n \"text\": \"(No text content extracted from image)\",\n \"info\": \"Image processed successfully but contained no extractable text\",\n **{k: v for k, v in payload.items() if k != \"doc\"},\n },\n )\n final_return.extend(self.rollup_data([file], [empty_data]))\n else:\n # If not structured, keep as-is (e.g., markdown export or error dict)\n final_return.extend(self.rollup_data(file_list, [advanced_data]))\n return final_return\n\n # Standard multi-file (or single non-advanced) path\n concurrency = 1 if not self.use_multithreading else max(1, self.concurrency_multithreading)\n\n file_paths = [str(f.path) for f in file_list]\n self.log(f\"Starting parallel processing of {len(file_paths)} files with concurrency: {concurrency}.\")\n my_data = parallel_load_data(\n file_paths,\n silent_errors=self.silent_errors,\n load_function=process_file_standard,\n max_concurrency=concurrency,\n )\n return self.rollup_data(file_list, my_data)\n\n # ------------------------------ Output helpers -----------------------------------\n\n def load_files_helper(self) -> DataFrame:\n result = self.load_files()\n\n # Result is a DataFrame - check if it has any rows\n if result.empty:\n msg = \"Could not extract content from the provided file(s).\"\n raise ValueError(msg)\n\n # Check for error column with error messages\n if \"error\" in result.columns:\n errors = result[\"error\"].dropna().tolist()\n if errors and not any(col in result.columns for col in [\"text\", \"doc\", \"exported_content\"]):\n raise ValueError(errors[0])\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\n # Result is a DataFrame - check for text or exported_content columns\n if \"text\" in result.columns and not result[\"text\"].isna().all():\n text_values = result[\"text\"].dropna().tolist()\n if text_values:\n return Message(text=str(text_values[0]))\n\n if \"exported_content\" in result.columns and not result[\"exported_content\"].isna().all():\n content_values = result[\"exported_content\"].dropna().tolist()\n if content_values:\n return Message(text=str(content_values[0]))\n\n # Return empty message with info that no text was found\n return Message(text=\"(No text content extracted from file)\")\n"
|
|
1010
|
+
"value": "\"\"\"Enhanced file component with Docling support and process isolation.\n\nNotes:\n-----\n- ALL Docling parsing/export runs in a separate OS process to prevent memory\n growth and native library state from impacting the main Langflow process.\n- Standard text/structured parsing continues to use existing BaseFileComponent\n utilities (and optional threading via `parallel_load_data`).\n\"\"\"\n\nfrom __future__ import annotations\n\nimport contextlib\nimport json\nimport subprocess\nimport sys\nimport textwrap\nfrom copy import deepcopy\nfrom pathlib import Path\nfrom tempfile import NamedTemporaryFile\nfrom typing import Any\n\nfrom lfx.base.data.base_file import BaseFileComponent\nfrom lfx.base.data.storage_utils import parse_storage_path, read_file_bytes, validate_image_content_type\nfrom lfx.base.data.utils import TEXT_FILE_TYPES, parallel_load_data, parse_text_file_to_data\nfrom lfx.inputs.inputs import DropdownInput, MessageTextInput, StrInput\nfrom lfx.io import BoolInput, FileInput, IntInput, Output\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame # noqa: TC001\nfrom lfx.schema.message import Message\nfrom lfx.services.deps import get_settings_service, get_storage_service\nfrom lfx.utils.async_helpers import run_until_complete\n\n\nclass FileComponent(BaseFileComponent):\n \"\"\"File component with optional Docling processing (isolated in a subprocess).\"\"\"\n\n display_name = \"Read File\"\n # description is now a dynamic property - see get_tool_description()\n _base_description = \"Loads content from one or more files.\"\n documentation: str = \"https://docs.langflow.org/read-file\"\n icon = \"file-text\"\n name = \"File\"\n add_tool_output = True # Enable tool mode toggle without requiring tool_mode inputs\n\n # Extensions that can be processed without Docling (using standard text parsing)\n TEXT_EXTENSIONS = TEXT_FILE_TYPES\n\n # Extensions that require Docling for processing (images, advanced office formats, etc.)\n DOCLING_ONLY_EXTENSIONS = [\n \"adoc\",\n \"asciidoc\",\n \"asc\",\n \"bmp\",\n \"dotx\",\n \"dotm\",\n \"docm\",\n \"jpg\",\n \"jpeg\",\n \"png\",\n \"potx\",\n \"ppsx\",\n \"pptm\",\n \"potm\",\n \"ppsm\",\n \"pptx\",\n \"tiff\",\n \"xls\",\n \"xlsx\",\n \"xhtml\",\n \"webp\",\n ]\n\n # Docling-supported/compatible extensions; TEXT_FILE_TYPES are supported by the base loader.\n VALID_EXTENSIONS = [\n *TEXT_EXTENSIONS,\n *DOCLING_ONLY_EXTENSIONS,\n ]\n\n # Fixed export settings used when markdown export is requested.\n EXPORT_FORMAT = \"Markdown\"\n IMAGE_MODE = \"placeholder\"\n\n _base_inputs = deepcopy(BaseFileComponent.get_base_inputs())\n\n for input_item in _base_inputs:\n if isinstance(input_item, FileInput) and input_item.name == \"path\":\n input_item.real_time_refresh = True\n input_item.tool_mode = False # Disable tool mode for file upload input\n input_item.required = False # Make it optional so it doesn't error in tool mode\n break\n\n inputs = [\n *_base_inputs,\n StrInput(\n name=\"file_path_str\",\n display_name=\"File Path\",\n info=(\n \"Path to the file to read. Used when component is called as a tool. \"\n \"If not provided, will use the uploaded file from 'path' input.\"\n ),\n show=False,\n advanced=True,\n tool_mode=True, # Required for Toolset toggle, but _get_tools() ignores this parameter\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 # ------------------------------ Tool description with file names --------------\n\n def get_tool_description(self) -> str:\n \"\"\"Return a dynamic description that includes the names of uploaded files.\n\n This helps the Agent understand which files are available to read.\n \"\"\"\n base_description = \"Loads and returns the content from uploaded files.\"\n\n # Get the list of uploaded file paths\n file_paths = getattr(self, \"path\", None)\n if not file_paths:\n return base_description\n\n # Ensure it's a list\n if not isinstance(file_paths, list):\n file_paths = [file_paths]\n\n # Extract just the file names from the paths\n file_names = []\n for fp in file_paths:\n if fp:\n name = Path(fp).name\n file_names.append(name)\n\n if file_names:\n files_str = \", \".join(file_names)\n return f\"{base_description} Available files: {files_str}. Call this tool to read these files.\"\n\n return base_description\n\n @property\n def description(self) -> str:\n \"\"\"Dynamic description property that includes uploaded file names.\"\"\"\n return self.get_tool_description()\n\n async def _get_tools(self) -> list:\n \"\"\"Override to create a tool without parameters.\n\n The Read File component should use the files already uploaded via UI,\n not accept file paths from the Agent (which wouldn't know the internal paths).\n \"\"\"\n from langchain_core.tools import StructuredTool\n from pydantic import BaseModel\n\n # Empty schema - no parameters needed\n class EmptySchema(BaseModel):\n \"\"\"No parameters required - uses pre-uploaded files.\"\"\"\n\n async def read_files_tool() -> str:\n \"\"\"Read the content of uploaded files.\"\"\"\n try:\n result = self.load_files_message()\n if hasattr(result, \"get_text\"):\n return result.get_text()\n if hasattr(result, \"text\"):\n return result.text\n return str(result)\n except (FileNotFoundError, ValueError, OSError, RuntimeError) as e:\n return f\"Error reading files: {e}\"\n\n description = self.get_tool_description()\n\n tool = StructuredTool(\n name=\"load_files_message\",\n description=description,\n coroutine=read_files_tool,\n args_schema=EmptySchema,\n handle_tool_error=True,\n tags=[\"load_files_message\"],\n metadata={\n \"display_name\": \"Read File\",\n \"display_description\": description,\n },\n )\n\n return [tool]\n\n # ------------------------------ UI helpers --------------------------------------\n\n def _path_value(self, template: dict) -> list[str]:\n \"\"\"Return the list of currently selected file paths from the template.\"\"\"\n return template.get(\"path\", {}).get(\"file_path\", [])\n\n def update_build_config(\n self,\n build_config: dict[str, Any],\n field_value: Any,\n field_name: str | None = None,\n ) -> dict[str, Any]:\n \"\"\"Show/hide Advanced Parser and related fields based on selection context.\"\"\"\n if field_name == \"path\":\n paths = self._path_value(build_config)\n\n # If all files can be processed by docling, do so\n allow_advanced = all(not file_path.endswith((\".csv\", \".xlsx\", \".parquet\")) for file_path in paths)\n build_config[\"advanced_mode\"][\"show\"] = allow_advanced\n if not allow_advanced:\n build_config[\"advanced_mode\"][\"value\"] = False\n for f in (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\"):\n if f in build_config:\n build_config[f][\"show\"] = False\n\n # Docling Processing\n elif field_name == \"advanced_mode\":\n for f in (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\"):\n if f in build_config:\n build_config[f][\"show\"] = bool(field_value)\n if f == \"pipeline\":\n build_config[f][\"advanced\"] = not bool(field_value)\n\n elif field_name == \"pipeline\":\n if field_value == \"standard\":\n build_config[\"ocr_engine\"][\"show\"] = True\n build_config[\"ocr_engine\"][\"value\"] = \"easyocr\"\n else:\n build_config[\"ocr_engine\"][\"show\"] = False\n build_config[\"ocr_engine\"][\"value\"] = \"None\"\n\n return build_config\n\n def update_outputs(self, frontend_node: dict[str, Any], field_name: str, field_value: Any) -> dict[str, Any]: # noqa: ARG002\n \"\"\"Dynamically show outputs based on file count/type and advanced mode.\"\"\"\n if field_name not in [\"path\", \"advanced_mode\", \"pipeline\"]:\n return frontend_node\n\n template = frontend_node.get(\"template\", {})\n paths = self._path_value(template)\n if not paths:\n return frontend_node\n\n frontend_node[\"outputs\"] = []\n if len(paths) == 1:\n file_path = paths[0] if field_name == \"path\" else frontend_node[\"template\"][\"path\"][\"file_path\"][0]\n if file_path.endswith((\".csv\", \".xlsx\", \".parquet\")):\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Structured Content\",\n name=\"dataframe\",\n method=\"load_files_structured\",\n tool_mode=True,\n ),\n )\n elif file_path.endswith(\".json\"):\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Structured Content\", name=\"json\", method=\"load_files_json\", tool_mode=True),\n )\n\n advanced_mode = frontend_node.get(\"template\", {}).get(\"advanced_mode\", {}).get(\"value\", False)\n if advanced_mode:\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Structured Output\",\n name=\"advanced_dataframe\",\n method=\"load_files_dataframe\",\n tool_mode=True,\n ),\n )\n frontend_node[\"outputs\"].append(\n Output(\n display_name=\"Markdown\", name=\"advanced_markdown\", method=\"load_files_markdown\", tool_mode=True\n ),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"File Path\", name=\"path\", method=\"load_files_path\", tool_mode=True),\n )\n else:\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Raw Content\", name=\"message\", method=\"load_files_message\", tool_mode=True),\n )\n frontend_node[\"outputs\"].append(\n Output(display_name=\"File Path\", name=\"path\", method=\"load_files_path\", tool_mode=True),\n )\n else:\n # Multiple files => DataFrame output; advanced parser disabled\n frontend_node[\"outputs\"].append(\n Output(display_name=\"Files\", name=\"dataframe\", method=\"load_files\", tool_mode=True)\n )\n\n return frontend_node\n\n # ------------------------------ Core processing ----------------------------------\n\n def _validate_and_resolve_paths(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Override to handle file_path_str input from tool mode.\n\n When called as a tool, the file_path_str parameter can be set.\n If not provided, it will fall back to using the path FileInput (uploaded file).\n Priority:\n 1. file_path_str (if provided by the tool call)\n 2. path (uploaded file from UI)\n \"\"\"\n # Check if file_path_str is provided (from tool mode)\n file_path_str = getattr(self, \"file_path_str\", None)\n if file_path_str:\n # Use the string path from tool mode\n from pathlib import Path\n\n from lfx.schema.data import Data\n\n resolved_path = Path(self.resolve_path(file_path_str))\n if not resolved_path.exists():\n msg = f\"File or directory not found: {file_path_str}\"\n self.log(msg)\n if not self.silent_errors:\n raise ValueError(msg)\n return []\n\n data_obj = Data(data={self.SERVER_FILE_PATH_FIELDNAME: str(resolved_path)})\n return [BaseFileComponent.BaseFile(data_obj, resolved_path, delete_after_processing=False)]\n\n # Otherwise use the default implementation (uses path FileInput)\n return super()._validate_and_resolve_paths()\n\n def _is_docling_compatible(self, file_path: str) -> bool:\n \"\"\"Lightweight extension gate for Docling-compatible types.\"\"\"\n docling_exts = (\n \".adoc\",\n \".asciidoc\",\n \".asc\",\n \".bmp\",\n \".csv\",\n \".dotx\",\n \".dotm\",\n \".docm\",\n \".docx\",\n \".htm\",\n \".html\",\n \".jpg\",\n \".jpeg\",\n \".json\",\n \".md\",\n \".pdf\",\n \".png\",\n \".potx\",\n \".ppsx\",\n \".pptm\",\n \".potm\",\n \".ppsm\",\n \".pptx\",\n \".tiff\",\n \".txt\",\n \".xls\",\n \".xlsx\",\n \".xhtml\",\n \".xml\",\n \".webp\",\n )\n return file_path.lower().endswith(docling_exts)\n\n async def _get_local_file_for_docling(self, file_path: str) -> tuple[str, bool]:\n \"\"\"Get a local file path for Docling processing, downloading from S3 if needed.\n\n Args:\n file_path: Either a local path or S3 key (format \"flow_id/filename\")\n\n Returns:\n tuple[str, bool]: (local_path, should_delete) where should_delete indicates\n if this is a temporary file that should be cleaned up\n \"\"\"\n settings = get_settings_service().settings\n if settings.storage_type == \"local\":\n return file_path, False\n\n # S3 storage - download to temp file\n parsed = parse_storage_path(file_path)\n if not parsed:\n msg = f\"Invalid S3 path format: {file_path}. Expected 'flow_id/filename'\"\n raise ValueError(msg)\n\n storage_service = get_storage_service()\n flow_id, filename = parsed\n\n # Get file content from S3\n content = await storage_service.get_file(flow_id, filename)\n\n suffix = Path(filename).suffix\n with NamedTemporaryFile(mode=\"wb\", suffix=suffix, delete=False) as tmp_file:\n tmp_file.write(content)\n temp_path = tmp_file.name\n\n return temp_path, True\n\n def _process_docling_in_subprocess(self, file_path: str) -> Data | None:\n \"\"\"Run Docling in a separate OS process and map the result to a Data object.\n\n We avoid multiprocessing pickling by launching `python -c \"<script>\"` and\n passing JSON config via stdin. The child prints a JSON result to stdout.\n\n For S3 storage, the file is downloaded to a temp file first.\n \"\"\"\n if not file_path:\n return None\n\n settings = get_settings_service().settings\n if settings.storage_type == \"s3\":\n local_path, should_delete = run_until_complete(self._get_local_file_for_docling(file_path))\n else:\n local_path = file_path\n should_delete = False\n\n try:\n return self._process_docling_subprocess_impl(local_path, file_path)\n finally:\n # Clean up temp file if we created one\n if should_delete:\n with contextlib.suppress(Exception):\n Path(local_path).unlink() # Ignore cleanup errors\n\n def _process_docling_subprocess_impl(self, local_file_path: str, original_file_path: str) -> Data | None:\n \"\"\"Implementation of Docling subprocess processing.\n\n Args:\n local_file_path: Path to local file to process\n original_file_path: Original file path to include in metadata\n Returns:\n Data object with processed content\n \"\"\"\n args: dict[str, Any] = {\n \"file_path\": local_file_path,\n \"markdown\": bool(self.markdown),\n \"image_mode\": str(self.IMAGE_MODE),\n \"md_image_placeholder\": str(self.md_image_placeholder),\n \"md_page_break_placeholder\": str(self.md_page_break_placeholder),\n \"pipeline\": str(self.pipeline),\n \"ocr_engine\": (\n self.ocr_engine if self.ocr_engine and self.ocr_engine != \"None\" and self.pipeline != \"vlm\" else None\n ),\n }\n\n # 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\") if proc.stderr else \"no output from child process\"\n return Data(data={\"error\": f\"Docling subprocess error: {err_msg}\", \"file_path\": original_file_path})\n\n try:\n result = json.loads(proc.stdout.decode(\"utf-8\"))\n except Exception as e: # noqa: BLE001\n err_msg = proc.stderr.decode(\"utf-8\", errors=\"replace\")\n return Data(\n data={\n \"error\": f\"Invalid JSON from Docling subprocess: {e}. stderr={err_msg}\",\n \"file_path\": original_file_path,\n },\n )\n\n if not result.get(\"ok\"):\n error_msg = result.get(\"error\", \"Unknown Docling error\")\n # Override meta file_path with original_file_path to ensure correct path matching\n meta = result.get(\"meta\", {})\n meta[\"file_path\"] = original_file_path\n return Data(data={\"error\": error_msg, **meta})\n\n meta = result.get(\"meta\", {})\n # Override meta file_path with original_file_path to ensure correct path matching\n # The subprocess returns the temp file path, but we need the original S3/local path for rollup_data\n meta[\"file_path\"] = original_file_path\n if result.get(\"mode\") == \"markdown\":\n exported_content = str(result.get(\"text\", \"\"))\n return Data(\n text=exported_content,\n data={\"exported_content\": exported_content, \"export_format\": self.EXPORT_FORMAT, **meta},\n )\n\n rows = list(result.get(\"doc\", []))\n return Data(data={\"doc\": rows, \"export_format\": self.EXPORT_FORMAT, **meta})\n\n def process_files(\n self,\n file_list: list[BaseFileComponent.BaseFile],\n ) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Process input files.\n\n - advanced_mode => Docling in a separate process.\n - Otherwise => standard parsing in current process (optionally threaded).\n \"\"\"\n if not file_list:\n msg = \"No files to process.\"\n raise ValueError(msg)\n\n # Validate image files to detect content/extension mismatches\n # This prevents API errors like \"Image does not match the provided media type\"\n image_extensions = {\"jpeg\", \"jpg\", \"png\", \"gif\", \"webp\", \"bmp\", \"tiff\"}\n settings = get_settings_service().settings\n for file in file_list:\n extension = file.path.suffix[1:].lower()\n if extension in image_extensions:\n # Read bytes based on storage type\n try:\n if settings.storage_type == \"s3\":\n # For S3 storage, use storage service to read file bytes\n file_path_str = str(file.path)\n content = run_until_complete(read_file_bytes(file_path_str))\n else:\n # For local storage, read bytes directly from filesystem\n content = file.path.read_bytes()\n\n is_valid, error_msg = validate_image_content_type(\n str(file.path),\n content=content,\n )\n if not is_valid:\n self.log(error_msg)\n if not self.silent_errors:\n raise ValueError(error_msg)\n except (OSError, FileNotFoundError) as e:\n self.log(f\"Could not read file for validation: {e}\")\n # Continue - let it fail later with better error\n\n # Validate that files requiring Docling are only processed when advanced mode is enabled\n if not self.advanced_mode:\n for file in file_list:\n extension = file.path.suffix[1:].lower()\n if extension in self.DOCLING_ONLY_EXTENSIONS:\n msg = (\n f\"File '{file.path.name}' has extension '.{extension}' which requires \"\n f\"Advanced Parser mode. Please enable 'Advanced Parser' to process this file.\"\n )\n self.log(msg)\n raise ValueError(msg)\n\n def process_file_standard(file_path: str, *, silent_errors: bool = False) -> Data | None:\n try:\n return parse_text_file_to_data(file_path, silent_errors=silent_errors)\n except FileNotFoundError as e:\n self.log(f\"File not found: {file_path}. Error: {e}\")\n if not silent_errors:\n raise\n return None\n except Exception as e:\n self.log(f\"Unexpected error processing {file_path}: {e}\")\n if not silent_errors:\n raise\n return None\n\n docling_compatible = all(self._is_docling_compatible(str(f.path)) for f in file_list)\n\n # Advanced path: Check if ALL files are compatible with Docling\n if self.advanced_mode and docling_compatible:\n final_return: list[BaseFileComponent.BaseFile] = []\n for file in file_list:\n file_path = str(file.path)\n advanced_data: Data | None = self._process_docling_in_subprocess(file_path)\n\n # Handle None case - Docling processing failed or returned None\n if advanced_data is None:\n error_data = Data(\n data={\n \"file_path\": file_path,\n \"error\": \"Docling processing returned no result. Check logs for details.\",\n },\n )\n final_return.extend(self.rollup_data([file], [error_data]))\n continue\n\n # --- UNNEST: expand each element in `doc` to its own Data row\n payload = getattr(advanced_data, \"data\", {}) or {}\n\n # Check for errors first\n if \"error\" in payload:\n error_msg = payload.get(\"error\", \"Unknown error\")\n error_data = Data(\n data={\n \"file_path\": file_path,\n \"error\": error_msg,\n **{k: v for k, v in payload.items() if k not in (\"error\", \"file_path\")},\n },\n )\n final_return.extend(self.rollup_data([file], [error_data]))\n continue\n\n doc_rows = payload.get(\"doc\")\n if isinstance(doc_rows, list) and doc_rows:\n # Non-empty list of structured rows\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], rows))\n elif isinstance(doc_rows, list) and not doc_rows:\n # Empty list - file was processed but no text content found\n # Create a Data object indicating no content was extracted\n self.log(f\"No text extracted from '{file_path}', creating placeholder data\")\n empty_data = Data(\n data={\n \"file_path\": file_path,\n \"text\": \"(No text content extracted from image)\",\n \"info\": \"Image processed successfully but contained no extractable text\",\n **{k: v for k, v in payload.items() if k != \"doc\"},\n },\n )\n final_return.extend(self.rollup_data([file], [empty_data]))\n else:\n # If not structured, keep as-is (e.g., markdown export or error dict)\n # Ensure file_path is set for proper rollup matching\n if not payload.get(\"file_path\"):\n payload[\"file_path\"] = file_path\n # Create new Data with file_path\n advanced_data = Data(\n data=payload,\n text=getattr(advanced_data, \"text\", None),\n )\n final_return.extend(self.rollup_data([file], [advanced_data]))\n return final_return\n\n # Standard multi-file (or single non-advanced) path\n concurrency = 1 if not self.use_multithreading else max(1, self.concurrency_multithreading)\n\n file_paths = [str(f.path) for f in file_list]\n self.log(f\"Starting parallel processing of {len(file_paths)} files with concurrency: {concurrency}.\")\n my_data = parallel_load_data(\n file_paths,\n silent_errors=self.silent_errors,\n load_function=process_file_standard,\n max_concurrency=concurrency,\n )\n return self.rollup_data(file_list, my_data)\n\n # ------------------------------ Output helpers -----------------------------------\n\n def load_files_helper(self) -> DataFrame:\n result = self.load_files()\n\n # Result is a DataFrame - check if it has any rows\n if result.empty:\n msg = \"Could not extract content from the provided file(s).\"\n raise ValueError(msg)\n\n # Check for error column with error messages\n if \"error\" in result.columns:\n errors = result[\"error\"].dropna().tolist()\n if errors and not any(col in result.columns for col in [\"text\", \"doc\", \"exported_content\"]):\n raise ValueError(errors[0])\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\n # Result is a DataFrame - check for text or exported_content columns\n if \"text\" in result.columns and not result[\"text\"].isna().all():\n text_values = result[\"text\"].dropna().tolist()\n if text_values:\n return Message(text=str(text_values[0]))\n\n if \"exported_content\" in result.columns and not result[\"exported_content\"].isna().all():\n content_values = result[\"exported_content\"].dropna().tolist()\n if content_values:\n return Message(text=str(content_values[0]))\n\n # Return empty message with info that no text was found\n return Message(text=\"(No text content extracted from file)\")\n"
|
|
1011
1011
|
},
|
|
1012
1012
|
"concurrency_multithreading": {
|
|
1013
1013
|
"_input_type": "IntInput",
|
|
@@ -1528,7 +1528,7 @@
|
|
|
1528
1528
|
"show": true,
|
|
1529
1529
|
"title_case": false,
|
|
1530
1530
|
"type": "code",
|
|
1531
|
-
"value": "from typing import Any\n\nimport requests\nfrom langchain_anthropic import ChatAnthropic\nfrom langchain_ibm import ChatWatsonx\nfrom langchain_ollama import ChatOllama\nfrom langchain_openai import ChatOpenAI\nfrom pydantic.v1 import SecretStr\n\nfrom lfx.base.models.anthropic_constants import ANTHROPIC_MODELS\nfrom lfx.base.models.google_generative_ai_constants import GOOGLE_GENERATIVE_AI_MODELS\nfrom lfx.base.models.google_generative_ai_model import ChatGoogleGenerativeAIFixed\nfrom lfx.base.models.model import LCModelComponent\nfrom lfx.base.models.model_utils import get_ollama_models, is_valid_ollama_url\nfrom lfx.base.models.openai_constants import OPENAI_CHAT_MODEL_NAMES, OPENAI_REASONING_MODEL_NAMES\nfrom lfx.field_typing import LanguageModel\nfrom lfx.field_typing.range_spec import RangeSpec\nfrom lfx.inputs.inputs import BoolInput, MessageTextInput, StrInput\nfrom lfx.io import DropdownInput, MessageInput, MultilineInput, SecretStrInput, SliderInput\nfrom lfx.log.logger import logger\nfrom lfx.schema.dotdict import dotdict\nfrom lfx.utils.util import transform_localhost_url\n\n# IBM watsonx.ai constants\nIBM_WATSONX_DEFAULT_MODELS = [\"ibm/granite-3-2b-instruct\", \"ibm/granite-3-8b-instruct\", \"ibm/granite-13b-instruct-v2\"]\nIBM_WATSONX_URLS = [\n \"https://us-south.ml.cloud.ibm.com\",\n \"https://eu-de.ml.cloud.ibm.com\",\n \"https://eu-gb.ml.cloud.ibm.com\",\n \"https://au-syd.ml.cloud.ibm.com\",\n \"https://jp-tok.ml.cloud.ibm.com\",\n \"https://ca-tor.ml.cloud.ibm.com\",\n]\n\n# Ollama API constants\nHTTP_STATUS_OK = 200\nJSON_MODELS_KEY = \"models\"\nJSON_NAME_KEY = \"name\"\nJSON_CAPABILITIES_KEY = \"capabilities\"\nDESIRED_CAPABILITY = \"completion\"\nDEFAULT_OLLAMA_URL = \"http://localhost:11434\"\n\n\nclass LanguageModelComponent(LCModelComponent):\n display_name = \"Language Model\"\n description = \"Runs a language model given a specified provider.\"\n documentation: str = \"https://docs.langflow.org/components-models\"\n icon = \"brain-circuit\"\n category = \"models\"\n priority = 0 # Set priority to 0 to make it appear first\n\n @staticmethod\n def fetch_ibm_models(base_url: str) -> list[str]:\n \"\"\"Fetch available models from the watsonx.ai API.\"\"\"\n try:\n endpoint = f\"{base_url}/ml/v1/foundation_model_specs\"\n params = {\"version\": \"2024-09-16\", \"filters\": \"function_text_chat,!lifecycle_withdrawn\"}\n response = requests.get(endpoint, params=params, timeout=10)\n response.raise_for_status()\n data = response.json()\n models = [model[\"model_id\"] for model in data.get(\"resources\", [])]\n return sorted(models)\n except Exception: # noqa: BLE001\n logger.exception(\"Error fetching IBM watsonx models. Using default models.\")\n return IBM_WATSONX_DEFAULT_MODELS\n\n inputs = [\n DropdownInput(\n name=\"provider\",\n display_name=\"Model Provider\",\n options=[\"OpenAI\", \"Anthropic\", \"Google\", \"IBM watsonx.ai\", \"Ollama\"],\n value=\"OpenAI\",\n info=\"Select the model provider\",\n real_time_refresh=True,\n options_metadata=[\n {\"icon\": \"OpenAI\"},\n {\"icon\": \"Anthropic\"},\n {\"icon\": \"GoogleGenerativeAI\"},\n {\"icon\": \"WatsonxAI\"},\n {\"icon\": \"Ollama\"},\n ],\n ),\n DropdownInput(\n name=\"model_name\",\n display_name=\"Model Name\",\n options=OPENAI_CHAT_MODEL_NAMES + OPENAI_REASONING_MODEL_NAMES,\n value=OPENAI_CHAT_MODEL_NAMES[0],\n info=\"Select the model to use\",\n real_time_refresh=True,\n refresh_button=True,\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"OpenAI API Key\",\n info=\"Model Provider API key\",\n required=False,\n show=True,\n real_time_refresh=True,\n ),\n DropdownInput(\n name=\"base_url_ibm_watsonx\",\n display_name=\"watsonx API Endpoint\",\n info=\"The base URL of the API (IBM watsonx.ai only)\",\n options=IBM_WATSONX_URLS,\n value=IBM_WATSONX_URLS[0],\n show=False,\n real_time_refresh=True,\n ),\n StrInput(\n name=\"project_id\",\n display_name=\"watsonx Project ID\",\n info=\"The project ID associated with the foundation model (IBM watsonx.ai only)\",\n show=False,\n required=False,\n ),\n MessageTextInput(\n name=\"ollama_base_url\",\n display_name=\"Ollama API URL\",\n info=f\"Endpoint of the Ollama API (Ollama only). Defaults to {DEFAULT_OLLAMA_URL}\",\n value=DEFAULT_OLLAMA_URL,\n show=False,\n real_time_refresh=True,\n load_from_db=True,\n ),\n MessageInput(\n name=\"input_value\",\n display_name=\"Input\",\n info=\"The input text to send to the model\",\n ),\n MultilineInput(\n name=\"system_message\",\n display_name=\"System Message\",\n info=\"A system message that helps set the behavior of the assistant\",\n advanced=False,\n ),\n BoolInput(\n name=\"stream\",\n display_name=\"Stream\",\n info=\"Whether to stream the response\",\n value=False,\n advanced=True,\n ),\n SliderInput(\n name=\"temperature\",\n display_name=\"Temperature\",\n value=0.1,\n info=\"Controls randomness in responses\",\n range_spec=RangeSpec(min=0, max=1, step=0.01),\n advanced=True,\n ),\n ]\n\n def build_model(self) -> LanguageModel:\n provider = self.provider\n model_name = self.model_name\n temperature = self.temperature\n stream = self.stream\n\n if provider == \"OpenAI\":\n if not self.api_key:\n msg = \"OpenAI API key is required when using OpenAI provider\"\n raise ValueError(msg)\n\n if model_name in OPENAI_REASONING_MODEL_NAMES:\n # reasoning models do not support temperature (yet)\n temperature = None\n\n return ChatOpenAI(\n model_name=model_name,\n temperature=temperature,\n streaming=stream,\n openai_api_key=self.api_key,\n )\n if provider == \"Anthropic\":\n if not self.api_key:\n msg = \"Anthropic API key is required when using Anthropic provider\"\n raise ValueError(msg)\n return ChatAnthropic(\n model=model_name,\n temperature=temperature,\n streaming=stream,\n anthropic_api_key=self.api_key,\n )\n if provider == \"Google\":\n if not self.api_key:\n msg = \"Google API key is required when using Google provider\"\n raise ValueError(msg)\n return ChatGoogleGenerativeAIFixed(\n model=model_name,\n temperature=temperature,\n streaming=stream,\n google_api_key=self.api_key,\n )\n if provider == \"IBM watsonx.ai\":\n if not self.api_key:\n msg = \"IBM API key is required when using IBM watsonx.ai provider\"\n raise ValueError(msg)\n if not self.base_url_ibm_watsonx:\n msg = \"IBM watsonx API Endpoint is required when using IBM watsonx.ai provider\"\n raise ValueError(msg)\n if not self.project_id:\n msg = \"IBM watsonx Project ID is required when using IBM watsonx.ai provider\"\n raise ValueError(msg)\n return ChatWatsonx(\n apikey=SecretStr(self.api_key).get_secret_value(),\n url=self.base_url_ibm_watsonx,\n project_id=self.project_id,\n model_id=model_name,\n params={\n \"temperature\": temperature,\n },\n streaming=stream,\n )\n if provider == \"Ollama\":\n if not self.ollama_base_url:\n msg = \"Ollama API URL is required when using Ollama provider\"\n raise ValueError(msg)\n if not model_name:\n msg = \"Model name is required when using Ollama provider\"\n raise ValueError(msg)\n\n transformed_base_url = transform_localhost_url(self.ollama_base_url)\n\n # Check if URL contains /v1 suffix (OpenAI-compatible mode)\n if transformed_base_url and transformed_base_url.rstrip(\"/\").endswith(\"/v1\"):\n # Strip /v1 suffix and log warning\n transformed_base_url = transformed_base_url.rstrip(\"/\").removesuffix(\"/v1\")\n logger.warning(\n \"Detected '/v1' suffix in base URL. The Ollama component uses the native Ollama API, \"\n \"not the OpenAI-compatible API. The '/v1' suffix has been automatically removed. \"\n \"If you want to use the OpenAI-compatible API, please use the OpenAI component instead. \"\n \"Learn more at https://docs.ollama.com/openai#openai-compatibility\"\n )\n\n return ChatOllama(\n base_url=transformed_base_url,\n model=model_name,\n temperature=temperature,\n )\n msg = f\"Unknown provider: {provider}\"\n raise ValueError(msg)\n\n async def update_build_config(\n self, build_config: dotdict, field_value: Any, field_name: str | None = None\n ) -> dotdict:\n if field_name == \"provider\":\n if field_value == \"OpenAI\":\n build_config[\"model_name\"][\"options\"] = OPENAI_CHAT_MODEL_NAMES + OPENAI_REASONING_MODEL_NAMES\n build_config[\"model_name\"][\"value\"] = OPENAI_CHAT_MODEL_NAMES[0]\n build_config[\"api_key\"][\"display_name\"] = \"OpenAI API Key\"\n build_config[\"api_key\"][\"show\"] = True\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = False\n build_config[\"project_id\"][\"show\"] = False\n build_config[\"ollama_base_url\"][\"show\"] = False\n elif field_value == \"Anthropic\":\n build_config[\"model_name\"][\"options\"] = ANTHROPIC_MODELS\n build_config[\"model_name\"][\"value\"] = ANTHROPIC_MODELS[0]\n build_config[\"api_key\"][\"display_name\"] = \"Anthropic API Key\"\n build_config[\"api_key\"][\"show\"] = True\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = False\n build_config[\"project_id\"][\"show\"] = False\n build_config[\"ollama_base_url\"][\"show\"] = False\n elif field_value == \"Google\":\n build_config[\"model_name\"][\"options\"] = GOOGLE_GENERATIVE_AI_MODELS\n build_config[\"model_name\"][\"value\"] = GOOGLE_GENERATIVE_AI_MODELS[0]\n build_config[\"api_key\"][\"display_name\"] = \"Google API Key\"\n build_config[\"api_key\"][\"show\"] = True\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = False\n build_config[\"project_id\"][\"show\"] = False\n build_config[\"ollama_base_url\"][\"show\"] = False\n elif field_value == \"IBM watsonx.ai\":\n build_config[\"model_name\"][\"options\"] = IBM_WATSONX_DEFAULT_MODELS\n build_config[\"model_name\"][\"value\"] = IBM_WATSONX_DEFAULT_MODELS[0]\n build_config[\"api_key\"][\"display_name\"] = \"IBM API Key\"\n build_config[\"api_key\"][\"show\"] = True\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = True\n build_config[\"project_id\"][\"show\"] = True\n build_config[\"ollama_base_url\"][\"show\"] = False\n elif field_value == \"Ollama\":\n # Fetch Ollama models from the API\n build_config[\"api_key\"][\"show\"] = False\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = False\n build_config[\"project_id\"][\"show\"] = False\n build_config[\"ollama_base_url\"][\"show\"] = True\n\n # Try multiple sources to get the URL (in order of preference):\n # 1. Instance attribute (already resolved from global/db)\n # 2. Build config value (may be a global variable reference)\n # 3. Default value\n ollama_url = getattr(self, \"ollama_base_url\", None)\n if not ollama_url:\n config_value = build_config[\"ollama_base_url\"].get(\"value\", DEFAULT_OLLAMA_URL)\n # If config_value looks like a variable name (all caps with underscores), use default\n is_variable_ref = (\n config_value\n and isinstance(config_value, str)\n and config_value.isupper()\n and \"_\" in config_value\n )\n if is_variable_ref:\n await logger.adebug(\n f\"Config value appears to be a variable reference: {config_value}, using default\"\n )\n ollama_url = DEFAULT_OLLAMA_URL\n else:\n ollama_url = config_value\n\n await logger.adebug(f\"Fetching Ollama models for provider switch. URL: {ollama_url}\")\n if await is_valid_ollama_url(url=ollama_url):\n try:\n models = await get_ollama_models(\n base_url_value=ollama_url,\n desired_capability=DESIRED_CAPABILITY,\n json_models_key=JSON_MODELS_KEY,\n json_name_key=JSON_NAME_KEY,\n json_capabilities_key=JSON_CAPABILITIES_KEY,\n )\n build_config[\"model_name\"][\"options\"] = models\n build_config[\"model_name\"][\"value\"] = models[0] if models else \"\"\n except ValueError:\n await logger.awarning(\"Failed to fetch Ollama models. Setting empty options.\")\n build_config[\"model_name\"][\"options\"] = []\n build_config[\"model_name\"][\"value\"] = \"\"\n else:\n await logger.awarning(f\"Invalid Ollama URL: {ollama_url}\")\n build_config[\"model_name\"][\"options\"] = []\n build_config[\"model_name\"][\"value\"] = \"\"\n elif (\n field_name == \"base_url_ibm_watsonx\"\n and field_value\n and hasattr(self, \"provider\")\n and self.provider == \"IBM watsonx.ai\"\n ):\n # Fetch IBM models when base_url changes\n try:\n models = self.fetch_ibm_models(base_url=field_value)\n build_config[\"model_name\"][\"options\"] = models\n build_config[\"model_name\"][\"value\"] = models[0] if models else IBM_WATSONX_DEFAULT_MODELS[0]\n info_message = f\"Updated model options: {len(models)} models found in {field_value}\"\n logger.info(info_message)\n except Exception: # noqa: BLE001\n logger.exception(\"Error updating IBM model options.\")\n elif field_name == \"ollama_base_url\":\n # Fetch Ollama models when ollama_base_url changes\n # Use the field_value directly since this is triggered when the field changes\n logger.debug(\n f\"Fetching Ollama models from updated URL: {build_config['ollama_base_url']} \\\n and value {self.ollama_base_url}\",\n )\n await logger.adebug(f\"Fetching Ollama models from updated URL: {self.ollama_base_url}\")\n if await is_valid_ollama_url(url=self.ollama_base_url):\n try:\n models = await get_ollama_models(\n base_url_value=self.ollama_base_url,\n desired_capability=DESIRED_CAPABILITY,\n json_models_key=JSON_MODELS_KEY,\n json_name_key=JSON_NAME_KEY,\n json_capabilities_key=JSON_CAPABILITIES_KEY,\n )\n build_config[\"model_name\"][\"options\"] = models\n build_config[\"model_name\"][\"value\"] = models[0] if models else \"\"\n info_message = f\"Updated model options: {len(models)} models found in {self.ollama_base_url}\"\n await logger.ainfo(info_message)\n except ValueError:\n await logger.awarning(\"Error updating Ollama model options.\")\n build_config[\"model_name\"][\"options\"] = []\n build_config[\"model_name\"][\"value\"] = \"\"\n else:\n await logger.awarning(f\"Invalid Ollama URL: {self.ollama_base_url}\")\n build_config[\"model_name\"][\"options\"] = []\n build_config[\"model_name\"][\"value\"] = \"\"\n elif field_name == \"model_name\":\n # Refresh Ollama models when model_name field is accessed\n if hasattr(self, \"provider\") and self.provider == \"Ollama\":\n ollama_url = getattr(self, \"ollama_base_url\", DEFAULT_OLLAMA_URL)\n if await is_valid_ollama_url(url=ollama_url):\n try:\n models = await get_ollama_models(\n base_url_value=ollama_url,\n desired_capability=DESIRED_CAPABILITY,\n json_models_key=JSON_MODELS_KEY,\n json_name_key=JSON_NAME_KEY,\n json_capabilities_key=JSON_CAPABILITIES_KEY,\n )\n build_config[\"model_name\"][\"options\"] = models\n except ValueError:\n await logger.awarning(\"Failed to refresh Ollama models.\")\n build_config[\"model_name\"][\"options\"] = []\n else:\n build_config[\"model_name\"][\"options\"] = []\n\n # Hide system_message for o1 models - currently unsupported\n if field_value and field_value.startswith(\"o1\") and hasattr(self, \"provider\") and self.provider == \"OpenAI\":\n if \"system_message\" in build_config:\n build_config[\"system_message\"][\"show\"] = False\n elif \"system_message\" in build_config:\n build_config[\"system_message\"][\"show\"] = True\n return build_config\n"
|
|
1531
|
+
"value": "from lfx.base.models.model import LCModelComponent\nfrom lfx.base.models.unified_models import (\n get_language_model_options,\n get_llm,\n update_model_options_in_build_config,\n)\nfrom lfx.base.models.watsonx_constants import IBM_WATSONX_URLS\nfrom lfx.field_typing import LanguageModel\nfrom lfx.field_typing.range_spec import RangeSpec\nfrom lfx.inputs.inputs import BoolInput, DropdownInput, StrInput\nfrom lfx.io import MessageInput, ModelInput, MultilineInput, SecretStrInput, SliderInput\n\nDEFAULT_OLLAMA_URL = \"http://localhost:11434\"\n\n\nclass LanguageModelComponent(LCModelComponent):\n display_name = \"Language Model\"\n description = \"Runs a language model given a specified provider.\"\n documentation: str = \"https://docs.langflow.org/components-models\"\n icon = \"brain-circuit\"\n category = \"models\"\n priority = 0 # Set priority to 0 to make it appear first\n\n inputs = [\n ModelInput(\n name=\"model\",\n display_name=\"Language Model\",\n info=\"Select your model provider\",\n real_time_refresh=True,\n required=True,\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"API Key\",\n info=\"Model Provider API key\",\n required=False,\n show=True,\n real_time_refresh=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"base_url_ibm_watsonx\",\n display_name=\"watsonx API Endpoint\",\n info=\"The base URL of the API (IBM watsonx.ai only)\",\n options=IBM_WATSONX_URLS,\n value=IBM_WATSONX_URLS[0],\n show=False,\n real_time_refresh=True,\n ),\n StrInput(\n name=\"project_id\",\n display_name=\"watsonx Project ID\",\n info=\"The project ID associated with the foundation model (IBM watsonx.ai only)\",\n show=False,\n required=False,\n ),\n MessageInput(\n name=\"ollama_base_url\",\n display_name=\"Ollama API URL\",\n info=f\"Endpoint of the Ollama API (Ollama only). Defaults to {DEFAULT_OLLAMA_URL}\",\n value=DEFAULT_OLLAMA_URL,\n show=False,\n real_time_refresh=True,\n load_from_db=True,\n ),\n MessageInput(\n name=\"input_value\",\n display_name=\"Input\",\n info=\"The input text to send to the model\",\n ),\n MultilineInput(\n name=\"system_message\",\n display_name=\"System Message\",\n info=\"A system message that helps set the behavior of the assistant\",\n advanced=False,\n ),\n BoolInput(\n name=\"stream\",\n display_name=\"Stream\",\n info=\"Whether to stream the response\",\n value=False,\n advanced=True,\n ),\n SliderInput(\n name=\"temperature\",\n display_name=\"Temperature\",\n value=0.1,\n info=\"Controls randomness in responses\",\n range_spec=RangeSpec(min=0, max=1, step=0.01),\n advanced=True,\n ),\n ]\n\n def build_model(self) -> LanguageModel:\n return get_llm(\n model=self.model,\n user_id=self.user_id,\n api_key=self.api_key,\n temperature=self.temperature,\n stream=self.stream,\n )\n\n def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None):\n \"\"\"Dynamically update build config with user-filtered model options.\"\"\"\n return update_model_options_in_build_config(\n component=self,\n build_config=build_config,\n cache_key_prefix=\"language_model_options\",\n get_options_func=get_language_model_options,\n field_name=field_name,\n field_value=field_value,\n )\n"
|
|
1532
1532
|
},
|
|
1533
1533
|
"input_value": {
|
|
1534
1534
|
"_input_type": "MessageInput",
|
|
@@ -1855,7 +1855,7 @@
|
|
|
1855
1855
|
"show": true,
|
|
1856
1856
|
"title_case": false,
|
|
1857
1857
|
"type": "code",
|
|
1858
|
-
"value": "from typing import Any\n\nimport requests\nfrom langchain_anthropic import ChatAnthropic\nfrom langchain_ibm import ChatWatsonx\nfrom langchain_ollama import ChatOllama\nfrom langchain_openai import ChatOpenAI\nfrom pydantic.v1 import SecretStr\n\nfrom lfx.base.models.anthropic_constants import ANTHROPIC_MODELS\nfrom lfx.base.models.google_generative_ai_constants import GOOGLE_GENERATIVE_AI_MODELS\nfrom lfx.base.models.google_generative_ai_model import ChatGoogleGenerativeAIFixed\nfrom lfx.base.models.model import LCModelComponent\nfrom lfx.base.models.model_utils import get_ollama_models, is_valid_ollama_url\nfrom lfx.base.models.openai_constants import OPENAI_CHAT_MODEL_NAMES, OPENAI_REASONING_MODEL_NAMES\nfrom lfx.field_typing import LanguageModel\nfrom lfx.field_typing.range_spec import RangeSpec\nfrom lfx.inputs.inputs import BoolInput, MessageTextInput, StrInput\nfrom lfx.io import DropdownInput, MessageInput, MultilineInput, SecretStrInput, SliderInput\nfrom lfx.log.logger import logger\nfrom lfx.schema.dotdict import dotdict\nfrom lfx.utils.util import transform_localhost_url\n\n# IBM watsonx.ai constants\nIBM_WATSONX_DEFAULT_MODELS = [\"ibm/granite-3-2b-instruct\", \"ibm/granite-3-8b-instruct\", \"ibm/granite-13b-instruct-v2\"]\nIBM_WATSONX_URLS = [\n \"https://us-south.ml.cloud.ibm.com\",\n \"https://eu-de.ml.cloud.ibm.com\",\n \"https://eu-gb.ml.cloud.ibm.com\",\n \"https://au-syd.ml.cloud.ibm.com\",\n \"https://jp-tok.ml.cloud.ibm.com\",\n \"https://ca-tor.ml.cloud.ibm.com\",\n]\n\n# Ollama API constants\nHTTP_STATUS_OK = 200\nJSON_MODELS_KEY = \"models\"\nJSON_NAME_KEY = \"name\"\nJSON_CAPABILITIES_KEY = \"capabilities\"\nDESIRED_CAPABILITY = \"completion\"\nDEFAULT_OLLAMA_URL = \"http://localhost:11434\"\n\n\nclass LanguageModelComponent(LCModelComponent):\n display_name = \"Language Model\"\n description = \"Runs a language model given a specified provider.\"\n documentation: str = \"https://docs.langflow.org/components-models\"\n icon = \"brain-circuit\"\n category = \"models\"\n priority = 0 # Set priority to 0 to make it appear first\n\n @staticmethod\n def fetch_ibm_models(base_url: str) -> list[str]:\n \"\"\"Fetch available models from the watsonx.ai API.\"\"\"\n try:\n endpoint = f\"{base_url}/ml/v1/foundation_model_specs\"\n params = {\"version\": \"2024-09-16\", \"filters\": \"function_text_chat,!lifecycle_withdrawn\"}\n response = requests.get(endpoint, params=params, timeout=10)\n response.raise_for_status()\n data = response.json()\n models = [model[\"model_id\"] for model in data.get(\"resources\", [])]\n return sorted(models)\n except Exception: # noqa: BLE001\n logger.exception(\"Error fetching IBM watsonx models. Using default models.\")\n return IBM_WATSONX_DEFAULT_MODELS\n\n inputs = [\n DropdownInput(\n name=\"provider\",\n display_name=\"Model Provider\",\n options=[\"OpenAI\", \"Anthropic\", \"Google\", \"IBM watsonx.ai\", \"Ollama\"],\n value=\"OpenAI\",\n info=\"Select the model provider\",\n real_time_refresh=True,\n options_metadata=[\n {\"icon\": \"OpenAI\"},\n {\"icon\": \"Anthropic\"},\n {\"icon\": \"GoogleGenerativeAI\"},\n {\"icon\": \"WatsonxAI\"},\n {\"icon\": \"Ollama\"},\n ],\n ),\n DropdownInput(\n name=\"model_name\",\n display_name=\"Model Name\",\n options=OPENAI_CHAT_MODEL_NAMES + OPENAI_REASONING_MODEL_NAMES,\n value=OPENAI_CHAT_MODEL_NAMES[0],\n info=\"Select the model to use\",\n real_time_refresh=True,\n refresh_button=True,\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"OpenAI API Key\",\n info=\"Model Provider API key\",\n required=False,\n show=True,\n real_time_refresh=True,\n ),\n DropdownInput(\n name=\"base_url_ibm_watsonx\",\n display_name=\"watsonx API Endpoint\",\n info=\"The base URL of the API (IBM watsonx.ai only)\",\n options=IBM_WATSONX_URLS,\n value=IBM_WATSONX_URLS[0],\n show=False,\n real_time_refresh=True,\n ),\n StrInput(\n name=\"project_id\",\n display_name=\"watsonx Project ID\",\n info=\"The project ID associated with the foundation model (IBM watsonx.ai only)\",\n show=False,\n required=False,\n ),\n MessageTextInput(\n name=\"ollama_base_url\",\n display_name=\"Ollama API URL\",\n info=f\"Endpoint of the Ollama API (Ollama only). Defaults to {DEFAULT_OLLAMA_URL}\",\n value=DEFAULT_OLLAMA_URL,\n show=False,\n real_time_refresh=True,\n load_from_db=True,\n ),\n MessageInput(\n name=\"input_value\",\n display_name=\"Input\",\n info=\"The input text to send to the model\",\n ),\n MultilineInput(\n name=\"system_message\",\n display_name=\"System Message\",\n info=\"A system message that helps set the behavior of the assistant\",\n advanced=False,\n ),\n BoolInput(\n name=\"stream\",\n display_name=\"Stream\",\n info=\"Whether to stream the response\",\n value=False,\n advanced=True,\n ),\n SliderInput(\n name=\"temperature\",\n display_name=\"Temperature\",\n value=0.1,\n info=\"Controls randomness in responses\",\n range_spec=RangeSpec(min=0, max=1, step=0.01),\n advanced=True,\n ),\n ]\n\n def build_model(self) -> LanguageModel:\n provider = self.provider\n model_name = self.model_name\n temperature = self.temperature\n stream = self.stream\n\n if provider == \"OpenAI\":\n if not self.api_key:\n msg = \"OpenAI API key is required when using OpenAI provider\"\n raise ValueError(msg)\n\n if model_name in OPENAI_REASONING_MODEL_NAMES:\n # reasoning models do not support temperature (yet)\n temperature = None\n\n return ChatOpenAI(\n model_name=model_name,\n temperature=temperature,\n streaming=stream,\n openai_api_key=self.api_key,\n )\n if provider == \"Anthropic\":\n if not self.api_key:\n msg = \"Anthropic API key is required when using Anthropic provider\"\n raise ValueError(msg)\n return ChatAnthropic(\n model=model_name,\n temperature=temperature,\n streaming=stream,\n anthropic_api_key=self.api_key,\n )\n if provider == \"Google\":\n if not self.api_key:\n msg = \"Google API key is required when using Google provider\"\n raise ValueError(msg)\n return ChatGoogleGenerativeAIFixed(\n model=model_name,\n temperature=temperature,\n streaming=stream,\n google_api_key=self.api_key,\n )\n if provider == \"IBM watsonx.ai\":\n if not self.api_key:\n msg = \"IBM API key is required when using IBM watsonx.ai provider\"\n raise ValueError(msg)\n if not self.base_url_ibm_watsonx:\n msg = \"IBM watsonx API Endpoint is required when using IBM watsonx.ai provider\"\n raise ValueError(msg)\n if not self.project_id:\n msg = \"IBM watsonx Project ID is required when using IBM watsonx.ai provider\"\n raise ValueError(msg)\n return ChatWatsonx(\n apikey=SecretStr(self.api_key).get_secret_value(),\n url=self.base_url_ibm_watsonx,\n project_id=self.project_id,\n model_id=model_name,\n params={\n \"temperature\": temperature,\n },\n streaming=stream,\n )\n if provider == \"Ollama\":\n if not self.ollama_base_url:\n msg = \"Ollama API URL is required when using Ollama provider\"\n raise ValueError(msg)\n if not model_name:\n msg = \"Model name is required when using Ollama provider\"\n raise ValueError(msg)\n\n transformed_base_url = transform_localhost_url(self.ollama_base_url)\n\n # Check if URL contains /v1 suffix (OpenAI-compatible mode)\n if transformed_base_url and transformed_base_url.rstrip(\"/\").endswith(\"/v1\"):\n # Strip /v1 suffix and log warning\n transformed_base_url = transformed_base_url.rstrip(\"/\").removesuffix(\"/v1\")\n logger.warning(\n \"Detected '/v1' suffix in base URL. The Ollama component uses the native Ollama API, \"\n \"not the OpenAI-compatible API. The '/v1' suffix has been automatically removed. \"\n \"If you want to use the OpenAI-compatible API, please use the OpenAI component instead. \"\n \"Learn more at https://docs.ollama.com/openai#openai-compatibility\"\n )\n\n return ChatOllama(\n base_url=transformed_base_url,\n model=model_name,\n temperature=temperature,\n )\n msg = f\"Unknown provider: {provider}\"\n raise ValueError(msg)\n\n async def update_build_config(\n self, build_config: dotdict, field_value: Any, field_name: str | None = None\n ) -> dotdict:\n if field_name == \"provider\":\n if field_value == \"OpenAI\":\n build_config[\"model_name\"][\"options\"] = OPENAI_CHAT_MODEL_NAMES + OPENAI_REASONING_MODEL_NAMES\n build_config[\"model_name\"][\"value\"] = OPENAI_CHAT_MODEL_NAMES[0]\n build_config[\"api_key\"][\"display_name\"] = \"OpenAI API Key\"\n build_config[\"api_key\"][\"show\"] = True\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = False\n build_config[\"project_id\"][\"show\"] = False\n build_config[\"ollama_base_url\"][\"show\"] = False\n elif field_value == \"Anthropic\":\n build_config[\"model_name\"][\"options\"] = ANTHROPIC_MODELS\n build_config[\"model_name\"][\"value\"] = ANTHROPIC_MODELS[0]\n build_config[\"api_key\"][\"display_name\"] = \"Anthropic API Key\"\n build_config[\"api_key\"][\"show\"] = True\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = False\n build_config[\"project_id\"][\"show\"] = False\n build_config[\"ollama_base_url\"][\"show\"] = False\n elif field_value == \"Google\":\n build_config[\"model_name\"][\"options\"] = GOOGLE_GENERATIVE_AI_MODELS\n build_config[\"model_name\"][\"value\"] = GOOGLE_GENERATIVE_AI_MODELS[0]\n build_config[\"api_key\"][\"display_name\"] = \"Google API Key\"\n build_config[\"api_key\"][\"show\"] = True\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = False\n build_config[\"project_id\"][\"show\"] = False\n build_config[\"ollama_base_url\"][\"show\"] = False\n elif field_value == \"IBM watsonx.ai\":\n build_config[\"model_name\"][\"options\"] = IBM_WATSONX_DEFAULT_MODELS\n build_config[\"model_name\"][\"value\"] = IBM_WATSONX_DEFAULT_MODELS[0]\n build_config[\"api_key\"][\"display_name\"] = \"IBM API Key\"\n build_config[\"api_key\"][\"show\"] = True\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = True\n build_config[\"project_id\"][\"show\"] = True\n build_config[\"ollama_base_url\"][\"show\"] = False\n elif field_value == \"Ollama\":\n # Fetch Ollama models from the API\n build_config[\"api_key\"][\"show\"] = False\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = False\n build_config[\"project_id\"][\"show\"] = False\n build_config[\"ollama_base_url\"][\"show\"] = True\n\n # Try multiple sources to get the URL (in order of preference):\n # 1. Instance attribute (already resolved from global/db)\n # 2. Build config value (may be a global variable reference)\n # 3. Default value\n ollama_url = getattr(self, \"ollama_base_url\", None)\n if not ollama_url:\n config_value = build_config[\"ollama_base_url\"].get(\"value\", DEFAULT_OLLAMA_URL)\n # If config_value looks like a variable name (all caps with underscores), use default\n is_variable_ref = (\n config_value\n and isinstance(config_value, str)\n and config_value.isupper()\n and \"_\" in config_value\n )\n if is_variable_ref:\n await logger.adebug(\n f\"Config value appears to be a variable reference: {config_value}, using default\"\n )\n ollama_url = DEFAULT_OLLAMA_URL\n else:\n ollama_url = config_value\n\n await logger.adebug(f\"Fetching Ollama models for provider switch. URL: {ollama_url}\")\n if await is_valid_ollama_url(url=ollama_url):\n try:\n models = await get_ollama_models(\n base_url_value=ollama_url,\n desired_capability=DESIRED_CAPABILITY,\n json_models_key=JSON_MODELS_KEY,\n json_name_key=JSON_NAME_KEY,\n json_capabilities_key=JSON_CAPABILITIES_KEY,\n )\n build_config[\"model_name\"][\"options\"] = models\n build_config[\"model_name\"][\"value\"] = models[0] if models else \"\"\n except ValueError:\n await logger.awarning(\"Failed to fetch Ollama models. Setting empty options.\")\n build_config[\"model_name\"][\"options\"] = []\n build_config[\"model_name\"][\"value\"] = \"\"\n else:\n await logger.awarning(f\"Invalid Ollama URL: {ollama_url}\")\n build_config[\"model_name\"][\"options\"] = []\n build_config[\"model_name\"][\"value\"] = \"\"\n elif (\n field_name == \"base_url_ibm_watsonx\"\n and field_value\n and hasattr(self, \"provider\")\n and self.provider == \"IBM watsonx.ai\"\n ):\n # Fetch IBM models when base_url changes\n try:\n models = self.fetch_ibm_models(base_url=field_value)\n build_config[\"model_name\"][\"options\"] = models\n build_config[\"model_name\"][\"value\"] = models[0] if models else IBM_WATSONX_DEFAULT_MODELS[0]\n info_message = f\"Updated model options: {len(models)} models found in {field_value}\"\n logger.info(info_message)\n except Exception: # noqa: BLE001\n logger.exception(\"Error updating IBM model options.\")\n elif field_name == \"ollama_base_url\":\n # Fetch Ollama models when ollama_base_url changes\n # Use the field_value directly since this is triggered when the field changes\n logger.debug(\n f\"Fetching Ollama models from updated URL: {build_config['ollama_base_url']} \\\n and value {self.ollama_base_url}\",\n )\n await logger.adebug(f\"Fetching Ollama models from updated URL: {self.ollama_base_url}\")\n if await is_valid_ollama_url(url=self.ollama_base_url):\n try:\n models = await get_ollama_models(\n base_url_value=self.ollama_base_url,\n desired_capability=DESIRED_CAPABILITY,\n json_models_key=JSON_MODELS_KEY,\n json_name_key=JSON_NAME_KEY,\n json_capabilities_key=JSON_CAPABILITIES_KEY,\n )\n build_config[\"model_name\"][\"options\"] = models\n build_config[\"model_name\"][\"value\"] = models[0] if models else \"\"\n info_message = f\"Updated model options: {len(models)} models found in {self.ollama_base_url}\"\n await logger.ainfo(info_message)\n except ValueError:\n await logger.awarning(\"Error updating Ollama model options.\")\n build_config[\"model_name\"][\"options\"] = []\n build_config[\"model_name\"][\"value\"] = \"\"\n else:\n await logger.awarning(f\"Invalid Ollama URL: {self.ollama_base_url}\")\n build_config[\"model_name\"][\"options\"] = []\n build_config[\"model_name\"][\"value\"] = \"\"\n elif field_name == \"model_name\":\n # Refresh Ollama models when model_name field is accessed\n if hasattr(self, \"provider\") and self.provider == \"Ollama\":\n ollama_url = getattr(self, \"ollama_base_url\", DEFAULT_OLLAMA_URL)\n if await is_valid_ollama_url(url=ollama_url):\n try:\n models = await get_ollama_models(\n base_url_value=ollama_url,\n desired_capability=DESIRED_CAPABILITY,\n json_models_key=JSON_MODELS_KEY,\n json_name_key=JSON_NAME_KEY,\n json_capabilities_key=JSON_CAPABILITIES_KEY,\n )\n build_config[\"model_name\"][\"options\"] = models\n except ValueError:\n await logger.awarning(\"Failed to refresh Ollama models.\")\n build_config[\"model_name\"][\"options\"] = []\n else:\n build_config[\"model_name\"][\"options\"] = []\n\n # Hide system_message for o1 models - currently unsupported\n if field_value and field_value.startswith(\"o1\") and hasattr(self, \"provider\") and self.provider == \"OpenAI\":\n if \"system_message\" in build_config:\n build_config[\"system_message\"][\"show\"] = False\n elif \"system_message\" in build_config:\n build_config[\"system_message\"][\"show\"] = True\n return build_config\n"
|
|
1858
|
+
"value": "from lfx.base.models.model import LCModelComponent\nfrom lfx.base.models.unified_models import (\n get_language_model_options,\n get_llm,\n update_model_options_in_build_config,\n)\nfrom lfx.base.models.watsonx_constants import IBM_WATSONX_URLS\nfrom lfx.field_typing import LanguageModel\nfrom lfx.field_typing.range_spec import RangeSpec\nfrom lfx.inputs.inputs import BoolInput, DropdownInput, StrInput\nfrom lfx.io import MessageInput, ModelInput, MultilineInput, SecretStrInput, SliderInput\n\nDEFAULT_OLLAMA_URL = \"http://localhost:11434\"\n\n\nclass LanguageModelComponent(LCModelComponent):\n display_name = \"Language Model\"\n description = \"Runs a language model given a specified provider.\"\n documentation: str = \"https://docs.langflow.org/components-models\"\n icon = \"brain-circuit\"\n category = \"models\"\n priority = 0 # Set priority to 0 to make it appear first\n\n inputs = [\n ModelInput(\n name=\"model\",\n display_name=\"Language Model\",\n info=\"Select your model provider\",\n real_time_refresh=True,\n required=True,\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"API Key\",\n info=\"Model Provider API key\",\n required=False,\n show=True,\n real_time_refresh=True,\n advanced=True,\n ),\n DropdownInput(\n name=\"base_url_ibm_watsonx\",\n display_name=\"watsonx API Endpoint\",\n info=\"The base URL of the API (IBM watsonx.ai only)\",\n options=IBM_WATSONX_URLS,\n value=IBM_WATSONX_URLS[0],\n show=False,\n real_time_refresh=True,\n ),\n StrInput(\n name=\"project_id\",\n display_name=\"watsonx Project ID\",\n info=\"The project ID associated with the foundation model (IBM watsonx.ai only)\",\n show=False,\n required=False,\n ),\n MessageInput(\n name=\"ollama_base_url\",\n display_name=\"Ollama API URL\",\n info=f\"Endpoint of the Ollama API (Ollama only). Defaults to {DEFAULT_OLLAMA_URL}\",\n value=DEFAULT_OLLAMA_URL,\n show=False,\n real_time_refresh=True,\n load_from_db=True,\n ),\n MessageInput(\n name=\"input_value\",\n display_name=\"Input\",\n info=\"The input text to send to the model\",\n ),\n MultilineInput(\n name=\"system_message\",\n display_name=\"System Message\",\n info=\"A system message that helps set the behavior of the assistant\",\n advanced=False,\n ),\n BoolInput(\n name=\"stream\",\n display_name=\"Stream\",\n info=\"Whether to stream the response\",\n value=False,\n advanced=True,\n ),\n SliderInput(\n name=\"temperature\",\n display_name=\"Temperature\",\n value=0.1,\n info=\"Controls randomness in responses\",\n range_spec=RangeSpec(min=0, max=1, step=0.01),\n advanced=True,\n ),\n ]\n\n def build_model(self) -> LanguageModel:\n return get_llm(\n model=self.model,\n user_id=self.user_id,\n api_key=self.api_key,\n temperature=self.temperature,\n stream=self.stream,\n )\n\n def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None):\n \"\"\"Dynamically update build config with user-filtered model options.\"\"\"\n return update_model_options_in_build_config(\n component=self,\n build_config=build_config,\n cache_key_prefix=\"language_model_options\",\n get_options_func=get_language_model_options,\n field_name=field_name,\n field_value=field_value,\n )\n"
|
|
1859
1859
|
},
|
|
1860
1860
|
"input_value": {
|
|
1861
1861
|
"_input_type": "MessageInput",
|
|
@@ -2101,7 +2101,7 @@
|
|
|
2101
2101
|
"legacy": false,
|
|
2102
2102
|
"lf_version": "1.6.0",
|
|
2103
2103
|
"metadata": {
|
|
2104
|
-
"code_hash": "
|
|
2104
|
+
"code_hash": "058ca1f51e9f",
|
|
2105
2105
|
"dependencies": {
|
|
2106
2106
|
"dependencies": [
|
|
2107
2107
|
{
|
|
@@ -2156,6 +2156,26 @@
|
|
|
2156
2156
|
"pinned": false,
|
|
2157
2157
|
"template": {
|
|
2158
2158
|
"_type": "Component",
|
|
2159
|
+
"api_key": {
|
|
2160
|
+
"_input_type": "SecretStrInput",
|
|
2161
|
+
"advanced": true,
|
|
2162
|
+
"display_name": "API Key",
|
|
2163
|
+
"dynamic": false,
|
|
2164
|
+
"info": "Model Provider API key",
|
|
2165
|
+
"input_types": [],
|
|
2166
|
+
"load_from_db": true,
|
|
2167
|
+
"name": "api_key",
|
|
2168
|
+
"override_skip": false,
|
|
2169
|
+
"password": true,
|
|
2170
|
+
"placeholder": "",
|
|
2171
|
+
"real_time_refresh": true,
|
|
2172
|
+
"required": false,
|
|
2173
|
+
"show": true,
|
|
2174
|
+
"title_case": false,
|
|
2175
|
+
"track_in_telemetry": false,
|
|
2176
|
+
"type": "str",
|
|
2177
|
+
"value": ""
|
|
2178
|
+
},
|
|
2159
2179
|
"code": {
|
|
2160
2180
|
"advanced": true,
|
|
2161
2181
|
"dynamic": true,
|
|
@@ -2172,7 +2192,7 @@
|
|
|
2172
2192
|
"show": true,
|
|
2173
2193
|
"title_case": false,
|
|
2174
2194
|
"type": "code",
|
|
2175
|
-
"value": "from pydantic import BaseModel, Field, create_model\nfrom trustcall import create_extractor\n\nfrom lfx.base.models.chat_result import get_chat_result\nfrom lfx.custom.custom_component.component import Component\nfrom lfx.helpers.base_model import build_model_from_schema\nfrom lfx.io import (\n HandleInput,\n MessageTextInput,\n MultilineInput,\n Output,\n TableInput,\n)\nfrom lfx.log.logger import logger\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame\nfrom lfx.schema.table import EditMode\n\n\nclass StructuredOutputComponent(Component):\n display_name = \"Structured Output\"\n description = \"Uses an LLM to generate structured data. Ideal for extraction and consistency.\"\n documentation: str = \"https://docs.langflow.org/structured-output\"\n name = \"StructuredOutput\"\n icon = \"braces\"\n\n inputs = [\n HandleInput(\n name=\"llm\",\n display_name=\"Language Model\",\n info=\"The language model to use to generate the structured output.\",\n input_types=[\"LanguageModel\"],\n required=True,\n ),\n MultilineInput(\n name=\"input_value\",\n display_name=\"Input Message\",\n info=\"The input message to the language model.\",\n tool_mode=True,\n required=True,\n ),\n MultilineInput(\n name=\"system_prompt\",\n display_name=\"Format Instructions\",\n info=\"The instructions to the language model for formatting the output.\",\n value=(\n \"You are an AI that extracts structured JSON objects from unstructured text. \"\n \"Use a predefined schema with expected types (str, int, float, bool, dict). \"\n \"Extract ALL relevant instances that match the schema - if multiple patterns exist, capture them all. \"\n \"Fill missing or ambiguous values with defaults: null for missing values. \"\n \"Remove exact duplicates but keep variations that have different field values. \"\n \"Always return valid JSON in the expected format, never throw errors. \"\n \"If multiple objects can be extracted, return them all in the structured format.\"\n ),\n required=True,\n advanced=True,\n ),\n MessageTextInput(\n name=\"schema_name\",\n display_name=\"Schema Name\",\n info=\"Provide a name for the output data schema.\",\n advanced=True,\n ),\n TableInput(\n name=\"output_schema\",\n display_name=\"Output Schema\",\n info=\"Define the structure and data types for the model's output.\",\n required=True,\n # TODO: remove deault value\n table_schema=[\n {\n \"name\": \"name\",\n \"display_name\": \"Name\",\n \"type\": \"str\",\n \"description\": \"Specify the name of the output field.\",\n \"default\": \"field\",\n \"edit_mode\": EditMode.INLINE,\n },\n {\n \"name\": \"description\",\n \"display_name\": \"Description\",\n \"type\": \"str\",\n \"description\": \"Describe the purpose of the output field.\",\n \"default\": \"description of field\",\n \"edit_mode\": EditMode.POPOVER,\n },\n {\n \"name\": \"type\",\n \"display_name\": \"Type\",\n \"type\": \"str\",\n \"edit_mode\": EditMode.INLINE,\n \"description\": (\"Indicate the data type of the output field (e.g., str, int, float, bool, dict).\"),\n \"options\": [\"str\", \"int\", \"float\", \"bool\", \"dict\"],\n \"default\": \"str\",\n },\n {\n \"name\": \"multiple\",\n \"display_name\": \"As List\",\n \"type\": \"boolean\",\n \"description\": \"Set to True if this output field should be a list of the specified type.\",\n \"default\": \"False\",\n \"edit_mode\": EditMode.INLINE,\n },\n ],\n value=[\n {\n \"name\": \"field\",\n \"description\": \"description of field\",\n \"type\": \"str\",\n \"multiple\": \"False\",\n }\n ],\n ),\n ]\n\n outputs = [\n Output(\n name=\"structured_output\",\n display_name=\"Structured Output\",\n method=\"build_structured_output\",\n ),\n Output(\n name=\"dataframe_output\",\n display_name=\"Structured Output\",\n method=\"build_structured_dataframe\",\n ),\n ]\n\n def build_structured_output_base(self):\n schema_name = self.schema_name or \"OutputModel\"\n\n if not hasattr(self.llm, \"with_structured_output\"):\n msg = \"Language model does not support structured output.\"\n raise TypeError(msg)\n if not self.output_schema:\n msg = \"Output schema cannot be empty\"\n raise ValueError(msg)\n\n output_model_ = build_model_from_schema(self.output_schema)\n output_model = create_model(\n schema_name,\n __doc__=f\"A list of {schema_name}.\",\n objects=(\n list[output_model_],\n Field(\n description=f\"A list of {schema_name}.\", # type: ignore[valid-type]\n min_length=1, # help ensure non-empty output\n ),\n ),\n )\n # Tracing config\n config_dict = {\n \"run_name\": self.display_name,\n \"project_name\": self.get_project_name(),\n \"callbacks\": self.get_langchain_callbacks(),\n }\n # Generate structured output using Trustcall first, then fallback to Langchain if it fails\n result = self._extract_output_with_trustcall(output_model, config_dict)\n if result is None:\n result = self._extract_output_with_langchain(output_model, config_dict)\n\n # OPTIMIZATION NOTE: Simplified processing based on trustcall response structure\n # Handle non-dict responses (shouldn't happen with trustcall, but defensive)\n if not isinstance(result, dict):\n return result\n\n # Extract first response and convert BaseModel to dict\n responses = result.get(\"responses\", [])\n if not responses:\n return result\n\n # Convert BaseModel to dict (creates the \"objects\" key)\n first_response = responses[0]\n structured_data = first_response\n if isinstance(first_response, BaseModel):\n structured_data = first_response.model_dump()\n # Extract the objects array (guaranteed to exist due to our Pydantic model structure)\n return structured_data.get(\"objects\", structured_data)\n\n def build_structured_output(self) -> Data:\n output = self.build_structured_output_base()\n if not isinstance(output, list) or not output:\n # handle empty or unexpected type case\n msg = \"No structured output returned\"\n raise ValueError(msg)\n if len(output) == 1:\n return Data(data=output[0])\n if len(output) > 1:\n # Multiple outputs - wrap them in a results container\n return Data(data={\"results\": output})\n return Data()\n\n def build_structured_dataframe(self) -> DataFrame:\n output = self.build_structured_output_base()\n if not isinstance(output, list) or not output:\n # handle empty or unexpected type case\n msg = \"No structured output returned\"\n raise ValueError(msg)\n if len(output) == 1:\n # For single dictionary, wrap in a list to create DataFrame with one row\n return DataFrame([output[0]])\n if len(output) > 1:\n # Multiple outputs - convert to DataFrame directly\n return DataFrame(output)\n return DataFrame()\n\n def _extract_output_with_trustcall(self, schema: BaseModel, config_dict: dict) -> list[BaseModel] | None:\n try:\n llm_with_structured_output = create_extractor(self.llm, tools=[schema], tool_choice=schema.__name__)\n result = get_chat_result(\n runnable=llm_with_structured_output,\n system_message=self.system_prompt,\n input_value=self.input_value,\n config=config_dict,\n )\n except Exception as e: # noqa: BLE001\n logger.warning(\n f\"Trustcall extraction failed, falling back to Langchain: {e} \"\n \"(Note: This may not be an error—some models or configurations do not support tool calling. \"\n \"Falling back is normal in such cases.)\"\n )\n return None\n return result or None # langchain fallback is used if error occurs or the result is empty\n\n def _extract_output_with_langchain(self, schema: BaseModel, config_dict: dict) -> list[BaseModel] | None:\n try:\n llm_with_structured_output = self.llm.with_structured_output(schema)\n result = get_chat_result(\n runnable=llm_with_structured_output,\n system_message=self.system_prompt,\n input_value=self.input_value,\n config=config_dict,\n )\n if isinstance(result, BaseModel):\n result = result.model_dump()\n result = result.get(\"objects\", result)\n except Exception as fallback_error:\n msg = (\n f\"Model does not support tool calling (trustcall failed) \"\n f\"and fallback with_structured_output also failed: {fallback_error}\"\n )\n raise ValueError(msg) from fallback_error\n\n return result or None\n"
|
|
2195
|
+
"value": "from pydantic import BaseModel, Field, create_model\nfrom trustcall import create_extractor\n\nfrom lfx.base.models.chat_result import get_chat_result\nfrom lfx.base.models.unified_models import (\n get_language_model_options,\n get_llm,\n update_model_options_in_build_config,\n)\nfrom lfx.custom.custom_component.component import Component\nfrom lfx.helpers.base_model import build_model_from_schema\nfrom lfx.io import (\n MessageTextInput,\n ModelInput,\n MultilineInput,\n Output,\n SecretStrInput,\n TableInput,\n)\nfrom lfx.log.logger import logger\nfrom lfx.schema.data import Data\nfrom lfx.schema.dataframe import DataFrame\nfrom lfx.schema.table import EditMode\n\n\nclass StructuredOutputComponent(Component):\n display_name = \"Structured Output\"\n description = \"Uses an LLM to generate structured data. Ideal for extraction and consistency.\"\n documentation: str = \"https://docs.langflow.org/structured-output\"\n name = \"StructuredOutput\"\n icon = \"braces\"\n\n inputs = [\n ModelInput(\n name=\"model\",\n display_name=\"Language Model\",\n info=\"Select your model provider\",\n real_time_refresh=True,\n required=True,\n ),\n SecretStrInput(\n name=\"api_key\",\n display_name=\"API Key\",\n info=\"Model Provider API key\",\n real_time_refresh=True,\n advanced=True,\n ),\n MultilineInput(\n name=\"input_value\",\n display_name=\"Input Message\",\n info=\"The input message to the language model.\",\n tool_mode=True,\n required=True,\n ),\n MultilineInput(\n name=\"system_prompt\",\n display_name=\"Format Instructions\",\n info=\"The instructions to the language model for formatting the output.\",\n value=(\n \"You are an AI that extracts structured JSON objects from unstructured text. \"\n \"Use a predefined schema with expected types (str, int, float, bool, dict). \"\n \"Extract ALL relevant instances that match the schema - if multiple patterns exist, capture them all. \"\n \"Fill missing or ambiguous values with defaults: null for missing values. \"\n \"Remove exact duplicates but keep variations that have different field values. \"\n \"Always return valid JSON in the expected format, never throw errors. \"\n \"If multiple objects can be extracted, return them all in the structured format.\"\n ),\n required=True,\n advanced=True,\n ),\n MessageTextInput(\n name=\"schema_name\",\n display_name=\"Schema Name\",\n info=\"Provide a name for the output data schema.\",\n advanced=True,\n ),\n TableInput(\n name=\"output_schema\",\n display_name=\"Output Schema\",\n info=\"Define the structure and data types for the model's output.\",\n required=True,\n # TODO: remove deault value\n table_schema=[\n {\n \"name\": \"name\",\n \"display_name\": \"Name\",\n \"type\": \"str\",\n \"description\": \"Specify the name of the output field.\",\n \"default\": \"field\",\n \"edit_mode\": EditMode.INLINE,\n },\n {\n \"name\": \"description\",\n \"display_name\": \"Description\",\n \"type\": \"str\",\n \"description\": \"Describe the purpose of the output field.\",\n \"default\": \"description of field\",\n \"edit_mode\": EditMode.POPOVER,\n },\n {\n \"name\": \"type\",\n \"display_name\": \"Type\",\n \"type\": \"str\",\n \"edit_mode\": EditMode.INLINE,\n \"description\": (\"Indicate the data type of the output field (e.g., str, int, float, bool, dict).\"),\n \"options\": [\"str\", \"int\", \"float\", \"bool\", \"dict\"],\n \"default\": \"str\",\n },\n {\n \"name\": \"multiple\",\n \"display_name\": \"As List\",\n \"type\": \"boolean\",\n \"description\": \"Set to True if this output field should be a list of the specified type.\",\n \"default\": \"False\",\n \"edit_mode\": EditMode.INLINE,\n },\n ],\n value=[\n {\n \"name\": \"field\",\n \"description\": \"description of field\",\n \"type\": \"str\",\n \"multiple\": \"False\",\n }\n ],\n ),\n ]\n\n outputs = [\n Output(\n name=\"structured_output\",\n display_name=\"Structured Output\",\n method=\"build_structured_output\",\n ),\n Output(\n name=\"dataframe_output\",\n display_name=\"Structured Output\",\n method=\"build_structured_dataframe\",\n ),\n ]\n\n def update_build_config(self, build_config: dict, field_value: str, field_name: str | None = None):\n \"\"\"Dynamically update build config with user-filtered model options.\"\"\"\n return update_model_options_in_build_config(\n component=self,\n build_config=build_config,\n cache_key_prefix=\"language_model_options\",\n get_options_func=get_language_model_options,\n field_name=field_name,\n field_value=field_value,\n )\n\n def build_structured_output_base(self):\n schema_name = self.schema_name or \"OutputModel\"\n\n llm = get_llm(model=self.model, user_id=self.user_id, api_key=self.api_key)\n\n if not hasattr(llm, \"with_structured_output\"):\n msg = \"Language model does not support structured output.\"\n raise TypeError(msg)\n if not self.output_schema:\n msg = \"Output schema cannot be empty\"\n raise ValueError(msg)\n\n output_model_ = build_model_from_schema(self.output_schema)\n output_model = create_model(\n schema_name,\n __doc__=f\"A list of {schema_name}.\",\n objects=(\n list[output_model_],\n Field(\n description=f\"A list of {schema_name}.\", # type: ignore[valid-type]\n min_length=1, # help ensure non-empty output\n ),\n ),\n )\n # Tracing config\n config_dict = {\n \"run_name\": self.display_name,\n \"project_name\": self.get_project_name(),\n \"callbacks\": self.get_langchain_callbacks(),\n }\n # Generate structured output using Trustcall first, then fallback to Langchain if it fails\n result = self._extract_output_with_trustcall(llm, output_model, config_dict)\n if result is None:\n result = self._extract_output_with_langchain(llm, output_model, config_dict)\n\n # OPTIMIZATION NOTE: Simplified processing based on trustcall response structure\n # Handle non-dict responses (shouldn't happen with trustcall, but defensive)\n if not isinstance(result, dict):\n return result\n\n # Extract first response and convert BaseModel to dict\n responses = result.get(\"responses\", [])\n if not responses:\n return result\n\n # Convert BaseModel to dict (creates the \"objects\" key)\n first_response = responses[0]\n structured_data = first_response\n if isinstance(first_response, BaseModel):\n structured_data = first_response.model_dump()\n # Extract the objects array (guaranteed to exist due to our Pydantic model structure)\n return structured_data.get(\"objects\", structured_data)\n\n def build_structured_output(self) -> Data:\n output = self.build_structured_output_base()\n if not isinstance(output, list) or not output:\n # handle empty or unexpected type case\n msg = \"No structured output returned\"\n raise ValueError(msg)\n if len(output) == 1:\n return Data(data=output[0])\n if len(output) > 1:\n # Multiple outputs - wrap them in a results container\n return Data(data={\"results\": output})\n return Data()\n\n def build_structured_dataframe(self) -> DataFrame:\n output = self.build_structured_output_base()\n if not isinstance(output, list) or not output:\n # handle empty or unexpected type case\n msg = \"No structured output returned\"\n raise ValueError(msg)\n if len(output) == 1:\n # For single dictionary, wrap in a list to create DataFrame with one row\n return DataFrame([output[0]])\n if len(output) > 1:\n # Multiple outputs - convert to DataFrame directly\n return DataFrame(output)\n return DataFrame()\n\n def _extract_output_with_trustcall(self, llm, schema: BaseModel, config_dict: dict) -> list[BaseModel] | None:\n try:\n llm_with_structured_output = create_extractor(llm, tools=[schema], tool_choice=schema.__name__)\n result = get_chat_result(\n runnable=llm_with_structured_output,\n system_message=self.system_prompt,\n input_value=self.input_value,\n config=config_dict,\n )\n except Exception as e: # noqa: BLE001\n logger.warning(\n f\"Trustcall extraction failed, falling back to Langchain: {e} \"\n \"(Note: This may not be an error—some models or configurations do not support tool calling. \"\n \"Falling back is normal in such cases.)\"\n )\n return None\n return result or None # langchain fallback is used if error occurs or the result is empty\n\n def _extract_output_with_langchain(self, llm, schema: BaseModel, config_dict: dict) -> list[BaseModel] | None:\n try:\n llm_with_structured_output = llm.with_structured_output(schema)\n result = get_chat_result(\n runnable=llm_with_structured_output,\n system_message=self.system_prompt,\n input_value=self.input_value,\n config=config_dict,\n )\n if isinstance(result, BaseModel):\n result = result.model_dump()\n result = result.get(\"objects\", result)\n except Exception as fallback_error:\n msg = (\n f\"Model does not support tool calling (trustcall failed) \"\n f\"and fallback with_structured_output also failed: {fallback_error}\"\n )\n raise ValueError(msg) from fallback_error\n\n return result or None\n"
|
|
2176
2196
|
},
|
|
2177
2197
|
"input_value": {
|
|
2178
2198
|
"_input_type": "MultilineInput",
|
|
@@ -2199,26 +2219,41 @@
|
|
|
2199
2219
|
"type": "str",
|
|
2200
2220
|
"value": ""
|
|
2201
2221
|
},
|
|
2202
|
-
"
|
|
2203
|
-
"_input_type": "
|
|
2222
|
+
"model": {
|
|
2223
|
+
"_input_type": "ModelInput",
|
|
2204
2224
|
"advanced": false,
|
|
2205
2225
|
"display_name": "Language Model",
|
|
2206
2226
|
"dynamic": false,
|
|
2207
|
-
"
|
|
2227
|
+
"external_options": {
|
|
2228
|
+
"fields": {
|
|
2229
|
+
"data": {
|
|
2230
|
+
"node": {
|
|
2231
|
+
"display_name": "Connect other models",
|
|
2232
|
+
"icon": "CornerDownLeft",
|
|
2233
|
+
"name": "connect_other_models"
|
|
2234
|
+
}
|
|
2235
|
+
}
|
|
2236
|
+
}
|
|
2237
|
+
},
|
|
2238
|
+
"info": "Select your model provider",
|
|
2208
2239
|
"input_types": [
|
|
2209
2240
|
"LanguageModel"
|
|
2210
2241
|
],
|
|
2211
2242
|
"list": false,
|
|
2212
2243
|
"list_add_label": "Add More",
|
|
2213
|
-
"
|
|
2244
|
+
"model_type": "language",
|
|
2245
|
+
"name": "model",
|
|
2214
2246
|
"override_skip": false,
|
|
2215
|
-
"placeholder": "",
|
|
2247
|
+
"placeholder": "Setup Provider",
|
|
2248
|
+
"real_time_refresh": true,
|
|
2249
|
+
"refresh_button": true,
|
|
2216
2250
|
"required": true,
|
|
2217
2251
|
"show": true,
|
|
2218
2252
|
"title_case": false,
|
|
2219
|
-
"
|
|
2253
|
+
"tool_mode": false,
|
|
2254
|
+
"trace_as_input": true,
|
|
2220
2255
|
"track_in_telemetry": false,
|
|
2221
|
-
"type": "
|
|
2256
|
+
"type": "model",
|
|
2222
2257
|
"value": ""
|
|
2223
2258
|
},
|
|
2224
2259
|
"output_schema": {
|