langflow-base-nightly 1.7.1.dev0__py3-none-any.whl → 1.7.1.dev2__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/frontend/assets/SlackIcon-CDt9ruDi.js +1 -0
- langflow/frontend/assets/Wikipedia-CzZweN4V.js +1 -0
- langflow/frontend/assets/Wolfram-CZ-rQ_dz.js +1 -0
- langflow/frontend/assets/a-arrow-down-CwPpd9H4.js +6 -0
- langflow/frontend/assets/a-arrow-up-jM3y2OLL.js +6 -0
- langflow/frontend/assets/a-large-small-DIxOsxWM.js +6 -0
- langflow/frontend/assets/accessibility-Bu35r-m5.js +6 -0
- langflow/frontend/assets/activity-C8wc8_Pd.js +6 -0
- langflow/frontend/assets/air-vent-B_sKAddy.js +6 -0
- langflow/frontend/assets/airplay-BRq-ZU7H.js +6 -0
- langflow/frontend/assets/alarm-clock-BbYCqVew.js +6 -0
- langflow/frontend/assets/alarm-clock-check-BrWJwXsN.js +6 -0
- langflow/frontend/assets/alarm-clock-minus-B6CwqW-T.js +6 -0
- langflow/frontend/assets/alarm-clock-off-B9ifv7kn.js +6 -0
- langflow/frontend/assets/alarm-clock-plus-BOzl727m.js +6 -0
- langflow/frontend/assets/alarm-smoke-BhmbHGGn.js +6 -0
- langflow/frontend/assets/album-CoFPyd_v.js +6 -0
- langflow/frontend/assets/align-center-DGVY6SPd.js +6 -0
- langflow/frontend/assets/align-center-horizontal-Cey2fjtd.js +6 -0
- langflow/frontend/assets/align-center-vertical-DPOUZrSH.js +6 -0
- langflow/frontend/assets/align-end-horizontal-Cqp4DWbq.js +6 -0
- langflow/frontend/assets/align-end-vertical-Do5r6aRH.js +6 -0
- langflow/frontend/assets/align-horizontal-distribute-center-BNr6hPSI.js +6 -0
- langflow/frontend/assets/align-horizontal-distribute-end-DZG6jDkR.js +6 -0
- langflow/frontend/assets/align-horizontal-distribute-start-BmK__V8Z.js +6 -0
- langflow/frontend/assets/align-horizontal-justify-center-DmWrPC9A.js +6 -0
- langflow/frontend/assets/align-horizontal-justify-end-DROxo_RK.js +6 -0
- langflow/frontend/assets/align-horizontal-justify-start-Bq3cTNol.js +6 -0
- langflow/frontend/assets/align-horizontal-space-around-CLSN-Vf9.js +6 -0
- langflow/frontend/assets/align-horizontal-space-between-LCNWIoA3.js +6 -0
- langflow/frontend/assets/align-justify-CD4s57UD.js +6 -0
- langflow/frontend/assets/align-left-OX3uEBv3.js +6 -0
- langflow/frontend/assets/align-right-DkuuTQ1d.js +6 -0
- langflow/frontend/assets/align-start-horizontal-BNRk7zxc.js +6 -0
- langflow/frontend/assets/align-start-vertical-B4GqW30U.js +6 -0
- langflow/frontend/assets/align-vertical-distribute-center-CI-DiRiC.js +6 -0
- langflow/frontend/assets/align-vertical-distribute-end-DEy26fXc.js +6 -0
- langflow/frontend/assets/align-vertical-distribute-start-2FYac2F0.js +6 -0
- langflow/frontend/assets/align-vertical-justify-center-BjCbehse.js +6 -0
- langflow/frontend/assets/align-vertical-justify-end-DyqItGrk.js +6 -0
- langflow/frontend/assets/align-vertical-justify-start-C3sYyyyy.js +6 -0
- langflow/frontend/assets/align-vertical-space-around-BOmH3ztI.js +6 -0
- langflow/frontend/assets/align-vertical-space-between-B9c0Lk1p.js +6 -0
- langflow/frontend/assets/ambulance-BE5C3u47.js +6 -0
- langflow/frontend/assets/ampersand-CGiQT7mb.js +6 -0
- langflow/frontend/assets/ampersands-DjvDv92k.js +6 -0
- langflow/frontend/assets/amphora-D5nk3hGg.js +6 -0
- langflow/frontend/assets/anchor-Dqa2CHUZ.js +6 -0
- langflow/frontend/assets/angry-uV--xR8-.js +6 -0
- langflow/frontend/assets/annoyed-DyakcX_g.js +6 -0
- langflow/frontend/assets/antenna-h5RNooai.js +6 -0
- langflow/frontend/assets/anvil-RNRmD2-Y.js +6 -0
- langflow/frontend/assets/aperture-CW9oEicD.js +6 -0
- langflow/frontend/assets/app-window-B6cERlnL.js +6 -0
- langflow/frontend/assets/app-window-mac-DS2dTXq9.js +6 -0
- langflow/frontend/assets/apple-3Hp6P8Bd.js +6 -0
- langflow/frontend/assets/archive-DJwcBaYO.js +6 -0
- langflow/frontend/assets/archive-restore-Bwbb9GIi.js +6 -0
- langflow/frontend/assets/archive-x-BVKIwMVP.js +6 -0
- langflow/frontend/assets/armchair-Bqp7yqwW.js +6 -0
- langflow/frontend/assets/arrow-big-down-CBSTnf2S.js +6 -0
- langflow/frontend/assets/arrow-big-down-dash-Xt3uFfZd.js +6 -0
- langflow/frontend/assets/arrow-big-left-dash-CHj1IfTf.js +6 -0
- langflow/frontend/assets/arrow-big-left-n76PSUVg.js +6 -0
- langflow/frontend/assets/arrow-big-right-dash-D8_l2gIo.js +6 -0
- langflow/frontend/assets/arrow-big-right-qtyRi8in.js +6 -0
- langflow/frontend/assets/arrow-big-up-DT6iJYNQ.js +6 -0
- langflow/frontend/assets/arrow-big-up-dash-Bm1yxK2z.js +6 -0
- langflow/frontend/assets/arrow-down-0-1-RckAPt_n.js +6 -0
- langflow/frontend/assets/arrow-down-1-0-B87psQUW.js +6 -0
- langflow/frontend/assets/arrow-down-CKT3Z8_c.js +6 -0
- langflow/frontend/assets/arrow-down-a-z-C1SkXhIF.js +6 -0
- langflow/frontend/assets/arrow-down-from-line-wpXr5zyx.js +6 -0
- langflow/frontend/assets/arrow-down-left-BYiO5bjf.js +6 -0
- langflow/frontend/assets/arrow-down-narrow-wide-Dw8fGlIz.js +6 -0
- langflow/frontend/assets/arrow-down-right-DF2bUPf_.js +6 -0
- langflow/frontend/assets/arrow-down-to-dot-DmM95y_f.js +6 -0
- langflow/frontend/assets/arrow-down-to-line-B6_vSTzR.js +6 -0
- langflow/frontend/assets/arrow-down-up-BQzt8kqF.js +6 -0
- langflow/frontend/assets/arrow-down-wide-narrow-9dunOrWa.js +6 -0
- langflow/frontend/assets/arrow-down-z-a-Cs1Gl6Ca.js +6 -0
- langflow/frontend/assets/arrow-left-DO-I9wG0.js +6 -0
- langflow/frontend/assets/arrow-left-from-line-CHZCYDQr.js +6 -0
- langflow/frontend/assets/arrow-left-right-XNNtW4Ep.js +6 -0
- langflow/frontend/assets/arrow-left-to-line-BMmitzR6.js +6 -0
- langflow/frontend/assets/arrow-right-C5rahmtj.js +6 -0
- langflow/frontend/assets/arrow-right-from-line-DcUVS8Cj.js +6 -0
- langflow/frontend/assets/arrow-right-left-5FApCcJp.js +6 -0
- langflow/frontend/assets/arrow-right-to-line-Bntn-h6M.js +6 -0
- langflow/frontend/assets/arrow-up-0-1-C6I42WXu.js +6 -0
- langflow/frontend/assets/arrow-up-1-0-RvL5qAHL.js +6 -0
- langflow/frontend/assets/arrow-up-B7ZXHfGR.js +6 -0
- langflow/frontend/assets/arrow-up-a-z-CtljPw0p.js +6 -0
- langflow/frontend/assets/arrow-up-down-CLOJpN5F.js +6 -0
- langflow/frontend/assets/arrow-up-from-dot-Cav5DpLx.js +6 -0
- langflow/frontend/assets/arrow-up-from-line-SJKN8JiM.js +6 -0
- langflow/frontend/assets/arrow-up-left-DeKMDzci.js +6 -0
- langflow/frontend/assets/arrow-up-narrow-wide-CaDsGalF.js +6 -0
- langflow/frontend/assets/arrow-up-right-CgVujl4S.js +6 -0
- langflow/frontend/assets/arrow-up-to-line-Bz-pymjr.js +6 -0
- langflow/frontend/assets/arrow-up-wide-narrow-B-pvvK1E.js +6 -0
- langflow/frontend/assets/arrow-up-z-a-x_h5ovMC.js +6 -0
- langflow/frontend/assets/arrows-up-from-line-m1TUacrX.js +6 -0
- langflow/frontend/assets/asterisk-DSjrdpN1.js +6 -0
- langflow/frontend/assets/at-sign-DFB5giOH.js +6 -0
- langflow/frontend/assets/atom-BGG-TeLe.js +6 -0
- langflow/frontend/assets/audio-lines-CRHT7SQE.js +6 -0
- langflow/frontend/assets/audio-waveform-BzTFaccJ.js +6 -0
- langflow/frontend/assets/award-CNg72EMQ.js +6 -0
- langflow/frontend/assets/axe-CM9Ab5NQ.js +6 -0
- langflow/frontend/assets/axis-3d-DL4YygIz.js +6 -0
- langflow/frontend/assets/baby-C-RQQFSK.js +6 -0
- langflow/frontend/assets/backpack-DSwZazFo.js +6 -0
- langflow/frontend/assets/badge-DQ5UeQW1.js +6 -0
- langflow/frontend/assets/badge-alert-D30mz3o7.js +6 -0
- langflow/frontend/assets/badge-cent-DXwIzlsc.js +6 -0
- langflow/frontend/assets/badge-check-B3YRdSc5.js +6 -0
- langflow/frontend/assets/badge-dollar-sign-D8D48CHU.js +6 -0
- langflow/frontend/assets/badge-euro-Br1IAxah.js +6 -0
- langflow/frontend/assets/badge-help-KG-DxL5J.js +6 -0
- langflow/frontend/assets/badge-indian-rupee-D6piDzXk.js +6 -0
- langflow/frontend/assets/badge-info-BAmJu6DP.js +6 -0
- langflow/frontend/assets/badge-japanese-yen-Bho9pGNs.js +6 -0
- langflow/frontend/assets/badge-minus-BB3vc1Vg.js +6 -0
- langflow/frontend/assets/badge-percent-6vQ2H28C.js +6 -0
- langflow/frontend/assets/badge-plus-D5JLiEnK.js +6 -0
- langflow/frontend/assets/badge-pound-sterling-BmSqgf2V.js +6 -0
- langflow/frontend/assets/badge-russian-ruble-C-aY70Vz.js +6 -0
- langflow/frontend/assets/badge-swiss-franc-DWG2YTZG.js +6 -0
- langflow/frontend/assets/badge-x-CPdTrgRu.js +6 -0
- langflow/frontend/assets/baggage-claim-D5X9ZlaP.js +6 -0
- langflow/frontend/assets/ban-CZlim5IR.js +6 -0
- langflow/frontend/assets/banana-rtMT0E6z.js +6 -0
- langflow/frontend/assets/bandage-B1GX6ABE.js +6 -0
- langflow/frontend/assets/banknote-DPaqrakL.js +6 -0
- langflow/frontend/assets/banknote-arrow-down-DwmMSd1v.js +6 -0
- langflow/frontend/assets/banknote-arrow-up-D9lBKTuZ.js +6 -0
- langflow/frontend/assets/banknote-x-DCgkd1Ve.js +6 -0
- langflow/frontend/assets/barcode-DQOpG04l.js +6 -0
- langflow/frontend/assets/baseline-BL_0FrxU.js +6 -0
- langflow/frontend/assets/bath-Cw2hZQEE.js +6 -0
- langflow/frontend/assets/battery-CJDR3MfN.js +6 -0
- langflow/frontend/assets/battery-charging-BQbJE4JT.js +6 -0
- langflow/frontend/assets/battery-full-CYJlIaJU.js +6 -0
- langflow/frontend/assets/battery-low-CBXuAAur.js +6 -0
- langflow/frontend/assets/battery-medium-BsrJ-_J5.js +6 -0
- langflow/frontend/assets/battery-plus-DwpCzI9s.js +6 -0
- langflow/frontend/assets/battery-warning-DL58ObVr.js +6 -0
- langflow/frontend/assets/beaker-BvvtcoCg.js +6 -0
- langflow/frontend/assets/bean-CxPsMN48.js +6 -0
- langflow/frontend/assets/bean-off-CiYxtEpo.js +6 -0
- langflow/frontend/assets/bed-CHFGG9my.js +6 -0
- langflow/frontend/assets/bed-double-BmatvTtI.js +6 -0
- langflow/frontend/assets/bed-single-BkCg_xO8.js +6 -0
- langflow/frontend/assets/beef-BT-Tqkcu.js +6 -0
- langflow/frontend/assets/beer-Br-w96_H.js +6 -0
- langflow/frontend/assets/beer-off-BCLntpC4.js +6 -0
- langflow/frontend/assets/bell-O8GI9kMj.js +6 -0
- langflow/frontend/assets/bell-dot-Bj0OBLjN.js +6 -0
- langflow/frontend/assets/bell-electric-CY2HEJBK.js +6 -0
- langflow/frontend/assets/bell-minus-DcJMlwFa.js +6 -0
- langflow/frontend/assets/bell-off-BddznZLT.js +6 -0
- langflow/frontend/assets/bell-plus-Bdbag6Iy.js +6 -0
- langflow/frontend/assets/bell-ring-QniTUI83.js +6 -0
- langflow/frontend/assets/between-horizontal-end-BccaaLIx.js +6 -0
- langflow/frontend/assets/between-horizontal-start-DLeaS38Y.js +6 -0
- langflow/frontend/assets/between-vertical-end-Bp5YYPcy.js +6 -0
- langflow/frontend/assets/between-vertical-start-Uq1m2vPv.js +6 -0
- langflow/frontend/assets/biceps-flexed-C7-coF7l.js +6 -0
- langflow/frontend/assets/bike-CW47gMaO.js +6 -0
- langflow/frontend/assets/binary-B2jWyHmS.js +6 -0
- langflow/frontend/assets/binoculars-CLrFW0If.js +6 -0
- langflow/frontend/assets/biohazard-CF7F57VV.js +6 -0
- langflow/frontend/assets/bird-j20wt-d7.js +6 -0
- langflow/frontend/assets/bitcoin-DKaXAvZs.js +6 -0
- langflow/frontend/assets/blend-YB2G1cSt.js +6 -0
- langflow/frontend/assets/blinds-CvjOeFFH.js +6 -0
- langflow/frontend/assets/blocks-KEQTbHJv.js +6 -0
- langflow/frontend/assets/bluetooth-B6WGG2GD.js +6 -0
- langflow/frontend/assets/bluetooth-connected-DYLNIZYk.js +6 -0
- langflow/frontend/assets/bluetooth-off-CLNKbIaL.js +6 -0
- langflow/frontend/assets/bluetooth-searching-DfIeGkiC.js +6 -0
- langflow/frontend/assets/bold-i26IDbuD.js +6 -0
- langflow/frontend/assets/bolt-BvWGlJ7e.js +6 -0
- langflow/frontend/assets/bomb-eETI4arK.js +6 -0
- langflow/frontend/assets/bone-BfX5_39K.js +6 -0
- langflow/frontend/assets/book-C8qxTl1A.js +6 -0
- langflow/frontend/assets/book-a-BjfQrVZT.js +6 -0
- langflow/frontend/assets/book-audio-CW-IVPLM.js +6 -0
- langflow/frontend/assets/book-check-Ysv0j0jd.js +6 -0
- langflow/frontend/assets/book-copy-CREVzePN.js +6 -0
- langflow/frontend/assets/book-dashed-dZlt1GVE.js +6 -0
- langflow/frontend/assets/book-down-BMgE5E_a.js +6 -0
- langflow/frontend/assets/book-headphones-B2LmDr1V.js +6 -0
- langflow/frontend/assets/book-heart-RRe549pE.js +6 -0
- langflow/frontend/assets/book-image-CtVi8j_P.js +6 -0
- langflow/frontend/assets/book-key-DJl_z9qN.js +6 -0
- langflow/frontend/assets/book-lock-Cu1d99eT.js +6 -0
- langflow/frontend/assets/book-marked-BVeaBa6E.js +6 -0
- langflow/frontend/assets/book-minus-D5UpV0HU.js +6 -0
- langflow/frontend/assets/book-open-CAg3knij.js +6 -0
- langflow/frontend/assets/book-open-check-NXQYhiZT.js +6 -0
- langflow/frontend/assets/book-open-text-BpiCvJWR.js +6 -0
- langflow/frontend/assets/book-plus-DCGPS6zP.js +6 -0
- langflow/frontend/assets/book-text-BW4VnWf6.js +6 -0
- langflow/frontend/assets/book-type-D_46kL_0.js +6 -0
- langflow/frontend/assets/book-up-2-DONNzzqQ.js +6 -0
- langflow/frontend/assets/book-up-NbOioeni.js +6 -0
- langflow/frontend/assets/book-user-rhEFRy8m.js +6 -0
- langflow/frontend/assets/book-x-C8XI7wnn.js +6 -0
- langflow/frontend/assets/bookmark-C2DUONVZ.js +6 -0
- langflow/frontend/assets/bookmark-check-BQNeLmCq.js +6 -0
- langflow/frontend/assets/bookmark-minus-BoKQoPZm.js +6 -0
- langflow/frontend/assets/bookmark-plus-Vcuasv25.js +6 -0
- langflow/frontend/assets/bookmark-x-BNZ7MP72.js +6 -0
- langflow/frontend/assets/boom-box-1piwy5jk.js +6 -0
- langflow/frontend/assets/bot-CPP_c_G2.js +6 -0
- langflow/frontend/assets/bot-message-square-tm8Mv6Jm.js +6 -0
- langflow/frontend/assets/bot-off-YjYeJfp4.js +6 -0
- langflow/frontend/assets/bow-arrow-uP26AkC3.js +6 -0
- langflow/frontend/assets/box-Bmq_FMQ4.js +6 -0
- langflow/frontend/assets/boxes-BZ_6JxMi.js +6 -0
- langflow/frontend/assets/braces-DVOM3D5l.js +6 -0
- langflow/frontend/assets/brackets-CS9ID129.js +6 -0
- langflow/frontend/assets/brain-BlXEX7dQ.js +6 -0
- langflow/frontend/assets/brain-circuit-CnThDCAt.js +6 -0
- langflow/frontend/assets/brain-cog-AMJAkopE.js +6 -0
- langflow/frontend/assets/brick-wall-CTT89ewp.js +6 -0
- langflow/frontend/assets/brick-wall-fire-DydIX0mH.js +6 -0
- langflow/frontend/assets/briefcase-DMY6Harl.js +6 -0
- langflow/frontend/assets/briefcase-business-D3M6AyNo.js +6 -0
- langflow/frontend/assets/briefcase-conveyor-belt-CyzrQNxu.js +6 -0
- langflow/frontend/assets/briefcase-medical-CutojFFW.js +6 -0
- langflow/frontend/assets/bring-to-front-DtTEoFiK.js +6 -0
- langflow/frontend/assets/brush-DjTIQhD-.js +6 -0
- langflow/frontend/assets/bubbles-Rdx0Rz-Y.js +6 -0
- langflow/frontend/assets/bug-CcTiugJm.js +6 -0
- langflow/frontend/assets/bug-off-B5Vj99QQ.js +6 -0
- langflow/frontend/assets/bug-play-BjmNJyqy.js +6 -0
- langflow/frontend/assets/building-2-DeBHtjkZ.js +6 -0
- langflow/frontend/assets/building-P-LGfmKw.js +6 -0
- langflow/frontend/assets/bus-B_zj7QKv.js +6 -0
- langflow/frontend/assets/bus-front-zMB5V2yK.js +6 -0
- langflow/frontend/assets/cable-CyF4WLKb.js +6 -0
- langflow/frontend/assets/cable-car-B6fC8qcU.js +6 -0
- langflow/frontend/assets/cake-U4HTzBNY.js +6 -0
- langflow/frontend/assets/cake-slice-bLcEeX90.js +6 -0
- langflow/frontend/assets/calculator-CYPSfYA9.js +6 -0
- langflow/frontend/assets/calendar-1-BjEKNx8O.js +6 -0
- langflow/frontend/assets/calendar-DhVDFKop.js +6 -0
- langflow/frontend/assets/calendar-arrow-down-BBYJBh4D.js +6 -0
- langflow/frontend/assets/calendar-arrow-up-EuTph0Vf.js +6 -0
- langflow/frontend/assets/calendar-check-2-jQv5IN8U.js +6 -0
- langflow/frontend/assets/calendar-check-BJYMA1zc.js +6 -0
- langflow/frontend/assets/calendar-clock-B-WGUYKA.js +6 -0
- langflow/frontend/assets/calendar-cog-CfGO1wE3.js +6 -0
- langflow/frontend/assets/calendar-days-CT3s84rd.js +6 -0
- langflow/frontend/assets/calendar-fold-DPSW8svP.js +6 -0
- langflow/frontend/assets/calendar-heart-CL4f45_b.js +6 -0
- langflow/frontend/assets/calendar-minus-2-DM8uaG1R.js +6 -0
- langflow/frontend/assets/calendar-minus-CT-E1w1p.js +6 -0
- langflow/frontend/assets/calendar-off-BlsGnhnc.js +6 -0
- langflow/frontend/assets/calendar-plus-2-D9evQuaz.js +6 -0
- langflow/frontend/assets/calendar-plus-Badr2uJB.js +6 -0
- langflow/frontend/assets/calendar-range-Ca4xroAn.js +6 -0
- langflow/frontend/assets/calendar-search-BLa7TVYc.js +6 -0
- langflow/frontend/assets/calendar-sync-qbExxZFt.js +6 -0
- langflow/frontend/assets/calendar-x-2-BQ5KOlTJ.js +6 -0
- langflow/frontend/assets/calendar-x-DLCr9CBc.js +6 -0
- langflow/frontend/assets/camera-BXi8O_zl.js +6 -0
- langflow/frontend/assets/camera-off-aT5pglDA.js +6 -0
- langflow/frontend/assets/candy-DSgtO84_.js +6 -0
- langflow/frontend/assets/candy-cane-DVUNmAFZ.js +6 -0
- langflow/frontend/assets/candy-off-CJYlmyP8.js +6 -0
- langflow/frontend/assets/cannabis-DEK82vkB.js +6 -0
- langflow/frontend/assets/captions-HrImpf78.js +6 -0
- langflow/frontend/assets/captions-off-Cxu54MuH.js +6 -0
- langflow/frontend/assets/car-DhYibMDs.js +6 -0
- langflow/frontend/assets/car-front-m-Z--qaT.js +6 -0
- langflow/frontend/assets/car-taxi-front-tFDluXjk.js +6 -0
- langflow/frontend/assets/caravan-Bt5cD847.js +6 -0
- langflow/frontend/assets/carrot--1wSSLRL.js +6 -0
- langflow/frontend/assets/case-lower-rNT5IJCc.js +6 -0
- langflow/frontend/assets/case-sensitive-DwYm5kig.js +6 -0
- langflow/frontend/assets/case-upper-CdvxBi1h.js +6 -0
- langflow/frontend/assets/cassette-tape-D9oQvvFk.js +6 -0
- langflow/frontend/assets/cast-BKETl3Xr.js +6 -0
- langflow/frontend/assets/castle-DFGLBp5r.js +6 -0
- langflow/frontend/assets/cat-BrwBFWdh.js +6 -0
- langflow/frontend/assets/cctv-V8X59rAi.js +6 -0
- langflow/frontend/assets/chart-area-2JCEngWp.js +6 -0
- langflow/frontend/assets/chart-bar-big-CEtsUZjz.js +6 -0
- langflow/frontend/assets/chart-bar-decreasing-BlRfoirI.js +6 -0
- langflow/frontend/assets/chart-bar-increasing-BGiKeAkL.js +6 -0
- langflow/frontend/assets/chart-bar-stacked-DBYrg7mL.js +6 -0
- langflow/frontend/assets/chart-bar-wcD35if1.js +6 -0
- langflow/frontend/assets/chart-candlestick-DGIzqvPs.js +6 -0
- langflow/frontend/assets/chart-column-D02BTIiE.js +6 -0
- langflow/frontend/assets/chart-column-big-ClkNvcMf.js +6 -0
- langflow/frontend/assets/chart-column-decreasing-BNpafKhd.js +6 -0
- langflow/frontend/assets/chart-column-increasing-BrJ9DVDR.js +6 -0
- langflow/frontend/assets/chart-column-stacked-BKC7Zxsp.js +6 -0
- langflow/frontend/assets/chart-gantt-B0dRB2ET.js +6 -0
- langflow/frontend/assets/chart-line-DV6qehEx.js +6 -0
- langflow/frontend/assets/chart-network-CxWgm8mb.js +6 -0
- langflow/frontend/assets/chart-no-axes-column-decreasing-EF7fSZW9.js +6 -0
- langflow/frontend/assets/chart-no-axes-column-iaJ37m4r.js +6 -0
- langflow/frontend/assets/chart-no-axes-column-increasing-JvoS2P-k.js +6 -0
- langflow/frontend/assets/chart-no-axes-combined-DqCgbcuU.js +6 -0
- langflow/frontend/assets/chart-no-axes-gantt-CXMbzpzk.js +6 -0
- langflow/frontend/assets/chart-pie-DM3UVAmN.js +6 -0
- langflow/frontend/assets/chart-scatter-Xqqty9pG.js +6 -0
- langflow/frontend/assets/chart-spline-CaI8se4y.js +6 -0
- langflow/frontend/assets/check-check-3-9PVEn6.js +6 -0
- langflow/frontend/assets/chef-hat-b2fuIXLM.js +6 -0
- langflow/frontend/assets/cherry-CkSaxXPj.js +6 -0
- langflow/frontend/assets/chevron-first-CEn77K5n.js +6 -0
- langflow/frontend/assets/chevron-last-m7wpp3J9.js +6 -0
- langflow/frontend/assets/chevron-left-B1Da_p-C.js +6 -0
- langflow/frontend/assets/chevron-right-CPxlA3qE.js +6 -0
- langflow/frontend/assets/chevrons-down-CTry-RgK.js +6 -0
- langflow/frontend/assets/chevrons-down-up-BPprNhyY.js +6 -0
- langflow/frontend/assets/chevrons-left-BAOVO2Xk.js +6 -0
- langflow/frontend/assets/chevrons-left-right--Lo8NJcC.js +6 -0
- langflow/frontend/assets/chevrons-left-right-ellipsis-CQesA8OH.js +6 -0
- langflow/frontend/assets/chevrons-right-Ddn6k-ej.js +6 -0
- langflow/frontend/assets/chevrons-right-left-BaKH8xtU.js +6 -0
- langflow/frontend/assets/chevrons-up-DV1RzvN8.js +6 -0
- langflow/frontend/assets/chrome-COtt_XZg.js +6 -0
- langflow/frontend/assets/church-DYdgde2T.js +6 -0
- langflow/frontend/assets/cigarette-QRyLOzku.js +6 -0
- langflow/frontend/assets/cigarette-off-CF1zQ4q8.js +6 -0
- langflow/frontend/assets/circle-alert-BVPeMSu6.js +6 -0
- langflow/frontend/assets/circle-arrow-down-CkKJnt8Y.js +6 -0
- langflow/frontend/assets/circle-arrow-left-BuITv_pg.js +6 -0
- langflow/frontend/assets/circle-arrow-out-down-left-TG2WB5nr.js +6 -0
- langflow/frontend/assets/circle-arrow-out-down-right-CaAsVoyT.js +6 -0
- langflow/frontend/assets/circle-arrow-out-up-left-gl7rB8AN.js +6 -0
- langflow/frontend/assets/circle-arrow-out-up-right-D-hRThX0.js +6 -0
- langflow/frontend/assets/circle-arrow-right-QgGj1RWM.js +6 -0
- langflow/frontend/assets/circle-arrow-up-Di9tJK9i.js +6 -0
- langflow/frontend/assets/circle-check-BdxJ-7PP.js +6 -0
- langflow/frontend/assets/circle-check-big-B12HKwgl.js +6 -0
- langflow/frontend/assets/circle-chevron-down-Cq7MJqBG.js +6 -0
- langflow/frontend/assets/circle-chevron-left-qzSEOIJ-.js +6 -0
- langflow/frontend/assets/circle-chevron-right-H0-KNvtP.js +6 -0
- langflow/frontend/assets/circle-chevron-up-BMAb8RPb.js +6 -0
- langflow/frontend/assets/circle-dashed-C6lpZiZf.js +6 -0
- langflow/frontend/assets/circle-divide-S1GCJZUd.js +6 -0
- langflow/frontend/assets/circle-dollar-sign-bB-SHgD0.js +6 -0
- langflow/frontend/assets/circle-dot-D1Bz2sKf.js +6 -0
- langflow/frontend/assets/circle-dot-dashed-Cwg4RtHm.js +6 -0
- langflow/frontend/assets/circle-ellipsis-BA_vcrPc.js +6 -0
- langflow/frontend/assets/circle-equal-_g_Zkb-H.js +6 -0
- langflow/frontend/assets/circle-fading-arrow-up-B1Lg7xE2.js +6 -0
- langflow/frontend/assets/circle-fading-plus-sxwQGJMn.js +6 -0
- langflow/frontend/assets/circle-gauge-D1whQBBI.js +6 -0
- langflow/frontend/assets/circle-help-DTvoqPm9.js +6 -0
- langflow/frontend/assets/circle-minus-DbAVK8gs.js +6 -0
- langflow/frontend/assets/circle-off-BgDZaql4.js +6 -0
- langflow/frontend/assets/circle-parking-7OC9NdSJ.js +6 -0
- langflow/frontend/assets/circle-parking-off-BGDZDlhS.js +6 -0
- langflow/frontend/assets/circle-pause-DcpqhY4z.js +6 -0
- langflow/frontend/assets/circle-percent-pewKzWce.js +6 -0
- langflow/frontend/assets/circle-play-2y8KwPRR.js +6 -0
- langflow/frontend/assets/circle-plus-D0PDnHno.js +6 -0
- langflow/frontend/assets/circle-power-D7WcMrhN.js +6 -0
- langflow/frontend/assets/circle-slash-2-BjpHAhly.js +6 -0
- langflow/frontend/assets/circle-slash-D7eGpJzk.js +6 -0
- langflow/frontend/assets/circle-small-D2rIC7CY.js +6 -0
- langflow/frontend/assets/circle-stop-BUZqaquT.js +6 -0
- langflow/frontend/assets/circle-user-MtGkEAO0.js +6 -0
- langflow/frontend/assets/circle-user-round-BWCMkI0X.js +6 -0
- langflow/frontend/assets/circuit-board-wWvxCT1Z.js +6 -0
- langflow/frontend/assets/citrus-oqCVmLTv.js +6 -0
- langflow/frontend/assets/clapperboard-D-tG8IJ-.js +6 -0
- langflow/frontend/assets/clipboard-ClTJNl9o.js +6 -0
- langflow/frontend/assets/clipboard-check-BhUrMOzo.js +6 -0
- langflow/frontend/assets/clipboard-copy-BsUNmGRu.js +6 -0
- langflow/frontend/assets/clipboard-list-QIxeDhpF.js +6 -0
- langflow/frontend/assets/clipboard-minus-0pd6K21W.js +6 -0
- langflow/frontend/assets/clipboard-paste-B47VCs_4.js +6 -0
- langflow/frontend/assets/clipboard-pen-Ctecdlrt.js +6 -0
- langflow/frontend/assets/clipboard-pen-line-CHfgNevI.js +6 -0
- langflow/frontend/assets/clipboard-plus-st5sZ5-j.js +6 -0
- langflow/frontend/assets/clipboard-type-DMrKOdE_.js +6 -0
- langflow/frontend/assets/clipboard-x-tb2H5EoM.js +6 -0
- langflow/frontend/assets/clock-1-CUU0V973.js +6 -0
- langflow/frontend/assets/clock-10-q0uaDBmU.js +6 -0
- langflow/frontend/assets/clock-11-DAjGZFmP.js +6 -0
- langflow/frontend/assets/clock-12-D6fkn7Tv.js +6 -0
- langflow/frontend/assets/clock-2-BIyO9Pgx.js +6 -0
- langflow/frontend/assets/clock-3-GuASqSMO.js +6 -0
- langflow/frontend/assets/clock-4-CgSZXRlg.js +6 -0
- langflow/frontend/assets/clock-5-CTbaoUdy.js +6 -0
- langflow/frontend/assets/clock-6-C02Kg74z.js +6 -0
- langflow/frontend/assets/clock-7-DLJK7aUO.js +6 -0
- langflow/frontend/assets/clock-8-DY4UpQ3I.js +6 -0
- langflow/frontend/assets/clock-9-PfpxlzNP.js +6 -0
- langflow/frontend/assets/clock-D9Ia9heH.js +6 -0
- langflow/frontend/assets/clock-alert--zyosldl.js +6 -0
- langflow/frontend/assets/clock-arrow-down-BFSPb4PP.js +6 -0
- langflow/frontend/assets/clock-arrow-up-Civ0eqJv.js +6 -0
- langflow/frontend/assets/clock-fading-Ef5FY0hG.js +6 -0
- langflow/frontend/assets/cloud-alert-X_M36tgo.js +6 -0
- langflow/frontend/assets/cloud-cog-OJdqL8Vi.js +6 -0
- langflow/frontend/assets/cloud-download-pHZ4Jcpz.js +6 -0
- langflow/frontend/assets/cloud-drizzle-BMQrHzfm.js +6 -0
- langflow/frontend/assets/cloud-fog-B2wy3Jlh.js +6 -0
- langflow/frontend/assets/cloud-hail-C_35hXdP.js +6 -0
- langflow/frontend/assets/cloud-lightning-CoKf6VsW.js +6 -0
- langflow/frontend/assets/cloud-moon-02NWUEnX.js +6 -0
- langflow/frontend/assets/cloud-moon-rain-CnQjjZZ6.js +6 -0
- langflow/frontend/assets/cloud-off-D_38ldJY.js +6 -0
- langflow/frontend/assets/cloud-rain-ByFqaLK9.js +6 -0
- langflow/frontend/assets/cloud-rain-wind-DufxKNtC.js +6 -0
- langflow/frontend/assets/cloud-sd0d0_fr.js +6 -0
- langflow/frontend/assets/cloud-snow-DV2VAQdy.js +6 -0
- langflow/frontend/assets/cloud-sun-CS9Q-Nel.js +6 -0
- langflow/frontend/assets/cloud-sun-rain-3-9vglOw.js +6 -0
- langflow/frontend/assets/cloud-upload-CpUgWK_N.js +6 -0
- langflow/frontend/assets/cloudy-BQ9g3wfi.js +6 -0
- langflow/frontend/assets/clover-G6B85aQR.js +6 -0
- langflow/frontend/assets/club-BQx1ewS4.js +6 -0
- langflow/frontend/assets/code-xml-DyWGGOPS.js +6 -0
- langflow/frontend/assets/codepen-B29Vj0AG.js +6 -0
- langflow/frontend/assets/codesandbox-CMnUQzQD.js +6 -0
- langflow/frontend/assets/coffee-BSkcH0MI.js +6 -0
- langflow/frontend/assets/cog-zVHMemn0.js +6 -0
- langflow/frontend/assets/coins-BQ-IbPWT.js +6 -0
- langflow/frontend/assets/columns-2-AnUCWtuZ.js +6 -0
- langflow/frontend/assets/columns-3-Ce0nNosW.js +6 -0
- langflow/frontend/assets/columns-3-cog-0pMtbMd-.js +6 -0
- langflow/frontend/assets/columns-4-C26EKhUO.js +6 -0
- langflow/frontend/assets/combine-qijrq0j0.js +6 -0
- langflow/frontend/assets/command-xDjo1fXY.js +6 -0
- langflow/frontend/assets/compass-40OgO7cL.js +6 -0
- langflow/frontend/assets/component-D-4zw18E.js +6 -0
- langflow/frontend/assets/computer-Bb-9wpWf.js +6 -0
- langflow/frontend/assets/concierge-bell-Bs_P7IDT.js +6 -0
- langflow/frontend/assets/cone-BnTDaaXX.js +6 -0
- langflow/frontend/assets/construction-MqPC2xE9.js +6 -0
- langflow/frontend/assets/contact-HS_H1Amb.js +6 -0
- langflow/frontend/assets/contact-round-BqcTnhVJ.js +6 -0
- langflow/frontend/assets/container-DGELqX4n.js +6 -0
- langflow/frontend/assets/contrast-Cba5NJz9.js +6 -0
- langflow/frontend/assets/cookie-TiGfIL4Z.js +6 -0
- langflow/frontend/assets/cooking-pot-DS-66mBu.js +6 -0
- langflow/frontend/assets/copy-check-D5_qks-T.js +6 -0
- langflow/frontend/assets/copy-iQ_JNkV2.js +6 -0
- langflow/frontend/assets/copy-minus-CiCCpXjv.js +6 -0
- langflow/frontend/assets/copy-plus-DZ6IVh6l.js +6 -0
- langflow/frontend/assets/copy-slash-DJpRn_d0.js +6 -0
- langflow/frontend/assets/copy-x-B1SRWp3Z.js +6 -0
- langflow/frontend/assets/copyleft-CwGxM0FQ.js +6 -0
- langflow/frontend/assets/copyright-Cb6NhYfY.js +6 -0
- langflow/frontend/assets/corner-down-left-CyYCkrO9.js +6 -0
- langflow/frontend/assets/corner-down-right-CQTs69Wv.js +6 -0
- langflow/frontend/assets/corner-left-down-Biky6PpP.js +6 -0
- langflow/frontend/assets/corner-left-up-ClakI_sx.js +6 -0
- langflow/frontend/assets/corner-right-down-CT4XUC0Y.js +6 -0
- langflow/frontend/assets/corner-right-up-D-9JXYE3.js +6 -0
- langflow/frontend/assets/corner-up-left-BQZvhRWq.js +6 -0
- langflow/frontend/assets/corner-up-right-txrP0lLM.js +6 -0
- langflow/frontend/assets/cpu-fpIelFFN.js +6 -0
- langflow/frontend/assets/creative-commons-WnIC6bT1.js +6 -0
- langflow/frontend/assets/credit-card-B5XGEKAs.js +6 -0
- langflow/frontend/assets/croissant-CytcoiPI.js +6 -0
- langflow/frontend/assets/crop-CNssI4oM.js +6 -0
- langflow/frontend/assets/cross-GS_Xw4t2.js +6 -0
- langflow/frontend/assets/crosshair-B8sM8IzX.js +6 -0
- langflow/frontend/assets/crown-DNf5ckus.js +6 -0
- langflow/frontend/assets/cuboid-CxmbTA8D.js +6 -0
- langflow/frontend/assets/cup-soda-Dutc7xOD.js +6 -0
- langflow/frontend/assets/currency-BghQv0Z2.js +6 -0
- langflow/frontend/assets/cylinder-C_0Fp7QJ.js +6 -0
- langflow/frontend/assets/dam-DXzZpUnJ.js +6 -0
- langflow/frontend/assets/database-BGNRGl7O.js +6 -0
- langflow/frontend/assets/database-backup-It3E_N1S.js +6 -0
- langflow/frontend/assets/database-zap-CncNo01C.js +6 -0
- langflow/frontend/assets/decimals-arrow-left-DppGbfxl.js +6 -0
- langflow/frontend/assets/decimals-arrow-right-0C7ZMNny.js +6 -0
- langflow/frontend/assets/delete-F3Cw_6ye.js +6 -0
- langflow/frontend/assets/dessert-CF5OWFRH.js +6 -0
- langflow/frontend/assets/diameter-Cnf5-UwJ.js +6 -0
- langflow/frontend/assets/diamond-CnMEVGVq.js +6 -0
- langflow/frontend/assets/diamond-minus-Ckt6A3hC.js +6 -0
- langflow/frontend/assets/diamond-percent-DctcOWRA.js +6 -0
- langflow/frontend/assets/diamond-plus-BY2Lhcm3.js +6 -0
- langflow/frontend/assets/dice-1-HcMDbokI.js +6 -0
- langflow/frontend/assets/dice-2-BpvF3HMY.js +6 -0
- langflow/frontend/assets/dice-3-fRvD-dQk.js +6 -0
- langflow/frontend/assets/dice-4-qt09lOYy.js +6 -0
- langflow/frontend/assets/dice-5-6CVUNXl8.js +6 -0
- langflow/frontend/assets/dice-6-EYe8e-bQ.js +6 -0
- langflow/frontend/assets/dices-BuxvFS2F.js +6 -0
- langflow/frontend/assets/diff-DvRcI8ka.js +6 -0
- langflow/frontend/assets/disc-2-BxRqyAsn.js +6 -0
- langflow/frontend/assets/disc-3-CvX-oqUB.js +6 -0
- langflow/frontend/assets/disc-88VI5vk-.js +6 -0
- langflow/frontend/assets/disc-album-9vJwjI9u.js +6 -0
- langflow/frontend/assets/divide-DjSfvHRd.js +6 -0
- langflow/frontend/assets/dna-DKik6eTc.js +6 -0
- langflow/frontend/assets/dna-off-BlPboZwU.js +6 -0
- langflow/frontend/assets/dock-DsrVg5kM.js +6 -0
- langflow/frontend/assets/dog-BQ_pyc-Y.js +6 -0
- langflow/frontend/assets/dollar-sign-BcCJ81JM.js +6 -0
- langflow/frontend/assets/donut-Gu53j78o.js +6 -0
- langflow/frontend/assets/door-closed-CjzpJYWU.js +6 -0
- langflow/frontend/assets/door-open-yBJWY9gV.js +6 -0
- langflow/frontend/assets/dot-D9DAVIZe.js +6 -0
- langflow/frontend/assets/download-BPm4IaMg.js +6 -0
- langflow/frontend/assets/drafting-compass--bkWM4Rt.js +6 -0
- langflow/frontend/assets/drama-CdAK8SJH.js +6 -0
- langflow/frontend/assets/dribbble-Rr-xrzHx.js +6 -0
- langflow/frontend/assets/drill-D5M2KPjP.js +6 -0
- langflow/frontend/assets/droplet-m3J0bDQ9.js +6 -0
- langflow/frontend/assets/droplet-off-DEvutFmU.js +6 -0
- langflow/frontend/assets/droplets-CtbZ0Nj7.js +6 -0
- langflow/frontend/assets/drum-Bk7Ltjlj.js +6 -0
- langflow/frontend/assets/drumstick-Dt55S9C8.js +6 -0
- langflow/frontend/assets/dumbbell-CgF3VfO_.js +6 -0
- langflow/frontend/assets/ear-DnWEOSLb.js +6 -0
- langflow/frontend/assets/ear-off-BerACZyc.js +6 -0
- langflow/frontend/assets/earth-dunFCe-v.js +6 -0
- langflow/frontend/assets/earth-lock-B-qoUtct.js +6 -0
- langflow/frontend/assets/eclipse-DQbRwBhc.js +6 -0
- langflow/frontend/assets/egg-Q7kDbnVO.js +6 -0
- langflow/frontend/assets/egg-fried-Dpjhw8EO.js +6 -0
- langflow/frontend/assets/egg-off-BUOfwj2j.js +6 -0
- langflow/frontend/assets/ellipsis-DWkFFB3i.js +6 -0
- langflow/frontend/assets/ellipsis-vertical-C_7RDOeG.js +6 -0
- langflow/frontend/assets/equal-CoQw3Zg7.js +6 -0
- langflow/frontend/assets/equal-approximately-DEwpuH9U.js +6 -0
- langflow/frontend/assets/equal-not-CUs0NFk6.js +6 -0
- langflow/frontend/assets/eraser-DzVU4nMu.js +6 -0
- langflow/frontend/assets/ethernet-port-C9BfP7L4.js +6 -0
- langflow/frontend/assets/euro-DKRXsBRi.js +6 -0
- langflow/frontend/assets/expand-9cuh98c8.js +6 -0
- langflow/frontend/assets/eye-DfM59ZZW.js +6 -0
- langflow/frontend/assets/eye-closed-CufTHV8Y.js +6 -0
- langflow/frontend/assets/eye-off-D7kT_L4q.js +6 -0
- langflow/frontend/assets/facebook-bt0dC2tM.js +6 -0
- langflow/frontend/assets/factory-Ie1CJCnF.js +6 -0
- langflow/frontend/assets/fan-LxprqMWb.js +6 -0
- langflow/frontend/assets/fast-forward-JyHe7CV2.js +6 -0
- langflow/frontend/assets/feather-D9hVYAUV.js +6 -0
- langflow/frontend/assets/fence-Bt2GAQed.js +6 -0
- langflow/frontend/assets/ferris-wheel-DaNAGEmM.js +6 -0
- langflow/frontend/assets/figma-BIR275F4.js +6 -0
- langflow/frontend/assets/file-DVeNIRB3.js +6 -0
- langflow/frontend/assets/file-archive-VpREZIUi.js +6 -0
- langflow/frontend/assets/file-audio-2-B-yrg8Rz.js +6 -0
- langflow/frontend/assets/file-audio-jM0ZVuOx.js +6 -0
- langflow/frontend/assets/file-axis-3d-BpcLKyg_.js +6 -0
- langflow/frontend/assets/file-badge-2-CGjtYMv1.js +6 -0
- langflow/frontend/assets/file-badge-BSt1l_WA.js +6 -0
- langflow/frontend/assets/file-box-C_a8JCNO.js +6 -0
- langflow/frontend/assets/file-chart-column-9Py3tGdD.js +6 -0
- langflow/frontend/assets/file-chart-column-increasing-F1C9y24C.js +6 -0
- langflow/frontend/assets/file-chart-line-BuRbF5_Y.js +6 -0
- langflow/frontend/assets/file-chart-pie-B6kpbzRN.js +6 -0
- langflow/frontend/assets/file-check-2-B_mo4bXF.js +6 -0
- langflow/frontend/assets/file-check-DIYBh0Xu.js +6 -0
- langflow/frontend/assets/file-clock-r-k_U-Cx.js +6 -0
- langflow/frontend/assets/file-code-2-DGDSsDjn.js +6 -0
- langflow/frontend/assets/file-code-kj-49n2G.js +6 -0
- langflow/frontend/assets/file-cog-CUNuKES2.js +6 -0
- langflow/frontend/assets/file-diff-uWziA2C8.js +6 -0
- langflow/frontend/assets/file-digit-Cq2QZJPr.js +6 -0
- langflow/frontend/assets/file-down-di8_WVmc.js +6 -0
- langflow/frontend/assets/file-heart-CJMOShlZ.js +6 -0
- langflow/frontend/assets/file-image-7VnsoJzf.js +6 -0
- langflow/frontend/assets/file-input-BRdR2Iqm.js +6 -0
- langflow/frontend/assets/file-json-2-Bd7KRBwA.js +6 -0
- langflow/frontend/assets/file-json-CxpBvSeL.js +6 -0
- langflow/frontend/assets/file-key-2-BnbpCdnA.js +6 -0
- langflow/frontend/assets/file-key-D4mq2inr.js +6 -0
- langflow/frontend/assets/file-lock-2-D35FlqO6.js +6 -0
- langflow/frontend/assets/file-lock-BsLN8ivh.js +6 -0
- langflow/frontend/assets/file-minus-2-DiCtTLy_.js +6 -0
- langflow/frontend/assets/file-minus-Czy9XFsr.js +6 -0
- langflow/frontend/assets/file-music-qwmZBWH5.js +6 -0
- langflow/frontend/assets/file-output-BfM7RW2p.js +6 -0
- langflow/frontend/assets/file-pen-IT6qCeZE.js +6 -0
- langflow/frontend/assets/file-pen-line-B_kFaoQp.js +6 -0
- langflow/frontend/assets/file-plus-2-Bx-XMP5a.js +6 -0
- langflow/frontend/assets/file-plus-CSg2K6Kc.js +6 -0
- langflow/frontend/assets/file-question-BI2uHyLk.js +6 -0
- langflow/frontend/assets/file-scan-C2u1Weq3.js +6 -0
- langflow/frontend/assets/file-search-2-BXUv_UPS.js +6 -0
- langflow/frontend/assets/file-search-DeMMfTW9.js +6 -0
- langflow/frontend/assets/file-sliders-D7sOABUZ.js +6 -0
- langflow/frontend/assets/file-spreadsheet-ljGfaFp4.js +6 -0
- langflow/frontend/assets/file-stack-BMZ2kTBj.js +6 -0
- langflow/frontend/assets/file-symlink-DlkPl1N7.js +6 -0
- langflow/frontend/assets/file-terminal-DlUhm9ct.js +6 -0
- langflow/frontend/assets/file-text-C_7MEPeN.js +6 -0
- langflow/frontend/assets/file-type-2-CNx2HHPs.js +6 -0
- langflow/frontend/assets/file-type-MLpMLybD.js +6 -0
- langflow/frontend/assets/file-up-qFQCsN6t.js +6 -0
- langflow/frontend/assets/file-user-Czm_ZenO.js +6 -0
- langflow/frontend/assets/file-video-2-BmQkl6Af.js +6 -0
- langflow/frontend/assets/file-video-DmoNZ_PH.js +6 -0
- langflow/frontend/assets/file-volume-2-ClNY-6dj.js +6 -0
- langflow/frontend/assets/file-volume-96lDguhH.js +6 -0
- langflow/frontend/assets/file-warning-BzTT_h23.js +6 -0
- langflow/frontend/assets/file-x-2-D5jphfdP.js +6 -0
- langflow/frontend/assets/file-x-CdlycWJK.js +6 -0
- langflow/frontend/assets/files-D2s65Qur.js +6 -0
- langflow/frontend/assets/film-DxZl5nh0.js +6 -0
- langflow/frontend/assets/fingerprint-Dvf6NX7k.js +6 -0
- langflow/frontend/assets/fire-extinguisher-pLGXvC01.js +6 -0
- langflow/frontend/assets/fish-Cms_f8Xu.js +6 -0
- langflow/frontend/assets/fish-off-NIYHWkGM.js +6 -0
- langflow/frontend/assets/fish-symbol-u_RKPyIz.js +6 -0
- langflow/frontend/assets/flag-DQJjqwdV.js +6 -0
- langflow/frontend/assets/flag-off-CzQf8vsm.js +6 -0
- langflow/frontend/assets/flag-triangle-left-zl-5PcyN.js +6 -0
- langflow/frontend/assets/flag-triangle-right-ChgiiQS1.js +6 -0
- langflow/frontend/assets/flame-BRjSBRcv.js +6 -0
- langflow/frontend/assets/flame-kindling-DL9GSUPS.js +6 -0
- langflow/frontend/assets/flashlight-S9uKWRge.js +6 -0
- langflow/frontend/assets/flashlight-off-D_5pWdDf.js +6 -0
- langflow/frontend/assets/flask-conical-CxSk0Ye2.js +6 -0
- langflow/frontend/assets/flask-conical-off-D0qXXYzd.js +6 -0
- langflow/frontend/assets/flask-round-Cm1EeQog.js +6 -0
- langflow/frontend/assets/flip-horizontal-2-CiicAelk.js +6 -0
- langflow/frontend/assets/flip-horizontal-DzU6OoDY.js +6 -0
- langflow/frontend/assets/flip-vertical-2-D7NpvDiS.js +6 -0
- langflow/frontend/assets/flip-vertical-D5zZqtcB.js +6 -0
- langflow/frontend/assets/flower-2-CexztYf1.js +6 -0
- langflow/frontend/assets/flower-Bma54DNC.js +6 -0
- langflow/frontend/assets/focus-BfN4N87r.js +6 -0
- langflow/frontend/assets/fold-horizontal-JLSkx5Ul.js +6 -0
- langflow/frontend/assets/fold-vertical-C8KNIM_1.js +6 -0
- langflow/frontend/assets/folder-archive-BqffCI6s.js +6 -0
- langflow/frontend/assets/folder-check-DOeoM9Ui.js +6 -0
- langflow/frontend/assets/folder-clock-DY8Py7Yo.js +6 -0
- langflow/frontend/assets/folder-closed-8Sjt5Q_M.js +6 -0
- langflow/frontend/assets/folder-code-af2KOgrM.js +6 -0
- langflow/frontend/assets/folder-cog-CG8S-nJf.js +6 -0
- langflow/frontend/assets/folder-dot-Bn_AK8ht.js +6 -0
- langflow/frontend/assets/folder-down-Cdg7RppH.js +6 -0
- langflow/frontend/assets/folder-eVmqxqLu.js +6 -0
- langflow/frontend/assets/folder-git-2-CS7p8jPS.js +6 -0
- langflow/frontend/assets/folder-git-BEvtNhYB.js +6 -0
- langflow/frontend/assets/folder-heart-B3357bQ7.js +6 -0
- langflow/frontend/assets/folder-input-CS54jGvm.js +6 -0
- langflow/frontend/assets/folder-kanban-CfsbatY0.js +6 -0
- langflow/frontend/assets/folder-key-C8fVwDGj.js +6 -0
- langflow/frontend/assets/folder-lock-DWlbGIuU.js +6 -0
- langflow/frontend/assets/folder-minus-BgrJAll7.js +6 -0
- langflow/frontend/assets/folder-open-BpUXP460.js +6 -0
- langflow/frontend/assets/folder-open-dot-DwAfKF1I.js +6 -0
- langflow/frontend/assets/folder-output-BvntvXWn.js +6 -0
- langflow/frontend/assets/folder-pen-C7R4xK75.js +6 -0
- langflow/frontend/assets/folder-plus-C13gniOb.js +6 -0
- langflow/frontend/assets/folder-root-byXl6PUE.js +6 -0
- langflow/frontend/assets/folder-search-2-CprKqiKf.js +6 -0
- langflow/frontend/assets/folder-search-B704Twr9.js +6 -0
- langflow/frontend/assets/folder-symlink-DV-YEYTe.js +6 -0
- langflow/frontend/assets/folder-sync-DmFfBIzv.js +6 -0
- langflow/frontend/assets/folder-tree-BwA8hS45.js +6 -0
- langflow/frontend/assets/folder-up-dfRL3ZbO.js +6 -0
- langflow/frontend/assets/folder-x-DdS1Kh6E.js +6 -0
- langflow/frontend/assets/folders-jURfeUYW.js +6 -0
- langflow/frontend/assets/footprints-C3DhUQi1.js +6 -0
- langflow/frontend/assets/forklift-Dsb8hU2a.js +6 -0
- langflow/frontend/assets/forward-4ryXowC_.js +6 -0
- langflow/frontend/assets/frame-BcnUbN8A.js +6 -0
- langflow/frontend/assets/framer-DSJuC3Ej.js +6 -0
- langflow/frontend/assets/frown-bORFKAs-.js +6 -0
- langflow/frontend/assets/fuel-BD7G4Lam.js +6 -0
- langflow/frontend/assets/fullscreen-1-vF6jDJ.js +6 -0
- langflow/frontend/assets/funnel-BEjJpk-D.js +6 -0
- langflow/frontend/assets/funnel-plus-Cwb3P2We.js +6 -0
- langflow/frontend/assets/funnel-x-DB866IWX.js +6 -0
- langflow/frontend/assets/gallery-horizontal-MVzvwubX.js +6 -0
- langflow/frontend/assets/gallery-horizontal-end-BqPCJklr.js +6 -0
- langflow/frontend/assets/gallery-thumbnails-tksV-fzS.js +6 -0
- langflow/frontend/assets/gallery-vertical-CwDEqkCI.js +6 -0
- langflow/frontend/assets/gallery-vertical-end-CM57RekV.js +6 -0
- langflow/frontend/assets/gamepad-2-DWFvNiTD.js +6 -0
- langflow/frontend/assets/gamepad-BhI1fwnk.js +6 -0
- langflow/frontend/assets/gauge-pm_LFK3O.js +6 -0
- langflow/frontend/assets/gavel-BA_oTbL9.js +6 -0
- langflow/frontend/assets/gem-C3ngjhCw.js +6 -0
- langflow/frontend/assets/ghost-BF-FyixJ.js +6 -0
- langflow/frontend/assets/gift-DXVBCeHi.js +6 -0
- langflow/frontend/assets/git-branch-CvymwRNH.js +6 -0
- langflow/frontend/assets/git-branch-plus-CBvvPXl7.js +6 -0
- langflow/frontend/assets/git-commit-horizontal-9RbPhyua.js +6 -0
- langflow/frontend/assets/git-commit-vertical-D5cBOLH7.js +6 -0
- langflow/frontend/assets/git-compare-arrows-JsHSBf7B.js +6 -0
- langflow/frontend/assets/git-compare-bNqBra3R.js +6 -0
- langflow/frontend/assets/git-fork-DHR8LFdx.js +6 -0
- langflow/frontend/assets/git-graph-C-KsT4_y.js +6 -0
- langflow/frontend/assets/git-merge-CJviIaGN.js +6 -0
- langflow/frontend/assets/git-pull-request-VeeK2-yo.js +6 -0
- langflow/frontend/assets/git-pull-request-arrow-D5tXBIXv.js +6 -0
- langflow/frontend/assets/git-pull-request-closed-BLteWwtB.js +6 -0
- langflow/frontend/assets/git-pull-request-create-DIcNHYxH.js +6 -0
- langflow/frontend/assets/git-pull-request-create-arrow-BT0Y1rqZ.js +6 -0
- langflow/frontend/assets/git-pull-request-draft-Bbwzg6vX.js +6 -0
- langflow/frontend/assets/github-DLwvmAC1.js +6 -0
- langflow/frontend/assets/gitlab-DtCtYN7A.js +6 -0
- langflow/frontend/assets/glass-water-D2Y_kLyA.js +6 -0
- langflow/frontend/assets/glasses-CtHdOWfR.js +6 -0
- langflow/frontend/assets/globe-lock-B9ATkXdO.js +6 -0
- langflow/frontend/assets/globe-mb9Bd_p-.js +6 -0
- langflow/frontend/assets/goal-D_saei_u.js +6 -0
- langflow/frontend/assets/grab-BxnPY0g2.js +6 -0
- langflow/frontend/assets/graduation-cap-CUs3RC3F.js +6 -0
- langflow/frontend/assets/grape-CKMb2mkd.js +6 -0
- langflow/frontend/assets/grid-2x2-BWVzxLQw.js +6 -0
- langflow/frontend/assets/grid-2x2-check-DUj9ZJqn.js +6 -0
- langflow/frontend/assets/grid-2x2-plus-BT-EsIOn.js +6 -0
- langflow/frontend/assets/grid-2x2-x-DxReUbA5.js +6 -0
- langflow/frontend/assets/grid-3x3-C_ligFpx.js +6 -0
- langflow/frontend/assets/grip-B_KD3YUU.js +6 -0
- langflow/frontend/assets/grip-horizontal-BZ3Vv2Ha.js +6 -0
- langflow/frontend/assets/grip-vertical-BETUt37g.js +6 -0
- langflow/frontend/assets/group-BNmcogVv.js +6 -0
- langflow/frontend/assets/guitar-W4OktqAe.js +6 -0
- langflow/frontend/assets/ham-CVCR1uS6.js +6 -0
- langflow/frontend/assets/hammer-BWh1SXlv.js +6 -0
- langflow/frontend/assets/hand-C7TtnIa3.js +6 -0
- langflow/frontend/assets/hand-coins-gDwx7SVi.js +6 -0
- langflow/frontend/assets/hand-heart-rA9LGnON.js +6 -0
- langflow/frontend/assets/hand-helping-0S22McQF.js +6 -0
- langflow/frontend/assets/hand-metal-BRS4Qm3s.js +6 -0
- langflow/frontend/assets/hand-platter-CLqrlgex.js +6 -0
- langflow/frontend/assets/handshake-Bt0bcpFJ.js +6 -0
- langflow/frontend/assets/hard-drive-CRYjv4W-.js +6 -0
- langflow/frontend/assets/hard-drive-download-CY7chV9Q.js +6 -0
- langflow/frontend/assets/hard-drive-upload-P-zTZlIN.js +6 -0
- langflow/frontend/assets/hard-hat-CiAbIFtZ.js +6 -0
- langflow/frontend/assets/hash-B5ffTNt7.js +6 -0
- langflow/frontend/assets/haze-4j36iUtw.js +6 -0
- langflow/frontend/assets/hdmi-port-DW9O8GNF.js +6 -0
- langflow/frontend/assets/heading-1-qvUkh-3B.js +6 -0
- langflow/frontend/assets/heading-2-BR9BEcEH.js +6 -0
- langflow/frontend/assets/heading-3-DY9Zf3vZ.js +6 -0
- langflow/frontend/assets/heading-4-DNahwYJC.js +6 -0
- langflow/frontend/assets/heading-5-Ci_pbAP7.js +6 -0
- langflow/frontend/assets/heading-6-BWA32eyj.js +6 -0
- langflow/frontend/assets/heading-C7KLVz9g.js +6 -0
- langflow/frontend/assets/headphone-off-CTBK5huX.js +6 -0
- langflow/frontend/assets/headphones-CvpfHeBw.js +6 -0
- langflow/frontend/assets/headset-D6a1tEnQ.js +6 -0
- langflow/frontend/assets/heart-CegSgV3K.js +6 -0
- langflow/frontend/assets/heart-crack-C_pCvIp3.js +6 -0
- langflow/frontend/assets/heart-handshake-BKILJI-d.js +6 -0
- langflow/frontend/assets/heart-minus-H31H2CjD.js +6 -0
- langflow/frontend/assets/heart-off-D7RaIGZM.js +6 -0
- langflow/frontend/assets/heart-plus-BzjaA-vB.js +6 -0
- langflow/frontend/assets/heart-pulse-qBJcE0u6.js +6 -0
- langflow/frontend/assets/heater-DK20eg_l.js +6 -0
- langflow/frontend/assets/hexagon-CVp0ssY4.js +6 -0
- langflow/frontend/assets/highlighter-C99QVyyU.js +6 -0
- langflow/frontend/assets/history-D8wfKqDa.js +6 -0
- langflow/frontend/assets/hop-D3dNEcSg.js +6 -0
- langflow/frontend/assets/hop-off-BLuyaOPs.js +6 -0
- langflow/frontend/assets/hospital-CcVqiCkI.js +6 -0
- langflow/frontend/assets/hotel-CyO8UKhp.js +6 -0
- langflow/frontend/assets/hourglass-BhWwaV7W.js +6 -0
- langflow/frontend/assets/house-DSBGYwYC.js +6 -0
- langflow/frontend/assets/house-plug-Cexilfei.js +6 -0
- langflow/frontend/assets/house-plus-BsgGJ5Yf.js +6 -0
- langflow/frontend/assets/house-wifi-DBFvR9TZ.js +6 -0
- langflow/frontend/assets/ice-cream-bowl-Dof7QD1I.js +6 -0
- langflow/frontend/assets/ice-cream-cone-CthW8x9G.js +6 -0
- langflow/frontend/assets/id-card-D5dEmhp_.js +6 -0
- langflow/frontend/assets/image-BdfQPOA_.js +6 -0
- langflow/frontend/assets/image-down-B5rjh0eb.js +6 -0
- langflow/frontend/assets/image-minus-B5F4zilt.js +6 -0
- langflow/frontend/assets/image-off-iZqLyP3o.js +6 -0
- langflow/frontend/assets/image-play-Cdd_sPBz.js +6 -0
- langflow/frontend/assets/image-plus-Bsgt4Tfk.js +6 -0
- langflow/frontend/assets/image-up-R3S-Fb_a.js +6 -0
- langflow/frontend/assets/image-upscale-usmdTndn.js +6 -0
- langflow/frontend/assets/images-CLONhCoO.js +6 -0
- langflow/frontend/assets/import-GkIxe6Nc.js +6 -0
- langflow/frontend/assets/inbox-C32wQ12t.js +6 -0
- langflow/frontend/assets/indent-decrease-B9_yCuAJ.js +6 -0
- langflow/frontend/assets/indent-increase-Cz2JLS0b.js +6 -0
- langflow/frontend/assets/index-0phF0hAW.js +1 -0
- langflow/frontend/assets/index-190xvA68.js +1 -0
- langflow/frontend/assets/index-25_Qp26P.js +1 -0
- langflow/frontend/assets/index-2MtSuMmd.js +1 -0
- langflow/frontend/assets/index-5D92uxEJ.js +1 -0
- langflow/frontend/assets/index-6BJZ9Pmp.js +1 -0
- langflow/frontend/assets/index-94gla548.js +1 -0
- langflow/frontend/assets/index-AuZe-ngU.js +381 -0
- langflow/frontend/assets/index-B0HiEU_s.js +1 -0
- langflow/frontend/assets/index-B15lQ_2z.js +1 -0
- langflow/frontend/assets/index-B3OK8N2u.js +1 -0
- langflow/frontend/assets/index-B3Yt68yy.js +1 -0
- langflow/frontend/assets/index-B5Zvq_Pb.js +1 -0
- langflow/frontend/assets/index-B6NZoXiJ.js +7 -0
- langflow/frontend/assets/index-B85_Dksv.js +1 -0
- langflow/frontend/assets/index-BEMjoSH7.js +1 -0
- langflow/frontend/assets/index-BF1oPeYf.js +1 -0
- langflow/frontend/assets/index-BF353yvx.js +1 -0
- langflow/frontend/assets/index-BFD8SY9I.js +1 -0
- langflow/frontend/assets/index-BFVJpgU8.js +1 -0
- langflow/frontend/assets/index-BGLqZQ5F.js +1 -0
- langflow/frontend/assets/index-BHgI-kgJ.js +1 -0
- langflow/frontend/assets/index-BJO0z3G0.js +1 -0
- langflow/frontend/assets/index-BKNu5vZa.js +205 -0
- langflow/frontend/assets/index-BMaP8pXZ.js +1 -0
- langflow/frontend/assets/index-BP9yxPCl.js +1 -0
- langflow/frontend/assets/index-BQ61IrZU.js +185 -0
- langflow/frontend/assets/index-BSQGtvtI.js +1 -0
- langflow/frontend/assets/index-BXIMxiON.js +1 -0
- langflow/frontend/assets/index-BYTys_GB.js +1 -0
- langflow/frontend/assets/index-BYXzjVHC.js +1 -0
- langflow/frontend/assets/index-BZFHtvHK.js +1 -0
- langflow/frontend/assets/index-B_jd7JB6.js +1 -0
- langflow/frontend/assets/index-B_r_WXxu.js +1 -0
- langflow/frontend/assets/index-B_yqjRPz.js +1 -0
- langflow/frontend/assets/index-BadcH9fn.js +1 -0
- langflow/frontend/assets/index-Bae3Qz10.js +1 -0
- langflow/frontend/assets/index-BbOBJJKV.js +1 -0
- langflow/frontend/assets/index-BgwF8LI8.js +1 -0
- langflow/frontend/assets/index-BhdwDbaJ.js +1 -0
- langflow/frontend/assets/index-Bi4c-giG.js +1 -0
- langflow/frontend/assets/index-Bip6ySuQ.js +1 -0
- langflow/frontend/assets/index-BkbCY_dl.js +1 -0
- langflow/frontend/assets/index-BlOlBfRg.js +1 -0
- langflow/frontend/assets/index-Blhx-SP4.js +1 -0
- langflow/frontend/assets/index-Bnb7QBfu.js +1 -0
- langflow/frontend/assets/index-Bnss_nit.js +1 -0
- langflow/frontend/assets/index-BpNqCkB1.js +1 -0
- langflow/frontend/assets/index-BqRKzkF1.js +1 -0
- langflow/frontend/assets/index-Bsjnh87F.js +1 -0
- langflow/frontend/assets/index-Btaf2a3s.js +1 -0
- langflow/frontend/assets/index-Bu9v3rac.js +1 -0
- langflow/frontend/assets/index-Bw_hOzan.js +1 -0
- langflow/frontend/assets/index-BwutGmgE.js +1 -0
- langflow/frontend/assets/index-ByweHquX.js +1 -0
- langflow/frontend/assets/index-Bz1CRp1o.js +1 -0
- langflow/frontend/assets/index-C1kmAgl5.js +1 -0
- langflow/frontend/assets/index-C2NO6tJj.js +1 -0
- langflow/frontend/assets/index-C2X7xzXv.js +1 -0
- langflow/frontend/assets/index-C3Qz98DK.js +1 -0
- langflow/frontend/assets/index-C3hN_tQ_.js +281 -0
- langflow/frontend/assets/index-C4MOo85o.js +1 -0
- langflow/frontend/assets/index-C64ecSrr.js +1 -0
- langflow/frontend/assets/index-C8-2C71K.js +1 -0
- langflow/frontend/assets/index-CArLAVm4.js +1 -0
- langflow/frontend/assets/index-CCgTZGr5.js +1 -0
- langflow/frontend/assets/index-CDSyGh8h.js +1 -0
- langflow/frontend/assets/index-CDZKnq7I.js +1 -0
- langflow/frontend/assets/index-CEgPuN0K.js +1 -0
- langflow/frontend/assets/index-CG1O4hT5.js +1 -0
- langflow/frontend/assets/index-CH2G7t7D.js +1 -0
- langflow/frontend/assets/index-CQdn9e1s.js +21 -0
- langflow/frontend/assets/index-CRMphHp1.js +1 -0
- langflow/frontend/assets/index-CRURQPcb.js +1 -0
- langflow/frontend/assets/index-CT1bvNKi.js +1 -0
- langflow/frontend/assets/index-CTVsEvAT.js +1 -0
- langflow/frontend/assets/index-CX2CahQs.js +1 -0
- langflow/frontend/assets/index-CXNxNpz_.js +1 -0
- langflow/frontend/assets/index-CYXf3ZKk.js +1 -0
- langflow/frontend/assets/index-CZNTNIYG.js +1 -0
- langflow/frontend/assets/index-C_40j3dV.js +1 -0
- langflow/frontend/assets/index-CcVZOh8b.js +1 -0
- langflow/frontend/assets/index-Cck8pnPg.js +1 -0
- langflow/frontend/assets/index-CdVB2QJD.js +1 -0
- langflow/frontend/assets/index-CeF2eL7q.js +1 -0
- langflow/frontend/assets/index-Cidr57qg.js +7323 -0
- langflow/frontend/assets/index-CjhZZUe9.js +1 -0
- langflow/frontend/assets/index-CkE4ffT5.js +1 -0
- langflow/frontend/assets/index-CocJsLpF.js +1 -0
- langflow/frontend/assets/index-CpUnm570.js +1 -0
- langflow/frontend/assets/index-CqOsAlB1.js +1 -0
- langflow/frontend/assets/index-Ctv5t9Ax.js +1 -0
- langflow/frontend/assets/index-Cu71RknM.js +1 -0
- langflow/frontend/assets/index-CuWoIZkj.js +1 -0
- langflow/frontend/assets/index-CuboaYvj.js +1 -0
- langflow/frontend/assets/index-CvnvFDEJ.js +108 -0
- langflow/frontend/assets/index-Cwrq5I4n.js +14 -0
- langflow/frontend/assets/index-CxBgryeO.js +1 -0
- langflow/frontend/assets/index-Cy-nj55q.js +1 -0
- langflow/frontend/assets/index-D-I17JZS.js +1 -0
- langflow/frontend/assets/index-D0_3pIA0.js +1 -0
- langflow/frontend/assets/index-D2-y5UBg.js +1 -0
- langflow/frontend/assets/index-D5p-Xdcb.js +1 -0
- langflow/frontend/assets/index-D7SXXArE.js +1 -0
- langflow/frontend/assets/index-D7ug5Mr4.js +1 -0
- langflow/frontend/assets/index-D8Ojh-k6.js +1 -0
- langflow/frontend/assets/index-D8UxwgB_.js +1 -0
- langflow/frontend/assets/index-DAxOth3t.js +1 -0
- langflow/frontend/assets/index-DB02OuvQ.js +767 -0
- langflow/frontend/assets/index-DB3P3gpX.js +1 -0
- langflow/frontend/assets/index-DDbpcVpi.js +1 -0
- langflow/frontend/assets/index-DDkfBk3_.js +1 -0
- langflow/frontend/assets/index-DE4WjdXi.js +1 -0
- langflow/frontend/assets/index-DFefZRt3.js +1 -0
- langflow/frontend/assets/index-DHhNCoxC.js +1 -0
- langflow/frontend/assets/index-DHvEjBzy.js +1 -0
- langflow/frontend/assets/index-DIeFK5un.js +1 -0
- langflow/frontend/assets/index-DJMrXx0h.js +1 -0
- langflow/frontend/assets/index-DMKTA8hO.js +1 -0
- langflow/frontend/assets/index-DNc0ObDi.js +1 -0
- langflow/frontend/assets/index-DPYWL9Xo.js +1 -0
- langflow/frontend/assets/index-DPpFAB_M.js +1 -0
- langflow/frontend/assets/index-DS6TyH60.js +1 -0
- langflow/frontend/assets/index-DSiPc20v.js +1 -0
- langflow/frontend/assets/index-DT6I0ji6.js +1 -0
- langflow/frontend/assets/index-DUPyoHu0.js +1 -0
- langflow/frontend/assets/index-DZ5HGZMy.js +1 -0
- langflow/frontend/assets/index-DZRwOBje.js +20 -0
- langflow/frontend/assets/index-De3N_i8c.js +1 -0
- langflow/frontend/assets/index-DjBhV7ZX.js +1 -0
- langflow/frontend/assets/index-DjCKJxoZ.js +1 -0
- langflow/frontend/assets/index-DknGB3mL.js +1 -0
- langflow/frontend/assets/index-DnDMuUOD.js +1 -0
- langflow/frontend/assets/index-DnMs3n1N.js +399 -0
- langflow/frontend/assets/index-DnqVuRVT.js +1 -0
- langflow/frontend/assets/index-DpJ0uzab.js +495 -0
- langflow/frontend/assets/index-DqSxHJgE.js +1 -0
- langflow/frontend/assets/index-DqrfBmrJ.js +1 -0
- langflow/frontend/assets/index-DrDOytJC.js +1 -0
- langflow/frontend/assets/index-DsDi0Bjj.js +1 -0
- langflow/frontend/assets/index-DsNVoDzR.js +127 -0
- langflow/frontend/assets/index-Dt50-PjL.js +1 -0
- langflow/frontend/assets/index-Du9lcEvb.js +1 -0
- langflow/frontend/assets/index-Dvu6DvO2.js +1 -0
- langflow/frontend/assets/index-DwBe9f6v.js +1 -0
- langflow/frontend/assets/index-DwtG8USV.js +1 -0
- langflow/frontend/assets/index-Dzc_q67O.js +1 -0
- langflow/frontend/assets/index-E0x1Hzu4.js +1 -0
- langflow/frontend/assets/index-GykK2iIn.js +1 -0
- langflow/frontend/assets/index-K8dAnAZF.js +1 -0
- langflow/frontend/assets/index-KFjasZlN.js +1 -0
- langflow/frontend/assets/index-KRFrreTx.js +1 -0
- langflow/frontend/assets/index-MZ8lJjwI.js +1 -0
- langflow/frontend/assets/index-PAdwqdYR.js +2 -0
- langflow/frontend/assets/index-PzWFAJc5.js +1 -0
- langflow/frontend/assets/index-QbN-AMm6.js +1 -0
- langflow/frontend/assets/index-SaFrAWJv.js +1 -0
- langflow/frontend/assets/index-Sg9rwmLa.js +1 -0
- langflow/frontend/assets/index-TdOK0iYE.js +1 -0
- langflow/frontend/assets/index-UVJZzmVG.js +1 -0
- langflow/frontend/assets/index-UfDqV7Th.js +1 -0
- langflow/frontend/assets/index-VPMVkUGa.js +1 -0
- langflow/frontend/assets/index-YYykW4Z0.js +1 -0
- langflow/frontend/assets/index-ZvMkdQ1T.js +1 -0
- langflow/frontend/assets/index-_X1FFLFO.js +1 -0
- langflow/frontend/assets/index-aX7kluAF.js +1 -0
- langflow/frontend/assets/index-b_iJY4LX.js +1 -0
- langflow/frontend/assets/index-eOFIpP6q.js +1 -0
- langflow/frontend/assets/index-i5xkcJo9.js +1 -0
- langflow/frontend/assets/index-j9XPM87F.js +1 -0
- langflow/frontend/assets/index-jX87eqGu.js +1 -0
- langflow/frontend/assets/index-kR3AdtE6.js +1 -0
- langflow/frontend/assets/index-kkPMNG8F.js +13 -0
- langflow/frontend/assets/index-lGKQ51bw.js +1 -0
- langflow/frontend/assets/index-nC0FZUl2.js +1 -0
- langflow/frontend/assets/index-nRNamDkS.js +1 -0
- langflow/frontend/assets/index-naRqFBGF.js +1 -0
- langflow/frontend/assets/index-oZYqaFMt.js +1 -0
- langflow/frontend/assets/index-p_O4RsMx.js +1 -0
- langflow/frontend/assets/index-sNtTAT5M.js +1 -0
- langflow/frontend/assets/index-tRn0T9eP.js +1 -0
- langflow/frontend/assets/index-u-PIynSn.js +1 -0
- langflow/frontend/assets/index-uNXjHJ0I.js +1 -0
- langflow/frontend/assets/index-uywG8s5T.js +1 -0
- langflow/frontend/assets/index-v7I5KNh9.js +1 -0
- langflow/frontend/assets/indian-rupee-BwTmLYOI.js +6 -0
- langflow/frontend/assets/infinity-Dh8NBtPf.js +6 -0
- langflow/frontend/assets/info-Dv4W4Ls4.js +6 -0
- langflow/frontend/assets/inspection-panel-D7WhwHo_.js +6 -0
- langflow/frontend/assets/instagram-Do9mreAQ.js +6 -0
- langflow/frontend/assets/italic-Ca-_MJMM.js +6 -0
- langflow/frontend/assets/iteration-ccw-BJurPsoq.js +6 -0
- langflow/frontend/assets/iteration-cw-FqnCo_5f.js +6 -0
- langflow/frontend/assets/japanese-yen-Bav4bd1l.js +6 -0
- langflow/frontend/assets/joystick-DV4qb2N5.js +6 -0
- langflow/frontend/assets/kanban-CZS74wpv.js +6 -0
- langflow/frontend/assets/key-BWzYBkPV.js +6 -0
- langflow/frontend/assets/key-round-DuROIWKu.js +6 -0
- langflow/frontend/assets/key-square-BVQppw3t.js +6 -0
- langflow/frontend/assets/keyboard-CzWokhoC.js +6 -0
- langflow/frontend/assets/keyboard-music-D9OkSafG.js +6 -0
- langflow/frontend/assets/keyboard-off-eIoqTwvV.js +6 -0
- langflow/frontend/assets/lamp-bVDXt7l6.js +6 -0
- langflow/frontend/assets/lamp-ceiling-vyH-uHHW.js +6 -0
- langflow/frontend/assets/lamp-desk-C1_xpLmX.js +6 -0
- langflow/frontend/assets/lamp-floor-DgNIyBa9.js +6 -0
- langflow/frontend/assets/lamp-wall-down-BPzU3zyX.js +6 -0
- langflow/frontend/assets/lamp-wall-up-CrBzyE-d.js +6 -0
- langflow/frontend/assets/land-plot-BZQr9cgA.js +6 -0
- langflow/frontend/assets/landmark-CVYKdN3X.js +6 -0
- langflow/frontend/assets/languages-45SyjLGE.js +6 -0
- langflow/frontend/assets/laptop-CoknuACm.js +6 -0
- langflow/frontend/assets/laptop-minimal-DLasDIm8.js +6 -0
- langflow/frontend/assets/laptop-minimal-check-DJ5oYc2T.js +6 -0
- langflow/frontend/assets/lasso-BI3aB94J.js +6 -0
- langflow/frontend/assets/lasso-select-UJUIqJqA.js +6 -0
- langflow/frontend/assets/laugh-DDFlxFF9.js +6 -0
- langflow/frontend/assets/layers-2-VRynypVE.js +6 -0
- langflow/frontend/assets/layers-BHZWg3DI.js +6 -0
- langflow/frontend/assets/layout-dashboard-DgW72CjK.js +6 -0
- langflow/frontend/assets/layout-grid--q7PN_qg.js +6 -0
- langflow/frontend/assets/layout-list-CCLvLIFC.js +6 -0
- langflow/frontend/assets/layout-panel-left-C_Qjw6QC.js +6 -0
- langflow/frontend/assets/layout-panel-top-DzLjyhuf.js +6 -0
- langflow/frontend/assets/layout-template-B-5X_Qkx.js +6 -0
- langflow/frontend/assets/lazyIconImports-Bz3bkgCe.js +2 -0
- langflow/frontend/assets/leaf-C3JjvcCt.js +6 -0
- langflow/frontend/assets/leafy-green-CyhqB08u.js +6 -0
- langflow/frontend/assets/lectern-DOC9cItP.js +6 -0
- langflow/frontend/assets/letter-text-C0gmbTry.js +6 -0
- langflow/frontend/assets/library-C1CsMb8h.js +6 -0
- langflow/frontend/assets/library-big-Cg8YN3RQ.js +6 -0
- langflow/frontend/assets/life-buoy-BJ4o4btU.js +6 -0
- langflow/frontend/assets/ligature-F7CjHgcf.js +6 -0
- langflow/frontend/assets/lightbulb-DwhjekWM.js +6 -0
- langflow/frontend/assets/lightbulb-off--IIEl1Uu.js +6 -0
- langflow/frontend/assets/link-2-BwyOJj2E.js +6 -0
- langflow/frontend/assets/link-2-off-C5VeEnRj.js +6 -0
- langflow/frontend/assets/link-Crooi5CK.js +6 -0
- langflow/frontend/assets/linkedin-CW8Gdyiy.js +6 -0
- langflow/frontend/assets/list-BqvobIeA.js +6 -0
- langflow/frontend/assets/list-check-CO3D1i6B.js +6 -0
- langflow/frontend/assets/list-checks-ompA_hJ3.js +6 -0
- langflow/frontend/assets/list-collapse-BMesRt3G.js +6 -0
- langflow/frontend/assets/list-end-CcRyDVJj.js +6 -0
- langflow/frontend/assets/list-filter-CiV0Bxq2.js +6 -0
- langflow/frontend/assets/list-filter-plus-BZpxNwsH.js +6 -0
- langflow/frontend/assets/list-minus-BYvvlNjc.js +6 -0
- langflow/frontend/assets/list-music-BvIN7DCF.js +6 -0
- langflow/frontend/assets/list-ordered-DC36HggM.js +6 -0
- langflow/frontend/assets/list-plus-CBq0273s.js +6 -0
- langflow/frontend/assets/list-restart-MpqexlAi.js +6 -0
- langflow/frontend/assets/list-start-C8B4Iz0l.js +6 -0
- langflow/frontend/assets/list-todo-t9Uz6s5k.js +6 -0
- langflow/frontend/assets/list-tree-C_jTFXcp.js +6 -0
- langflow/frontend/assets/list-video-BUi7L7h1.js +6 -0
- langflow/frontend/assets/list-x-25I3R3EQ.js +6 -0
- langflow/frontend/assets/loader-DojwFfmg.js +6 -0
- langflow/frontend/assets/loader-circle-BIDGgBMg.js +6 -0
- langflow/frontend/assets/loader-pinwheel-DAcRdN4v.js +6 -0
- langflow/frontend/assets/locate-DU82yHfH.js +6 -0
- langflow/frontend/assets/locate-fixed-BOviOtja.js +6 -0
- langflow/frontend/assets/locate-off-ypytr2El.js +6 -0
- langflow/frontend/assets/location-edit-Cz3hePHF.js +6 -0
- langflow/frontend/assets/lock-CCg6w3pY.js +6 -0
- langflow/frontend/assets/lock-keyhole-CX3_fQEB.js +6 -0
- langflow/frontend/assets/lock-keyhole-open-Kq0AVKzj.js +6 -0
- langflow/frontend/assets/lock-open-DtpgnBqE.js +6 -0
- langflow/frontend/assets/log-in-CUEy1JTq.js +6 -0
- langflow/frontend/assets/log-out-IzTjzLpx.js +6 -0
- langflow/frontend/assets/logs-CJulgLEs.js +6 -0
- langflow/frontend/assets/lollipop-DBq9NgQr.js +6 -0
- langflow/frontend/assets/luggage-Btwx2Ot6.js +6 -0
- langflow/frontend/assets/magnet-Denpacuv.js +6 -0
- langflow/frontend/assets/mail-check-CaJkfM-K.js +6 -0
- langflow/frontend/assets/mail-mNShmIw5.js +6 -0
- langflow/frontend/assets/mail-minus-C3CryOgO.js +6 -0
- langflow/frontend/assets/mail-open-CH5-mJXF.js +6 -0
- langflow/frontend/assets/mail-plus-Biazs9K2.js +6 -0
- langflow/frontend/assets/mail-question-DK9RsXOL.js +6 -0
- langflow/frontend/assets/mail-search-DFn8-RMW.js +6 -0
- langflow/frontend/assets/mail-warning-BfqXHQ0a.js +6 -0
- langflow/frontend/assets/mail-x-BbahUcO6.js +6 -0
- langflow/frontend/assets/mailbox-8wq6kjqA.js +6 -0
- langflow/frontend/assets/mails-Q1q_iYv7.js +6 -0
- langflow/frontend/assets/map-BNKjH1Fl.js +6 -0
- langflow/frontend/assets/map-pin-Hq6WcTW0.js +6 -0
- langflow/frontend/assets/map-pin-check-inside-2vLXtfPV.js +6 -0
- langflow/frontend/assets/map-pin-check-tZZ9FoDV.js +6 -0
- langflow/frontend/assets/map-pin-house-LL627BKs.js +6 -0
- langflow/frontend/assets/map-pin-minus-BA87I2RR.js +6 -0
- langflow/frontend/assets/map-pin-minus-inside-Ys3Lzs0l.js +6 -0
- langflow/frontend/assets/map-pin-off-gbjYYZwD.js +6 -0
- langflow/frontend/assets/map-pin-plus-BqmbzQII.js +6 -0
- langflow/frontend/assets/map-pin-plus-inside-1d0l4IFr.js +6 -0
- langflow/frontend/assets/map-pin-x-BzVVR0rt.js +6 -0
- langflow/frontend/assets/map-pin-x-inside-D28uxF0R.js +6 -0
- langflow/frontend/assets/map-pinned-Dq19m9e2.js +6 -0
- langflow/frontend/assets/map-plus-DmbbaQS7.js +6 -0
- langflow/frontend/assets/mars-BX3A7zA9.js +6 -0
- langflow/frontend/assets/mars-stroke-BL38pj5R.js +6 -0
- langflow/frontend/assets/martini-Bqwx_md5.js +6 -0
- langflow/frontend/assets/maximize-2-CpuS3cL-.js +6 -0
- langflow/frontend/assets/maximize-BedPrjVF.js +6 -0
- langflow/frontend/assets/medal-AghGVQt7.js +6 -0
- langflow/frontend/assets/megaphone-CJ_vXm7O.js +6 -0
- langflow/frontend/assets/megaphone-off-C11KLwO4.js +6 -0
- langflow/frontend/assets/meh-CW-EgNPh.js +6 -0
- langflow/frontend/assets/memory-stick-Cd66iaS4.js +6 -0
- langflow/frontend/assets/menu-_dG5yVw3.js +6 -0
- langflow/frontend/assets/merge-Cb0QwOv7.js +6 -0
- langflow/frontend/assets/message-circle-52FtCirt.js +6 -0
- langflow/frontend/assets/message-circle-code-B5KURs5S.js +6 -0
- langflow/frontend/assets/message-circle-dashed-waKjBvNJ.js +6 -0
- langflow/frontend/assets/message-circle-heart-UMH-HX7W.js +6 -0
- langflow/frontend/assets/message-circle-more-Cg_ltQEC.js +6 -0
- langflow/frontend/assets/message-circle-off-zHmLC-AS.js +6 -0
- langflow/frontend/assets/message-circle-plus-C3e9QNH0.js +6 -0
- langflow/frontend/assets/message-circle-question-0dwLf4vc.js +6 -0
- langflow/frontend/assets/message-circle-reply-CB0lR6DE.js +6 -0
- langflow/frontend/assets/message-circle-warning-CTB2Hx_g.js +6 -0
- langflow/frontend/assets/message-circle-x-CT_pQ-jA.js +6 -0
- langflow/frontend/assets/message-square-Q5N-krYh.js +6 -0
- langflow/frontend/assets/message-square-code-ibprMtz3.js +6 -0
- langflow/frontend/assets/message-square-dashed-NEtTID9I.js +6 -0
- langflow/frontend/assets/message-square-diff-BLldgXed.js +6 -0
- langflow/frontend/assets/message-square-dot-Cfibvj-U.js +6 -0
- langflow/frontend/assets/message-square-heart-CV7hi8dc.js +6 -0
- langflow/frontend/assets/message-square-lock-mWga49zz.js +6 -0
- langflow/frontend/assets/message-square-more-DCr1OP5i.js +6 -0
- langflow/frontend/assets/message-square-off-SRd8-EpB.js +6 -0
- langflow/frontend/assets/message-square-plus-VBl7AfnB.js +6 -0
- langflow/frontend/assets/message-square-quote-CgkubcWl.js +6 -0
- langflow/frontend/assets/message-square-reply-DhRhpR7V.js +6 -0
- langflow/frontend/assets/message-square-share-BTxQd2vA.js +6 -0
- langflow/frontend/assets/message-square-text-BzdbDDYX.js +6 -0
- langflow/frontend/assets/message-square-warning-DElcRREE.js +6 -0
- langflow/frontend/assets/message-square-x-CkS-D0ZQ.js +6 -0
- langflow/frontend/assets/messages-square-CJRjj-e6.js +6 -0
- langflow/frontend/assets/mic-CbUPysjv.js +6 -0
- langflow/frontend/assets/mic-off-DnQis5H4.js +6 -0
- langflow/frontend/assets/mic-vocal-C_32nw-u.js +6 -0
- langflow/frontend/assets/microchip-hihvWe6v.js +6 -0
- langflow/frontend/assets/microscope-V58rsnW1.js +6 -0
- langflow/frontend/assets/microwave-fAFdtfZD.js +6 -0
- langflow/frontend/assets/milestone-Bvy5tx_q.js +6 -0
- langflow/frontend/assets/milk-RvsrcGM-.js +6 -0
- langflow/frontend/assets/milk-off-DR675sEi.js +6 -0
- langflow/frontend/assets/minimize-2-BOQ_nBxs.js +6 -0
- langflow/frontend/assets/minimize-DgOpuiSn.js +6 -0
- langflow/frontend/assets/monitor-C-64RI3p.js +6 -0
- langflow/frontend/assets/monitor-check-B7yW02iG.js +6 -0
- langflow/frontend/assets/monitor-cog-BghcqHRt.js +6 -0
- langflow/frontend/assets/monitor-dot-CD9ZdwzM.js +6 -0
- langflow/frontend/assets/monitor-down-Cgqoy8Gy.js +6 -0
- langflow/frontend/assets/monitor-off-Dn_XstC0.js +6 -0
- langflow/frontend/assets/monitor-pause-RDyryqkr.js +6 -0
- langflow/frontend/assets/monitor-play--cb__gmL.js +6 -0
- langflow/frontend/assets/monitor-smartphone-BF285xqc.js +6 -0
- langflow/frontend/assets/monitor-speaker-xO_S-6dS.js +6 -0
- langflow/frontend/assets/monitor-stop-CtCM968A.js +6 -0
- langflow/frontend/assets/monitor-up-5L3XxAMM.js +6 -0
- langflow/frontend/assets/monitor-x-DgYxgG2N.js +6 -0
- langflow/frontend/assets/moon-CI2m7CGH.js +6 -0
- langflow/frontend/assets/moon-star-Bz3TgrEc.js +6 -0
- langflow/frontend/assets/mountain-LpzgaRB1.js +6 -0
- langflow/frontend/assets/mountain-snow-BQJQB6gK.js +6 -0
- langflow/frontend/assets/mouse-BL1O1m96.js +6 -0
- langflow/frontend/assets/mouse-off-D_qFgcNf.js +6 -0
- langflow/frontend/assets/mouse-pointer-2-DOYUlrR6.js +6 -0
- langflow/frontend/assets/mouse-pointer-BZ69s9aI.js +6 -0
- langflow/frontend/assets/mouse-pointer-ban-3sdegHOo.js +6 -0
- langflow/frontend/assets/mouse-pointer-click-DbqPOzfa.js +6 -0
- langflow/frontend/assets/move-3d-DjF8F2Xe.js +6 -0
- langflow/frontend/assets/move-C8KtKXDD.js +6 -0
- langflow/frontend/assets/move-diagonal-2-BnJF1lh-.js +6 -0
- langflow/frontend/assets/move-diagonal-qMcF5hdU.js +6 -0
- langflow/frontend/assets/move-down-DSPc-fDE.js +6 -0
- langflow/frontend/assets/move-down-left-K4qdRcT6.js +6 -0
- langflow/frontend/assets/move-down-right-DV4ZEXu5.js +6 -0
- langflow/frontend/assets/move-horizontal-D00wEncL.js +6 -0
- langflow/frontend/assets/move-left-BQT_sqYK.js +6 -0
- langflow/frontend/assets/move-right-BEL9BIao.js +6 -0
- langflow/frontend/assets/move-up-D7szht_Z.js +6 -0
- langflow/frontend/assets/move-up-left-L6w6uQ4-.js +6 -0
- langflow/frontend/assets/move-up-right-C5-N-Erm.js +6 -0
- langflow/frontend/assets/move-vertical-BGY4Z6NJ.js +6 -0
- langflow/frontend/assets/music-2-BZZd-8Da.js +6 -0
- langflow/frontend/assets/music-3-DWl9Kftk.js +6 -0
- langflow/frontend/assets/music-4-D9TbRjBe.js +6 -0
- langflow/frontend/assets/music-CXzNx0Ej.js +6 -0
- langflow/frontend/assets/navigation-2-off-BMnzsjaI.js +6 -0
- langflow/frontend/assets/navigation-2-zKBl6Qda.js +6 -0
- langflow/frontend/assets/navigation-off-G_2EJHcd.js +6 -0
- langflow/frontend/assets/navigation-qFDfgVuO.js +6 -0
- langflow/frontend/assets/network-C01c95uT.js +6 -0
- langflow/frontend/assets/newspaper-Cv-lQymb.js +6 -0
- langflow/frontend/assets/nfc-mP6629yS.js +6 -0
- langflow/frontend/assets/non-binary-CutC3h4F.js +6 -0
- langflow/frontend/assets/notebook-BZsHMDll.js +6 -0
- langflow/frontend/assets/notebook-pen-B37VM9LR.js +6 -0
- langflow/frontend/assets/notebook-tabs-D0248WIy.js +6 -0
- langflow/frontend/assets/notebook-text-CtsTa1Tx.js +6 -0
- langflow/frontend/assets/notepad-text-5ZgoKeZw.js +6 -0
- langflow/frontend/assets/notepad-text-dashed-Bi2tmsP-.js +6 -0
- langflow/frontend/assets/nut-Cc8dxv-3.js +6 -0
- langflow/frontend/assets/nut-off-Dq-nJY58.js +6 -0
- langflow/frontend/assets/octagon-B43W9laf.js +6 -0
- langflow/frontend/assets/octagon-alert-BKT-KENt.js +6 -0
- langflow/frontend/assets/octagon-minus-CIpb0cq9.js +6 -0
- langflow/frontend/assets/octagon-pause-C3VYxdNn.js +6 -0
- langflow/frontend/assets/octagon-x-BD2emBvs.js +6 -0
- langflow/frontend/assets/omega-5KFeiZdP.js +6 -0
- langflow/frontend/assets/option-D-_6YLKc.js +6 -0
- langflow/frontend/assets/orbit-CMaQ8NFZ.js +6 -0
- langflow/frontend/assets/origami-BGDHUS5V.js +6 -0
- langflow/frontend/assets/package-2-iJReeCXG.js +6 -0
- langflow/frontend/assets/package-check-BPwowUBP.js +6 -0
- langflow/frontend/assets/package-minus-dNiTU7ns.js +6 -0
- langflow/frontend/assets/package-n5XZlHRs.js +6 -0
- langflow/frontend/assets/package-open-BPFhKbzL.js +6 -0
- langflow/frontend/assets/package-plus-CYBPxJrj.js +6 -0
- langflow/frontend/assets/package-search-DmOrd4Wx.js +6 -0
- langflow/frontend/assets/package-x-WzFs0CkF.js +6 -0
- langflow/frontend/assets/paint-bucket-DSeGe6Wq.js +6 -0
- langflow/frontend/assets/paint-roller-CbhG-k_d.js +6 -0
- langflow/frontend/assets/paintbrush-DCub73HW.js +6 -0
- langflow/frontend/assets/paintbrush-vertical-CSgUB38n.js +6 -0
- langflow/frontend/assets/palette-BTAspRl6.js +6 -0
- langflow/frontend/assets/panel-bottom-DKAs47n1.js +6 -0
- langflow/frontend/assets/panel-bottom-close-Dn9Aee-D.js +6 -0
- langflow/frontend/assets/panel-bottom-dashed-C57ExszP.js +6 -0
- langflow/frontend/assets/panel-bottom-open-BahoAeBY.js +6 -0
- langflow/frontend/assets/panel-left-close-2NZii4px.js +6 -0
- langflow/frontend/assets/panel-left-dashed-B7xvlrM3.js +6 -0
- langflow/frontend/assets/panel-left-open-D8IbiVni.js +6 -0
- langflow/frontend/assets/panel-right-DvEwh69d.js +6 -0
- langflow/frontend/assets/panel-right-close-BU2i_6lj.js +6 -0
- langflow/frontend/assets/panel-right-dashed-CGVyfcX7.js +6 -0
- langflow/frontend/assets/panel-right-open-BY6izYgI.js +6 -0
- langflow/frontend/assets/panel-top-DF9Tk-Sl.js +6 -0
- langflow/frontend/assets/panel-top-close-H2Byp8q0.js +6 -0
- langflow/frontend/assets/panel-top-dashed-Dp-OM5rf.js +6 -0
- langflow/frontend/assets/panel-top-open-ChysV6wS.js +6 -0
- langflow/frontend/assets/panels-left-bottom-B9g0wVu3.js +6 -0
- langflow/frontend/assets/panels-right-bottom-BEUMDIKf.js +6 -0
- langflow/frontend/assets/panels-top-left-BhITaudh.js +6 -0
- langflow/frontend/assets/paperclip-vx41TSPC.js +6 -0
- langflow/frontend/assets/parentheses-BWn3uWrz.js +6 -0
- langflow/frontend/assets/parking-meter-D17UrNOe.js +6 -0
- langflow/frontend/assets/party-popper-D2swQyOD.js +6 -0
- langflow/frontend/assets/pause-eTQboL6R.js +6 -0
- langflow/frontend/assets/paw-print-CPITBsQk.js +6 -0
- langflow/frontend/assets/pc-case-DGANtdEL.js +6 -0
- langflow/frontend/assets/pen-BxPgLmtS.js +6 -0
- langflow/frontend/assets/pen-line-iD0BMH2s.js +6 -0
- langflow/frontend/assets/pen-off-DxNceeBA.js +6 -0
- langflow/frontend/assets/pen-tool-Di8zA-s7.js +6 -0
- langflow/frontend/assets/pencil-9kfwTqUP.js +6 -0
- langflow/frontend/assets/pencil-line-CSxpjcva.js +6 -0
- langflow/frontend/assets/pencil-off-CaGgN8bq.js +6 -0
- langflow/frontend/assets/pencil-ruler-Dm9Wz7dD.js +6 -0
- langflow/frontend/assets/pentagon-CLWMXAaY.js +6 -0
- langflow/frontend/assets/percent-9fNitGXM.js +6 -0
- langflow/frontend/assets/person-standing-EqJkcYTC.js +6 -0
- langflow/frontend/assets/philippine-peso-DBvIYuWa.js +6 -0
- langflow/frontend/assets/phone-BllQ2UMq.js +6 -0
- langflow/frontend/assets/phone-call-BMCwxqZn.js +6 -0
- langflow/frontend/assets/phone-forwarded-mlLsfTs-.js +6 -0
- langflow/frontend/assets/phone-incoming-zfZsIXer.js +6 -0
- langflow/frontend/assets/phone-missed-CuSafq9_.js +6 -0
- langflow/frontend/assets/phone-off-CMeaZRiB.js +6 -0
- langflow/frontend/assets/phone-outgoing-DslJLl8S.js +6 -0
- langflow/frontend/assets/pi-ZOw0VRyU.js +6 -0
- langflow/frontend/assets/piano-MWguQr7g.js +6 -0
- langflow/frontend/assets/pickaxe-Cwr62aW5.js +6 -0
- langflow/frontend/assets/picture-in-picture-2-CmjgS_Sk.js +6 -0
- langflow/frontend/assets/picture-in-picture-CIvF2OW6.js +6 -0
- langflow/frontend/assets/piggy-bank-BdGPIv5a.js +6 -0
- langflow/frontend/assets/pilcrow-DIcrLu_7.js +6 -0
- langflow/frontend/assets/pilcrow-left-CjzCvCBJ.js +6 -0
- langflow/frontend/assets/pilcrow-right-D7SrTDGh.js +6 -0
- langflow/frontend/assets/pill-arUcAXhm.js +6 -0
- langflow/frontend/assets/pill-bottle-LPnBlax_.js +6 -0
- langflow/frontend/assets/pin-C-Z7BLdx.js +6 -0
- langflow/frontend/assets/pin-off-DiGxUvg0.js +6 -0
- langflow/frontend/assets/pipette-KZIcjurR.js +6 -0
- langflow/frontend/assets/pizza-C5ovkYsw.js +6 -0
- langflow/frontend/assets/plane-gwsbhpCH.js +6 -0
- langflow/frontend/assets/plane-landing-CmNBajV5.js +6 -0
- langflow/frontend/assets/plane-takeoff-BAKmx9xy.js +6 -0
- langflow/frontend/assets/play-BLX7pfhg.js +6 -0
- langflow/frontend/assets/plug-2-DIJRHfBc.js +6 -0
- langflow/frontend/assets/plug-DvGJf4or.js +6 -0
- langflow/frontend/assets/plug-zap-Dby7iXz_.js +6 -0
- langflow/frontend/assets/pocket-CBi6EXJ9.js +6 -0
- langflow/frontend/assets/pocket-knife-DWNeZDKw.js +6 -0
- langflow/frontend/assets/podcast-REvxdRL4.js +6 -0
- langflow/frontend/assets/pointer-Cb95n8P9.js +6 -0
- langflow/frontend/assets/pointer-off-oUPHD8gV.js +6 -0
- langflow/frontend/assets/popcorn-Dc_a5cjE.js +6 -0
- langflow/frontend/assets/popsicle-D9aLKYLe.js +6 -0
- langflow/frontend/assets/pound-sterling-CyOuNQbR.js +6 -0
- langflow/frontend/assets/power-7-2MF3yX.js +6 -0
- langflow/frontend/assets/power-off-9A6f6kBZ.js +6 -0
- langflow/frontend/assets/presentation-CXImVjJ-.js +6 -0
- langflow/frontend/assets/printer-check-B22z9hle.js +6 -0
- langflow/frontend/assets/printer-kYdn5NFX.js +6 -0
- langflow/frontend/assets/projector-Cip5ECQv.js +6 -0
- langflow/frontend/assets/proportions-DQEPBHfD.js +6 -0
- langflow/frontend/assets/puzzle-WV0iKtR6.js +6 -0
- langflow/frontend/assets/pyramid-BFq2uJGo.js +6 -0
- langflow/frontend/assets/qr-code-DlXW931L.js +6 -0
- langflow/frontend/assets/quote-BdZd7eyc.js +6 -0
- langflow/frontend/assets/rabbit-BYqaCmUx.js +6 -0
- langflow/frontend/assets/radar-D5YpnRk7.js +6 -0
- langflow/frontend/assets/radiation-lTLARj--.js +6 -0
- langflow/frontend/assets/radical-B4Ov94pe.js +6 -0
- langflow/frontend/assets/radio-D4-DfE_1.js +6 -0
- langflow/frontend/assets/radio-receiver-CwMRHUBC.js +6 -0
- langflow/frontend/assets/radio-tower-CBT0T3eV.js +6 -0
- langflow/frontend/assets/radius-Bghc24jA.js +6 -0
- langflow/frontend/assets/rail-symbol-DwuSUAy8.js +6 -0
- langflow/frontend/assets/rainbow-Ez9S5P24.js +6 -0
- langflow/frontend/assets/rat-Aqd9wr3L.js +6 -0
- langflow/frontend/assets/ratio-DmoVdMEJ.js +6 -0
- langflow/frontend/assets/receipt-CrRxOoc9.js +6 -0
- langflow/frontend/assets/receipt-cent-BzRdT5iD.js +6 -0
- langflow/frontend/assets/receipt-euro-Cj4w2KwE.js +6 -0
- langflow/frontend/assets/receipt-indian-rupee-6rfN1Cns.js +6 -0
- langflow/frontend/assets/receipt-japanese-yen-DdxDu5AW.js +6 -0
- langflow/frontend/assets/receipt-pound-sterling-c2IWPR24.js +6 -0
- langflow/frontend/assets/receipt-russian-ruble-iseq21zF.js +6 -0
- langflow/frontend/assets/receipt-swiss-franc-DCCm43Nd.js +6 -0
- langflow/frontend/assets/receipt-text-pnC0gKyt.js +6 -0
- langflow/frontend/assets/rectangle-ellipsis-CF73XhsP.js +6 -0
- langflow/frontend/assets/rectangle-goggles-CAShxqJi.js +6 -0
- langflow/frontend/assets/rectangle-horizontal-N2VbSnFI.js +6 -0
- langflow/frontend/assets/rectangle-vertical-CVTdkuTc.js +6 -0
- langflow/frontend/assets/recycle-mxb5g6m_.js +6 -0
- langflow/frontend/assets/redo-2-hr1J81Ig.js +6 -0
- langflow/frontend/assets/redo-Ay9lRnpR.js +6 -0
- langflow/frontend/assets/redo-dot-DaEyWXX5.js +6 -0
- langflow/frontend/assets/refresh-ccw-CdZJX3RU.js +6 -0
- langflow/frontend/assets/refresh-ccw-dot-BwMiuAgO.js +6 -0
- langflow/frontend/assets/refresh-cw-DTYMzKiJ.js +6 -0
- langflow/frontend/assets/refresh-cw-off-ty-uTVvi.js +6 -0
- langflow/frontend/assets/refrigerator-REjxmqJC.js +6 -0
- langflow/frontend/assets/regex-Cg22XfVG.js +6 -0
- langflow/frontend/assets/remove-formatting-DZ3JpmPQ.js +6 -0
- langflow/frontend/assets/repeat-1-DJZ-Jrr5.js +6 -0
- langflow/frontend/assets/repeat-2-CFBAgrr8.js +6 -0
- langflow/frontend/assets/repeat-C7jVkMcY.js +6 -0
- langflow/frontend/assets/replace-BvaqTZNB.js +6 -0
- langflow/frontend/assets/replace-all-FGJUpTnx.js +6 -0
- langflow/frontend/assets/reply-CcLLusZd.js +6 -0
- langflow/frontend/assets/reply-all-CWHfytey.js +6 -0
- langflow/frontend/assets/rewind-D07HB0Gh.js +6 -0
- langflow/frontend/assets/ribbon-DINZnC8A.js +6 -0
- langflow/frontend/assets/rocket-DJn94ITT.js +6 -0
- langflow/frontend/assets/rocking-chair-BIXukant.js +6 -0
- langflow/frontend/assets/roller-coaster-jnXQm5X7.js +6 -0
- langflow/frontend/assets/rotate-3d-OE_Ffhwg.js +6 -0
- langflow/frontend/assets/rotate-ccw-BWm1gOT_.js +6 -0
- langflow/frontend/assets/rotate-ccw-key-DraXNNlO.js +6 -0
- langflow/frontend/assets/rotate-ccw-square-Q4i_j52y.js +6 -0
- langflow/frontend/assets/rotate-cw-DMkokMV_.js +6 -0
- langflow/frontend/assets/rotate-cw-square-DiUhpfPT.js +6 -0
- langflow/frontend/assets/route-ClOv8UAD.js +6 -0
- langflow/frontend/assets/route-off-BnIsbc68.js +6 -0
- langflow/frontend/assets/router-BHv7gFmI.js +6 -0
- langflow/frontend/assets/rows-2-DTZnpgGL.js +6 -0
- langflow/frontend/assets/rows-3-DCEUH2hC.js +6 -0
- langflow/frontend/assets/rows-4-BBiUwu5l.js +6 -0
- langflow/frontend/assets/rss-P-oOpENE.js +6 -0
- langflow/frontend/assets/ruler-DkxXaPK_.js +6 -0
- langflow/frontend/assets/ruler-dimension-line-Cz1V9c03.js +6 -0
- langflow/frontend/assets/russian-ruble-DmW3mLmW.js +6 -0
- langflow/frontend/assets/sailboat-Tetgo4Lb.js +6 -0
- langflow/frontend/assets/salad-DMwMyvB5.js +6 -0
- langflow/frontend/assets/sandwich-Bba6HLT0.js +6 -0
- langflow/frontend/assets/satellite-Ddu5ipJx.js +6 -0
- langflow/frontend/assets/satellite-dish-BMQARc8I.js +6 -0
- langflow/frontend/assets/saudi-riyal-BQQlONU-.js +6 -0
- langflow/frontend/assets/save-CdxxT5KB.js +6 -0
- langflow/frontend/assets/save-all-D8hqBz4i.js +6 -0
- langflow/frontend/assets/save-off-CgSs9rr9.js +6 -0
- langflow/frontend/assets/scale-3d-D7IZLnfN.js +6 -0
- langflow/frontend/assets/scale-93M8x4y6.js +6 -0
- langflow/frontend/assets/scaling-CA8UBaOt.js +6 -0
- langflow/frontend/assets/scan-DNIHgr8K.js +6 -0
- langflow/frontend/assets/scan-barcode-BMmz7dNs.js +6 -0
- langflow/frontend/assets/scan-eye-Beb09hiv.js +6 -0
- langflow/frontend/assets/scan-face-BQplkbWv.js +6 -0
- langflow/frontend/assets/scan-heart-BD_4v2ah.js +6 -0
- langflow/frontend/assets/scan-line-CSPugzgQ.js +6 -0
- langflow/frontend/assets/scan-qr-code-Cxarkxzn.js +6 -0
- langflow/frontend/assets/scan-search-DfgRNeZg.js +6 -0
- langflow/frontend/assets/scan-text---lWlVm4.js +6 -0
- langflow/frontend/assets/school-CV1XycZ3.js +6 -0
- langflow/frontend/assets/scissors-NyUF9OZW.js +6 -0
- langflow/frontend/assets/scissors-line-dashed-J9QGREeb.js +6 -0
- langflow/frontend/assets/screen-share-B42rg9ys.js +6 -0
- langflow/frontend/assets/screen-share-off-CmLTkMUk.js +6 -0
- langflow/frontend/assets/scroll-D1EI8Rz4.js +6 -0
- langflow/frontend/assets/scroll-text-Dx_-xmVI.js +6 -0
- langflow/frontend/assets/search-check-BF2od0KI.js +6 -0
- langflow/frontend/assets/search-code-B26GQWI6.js +6 -0
- langflow/frontend/assets/search-slash-BETXps2t.js +6 -0
- langflow/frontend/assets/search-x-DPb5LlA3.js +6 -0
- langflow/frontend/assets/section-B4Q9DCdm.js +6 -0
- langflow/frontend/assets/send-ZE383SKr.js +6 -0
- langflow/frontend/assets/send-horizontal-D0lDWrSA.js +6 -0
- langflow/frontend/assets/send-to-back-Ca8Vx9zf.js +6 -0
- langflow/frontend/assets/separator-horizontal-CDugpdYB.js +6 -0
- langflow/frontend/assets/separator-vertical-DMgJmJJ6.js +6 -0
- langflow/frontend/assets/server-NwiDY9d-.js +6 -0
- langflow/frontend/assets/server-cog-DdF97wmM.js +6 -0
- langflow/frontend/assets/server-crash-DNd7M6hh.js +6 -0
- langflow/frontend/assets/server-off-YhWx3OCB.js +6 -0
- langflow/frontend/assets/settings-2-DY_KIsk0.js +6 -0
- langflow/frontend/assets/settings-T6CRSr45.js +6 -0
- langflow/frontend/assets/shapes-vJvMiRGi.js +6 -0
- langflow/frontend/assets/share-2-E5VMR1Hg.js +6 -0
- langflow/frontend/assets/share-DC9RnFbY.js +6 -0
- langflow/frontend/assets/sheet-Ruqk26Oc.js +6 -0
- langflow/frontend/assets/shell-rFGa8qRZ.js +6 -0
- langflow/frontend/assets/shield-B0M1G5xB.js +6 -0
- langflow/frontend/assets/shield-alert-7i642MLN.js +6 -0
- langflow/frontend/assets/shield-ban-BdfO4IFn.js +6 -0
- langflow/frontend/assets/shield-check-DfgimtKv.js +6 -0
- langflow/frontend/assets/shield-ellipsis-DlI2NVRM.js +6 -0
- langflow/frontend/assets/shield-half-BBafVyZq.js +6 -0
- langflow/frontend/assets/shield-minus-BtBybI3y.js +6 -0
- langflow/frontend/assets/shield-off-BYAEKjAr.js +6 -0
- langflow/frontend/assets/shield-plus-Cljw3ov4.js +6 -0
- langflow/frontend/assets/shield-question-Dalxl2-B.js +6 -0
- langflow/frontend/assets/shield-user-D4X9Un7l.js +6 -0
- langflow/frontend/assets/shield-x-BUeUx9EQ.js +6 -0
- langflow/frontend/assets/ship-DTfs26OC.js +6 -0
- langflow/frontend/assets/ship-wheel-DVz0eFlR.js +6 -0
- langflow/frontend/assets/shirt-BnKjDvos.js +6 -0
- langflow/frontend/assets/shopping-bag-Dfkia7L0.js +6 -0
- langflow/frontend/assets/shopping-basket-SUNesxhk.js +6 -0
- langflow/frontend/assets/shopping-cart-BH9sfqQX.js +6 -0
- langflow/frontend/assets/shovel-Bxs0Qjmh.js +6 -0
- langflow/frontend/assets/shower-head-CADjDTiK.js +6 -0
- langflow/frontend/assets/shredder-Cu7Xn00A.js +6 -0
- langflow/frontend/assets/shrimp-C3jKiKrk.js +6 -0
- langflow/frontend/assets/shrink-Cclu_dw0.js +6 -0
- langflow/frontend/assets/shrub-BL5dBzfp.js +6 -0
- langflow/frontend/assets/shuffle-C_WrduYd.js +6 -0
- langflow/frontend/assets/sigma-CJnd9jNa.js +6 -0
- langflow/frontend/assets/signal-Dcm6sbyu.js +6 -0
- langflow/frontend/assets/signal-high-DfHqHBGU.js +6 -0
- langflow/frontend/assets/signal-low-DkvkPeXD.js +6 -0
- langflow/frontend/assets/signal-medium-Z8D3qUli.js +6 -0
- langflow/frontend/assets/signal-zero-DMMOUSJN.js +6 -0
- langflow/frontend/assets/signature-BuNASrxq.js +6 -0
- langflow/frontend/assets/signpost-DZ45H1O1.js +6 -0
- langflow/frontend/assets/signpost-big-DPz14W8U.js +6 -0
- langflow/frontend/assets/siren-DB3WrVSP.js +6 -0
- langflow/frontend/assets/skip-back-DjUV73s2.js +6 -0
- langflow/frontend/assets/skip-forward-CmD_sUWm.js +6 -0
- langflow/frontend/assets/skull-BFSFzqlJ.js +6 -0
- langflow/frontend/assets/slack-a0qHkocc.js +6 -0
- langflow/frontend/assets/slash-BTqLWpKj.js +6 -0
- langflow/frontend/assets/slice-DtaQu0Yo.js +6 -0
- langflow/frontend/assets/sliders-horizontal-Cb6o0sGH.js +6 -0
- langflow/frontend/assets/sliders-vertical-CQiKA-33.js +6 -0
- langflow/frontend/assets/smartphone-charging-CGHpA7Gv.js +6 -0
- langflow/frontend/assets/smartphone-nfc-DpmH6c7h.js +6 -0
- langflow/frontend/assets/smartphone-vbMnkDNF.js +6 -0
- langflow/frontend/assets/smile-FPhOdGXi.js +6 -0
- langflow/frontend/assets/smile-plus-BLvbs7Wn.js +6 -0
- langflow/frontend/assets/snail-N5ea-xbv.js +6 -0
- langflow/frontend/assets/snowflake-B2IUrE0d.js +6 -0
- langflow/frontend/assets/sofa-GDryelNA.js +6 -0
- langflow/frontend/assets/soup-DW9OBMi1.js +6 -0
- langflow/frontend/assets/space-Lgs4HSmS.js +6 -0
- langflow/frontend/assets/spade-Dz9fYCdz.js +6 -0
- langflow/frontend/assets/sparkle-BXX-A6Ie.js +6 -0
- langflow/frontend/assets/sparkles-DseoCWZ7.js +6 -0
- langflow/frontend/assets/speaker-B-4Rhc6r.js +6 -0
- langflow/frontend/assets/speech-vGyEnTQZ.js +6 -0
- langflow/frontend/assets/spell-check-2-BcJkVZtT.js +6 -0
- langflow/frontend/assets/spell-check-DAFBDc9n.js +6 -0
- langflow/frontend/assets/spline-BHwR5076.js +6 -0
- langflow/frontend/assets/spline-pointer-DXr7gccJ.js +6 -0
- langflow/frontend/assets/split-DlhPVsS1.js +6 -0
- langflow/frontend/assets/spray-can-Ba6HqBzy.js +6 -0
- langflow/frontend/assets/sprout-LkXWX66w.js +6 -0
- langflow/frontend/assets/square-D2C9EdwK.js +6 -0
- langflow/frontend/assets/square-activity-DSalkO78.js +6 -0
- langflow/frontend/assets/square-arrow-down-Vr9KV4e0.js +6 -0
- langflow/frontend/assets/square-arrow-down-left-DIKkCn9X.js +6 -0
- langflow/frontend/assets/square-arrow-down-right-CQmsD6Ru.js +6 -0
- langflow/frontend/assets/square-arrow-left-YykOBzPM.js +6 -0
- langflow/frontend/assets/square-arrow-out-down-left-qCxMUFxq.js +6 -0
- langflow/frontend/assets/square-arrow-out-down-right-B76Xndzc.js +6 -0
- langflow/frontend/assets/square-arrow-out-up-left-BGzA2Zut.js +6 -0
- langflow/frontend/assets/square-arrow-out-up-right-DKjQdxIe.js +6 -0
- langflow/frontend/assets/square-arrow-right-CyyxLw_B.js +6 -0
- langflow/frontend/assets/square-arrow-up-9z96Lbfu.js +6 -0
- langflow/frontend/assets/square-arrow-up-left-CmYwn9TO.js +6 -0
- langflow/frontend/assets/square-arrow-up-right-CTUXxklq.js +6 -0
- langflow/frontend/assets/square-asterisk-D3-w77Cq.js +6 -0
- langflow/frontend/assets/square-bottom-dashed-scissors-C05k0PnK.js +6 -0
- langflow/frontend/assets/square-chart-gantt-C0WUKYq1.js +6 -0
- langflow/frontend/assets/square-check-DWIo-rkj.js +6 -0
- langflow/frontend/assets/square-check-big-CioQ9mBa.js +6 -0
- langflow/frontend/assets/square-chevron-down-BMwUjPc-.js +6 -0
- langflow/frontend/assets/square-chevron-left-CV4PVhGg.js +6 -0
- langflow/frontend/assets/square-chevron-right-CcElTxoP.js +6 -0
- langflow/frontend/assets/square-chevron-up-6SRxVe27.js +6 -0
- langflow/frontend/assets/square-code-Dxb-TMRS.js +6 -0
- langflow/frontend/assets/square-dashed-EeG4YZEK.js +6 -0
- langflow/frontend/assets/square-dashed-bottom-ClygsM7v.js +6 -0
- langflow/frontend/assets/square-dashed-bottom-code-CAOzImD1.js +6 -0
- langflow/frontend/assets/square-dashed-kanban-CE_7x2N2.js +6 -0
- langflow/frontend/assets/square-dashed-mouse-pointer-kD-CXdJV.js +6 -0
- langflow/frontend/assets/square-divide-Wcsw80g6.js +6 -0
- langflow/frontend/assets/square-dot-Do97Knxf.js +6 -0
- langflow/frontend/assets/square-equal-zQafNVoS.js +6 -0
- langflow/frontend/assets/square-function-D-6HIJRC.js +6 -0
- langflow/frontend/assets/square-kanban-BdYVtNEl.js +6 -0
- langflow/frontend/assets/square-library-BwV-ZYF-.js +6 -0
- langflow/frontend/assets/square-m-C31tRU7Q.js +6 -0
- langflow/frontend/assets/square-menu-ByLhwz06.js +6 -0
- langflow/frontend/assets/square-minus-pkut0v0I.js +6 -0
- langflow/frontend/assets/square-mouse-pointer-B5tVHvzR.js +6 -0
- langflow/frontend/assets/square-parking-C4WAAtn0.js +6 -0
- langflow/frontend/assets/square-parking-off-BLLny9Y8.js +6 -0
- langflow/frontend/assets/square-pen-rgiAP6Nm.js +6 -0
- langflow/frontend/assets/square-percent-BMcuqyrL.js +6 -0
- langflow/frontend/assets/square-pi-CFhLD_bP.js +6 -0
- langflow/frontend/assets/square-pilcrow-CoJO-JAr.js +6 -0
- langflow/frontend/assets/square-play-9l1wTOU7.js +6 -0
- langflow/frontend/assets/square-plus-DxOhcRAK.js +6 -0
- langflow/frontend/assets/square-power-DnvBz_TG.js +6 -0
- langflow/frontend/assets/square-radical-i6SMras_.js +6 -0
- langflow/frontend/assets/square-round-corner-Cb01vLpU.js +6 -0
- langflow/frontend/assets/square-scissors-WEQ9paYy.js +6 -0
- langflow/frontend/assets/square-sigma-BptuOfPm.js +6 -0
- langflow/frontend/assets/square-slash-IltY0vnS.js +6 -0
- langflow/frontend/assets/square-split-horizontal-BrYZ_oXa.js +6 -0
- langflow/frontend/assets/square-split-vertical-DyDKX7Jn.js +6 -0
- langflow/frontend/assets/square-square-DDDFXroa.js +6 -0
- langflow/frontend/assets/square-stack-BmRTUF55.js +6 -0
- langflow/frontend/assets/square-terminal-CsakaMH-.js +6 -0
- langflow/frontend/assets/square-user-B6N8QZMc.js +6 -0
- langflow/frontend/assets/square-user-round-D5ysg8tr.js +6 -0
- langflow/frontend/assets/square-x-Cv84TzQW.js +6 -0
- langflow/frontend/assets/squares-exclude-Dp8LEVCx.js +6 -0
- langflow/frontend/assets/squares-intersect-jgYcuegN.js +6 -0
- langflow/frontend/assets/squares-subtract-BPS0VqTr.js +6 -0
- langflow/frontend/assets/squares-unite-Xr7e6dw5.js +6 -0
- langflow/frontend/assets/squircle-CnQgALl2.js +6 -0
- langflow/frontend/assets/squirrel-BXh__7Tp.js +6 -0
- langflow/frontend/assets/stamp-DEljq4EG.js +6 -0
- langflow/frontend/assets/star-BDdTgqkA.js +6 -0
- langflow/frontend/assets/star-half-CkpChSgZ.js +6 -0
- langflow/frontend/assets/star-off-C8tXhBzU.js +6 -0
- langflow/frontend/assets/step-back-CeUcLpYP.js +6 -0
- langflow/frontend/assets/step-forward-YZYgie-H.js +6 -0
- langflow/frontend/assets/stethoscope-B1HKkNjb.js +6 -0
- langflow/frontend/assets/sticker-s76hzsbw.js +6 -0
- langflow/frontend/assets/sticky-note-d3wKhnVZ.js +6 -0
- langflow/frontend/assets/store-CgkhfYr8.js +6 -0
- langflow/frontend/assets/stretch-horizontal-CgRs532f.js +6 -0
- langflow/frontend/assets/stretch-vertical-Cbbad0DE.js +6 -0
- langflow/frontend/assets/strikethrough-CLu5NrUJ.js +6 -0
- langflow/frontend/assets/subscript-iNLzbpNF.js +6 -0
- langflow/frontend/assets/sun-DdND6npr.js +6 -0
- langflow/frontend/assets/sun-dim-Cp5QYpLO.js +6 -0
- langflow/frontend/assets/sun-medium-0hYIdM7r.js +6 -0
- langflow/frontend/assets/sun-moon-dCZP-wBl.js +6 -0
- langflow/frontend/assets/sun-snow-CMkrYaZU.js +6 -0
- langflow/frontend/assets/sunrise-B_4rb5Yc.js +6 -0
- langflow/frontend/assets/sunset-CdHtBu9f.js +6 -0
- langflow/frontend/assets/superscript-D-43mfqg.js +6 -0
- langflow/frontend/assets/swatch-book-CWvY6Gge.js +6 -0
- langflow/frontend/assets/swiss-franc-CQUQOqfw.js +6 -0
- langflow/frontend/assets/switch-camera-D8HVtE35.js +6 -0
- langflow/frontend/assets/sword-ZhnbrO02.js +6 -0
- langflow/frontend/assets/swords-1419KKmU.js +6 -0
- langflow/frontend/assets/syringe-C-ur-zxc.js +6 -0
- langflow/frontend/assets/table-2-DqDVsfw0.js +6 -0
- langflow/frontend/assets/table-BR7M9T2m.js +6 -0
- langflow/frontend/assets/table-cells-merge-LP_BdXHn.js +6 -0
- langflow/frontend/assets/table-cells-split-DDEZjNxQ.js +6 -0
- langflow/frontend/assets/table-columns-split-CZFb_e6a.js +6 -0
- langflow/frontend/assets/table-of-contents-YKQOIBeh.js +6 -0
- langflow/frontend/assets/table-properties-07iCbzoF.js +6 -0
- langflow/frontend/assets/table-rows-split-BvGY1KFG.js +6 -0
- langflow/frontend/assets/tablet-B1dvFkME.js +6 -0
- langflow/frontend/assets/tablet-smartphone-C9zhR9id.js +6 -0
- langflow/frontend/assets/tablets-BV0NxbWo.js +6 -0
- langflow/frontend/assets/tag-K-O6lnTy.js +6 -0
- langflow/frontend/assets/tags-ByeAXu2U.js +6 -0
- langflow/frontend/assets/tally-1-CROxhWtK.js +6 -0
- langflow/frontend/assets/tally-2-BsgGv4NP.js +6 -0
- langflow/frontend/assets/tally-3-ByWskaRS.js +6 -0
- langflow/frontend/assets/tally-4-BNd2X26I.js +6 -0
- langflow/frontend/assets/tally-5-Db_7pJVF.js +6 -0
- langflow/frontend/assets/tangent-DE9c5ssL.js +6 -0
- langflow/frontend/assets/target-B4BR4LnK.js +6 -0
- langflow/frontend/assets/telescope-COaR5mQI.js +6 -0
- langflow/frontend/assets/tent-Rbm180IQ.js +6 -0
- langflow/frontend/assets/tent-tree-BKb-kXr8.js +6 -0
- langflow/frontend/assets/terminal-tEjz8sWY.js +6 -0
- langflow/frontend/assets/test-tube-DZ4xTCVw.js +6 -0
- langflow/frontend/assets/test-tube-diagonal-B2qLgIo7.js +6 -0
- langflow/frontend/assets/test-tubes-mReW2TR5.js +6 -0
- langflow/frontend/assets/text-CMv6Ef3g.js +6 -0
- langflow/frontend/assets/text-cursor-CvvULVqP.js +6 -0
- langflow/frontend/assets/text-cursor-input-DrTxBv-T.js +6 -0
- langflow/frontend/assets/text-quote-CFgdWDkk.js +6 -0
- langflow/frontend/assets/text-search-D1eRjWbA.js +6 -0
- langflow/frontend/assets/text-select-CXDcKbEm.js +6 -0
- langflow/frontend/assets/theater-DgHnzf31.js +6 -0
- langflow/frontend/assets/thermometer-T9ytEgwA.js +6 -0
- langflow/frontend/assets/thermometer-snowflake-DMDHpy2y.js +6 -0
- langflow/frontend/assets/thermometer-sun-CX5XTyHW.js +6 -0
- langflow/frontend/assets/thumbs-down-Pt3RAIOb.js +6 -0
- langflow/frontend/assets/thumbs-up-C914Y43F.js +6 -0
- langflow/frontend/assets/ticket-COv_WbDG.js +6 -0
- langflow/frontend/assets/ticket-check-D3svOi3W.js +6 -0
- langflow/frontend/assets/ticket-minus-DjdC_Cll.js +6 -0
- langflow/frontend/assets/ticket-percent-DnirgzY8.js +6 -0
- langflow/frontend/assets/ticket-plus-BNktrtF7.js +6 -0
- langflow/frontend/assets/ticket-slash-CeGoC2KZ.js +6 -0
- langflow/frontend/assets/ticket-x-BuNvjw4X.js +6 -0
- langflow/frontend/assets/tickets-CYmPlQI9.js +6 -0
- langflow/frontend/assets/tickets-plane-CAWIkLW_.js +6 -0
- langflow/frontend/assets/timer-BwrzCE-V.js +6 -0
- langflow/frontend/assets/timer-off-T8DLAP8U.js +6 -0
- langflow/frontend/assets/timer-reset-DOhC4myx.js +6 -0
- langflow/frontend/assets/toggle-left-BhOOqX0X.js +6 -0
- langflow/frontend/assets/toggle-right-D5ZrH_0F.js +6 -0
- langflow/frontend/assets/toilet-SiYTUeEv.js +6 -0
- langflow/frontend/assets/tornado-DxgHb0Ve.js +6 -0
- langflow/frontend/assets/torus-BwTWyr_F.js +6 -0
- langflow/frontend/assets/touchpad-BVOsSOil.js +6 -0
- langflow/frontend/assets/touchpad-off-DeZcOnny.js +6 -0
- langflow/frontend/assets/tower-control-5bMwbXDP.js +6 -0
- langflow/frontend/assets/toy-brick-Kd7RLgVo.js +6 -0
- langflow/frontend/assets/tractor-DooKePRM.js +6 -0
- langflow/frontend/assets/traffic-cone-aU9C6EVe.js +6 -0
- langflow/frontend/assets/train-front-B9zYcrr0.js +6 -0
- langflow/frontend/assets/train-front-tunnel-CGgQ0665.js +6 -0
- langflow/frontend/assets/train-track-CNSTSElM.js +6 -0
- langflow/frontend/assets/tram-front-Bh3c0VTb.js +6 -0
- langflow/frontend/assets/transgender-Yb9Aw3eq.js +6 -0
- langflow/frontend/assets/trash-D8bX1W_s.js +6 -0
- langflow/frontend/assets/tree-deciduous-DfnqNuRS.js +6 -0
- langflow/frontend/assets/tree-palm-DJXocuTV.js +6 -0
- langflow/frontend/assets/tree-pine-BP3dMe04.js +6 -0
- langflow/frontend/assets/trees-D6yP_WCR.js +6 -0
- langflow/frontend/assets/trello-DGqo8szF.js +6 -0
- langflow/frontend/assets/trending-down-BR09CtIE.js +6 -0
- langflow/frontend/assets/trending-up-CirFPPVF.js +6 -0
- langflow/frontend/assets/trending-up-down-BTY_q6JA.js +6 -0
- langflow/frontend/assets/triangle-B-H_4YEk.js +6 -0
- langflow/frontend/assets/triangle-alert-DXeGuITo.js +6 -0
- langflow/frontend/assets/triangle-dashed-Dn7NnKw5.js +6 -0
- langflow/frontend/assets/triangle-right-zG_BZzF1.js +6 -0
- langflow/frontend/assets/trophy-DueWLGox.js +6 -0
- langflow/frontend/assets/truck-BhAvmcrD.js +6 -0
- langflow/frontend/assets/truck-electric-CpHu1jkP.js +6 -0
- langflow/frontend/assets/turtle-DmRYvXYC.js +6 -0
- langflow/frontend/assets/tv-DPms7spx.js +6 -0
- langflow/frontend/assets/tv-minimal-D2oB1Crj.js +6 -0
- langflow/frontend/assets/tv-minimal-play-5WSDRFTW.js +6 -0
- langflow/frontend/assets/twitch-CTyYsltR.js +6 -0
- langflow/frontend/assets/twitter-Uejh7W2i.js +6 -0
- langflow/frontend/assets/type-DCWbYKxb.js +6 -0
- langflow/frontend/assets/type-outline-DwmlKH7Q.js +6 -0
- langflow/frontend/assets/umbrella-DzoOhtjc.js +6 -0
- langflow/frontend/assets/umbrella-off-BnGloLbA.js +6 -0
- langflow/frontend/assets/underline-D6VqNULT.js +6 -0
- langflow/frontend/assets/undo-2-TM0n_RG8.js +6 -0
- langflow/frontend/assets/undo-DrNsQ0jO.js +6 -0
- langflow/frontend/assets/undo-dot-CQVBPt4f.js +6 -0
- langflow/frontend/assets/unfold-horizontal-CzsehnZk.js +6 -0
- langflow/frontend/assets/unfold-vertical-DNVYXN_y.js +6 -0
- langflow/frontend/assets/ungroup-BM2bWp8p.js +6 -0
- langflow/frontend/assets/university-DB28dVFt.js +6 -0
- langflow/frontend/assets/unlink-2-WpXjYohB.js +6 -0
- langflow/frontend/assets/unlink-BLFGfEEc.js +6 -0
- langflow/frontend/assets/unplug-_UmFvYbg.js +6 -0
- langflow/frontend/assets/upload-8boS95gI.js +6 -0
- langflow/frontend/assets/usb-BMx0J0Sy.js +6 -0
- langflow/frontend/assets/use-post-add-user-b13pIDQz.js +1 -0
- langflow/frontend/assets/user-Kd6NpdHy.js +6 -0
- langflow/frontend/assets/user-check-FzX3eqRX.js +6 -0
- langflow/frontend/assets/user-cog-D6mCcJMc.js +6 -0
- langflow/frontend/assets/user-lock-BH_MoGYH.js +6 -0
- langflow/frontend/assets/user-minus-Bff-DMlG.js +6 -0
- langflow/frontend/assets/user-pen-eD_3V4js.js +6 -0
- langflow/frontend/assets/user-plus-BN6TLHAo.js +6 -0
- langflow/frontend/assets/user-round-a2K1pyMI.js +6 -0
- langflow/frontend/assets/user-round-check-BAIHcpBc.js +6 -0
- langflow/frontend/assets/user-round-cog-BCBk6ZVt.js +6 -0
- langflow/frontend/assets/user-round-minus-CHL_i3b9.js +6 -0
- langflow/frontend/assets/user-round-pen-TnLmmKC3.js +6 -0
- langflow/frontend/assets/user-round-plus-Qrfk8bFQ.js +6 -0
- langflow/frontend/assets/user-round-search-Cn3fCMkz.js +6 -0
- langflow/frontend/assets/user-round-x-345XjYXs.js +6 -0
- langflow/frontend/assets/user-search-CBLnlbDn.js +6 -0
- langflow/frontend/assets/user-x-ik_MyYRD.js +6 -0
- langflow/frontend/assets/users-Df0o_CuB.js +6 -0
- langflow/frontend/assets/users-round-BKnPg4da.js +6 -0
- langflow/frontend/assets/utensils-cq-tMQLW.js +6 -0
- langflow/frontend/assets/utensils-crossed-DWzuDxTn.js +6 -0
- langflow/frontend/assets/utility-pole-qRfA8wtY.js +6 -0
- langflow/frontend/assets/variable-B45R7IJK.js +6 -0
- langflow/frontend/assets/vault-SaNUMa_B.js +6 -0
- langflow/frontend/assets/vegan-C2JI0djZ.js +6 -0
- langflow/frontend/assets/venetian-mask-l_dC3fdd.js +6 -0
- langflow/frontend/assets/venus-DNdaOye-.js +6 -0
- langflow/frontend/assets/venus-and-mars-DMUL6DMg.js +6 -0
- langflow/frontend/assets/vibrate-C9HxrpTc.js +6 -0
- langflow/frontend/assets/vibrate-off-w-61vbky.js +6 -0
- langflow/frontend/assets/video-87Z3Lbge.js +6 -0
- langflow/frontend/assets/video-off-BOIzvqoS.js +6 -0
- langflow/frontend/assets/videotape-DwCI9sEE.js +6 -0
- langflow/frontend/assets/view-z8q6zdGE.js +6 -0
- langflow/frontend/assets/voicemail-VlgAyZ7U.js +6 -0
- langflow/frontend/assets/volleyball-CF870KHa.js +6 -0
- langflow/frontend/assets/volume-1-CNxob_Nl.js +6 -0
- langflow/frontend/assets/volume-2-DQomH6nX.js +6 -0
- langflow/frontend/assets/volume-BoHZDoyz.js +6 -0
- langflow/frontend/assets/volume-off-D5MM66Sc.js +6 -0
- langflow/frontend/assets/volume-x-BqytCptf.js +6 -0
- langflow/frontend/assets/vote-Dv_EZ8YN.js +6 -0
- langflow/frontend/assets/wallet-DiTqyz__.js +6 -0
- langflow/frontend/assets/wallet-cards-B6eU3---.js +6 -0
- langflow/frontend/assets/wallet-minimal-BZ4XgiJA.js +6 -0
- langflow/frontend/assets/wallpaper-CoIeU4pe.js +6 -0
- langflow/frontend/assets/wand-Chf-H806.js +6 -0
- langflow/frontend/assets/wand-sparkles--NVEsZKT.js +6 -0
- langflow/frontend/assets/warehouse-CQ7L8eBz.js +6 -0
- langflow/frontend/assets/washing-machine-WMapWZY7.js +6 -0
- langflow/frontend/assets/watch-DwmxDPvs.js +6 -0
- langflow/frontend/assets/waves-bvbK_c78.js +6 -0
- langflow/frontend/assets/waves-ladder-Bv98yPlz.js +6 -0
- langflow/frontend/assets/waypoints-PsEPIFFL.js +6 -0
- langflow/frontend/assets/webcam-02bsO3AI.js +6 -0
- langflow/frontend/assets/webhook-Dx_085r3.js +6 -0
- langflow/frontend/assets/webhook-off-TY8hluXX.js +6 -0
- langflow/frontend/assets/weight-BfWkUxko.js +6 -0
- langflow/frontend/assets/wheat-Cwsqt3C_.js +6 -0
- langflow/frontend/assets/wheat-off-1iG0pZ4K.js +6 -0
- langflow/frontend/assets/whole-word-4BN517Fj.js +6 -0
- langflow/frontend/assets/wifi-BpnpJKhW.js +6 -0
- langflow/frontend/assets/wifi-high-CBK4pbuW.js +6 -0
- langflow/frontend/assets/wifi-low-D0DpTmqi.js +6 -0
- langflow/frontend/assets/wifi-off-BzrDb98-.js +6 -0
- langflow/frontend/assets/wifi-pen-C5DgAR9i.js +6 -0
- langflow/frontend/assets/wifi-zero-DEHB1VJ-.js +6 -0
- langflow/frontend/assets/wind-BxI8NUUR.js +6 -0
- langflow/frontend/assets/wind-arrow-down-BjRs1yLb.js +6 -0
- langflow/frontend/assets/wine-BqMCCO2_.js +6 -0
- langflow/frontend/assets/wine-off-Df34oC2c.js +6 -0
- langflow/frontend/assets/workflow-BvNCAg6i.js +6 -0
- langflow/frontend/assets/worm-BIo_UYvJ.js +6 -0
- langflow/frontend/assets/wrap-text-D3TsRBDd.js +6 -0
- langflow/frontend/assets/wrench-BFkT40qn.js +6 -0
- langflow/frontend/assets/youtube-ChyocX_5.js +6 -0
- langflow/frontend/assets/zap-DUIubQvb.js +6 -0
- langflow/frontend/assets/zap-off-CPra9mqz.js +6 -0
- langflow/frontend/assets/zoom-in-DzwDGluP.js +6 -0
- langflow/frontend/assets/zoom-out-C1sJbBAI.js +6 -0
- langflow/frontend/index.html +1 -1
- langflow/initial_setup/starter_projects/Basic Prompting.json +1 -1
- langflow/initial_setup/starter_projects/Blog Writer.json +1 -1
- langflow/initial_setup/starter_projects/Custom Component Generator.json +1 -1
- langflow/initial_setup/starter_projects/Document Q&A.json +69 -232
- langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +1 -1
- langflow/initial_setup/starter_projects/Instagram Copywriter.json +2 -2
- langflow/initial_setup/starter_projects/Meeting Summary.json +2 -2
- langflow/initial_setup/starter_projects/Memory Chatbot.json +1 -1
- langflow/initial_setup/starter_projects/Nvidia Remix.json +2 -2
- langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +1126 -1407
- langflow/initial_setup/starter_projects/Research Agent.json +2 -2
- langflow/initial_setup/starter_projects/Research Translation Loop.json +1 -1
- langflow/initial_setup/starter_projects/SEO Keyword Generator.json +1 -1
- langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +140 -550
- langflow/initial_setup/starter_projects/Twitter Thread Generator.json +1 -1
- langflow/initial_setup/starter_projects/Vector Store RAG.json +1395 -1570
- langflow_base_nightly-1.7.1.dev2.dist-info/METADATA +99 -0
- langflow_base_nightly-1.7.1.dev2.dist-info/RECORD +2283 -0
- langflow/frontend/assets/SlackIcon-DlvHzgKf.js +0 -1
- langflow/frontend/assets/Wikipedia-CYCV3OwN.js +0 -1
- langflow/frontend/assets/Wolfram-fMi_u0PK.js +0 -1
- langflow/frontend/assets/a-arrow-down-C-cKYF2u.js +0 -6
- langflow/frontend/assets/a-arrow-up-CjwOuxws.js +0 -6
- langflow/frontend/assets/a-large-small-BDIumVKt.js +0 -6
- langflow/frontend/assets/accessibility-VxSbFy72.js +0 -6
- langflow/frontend/assets/activity-DBQy7ieS.js +0 -6
- langflow/frontend/assets/air-vent-Cs9_6_fM.js +0 -6
- langflow/frontend/assets/airplay-BZzTsovO.js +0 -6
- langflow/frontend/assets/alarm-clock-DnuUE4q6.js +0 -6
- langflow/frontend/assets/alarm-clock-check-D9vPjx5g.js +0 -6
- langflow/frontend/assets/alarm-clock-minus-xvXgVo6N.js +0 -6
- langflow/frontend/assets/alarm-clock-off-urGc_tcx.js +0 -6
- langflow/frontend/assets/alarm-clock-plus-C0PRaTdf.js +0 -6
- langflow/frontend/assets/alarm-smoke-B7mkLxOd.js +0 -6
- langflow/frontend/assets/album-BxAwduhM.js +0 -6
- langflow/frontend/assets/align-center-Crw-ls4R.js +0 -6
- langflow/frontend/assets/align-center-horizontal-DXvNpJPJ.js +0 -6
- langflow/frontend/assets/align-center-vertical-DGzyvvpM.js +0 -6
- langflow/frontend/assets/align-end-horizontal-DpO7sNv7.js +0 -6
- langflow/frontend/assets/align-end-vertical-G0aeph-u.js +0 -6
- langflow/frontend/assets/align-horizontal-distribute-center-BSl3E5Nv.js +0 -6
- langflow/frontend/assets/align-horizontal-distribute-end-DuDXse3X.js +0 -6
- langflow/frontend/assets/align-horizontal-distribute-start-B8UftvCS.js +0 -6
- langflow/frontend/assets/align-horizontal-justify-center-DsXH3H42.js +0 -6
- langflow/frontend/assets/align-horizontal-justify-end-BPAbO3qj.js +0 -6
- langflow/frontend/assets/align-horizontal-justify-start-B-Qty91v.js +0 -6
- langflow/frontend/assets/align-horizontal-space-around-Du3vqrf0.js +0 -6
- langflow/frontend/assets/align-horizontal-space-between-DoZ3Zop3.js +0 -6
- langflow/frontend/assets/align-justify-BbXRzIze.js +0 -6
- langflow/frontend/assets/align-left-BSz--dCv.js +0 -6
- langflow/frontend/assets/align-right-Bt8cnyTd.js +0 -6
- langflow/frontend/assets/align-start-horizontal-DWOH9BZU.js +0 -6
- langflow/frontend/assets/align-start-vertical-D7XdSqFQ.js +0 -6
- langflow/frontend/assets/align-vertical-distribute-center-DLLTYLZF.js +0 -6
- langflow/frontend/assets/align-vertical-distribute-end-DzcBOjpB.js +0 -6
- langflow/frontend/assets/align-vertical-distribute-start-i2a7YBO2.js +0 -6
- langflow/frontend/assets/align-vertical-justify-center-CnYrDOH_.js +0 -6
- langflow/frontend/assets/align-vertical-justify-end-CdegC7Kz.js +0 -6
- langflow/frontend/assets/align-vertical-justify-start-U0OVlrHk.js +0 -6
- langflow/frontend/assets/align-vertical-space-around-CvEYXneb.js +0 -6
- langflow/frontend/assets/align-vertical-space-between-B1HyKGZk.js +0 -6
- langflow/frontend/assets/ambulance-DuquWylK.js +0 -6
- langflow/frontend/assets/ampersand-R7rN7SvC.js +0 -6
- langflow/frontend/assets/ampersands-DutqkC5g.js +0 -6
- langflow/frontend/assets/amphora-B9bwdfXP.js +0 -6
- langflow/frontend/assets/anchor-CFpd29Js.js +0 -6
- langflow/frontend/assets/angry-DX0PxOP2.js +0 -6
- langflow/frontend/assets/annoyed-DFX17Hcx.js +0 -6
- langflow/frontend/assets/antenna-DiDXzp22.js +0 -6
- langflow/frontend/assets/anvil-BQjvi-3Z.js +0 -6
- langflow/frontend/assets/aperture-CNhAABAW.js +0 -6
- langflow/frontend/assets/app-window-DefwAbL-.js +0 -6
- langflow/frontend/assets/app-window-mac-B4t54BVR.js +0 -6
- langflow/frontend/assets/apple-C5qyCn8r.js +0 -6
- langflow/frontend/assets/archive-DWf2FQEN.js +0 -6
- langflow/frontend/assets/archive-restore-DtUVGrj7.js +0 -6
- langflow/frontend/assets/archive-x-Bl8w7YVq.js +0 -6
- langflow/frontend/assets/armchair-2VmOH0Wx.js +0 -6
- langflow/frontend/assets/arrow-big-down-Dxqlc6ty.js +0 -6
- langflow/frontend/assets/arrow-big-down-dash-PzaImcJy.js +0 -6
- langflow/frontend/assets/arrow-big-left-C0Uauzog.js +0 -6
- langflow/frontend/assets/arrow-big-left-dash-CQIDKTrp.js +0 -6
- langflow/frontend/assets/arrow-big-right-BJ1xS76I.js +0 -6
- langflow/frontend/assets/arrow-big-right-dash-BuOgK9Tc.js +0 -6
- langflow/frontend/assets/arrow-big-up-DZbIG1H4.js +0 -6
- langflow/frontend/assets/arrow-big-up-dash-4sLnAgWE.js +0 -6
- langflow/frontend/assets/arrow-down-0-1-Dh8THg85.js +0 -6
- langflow/frontend/assets/arrow-down-1-0-DRV58dNG.js +0 -6
- langflow/frontend/assets/arrow-down-RD7ST_Nj.js +0 -6
- langflow/frontend/assets/arrow-down-a-z-C-wYDNF1.js +0 -6
- langflow/frontend/assets/arrow-down-from-line-BucYmlvv.js +0 -6
- langflow/frontend/assets/arrow-down-left-Bh8RGAOn.js +0 -6
- langflow/frontend/assets/arrow-down-narrow-wide-Ci_P181I.js +0 -6
- langflow/frontend/assets/arrow-down-right-DGrqds5u.js +0 -6
- langflow/frontend/assets/arrow-down-to-dot-DUIKSyS9.js +0 -6
- langflow/frontend/assets/arrow-down-to-line-QdGRHCqF.js +0 -6
- langflow/frontend/assets/arrow-down-up-BjZ1jBtf.js +0 -6
- langflow/frontend/assets/arrow-down-wide-narrow-CEThH-ay.js +0 -6
- langflow/frontend/assets/arrow-down-z-a-5r6_408o.js +0 -6
- langflow/frontend/assets/arrow-left-D177jAk0.js +0 -6
- langflow/frontend/assets/arrow-left-from-line-CLuPv4Wq.js +0 -6
- langflow/frontend/assets/arrow-left-right-B0INawSB.js +0 -6
- langflow/frontend/assets/arrow-left-to-line-Dc_ro8bi.js +0 -6
- langflow/frontend/assets/arrow-right-BqNyjCWp.js +0 -6
- langflow/frontend/assets/arrow-right-from-line-KnCuBR8_.js +0 -6
- langflow/frontend/assets/arrow-right-left-C1o6GXbI.js +0 -6
- langflow/frontend/assets/arrow-right-to-line-DsIaCn5Q.js +0 -6
- langflow/frontend/assets/arrow-up-0-1-ByOT4vth.js +0 -6
- langflow/frontend/assets/arrow-up-1-0-ChLvN8H3.js +0 -6
- langflow/frontend/assets/arrow-up-KyW95RNF.js +0 -6
- langflow/frontend/assets/arrow-up-a-z-DnjngiQw.js +0 -6
- langflow/frontend/assets/arrow-up-down-BItspH3q.js +0 -6
- langflow/frontend/assets/arrow-up-from-dot-De5jcxsZ.js +0 -6
- langflow/frontend/assets/arrow-up-from-line-CRDq0-f0.js +0 -6
- langflow/frontend/assets/arrow-up-left-CSnyYerZ.js +0 -6
- langflow/frontend/assets/arrow-up-narrow-wide-CbGzUVnv.js +0 -6
- langflow/frontend/assets/arrow-up-right-ByVD2w8X.js +0 -6
- langflow/frontend/assets/arrow-up-to-line-DyBCZvY2.js +0 -6
- langflow/frontend/assets/arrow-up-wide-narrow-B2v-OL3l.js +0 -6
- langflow/frontend/assets/arrow-up-z-a-B6PSmC8w.js +0 -6
- langflow/frontend/assets/arrows-up-from-line-N5YM9t7n.js +0 -6
- langflow/frontend/assets/asterisk-6MbKPf-C.js +0 -6
- langflow/frontend/assets/at-sign-BKL3x2d_.js +0 -6
- langflow/frontend/assets/atom-Dc-JfPxf.js +0 -6
- langflow/frontend/assets/audio-lines-C-W8ts0k.js +0 -6
- langflow/frontend/assets/audio-waveform-C8czrmcq.js +0 -6
- langflow/frontend/assets/award-BuS4O2sw.js +0 -6
- langflow/frontend/assets/axe-LZiGFi2K.js +0 -6
- langflow/frontend/assets/axis-3d-Da0Hf8SY.js +0 -6
- langflow/frontend/assets/baby-C8LJqA3a.js +0 -6
- langflow/frontend/assets/backpack-8eR3mOTW.js +0 -6
- langflow/frontend/assets/badge-EDGPdlUz.js +0 -6
- langflow/frontend/assets/badge-alert-DzCydZ7S.js +0 -6
- langflow/frontend/assets/badge-cent-CT6B4tD5.js +0 -6
- langflow/frontend/assets/badge-check-Bxp_sun1.js +0 -6
- langflow/frontend/assets/badge-dollar-sign-Dze0rwlL.js +0 -6
- langflow/frontend/assets/badge-euro-D5Cm88hn.js +0 -6
- langflow/frontend/assets/badge-help-BsOXh8oK.js +0 -6
- langflow/frontend/assets/badge-indian-rupee-IOz-tV_2.js +0 -6
- langflow/frontend/assets/badge-info-D1OVWVm6.js +0 -6
- langflow/frontend/assets/badge-japanese-yen-Blwx4dbl.js +0 -6
- langflow/frontend/assets/badge-minus-tk-dBTIA.js +0 -6
- langflow/frontend/assets/badge-percent-q0BruWSx.js +0 -6
- langflow/frontend/assets/badge-plus-DMgNmy5x.js +0 -6
- langflow/frontend/assets/badge-pound-sterling-CHHRcVdr.js +0 -6
- langflow/frontend/assets/badge-russian-ruble-CEbVxGdy.js +0 -6
- langflow/frontend/assets/badge-swiss-franc-VkeTV2Jb.js +0 -6
- langflow/frontend/assets/badge-x-DpIs2VJS.js +0 -6
- langflow/frontend/assets/baggage-claim-0qf3dIRz.js +0 -6
- langflow/frontend/assets/ban-CYRXZEE5.js +0 -6
- langflow/frontend/assets/banana-DmJiIL3h.js +0 -6
- langflow/frontend/assets/bandage-8iK18u6O.js +0 -6
- langflow/frontend/assets/banknote-CZjau31E.js +0 -6
- langflow/frontend/assets/banknote-arrow-down-CDpXvmFu.js +0 -6
- langflow/frontend/assets/banknote-arrow-up-CHPZQBVP.js +0 -6
- langflow/frontend/assets/banknote-x-CVpQfLSf.js +0 -6
- langflow/frontend/assets/barcode-C7Q5lrBn.js +0 -6
- langflow/frontend/assets/baseline-Cs7ZHPZ4.js +0 -6
- langflow/frontend/assets/bath-CDWPMaym.js +0 -6
- langflow/frontend/assets/battery-BFbHgRpU.js +0 -6
- langflow/frontend/assets/battery-charging-CsdGXssX.js +0 -6
- langflow/frontend/assets/battery-full-CcwmBaAZ.js +0 -6
- langflow/frontend/assets/battery-low-DAjILXda.js +0 -6
- langflow/frontend/assets/battery-medium-CZyQCN5h.js +0 -6
- langflow/frontend/assets/battery-plus-DfsE3RTm.js +0 -6
- langflow/frontend/assets/battery-warning-BZw_7xKe.js +0 -6
- langflow/frontend/assets/beaker-DHNVlyVo.js +0 -6
- langflow/frontend/assets/bean-YLVO9evq.js +0 -6
- langflow/frontend/assets/bean-off-Db3YBVDD.js +0 -6
- langflow/frontend/assets/bed-CgUwmyeT.js +0 -6
- langflow/frontend/assets/bed-double-BLNGBOmV.js +0 -6
- langflow/frontend/assets/bed-single-BcSlS0k2.js +0 -6
- langflow/frontend/assets/beef-BX03LzQv.js +0 -6
- langflow/frontend/assets/beer-DtRKaakP.js +0 -6
- langflow/frontend/assets/beer-off-ntawv8J3.js +0 -6
- langflow/frontend/assets/bell-BQ1MS1h3.js +0 -6
- langflow/frontend/assets/bell-dot-DFJQsNba.js +0 -6
- langflow/frontend/assets/bell-electric-ugdmLwOH.js +0 -6
- langflow/frontend/assets/bell-minus-CUT7k6WY.js +0 -6
- langflow/frontend/assets/bell-off-DcOEFLSM.js +0 -6
- langflow/frontend/assets/bell-plus-CTv3L84z.js +0 -6
- langflow/frontend/assets/bell-ring-BQGCbeNK.js +0 -6
- langflow/frontend/assets/between-horizontal-end-DQm9wHWZ.js +0 -6
- langflow/frontend/assets/between-horizontal-start-B4n63M4w.js +0 -6
- langflow/frontend/assets/between-vertical-end-4V70-Tmf.js +0 -6
- langflow/frontend/assets/between-vertical-start-CiuWpjd_.js +0 -6
- langflow/frontend/assets/biceps-flexed-BRkse63U.js +0 -6
- langflow/frontend/assets/bike-DbODYZa9.js +0 -6
- langflow/frontend/assets/binary-BZrFV6uU.js +0 -6
- langflow/frontend/assets/binoculars-XPRKuSmF.js +0 -6
- langflow/frontend/assets/biohazard-Cyq2kDJG.js +0 -6
- langflow/frontend/assets/bird-BhZ8WtVr.js +0 -6
- langflow/frontend/assets/bitcoin-B3F5kR4-.js +0 -6
- langflow/frontend/assets/blend-BGryF9qq.js +0 -6
- langflow/frontend/assets/blinds-DbFIu1bT.js +0 -6
- langflow/frontend/assets/blocks-DWcBLodr.js +0 -6
- langflow/frontend/assets/bluetooth-connected-Dhf9pdI-.js +0 -6
- langflow/frontend/assets/bluetooth-kswXe1Y-.js +0 -6
- langflow/frontend/assets/bluetooth-off-szFkxRUi.js +0 -6
- langflow/frontend/assets/bluetooth-searching-CTF5tAkg.js +0 -6
- langflow/frontend/assets/bold-BGg4fc3J.js +0 -6
- langflow/frontend/assets/bolt-R60irphj.js +0 -6
- langflow/frontend/assets/bomb-igGJjPrs.js +0 -6
- langflow/frontend/assets/bone-BeFpkzE9.js +0 -6
- langflow/frontend/assets/book-B1Z9x77f.js +0 -6
- langflow/frontend/assets/book-a-DTwZwHeL.js +0 -6
- langflow/frontend/assets/book-audio-D03bcHN1.js +0 -6
- langflow/frontend/assets/book-check-1PwIBLvI.js +0 -6
- langflow/frontend/assets/book-copy-yb_crTZw.js +0 -6
- langflow/frontend/assets/book-dashed-CKh4AvE3.js +0 -6
- langflow/frontend/assets/book-down-C6uWFaMI.js +0 -6
- langflow/frontend/assets/book-headphones-CmPZIaha.js +0 -6
- langflow/frontend/assets/book-heart-DUjyWUw6.js +0 -6
- langflow/frontend/assets/book-image-DZGANV-s.js +0 -6
- langflow/frontend/assets/book-key-QkydeqUW.js +0 -6
- langflow/frontend/assets/book-lock-kIjH4dFY.js +0 -6
- langflow/frontend/assets/book-marked-e2WkHwpc.js +0 -6
- langflow/frontend/assets/book-minus-aSaz_QR8.js +0 -6
- langflow/frontend/assets/book-open-CGX9M2Np.js +0 -6
- langflow/frontend/assets/book-open-check-BTGqcf-8.js +0 -6
- langflow/frontend/assets/book-open-text-CLMMMAyZ.js +0 -6
- langflow/frontend/assets/book-plus-BsA7fEJn.js +0 -6
- langflow/frontend/assets/book-text-COaes1xV.js +0 -6
- langflow/frontend/assets/book-type-BOySdQYg.js +0 -6
- langflow/frontend/assets/book-up-2-B0cQqCZK.js +0 -6
- langflow/frontend/assets/book-up-CH4D33N2.js +0 -6
- langflow/frontend/assets/book-user-CTPsc8o9.js +0 -6
- langflow/frontend/assets/book-x-Cef8efkv.js +0 -6
- langflow/frontend/assets/bookmark-BIROAsWh.js +0 -6
- langflow/frontend/assets/bookmark-check-CswzE8Mt.js +0 -6
- langflow/frontend/assets/bookmark-minus-CkJxt1p3.js +0 -6
- langflow/frontend/assets/bookmark-plus-CRoRb-5i.js +0 -6
- langflow/frontend/assets/bookmark-x-D2cLMMcO.js +0 -6
- langflow/frontend/assets/boom-box-DGyKFFGr.js +0 -6
- langflow/frontend/assets/bot-GomJtx3A.js +0 -6
- langflow/frontend/assets/bot-message-square-BlRIV6QC.js +0 -6
- langflow/frontend/assets/bot-off-VjlqlN2U.js +0 -6
- langflow/frontend/assets/bow-arrow-Co9G_lG1.js +0 -6
- langflow/frontend/assets/box-CS1eZvCH.js +0 -6
- langflow/frontend/assets/boxes-qndAkj1J.js +0 -6
- langflow/frontend/assets/braces-DK97MG-e.js +0 -6
- langflow/frontend/assets/brackets-s8GDjwqe.js +0 -6
- langflow/frontend/assets/brain-BgzfhgZ9.js +0 -6
- langflow/frontend/assets/brain-circuit-DV-WYKsx.js +0 -6
- langflow/frontend/assets/brain-cog-DAOJ3HcZ.js +0 -6
- langflow/frontend/assets/brick-wall-Cnn8IJBp.js +0 -6
- langflow/frontend/assets/brick-wall-fire-Cn5Q_Z7T.js +0 -6
- langflow/frontend/assets/briefcase-CfD4XT3g.js +0 -6
- langflow/frontend/assets/briefcase-business-BsVaxwTz.js +0 -6
- langflow/frontend/assets/briefcase-conveyor-belt-BsyQzp9D.js +0 -6
- langflow/frontend/assets/briefcase-medical-BafOnW6h.js +0 -6
- langflow/frontend/assets/bring-to-front-D6LTGUAM.js +0 -6
- langflow/frontend/assets/brush-CMSgAyCy.js +0 -6
- langflow/frontend/assets/bubbles-CpYAzFFq.js +0 -6
- langflow/frontend/assets/bug-DEH7fEs7.js +0 -6
- langflow/frontend/assets/bug-off-HWRB0ShZ.js +0 -6
- langflow/frontend/assets/bug-play-B5QFRuKR.js +0 -6
- langflow/frontend/assets/building-2-CBJPkScT.js +0 -6
- langflow/frontend/assets/building-Dc_XpMzY.js +0 -6
- langflow/frontend/assets/bus-YOWyUCDM.js +0 -6
- langflow/frontend/assets/bus-front-DU56GrjN.js +0 -6
- langflow/frontend/assets/cable-PspUAHj5.js +0 -6
- langflow/frontend/assets/cable-car-DPo9b_Qk.js +0 -6
- langflow/frontend/assets/cake-qPqSfib8.js +0 -6
- langflow/frontend/assets/cake-slice-Dr6vBGPs.js +0 -6
- langflow/frontend/assets/calculator-ZQMPmiOA.js +0 -6
- langflow/frontend/assets/calendar-1-B0eE9_1b.js +0 -6
- langflow/frontend/assets/calendar-BGF8IDyi.js +0 -6
- langflow/frontend/assets/calendar-arrow-down-BX7NVTYl.js +0 -6
- langflow/frontend/assets/calendar-arrow-up-Do_rf2fp.js +0 -6
- langflow/frontend/assets/calendar-check-2-BVcDTCp3.js +0 -6
- langflow/frontend/assets/calendar-check-3ROSiiel.js +0 -6
- langflow/frontend/assets/calendar-clock-Bn9fe9QX.js +0 -6
- langflow/frontend/assets/calendar-cog-kuhRz4OH.js +0 -6
- langflow/frontend/assets/calendar-days-CKruG6Kp.js +0 -6
- langflow/frontend/assets/calendar-fold-DuirA1WZ.js +0 -6
- langflow/frontend/assets/calendar-heart-Bq2qoO83.js +0 -6
- langflow/frontend/assets/calendar-minus-2-BOSwCuOW.js +0 -6
- langflow/frontend/assets/calendar-minus-DiFVtQeo.js +0 -6
- langflow/frontend/assets/calendar-off-B-YGSx4p.js +0 -6
- langflow/frontend/assets/calendar-plus-2-NFXvsHxT.js +0 -6
- langflow/frontend/assets/calendar-plus-C1avJN4z.js +0 -6
- langflow/frontend/assets/calendar-range-BXR42bOX.js +0 -6
- langflow/frontend/assets/calendar-search-C-lFyn7p.js +0 -6
- langflow/frontend/assets/calendar-sync-DNa0lIv7.js +0 -6
- langflow/frontend/assets/calendar-x-2-z_E7oB4p.js +0 -6
- langflow/frontend/assets/calendar-x-CMLxjjmV.js +0 -6
- langflow/frontend/assets/camera-off-2dTvMGgv.js +0 -6
- langflow/frontend/assets/camera-qbwR10p_.js +0 -6
- langflow/frontend/assets/candy-BQ4t-DqD.js +0 -6
- langflow/frontend/assets/candy-cane-DrBGvfys.js +0 -6
- langflow/frontend/assets/candy-off-BubtPe60.js +0 -6
- langflow/frontend/assets/cannabis-DC5SYNIc.js +0 -6
- langflow/frontend/assets/captions-DFA2Oe5Z.js +0 -6
- langflow/frontend/assets/captions-off-BrNnxb6q.js +0 -6
- langflow/frontend/assets/car-QyBdI2SI.js +0 -6
- langflow/frontend/assets/car-front-CWS10Ibz.js +0 -6
- langflow/frontend/assets/car-taxi-front-wxCgLXuk.js +0 -6
- langflow/frontend/assets/caravan-BlCPl6aV.js +0 -6
- langflow/frontend/assets/carrot-BGvkK6EI.js +0 -6
- langflow/frontend/assets/case-lower-J0JsWk74.js +0 -6
- langflow/frontend/assets/case-sensitive-D9uPJFLk.js +0 -6
- langflow/frontend/assets/case-upper-C-CJ5igC.js +0 -6
- langflow/frontend/assets/cassette-tape-CckW_qZY.js +0 -6
- langflow/frontend/assets/cast-BHip4cyK.js +0 -6
- langflow/frontend/assets/castle-8kj-YW4y.js +0 -6
- langflow/frontend/assets/cat-_Td3TyXI.js +0 -6
- langflow/frontend/assets/cctv-X-HCVWTb.js +0 -6
- langflow/frontend/assets/chart-area-D92RtYIO.js +0 -6
- langflow/frontend/assets/chart-bar-DT90TlU5.js +0 -6
- langflow/frontend/assets/chart-bar-big-B9PJar0z.js +0 -6
- langflow/frontend/assets/chart-bar-decreasing-CzB6usic.js +0 -6
- langflow/frontend/assets/chart-bar-increasing-Lb4NqLYv.js +0 -6
- langflow/frontend/assets/chart-bar-stacked-D2PFpYb4.js +0 -6
- langflow/frontend/assets/chart-candlestick-DgBrkDfA.js +0 -6
- langflow/frontend/assets/chart-column-CyJ7jHlw.js +0 -6
- langflow/frontend/assets/chart-column-big-DNLCRh6v.js +0 -6
- langflow/frontend/assets/chart-column-decreasing-agiKdO9q.js +0 -6
- langflow/frontend/assets/chart-column-increasing-8xSN0RFX.js +0 -6
- langflow/frontend/assets/chart-column-stacked-ByjSIgVm.js +0 -6
- langflow/frontend/assets/chart-gantt-Cb-QgWLY.js +0 -6
- langflow/frontend/assets/chart-line-DJdXADIj.js +0 -6
- langflow/frontend/assets/chart-network-DiItS55y.js +0 -6
- langflow/frontend/assets/chart-no-axes-column-S1Y3Gzin.js +0 -6
- langflow/frontend/assets/chart-no-axes-column-decreasing-DlWnCnHN.js +0 -6
- langflow/frontend/assets/chart-no-axes-column-increasing-CEJu_Nut.js +0 -6
- langflow/frontend/assets/chart-no-axes-combined-DiRTVosK.js +0 -6
- langflow/frontend/assets/chart-no-axes-gantt-ClvHJAwI.js +0 -6
- langflow/frontend/assets/chart-pie-DrFGw6jy.js +0 -6
- langflow/frontend/assets/chart-scatter-BGYtUfNW.js +0 -6
- langflow/frontend/assets/chart-spline-DTa9Xe4n.js +0 -6
- langflow/frontend/assets/check-check-9L6jvp8Y.js +0 -6
- langflow/frontend/assets/chef-hat-BjzWpgjV.js +0 -6
- langflow/frontend/assets/cherry-B5SpzY_P.js +0 -6
- langflow/frontend/assets/chevron-first-DX3vbLUS.js +0 -6
- langflow/frontend/assets/chevron-last-CNWwWmpW.js +0 -6
- langflow/frontend/assets/chevron-left-CjLu6ldM.js +0 -6
- langflow/frontend/assets/chevron-right-BbrGRs7_.js +0 -6
- langflow/frontend/assets/chevrons-down-H2ZS5rUc.js +0 -6
- langflow/frontend/assets/chevrons-down-up-DQWC2qjS.js +0 -6
- langflow/frontend/assets/chevrons-left-7Na6UmCj.js +0 -6
- langflow/frontend/assets/chevrons-left-right-Btk4IHsh.js +0 -6
- langflow/frontend/assets/chevrons-left-right-ellipsis-CHTwyaJS.js +0 -6
- langflow/frontend/assets/chevrons-right-BOCimP-Y.js +0 -6
- langflow/frontend/assets/chevrons-right-left-BDGV7ZHN.js +0 -6
- langflow/frontend/assets/chevrons-up-BtBbYTIX.js +0 -6
- langflow/frontend/assets/chrome-CLHrUdL7.js +0 -6
- langflow/frontend/assets/church-DyP20Di6.js +0 -6
- langflow/frontend/assets/cigarette-B2UOS8lf.js +0 -6
- langflow/frontend/assets/cigarette-off-ByckuC3q.js +0 -6
- langflow/frontend/assets/circle-alert-DXzq9xj6.js +0 -6
- langflow/frontend/assets/circle-arrow-down-D6Wnw5dJ.js +0 -6
- langflow/frontend/assets/circle-arrow-left-CTcR5KD9.js +0 -6
- langflow/frontend/assets/circle-arrow-out-down-left-CqGME175.js +0 -6
- langflow/frontend/assets/circle-arrow-out-down-right--1pHhm_S.js +0 -6
- langflow/frontend/assets/circle-arrow-out-up-left-CokBstE4.js +0 -6
- langflow/frontend/assets/circle-arrow-out-up-right-CkWhrB1W.js +0 -6
- langflow/frontend/assets/circle-arrow-right-BaxjllQX.js +0 -6
- langflow/frontend/assets/circle-arrow-up-DcjKtZmC.js +0 -6
- langflow/frontend/assets/circle-check-DVIF3Nr_.js +0 -6
- langflow/frontend/assets/circle-check-big-CMfOraW9.js +0 -6
- langflow/frontend/assets/circle-chevron-down-D9WiS2SB.js +0 -6
- langflow/frontend/assets/circle-chevron-left-B-qkgP0T.js +0 -6
- langflow/frontend/assets/circle-chevron-right-CKqdjZu0.js +0 -6
- langflow/frontend/assets/circle-chevron-up-BmLC2mks.js +0 -6
- langflow/frontend/assets/circle-dashed-C8Uk1RfD.js +0 -6
- langflow/frontend/assets/circle-divide-BljEFvGL.js +0 -6
- langflow/frontend/assets/circle-dollar-sign-YeM-HVIq.js +0 -6
- langflow/frontend/assets/circle-dot-CmAA73ex.js +0 -6
- langflow/frontend/assets/circle-dot-dashed-DUTuJBCb.js +0 -6
- langflow/frontend/assets/circle-ellipsis-y8nFdmyO.js +0 -6
- langflow/frontend/assets/circle-equal-vYkDHToT.js +0 -6
- langflow/frontend/assets/circle-fading-arrow-up-nOYwIMqy.js +0 -6
- langflow/frontend/assets/circle-fading-plus-D0I4QaEI.js +0 -6
- langflow/frontend/assets/circle-gauge-m4IG1O-u.js +0 -6
- langflow/frontend/assets/circle-help-DVb_wNDM.js +0 -6
- langflow/frontend/assets/circle-minus-Byf1m04e.js +0 -6
- langflow/frontend/assets/circle-off-C2TaaGNm.js +0 -6
- langflow/frontend/assets/circle-parking-BxXpvySV.js +0 -6
- langflow/frontend/assets/circle-parking-off-CmE2Bihs.js +0 -6
- langflow/frontend/assets/circle-pause-DroDtAej.js +0 -6
- langflow/frontend/assets/circle-percent-BfzBs559.js +0 -6
- langflow/frontend/assets/circle-play-C0-l24Qf.js +0 -6
- langflow/frontend/assets/circle-plus-_EnqRPM0.js +0 -6
- langflow/frontend/assets/circle-power-uMj-rVOp.js +0 -6
- langflow/frontend/assets/circle-slash-2-KKegU_qW.js +0 -6
- langflow/frontend/assets/circle-slash-DfJK2Ho_.js +0 -6
- langflow/frontend/assets/circle-small-CXWhZ8Yq.js +0 -6
- langflow/frontend/assets/circle-stop-O25AHDTz.js +0 -6
- langflow/frontend/assets/circle-user-DZosvpw2.js +0 -6
- langflow/frontend/assets/circle-user-round-CdsDXkBp.js +0 -6
- langflow/frontend/assets/circuit-board-DNRBzrQM.js +0 -6
- langflow/frontend/assets/citrus-j_jtDGPb.js +0 -6
- langflow/frontend/assets/clapperboard-B4kGMwR1.js +0 -6
- langflow/frontend/assets/clipboard-WThr5izD.js +0 -6
- langflow/frontend/assets/clipboard-check-DT_MbRwb.js +0 -6
- langflow/frontend/assets/clipboard-copy-BvkHI3rh.js +0 -6
- langflow/frontend/assets/clipboard-list-CLUD2tKX.js +0 -6
- langflow/frontend/assets/clipboard-minus-DEZOHV09.js +0 -6
- langflow/frontend/assets/clipboard-paste-DBMsxziB.js +0 -6
- langflow/frontend/assets/clipboard-pen-D22TKKPD.js +0 -6
- langflow/frontend/assets/clipboard-pen-line-BWyQZZIT.js +0 -6
- langflow/frontend/assets/clipboard-plus-D1UFMJum.js +0 -6
- langflow/frontend/assets/clipboard-type-CxijHV2W.js +0 -6
- langflow/frontend/assets/clipboard-x-D9yy-3lO.js +0 -6
- langflow/frontend/assets/clock-1-DAwU43Ut.js +0 -6
- langflow/frontend/assets/clock-10-BPoZP6ds.js +0 -6
- langflow/frontend/assets/clock-11-C9LQgTl3.js +0 -6
- langflow/frontend/assets/clock-12-yIaDqcZ3.js +0 -6
- langflow/frontend/assets/clock-2-CBoyj7R6.js +0 -6
- langflow/frontend/assets/clock-3-CC1_E6dN.js +0 -6
- langflow/frontend/assets/clock-4-8pIV05ob.js +0 -6
- langflow/frontend/assets/clock-5-C2hXuSwF.js +0 -6
- langflow/frontend/assets/clock-6-CcMALSp2.js +0 -6
- langflow/frontend/assets/clock-7-C-SHYfUw.js +0 -6
- langflow/frontend/assets/clock-8-_gJjLUJ4.js +0 -6
- langflow/frontend/assets/clock-9-Ck4K3tqp.js +0 -6
- langflow/frontend/assets/clock-alert-Cyk2IRBc.js +0 -6
- langflow/frontend/assets/clock-arrow-down-DFTDL4kx.js +0 -6
- langflow/frontend/assets/clock-arrow-up-BnDhCzb4.js +0 -6
- langflow/frontend/assets/clock-fading-Bjka-Vfr.js +0 -6
- langflow/frontend/assets/clock-gYcFsLDS.js +0 -6
- langflow/frontend/assets/cloud-CkDxBGiX.js +0 -6
- langflow/frontend/assets/cloud-alert-5_4mbkbT.js +0 -6
- langflow/frontend/assets/cloud-cog-D_4-dUI8.js +0 -6
- langflow/frontend/assets/cloud-download-BeAnuH6V.js +0 -6
- langflow/frontend/assets/cloud-drizzle-BZNgGQjK.js +0 -6
- langflow/frontend/assets/cloud-fog-g6H9mnPB.js +0 -6
- langflow/frontend/assets/cloud-hail-mfOY3PyQ.js +0 -6
- langflow/frontend/assets/cloud-lightning-BTT7SZeG.js +0 -6
- langflow/frontend/assets/cloud-moon-BwWkVJ49.js +0 -6
- langflow/frontend/assets/cloud-moon-rain-1U_w8q9_.js +0 -6
- langflow/frontend/assets/cloud-off-Ch0rgW4F.js +0 -6
- langflow/frontend/assets/cloud-rain-BMlRf1it.js +0 -6
- langflow/frontend/assets/cloud-rain-wind-DdXJxzsJ.js +0 -6
- langflow/frontend/assets/cloud-snow-l7BHiF66.js +0 -6
- langflow/frontend/assets/cloud-sun-B9xczlpe.js +0 -6
- langflow/frontend/assets/cloud-sun-rain-C2EhPc8d.js +0 -6
- langflow/frontend/assets/cloud-upload--IrI73uY.js +0 -6
- langflow/frontend/assets/cloudy-BLY2P7pI.js +0 -6
- langflow/frontend/assets/clover-CCa69VCu.js +0 -6
- langflow/frontend/assets/club-BoK3QkZI.js +0 -6
- langflow/frontend/assets/code-xml-BJ4pcmNb.js +0 -6
- langflow/frontend/assets/codepen-y-bmhV7C.js +0 -6
- langflow/frontend/assets/codesandbox-BHyCD9aN.js +0 -6
- langflow/frontend/assets/coffee-CHqvDOjz.js +0 -6
- langflow/frontend/assets/cog-B3awbO3E.js +0 -6
- langflow/frontend/assets/coins-C-6NNAjI.js +0 -6
- langflow/frontend/assets/columns-2-Hg_ZeGuF.js +0 -6
- langflow/frontend/assets/columns-3-CrY0stzR.js +0 -6
- langflow/frontend/assets/columns-3-cog-CkEOZTSJ.js +0 -6
- langflow/frontend/assets/columns-4-C6O27Uk6.js +0 -6
- langflow/frontend/assets/combine-BQHXMUAE.js +0 -6
- langflow/frontend/assets/command-FnSqkckB.js +0 -6
- langflow/frontend/assets/compass-EebvLOoc.js +0 -6
- langflow/frontend/assets/component-DKKIEb9c.js +0 -6
- langflow/frontend/assets/computer-D20RZor-.js +0 -6
- langflow/frontend/assets/concierge-bell-BNQwfuW3.js +0 -6
- langflow/frontend/assets/cone-rfMmNEJj.js +0 -6
- langflow/frontend/assets/construction-Ctz76OTY.js +0 -6
- langflow/frontend/assets/contact-BsvQyBK4.js +0 -6
- langflow/frontend/assets/contact-round-BXIpbAgi.js +0 -6
- langflow/frontend/assets/container-5iUx3nlv.js +0 -6
- langflow/frontend/assets/contrast-cefwbAsE.js +0 -6
- langflow/frontend/assets/cookie-DL58azAK.js +0 -6
- langflow/frontend/assets/cooking-pot-C3wBu1s4.js +0 -6
- langflow/frontend/assets/copy-UJnbiPtr.js +0 -6
- langflow/frontend/assets/copy-check-CIbqpkRk.js +0 -6
- langflow/frontend/assets/copy-minus-BLf0JZxV.js +0 -6
- langflow/frontend/assets/copy-plus-D30XipeU.js +0 -6
- langflow/frontend/assets/copy-slash-MruO4PRW.js +0 -6
- langflow/frontend/assets/copy-x-CqG1DirU.js +0 -6
- langflow/frontend/assets/copyleft-qecPjIRB.js +0 -6
- langflow/frontend/assets/copyright-BAvLTBZh.js +0 -6
- langflow/frontend/assets/corner-down-left-DhdODoB2.js +0 -6
- langflow/frontend/assets/corner-down-right-GFzNTX3d.js +0 -6
- langflow/frontend/assets/corner-left-down-BsEoXyb8.js +0 -6
- langflow/frontend/assets/corner-left-up-CWc90yLu.js +0 -6
- langflow/frontend/assets/corner-right-down-zb58ewkb.js +0 -6
- langflow/frontend/assets/corner-right-up-B4D23RNY.js +0 -6
- langflow/frontend/assets/corner-up-left-BEPUYLy9.js +0 -6
- langflow/frontend/assets/corner-up-right-UEwbxN-r.js +0 -6
- langflow/frontend/assets/cpu-CiAfriZ0.js +0 -6
- langflow/frontend/assets/creative-commons-DTsqWMLQ.js +0 -6
- langflow/frontend/assets/credit-card-BsqZCwy7.js +0 -6
- langflow/frontend/assets/croissant-Dne9gpD6.js +0 -6
- langflow/frontend/assets/crop-BWr5Nt9j.js +0 -6
- langflow/frontend/assets/cross-CShHDmEw.js +0 -6
- langflow/frontend/assets/crosshair-BCE8MhW3.js +0 -6
- langflow/frontend/assets/crown-CIXLAW1p.js +0 -6
- langflow/frontend/assets/cuboid-BdVM9bLq.js +0 -6
- langflow/frontend/assets/cup-soda-BSwVg3a5.js +0 -6
- langflow/frontend/assets/currency-DJp8xWtW.js +0 -6
- langflow/frontend/assets/cylinder-Bahv0XqP.js +0 -6
- langflow/frontend/assets/dam-BiiN0uXc.js +0 -6
- langflow/frontend/assets/database-CgOq8Ih-.js +0 -6
- langflow/frontend/assets/database-backup-BEmFvF40.js +0 -6
- langflow/frontend/assets/database-zap-B4qlD4xw.js +0 -6
- langflow/frontend/assets/decimals-arrow-left-DTVAe_Hn.js +0 -6
- langflow/frontend/assets/decimals-arrow-right-BJpvQaKs.js +0 -6
- langflow/frontend/assets/delete-DNgmAcy0.js +0 -6
- langflow/frontend/assets/dessert-Bi6gyYf-.js +0 -6
- langflow/frontend/assets/diameter-a93r8rjy.js +0 -6
- langflow/frontend/assets/diamond-0p-8DpG5.js +0 -6
- langflow/frontend/assets/diamond-minus-COaE18H5.js +0 -6
- langflow/frontend/assets/diamond-percent-Df698BfA.js +0 -6
- langflow/frontend/assets/diamond-plus-D3eQ62H4.js +0 -6
- langflow/frontend/assets/dice-1-DnL3C4vE.js +0 -6
- langflow/frontend/assets/dice-2-BtEh1DPp.js +0 -6
- langflow/frontend/assets/dice-3-DVXeHqgh.js +0 -6
- langflow/frontend/assets/dice-4-i1t533VC.js +0 -6
- langflow/frontend/assets/dice-5-DL_QrdV9.js +0 -6
- langflow/frontend/assets/dice-6-CEN5iQ7F.js +0 -6
- langflow/frontend/assets/dices-BJFgAPPA.js +0 -6
- langflow/frontend/assets/diff-C5upn_lT.js +0 -6
- langflow/frontend/assets/disc-2-CWruH8PS.js +0 -6
- langflow/frontend/assets/disc-3-BHOYBnsT.js +0 -6
- langflow/frontend/assets/disc-album-BQllRW2x.js +0 -6
- langflow/frontend/assets/disc-eKt9DAPl.js +0 -6
- langflow/frontend/assets/divide-BQ4_k1d1.js +0 -6
- langflow/frontend/assets/dna-dZI_EwH-.js +0 -6
- langflow/frontend/assets/dna-off-I9s41lB9.js +0 -6
- langflow/frontend/assets/dock-B1Bdxowp.js +0 -6
- langflow/frontend/assets/dog-BR7ug1Wi.js +0 -6
- langflow/frontend/assets/dollar-sign-BrPvGKWr.js +0 -6
- langflow/frontend/assets/donut-Dj02uIog.js +0 -6
- langflow/frontend/assets/door-closed-wL5v0Vb0.js +0 -6
- langflow/frontend/assets/door-open-CcjATHeV.js +0 -6
- langflow/frontend/assets/dot-b94B4R9h.js +0 -6
- langflow/frontend/assets/download-Dq5Dm54C.js +0 -6
- langflow/frontend/assets/drafting-compass-vwA4Ho1z.js +0 -6
- langflow/frontend/assets/drama-CvKReENk.js +0 -6
- langflow/frontend/assets/dribbble-BbwrE9Yy.js +0 -6
- langflow/frontend/assets/drill--IJn0pWJ.js +0 -6
- langflow/frontend/assets/droplet-ClYRsdb8.js +0 -6
- langflow/frontend/assets/droplet-off-CFIzG0Ol.js +0 -6
- langflow/frontend/assets/droplets-BKLSMAGX.js +0 -6
- langflow/frontend/assets/drum-C7xB3QRH.js +0 -6
- langflow/frontend/assets/drumstick-B-hfKO8B.js +0 -6
- langflow/frontend/assets/dumbbell-DVaOS0FX.js +0 -6
- langflow/frontend/assets/ear-Ds37MAXI.js +0 -6
- langflow/frontend/assets/ear-off-PR_WQH1k.js +0 -6
- langflow/frontend/assets/earth-CA7q24-B.js +0 -6
- langflow/frontend/assets/earth-lock-C_A8Ahn1.js +0 -6
- langflow/frontend/assets/eclipse-BszuASH0.js +0 -6
- langflow/frontend/assets/egg-dhQLHf-p.js +0 -6
- langflow/frontend/assets/egg-fried-CCdZahuH.js +0 -6
- langflow/frontend/assets/egg-off-DjWCi1Kv.js +0 -6
- langflow/frontend/assets/ellipsis-CVuUKx17.js +0 -6
- langflow/frontend/assets/ellipsis-vertical-D_fRPINS.js +0 -6
- langflow/frontend/assets/equal-Bt5xcGZG.js +0 -6
- langflow/frontend/assets/equal-approximately-B1e5vblr.js +0 -6
- langflow/frontend/assets/equal-not-COi6tuqB.js +0 -6
- langflow/frontend/assets/eraser-ClwGEu2r.js +0 -6
- langflow/frontend/assets/ethernet-port-BaIsGepi.js +0 -6
- langflow/frontend/assets/euro-CzKiwxLv.js +0 -6
- langflow/frontend/assets/expand-C7mmmW2t.js +0 -6
- langflow/frontend/assets/eye-Y1wrQoS5.js +0 -6
- langflow/frontend/assets/eye-closed-Og5A_krH.js +0 -6
- langflow/frontend/assets/eye-off-Bny-wJcw.js +0 -6
- langflow/frontend/assets/facebook-D1YivKM-.js +0 -6
- langflow/frontend/assets/factory-BEYmvm6v.js +0 -6
- langflow/frontend/assets/fan-BV08YHfu.js +0 -6
- langflow/frontend/assets/fast-forward-CHJOu0Q-.js +0 -6
- langflow/frontend/assets/feather-B3rvCCo9.js +0 -6
- langflow/frontend/assets/fence-kbQqi4Ww.js +0 -6
- langflow/frontend/assets/ferris-wheel-C_MWhi8b.js +0 -6
- langflow/frontend/assets/figma-mbLL6Z_A.js +0 -6
- langflow/frontend/assets/file-DjQpgvN_.js +0 -6
- langflow/frontend/assets/file-archive-Cy00BTxG.js +0 -6
- langflow/frontend/assets/file-audio-2-1ZahxTag.js +0 -6
- langflow/frontend/assets/file-audio-BfdYg6TN.js +0 -6
- langflow/frontend/assets/file-axis-3d-D_PzfWrG.js +0 -6
- langflow/frontend/assets/file-badge-2-DW_r3C03.js +0 -6
- langflow/frontend/assets/file-badge-P_R0iIF4.js +0 -6
- langflow/frontend/assets/file-box-BbdwRlZo.js +0 -6
- langflow/frontend/assets/file-chart-column-CH5Cl6Vo.js +0 -6
- langflow/frontend/assets/file-chart-column-increasing-BwKb_oTm.js +0 -6
- langflow/frontend/assets/file-chart-line-DqFdt9kQ.js +0 -6
- langflow/frontend/assets/file-chart-pie-DefSZfRa.js +0 -6
- langflow/frontend/assets/file-check-2-RXuJsXXj.js +0 -6
- langflow/frontend/assets/file-check-BYDnCPax.js +0 -6
- langflow/frontend/assets/file-clock-DOERBDCj.js +0 -6
- langflow/frontend/assets/file-code-0-hWc2HC.js +0 -6
- langflow/frontend/assets/file-code-2-DQ_93XuW.js +0 -6
- langflow/frontend/assets/file-cog-BdE4EEMa.js +0 -6
- langflow/frontend/assets/file-diff-CtTrIgxG.js +0 -6
- langflow/frontend/assets/file-digit-Iwphm6BD.js +0 -6
- langflow/frontend/assets/file-down-Ck14OjJt.js +0 -6
- langflow/frontend/assets/file-heart-DgeG_u2p.js +0 -6
- langflow/frontend/assets/file-image-BRsYiX2B.js +0 -6
- langflow/frontend/assets/file-input-D8d6wAL7.js +0 -6
- langflow/frontend/assets/file-json-2-Cp005a7z.js +0 -6
- langflow/frontend/assets/file-json-DOxvIPN5.js +0 -6
- langflow/frontend/assets/file-key-2-B9ul6SjG.js +0 -6
- langflow/frontend/assets/file-key-CjH4-RUQ.js +0 -6
- langflow/frontend/assets/file-lock-2-Cmos9f8R.js +0 -6
- langflow/frontend/assets/file-lock-qOLsgF3e.js +0 -6
- langflow/frontend/assets/file-minus-2-k1jAjC0Z.js +0 -6
- langflow/frontend/assets/file-minus-CIP6ezxw.js +0 -6
- langflow/frontend/assets/file-music-BO8AilAF.js +0 -6
- langflow/frontend/assets/file-output-BWt-jJjY.js +0 -6
- langflow/frontend/assets/file-pen-Cl_qYiOD.js +0 -6
- langflow/frontend/assets/file-pen-line-BLsV3na3.js +0 -6
- langflow/frontend/assets/file-plus-2-DmtjcO1f.js +0 -6
- langflow/frontend/assets/file-plus-CjX61yZI.js +0 -6
- langflow/frontend/assets/file-question-D1s2EnEi.js +0 -6
- langflow/frontend/assets/file-scan-BtOXjfkx.js +0 -6
- langflow/frontend/assets/file-search-2-C62uqFii.js +0 -6
- langflow/frontend/assets/file-search-SoFJ_6Ps.js +0 -6
- langflow/frontend/assets/file-sliders-BwoNTa0w.js +0 -6
- langflow/frontend/assets/file-spreadsheet-D7s0vz6X.js +0 -6
- langflow/frontend/assets/file-stack-CAOg05Cf.js +0 -6
- langflow/frontend/assets/file-symlink-BieImjU3.js +0 -6
- langflow/frontend/assets/file-terminal-DEJpQ6UE.js +0 -6
- langflow/frontend/assets/file-text-BPOIgq28.js +0 -6
- langflow/frontend/assets/file-type-2-4jD6JU2J.js +0 -6
- langflow/frontend/assets/file-type-DvUFi4hv.js +0 -6
- langflow/frontend/assets/file-up-Ctxhu7Ye.js +0 -6
- langflow/frontend/assets/file-user-Pi0Aj9xA.js +0 -6
- langflow/frontend/assets/file-video-2-_psUeOOy.js +0 -6
- langflow/frontend/assets/file-video-C7sonoXL.js +0 -6
- langflow/frontend/assets/file-volume-2-DBBXt8gz.js +0 -6
- langflow/frontend/assets/file-volume-DVbA5-Ds.js +0 -6
- langflow/frontend/assets/file-warning-MAtWC6L8.js +0 -6
- langflow/frontend/assets/file-x-2-Buf7GU_G.js +0 -6
- langflow/frontend/assets/file-x-B6HPhurJ.js +0 -6
- langflow/frontend/assets/files-DSBUfdWk.js +0 -6
- langflow/frontend/assets/film-DOi3QeWb.js +0 -6
- langflow/frontend/assets/fingerprint-CXB2dcmC.js +0 -6
- langflow/frontend/assets/fire-extinguisher-CeDLzfLT.js +0 -6
- langflow/frontend/assets/fish-e0C3erj5.js +0 -6
- langflow/frontend/assets/fish-off-B15WwwXi.js +0 -6
- langflow/frontend/assets/fish-symbol-BWvljjWX.js +0 -6
- langflow/frontend/assets/flag-BFn9drT6.js +0 -6
- langflow/frontend/assets/flag-off-B93JBYsq.js +0 -6
- langflow/frontend/assets/flag-triangle-left-DI0eYHt7.js +0 -6
- langflow/frontend/assets/flag-triangle-right-B42qvniw.js +0 -6
- langflow/frontend/assets/flame-kindling-B8TD1nJQ.js +0 -6
- langflow/frontend/assets/flame-yaZnwjKV.js +0 -6
- langflow/frontend/assets/flashlight-BQIl3IpW.js +0 -6
- langflow/frontend/assets/flashlight-off-D_-jT97K.js +0 -6
- langflow/frontend/assets/flask-conical-CHYXrQz0.js +0 -6
- langflow/frontend/assets/flask-conical-off-DKVX4iqz.js +0 -6
- langflow/frontend/assets/flask-round-BjQ9GAQf.js +0 -6
- langflow/frontend/assets/flip-horizontal-2-CLXO4TGg.js +0 -6
- langflow/frontend/assets/flip-horizontal-CBCzeHti.js +0 -6
- langflow/frontend/assets/flip-vertical-2-iT_B38iJ.js +0 -6
- langflow/frontend/assets/flip-vertical-gXuxA0OQ.js +0 -6
- langflow/frontend/assets/flower-2-Bca1Ck7g.js +0 -6
- langflow/frontend/assets/flower-DpuQRbmp.js +0 -6
- langflow/frontend/assets/focus-BqPsaGjU.js +0 -6
- langflow/frontend/assets/fold-horizontal-BehS_WQ7.js +0 -6
- langflow/frontend/assets/fold-vertical-CyY2vtMk.js +0 -6
- langflow/frontend/assets/folder-archive-BAinHuMQ.js +0 -6
- langflow/frontend/assets/folder-check-DNFwTBTN.js +0 -6
- langflow/frontend/assets/folder-clock-D_2WLn5P.js +0 -6
- langflow/frontend/assets/folder-closed-CGYZNl2H.js +0 -6
- langflow/frontend/assets/folder-code-BuzzI1RJ.js +0 -6
- langflow/frontend/assets/folder-cog-CuLMHoIt.js +0 -6
- langflow/frontend/assets/folder-dot-quKDC9Lq.js +0 -6
- langflow/frontend/assets/folder-down-DSLmJgPq.js +0 -6
- langflow/frontend/assets/folder-git-2-Bxh5ZAVa.js +0 -6
- langflow/frontend/assets/folder-git-a_CI5g4g.js +0 -6
- langflow/frontend/assets/folder-heart-D_ZGMgfz.js +0 -6
- langflow/frontend/assets/folder-input-CiL9qPZV.js +0 -6
- langflow/frontend/assets/folder-kanban-BgyHqi0P.js +0 -6
- langflow/frontend/assets/folder-key-DeICPkae.js +0 -6
- langflow/frontend/assets/folder-lock-CHM-fXY_.js +0 -6
- langflow/frontend/assets/folder-minus-Im-1anc5.js +0 -6
- langflow/frontend/assets/folder-open-RTm4lw0r.js +0 -6
- langflow/frontend/assets/folder-open-dot-K6CDwJgB.js +0 -6
- langflow/frontend/assets/folder-output-B_dfcjyZ.js +0 -6
- langflow/frontend/assets/folder-pFgJBlMx.js +0 -6
- langflow/frontend/assets/folder-pen-Chockbm5.js +0 -6
- langflow/frontend/assets/folder-plus-dniwJW7J.js +0 -6
- langflow/frontend/assets/folder-root-D_57lkVb.js +0 -6
- langflow/frontend/assets/folder-search-2-DC-2VrkS.js +0 -6
- langflow/frontend/assets/folder-search-BNKm965K.js +0 -6
- langflow/frontend/assets/folder-symlink-BcgdmDtb.js +0 -6
- langflow/frontend/assets/folder-sync-1T6-XOtQ.js +0 -6
- langflow/frontend/assets/folder-tree-C3so4vEU.js +0 -6
- langflow/frontend/assets/folder-up-COFYP1oz.js +0 -6
- langflow/frontend/assets/folder-x-BLlN3YLu.js +0 -6
- langflow/frontend/assets/folders-SZrVKXwg.js +0 -6
- langflow/frontend/assets/footprints-CDAAy4Wz.js +0 -6
- langflow/frontend/assets/forklift-DmdG35uV.js +0 -6
- langflow/frontend/assets/forward-1HsNRcG8.js +0 -6
- langflow/frontend/assets/frame-BovTax1d.js +0 -6
- langflow/frontend/assets/framer-j8ff6pIs.js +0 -6
- langflow/frontend/assets/frown-D0iaoYNS.js +0 -6
- langflow/frontend/assets/fuel-faXeMv1N.js +0 -6
- langflow/frontend/assets/fullscreen-CRpzIegV.js +0 -6
- langflow/frontend/assets/funnel-1-bk_QHe.js +0 -6
- langflow/frontend/assets/funnel-plus-Bsp208XH.js +0 -6
- langflow/frontend/assets/funnel-x-DL396SXW.js +0 -6
- langflow/frontend/assets/gallery-horizontal-Dm9sdx68.js +0 -6
- langflow/frontend/assets/gallery-horizontal-end-Dpyr4Ygb.js +0 -6
- langflow/frontend/assets/gallery-thumbnails-BizYXv_e.js +0 -6
- langflow/frontend/assets/gallery-vertical-HRB_iyK6.js +0 -6
- langflow/frontend/assets/gallery-vertical-end-DyaCoNJE.js +0 -6
- langflow/frontend/assets/gamepad-2-BVTF3mqj.js +0 -6
- langflow/frontend/assets/gamepad-CxEGgC35.js +0 -6
- langflow/frontend/assets/gauge-IdAEJ0kJ.js +0 -6
- langflow/frontend/assets/gavel-Cf_t06A-.js +0 -6
- langflow/frontend/assets/gem-CIIJrACa.js +0 -6
- langflow/frontend/assets/ghost-bq0rR6Q6.js +0 -6
- langflow/frontend/assets/gift-C04GwpRr.js +0 -6
- langflow/frontend/assets/git-branch-DT8lJfIe.js +0 -6
- langflow/frontend/assets/git-branch-plus-z2nKEguc.js +0 -6
- langflow/frontend/assets/git-commit-horizontal-BNrw6h_X.js +0 -6
- langflow/frontend/assets/git-commit-vertical-BJBCCrSu.js +0 -6
- langflow/frontend/assets/git-compare-Q4kwJVvG.js +0 -6
- langflow/frontend/assets/git-compare-arrows-D18LA56E.js +0 -6
- langflow/frontend/assets/git-fork-630Vd8C-.js +0 -6
- langflow/frontend/assets/git-graph-DMgYs0my.js +0 -6
- langflow/frontend/assets/git-merge-Di4VPVPr.js +0 -6
- langflow/frontend/assets/git-pull-request-BkXRobDX.js +0 -6
- langflow/frontend/assets/git-pull-request-arrow-50B44C11.js +0 -6
- langflow/frontend/assets/git-pull-request-closed-CMx3VK_Y.js +0 -6
- langflow/frontend/assets/git-pull-request-create-VathYLG_.js +0 -6
- langflow/frontend/assets/git-pull-request-create-arrow-1hRlGHo3.js +0 -6
- langflow/frontend/assets/git-pull-request-draft-4Z_CKmgP.js +0 -6
- langflow/frontend/assets/github-DMd3-02s.js +0 -6
- langflow/frontend/assets/gitlab-BU_ET8_I.js +0 -6
- langflow/frontend/assets/glass-water-BqDe1o7x.js +0 -6
- langflow/frontend/assets/glasses-DsB_LgQy.js +0 -6
- langflow/frontend/assets/globe-80YdjaPb.js +0 -6
- langflow/frontend/assets/globe-lock-Bw-Cd6nF.js +0 -6
- langflow/frontend/assets/goal-DY8IQVn2.js +0 -6
- langflow/frontend/assets/grab-Ui5GAGKe.js +0 -6
- langflow/frontend/assets/graduation-cap-DZd5qlKy.js +0 -6
- langflow/frontend/assets/grape-CPzDhPID.js +0 -6
- langflow/frontend/assets/grid-2x2-UdjQWFOV.js +0 -6
- langflow/frontend/assets/grid-2x2-check-C8BnNSGI.js +0 -6
- langflow/frontend/assets/grid-2x2-plus-BBMBYUjt.js +0 -6
- langflow/frontend/assets/grid-2x2-x-Dj93ZVGM.js +0 -6
- langflow/frontend/assets/grid-3x3-DbDDPh2n.js +0 -6
- langflow/frontend/assets/grip-Bz90IxX4.js +0 -6
- langflow/frontend/assets/grip-horizontal-Cz3Khj1B.js +0 -6
- langflow/frontend/assets/grip-vertical-DtSLX07r.js +0 -6
- langflow/frontend/assets/group-DKDntQd1.js +0 -6
- langflow/frontend/assets/guitar-BWU2nMRN.js +0 -6
- langflow/frontend/assets/ham-Cma1G8Xs.js +0 -6
- langflow/frontend/assets/hammer-1jG8-eZm.js +0 -6
- langflow/frontend/assets/hand-BIkojRmR.js +0 -6
- langflow/frontend/assets/hand-coins-hqlxvxmm.js +0 -6
- langflow/frontend/assets/hand-heart-6e_zAGTv.js +0 -6
- langflow/frontend/assets/hand-helping-BF5hAl_w.js +0 -6
- langflow/frontend/assets/hand-metal-BVy7_4cQ.js +0 -6
- langflow/frontend/assets/hand-platter-D-xscMcU.js +0 -6
- langflow/frontend/assets/handshake-7AXlWWGI.js +0 -6
- langflow/frontend/assets/hard-drive-BxRnPUbK.js +0 -6
- langflow/frontend/assets/hard-drive-download-BX5QHVFg.js +0 -6
- langflow/frontend/assets/hard-drive-upload-chMNyeSV.js +0 -6
- langflow/frontend/assets/hard-hat-WbgSDXg5.js +0 -6
- langflow/frontend/assets/hash-BQ4uug9c.js +0 -6
- langflow/frontend/assets/haze-D-GnfVst.js +0 -6
- langflow/frontend/assets/hdmi-port-BEAd4Wt8.js +0 -6
- langflow/frontend/assets/heading-1-CiMsyZDi.js +0 -6
- langflow/frontend/assets/heading-2-Czgj1mkH.js +0 -6
- langflow/frontend/assets/heading-3-CqFM-jwy.js +0 -6
- langflow/frontend/assets/heading-4-CjwRHdKG.js +0 -6
- langflow/frontend/assets/heading-5-C-KlC8s6.js +0 -6
- langflow/frontend/assets/heading-6-5tcIOjiS.js +0 -6
- langflow/frontend/assets/heading-CD7FeKN6.js +0 -6
- langflow/frontend/assets/headphone-off-COoiJV1r.js +0 -6
- langflow/frontend/assets/headphones-D7S1AuC5.js +0 -6
- langflow/frontend/assets/headset-CdE6Eym6.js +0 -6
- langflow/frontend/assets/heart-Ch8JKUDz.js +0 -6
- langflow/frontend/assets/heart-crack-BPf4Xkm0.js +0 -6
- langflow/frontend/assets/heart-handshake-CDz69yh7.js +0 -6
- langflow/frontend/assets/heart-minus-CqauV_Cx.js +0 -6
- langflow/frontend/assets/heart-off-DC5wBzLR.js +0 -6
- langflow/frontend/assets/heart-plus-hOv51cgy.js +0 -6
- langflow/frontend/assets/heart-pulse-C2nsALV-.js +0 -6
- langflow/frontend/assets/heater-DxLum1pL.js +0 -6
- langflow/frontend/assets/hexagon-D5ZXW5tT.js +0 -6
- langflow/frontend/assets/highlighter-DPDvMwDP.js +0 -6
- langflow/frontend/assets/history-m8Qq4Xlb.js +0 -6
- langflow/frontend/assets/hop-D-AxGIUW.js +0 -6
- langflow/frontend/assets/hop-off-hT2fB8jS.js +0 -6
- langflow/frontend/assets/hospital-CvJ0Ia_m.js +0 -6
- langflow/frontend/assets/hotel-D3j7DKAC.js +0 -6
- langflow/frontend/assets/hourglass-BWi6M7BG.js +0 -6
- langflow/frontend/assets/house-CgaaxzBK.js +0 -6
- langflow/frontend/assets/house-plug-CrW_XgHI.js +0 -6
- langflow/frontend/assets/house-plus-F3MX9EEk.js +0 -6
- langflow/frontend/assets/house-wifi-DtAD1vys.js +0 -6
- langflow/frontend/assets/ice-cream-bowl-C03CRKp4.js +0 -6
- langflow/frontend/assets/ice-cream-cone-BJabUeaL.js +0 -6
- langflow/frontend/assets/id-card-eNoaabz9.js +0 -6
- langflow/frontend/assets/image-Blup1gPl.js +0 -6
- langflow/frontend/assets/image-down-C61adJyK.js +0 -6
- langflow/frontend/assets/image-minus-C3dJhb4e.js +0 -6
- langflow/frontend/assets/image-off-CTcTSFvq.js +0 -6
- langflow/frontend/assets/image-play-DDGhNBe9.js +0 -6
- langflow/frontend/assets/image-plus-BBgwn8Sd.js +0 -6
- langflow/frontend/assets/image-up-BbB-kmNq.js +0 -6
- langflow/frontend/assets/image-upscale-BuO3Qya1.js +0 -6
- langflow/frontend/assets/images-BiSj3APX.js +0 -6
- langflow/frontend/assets/import-B-7G1Qt_.js +0 -6
- langflow/frontend/assets/inbox-Cyq4vqkn.js +0 -6
- langflow/frontend/assets/indent-decrease-DEXPKrbt.js +0 -6
- langflow/frontend/assets/indent-increase-2G5O9EIn.js +0 -6
- langflow/frontend/assets/index-0FVhSSXv.js +0 -205
- langflow/frontend/assets/index-3TrwYqia.js +0 -1
- langflow/frontend/assets/index-4tJA7_nN.js +0 -1
- langflow/frontend/assets/index-6z0Nqvyk.js +0 -1
- langflow/frontend/assets/index-B-wbXhJt.js +0 -1
- langflow/frontend/assets/index-B-zoVY6N.js +0 -1
- langflow/frontend/assets/index-B0_6chj_.js +0 -1
- langflow/frontend/assets/index-B0a_OwEU.js +0 -1
- langflow/frontend/assets/index-B2m30Cet.js +0 -1
- langflow/frontend/assets/index-B3onOnMw.js +0 -1
- langflow/frontend/assets/index-B7uNcRJ1.js +0 -1
- langflow/frontend/assets/index-B90nnG-X.js +0 -1
- langflow/frontend/assets/index-BBHMmEw_.js +0 -1
- langflow/frontend/assets/index-BB_YHLpx.js +0 -1
- langflow/frontend/assets/index-BDj-iXXL.js +0 -1
- langflow/frontend/assets/index-BE8UJPuj.js +0 -1
- langflow/frontend/assets/index-BF_6Sfpu.js +0 -1
- langflow/frontend/assets/index-BImV1khi.js +0 -495
- langflow/frontend/assets/index-BK82cETY.js +0 -1
- langflow/frontend/assets/index-BMIxHQqW.js +0 -1
- langflow/frontend/assets/index-BPfryKGe.js +0 -1
- langflow/frontend/assets/index-BPoWJLjN.js +0 -14
- langflow/frontend/assets/index-BPy7LexL.js +0 -1
- langflow/frontend/assets/index-BUHeDdFy.js +0 -1
- langflow/frontend/assets/index-BUb0b7ZX.js +0 -1
- langflow/frontend/assets/index-BUbZZukK.js +0 -1
- langflow/frontend/assets/index-BV5J-v-J.js +0 -399
- langflow/frontend/assets/index-BWd0ZN4Z.js +0 -1
- langflow/frontend/assets/index-BYochfm8.js +0 -1
- langflow/frontend/assets/index-BZ-7dQnL.js +0 -1
- langflow/frontend/assets/index-BZmREVHV.js +0 -1
- langflow/frontend/assets/index-B_8ZL5Hy.js +0 -1
- langflow/frontend/assets/index-B_MVKVuF.js +0 -1
- langflow/frontend/assets/index-Ba1bU4sM.js +0 -1
- langflow/frontend/assets/index-Ba7-7Y4d.js +0 -1
- langflow/frontend/assets/index-Bc3VsIgk.js +0 -1
- langflow/frontend/assets/index-BjqgdepV.js +0 -1
- langflow/frontend/assets/index-BkuIpYm8.js +0 -1
- langflow/frontend/assets/index-BlSzfje3.js +0 -1
- langflow/frontend/assets/index-Bmg2KVh7.js +0 -21
- langflow/frontend/assets/index-Bn0-oJDX.js +0 -1
- langflow/frontend/assets/index-Bnz4XJLx.js +0 -1
- langflow/frontend/assets/index-BqyyhVGV.js +0 -1
- langflow/frontend/assets/index-BrBvpJOO.js +0 -20
- langflow/frontend/assets/index-BrGwyEoL.js +0 -1
- langflow/frontend/assets/index-Brdx25QD.js +0 -1
- langflow/frontend/assets/index-Bs0eD38T.js +0 -1
- langflow/frontend/assets/index-BsIUtXG7.js +0 -1
- langflow/frontend/assets/index-Bv9WeVXs.js +0 -1
- langflow/frontend/assets/index-BxpvIsii.js +0 -1
- langflow/frontend/assets/index-BzTe6EYl.js +0 -1
- langflow/frontend/assets/index-C5vI_DSn.js +0 -1
- langflow/frontend/assets/index-C7DBsE76.js +0 -1
- langflow/frontend/assets/index-C7xEabxZ.js +0 -1
- langflow/frontend/assets/index-C8SBiyP0.js +0 -1
- langflow/frontend/assets/index-C9C4YVFL.js +0 -1
- langflow/frontend/assets/index-CAM7421R.js +0 -1
- langflow/frontend/assets/index-CAx53syk.js +0 -1
- langflow/frontend/assets/index-CBVLw8FA.js +0 -1
- langflow/frontend/assets/index-CC6ON7Xj.js +0 -1
- langflow/frontend/assets/index-CCCVPbc3.js +0 -1
- langflow/frontend/assets/index-CDDB9iyu.js +0 -1
- langflow/frontend/assets/index-CH-Nr_Xj.js +0 -127
- langflow/frontend/assets/index-CH3Fbxcb.js +0 -1
- langflow/frontend/assets/index-CH4A6lMb.js +0 -1
- langflow/frontend/assets/index-CI2V4Zfj.js +0 -1
- langflow/frontend/assets/index-CJ8Nr12j.js +0 -1
- langflow/frontend/assets/index-CKbYBqDg.js +0 -1
- langflow/frontend/assets/index-CKpYWc8V.js +0 -1
- langflow/frontend/assets/index-CNVTXezp.js +0 -1
- langflow/frontend/assets/index-COBP87dd.js +0 -7
- langflow/frontend/assets/index-CQ8v6mfY.js +0 -1
- langflow/frontend/assets/index-CQL2k-_E.js +0 -1
- langflow/frontend/assets/index-CQuU9_fh.js +0 -1
- langflow/frontend/assets/index-CTEuNhFa.js +0 -7323
- langflow/frontend/assets/index-CULqnlGT.js +0 -1
- langflow/frontend/assets/index-CVMEQfzA.js +0 -1
- langflow/frontend/assets/index-CVR_do-o.js +0 -1
- langflow/frontend/assets/index-CWSXsDGU.js +0 -1
- langflow/frontend/assets/index-CX-PfSVM.js +0 -1
- langflow/frontend/assets/index-CZ8tibho.js +0 -1
- langflow/frontend/assets/index-CZTlbmew.js +0 -1
- langflow/frontend/assets/index-C_ShAAtC.js +0 -1
- langflow/frontend/assets/index-Cc2rBMbl.js +0 -1
- langflow/frontend/assets/index-CcSLA83H.js +0 -1
- langflow/frontend/assets/index-CdtkkJBK.js +0 -1
- langflow/frontend/assets/index-CgpTeXS9.js +0 -1
- langflow/frontend/assets/index-ChynGSoW.js +0 -1
- langflow/frontend/assets/index-Cj4zskyc.js +0 -1
- langflow/frontend/assets/index-Cn-Pe2iI.js +0 -1
- langflow/frontend/assets/index-CnH1bLaj.js +0 -1
- langflow/frontend/assets/index-CnZk24hL.js +0 -1
- langflow/frontend/assets/index-Cq4kSK7t.js +0 -1
- langflow/frontend/assets/index-CqlUxg9E.js +0 -1
- langflow/frontend/assets/index-Cr_BpdBW.js +0 -1
- langflow/frontend/assets/index-CriFKi76.js +0 -1
- langflow/frontend/assets/index-CsaGD2DA.js +0 -1
- langflow/frontend/assets/index-CsuUoVB-.js +0 -1
- langflow/frontend/assets/index-CuUVncgq.js +0 -1
- langflow/frontend/assets/index-CvbYiTWN.js +0 -1
- langflow/frontend/assets/index-CyxvoQUw.js +0 -1
- langflow/frontend/assets/index-D-x1xRrh.js +0 -1
- langflow/frontend/assets/index-D0uzI1O9.js +0 -1
- langflow/frontend/assets/index-D19iHHLJ.js +0 -1
- langflow/frontend/assets/index-D4p1ZLVX.js +0 -1
- langflow/frontend/assets/index-D6dQ6puQ.js +0 -1
- langflow/frontend/assets/index-D7EzEbxj.js +0 -1
- langflow/frontend/assets/index-D7JcUIGR.js +0 -1
- langflow/frontend/assets/index-D854M0_Y.js +0 -1
- langflow/frontend/assets/index-D88_YaoZ.js +0 -1
- langflow/frontend/assets/index-DBf8ynaZ.js +0 -1
- langflow/frontend/assets/index-DBpyCJ7o.js +0 -1
- langflow/frontend/assets/index-DEOJMf2K.js +0 -1
- langflow/frontend/assets/index-DEXnLTMJ.js +0 -1
- langflow/frontend/assets/index-DJuq831c.js +0 -1
- langflow/frontend/assets/index-DOZ-8rBU.js +0 -1
- langflow/frontend/assets/index-DOwyim5c.js +0 -2
- langflow/frontend/assets/index-DPndDoCo.js +0 -1
- langflow/frontend/assets/index-DRZjpDlS.js +0 -767
- langflow/frontend/assets/index-DTryTo6Q.js +0 -1
- langflow/frontend/assets/index-DTwufW2W.js +0 -1
- langflow/frontend/assets/index-DVEX_HvJ.js +0 -1
- langflow/frontend/assets/index-DWNBIxSU.js +0 -1
- langflow/frontend/assets/index-DWkXX_YH.js +0 -1
- langflow/frontend/assets/index-DWzy33dX.js +0 -1
- langflow/frontend/assets/index-DZ8wwkX-.js +0 -1
- langflow/frontend/assets/index-DZK5BZ9V.js +0 -1
- langflow/frontend/assets/index-Da-5C6pQ.js +0 -1
- langflow/frontend/assets/index-DaRoQgoQ.js +0 -1
- langflow/frontend/assets/index-DdohG-Qv.js +0 -1
- langflow/frontend/assets/index-DfIZo4rh.js +0 -1
- langflow/frontend/assets/index-DguSSpbV.js +0 -381
- langflow/frontend/assets/index-DhLLSj_s.js +0 -1
- langflow/frontend/assets/index-DkxRkOAO.js +0 -13
- langflow/frontend/assets/index-DlcXxKOf.js +0 -1
- langflow/frontend/assets/index-Dn7Bu2s3.js +0 -1
- langflow/frontend/assets/index-DqytFMQU.js +0 -1
- langflow/frontend/assets/index-DsWxDyLL.js +0 -1
- langflow/frontend/assets/index-DucJAaGN.js +0 -1
- langflow/frontend/assets/index-Duvn0GMv.js +0 -1
- langflow/frontend/assets/index-Dv-O2BNC.js +0 -1
- langflow/frontend/assets/index-DvD84j3j.js +0 -1
- langflow/frontend/assets/index-DwyTXOJO.js +0 -108
- langflow/frontend/assets/index-DyBgwwg4.js +0 -1
- langflow/frontend/assets/index-Dydanyt3.js +0 -1
- langflow/frontend/assets/index-DyfrLdCx.js +0 -1
- langflow/frontend/assets/index-FxcnBKx3.js +0 -1
- langflow/frontend/assets/index-H4l1i6Hf.js +0 -1
- langflow/frontend/assets/index-HvwWx3rB.js +0 -1
- langflow/frontend/assets/index-IHc6vxe5.js +0 -1
- langflow/frontend/assets/index-JPA_hYSx.js +0 -1
- langflow/frontend/assets/index-LeTXg6wZ.js +0 -1
- langflow/frontend/assets/index-NQqBMCDr.js +0 -1
- langflow/frontend/assets/index-OL9tpD8A.js +0 -1
- langflow/frontend/assets/index-Ow6054nJ.js +0 -1
- langflow/frontend/assets/index-Pla3pGip.js +0 -1
- langflow/frontend/assets/index-TLARXkF8.js +0 -1
- langflow/frontend/assets/index-TgoV8nd0.js +0 -1
- langflow/frontend/assets/index-UehLlmiN.js +0 -1
- langflow/frontend/assets/index-VPb5Shjk.js +0 -1
- langflow/frontend/assets/index-VmuECpu0.js +0 -1
- langflow/frontend/assets/index-XXuNHAdJ.js +0 -1
- langflow/frontend/assets/index-ZTgKVccl.js +0 -1
- langflow/frontend/assets/index-bbTYAs6U.js +0 -1
- langflow/frontend/assets/index-fcx9Ylo7.js +0 -1
- langflow/frontend/assets/index-fmLYhkZ4.js +0 -1
- langflow/frontend/assets/index-gew3mVjB.js +0 -1
- langflow/frontend/assets/index-gkeXAmfA.js +0 -1
- langflow/frontend/assets/index-gsd0bDLj.js +0 -1
- langflow/frontend/assets/index-h1HAJ9a1.js +0 -1
- langflow/frontend/assets/index-icvJtI-t.js +0 -1
- langflow/frontend/assets/index-ie1u1Rqn.js +0 -1
- langflow/frontend/assets/index-is2u2Wgo.js +0 -1
- langflow/frontend/assets/index-jBXwIfZq.js +0 -1
- langflow/frontend/assets/index-lKCW6ily.js +0 -1
- langflow/frontend/assets/index-lUnzlObc.js +0 -281
- langflow/frontend/assets/index-lqCXugWU.js +0 -1
- langflow/frontend/assets/index-m0YGyHmR.js +0 -1
- langflow/frontend/assets/index-nXK9OaaZ.js +0 -1
- langflow/frontend/assets/index-nj_JyHAD.js +0 -1
- langflow/frontend/assets/index-oMJGhkku.js +0 -185
- langflow/frontend/assets/index-p-PXl1xt.js +0 -1
- langflow/frontend/assets/index-sz-M1vIJ.js +0 -1
- langflow/frontend/assets/index-tukYrrXk.js +0 -1
- langflow/frontend/assets/index-vUHuwGVZ.js +0 -1
- langflow/frontend/assets/indian-rupee-O9CajFfS.js +0 -6
- langflow/frontend/assets/infinity-BLkxpdqX.js +0 -6
- langflow/frontend/assets/info-CRQ-dTnF.js +0 -6
- langflow/frontend/assets/inspection-panel-DyJB7Wom.js +0 -6
- langflow/frontend/assets/instagram-DZaH_wEg.js +0 -6
- langflow/frontend/assets/italic-BLBM0ICf.js +0 -6
- langflow/frontend/assets/iteration-ccw-Ctc5cT_j.js +0 -6
- langflow/frontend/assets/iteration-cw-D3WN-p9y.js +0 -6
- langflow/frontend/assets/japanese-yen-BaNr_JXN.js +0 -6
- langflow/frontend/assets/joystick-Dd6AOiiS.js +0 -6
- langflow/frontend/assets/kanban-BtZegnlG.js +0 -6
- langflow/frontend/assets/key-round-D_3Woi3H.js +0 -6
- langflow/frontend/assets/key-square-DRvn_Fhv.js +0 -6
- langflow/frontend/assets/key-zFF66mCi.js +0 -6
- langflow/frontend/assets/keyboard-B0SoxtCN.js +0 -6
- langflow/frontend/assets/keyboard-music-DG_C2eKO.js +0 -6
- langflow/frontend/assets/keyboard-off-D7BZV1cQ.js +0 -6
- langflow/frontend/assets/lamp-Cp1EqzWW.js +0 -6
- langflow/frontend/assets/lamp-ceiling-Cr08nNTI.js +0 -6
- langflow/frontend/assets/lamp-desk-DvViVB0_.js +0 -6
- langflow/frontend/assets/lamp-floor-Cp21ki8G.js +0 -6
- langflow/frontend/assets/lamp-wall-down-DvS5L49E.js +0 -6
- langflow/frontend/assets/lamp-wall-up-O77RoPL-.js +0 -6
- langflow/frontend/assets/land-plot-D3xUsCYa.js +0 -6
- langflow/frontend/assets/landmark-2eY-OvMd.js +0 -6
- langflow/frontend/assets/languages-BdVhV2IM.js +0 -6
- langflow/frontend/assets/laptop-C2VZUCQD.js +0 -6
- langflow/frontend/assets/laptop-minimal-BJmhaeC9.js +0 -6
- langflow/frontend/assets/laptop-minimal-check-DrO5ess9.js +0 -6
- langflow/frontend/assets/lasso-DNQGgH84.js +0 -6
- langflow/frontend/assets/lasso-select-BbdGmThB.js +0 -6
- langflow/frontend/assets/laugh-CuitpOqG.js +0 -6
- langflow/frontend/assets/layers-2-FPRQxAFw.js +0 -6
- langflow/frontend/assets/layers-DRi3jFWj.js +0 -6
- langflow/frontend/assets/layout-dashboard-BF0un9K1.js +0 -6
- langflow/frontend/assets/layout-grid-CYofp62a.js +0 -6
- langflow/frontend/assets/layout-list-q7uJyOgL.js +0 -6
- langflow/frontend/assets/layout-panel-left-By0304sR.js +0 -6
- langflow/frontend/assets/layout-panel-top-7c11t79V.js +0 -6
- langflow/frontend/assets/layout-template-DlHlYFx3.js +0 -6
- langflow/frontend/assets/lazyIconImports-Cpou1J0T.js +0 -2
- langflow/frontend/assets/leaf-BNWCDP1g.js +0 -6
- langflow/frontend/assets/leafy-green-DHk3mPVC.js +0 -6
- langflow/frontend/assets/lectern-DEclGS1a.js +0 -6
- langflow/frontend/assets/letter-text-CzMFT0LY.js +0 -6
- langflow/frontend/assets/library-big-v4lQ02Zc.js +0 -6
- langflow/frontend/assets/library-bqq5Rhw3.js +0 -6
- langflow/frontend/assets/life-buoy-BQVxU42T.js +0 -6
- langflow/frontend/assets/ligature-CiYMF-Zl.js +0 -6
- langflow/frontend/assets/lightbulb-C1uLV46z.js +0 -6
- langflow/frontend/assets/lightbulb-off-CC_iPnyx.js +0 -6
- langflow/frontend/assets/link-2-C82GqZ-C.js +0 -6
- langflow/frontend/assets/link-2-off-BgWfumJo.js +0 -6
- langflow/frontend/assets/link-DTylDZ0C.js +0 -6
- langflow/frontend/assets/linkedin-CpAifWSc.js +0 -6
- langflow/frontend/assets/list-Bsm1c838.js +0 -6
- langflow/frontend/assets/list-check-DkFVgmbv.js +0 -6
- langflow/frontend/assets/list-checks-CH8lwwUg.js +0 -6
- langflow/frontend/assets/list-collapse-D2zPQK9o.js +0 -6
- langflow/frontend/assets/list-end-BlRzFD6x.js +0 -6
- langflow/frontend/assets/list-filter-DOGy2z29.js +0 -6
- langflow/frontend/assets/list-filter-plus-DCVg8G43.js +0 -6
- langflow/frontend/assets/list-minus-BIgBUelo.js +0 -6
- langflow/frontend/assets/list-music-dBn-4Mm8.js +0 -6
- langflow/frontend/assets/list-ordered-DrUsxiSC.js +0 -6
- langflow/frontend/assets/list-plus-B921qzMz.js +0 -6
- langflow/frontend/assets/list-restart-DZP10dFa.js +0 -6
- langflow/frontend/assets/list-start-Dq6SleaQ.js +0 -6
- langflow/frontend/assets/list-todo-DoArrowv.js +0 -6
- langflow/frontend/assets/list-tree-BteVOs83.js +0 -6
- langflow/frontend/assets/list-video-DOUMNcqp.js +0 -6
- langflow/frontend/assets/list-x-Cn7qooKc.js +0 -6
- langflow/frontend/assets/loader-CLSGXN2K.js +0 -6
- langflow/frontend/assets/loader-circle-CbBtPl5L.js +0 -6
- langflow/frontend/assets/loader-pinwheel-DGQQ3P0g.js +0 -6
- langflow/frontend/assets/locate-BIDQI7kl.js +0 -6
- langflow/frontend/assets/locate-fixed-1ZjWxarq.js +0 -6
- langflow/frontend/assets/locate-off-f5erpF72.js +0 -6
- langflow/frontend/assets/location-edit-B4sHedB_.js +0 -6
- langflow/frontend/assets/lock-kHFfo1hu.js +0 -6
- langflow/frontend/assets/lock-keyhole-B-CuQgk8.js +0 -6
- langflow/frontend/assets/lock-keyhole-open-D4j7TAAJ.js +0 -6
- langflow/frontend/assets/lock-open-Dcu-zpze.js +0 -6
- langflow/frontend/assets/log-in-_KHOd-3D.js +0 -6
- langflow/frontend/assets/log-out-Xkeby2sI.js +0 -6
- langflow/frontend/assets/logs-CtG2TZ4x.js +0 -6
- langflow/frontend/assets/lollipop-Cew1zdny.js +0 -6
- langflow/frontend/assets/luggage-R4ZGQqSn.js +0 -6
- langflow/frontend/assets/magnet-DOeB4KDt.js +0 -6
- langflow/frontend/assets/mail-Dgs-CcLl.js +0 -6
- langflow/frontend/assets/mail-check-BAqb6yI8.js +0 -6
- langflow/frontend/assets/mail-minus-D1XUAODi.js +0 -6
- langflow/frontend/assets/mail-open-C2DJBolg.js +0 -6
- langflow/frontend/assets/mail-plus-Bl8r6je6.js +0 -6
- langflow/frontend/assets/mail-question-B5s6mxi8.js +0 -6
- langflow/frontend/assets/mail-search--7gakGgL.js +0 -6
- langflow/frontend/assets/mail-warning-Ch0V9e_Z.js +0 -6
- langflow/frontend/assets/mail-x-Bwpl0eMc.js +0 -6
- langflow/frontend/assets/mailbox-nJIr9W2E.js +0 -6
- langflow/frontend/assets/mails-81iqcapA.js +0 -6
- langflow/frontend/assets/map-CQftFnvl.js +0 -6
- langflow/frontend/assets/map-pin-CUOp900Y.js +0 -6
- langflow/frontend/assets/map-pin-check-DbqWv8NL.js +0 -6
- langflow/frontend/assets/map-pin-check-inside-CWLZqSnt.js +0 -6
- langflow/frontend/assets/map-pin-house-CO861FH0.js +0 -6
- langflow/frontend/assets/map-pin-minus-B2S150yc.js +0 -6
- langflow/frontend/assets/map-pin-minus-inside-DwS78c7Y.js +0 -6
- langflow/frontend/assets/map-pin-off-CA45Pbr2.js +0 -6
- langflow/frontend/assets/map-pin-plus-C3DW3yiK.js +0 -6
- langflow/frontend/assets/map-pin-plus-inside-CEyg5KWT.js +0 -6
- langflow/frontend/assets/map-pin-x-inside-DlbdMlF9.js +0 -6
- langflow/frontend/assets/map-pin-x-tCZ255vf.js +0 -6
- langflow/frontend/assets/map-pinned-U7TH5B5a.js +0 -6
- langflow/frontend/assets/map-plus-DxkNK7O-.js +0 -6
- langflow/frontend/assets/mars-Bq6dxU-a.js +0 -6
- langflow/frontend/assets/mars-stroke-CFm76TLb.js +0 -6
- langflow/frontend/assets/martini-Dw6KBRgP.js +0 -6
- langflow/frontend/assets/maximize-2-BNKFwRHb.js +0 -6
- langflow/frontend/assets/maximize-D3-JEsfX.js +0 -6
- langflow/frontend/assets/medal-CauenFs4.js +0 -6
- langflow/frontend/assets/megaphone-D7kmzfRC.js +0 -6
- langflow/frontend/assets/megaphone-off-Cn6Jo5m8.js +0 -6
- langflow/frontend/assets/meh-z760gabb.js +0 -6
- langflow/frontend/assets/memory-stick-KRxB_2jP.js +0 -6
- langflow/frontend/assets/menu-uOGZG3qo.js +0 -6
- langflow/frontend/assets/merge-DnDGlkVl.js +0 -6
- langflow/frontend/assets/message-circle-BkFBLmV0.js +0 -6
- langflow/frontend/assets/message-circle-code-twRgt9ie.js +0 -6
- langflow/frontend/assets/message-circle-dashed-CIdxrnDM.js +0 -6
- langflow/frontend/assets/message-circle-heart-DMonDpvo.js +0 -6
- langflow/frontend/assets/message-circle-more-BJbPTNX8.js +0 -6
- langflow/frontend/assets/message-circle-off-DPHNReWf.js +0 -6
- langflow/frontend/assets/message-circle-plus-T93DQ6jO.js +0 -6
- langflow/frontend/assets/message-circle-question-Cxt-C85V.js +0 -6
- langflow/frontend/assets/message-circle-reply-BglI2Pvs.js +0 -6
- langflow/frontend/assets/message-circle-warning-D6CQM6xv.js +0 -6
- langflow/frontend/assets/message-circle-x-CIPC25Ab.js +0 -6
- langflow/frontend/assets/message-square-BFwyyBT7.js +0 -6
- langflow/frontend/assets/message-square-code-CyTY-CB1.js +0 -6
- langflow/frontend/assets/message-square-dashed-CRkRfB3s.js +0 -6
- langflow/frontend/assets/message-square-diff-CzoRjWTT.js +0 -6
- langflow/frontend/assets/message-square-dot-DCjfEv6u.js +0 -6
- langflow/frontend/assets/message-square-heart-LG_8nM-J.js +0 -6
- langflow/frontend/assets/message-square-lock-B5TelWyj.js +0 -6
- langflow/frontend/assets/message-square-more-oHlvSOaG.js +0 -6
- langflow/frontend/assets/message-square-off-J3wAR8jK.js +0 -6
- langflow/frontend/assets/message-square-plus-Bw2mX7ri.js +0 -6
- langflow/frontend/assets/message-square-quote-CjQ-xjIp.js +0 -6
- langflow/frontend/assets/message-square-reply-tOnN3-5u.js +0 -6
- langflow/frontend/assets/message-square-share-BbLmn1G2.js +0 -6
- langflow/frontend/assets/message-square-text-CRVWb6Cp.js +0 -6
- langflow/frontend/assets/message-square-warning-BY120G5T.js +0 -6
- langflow/frontend/assets/message-square-x-BgfkluvH.js +0 -6
- langflow/frontend/assets/messages-square-1baSsz7J.js +0 -6
- langflow/frontend/assets/mic-CoMOmSwJ.js +0 -6
- langflow/frontend/assets/mic-off-uugKWxAQ.js +0 -6
- langflow/frontend/assets/mic-vocal-Ph31ypWV.js +0 -6
- langflow/frontend/assets/microchip-oIIqhc8B.js +0 -6
- langflow/frontend/assets/microscope-JviZz8EH.js +0 -6
- langflow/frontend/assets/microwave-Cb3tDfts.js +0 -6
- langflow/frontend/assets/milestone-we_zJhAj.js +0 -6
- langflow/frontend/assets/milk-Ds1WWU0k.js +0 -6
- langflow/frontend/assets/milk-off-DtKFexun.js +0 -6
- langflow/frontend/assets/minimize-2-46WSe-cS.js +0 -6
- langflow/frontend/assets/minimize-D471s40a.js +0 -6
- langflow/frontend/assets/monitor-COKxc0gv.js +0 -6
- langflow/frontend/assets/monitor-check-CFfe6oBS.js +0 -6
- langflow/frontend/assets/monitor-cog-CbgXTZuH.js +0 -6
- langflow/frontend/assets/monitor-dot-BdxxgiXD.js +0 -6
- langflow/frontend/assets/monitor-down-D9dqmgVG.js +0 -6
- langflow/frontend/assets/monitor-off-D-j26EZz.js +0 -6
- langflow/frontend/assets/monitor-pause-DfY_CimT.js +0 -6
- langflow/frontend/assets/monitor-play-D0VrVyw8.js +0 -6
- langflow/frontend/assets/monitor-smartphone-xsPkq7Af.js +0 -6
- langflow/frontend/assets/monitor-speaker-D1PpHMvJ.js +0 -6
- langflow/frontend/assets/monitor-stop-DuqxZnXB.js +0 -6
- langflow/frontend/assets/monitor-up-CSDmyc7t.js +0 -6
- langflow/frontend/assets/monitor-x-CcqgnK5f.js +0 -6
- langflow/frontend/assets/moon-Bc-GKFwT.js +0 -6
- langflow/frontend/assets/moon-star-De8EJ5ST.js +0 -6
- langflow/frontend/assets/mountain-Byfyw1_1.js +0 -6
- langflow/frontend/assets/mountain-snow-BozktKiw.js +0 -6
- langflow/frontend/assets/mouse-CnXbNZkF.js +0 -6
- langflow/frontend/assets/mouse-off-A9CV8v3e.js +0 -6
- langflow/frontend/assets/mouse-pointer-2-E2-CAYli.js +0 -6
- langflow/frontend/assets/mouse-pointer-D5ZpyXuu.js +0 -6
- langflow/frontend/assets/mouse-pointer-ban-KvFuo6C0.js +0 -6
- langflow/frontend/assets/mouse-pointer-click-D0oVH4nj.js +0 -6
- langflow/frontend/assets/move-3d-Dlna4k5m.js +0 -6
- langflow/frontend/assets/move-CicozcKz.js +0 -6
- langflow/frontend/assets/move-diagonal-2-1PxjsAeb.js +0 -6
- langflow/frontend/assets/move-diagonal-Bx7dX_j4.js +0 -6
- langflow/frontend/assets/move-down-D7YAMc7C.js +0 -6
- langflow/frontend/assets/move-down-left-DaCZ2XB7.js +0 -6
- langflow/frontend/assets/move-down-right-DgHZPcFQ.js +0 -6
- langflow/frontend/assets/move-horizontal-DdYIl4gV.js +0 -6
- langflow/frontend/assets/move-left-BqDYPNUw.js +0 -6
- langflow/frontend/assets/move-right-BLoOZHiE.js +0 -6
- langflow/frontend/assets/move-up-OPhbOP5P.js +0 -6
- langflow/frontend/assets/move-up-left-DfiRDuVI.js +0 -6
- langflow/frontend/assets/move-up-right-B8ZRd_FM.js +0 -6
- langflow/frontend/assets/move-vertical-owBNq-3q.js +0 -6
- langflow/frontend/assets/music-2-BSl2xmrB.js +0 -6
- langflow/frontend/assets/music-3-DcbdkGD7.js +0 -6
- langflow/frontend/assets/music-4-DQ_duFrH.js +0 -6
- langflow/frontend/assets/music-CdWslsrh.js +0 -6
- langflow/frontend/assets/navigation-2-off-kipqIC6c.js +0 -6
- langflow/frontend/assets/navigation-2-ou3_uwx_.js +0 -6
- langflow/frontend/assets/navigation-BGorI29_.js +0 -6
- langflow/frontend/assets/navigation-off-DiKBigUx.js +0 -6
- langflow/frontend/assets/network-B1zlCNCH.js +0 -6
- langflow/frontend/assets/newspaper-ZJkvUiGT.js +0 -6
- langflow/frontend/assets/nfc-ki1E6Wu_.js +0 -6
- langflow/frontend/assets/non-binary-Dw7g8ADa.js +0 -6
- langflow/frontend/assets/notebook-MGg1DFzz.js +0 -6
- langflow/frontend/assets/notebook-pen-Dn8gfd1n.js +0 -6
- langflow/frontend/assets/notebook-tabs-QnBSJLEd.js +0 -6
- langflow/frontend/assets/notebook-text-B7IuR6_c.js +0 -6
- langflow/frontend/assets/notepad-text-CckGiO6e.js +0 -6
- langflow/frontend/assets/notepad-text-dashed-KkN3Nakr.js +0 -6
- langflow/frontend/assets/nut-BXPbojDE.js +0 -6
- langflow/frontend/assets/nut-off-DZTCqi0s.js +0 -6
- langflow/frontend/assets/octagon-Up0Wyg0P.js +0 -6
- langflow/frontend/assets/octagon-alert-CKuEnfc8.js +0 -6
- langflow/frontend/assets/octagon-minus-COG8HpgJ.js +0 -6
- langflow/frontend/assets/octagon-pause-BsYhHQXx.js +0 -6
- langflow/frontend/assets/octagon-x-ChDFRb7_.js +0 -6
- langflow/frontend/assets/omega-DbnL9sfu.js +0 -6
- langflow/frontend/assets/option-BU0sXztM.js +0 -6
- langflow/frontend/assets/orbit-DA7LIi2l.js +0 -6
- langflow/frontend/assets/origami-3Mw-nuYZ.js +0 -6
- langflow/frontend/assets/package-2-D3YZn55Y.js +0 -6
- langflow/frontend/assets/package-DIxU8-mn.js +0 -6
- langflow/frontend/assets/package-check-COtMqIfA.js +0 -6
- langflow/frontend/assets/package-minus-DZANe_7p.js +0 -6
- langflow/frontend/assets/package-open-D7XrIaw9.js +0 -6
- langflow/frontend/assets/package-plus-CcvN7-U9.js +0 -6
- langflow/frontend/assets/package-search-ChoPdke-.js +0 -6
- langflow/frontend/assets/package-x-D16htF83.js +0 -6
- langflow/frontend/assets/paint-bucket-Cg95GQJg.js +0 -6
- langflow/frontend/assets/paint-roller-B9StqV_J.js +0 -6
- langflow/frontend/assets/paintbrush-Dqhtnpuw.js +0 -6
- langflow/frontend/assets/paintbrush-vertical-DNx8M5S3.js +0 -6
- langflow/frontend/assets/palette-ml0w3t49.js +0 -6
- langflow/frontend/assets/panel-bottom-B4Fc3TY7.js +0 -6
- langflow/frontend/assets/panel-bottom-close-BObhTb0s.js +0 -6
- langflow/frontend/assets/panel-bottom-dashed-gIsS9Hjf.js +0 -6
- langflow/frontend/assets/panel-bottom-open-DEOCcwzh.js +0 -6
- langflow/frontend/assets/panel-left-close-Dx5cCbL_.js +0 -6
- langflow/frontend/assets/panel-left-dashed-BcTUvq4P.js +0 -6
- langflow/frontend/assets/panel-left-open-CBaufHFE.js +0 -6
- langflow/frontend/assets/panel-right-DukXmi7_.js +0 -6
- langflow/frontend/assets/panel-right-close-BR1KtkeR.js +0 -6
- langflow/frontend/assets/panel-right-dashed-BgYuwA98.js +0 -6
- langflow/frontend/assets/panel-right-open-CDp7CHNs.js +0 -6
- langflow/frontend/assets/panel-top-CggW0ygS.js +0 -6
- langflow/frontend/assets/panel-top-close-CX83WQ0J.js +0 -6
- langflow/frontend/assets/panel-top-dashed-DjWcxIEH.js +0 -6
- langflow/frontend/assets/panel-top-open-5FBkjYnT.js +0 -6
- langflow/frontend/assets/panels-left-bottom-Dd5Uhjjk.js +0 -6
- langflow/frontend/assets/panels-right-bottom-D1VAC8Ws.js +0 -6
- langflow/frontend/assets/panels-top-left-DxWEvl8n.js +0 -6
- langflow/frontend/assets/paperclip-B0E4rvBS.js +0 -6
- langflow/frontend/assets/parentheses-GRd4nHRu.js +0 -6
- langflow/frontend/assets/parking-meter-B2lHw4LQ.js +0 -6
- langflow/frontend/assets/party-popper-BK2qV8eJ.js +0 -6
- langflow/frontend/assets/pause-K2jMW6A9.js +0 -6
- langflow/frontend/assets/paw-print-BGG82aAa.js +0 -6
- langflow/frontend/assets/pc-case-CzNSMaLT.js +0 -6
- langflow/frontend/assets/pen-BlTvvvRX.js +0 -6
- langflow/frontend/assets/pen-line-4xoIubOi.js +0 -6
- langflow/frontend/assets/pen-off-Bag43XIY.js +0 -6
- langflow/frontend/assets/pen-tool-vNJyU9of.js +0 -6
- langflow/frontend/assets/pencil-DZKbwkbZ.js +0 -6
- langflow/frontend/assets/pencil-line-Nt_KP5Lc.js +0 -6
- langflow/frontend/assets/pencil-off-CuDqMcng.js +0 -6
- langflow/frontend/assets/pencil-ruler-CImuuOx_.js +0 -6
- langflow/frontend/assets/pentagon-D-CZ45sZ.js +0 -6
- langflow/frontend/assets/percent-BjcnLxmM.js +0 -6
- langflow/frontend/assets/person-standing-BhX3_FVx.js +0 -6
- langflow/frontend/assets/philippine-peso-BGPHMxW-.js +0 -6
- langflow/frontend/assets/phone-Drv1610G.js +0 -6
- langflow/frontend/assets/phone-call-hNCS3EAC.js +0 -6
- langflow/frontend/assets/phone-forwarded-DPwM5QWJ.js +0 -6
- langflow/frontend/assets/phone-incoming-J8Zk7Uaq.js +0 -6
- langflow/frontend/assets/phone-missed-Bwf0yKjB.js +0 -6
- langflow/frontend/assets/phone-off-BEPNB9YQ.js +0 -6
- langflow/frontend/assets/phone-outgoing-Dd67K4qS.js +0 -6
- langflow/frontend/assets/pi-5tYLsPYG.js +0 -6
- langflow/frontend/assets/piano-BYOW-jJM.js +0 -6
- langflow/frontend/assets/pickaxe-xg-dd9G0.js +0 -6
- langflow/frontend/assets/picture-in-picture-2-DYvd32Sb.js +0 -6
- langflow/frontend/assets/picture-in-picture-BuYYC7zv.js +0 -6
- langflow/frontend/assets/piggy-bank-DqrvEQ1U.js +0 -6
- langflow/frontend/assets/pilcrow-Cdy2DjQu.js +0 -6
- langflow/frontend/assets/pilcrow-left-B6Ln7oAk.js +0 -6
- langflow/frontend/assets/pilcrow-right-hGingT2I.js +0 -6
- langflow/frontend/assets/pill-bottle-viCjW_dN.js +0 -6
- langflow/frontend/assets/pill-rcos0Gwl.js +0 -6
- langflow/frontend/assets/pin-COe3feft.js +0 -6
- langflow/frontend/assets/pin-off-Cf8rmYhN.js +0 -6
- langflow/frontend/assets/pipette-BD8aK2nD.js +0 -6
- langflow/frontend/assets/pizza-ChtyZT0P.js +0 -6
- langflow/frontend/assets/plane-BU8RSOGd.js +0 -6
- langflow/frontend/assets/plane-landing-CRsPY9tD.js +0 -6
- langflow/frontend/assets/plane-takeoff-COtgWdSj.js +0 -6
- langflow/frontend/assets/play-cUXKlRp3.js +0 -6
- langflow/frontend/assets/plug-2-CB_Ge12h.js +0 -6
- langflow/frontend/assets/plug-D-vLfFIX.js +0 -6
- langflow/frontend/assets/plug-zap-DKQDHSqW.js +0 -6
- langflow/frontend/assets/pocket-CysXRFIR.js +0 -6
- langflow/frontend/assets/pocket-knife-C7_ru-LL.js +0 -6
- langflow/frontend/assets/podcast-DJ5XAYjJ.js +0 -6
- langflow/frontend/assets/pointer-BIiC-_d_.js +0 -6
- langflow/frontend/assets/pointer-off-BgLdCJv2.js +0 -6
- langflow/frontend/assets/popcorn-PPPqTD51.js +0 -6
- langflow/frontend/assets/popsicle-KkBxYpO_.js +0 -6
- langflow/frontend/assets/pound-sterling-D6auPFM-.js +0 -6
- langflow/frontend/assets/power-DAittmgO.js +0 -6
- langflow/frontend/assets/power-off-CtyC7qMY.js +0 -6
- langflow/frontend/assets/presentation-CrLBd5SY.js +0 -6
- langflow/frontend/assets/printer-D-4NfnGp.js +0 -6
- langflow/frontend/assets/printer-check-BrudpiyS.js +0 -6
- langflow/frontend/assets/projector-CcBr8mus.js +0 -6
- langflow/frontend/assets/proportions-CjtlThAF.js +0 -6
- langflow/frontend/assets/puzzle-GqbuqBoI.js +0 -6
- langflow/frontend/assets/pyramid-A25y0wHK.js +0 -6
- langflow/frontend/assets/qr-code-CnbB-HOQ.js +0 -6
- langflow/frontend/assets/quote-8bjDM3DM.js +0 -6
- langflow/frontend/assets/rabbit-tPoi1qgo.js +0 -6
- langflow/frontend/assets/radar-DOoH9E2V.js +0 -6
- langflow/frontend/assets/radiation-Cs_vGE-8.js +0 -6
- langflow/frontend/assets/radical-l5TAqT6I.js +0 -6
- langflow/frontend/assets/radio-CHhGcBW-.js +0 -6
- langflow/frontend/assets/radio-receiver-lgMwagtd.js +0 -6
- langflow/frontend/assets/radio-tower-C47hi01B.js +0 -6
- langflow/frontend/assets/radius-GYZZpbcU.js +0 -6
- langflow/frontend/assets/rail-symbol-BEfZfdfa.js +0 -6
- langflow/frontend/assets/rainbow-DYaGMx8X.js +0 -6
- langflow/frontend/assets/rat-C4oT7Esn.js +0 -6
- langflow/frontend/assets/ratio-DWlHZIKo.js +0 -6
- langflow/frontend/assets/receipt-BWUMmVQx.js +0 -6
- langflow/frontend/assets/receipt-cent-C-INmgac.js +0 -6
- langflow/frontend/assets/receipt-euro-BXEdpPTC.js +0 -6
- langflow/frontend/assets/receipt-indian-rupee-Ix3oSht2.js +0 -6
- langflow/frontend/assets/receipt-japanese-yen-CnXVdgfQ.js +0 -6
- langflow/frontend/assets/receipt-pound-sterling-ViZJJzIl.js +0 -6
- langflow/frontend/assets/receipt-russian-ruble-B2X6Y82i.js +0 -6
- langflow/frontend/assets/receipt-swiss-franc-CG7XQFnM.js +0 -6
- langflow/frontend/assets/receipt-text-BFuy4Mtu.js +0 -6
- langflow/frontend/assets/rectangle-ellipsis-C0oDiTNW.js +0 -6
- langflow/frontend/assets/rectangle-goggles-DnpXYzwI.js +0 -6
- langflow/frontend/assets/rectangle-horizontal-C0jnuJHd.js +0 -6
- langflow/frontend/assets/rectangle-vertical-DWRK77EG.js +0 -6
- langflow/frontend/assets/recycle-DkYy8axK.js +0 -6
- langflow/frontend/assets/redo-2-BTDxMgjZ.js +0 -6
- langflow/frontend/assets/redo-BPIpXxhh.js +0 -6
- langflow/frontend/assets/redo-dot-DRM6Krp1.js +0 -6
- langflow/frontend/assets/refresh-ccw-CjjAztF7.js +0 -6
- langflow/frontend/assets/refresh-ccw-dot-CGdyOFyk.js +0 -6
- langflow/frontend/assets/refresh-cw-CmT4eP1U.js +0 -6
- langflow/frontend/assets/refresh-cw-off-R7RGumwY.js +0 -6
- langflow/frontend/assets/refrigerator-Bt5nPIOc.js +0 -6
- langflow/frontend/assets/regex-DXPhd4TQ.js +0 -6
- langflow/frontend/assets/remove-formatting-DnOY_Y_8.js +0 -6
- langflow/frontend/assets/repeat-1-B_BYElvF.js +0 -6
- langflow/frontend/assets/repeat-2-nZrjtGL9.js +0 -6
- langflow/frontend/assets/repeat-D71ZgNJH.js +0 -6
- langflow/frontend/assets/replace-CgT3zPue.js +0 -6
- langflow/frontend/assets/replace-all-goYc_7ja.js +0 -6
- langflow/frontend/assets/reply-Bk1gbMw1.js +0 -6
- langflow/frontend/assets/reply-all-DMC60NG1.js +0 -6
- langflow/frontend/assets/rewind-IkM2mqXp.js +0 -6
- langflow/frontend/assets/ribbon-BDF2Glqb.js +0 -6
- langflow/frontend/assets/rocket-DlBDrD19.js +0 -6
- langflow/frontend/assets/rocking-chair-mRglbsWf.js +0 -6
- langflow/frontend/assets/roller-coaster-B9C8vO02.js +0 -6
- langflow/frontend/assets/rotate-3d-CILd3GEW.js +0 -6
- langflow/frontend/assets/rotate-ccw-DtqiMJ2f.js +0 -6
- langflow/frontend/assets/rotate-ccw-key-CO5xvtp-.js +0 -6
- langflow/frontend/assets/rotate-ccw-square-stD8hoL5.js +0 -6
- langflow/frontend/assets/rotate-cw-CYhRTfOC.js +0 -6
- langflow/frontend/assets/rotate-cw-square-mudZ7kJf.js +0 -6
- langflow/frontend/assets/route-off-7TpcpjRK.js +0 -6
- langflow/frontend/assets/route-u8D7bxc0.js +0 -6
- langflow/frontend/assets/router-2HYD_5_E.js +0 -6
- langflow/frontend/assets/rows-2-B1HQxy9j.js +0 -6
- langflow/frontend/assets/rows-3-CPRHRKwH.js +0 -6
- langflow/frontend/assets/rows-4-DQiWV0KJ.js +0 -6
- langflow/frontend/assets/rss-Cq8PJFPa.js +0 -6
- langflow/frontend/assets/ruler-Baha0aCS.js +0 -6
- langflow/frontend/assets/ruler-dimension-line-D45C7zen.js +0 -6
- langflow/frontend/assets/russian-ruble-CRQXgdXr.js +0 -6
- langflow/frontend/assets/sailboat-CN71MmOO.js +0 -6
- langflow/frontend/assets/salad-BEAkQZLI.js +0 -6
- langflow/frontend/assets/sandwich-8-bhD6Lv.js +0 -6
- langflow/frontend/assets/satellite-M4Xy05pu.js +0 -6
- langflow/frontend/assets/satellite-dish-B-J5yd_u.js +0 -6
- langflow/frontend/assets/saudi-riyal-CLyYhFH6.js +0 -6
- langflow/frontend/assets/save-Cmg4FIq7.js +0 -6
- langflow/frontend/assets/save-all-KbILrbmU.js +0 -6
- langflow/frontend/assets/save-off-C4bXdmgS.js +0 -6
- langflow/frontend/assets/scale-3d-CbIbjoQ3.js +0 -6
- langflow/frontend/assets/scale-C1sJwlRK.js +0 -6
- langflow/frontend/assets/scaling-CvKV2_IZ.js +0 -6
- langflow/frontend/assets/scan-BDEwQ7Qe.js +0 -6
- langflow/frontend/assets/scan-barcode-C2nTxAk4.js +0 -6
- langflow/frontend/assets/scan-eye-BjJwhbWs.js +0 -6
- langflow/frontend/assets/scan-face-D1YY5tPf.js +0 -6
- langflow/frontend/assets/scan-heart-C9pNOc3_.js +0 -6
- langflow/frontend/assets/scan-line-CKEFJJud.js +0 -6
- langflow/frontend/assets/scan-qr-code-ZpPxr-2R.js +0 -6
- langflow/frontend/assets/scan-search-D3cLXOQE.js +0 -6
- langflow/frontend/assets/scan-text-R4Bo1rkO.js +0 -6
- langflow/frontend/assets/school-DHnEwERf.js +0 -6
- langflow/frontend/assets/scissors-DJBNVPEd.js +0 -6
- langflow/frontend/assets/scissors-line-dashed-DtbVK4yt.js +0 -6
- langflow/frontend/assets/screen-share-DRhvEcLS.js +0 -6
- langflow/frontend/assets/screen-share-off-B2PVmcvE.js +0 -6
- langflow/frontend/assets/scroll-BU6XKFjb.js +0 -6
- langflow/frontend/assets/scroll-text-BpNlVscN.js +0 -6
- langflow/frontend/assets/search-check-D-fxBLS6.js +0 -6
- langflow/frontend/assets/search-code-BfV61dvt.js +0 -6
- langflow/frontend/assets/search-slash-Cjg39A6b.js +0 -6
- langflow/frontend/assets/search-x-CrFEhfc4.js +0 -6
- langflow/frontend/assets/section-Dyb7dEpB.js +0 -6
- langflow/frontend/assets/send-BllmTSMK.js +0 -6
- langflow/frontend/assets/send-horizontal-CCxFsK5t.js +0 -6
- langflow/frontend/assets/send-to-back-BZ-WqaQe.js +0 -6
- langflow/frontend/assets/separator-horizontal-CFhasEpa.js +0 -6
- langflow/frontend/assets/separator-vertical-CK1na9fJ.js +0 -6
- langflow/frontend/assets/server-VD2WErCz.js +0 -6
- langflow/frontend/assets/server-cog-qPLT2GIt.js +0 -6
- langflow/frontend/assets/server-crash-BpLIHREN.js +0 -6
- langflow/frontend/assets/server-off-D2t2Lhg-.js +0 -6
- langflow/frontend/assets/settings-2-CTcz7fll.js +0 -6
- langflow/frontend/assets/settings-DU7g50L9.js +0 -6
- langflow/frontend/assets/shapes-D_kEvZKl.js +0 -6
- langflow/frontend/assets/share-2-VJhfJKXF.js +0 -6
- langflow/frontend/assets/share-Dd3bqAM0.js +0 -6
- langflow/frontend/assets/sheet-CEvHadfJ.js +0 -6
- langflow/frontend/assets/shell-fHfvIDwC.js +0 -6
- langflow/frontend/assets/shield-VfPqlRRB.js +0 -6
- langflow/frontend/assets/shield-alert-BOj9J5zA.js +0 -6
- langflow/frontend/assets/shield-ban-Doa7ulWd.js +0 -6
- langflow/frontend/assets/shield-check-DAQ-z00W.js +0 -6
- langflow/frontend/assets/shield-ellipsis-CtmsinWw.js +0 -6
- langflow/frontend/assets/shield-half-V-o-t5Lx.js +0 -6
- langflow/frontend/assets/shield-minus-BnemIpJa.js +0 -6
- langflow/frontend/assets/shield-off-CxWlvk7r.js +0 -6
- langflow/frontend/assets/shield-plus-QVkbakld.js +0 -6
- langflow/frontend/assets/shield-question-COpg9NoY.js +0 -6
- langflow/frontend/assets/shield-user-CoegU97t.js +0 -6
- langflow/frontend/assets/shield-x-CdAKkcdI.js +0 -6
- langflow/frontend/assets/ship-bCYOVjm_.js +0 -6
- langflow/frontend/assets/ship-wheel-aj3UgWgh.js +0 -6
- langflow/frontend/assets/shirt-BwKnuoqa.js +0 -6
- langflow/frontend/assets/shopping-bag-Bvykz-u-.js +0 -6
- langflow/frontend/assets/shopping-basket-BLh-v-4F.js +0 -6
- langflow/frontend/assets/shopping-cart-BNLlkyR3.js +0 -6
- langflow/frontend/assets/shovel-D-LTCign.js +0 -6
- langflow/frontend/assets/shower-head-CJm7lELS.js +0 -6
- langflow/frontend/assets/shredder-BN6oQYYI.js +0 -6
- langflow/frontend/assets/shrimp-B8mIXZcn.js +0 -6
- langflow/frontend/assets/shrink-B2Sm00Dl.js +0 -6
- langflow/frontend/assets/shrub-BKHi38Mv.js +0 -6
- langflow/frontend/assets/shuffle-BQfd6nc5.js +0 -6
- langflow/frontend/assets/sigma-B3b0S0YW.js +0 -6
- langflow/frontend/assets/signal-BL47tRVd.js +0 -6
- langflow/frontend/assets/signal-high-CPznMUVb.js +0 -6
- langflow/frontend/assets/signal-low-DdsZioS0.js +0 -6
- langflow/frontend/assets/signal-medium-MAOoWyo-.js +0 -6
- langflow/frontend/assets/signal-zero-DO9onBMK.js +0 -6
- langflow/frontend/assets/signature-CDNllhD4.js +0 -6
- langflow/frontend/assets/signpost-DZukqY2Q.js +0 -6
- langflow/frontend/assets/signpost-big-l_gZ54oE.js +0 -6
- langflow/frontend/assets/siren-DZEpjIxI.js +0 -6
- langflow/frontend/assets/skip-back-LMMyX7i0.js +0 -6
- langflow/frontend/assets/skip-forward-3fbdqmxL.js +0 -6
- langflow/frontend/assets/skull-D150-BdX.js +0 -6
- langflow/frontend/assets/slack-CA2vty0-.js +0 -6
- langflow/frontend/assets/slash-DLRamBMc.js +0 -6
- langflow/frontend/assets/slice-Ns8IcsJm.js +0 -6
- langflow/frontend/assets/sliders-horizontal-BfxJVpu0.js +0 -6
- langflow/frontend/assets/sliders-vertical-fdYgGvdp.js +0 -6
- langflow/frontend/assets/smartphone-C5dYq0M7.js +0 -6
- langflow/frontend/assets/smartphone-charging-t1Cr621u.js +0 -6
- langflow/frontend/assets/smartphone-nfc-CHD61XTv.js +0 -6
- langflow/frontend/assets/smile-ByaOAGFV.js +0 -6
- langflow/frontend/assets/smile-plus-BYKQT_2e.js +0 -6
- langflow/frontend/assets/snail-BLq7uuoW.js +0 -6
- langflow/frontend/assets/snowflake-CYsf9pfZ.js +0 -6
- langflow/frontend/assets/sofa-DG5ZPgXr.js +0 -6
- langflow/frontend/assets/soup-Dc1bXxzM.js +0 -6
- langflow/frontend/assets/space-DKkvCXLd.js +0 -6
- langflow/frontend/assets/spade-DgB5W-OB.js +0 -6
- langflow/frontend/assets/sparkle-Db93NDtI.js +0 -6
- langflow/frontend/assets/sparkles-xUIuou4A.js +0 -6
- langflow/frontend/assets/speaker-BWn1Qonx.js +0 -6
- langflow/frontend/assets/speech-qIGem1Go.js +0 -6
- langflow/frontend/assets/spell-check-2-B2cZXUCa.js +0 -6
- langflow/frontend/assets/spell-check-lHnH8H0N.js +0 -6
- langflow/frontend/assets/spline-Cm4A2C0d.js +0 -6
- langflow/frontend/assets/spline-pointer-BFCnQNhM.js +0 -6
- langflow/frontend/assets/split-BlaNB-m6.js +0 -6
- langflow/frontend/assets/spray-can-PQvbyFN8.js +0 -6
- langflow/frontend/assets/sprout-DYLKUJOm.js +0 -6
- langflow/frontend/assets/square-BQ25rjZN.js +0 -6
- langflow/frontend/assets/square-activity-BC1g9hIH.js +0 -6
- langflow/frontend/assets/square-arrow-down-9W_S03ge.js +0 -6
- langflow/frontend/assets/square-arrow-down-left-B82nM0R2.js +0 -6
- langflow/frontend/assets/square-arrow-down-right-DZyom3ae.js +0 -6
- langflow/frontend/assets/square-arrow-left-BSWuTucu.js +0 -6
- langflow/frontend/assets/square-arrow-out-down-left-t_j7aQzA.js +0 -6
- langflow/frontend/assets/square-arrow-out-down-right-D1Hb89jV.js +0 -6
- langflow/frontend/assets/square-arrow-out-up-left-Bdv-jLVA.js +0 -6
- langflow/frontend/assets/square-arrow-out-up-right-CDgfw9T8.js +0 -6
- langflow/frontend/assets/square-arrow-right-DHtj4Z_y.js +0 -6
- langflow/frontend/assets/square-arrow-up-DMEDT3wd.js +0 -6
- langflow/frontend/assets/square-arrow-up-left-CrcmXV4q.js +0 -6
- langflow/frontend/assets/square-arrow-up-right-CBhrXMOc.js +0 -6
- langflow/frontend/assets/square-asterisk-DzFQ9VAS.js +0 -6
- langflow/frontend/assets/square-bottom-dashed-scissors-CKGBy4R6.js +0 -6
- langflow/frontend/assets/square-chart-gantt-ZNVQ-GTo.js +0 -6
- langflow/frontend/assets/square-check-C2jJjf49.js +0 -6
- langflow/frontend/assets/square-check-big-DKucpNkQ.js +0 -6
- langflow/frontend/assets/square-chevron-down-Co2qpqTr.js +0 -6
- langflow/frontend/assets/square-chevron-left-Dh7yqYBt.js +0 -6
- langflow/frontend/assets/square-chevron-right-CAbBfYZO.js +0 -6
- langflow/frontend/assets/square-chevron-up-ByEpnR1d.js +0 -6
- langflow/frontend/assets/square-code-WlCO2khm.js +0 -6
- langflow/frontend/assets/square-dashed-Cwzejq82.js +0 -6
- langflow/frontend/assets/square-dashed-bottom-CRS9IWk0.js +0 -6
- langflow/frontend/assets/square-dashed-bottom-code-Co6R2kEY.js +0 -6
- langflow/frontend/assets/square-dashed-kanban-DNVYpJR1.js +0 -6
- langflow/frontend/assets/square-dashed-mouse-pointer-D6zwqIPb.js +0 -6
- langflow/frontend/assets/square-divide-BRsu17TA.js +0 -6
- langflow/frontend/assets/square-dot-BSZERpMQ.js +0 -6
- langflow/frontend/assets/square-equal-DlCTNRwu.js +0 -6
- langflow/frontend/assets/square-function-5r9z4b4I.js +0 -6
- langflow/frontend/assets/square-kanban-DZYGxOjU.js +0 -6
- langflow/frontend/assets/square-library-Bt0Alrgq.js +0 -6
- langflow/frontend/assets/square-m-CP4kRUKD.js +0 -6
- langflow/frontend/assets/square-menu-CFiyqUWn.js +0 -6
- langflow/frontend/assets/square-minus-C3MV7njF.js +0 -6
- langflow/frontend/assets/square-mouse-pointer-ClV0LfR7.js +0 -6
- langflow/frontend/assets/square-parking-off-BhmYVwPZ.js +0 -6
- langflow/frontend/assets/square-parking-uNTgxoGp.js +0 -6
- langflow/frontend/assets/square-pen-Cy2Zcc1n.js +0 -6
- langflow/frontend/assets/square-percent-DQshRjbA.js +0 -6
- langflow/frontend/assets/square-pi-DxR8I-Ds.js +0 -6
- langflow/frontend/assets/square-pilcrow-C8R5P-PO.js +0 -6
- langflow/frontend/assets/square-play-9lJv1T9C.js +0 -6
- langflow/frontend/assets/square-plus-iEfwebn-.js +0 -6
- langflow/frontend/assets/square-power-jfsm1NJs.js +0 -6
- langflow/frontend/assets/square-radical-CDzy5o5Y.js +0 -6
- langflow/frontend/assets/square-round-corner-Dv5vMY1f.js +0 -6
- langflow/frontend/assets/square-scissors-DbINkDNT.js +0 -6
- langflow/frontend/assets/square-sigma-BReMNGhb.js +0 -6
- langflow/frontend/assets/square-slash-CNsgv2Sa.js +0 -6
- langflow/frontend/assets/square-split-horizontal-BfRg2lDm.js +0 -6
- langflow/frontend/assets/square-split-vertical-UHKpEkGO.js +0 -6
- langflow/frontend/assets/square-square-luklvd5N.js +0 -6
- langflow/frontend/assets/square-stack-BS73UeKd.js +0 -6
- langflow/frontend/assets/square-terminal-8WO2IeBX.js +0 -6
- langflow/frontend/assets/square-user-BZ_UjNNJ.js +0 -6
- langflow/frontend/assets/square-user-round-B944rjkk.js +0 -6
- langflow/frontend/assets/square-x-7sE2TBTz.js +0 -6
- langflow/frontend/assets/squares-exclude-3ZemYBRj.js +0 -6
- langflow/frontend/assets/squares-intersect-BXYVvy27.js +0 -6
- langflow/frontend/assets/squares-subtract-Tjdd6hOn.js +0 -6
- langflow/frontend/assets/squares-unite-BhQQi1A3.js +0 -6
- langflow/frontend/assets/squircle-BSCiAU0_.js +0 -6
- langflow/frontend/assets/squirrel-CsXgCg0Q.js +0 -6
- langflow/frontend/assets/stamp-BwxxPiyC.js +0 -6
- langflow/frontend/assets/star-CbBgte9t.js +0 -6
- langflow/frontend/assets/star-half-BQhwQUTH.js +0 -6
- langflow/frontend/assets/star-off-Bn8ZUUY1.js +0 -6
- langflow/frontend/assets/step-back-QUCTSaOM.js +0 -6
- langflow/frontend/assets/step-forward-CtCNr_zk.js +0 -6
- langflow/frontend/assets/stethoscope-CcSMreKr.js +0 -6
- langflow/frontend/assets/sticker-aZRJZHLI.js +0 -6
- langflow/frontend/assets/sticky-note-CNWxkXTS.js +0 -6
- langflow/frontend/assets/store-BRTrEFn3.js +0 -6
- langflow/frontend/assets/stretch-horizontal-BEjd_tbW.js +0 -6
- langflow/frontend/assets/stretch-vertical-BrafkJPM.js +0 -6
- langflow/frontend/assets/strikethrough-COieVoOZ.js +0 -6
- langflow/frontend/assets/subscript-DTohsurC.js +0 -6
- langflow/frontend/assets/sun-Co4GkUR3.js +0 -6
- langflow/frontend/assets/sun-dim-BW6p6o9O.js +0 -6
- langflow/frontend/assets/sun-medium-BNYoaEvK.js +0 -6
- langflow/frontend/assets/sun-moon-D0Pq4quP.js +0 -6
- langflow/frontend/assets/sun-snow-CqbqlvmM.js +0 -6
- langflow/frontend/assets/sunrise-CO4mIMSv.js +0 -6
- langflow/frontend/assets/sunset-CIfdXk9C.js +0 -6
- langflow/frontend/assets/superscript-DUu0Q4_D.js +0 -6
- langflow/frontend/assets/swatch-book-C4J3lI_J.js +0 -6
- langflow/frontend/assets/swiss-franc-BH8id42u.js +0 -6
- langflow/frontend/assets/switch-camera-CiePjak0.js +0 -6
- langflow/frontend/assets/sword-strwHoxD.js +0 -6
- langflow/frontend/assets/swords-C-w1IwO9.js +0 -6
- langflow/frontend/assets/syringe-BRV2C8cA.js +0 -6
- langflow/frontend/assets/table-2-BMr7H6eP.js +0 -6
- langflow/frontend/assets/table-B_7Oj7Ox.js +0 -6
- langflow/frontend/assets/table-cells-merge-C54Qw23Y.js +0 -6
- langflow/frontend/assets/table-cells-split-CtHVdDeS.js +0 -6
- langflow/frontend/assets/table-columns-split-BcaQrCr4.js +0 -6
- langflow/frontend/assets/table-of-contents-D0mUFGft.js +0 -6
- langflow/frontend/assets/table-properties--I6nXBR3.js +0 -6
- langflow/frontend/assets/table-rows-split-B0xJQ37f.js +0 -6
- langflow/frontend/assets/tablet-Cf0EWdJK.js +0 -6
- langflow/frontend/assets/tablet-smartphone-DY4wZHr1.js +0 -6
- langflow/frontend/assets/tablets-BwdeIRo8.js +0 -6
- langflow/frontend/assets/tag-CctZN7kL.js +0 -6
- langflow/frontend/assets/tags-BCHRjKYf.js +0 -6
- langflow/frontend/assets/tally-1-BldVxrsQ.js +0 -6
- langflow/frontend/assets/tally-2-DXrwGFrl.js +0 -6
- langflow/frontend/assets/tally-3-DmfWkX76.js +0 -6
- langflow/frontend/assets/tally-4-5HQCUDdA.js +0 -6
- langflow/frontend/assets/tally-5-CJ6oLp3v.js +0 -6
- langflow/frontend/assets/tangent-DB7fZRai.js +0 -6
- langflow/frontend/assets/target-DpuUfDL-.js +0 -6
- langflow/frontend/assets/telescope-DI51EUze.js +0 -6
- langflow/frontend/assets/tent-B0JEjxdf.js +0 -6
- langflow/frontend/assets/tent-tree-7eQIWJxt.js +0 -6
- langflow/frontend/assets/terminal-DkJIR40E.js +0 -6
- langflow/frontend/assets/test-tube-CVcsryKJ.js +0 -6
- langflow/frontend/assets/test-tube-diagonal-DUWwW59l.js +0 -6
- langflow/frontend/assets/test-tubes-CEazaT1A.js +0 -6
- langflow/frontend/assets/text-ChX5VB23.js +0 -6
- langflow/frontend/assets/text-cursor-D0W6SvBT.js +0 -6
- langflow/frontend/assets/text-cursor-input-DZJywZl8.js +0 -6
- langflow/frontend/assets/text-quote-A7E7kGXh.js +0 -6
- langflow/frontend/assets/text-search-Ci_9VX5o.js +0 -6
- langflow/frontend/assets/text-select-B-MYo7Bk.js +0 -6
- langflow/frontend/assets/theater-CLA9VUyd.js +0 -6
- langflow/frontend/assets/thermometer-CCtu28Uk.js +0 -6
- langflow/frontend/assets/thermometer-snowflake-Den4-Bn4.js +0 -6
- langflow/frontend/assets/thermometer-sun-NEOdjDsY.js +0 -6
- langflow/frontend/assets/thumbs-down-Bvp584LU.js +0 -6
- langflow/frontend/assets/thumbs-up-BtrMFbVS.js +0 -6
- langflow/frontend/assets/ticket-CV7UPEHN.js +0 -6
- langflow/frontend/assets/ticket-check-C6fPp3wU.js +0 -6
- langflow/frontend/assets/ticket-minus-KNNJ2iM0.js +0 -6
- langflow/frontend/assets/ticket-percent-Rezekn-N.js +0 -6
- langflow/frontend/assets/ticket-plus-Aps5a9CM.js +0 -6
- langflow/frontend/assets/ticket-slash-Qbdnbd0m.js +0 -6
- langflow/frontend/assets/ticket-x-1zRdxQPQ.js +0 -6
- langflow/frontend/assets/tickets-BdBUXSkg.js +0 -6
- langflow/frontend/assets/tickets-plane-DjIofQ62.js +0 -6
- langflow/frontend/assets/timer-BplY9xWf.js +0 -6
- langflow/frontend/assets/timer-off-BCLZxVnv.js +0 -6
- langflow/frontend/assets/timer-reset-Od914fdl.js +0 -6
- langflow/frontend/assets/toggle-left-BcEMIa-0.js +0 -6
- langflow/frontend/assets/toggle-right-DFcq7xBW.js +0 -6
- langflow/frontend/assets/toilet-B7pvq6hs.js +0 -6
- langflow/frontend/assets/tornado-CcwjCEya.js +0 -6
- langflow/frontend/assets/torus-BHd2P0M2.js +0 -6
- langflow/frontend/assets/touchpad-BkSEryoR.js +0 -6
- langflow/frontend/assets/touchpad-off-Bp4VNri8.js +0 -6
- langflow/frontend/assets/tower-control-B0M5LDMG.js +0 -6
- langflow/frontend/assets/toy-brick-DYPUOrpo.js +0 -6
- langflow/frontend/assets/tractor-BdjeAU29.js +0 -6
- langflow/frontend/assets/traffic-cone-Rid-92fN.js +0 -6
- langflow/frontend/assets/train-front-Bn9pj37z.js +0 -6
- langflow/frontend/assets/train-front-tunnel-CDtFf3il.js +0 -6
- langflow/frontend/assets/train-track-C2lvGo-p.js +0 -6
- langflow/frontend/assets/tram-front-hCk6g-kr.js +0 -6
- langflow/frontend/assets/transgender-DmKUhVdN.js +0 -6
- langflow/frontend/assets/trash-qOGvIrQP.js +0 -6
- langflow/frontend/assets/tree-deciduous-CPX20v9X.js +0 -6
- langflow/frontend/assets/tree-palm-Bba_s6WM.js +0 -6
- langflow/frontend/assets/tree-pine-B46HVi1j.js +0 -6
- langflow/frontend/assets/trees-DMrXWyAI.js +0 -6
- langflow/frontend/assets/trello-BdNjucj5.js +0 -6
- langflow/frontend/assets/trending-down-mobVRn87.js +0 -6
- langflow/frontend/assets/trending-up-BccTwVQ3.js +0 -6
- langflow/frontend/assets/trending-up-down-BFBzmCek.js +0 -6
- langflow/frontend/assets/triangle-B_1SxMhH.js +0 -6
- langflow/frontend/assets/triangle-alert-Cp51jOjb.js +0 -6
- langflow/frontend/assets/triangle-dashed-DFBRieof.js +0 -6
- langflow/frontend/assets/triangle-right-mdPj_yGd.js +0 -6
- langflow/frontend/assets/trophy-BwYmkEKJ.js +0 -6
- langflow/frontend/assets/truck-ByXs4MRT.js +0 -6
- langflow/frontend/assets/truck-electric-CoDLeURU.js +0 -6
- langflow/frontend/assets/turtle-B_0t1L1r.js +0 -6
- langflow/frontend/assets/tv-LKP4Yd6G.js +0 -6
- langflow/frontend/assets/tv-minimal-0UIB2_YF.js +0 -6
- langflow/frontend/assets/tv-minimal-play-D6WpFMoW.js +0 -6
- langflow/frontend/assets/twitch-CdmKqstS.js +0 -6
- langflow/frontend/assets/twitter-Bn3B-nJs.js +0 -6
- langflow/frontend/assets/type-CdLC62-v.js +0 -6
- langflow/frontend/assets/type-outline-B9sZx19h.js +0 -6
- langflow/frontend/assets/umbrella-DhyhsQ7f.js +0 -6
- langflow/frontend/assets/umbrella-off-DW-WFw75.js +0 -6
- langflow/frontend/assets/underline-oZz1nZHE.js +0 -6
- langflow/frontend/assets/undo-2-CF3ZpvsA.js +0 -6
- langflow/frontend/assets/undo-CpBc-ZlX.js +0 -6
- langflow/frontend/assets/undo-dot-Kp9DVLqw.js +0 -6
- langflow/frontend/assets/unfold-horizontal-GffCoo9x.js +0 -6
- langflow/frontend/assets/unfold-vertical-QVa3f1Wo.js +0 -6
- langflow/frontend/assets/ungroup-BP26g4VQ.js +0 -6
- langflow/frontend/assets/university-CForBFku.js +0 -6
- langflow/frontend/assets/unlink-2-DszR0Pss.js +0 -6
- langflow/frontend/assets/unlink-DtGPnmVI.js +0 -6
- langflow/frontend/assets/unplug-CRH0Dguu.js +0 -6
- langflow/frontend/assets/upload-DiPD_gzi.js +0 -6
- langflow/frontend/assets/usb-DZJXI9d7.js +0 -6
- langflow/frontend/assets/use-post-add-user-Bs41teEN.js +0 -1
- langflow/frontend/assets/user-cHu1Tb-j.js +0 -6
- langflow/frontend/assets/user-check-By1TfF1x.js +0 -6
- langflow/frontend/assets/user-cog-DSrSQLdm.js +0 -6
- langflow/frontend/assets/user-lock-Dr0nssIA.js +0 -6
- langflow/frontend/assets/user-minus-D5YKaMHP.js +0 -6
- langflow/frontend/assets/user-pen-CsLTR5OS.js +0 -6
- langflow/frontend/assets/user-plus-De5dKowi.js +0 -6
- langflow/frontend/assets/user-round-Db-PGyeS.js +0 -6
- langflow/frontend/assets/user-round-check-oeAhvgtX.js +0 -6
- langflow/frontend/assets/user-round-cog-D0PrF4c8.js +0 -6
- langflow/frontend/assets/user-round-minus-CqlSkZqX.js +0 -6
- langflow/frontend/assets/user-round-pen-QLTzzwnf.js +0 -6
- langflow/frontend/assets/user-round-plus-Bx3K4KAU.js +0 -6
- langflow/frontend/assets/user-round-search-CTuvbxcv.js +0 -6
- langflow/frontend/assets/user-round-x-CXiWjGk5.js +0 -6
- langflow/frontend/assets/user-search-Wx8LBIpw.js +0 -6
- langflow/frontend/assets/user-x-C7dP93Wk.js +0 -6
- langflow/frontend/assets/users-Db7zYFpA.js +0 -6
- langflow/frontend/assets/users-round-DHr5Sr0N.js +0 -6
- langflow/frontend/assets/utensils-DtHkOs6Z.js +0 -6
- langflow/frontend/assets/utensils-crossed-DLcgsz-O.js +0 -6
- langflow/frontend/assets/utility-pole-B_wWOFgu.js +0 -6
- langflow/frontend/assets/variable-DApkrROK.js +0 -6
- langflow/frontend/assets/vault-ui3qi5oL.js +0 -6
- langflow/frontend/assets/vegan-DbeU7GCW.js +0 -6
- langflow/frontend/assets/venetian-mask-TngPVMQi.js +0 -6
- langflow/frontend/assets/venus-DGTRr7NR.js +0 -6
- langflow/frontend/assets/venus-and-mars-D3LGBlDX.js +0 -6
- langflow/frontend/assets/vibrate-CgFeMpsJ.js +0 -6
- langflow/frontend/assets/vibrate-off-Dfo2gom0.js +0 -6
- langflow/frontend/assets/video-C37dbk9j.js +0 -6
- langflow/frontend/assets/video-off-4ADfzTwY.js +0 -6
- langflow/frontend/assets/videotape-B04hZc74.js +0 -6
- langflow/frontend/assets/view-qgN5VhRW.js +0 -6
- langflow/frontend/assets/voicemail-CmDdOF5x.js +0 -6
- langflow/frontend/assets/volleyball-Cjg-162g.js +0 -6
- langflow/frontend/assets/volume-1-CIkQ8iIg.js +0 -6
- langflow/frontend/assets/volume-2-BMioCS8E.js +0 -6
- langflow/frontend/assets/volume-B7ES03Qv.js +0 -6
- langflow/frontend/assets/volume-off-D5XWZrKI.js +0 -6
- langflow/frontend/assets/volume-x-7XVRVJ9B.js +0 -6
- langflow/frontend/assets/vote-Dw1I2FfB.js +0 -6
- langflow/frontend/assets/wallet-BFzQLkbo.js +0 -6
- langflow/frontend/assets/wallet-cards-D13f7MeJ.js +0 -6
- langflow/frontend/assets/wallet-minimal-Dqd8mUUI.js +0 -6
- langflow/frontend/assets/wallpaper-BsSO8Odk.js +0 -6
- langflow/frontend/assets/wand-TBE2I8GE.js +0 -6
- langflow/frontend/assets/wand-sparkles-CRKbXOJZ.js +0 -6
- langflow/frontend/assets/warehouse-CMbzjlH6.js +0 -6
- langflow/frontend/assets/washing-machine-BGn-KReA.js +0 -6
- langflow/frontend/assets/watch-CIGWSZt6.js +0 -6
- langflow/frontend/assets/waves-ladder-DcF2y9VG.js +0 -6
- langflow/frontend/assets/waves-wIUBgocz.js +0 -6
- langflow/frontend/assets/waypoints-BQurfXX_.js +0 -6
- langflow/frontend/assets/webcam-YKtMPPFX.js +0 -6
- langflow/frontend/assets/webhook-BkjGp-iI.js +0 -6
- langflow/frontend/assets/webhook-off-BQDPVLml.js +0 -6
- langflow/frontend/assets/weight-B3FKVk1f.js +0 -6
- langflow/frontend/assets/wheat-CX8yqsV1.js +0 -6
- langflow/frontend/assets/wheat-off-CJNcq7KF.js +0 -6
- langflow/frontend/assets/whole-word-B5MfrMWF.js +0 -6
- langflow/frontend/assets/wifi-DZJleZd3.js +0 -6
- langflow/frontend/assets/wifi-high-LKM0TXbk.js +0 -6
- langflow/frontend/assets/wifi-low-CxVH1qJM.js +0 -6
- langflow/frontend/assets/wifi-off-Dn9vsBGP.js +0 -6
- langflow/frontend/assets/wifi-pen-Da_-sk9d.js +0 -6
- langflow/frontend/assets/wifi-zero-DcMNjWZC.js +0 -6
- langflow/frontend/assets/wind-DPrxycW5.js +0 -6
- langflow/frontend/assets/wind-arrow-down-BrWeaZmh.js +0 -6
- langflow/frontend/assets/wine-DAadDbxi.js +0 -6
- langflow/frontend/assets/wine-off-C2Vv12g_.js +0 -6
- langflow/frontend/assets/workflow-BxHBdxzI.js +0 -6
- langflow/frontend/assets/worm-CZy7u8Xa.js +0 -6
- langflow/frontend/assets/wrap-text-BoowhP_g.js +0 -6
- langflow/frontend/assets/wrench-CwBP6vOn.js +0 -6
- langflow/frontend/assets/youtube-BxpODfJZ.js +0 -6
- langflow/frontend/assets/zap-CWSGMMkE.js +0 -6
- langflow/frontend/assets/zap-off-D40--2OK.js +0 -6
- langflow/frontend/assets/zoom-in-DZbBfX5Y.js +0 -6
- langflow/frontend/assets/zoom-out-C4WVFDS7.js +0 -6
- langflow_base_nightly-1.7.1.dev0.dist-info/METADATA +0 -99
- langflow_base_nightly-1.7.1.dev0.dist-info/RECORD +0 -2283
- {langflow_base_nightly-1.7.1.dev0.dist-info → langflow_base_nightly-1.7.1.dev2.dist-info}/WHEEL +0 -0
- {langflow_base_nightly-1.7.1.dev0.dist-info → langflow_base_nightly-1.7.1.dev2.dist-info}/entry_points.txt +0 -0
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"data": {
|
|
8
8
|
"sourceHandle": {
|
|
9
9
|
"dataType": "parser",
|
|
10
|
-
"id": "parser-
|
|
10
|
+
"id": "parser-6caGE",
|
|
11
11
|
"name": "parsed_text",
|
|
12
12
|
"output_types": [
|
|
13
13
|
"Message"
|
|
@@ -15,19 +15,19 @@
|
|
|
15
15
|
},
|
|
16
16
|
"targetHandle": {
|
|
17
17
|
"fieldName": "input_value",
|
|
18
|
-
"id": "LanguageModelComponent-
|
|
18
|
+
"id": "LanguageModelComponent-DJzkZ",
|
|
19
19
|
"inputTypes": [
|
|
20
20
|
"Message"
|
|
21
21
|
],
|
|
22
22
|
"type": "str"
|
|
23
23
|
}
|
|
24
24
|
},
|
|
25
|
-
"id": "reactflow__edge-parser-
|
|
25
|
+
"id": "reactflow__edge-parser-6caGE{œdataTypeœ:œparserœ,œidœ:œparser-6caGEœ,œnameœ:œparsed_textœ,œoutput_typesœ:[œMessageœ]}-LanguageModelComponent-DJzkZ{œfieldNameœ:œinput_valueœ,œidœ:œLanguageModelComponent-DJzkZœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
|
|
26
26
|
"selected": false,
|
|
27
|
-
"source": "parser-
|
|
28
|
-
"sourceHandle": "{œdataTypeœ: œparserœ, œidœ: œparser-
|
|
29
|
-
"target": "LanguageModelComponent-
|
|
30
|
-
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œLanguageModelComponent-
|
|
27
|
+
"source": "parser-6caGE",
|
|
28
|
+
"sourceHandle": "{œdataTypeœ: œparserœ, œidœ: œparser-6caGEœ, œnameœ: œparsed_textœ, œoutput_typesœ: [œMessageœ]}",
|
|
29
|
+
"target": "LanguageModelComponent-DJzkZ",
|
|
30
|
+
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œLanguageModelComponent-DJzkZœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"animated": false,
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"data": {
|
|
36
36
|
"sourceHandle": {
|
|
37
37
|
"dataType": "TextInput",
|
|
38
|
-
"id": "TextInput-
|
|
38
|
+
"id": "TextInput-fQKUN",
|
|
39
39
|
"name": "text",
|
|
40
40
|
"output_types": [
|
|
41
41
|
"Message"
|
|
@@ -43,19 +43,19 @@
|
|
|
43
43
|
},
|
|
44
44
|
"targetHandle": {
|
|
45
45
|
"fieldName": "system_message",
|
|
46
|
-
"id": "LanguageModelComponent-
|
|
46
|
+
"id": "LanguageModelComponent-DJzkZ",
|
|
47
47
|
"inputTypes": [
|
|
48
48
|
"Message"
|
|
49
49
|
],
|
|
50
50
|
"type": "str"
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
|
-
"id": "reactflow__edge-TextInput-
|
|
53
|
+
"id": "reactflow__edge-TextInput-fQKUN{œdataTypeœ:œTextInputœ,œidœ:œTextInput-fQKUNœ,œnameœ:œtextœ,œoutput_typesœ:[œMessageœ]}-LanguageModelComponent-DJzkZ{œfieldNameœ:œsystem_messageœ,œidœ:œLanguageModelComponent-DJzkZœ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
|
|
54
54
|
"selected": false,
|
|
55
|
-
"source": "TextInput-
|
|
56
|
-
"sourceHandle": "{œdataTypeœ: œTextInputœ, œidœ: œTextInput-
|
|
57
|
-
"target": "LanguageModelComponent-
|
|
58
|
-
"targetHandle": "{œfieldNameœ: œsystem_messageœ, œidœ: œLanguageModelComponent-
|
|
55
|
+
"source": "TextInput-fQKUN",
|
|
56
|
+
"sourceHandle": "{œdataTypeœ: œTextInputœ, œidœ: œTextInput-fQKUNœ, œnameœ: œtextœ, œoutput_typesœ: [œMessageœ]}",
|
|
57
|
+
"target": "LanguageModelComponent-DJzkZ",
|
|
58
|
+
"targetHandle": "{œfieldNameœ: œsystem_messageœ, œidœ: œLanguageModelComponent-DJzkZœ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"animated": false,
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"data": {
|
|
64
64
|
"sourceHandle": {
|
|
65
65
|
"dataType": "LanguageModelComponent",
|
|
66
|
-
"id": "LanguageModelComponent-
|
|
66
|
+
"id": "LanguageModelComponent-DJzkZ",
|
|
67
67
|
"name": "text_output",
|
|
68
68
|
"output_types": [
|
|
69
69
|
"Message"
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
},
|
|
72
72
|
"targetHandle": {
|
|
73
73
|
"fieldName": "input_value",
|
|
74
|
-
"id": "ChatOutput-
|
|
74
|
+
"id": "ChatOutput-q991L",
|
|
75
75
|
"inputTypes": [
|
|
76
76
|
"Data",
|
|
77
77
|
"DataFrame",
|
|
@@ -80,75 +80,75 @@
|
|
|
80
80
|
"type": "str"
|
|
81
81
|
}
|
|
82
82
|
},
|
|
83
|
-
"id": "reactflow__edge-LanguageModelComponent-
|
|
83
|
+
"id": "reactflow__edge-LanguageModelComponent-DJzkZ{œdataTypeœ:œLanguageModelComponentœ,œidœ:œLanguageModelComponent-DJzkZœ,œnameœ:œtext_outputœ,œoutput_typesœ:[œMessageœ]}-ChatOutput-q991L{œfieldNameœ:œinput_valueœ,œidœ:œChatOutput-q991Lœ,œinputTypesœ:[œDataœ,œDataFrameœ,œMessageœ],œtypeœ:œstrœ}",
|
|
84
84
|
"selected": false,
|
|
85
|
-
"source": "LanguageModelComponent-
|
|
86
|
-
"sourceHandle": "{œdataTypeœ: œLanguageModelComponentœ, œidœ: œLanguageModelComponent-
|
|
87
|
-
"target": "ChatOutput-
|
|
88
|
-
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œChatOutput-
|
|
85
|
+
"source": "LanguageModelComponent-DJzkZ",
|
|
86
|
+
"sourceHandle": "{œdataTypeœ: œLanguageModelComponentœ, œidœ: œLanguageModelComponent-DJzkZœ, œnameœ: œtext_outputœ, œoutput_typesœ: [œMessageœ]}",
|
|
87
|
+
"target": "ChatOutput-q991L",
|
|
88
|
+
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œChatOutput-q991Lœ, œinputTypesœ: [œDataœ, œDataFrameœ, œMessageœ], œtypeœ: œstrœ}"
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
"animated": false,
|
|
92
92
|
"className": "",
|
|
93
93
|
"data": {
|
|
94
94
|
"sourceHandle": {
|
|
95
|
-
"dataType": "
|
|
96
|
-
"id": "
|
|
97
|
-
"name": "
|
|
95
|
+
"dataType": "File",
|
|
96
|
+
"id": "File-gVVqw",
|
|
97
|
+
"name": "message",
|
|
98
98
|
"output_types": [
|
|
99
|
-
"
|
|
99
|
+
"Message"
|
|
100
100
|
]
|
|
101
101
|
},
|
|
102
102
|
"targetHandle": {
|
|
103
|
-
"fieldName": "
|
|
104
|
-
"id": "
|
|
103
|
+
"fieldName": "input_value",
|
|
104
|
+
"id": "StructuredOutput-wsAT3",
|
|
105
105
|
"inputTypes": [
|
|
106
|
-
"
|
|
107
|
-
"Data"
|
|
106
|
+
"Message"
|
|
108
107
|
],
|
|
109
|
-
"type": "
|
|
108
|
+
"type": "str"
|
|
110
109
|
}
|
|
111
110
|
},
|
|
112
|
-
"id": "
|
|
111
|
+
"id": "xy-edge__File-gVVqw{œdataTypeœ:œFileœ,œidœ:œFile-gVVqwœ,œnameœ:œmessageœ,œoutput_typesœ:[œMessageœ]}-StructuredOutput-wsAT3{œfieldNameœ:œinput_valueœ,œidœ:œStructuredOutput-wsAT3œ,œinputTypesœ:[œMessageœ],œtypeœ:œstrœ}",
|
|
113
112
|
"selected": false,
|
|
114
|
-
"source": "
|
|
115
|
-
"sourceHandle": "{œdataTypeœ:
|
|
116
|
-
"target": "
|
|
117
|
-
"targetHandle": "{œfieldNameœ: œ
|
|
113
|
+
"source": "File-gVVqw",
|
|
114
|
+
"sourceHandle": "{œdataTypeœ: œFileœ, œidœ: œFile-gVVqwœ, œnameœ: œmessageœ, œoutput_typesœ: [œMessageœ]}",
|
|
115
|
+
"target": "StructuredOutput-wsAT3",
|
|
116
|
+
"targetHandle": "{œfieldNameœ: œinput_valueœ, œidœ: œStructuredOutput-wsAT3œ, œinputTypesœ: [œMessageœ], œtypeœ: œstrœ}"
|
|
118
117
|
},
|
|
119
118
|
{
|
|
120
119
|
"animated": false,
|
|
121
120
|
"className": "",
|
|
122
121
|
"data": {
|
|
123
122
|
"sourceHandle": {
|
|
124
|
-
"dataType": "
|
|
125
|
-
"id": "
|
|
126
|
-
"name": "
|
|
123
|
+
"dataType": "StructuredOutput",
|
|
124
|
+
"id": "StructuredOutput-wsAT3",
|
|
125
|
+
"name": "dataframe_output",
|
|
127
126
|
"output_types": [
|
|
128
|
-
"
|
|
127
|
+
"DataFrame"
|
|
129
128
|
]
|
|
130
129
|
},
|
|
131
130
|
"targetHandle": {
|
|
132
|
-
"fieldName": "
|
|
133
|
-
"id": "
|
|
131
|
+
"fieldName": "input_data",
|
|
132
|
+
"id": "parser-6caGE",
|
|
134
133
|
"inputTypes": [
|
|
135
|
-
"
|
|
134
|
+
"DataFrame",
|
|
135
|
+
"Data"
|
|
136
136
|
],
|
|
137
|
-
"type": "
|
|
137
|
+
"type": "other"
|
|
138
138
|
}
|
|
139
139
|
},
|
|
140
|
-
"id": "
|
|
140
|
+
"id": "xy-edge__StructuredOutput-wsAT3{œdataTypeœ:œStructuredOutputœ,œidœ:œStructuredOutput-wsAT3œ,œnameœ:œdataframe_outputœ,œoutput_typesœ:[œDataFrameœ]}-parser-6caGE{œfieldNameœ:œinput_dataœ,œidœ:œparser-6caGEœ,œinputTypesœ:[œDataFrameœ,œDataœ],œtypeœ:œotherœ}",
|
|
141
141
|
"selected": false,
|
|
142
|
-
"source": "
|
|
143
|
-
"sourceHandle": "{œdataTypeœ:
|
|
144
|
-
"target": "
|
|
145
|
-
"targetHandle": "{œfieldNameœ: œ
|
|
142
|
+
"source": "StructuredOutput-wsAT3",
|
|
143
|
+
"sourceHandle": "{œdataTypeœ: œStructuredOutputœ, œidœ: œStructuredOutput-wsAT3œ, œnameœ: œdataframe_outputœ, œoutput_typesœ: [œDataFrameœ]}",
|
|
144
|
+
"target": "parser-6caGE",
|
|
145
|
+
"targetHandle": "{œfieldNameœ: œinput_dataœ, œidœ: œparser-6caGEœ, œinputTypesœ: [œDataFrameœ, œDataœ], œtypeœ: œotherœ}"
|
|
146
146
|
}
|
|
147
147
|
],
|
|
148
148
|
"nodes": [
|
|
149
149
|
{
|
|
150
150
|
"data": {
|
|
151
|
-
"id": "TextInput-
|
|
151
|
+
"id": "TextInput-fQKUN",
|
|
152
152
|
"node": {
|
|
153
153
|
"base_classes": [
|
|
154
154
|
"Message"
|
|
@@ -254,7 +254,7 @@
|
|
|
254
254
|
"type": "TextInput"
|
|
255
255
|
},
|
|
256
256
|
"dragging": false,
|
|
257
|
-
"id": "TextInput-
|
|
257
|
+
"id": "TextInput-fQKUN",
|
|
258
258
|
"measured": {
|
|
259
259
|
"height": 204,
|
|
260
260
|
"width": 320
|
|
@@ -268,7 +268,7 @@
|
|
|
268
268
|
},
|
|
269
269
|
{
|
|
270
270
|
"data": {
|
|
271
|
-
"id": "ChatOutput-
|
|
271
|
+
"id": "ChatOutput-q991L",
|
|
272
272
|
"node": {
|
|
273
273
|
"base_classes": [
|
|
274
274
|
"Message"
|
|
@@ -541,7 +541,7 @@
|
|
|
541
541
|
"type": "ChatOutput"
|
|
542
542
|
},
|
|
543
543
|
"dragging": false,
|
|
544
|
-
"id": "ChatOutput-
|
|
544
|
+
"id": "ChatOutput-q991L",
|
|
545
545
|
"measured": {
|
|
546
546
|
"height": 48,
|
|
547
547
|
"width": 192
|
|
@@ -555,7 +555,7 @@
|
|
|
555
555
|
},
|
|
556
556
|
{
|
|
557
557
|
"data": {
|
|
558
|
-
"id": "note-
|
|
558
|
+
"id": "note-N5ILW",
|
|
559
559
|
"node": {
|
|
560
560
|
"description": "### 💡 Upload your resume here",
|
|
561
561
|
"display_name": "",
|
|
@@ -568,7 +568,7 @@
|
|
|
568
568
|
},
|
|
569
569
|
"dragging": false,
|
|
570
570
|
"height": 358,
|
|
571
|
-
"id": "note-
|
|
571
|
+
"id": "note-N5ILW",
|
|
572
572
|
"measured": {
|
|
573
573
|
"height": 358,
|
|
574
574
|
"width": 346
|
|
@@ -584,7 +584,7 @@
|
|
|
584
584
|
},
|
|
585
585
|
{
|
|
586
586
|
"data": {
|
|
587
|
-
"id": "note-
|
|
587
|
+
"id": "note-bCQJm",
|
|
588
588
|
"node": {
|
|
589
589
|
"description": "## 📝 Portfolio Website Code Generator\n\nYour uploaded resume is parsed into a structured format, and output as HTML/CSS code for your own resume website!\n\n✅ **Accepted Formats:** PDF or TXT \n✅ To ensure readability, provide clear headings, bullet points, and proper formatting. \n### 📌 Structured output fields:\n1. 🏷 **Full Name** - Candidate's full name \n2. 📧 **Email** - A valid email address \n3. 📞 **Phone Number** - Contact number \n4. 🔗 **LinkedIn** - LinkedIn profile URL \n5. 🖥 **GitHub** - GitHub profile URL (if applicable) \n6. 🌐 **Portfolio** - Personal website or portfolio URL \n7. 🛂 **Visa Status** - Work authorization details (if applicable) \n8. 📝 **Summary** - A brief professional summary or objective statement \n9. 💼 **Experience** - Work experience details (in dictionary format) \n10. 🎓 **Education** - Education details (in dictionary format) \n11. 🛠 **Skills** - Skills mentioned in the resume (comma-separated) \n12. 🚀 **Projects** - Titles, descriptions, and details of projects.",
|
|
590
590
|
"display_name": "",
|
|
@@ -595,7 +595,7 @@
|
|
|
595
595
|
},
|
|
596
596
|
"dragging": false,
|
|
597
597
|
"height": 621,
|
|
598
|
-
"id": "note-
|
|
598
|
+
"id": "note-bCQJm",
|
|
599
599
|
"measured": {
|
|
600
600
|
"height": 621,
|
|
601
601
|
"width": 478
|
|
@@ -611,7 +611,7 @@
|
|
|
611
611
|
},
|
|
612
612
|
{
|
|
613
613
|
"data": {
|
|
614
|
-
"id": "note-
|
|
614
|
+
"id": "note-wJ9Jw",
|
|
615
615
|
"node": {
|
|
616
616
|
"description": "### 💡 Click **Open table** to view the schema",
|
|
617
617
|
"display_name": "",
|
|
@@ -624,7 +624,7 @@
|
|
|
624
624
|
},
|
|
625
625
|
"dragging": false,
|
|
626
626
|
"height": 438,
|
|
627
|
-
"id": "note-
|
|
627
|
+
"id": "note-wJ9Jw",
|
|
628
628
|
"measured": {
|
|
629
629
|
"height": 438,
|
|
630
630
|
"width": 359
|
|
@@ -640,7 +640,7 @@
|
|
|
640
640
|
},
|
|
641
641
|
{
|
|
642
642
|
"data": {
|
|
643
|
-
"id": "note-
|
|
643
|
+
"id": "note-1mSYT",
|
|
644
644
|
"node": {
|
|
645
645
|
"description": "### 💡 Add your OpenAI API key here",
|
|
646
646
|
"display_name": "",
|
|
@@ -653,7 +653,7 @@
|
|
|
653
653
|
},
|
|
654
654
|
"dragging": false,
|
|
655
655
|
"height": 324,
|
|
656
|
-
"id": "note-
|
|
656
|
+
"id": "note-1mSYT",
|
|
657
657
|
"measured": {
|
|
658
658
|
"height": 324,
|
|
659
659
|
"width": 362
|
|
@@ -669,7 +669,7 @@
|
|
|
669
669
|
},
|
|
670
670
|
{
|
|
671
671
|
"data": {
|
|
672
|
-
"id": "note-
|
|
672
|
+
"id": "note-tzsYo",
|
|
673
673
|
"node": {
|
|
674
674
|
"description": "### 💡 Add your Anthropic API key here",
|
|
675
675
|
"display_name": "",
|
|
@@ -682,7 +682,7 @@
|
|
|
682
682
|
},
|
|
683
683
|
"dragging": false,
|
|
684
684
|
"height": 324,
|
|
685
|
-
"id": "note-
|
|
685
|
+
"id": "note-tzsYo",
|
|
686
686
|
"measured": {
|
|
687
687
|
"height": 324,
|
|
688
688
|
"width": 344
|
|
@@ -698,7 +698,7 @@
|
|
|
698
698
|
},
|
|
699
699
|
{
|
|
700
700
|
"data": {
|
|
701
|
-
"id": "parser-
|
|
701
|
+
"id": "parser-6caGE",
|
|
702
702
|
"node": {
|
|
703
703
|
"base_classes": [
|
|
704
704
|
"Message"
|
|
@@ -860,7 +860,7 @@
|
|
|
860
860
|
"type": "parser"
|
|
861
861
|
},
|
|
862
862
|
"dragging": false,
|
|
863
|
-
"id": "parser-
|
|
863
|
+
"id": "parser-6caGE",
|
|
864
864
|
"measured": {
|
|
865
865
|
"height": 278,
|
|
866
866
|
"width": 320
|
|
@@ -874,53 +874,58 @@
|
|
|
874
874
|
},
|
|
875
875
|
{
|
|
876
876
|
"data": {
|
|
877
|
-
"id": "
|
|
877
|
+
"id": "File-gVVqw",
|
|
878
878
|
"node": {
|
|
879
879
|
"base_classes": [
|
|
880
|
-
"LanguageModel",
|
|
881
880
|
"Message"
|
|
882
881
|
],
|
|
883
882
|
"beta": false,
|
|
884
883
|
"conditional_paths": [],
|
|
885
884
|
"custom_fields": {},
|
|
886
|
-
"description": "
|
|
887
|
-
"display_name": "
|
|
888
|
-
"documentation": "
|
|
885
|
+
"description": "Loads and returns the content from uploaded files.",
|
|
886
|
+
"display_name": "File",
|
|
887
|
+
"documentation": "",
|
|
889
888
|
"edited": false,
|
|
890
889
|
"field_order": [
|
|
891
|
-
"
|
|
892
|
-
"
|
|
893
|
-
"
|
|
894
|
-
"
|
|
895
|
-
"
|
|
896
|
-
"
|
|
897
|
-
"
|
|
898
|
-
"
|
|
899
|
-
"
|
|
890
|
+
"path",
|
|
891
|
+
"file_path",
|
|
892
|
+
"separator",
|
|
893
|
+
"silent_errors",
|
|
894
|
+
"delete_server_file_after_processing",
|
|
895
|
+
"ignore_unsupported_extensions",
|
|
896
|
+
"ignore_unspecified_files",
|
|
897
|
+
"use_multithreading",
|
|
898
|
+
"concurrency_multithreading"
|
|
900
899
|
],
|
|
901
900
|
"frozen": false,
|
|
902
|
-
"icon": "
|
|
903
|
-
"last_updated": "2025-
|
|
901
|
+
"icon": "file-text",
|
|
902
|
+
"last_updated": "2025-09-29T16:08:14.225Z",
|
|
904
903
|
"legacy": false,
|
|
905
|
-
"lf_version": "1.
|
|
904
|
+
"lf_version": "1.6.0",
|
|
906
905
|
"metadata": {
|
|
907
|
-
"code_hash": "
|
|
906
|
+
"code_hash": "5008cc086d7f",
|
|
908
907
|
"dependencies": {
|
|
909
908
|
"dependencies": [
|
|
910
909
|
{
|
|
911
910
|
"name": "lfx",
|
|
912
911
|
"version": null
|
|
912
|
+
},
|
|
913
|
+
{
|
|
914
|
+
"name": "langchain_core",
|
|
915
|
+
"version": "0.3.80"
|
|
916
|
+
},
|
|
917
|
+
{
|
|
918
|
+
"name": "pydantic",
|
|
919
|
+
"version": "2.11.10"
|
|
920
|
+
},
|
|
921
|
+
{
|
|
922
|
+
"name": "googleapiclient",
|
|
923
|
+
"version": "2.154.0"
|
|
913
924
|
}
|
|
914
925
|
],
|
|
915
|
-
"total_dependencies":
|
|
926
|
+
"total_dependencies": 4
|
|
916
927
|
},
|
|
917
|
-
"
|
|
918
|
-
"model",
|
|
919
|
-
"llm",
|
|
920
|
-
"language model",
|
|
921
|
-
"large language model"
|
|
922
|
-
],
|
|
923
|
-
"module": "lfx.components.models_and_agents.language_model.LanguageModelComponent"
|
|
928
|
+
"module": "lfx.components.files_and_knowledge.file.FileComponent"
|
|
924
929
|
},
|
|
925
930
|
"minimized": false,
|
|
926
931
|
"output_types": [],
|
|
@@ -928,101 +933,119 @@
|
|
|
928
933
|
{
|
|
929
934
|
"allows_loop": false,
|
|
930
935
|
"cache": true,
|
|
931
|
-
"display_name": "
|
|
936
|
+
"display_name": "Raw Content",
|
|
932
937
|
"group_outputs": false,
|
|
933
|
-
"
|
|
934
|
-
"
|
|
935
|
-
"method": "text_response",
|
|
936
|
-
"name": "text_output",
|
|
937
|
-
"options": null,
|
|
938
|
-
"required_inputs": null,
|
|
938
|
+
"method": "load_files_message",
|
|
939
|
+
"name": "message",
|
|
939
940
|
"selected": "Message",
|
|
940
941
|
"tool_mode": true,
|
|
941
942
|
"types": [
|
|
942
943
|
"Message"
|
|
943
944
|
],
|
|
944
945
|
"value": "__UNDEFINED__"
|
|
945
|
-
},
|
|
946
|
-
{
|
|
947
|
-
"allows_loop": false,
|
|
948
|
-
"cache": true,
|
|
949
|
-
"display_name": "Language Model",
|
|
950
|
-
"group_outputs": false,
|
|
951
|
-
"hidden": null,
|
|
952
|
-
"loop_types": null,
|
|
953
|
-
"method": "build_model",
|
|
954
|
-
"name": "model_output",
|
|
955
|
-
"options": null,
|
|
956
|
-
"required_inputs": null,
|
|
957
|
-
"selected": "LanguageModel",
|
|
958
|
-
"tool_mode": true,
|
|
959
|
-
"types": [
|
|
960
|
-
"LanguageModel"
|
|
961
|
-
],
|
|
962
|
-
"value": "__UNDEFINED__"
|
|
963
946
|
}
|
|
964
947
|
],
|
|
965
948
|
"pinned": false,
|
|
966
|
-
"priority": 0,
|
|
967
949
|
"template": {
|
|
968
|
-
"_frontend_node_flow_id": {
|
|
969
|
-
"value": "89c8132e-a746-460b-b091-24b7b9279147"
|
|
970
|
-
},
|
|
971
|
-
"_frontend_node_folder_id": {
|
|
972
|
-
"value": "34260300-cae1-43f3-8b14-1272b8cffe4c"
|
|
973
|
-
},
|
|
974
950
|
"_type": "Component",
|
|
975
|
-
"
|
|
951
|
+
"advanced_mode": {
|
|
952
|
+
"_input_type": "BoolInput",
|
|
953
|
+
"advanced": false,
|
|
954
|
+
"display_name": "Advanced Parser",
|
|
955
|
+
"dynamic": false,
|
|
956
|
+
"info": "Enable advanced document processing and export with Docling for PDFs, images, and office documents. Note that advanced document processing can consume significant resources.",
|
|
957
|
+
"list": false,
|
|
958
|
+
"list_add_label": "Add More",
|
|
959
|
+
"name": "advanced_mode",
|
|
960
|
+
"placeholder": "",
|
|
961
|
+
"real_time_refresh": true,
|
|
962
|
+
"required": false,
|
|
963
|
+
"show": false,
|
|
964
|
+
"title_case": false,
|
|
965
|
+
"tool_mode": false,
|
|
966
|
+
"trace_as_metadata": true,
|
|
967
|
+
"type": "bool",
|
|
968
|
+
"value": false
|
|
969
|
+
},
|
|
970
|
+
"aws_access_key_id": {
|
|
976
971
|
"_input_type": "SecretStrInput",
|
|
977
|
-
"advanced":
|
|
978
|
-
"display_name": "
|
|
972
|
+
"advanced": false,
|
|
973
|
+
"display_name": "AWS Access Key ID",
|
|
979
974
|
"dynamic": false,
|
|
980
|
-
"info": "
|
|
975
|
+
"info": "AWS Access key ID.",
|
|
981
976
|
"input_types": [],
|
|
982
|
-
"load_from_db":
|
|
983
|
-
"name": "
|
|
977
|
+
"load_from_db": true,
|
|
978
|
+
"name": "aws_access_key_id",
|
|
984
979
|
"override_skip": false,
|
|
985
980
|
"password": true,
|
|
986
981
|
"placeholder": "",
|
|
987
|
-
"
|
|
988
|
-
"
|
|
989
|
-
"show": true,
|
|
982
|
+
"required": true,
|
|
983
|
+
"show": false,
|
|
990
984
|
"title_case": false,
|
|
991
985
|
"track_in_telemetry": false,
|
|
992
986
|
"type": "str",
|
|
993
987
|
"value": ""
|
|
994
988
|
},
|
|
995
|
-
"
|
|
996
|
-
"_input_type": "
|
|
989
|
+
"aws_region": {
|
|
990
|
+
"_input_type": "StrInput",
|
|
997
991
|
"advanced": false,
|
|
998
|
-
"
|
|
999
|
-
"dialog_inputs": {},
|
|
1000
|
-
"display_name": "watsonx API Endpoint",
|
|
992
|
+
"display_name": "AWS Region",
|
|
1001
993
|
"dynamic": false,
|
|
1002
|
-
"
|
|
1003
|
-
"
|
|
1004
|
-
"
|
|
1005
|
-
"
|
|
1006
|
-
|
|
1007
|
-
"https://eu-de.ml.cloud.ibm.com",
|
|
1008
|
-
"https://eu-gb.ml.cloud.ibm.com",
|
|
1009
|
-
"https://au-syd.ml.cloud.ibm.com",
|
|
1010
|
-
"https://jp-tok.ml.cloud.ibm.com",
|
|
1011
|
-
"https://ca-tor.ml.cloud.ibm.com"
|
|
1012
|
-
],
|
|
1013
|
-
"options_metadata": [],
|
|
994
|
+
"info": "AWS region (e.g., us-east-1, eu-west-1).",
|
|
995
|
+
"list": false,
|
|
996
|
+
"list_add_label": "Add More",
|
|
997
|
+
"load_from_db": false,
|
|
998
|
+
"name": "aws_region",
|
|
1014
999
|
"override_skip": false,
|
|
1015
1000
|
"placeholder": "",
|
|
1016
|
-
"real_time_refresh": true,
|
|
1017
1001
|
"required": false,
|
|
1018
1002
|
"show": false,
|
|
1019
1003
|
"title_case": false,
|
|
1020
|
-
"toggle": false,
|
|
1021
1004
|
"tool_mode": false,
|
|
1022
1005
|
"trace_as_metadata": true,
|
|
1023
|
-
"track_in_telemetry":
|
|
1006
|
+
"track_in_telemetry": false,
|
|
1024
1007
|
"type": "str",
|
|
1025
|
-
"value": "
|
|
1008
|
+
"value": ""
|
|
1009
|
+
},
|
|
1010
|
+
"aws_secret_access_key": {
|
|
1011
|
+
"_input_type": "SecretStrInput",
|
|
1012
|
+
"advanced": false,
|
|
1013
|
+
"display_name": "AWS Secret Key",
|
|
1014
|
+
"dynamic": false,
|
|
1015
|
+
"info": "AWS Secret Key.",
|
|
1016
|
+
"input_types": [],
|
|
1017
|
+
"load_from_db": true,
|
|
1018
|
+
"name": "aws_secret_access_key",
|
|
1019
|
+
"override_skip": false,
|
|
1020
|
+
"password": true,
|
|
1021
|
+
"placeholder": "",
|
|
1022
|
+
"required": true,
|
|
1023
|
+
"show": false,
|
|
1024
|
+
"title_case": false,
|
|
1025
|
+
"track_in_telemetry": false,
|
|
1026
|
+
"type": "str",
|
|
1027
|
+
"value": ""
|
|
1028
|
+
},
|
|
1029
|
+
"bucket_name": {
|
|
1030
|
+
"_input_type": "StrInput",
|
|
1031
|
+
"advanced": false,
|
|
1032
|
+
"display_name": "S3 Bucket Name",
|
|
1033
|
+
"dynamic": false,
|
|
1034
|
+
"info": "Enter the name of the S3 bucket.",
|
|
1035
|
+
"list": false,
|
|
1036
|
+
"list_add_label": "Add More",
|
|
1037
|
+
"load_from_db": false,
|
|
1038
|
+
"name": "bucket_name",
|
|
1039
|
+
"override_skip": false,
|
|
1040
|
+
"placeholder": "",
|
|
1041
|
+
"required": true,
|
|
1042
|
+
"show": false,
|
|
1043
|
+
"title_case": false,
|
|
1044
|
+
"tool_mode": false,
|
|
1045
|
+
"trace_as_metadata": true,
|
|
1046
|
+
"track_in_telemetry": false,
|
|
1047
|
+
"type": "str",
|
|
1048
|
+
"value": ""
|
|
1026
1049
|
},
|
|
1027
1050
|
"code": {
|
|
1028
1051
|
"advanced": true,
|
|
@@ -1040,1043 +1063,349 @@
|
|
|
1040
1063
|
"show": true,
|
|
1041
1064
|
"title_case": false,
|
|
1042
1065
|
"type": "code",
|
|
1043
|
-
"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"
|
|
1066
|
+
"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 import SortableListInput\nfrom lfx.inputs.inputs import DropdownInput, MessageTextInput, StrInput\nfrom lfx.io import BoolInput, FileInput, IntInput, Output, SecretStrInput\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\nfrom lfx.utils.validate_cloud import is_astra_cloud_environment\n\n\ndef _get_storage_location_options():\n \"\"\"Get storage location options, filtering out Local if in Astra cloud environment.\"\"\"\n all_options = [{\"name\": \"AWS\", \"icon\": \"Amazon\"}, {\"name\": \"Google Drive\", \"icon\": \"google\"}]\n if is_astra_cloud_environment():\n return all_options\n return [{\"name\": \"Local\", \"icon\": \"hard-drive\"}, *all_options]\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 SortableListInput(\n name=\"storage_location\",\n display_name=\"Storage Location\",\n placeholder=\"Select Location\",\n info=\"Choose where to read the file from.\",\n options=_get_storage_location_options(),\n real_time_refresh=True,\n limit=1,\n ),\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 # AWS S3 specific inputs\n SecretStrInput(\n name=\"aws_access_key_id\",\n display_name=\"AWS Access Key ID\",\n info=\"AWS Access key ID.\",\n show=False,\n advanced=False,\n required=True,\n ),\n SecretStrInput(\n name=\"aws_secret_access_key\",\n display_name=\"AWS Secret Key\",\n info=\"AWS Secret Key.\",\n show=False,\n advanced=False,\n required=True,\n ),\n StrInput(\n name=\"bucket_name\",\n display_name=\"S3 Bucket Name\",\n info=\"Enter the name of the S3 bucket.\",\n show=False,\n advanced=False,\n required=True,\n ),\n StrInput(\n name=\"aws_region\",\n display_name=\"AWS Region\",\n info=\"AWS region (e.g., us-east-1, eu-west-1).\",\n show=False,\n advanced=False,\n ),\n StrInput(\n name=\"s3_file_key\",\n display_name=\"S3 File Key\",\n info=\"The key (path) of the file in S3 bucket.\",\n show=False,\n advanced=False,\n required=True,\n ),\n # Google Drive specific inputs\n SecretStrInput(\n name=\"service_account_key\",\n display_name=\"GCP Credentials Secret Key\",\n info=\"Your Google Cloud Platform service account JSON key as a secret string (complete JSON content).\",\n show=False,\n advanced=False,\n required=True,\n ),\n StrInput(\n name=\"file_id\",\n display_name=\"Google Drive File ID\",\n info=(\"The Google Drive file ID to read. The file must be shared with the service account email.\"),\n show=False,\n advanced=False,\n required=True,\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 # Disabled in cloud\n show=not is_astra_cloud_environment(),\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 _disable_docling_fields_in_cloud(self, build_config: dict[str, Any]) -> None:\n \"\"\"Disable all Docling-related fields in cloud environments.\"\"\"\n if \"advanced_mode\" in build_config:\n build_config[\"advanced_mode\"][\"show\"] = False\n build_config[\"advanced_mode\"][\"value\"] = False\n # Hide all Docling-related fields\n docling_fields = (\"pipeline\", \"ocr_engine\", \"doc_key\", \"md_image_placeholder\", \"md_page_break_placeholder\")\n for field in docling_fields:\n if field in build_config:\n build_config[field][\"show\"] = False\n # Also disable OCR engine specifically\n if \"ocr_engine\" in build_config:\n build_config[\"ocr_engine\"][\"value\"] = \"None\"\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 # Update storage location options dynamically based on cloud environment\n if \"storage_location\" in build_config:\n updated_options = _get_storage_location_options()\n build_config[\"storage_location\"][\"options\"] = updated_options\n\n # Handle storage location selection\n if field_name == \"storage_location\":\n # Extract selected storage location\n selected = [location[\"name\"] for location in field_value] if isinstance(field_value, list) else []\n\n # Hide all storage-specific fields first\n storage_fields = [\n \"aws_access_key_id\",\n \"aws_secret_access_key\",\n \"bucket_name\",\n \"aws_region\",\n \"s3_file_key\",\n \"service_account_key\",\n \"file_id\",\n ]\n\n for f_name in storage_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = False\n\n # Show fields based on selected storage location\n if len(selected) == 1:\n location = selected[0]\n\n if location == \"Local\":\n # Show file upload input for local storage\n if \"path\" in build_config:\n build_config[\"path\"][\"show\"] = True\n\n elif location == \"AWS\":\n # Hide file upload input, show AWS fields\n if \"path\" in build_config:\n build_config[\"path\"][\"show\"] = False\n\n aws_fields = [\n \"aws_access_key_id\",\n \"aws_secret_access_key\",\n \"bucket_name\",\n \"aws_region\",\n \"s3_file_key\",\n ]\n for f_name in aws_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = True\n build_config[f_name][\"advanced\"] = False\n\n elif location == \"Google Drive\":\n # Hide file upload input, show Google Drive fields\n if \"path\" in build_config:\n build_config[\"path\"][\"show\"] = False\n\n gdrive_fields = [\"service_account_key\", \"file_id\"]\n for f_name in gdrive_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = True\n build_config[f_name][\"advanced\"] = False\n # No storage location selected - show file upload by default\n elif \"path\" in build_config:\n build_config[\"path\"][\"show\"] = True\n\n return build_config\n\n if field_name == \"path\":\n paths = self._path_value(build_config)\n\n # Disable in cloud environments\n if is_astra_cloud_environment():\n self._disable_docling_fields_in_cloud(build_config)\n else:\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 docling_fields = (\n \"pipeline\",\n \"ocr_engine\",\n \"doc_key\",\n \"md_image_placeholder\",\n \"md_page_break_placeholder\",\n )\n for field in docling_fields:\n if field in build_config:\n build_config[field][\"show\"] = False\n\n # Docling Processing\n elif field_name == \"advanced_mode\":\n # Disable in cloud environments - don't show Docling fields even if advanced_mode is toggled\n if is_astra_cloud_environment():\n self._disable_docling_fields_in_cloud(build_config)\n else:\n docling_fields = (\n \"pipeline\",\n \"ocr_engine\",\n \"doc_key\",\n \"md_image_placeholder\",\n \"md_page_break_placeholder\",\n )\n for field in docling_fields:\n if field in build_config:\n build_config[field][\"show\"] = bool(field_value)\n if field == \"pipeline\":\n build_config[field][\"advanced\"] = not bool(field_value)\n\n elif field_name == \"pipeline\":\n # Disable in cloud environments - don't show OCR engine even if pipeline is changed\n if is_astra_cloud_environment():\n self._disable_docling_fields_in_cloud(build_config)\n elif 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 _get_selected_storage_location(self) -> str:\n \"\"\"Get the selected storage location from the SortableListInput.\"\"\"\n if hasattr(self, \"storage_location\") and self.storage_location:\n if isinstance(self.storage_location, list) and len(self.storage_location) > 0:\n return self.storage_location[0].get(\"name\", \"\")\n if isinstance(self.storage_location, dict):\n return self.storage_location.get(\"name\", \"\")\n return \"Local\" # Default to Local if not specified\n\n def _validate_and_resolve_paths(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Override to handle file_path_str input from tool mode and cloud storage.\n\n Priority:\n 1. Cloud storage (AWS/Google Drive) if selected\n 2. file_path_str (if provided by the tool call)\n 3. path (uploaded file from UI)\n \"\"\"\n storage_location = self._get_selected_storage_location()\n\n # Handle AWS S3\n if storage_location == \"AWS\":\n return self._read_from_aws_s3()\n\n # Handle Google Drive\n if storage_location == \"Google Drive\":\n return self._read_from_google_drive()\n\n # Handle Local storage\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 _read_from_aws_s3(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Read file from AWS S3.\"\"\"\n from lfx.base.data.cloud_storage_utils import create_s3_client, validate_aws_credentials\n\n # Validate AWS credentials\n validate_aws_credentials(self)\n if not getattr(self, \"s3_file_key\", None):\n msg = \"S3 File Key is required\"\n raise ValueError(msg)\n\n # Create S3 client\n s3_client = create_s3_client(self)\n\n # Download file to temp location\n import tempfile\n\n # Get file extension from S3 key\n file_extension = Path(self.s3_file_key).suffix or \"\"\n\n with tempfile.NamedTemporaryFile(mode=\"wb\", suffix=file_extension, delete=False) as temp_file:\n temp_file_path = temp_file.name\n try:\n s3_client.download_fileobj(self.bucket_name, self.s3_file_key, temp_file)\n except Exception as e:\n # Clean up temp file on failure\n with contextlib.suppress(OSError):\n Path(temp_file_path).unlink()\n msg = f\"Failed to download file from S3: {e}\"\n raise RuntimeError(msg) from e\n\n # Create BaseFile object\n from lfx.schema.data import Data\n\n temp_path = Path(temp_file_path)\n data_obj = Data(data={self.SERVER_FILE_PATH_FIELDNAME: str(temp_path)})\n return [BaseFileComponent.BaseFile(data_obj, temp_path, delete_after_processing=True)]\n\n def _read_from_google_drive(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Read file from Google Drive.\"\"\"\n import tempfile\n\n from googleapiclient.http import MediaIoBaseDownload\n\n from lfx.base.data.cloud_storage_utils import create_google_drive_service\n\n # Validate Google Drive credentials\n if not getattr(self, \"service_account_key\", None):\n msg = \"GCP Credentials Secret Key is required for Google Drive storage\"\n raise ValueError(msg)\n if not getattr(self, \"file_id\", None):\n msg = \"Google Drive File ID is required\"\n raise ValueError(msg)\n\n # Create Google Drive service with read-only scope\n drive_service = create_google_drive_service(\n self.service_account_key, scopes=[\"https://www.googleapis.com/auth/drive.readonly\"]\n )\n\n # Get file metadata to determine file name and extension\n try:\n file_metadata = drive_service.files().get(fileId=self.file_id, fields=\"name,mimeType\").execute()\n file_name = file_metadata.get(\"name\", \"download\")\n except Exception as e:\n msg = (\n f\"Unable to access file with ID '{self.file_id}'. \"\n f\"Error: {e!s}. \"\n \"Please ensure: 1) The file ID is correct, 2) The file exists, \"\n \"3) The service account has been granted access to this file.\"\n )\n raise ValueError(msg) from e\n\n # Download file to temp location\n file_extension = Path(file_name).suffix or \"\"\n with tempfile.NamedTemporaryFile(mode=\"wb\", suffix=file_extension, delete=False) as temp_file:\n temp_file_path = temp_file.name\n try:\n request = drive_service.files().get_media(fileId=self.file_id)\n downloader = MediaIoBaseDownload(temp_file, request)\n done = False\n while not done:\n _status, done = downloader.next_chunk()\n except Exception as e:\n # Clean up temp file on failure\n with contextlib.suppress(OSError):\n Path(temp_file_path).unlink()\n msg = f\"Failed to download file from Google Drive: {e}\"\n raise RuntimeError(msg) from e\n\n # Create BaseFile object\n from lfx.schema.data import Data\n\n temp_path = Path(temp_file_path)\n data_obj = Data(data={self.SERVER_FILE_PATH_FIELDNAME: str(temp_path)})\n return [BaseFileComponent.BaseFile(data_obj, temp_path, delete_after_processing=True)]\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 if is_astra_cloud_environment():\n msg = (\n f\"File '{file.path.name}' has extension '.{extension}' which requires \"\n f\"Advanced Parser mode. Advanced Parser is not available in cloud environments.\"\n )\n else:\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"
|
|
1044
1067
|
},
|
|
1045
|
-
"
|
|
1046
|
-
"_input_type": "
|
|
1047
|
-
"advanced":
|
|
1048
|
-
"display_name": "
|
|
1068
|
+
"concurrency_multithreading": {
|
|
1069
|
+
"_input_type": "IntInput",
|
|
1070
|
+
"advanced": true,
|
|
1071
|
+
"display_name": "Processing Concurrency",
|
|
1049
1072
|
"dynamic": false,
|
|
1050
|
-
"info": "
|
|
1051
|
-
"input_types": [
|
|
1052
|
-
"Message"
|
|
1053
|
-
],
|
|
1073
|
+
"info": "When multiple files are being processed, the number of files to process concurrently.",
|
|
1054
1074
|
"list": false,
|
|
1055
1075
|
"list_add_label": "Add More",
|
|
1056
|
-
"
|
|
1057
|
-
"name": "input_value",
|
|
1058
|
-
"override_skip": false,
|
|
1076
|
+
"name": "concurrency_multithreading",
|
|
1059
1077
|
"placeholder": "",
|
|
1060
1078
|
"required": false,
|
|
1061
1079
|
"show": true,
|
|
1062
1080
|
"title_case": false,
|
|
1063
1081
|
"tool_mode": false,
|
|
1064
|
-
"trace_as_input": true,
|
|
1065
1082
|
"trace_as_metadata": true,
|
|
1066
|
-
"
|
|
1067
|
-
"
|
|
1068
|
-
"value": ""
|
|
1083
|
+
"type": "int",
|
|
1084
|
+
"value": 1
|
|
1069
1085
|
},
|
|
1070
|
-
"
|
|
1071
|
-
|
|
1072
|
-
"
|
|
1073
|
-
"
|
|
1074
|
-
"display_name": "Language Model",
|
|
1086
|
+
"delete_server_file_after_processing": {
|
|
1087
|
+
"_input_type": "BoolInput",
|
|
1088
|
+
"advanced": true,
|
|
1089
|
+
"display_name": "Delete Server File After Processing",
|
|
1075
1090
|
"dynamic": false,
|
|
1076
|
-
"
|
|
1077
|
-
"fields": {
|
|
1078
|
-
"data": {
|
|
1079
|
-
"node": {
|
|
1080
|
-
"display_name": "Connect other models",
|
|
1081
|
-
"icon": "CornerDownLeft",
|
|
1082
|
-
"name": "connect_other_models"
|
|
1083
|
-
}
|
|
1084
|
-
}
|
|
1085
|
-
}
|
|
1086
|
-
},
|
|
1087
|
-
"info": "Select your model provider",
|
|
1088
|
-
"input_types": [],
|
|
1091
|
+
"info": "If true, the Server File Path will be deleted after processing.",
|
|
1089
1092
|
"list": false,
|
|
1090
1093
|
"list_add_label": "Add More",
|
|
1091
|
-
"
|
|
1092
|
-
"
|
|
1093
|
-
"
|
|
1094
|
-
{
|
|
1095
|
-
"category": "OpenAI",
|
|
1096
|
-
"icon": "OpenAI",
|
|
1097
|
-
"metadata": {
|
|
1098
|
-
"api_key_param": "api_key",
|
|
1099
|
-
"context_length": 128000,
|
|
1100
|
-
"model_class": "ChatOpenAI",
|
|
1101
|
-
"model_name_param": "model",
|
|
1102
|
-
"reasoning_models": [
|
|
1103
|
-
"gpt-5"
|
|
1104
|
-
]
|
|
1105
|
-
},
|
|
1106
|
-
"name": "gpt-5",
|
|
1107
|
-
"provider": "OpenAI"
|
|
1108
|
-
},
|
|
1109
|
-
{
|
|
1110
|
-
"category": "OpenAI",
|
|
1111
|
-
"icon": "OpenAI",
|
|
1112
|
-
"metadata": {
|
|
1113
|
-
"api_key_param": "api_key",
|
|
1114
|
-
"context_length": 128000,
|
|
1115
|
-
"model_class": "ChatOpenAI",
|
|
1116
|
-
"model_name_param": "model",
|
|
1117
|
-
"reasoning_models": [
|
|
1118
|
-
"gpt-5-mini"
|
|
1119
|
-
]
|
|
1120
|
-
},
|
|
1121
|
-
"name": "gpt-5-mini",
|
|
1122
|
-
"provider": "OpenAI"
|
|
1123
|
-
},
|
|
1124
|
-
{
|
|
1125
|
-
"category": "OpenAI",
|
|
1126
|
-
"icon": "OpenAI",
|
|
1127
|
-
"metadata": {
|
|
1128
|
-
"api_key_param": "api_key",
|
|
1129
|
-
"context_length": 128000,
|
|
1130
|
-
"model_class": "ChatOpenAI",
|
|
1131
|
-
"model_name_param": "model",
|
|
1132
|
-
"reasoning_models": [
|
|
1133
|
-
"gpt-5-nano"
|
|
1134
|
-
]
|
|
1135
|
-
},
|
|
1136
|
-
"name": "gpt-5-nano",
|
|
1137
|
-
"provider": "OpenAI"
|
|
1138
|
-
},
|
|
1139
|
-
{
|
|
1140
|
-
"category": "OpenAI",
|
|
1141
|
-
"icon": "OpenAI",
|
|
1142
|
-
"metadata": {
|
|
1143
|
-
"api_key_param": "api_key",
|
|
1144
|
-
"context_length": 128000,
|
|
1145
|
-
"model_class": "ChatOpenAI",
|
|
1146
|
-
"model_name_param": "model"
|
|
1147
|
-
},
|
|
1148
|
-
"name": "gpt-4o-mini",
|
|
1149
|
-
"provider": "OpenAI"
|
|
1150
|
-
},
|
|
1151
|
-
{
|
|
1152
|
-
"category": "OpenAI",
|
|
1153
|
-
"icon": "OpenAI",
|
|
1154
|
-
"metadata": {
|
|
1155
|
-
"api_key_param": "api_key",
|
|
1156
|
-
"context_length": 128000,
|
|
1157
|
-
"model_class": "ChatOpenAI",
|
|
1158
|
-
"model_name_param": "model"
|
|
1159
|
-
},
|
|
1160
|
-
"name": "gpt-4o",
|
|
1161
|
-
"provider": "OpenAI"
|
|
1162
|
-
},
|
|
1163
|
-
{
|
|
1164
|
-
"category": "Google Generative AI",
|
|
1165
|
-
"icon": "GoogleGenerativeAI",
|
|
1166
|
-
"metadata": {
|
|
1167
|
-
"is_disabled_provider": true,
|
|
1168
|
-
"variable_name": "GOOGLE_API_KEY"
|
|
1169
|
-
},
|
|
1170
|
-
"name": "__enable_provider_Google Generative AI__",
|
|
1171
|
-
"provider": "Google Generative AI"
|
|
1172
|
-
},
|
|
1173
|
-
{
|
|
1174
|
-
"category": "Ollama",
|
|
1175
|
-
"icon": "Ollama",
|
|
1176
|
-
"metadata": {
|
|
1177
|
-
"is_disabled_provider": true,
|
|
1178
|
-
"variable_name": "OLLAMA_BASE_URL"
|
|
1179
|
-
},
|
|
1180
|
-
"name": "__enable_provider_Ollama__",
|
|
1181
|
-
"provider": "Ollama"
|
|
1182
|
-
},
|
|
1183
|
-
{
|
|
1184
|
-
"category": "IBM Watsonx",
|
|
1185
|
-
"icon": "WatsonxAI",
|
|
1186
|
-
"metadata": {
|
|
1187
|
-
"is_disabled_provider": true,
|
|
1188
|
-
"variable_name": "WATSONX_APIKEY"
|
|
1189
|
-
},
|
|
1190
|
-
"name": "__enable_provider_IBM Watsonx__",
|
|
1191
|
-
"provider": "IBM Watsonx"
|
|
1192
|
-
}
|
|
1193
|
-
],
|
|
1194
|
-
"override_skip": false,
|
|
1195
|
-
"placeholder": "Setup Provider",
|
|
1196
|
-
"real_time_refresh": true,
|
|
1197
|
-
"refresh_button": true,
|
|
1198
|
-
"required": true,
|
|
1094
|
+
"name": "delete_server_file_after_processing",
|
|
1095
|
+
"placeholder": "",
|
|
1096
|
+
"required": false,
|
|
1199
1097
|
"show": true,
|
|
1200
1098
|
"title_case": false,
|
|
1201
1099
|
"tool_mode": false,
|
|
1202
|
-
"
|
|
1203
|
-
"
|
|
1204
|
-
"
|
|
1205
|
-
"value": [
|
|
1206
|
-
{
|
|
1207
|
-
"category": "OpenAI",
|
|
1208
|
-
"icon": "OpenAI",
|
|
1209
|
-
"metadata": {
|
|
1210
|
-
"api_key_param": "api_key",
|
|
1211
|
-
"context_length": 128000,
|
|
1212
|
-
"model_class": "ChatOpenAI",
|
|
1213
|
-
"model_name_param": "model",
|
|
1214
|
-
"reasoning_models": [
|
|
1215
|
-
"gpt-5"
|
|
1216
|
-
]
|
|
1217
|
-
},
|
|
1218
|
-
"name": "gpt-5",
|
|
1219
|
-
"provider": "OpenAI"
|
|
1220
|
-
}
|
|
1221
|
-
]
|
|
1100
|
+
"trace_as_metadata": true,
|
|
1101
|
+
"type": "bool",
|
|
1102
|
+
"value": true
|
|
1222
1103
|
},
|
|
1223
|
-
"
|
|
1224
|
-
"_input_type": "
|
|
1225
|
-
"advanced":
|
|
1226
|
-
"display_name": "
|
|
1104
|
+
"doc_key": {
|
|
1105
|
+
"_input_type": "MessageTextInput",
|
|
1106
|
+
"advanced": true,
|
|
1107
|
+
"display_name": "Doc Key",
|
|
1227
1108
|
"dynamic": false,
|
|
1228
|
-
"info": "
|
|
1109
|
+
"info": "The key to use for the DoclingDocument column.",
|
|
1229
1110
|
"input_types": [
|
|
1230
1111
|
"Message"
|
|
1231
1112
|
],
|
|
1232
1113
|
"list": false,
|
|
1233
1114
|
"list_add_label": "Add More",
|
|
1234
1115
|
"load_from_db": false,
|
|
1235
|
-
"name": "
|
|
1236
|
-
"override_skip": false,
|
|
1116
|
+
"name": "doc_key",
|
|
1237
1117
|
"placeholder": "",
|
|
1238
|
-
"real_time_refresh": true,
|
|
1239
1118
|
"required": false,
|
|
1240
1119
|
"show": false,
|
|
1241
1120
|
"title_case": false,
|
|
1242
1121
|
"tool_mode": false,
|
|
1243
1122
|
"trace_as_input": true,
|
|
1244
1123
|
"trace_as_metadata": true,
|
|
1124
|
+
"type": "str",
|
|
1125
|
+
"value": "doc"
|
|
1126
|
+
},
|
|
1127
|
+
"file_id": {
|
|
1128
|
+
"_input_type": "StrInput",
|
|
1129
|
+
"advanced": false,
|
|
1130
|
+
"display_name": "Google Drive File ID",
|
|
1131
|
+
"dynamic": false,
|
|
1132
|
+
"info": "The Google Drive file ID to read. The file must be shared with the service account email.",
|
|
1133
|
+
"list": false,
|
|
1134
|
+
"list_add_label": "Add More",
|
|
1135
|
+
"load_from_db": false,
|
|
1136
|
+
"name": "file_id",
|
|
1137
|
+
"override_skip": false,
|
|
1138
|
+
"placeholder": "",
|
|
1139
|
+
"required": true,
|
|
1140
|
+
"show": false,
|
|
1141
|
+
"title_case": false,
|
|
1142
|
+
"tool_mode": false,
|
|
1143
|
+
"trace_as_metadata": true,
|
|
1245
1144
|
"track_in_telemetry": false,
|
|
1246
1145
|
"type": "str",
|
|
1247
1146
|
"value": ""
|
|
1248
1147
|
},
|
|
1249
|
-
"
|
|
1148
|
+
"file_path": {
|
|
1149
|
+
"_input_type": "HandleInput",
|
|
1150
|
+
"advanced": true,
|
|
1151
|
+
"display_name": "Server File Path",
|
|
1152
|
+
"dynamic": false,
|
|
1153
|
+
"info": "Data object with a 'file_path' property pointing to server file or a Message object with a path to the file. Supercedes 'Path' but supports same file types.",
|
|
1154
|
+
"input_types": [
|
|
1155
|
+
"Data",
|
|
1156
|
+
"Message"
|
|
1157
|
+
],
|
|
1158
|
+
"list": true,
|
|
1159
|
+
"list_add_label": "Add More",
|
|
1160
|
+
"name": "file_path",
|
|
1161
|
+
"placeholder": "",
|
|
1162
|
+
"required": false,
|
|
1163
|
+
"show": true,
|
|
1164
|
+
"title_case": false,
|
|
1165
|
+
"trace_as_metadata": true,
|
|
1166
|
+
"type": "other",
|
|
1167
|
+
"value": ""
|
|
1168
|
+
},
|
|
1169
|
+
"file_path_str": {
|
|
1250
1170
|
"_input_type": "StrInput",
|
|
1251
|
-
"advanced":
|
|
1252
|
-
"display_name": "
|
|
1171
|
+
"advanced": true,
|
|
1172
|
+
"display_name": "File Path",
|
|
1253
1173
|
"dynamic": false,
|
|
1254
|
-
"info": "
|
|
1174
|
+
"info": "Path to the file to read. Used when component is called as a tool. If not provided, will use the uploaded file from 'path' input.",
|
|
1255
1175
|
"list": false,
|
|
1256
1176
|
"list_add_label": "Add More",
|
|
1257
1177
|
"load_from_db": false,
|
|
1258
|
-
"name": "
|
|
1178
|
+
"name": "file_path_str",
|
|
1259
1179
|
"override_skip": false,
|
|
1260
1180
|
"placeholder": "",
|
|
1261
1181
|
"required": false,
|
|
1262
1182
|
"show": false,
|
|
1263
1183
|
"title_case": false,
|
|
1264
|
-
"tool_mode":
|
|
1184
|
+
"tool_mode": true,
|
|
1265
1185
|
"trace_as_metadata": true,
|
|
1266
1186
|
"track_in_telemetry": false,
|
|
1267
1187
|
"type": "str",
|
|
1268
1188
|
"value": ""
|
|
1269
1189
|
},
|
|
1270
|
-
"
|
|
1190
|
+
"ignore_unspecified_files": {
|
|
1271
1191
|
"_input_type": "BoolInput",
|
|
1272
1192
|
"advanced": true,
|
|
1273
|
-
"display_name": "
|
|
1193
|
+
"display_name": "Ignore Unspecified Files",
|
|
1274
1194
|
"dynamic": false,
|
|
1275
|
-
"info": "
|
|
1195
|
+
"info": "If true, Data with no 'file_path' property will be ignored.",
|
|
1276
1196
|
"list": false,
|
|
1277
1197
|
"list_add_label": "Add More",
|
|
1278
|
-
"name": "
|
|
1279
|
-
"override_skip": false,
|
|
1198
|
+
"name": "ignore_unspecified_files",
|
|
1280
1199
|
"placeholder": "",
|
|
1281
1200
|
"required": false,
|
|
1282
1201
|
"show": true,
|
|
1283
1202
|
"title_case": false,
|
|
1284
1203
|
"tool_mode": false,
|
|
1285
1204
|
"trace_as_metadata": true,
|
|
1286
|
-
"track_in_telemetry": true,
|
|
1287
1205
|
"type": "bool",
|
|
1288
1206
|
"value": false
|
|
1289
1207
|
},
|
|
1290
|
-
"
|
|
1291
|
-
"_input_type": "
|
|
1208
|
+
"ignore_unsupported_extensions": {
|
|
1209
|
+
"_input_type": "BoolInput",
|
|
1210
|
+
"advanced": true,
|
|
1211
|
+
"display_name": "Ignore Unsupported Extensions",
|
|
1212
|
+
"dynamic": false,
|
|
1213
|
+
"info": "If true, files with unsupported extensions will not be processed.",
|
|
1214
|
+
"list": false,
|
|
1215
|
+
"list_add_label": "Add More",
|
|
1216
|
+
"name": "ignore_unsupported_extensions",
|
|
1217
|
+
"placeholder": "",
|
|
1218
|
+
"required": false,
|
|
1219
|
+
"show": true,
|
|
1220
|
+
"title_case": false,
|
|
1221
|
+
"tool_mode": false,
|
|
1222
|
+
"trace_as_metadata": true,
|
|
1223
|
+
"type": "bool",
|
|
1224
|
+
"value": true
|
|
1225
|
+
},
|
|
1226
|
+
"markdown": {
|
|
1227
|
+
"_input_type": "BoolInput",
|
|
1292
1228
|
"advanced": false,
|
|
1293
|
-
"
|
|
1294
|
-
"copy_field": false,
|
|
1295
|
-
"display_name": "System Message",
|
|
1229
|
+
"display_name": "Markdown Export",
|
|
1296
1230
|
"dynamic": false,
|
|
1297
|
-
"info": "
|
|
1298
|
-
"
|
|
1299
|
-
|
|
1300
|
-
|
|
1231
|
+
"info": "Export processed documents to Markdown format. Only available when advanced mode is enabled.",
|
|
1232
|
+
"list": false,
|
|
1233
|
+
"list_add_label": "Add More",
|
|
1234
|
+
"name": "markdown",
|
|
1235
|
+
"placeholder": "",
|
|
1236
|
+
"required": false,
|
|
1237
|
+
"show": false,
|
|
1238
|
+
"title_case": false,
|
|
1239
|
+
"tool_mode": false,
|
|
1240
|
+
"trace_as_metadata": true,
|
|
1241
|
+
"type": "bool",
|
|
1242
|
+
"value": false
|
|
1243
|
+
},
|
|
1244
|
+
"md_image_placeholder": {
|
|
1245
|
+
"_input_type": "StrInput",
|
|
1246
|
+
"advanced": true,
|
|
1247
|
+
"display_name": "Image placeholder",
|
|
1248
|
+
"dynamic": false,
|
|
1249
|
+
"info": "Specify the image placeholder for markdown exports.",
|
|
1301
1250
|
"list": false,
|
|
1302
1251
|
"list_add_label": "Add More",
|
|
1303
1252
|
"load_from_db": false,
|
|
1304
|
-
"
|
|
1305
|
-
"name": "system_message",
|
|
1306
|
-
"override_skip": false,
|
|
1253
|
+
"name": "md_image_placeholder",
|
|
1307
1254
|
"placeholder": "",
|
|
1308
1255
|
"required": false,
|
|
1309
|
-
"show":
|
|
1256
|
+
"show": false,
|
|
1257
|
+
"title_case": false,
|
|
1258
|
+
"tool_mode": false,
|
|
1259
|
+
"trace_as_metadata": true,
|
|
1260
|
+
"type": "str",
|
|
1261
|
+
"value": "<!-- image -->"
|
|
1262
|
+
},
|
|
1263
|
+
"md_page_break_placeholder": {
|
|
1264
|
+
"_input_type": "StrInput",
|
|
1265
|
+
"advanced": true,
|
|
1266
|
+
"display_name": "Page break placeholder",
|
|
1267
|
+
"dynamic": false,
|
|
1268
|
+
"info": "Add this placeholder between pages in the markdown output.",
|
|
1269
|
+
"list": false,
|
|
1270
|
+
"list_add_label": "Add More",
|
|
1271
|
+
"load_from_db": false,
|
|
1272
|
+
"name": "md_page_break_placeholder",
|
|
1273
|
+
"placeholder": "",
|
|
1274
|
+
"required": false,
|
|
1275
|
+
"show": false,
|
|
1310
1276
|
"title_case": false,
|
|
1311
1277
|
"tool_mode": false,
|
|
1312
|
-
"trace_as_input": true,
|
|
1313
1278
|
"trace_as_metadata": true,
|
|
1314
|
-
"track_in_telemetry": false,
|
|
1315
1279
|
"type": "str",
|
|
1316
1280
|
"value": ""
|
|
1317
1281
|
},
|
|
1318
|
-
"
|
|
1319
|
-
"_input_type": "
|
|
1282
|
+
"ocr_engine": {
|
|
1283
|
+
"_input_type": "DropdownInput",
|
|
1320
1284
|
"advanced": true,
|
|
1321
|
-
"
|
|
1285
|
+
"combobox": false,
|
|
1286
|
+
"dialog_inputs": {},
|
|
1287
|
+
"display_name": "OCR Engine",
|
|
1322
1288
|
"dynamic": false,
|
|
1323
|
-
"
|
|
1324
|
-
"
|
|
1325
|
-
"
|
|
1326
|
-
"
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1289
|
+
"external_options": {},
|
|
1290
|
+
"info": "OCR engine to use. Only available when pipeline is set to 'standard'.",
|
|
1291
|
+
"name": "ocr_engine",
|
|
1292
|
+
"options": [
|
|
1293
|
+
"None",
|
|
1294
|
+
"easyocr"
|
|
1295
|
+
],
|
|
1296
|
+
"options_metadata": [],
|
|
1330
1297
|
"placeholder": "",
|
|
1331
|
-
"range_spec": {
|
|
1332
|
-
"max": 1,
|
|
1333
|
-
"min": 0,
|
|
1334
|
-
"step": 0.01,
|
|
1335
|
-
"step_type": "float"
|
|
1336
|
-
},
|
|
1337
1298
|
"required": false,
|
|
1338
|
-
"show":
|
|
1339
|
-
"slider_buttons": false,
|
|
1340
|
-
"slider_buttons_options": [],
|
|
1341
|
-
"slider_input": false,
|
|
1299
|
+
"show": false,
|
|
1342
1300
|
"title_case": false,
|
|
1301
|
+
"toggle": false,
|
|
1343
1302
|
"tool_mode": false,
|
|
1344
|
-
"track_in_telemetry": false,
|
|
1345
|
-
"type": "slider",
|
|
1346
|
-
"value": 0.1
|
|
1347
|
-
}
|
|
1348
|
-
},
|
|
1349
|
-
"tool_mode": false
|
|
1350
|
-
},
|
|
1351
|
-
"selected_output": "text_output",
|
|
1352
|
-
"showNode": true,
|
|
1353
|
-
"type": "LanguageModelComponent"
|
|
1354
|
-
},
|
|
1355
|
-
"dragging": false,
|
|
1356
|
-
"id": "LanguageModelComponent-kiTPL",
|
|
1357
|
-
"measured": {
|
|
1358
|
-
"height": 369,
|
|
1359
|
-
"width": 320
|
|
1360
|
-
},
|
|
1361
|
-
"position": {
|
|
1362
|
-
"x": 2174.626510909065,
|
|
1363
|
-
"y": 439.5147119393939
|
|
1364
|
-
},
|
|
1365
|
-
"selected": false,
|
|
1366
|
-
"type": "genericNode"
|
|
1367
|
-
},
|
|
1368
|
-
{
|
|
1369
|
-
"data": {
|
|
1370
|
-
"id": "note-s01cs",
|
|
1371
|
-
"node": {
|
|
1372
|
-
"description": "### 💡 Add your OpenAI API key here",
|
|
1373
|
-
"display_name": "",
|
|
1374
|
-
"documentation": "",
|
|
1375
|
-
"template": {
|
|
1376
|
-
"backgroundColor": "transparent"
|
|
1377
|
-
}
|
|
1378
|
-
},
|
|
1379
|
-
"type": "note"
|
|
1380
|
-
},
|
|
1381
|
-
"dragging": false,
|
|
1382
|
-
"id": "note-s01cs",
|
|
1383
|
-
"measured": {
|
|
1384
|
-
"height": 324,
|
|
1385
|
-
"width": 324
|
|
1386
|
-
},
|
|
1387
|
-
"position": {
|
|
1388
|
-
"x": 2177.24956539088,
|
|
1389
|
-
"y": 384.73691533198325
|
|
1390
|
-
},
|
|
1391
|
-
"selected": false,
|
|
1392
|
-
"type": "noteNode"
|
|
1393
|
-
},
|
|
1394
|
-
{
|
|
1395
|
-
"data": {
|
|
1396
|
-
"id": "StructuredOutput-GJE9p",
|
|
1397
|
-
"node": {
|
|
1398
|
-
"base_classes": [
|
|
1399
|
-
"Data",
|
|
1400
|
-
"DataFrame"
|
|
1401
|
-
],
|
|
1402
|
-
"beta": false,
|
|
1403
|
-
"conditional_paths": [],
|
|
1404
|
-
"custom_fields": {},
|
|
1405
|
-
"description": "Uses an LLM to generate structured data. Ideal for extraction and consistency.",
|
|
1406
|
-
"display_name": "Structured Output",
|
|
1407
|
-
"documentation": "https://docs.langflow.org/components-processing#structured-output",
|
|
1408
|
-
"edited": false,
|
|
1409
|
-
"field_order": [
|
|
1410
|
-
"llm",
|
|
1411
|
-
"input_value",
|
|
1412
|
-
"system_prompt",
|
|
1413
|
-
"schema_name",
|
|
1414
|
-
"output_schema"
|
|
1415
|
-
],
|
|
1416
|
-
"frozen": false,
|
|
1417
|
-
"icon": "braces",
|
|
1418
|
-
"last_updated": "2025-12-20T16:49:42.272Z",
|
|
1419
|
-
"legacy": false,
|
|
1420
|
-
"lf_version": "1.6.0",
|
|
1421
|
-
"metadata": {
|
|
1422
|
-
"code_hash": "058ca1f51e9f",
|
|
1423
|
-
"dependencies": {
|
|
1424
|
-
"dependencies": [
|
|
1425
|
-
{
|
|
1426
|
-
"name": "pydantic",
|
|
1427
|
-
"version": "2.11.10"
|
|
1428
|
-
},
|
|
1429
|
-
{
|
|
1430
|
-
"name": "trustcall",
|
|
1431
|
-
"version": "0.0.39"
|
|
1432
|
-
},
|
|
1433
|
-
{
|
|
1434
|
-
"name": "lfx",
|
|
1435
|
-
"version": null
|
|
1436
|
-
}
|
|
1437
|
-
],
|
|
1438
|
-
"total_dependencies": 3
|
|
1439
|
-
},
|
|
1440
|
-
"module": "lfx.components.llm_operations.structured_output.StructuredOutputComponent"
|
|
1441
|
-
},
|
|
1442
|
-
"minimized": false,
|
|
1443
|
-
"output_types": [],
|
|
1444
|
-
"outputs": [
|
|
1445
|
-
{
|
|
1446
|
-
"allows_loop": false,
|
|
1447
|
-
"cache": true,
|
|
1448
|
-
"display_name": "Structured Output",
|
|
1449
|
-
"group_outputs": false,
|
|
1450
|
-
"method": "build_structured_output",
|
|
1451
|
-
"name": "structured_output",
|
|
1452
|
-
"selected": "Data",
|
|
1453
|
-
"tool_mode": true,
|
|
1454
|
-
"types": [
|
|
1455
|
-
"Data"
|
|
1456
|
-
],
|
|
1457
|
-
"value": "__UNDEFINED__"
|
|
1458
|
-
},
|
|
1459
|
-
{
|
|
1460
|
-
"allows_loop": false,
|
|
1461
|
-
"cache": true,
|
|
1462
|
-
"display_name": "Structured Output",
|
|
1463
|
-
"group_outputs": false,
|
|
1464
|
-
"method": "build_structured_dataframe",
|
|
1465
|
-
"name": "dataframe_output",
|
|
1466
|
-
"selected": "DataFrame",
|
|
1467
|
-
"tool_mode": true,
|
|
1468
|
-
"types": [
|
|
1469
|
-
"DataFrame"
|
|
1470
|
-
],
|
|
1471
|
-
"value": "__UNDEFINED__"
|
|
1472
|
-
}
|
|
1473
|
-
],
|
|
1474
|
-
"pinned": false,
|
|
1475
|
-
"template": {
|
|
1476
|
-
"_type": "Component",
|
|
1477
|
-
"api_key": {
|
|
1478
|
-
"_input_type": "SecretStrInput",
|
|
1479
|
-
"advanced": true,
|
|
1480
|
-
"display_name": "API Key",
|
|
1481
|
-
"dynamic": false,
|
|
1482
|
-
"info": "Model Provider API key",
|
|
1483
|
-
"input_types": [],
|
|
1484
|
-
"load_from_db": false,
|
|
1485
|
-
"name": "api_key",
|
|
1486
|
-
"override_skip": false,
|
|
1487
|
-
"password": true,
|
|
1488
|
-
"placeholder": "",
|
|
1489
|
-
"real_time_refresh": true,
|
|
1490
|
-
"required": false,
|
|
1491
|
-
"show": true,
|
|
1492
|
-
"title_case": false,
|
|
1493
|
-
"track_in_telemetry": false,
|
|
1494
|
-
"type": "str",
|
|
1495
|
-
"value": ""
|
|
1496
|
-
},
|
|
1497
|
-
"code": {
|
|
1498
|
-
"advanced": true,
|
|
1499
|
-
"dynamic": true,
|
|
1500
|
-
"fileTypes": [],
|
|
1501
|
-
"file_path": "",
|
|
1502
|
-
"info": "",
|
|
1503
|
-
"list": false,
|
|
1504
|
-
"load_from_db": false,
|
|
1505
|
-
"multiline": true,
|
|
1506
|
-
"name": "code",
|
|
1507
|
-
"password": false,
|
|
1508
|
-
"placeholder": "",
|
|
1509
|
-
"required": true,
|
|
1510
|
-
"show": true,
|
|
1511
|
-
"title_case": false,
|
|
1512
|
-
"type": "code",
|
|
1513
|
-
"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"
|
|
1514
|
-
},
|
|
1515
|
-
"input_value": {
|
|
1516
|
-
"_input_type": "MultilineInput",
|
|
1517
|
-
"advanced": false,
|
|
1518
|
-
"copy_field": false,
|
|
1519
|
-
"display_name": "Input Message",
|
|
1520
|
-
"dynamic": false,
|
|
1521
|
-
"info": "The input message to the language model.",
|
|
1522
|
-
"input_types": [
|
|
1523
|
-
"Message"
|
|
1524
|
-
],
|
|
1525
|
-
"list": false,
|
|
1526
|
-
"list_add_label": "Add More",
|
|
1527
|
-
"load_from_db": false,
|
|
1528
|
-
"multiline": true,
|
|
1529
|
-
"name": "input_value",
|
|
1530
|
-
"placeholder": "",
|
|
1531
|
-
"required": true,
|
|
1532
|
-
"show": true,
|
|
1533
|
-
"title_case": false,
|
|
1534
|
-
"tool_mode": true,
|
|
1535
|
-
"trace_as_input": true,
|
|
1536
|
-
"trace_as_metadata": true,
|
|
1537
|
-
"type": "str",
|
|
1538
|
-
"value": ""
|
|
1539
|
-
},
|
|
1540
|
-
"model": {
|
|
1541
|
-
"_input_type": "ModelInput",
|
|
1542
|
-
"advanced": false,
|
|
1543
|
-
"display_name": "Language Model",
|
|
1544
|
-
"dynamic": false,
|
|
1545
|
-
"external_options": {
|
|
1546
|
-
"fields": {
|
|
1547
|
-
"data": {
|
|
1548
|
-
"node": {
|
|
1549
|
-
"display_name": "Connect other models",
|
|
1550
|
-
"icon": "CornerDownLeft",
|
|
1551
|
-
"name": "connect_other_models"
|
|
1552
|
-
}
|
|
1553
|
-
}
|
|
1554
|
-
}
|
|
1555
|
-
},
|
|
1556
|
-
"info": "Select your model provider",
|
|
1557
|
-
"input_types": [],
|
|
1558
|
-
"list": false,
|
|
1559
|
-
"list_add_label": "Add More",
|
|
1560
|
-
"model_type": "language",
|
|
1561
|
-
"name": "model",
|
|
1562
|
-
"options": [
|
|
1563
|
-
{
|
|
1564
|
-
"category": "OpenAI",
|
|
1565
|
-
"icon": "OpenAI",
|
|
1566
|
-
"metadata": {
|
|
1567
|
-
"api_key_param": "api_key",
|
|
1568
|
-
"context_length": 128000,
|
|
1569
|
-
"model_class": "ChatOpenAI",
|
|
1570
|
-
"model_name_param": "model",
|
|
1571
|
-
"reasoning_models": [
|
|
1572
|
-
"gpt-5"
|
|
1573
|
-
]
|
|
1574
|
-
},
|
|
1575
|
-
"name": "gpt-5",
|
|
1576
|
-
"provider": "OpenAI"
|
|
1577
|
-
},
|
|
1578
|
-
{
|
|
1579
|
-
"category": "OpenAI",
|
|
1580
|
-
"icon": "OpenAI",
|
|
1581
|
-
"metadata": {
|
|
1582
|
-
"api_key_param": "api_key",
|
|
1583
|
-
"context_length": 128000,
|
|
1584
|
-
"model_class": "ChatOpenAI",
|
|
1585
|
-
"model_name_param": "model",
|
|
1586
|
-
"reasoning_models": [
|
|
1587
|
-
"gpt-5-mini"
|
|
1588
|
-
]
|
|
1589
|
-
},
|
|
1590
|
-
"name": "gpt-5-mini",
|
|
1591
|
-
"provider": "OpenAI"
|
|
1592
|
-
},
|
|
1593
|
-
{
|
|
1594
|
-
"category": "OpenAI",
|
|
1595
|
-
"icon": "OpenAI",
|
|
1596
|
-
"metadata": {
|
|
1597
|
-
"api_key_param": "api_key",
|
|
1598
|
-
"context_length": 128000,
|
|
1599
|
-
"model_class": "ChatOpenAI",
|
|
1600
|
-
"model_name_param": "model",
|
|
1601
|
-
"reasoning_models": [
|
|
1602
|
-
"gpt-5-nano"
|
|
1603
|
-
]
|
|
1604
|
-
},
|
|
1605
|
-
"name": "gpt-5-nano",
|
|
1606
|
-
"provider": "OpenAI"
|
|
1607
|
-
},
|
|
1608
|
-
{
|
|
1609
|
-
"category": "OpenAI",
|
|
1610
|
-
"icon": "OpenAI",
|
|
1611
|
-
"metadata": {
|
|
1612
|
-
"api_key_param": "api_key",
|
|
1613
|
-
"context_length": 128000,
|
|
1614
|
-
"model_class": "ChatOpenAI",
|
|
1615
|
-
"model_name_param": "model"
|
|
1616
|
-
},
|
|
1617
|
-
"name": "gpt-4o-mini",
|
|
1618
|
-
"provider": "OpenAI"
|
|
1619
|
-
},
|
|
1620
|
-
{
|
|
1621
|
-
"category": "OpenAI",
|
|
1622
|
-
"icon": "OpenAI",
|
|
1623
|
-
"metadata": {
|
|
1624
|
-
"api_key_param": "api_key",
|
|
1625
|
-
"context_length": 128000,
|
|
1626
|
-
"model_class": "ChatOpenAI",
|
|
1627
|
-
"model_name_param": "model"
|
|
1628
|
-
},
|
|
1629
|
-
"name": "gpt-4o",
|
|
1630
|
-
"provider": "OpenAI"
|
|
1631
|
-
},
|
|
1632
|
-
{
|
|
1633
|
-
"category": "Google Generative AI",
|
|
1634
|
-
"icon": "GoogleGenerativeAI",
|
|
1635
|
-
"metadata": {
|
|
1636
|
-
"is_disabled_provider": true,
|
|
1637
|
-
"variable_name": "GOOGLE_API_KEY"
|
|
1638
|
-
},
|
|
1639
|
-
"name": "__enable_provider_Google Generative AI__",
|
|
1640
|
-
"provider": "Google Generative AI"
|
|
1641
|
-
},
|
|
1642
|
-
{
|
|
1643
|
-
"category": "Ollama",
|
|
1644
|
-
"icon": "Ollama",
|
|
1645
|
-
"metadata": {
|
|
1646
|
-
"is_disabled_provider": true,
|
|
1647
|
-
"variable_name": "OLLAMA_BASE_URL"
|
|
1648
|
-
},
|
|
1649
|
-
"name": "__enable_provider_Ollama__",
|
|
1650
|
-
"provider": "Ollama"
|
|
1651
|
-
},
|
|
1652
|
-
{
|
|
1653
|
-
"category": "IBM Watsonx",
|
|
1654
|
-
"icon": "WatsonxAI",
|
|
1655
|
-
"metadata": {
|
|
1656
|
-
"is_disabled_provider": true,
|
|
1657
|
-
"variable_name": "WATSONX_APIKEY"
|
|
1658
|
-
},
|
|
1659
|
-
"name": "__enable_provider_IBM Watsonx__",
|
|
1660
|
-
"provider": "IBM Watsonx"
|
|
1661
|
-
}
|
|
1662
|
-
],
|
|
1663
|
-
"override_skip": false,
|
|
1664
|
-
"placeholder": "Setup Provider",
|
|
1665
|
-
"real_time_refresh": true,
|
|
1666
|
-
"refresh_button": true,
|
|
1667
|
-
"required": true,
|
|
1668
|
-
"show": true,
|
|
1669
|
-
"title_case": false,
|
|
1670
|
-
"tool_mode": false,
|
|
1671
|
-
"trace_as_input": true,
|
|
1672
|
-
"track_in_telemetry": false,
|
|
1673
|
-
"type": "model",
|
|
1674
|
-
"value": [
|
|
1675
|
-
{
|
|
1676
|
-
"category": "OpenAI",
|
|
1677
|
-
"icon": "OpenAI",
|
|
1678
|
-
"metadata": {
|
|
1679
|
-
"api_key_param": "api_key",
|
|
1680
|
-
"context_length": 128000,
|
|
1681
|
-
"model_class": "ChatOpenAI",
|
|
1682
|
-
"model_name_param": "model",
|
|
1683
|
-
"reasoning_models": [
|
|
1684
|
-
"gpt-5"
|
|
1685
|
-
]
|
|
1686
|
-
},
|
|
1687
|
-
"name": "gpt-5",
|
|
1688
|
-
"provider": "OpenAI"
|
|
1689
|
-
}
|
|
1690
|
-
]
|
|
1691
|
-
},
|
|
1692
|
-
"output_schema": {
|
|
1693
|
-
"_input_type": "TableInput",
|
|
1694
|
-
"advanced": false,
|
|
1695
|
-
"display_name": "Output Schema",
|
|
1696
|
-
"dynamic": false,
|
|
1697
|
-
"info": "Define the structure and data types for the model's output.",
|
|
1698
|
-
"is_list": true,
|
|
1699
|
-
"list_add_label": "Add More",
|
|
1700
|
-
"name": "output_schema",
|
|
1701
|
-
"placeholder": "",
|
|
1702
|
-
"required": true,
|
|
1703
|
-
"show": true,
|
|
1704
|
-
"table_icon": "Table",
|
|
1705
|
-
"table_schema": [
|
|
1706
|
-
{
|
|
1707
|
-
"default": "field",
|
|
1708
|
-
"description": "Specify the name of the output field.",
|
|
1709
|
-
"display_name": "Name",
|
|
1710
|
-
"edit_mode": "inline",
|
|
1711
|
-
"formatter": "text",
|
|
1712
|
-
"name": "name",
|
|
1713
|
-
"type": "str"
|
|
1714
|
-
},
|
|
1715
|
-
{
|
|
1716
|
-
"default": "description of field",
|
|
1717
|
-
"description": "Describe the purpose of the output field.",
|
|
1718
|
-
"display_name": "Description",
|
|
1719
|
-
"edit_mode": "popover",
|
|
1720
|
-
"formatter": "text",
|
|
1721
|
-
"name": "description",
|
|
1722
|
-
"type": "str"
|
|
1723
|
-
},
|
|
1724
|
-
{
|
|
1725
|
-
"default": "str",
|
|
1726
|
-
"description": "Indicate the data type of the output field (e.g., str, int, float, bool, dict).",
|
|
1727
|
-
"display_name": "Type",
|
|
1728
|
-
"edit_mode": "inline",
|
|
1729
|
-
"formatter": "text",
|
|
1730
|
-
"name": "type",
|
|
1731
|
-
"options": [
|
|
1732
|
-
"str",
|
|
1733
|
-
"int",
|
|
1734
|
-
"float",
|
|
1735
|
-
"bool",
|
|
1736
|
-
"dict"
|
|
1737
|
-
],
|
|
1738
|
-
"type": "str"
|
|
1739
|
-
},
|
|
1740
|
-
{
|
|
1741
|
-
"default": "False",
|
|
1742
|
-
"description": "Set to True if this output field should be a list of the specified type.",
|
|
1743
|
-
"display_name": "As List",
|
|
1744
|
-
"edit_mode": "inline",
|
|
1745
|
-
"formatter": "text",
|
|
1746
|
-
"name": "multiple",
|
|
1747
|
-
"type": "boolean"
|
|
1748
|
-
}
|
|
1749
|
-
],
|
|
1750
|
-
"title_case": false,
|
|
1751
|
-
"tool_mode": false,
|
|
1752
|
-
"trace_as_metadata": true,
|
|
1753
|
-
"trigger_icon": "Table",
|
|
1754
|
-
"trigger_text": "Open table",
|
|
1755
|
-
"type": "table",
|
|
1756
|
-
"value": [
|
|
1757
|
-
{
|
|
1758
|
-
"description": "Full name of the candidate",
|
|
1759
|
-
"multiple": "False",
|
|
1760
|
-
"name": "full_name",
|
|
1761
|
-
"type": "str"
|
|
1762
|
-
},
|
|
1763
|
-
{
|
|
1764
|
-
"description": "Email ID",
|
|
1765
|
-
"multiple": "False",
|
|
1766
|
-
"name": "email",
|
|
1767
|
-
"type": "str"
|
|
1768
|
-
},
|
|
1769
|
-
{
|
|
1770
|
-
"description": "Contact Number",
|
|
1771
|
-
"multiple": "False",
|
|
1772
|
-
"name": "phone_number",
|
|
1773
|
-
"type": "str"
|
|
1774
|
-
},
|
|
1775
|
-
{
|
|
1776
|
-
"description": "LinkedIn URL",
|
|
1777
|
-
"multiple": "False",
|
|
1778
|
-
"name": "linkedin",
|
|
1779
|
-
"type": "str"
|
|
1780
|
-
},
|
|
1781
|
-
{
|
|
1782
|
-
"description": "GitHub profile URL (if applicable)",
|
|
1783
|
-
"multiple": "False",
|
|
1784
|
-
"name": "github",
|
|
1785
|
-
"type": "str"
|
|
1786
|
-
},
|
|
1787
|
-
{
|
|
1788
|
-
"description": "Personal website or portfolio URL",
|
|
1789
|
-
"multiple": "False",
|
|
1790
|
-
"name": "portfolio",
|
|
1791
|
-
"type": "str"
|
|
1792
|
-
},
|
|
1793
|
-
{
|
|
1794
|
-
"description": "Visa/work authorization details (if applicable)",
|
|
1795
|
-
"multiple": "False",
|
|
1796
|
-
"name": "visa_status",
|
|
1797
|
-
"type": "str"
|
|
1798
|
-
},
|
|
1799
|
-
{
|
|
1800
|
-
"description": "Short professional summary or objective statement",
|
|
1801
|
-
"multiple": "False",
|
|
1802
|
-
"name": "summary",
|
|
1803
|
-
"type": "str"
|
|
1804
|
-
},
|
|
1805
|
-
{
|
|
1806
|
-
"description": "Dictionaries of experience details with following keys:\\n \\\"job_title\\\": Job position/title,\\n\\t\\\"company_name\\\": Employer or organization\\n\\t\\\"location\\\": Job location (remote/in-office)\\n\\t\\\"start_date\\\": Start date (YYYY-MM)\\n\\t\\\"end_date\\\": End date or \\\"Present\\\"\\n\\t\\\"responsibilities\\\": List of responsibilities and tasks\\n\\t\\\"achievements\\\": List of key achievements and contributions",
|
|
1807
|
-
"multiple": "True",
|
|
1808
|
-
"name": "experience",
|
|
1809
|
-
"type": "dict"
|
|
1810
|
-
},
|
|
1811
|
-
{
|
|
1812
|
-
"description": "Dictionaries of Education details with following keys:\\n\\\"degree\\\": Degree obtained (e.g., B.Sc., M.Sc., Ph.D.),\\n\\\"field_of_study\\\": Major or specialization,\\n\\\"institution\\\": University/college name,\\n\\\"location\\\": Location of institution,\\n\\\"start_date\\\": Start date (YYYY-MM),\\n\\\"end_date\\\": Graduation/completion date (YYYY-MM),\\n\\\"gpa\\\": GPA/grade (if available),\\n\\\"relevant_courses\\\": List of relevant coursework (if applicable)",
|
|
1813
|
-
"multiple": "True",
|
|
1814
|
-
"name": "education",
|
|
1815
|
-
"type": "dict"
|
|
1816
|
-
},
|
|
1817
|
-
{
|
|
1818
|
-
"description": "Skills mentioned in the resume. Comma separated.",
|
|
1819
|
-
"multiple": "True",
|
|
1820
|
-
"name": "skills",
|
|
1821
|
-
"type": "str"
|
|
1822
|
-
},
|
|
1823
|
-
{
|
|
1824
|
-
"description": "Title and description and details of the project. Including the skills and technologies used.",
|
|
1825
|
-
"multiple": "False",
|
|
1826
|
-
"name": "projects",
|
|
1827
|
-
"type": "str"
|
|
1828
|
-
}
|
|
1829
|
-
]
|
|
1830
|
-
},
|
|
1831
|
-
"schema_name": {
|
|
1832
|
-
"_input_type": "MessageTextInput",
|
|
1833
|
-
"advanced": true,
|
|
1834
|
-
"display_name": "Schema Name",
|
|
1835
|
-
"dynamic": false,
|
|
1836
|
-
"info": "Provide a name for the output data schema.",
|
|
1837
|
-
"input_types": [
|
|
1838
|
-
"Message"
|
|
1839
|
-
],
|
|
1840
|
-
"list": false,
|
|
1841
|
-
"list_add_label": "Add More",
|
|
1842
|
-
"load_from_db": false,
|
|
1843
|
-
"name": "schema_name",
|
|
1844
|
-
"placeholder": "",
|
|
1845
|
-
"required": false,
|
|
1846
|
-
"show": true,
|
|
1847
|
-
"title_case": false,
|
|
1848
|
-
"tool_mode": false,
|
|
1849
|
-
"trace_as_input": true,
|
|
1850
|
-
"trace_as_metadata": true,
|
|
1851
|
-
"type": "str",
|
|
1852
|
-
"value": ""
|
|
1853
|
-
},
|
|
1854
|
-
"system_prompt": {
|
|
1855
|
-
"_input_type": "MultilineInput",
|
|
1856
|
-
"advanced": true,
|
|
1857
|
-
"copy_field": false,
|
|
1858
|
-
"display_name": "Format Instructions",
|
|
1859
|
-
"dynamic": false,
|
|
1860
|
-
"info": "The instructions to the language model for formatting the output.",
|
|
1861
|
-
"input_types": [
|
|
1862
|
-
"Message"
|
|
1863
|
-
],
|
|
1864
|
-
"list": false,
|
|
1865
|
-
"list_add_label": "Add More",
|
|
1866
|
-
"load_from_db": false,
|
|
1867
|
-
"multiline": true,
|
|
1868
|
-
"name": "system_prompt",
|
|
1869
|
-
"placeholder": "",
|
|
1870
|
-
"required": true,
|
|
1871
|
-
"show": true,
|
|
1872
|
-
"title_case": false,
|
|
1873
|
-
"tool_mode": false,
|
|
1874
|
-
"trace_as_input": true,
|
|
1875
1303
|
"trace_as_metadata": true,
|
|
1876
1304
|
"type": "str",
|
|
1877
|
-
"value": "
|
|
1878
|
-
}
|
|
1879
|
-
},
|
|
1880
|
-
"tool_mode": false
|
|
1881
|
-
},
|
|
1882
|
-
"selected_output": "dataframe_output",
|
|
1883
|
-
"showNode": true,
|
|
1884
|
-
"type": "StructuredOutput"
|
|
1885
|
-
},
|
|
1886
|
-
"dragging": false,
|
|
1887
|
-
"id": "StructuredOutput-GJE9p",
|
|
1888
|
-
"measured": {
|
|
1889
|
-
"height": 387,
|
|
1890
|
-
"width": 320
|
|
1891
|
-
},
|
|
1892
|
-
"position": {
|
|
1893
|
-
"x": 1308.5338025647359,
|
|
1894
|
-
"y": 651.6998573907567
|
|
1895
|
-
},
|
|
1896
|
-
"selected": false,
|
|
1897
|
-
"type": "genericNode"
|
|
1898
|
-
},
|
|
1899
|
-
{
|
|
1900
|
-
"data": {
|
|
1901
|
-
"id": "File-Ln2gO",
|
|
1902
|
-
"node": {
|
|
1903
|
-
"base_classes": [
|
|
1904
|
-
"Message"
|
|
1905
|
-
],
|
|
1906
|
-
"beta": false,
|
|
1907
|
-
"conditional_paths": [],
|
|
1908
|
-
"custom_fields": {},
|
|
1909
|
-
"description": "Loads and returns the content from uploaded files.",
|
|
1910
|
-
"display_name": "Read File",
|
|
1911
|
-
"documentation": "https://docs.langflow.org/read-file",
|
|
1912
|
-
"edited": false,
|
|
1913
|
-
"field_order": [
|
|
1914
|
-
"storage_location",
|
|
1915
|
-
"path",
|
|
1916
|
-
"file_path",
|
|
1917
|
-
"separator",
|
|
1918
|
-
"silent_errors",
|
|
1919
|
-
"delete_server_file_after_processing",
|
|
1920
|
-
"ignore_unsupported_extensions",
|
|
1921
|
-
"ignore_unspecified_files",
|
|
1922
|
-
"file_path_str",
|
|
1923
|
-
"aws_access_key_id",
|
|
1924
|
-
"aws_secret_access_key",
|
|
1925
|
-
"bucket_name",
|
|
1926
|
-
"aws_region",
|
|
1927
|
-
"s3_file_key",
|
|
1928
|
-
"service_account_key",
|
|
1929
|
-
"file_id",
|
|
1930
|
-
"advanced_mode",
|
|
1931
|
-
"pipeline",
|
|
1932
|
-
"ocr_engine",
|
|
1933
|
-
"md_image_placeholder",
|
|
1934
|
-
"md_page_break_placeholder",
|
|
1935
|
-
"doc_key",
|
|
1936
|
-
"use_multithreading",
|
|
1937
|
-
"concurrency_multithreading",
|
|
1938
|
-
"markdown"
|
|
1939
|
-
],
|
|
1940
|
-
"frozen": false,
|
|
1941
|
-
"icon": "file-text",
|
|
1942
|
-
"last_updated": "2025-12-20T17:34:46.873Z",
|
|
1943
|
-
"legacy": false,
|
|
1944
|
-
"metadata": {
|
|
1945
|
-
"code_hash": "9d57e0bfda44",
|
|
1946
|
-
"dependencies": {
|
|
1947
|
-
"dependencies": [
|
|
1948
|
-
{
|
|
1949
|
-
"name": "lfx",
|
|
1950
|
-
"version": null
|
|
1951
|
-
},
|
|
1952
|
-
{
|
|
1953
|
-
"name": "langchain_core",
|
|
1954
|
-
"version": "0.3.80"
|
|
1955
|
-
},
|
|
1956
|
-
{
|
|
1957
|
-
"name": "pydantic",
|
|
1958
|
-
"version": "2.11.10"
|
|
1959
|
-
},
|
|
1960
|
-
{
|
|
1961
|
-
"name": "googleapiclient",
|
|
1962
|
-
"version": "2.154.0"
|
|
1963
|
-
}
|
|
1964
|
-
],
|
|
1965
|
-
"total_dependencies": 4
|
|
1305
|
+
"value": "easyocr"
|
|
1966
1306
|
},
|
|
1967
|
-
"
|
|
1968
|
-
|
|
1969
|
-
"minimized": false,
|
|
1970
|
-
"output_types": [],
|
|
1971
|
-
"outputs": [
|
|
1972
|
-
{
|
|
1973
|
-
"allows_loop": false,
|
|
1974
|
-
"cache": true,
|
|
1975
|
-
"display_name": "Raw Content",
|
|
1976
|
-
"group_outputs": false,
|
|
1977
|
-
"method": "load_files_message",
|
|
1978
|
-
"name": "message",
|
|
1979
|
-
"selected": "Message",
|
|
1980
|
-
"tool_mode": true,
|
|
1981
|
-
"types": [
|
|
1982
|
-
"Message"
|
|
1983
|
-
],
|
|
1984
|
-
"value": "__UNDEFINED__"
|
|
1985
|
-
}
|
|
1986
|
-
],
|
|
1987
|
-
"pinned": false,
|
|
1988
|
-
"template": {
|
|
1989
|
-
"_type": "Component",
|
|
1990
|
-
"advanced_mode": {
|
|
1991
|
-
"_input_type": "BoolInput",
|
|
1307
|
+
"path": {
|
|
1308
|
+
"_input_type": "FileInput",
|
|
1992
1309
|
"advanced": false,
|
|
1993
|
-
"display_name": "
|
|
1310
|
+
"display_name": "Files",
|
|
1994
1311
|
"dynamic": false,
|
|
1995
|
-
"
|
|
1996
|
-
|
|
1312
|
+
"fileTypes": [
|
|
1313
|
+
"csv",
|
|
1314
|
+
"json",
|
|
1315
|
+
"pdf",
|
|
1316
|
+
"txt",
|
|
1317
|
+
"md",
|
|
1318
|
+
"mdx",
|
|
1319
|
+
"yaml",
|
|
1320
|
+
"yml",
|
|
1321
|
+
"xml",
|
|
1322
|
+
"html",
|
|
1323
|
+
"htm",
|
|
1324
|
+
"docx",
|
|
1325
|
+
"py",
|
|
1326
|
+
"sh",
|
|
1327
|
+
"sql",
|
|
1328
|
+
"js",
|
|
1329
|
+
"ts",
|
|
1330
|
+
"tsx",
|
|
1331
|
+
"adoc",
|
|
1332
|
+
"asciidoc",
|
|
1333
|
+
"asc",
|
|
1334
|
+
"bmp",
|
|
1335
|
+
"dotx",
|
|
1336
|
+
"dotm",
|
|
1337
|
+
"docm",
|
|
1338
|
+
"jpg",
|
|
1339
|
+
"jpeg",
|
|
1340
|
+
"png",
|
|
1341
|
+
"potx",
|
|
1342
|
+
"ppsx",
|
|
1343
|
+
"pptm",
|
|
1344
|
+
"potm",
|
|
1345
|
+
"ppsm",
|
|
1346
|
+
"pptx",
|
|
1347
|
+
"tiff",
|
|
1348
|
+
"xls",
|
|
1349
|
+
"xlsx",
|
|
1350
|
+
"xhtml",
|
|
1351
|
+
"webp",
|
|
1352
|
+
"zip",
|
|
1353
|
+
"tar",
|
|
1354
|
+
"tgz",
|
|
1355
|
+
"bz2",
|
|
1356
|
+
"gz"
|
|
1357
|
+
],
|
|
1358
|
+
"file_path": [],
|
|
1359
|
+
"info": "Supported file extensions: csv, json, pdf, txt, md, mdx, yaml, yml, xml, html, htm, docx, py, sh, sql, js, ts, tsx, adoc, asciidoc, asc, bmp, dotx, dotm, docm, jpg, jpeg, png, potx, ppsx, pptm, potm, ppsm, pptx, tiff, xls, xlsx, xhtml, webp; optionally bundled in file extensions: zip, tar, tgz, bz2, gz",
|
|
1360
|
+
"list": true,
|
|
1997
1361
|
"list_add_label": "Add More",
|
|
1998
|
-
"name": "
|
|
1999
|
-
"override_skip": false,
|
|
1362
|
+
"name": "path",
|
|
2000
1363
|
"placeholder": "",
|
|
2001
1364
|
"real_time_refresh": true,
|
|
2002
1365
|
"required": false,
|
|
2003
1366
|
"show": true,
|
|
1367
|
+
"temp_file": false,
|
|
2004
1368
|
"title_case": false,
|
|
2005
|
-
"tool_mode": false,
|
|
2006
|
-
"trace_as_metadata": true,
|
|
2007
|
-
"track_in_telemetry": true,
|
|
2008
|
-
"type": "bool",
|
|
2009
|
-
"value": false
|
|
2010
|
-
},
|
|
2011
|
-
"aws_access_key_id": {
|
|
2012
|
-
"_input_type": "SecretStrInput",
|
|
2013
|
-
"advanced": false,
|
|
2014
|
-
"display_name": "AWS Access Key ID",
|
|
2015
|
-
"dynamic": false,
|
|
2016
|
-
"info": "AWS Access key ID.",
|
|
2017
|
-
"input_types": [],
|
|
2018
|
-
"load_from_db": true,
|
|
2019
|
-
"name": "aws_access_key_id",
|
|
2020
|
-
"override_skip": false,
|
|
2021
|
-
"password": true,
|
|
2022
|
-
"placeholder": "",
|
|
2023
|
-
"required": true,
|
|
2024
|
-
"show": false,
|
|
2025
|
-
"title_case": false,
|
|
2026
|
-
"track_in_telemetry": false,
|
|
2027
|
-
"type": "str",
|
|
2028
|
-
"value": ""
|
|
2029
|
-
},
|
|
2030
|
-
"aws_region": {
|
|
2031
|
-
"_input_type": "StrInput",
|
|
2032
|
-
"advanced": false,
|
|
2033
|
-
"display_name": "AWS Region",
|
|
2034
|
-
"dynamic": false,
|
|
2035
|
-
"info": "AWS region (e.g., us-east-1, eu-west-1).",
|
|
2036
|
-
"list": false,
|
|
2037
|
-
"list_add_label": "Add More",
|
|
2038
|
-
"load_from_db": false,
|
|
2039
|
-
"name": "aws_region",
|
|
2040
|
-
"override_skip": false,
|
|
2041
|
-
"placeholder": "",
|
|
2042
|
-
"required": false,
|
|
2043
|
-
"show": false,
|
|
2044
|
-
"title_case": false,
|
|
2045
|
-
"tool_mode": false,
|
|
2046
1369
|
"trace_as_metadata": true,
|
|
2047
|
-
"
|
|
2048
|
-
"type": "str",
|
|
1370
|
+
"type": "file",
|
|
2049
1371
|
"value": ""
|
|
2050
1372
|
},
|
|
2051
|
-
"
|
|
2052
|
-
"_input_type": "
|
|
2053
|
-
"advanced":
|
|
2054
|
-
"
|
|
1373
|
+
"pipeline": {
|
|
1374
|
+
"_input_type": "DropdownInput",
|
|
1375
|
+
"advanced": true,
|
|
1376
|
+
"combobox": false,
|
|
1377
|
+
"dialog_inputs": {},
|
|
1378
|
+
"display_name": "Pipeline",
|
|
2055
1379
|
"dynamic": false,
|
|
2056
|
-
"
|
|
2057
|
-
"
|
|
2058
|
-
"
|
|
2059
|
-
"
|
|
2060
|
-
|
|
2061
|
-
|
|
1380
|
+
"external_options": {},
|
|
1381
|
+
"info": "Docling pipeline to use",
|
|
1382
|
+
"name": "pipeline",
|
|
1383
|
+
"options": [
|
|
1384
|
+
"standard",
|
|
1385
|
+
"vlm"
|
|
1386
|
+
],
|
|
1387
|
+
"options_metadata": [],
|
|
2062
1388
|
"placeholder": "",
|
|
2063
|
-
"
|
|
1389
|
+
"real_time_refresh": true,
|
|
1390
|
+
"required": false,
|
|
2064
1391
|
"show": false,
|
|
2065
1392
|
"title_case": false,
|
|
2066
|
-
"
|
|
1393
|
+
"toggle": false,
|
|
1394
|
+
"tool_mode": false,
|
|
1395
|
+
"trace_as_metadata": true,
|
|
2067
1396
|
"type": "str",
|
|
2068
|
-
"value": ""
|
|
1397
|
+
"value": "standard"
|
|
2069
1398
|
},
|
|
2070
|
-
"
|
|
1399
|
+
"s3_file_key": {
|
|
2071
1400
|
"_input_type": "StrInput",
|
|
2072
1401
|
"advanced": false,
|
|
2073
|
-
"display_name": "S3
|
|
1402
|
+
"display_name": "S3 File Key",
|
|
2074
1403
|
"dynamic": false,
|
|
2075
|
-
"info": "
|
|
1404
|
+
"info": "The key (path) of the file in S3 bucket.",
|
|
2076
1405
|
"list": false,
|
|
2077
1406
|
"list_add_label": "Add More",
|
|
2078
1407
|
"load_from_db": false,
|
|
2079
|
-
"name": "
|
|
1408
|
+
"name": "s3_file_key",
|
|
2080
1409
|
"override_skip": false,
|
|
2081
1410
|
"placeholder": "",
|
|
2082
1411
|
"required": true,
|
|
@@ -2088,547 +1417,937 @@
|
|
|
2088
1417
|
"type": "str",
|
|
2089
1418
|
"value": ""
|
|
2090
1419
|
},
|
|
2091
|
-
"
|
|
1420
|
+
"separator": {
|
|
1421
|
+
"_input_type": "StrInput",
|
|
2092
1422
|
"advanced": true,
|
|
2093
|
-
"
|
|
2094
|
-
"
|
|
2095
|
-
"
|
|
2096
|
-
"info": "",
|
|
1423
|
+
"display_name": "Separator",
|
|
1424
|
+
"dynamic": false,
|
|
1425
|
+
"info": "Specify the separator to use between multiple outputs in Message format.",
|
|
2097
1426
|
"list": false,
|
|
1427
|
+
"list_add_label": "Add More",
|
|
2098
1428
|
"load_from_db": false,
|
|
2099
|
-
"
|
|
2100
|
-
"name": "code",
|
|
2101
|
-
"password": false,
|
|
1429
|
+
"name": "separator",
|
|
2102
1430
|
"placeholder": "",
|
|
2103
|
-
"required":
|
|
1431
|
+
"required": false,
|
|
2104
1432
|
"show": true,
|
|
2105
1433
|
"title_case": false,
|
|
2106
|
-
"
|
|
2107
|
-
"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 import SortableListInput\nfrom lfx.inputs.inputs import DropdownInput, MessageTextInput, StrInput\nfrom lfx.io import BoolInput, FileInput, IntInput, Output, SecretStrInput\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\nfrom lfx.utils.validate_cloud import is_astra_cloud_environment\n\n\ndef _get_storage_location_options():\n \"\"\"Get storage location options, filtering out Local if in Astra cloud environment.\"\"\"\n all_options = [{\"name\": \"AWS\", \"icon\": \"Amazon\"}, {\"name\": \"Google Drive\", \"icon\": \"google\"}]\n if is_astra_cloud_environment():\n return all_options\n return [{\"name\": \"Local\", \"icon\": \"hard-drive\"}, *all_options]\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 SortableListInput(\n name=\"storage_location\",\n display_name=\"Storage Location\",\n placeholder=\"Select Location\",\n info=\"Choose where to read the file from.\",\n options=_get_storage_location_options(),\n real_time_refresh=True,\n limit=1,\n ),\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 # AWS S3 specific inputs\n SecretStrInput(\n name=\"aws_access_key_id\",\n display_name=\"AWS Access Key ID\",\n info=\"AWS Access key ID.\",\n show=False,\n advanced=False,\n required=True,\n ),\n SecretStrInput(\n name=\"aws_secret_access_key\",\n display_name=\"AWS Secret Key\",\n info=\"AWS Secret Key.\",\n show=False,\n advanced=False,\n required=True,\n ),\n StrInput(\n name=\"bucket_name\",\n display_name=\"S3 Bucket Name\",\n info=\"Enter the name of the S3 bucket.\",\n show=False,\n advanced=False,\n required=True,\n ),\n StrInput(\n name=\"aws_region\",\n display_name=\"AWS Region\",\n info=\"AWS region (e.g., us-east-1, eu-west-1).\",\n show=False,\n advanced=False,\n ),\n StrInput(\n name=\"s3_file_key\",\n display_name=\"S3 File Key\",\n info=\"The key (path) of the file in S3 bucket.\",\n show=False,\n advanced=False,\n required=True,\n ),\n # Google Drive specific inputs\n SecretStrInput(\n name=\"service_account_key\",\n display_name=\"GCP Credentials Secret Key\",\n info=\"Your Google Cloud Platform service account JSON key as a secret string (complete JSON content).\",\n show=False,\n advanced=False,\n required=True,\n ),\n StrInput(\n name=\"file_id\",\n display_name=\"Google Drive File ID\",\n info=(\"The Google Drive file ID to read. The file must be shared with the service account email.\"),\n show=False,\n advanced=False,\n required=True,\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 # Update storage location options dynamically based on cloud environment\n if \"storage_location\" in build_config:\n updated_options = _get_storage_location_options()\n build_config[\"storage_location\"][\"options\"] = updated_options\n\n # Handle storage location selection\n if field_name == \"storage_location\":\n # Extract selected storage location\n selected = [location[\"name\"] for location in field_value] if isinstance(field_value, list) else []\n\n # Hide all storage-specific fields first\n storage_fields = [\n \"aws_access_key_id\",\n \"aws_secret_access_key\",\n \"bucket_name\",\n \"aws_region\",\n \"s3_file_key\",\n \"service_account_key\",\n \"file_id\",\n ]\n\n for f_name in storage_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = False\n\n # Show fields based on selected storage location\n if len(selected) == 1:\n location = selected[0]\n\n if location == \"Local\":\n # Show file upload input for local storage\n if \"path\" in build_config:\n build_config[\"path\"][\"show\"] = True\n\n elif location == \"AWS\":\n # Hide file upload input, show AWS fields\n if \"path\" in build_config:\n build_config[\"path\"][\"show\"] = False\n\n aws_fields = [\n \"aws_access_key_id\",\n \"aws_secret_access_key\",\n \"bucket_name\",\n \"aws_region\",\n \"s3_file_key\",\n ]\n for f_name in aws_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = True\n build_config[f_name][\"advanced\"] = False\n\n elif location == \"Google Drive\":\n # Hide file upload input, show Google Drive fields\n if \"path\" in build_config:\n build_config[\"path\"][\"show\"] = False\n\n gdrive_fields = [\"service_account_key\", \"file_id\"]\n for f_name in gdrive_fields:\n if f_name in build_config:\n build_config[f_name][\"show\"] = True\n build_config[f_name][\"advanced\"] = False\n # No storage location selected - show file upload by default\n elif \"path\" in build_config:\n build_config[\"path\"][\"show\"] = True\n\n return build_config\n\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 _get_selected_storage_location(self) -> str:\n \"\"\"Get the selected storage location from the SortableListInput.\"\"\"\n if hasattr(self, \"storage_location\") and self.storage_location:\n if isinstance(self.storage_location, list) and len(self.storage_location) > 0:\n return self.storage_location[0].get(\"name\", \"\")\n if isinstance(self.storage_location, dict):\n return self.storage_location.get(\"name\", \"\")\n return \"Local\" # Default to Local if not specified\n\n def _validate_and_resolve_paths(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Override to handle file_path_str input from tool mode and cloud storage.\n\n Priority:\n 1. Cloud storage (AWS/Google Drive) if selected\n 2. file_path_str (if provided by the tool call)\n 3. path (uploaded file from UI)\n \"\"\"\n storage_location = self._get_selected_storage_location()\n\n # Handle AWS S3\n if storage_location == \"AWS\":\n return self._read_from_aws_s3()\n\n # Handle Google Drive\n if storage_location == \"Google Drive\":\n return self._read_from_google_drive()\n\n # Handle Local storage\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 _read_from_aws_s3(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Read file from AWS S3.\"\"\"\n from lfx.base.data.cloud_storage_utils import create_s3_client, validate_aws_credentials\n\n # Validate AWS credentials\n validate_aws_credentials(self)\n if not getattr(self, \"s3_file_key\", None):\n msg = \"S3 File Key is required\"\n raise ValueError(msg)\n\n # Create S3 client\n s3_client = create_s3_client(self)\n\n # Download file to temp location\n import tempfile\n\n # Get file extension from S3 key\n file_extension = Path(self.s3_file_key).suffix or \"\"\n\n with tempfile.NamedTemporaryFile(mode=\"wb\", suffix=file_extension, delete=False) as temp_file:\n temp_file_path = temp_file.name\n try:\n s3_client.download_fileobj(self.bucket_name, self.s3_file_key, temp_file)\n except Exception as e:\n # Clean up temp file on failure\n with contextlib.suppress(OSError):\n Path(temp_file_path).unlink()\n msg = f\"Failed to download file from S3: {e}\"\n raise RuntimeError(msg) from e\n\n # Create BaseFile object\n from lfx.schema.data import Data\n\n temp_path = Path(temp_file_path)\n data_obj = Data(data={self.SERVER_FILE_PATH_FIELDNAME: str(temp_path)})\n return [BaseFileComponent.BaseFile(data_obj, temp_path, delete_after_processing=True)]\n\n def _read_from_google_drive(self) -> list[BaseFileComponent.BaseFile]:\n \"\"\"Read file from Google Drive.\"\"\"\n import tempfile\n\n from googleapiclient.http import MediaIoBaseDownload\n\n from lfx.base.data.cloud_storage_utils import create_google_drive_service\n\n # Validate Google Drive credentials\n if not getattr(self, \"service_account_key\", None):\n msg = \"GCP Credentials Secret Key is required for Google Drive storage\"\n raise ValueError(msg)\n if not getattr(self, \"file_id\", None):\n msg = \"Google Drive File ID is required\"\n raise ValueError(msg)\n\n # Create Google Drive service with read-only scope\n drive_service = create_google_drive_service(\n self.service_account_key, scopes=[\"https://www.googleapis.com/auth/drive.readonly\"]\n )\n\n # Get file metadata to determine file name and extension\n try:\n file_metadata = drive_service.files().get(fileId=self.file_id, fields=\"name,mimeType\").execute()\n file_name = file_metadata.get(\"name\", \"download\")\n except Exception as e:\n msg = (\n f\"Unable to access file with ID '{self.file_id}'. \"\n f\"Error: {e!s}. \"\n \"Please ensure: 1) The file ID is correct, 2) The file exists, \"\n \"3) The service account has been granted access to this file.\"\n )\n raise ValueError(msg) from e\n\n # Download file to temp location\n file_extension = Path(file_name).suffix or \"\"\n with tempfile.NamedTemporaryFile(mode=\"wb\", suffix=file_extension, delete=False) as temp_file:\n temp_file_path = temp_file.name\n try:\n request = drive_service.files().get_media(fileId=self.file_id)\n downloader = MediaIoBaseDownload(temp_file, request)\n done = False\n while not done:\n _status, done = downloader.next_chunk()\n except Exception as e:\n # Clean up temp file on failure\n with contextlib.suppress(OSError):\n Path(temp_file_path).unlink()\n msg = f\"Failed to download file from Google Drive: {e}\"\n raise RuntimeError(msg) from e\n\n # Create BaseFile object\n from lfx.schema.data import Data\n\n temp_path = Path(temp_file_path)\n data_obj = Data(data={self.SERVER_FILE_PATH_FIELDNAME: str(temp_path)})\n return [BaseFileComponent.BaseFile(data_obj, temp_path, delete_after_processing=True)]\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"
|
|
1434
|
+
"tool_mode": false,
|
|
1435
|
+
"trace_as_metadata": true,
|
|
1436
|
+
"type": "str",
|
|
1437
|
+
"value": "\n\n"
|
|
2108
1438
|
},
|
|
2109
|
-
"
|
|
2110
|
-
"_input_type": "
|
|
2111
|
-
"advanced":
|
|
2112
|
-
"display_name": "
|
|
1439
|
+
"service_account_key": {
|
|
1440
|
+
"_input_type": "SecretStrInput",
|
|
1441
|
+
"advanced": false,
|
|
1442
|
+
"display_name": "GCP Credentials Secret Key",
|
|
2113
1443
|
"dynamic": false,
|
|
2114
|
-
"info": "
|
|
2115
|
-
"
|
|
2116
|
-
"
|
|
2117
|
-
"name": "
|
|
1444
|
+
"info": "Your Google Cloud Platform service account JSON key as a secret string (complete JSON content).",
|
|
1445
|
+
"input_types": [],
|
|
1446
|
+
"load_from_db": true,
|
|
1447
|
+
"name": "service_account_key",
|
|
2118
1448
|
"override_skip": false,
|
|
1449
|
+
"password": true,
|
|
2119
1450
|
"placeholder": "",
|
|
2120
|
-
"required":
|
|
2121
|
-
"show":
|
|
1451
|
+
"required": true,
|
|
1452
|
+
"show": false,
|
|
2122
1453
|
"title_case": false,
|
|
2123
|
-
"
|
|
2124
|
-
"
|
|
2125
|
-
"
|
|
2126
|
-
"type": "int",
|
|
2127
|
-
"value": 1
|
|
1454
|
+
"track_in_telemetry": false,
|
|
1455
|
+
"type": "str",
|
|
1456
|
+
"value": ""
|
|
2128
1457
|
},
|
|
2129
|
-
"
|
|
1458
|
+
"silent_errors": {
|
|
2130
1459
|
"_input_type": "BoolInput",
|
|
2131
1460
|
"advanced": true,
|
|
2132
|
-
"display_name": "
|
|
1461
|
+
"display_name": "Silent Errors",
|
|
2133
1462
|
"dynamic": false,
|
|
2134
|
-
"info": "If true,
|
|
1463
|
+
"info": "If true, errors will not raise an exception.",
|
|
2135
1464
|
"list": false,
|
|
2136
1465
|
"list_add_label": "Add More",
|
|
2137
|
-
"name": "
|
|
2138
|
-
"override_skip": false,
|
|
1466
|
+
"name": "silent_errors",
|
|
2139
1467
|
"placeholder": "",
|
|
2140
1468
|
"required": false,
|
|
2141
1469
|
"show": true,
|
|
2142
1470
|
"title_case": false,
|
|
2143
1471
|
"tool_mode": false,
|
|
2144
1472
|
"trace_as_metadata": true,
|
|
2145
|
-
"track_in_telemetry": true,
|
|
2146
1473
|
"type": "bool",
|
|
2147
|
-
"value":
|
|
1474
|
+
"value": false
|
|
2148
1475
|
},
|
|
2149
|
-
"
|
|
2150
|
-
"_input_type": "
|
|
2151
|
-
"advanced":
|
|
2152
|
-
"display_name": "
|
|
1476
|
+
"storage_location": {
|
|
1477
|
+
"_input_type": "SortableListInput",
|
|
1478
|
+
"advanced": false,
|
|
1479
|
+
"display_name": "Storage Location",
|
|
2153
1480
|
"dynamic": false,
|
|
2154
|
-
"info": "
|
|
2155
|
-
"
|
|
2156
|
-
|
|
1481
|
+
"info": "Choose where to read the file from.",
|
|
1482
|
+
"limit": 1,
|
|
1483
|
+
"name": "storage_location",
|
|
1484
|
+
"options": [
|
|
1485
|
+
{
|
|
1486
|
+
"icon": "hard-drive",
|
|
1487
|
+
"name": "Local"
|
|
1488
|
+
},
|
|
1489
|
+
{
|
|
1490
|
+
"icon": "Amazon",
|
|
1491
|
+
"name": "AWS"
|
|
1492
|
+
},
|
|
1493
|
+
{
|
|
1494
|
+
"icon": "google",
|
|
1495
|
+
"name": "Google Drive"
|
|
1496
|
+
}
|
|
2157
1497
|
],
|
|
2158
|
-
"list": false,
|
|
2159
|
-
"list_add_label": "Add More",
|
|
2160
|
-
"load_from_db": false,
|
|
2161
|
-
"name": "doc_key",
|
|
2162
1498
|
"override_skip": false,
|
|
2163
|
-
"placeholder": "",
|
|
1499
|
+
"placeholder": "Select Location",
|
|
1500
|
+
"real_time_refresh": true,
|
|
2164
1501
|
"required": false,
|
|
2165
|
-
"
|
|
1502
|
+
"search_category": [],
|
|
1503
|
+
"show": true,
|
|
2166
1504
|
"title_case": false,
|
|
2167
1505
|
"tool_mode": false,
|
|
2168
|
-
"trace_as_input": true,
|
|
2169
1506
|
"trace_as_metadata": true,
|
|
2170
1507
|
"track_in_telemetry": false,
|
|
2171
|
-
"type": "
|
|
2172
|
-
"value": "
|
|
1508
|
+
"type": "sortableList",
|
|
1509
|
+
"value": ""
|
|
2173
1510
|
},
|
|
2174
|
-
"
|
|
2175
|
-
"_input_type": "
|
|
2176
|
-
"advanced":
|
|
2177
|
-
"display_name": "
|
|
1511
|
+
"use_multithreading": {
|
|
1512
|
+
"_input_type": "BoolInput",
|
|
1513
|
+
"advanced": true,
|
|
1514
|
+
"display_name": "[Deprecated] Use Multithreading",
|
|
2178
1515
|
"dynamic": false,
|
|
2179
|
-
"info": "
|
|
1516
|
+
"info": "Set 'Processing Concurrency' greater than 1 to enable multithreading.",
|
|
2180
1517
|
"list": false,
|
|
2181
1518
|
"list_add_label": "Add More",
|
|
2182
|
-
"
|
|
2183
|
-
"name": "file_id",
|
|
2184
|
-
"override_skip": false,
|
|
1519
|
+
"name": "use_multithreading",
|
|
2185
1520
|
"placeholder": "",
|
|
2186
|
-
"required":
|
|
2187
|
-
"show":
|
|
1521
|
+
"required": false,
|
|
1522
|
+
"show": true,
|
|
2188
1523
|
"title_case": false,
|
|
2189
1524
|
"tool_mode": false,
|
|
2190
1525
|
"trace_as_metadata": true,
|
|
2191
|
-
"
|
|
2192
|
-
"
|
|
2193
|
-
|
|
1526
|
+
"type": "bool",
|
|
1527
|
+
"value": true
|
|
1528
|
+
}
|
|
1529
|
+
},
|
|
1530
|
+
"tool_mode": false
|
|
1531
|
+
},
|
|
1532
|
+
"selected_output": "message",
|
|
1533
|
+
"showNode": true,
|
|
1534
|
+
"type": "File"
|
|
1535
|
+
},
|
|
1536
|
+
"dragging": false,
|
|
1537
|
+
"id": "File-gVVqw",
|
|
1538
|
+
"measured": {
|
|
1539
|
+
"height": 214,
|
|
1540
|
+
"width": 320
|
|
1541
|
+
},
|
|
1542
|
+
"position": {
|
|
1543
|
+
"x": 927.3702382252801,
|
|
1544
|
+
"y": 647.5603858397075
|
|
1545
|
+
},
|
|
1546
|
+
"selected": false,
|
|
1547
|
+
"type": "genericNode"
|
|
1548
|
+
},
|
|
1549
|
+
{
|
|
1550
|
+
"data": {
|
|
1551
|
+
"id": "LanguageModelComponent-DJzkZ",
|
|
1552
|
+
"node": {
|
|
1553
|
+
"base_classes": [
|
|
1554
|
+
"LanguageModel",
|
|
1555
|
+
"Message"
|
|
1556
|
+
],
|
|
1557
|
+
"beta": false,
|
|
1558
|
+
"conditional_paths": [],
|
|
1559
|
+
"custom_fields": {},
|
|
1560
|
+
"description": "Runs a language model given a specified provider.",
|
|
1561
|
+
"display_name": "Language Model",
|
|
1562
|
+
"documentation": "https://docs.langflow.org/components-models",
|
|
1563
|
+
"edited": false,
|
|
1564
|
+
"field_order": [
|
|
1565
|
+
"model",
|
|
1566
|
+
"api_key",
|
|
1567
|
+
"base_url_ibm_watsonx",
|
|
1568
|
+
"project_id",
|
|
1569
|
+
"ollama_base_url",
|
|
1570
|
+
"input_value",
|
|
1571
|
+
"system_message",
|
|
1572
|
+
"stream",
|
|
1573
|
+
"temperature"
|
|
1574
|
+
],
|
|
1575
|
+
"frozen": false,
|
|
1576
|
+
"icon": "brain-circuit",
|
|
1577
|
+
"last_updated": "2025-12-11T21:29:10.202Z",
|
|
1578
|
+
"legacy": false,
|
|
1579
|
+
"lf_version": "1.7.0",
|
|
1580
|
+
"metadata": {
|
|
1581
|
+
"code_hash": "7fe3257f2169",
|
|
1582
|
+
"dependencies": {
|
|
1583
|
+
"dependencies": [
|
|
1584
|
+
{
|
|
1585
|
+
"name": "lfx",
|
|
1586
|
+
"version": null
|
|
1587
|
+
}
|
|
1588
|
+
],
|
|
1589
|
+
"total_dependencies": 1
|
|
2194
1590
|
},
|
|
2195
|
-
"
|
|
2196
|
-
"
|
|
2197
|
-
"
|
|
2198
|
-
"
|
|
2199
|
-
"
|
|
2200
|
-
|
|
2201
|
-
|
|
2202
|
-
|
|
1591
|
+
"keywords": [
|
|
1592
|
+
"model",
|
|
1593
|
+
"llm",
|
|
1594
|
+
"language model",
|
|
1595
|
+
"large language model"
|
|
1596
|
+
],
|
|
1597
|
+
"module": "lfx.components.models_and_agents.language_model.LanguageModelComponent"
|
|
1598
|
+
},
|
|
1599
|
+
"minimized": false,
|
|
1600
|
+
"output_types": [],
|
|
1601
|
+
"outputs": [
|
|
1602
|
+
{
|
|
1603
|
+
"allows_loop": false,
|
|
1604
|
+
"cache": true,
|
|
1605
|
+
"display_name": "Model Response",
|
|
1606
|
+
"group_outputs": false,
|
|
1607
|
+
"loop_types": null,
|
|
1608
|
+
"method": "text_response",
|
|
1609
|
+
"name": "text_output",
|
|
1610
|
+
"options": null,
|
|
1611
|
+
"required_inputs": null,
|
|
1612
|
+
"selected": "Message",
|
|
1613
|
+
"tool_mode": true,
|
|
1614
|
+
"types": [
|
|
2203
1615
|
"Message"
|
|
2204
1616
|
],
|
|
2205
|
-
"
|
|
2206
|
-
|
|
2207
|
-
|
|
2208
|
-
"
|
|
2209
|
-
"
|
|
2210
|
-
"
|
|
2211
|
-
"
|
|
2212
|
-
"
|
|
2213
|
-
"
|
|
2214
|
-
"
|
|
2215
|
-
"
|
|
2216
|
-
"
|
|
1617
|
+
"value": "__UNDEFINED__"
|
|
1618
|
+
},
|
|
1619
|
+
{
|
|
1620
|
+
"allows_loop": false,
|
|
1621
|
+
"cache": true,
|
|
1622
|
+
"display_name": "Language Model",
|
|
1623
|
+
"group_outputs": false,
|
|
1624
|
+
"loop_types": null,
|
|
1625
|
+
"method": "build_model",
|
|
1626
|
+
"name": "model_output",
|
|
1627
|
+
"options": null,
|
|
1628
|
+
"required_inputs": null,
|
|
1629
|
+
"selected": "LanguageModel",
|
|
1630
|
+
"tool_mode": true,
|
|
1631
|
+
"types": [
|
|
1632
|
+
"LanguageModel"
|
|
1633
|
+
],
|
|
1634
|
+
"value": "__UNDEFINED__"
|
|
1635
|
+
}
|
|
1636
|
+
],
|
|
1637
|
+
"pinned": false,
|
|
1638
|
+
"priority": 0,
|
|
1639
|
+
"template": {
|
|
1640
|
+
"_frontend_node_flow_id": {
|
|
1641
|
+
"value": "524f71dc-cc58-441a-a009-c71d6755765f"
|
|
2217
1642
|
},
|
|
2218
|
-
"
|
|
2219
|
-
"
|
|
1643
|
+
"_frontend_node_folder_id": {
|
|
1644
|
+
"value": "afaca9ee-97e3-4211-8569-722a4058ea5e"
|
|
1645
|
+
},
|
|
1646
|
+
"_type": "Component",
|
|
1647
|
+
"api_key": {
|
|
1648
|
+
"_input_type": "SecretStrInput",
|
|
2220
1649
|
"advanced": true,
|
|
2221
|
-
"display_name": "
|
|
1650
|
+
"display_name": "API Key",
|
|
2222
1651
|
"dynamic": false,
|
|
2223
|
-
"info": "
|
|
2224
|
-
"
|
|
2225
|
-
"list_add_label": "Add More",
|
|
1652
|
+
"info": "Model Provider API key",
|
|
1653
|
+
"input_types": [],
|
|
2226
1654
|
"load_from_db": false,
|
|
2227
|
-
"name": "
|
|
1655
|
+
"name": "api_key",
|
|
2228
1656
|
"override_skip": false,
|
|
1657
|
+
"password": true,
|
|
2229
1658
|
"placeholder": "",
|
|
1659
|
+
"real_time_refresh": true,
|
|
2230
1660
|
"required": false,
|
|
2231
|
-
"show":
|
|
1661
|
+
"show": true,
|
|
2232
1662
|
"title_case": false,
|
|
2233
|
-
"tool_mode": true,
|
|
2234
|
-
"trace_as_metadata": true,
|
|
2235
1663
|
"track_in_telemetry": false,
|
|
2236
1664
|
"type": "str",
|
|
2237
1665
|
"value": ""
|
|
2238
1666
|
},
|
|
2239
|
-
"
|
|
2240
|
-
"_input_type": "
|
|
2241
|
-
"advanced":
|
|
2242
|
-
"
|
|
1667
|
+
"base_url_ibm_watsonx": {
|
|
1668
|
+
"_input_type": "DropdownInput",
|
|
1669
|
+
"advanced": false,
|
|
1670
|
+
"combobox": false,
|
|
1671
|
+
"dialog_inputs": {},
|
|
1672
|
+
"display_name": "watsonx API Endpoint",
|
|
2243
1673
|
"dynamic": false,
|
|
2244
|
-
"
|
|
2245
|
-
"
|
|
2246
|
-
"
|
|
2247
|
-
"
|
|
1674
|
+
"external_options": {},
|
|
1675
|
+
"info": "The base URL of the API (IBM watsonx.ai only)",
|
|
1676
|
+
"name": "base_url_ibm_watsonx",
|
|
1677
|
+
"options": [
|
|
1678
|
+
"https://us-south.ml.cloud.ibm.com",
|
|
1679
|
+
"https://eu-de.ml.cloud.ibm.com",
|
|
1680
|
+
"https://eu-gb.ml.cloud.ibm.com",
|
|
1681
|
+
"https://au-syd.ml.cloud.ibm.com",
|
|
1682
|
+
"https://jp-tok.ml.cloud.ibm.com",
|
|
1683
|
+
"https://ca-tor.ml.cloud.ibm.com"
|
|
1684
|
+
],
|
|
1685
|
+
"options_metadata": [],
|
|
2248
1686
|
"override_skip": false,
|
|
2249
1687
|
"placeholder": "",
|
|
1688
|
+
"real_time_refresh": true,
|
|
2250
1689
|
"required": false,
|
|
2251
|
-
"show":
|
|
1690
|
+
"show": false,
|
|
2252
1691
|
"title_case": false,
|
|
1692
|
+
"toggle": false,
|
|
2253
1693
|
"tool_mode": false,
|
|
2254
1694
|
"trace_as_metadata": true,
|
|
2255
1695
|
"track_in_telemetry": true,
|
|
2256
|
-
"type": "
|
|
2257
|
-
"value":
|
|
1696
|
+
"type": "str",
|
|
1697
|
+
"value": "https://us-south.ml.cloud.ibm.com"
|
|
2258
1698
|
},
|
|
2259
|
-
"
|
|
2260
|
-
"_input_type": "BoolInput",
|
|
1699
|
+
"code": {
|
|
2261
1700
|
"advanced": true,
|
|
2262
|
-
"
|
|
2263
|
-
"
|
|
2264
|
-
"
|
|
1701
|
+
"dynamic": true,
|
|
1702
|
+
"fileTypes": [],
|
|
1703
|
+
"file_path": "",
|
|
1704
|
+
"info": "",
|
|
2265
1705
|
"list": false,
|
|
2266
|
-
"
|
|
2267
|
-
"
|
|
2268
|
-
"
|
|
1706
|
+
"load_from_db": false,
|
|
1707
|
+
"multiline": true,
|
|
1708
|
+
"name": "code",
|
|
1709
|
+
"password": false,
|
|
2269
1710
|
"placeholder": "",
|
|
2270
|
-
"required":
|
|
1711
|
+
"required": true,
|
|
2271
1712
|
"show": true,
|
|
2272
1713
|
"title_case": false,
|
|
2273
|
-
"
|
|
2274
|
-
"
|
|
2275
|
-
"track_in_telemetry": true,
|
|
2276
|
-
"type": "bool",
|
|
2277
|
-
"value": true
|
|
1714
|
+
"type": "code",
|
|
1715
|
+
"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 watsonx_url=getattr(self, \"base_url_ibm_watsonx\", None),\n watsonx_project_id=getattr(self, \"project_id\", None),\n ollama_base_url=getattr(self, \"ollama_base_url\", None),\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 # Update model options\n build_config = 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 # Show/hide provider-specific fields based on selected model\n if field_name == \"model\" and isinstance(field_value, list) and len(field_value) > 0:\n selected_model = field_value[0]\n provider = selected_model.get(\"provider\", \"\")\n\n # Show/hide watsonx fields\n is_watsonx = provider == \"IBM WatsonX\"\n build_config[\"base_url_ibm_watsonx\"][\"show\"] = is_watsonx\n build_config[\"project_id\"][\"show\"] = is_watsonx\n build_config[\"base_url_ibm_watsonx\"][\"required\"] = is_watsonx\n build_config[\"project_id\"][\"required\"] = is_watsonx\n\n # Show/hide Ollama fields\n is_ollama = provider == \"Ollama\"\n build_config[\"ollama_base_url\"][\"show\"] = is_ollama\n\n return build_config\n"
|
|
2278
1716
|
},
|
|
2279
|
-
"
|
|
2280
|
-
"_input_type": "
|
|
1717
|
+
"input_value": {
|
|
1718
|
+
"_input_type": "MessageInput",
|
|
2281
1719
|
"advanced": false,
|
|
2282
|
-
"display_name": "
|
|
1720
|
+
"display_name": "Input",
|
|
2283
1721
|
"dynamic": false,
|
|
2284
|
-
"info": "
|
|
1722
|
+
"info": "The input text to send to the model",
|
|
1723
|
+
"input_types": [
|
|
1724
|
+
"Message"
|
|
1725
|
+
],
|
|
2285
1726
|
"list": false,
|
|
2286
1727
|
"list_add_label": "Add More",
|
|
2287
|
-
"
|
|
1728
|
+
"load_from_db": false,
|
|
1729
|
+
"name": "input_value",
|
|
2288
1730
|
"override_skip": false,
|
|
2289
1731
|
"placeholder": "",
|
|
2290
1732
|
"required": false,
|
|
2291
|
-
"show":
|
|
1733
|
+
"show": true,
|
|
2292
1734
|
"title_case": false,
|
|
2293
1735
|
"tool_mode": false,
|
|
1736
|
+
"trace_as_input": true,
|
|
2294
1737
|
"trace_as_metadata": true,
|
|
2295
|
-
"track_in_telemetry":
|
|
2296
|
-
"type": "
|
|
2297
|
-
"value":
|
|
1738
|
+
"track_in_telemetry": false,
|
|
1739
|
+
"type": "str",
|
|
1740
|
+
"value": ""
|
|
2298
1741
|
},
|
|
2299
|
-
"
|
|
2300
|
-
|
|
2301
|
-
"
|
|
2302
|
-
"
|
|
1742
|
+
"is_refresh": false,
|
|
1743
|
+
"model": {
|
|
1744
|
+
"_input_type": "ModelInput",
|
|
1745
|
+
"advanced": false,
|
|
1746
|
+
"display_name": "Language Model",
|
|
2303
1747
|
"dynamic": false,
|
|
2304
|
-
"
|
|
1748
|
+
"external_options": {
|
|
1749
|
+
"fields": {
|
|
1750
|
+
"data": {
|
|
1751
|
+
"node": {
|
|
1752
|
+
"display_name": "Connect other models",
|
|
1753
|
+
"icon": "CornerDownLeft",
|
|
1754
|
+
"name": "connect_other_models"
|
|
1755
|
+
}
|
|
1756
|
+
}
|
|
1757
|
+
}
|
|
1758
|
+
},
|
|
1759
|
+
"info": "Select your model provider",
|
|
1760
|
+
"input_types": [
|
|
1761
|
+
"LanguageModel"
|
|
1762
|
+
],
|
|
2305
1763
|
"list": false,
|
|
2306
1764
|
"list_add_label": "Add More",
|
|
2307
|
-
"
|
|
2308
|
-
"name": "
|
|
1765
|
+
"model_type": "language",
|
|
1766
|
+
"name": "model",
|
|
1767
|
+
"options": [],
|
|
2309
1768
|
"override_skip": false,
|
|
2310
|
-
"placeholder": "",
|
|
2311
|
-
"
|
|
2312
|
-
"
|
|
1769
|
+
"placeholder": "Setup Provider",
|
|
1770
|
+
"real_time_refresh": true,
|
|
1771
|
+
"refresh_button": true,
|
|
1772
|
+
"required": true,
|
|
1773
|
+
"show": true,
|
|
2313
1774
|
"title_case": false,
|
|
2314
1775
|
"tool_mode": false,
|
|
2315
|
-
"
|
|
1776
|
+
"trace_as_input": true,
|
|
2316
1777
|
"track_in_telemetry": false,
|
|
2317
|
-
"type": "
|
|
2318
|
-
"value":
|
|
1778
|
+
"type": "model",
|
|
1779
|
+
"value": []
|
|
2319
1780
|
},
|
|
2320
|
-
"
|
|
2321
|
-
"_input_type": "
|
|
2322
|
-
"advanced":
|
|
2323
|
-
"display_name": "
|
|
1781
|
+
"ollama_base_url": {
|
|
1782
|
+
"_input_type": "MessageInput",
|
|
1783
|
+
"advanced": false,
|
|
1784
|
+
"display_name": "Ollama API URL",
|
|
2324
1785
|
"dynamic": false,
|
|
2325
|
-
"info": "
|
|
1786
|
+
"info": "Endpoint of the Ollama API (Ollama only). Defaults to http://localhost:11434",
|
|
1787
|
+
"input_types": [
|
|
1788
|
+
"Message"
|
|
1789
|
+
],
|
|
2326
1790
|
"list": false,
|
|
2327
1791
|
"list_add_label": "Add More",
|
|
2328
1792
|
"load_from_db": false,
|
|
2329
|
-
"name": "
|
|
1793
|
+
"name": "ollama_base_url",
|
|
2330
1794
|
"override_skip": false,
|
|
2331
1795
|
"placeholder": "",
|
|
1796
|
+
"real_time_refresh": true,
|
|
2332
1797
|
"required": false,
|
|
2333
1798
|
"show": false,
|
|
2334
1799
|
"title_case": false,
|
|
2335
1800
|
"tool_mode": false,
|
|
1801
|
+
"trace_as_input": true,
|
|
2336
1802
|
"trace_as_metadata": true,
|
|
2337
1803
|
"track_in_telemetry": false,
|
|
2338
1804
|
"type": "str",
|
|
2339
1805
|
"value": ""
|
|
2340
1806
|
},
|
|
2341
|
-
"
|
|
2342
|
-
"_input_type": "
|
|
2343
|
-
"advanced": true,
|
|
2344
|
-
"combobox": false,
|
|
2345
|
-
"dialog_inputs": {},
|
|
2346
|
-
"display_name": "OCR Engine",
|
|
2347
|
-
"dynamic": false,
|
|
2348
|
-
"external_options": {},
|
|
2349
|
-
"info": "OCR engine to use. Only available when pipeline is set to 'standard'.",
|
|
2350
|
-
"name": "ocr_engine",
|
|
2351
|
-
"options": [
|
|
2352
|
-
"None",
|
|
2353
|
-
"easyocr"
|
|
2354
|
-
],
|
|
2355
|
-
"options_metadata": [],
|
|
2356
|
-
"override_skip": false,
|
|
2357
|
-
"placeholder": "",
|
|
2358
|
-
"required": false,
|
|
2359
|
-
"show": false,
|
|
2360
|
-
"title_case": false,
|
|
2361
|
-
"toggle": false,
|
|
2362
|
-
"tool_mode": false,
|
|
2363
|
-
"trace_as_metadata": true,
|
|
2364
|
-
"track_in_telemetry": true,
|
|
2365
|
-
"type": "str",
|
|
2366
|
-
"value": "easyocr"
|
|
2367
|
-
},
|
|
2368
|
-
"path": {
|
|
2369
|
-
"_input_type": "FileInput",
|
|
1807
|
+
"project_id": {
|
|
1808
|
+
"_input_type": "StrInput",
|
|
2370
1809
|
"advanced": false,
|
|
2371
|
-
"display_name": "
|
|
1810
|
+
"display_name": "watsonx Project ID",
|
|
2372
1811
|
"dynamic": false,
|
|
2373
|
-
"
|
|
2374
|
-
|
|
2375
|
-
"json",
|
|
2376
|
-
"pdf",
|
|
2377
|
-
"txt",
|
|
2378
|
-
"md",
|
|
2379
|
-
"mdx",
|
|
2380
|
-
"yaml",
|
|
2381
|
-
"yml",
|
|
2382
|
-
"xml",
|
|
2383
|
-
"html",
|
|
2384
|
-
"htm",
|
|
2385
|
-
"docx",
|
|
2386
|
-
"py",
|
|
2387
|
-
"sh",
|
|
2388
|
-
"sql",
|
|
2389
|
-
"js",
|
|
2390
|
-
"ts",
|
|
2391
|
-
"tsx",
|
|
2392
|
-
"adoc",
|
|
2393
|
-
"asciidoc",
|
|
2394
|
-
"asc",
|
|
2395
|
-
"bmp",
|
|
2396
|
-
"dotx",
|
|
2397
|
-
"dotm",
|
|
2398
|
-
"docm",
|
|
2399
|
-
"jpg",
|
|
2400
|
-
"jpeg",
|
|
2401
|
-
"png",
|
|
2402
|
-
"potx",
|
|
2403
|
-
"ppsx",
|
|
2404
|
-
"pptm",
|
|
2405
|
-
"potm",
|
|
2406
|
-
"ppsm",
|
|
2407
|
-
"pptx",
|
|
2408
|
-
"tiff",
|
|
2409
|
-
"xls",
|
|
2410
|
-
"xlsx",
|
|
2411
|
-
"xhtml",
|
|
2412
|
-
"webp",
|
|
2413
|
-
"zip",
|
|
2414
|
-
"tar",
|
|
2415
|
-
"tgz",
|
|
2416
|
-
"bz2",
|
|
2417
|
-
"gz"
|
|
2418
|
-
],
|
|
2419
|
-
"file_path": [],
|
|
2420
|
-
"info": "Supported file extensions: csv, json, pdf, txt, md, mdx, yaml, yml, xml, html, htm, docx, py, sh, sql, js, ts, tsx, adoc, asciidoc, asc, bmp, dotx, dotm, docm, jpg, jpeg, png, potx, ppsx, pptm, potm, ppsm, pptx, tiff, xls, xlsx, xhtml, webp; optionally bundled in file extensions: zip, tar, tgz, bz2, gz",
|
|
2421
|
-
"list": true,
|
|
1812
|
+
"info": "The project ID associated with the foundation model (IBM watsonx.ai only)",
|
|
1813
|
+
"list": false,
|
|
2422
1814
|
"list_add_label": "Add More",
|
|
2423
|
-
"
|
|
1815
|
+
"load_from_db": false,
|
|
1816
|
+
"name": "project_id",
|
|
2424
1817
|
"override_skip": false,
|
|
2425
1818
|
"placeholder": "",
|
|
2426
|
-
"real_time_refresh": true,
|
|
2427
1819
|
"required": false,
|
|
2428
|
-
"show":
|
|
2429
|
-
"temp_file": false,
|
|
1820
|
+
"show": false,
|
|
2430
1821
|
"title_case": false,
|
|
2431
1822
|
"tool_mode": false,
|
|
2432
1823
|
"trace_as_metadata": true,
|
|
2433
1824
|
"track_in_telemetry": false,
|
|
2434
|
-
"type": "
|
|
1825
|
+
"type": "str",
|
|
2435
1826
|
"value": ""
|
|
2436
1827
|
},
|
|
2437
|
-
"
|
|
2438
|
-
"_input_type": "
|
|
1828
|
+
"stream": {
|
|
1829
|
+
"_input_type": "BoolInput",
|
|
2439
1830
|
"advanced": true,
|
|
2440
|
-
"
|
|
2441
|
-
"dialog_inputs": {},
|
|
2442
|
-
"display_name": "Pipeline",
|
|
1831
|
+
"display_name": "Stream",
|
|
2443
1832
|
"dynamic": false,
|
|
2444
|
-
"
|
|
2445
|
-
"
|
|
2446
|
-
"
|
|
2447
|
-
"
|
|
2448
|
-
"standard",
|
|
2449
|
-
"vlm"
|
|
2450
|
-
],
|
|
2451
|
-
"options_metadata": [],
|
|
1833
|
+
"info": "Whether to stream the response",
|
|
1834
|
+
"list": false,
|
|
1835
|
+
"list_add_label": "Add More",
|
|
1836
|
+
"name": "stream",
|
|
2452
1837
|
"override_skip": false,
|
|
2453
1838
|
"placeholder": "",
|
|
2454
|
-
"real_time_refresh": true,
|
|
2455
1839
|
"required": false,
|
|
2456
1840
|
"show": true,
|
|
2457
1841
|
"title_case": false,
|
|
2458
|
-
"toggle": false,
|
|
2459
1842
|
"tool_mode": false,
|
|
2460
1843
|
"trace_as_metadata": true,
|
|
2461
1844
|
"track_in_telemetry": true,
|
|
2462
|
-
"type": "
|
|
2463
|
-
"value":
|
|
1845
|
+
"type": "bool",
|
|
1846
|
+
"value": false
|
|
2464
1847
|
},
|
|
2465
|
-
"
|
|
2466
|
-
"_input_type": "
|
|
1848
|
+
"system_message": {
|
|
1849
|
+
"_input_type": "MultilineInput",
|
|
2467
1850
|
"advanced": false,
|
|
2468
|
-
"
|
|
1851
|
+
"ai_enabled": false,
|
|
1852
|
+
"copy_field": false,
|
|
1853
|
+
"display_name": "System Message",
|
|
2469
1854
|
"dynamic": false,
|
|
2470
|
-
"info": "
|
|
1855
|
+
"info": "A system message that helps set the behavior of the assistant",
|
|
1856
|
+
"input_types": [
|
|
1857
|
+
"Message"
|
|
1858
|
+
],
|
|
2471
1859
|
"list": false,
|
|
2472
1860
|
"list_add_label": "Add More",
|
|
2473
1861
|
"load_from_db": false,
|
|
2474
|
-
"
|
|
1862
|
+
"multiline": true,
|
|
1863
|
+
"name": "system_message",
|
|
2475
1864
|
"override_skip": false,
|
|
2476
1865
|
"placeholder": "",
|
|
2477
|
-
"required":
|
|
2478
|
-
"show":
|
|
1866
|
+
"required": false,
|
|
1867
|
+
"show": true,
|
|
2479
1868
|
"title_case": false,
|
|
2480
1869
|
"tool_mode": false,
|
|
1870
|
+
"trace_as_input": true,
|
|
2481
1871
|
"trace_as_metadata": true,
|
|
2482
1872
|
"track_in_telemetry": false,
|
|
2483
1873
|
"type": "str",
|
|
2484
1874
|
"value": ""
|
|
2485
1875
|
},
|
|
2486
|
-
"
|
|
2487
|
-
"_input_type": "
|
|
1876
|
+
"temperature": {
|
|
1877
|
+
"_input_type": "SliderInput",
|
|
2488
1878
|
"advanced": true,
|
|
2489
|
-
"display_name": "
|
|
1879
|
+
"display_name": "Temperature",
|
|
2490
1880
|
"dynamic": false,
|
|
2491
|
-
"info": "
|
|
1881
|
+
"info": "Controls randomness in responses",
|
|
1882
|
+
"max_label": "",
|
|
1883
|
+
"max_label_icon": "",
|
|
1884
|
+
"min_label": "",
|
|
1885
|
+
"min_label_icon": "",
|
|
1886
|
+
"name": "temperature",
|
|
1887
|
+
"override_skip": false,
|
|
1888
|
+
"placeholder": "",
|
|
1889
|
+
"range_spec": {
|
|
1890
|
+
"max": 1,
|
|
1891
|
+
"min": 0,
|
|
1892
|
+
"step": 0.01,
|
|
1893
|
+
"step_type": "float"
|
|
1894
|
+
},
|
|
1895
|
+
"required": false,
|
|
1896
|
+
"show": true,
|
|
1897
|
+
"slider_buttons": false,
|
|
1898
|
+
"slider_buttons_options": [],
|
|
1899
|
+
"slider_input": false,
|
|
1900
|
+
"title_case": false,
|
|
1901
|
+
"tool_mode": false,
|
|
1902
|
+
"track_in_telemetry": false,
|
|
1903
|
+
"type": "slider",
|
|
1904
|
+
"value": 0.1
|
|
1905
|
+
}
|
|
1906
|
+
},
|
|
1907
|
+
"tool_mode": false
|
|
1908
|
+
},
|
|
1909
|
+
"selected_output": "text_output",
|
|
1910
|
+
"showNode": true,
|
|
1911
|
+
"type": "LanguageModelComponent"
|
|
1912
|
+
},
|
|
1913
|
+
"dragging": false,
|
|
1914
|
+
"id": "LanguageModelComponent-DJzkZ",
|
|
1915
|
+
"measured": {
|
|
1916
|
+
"height": 534,
|
|
1917
|
+
"width": 320
|
|
1918
|
+
},
|
|
1919
|
+
"position": {
|
|
1920
|
+
"x": 2174.626510909065,
|
|
1921
|
+
"y": 439.5147119393939
|
|
1922
|
+
},
|
|
1923
|
+
"selected": false,
|
|
1924
|
+
"type": "genericNode"
|
|
1925
|
+
},
|
|
1926
|
+
{
|
|
1927
|
+
"data": {
|
|
1928
|
+
"id": "note-Sm9Ca",
|
|
1929
|
+
"node": {
|
|
1930
|
+
"description": "### 💡 Add your OpenAI API key here",
|
|
1931
|
+
"display_name": "",
|
|
1932
|
+
"documentation": "",
|
|
1933
|
+
"template": {
|
|
1934
|
+
"backgroundColor": "transparent"
|
|
1935
|
+
}
|
|
1936
|
+
},
|
|
1937
|
+
"type": "note"
|
|
1938
|
+
},
|
|
1939
|
+
"dragging": false,
|
|
1940
|
+
"id": "note-Sm9Ca",
|
|
1941
|
+
"measured": {
|
|
1942
|
+
"height": 324,
|
|
1943
|
+
"width": 324
|
|
1944
|
+
},
|
|
1945
|
+
"position": {
|
|
1946
|
+
"x": 2177.24956539088,
|
|
1947
|
+
"y": 384.73691533198325
|
|
1948
|
+
},
|
|
1949
|
+
"selected": false,
|
|
1950
|
+
"type": "noteNode"
|
|
1951
|
+
},
|
|
1952
|
+
{
|
|
1953
|
+
"data": {
|
|
1954
|
+
"id": "StructuredOutput-wsAT3",
|
|
1955
|
+
"node": {
|
|
1956
|
+
"base_classes": [
|
|
1957
|
+
"Data",
|
|
1958
|
+
"DataFrame"
|
|
1959
|
+
],
|
|
1960
|
+
"beta": false,
|
|
1961
|
+
"conditional_paths": [],
|
|
1962
|
+
"custom_fields": {},
|
|
1963
|
+
"description": "Uses an LLM to generate structured data. Ideal for extraction and consistency.",
|
|
1964
|
+
"display_name": "Structured Output",
|
|
1965
|
+
"documentation": "https://docs.langflow.org/components-processing#structured-output",
|
|
1966
|
+
"edited": false,
|
|
1967
|
+
"field_order": [
|
|
1968
|
+
"llm",
|
|
1969
|
+
"input_value",
|
|
1970
|
+
"system_prompt",
|
|
1971
|
+
"schema_name",
|
|
1972
|
+
"output_schema"
|
|
1973
|
+
],
|
|
1974
|
+
"frozen": false,
|
|
1975
|
+
"icon": "braces",
|
|
1976
|
+
"legacy": false,
|
|
1977
|
+
"lf_version": "1.6.0",
|
|
1978
|
+
"metadata": {
|
|
1979
|
+
"code_hash": "058ca1f51e9f",
|
|
1980
|
+
"dependencies": {
|
|
1981
|
+
"dependencies": [
|
|
1982
|
+
{
|
|
1983
|
+
"name": "pydantic",
|
|
1984
|
+
"version": "2.11.10"
|
|
1985
|
+
},
|
|
1986
|
+
{
|
|
1987
|
+
"name": "trustcall",
|
|
1988
|
+
"version": "0.0.39"
|
|
1989
|
+
},
|
|
1990
|
+
{
|
|
1991
|
+
"name": "lfx",
|
|
1992
|
+
"version": null
|
|
1993
|
+
}
|
|
1994
|
+
],
|
|
1995
|
+
"total_dependencies": 3
|
|
1996
|
+
},
|
|
1997
|
+
"module": "lfx.components.llm_operations.structured_output.StructuredOutputComponent"
|
|
1998
|
+
},
|
|
1999
|
+
"minimized": false,
|
|
2000
|
+
"output_types": [],
|
|
2001
|
+
"outputs": [
|
|
2002
|
+
{
|
|
2003
|
+
"allows_loop": false,
|
|
2004
|
+
"cache": true,
|
|
2005
|
+
"display_name": "Structured Output",
|
|
2006
|
+
"group_outputs": false,
|
|
2007
|
+
"method": "build_structured_output",
|
|
2008
|
+
"name": "structured_output",
|
|
2009
|
+
"selected": null,
|
|
2010
|
+
"tool_mode": true,
|
|
2011
|
+
"types": [
|
|
2012
|
+
"Data"
|
|
2013
|
+
],
|
|
2014
|
+
"value": "__UNDEFINED__"
|
|
2015
|
+
},
|
|
2016
|
+
{
|
|
2017
|
+
"allows_loop": false,
|
|
2018
|
+
"cache": true,
|
|
2019
|
+
"display_name": "Structured Output",
|
|
2020
|
+
"group_outputs": false,
|
|
2021
|
+
"method": "build_structured_dataframe",
|
|
2022
|
+
"name": "dataframe_output",
|
|
2023
|
+
"selected": "DataFrame",
|
|
2024
|
+
"tool_mode": true,
|
|
2025
|
+
"types": [
|
|
2026
|
+
"DataFrame"
|
|
2027
|
+
],
|
|
2028
|
+
"value": "__UNDEFINED__"
|
|
2029
|
+
}
|
|
2030
|
+
],
|
|
2031
|
+
"pinned": false,
|
|
2032
|
+
"template": {
|
|
2033
|
+
"_type": "Component",
|
|
2034
|
+
"api_key": {
|
|
2035
|
+
"_input_type": "SecretStrInput",
|
|
2036
|
+
"advanced": true,
|
|
2037
|
+
"display_name": "API Key",
|
|
2038
|
+
"dynamic": false,
|
|
2039
|
+
"info": "Model Provider API key",
|
|
2040
|
+
"input_types": [],
|
|
2041
|
+
"load_from_db": true,
|
|
2042
|
+
"name": "api_key",
|
|
2043
|
+
"override_skip": false,
|
|
2044
|
+
"password": true,
|
|
2045
|
+
"placeholder": "",
|
|
2046
|
+
"real_time_refresh": true,
|
|
2047
|
+
"required": false,
|
|
2048
|
+
"show": true,
|
|
2049
|
+
"title_case": false,
|
|
2050
|
+
"track_in_telemetry": false,
|
|
2051
|
+
"type": "str",
|
|
2052
|
+
"value": ""
|
|
2053
|
+
},
|
|
2054
|
+
"code": {
|
|
2055
|
+
"advanced": true,
|
|
2056
|
+
"dynamic": true,
|
|
2057
|
+
"fileTypes": [],
|
|
2058
|
+
"file_path": "",
|
|
2059
|
+
"info": "",
|
|
2060
|
+
"list": false,
|
|
2061
|
+
"load_from_db": false,
|
|
2062
|
+
"multiline": true,
|
|
2063
|
+
"name": "code",
|
|
2064
|
+
"password": false,
|
|
2065
|
+
"placeholder": "",
|
|
2066
|
+
"required": true,
|
|
2067
|
+
"show": true,
|
|
2068
|
+
"title_case": false,
|
|
2069
|
+
"type": "code",
|
|
2070
|
+
"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"
|
|
2071
|
+
},
|
|
2072
|
+
"input_value": {
|
|
2073
|
+
"_input_type": "MultilineInput",
|
|
2074
|
+
"advanced": false,
|
|
2075
|
+
"copy_field": false,
|
|
2076
|
+
"display_name": "Input Message",
|
|
2077
|
+
"dynamic": false,
|
|
2078
|
+
"info": "The input message to the language model.",
|
|
2079
|
+
"input_types": [
|
|
2080
|
+
"Message"
|
|
2081
|
+
],
|
|
2492
2082
|
"list": false,
|
|
2493
2083
|
"list_add_label": "Add More",
|
|
2494
2084
|
"load_from_db": false,
|
|
2495
|
-
"
|
|
2496
|
-
"
|
|
2085
|
+
"multiline": true,
|
|
2086
|
+
"name": "input_value",
|
|
2497
2087
|
"placeholder": "",
|
|
2498
|
-
"required":
|
|
2088
|
+
"required": true,
|
|
2499
2089
|
"show": true,
|
|
2500
2090
|
"title_case": false,
|
|
2501
|
-
"tool_mode":
|
|
2091
|
+
"tool_mode": true,
|
|
2092
|
+
"trace_as_input": true,
|
|
2502
2093
|
"trace_as_metadata": true,
|
|
2503
|
-
"track_in_telemetry": false,
|
|
2504
2094
|
"type": "str",
|
|
2505
|
-
"value": "
|
|
2095
|
+
"value": ""
|
|
2506
2096
|
},
|
|
2507
|
-
"
|
|
2508
|
-
"_input_type": "
|
|
2097
|
+
"model": {
|
|
2098
|
+
"_input_type": "ModelInput",
|
|
2509
2099
|
"advanced": false,
|
|
2510
|
-
"display_name": "
|
|
2100
|
+
"display_name": "Language Model",
|
|
2511
2101
|
"dynamic": false,
|
|
2512
|
-
"
|
|
2102
|
+
"external_options": {
|
|
2103
|
+
"fields": {
|
|
2104
|
+
"data": {
|
|
2105
|
+
"node": {
|
|
2106
|
+
"display_name": "Connect other models",
|
|
2107
|
+
"icon": "CornerDownLeft",
|
|
2108
|
+
"name": "connect_other_models"
|
|
2109
|
+
}
|
|
2110
|
+
}
|
|
2111
|
+
}
|
|
2112
|
+
},
|
|
2113
|
+
"info": "Select your model provider",
|
|
2513
2114
|
"input_types": [],
|
|
2514
|
-
"
|
|
2515
|
-
"
|
|
2115
|
+
"list": false,
|
|
2116
|
+
"list_add_label": "Add More",
|
|
2117
|
+
"model_type": "language",
|
|
2118
|
+
"name": "model",
|
|
2516
2119
|
"override_skip": false,
|
|
2517
|
-
"
|
|
2518
|
-
"
|
|
2120
|
+
"placeholder": "Setup Provider",
|
|
2121
|
+
"real_time_refresh": true,
|
|
2122
|
+
"refresh_button": true,
|
|
2519
2123
|
"required": true,
|
|
2520
|
-
"show":
|
|
2124
|
+
"show": true,
|
|
2521
2125
|
"title_case": false,
|
|
2126
|
+
"tool_mode": false,
|
|
2127
|
+
"trace_as_input": true,
|
|
2522
2128
|
"track_in_telemetry": false,
|
|
2523
|
-
"type": "
|
|
2129
|
+
"type": "model",
|
|
2524
2130
|
"value": ""
|
|
2525
2131
|
},
|
|
2526
|
-
"
|
|
2527
|
-
"_input_type": "
|
|
2528
|
-
"advanced":
|
|
2529
|
-
"display_name": "
|
|
2132
|
+
"output_schema": {
|
|
2133
|
+
"_input_type": "TableInput",
|
|
2134
|
+
"advanced": false,
|
|
2135
|
+
"display_name": "Output Schema",
|
|
2530
2136
|
"dynamic": false,
|
|
2531
|
-
"info": "
|
|
2532
|
-
"
|
|
2137
|
+
"info": "Define the structure and data types for the model's output.",
|
|
2138
|
+
"is_list": true,
|
|
2533
2139
|
"list_add_label": "Add More",
|
|
2534
|
-
"name": "
|
|
2535
|
-
"override_skip": false,
|
|
2140
|
+
"name": "output_schema",
|
|
2536
2141
|
"placeholder": "",
|
|
2537
|
-
"required":
|
|
2142
|
+
"required": true,
|
|
2538
2143
|
"show": true,
|
|
2144
|
+
"table_icon": "Table",
|
|
2145
|
+
"table_schema": [
|
|
2146
|
+
{
|
|
2147
|
+
"default": "field",
|
|
2148
|
+
"description": "Specify the name of the output field.",
|
|
2149
|
+
"display_name": "Name",
|
|
2150
|
+
"edit_mode": "inline",
|
|
2151
|
+
"formatter": "text",
|
|
2152
|
+
"name": "name",
|
|
2153
|
+
"type": "str"
|
|
2154
|
+
},
|
|
2155
|
+
{
|
|
2156
|
+
"default": "description of field",
|
|
2157
|
+
"description": "Describe the purpose of the output field.",
|
|
2158
|
+
"display_name": "Description",
|
|
2159
|
+
"edit_mode": "popover",
|
|
2160
|
+
"formatter": "text",
|
|
2161
|
+
"name": "description",
|
|
2162
|
+
"type": "str"
|
|
2163
|
+
},
|
|
2164
|
+
{
|
|
2165
|
+
"default": "str",
|
|
2166
|
+
"description": "Indicate the data type of the output field (e.g., str, int, float, bool, dict).",
|
|
2167
|
+
"display_name": "Type",
|
|
2168
|
+
"edit_mode": "inline",
|
|
2169
|
+
"formatter": "text",
|
|
2170
|
+
"name": "type",
|
|
2171
|
+
"options": [
|
|
2172
|
+
"str",
|
|
2173
|
+
"int",
|
|
2174
|
+
"float",
|
|
2175
|
+
"bool",
|
|
2176
|
+
"dict"
|
|
2177
|
+
],
|
|
2178
|
+
"type": "str"
|
|
2179
|
+
},
|
|
2180
|
+
{
|
|
2181
|
+
"default": "False",
|
|
2182
|
+
"description": "Set to True if this output field should be a list of the specified type.",
|
|
2183
|
+
"display_name": "As List",
|
|
2184
|
+
"edit_mode": "inline",
|
|
2185
|
+
"formatter": "text",
|
|
2186
|
+
"name": "multiple",
|
|
2187
|
+
"type": "boolean"
|
|
2188
|
+
}
|
|
2189
|
+
],
|
|
2539
2190
|
"title_case": false,
|
|
2540
2191
|
"tool_mode": false,
|
|
2541
2192
|
"trace_as_metadata": true,
|
|
2542
|
-
"
|
|
2543
|
-
"
|
|
2544
|
-
"
|
|
2545
|
-
|
|
2546
|
-
"storage_location": {
|
|
2547
|
-
"_input_type": "SortableListInput",
|
|
2548
|
-
"advanced": false,
|
|
2549
|
-
"display_name": "Storage Location",
|
|
2550
|
-
"dynamic": false,
|
|
2551
|
-
"info": "Choose where to read the file from.",
|
|
2552
|
-
"limit": 1,
|
|
2553
|
-
"name": "storage_location",
|
|
2554
|
-
"options": [
|
|
2193
|
+
"trigger_icon": "Table",
|
|
2194
|
+
"trigger_text": "Open table",
|
|
2195
|
+
"type": "table",
|
|
2196
|
+
"value": [
|
|
2555
2197
|
{
|
|
2556
|
-
"
|
|
2557
|
-
"
|
|
2198
|
+
"description": "Full name of the candidate",
|
|
2199
|
+
"multiple": "False",
|
|
2200
|
+
"name": "full_name",
|
|
2201
|
+
"type": "str"
|
|
2558
2202
|
},
|
|
2559
2203
|
{
|
|
2560
|
-
"
|
|
2561
|
-
"
|
|
2204
|
+
"description": "Email ID",
|
|
2205
|
+
"multiple": "False",
|
|
2206
|
+
"name": "email",
|
|
2207
|
+
"type": "str"
|
|
2562
2208
|
},
|
|
2563
2209
|
{
|
|
2564
|
-
"
|
|
2565
|
-
"
|
|
2210
|
+
"description": "Contact Number",
|
|
2211
|
+
"multiple": "False",
|
|
2212
|
+
"name": "phone_number",
|
|
2213
|
+
"type": "str"
|
|
2214
|
+
},
|
|
2215
|
+
{
|
|
2216
|
+
"description": "LinkedIn URL",
|
|
2217
|
+
"multiple": "False",
|
|
2218
|
+
"name": "linkedin",
|
|
2219
|
+
"type": "str"
|
|
2220
|
+
},
|
|
2221
|
+
{
|
|
2222
|
+
"description": "GitHub profile URL (if applicable)",
|
|
2223
|
+
"multiple": "False",
|
|
2224
|
+
"name": "github",
|
|
2225
|
+
"type": "str"
|
|
2226
|
+
},
|
|
2227
|
+
{
|
|
2228
|
+
"description": "Personal website or portfolio URL",
|
|
2229
|
+
"multiple": "False",
|
|
2230
|
+
"name": "portfolio",
|
|
2231
|
+
"type": "str"
|
|
2232
|
+
},
|
|
2233
|
+
{
|
|
2234
|
+
"description": "Visa/work authorization details (if applicable)",
|
|
2235
|
+
"multiple": "False",
|
|
2236
|
+
"name": "visa_status",
|
|
2237
|
+
"type": "str"
|
|
2238
|
+
},
|
|
2239
|
+
{
|
|
2240
|
+
"description": "Short professional summary or objective statement",
|
|
2241
|
+
"multiple": "False",
|
|
2242
|
+
"name": "summary",
|
|
2243
|
+
"type": "str"
|
|
2244
|
+
},
|
|
2245
|
+
{
|
|
2246
|
+
"description": "Dictionaries of experience details with following keys:\\n \\\"job_title\\\": Job position/title,\\n\\t\\\"company_name\\\": Employer or organization\\n\\t\\\"location\\\": Job location (remote/in-office)\\n\\t\\\"start_date\\\": Start date (YYYY-MM)\\n\\t\\\"end_date\\\": End date or \\\"Present\\\"\\n\\t\\\"responsibilities\\\": List of responsibilities and tasks\\n\\t\\\"achievements\\\": List of key achievements and contributions",
|
|
2247
|
+
"multiple": "True",
|
|
2248
|
+
"name": "experience",
|
|
2249
|
+
"type": "dict"
|
|
2250
|
+
},
|
|
2251
|
+
{
|
|
2252
|
+
"description": "Dictionaries of Education details with following keys:\\n\\\"degree\\\": Degree obtained (e.g., B.Sc., M.Sc., Ph.D.),\\n\\\"field_of_study\\\": Major or specialization,\\n\\\"institution\\\": University/college name,\\n\\\"location\\\": Location of institution,\\n\\\"start_date\\\": Start date (YYYY-MM),\\n\\\"end_date\\\": Graduation/completion date (YYYY-MM),\\n\\\"gpa\\\": GPA/grade (if available),\\n\\\"relevant_courses\\\": List of relevant coursework (if applicable)",
|
|
2253
|
+
"multiple": "True",
|
|
2254
|
+
"name": "education",
|
|
2255
|
+
"type": "dict"
|
|
2256
|
+
},
|
|
2257
|
+
{
|
|
2258
|
+
"description": "Skills mentioned in the resume. Comma separated.",
|
|
2259
|
+
"multiple": "True",
|
|
2260
|
+
"name": "skills",
|
|
2261
|
+
"type": "str"
|
|
2262
|
+
},
|
|
2263
|
+
{
|
|
2264
|
+
"description": "Title and description and details of the project. Including the skills and technologies used.",
|
|
2265
|
+
"multiple": "False",
|
|
2266
|
+
"name": "projects",
|
|
2267
|
+
"type": "str"
|
|
2566
2268
|
}
|
|
2269
|
+
]
|
|
2270
|
+
},
|
|
2271
|
+
"schema_name": {
|
|
2272
|
+
"_input_type": "MessageTextInput",
|
|
2273
|
+
"advanced": true,
|
|
2274
|
+
"display_name": "Schema Name",
|
|
2275
|
+
"dynamic": false,
|
|
2276
|
+
"info": "Provide a name for the output data schema.",
|
|
2277
|
+
"input_types": [
|
|
2278
|
+
"Message"
|
|
2567
2279
|
],
|
|
2568
|
-
"
|
|
2569
|
-
"
|
|
2570
|
-
"
|
|
2280
|
+
"list": false,
|
|
2281
|
+
"list_add_label": "Add More",
|
|
2282
|
+
"load_from_db": false,
|
|
2283
|
+
"name": "schema_name",
|
|
2284
|
+
"placeholder": "",
|
|
2571
2285
|
"required": false,
|
|
2572
|
-
"search_category": [],
|
|
2573
2286
|
"show": true,
|
|
2574
2287
|
"title_case": false,
|
|
2575
2288
|
"tool_mode": false,
|
|
2289
|
+
"trace_as_input": true,
|
|
2576
2290
|
"trace_as_metadata": true,
|
|
2577
|
-
"
|
|
2578
|
-
"type": "sortableList",
|
|
2291
|
+
"type": "str",
|
|
2579
2292
|
"value": ""
|
|
2580
2293
|
},
|
|
2581
|
-
"
|
|
2582
|
-
"_input_type": "
|
|
2294
|
+
"system_prompt": {
|
|
2295
|
+
"_input_type": "MultilineInput",
|
|
2583
2296
|
"advanced": true,
|
|
2584
|
-
"
|
|
2297
|
+
"copy_field": false,
|
|
2298
|
+
"display_name": "Format Instructions",
|
|
2585
2299
|
"dynamic": false,
|
|
2586
|
-
"info": "
|
|
2300
|
+
"info": "The instructions to the language model for formatting the output.",
|
|
2301
|
+
"input_types": [
|
|
2302
|
+
"Message"
|
|
2303
|
+
],
|
|
2587
2304
|
"list": false,
|
|
2588
2305
|
"list_add_label": "Add More",
|
|
2589
|
-
"
|
|
2590
|
-
"
|
|
2306
|
+
"load_from_db": false,
|
|
2307
|
+
"multiline": true,
|
|
2308
|
+
"name": "system_prompt",
|
|
2591
2309
|
"placeholder": "",
|
|
2592
|
-
"required":
|
|
2310
|
+
"required": true,
|
|
2593
2311
|
"show": true,
|
|
2594
2312
|
"title_case": false,
|
|
2595
2313
|
"tool_mode": false,
|
|
2314
|
+
"trace_as_input": true,
|
|
2596
2315
|
"trace_as_metadata": true,
|
|
2597
|
-
"
|
|
2598
|
-
"
|
|
2599
|
-
"value": true
|
|
2316
|
+
"type": "str",
|
|
2317
|
+
"value": "You are an AI that extracts structured JSON objects from unstructured text. Use a predefined schema with expected types (str, int, float, bool, dict). Extract ALL relevant instances that match the schema - if multiple patterns exist, capture them all. Fill missing or ambiguous values with defaults: null for missing values. Remove exact duplicates but keep variations that have different field values. Always return valid JSON in the expected format, never throw errors. If multiple objects can be extracted, return them all in the structured format."
|
|
2600
2318
|
}
|
|
2601
2319
|
},
|
|
2602
2320
|
"tool_mode": false
|
|
2603
2321
|
},
|
|
2322
|
+
"selected_output": "dataframe_output",
|
|
2604
2323
|
"showNode": true,
|
|
2605
|
-
"type": "
|
|
2324
|
+
"type": "StructuredOutput"
|
|
2606
2325
|
},
|
|
2607
2326
|
"dragging": false,
|
|
2608
|
-
"id": "
|
|
2327
|
+
"id": "StructuredOutput-wsAT3",
|
|
2609
2328
|
"measured": {
|
|
2610
|
-
"height":
|
|
2329
|
+
"height": 349,
|
|
2611
2330
|
"width": 320
|
|
2612
2331
|
},
|
|
2613
2332
|
"position": {
|
|
2614
|
-
"x":
|
|
2615
|
-
"y":
|
|
2333
|
+
"x": 1308.5338025647359,
|
|
2334
|
+
"y": 651.6998573907567
|
|
2616
2335
|
},
|
|
2617
|
-
"selected":
|
|
2336
|
+
"selected": false,
|
|
2618
2337
|
"type": "genericNode"
|
|
2619
2338
|
}
|
|
2620
2339
|
],
|
|
2621
2340
|
"viewport": {
|
|
2622
|
-
"x": -
|
|
2623
|
-
"y":
|
|
2624
|
-
"zoom": 0.
|
|
2341
|
+
"x": -89.9205649953526,
|
|
2342
|
+
"y": 43.735261805036544,
|
|
2343
|
+
"zoom": 0.5746419520979581
|
|
2625
2344
|
}
|
|
2626
2345
|
},
|
|
2627
2346
|
"description": "This template transforms PDF or TXT resume documents into structured JSON, generating a portfolio website HTML code from the structured data.",
|
|
2628
2347
|
"endpoint_name": null,
|
|
2629
|
-
"id": "
|
|
2348
|
+
"id": "34740f33-b354-440e-a984-fc51079578e7",
|
|
2630
2349
|
"is_component": false,
|
|
2631
|
-
"last_tested_version": "1.
|
|
2350
|
+
"last_tested_version": "1.6.0",
|
|
2632
2351
|
"name": "Portfolio Website Code Generator",
|
|
2633
2352
|
"tags": [
|
|
2634
2353
|
"chatbots",
|