vibesurf 0.1.21__py3-none-any.whl → 0.2.6__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.

Potentially problematic release.


This version of vibesurf might be problematic. Click here for more details.

Files changed (2868) hide show
  1. vibe_surf/_version.py +2 -2
  2. vibe_surf/agents/browser_use_agent.py +16 -354
  3. vibe_surf/agents/prompts/vibe_surf_prompt.py +45 -0
  4. vibe_surf/agents/report_writer_agent.py +71 -21
  5. vibe_surf/agents/vibe_surf_agent.py +234 -111
  6. vibe_surf/agents/views.py +6 -15
  7. vibe_surf/backend/api/agent.py +38 -0
  8. vibe_surf/backend/api/composio.py +1047 -0
  9. vibe_surf/backend/api/config.py +3 -1
  10. vibe_surf/backend/api/schedule.py +331 -0
  11. vibe_surf/backend/api/task.py +2 -2
  12. vibe_surf/backend/api/vibesurf.py +449 -0
  13. vibe_surf/backend/database/migrations/v005_add_composio_integration.sql +33 -0
  14. vibe_surf/backend/database/migrations/v006_add_credentials_table.sql +26 -0
  15. vibe_surf/backend/database/migrations/v007_add_schedule_table.sql +29 -0
  16. vibe_surf/backend/database/models.py +86 -1
  17. vibe_surf/backend/database/queries.py +567 -4
  18. vibe_surf/backend/frontend/assets/MCPLangflow-Bzb6g6Zx.png +0 -0
  19. vibe_surf/backend/frontend/assets/SlackIcon-DH9MFXnM.js +1 -0
  20. vibe_surf/backend/frontend/assets/Wikipedia-MKjlsFhR.js +1 -0
  21. vibe_surf/backend/frontend/assets/Wolfram-DZjh94KW.js +1 -0
  22. vibe_surf/backend/frontend/assets/__vite-browser-external-BIHI7g3E.js +1 -0
  23. vibe_surf/backend/frontend/assets/a-arrow-down-M5pMOHfz.js +6 -0
  24. vibe_surf/backend/frontend/assets/a-arrow-up-Bhux1P9g.js +6 -0
  25. vibe_surf/backend/frontend/assets/a-large-small-CxpoIZ2k.js +6 -0
  26. vibe_surf/backend/frontend/assets/accessibility-DIOswxup.js +6 -0
  27. vibe_surf/backend/frontend/assets/activity-Cgoj6BfB.js +6 -0
  28. vibe_surf/backend/frontend/assets/air-vent-BRuCRSP-.js +6 -0
  29. vibe_surf/backend/frontend/assets/airplay-D6ddOHpT.js +6 -0
  30. vibe_surf/backend/frontend/assets/alarm-clock-BswE0svo.js +6 -0
  31. vibe_surf/backend/frontend/assets/alarm-clock-check-CMKnL746.js +6 -0
  32. vibe_surf/backend/frontend/assets/alarm-clock-minus-Cmry03T1.js +6 -0
  33. vibe_surf/backend/frontend/assets/alarm-clock-off-ByCGR7KD.js +6 -0
  34. vibe_surf/backend/frontend/assets/alarm-clock-plus-D80NSz4S.js +6 -0
  35. vibe_surf/backend/frontend/assets/alarm-smoke-DyUVOJUh.js +6 -0
  36. vibe_surf/backend/frontend/assets/album-CGIJADgR.js +6 -0
  37. vibe_surf/backend/frontend/assets/align-center-Cb9nxg1u.js +6 -0
  38. vibe_surf/backend/frontend/assets/align-center-horizontal-DunWyH8w.js +6 -0
  39. vibe_surf/backend/frontend/assets/align-center-vertical-COWbwf4r.js +6 -0
  40. vibe_surf/backend/frontend/assets/align-end-horizontal-BXGWZnJg.js +6 -0
  41. vibe_surf/backend/frontend/assets/align-end-vertical-DsDprlL7.js +6 -0
  42. vibe_surf/backend/frontend/assets/align-horizontal-distribute-center-fSZ29QkE.js +6 -0
  43. vibe_surf/backend/frontend/assets/align-horizontal-distribute-end-C3BFRnLg.js +6 -0
  44. vibe_surf/backend/frontend/assets/align-horizontal-distribute-start-DqYzU1-w.js +6 -0
  45. vibe_surf/backend/frontend/assets/align-horizontal-justify-center-2iNXkDKh.js +6 -0
  46. vibe_surf/backend/frontend/assets/align-horizontal-justify-end-COPIkT0U.js +6 -0
  47. vibe_surf/backend/frontend/assets/align-horizontal-justify-start-DoS3Jrzb.js +6 -0
  48. vibe_surf/backend/frontend/assets/align-horizontal-space-around-k9yEGjMh.js +6 -0
  49. vibe_surf/backend/frontend/assets/align-horizontal-space-between-C6RzmtkD.js +6 -0
  50. vibe_surf/backend/frontend/assets/align-justify-BvD3xtAK.js +6 -0
  51. vibe_surf/backend/frontend/assets/align-left-BP84nxXJ.js +6 -0
  52. vibe_surf/backend/frontend/assets/align-right-6z3k9YVj.js +6 -0
  53. vibe_surf/backend/frontend/assets/align-start-horizontal-DRihqJTg.js +6 -0
  54. vibe_surf/backend/frontend/assets/align-start-vertical-Bs-ISVmy.js +6 -0
  55. vibe_surf/backend/frontend/assets/align-vertical-distribute-center-CU82VWLq.js +6 -0
  56. vibe_surf/backend/frontend/assets/align-vertical-distribute-end-IrubG5LP.js +6 -0
  57. vibe_surf/backend/frontend/assets/align-vertical-distribute-start-BgBu3t8X.js +6 -0
  58. vibe_surf/backend/frontend/assets/align-vertical-justify-center-e7psKZ4D.js +6 -0
  59. vibe_surf/backend/frontend/assets/align-vertical-justify-end-CncIBU5b.js +6 -0
  60. vibe_surf/backend/frontend/assets/align-vertical-justify-start-21_MQReA.js +6 -0
  61. vibe_surf/backend/frontend/assets/align-vertical-space-around-NJNn7zPP.js +6 -0
  62. vibe_surf/backend/frontend/assets/align-vertical-space-between-LYs4c5i9.js +6 -0
  63. vibe_surf/backend/frontend/assets/ambulance-jMfwSVYH.js +6 -0
  64. vibe_surf/backend/frontend/assets/ampersand-B1-1HYj1.js +6 -0
  65. vibe_surf/backend/frontend/assets/ampersands-DVVxe50v.js +6 -0
  66. vibe_surf/backend/frontend/assets/amphora-B12bYdql.js +6 -0
  67. vibe_surf/backend/frontend/assets/anchor-C_JuZyO5.js +6 -0
  68. vibe_surf/backend/frontend/assets/angry-KqzvbAxB.js +6 -0
  69. vibe_surf/backend/frontend/assets/annoyed-CZXUdq0q.js +6 -0
  70. vibe_surf/backend/frontend/assets/antenna-CFlKnuEE.js +6 -0
  71. vibe_surf/backend/frontend/assets/anvil-ObmOBzcW.js +6 -0
  72. vibe_surf/backend/frontend/assets/aperture-CU6mXxj8.js +6 -0
  73. vibe_surf/backend/frontend/assets/apify_white-uCJdZkTU.png +0 -0
  74. vibe_surf/backend/frontend/assets/app-window-D5iSiHiS.js +6 -0
  75. vibe_surf/backend/frontend/assets/app-window-mac-QOaPWoGX.js +6 -0
  76. vibe_surf/backend/frontend/assets/apple-D7ZsI-et.js +6 -0
  77. vibe_surf/backend/frontend/assets/archive-FLn_d8Ny.js +6 -0
  78. vibe_surf/backend/frontend/assets/archive-restore-C668KwvC.js +6 -0
  79. vibe_surf/backend/frontend/assets/archive-x-DJJed9T2.js +6 -0
  80. vibe_surf/backend/frontend/assets/armchair-DfXLs0Nj.js +6 -0
  81. vibe_surf/backend/frontend/assets/arrow-big-down-DU2dtkeu.js +6 -0
  82. vibe_surf/backend/frontend/assets/arrow-big-down-dash-CzsIOlhF.js +6 -0
  83. vibe_surf/backend/frontend/assets/arrow-big-left-CCeUj8q9.js +6 -0
  84. vibe_surf/backend/frontend/assets/arrow-big-left-dash-CFpRtORj.js +6 -0
  85. vibe_surf/backend/frontend/assets/arrow-big-right-C1QE56k7.js +6 -0
  86. vibe_surf/backend/frontend/assets/arrow-big-right-dash-D6H2wruv.js +6 -0
  87. vibe_surf/backend/frontend/assets/arrow-big-up-0f0CsejQ.js +6 -0
  88. vibe_surf/backend/frontend/assets/arrow-big-up-dash-Dz-Sbw66.js +6 -0
  89. vibe_surf/backend/frontend/assets/arrow-down-0-1-B1PGN6BJ.js +6 -0
  90. vibe_surf/backend/frontend/assets/arrow-down-1-0-Bcl1KrrL.js +6 -0
  91. vibe_surf/backend/frontend/assets/arrow-down-DZKzcieL.js +6 -0
  92. vibe_surf/backend/frontend/assets/arrow-down-a-z-DurN_xiR.js +6 -0
  93. vibe_surf/backend/frontend/assets/arrow-down-from-line-D2i9DDA0.js +6 -0
  94. vibe_surf/backend/frontend/assets/arrow-down-left-Pid0zUYj.js +6 -0
  95. vibe_surf/backend/frontend/assets/arrow-down-narrow-wide-DtnDCgZY.js +6 -0
  96. vibe_surf/backend/frontend/assets/arrow-down-right-BgepY9bM.js +6 -0
  97. vibe_surf/backend/frontend/assets/arrow-down-to-dot-C5rQ12yn.js +6 -0
  98. vibe_surf/backend/frontend/assets/arrow-down-to-line-DovZ64L0.js +6 -0
  99. vibe_surf/backend/frontend/assets/arrow-down-up-D5-v7CDC.js +6 -0
  100. vibe_surf/backend/frontend/assets/arrow-down-wide-narrow-CGAsRLvP.js +6 -0
  101. vibe_surf/backend/frontend/assets/arrow-down-z-a-DOGHwUgR.js +6 -0
  102. vibe_surf/backend/frontend/assets/arrow-left-from-line-DwY8iDxY.js +6 -0
  103. vibe_surf/backend/frontend/assets/arrow-left-hKr3yGVm.js +6 -0
  104. vibe_surf/backend/frontend/assets/arrow-left-right-Be5fvvG0.js +6 -0
  105. vibe_surf/backend/frontend/assets/arrow-left-to-line-DKHIypu3.js +6 -0
  106. vibe_surf/backend/frontend/assets/arrow-right-BaRZuB8W.js +6 -0
  107. vibe_surf/backend/frontend/assets/arrow-right-from-line-D3jqt4-q.js +6 -0
  108. vibe_surf/backend/frontend/assets/arrow-right-left-BKRuMAR-.js +6 -0
  109. vibe_surf/backend/frontend/assets/arrow-right-to-line-rtWVy_CC.js +6 -0
  110. vibe_surf/backend/frontend/assets/arrow-up-0-1-yF8Nt_KM.js +6 -0
  111. vibe_surf/backend/frontend/assets/arrow-up-1-0-WRlLFmSw.js +6 -0
  112. vibe_surf/backend/frontend/assets/arrow-up-BKnAmgTC.js +6 -0
  113. vibe_surf/backend/frontend/assets/arrow-up-a-z-COXfk41y.js +6 -0
  114. vibe_surf/backend/frontend/assets/arrow-up-down-Dtw4v35K.js +6 -0
  115. vibe_surf/backend/frontend/assets/arrow-up-from-dot-B1XSjc2P.js +6 -0
  116. vibe_surf/backend/frontend/assets/arrow-up-from-line-C-lHvDpd.js +6 -0
  117. vibe_surf/backend/frontend/assets/arrow-up-left-CYojov8T.js +6 -0
  118. vibe_surf/backend/frontend/assets/arrow-up-narrow-wide-B54CYEHs.js +6 -0
  119. vibe_surf/backend/frontend/assets/arrow-up-right-Bdo9Z-7A.js +6 -0
  120. vibe_surf/backend/frontend/assets/arrow-up-to-line-DS_I-9Vp.js +6 -0
  121. vibe_surf/backend/frontend/assets/arrow-up-wide-narrow-B3GeXj9O.js +6 -0
  122. vibe_surf/backend/frontend/assets/arrow-up-z-a-CdyZuD75.js +6 -0
  123. vibe_surf/backend/frontend/assets/arrows-up-from-line-0sYhsLRw.js +6 -0
  124. vibe_surf/backend/frontend/assets/asterisk-CQWlVYDB.js +6 -0
  125. vibe_surf/backend/frontend/assets/at-sign-Dug8NlWL.js +6 -0
  126. vibe_surf/backend/frontend/assets/atom-Cx1vCOFb.js +6 -0
  127. vibe_surf/backend/frontend/assets/audio-lines-Cimsj6_f.js +6 -0
  128. vibe_surf/backend/frontend/assets/audio-waveform-BxCl1LyQ.js +6 -0
  129. vibe_surf/backend/frontend/assets/award-dRU3xhJ7.js +6 -0
  130. vibe_surf/backend/frontend/assets/axe-B8CCMGTD.js +6 -0
  131. vibe_surf/backend/frontend/assets/axis-3d-D2ZIjjx3.js +6 -0
  132. vibe_surf/backend/frontend/assets/baby-DWh5CwfC.js +6 -0
  133. vibe_surf/backend/frontend/assets/backpack-D9rjYWvf.js +6 -0
  134. vibe_surf/backend/frontend/assets/badge-C0r2CPAV.js +6 -0
  135. vibe_surf/backend/frontend/assets/badge-alert-Do89zN-s.js +6 -0
  136. vibe_surf/backend/frontend/assets/badge-cent-Dmv_cqc-.js +6 -0
  137. vibe_surf/backend/frontend/assets/badge-check--_Rese0X.js +6 -0
  138. vibe_surf/backend/frontend/assets/badge-dollar-sign-BHnNL8ma.js +6 -0
  139. vibe_surf/backend/frontend/assets/badge-euro-CKNQv-oO.js +6 -0
  140. vibe_surf/backend/frontend/assets/badge-help-BlZAHEa-.js +6 -0
  141. vibe_surf/backend/frontend/assets/badge-indian-rupee-BNIUcLaI.js +6 -0
  142. vibe_surf/backend/frontend/assets/badge-info-CrX5KTPR.js +6 -0
  143. vibe_surf/backend/frontend/assets/badge-japanese-yen-0mdbiK5f.js +6 -0
  144. vibe_surf/backend/frontend/assets/badge-minus-BX_scLIK.js +6 -0
  145. vibe_surf/backend/frontend/assets/badge-percent-BSJP3Okj.js +6 -0
  146. vibe_surf/backend/frontend/assets/badge-plus-DhlqCq3Z.js +6 -0
  147. vibe_surf/backend/frontend/assets/badge-pound-sterling-QpnkBN56.js +6 -0
  148. vibe_surf/backend/frontend/assets/badge-russian-ruble-L30Ncxnh.js +6 -0
  149. vibe_surf/backend/frontend/assets/badge-swiss-franc-BQrLli-C.js +6 -0
  150. vibe_surf/backend/frontend/assets/badge-x-DDXVSWE5.js +6 -0
  151. vibe_surf/backend/frontend/assets/baggage-claim-Nd9Qw4rX.js +6 -0
  152. vibe_surf/backend/frontend/assets/ban-fSKv80ss.js +6 -0
  153. vibe_surf/backend/frontend/assets/banana-DTClkW0x.js +6 -0
  154. vibe_surf/backend/frontend/assets/bandage-DLyvBCvf.js +6 -0
  155. vibe_surf/backend/frontend/assets/banknote-ArlwGdT1.js +6 -0
  156. vibe_surf/backend/frontend/assets/banknote-arrow-down-Dx9vP7KP.js +6 -0
  157. vibe_surf/backend/frontend/assets/banknote-arrow-up-CZNOWrKW.js +6 -0
  158. vibe_surf/backend/frontend/assets/banknote-x-y8ot0KXI.js +6 -0
  159. vibe_surf/backend/frontend/assets/barcode-U3mgwXvC.js +6 -0
  160. vibe_surf/backend/frontend/assets/baseline-Bb17nsNt.js +6 -0
  161. vibe_surf/backend/frontend/assets/bath-Fu-10Xqv.js +6 -0
  162. vibe_surf/backend/frontend/assets/battery-D2ng6PHz.js +6 -0
  163. vibe_surf/backend/frontend/assets/battery-charging-BBA_U97U.js +6 -0
  164. vibe_surf/backend/frontend/assets/battery-full-D74R09iv.js +6 -0
  165. vibe_surf/backend/frontend/assets/battery-low-BMeJBmJp.js +6 -0
  166. vibe_surf/backend/frontend/assets/battery-medium-clKHZw71.js +6 -0
  167. vibe_surf/backend/frontend/assets/battery-plus-DxtzU1bB.js +6 -0
  168. vibe_surf/backend/frontend/assets/battery-warning-1NEZ4eCa.js +6 -0
  169. vibe_surf/backend/frontend/assets/beaker-Br0pnmtw.js +6 -0
  170. vibe_surf/backend/frontend/assets/bean-B04lfjZo.js +6 -0
  171. vibe_surf/backend/frontend/assets/bean-off-C6H6plJJ.js +6 -0
  172. vibe_surf/backend/frontend/assets/bed-B7xWDlGQ.js +6 -0
  173. vibe_surf/backend/frontend/assets/bed-double-We8EVOE6.js +6 -0
  174. vibe_surf/backend/frontend/assets/bed-single-C-tVm75i.js +6 -0
  175. vibe_surf/backend/frontend/assets/beef-BzzCqLUx.js +6 -0
  176. vibe_surf/backend/frontend/assets/beer-B1aIU5Wp.js +6 -0
  177. vibe_surf/backend/frontend/assets/beer-off-T9p0sUQ_.js +6 -0
  178. vibe_surf/backend/frontend/assets/bell-BiEY08q7.js +6 -0
  179. vibe_surf/backend/frontend/assets/bell-dot-D6ZHJmF9.js +6 -0
  180. vibe_surf/backend/frontend/assets/bell-electric-BjP0O4kE.js +6 -0
  181. vibe_surf/backend/frontend/assets/bell-minus-Cw2KMMsV.js +6 -0
  182. vibe_surf/backend/frontend/assets/bell-off-JUGEvepv.js +6 -0
  183. vibe_surf/backend/frontend/assets/bell-plus-BtwPCtO5.js +6 -0
  184. vibe_surf/backend/frontend/assets/bell-ring-B_RAFBbK.js +6 -0
  185. vibe_surf/backend/frontend/assets/between-horizontal-end-DG9RojRP.js +6 -0
  186. vibe_surf/backend/frontend/assets/between-horizontal-start-BNuWKIUb.js +6 -0
  187. vibe_surf/backend/frontend/assets/between-vertical-end-CUvl7S4G.js +6 -0
  188. vibe_surf/backend/frontend/assets/between-vertical-start-tYvnZE7k.js +6 -0
  189. vibe_surf/backend/frontend/assets/biceps-flexed-D2zMmbhv.js +6 -0
  190. vibe_surf/backend/frontend/assets/bike-DPdpsZIt.js +6 -0
  191. vibe_surf/backend/frontend/assets/binary-DnnraEVk.js +6 -0
  192. vibe_surf/backend/frontend/assets/binoculars-BXc-CFA4.js +6 -0
  193. vibe_surf/backend/frontend/assets/biohazard-D-6PF7OA.js +6 -0
  194. vibe_surf/backend/frontend/assets/bird-CYNkrqM5.js +6 -0
  195. vibe_surf/backend/frontend/assets/bitcoin-DG6PDKEk.js +6 -0
  196. vibe_surf/backend/frontend/assets/blend-COR-wQIS.js +6 -0
  197. vibe_surf/backend/frontend/assets/blinds-_pD0AjwU.js +6 -0
  198. vibe_surf/backend/frontend/assets/blocks-C0goFnXe.js +6 -0
  199. vibe_surf/backend/frontend/assets/bluetooth-BFH9HCot.js +6 -0
  200. vibe_surf/backend/frontend/assets/bluetooth-connected-C9JKQLmC.js +6 -0
  201. vibe_surf/backend/frontend/assets/bluetooth-off-ka-F7ZnG.js +6 -0
  202. vibe_surf/backend/frontend/assets/bluetooth-searching-BdyfX9rD.js +6 -0
  203. vibe_surf/backend/frontend/assets/bold-CZSxbQF9.js +6 -0
  204. vibe_surf/backend/frontend/assets/bolt-BjrrPChn.js +6 -0
  205. vibe_surf/backend/frontend/assets/bomb-CMlcm4r9.js +6 -0
  206. vibe_surf/backend/frontend/assets/bone-qWIxHNfL.js +6 -0
  207. vibe_surf/backend/frontend/assets/book-BfRvOdc3.js +6 -0
  208. vibe_surf/backend/frontend/assets/book-a-CpoCb7Zv.js +6 -0
  209. vibe_surf/backend/frontend/assets/book-audio-cBKWAq-p.js +6 -0
  210. vibe_surf/backend/frontend/assets/book-check-CqwOgoOp.js +6 -0
  211. vibe_surf/backend/frontend/assets/book-copy-ORHl4yqI.js +6 -0
  212. vibe_surf/backend/frontend/assets/book-dashed-BrJdSa-D.js +6 -0
  213. vibe_surf/backend/frontend/assets/book-down-Bj4JV-P-.js +6 -0
  214. vibe_surf/backend/frontend/assets/book-headphones-BYuIU1gj.js +6 -0
  215. vibe_surf/backend/frontend/assets/book-heart-DCUxVJaU.js +6 -0
  216. vibe_surf/backend/frontend/assets/book-image-BPpCKv6n.js +6 -0
  217. vibe_surf/backend/frontend/assets/book-key-Ca_EtM6h.js +6 -0
  218. vibe_surf/backend/frontend/assets/book-lock-Bldzz1aF.js +6 -0
  219. vibe_surf/backend/frontend/assets/book-marked-BCleXwJ3.js +6 -0
  220. vibe_surf/backend/frontend/assets/book-minus-XoJOGZOx.js +6 -0
  221. vibe_surf/backend/frontend/assets/book-open-DUlI5XCY.js +6 -0
  222. vibe_surf/backend/frontend/assets/book-open-check-BEksHFoQ.js +6 -0
  223. vibe_surf/backend/frontend/assets/book-open-text-CiKyiRt-.js +6 -0
  224. vibe_surf/backend/frontend/assets/book-plus-DuUfSKu2.js +6 -0
  225. vibe_surf/backend/frontend/assets/book-text-TTfLk4-M.js +6 -0
  226. vibe_surf/backend/frontend/assets/book-type-CMV326FZ.js +6 -0
  227. vibe_surf/backend/frontend/assets/book-up-2-CGiuKI0n.js +6 -0
  228. vibe_surf/backend/frontend/assets/book-up-d2hb8aDq.js +6 -0
  229. vibe_surf/backend/frontend/assets/book-user-BsZySUGG.js +6 -0
  230. vibe_surf/backend/frontend/assets/book-x-CoSA25As.js +6 -0
  231. vibe_surf/backend/frontend/assets/bookmark-CVx8aFGk.js +6 -0
  232. vibe_surf/backend/frontend/assets/bookmark-check-Zh_1fqo_.js +6 -0
  233. vibe_surf/backend/frontend/assets/bookmark-minus---KmRSON.js +6 -0
  234. vibe_surf/backend/frontend/assets/bookmark-plus-ZY-aQ6r5.js +6 -0
  235. vibe_surf/backend/frontend/assets/bookmark-x-DnEKBdZC.js +6 -0
  236. vibe_surf/backend/frontend/assets/boom-box-D5cJf4pI.js +6 -0
  237. vibe_surf/backend/frontend/assets/bot-BbS7VJ5s.js +6 -0
  238. vibe_surf/backend/frontend/assets/bot-message-square-Bm4hBAbI.js +6 -0
  239. vibe_surf/backend/frontend/assets/bot-off-CFjG1wx4.js +6 -0
  240. vibe_surf/backend/frontend/assets/bow-arrow-Bupk8VJM.js +6 -0
  241. vibe_surf/backend/frontend/assets/box-CyVAC5Vv.js +6 -0
  242. vibe_surf/backend/frontend/assets/boxes-B3xCa_UA.js +6 -0
  243. vibe_surf/backend/frontend/assets/braces-QLXt2h0B.js +6 -0
  244. vibe_surf/backend/frontend/assets/brackets-CEy7gs9d.js +6 -0
  245. vibe_surf/backend/frontend/assets/brain-circuit-WmeDjyy5.js +6 -0
  246. vibe_surf/backend/frontend/assets/brain-cog-DKDdpxNn.js +6 -0
  247. vibe_surf/backend/frontend/assets/brain-ziGJYeS1.js +6 -0
  248. vibe_surf/backend/frontend/assets/brick-wall-DXer5s5J.js +6 -0
  249. vibe_surf/backend/frontend/assets/brick-wall-fire-CfXr8Krv.js +6 -0
  250. vibe_surf/backend/frontend/assets/briefcase-C2YbssAg.js +6 -0
  251. vibe_surf/backend/frontend/assets/briefcase-business-CJCpJSkU.js +6 -0
  252. vibe_surf/backend/frontend/assets/briefcase-conveyor-belt-B0jqiIT4.js +6 -0
  253. vibe_surf/backend/frontend/assets/briefcase-medical-BBH0C6ZQ.js +6 -0
  254. vibe_surf/backend/frontend/assets/bring-to-front-ywT72zy-.js +6 -0
  255. vibe_surf/backend/frontend/assets/brush-_uc9w_j1.js +6 -0
  256. vibe_surf/backend/frontend/assets/bubbles-ggRrvDQI.js +6 -0
  257. vibe_surf/backend/frontend/assets/bug-6l9frAXO.js +6 -0
  258. vibe_surf/backend/frontend/assets/bug-off-BmK1mJ7T.js +6 -0
  259. vibe_surf/backend/frontend/assets/bug-play-DbXJeqOa.js +6 -0
  260. vibe_surf/backend/frontend/assets/building-2-Cf9gYIvy.js +6 -0
  261. vibe_surf/backend/frontend/assets/building-D9eMVeBu.js +6 -0
  262. vibe_surf/backend/frontend/assets/bus-COrhWbdv.js +6 -0
  263. vibe_surf/backend/frontend/assets/bus-front-Csav5OG_.js +6 -0
  264. vibe_surf/backend/frontend/assets/cable-BPG7O6tf.js +6 -0
  265. vibe_surf/backend/frontend/assets/cable-car-ChPtZlze.js +6 -0
  266. vibe_surf/backend/frontend/assets/cake-DnmMZhI2.js +6 -0
  267. vibe_surf/backend/frontend/assets/cake-slice-Clc5mDPW.js +6 -0
  268. vibe_surf/backend/frontend/assets/calculator-C77I3XPN.js +6 -0
  269. vibe_surf/backend/frontend/assets/calendar-1-BMs-t7Zd.js +6 -0
  270. vibe_surf/backend/frontend/assets/calendar-DuLRS-6L.js +6 -0
  271. vibe_surf/backend/frontend/assets/calendar-arrow-down-DoVsOnV0.js +6 -0
  272. vibe_surf/backend/frontend/assets/calendar-arrow-up-Ca_1_rkT.js +6 -0
  273. vibe_surf/backend/frontend/assets/calendar-check-2-0JmvXRsb.js +6 -0
  274. vibe_surf/backend/frontend/assets/calendar-check-DtTDIbPE.js +6 -0
  275. vibe_surf/backend/frontend/assets/calendar-clock-39XA2NxZ.js +6 -0
  276. vibe_surf/backend/frontend/assets/calendar-cog-B3elAX8P.js +6 -0
  277. vibe_surf/backend/frontend/assets/calendar-days-B_4sd_nS.js +6 -0
  278. vibe_surf/backend/frontend/assets/calendar-fold-1GZdJiY5.js +6 -0
  279. vibe_surf/backend/frontend/assets/calendar-heart-C20Gu6Pq.js +6 -0
  280. vibe_surf/backend/frontend/assets/calendar-minus-2-C2uYA9Xy.js +6 -0
  281. vibe_surf/backend/frontend/assets/calendar-minus-Bf9ZhUgX.js +6 -0
  282. vibe_surf/backend/frontend/assets/calendar-off-oqUiDnlM.js +6 -0
  283. vibe_surf/backend/frontend/assets/calendar-plus-2-D5AF7K6Z.js +6 -0
  284. vibe_surf/backend/frontend/assets/calendar-plus-DFRLvp48.js +6 -0
  285. vibe_surf/backend/frontend/assets/calendar-range-BtbX_u86.js +6 -0
  286. vibe_surf/backend/frontend/assets/calendar-search-DKFr3oFg.js +6 -0
  287. vibe_surf/backend/frontend/assets/calendar-sync-J6s1mjVg.js +6 -0
  288. vibe_surf/backend/frontend/assets/calendar-x-16dHXmS-.js +6 -0
  289. vibe_surf/backend/frontend/assets/calendar-x-2-DASXeIpI.js +6 -0
  290. vibe_surf/backend/frontend/assets/camera-C73rx5T7.js +6 -0
  291. vibe_surf/backend/frontend/assets/camera-off-lYXrg8Ab.js +6 -0
  292. vibe_surf/backend/frontend/assets/candy-DHin-JSi.js +6 -0
  293. vibe_surf/backend/frontend/assets/candy-cane-BrFztxP3.js +6 -0
  294. vibe_surf/backend/frontend/assets/candy-off-C6p9RmsL.js +6 -0
  295. vibe_surf/backend/frontend/assets/cannabis-BIomtlTh.js +6 -0
  296. vibe_surf/backend/frontend/assets/captions-CU9AD1HN.js +6 -0
  297. vibe_surf/backend/frontend/assets/captions-off-BQabz_7T.js +6 -0
  298. vibe_surf/backend/frontend/assets/car-CIepr4l8.js +6 -0
  299. vibe_surf/backend/frontend/assets/car-front-BvC3NXIU.js +6 -0
  300. vibe_surf/backend/frontend/assets/car-taxi-front-D6kk_vUY.js +6 -0
  301. vibe_surf/backend/frontend/assets/caravan-B4YvOfvY.js +6 -0
  302. vibe_surf/backend/frontend/assets/carrot-DScNmGFZ.js +6 -0
  303. vibe_surf/backend/frontend/assets/case-lower-iW8MijQ2.js +6 -0
  304. vibe_surf/backend/frontend/assets/case-sensitive-DggKI0Fh.js +6 -0
  305. vibe_surf/backend/frontend/assets/case-upper-BC22BC0q.js +6 -0
  306. vibe_surf/backend/frontend/assets/cassette-tape-PMwALept.js +6 -0
  307. vibe_surf/backend/frontend/assets/cast-Kq2v55CB.js +6 -0
  308. vibe_surf/backend/frontend/assets/castle-DJzhSlL6.js +6 -0
  309. vibe_surf/backend/frontend/assets/cat-Cszwi-0j.js +6 -0
  310. vibe_surf/backend/frontend/assets/cctv-4zeLHFGP.js +6 -0
  311. vibe_surf/backend/frontend/assets/chart-area-JyFaZNpl.js +6 -0
  312. vibe_surf/backend/frontend/assets/chart-bar-Bcnue-Eu.js +6 -0
  313. vibe_surf/backend/frontend/assets/chart-bar-big-dJ6tM8UP.js +6 -0
  314. vibe_surf/backend/frontend/assets/chart-bar-decreasing-jviD9Nka.js +6 -0
  315. vibe_surf/backend/frontend/assets/chart-bar-increasing-BcpuBWlQ.js +6 -0
  316. vibe_surf/backend/frontend/assets/chart-bar-stacked-DLxMM-a6.js +6 -0
  317. vibe_surf/backend/frontend/assets/chart-candlestick-BK5WOKib.js +6 -0
  318. vibe_surf/backend/frontend/assets/chart-column-BjT_DIge.js +6 -0
  319. vibe_surf/backend/frontend/assets/chart-column-big-BoOEhNxT.js +6 -0
  320. vibe_surf/backend/frontend/assets/chart-column-decreasing-B3PEhFWj.js +6 -0
  321. vibe_surf/backend/frontend/assets/chart-column-increasing-KTAFoIBT.js +6 -0
  322. vibe_surf/backend/frontend/assets/chart-column-stacked-Drci0FWY.js +6 -0
  323. vibe_surf/backend/frontend/assets/chart-gantt-CxLhKfws.js +6 -0
  324. vibe_surf/backend/frontend/assets/chart-line-Deh3i4SN.js +6 -0
  325. vibe_surf/backend/frontend/assets/chart-network-1nLETKIo.js +6 -0
  326. vibe_surf/backend/frontend/assets/chart-no-axes-column-BBUb9OL4.js +6 -0
  327. vibe_surf/backend/frontend/assets/chart-no-axes-column-decreasing-BNGTEmAA.js +6 -0
  328. vibe_surf/backend/frontend/assets/chart-no-axes-column-increasing-DYl5MpQr.js +6 -0
  329. vibe_surf/backend/frontend/assets/chart-no-axes-combined-Bwo9fVPi.js +6 -0
  330. vibe_surf/backend/frontend/assets/chart-no-axes-gantt-CIpwp7-G.js +6 -0
  331. vibe_surf/backend/frontend/assets/chart-pie-Brn9eScK.js +6 -0
  332. vibe_surf/backend/frontend/assets/chart-scatter-BFmfnF4I.js +6 -0
  333. vibe_surf/backend/frontend/assets/chart-spline-iPy-W03i.js +6 -0
  334. vibe_surf/backend/frontend/assets/check-check-CQEfDsmx.js +6 -0
  335. vibe_surf/backend/frontend/assets/chef-hat-DdOkr4i8.js +6 -0
  336. vibe_surf/backend/frontend/assets/cherry-XkD_QiBI.js +6 -0
  337. vibe_surf/backend/frontend/assets/chevron-first-muFwJevA.js +6 -0
  338. vibe_surf/backend/frontend/assets/chevron-last-Bn079TLv.js +6 -0
  339. vibe_surf/backend/frontend/assets/chevron-left-BhWYBFsk.js +6 -0
  340. vibe_surf/backend/frontend/assets/chevron-right-zm672Mdr.js +6 -0
  341. vibe_surf/backend/frontend/assets/chevrons-down-T3mOFRB2.js +6 -0
  342. vibe_surf/backend/frontend/assets/chevrons-down-up-BfWmsaYK.js +6 -0
  343. vibe_surf/backend/frontend/assets/chevrons-left-BLFCiP6g.js +6 -0
  344. vibe_surf/backend/frontend/assets/chevrons-left-right-Cgp4lAQF.js +6 -0
  345. vibe_surf/backend/frontend/assets/chevrons-left-right-ellipsis-BZSVxQ-x.js +6 -0
  346. vibe_surf/backend/frontend/assets/chevrons-right-DMKOjes0.js +6 -0
  347. vibe_surf/backend/frontend/assets/chevrons-right-left-Clwbiy09.js +6 -0
  348. vibe_surf/backend/frontend/assets/chevrons-up-CdrwLxmN.js +6 -0
  349. vibe_surf/backend/frontend/assets/chrome-46ygw5lK.js +6 -0
  350. vibe_surf/backend/frontend/assets/church-DQW3bkcl.js +6 -0
  351. vibe_surf/backend/frontend/assets/cigarette-CTvLdOLV.js +6 -0
  352. vibe_surf/backend/frontend/assets/cigarette-off-D0kR9lro.js +6 -0
  353. vibe_surf/backend/frontend/assets/circle-alert-QG2k6eWP.js +6 -0
  354. vibe_surf/backend/frontend/assets/circle-arrow-down-BHFs0Q9-.js +6 -0
  355. vibe_surf/backend/frontend/assets/circle-arrow-left-DQWeTJLw.js +6 -0
  356. vibe_surf/backend/frontend/assets/circle-arrow-out-down-left-B_oYI2Rn.js +6 -0
  357. vibe_surf/backend/frontend/assets/circle-arrow-out-down-right-BL4vxEs9.js +6 -0
  358. vibe_surf/backend/frontend/assets/circle-arrow-out-up-left-CFi1FNF-.js +6 -0
  359. vibe_surf/backend/frontend/assets/circle-arrow-out-up-right-CmMWk14E.js +6 -0
  360. vibe_surf/backend/frontend/assets/circle-arrow-right-dhHL8jIm.js +6 -0
  361. vibe_surf/backend/frontend/assets/circle-arrow-up-B8XWR9s_.js +6 -0
  362. vibe_surf/backend/frontend/assets/circle-check-CRm9QkNA.js +6 -0
  363. vibe_surf/backend/frontend/assets/circle-check-big-CPPNLArI.js +6 -0
  364. vibe_surf/backend/frontend/assets/circle-chevron-down-Cs4S5V03.js +6 -0
  365. vibe_surf/backend/frontend/assets/circle-chevron-left-V81BDvwB.js +6 -0
  366. vibe_surf/backend/frontend/assets/circle-chevron-right-CRa7Bkcz.js +6 -0
  367. vibe_surf/backend/frontend/assets/circle-chevron-up-FDxLxvSd.js +6 -0
  368. vibe_surf/backend/frontend/assets/circle-dashed-DD55_roy.js +6 -0
  369. vibe_surf/backend/frontend/assets/circle-divide-DKpocsWo.js +6 -0
  370. vibe_surf/backend/frontend/assets/circle-dollar-sign-p7_bVi5m.js +6 -0
  371. vibe_surf/backend/frontend/assets/circle-dot-Be13EypY.js +6 -0
  372. vibe_surf/backend/frontend/assets/circle-dot-dashed-KuVNkxEv.js +6 -0
  373. vibe_surf/backend/frontend/assets/circle-ellipsis-BSLpVL-C.js +6 -0
  374. vibe_surf/backend/frontend/assets/circle-equal-_Mfed9km.js +6 -0
  375. vibe_surf/backend/frontend/assets/circle-fading-arrow-up-D_E3BIXf.js +6 -0
  376. vibe_surf/backend/frontend/assets/circle-fading-plus-5ZA5Je_2.js +6 -0
  377. vibe_surf/backend/frontend/assets/circle-gauge-b41i9Azv.js +6 -0
  378. vibe_surf/backend/frontend/assets/circle-help-BOLgIUsf.js +6 -0
  379. vibe_surf/backend/frontend/assets/circle-minus-C41JxC_E.js +6 -0
  380. vibe_surf/backend/frontend/assets/circle-off-yuGaN1EU.js +6 -0
  381. vibe_surf/backend/frontend/assets/circle-parking-B-DnXhcd.js +6 -0
  382. vibe_surf/backend/frontend/assets/circle-parking-off-DsCM2b8j.js +6 -0
  383. vibe_surf/backend/frontend/assets/circle-pause-Dqufdu9m.js +6 -0
  384. vibe_surf/backend/frontend/assets/circle-percent-Dp8UwPQq.js +6 -0
  385. vibe_surf/backend/frontend/assets/circle-play-N8vi1Pcd.js +6 -0
  386. vibe_surf/backend/frontend/assets/circle-plus-wD1VqIgT.js +6 -0
  387. vibe_surf/backend/frontend/assets/circle-power-DBZAmaYW.js +6 -0
  388. vibe_surf/backend/frontend/assets/circle-slash-2-hdq8_Fp6.js +6 -0
  389. vibe_surf/backend/frontend/assets/circle-slash-CSrHLLP2.js +6 -0
  390. vibe_surf/backend/frontend/assets/circle-small-BQ6lrOIo.js +6 -0
  391. vibe_surf/backend/frontend/assets/circle-stop-xgLQ9Loi.js +6 -0
  392. vibe_surf/backend/frontend/assets/circle-user-CzvrnVH9.js +6 -0
  393. vibe_surf/backend/frontend/assets/circle-user-round-0JhYfAcs.js +6 -0
  394. vibe_surf/backend/frontend/assets/circuit-board-DpN-UUwV.js +6 -0
  395. vibe_surf/backend/frontend/assets/citrus-BGWHfGg3.js +6 -0
  396. vibe_surf/backend/frontend/assets/clapperboard-9m-99Aof.js +6 -0
  397. vibe_surf/backend/frontend/assets/clipboard-C-MVPhAy.js +6 -0
  398. vibe_surf/backend/frontend/assets/clipboard-check-Bonb2WoP.js +6 -0
  399. vibe_surf/backend/frontend/assets/clipboard-copy-CmRHdw5h.js +6 -0
  400. vibe_surf/backend/frontend/assets/clipboard-list-DEof2iPM.js +6 -0
  401. vibe_surf/backend/frontend/assets/clipboard-minus-DN2QuVOG.js +6 -0
  402. vibe_surf/backend/frontend/assets/clipboard-paste-B20nudiB.js +6 -0
  403. vibe_surf/backend/frontend/assets/clipboard-pen-BZJamOnq.js +6 -0
  404. vibe_surf/backend/frontend/assets/clipboard-pen-line-DScYxgpw.js +6 -0
  405. vibe_surf/backend/frontend/assets/clipboard-plus-DJb4TcvR.js +6 -0
  406. vibe_surf/backend/frontend/assets/clipboard-type-DaibEn_w.js +6 -0
  407. vibe_surf/backend/frontend/assets/clipboard-x-CebR2xkR.js +6 -0
  408. vibe_surf/backend/frontend/assets/clock-1-Cz0OEQH3.js +6 -0
  409. vibe_surf/backend/frontend/assets/clock-10-BMLTtzHQ.js +6 -0
  410. vibe_surf/backend/frontend/assets/clock-11-CZ6m52x1.js +6 -0
  411. vibe_surf/backend/frontend/assets/clock-12-BXZWDgbr.js +6 -0
  412. vibe_surf/backend/frontend/assets/clock-2-ElC7DzP5.js +6 -0
  413. vibe_surf/backend/frontend/assets/clock-3-DN86BONK.js +6 -0
  414. vibe_surf/backend/frontend/assets/clock-4-CV9eUVD9.js +6 -0
  415. vibe_surf/backend/frontend/assets/clock-5-DgMTU8BD.js +6 -0
  416. vibe_surf/backend/frontend/assets/clock-6-_RjAiNVz.js +6 -0
  417. vibe_surf/backend/frontend/assets/clock-7-DsWDnhwN.js +6 -0
  418. vibe_surf/backend/frontend/assets/clock-8-CY-eCfWq.js +6 -0
  419. vibe_surf/backend/frontend/assets/clock-9-D4aWNYpk.js +6 -0
  420. vibe_surf/backend/frontend/assets/clock-UtAbEQE0.js +6 -0
  421. vibe_surf/backend/frontend/assets/clock-alert-gi6h-zRT.js +6 -0
  422. vibe_surf/backend/frontend/assets/clock-arrow-down-CC9Qp0ac.js +6 -0
  423. vibe_surf/backend/frontend/assets/clock-arrow-up-Cjt2qN9V.js +6 -0
  424. vibe_surf/backend/frontend/assets/clock-fading-BJp0FFxY.js +6 -0
  425. vibe_surf/backend/frontend/assets/cloud-TYaHXSiL.js +6 -0
  426. vibe_surf/backend/frontend/assets/cloud-alert-Dp4WVua8.js +6 -0
  427. vibe_surf/backend/frontend/assets/cloud-cog-Dlyn4rqA.js +6 -0
  428. vibe_surf/backend/frontend/assets/cloud-download-DH8UN3eX.js +6 -0
  429. vibe_surf/backend/frontend/assets/cloud-drizzle-s8348ic3.js +6 -0
  430. vibe_surf/backend/frontend/assets/cloud-fog-DHRDnzsg.js +6 -0
  431. vibe_surf/backend/frontend/assets/cloud-hail-D7nJGZgB.js +6 -0
  432. vibe_surf/backend/frontend/assets/cloud-lightning-CscbfdPI.js +6 -0
  433. vibe_surf/backend/frontend/assets/cloud-moon-C6897Z5z.js +6 -0
  434. vibe_surf/backend/frontend/assets/cloud-moon-rain-B6pK_auO.js +6 -0
  435. vibe_surf/backend/frontend/assets/cloud-off-1kN_AD0k.js +6 -0
  436. vibe_surf/backend/frontend/assets/cloud-rain-Dj6B4fBD.js +6 -0
  437. vibe_surf/backend/frontend/assets/cloud-rain-wind-BJrdBUd4.js +6 -0
  438. vibe_surf/backend/frontend/assets/cloud-snow-LK6lpCkZ.js +6 -0
  439. vibe_surf/backend/frontend/assets/cloud-sun-CRH8EQEJ.js +6 -0
  440. vibe_surf/backend/frontend/assets/cloud-sun-rain-7IssqnpA.js +6 -0
  441. vibe_surf/backend/frontend/assets/cloud-upload-tI3Dz1zd.js +6 -0
  442. vibe_surf/backend/frontend/assets/cloudy-okUc5uOM.js +6 -0
  443. vibe_surf/backend/frontend/assets/clover-O6CtUOhV.js +6 -0
  444. vibe_surf/backend/frontend/assets/club-SnWEwVMR.js +6 -0
  445. vibe_surf/backend/frontend/assets/code-xml-CYTnIdXN.js +6 -0
  446. vibe_surf/backend/frontend/assets/codepen-UxBTFH8q.js +6 -0
  447. vibe_surf/backend/frontend/assets/codesandbox-CSRpmotF.js +6 -0
  448. vibe_surf/backend/frontend/assets/coffee-BTr4K8Gn.js +6 -0
  449. vibe_surf/backend/frontend/assets/cog-C7RMqAcW.js +6 -0
  450. vibe_surf/backend/frontend/assets/coins-D7gWOtE7.js +6 -0
  451. vibe_surf/backend/frontend/assets/columns-2-WBM3YpNL.js +6 -0
  452. vibe_surf/backend/frontend/assets/columns-3-DyAMu-k8.js +6 -0
  453. vibe_surf/backend/frontend/assets/columns-3-cog-zfUPAOg0.js +6 -0
  454. vibe_surf/backend/frontend/assets/columns-4-Qz-B3Dvq.js +6 -0
  455. vibe_surf/backend/frontend/assets/combine-CLZvnf8j.js +6 -0
  456. vibe_surf/backend/frontend/assets/command-D8ymLYGG.js +6 -0
  457. vibe_surf/backend/frontend/assets/compass-DGYgNSVa.js +6 -0
  458. vibe_surf/backend/frontend/assets/component-CwL9ER1Q.js +6 -0
  459. vibe_surf/backend/frontend/assets/computer-QNTojt_5.js +6 -0
  460. vibe_surf/backend/frontend/assets/concierge-bell-C7jm8QJd.js +6 -0
  461. vibe_surf/backend/frontend/assets/cone-C9TQbkDB.js +6 -0
  462. vibe_surf/backend/frontend/assets/construction-CSyYpaz5.js +6 -0
  463. vibe_surf/backend/frontend/assets/contact-CFldvJVP.js +6 -0
  464. vibe_surf/backend/frontend/assets/contact-round-DA1kjclM.js +6 -0
  465. vibe_surf/backend/frontend/assets/container-BfGJKo0o.js +6 -0
  466. vibe_surf/backend/frontend/assets/contrast-DmYhTvN3.js +6 -0
  467. vibe_surf/backend/frontend/assets/cookie-Cw70purP.js +6 -0
  468. vibe_surf/backend/frontend/assets/cooking-pot-WzjjWZaR.js +6 -0
  469. vibe_surf/backend/frontend/assets/copy-BPjnY3ea.js +6 -0
  470. vibe_surf/backend/frontend/assets/copy-check-B6hqPf9B.js +6 -0
  471. vibe_surf/backend/frontend/assets/copy-minus-DMGhawAT.js +6 -0
  472. vibe_surf/backend/frontend/assets/copy-plus-DcW4_i4R.js +6 -0
  473. vibe_surf/backend/frontend/assets/copy-slash-Cn_xel6o.js +6 -0
  474. vibe_surf/backend/frontend/assets/copy-x-Dmf3jckJ.js +6 -0
  475. vibe_surf/backend/frontend/assets/copyleft-CJDbqV_Y.js +6 -0
  476. vibe_surf/backend/frontend/assets/copyright-Buw-D4Xa.js +6 -0
  477. vibe_surf/backend/frontend/assets/corner-down-left-BhPTW3SL.js +6 -0
  478. vibe_surf/backend/frontend/assets/corner-down-right-B_Md48mW.js +6 -0
  479. vibe_surf/backend/frontend/assets/corner-left-down-DDc0LvYT.js +6 -0
  480. vibe_surf/backend/frontend/assets/corner-left-up-C_EIQYvd.js +6 -0
  481. vibe_surf/backend/frontend/assets/corner-right-down-Bipz7-p6.js +6 -0
  482. vibe_surf/backend/frontend/assets/corner-right-up-euSAC3Mi.js +6 -0
  483. vibe_surf/backend/frontend/assets/corner-up-left-CRvdJT3E.js +6 -0
  484. vibe_surf/backend/frontend/assets/corner-up-right-CCK7dhVV.js +6 -0
  485. vibe_surf/backend/frontend/assets/cpu-DB-52VKi.js +6 -0
  486. vibe_surf/backend/frontend/assets/creative-commons-CXWueat0.js +6 -0
  487. vibe_surf/backend/frontend/assets/credit-card-CR5swmPL.js +6 -0
  488. vibe_surf/backend/frontend/assets/croissant-ClZbIF3L.js +6 -0
  489. vibe_surf/backend/frontend/assets/crop-DSXkvq6D.js +6 -0
  490. vibe_surf/backend/frontend/assets/cross-CkHV6YOi.js +6 -0
  491. vibe_surf/backend/frontend/assets/crosshair-C3tcoYxo.js +6 -0
  492. vibe_surf/backend/frontend/assets/crown-0LB9DCRa.js +6 -0
  493. vibe_surf/backend/frontend/assets/cuboid-CidkVtLJ.js +6 -0
  494. vibe_surf/backend/frontend/assets/cup-soda-DG_5s6Ma.js +6 -0
  495. vibe_surf/backend/frontend/assets/currency-AEQeyk_J.js +6 -0
  496. vibe_surf/backend/frontend/assets/cylinder-Da7lV5Pc.js +6 -0
  497. vibe_surf/backend/frontend/assets/dam-BIFS7P89.js +6 -0
  498. vibe_surf/backend/frontend/assets/database-Dx9euHTJ.js +6 -0
  499. vibe_surf/backend/frontend/assets/database-backup-Bbbt7mXt.js +6 -0
  500. vibe_surf/backend/frontend/assets/database-zap-CJC7IfdF.js +6 -0
  501. vibe_surf/backend/frontend/assets/decimals-arrow-left-BrRd8_vb.js +6 -0
  502. vibe_surf/backend/frontend/assets/decimals-arrow-right-Cglo48c9.js +6 -0
  503. vibe_surf/backend/frontend/assets/delete-C9qTL0sD.js +6 -0
  504. vibe_surf/backend/frontend/assets/dessert-7PTt5JJ0.js +6 -0
  505. vibe_surf/backend/frontend/assets/diameter-oheO2UGD.js +6 -0
  506. vibe_surf/backend/frontend/assets/diamond-DhBpDMNy.js +6 -0
  507. vibe_surf/backend/frontend/assets/diamond-minus-BqTULDvb.js +6 -0
  508. vibe_surf/backend/frontend/assets/diamond-percent-D1Ck8xGc.js +6 -0
  509. vibe_surf/backend/frontend/assets/diamond-plus-DfSf7Xoq.js +6 -0
  510. vibe_surf/backend/frontend/assets/dice-1-CIRG2xPK.js +6 -0
  511. vibe_surf/backend/frontend/assets/dice-2-r7s36USZ.js +6 -0
  512. vibe_surf/backend/frontend/assets/dice-3-Cl7FLe3x.js +6 -0
  513. vibe_surf/backend/frontend/assets/dice-4-D-yJWiku.js +6 -0
  514. vibe_surf/backend/frontend/assets/dice-5-Ci09NYyS.js +6 -0
  515. vibe_surf/backend/frontend/assets/dice-6-CC2FLvLo.js +6 -0
  516. vibe_surf/backend/frontend/assets/dices-CmB6hNUU.js +6 -0
  517. vibe_surf/backend/frontend/assets/diff-oCWjvY-c.js +6 -0
  518. vibe_surf/backend/frontend/assets/disc-2-DpUl7fl6.js +6 -0
  519. vibe_surf/backend/frontend/assets/disc-3-BugUAszu.js +6 -0
  520. vibe_surf/backend/frontend/assets/disc-DUbtGdHe.js +6 -0
  521. vibe_surf/backend/frontend/assets/disc-album-CXJRMctz.js +6 -0
  522. vibe_surf/backend/frontend/assets/divide-CY1K-HT7.js +6 -0
  523. vibe_surf/backend/frontend/assets/dna-CeE8ObeE.js +6 -0
  524. vibe_surf/backend/frontend/assets/dna-off-BviJKT3C.js +6 -0
  525. vibe_surf/backend/frontend/assets/dock-eIe8zGWk.js +6 -0
  526. vibe_surf/backend/frontend/assets/dog-CSlDDqxp.js +6 -0
  527. vibe_surf/backend/frontend/assets/dollar-sign-5U68U397.js +6 -0
  528. vibe_surf/backend/frontend/assets/donut-BeawTrlI.js +6 -0
  529. vibe_surf/backend/frontend/assets/door-closed-CwY8Mg15.js +6 -0
  530. vibe_surf/backend/frontend/assets/door-open-DFgi7N5B.js +6 -0
  531. vibe_surf/backend/frontend/assets/dot-fPF_etdO.js +6 -0
  532. vibe_surf/backend/frontend/assets/download-gSwRRqnX.js +6 -0
  533. vibe_surf/backend/frontend/assets/drafting-compass-Dj_7EFRc.js +6 -0
  534. vibe_surf/backend/frontend/assets/drama-BlDJuZEs.js +6 -0
  535. vibe_surf/backend/frontend/assets/dribbble-C0k3dpAi.js +6 -0
  536. vibe_surf/backend/frontend/assets/drill-COJcLBB4.js +6 -0
  537. vibe_surf/backend/frontend/assets/droplet-5wuLGLgZ.js +6 -0
  538. vibe_surf/backend/frontend/assets/droplet-off-Bra_6Oh9.js +6 -0
  539. vibe_surf/backend/frontend/assets/droplets-BE8PR1pM.js +6 -0
  540. vibe_surf/backend/frontend/assets/drum-DnJ1RUvq.js +6 -0
  541. vibe_surf/backend/frontend/assets/drumstick-JGiBDDwZ.js +6 -0
  542. vibe_surf/backend/frontend/assets/dumbbell-BEtc4tyd.js +6 -0
  543. vibe_surf/backend/frontend/assets/ear-DAqeJjkr.js +6 -0
  544. vibe_surf/backend/frontend/assets/ear-off-BA7gp4ie.js +6 -0
  545. vibe_surf/backend/frontend/assets/earth-CUlUl7Bp.js +6 -0
  546. vibe_surf/backend/frontend/assets/earth-lock-sl59Ywm7.js +6 -0
  547. vibe_surf/backend/frontend/assets/eclipse-DY7fC5N3.js +6 -0
  548. vibe_surf/backend/frontend/assets/egg-DxfY2UB8.js +6 -0
  549. vibe_surf/backend/frontend/assets/egg-fried-D2Eo3APu.js +6 -0
  550. vibe_surf/backend/frontend/assets/egg-off-DqYobjwG.js +6 -0
  551. vibe_surf/backend/frontend/assets/ellipsis-DgOuKLdR.js +6 -0
  552. vibe_surf/backend/frontend/assets/ellipsis-vertical--sr8F_UD.js +6 -0
  553. vibe_surf/backend/frontend/assets/equal-DS1qMZhi.js +6 -0
  554. vibe_surf/backend/frontend/assets/equal-approximately-mgMMBVF_.js +6 -0
  555. vibe_surf/backend/frontend/assets/equal-not-1Alw8lqE.js +6 -0
  556. vibe_surf/backend/frontend/assets/eraser-IStMo8nh.js +6 -0
  557. vibe_surf/backend/frontend/assets/ethernet-port-B6SRY0d8.js +6 -0
  558. vibe_surf/backend/frontend/assets/euro-S1kGUYTE.js +6 -0
  559. vibe_surf/backend/frontend/assets/expand-Cj8IQccm.js +6 -0
  560. vibe_surf/backend/frontend/assets/eye-DrnoCeKD.js +6 -0
  561. vibe_surf/backend/frontend/assets/eye-closed-B0cNIHJN.js +6 -0
  562. vibe_surf/backend/frontend/assets/eye-off-DIIh42Ws.js +6 -0
  563. vibe_surf/backend/frontend/assets/facebook-Df9Fpfnn.js +6 -0
  564. vibe_surf/backend/frontend/assets/factory-BLKvR2Z1.js +6 -0
  565. vibe_surf/backend/frontend/assets/fan-C-xRuGdo.js +6 -0
  566. vibe_surf/backend/frontend/assets/fast-forward-Bae5V83y.js +6 -0
  567. vibe_surf/backend/frontend/assets/feather-DTPfgED2.js +6 -0
  568. vibe_surf/backend/frontend/assets/fence-Mr7VQ0O9.js +6 -0
  569. vibe_surf/backend/frontend/assets/ferris-wheel-D82pDMqi.js +6 -0
  570. vibe_surf/backend/frontend/assets/figma-DBFJo9L2.js +6 -0
  571. vibe_surf/backend/frontend/assets/file-DvuZsaUg.js +6 -0
  572. vibe_surf/backend/frontend/assets/file-archive-DRtB2ivb.js +6 -0
  573. vibe_surf/backend/frontend/assets/file-audio-2-JE5iEkL9.js +6 -0
  574. vibe_surf/backend/frontend/assets/file-audio-C4RwC1BT.js +6 -0
  575. vibe_surf/backend/frontend/assets/file-axis-3d-DQSHzEo4.js +6 -0
  576. vibe_surf/backend/frontend/assets/file-badge-2-P__XKUXn.js +6 -0
  577. vibe_surf/backend/frontend/assets/file-badge-CejYglxU.js +6 -0
  578. vibe_surf/backend/frontend/assets/file-box-CgFMY7Rp.js +6 -0
  579. vibe_surf/backend/frontend/assets/file-chart-column-Bq5PyMwY.js +6 -0
  580. vibe_surf/backend/frontend/assets/file-chart-column-increasing-t_d1wCSV.js +6 -0
  581. vibe_surf/backend/frontend/assets/file-chart-line-Df6iedBR.js +6 -0
  582. vibe_surf/backend/frontend/assets/file-chart-pie-YH23adPM.js +6 -0
  583. vibe_surf/backend/frontend/assets/file-check-2-CKcRkU0L.js +6 -0
  584. vibe_surf/backend/frontend/assets/file-check-BYZznME9.js +6 -0
  585. vibe_surf/backend/frontend/assets/file-clock-8rD4-Bqt.js +6 -0
  586. vibe_surf/backend/frontend/assets/file-code-2-BjV8KhR4.js +6 -0
  587. vibe_surf/backend/frontend/assets/file-code-CXS3YUpM.js +6 -0
  588. vibe_surf/backend/frontend/assets/file-cog-GKLng0Qf.js +6 -0
  589. vibe_surf/backend/frontend/assets/file-diff-B_7HXPkJ.js +6 -0
  590. vibe_surf/backend/frontend/assets/file-digit-AtVulYi7.js +6 -0
  591. vibe_surf/backend/frontend/assets/file-down-CJIG5dHj.js +6 -0
  592. vibe_surf/backend/frontend/assets/file-heart-B8jWzdG5.js +6 -0
  593. vibe_surf/backend/frontend/assets/file-image-CXtDt3N3.js +6 -0
  594. vibe_surf/backend/frontend/assets/file-input-B-0mgcKT.js +6 -0
  595. vibe_surf/backend/frontend/assets/file-json-2-DQHJM93o.js +6 -0
  596. vibe_surf/backend/frontend/assets/file-json-BmrGDLh2.js +6 -0
  597. vibe_surf/backend/frontend/assets/file-key-2-DnpQ1dTj.js +6 -0
  598. vibe_surf/backend/frontend/assets/file-key-D3lJXveQ.js +6 -0
  599. vibe_surf/backend/frontend/assets/file-lock-2-DWdLzoF7.js +6 -0
  600. vibe_surf/backend/frontend/assets/file-lock-ZMZB3U4I.js +6 -0
  601. vibe_surf/backend/frontend/assets/file-minus-2-CsTsio0s.js +6 -0
  602. vibe_surf/backend/frontend/assets/file-minus-CtfRmVme.js +6 -0
  603. vibe_surf/backend/frontend/assets/file-music-DHhVu2aK.js +6 -0
  604. vibe_surf/backend/frontend/assets/file-output-CjQ-FMg0.js +6 -0
  605. vibe_surf/backend/frontend/assets/file-pen-C9S_u4U9.js +6 -0
  606. vibe_surf/backend/frontend/assets/file-pen-line-niZF4quE.js +6 -0
  607. vibe_surf/backend/frontend/assets/file-plus-2-DzIiS2EM.js +6 -0
  608. vibe_surf/backend/frontend/assets/file-plus-Bloe0E45.js +6 -0
  609. vibe_surf/backend/frontend/assets/file-question-BBTjP9h0.js +6 -0
  610. vibe_surf/backend/frontend/assets/file-scan-B3Bn2EZN.js +6 -0
  611. vibe_surf/backend/frontend/assets/file-search-2-DnC8d9OD.js +6 -0
  612. vibe_surf/backend/frontend/assets/file-search-DzPGZllw.js +6 -0
  613. vibe_surf/backend/frontend/assets/file-sliders-BHYXa9jQ.js +6 -0
  614. vibe_surf/backend/frontend/assets/file-spreadsheet-DvjPpK9G.js +6 -0
  615. vibe_surf/backend/frontend/assets/file-stack-yJR4id_3.js +6 -0
  616. vibe_surf/backend/frontend/assets/file-symlink-BWQBdrEp.js +6 -0
  617. vibe_surf/backend/frontend/assets/file-terminal-CvhcKgiv.js +6 -0
  618. vibe_surf/backend/frontend/assets/file-text-tuxzZhRs.js +6 -0
  619. vibe_surf/backend/frontend/assets/file-type-2-Dgantaer.js +6 -0
  620. vibe_surf/backend/frontend/assets/file-type-DfZBPqmH.js +6 -0
  621. vibe_surf/backend/frontend/assets/file-up-GXfnonbH.js +6 -0
  622. vibe_surf/backend/frontend/assets/file-user-N7Fan7ao.js +6 -0
  623. vibe_surf/backend/frontend/assets/file-video-2-B4JBmAcG.js +6 -0
  624. vibe_surf/backend/frontend/assets/file-video-Fsp8g5kU.js +6 -0
  625. vibe_surf/backend/frontend/assets/file-volume-2-Cg1A9z8S.js +6 -0
  626. vibe_surf/backend/frontend/assets/file-volume-xzVZMKW0.js +6 -0
  627. vibe_surf/backend/frontend/assets/file-warning-CS2F3Xr2.js +6 -0
  628. vibe_surf/backend/frontend/assets/file-x-2-BNUgAQH8.js +6 -0
  629. vibe_surf/backend/frontend/assets/file-x-DTK5Zfd-.js +6 -0
  630. vibe_surf/backend/frontend/assets/files-CNx4yvup.js +6 -0
  631. vibe_surf/backend/frontend/assets/film-Dec7cGCL.js +6 -0
  632. vibe_surf/backend/frontend/assets/fingerprint-B_IGMLcp.js +6 -0
  633. vibe_surf/backend/frontend/assets/fire-extinguisher-CjZilrfE.js +6 -0
  634. vibe_surf/backend/frontend/assets/fish-CXs3XpVQ.js +6 -0
  635. vibe_surf/backend/frontend/assets/fish-off-BfYutBG_.js +6 -0
  636. vibe_surf/backend/frontend/assets/fish-symbol-DFoA8GWJ.js +6 -0
  637. vibe_surf/backend/frontend/assets/flag-cx37QYSs.js +6 -0
  638. vibe_surf/backend/frontend/assets/flag-off-DyXYguA1.js +6 -0
  639. vibe_surf/backend/frontend/assets/flag-triangle-left-Dvsg9XUg.js +6 -0
  640. vibe_surf/backend/frontend/assets/flag-triangle-right-CluL18qS.js +6 -0
  641. vibe_surf/backend/frontend/assets/flame-DwjoBypP.js +6 -0
  642. vibe_surf/backend/frontend/assets/flame-kindling-DFbZUxx1.js +6 -0
  643. vibe_surf/backend/frontend/assets/flashlight-eSCrcAU_.js +6 -0
  644. vibe_surf/backend/frontend/assets/flashlight-off-C6ZnSGnv.js +6 -0
  645. vibe_surf/backend/frontend/assets/flask-conical-CqZXJFUg.js +6 -0
  646. vibe_surf/backend/frontend/assets/flask-conical-off-DLnkLxdX.js +6 -0
  647. vibe_surf/backend/frontend/assets/flask-round-Dukzlk12.js +6 -0
  648. vibe_surf/backend/frontend/assets/flip-horizontal-2-DPCHT9Se.js +6 -0
  649. vibe_surf/backend/frontend/assets/flip-horizontal-B27Zih29.js +6 -0
  650. vibe_surf/backend/frontend/assets/flip-vertical-2-BLZ7P_e7.js +6 -0
  651. vibe_surf/backend/frontend/assets/flip-vertical-BKIxHZUr.js +6 -0
  652. vibe_surf/backend/frontend/assets/flower-2-C3USolHO.js +6 -0
  653. vibe_surf/backend/frontend/assets/flower-MuZltbIo.js +6 -0
  654. vibe_surf/backend/frontend/assets/focus-42uZfpdQ.js +6 -0
  655. vibe_surf/backend/frontend/assets/fold-horizontal-Di0iHFys.js +6 -0
  656. vibe_surf/backend/frontend/assets/fold-vertical-DTaNfFgW.js +6 -0
  657. vibe_surf/backend/frontend/assets/folder-CZZJq_yO.js +6 -0
  658. vibe_surf/backend/frontend/assets/folder-archive-B9gmPXfh.js +6 -0
  659. vibe_surf/backend/frontend/assets/folder-check-D8RNiC0h.js +6 -0
  660. vibe_surf/backend/frontend/assets/folder-clock-xJeq54e5.js +6 -0
  661. vibe_surf/backend/frontend/assets/folder-closed-J_oj7irx.js +6 -0
  662. vibe_surf/backend/frontend/assets/folder-code-sdeNF88C.js +6 -0
  663. vibe_surf/backend/frontend/assets/folder-cog-DaxTyB8x.js +6 -0
  664. vibe_surf/backend/frontend/assets/folder-dot-CcddM8ht.js +6 -0
  665. vibe_surf/backend/frontend/assets/folder-down-B6ibnVRy.js +6 -0
  666. vibe_surf/backend/frontend/assets/folder-git-2-C1s592lv.js +6 -0
  667. vibe_surf/backend/frontend/assets/folder-git-DT6ZCpGc.js +6 -0
  668. vibe_surf/backend/frontend/assets/folder-heart-_fpvnFcA.js +6 -0
  669. vibe_surf/backend/frontend/assets/folder-input-OCjNnVk-.js +6 -0
  670. vibe_surf/backend/frontend/assets/folder-kanban-DgbGiYl_.js +6 -0
  671. vibe_surf/backend/frontend/assets/folder-key-6dl4vOVJ.js +6 -0
  672. vibe_surf/backend/frontend/assets/folder-lock-C0FPUNUM.js +6 -0
  673. vibe_surf/backend/frontend/assets/folder-minus-CnnUrRgx.js +6 -0
  674. vibe_surf/backend/frontend/assets/folder-open-B6qoyzo4.js +6 -0
  675. vibe_surf/backend/frontend/assets/folder-open-dot-vcn79EAq.js +6 -0
  676. vibe_surf/backend/frontend/assets/folder-output-aqyTbjq1.js +6 -0
  677. vibe_surf/backend/frontend/assets/folder-pen-DONbvY-M.js +6 -0
  678. vibe_surf/backend/frontend/assets/folder-plus-B1CMWyUH.js +6 -0
  679. vibe_surf/backend/frontend/assets/folder-root-CO03ueMD.js +6 -0
  680. vibe_surf/backend/frontend/assets/folder-search-2-vXSwPDsr.js +6 -0
  681. vibe_surf/backend/frontend/assets/folder-search-CqRRhEYi.js +6 -0
  682. vibe_surf/backend/frontend/assets/folder-symlink-CyG26ZIM.js +6 -0
  683. vibe_surf/backend/frontend/assets/folder-sync-D7kc3Qv9.js +6 -0
  684. vibe_surf/backend/frontend/assets/folder-tree-B_kJAFgg.js +6 -0
  685. vibe_surf/backend/frontend/assets/folder-up-CPWWXuBL.js +6 -0
  686. vibe_surf/backend/frontend/assets/folder-x-BgWBu65a.js +6 -0
  687. vibe_surf/backend/frontend/assets/folders-BqIxqB0_.js +6 -0
  688. vibe_surf/backend/frontend/assets/footprints-U_DOce2V.js +6 -0
  689. vibe_surf/backend/frontend/assets/forklift-HwzIz7aw.js +6 -0
  690. vibe_surf/backend/frontend/assets/forward-DjYLGiCR.js +6 -0
  691. vibe_surf/backend/frontend/assets/frame-poMkf2ta.js +6 -0
  692. vibe_surf/backend/frontend/assets/framer-DNQvf86-.js +6 -0
  693. vibe_surf/backend/frontend/assets/frown-BnHOvtLa.js +6 -0
  694. vibe_surf/backend/frontend/assets/fuel-Cm_lHCJg.js +6 -0
  695. vibe_surf/backend/frontend/assets/fullscreen-COEG0zVc.js +6 -0
  696. vibe_surf/backend/frontend/assets/funnel-BKREn55d.js +6 -0
  697. vibe_surf/backend/frontend/assets/funnel-plus-B1RbFoZ4.js +6 -0
  698. vibe_surf/backend/frontend/assets/funnel-x-z3lufNFJ.js +6 -0
  699. vibe_surf/backend/frontend/assets/gallery-horizontal-CZQKmb1v.js +6 -0
  700. vibe_surf/backend/frontend/assets/gallery-horizontal-end-rt0pNZmd.js +6 -0
  701. vibe_surf/backend/frontend/assets/gallery-thumbnails-BawPOO5E.js +6 -0
  702. vibe_surf/backend/frontend/assets/gallery-vertical-DHlqWz-O.js +6 -0
  703. vibe_surf/backend/frontend/assets/gallery-vertical-end-1UBU5tP0.js +6 -0
  704. vibe_surf/backend/frontend/assets/gamepad-2-CGlBaPJy.js +6 -0
  705. vibe_surf/backend/frontend/assets/gamepad-B7EN8TXy.js +6 -0
  706. vibe_surf/backend/frontend/assets/gauge-CkJyJpYu.js +6 -0
  707. vibe_surf/backend/frontend/assets/gavel-BXOFsfyc.js +6 -0
  708. vibe_surf/backend/frontend/assets/gem-DJaoJhpp.js +6 -0
  709. vibe_surf/backend/frontend/assets/ghost-5jDlD5mv.js +6 -0
  710. vibe_surf/backend/frontend/assets/gift-DTuN9n1d.js +6 -0
  711. vibe_surf/backend/frontend/assets/git-branch-CAxiUjEF.js +6 -0
  712. vibe_surf/backend/frontend/assets/git-branch-plus-BcouIUD3.js +6 -0
  713. vibe_surf/backend/frontend/assets/git-commit-horizontal-DqOnbX0A.js +6 -0
  714. vibe_surf/backend/frontend/assets/git-commit-vertical-DEAmtVm7.js +6 -0
  715. vibe_surf/backend/frontend/assets/git-compare-8F4A8hf8.js +6 -0
  716. vibe_surf/backend/frontend/assets/git-compare-arrows-BCgbMQBd.js +6 -0
  717. vibe_surf/backend/frontend/assets/git-fork-UmnYpjac.js +6 -0
  718. vibe_surf/backend/frontend/assets/git-graph-MIRVcG3s.js +6 -0
  719. vibe_surf/backend/frontend/assets/git-merge-1ccPZB0a.js +6 -0
  720. vibe_surf/backend/frontend/assets/git-pull-request-BAmJjoSf.js +6 -0
  721. vibe_surf/backend/frontend/assets/git-pull-request-arrow-hDbG9s0T.js +6 -0
  722. vibe_surf/backend/frontend/assets/git-pull-request-closed-DZVF4_75.js +6 -0
  723. vibe_surf/backend/frontend/assets/git-pull-request-create-B_ikGAua.js +6 -0
  724. vibe_surf/backend/frontend/assets/git-pull-request-create-arrow-OlDcvuiA.js +6 -0
  725. vibe_surf/backend/frontend/assets/git-pull-request-draft-CfvzgQz4.js +6 -0
  726. vibe_surf/backend/frontend/assets/github-DlTWmBTt.js +6 -0
  727. vibe_surf/backend/frontend/assets/gitlab-DquWeR50.js +6 -0
  728. vibe_surf/backend/frontend/assets/glass-water-yuqxiPgK.js +6 -0
  729. vibe_surf/backend/frontend/assets/glasses-DPTQtusr.js +6 -0
  730. vibe_surf/backend/frontend/assets/globe-D1X1kv-g.js +6 -0
  731. vibe_surf/backend/frontend/assets/globe-lock-miWknHfI.js +6 -0
  732. vibe_surf/backend/frontend/assets/goal-BY1nb-LN.js +6 -0
  733. vibe_surf/backend/frontend/assets/grab-CnmpLOMH.js +6 -0
  734. vibe_surf/backend/frontend/assets/graduation-cap-CcH89wnV.js +6 -0
  735. vibe_surf/backend/frontend/assets/grape-CIiMFgS_.js +6 -0
  736. vibe_surf/backend/frontend/assets/grid-2x2-DyXR6Owe.js +6 -0
  737. vibe_surf/backend/frontend/assets/grid-2x2-check-D2GIuWpl.js +6 -0
  738. vibe_surf/backend/frontend/assets/grid-2x2-plus-D89B7CNh.js +6 -0
  739. vibe_surf/backend/frontend/assets/grid-2x2-x-CMeekq27.js +6 -0
  740. vibe_surf/backend/frontend/assets/grid-3x3-qKjElxaz.js +6 -0
  741. vibe_surf/backend/frontend/assets/grip--SsS48b-.js +6 -0
  742. vibe_surf/backend/frontend/assets/grip-horizontal-DapWkFjo.js +6 -0
  743. vibe_surf/backend/frontend/assets/grip-vertical-vn3rXQIt.js +6 -0
  744. vibe_surf/backend/frontend/assets/group-XhzCMXdw.js +6 -0
  745. vibe_surf/backend/frontend/assets/guitar-But8OLt2.js +6 -0
  746. vibe_surf/backend/frontend/assets/ham-_9G65W_I.js +6 -0
  747. vibe_surf/backend/frontend/assets/hammer-C2AZqVnX.js +6 -0
  748. vibe_surf/backend/frontend/assets/hand-DXuxSiOo.js +6 -0
  749. vibe_surf/backend/frontend/assets/hand-coins-mma7__lh.js +6 -0
  750. vibe_surf/backend/frontend/assets/hand-heart-DNtq1bnS.js +6 -0
  751. vibe_surf/backend/frontend/assets/hand-helping-Cdw7lKNu.js +6 -0
  752. vibe_surf/backend/frontend/assets/hand-metal-CcoWdRUV.js +6 -0
  753. vibe_surf/backend/frontend/assets/hand-platter-DoQTVTFx.js +6 -0
  754. vibe_surf/backend/frontend/assets/handshake-CJyspjIU.js +6 -0
  755. vibe_surf/backend/frontend/assets/hard-drive-ZduQuJtY.js +6 -0
  756. vibe_surf/backend/frontend/assets/hard-drive-download-D_hUh11c.js +6 -0
  757. vibe_surf/backend/frontend/assets/hard-drive-upload-BBPLIyZo.js +6 -0
  758. vibe_surf/backend/frontend/assets/hard-hat-OlmGevRI.js +6 -0
  759. vibe_surf/backend/frontend/assets/hash-COjLjaYu.js +6 -0
  760. vibe_surf/backend/frontend/assets/haze-Vf7OsAWn.js +6 -0
  761. vibe_surf/backend/frontend/assets/hdmi-port-B3C9bYX1.js +6 -0
  762. vibe_surf/backend/frontend/assets/heading-1-Dyyb72R2.js +6 -0
  763. vibe_surf/backend/frontend/assets/heading-2-ClF7vOi5.js +6 -0
  764. vibe_surf/backend/frontend/assets/heading-3-DPRazJfc.js +6 -0
  765. vibe_surf/backend/frontend/assets/heading-4-3e6Zii5g.js +6 -0
  766. vibe_surf/backend/frontend/assets/heading-5-GEVsfo30.js +6 -0
  767. vibe_surf/backend/frontend/assets/heading-6-CtX8dWYy.js +6 -0
  768. vibe_surf/backend/frontend/assets/heading-C_c5dBtC.js +6 -0
  769. vibe_surf/backend/frontend/assets/headphone-off-VkuNIw42.js +6 -0
  770. vibe_surf/backend/frontend/assets/headphones-BdMKOmhg.js +6 -0
  771. vibe_surf/backend/frontend/assets/headset-CGOllUmf.js +6 -0
  772. vibe_surf/backend/frontend/assets/heart-J_dfRIZ7.js +6 -0
  773. vibe_surf/backend/frontend/assets/heart-crack-BDNXXAjd.js +6 -0
  774. vibe_surf/backend/frontend/assets/heart-handshake-BhQLIVaj.js +6 -0
  775. vibe_surf/backend/frontend/assets/heart-minus-Dgexi3zQ.js +6 -0
  776. vibe_surf/backend/frontend/assets/heart-off-DF68jDRm.js +6 -0
  777. vibe_surf/backend/frontend/assets/heart-plus-D3LX6R_l.js +6 -0
  778. vibe_surf/backend/frontend/assets/heart-pulse-DnwkpqSJ.js +6 -0
  779. vibe_surf/backend/frontend/assets/heater-Bilq_TPS.js +6 -0
  780. vibe_surf/backend/frontend/assets/hexagon-BEvfIIaV.js +6 -0
  781. vibe_surf/backend/frontend/assets/highlighter-CNa8UVQD.js +6 -0
  782. vibe_surf/backend/frontend/assets/history-BggOc8wP.js +6 -0
  783. vibe_surf/backend/frontend/assets/hop-BCUHAdeR.js +6 -0
  784. vibe_surf/backend/frontend/assets/hop-off-B5f9Fr80.js +6 -0
  785. vibe_surf/backend/frontend/assets/hospital-Dk0tqXu9.js +6 -0
  786. vibe_surf/backend/frontend/assets/hotel-CXl-yW7B.js +6 -0
  787. vibe_surf/backend/frontend/assets/hourglass-DSRXQwTc.js +6 -0
  788. vibe_surf/backend/frontend/assets/house-Bhp2WF4v.js +6 -0
  789. vibe_surf/backend/frontend/assets/house-plug-DXm5j2Xq.js +6 -0
  790. vibe_surf/backend/frontend/assets/house-plus-KMp_x4hA.js +6 -0
  791. vibe_surf/backend/frontend/assets/house-wifi-Ccrar5-8.js +6 -0
  792. vibe_surf/backend/frontend/assets/ice-cream-bowl-j3qet3-o.js +6 -0
  793. vibe_surf/backend/frontend/assets/ice-cream-cone-XtpMBOSu.js +6 -0
  794. vibe_surf/backend/frontend/assets/id-card-BqzQOrR_.js +6 -0
  795. vibe_surf/backend/frontend/assets/image-B3lEwdvu.js +6 -0
  796. vibe_surf/backend/frontend/assets/image-down-sVdzbwfm.js +6 -0
  797. vibe_surf/backend/frontend/assets/image-minus-BdddBiyu.js +6 -0
  798. vibe_surf/backend/frontend/assets/image-off-CCZ9kVWH.js +6 -0
  799. vibe_surf/backend/frontend/assets/image-play-LNuKchCO.js +6 -0
  800. vibe_surf/backend/frontend/assets/image-plus-B4GTKJ6Z.js +6 -0
  801. vibe_surf/backend/frontend/assets/image-up-BfxmsdpY.js +6 -0
  802. vibe_surf/backend/frontend/assets/image-upscale-CexWZ50d.js +6 -0
  803. vibe_surf/backend/frontend/assets/images-C8Wp1eOg.js +6 -0
  804. vibe_surf/backend/frontend/assets/import-ec27SWYy.js +6 -0
  805. vibe_surf/backend/frontend/assets/inbox-YvwvpFKi.js +6 -0
  806. vibe_surf/backend/frontend/assets/indent-decrease-Dp0BVsoQ.js +6 -0
  807. vibe_surf/backend/frontend/assets/indent-increase-D3BuYj2n.js +6 -0
  808. vibe_surf/backend/frontend/assets/index-2CcQW4OZ.js +13 -0
  809. vibe_surf/backend/frontend/assets/index-4vq5awkV.js +1 -0
  810. vibe_surf/backend/frontend/assets/index-5ZZlgfo-.js +1 -0
  811. vibe_surf/backend/frontend/assets/index-6dxAUV6Y.js +1 -0
  812. vibe_surf/backend/frontend/assets/index-AzcZQWVx.js +2723 -0
  813. vibe_surf/backend/frontend/assets/index-B-IDFsd0.js +1 -0
  814. vibe_surf/backend/frontend/assets/index-B-ohDVDe.js +1 -0
  815. vibe_surf/backend/frontend/assets/index-B1Q4y1qa.js +1 -0
  816. vibe_surf/backend/frontend/assets/index-B1SY6fah.js +1 -0
  817. vibe_surf/backend/frontend/assets/index-B2ljcLYu.js +1 -0
  818. vibe_surf/backend/frontend/assets/index-B4-H1yfm.js +108 -0
  819. vibe_surf/backend/frontend/assets/index-B6MKztQU.js +1 -0
  820. vibe_surf/backend/frontend/assets/index-B7i2Q-3O.js +1 -0
  821. vibe_surf/backend/frontend/assets/index-B9Wx-Ii0.js +1 -0
  822. vibe_surf/backend/frontend/assets/index-BFzpTaXY.js +1 -0
  823. vibe_surf/backend/frontend/assets/index-BIBNbmyC.js +1 -0
  824. vibe_surf/backend/frontend/assets/index-BL_hoToU.js +1 -0
  825. vibe_surf/backend/frontend/assets/index-BOeI-zQ9.js +1 -0
  826. vibe_surf/backend/frontend/assets/index-BPEpFAuc.js +1 -0
  827. vibe_surf/backend/frontend/assets/index-BQ1eB4fC.js +1 -0
  828. vibe_surf/backend/frontend/assets/index-BQ2H2d3f.js +1 -0
  829. vibe_surf/backend/frontend/assets/index-BR-8IPV4.js +205 -0
  830. vibe_surf/backend/frontend/assets/index-BV8ArFsA.js +1 -0
  831. vibe_surf/backend/frontend/assets/index-BWwASCq5.js +1 -0
  832. vibe_surf/backend/frontend/assets/index-BWwglY3I.js +1 -0
  833. vibe_surf/backend/frontend/assets/index-B_Qz_foX.js +1 -0
  834. vibe_surf/backend/frontend/assets/index-BaoW7GZH.js +1 -0
  835. vibe_surf/backend/frontend/assets/index-BcrHz-y8.js +1 -0
  836. vibe_surf/backend/frontend/assets/index-BdSzkc1f.js +20 -0
  837. vibe_surf/backend/frontend/assets/index-BeLkvqxv.js +1 -0
  838. vibe_surf/backend/frontend/assets/index-Beq_etUM.js +1 -0
  839. vibe_surf/backend/frontend/assets/index-BgzQso9y.js +1 -0
  840. vibe_surf/backend/frontend/assets/index-BiNrEY13.js +1 -0
  841. vibe_surf/backend/frontend/assets/index-Bja3ZEZo.js +1 -0
  842. vibe_surf/backend/frontend/assets/index-BmcD7XCM.js +1 -0
  843. vibe_surf/backend/frontend/assets/index-BmnwJzsA.js +1 -0
  844. vibe_surf/backend/frontend/assets/index-BssAenIo.js +1 -0
  845. vibe_surf/backend/frontend/assets/index-BvEZ1ywS.js +1 -0
  846. vibe_surf/backend/frontend/assets/index-BwO1owi8.js +1 -0
  847. vibe_surf/backend/frontend/assets/index-BwXsJbuu.js +21 -0
  848. vibe_surf/backend/frontend/assets/index-BwlG2DdK.js +1 -0
  849. vibe_surf/backend/frontend/assets/index-BzjC6B6I.js +1 -0
  850. vibe_surf/backend/frontend/assets/index-C0BOag_5.js +1 -0
  851. vibe_surf/backend/frontend/assets/index-C0EsaEHC.js +1 -0
  852. vibe_surf/backend/frontend/assets/index-C0IGIaTE.js +1 -0
  853. vibe_surf/backend/frontend/assets/index-C0IdY_9F.js +1 -0
  854. vibe_surf/backend/frontend/assets/index-C1DABLwl.js +1 -0
  855. vibe_surf/backend/frontend/assets/index-C1JE4AZB.js +1 -0
  856. vibe_surf/backend/frontend/assets/index-C1Rkl2Ur.js +1 -0
  857. vibe_surf/backend/frontend/assets/index-C2YWu5t8.js +1 -0
  858. vibe_surf/backend/frontend/assets/index-C2_4AcrM.js +1 -0
  859. vibe_surf/backend/frontend/assets/index-C48IE5LT.js +1 -0
  860. vibe_surf/backend/frontend/assets/index-C4JqQnzd.js +1 -0
  861. vibe_surf/backend/frontend/assets/index-C5QqjjEO.js +1 -0
  862. vibe_surf/backend/frontend/assets/index-C6ZyrgxW.js +1 -0
  863. vibe_surf/backend/frontend/assets/index-C9n9R8Ob.js +1 -0
  864. vibe_surf/backend/frontend/assets/index-CATPt8gz.js +1 -0
  865. vibe_surf/backend/frontend/assets/index-CAc6KlCl.js +1 -0
  866. vibe_surf/backend/frontend/assets/index-CAeE91z_.js +1 -0
  867. vibe_surf/backend/frontend/assets/index-CBLrD5S8.js +1 -0
  868. vibe_surf/backend/frontend/assets/index-CEx7_efn.js +1 -0
  869. vibe_surf/backend/frontend/assets/index-CGNwvjd6.js +1 -0
  870. vibe_surf/backend/frontend/assets/index-CJIkyYuu.js +1 -0
  871. vibe_surf/backend/frontend/assets/index-CL8YNknR.js +1 -0
  872. vibe_surf/backend/frontend/assets/index-CQ4c4zmh.js +1 -0
  873. vibe_surf/backend/frontend/assets/index-CSKpbeRU.js +1 -0
  874. vibe_surf/backend/frontend/assets/index-CTJUto70.js +1 -0
  875. vibe_surf/backend/frontend/assets/index-CUm8t_3-.js +1 -0
  876. vibe_surf/backend/frontend/assets/index-CWaG8YQf.js +1 -0
  877. vibe_surf/backend/frontend/assets/index-CWqCL2_S.js +1 -0
  878. vibe_surf/backend/frontend/assets/index-CZKjLvxC.js +1 -0
  879. vibe_surf/backend/frontend/assets/index-C_a_gjJ3.js +7382 -0
  880. vibe_surf/backend/frontend/assets/index-C_gjztJA.js +1 -0
  881. vibe_surf/backend/frontend/assets/index-Cd394DZ3.js +1 -0
  882. vibe_surf/backend/frontend/assets/index-Ch_ENQTO.js +1 -0
  883. vibe_surf/backend/frontend/assets/index-CjDauRtw.js +1 -0
  884. vibe_surf/backend/frontend/assets/index-Cjsyudia.js +1 -0
  885. vibe_surf/backend/frontend/assets/index-Ck0Rk7OE.js +1 -0
  886. vibe_surf/backend/frontend/assets/index-Ct1jT_zG.js +1 -0
  887. vibe_surf/backend/frontend/assets/index-CtZOHuJR.js +1 -0
  888. vibe_surf/backend/frontend/assets/index-CwylYZIy.js +1 -0
  889. vibe_surf/backend/frontend/assets/index-CxGAIJCD.js +1 -0
  890. vibe_surf/backend/frontend/assets/index-D-6VXnmQ.js +1 -0
  891. vibe_surf/backend/frontend/assets/index-D-_pq5D8.js +1 -0
  892. vibe_surf/backend/frontend/assets/index-D-oTsuqV.js +1 -0
  893. vibe_surf/backend/frontend/assets/index-D8iHrvl3.js +1 -0
  894. vibe_surf/backend/frontend/assets/index-DDYB0tod.js +1 -0
  895. vibe_surf/backend/frontend/assets/index-DDtHdtyM.js +1 -0
  896. vibe_surf/backend/frontend/assets/index-DH3R0iod.js +1 -0
  897. vibe_surf/backend/frontend/assets/index-DJAmqieX.js +1 -0
  898. vibe_surf/backend/frontend/assets/index-DJYhOcBD.js +1 -0
  899. vibe_surf/backend/frontend/assets/index-DQKxDe4Q.js +1 -0
  900. vibe_surf/backend/frontend/assets/index-DS9glxiF.js +1 -0
  901. vibe_surf/backend/frontend/assets/index-DUjF6qus.js +2 -0
  902. vibe_surf/backend/frontend/assets/index-DXYmUzC_.css +1 -0
  903. vibe_surf/backend/frontend/assets/index-D_wRbh5r.js +1 -0
  904. vibe_surf/backend/frontend/assets/index-Db4BfmcT.js +1 -0
  905. vibe_surf/backend/frontend/assets/index-DfZGZYcK.js +1 -0
  906. vibe_surf/backend/frontend/assets/index-DlDGYPf2.js +1 -0
  907. vibe_surf/backend/frontend/assets/index-DlFy5Gok.js +1 -0
  908. vibe_surf/backend/frontend/assets/index-DmVpDlko.js +1 -0
  909. vibe_surf/backend/frontend/assets/index-Dpc9wHta.js +1 -0
  910. vibe_surf/backend/frontend/assets/index-DvcAIETO.js +1 -0
  911. vibe_surf/backend/frontend/assets/index-Dwi-X1Od.js +1 -0
  912. vibe_surf/backend/frontend/assets/index-FMPFv3Wf.js +1 -0
  913. vibe_surf/backend/frontend/assets/index-H3Uskc2o.js +1 -0
  914. vibe_surf/backend/frontend/assets/index-JWfrTs_0.js +1 -0
  915. vibe_surf/backend/frontend/assets/index-LX3KOMfj.js +1 -0
  916. vibe_surf/backend/frontend/assets/index-LXWgTVf4.js +1 -0
  917. vibe_surf/backend/frontend/assets/index-WJ6PviAq.js +1 -0
  918. vibe_surf/backend/frontend/assets/index-WrqFIXAC.js +1 -0
  919. vibe_surf/backend/frontend/assets/index-Yoj1a8xs.js +1 -0
  920. vibe_surf/backend/frontend/assets/index-YxTPhodS.js +1 -0
  921. vibe_surf/backend/frontend/assets/index-_8LB3oNa.js +1 -0
  922. vibe_surf/backend/frontend/assets/index-bNhROe-x.js +1 -0
  923. vibe_surf/backend/frontend/assets/index-cQAtXO5d.js +1 -0
  924. vibe_surf/backend/frontend/assets/index-hIdlDvEv.js +1 -0
  925. vibe_surf/backend/frontend/assets/index-hxJwU1-s.js +1 -0
  926. vibe_surf/backend/frontend/assets/index-iA_X3O5r.js +1 -0
  927. vibe_surf/backend/frontend/assets/index-iW93REva.js +1 -0
  928. vibe_surf/backend/frontend/assets/index-k2RdCBHb.js +1 -0
  929. vibe_surf/backend/frontend/assets/index-kJKg9EzG.js +1 -0
  930. vibe_surf/backend/frontend/assets/index-mX6ATl2n.js +1 -0
  931. vibe_surf/backend/frontend/assets/index-muCxPdjC.js +1 -0
  932. vibe_surf/backend/frontend/assets/index-nd1f74Wi.js +1 -0
  933. vibe_surf/backend/frontend/assets/index-qGbEX4n3.js +1 -0
  934. vibe_surf/backend/frontend/assets/index-qOd-CLaR.js +1 -0
  935. vibe_surf/backend/frontend/assets/index-sguRseYw.js +1 -0
  936. vibe_surf/backend/frontend/assets/index-vd7ILFrg.js +1 -0
  937. vibe_surf/backend/frontend/assets/index-we6mCAhv.js +1 -0
  938. vibe_surf/backend/frontend/assets/index-x0VA7yzX.js +1 -0
  939. vibe_surf/backend/frontend/assets/index-yCVeNkNd.js +1 -0
  940. vibe_surf/backend/frontend/assets/indian-rupee-ClaZI0Dh.js +6 -0
  941. vibe_surf/backend/frontend/assets/infinity-LKjcIaZa.js +6 -0
  942. vibe_surf/backend/frontend/assets/info-DFBdB7_c.js +6 -0
  943. vibe_surf/backend/frontend/assets/inspection-panel-DGzE6245.js +6 -0
  944. vibe_surf/backend/frontend/assets/instagram-CJj5AWOV.js +6 -0
  945. vibe_surf/backend/frontend/assets/italic-CKFB3the.js +6 -0
  946. vibe_surf/backend/frontend/assets/iteration-ccw-YnfylsKm.js +6 -0
  947. vibe_surf/backend/frontend/assets/iteration-cw-DTHRwCcy.js +6 -0
  948. vibe_surf/backend/frontend/assets/japanese-yen-BG_Inyh_.js +6 -0
  949. vibe_surf/backend/frontend/assets/joystick-bJVSvZlL.js +6 -0
  950. vibe_surf/backend/frontend/assets/kanban-KP-K8pC9.js +6 -0
  951. vibe_surf/backend/frontend/assets/key-CNaiqe5q.js +6 -0
  952. vibe_surf/backend/frontend/assets/key-round-RTYFDTCa.js +6 -0
  953. vibe_surf/backend/frontend/assets/key-square-C7EKR-zE.js +6 -0
  954. vibe_surf/backend/frontend/assets/keyboard-DaM0Dl19.js +6 -0
  955. vibe_surf/backend/frontend/assets/keyboard-music-CzJZiHzS.js +6 -0
  956. vibe_surf/backend/frontend/assets/keyboard-off-C9Jl7GZs.js +6 -0
  957. vibe_surf/backend/frontend/assets/lamp-DK_3DJnO.js +6 -0
  958. vibe_surf/backend/frontend/assets/lamp-ceiling-B8sGjZ8c.js +6 -0
  959. vibe_surf/backend/frontend/assets/lamp-desk-CxWpiNas.js +6 -0
  960. vibe_surf/backend/frontend/assets/lamp-floor-EUFzRKf7.js +6 -0
  961. vibe_surf/backend/frontend/assets/lamp-wall-down-BV84JTWM.js +6 -0
  962. vibe_surf/backend/frontend/assets/lamp-wall-up-BqpaYZN9.js +6 -0
  963. vibe_surf/backend/frontend/assets/land-plot-Dly_Debw.js +6 -0
  964. vibe_surf/backend/frontend/assets/landmark-W6MewilS.js +6 -0
  965. vibe_surf/backend/frontend/assets/languages-BQghN4Gu.js +6 -0
  966. vibe_surf/backend/frontend/assets/laptop-BysYcdO1.js +6 -0
  967. vibe_surf/backend/frontend/assets/laptop-minimal-CUViKl_u.js +6 -0
  968. vibe_surf/backend/frontend/assets/laptop-minimal-check-BZNY8l54.js +6 -0
  969. vibe_surf/backend/frontend/assets/lasso-CBTyEbGH.js +6 -0
  970. vibe_surf/backend/frontend/assets/lasso-select-D9j71vtb.js +6 -0
  971. vibe_surf/backend/frontend/assets/laugh-fkxJEAC6.js +6 -0
  972. vibe_surf/backend/frontend/assets/layers-2-B3mnroGJ.js +6 -0
  973. vibe_surf/backend/frontend/assets/layers-CLO8Qj7V.js +6 -0
  974. vibe_surf/backend/frontend/assets/layout-dashboard-BCgC4-j3.js +6 -0
  975. vibe_surf/backend/frontend/assets/layout-grid-DQlh6Dv5.js +6 -0
  976. vibe_surf/backend/frontend/assets/layout-list-BK2Y57B-.js +6 -0
  977. vibe_surf/backend/frontend/assets/layout-panel-left-BzdjKizu.js +6 -0
  978. vibe_surf/backend/frontend/assets/layout-panel-top-CmMnqmez.js +6 -0
  979. vibe_surf/backend/frontend/assets/layout-template-DkuzhO5B.js +6 -0
  980. vibe_surf/backend/frontend/assets/lazyIconImports-Cbxc-ykm.js +2 -0
  981. vibe_surf/backend/frontend/assets/leaf-D1Z4WxA8.js +6 -0
  982. vibe_surf/backend/frontend/assets/leafy-green-C7IHTNVi.js +6 -0
  983. vibe_surf/backend/frontend/assets/lectern-BpswhiFV.js +6 -0
  984. vibe_surf/backend/frontend/assets/letter-text-B_mZgzJ7.js +6 -0
  985. vibe_surf/backend/frontend/assets/library-BEQ0EBja.js +6 -0
  986. vibe_surf/backend/frontend/assets/library-big-C32jLDwT.js +6 -0
  987. vibe_surf/backend/frontend/assets/life-buoy-AWdXr4CQ.js +6 -0
  988. vibe_surf/backend/frontend/assets/ligature-DRsGqV7j.js +6 -0
  989. vibe_surf/backend/frontend/assets/lightbulb-D3KZbCQp.js +6 -0
  990. vibe_surf/backend/frontend/assets/lightbulb-off-iSDmy8d6.js +6 -0
  991. vibe_surf/backend/frontend/assets/link-2-CCZYGxDI.js +6 -0
  992. vibe_surf/backend/frontend/assets/link-2-off-BWpEKUCS.js +6 -0
  993. vibe_surf/backend/frontend/assets/link-Diw-YZ8t.js +6 -0
  994. vibe_surf/backend/frontend/assets/linkedin-CExn9EK5.js +6 -0
  995. vibe_surf/backend/frontend/assets/list-CB9zDbEv.js +6 -0
  996. vibe_surf/backend/frontend/assets/list-check-CCdijvLD.js +6 -0
  997. vibe_surf/backend/frontend/assets/list-checks-B1EQ8oeV.js +6 -0
  998. vibe_surf/backend/frontend/assets/list-collapse-B_Nyhn3U.js +6 -0
  999. vibe_surf/backend/frontend/assets/list-end-BRGFPR4T.js +6 -0
  1000. vibe_surf/backend/frontend/assets/list-filter-DR4JqPVX.js +6 -0
  1001. vibe_surf/backend/frontend/assets/list-filter-plus-Q7j2JYzP.js +6 -0
  1002. vibe_surf/backend/frontend/assets/list-minus-DrLtfmEG.js +6 -0
  1003. vibe_surf/backend/frontend/assets/list-music-C6MOQHoL.js +6 -0
  1004. vibe_surf/backend/frontend/assets/list-ordered-Db8L0lqU.js +6 -0
  1005. vibe_surf/backend/frontend/assets/list-plus-C1dade1Z.js +6 -0
  1006. vibe_surf/backend/frontend/assets/list-restart-CyRkF6Xo.js +6 -0
  1007. vibe_surf/backend/frontend/assets/list-start-CAn16QHF.js +6 -0
  1008. vibe_surf/backend/frontend/assets/list-todo-giJ3EaBY.js +6 -0
  1009. vibe_surf/backend/frontend/assets/list-tree-ZTTp4tz8.js +6 -0
  1010. vibe_surf/backend/frontend/assets/list-video-SNqnTTmu.js +6 -0
  1011. vibe_surf/backend/frontend/assets/list-x-XeDairuR.js +6 -0
  1012. vibe_surf/backend/frontend/assets/loader-RYX0GikH.js +6 -0
  1013. vibe_surf/backend/frontend/assets/loader-circle-CjMVhyrE.js +6 -0
  1014. vibe_surf/backend/frontend/assets/loader-pinwheel-Dv08mzUX.js +6 -0
  1015. vibe_surf/backend/frontend/assets/locate-DcqAXVyu.js +6 -0
  1016. vibe_surf/backend/frontend/assets/locate-fixed-BgaqK3FM.js +6 -0
  1017. vibe_surf/backend/frontend/assets/locate-off-1UN8A6fK.js +6 -0
  1018. vibe_surf/backend/frontend/assets/location-edit-DFbMZW6i.js +6 -0
  1019. vibe_surf/backend/frontend/assets/lock-DWN4LH3Q.js +6 -0
  1020. vibe_surf/backend/frontend/assets/lock-keyhole-aeS26SmF.js +6 -0
  1021. vibe_surf/backend/frontend/assets/lock-keyhole-open-CoXzZLpr.js +6 -0
  1022. vibe_surf/backend/frontend/assets/lock-open-CBPubokC.js +6 -0
  1023. vibe_surf/backend/frontend/assets/log-in-BW8pmSIu.js +6 -0
  1024. vibe_surf/backend/frontend/assets/log-out-D-d0DczA.js +6 -0
  1025. vibe_surf/backend/frontend/assets/logo_dark-_nccwgMn.png +0 -0
  1026. vibe_surf/backend/frontend/assets/logo_light-DKZjS8CD.png +0 -0
  1027. vibe_surf/backend/frontend/assets/logs-AXuVwIE_.js +6 -0
  1028. vibe_surf/backend/frontend/assets/lollipop-CxugcHkj.js +6 -0
  1029. vibe_surf/backend/frontend/assets/luggage-CFtS088O.js +6 -0
  1030. vibe_surf/backend/frontend/assets/magnet-BpIqKX0D.js +6 -0
  1031. vibe_surf/backend/frontend/assets/mail-1Br8NAMK.js +6 -0
  1032. vibe_surf/backend/frontend/assets/mail-check-DFwD0fvI.js +6 -0
  1033. vibe_surf/backend/frontend/assets/mail-minus-B_KovqmT.js +6 -0
  1034. vibe_surf/backend/frontend/assets/mail-open-VEmMVybi.js +6 -0
  1035. vibe_surf/backend/frontend/assets/mail-plus-D-1Wacj7.js +6 -0
  1036. vibe_surf/backend/frontend/assets/mail-question-CJK96wre.js +6 -0
  1037. vibe_surf/backend/frontend/assets/mail-search-Du6F72Wj.js +6 -0
  1038. vibe_surf/backend/frontend/assets/mail-warning-BI87_kvG.js +6 -0
  1039. vibe_surf/backend/frontend/assets/mail-x-DU415vbZ.js +6 -0
  1040. vibe_surf/backend/frontend/assets/mailbox-CMHDAMVZ.js +6 -0
  1041. vibe_surf/backend/frontend/assets/mails-CUDj41Cn.js +6 -0
  1042. vibe_surf/backend/frontend/assets/map-D2I0g3OZ.js +6 -0
  1043. vibe_surf/backend/frontend/assets/map-pin-CiM6iB2r.js +6 -0
  1044. vibe_surf/backend/frontend/assets/map-pin-check-BQWCC6Uv.js +6 -0
  1045. vibe_surf/backend/frontend/assets/map-pin-check-inside-CVhhgPHY.js +6 -0
  1046. vibe_surf/backend/frontend/assets/map-pin-house-CXbXX8w-.js +6 -0
  1047. vibe_surf/backend/frontend/assets/map-pin-minus-D0dRHvgd.js +6 -0
  1048. vibe_surf/backend/frontend/assets/map-pin-minus-inside-DGpPZYAi.js +6 -0
  1049. vibe_surf/backend/frontend/assets/map-pin-off-EbFPnlZq.js +6 -0
  1050. vibe_surf/backend/frontend/assets/map-pin-plus-BLD0VcG5.js +6 -0
  1051. vibe_surf/backend/frontend/assets/map-pin-plus-inside-CapcP3Yk.js +6 -0
  1052. vibe_surf/backend/frontend/assets/map-pin-x-DrNWALEC.js +6 -0
  1053. vibe_surf/backend/frontend/assets/map-pin-x-inside-9DqM8z-J.js +6 -0
  1054. vibe_surf/backend/frontend/assets/map-pinned-DHMQpBhr.js +6 -0
  1055. vibe_surf/backend/frontend/assets/map-plus-CQm0KS9c.js +6 -0
  1056. vibe_surf/backend/frontend/assets/mars-CcweinsF.js +6 -0
  1057. vibe_surf/backend/frontend/assets/mars-stroke-OWTfhzV5.js +6 -0
  1058. vibe_surf/backend/frontend/assets/martini-DGORgxbx.js +6 -0
  1059. vibe_surf/backend/frontend/assets/maximize-2-CN4UuSQb.js +6 -0
  1060. vibe_surf/backend/frontend/assets/maximize-DOYuzVqB.js +6 -0
  1061. vibe_surf/backend/frontend/assets/medal-DZT2ADyJ.js +6 -0
  1062. vibe_surf/backend/frontend/assets/megaphone-DN4B6I5c.js +6 -0
  1063. vibe_surf/backend/frontend/assets/megaphone-off-DRAddUqF.js +6 -0
  1064. vibe_surf/backend/frontend/assets/meh-CTX3Y793.js +6 -0
  1065. vibe_surf/backend/frontend/assets/memory-stick-CSG08PuA.js +6 -0
  1066. vibe_surf/backend/frontend/assets/menu-BUvQ8bhy.js +6 -0
  1067. vibe_surf/backend/frontend/assets/merge-xkPPWyBJ.js +6 -0
  1068. vibe_surf/backend/frontend/assets/message-circle-BSqs77ZY.js +6 -0
  1069. vibe_surf/backend/frontend/assets/message-circle-code-EW46-KUX.js +6 -0
  1070. vibe_surf/backend/frontend/assets/message-circle-dashed-BOxWD8kE.js +6 -0
  1071. vibe_surf/backend/frontend/assets/message-circle-heart-CBhiUXeV.js +6 -0
  1072. vibe_surf/backend/frontend/assets/message-circle-more-DqfUhx6W.js +6 -0
  1073. vibe_surf/backend/frontend/assets/message-circle-off-DrsP7VV_.js +6 -0
  1074. vibe_surf/backend/frontend/assets/message-circle-plus-IixbN-s-.js +6 -0
  1075. vibe_surf/backend/frontend/assets/message-circle-question-DsMgtwwS.js +6 -0
  1076. vibe_surf/backend/frontend/assets/message-circle-reply-D_Eog9Yc.js +6 -0
  1077. vibe_surf/backend/frontend/assets/message-circle-warning-D656cL7l.js +6 -0
  1078. vibe_surf/backend/frontend/assets/message-circle-x-CXWR4BBb.js +6 -0
  1079. vibe_surf/backend/frontend/assets/message-square-DKWryKVG.js +6 -0
  1080. vibe_surf/backend/frontend/assets/message-square-code-0ANFU-JW.js +6 -0
  1081. vibe_surf/backend/frontend/assets/message-square-dashed-DaZwp2x1.js +6 -0
  1082. vibe_surf/backend/frontend/assets/message-square-diff-DpJLi_UX.js +6 -0
  1083. vibe_surf/backend/frontend/assets/message-square-dot-OcgwyxZC.js +6 -0
  1084. vibe_surf/backend/frontend/assets/message-square-heart-CKfZOSw8.js +6 -0
  1085. vibe_surf/backend/frontend/assets/message-square-lock-BnNy_yw5.js +6 -0
  1086. vibe_surf/backend/frontend/assets/message-square-more-D2WGFzms.js +6 -0
  1087. vibe_surf/backend/frontend/assets/message-square-off-DV5974j6.js +6 -0
  1088. vibe_surf/backend/frontend/assets/message-square-plus-7icA5g-P.js +6 -0
  1089. vibe_surf/backend/frontend/assets/message-square-quote-DdAvA-a_.js +6 -0
  1090. vibe_surf/backend/frontend/assets/message-square-reply-Cg9Dlls7.js +6 -0
  1091. vibe_surf/backend/frontend/assets/message-square-share-BptAhOEV.js +6 -0
  1092. vibe_surf/backend/frontend/assets/message-square-text-Cu-Ycwsi.js +6 -0
  1093. vibe_surf/backend/frontend/assets/message-square-warning-DxIzJ5bt.js +6 -0
  1094. vibe_surf/backend/frontend/assets/message-square-x-BF9akIp2.js +6 -0
  1095. vibe_surf/backend/frontend/assets/messages-square-AjrRNZXQ.js +6 -0
  1096. vibe_surf/backend/frontend/assets/mic-BXU1SRXR.js +6 -0
  1097. vibe_surf/backend/frontend/assets/mic-off-BUQ1-6-l.js +6 -0
  1098. vibe_surf/backend/frontend/assets/mic-vocal-CG4Yw8We.js +6 -0
  1099. vibe_surf/backend/frontend/assets/microchip-CodKB7m1.js +6 -0
  1100. vibe_surf/backend/frontend/assets/microscope-BY57GHi1.js +6 -0
  1101. vibe_surf/backend/frontend/assets/microwave-KuJ1X2CX.js +6 -0
  1102. vibe_surf/backend/frontend/assets/milestone-D_ToDu31.js +6 -0
  1103. vibe_surf/backend/frontend/assets/milk-C4Nq829F.js +6 -0
  1104. vibe_surf/backend/frontend/assets/milk-off-BPCtdIks.js +6 -0
  1105. vibe_surf/backend/frontend/assets/minimize-2-DeAs1S78.js +6 -0
  1106. vibe_surf/backend/frontend/assets/minimize-DKOGyuzf.js +6 -0
  1107. vibe_surf/backend/frontend/assets/monitor-Cjm4ELo4.js +6 -0
  1108. vibe_surf/backend/frontend/assets/monitor-check-CrckmDk_.js +6 -0
  1109. vibe_surf/backend/frontend/assets/monitor-cog-DIPYXk5z.js +6 -0
  1110. vibe_surf/backend/frontend/assets/monitor-dot-Cl_ZGBvp.js +6 -0
  1111. vibe_surf/backend/frontend/assets/monitor-down-DCSynbhm.js +6 -0
  1112. vibe_surf/backend/frontend/assets/monitor-off-Bxqkes47.js +6 -0
  1113. vibe_surf/backend/frontend/assets/monitor-pause-B2ogwlXq.js +6 -0
  1114. vibe_surf/backend/frontend/assets/monitor-play-w2CTvWQx.js +6 -0
  1115. vibe_surf/backend/frontend/assets/monitor-smartphone-DYQb-VQa.js +6 -0
  1116. vibe_surf/backend/frontend/assets/monitor-speaker-CruyWIOw.js +6 -0
  1117. vibe_surf/backend/frontend/assets/monitor-stop-D2cot7wP.js +6 -0
  1118. vibe_surf/backend/frontend/assets/monitor-up-Bo4VFUGK.js +6 -0
  1119. vibe_surf/backend/frontend/assets/monitor-x-yhFSw0Zo.js +6 -0
  1120. vibe_surf/backend/frontend/assets/moon-CZFTmFVS.js +6 -0
  1121. vibe_surf/backend/frontend/assets/moon-star-X8Pb6SAO.js +6 -0
  1122. vibe_surf/backend/frontend/assets/mountain-_tKRhauQ.js +6 -0
  1123. vibe_surf/backend/frontend/assets/mountain-snow-COLjUpoc.js +6 -0
  1124. vibe_surf/backend/frontend/assets/mouse-C62B_4i7.js +6 -0
  1125. vibe_surf/backend/frontend/assets/mouse-off-NO65wsqy.js +6 -0
  1126. vibe_surf/backend/frontend/assets/mouse-pointer-2-vvokJ-v-.js +6 -0
  1127. vibe_surf/backend/frontend/assets/mouse-pointer-IHoLB1Ii.js +6 -0
  1128. vibe_surf/backend/frontend/assets/mouse-pointer-ban-BGxlXS_f.js +6 -0
  1129. vibe_surf/backend/frontend/assets/mouse-pointer-click-C7N7cKxT.js +6 -0
  1130. vibe_surf/backend/frontend/assets/move-3d-CQO0qR5b.js +6 -0
  1131. vibe_surf/backend/frontend/assets/move-Bp3oIgRK.js +6 -0
  1132. vibe_surf/backend/frontend/assets/move-diagonal-2-CQ3Gqa4B.js +6 -0
  1133. vibe_surf/backend/frontend/assets/move-diagonal-BkUx0iYA.js +6 -0
  1134. vibe_surf/backend/frontend/assets/move-down-B4dxMy_p.js +6 -0
  1135. vibe_surf/backend/frontend/assets/move-down-left-NxvLep64.js +6 -0
  1136. vibe_surf/backend/frontend/assets/move-down-right-CxcsF1yI.js +6 -0
  1137. vibe_surf/backend/frontend/assets/move-horizontal-or6vuyOq.js +6 -0
  1138. vibe_surf/backend/frontend/assets/move-left-Tcae9tGG.js +6 -0
  1139. vibe_surf/backend/frontend/assets/move-right-jY3F431H.js +6 -0
  1140. vibe_surf/backend/frontend/assets/move-up-Dk8sPbRD.js +6 -0
  1141. vibe_surf/backend/frontend/assets/move-up-left-CD7NRvhF.js +6 -0
  1142. vibe_surf/backend/frontend/assets/move-up-right-BAOhHbBw.js +6 -0
  1143. vibe_surf/backend/frontend/assets/move-vertical-BxWj9bDO.js +6 -0
  1144. vibe_surf/backend/frontend/assets/music-2-DQL5lOH_.js +6 -0
  1145. vibe_surf/backend/frontend/assets/music-3-wkxjpooD.js +6 -0
  1146. vibe_surf/backend/frontend/assets/music-4-CgUN2PUO.js +6 -0
  1147. vibe_surf/backend/frontend/assets/music-YxXwq9fN.js +6 -0
  1148. vibe_surf/backend/frontend/assets/navigation-2-Ba4Z-jSq.js +6 -0
  1149. vibe_surf/backend/frontend/assets/navigation-2-off-C_LfeWvW.js +6 -0
  1150. vibe_surf/backend/frontend/assets/navigation-BEChOEsi.js +6 -0
  1151. vibe_surf/backend/frontend/assets/navigation-off-BehyOyE3.js +6 -0
  1152. vibe_surf/backend/frontend/assets/network-CwJLOq3T.js +6 -0
  1153. vibe_surf/backend/frontend/assets/newspaper-ELrHeGRI.js +6 -0
  1154. vibe_surf/backend/frontend/assets/nfc-B_3XFb34.js +6 -0
  1155. vibe_surf/backend/frontend/assets/non-binary-BsgU9v43.js +6 -0
  1156. vibe_surf/backend/frontend/assets/notebook-j-nq3SkT.js +6 -0
  1157. vibe_surf/backend/frontend/assets/notebook-pen-D9-IPVfi.js +6 -0
  1158. vibe_surf/backend/frontend/assets/notebook-tabs-B8RN5vFZ.js +6 -0
  1159. vibe_surf/backend/frontend/assets/notebook-text-9VvE4wV2.js +6 -0
  1160. vibe_surf/backend/frontend/assets/notepad-text-CtRuOWM5.js +6 -0
  1161. vibe_surf/backend/frontend/assets/notepad-text-dashed-BKDJS1oq.js +6 -0
  1162. vibe_surf/backend/frontend/assets/nut-MLKrgO4r.js +6 -0
  1163. vibe_surf/backend/frontend/assets/nut-off-CX5f1ggv.js +6 -0
  1164. vibe_surf/backend/frontend/assets/octagon-Dm5tdLTK.js +6 -0
  1165. vibe_surf/backend/frontend/assets/octagon-alert-THvRb-wV.js +6 -0
  1166. vibe_surf/backend/frontend/assets/octagon-minus-BIN-9swI.js +6 -0
  1167. vibe_surf/backend/frontend/assets/octagon-pause-BvRAlpaV.js +6 -0
  1168. vibe_surf/backend/frontend/assets/octagon-x-DeRG_Ls0.js +6 -0
  1169. vibe_surf/backend/frontend/assets/omega-CVAxeKBK.js +6 -0
  1170. vibe_surf/backend/frontend/assets/option-14pftykg.js +6 -0
  1171. vibe_surf/backend/frontend/assets/orbit-CfewrZaI.js +6 -0
  1172. vibe_surf/backend/frontend/assets/origami-BT1VriUJ.js +6 -0
  1173. vibe_surf/backend/frontend/assets/package-2-D11kpXq5.js +6 -0
  1174. vibe_surf/backend/frontend/assets/package-BegS59es.js +6 -0
  1175. vibe_surf/backend/frontend/assets/package-check-DOLq4x6S.js +6 -0
  1176. vibe_surf/backend/frontend/assets/package-minus-BFgP752B.js +6 -0
  1177. vibe_surf/backend/frontend/assets/package-open-D2nk_ytU.js +6 -0
  1178. vibe_surf/backend/frontend/assets/package-plus-Va8EoLSt.js +6 -0
  1179. vibe_surf/backend/frontend/assets/package-search-cGv3F3Yi.js +6 -0
  1180. vibe_surf/backend/frontend/assets/package-x-BFCKCrAT.js +6 -0
  1181. vibe_surf/backend/frontend/assets/paint-bucket-C1nh-Go_.js +6 -0
  1182. vibe_surf/backend/frontend/assets/paint-roller-C9vy4fuD.js +6 -0
  1183. vibe_surf/backend/frontend/assets/paintbrush-Bo4L8Hqc.js +6 -0
  1184. vibe_surf/backend/frontend/assets/paintbrush-vertical-DqUyy2UU.js +6 -0
  1185. vibe_surf/backend/frontend/assets/palette-DddGrkXJ.js +6 -0
  1186. vibe_surf/backend/frontend/assets/panel-bottom-DPSx8I79.js +6 -0
  1187. vibe_surf/backend/frontend/assets/panel-bottom-close-D0SBNVCx.js +6 -0
  1188. vibe_surf/backend/frontend/assets/panel-bottom-dashed-CR6jKyB5.js +6 -0
  1189. vibe_surf/backend/frontend/assets/panel-bottom-open-BA8uHJ1f.js +6 -0
  1190. vibe_surf/backend/frontend/assets/panel-left-close-HWzVGhEN.js +6 -0
  1191. vibe_surf/backend/frontend/assets/panel-left-dashed-C8CvEMus.js +6 -0
  1192. vibe_surf/backend/frontend/assets/panel-left-open-DZtgeJky.js +6 -0
  1193. vibe_surf/backend/frontend/assets/panel-right-BIGpcNCD.js +6 -0
  1194. vibe_surf/backend/frontend/assets/panel-right-close-D6I6nB-8.js +6 -0
  1195. vibe_surf/backend/frontend/assets/panel-right-dashed-Dt-tZyfJ.js +6 -0
  1196. vibe_surf/backend/frontend/assets/panel-right-open-Cso_cmr4.js +6 -0
  1197. vibe_surf/backend/frontend/assets/panel-top-DxQozLLO.js +6 -0
  1198. vibe_surf/backend/frontend/assets/panel-top-close-21p_Iy4Q.js +6 -0
  1199. vibe_surf/backend/frontend/assets/panel-top-dashed-BLLvCUcW.js +6 -0
  1200. vibe_surf/backend/frontend/assets/panel-top-open-DOpjqeXN.js +6 -0
  1201. vibe_surf/backend/frontend/assets/panels-left-bottom-Dgc_Zml-.js +6 -0
  1202. vibe_surf/backend/frontend/assets/panels-right-bottom-DBl33v5J.js +6 -0
  1203. vibe_surf/backend/frontend/assets/panels-top-left-Bh9Km2t_.js +6 -0
  1204. vibe_surf/backend/frontend/assets/paperclip-DwNdWjNs.js +6 -0
  1205. vibe_surf/backend/frontend/assets/parentheses-Bv3x0v0d.js +6 -0
  1206. vibe_surf/backend/frontend/assets/parking-meter-CaAUYem8.js +6 -0
  1207. vibe_surf/backend/frontend/assets/party-popper-o676ndwa.js +6 -0
  1208. vibe_surf/backend/frontend/assets/pause-DofdcFyf.js +6 -0
  1209. vibe_surf/backend/frontend/assets/paw-print-CsCZTGwP.js +6 -0
  1210. vibe_surf/backend/frontend/assets/pc-case-ChHKP8Bs.js +6 -0
  1211. vibe_surf/backend/frontend/assets/pen-BJrA5W2j.js +6 -0
  1212. vibe_surf/backend/frontend/assets/pen-line-Cn_-SNuM.js +6 -0
  1213. vibe_surf/backend/frontend/assets/pen-off-vpS9creP.js +6 -0
  1214. vibe_surf/backend/frontend/assets/pen-tool-BHi1klDG.js +6 -0
  1215. vibe_surf/backend/frontend/assets/pencil-Wem_VEVg.js +6 -0
  1216. vibe_surf/backend/frontend/assets/pencil-line-CpG7egII.js +6 -0
  1217. vibe_surf/backend/frontend/assets/pencil-off-DNbfjOTs.js +6 -0
  1218. vibe_surf/backend/frontend/assets/pencil-ruler-BQdaeQqI.js +6 -0
  1219. vibe_surf/backend/frontend/assets/pentagon-BNe4mDhm.js +6 -0
  1220. vibe_surf/backend/frontend/assets/percent-CDhexNCT.js +6 -0
  1221. vibe_surf/backend/frontend/assets/person-standing-DxYpZiGV.js +6 -0
  1222. vibe_surf/backend/frontend/assets/philippine-peso-B7FAFSBd.js +6 -0
  1223. vibe_surf/backend/frontend/assets/phone-CTiWkAUx.js +6 -0
  1224. vibe_surf/backend/frontend/assets/phone-call-CWavZZ8W.js +6 -0
  1225. vibe_surf/backend/frontend/assets/phone-forwarded-CLaEebEE.js +6 -0
  1226. vibe_surf/backend/frontend/assets/phone-incoming-Cv2OCBfT.js +6 -0
  1227. vibe_surf/backend/frontend/assets/phone-missed-DNNjfxVz.js +6 -0
  1228. vibe_surf/backend/frontend/assets/phone-off-ClVQWi0g.js +6 -0
  1229. vibe_surf/backend/frontend/assets/phone-outgoing-CY2TxKXl.js +6 -0
  1230. vibe_surf/backend/frontend/assets/pi-DNqBWxfj.js +6 -0
  1231. vibe_surf/backend/frontend/assets/piano-MiPm47Ma.js +6 -0
  1232. vibe_surf/backend/frontend/assets/pickaxe-YqkOBnCJ.js +6 -0
  1233. vibe_surf/backend/frontend/assets/picture-in-picture-2-BIKggEXM.js +6 -0
  1234. vibe_surf/backend/frontend/assets/picture-in-picture-QAMxgJMO.js +6 -0
  1235. vibe_surf/backend/frontend/assets/piggy-bank-DVE6nzj5.js +6 -0
  1236. vibe_surf/backend/frontend/assets/pilcrow-CIhZWZVN.js +6 -0
  1237. vibe_surf/backend/frontend/assets/pilcrow-left-Ca9XTMpA.js +6 -0
  1238. vibe_surf/backend/frontend/assets/pilcrow-right-CLd68jMN.js +6 -0
  1239. vibe_surf/backend/frontend/assets/pill-CBiMEkPj.js +6 -0
  1240. vibe_surf/backend/frontend/assets/pill-bottle-CJ3pejac.js +6 -0
  1241. vibe_surf/backend/frontend/assets/pin-Oo2Sku7X.js +6 -0
  1242. vibe_surf/backend/frontend/assets/pin-off-DG48ZMV_.js +6 -0
  1243. vibe_surf/backend/frontend/assets/pipette-BzvHUOUt.js +6 -0
  1244. vibe_surf/backend/frontend/assets/pizza-B5z39oy-.js +6 -0
  1245. vibe_surf/backend/frontend/assets/plane-eU326jPg.js +6 -0
  1246. vibe_surf/backend/frontend/assets/plane-landing-gxcqSKOA.js +6 -0
  1247. vibe_surf/backend/frontend/assets/plane-takeoff-CFmuOAfX.js +6 -0
  1248. vibe_surf/backend/frontend/assets/play-CaCbaWdR.js +6 -0
  1249. vibe_surf/backend/frontend/assets/plug-2-CaihODHc.js +6 -0
  1250. vibe_surf/backend/frontend/assets/plug-DrN0weqI.js +6 -0
  1251. vibe_surf/backend/frontend/assets/plug-zap-BT2sgwQy.js +6 -0
  1252. vibe_surf/backend/frontend/assets/pocket-DNEPJJmg.js +6 -0
  1253. vibe_surf/backend/frontend/assets/pocket-knife-1CI1aqMD.js +6 -0
  1254. vibe_surf/backend/frontend/assets/podcast-BsGsWn3h.js +6 -0
  1255. vibe_surf/backend/frontend/assets/pointer-B8T5gv-x.js +6 -0
  1256. vibe_surf/backend/frontend/assets/pointer-off-C2DXzg5S.js +6 -0
  1257. vibe_surf/backend/frontend/assets/popcorn-Bi10K8Em.js +6 -0
  1258. vibe_surf/backend/frontend/assets/popsicle-CxLa9bz8.js +6 -0
  1259. vibe_surf/backend/frontend/assets/pound-sterling-BFXPyyYU.js +6 -0
  1260. vibe_surf/backend/frontend/assets/power-BmqAlXVz.js +6 -0
  1261. vibe_surf/backend/frontend/assets/power-off-CT70n2O0.js +6 -0
  1262. vibe_surf/backend/frontend/assets/presentation-DVhaCvt0.js +6 -0
  1263. vibe_surf/backend/frontend/assets/printer-D7NgKQZm.js +6 -0
  1264. vibe_surf/backend/frontend/assets/printer-check-BYDiSYD3.js +6 -0
  1265. vibe_surf/backend/frontend/assets/projector-BFMEAUGw.js +6 -0
  1266. vibe_surf/backend/frontend/assets/proportions-CUypjhWs.js +6 -0
  1267. vibe_surf/backend/frontend/assets/puzzle-lPcRsrCP.js +6 -0
  1268. vibe_surf/backend/frontend/assets/pyramid-bX_YtvHu.js +6 -0
  1269. vibe_surf/backend/frontend/assets/qr-code-CMBq06CH.js +6 -0
  1270. vibe_surf/backend/frontend/assets/quote-BkFwr2wo.js +6 -0
  1271. vibe_surf/backend/frontend/assets/rabbit-CEyfAR1t.js +6 -0
  1272. vibe_surf/backend/frontend/assets/radar-bMcLs_bP.js +6 -0
  1273. vibe_surf/backend/frontend/assets/radiation-NMlxufHZ.js +6 -0
  1274. vibe_surf/backend/frontend/assets/radical-C3CE5pot.js +6 -0
  1275. vibe_surf/backend/frontend/assets/radio-DQMhSWLz.js +6 -0
  1276. vibe_surf/backend/frontend/assets/radio-receiver-Cwtiayz1.js +6 -0
  1277. vibe_surf/backend/frontend/assets/radio-tower-ngCBBDuR.js +6 -0
  1278. vibe_surf/backend/frontend/assets/radius-CB1vpl4-.js +6 -0
  1279. vibe_surf/backend/frontend/assets/rail-symbol-CWT8jn79.js +6 -0
  1280. vibe_surf/backend/frontend/assets/rainbow-eG2Z6xdv.js +6 -0
  1281. vibe_surf/backend/frontend/assets/rat-CjjmSgkE.js +6 -0
  1282. vibe_surf/backend/frontend/assets/ratio-Ck9TZd6C.js +6 -0
  1283. vibe_surf/backend/frontend/assets/receipt-QzIALZKN.js +6 -0
  1284. vibe_surf/backend/frontend/assets/receipt-cent-wAd12yx1.js +6 -0
  1285. vibe_surf/backend/frontend/assets/receipt-euro-BG_rS29_.js +6 -0
  1286. vibe_surf/backend/frontend/assets/receipt-indian-rupee-DlF7wlqh.js +6 -0
  1287. vibe_surf/backend/frontend/assets/receipt-japanese-yen-GDNnE_Bl.js +6 -0
  1288. vibe_surf/backend/frontend/assets/receipt-pound-sterling-CczRTrHu.js +6 -0
  1289. vibe_surf/backend/frontend/assets/receipt-russian-ruble-CP8qhoZV.js +6 -0
  1290. vibe_surf/backend/frontend/assets/receipt-swiss-franc-B1FjnBVT.js +6 -0
  1291. vibe_surf/backend/frontend/assets/receipt-text-Df0EAqK2.js +6 -0
  1292. vibe_surf/backend/frontend/assets/rectangle-ellipsis-BeZ5b8q2.js +6 -0
  1293. vibe_surf/backend/frontend/assets/rectangle-goggles-B0pWs5f6.js +6 -0
  1294. vibe_surf/backend/frontend/assets/rectangle-horizontal-5D8nW5zN.js +6 -0
  1295. vibe_surf/backend/frontend/assets/rectangle-vertical-D6iXTP5O.js +6 -0
  1296. vibe_surf/backend/frontend/assets/recycle-cePWNqck.js +6 -0
  1297. vibe_surf/backend/frontend/assets/redo-2-DflPUgVL.js +6 -0
  1298. vibe_surf/backend/frontend/assets/redo-C8hJqzAq.js +6 -0
  1299. vibe_surf/backend/frontend/assets/redo-dot-JyZC910i.js +6 -0
  1300. vibe_surf/backend/frontend/assets/refresh-ccw-QGOuU93p.js +6 -0
  1301. vibe_surf/backend/frontend/assets/refresh-ccw-dot-BVfOSZg8.js +6 -0
  1302. vibe_surf/backend/frontend/assets/refresh-cw-DttAl3PC.js +6 -0
  1303. vibe_surf/backend/frontend/assets/refresh-cw-off-1m7CD9nm.js +6 -0
  1304. vibe_surf/backend/frontend/assets/refrigerator-BGk6q_hL.js +6 -0
  1305. vibe_surf/backend/frontend/assets/regex-C-txrNUs.js +6 -0
  1306. vibe_surf/backend/frontend/assets/remove-formatting-CVxREpGZ.js +6 -0
  1307. vibe_surf/backend/frontend/assets/repeat-1-ChFj2WK-.js +6 -0
  1308. vibe_surf/backend/frontend/assets/repeat-2-ViBvoa4W.js +6 -0
  1309. vibe_surf/backend/frontend/assets/repeat-GoYG4svo.js +6 -0
  1310. vibe_surf/backend/frontend/assets/replace-GFcv_X_V.js +6 -0
  1311. vibe_surf/backend/frontend/assets/replace-all-zAC7UUp9.js +6 -0
  1312. vibe_surf/backend/frontend/assets/reply-C2IH8Yvz.js +6 -0
  1313. vibe_surf/backend/frontend/assets/reply-all-CXYDFlBb.js +6 -0
  1314. vibe_surf/backend/frontend/assets/rewind-Bmv_DtI_.js +6 -0
  1315. vibe_surf/backend/frontend/assets/ribbon-B4MeTNUc.js +6 -0
  1316. vibe_surf/backend/frontend/assets/robot-BsccFpqT.png +0 -0
  1317. vibe_surf/backend/frontend/assets/rocket-Ch2Sc43k.js +6 -0
  1318. vibe_surf/backend/frontend/assets/rocking-chair-Pcx0Ex8j.js +6 -0
  1319. vibe_surf/backend/frontend/assets/roller-coaster-DpdZyHU4.js +6 -0
  1320. vibe_surf/backend/frontend/assets/rotate-3d-CAlCCDrS.js +6 -0
  1321. vibe_surf/backend/frontend/assets/rotate-ccw-Dl5IeMD0.js +6 -0
  1322. vibe_surf/backend/frontend/assets/rotate-ccw-key-CbcFcY_X.js +6 -0
  1323. vibe_surf/backend/frontend/assets/rotate-ccw-square-B6dXtMGF.js +6 -0
  1324. vibe_surf/backend/frontend/assets/rotate-cw-D9QBD3w1.js +6 -0
  1325. vibe_surf/backend/frontend/assets/rotate-cw-square-BTb_LCYt.js +6 -0
  1326. vibe_surf/backend/frontend/assets/route-BY8OMdE6.js +6 -0
  1327. vibe_surf/backend/frontend/assets/route-off-DBPZSjij.js +6 -0
  1328. vibe_surf/backend/frontend/assets/router-Cj5pK344.js +6 -0
  1329. vibe_surf/backend/frontend/assets/rows-2-DQikFZXW.js +6 -0
  1330. vibe_surf/backend/frontend/assets/rows-3-CgpwLjBs.js +6 -0
  1331. vibe_surf/backend/frontend/assets/rows-4-DHLpJgeW.js +6 -0
  1332. vibe_surf/backend/frontend/assets/rss-B2J7l-Sb.js +6 -0
  1333. vibe_surf/backend/frontend/assets/ruler-D-fe4o6e.js +6 -0
  1334. vibe_surf/backend/frontend/assets/ruler-dimension-line-COrwkuXi.js +6 -0
  1335. vibe_surf/backend/frontend/assets/russian-ruble-Bk9zdT2J.js +6 -0
  1336. vibe_surf/backend/frontend/assets/sailboat-DMPxVbdm.js +6 -0
  1337. vibe_surf/backend/frontend/assets/salad-D20azVGZ.js +6 -0
  1338. vibe_surf/backend/frontend/assets/sandwich-Z_d-MQ5t.js +6 -0
  1339. vibe_surf/backend/frontend/assets/satellite-7zgZRaOF.js +6 -0
  1340. vibe_surf/backend/frontend/assets/satellite-dish-Cy6FmD_T.js +6 -0
  1341. vibe_surf/backend/frontend/assets/saudi-riyal-C9ZvxnL2.js +6 -0
  1342. vibe_surf/backend/frontend/assets/save-LkAkHS7W.js +6 -0
  1343. vibe_surf/backend/frontend/assets/save-all-D_-zYl71.js +6 -0
  1344. vibe_surf/backend/frontend/assets/save-off-B0KWQYIj.js +6 -0
  1345. vibe_surf/backend/frontend/assets/scale-3d-FnesJ3yp.js +6 -0
  1346. vibe_surf/backend/frontend/assets/scale-CfDNIDpX.js +6 -0
  1347. vibe_surf/backend/frontend/assets/scaling-D7_wGXPp.js +6 -0
  1348. vibe_surf/backend/frontend/assets/scan-CXtftKWt.js +6 -0
  1349. vibe_surf/backend/frontend/assets/scan-barcode-DMzKInA0.js +6 -0
  1350. vibe_surf/backend/frontend/assets/scan-eye-BNOyXXj8.js +6 -0
  1351. vibe_surf/backend/frontend/assets/scan-face-wv0t4zeq.js +6 -0
  1352. vibe_surf/backend/frontend/assets/scan-heart-BeBWR3xV.js +6 -0
  1353. vibe_surf/backend/frontend/assets/scan-line-CvQpOukb.js +6 -0
  1354. vibe_surf/backend/frontend/assets/scan-qr-code-BQ-Oqt9e.js +6 -0
  1355. vibe_surf/backend/frontend/assets/scan-search-DeDxyjP7.js +6 -0
  1356. vibe_surf/backend/frontend/assets/scan-text-Du5B26Lp.js +6 -0
  1357. vibe_surf/backend/frontend/assets/school-XPbcFxvs.js +6 -0
  1358. vibe_surf/backend/frontend/assets/scissors-C82MxyXF.js +6 -0
  1359. vibe_surf/backend/frontend/assets/scissors-line-dashed-BiIj8ZEF.js +6 -0
  1360. vibe_surf/backend/frontend/assets/screen-share-4rpy_bSP.js +6 -0
  1361. vibe_surf/backend/frontend/assets/screen-share-off-DisAsCVo.js +6 -0
  1362. vibe_surf/backend/frontend/assets/scroll-D3FgdMu9.js +6 -0
  1363. vibe_surf/backend/frontend/assets/scroll-text-BolUgv8k.js +6 -0
  1364. vibe_surf/backend/frontend/assets/search-check-BqDsbYzT.js +6 -0
  1365. vibe_surf/backend/frontend/assets/search-code-BAngOAWT.js +6 -0
  1366. vibe_surf/backend/frontend/assets/search-slash-DGpGjVDh.js +6 -0
  1367. vibe_surf/backend/frontend/assets/search-x-hbEhC-Ks.js +6 -0
  1368. vibe_surf/backend/frontend/assets/section-CZdebDRa.js +6 -0
  1369. vibe_surf/backend/frontend/assets/send-BY6RRvoS.js +6 -0
  1370. vibe_surf/backend/frontend/assets/send-horizontal-ByJf1GwO.js +6 -0
  1371. vibe_surf/backend/frontend/assets/send-to-back-CqeJ0x7-.js +6 -0
  1372. vibe_surf/backend/frontend/assets/separator-horizontal-CyHVE869.js +6 -0
  1373. vibe_surf/backend/frontend/assets/separator-vertical-CHEXvAuG.js +6 -0
  1374. vibe_surf/backend/frontend/assets/server-DPj6-qpq.js +6 -0
  1375. vibe_surf/backend/frontend/assets/server-cog-Dc-mlMR8.js +6 -0
  1376. vibe_surf/backend/frontend/assets/server-crash-CXsISMNW.js +6 -0
  1377. vibe_surf/backend/frontend/assets/server-off-Y_lfL7-w.js +6 -0
  1378. vibe_surf/backend/frontend/assets/settings-2-DZ9wvd5i.js +6 -0
  1379. vibe_surf/backend/frontend/assets/settings-DO_W46zj.js +6 -0
  1380. vibe_surf/backend/frontend/assets/shapes-CIsUods8.js +6 -0
  1381. vibe_surf/backend/frontend/assets/share-0y8A7A5E.js +6 -0
  1382. vibe_surf/backend/frontend/assets/share-2-TSy7pnEx.js +6 -0
  1383. vibe_surf/backend/frontend/assets/sheet-DagiH4ve.js +6 -0
  1384. vibe_surf/backend/frontend/assets/shell-4uq5QK2w.js +6 -0
  1385. vibe_surf/backend/frontend/assets/shield-DSmxKeAX.js +6 -0
  1386. vibe_surf/backend/frontend/assets/shield-alert-2BHG6ofb.js +6 -0
  1387. vibe_surf/backend/frontend/assets/shield-ban-BcQOFFCO.js +6 -0
  1388. vibe_surf/backend/frontend/assets/shield-check-IssT1y70.js +6 -0
  1389. vibe_surf/backend/frontend/assets/shield-ellipsis-B_k2GJZe.js +6 -0
  1390. vibe_surf/backend/frontend/assets/shield-half-Ce9mZY66.js +6 -0
  1391. vibe_surf/backend/frontend/assets/shield-minus-Cm9SRYz3.js +6 -0
  1392. vibe_surf/backend/frontend/assets/shield-off-Di-Txcsi.js +6 -0
  1393. vibe_surf/backend/frontend/assets/shield-plus-Cbd8tnos.js +6 -0
  1394. vibe_surf/backend/frontend/assets/shield-question-5hf3zAb8.js +6 -0
  1395. vibe_surf/backend/frontend/assets/shield-user-D2XuthCx.js +6 -0
  1396. vibe_surf/backend/frontend/assets/shield-x-BTJiGLGc.js +6 -0
  1397. vibe_surf/backend/frontend/assets/ship-DkhgC4pB.js +6 -0
  1398. vibe_surf/backend/frontend/assets/ship-wheel-C-7_Y35l.js +6 -0
  1399. vibe_surf/backend/frontend/assets/shirt-vuhl9SGI.js +6 -0
  1400. vibe_surf/backend/frontend/assets/shopping-bag-DvQ2pPfQ.js +6 -0
  1401. vibe_surf/backend/frontend/assets/shopping-basket-D9s56Xw7.js +6 -0
  1402. vibe_surf/backend/frontend/assets/shopping-cart-ZmbJuTVy.js +6 -0
  1403. vibe_surf/backend/frontend/assets/shovel-L2fbM_rD.js +6 -0
  1404. vibe_surf/backend/frontend/assets/shower-head-DE9aHmtW.js +6 -0
  1405. vibe_surf/backend/frontend/assets/shredder-DadDP-UJ.js +6 -0
  1406. vibe_surf/backend/frontend/assets/shrimp-DycqoQZ3.js +6 -0
  1407. vibe_surf/backend/frontend/assets/shrink-B8aylxOx.js +6 -0
  1408. vibe_surf/backend/frontend/assets/shrub-DF1hbXW3.js +6 -0
  1409. vibe_surf/backend/frontend/assets/shuffle-BuIBx3Jr.js +6 -0
  1410. vibe_surf/backend/frontend/assets/sigma-Do2EOGrK.js +6 -0
  1411. vibe_surf/backend/frontend/assets/signal-D4HUxctG.js +6 -0
  1412. vibe_surf/backend/frontend/assets/signal-high-D4XjnPRT.js +6 -0
  1413. vibe_surf/backend/frontend/assets/signal-low-CbpCiGEn.js +6 -0
  1414. vibe_surf/backend/frontend/assets/signal-medium-DenP3lw7.js +6 -0
  1415. vibe_surf/backend/frontend/assets/signal-zero-CHgcs844.js +6 -0
  1416. vibe_surf/backend/frontend/assets/signature-DK8I0wlU.js +6 -0
  1417. vibe_surf/backend/frontend/assets/signpost-1ES-i9fp.js +6 -0
  1418. vibe_surf/backend/frontend/assets/signpost-big-BSozSaes.js +6 -0
  1419. vibe_surf/backend/frontend/assets/siren-wlABVP_H.js +6 -0
  1420. vibe_surf/backend/frontend/assets/skip-back-Bu_s_NAd.js +6 -0
  1421. vibe_surf/backend/frontend/assets/skip-forward-B_5w_2GT.js +6 -0
  1422. vibe_surf/backend/frontend/assets/skull-BEu1YCxD.js +6 -0
  1423. vibe_surf/backend/frontend/assets/slack-D9649ln8.js +6 -0
  1424. vibe_surf/backend/frontend/assets/slash-DojcavQ9.js +6 -0
  1425. vibe_surf/backend/frontend/assets/slice-CRmKxhnX.js +6 -0
  1426. vibe_surf/backend/frontend/assets/sliders-horizontal-B5g_t8uv.js +6 -0
  1427. vibe_surf/backend/frontend/assets/sliders-vertical-CLBL1buf.js +6 -0
  1428. vibe_surf/backend/frontend/assets/smartphone-D-ep_7qQ.js +6 -0
  1429. vibe_surf/backend/frontend/assets/smartphone-charging-CRPRIfJL.js +6 -0
  1430. vibe_surf/backend/frontend/assets/smartphone-nfc-CmXWPjB7.js +6 -0
  1431. vibe_surf/backend/frontend/assets/smile-C8NQBJ3w.js +6 -0
  1432. vibe_surf/backend/frontend/assets/smile-plus-BXiCkryt.js +6 -0
  1433. vibe_surf/backend/frontend/assets/snail-C4InLnJK.js +6 -0
  1434. vibe_surf/backend/frontend/assets/snowflake-CkOWmqpH.js +6 -0
  1435. vibe_surf/backend/frontend/assets/sofa-C5SFUETc.js +6 -0
  1436. vibe_surf/backend/frontend/assets/soup-BPK9i9Mq.js +6 -0
  1437. vibe_surf/backend/frontend/assets/space-B_AibqtW.js +6 -0
  1438. vibe_surf/backend/frontend/assets/spade-DOYQwKmE.js +6 -0
  1439. vibe_surf/backend/frontend/assets/sparkle-Bgy0TYRq.js +6 -0
  1440. vibe_surf/backend/frontend/assets/sparkles-COXnCZbi.js +6 -0
  1441. vibe_surf/backend/frontend/assets/speaker-CaUol58E.js +6 -0
  1442. vibe_surf/backend/frontend/assets/speech-SU2fqOX1.js +6 -0
  1443. vibe_surf/backend/frontend/assets/spell-check-2-C0X3GG0W.js +6 -0
  1444. vibe_surf/backend/frontend/assets/spell-check-BwnI8rNb.js +6 -0
  1445. vibe_surf/backend/frontend/assets/spline-ByNmiFVd.js +6 -0
  1446. vibe_surf/backend/frontend/assets/spline-pointer-B6jrA3VA.js +6 -0
  1447. vibe_surf/backend/frontend/assets/split-uo1Igb0N.js +6 -0
  1448. vibe_surf/backend/frontend/assets/spray-can-D37CFDNB.js +6 -0
  1449. vibe_surf/backend/frontend/assets/sprout-B25Lx6nK.js +6 -0
  1450. vibe_surf/backend/frontend/assets/square-KfK1ngG3.js +6 -0
  1451. vibe_surf/backend/frontend/assets/square-activity-BGQluYc5.js +6 -0
  1452. vibe_surf/backend/frontend/assets/square-arrow-down-CqlT37VO.js +6 -0
  1453. vibe_surf/backend/frontend/assets/square-arrow-down-left-CR2Go22d.js +6 -0
  1454. vibe_surf/backend/frontend/assets/square-arrow-down-right-rGAHLIaS.js +6 -0
  1455. vibe_surf/backend/frontend/assets/square-arrow-left-CvWu8_9d.js +6 -0
  1456. vibe_surf/backend/frontend/assets/square-arrow-out-down-left-K0v7hlb0.js +6 -0
  1457. vibe_surf/backend/frontend/assets/square-arrow-out-down-right-f74Yq8Hb.js +6 -0
  1458. vibe_surf/backend/frontend/assets/square-arrow-out-up-left-CdBSNScA.js +6 -0
  1459. vibe_surf/backend/frontend/assets/square-arrow-out-up-right-8PNP-37C.js +6 -0
  1460. vibe_surf/backend/frontend/assets/square-arrow-right-DZ3-0COG.js +6 -0
  1461. vibe_surf/backend/frontend/assets/square-arrow-up-CefwAldY.js +6 -0
  1462. vibe_surf/backend/frontend/assets/square-arrow-up-left-Dt6pY6y2.js +6 -0
  1463. vibe_surf/backend/frontend/assets/square-arrow-up-right-C-bPYXZE.js +6 -0
  1464. vibe_surf/backend/frontend/assets/square-asterisk-BIEu0Wq-.js +6 -0
  1465. vibe_surf/backend/frontend/assets/square-bottom-dashed-scissors-DFln2i7A.js +6 -0
  1466. vibe_surf/backend/frontend/assets/square-chart-gantt-VCoGr7j5.js +6 -0
  1467. vibe_surf/backend/frontend/assets/square-check-big-DdTm65g2.js +6 -0
  1468. vibe_surf/backend/frontend/assets/square-check-tJdFPLB4.js +6 -0
  1469. vibe_surf/backend/frontend/assets/square-chevron-down-DV0aFQxC.js +6 -0
  1470. vibe_surf/backend/frontend/assets/square-chevron-left-CdGd5MQB.js +6 -0
  1471. vibe_surf/backend/frontend/assets/square-chevron-right-D_aqBwe_.js +6 -0
  1472. vibe_surf/backend/frontend/assets/square-chevron-up-DBzeLhdp.js +6 -0
  1473. vibe_surf/backend/frontend/assets/square-code-DtSsDKtH.js +6 -0
  1474. vibe_surf/backend/frontend/assets/square-dashed-DSG0Ash0.js +6 -0
  1475. vibe_surf/backend/frontend/assets/square-dashed-bottom-BrkR2d57.js +6 -0
  1476. vibe_surf/backend/frontend/assets/square-dashed-bottom-code-CMTH1TbL.js +6 -0
  1477. vibe_surf/backend/frontend/assets/square-dashed-kanban-961FMGlN.js +6 -0
  1478. vibe_surf/backend/frontend/assets/square-dashed-mouse-pointer-BWcK5KqH.js +6 -0
  1479. vibe_surf/backend/frontend/assets/square-divide-B8EfzsLW.js +6 -0
  1480. vibe_surf/backend/frontend/assets/square-dot-CFXkGNxl.js +6 -0
  1481. vibe_surf/backend/frontend/assets/square-equal-DNzUS5Xu.js +6 -0
  1482. vibe_surf/backend/frontend/assets/square-function-mVVWlGqH.js +6 -0
  1483. vibe_surf/backend/frontend/assets/square-kanban-gbxgvYAs.js +6 -0
  1484. vibe_surf/backend/frontend/assets/square-library-LB-mLfoV.js +6 -0
  1485. vibe_surf/backend/frontend/assets/square-m-DR4vWmvF.js +6 -0
  1486. vibe_surf/backend/frontend/assets/square-menu-wrD_3b1X.js +6 -0
  1487. vibe_surf/backend/frontend/assets/square-minus-C8LvWB0i.js +6 -0
  1488. vibe_surf/backend/frontend/assets/square-mouse-pointer-BWIOG0ej.js +6 -0
  1489. vibe_surf/backend/frontend/assets/square-parking-Cwf1smWS.js +6 -0
  1490. vibe_surf/backend/frontend/assets/square-parking-off-B7fLGIII.js +6 -0
  1491. vibe_surf/backend/frontend/assets/square-pen-D-KRx-pf.js +6 -0
  1492. vibe_surf/backend/frontend/assets/square-percent-DEPHZN1U.js +6 -0
  1493. vibe_surf/backend/frontend/assets/square-pi-D3ZoGA8y.js +6 -0
  1494. vibe_surf/backend/frontend/assets/square-pilcrow-CU7h7mYC.js +6 -0
  1495. vibe_surf/backend/frontend/assets/square-play-BJID6hok.js +6 -0
  1496. vibe_surf/backend/frontend/assets/square-plus-B_MofyMZ.js +6 -0
  1497. vibe_surf/backend/frontend/assets/square-power-CnNfm3SK.js +6 -0
  1498. vibe_surf/backend/frontend/assets/square-radical-Bb91fkyO.js +6 -0
  1499. vibe_surf/backend/frontend/assets/square-round-corner-DSNwBkrZ.js +6 -0
  1500. vibe_surf/backend/frontend/assets/square-scissors-Q-Hew_gd.js +6 -0
  1501. vibe_surf/backend/frontend/assets/square-sigma-Dvqecf-2.js +6 -0
  1502. vibe_surf/backend/frontend/assets/square-slash-TFALqbOX.js +6 -0
  1503. vibe_surf/backend/frontend/assets/square-split-horizontal-CbPy5mPi.js +6 -0
  1504. vibe_surf/backend/frontend/assets/square-split-vertical-CwEHVK6t.js +6 -0
  1505. vibe_surf/backend/frontend/assets/square-square-BgBRe8Sy.js +6 -0
  1506. vibe_surf/backend/frontend/assets/square-stack-CQOObCB-.js +6 -0
  1507. vibe_surf/backend/frontend/assets/square-terminal-DTCYsALs.js +6 -0
  1508. vibe_surf/backend/frontend/assets/square-user-BtoHpGAf.js +6 -0
  1509. vibe_surf/backend/frontend/assets/square-user-round-DYhk3lBR.js +6 -0
  1510. vibe_surf/backend/frontend/assets/square-x-BxVfvmxy.js +6 -0
  1511. vibe_surf/backend/frontend/assets/squares-exclude-xFnGRjrW.js +6 -0
  1512. vibe_surf/backend/frontend/assets/squares-intersect-CJ3onkar.js +6 -0
  1513. vibe_surf/backend/frontend/assets/squares-subtract-DHkmEhbq.js +6 -0
  1514. vibe_surf/backend/frontend/assets/squares-unite-VTPchsN_.js +6 -0
  1515. vibe_surf/backend/frontend/assets/squircle-BeRgB4CX.js +6 -0
  1516. vibe_surf/backend/frontend/assets/squirrel-CXpCofHU.js +6 -0
  1517. vibe_surf/backend/frontend/assets/stamp-CBKYJLk-.js +6 -0
  1518. vibe_surf/backend/frontend/assets/star-g394tQMa.js +6 -0
  1519. vibe_surf/backend/frontend/assets/star-half-DMNuOefd.js +6 -0
  1520. vibe_surf/backend/frontend/assets/star-off-D_I13W97.js +6 -0
  1521. vibe_surf/backend/frontend/assets/step-back-Ba3vvS1b.js +6 -0
  1522. vibe_surf/backend/frontend/assets/step-forward-tf6_dmSk.js +6 -0
  1523. vibe_surf/backend/frontend/assets/stethoscope-kEGj4Hk2.js +6 -0
  1524. vibe_surf/backend/frontend/assets/sticker-BMrXBzQi.js +6 -0
  1525. vibe_surf/backend/frontend/assets/sticky-note-B6_-_Vk7.js +6 -0
  1526. vibe_surf/backend/frontend/assets/store-ClCC8VsS.js +6 -0
  1527. vibe_surf/backend/frontend/assets/stretch-horizontal-Dfdn4d_v.js +6 -0
  1528. vibe_surf/backend/frontend/assets/stretch-vertical-G91F9Wl8.js +6 -0
  1529. vibe_surf/backend/frontend/assets/strikethrough-DQ1eMtzE.js +6 -0
  1530. vibe_surf/backend/frontend/assets/subscript-B1v5cruw.js +6 -0
  1531. vibe_surf/backend/frontend/assets/sun-Drd6gJu4.js +6 -0
  1532. vibe_surf/backend/frontend/assets/sun-dim-CSbGIP11.js +6 -0
  1533. vibe_surf/backend/frontend/assets/sun-medium-Cownz0gJ.js +6 -0
  1534. vibe_surf/backend/frontend/assets/sun-moon-BgCDmhlw.js +6 -0
  1535. vibe_surf/backend/frontend/assets/sun-snow-B0xowfvd.js +6 -0
  1536. vibe_surf/backend/frontend/assets/sunrise-DkTO7zEY.js +6 -0
  1537. vibe_surf/backend/frontend/assets/sunset-DkKYK75e.js +6 -0
  1538. vibe_surf/backend/frontend/assets/superscript-CBfgJuGP.js +6 -0
  1539. vibe_surf/backend/frontend/assets/swatch-book-DrsAphD2.js +6 -0
  1540. vibe_surf/backend/frontend/assets/swiss-franc-DAYyAzPc.js +6 -0
  1541. vibe_surf/backend/frontend/assets/switch-camera-C7hTq-mz.js +6 -0
  1542. vibe_surf/backend/frontend/assets/sword-BDecpboX.js +6 -0
  1543. vibe_surf/backend/frontend/assets/swords-BjWa4kCQ.js +6 -0
  1544. vibe_surf/backend/frontend/assets/syringe-ClPPE8yd.js +6 -0
  1545. vibe_surf/backend/frontend/assets/table-2-DIGnaXY7.js +6 -0
  1546. vibe_surf/backend/frontend/assets/table-CHxmnA-B.js +6 -0
  1547. vibe_surf/backend/frontend/assets/table-cells-merge-D1zNRVrG.js +6 -0
  1548. vibe_surf/backend/frontend/assets/table-cells-split-CdEYW1Su.js +6 -0
  1549. vibe_surf/backend/frontend/assets/table-columns-split-JoiaUKz3.js +6 -0
  1550. vibe_surf/backend/frontend/assets/table-of-contents-BSpkdcFt.js +6 -0
  1551. vibe_surf/backend/frontend/assets/table-properties-CmoYqW5E.js +6 -0
  1552. vibe_surf/backend/frontend/assets/table-rows-split-B-06ZKqE.js +6 -0
  1553. vibe_surf/backend/frontend/assets/tablet-YvP4PBQR.js +6 -0
  1554. vibe_surf/backend/frontend/assets/tablet-smartphone-BG7aS4OL.js +6 -0
  1555. vibe_surf/backend/frontend/assets/tablets-BVvSHnaS.js +6 -0
  1556. vibe_surf/backend/frontend/assets/tag-Bs9C2NWs.js +6 -0
  1557. vibe_surf/backend/frontend/assets/tags-DEvGZIIh.js +6 -0
  1558. vibe_surf/backend/frontend/assets/tally-1-BjNjbWUj.js +6 -0
  1559. vibe_surf/backend/frontend/assets/tally-2-Bd0nQcFC.js +6 -0
  1560. vibe_surf/backend/frontend/assets/tally-3-DHrPKvJg.js +6 -0
  1561. vibe_surf/backend/frontend/assets/tally-4-DAUwA2aR.js +6 -0
  1562. vibe_surf/backend/frontend/assets/tally-5-CgAN8Y91.js +6 -0
  1563. vibe_surf/backend/frontend/assets/tangent-CRznV78Q.js +6 -0
  1564. vibe_surf/backend/frontend/assets/target-Bj2MJlO6.js +6 -0
  1565. vibe_surf/backend/frontend/assets/telescope-CyRzgTg4.js +6 -0
  1566. vibe_surf/backend/frontend/assets/temp-pat-1-BDqu2wpz.png +0 -0
  1567. vibe_surf/backend/frontend/assets/temp-pat-2-C_RVvOE_.png +0 -0
  1568. vibe_surf/backend/frontend/assets/temp-pat-3-Ci-rp5-q.png +0 -0
  1569. vibe_surf/backend/frontend/assets/temp-pat-m-1-D-qJT-j4.png +0 -0
  1570. vibe_surf/backend/frontend/assets/temp-pat-m-2-BFhrICvh.png +0 -0
  1571. vibe_surf/backend/frontend/assets/temp-pat-m-3-BJIIbDxb.png +0 -0
  1572. vibe_surf/backend/frontend/assets/tent-D1boPMJ_.js +6 -0
  1573. vibe_surf/backend/frontend/assets/tent-tree-DlMlV5UT.js +6 -0
  1574. vibe_surf/backend/frontend/assets/terminal-ByKLrVXr.js +6 -0
  1575. vibe_surf/backend/frontend/assets/test-tube-DjNpqEvy.js +6 -0
  1576. vibe_surf/backend/frontend/assets/test-tube-diagonal-kvKWvVpD.js +6 -0
  1577. vibe_surf/backend/frontend/assets/test-tubes-BUVuvPYq.js +6 -0
  1578. vibe_surf/backend/frontend/assets/text-BaPUPrRB.js +6 -0
  1579. vibe_surf/backend/frontend/assets/text-cursor-DjiJAhIO.js +6 -0
  1580. vibe_surf/backend/frontend/assets/text-cursor-input-DmFbkVcG.js +6 -0
  1581. vibe_surf/backend/frontend/assets/text-quote-DbZhBhba.js +6 -0
  1582. vibe_surf/backend/frontend/assets/text-search-D81mgubi.js +6 -0
  1583. vibe_surf/backend/frontend/assets/text-select-BCYAwryE.js +6 -0
  1584. vibe_surf/backend/frontend/assets/theater-BF8yCQZ3.js +6 -0
  1585. vibe_surf/backend/frontend/assets/thermometer-Dz0qc69z.js +6 -0
  1586. vibe_surf/backend/frontend/assets/thermometer-snowflake-BZ8Fol5x.js +6 -0
  1587. vibe_surf/backend/frontend/assets/thermometer-sun-DgmdNSSx.js +6 -0
  1588. vibe_surf/backend/frontend/assets/thumbs-down-6gCm1bFP.js +6 -0
  1589. vibe_surf/backend/frontend/assets/thumbs-up-BpkAnOkj.js +6 -0
  1590. vibe_surf/backend/frontend/assets/ticket-CZ6VZCic.js +6 -0
  1591. vibe_surf/backend/frontend/assets/ticket-check-CwERJSTS.js +6 -0
  1592. vibe_surf/backend/frontend/assets/ticket-minus-CJ8o42r1.js +6 -0
  1593. vibe_surf/backend/frontend/assets/ticket-percent-D9mgrzai.js +6 -0
  1594. vibe_surf/backend/frontend/assets/ticket-plus-Bf_MplVa.js +6 -0
  1595. vibe_surf/backend/frontend/assets/ticket-slash-CNukz3dP.js +6 -0
  1596. vibe_surf/backend/frontend/assets/ticket-x-DAGtm4Nf.js +6 -0
  1597. vibe_surf/backend/frontend/assets/tickets-Dlm-Pd3N.js +6 -0
  1598. vibe_surf/backend/frontend/assets/tickets-plane-C4lmqLQq.js +6 -0
  1599. vibe_surf/backend/frontend/assets/timer-0lTpmgXp.js +6 -0
  1600. vibe_surf/backend/frontend/assets/timer-off-BGqRyv1S.js +6 -0
  1601. vibe_surf/backend/frontend/assets/timer-reset-DdhKPXcy.js +6 -0
  1602. vibe_surf/backend/frontend/assets/toggle-left-De2ASTKW.js +6 -0
  1603. vibe_surf/backend/frontend/assets/toggle-right-NfpJqTaq.js +6 -0
  1604. vibe_surf/backend/frontend/assets/toilet-DcJuMKzv.js +6 -0
  1605. vibe_surf/backend/frontend/assets/tornado-BannseS-.js +6 -0
  1606. vibe_surf/backend/frontend/assets/torus-CxsKBH8D.js +6 -0
  1607. vibe_surf/backend/frontend/assets/touchpad-ENZl5mwQ.js +6 -0
  1608. vibe_surf/backend/frontend/assets/touchpad-off-Bs9XazIZ.js +6 -0
  1609. vibe_surf/backend/frontend/assets/tower-control-DOH63Gyd.js +6 -0
  1610. vibe_surf/backend/frontend/assets/toy-brick-CK9szegV.js +6 -0
  1611. vibe_surf/backend/frontend/assets/tractor-C4edkneR.js +6 -0
  1612. vibe_surf/backend/frontend/assets/traffic-cone-B7xJNOdC.js +6 -0
  1613. vibe_surf/backend/frontend/assets/train-front-DPkfW4fH.js +6 -0
  1614. vibe_surf/backend/frontend/assets/train-front-tunnel-Dc6i8ZmW.js +6 -0
  1615. vibe_surf/backend/frontend/assets/train-track-DFRUcPF4.js +6 -0
  1616. vibe_surf/backend/frontend/assets/tram-front-DnSEWr26.js +6 -0
  1617. vibe_surf/backend/frontend/assets/transgender-CwbUC-T0.js +6 -0
  1618. vibe_surf/backend/frontend/assets/trash-DSMPsj08.js +6 -0
  1619. vibe_surf/backend/frontend/assets/tree-deciduous-CMyD2rgs.js +6 -0
  1620. vibe_surf/backend/frontend/assets/tree-palm-ClbWCueR.js +6 -0
  1621. vibe_surf/backend/frontend/assets/tree-pine-CxCMH7RZ.js +6 -0
  1622. vibe_surf/backend/frontend/assets/trees-DeERVvec.js +6 -0
  1623. vibe_surf/backend/frontend/assets/trello-DwQeyG2C.js +6 -0
  1624. vibe_surf/backend/frontend/assets/trending-down-CuQxq0A3.js +6 -0
  1625. vibe_surf/backend/frontend/assets/trending-up-BDSGIJWY.js +6 -0
  1626. vibe_surf/backend/frontend/assets/trending-up-down-CSb_7X-_.js +6 -0
  1627. vibe_surf/backend/frontend/assets/triangle-Cc8gzj2X.js +6 -0
  1628. vibe_surf/backend/frontend/assets/triangle-alert-CzfSlrIp.js +6 -0
  1629. vibe_surf/backend/frontend/assets/triangle-dashed-CSlIdQSl.js +6 -0
  1630. vibe_surf/backend/frontend/assets/triangle-right-BIlbKFDC.js +6 -0
  1631. vibe_surf/backend/frontend/assets/trophy-CIFZUGnX.js +6 -0
  1632. vibe_surf/backend/frontend/assets/truck-Id_mHUOq.js +6 -0
  1633. vibe_surf/backend/frontend/assets/truck-electric-WgMKZnOH.js +6 -0
  1634. vibe_surf/backend/frontend/assets/turtle-0ek05Orw.js +6 -0
  1635. vibe_surf/backend/frontend/assets/tv-DLVWDmzW.js +6 -0
  1636. vibe_surf/backend/frontend/assets/tv-minimal-E0w-pb-R.js +6 -0
  1637. vibe_surf/backend/frontend/assets/tv-minimal-play-C8eivgTI.js +6 -0
  1638. vibe_surf/backend/frontend/assets/twitch-D6updjnG.js +6 -0
  1639. vibe_surf/backend/frontend/assets/twitter-Der_Ih7y.js +6 -0
  1640. vibe_surf/backend/frontend/assets/type-BZeEwGKH.js +6 -0
  1641. vibe_surf/backend/frontend/assets/type-outline-WvuVShMD.js +6 -0
  1642. vibe_surf/backend/frontend/assets/umbrella-BFiE5bFk.js +6 -0
  1643. vibe_surf/backend/frontend/assets/umbrella-off-CQKtt_HS.js +6 -0
  1644. vibe_surf/backend/frontend/assets/underline-eH-gfEgl.js +6 -0
  1645. vibe_surf/backend/frontend/assets/undo-2-CGpVoxxS.js +6 -0
  1646. vibe_surf/backend/frontend/assets/undo-BAkkNYmN.js +6 -0
  1647. vibe_surf/backend/frontend/assets/undo-dot-fxz9ZoUf.js +6 -0
  1648. vibe_surf/backend/frontend/assets/unfold-horizontal-Bz6GASed.js +6 -0
  1649. vibe_surf/backend/frontend/assets/unfold-vertical-DVuawiHD.js +6 -0
  1650. vibe_surf/backend/frontend/assets/ungroup-DZlCBfu8.js +6 -0
  1651. vibe_surf/backend/frontend/assets/university-DQQJPlHM.js +6 -0
  1652. vibe_surf/backend/frontend/assets/unlink-2-Bbf62oJC.js +6 -0
  1653. vibe_surf/backend/frontend/assets/unlink-rRnEYNBH.js +6 -0
  1654. vibe_surf/backend/frontend/assets/unplug-BE6bAKlE.js +6 -0
  1655. vibe_surf/backend/frontend/assets/upload-DgbNBlk6.js +6 -0
  1656. vibe_surf/backend/frontend/assets/usb-BsbOhQkP.js +6 -0
  1657. vibe_surf/backend/frontend/assets/use-post-add-user-s3pEdarP.js +1 -0
  1658. vibe_surf/backend/frontend/assets/user-C7_N9vjw.js +6 -0
  1659. vibe_surf/backend/frontend/assets/user-check-D85AcwGt.js +6 -0
  1660. vibe_surf/backend/frontend/assets/user-cog-BUSZoKWO.js +6 -0
  1661. vibe_surf/backend/frontend/assets/user-lock-DrG5znDk.js +6 -0
  1662. vibe_surf/backend/frontend/assets/user-minus-CjVZSxhC.js +6 -0
  1663. vibe_surf/backend/frontend/assets/user-pen-BllWYNRg.js +6 -0
  1664. vibe_surf/backend/frontend/assets/user-plus-Ct840ALN.js +6 -0
  1665. vibe_surf/backend/frontend/assets/user-round-D6DnOG0E.js +6 -0
  1666. vibe_surf/backend/frontend/assets/user-round-check-Ci15Wbid.js +6 -0
  1667. vibe_surf/backend/frontend/assets/user-round-cog-SrRmnnrG.js +6 -0
  1668. vibe_surf/backend/frontend/assets/user-round-minus-CZKo0fkN.js +6 -0
  1669. vibe_surf/backend/frontend/assets/user-round-pen-DQ88K1gY.js +6 -0
  1670. vibe_surf/backend/frontend/assets/user-round-plus-BtBHwnQH.js +6 -0
  1671. vibe_surf/backend/frontend/assets/user-round-search-mZx8k3ks.js +6 -0
  1672. vibe_surf/backend/frontend/assets/user-round-x-4MvMTCpy.js +6 -0
  1673. vibe_surf/backend/frontend/assets/user-search-CkEhATdm.js +6 -0
  1674. vibe_surf/backend/frontend/assets/user-x-DufZCLiX.js +6 -0
  1675. vibe_surf/backend/frontend/assets/users-DgOAHdb7.js +6 -0
  1676. vibe_surf/backend/frontend/assets/users-round-Bj4Zqvjj.js +6 -0
  1677. vibe_surf/backend/frontend/assets/utensils-CcfYVeqi.js +6 -0
  1678. vibe_surf/backend/frontend/assets/utensils-crossed-Daq7-gMB.js +6 -0
  1679. vibe_surf/backend/frontend/assets/utility-pole-BRYxk_9o.js +6 -0
  1680. vibe_surf/backend/frontend/assets/vanilla-picker-B6E6ObS_.js +8 -0
  1681. vibe_surf/backend/frontend/assets/variable-CQb_DxMu.js +6 -0
  1682. vibe_surf/backend/frontend/assets/vault-D7etPPcB.js +6 -0
  1683. vibe_surf/backend/frontend/assets/vegan-DhjhKnZM.js +6 -0
  1684. vibe_surf/backend/frontend/assets/venetian-mask-DGDNvUAT.js +6 -0
  1685. vibe_surf/backend/frontend/assets/venus-and-mars-BEW94wvT.js +6 -0
  1686. vibe_surf/backend/frontend/assets/venus-u9B-gdcz.js +6 -0
  1687. vibe_surf/backend/frontend/assets/vibrate-off-GMm1P59r.js +6 -0
  1688. vibe_surf/backend/frontend/assets/vibrate-ztsKQUo9.js +6 -0
  1689. vibe_surf/backend/frontend/assets/video-BRU-KCdj.js +6 -0
  1690. vibe_surf/backend/frontend/assets/video-off-UBhDkXSa.js +6 -0
  1691. vibe_surf/backend/frontend/assets/videotape-BnpqC2PU.js +6 -0
  1692. vibe_surf/backend/frontend/assets/view-SPlXqa2E.js +6 -0
  1693. vibe_surf/backend/frontend/assets/voicemail-CslFUibB.js +6 -0
  1694. vibe_surf/backend/frontend/assets/volleyball-YmSfEYj0.js +6 -0
  1695. vibe_surf/backend/frontend/assets/volume-1-DzSvYJXy.js +6 -0
  1696. vibe_surf/backend/frontend/assets/volume-2-CKYHuo73.js +6 -0
  1697. vibe_surf/backend/frontend/assets/volume-D2WpTg4b.js +6 -0
  1698. vibe_surf/backend/frontend/assets/volume-off-CXmQvaUO.js +6 -0
  1699. vibe_surf/backend/frontend/assets/volume-x-Dl4xNI1D.js +6 -0
  1700. vibe_surf/backend/frontend/assets/vote-DVUnQCxF.js +6 -0
  1701. vibe_surf/backend/frontend/assets/wallet-D9F1dFbt.js +6 -0
  1702. vibe_surf/backend/frontend/assets/wallet-cards-DkIuM2Gu.js +6 -0
  1703. vibe_surf/backend/frontend/assets/wallet-minimal-CUUsXAfP.js +6 -0
  1704. vibe_surf/backend/frontend/assets/wallpaper-BHliG6AQ.js +6 -0
  1705. vibe_surf/backend/frontend/assets/wand-sparkles-BA8i-2_I.js +6 -0
  1706. vibe_surf/backend/frontend/assets/wand-u2EI2dL2.js +6 -0
  1707. vibe_surf/backend/frontend/assets/warehouse-CxDEgPyp.js +6 -0
  1708. vibe_surf/backend/frontend/assets/washing-machine-CYoqAbT7.js +6 -0
  1709. vibe_surf/backend/frontend/assets/watch-eNq5oUsh.js +6 -0
  1710. vibe_surf/backend/frontend/assets/waves-Bs6o5G71.js +6 -0
  1711. vibe_surf/backend/frontend/assets/waves-ladder-0t2iIHt8.js +6 -0
  1712. vibe_surf/backend/frontend/assets/waypoints-DyScJk3j.js +6 -0
  1713. vibe_surf/backend/frontend/assets/webcam-BFZUWYUw.js +6 -0
  1714. vibe_surf/backend/frontend/assets/webhook-CMDaI4yk.js +6 -0
  1715. vibe_surf/backend/frontend/assets/webhook-off-DQzE1oMX.js +6 -0
  1716. vibe_surf/backend/frontend/assets/weight-g0EeSmAx.js +6 -0
  1717. vibe_surf/backend/frontend/assets/wheat-hvVtAPlc.js +6 -0
  1718. vibe_surf/backend/frontend/assets/wheat-off-6d_oRYIW.js +6 -0
  1719. vibe_surf/backend/frontend/assets/whole-word-CMHbYgQ-.js +6 -0
  1720. vibe_surf/backend/frontend/assets/wifi-CRHAo2Lb.js +6 -0
  1721. vibe_surf/backend/frontend/assets/wifi-high-BTElqamm.js +6 -0
  1722. vibe_surf/backend/frontend/assets/wifi-low-BFBJvE2C.js +6 -0
  1723. vibe_surf/backend/frontend/assets/wifi-off-DL1S7f79.js +6 -0
  1724. vibe_surf/backend/frontend/assets/wifi-pen-FkLT18-y.js +6 -0
  1725. vibe_surf/backend/frontend/assets/wifi-zero-koQAfMYN.js +6 -0
  1726. vibe_surf/backend/frontend/assets/wind-CgQDM8yC.js +6 -0
  1727. vibe_surf/backend/frontend/assets/wind-arrow-down-ByQJVZNf.js +6 -0
  1728. vibe_surf/backend/frontend/assets/wine-kngKIYWK.js +6 -0
  1729. vibe_surf/backend/frontend/assets/wine-off-DaVVtkyG.js +6 -0
  1730. vibe_surf/backend/frontend/assets/workflow-BBHA5vqf.js +6 -0
  1731. vibe_surf/backend/frontend/assets/worm-D8rJAL-s.js +6 -0
  1732. vibe_surf/backend/frontend/assets/wrap-text-s4fkGxHY.js +6 -0
  1733. vibe_surf/backend/frontend/assets/wrench-CYzg6B-q.js +6 -0
  1734. vibe_surf/backend/frontend/assets/youtube-BIzMVpJA.js +6 -0
  1735. vibe_surf/backend/frontend/assets/zap-nyAdqt4o.js +6 -0
  1736. vibe_surf/backend/frontend/assets/zap-off-Aii1CEgj.js +6 -0
  1737. vibe_surf/backend/frontend/assets/zoom-in-BNWeSenu.js +6 -0
  1738. vibe_surf/backend/frontend/assets/zoom-out-Bd2vIq2c.js +6 -0
  1739. vibe_surf/backend/frontend/favicon.ico +0 -0
  1740. vibe_surf/backend/frontend/index.html +24 -0
  1741. vibe_surf/backend/frontend/manifest.json +31 -0
  1742. vibe_surf/backend/llm_config.py +43 -0
  1743. vibe_surf/backend/main.py +707 -130
  1744. vibe_surf/backend/shared_state.py +482 -26
  1745. vibe_surf/backend/utils/encryption.py +40 -4
  1746. vibe_surf/backend/utils/llm_factory.py +27 -2
  1747. vibe_surf/backend/utils/utils.py +42 -0
  1748. vibe_surf/browser/agen_browser_profile.py +5 -0
  1749. vibe_surf/browser/agent_browser_session.py +226 -119
  1750. vibe_surf/browser/browser_manager.py +5 -4
  1751. vibe_surf/browser/find_page_element.py +1100 -0
  1752. vibe_surf/browser/page_operations.py +222 -0
  1753. vibe_surf/browser/watchdogs/action_watchdog.py +1 -83
  1754. vibe_surf/browser/watchdogs/dom_watchdog.py +17 -5
  1755. vibe_surf/chrome_extension/background.js +96 -55
  1756. vibe_surf/chrome_extension/config.js +10 -1
  1757. vibe_surf/chrome_extension/manifest.json +15 -9
  1758. vibe_surf/chrome_extension/scripts/api-client.js +171 -11
  1759. vibe_surf/chrome_extension/scripts/file-manager.js +53 -12
  1760. vibe_surf/chrome_extension/scripts/main.js +46 -11
  1761. vibe_surf/chrome_extension/scripts/session-manager.js +30 -4
  1762. vibe_surf/chrome_extension/scripts/settings-general.js +513 -0
  1763. vibe_surf/chrome_extension/scripts/settings-integrations.js +998 -0
  1764. vibe_surf/chrome_extension/scripts/settings-manager.js +72 -1730
  1765. vibe_surf/chrome_extension/scripts/settings-profiles.js +1330 -0
  1766. vibe_surf/chrome_extension/scripts/settings-workflow.js +2911 -0
  1767. vibe_surf/chrome_extension/scripts/ui-manager.js +1354 -503
  1768. vibe_surf/chrome_extension/scripts/version.js +3 -0
  1769. vibe_surf/chrome_extension/sidepanel.html +711 -18
  1770. vibe_surf/chrome_extension/styles/components.css +146 -0
  1771. vibe_surf/chrome_extension/styles/input.css +115 -0
  1772. vibe_surf/chrome_extension/styles/layout.css +2 -0
  1773. vibe_surf/chrome_extension/styles/settings-integrations.css +945 -0
  1774. vibe_surf/chrome_extension/styles/settings-modal.css +7 -3
  1775. vibe_surf/chrome_extension/styles/settings-responsive.css +37 -5
  1776. vibe_surf/chrome_extension/styles/settings-workflow.css +2347 -0
  1777. vibe_surf/cli.py +154 -11
  1778. vibe_surf/langflow/__init__.py +0 -0
  1779. vibe_surf/langflow/__main__.py +954 -0
  1780. vibe_surf/langflow/alembic/README +1 -0
  1781. vibe_surf/langflow/alembic/env.py +124 -0
  1782. vibe_surf/langflow/alembic/script.py.mako +31 -0
  1783. vibe_surf/langflow/alembic/versions/006b3990db50_add_unique_constraints.py +66 -0
  1784. vibe_surf/langflow/alembic/versions/012fb73ac359_add_folder_table.py +82 -0
  1785. vibe_surf/langflow/alembic/versions/0882f9657f22_encrypt_existing_mcp_auth_settings_.py +122 -0
  1786. vibe_surf/langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +71 -0
  1787. vibe_surf/langflow/alembic/versions/0b8757876a7c_.py +32 -0
  1788. vibe_surf/langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +51 -0
  1789. vibe_surf/langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +66 -0
  1790. vibe_surf/langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +337 -0
  1791. vibe_surf/langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +43 -0
  1792. vibe_surf/langflow/alembic/versions/1cb603706752_modify_uniqueness_constraint_on_file_.py +279 -0
  1793. vibe_surf/langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +71 -0
  1794. vibe_surf/langflow/alembic/versions/1eab2c3eb45e_event_error.py +53 -0
  1795. vibe_surf/langflow/alembic/versions/1ef9c4f3765d_.py +54 -0
  1796. vibe_surf/langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +43 -0
  1797. vibe_surf/langflow/alembic/versions/260dbcc8b680_adds_tables.py +151 -0
  1798. vibe_surf/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +44 -0
  1799. vibe_surf/langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +55 -0
  1800. vibe_surf/langflow/alembic/versions/3162e83e485f_add_auth_settings_to_folder_and_merge.py +58 -0
  1801. vibe_surf/langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +55 -0
  1802. vibe_surf/langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +124 -0
  1803. vibe_surf/langflow/alembic/versions/58b28437a398_modify_nullable.py +66 -0
  1804. vibe_surf/langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +39 -0
  1805. vibe_surf/langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +45 -0
  1806. vibe_surf/langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +50 -0
  1807. vibe_surf/langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +54 -0
  1808. vibe_surf/langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +57 -0
  1809. vibe_surf/langflow/alembic/versions/6e7b581b5648_fix_nullable.py +59 -0
  1810. vibe_surf/langflow/alembic/versions/7843803a87b5_store_updates.py +55 -0
  1811. vibe_surf/langflow/alembic/versions/79e675cb6752_change_datetime_type.py +124 -0
  1812. vibe_surf/langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +74 -0
  1813. vibe_surf/langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +51 -0
  1814. vibe_surf/langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +43 -0
  1815. vibe_surf/langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +52 -0
  1816. vibe_surf/langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +101 -0
  1817. vibe_surf/langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +73 -0
  1818. vibe_surf/langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +52 -0
  1819. vibe_surf/langflow/alembic/versions/d066bfd22890_add_message_table.py +52 -0
  1820. vibe_surf/langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +41 -0
  1821. vibe_surf/langflow/alembic/versions/d37bc4322900_drop_single_constraint_on_files_name_.py +169 -0
  1822. vibe_surf/langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +41 -0
  1823. vibe_surf/langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +75 -0
  1824. vibe_surf/langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +49 -0
  1825. vibe_surf/langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +43 -0
  1826. vibe_surf/langflow/alembic/versions/e3bc869fa272_fix_nullable.py +68 -0
  1827. vibe_surf/langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +38 -0
  1828. vibe_surf/langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +49 -0
  1829. vibe_surf/langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +31 -0
  1830. vibe_surf/langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +49 -0
  1831. vibe_surf/langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +37 -0
  1832. vibe_surf/langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +42 -0
  1833. vibe_surf/langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +60 -0
  1834. vibe_surf/langflow/alembic.ini +113 -0
  1835. vibe_surf/langflow/api/__init__.py +5 -0
  1836. vibe_surf/langflow/api/build.py +557 -0
  1837. vibe_surf/langflow/api/disconnect.py +31 -0
  1838. vibe_surf/langflow/api/health_check_router.py +65 -0
  1839. vibe_surf/langflow/api/limited_background_tasks.py +29 -0
  1840. vibe_surf/langflow/api/log_router.py +103 -0
  1841. vibe_surf/langflow/api/router.py +63 -0
  1842. vibe_surf/langflow/api/schemas.py +14 -0
  1843. vibe_surf/langflow/api/utils.py +381 -0
  1844. vibe_surf/langflow/api/v1/__init__.py +41 -0
  1845. vibe_surf/langflow/api/v1/api_key.py +88 -0
  1846. vibe_surf/langflow/api/v1/auth_helpers.py +75 -0
  1847. vibe_surf/langflow/api/v1/base.py +50 -0
  1848. vibe_surf/langflow/api/v1/callback.py +136 -0
  1849. vibe_surf/langflow/api/v1/chat.py +675 -0
  1850. vibe_surf/langflow/api/v1/endpoints.py +800 -0
  1851. vibe_surf/langflow/api/v1/files.py +193 -0
  1852. vibe_surf/langflow/api/v1/flows.py +579 -0
  1853. vibe_surf/langflow/api/v1/folders.py +95 -0
  1854. vibe_surf/langflow/api/v1/knowledge_bases.py +452 -0
  1855. vibe_surf/langflow/api/v1/login.py +166 -0
  1856. vibe_surf/langflow/api/v1/mcp.py +137 -0
  1857. vibe_surf/langflow/api/v1/mcp_projects.py +1230 -0
  1858. vibe_surf/langflow/api/v1/mcp_utils.py +348 -0
  1859. vibe_surf/langflow/api/v1/monitor.py +203 -0
  1860. vibe_surf/langflow/api/v1/openai_responses.py +561 -0
  1861. vibe_surf/langflow/api/v1/projects.py +447 -0
  1862. vibe_surf/langflow/api/v1/schemas.py +488 -0
  1863. vibe_surf/langflow/api/v1/starter_projects.py +17 -0
  1864. vibe_surf/langflow/api/v1/store.py +182 -0
  1865. vibe_surf/langflow/api/v1/users.py +146 -0
  1866. vibe_surf/langflow/api/v1/validate.py +48 -0
  1867. vibe_surf/langflow/api/v1/variable.py +106 -0
  1868. vibe_surf/langflow/api/v1/voice_mode.py +1375 -0
  1869. vibe_surf/langflow/api/v2/__init__.py +7 -0
  1870. vibe_surf/langflow/api/v2/files.py +532 -0
  1871. vibe_surf/langflow/api/v2/mcp.py +330 -0
  1872. vibe_surf/langflow/base/__init__.py +0 -0
  1873. vibe_surf/langflow/base/agents/__init__.py +0 -0
  1874. vibe_surf/langflow/base/agents/agent.py +267 -0
  1875. vibe_surf/langflow/base/agents/callback.py +130 -0
  1876. vibe_surf/langflow/base/agents/context.py +109 -0
  1877. vibe_surf/langflow/base/agents/crewai/__init__.py +0 -0
  1878. vibe_surf/langflow/base/agents/crewai/crew.py +231 -0
  1879. vibe_surf/langflow/base/agents/crewai/tasks.py +12 -0
  1880. vibe_surf/langflow/base/agents/default_prompts.py +23 -0
  1881. vibe_surf/langflow/base/agents/errors.py +15 -0
  1882. vibe_surf/langflow/base/agents/events.py +346 -0
  1883. vibe_surf/langflow/base/agents/utils.py +205 -0
  1884. vibe_surf/langflow/base/astra_assistants/__init__.py +0 -0
  1885. vibe_surf/langflow/base/astra_assistants/util.py +171 -0
  1886. vibe_surf/langflow/base/chains/__init__.py +0 -0
  1887. vibe_surf/langflow/base/chains/model.py +19 -0
  1888. vibe_surf/langflow/base/composio/__init__.py +0 -0
  1889. vibe_surf/langflow/base/composio/composio_base.py +1301 -0
  1890. vibe_surf/langflow/base/compressors/__init__.py +0 -0
  1891. vibe_surf/langflow/base/compressors/model.py +60 -0
  1892. vibe_surf/langflow/base/constants.py +46 -0
  1893. vibe_surf/langflow/base/curl/__init__.py +0 -0
  1894. vibe_surf/langflow/base/curl/parse.py +188 -0
  1895. vibe_surf/langflow/base/data/__init__.py +5 -0
  1896. vibe_surf/langflow/base/data/base_file.py +698 -0
  1897. vibe_surf/langflow/base/data/docling_utils.py +280 -0
  1898. vibe_surf/langflow/base/data/utils.py +198 -0
  1899. vibe_surf/langflow/base/document_transformers/__init__.py +0 -0
  1900. vibe_surf/langflow/base/document_transformers/model.py +43 -0
  1901. vibe_surf/langflow/base/embeddings/__init__.py +0 -0
  1902. vibe_surf/langflow/base/embeddings/aiml_embeddings.py +62 -0
  1903. vibe_surf/langflow/base/embeddings/model.py +26 -0
  1904. vibe_surf/langflow/base/flow_processing/__init__.py +0 -0
  1905. vibe_surf/langflow/base/flow_processing/utils.py +86 -0
  1906. vibe_surf/langflow/base/huggingface/__init__.py +0 -0
  1907. vibe_surf/langflow/base/huggingface/model_bridge.py +133 -0
  1908. vibe_surf/langflow/base/io/__init__.py +0 -0
  1909. vibe_surf/langflow/base/io/chat.py +20 -0
  1910. vibe_surf/langflow/base/io/text.py +22 -0
  1911. vibe_surf/langflow/base/knowledge_bases/__init__.py +0 -0
  1912. vibe_surf/langflow/base/knowledge_bases/knowledge_base_utils.py +137 -0
  1913. vibe_surf/langflow/base/langchain_utilities/__init__.py +0 -0
  1914. vibe_surf/langflow/base/langchain_utilities/model.py +35 -0
  1915. vibe_surf/langflow/base/langchain_utilities/spider_constants.py +1 -0
  1916. vibe_surf/langflow/base/langwatch/__init__.py +0 -0
  1917. vibe_surf/langflow/base/langwatch/utils.py +18 -0
  1918. vibe_surf/langflow/base/mcp/__init__.py +0 -0
  1919. vibe_surf/langflow/base/mcp/constants.py +2 -0
  1920. vibe_surf/langflow/base/mcp/util.py +1544 -0
  1921. vibe_surf/langflow/base/memory/__init__.py +0 -0
  1922. vibe_surf/langflow/base/memory/memory.py +49 -0
  1923. vibe_surf/langflow/base/memory/model.py +38 -0
  1924. vibe_surf/langflow/base/models/__init__.py +3 -0
  1925. vibe_surf/langflow/base/models/aiml_constants.py +51 -0
  1926. vibe_surf/langflow/base/models/anthropic_constants.py +49 -0
  1927. vibe_surf/langflow/base/models/aws_constants.py +151 -0
  1928. vibe_surf/langflow/base/models/chat_result.py +76 -0
  1929. vibe_surf/langflow/base/models/google_generative_ai_constants.py +70 -0
  1930. vibe_surf/langflow/base/models/groq_constants.py +134 -0
  1931. vibe_surf/langflow/base/models/model.py +375 -0
  1932. vibe_surf/langflow/base/models/model_input_constants.py +299 -0
  1933. vibe_surf/langflow/base/models/model_metadata.py +41 -0
  1934. vibe_surf/langflow/base/models/model_utils.py +8 -0
  1935. vibe_surf/langflow/base/models/novita_constants.py +35 -0
  1936. vibe_surf/langflow/base/models/ollama_constants.py +49 -0
  1937. vibe_surf/langflow/base/models/openai_constants.py +121 -0
  1938. vibe_surf/langflow/base/models/sambanova_constants.py +18 -0
  1939. vibe_surf/langflow/base/processing/__init__.py +0 -0
  1940. vibe_surf/langflow/base/prompts/__init__.py +0 -0
  1941. vibe_surf/langflow/base/prompts/api_utils.py +224 -0
  1942. vibe_surf/langflow/base/prompts/utils.py +61 -0
  1943. vibe_surf/langflow/base/textsplitters/__init__.py +0 -0
  1944. vibe_surf/langflow/base/textsplitters/model.py +28 -0
  1945. vibe_surf/langflow/base/tools/__init__.py +0 -0
  1946. vibe_surf/langflow/base/tools/base.py +26 -0
  1947. vibe_surf/langflow/base/tools/component_tool.py +324 -0
  1948. vibe_surf/langflow/base/tools/constants.py +49 -0
  1949. vibe_surf/langflow/base/tools/flow_tool.py +131 -0
  1950. vibe_surf/langflow/base/tools/run_flow.py +227 -0
  1951. vibe_surf/langflow/base/vectorstores/__init__.py +0 -0
  1952. vibe_surf/langflow/base/vectorstores/model.py +193 -0
  1953. vibe_surf/langflow/base/vectorstores/utils.py +22 -0
  1954. vibe_surf/langflow/base/vectorstores/vector_store_connection_decorator.py +52 -0
  1955. vibe_surf/langflow/cli/__init__.py +0 -0
  1956. vibe_surf/langflow/cli/progress.py +233 -0
  1957. vibe_surf/langflow/components/FAISS/__init__.py +34 -0
  1958. vibe_surf/langflow/components/FAISS/faiss.py +111 -0
  1959. vibe_surf/langflow/components/Notion/__init__.py +19 -0
  1960. vibe_surf/langflow/components/Notion/add_content_to_page.py +269 -0
  1961. vibe_surf/langflow/components/Notion/create_page.py +94 -0
  1962. vibe_surf/langflow/components/Notion/list_database_properties.py +68 -0
  1963. vibe_surf/langflow/components/Notion/list_pages.py +122 -0
  1964. vibe_surf/langflow/components/Notion/list_users.py +77 -0
  1965. vibe_surf/langflow/components/Notion/page_content_viewer.py +93 -0
  1966. vibe_surf/langflow/components/Notion/search.py +111 -0
  1967. vibe_surf/langflow/components/Notion/update_page_property.py +114 -0
  1968. vibe_surf/langflow/components/__init__.py +270 -0
  1969. vibe_surf/langflow/components/_importing.py +37 -0
  1970. vibe_surf/langflow/components/agentql/__init__.py +3 -0
  1971. vibe_surf/langflow/components/agentql/agentql_api.py +151 -0
  1972. vibe_surf/langflow/components/agents/__init__.py +4 -0
  1973. vibe_surf/langflow/components/agents/agent.py +608 -0
  1974. vibe_surf/langflow/components/agents/mcp_component.py +511 -0
  1975. vibe_surf/langflow/components/aiml/__init__.py +37 -0
  1976. vibe_surf/langflow/components/aiml/aiml.py +115 -0
  1977. vibe_surf/langflow/components/aiml/aiml_embeddings.py +37 -0
  1978. vibe_surf/langflow/components/amazon/__init__.py +36 -0
  1979. vibe_surf/langflow/components/amazon/amazon_bedrock_embedding.py +109 -0
  1980. vibe_surf/langflow/components/amazon/amazon_bedrock_model.py +124 -0
  1981. vibe_surf/langflow/components/amazon/s3_bucket_uploader.py +211 -0
  1982. vibe_surf/langflow/components/anthropic/__init__.py +34 -0
  1983. vibe_surf/langflow/components/anthropic/anthropic.py +187 -0
  1984. vibe_surf/langflow/components/apify/__init__.py +5 -0
  1985. vibe_surf/langflow/components/apify/apify_actor.py +325 -0
  1986. vibe_surf/langflow/components/arxiv/__init__.py +3 -0
  1987. vibe_surf/langflow/components/arxiv/arxiv.py +163 -0
  1988. vibe_surf/langflow/components/assemblyai/__init__.py +46 -0
  1989. vibe_surf/langflow/components/assemblyai/assemblyai_get_subtitles.py +83 -0
  1990. vibe_surf/langflow/components/assemblyai/assemblyai_lemur.py +183 -0
  1991. vibe_surf/langflow/components/assemblyai/assemblyai_list_transcripts.py +95 -0
  1992. vibe_surf/langflow/components/assemblyai/assemblyai_poll_transcript.py +72 -0
  1993. vibe_surf/langflow/components/assemblyai/assemblyai_start_transcript.py +188 -0
  1994. vibe_surf/langflow/components/azure/__init__.py +37 -0
  1995. vibe_surf/langflow/components/azure/azure_openai.py +95 -0
  1996. vibe_surf/langflow/components/azure/azure_openai_embeddings.py +83 -0
  1997. vibe_surf/langflow/components/baidu/__init__.py +32 -0
  1998. vibe_surf/langflow/components/baidu/baidu_qianfan_chat.py +113 -0
  1999. vibe_surf/langflow/components/bing/__init__.py +3 -0
  2000. vibe_surf/langflow/components/bing/bing_search_api.py +61 -0
  2001. vibe_surf/langflow/components/cassandra/__init__.py +40 -0
  2002. vibe_surf/langflow/components/cassandra/cassandra.py +264 -0
  2003. vibe_surf/langflow/components/cassandra/cassandra_chat.py +92 -0
  2004. vibe_surf/langflow/components/cassandra/cassandra_graph.py +238 -0
  2005. vibe_surf/langflow/components/chains/__init__.py +0 -0
  2006. vibe_surf/langflow/components/chroma/__init__.py +34 -0
  2007. vibe_surf/langflow/components/chroma/chroma.py +169 -0
  2008. vibe_surf/langflow/components/cleanlab/__init__.py +40 -0
  2009. vibe_surf/langflow/components/cleanlab/cleanlab_evaluator.py +157 -0
  2010. vibe_surf/langflow/components/cleanlab/cleanlab_rag_evaluator.py +254 -0
  2011. vibe_surf/langflow/components/cleanlab/cleanlab_remediator.py +131 -0
  2012. vibe_surf/langflow/components/clickhouse/__init__.py +34 -0
  2013. vibe_surf/langflow/components/clickhouse/clickhouse.py +135 -0
  2014. vibe_surf/langflow/components/cloudflare/__init__.py +32 -0
  2015. vibe_surf/langflow/components/cloudflare/cloudflare.py +81 -0
  2016. vibe_surf/langflow/components/cohere/__init__.py +40 -0
  2017. vibe_surf/langflow/components/cohere/cohere_embeddings.py +81 -0
  2018. vibe_surf/langflow/components/cohere/cohere_models.py +46 -0
  2019. vibe_surf/langflow/components/cohere/cohere_rerank.py +51 -0
  2020. vibe_surf/langflow/components/composio/__init__.py +73 -0
  2021. vibe_surf/langflow/components/composio/composio_api.py +279 -0
  2022. vibe_surf/langflow/components/composio/dropbox_compnent.py +11 -0
  2023. vibe_surf/langflow/components/composio/github_composio.py +11 -0
  2024. vibe_surf/langflow/components/composio/gmail_composio.py +38 -0
  2025. vibe_surf/langflow/components/composio/googlecalendar_composio.py +11 -0
  2026. vibe_surf/langflow/components/composio/googlemeet_composio.py +11 -0
  2027. vibe_surf/langflow/components/composio/googletasks_composio.py +8 -0
  2028. vibe_surf/langflow/components/composio/linear_composio.py +11 -0
  2029. vibe_surf/langflow/components/composio/outlook_composio.py +11 -0
  2030. vibe_surf/langflow/components/composio/reddit_composio.py +11 -0
  2031. vibe_surf/langflow/components/composio/slack_composio.py +11 -0
  2032. vibe_surf/langflow/components/composio/slackbot_composio.py +11 -0
  2033. vibe_surf/langflow/components/composio/supabase_composio.py +11 -0
  2034. vibe_surf/langflow/components/composio/todoist_composio.py +11 -0
  2035. vibe_surf/langflow/components/composio/youtube_composio.py +11 -0
  2036. vibe_surf/langflow/components/confluence/__init__.py +3 -0
  2037. vibe_surf/langflow/components/confluence/confluence.py +84 -0
  2038. vibe_surf/langflow/components/couchbase/__init__.py +34 -0
  2039. vibe_surf/langflow/components/couchbase/couchbase.py +102 -0
  2040. vibe_surf/langflow/components/crewai/__init__.py +49 -0
  2041. vibe_surf/langflow/components/crewai/crewai.py +108 -0
  2042. vibe_surf/langflow/components/crewai/hierarchical_crew.py +47 -0
  2043. vibe_surf/langflow/components/crewai/hierarchical_task.py +45 -0
  2044. vibe_surf/langflow/components/crewai/sequential_crew.py +53 -0
  2045. vibe_surf/langflow/components/crewai/sequential_task.py +74 -0
  2046. vibe_surf/langflow/components/crewai/sequential_task_agent.py +144 -0
  2047. vibe_surf/langflow/components/custom_component/__init__.py +34 -0
  2048. vibe_surf/langflow/components/custom_component/custom_component.py +31 -0
  2049. vibe_surf/langflow/components/data/__init__.py +25 -0
  2050. vibe_surf/langflow/components/data/api_request.py +555 -0
  2051. vibe_surf/langflow/components/data/csv_to_data.py +96 -0
  2052. vibe_surf/langflow/components/data/directory.py +113 -0
  2053. vibe_surf/langflow/components/data/file.py +632 -0
  2054. vibe_surf/langflow/components/data/json_to_data.py +99 -0
  2055. vibe_surf/langflow/components/data/news_search.py +164 -0
  2056. vibe_surf/langflow/components/data/rss.py +69 -0
  2057. vibe_surf/langflow/components/data/sql_executor.py +99 -0
  2058. vibe_surf/langflow/components/data/url.py +299 -0
  2059. vibe_surf/langflow/components/data/web_search.py +112 -0
  2060. vibe_surf/langflow/components/data/webhook.py +56 -0
  2061. vibe_surf/langflow/components/datastax/__init__.py +70 -0
  2062. vibe_surf/langflow/components/datastax/astra_assistant_manager.py +306 -0
  2063. vibe_surf/langflow/components/datastax/astra_db.py +68 -0
  2064. vibe_surf/langflow/components/datastax/astra_vectorize.py +122 -0
  2065. vibe_surf/langflow/components/datastax/astradb_cql.py +314 -0
  2066. vibe_surf/langflow/components/datastax/astradb_graph.py +326 -0
  2067. vibe_surf/langflow/components/datastax/astradb_tool.py +418 -0
  2068. vibe_surf/langflow/components/datastax/astradb_vectorstore.py +1292 -0
  2069. vibe_surf/langflow/components/datastax/create_assistant.py +58 -0
  2070. vibe_surf/langflow/components/datastax/create_thread.py +32 -0
  2071. vibe_surf/langflow/components/datastax/dotenv.py +35 -0
  2072. vibe_surf/langflow/components/datastax/get_assistant.py +37 -0
  2073. vibe_surf/langflow/components/datastax/getenvvar.py +30 -0
  2074. vibe_surf/langflow/components/datastax/graph_rag.py +141 -0
  2075. vibe_surf/langflow/components/datastax/hcd.py +314 -0
  2076. vibe_surf/langflow/components/datastax/list_assistants.py +25 -0
  2077. vibe_surf/langflow/components/datastax/run.py +89 -0
  2078. vibe_surf/langflow/components/deactivated/__init__.py +19 -0
  2079. vibe_surf/langflow/components/deactivated/amazon_kendra.py +66 -0
  2080. vibe_surf/langflow/components/deactivated/chat_litellm_model.py +158 -0
  2081. vibe_surf/langflow/components/deactivated/code_block_extractor.py +26 -0
  2082. vibe_surf/langflow/components/deactivated/documents_to_data.py +22 -0
  2083. vibe_surf/langflow/components/deactivated/embed.py +16 -0
  2084. vibe_surf/langflow/components/deactivated/extract_key_from_data.py +46 -0
  2085. vibe_surf/langflow/components/deactivated/json_document_builder.py +59 -0
  2086. vibe_surf/langflow/components/deactivated/list_flows.py +20 -0
  2087. vibe_surf/langflow/components/deactivated/merge_data.py +93 -0
  2088. vibe_surf/langflow/components/deactivated/message.py +37 -0
  2089. vibe_surf/langflow/components/deactivated/metal.py +54 -0
  2090. vibe_surf/langflow/components/deactivated/multi_query.py +59 -0
  2091. vibe_surf/langflow/components/deactivated/retriever.py +43 -0
  2092. vibe_surf/langflow/components/deactivated/selective_passthrough.py +77 -0
  2093. vibe_surf/langflow/components/deactivated/should_run_next.py +40 -0
  2094. vibe_surf/langflow/components/deactivated/split_text.py +63 -0
  2095. vibe_surf/langflow/components/deactivated/store_message.py +24 -0
  2096. vibe_surf/langflow/components/deactivated/sub_flow.py +124 -0
  2097. vibe_surf/langflow/components/deactivated/vectara_self_query.py +76 -0
  2098. vibe_surf/langflow/components/deactivated/vector_store.py +24 -0
  2099. vibe_surf/langflow/components/deepseek/__init__.py +34 -0
  2100. vibe_surf/langflow/components/deepseek/deepseek.py +136 -0
  2101. vibe_surf/langflow/components/docling/__init__.py +43 -0
  2102. vibe_surf/langflow/components/docling/chunk_docling_document.py +186 -0
  2103. vibe_surf/langflow/components/docling/docling_inline.py +249 -0
  2104. vibe_surf/langflow/components/docling/docling_remote.py +192 -0
  2105. vibe_surf/langflow/components/docling/export_docling_document.py +117 -0
  2106. vibe_surf/langflow/components/documentloaders/__init__.py +0 -0
  2107. vibe_surf/langflow/components/duckduckgo/__init__.py +3 -0
  2108. vibe_surf/langflow/components/duckduckgo/duck_duck_go_search_run.py +92 -0
  2109. vibe_surf/langflow/components/elastic/__init__.py +37 -0
  2110. vibe_surf/langflow/components/elastic/elasticsearch.py +267 -0
  2111. vibe_surf/langflow/components/elastic/opensearch.py +243 -0
  2112. vibe_surf/langflow/components/embeddings/__init__.py +37 -0
  2113. vibe_surf/langflow/components/embeddings/similarity.py +77 -0
  2114. vibe_surf/langflow/components/embeddings/text_embedder.py +65 -0
  2115. vibe_surf/langflow/components/exa/__init__.py +3 -0
  2116. vibe_surf/langflow/components/exa/exa_search.py +68 -0
  2117. vibe_surf/langflow/components/firecrawl/__init__.py +43 -0
  2118. vibe_surf/langflow/components/firecrawl/firecrawl_crawl_api.py +88 -0
  2119. vibe_surf/langflow/components/firecrawl/firecrawl_extract_api.py +136 -0
  2120. vibe_surf/langflow/components/firecrawl/firecrawl_map_api.py +89 -0
  2121. vibe_surf/langflow/components/firecrawl/firecrawl_scrape_api.py +73 -0
  2122. vibe_surf/langflow/components/git/__init__.py +4 -0
  2123. vibe_surf/langflow/components/git/git.py +262 -0
  2124. vibe_surf/langflow/components/git/gitextractor.py +196 -0
  2125. vibe_surf/langflow/components/glean/__init__.py +3 -0
  2126. vibe_surf/langflow/components/glean/glean_search_api.py +173 -0
  2127. vibe_surf/langflow/components/google/__init__.py +17 -0
  2128. vibe_surf/langflow/components/google/gmail.py +193 -0
  2129. vibe_surf/langflow/components/google/google_bq_sql_executor.py +157 -0
  2130. vibe_surf/langflow/components/google/google_drive.py +92 -0
  2131. vibe_surf/langflow/components/google/google_drive_search.py +152 -0
  2132. vibe_surf/langflow/components/google/google_generative_ai.py +147 -0
  2133. vibe_surf/langflow/components/google/google_generative_ai_embeddings.py +141 -0
  2134. vibe_surf/langflow/components/google/google_oauth_token.py +89 -0
  2135. vibe_surf/langflow/components/google/google_search_api_core.py +68 -0
  2136. vibe_surf/langflow/components/groq/__init__.py +34 -0
  2137. vibe_surf/langflow/components/groq/groq.py +140 -0
  2138. vibe_surf/langflow/components/helpers/__init__.py +52 -0
  2139. vibe_surf/langflow/components/helpers/calculator_core.py +89 -0
  2140. vibe_surf/langflow/components/helpers/create_list.py +40 -0
  2141. vibe_surf/langflow/components/helpers/current_date.py +42 -0
  2142. vibe_surf/langflow/components/helpers/id_generator.py +42 -0
  2143. vibe_surf/langflow/components/helpers/memory.py +253 -0
  2144. vibe_surf/langflow/components/helpers/output_parser.py +46 -0
  2145. vibe_surf/langflow/components/helpers/store_message.py +91 -0
  2146. vibe_surf/langflow/components/homeassistant/__init__.py +7 -0
  2147. vibe_surf/langflow/components/homeassistant/home_assistant_control.py +152 -0
  2148. vibe_surf/langflow/components/homeassistant/list_home_assistant_states.py +137 -0
  2149. vibe_surf/langflow/components/huggingface/__init__.py +37 -0
  2150. vibe_surf/langflow/components/huggingface/huggingface.py +199 -0
  2151. vibe_surf/langflow/components/huggingface/huggingface_inference_api.py +106 -0
  2152. vibe_surf/langflow/components/ibm/__init__.py +34 -0
  2153. vibe_surf/langflow/components/ibm/watsonx.py +203 -0
  2154. vibe_surf/langflow/components/ibm/watsonx_embeddings.py +135 -0
  2155. vibe_surf/langflow/components/icosacomputing/__init__.py +5 -0
  2156. vibe_surf/langflow/components/icosacomputing/combinatorial_reasoner.py +84 -0
  2157. vibe_surf/langflow/components/input_output/__init__.py +38 -0
  2158. vibe_surf/langflow/components/input_output/chat.py +99 -0
  2159. vibe_surf/langflow/components/input_output/chat_output.py +169 -0
  2160. vibe_surf/langflow/components/input_output/text.py +27 -0
  2161. vibe_surf/langflow/components/input_output/text_output.py +29 -0
  2162. vibe_surf/langflow/components/jigsawstack/__init__.py +23 -0
  2163. vibe_surf/langflow/components/jigsawstack/ai_scrape.py +126 -0
  2164. vibe_surf/langflow/components/jigsawstack/ai_web_search.py +136 -0
  2165. vibe_surf/langflow/components/jigsawstack/file_read.py +115 -0
  2166. vibe_surf/langflow/components/jigsawstack/file_upload.py +94 -0
  2167. vibe_surf/langflow/components/jigsawstack/image_generation.py +205 -0
  2168. vibe_surf/langflow/components/jigsawstack/nsfw.py +60 -0
  2169. vibe_surf/langflow/components/jigsawstack/object_detection.py +124 -0
  2170. vibe_surf/langflow/components/jigsawstack/sentiment.py +112 -0
  2171. vibe_surf/langflow/components/jigsawstack/text_to_sql.py +90 -0
  2172. vibe_surf/langflow/components/jigsawstack/text_translate.py +77 -0
  2173. vibe_surf/langflow/components/jigsawstack/vocr.py +107 -0
  2174. vibe_surf/langflow/components/knowledge_bases/__init__.py +34 -0
  2175. vibe_surf/langflow/components/knowledge_bases/ingestion.py +697 -0
  2176. vibe_surf/langflow/components/knowledge_bases/retrieval.py +264 -0
  2177. vibe_surf/langflow/components/langchain_utilities/__init__.py +109 -0
  2178. vibe_surf/langflow/components/langchain_utilities/character.py +53 -0
  2179. vibe_surf/langflow/components/langchain_utilities/conversation.py +52 -0
  2180. vibe_surf/langflow/components/langchain_utilities/csv_agent.py +107 -0
  2181. vibe_surf/langflow/components/langchain_utilities/fake_embeddings.py +26 -0
  2182. vibe_surf/langflow/components/langchain_utilities/html_link_extractor.py +35 -0
  2183. vibe_surf/langflow/components/langchain_utilities/json_agent.py +45 -0
  2184. vibe_surf/langflow/components/langchain_utilities/langchain_hub.py +126 -0
  2185. vibe_surf/langflow/components/langchain_utilities/language_recursive.py +49 -0
  2186. vibe_surf/langflow/components/langchain_utilities/language_semantic.py +138 -0
  2187. vibe_surf/langflow/components/langchain_utilities/llm_checker.py +39 -0
  2188. vibe_surf/langflow/components/langchain_utilities/llm_math.py +42 -0
  2189. vibe_surf/langflow/components/langchain_utilities/natural_language.py +61 -0
  2190. vibe_surf/langflow/components/langchain_utilities/openai_tools.py +53 -0
  2191. vibe_surf/langflow/components/langchain_utilities/openapi.py +48 -0
  2192. vibe_surf/langflow/components/langchain_utilities/recursive_character.py +60 -0
  2193. vibe_surf/langflow/components/langchain_utilities/retrieval_qa.py +83 -0
  2194. vibe_surf/langflow/components/langchain_utilities/runnable_executor.py +137 -0
  2195. vibe_surf/langflow/components/langchain_utilities/self_query.py +80 -0
  2196. vibe_surf/langflow/components/langchain_utilities/spider.py +142 -0
  2197. vibe_surf/langflow/components/langchain_utilities/sql.py +40 -0
  2198. vibe_surf/langflow/components/langchain_utilities/sql_database.py +35 -0
  2199. vibe_surf/langflow/components/langchain_utilities/sql_generator.py +78 -0
  2200. vibe_surf/langflow/components/langchain_utilities/tool_calling.py +59 -0
  2201. vibe_surf/langflow/components/langchain_utilities/vector_store_info.py +49 -0
  2202. vibe_surf/langflow/components/langchain_utilities/vector_store_router.py +33 -0
  2203. vibe_surf/langflow/components/langchain_utilities/xml_agent.py +71 -0
  2204. vibe_surf/langflow/components/langwatch/__init__.py +3 -0
  2205. vibe_surf/langflow/components/langwatch/langwatch.py +278 -0
  2206. vibe_surf/langflow/components/link_extractors/__init__.py +0 -0
  2207. vibe_surf/langflow/components/lmstudio/__init__.py +34 -0
  2208. vibe_surf/langflow/components/lmstudio/lmstudioembeddings.py +89 -0
  2209. vibe_surf/langflow/components/lmstudio/lmstudiomodel.py +129 -0
  2210. vibe_surf/langflow/components/logic/__init__.py +52 -0
  2211. vibe_surf/langflow/components/logic/conditional_router.py +208 -0
  2212. vibe_surf/langflow/components/logic/data_conditional_router.py +126 -0
  2213. vibe_surf/langflow/components/logic/flow_tool.py +111 -0
  2214. vibe_surf/langflow/components/logic/listen.py +29 -0
  2215. vibe_surf/langflow/components/logic/loop.py +125 -0
  2216. vibe_surf/langflow/components/logic/notify.py +88 -0
  2217. vibe_surf/langflow/components/logic/pass_message.py +36 -0
  2218. vibe_surf/langflow/components/logic/run_flow.py +71 -0
  2219. vibe_surf/langflow/components/logic/sub_flow.py +115 -0
  2220. vibe_surf/langflow/components/maritalk/__init__.py +32 -0
  2221. vibe_surf/langflow/components/maritalk/maritalk.py +52 -0
  2222. vibe_surf/langflow/components/mem0/__init__.py +3 -0
  2223. vibe_surf/langflow/components/mem0/mem0_chat_memory.py +136 -0
  2224. vibe_surf/langflow/components/milvus/__init__.py +34 -0
  2225. vibe_surf/langflow/components/milvus/milvus.py +115 -0
  2226. vibe_surf/langflow/components/mistral/__init__.py +37 -0
  2227. vibe_surf/langflow/components/mistral/mistral.py +114 -0
  2228. vibe_surf/langflow/components/mistral/mistral_embeddings.py +58 -0
  2229. vibe_surf/langflow/components/models/__init__.py +34 -0
  2230. vibe_surf/langflow/components/models/embedding_model.py +114 -0
  2231. vibe_surf/langflow/components/models/language_model.py +144 -0
  2232. vibe_surf/langflow/components/mongodb/__init__.py +34 -0
  2233. vibe_surf/langflow/components/mongodb/mongodb_atlas.py +213 -0
  2234. vibe_surf/langflow/components/needle/__init__.py +3 -0
  2235. vibe_surf/langflow/components/needle/needle.py +104 -0
  2236. vibe_surf/langflow/components/notdiamond/__init__.py +36 -0
  2237. vibe_surf/langflow/components/notdiamond/notdiamond.py +228 -0
  2238. vibe_surf/langflow/components/novita/__init__.py +32 -0
  2239. vibe_surf/langflow/components/novita/novita.py +130 -0
  2240. vibe_surf/langflow/components/nvidia/__init__.py +57 -0
  2241. vibe_surf/langflow/components/nvidia/nvidia.py +151 -0
  2242. vibe_surf/langflow/components/nvidia/nvidia_embedding.py +77 -0
  2243. vibe_surf/langflow/components/nvidia/nvidia_ingest.py +317 -0
  2244. vibe_surf/langflow/components/nvidia/nvidia_rerank.py +63 -0
  2245. vibe_surf/langflow/components/nvidia/system_assist.py +65 -0
  2246. vibe_surf/langflow/components/olivya/__init__.py +3 -0
  2247. vibe_surf/langflow/components/olivya/olivya.py +116 -0
  2248. vibe_surf/langflow/components/ollama/__init__.py +37 -0
  2249. vibe_surf/langflow/components/ollama/ollama.py +330 -0
  2250. vibe_surf/langflow/components/ollama/ollama_embeddings.py +106 -0
  2251. vibe_surf/langflow/components/openai/__init__.py +37 -0
  2252. vibe_surf/langflow/components/openai/openai.py +100 -0
  2253. vibe_surf/langflow/components/openai/openai_chat_model.py +158 -0
  2254. vibe_surf/langflow/components/openrouter/__init__.py +32 -0
  2255. vibe_surf/langflow/components/openrouter/openrouter.py +202 -0
  2256. vibe_surf/langflow/components/output_parsers/__init__.py +0 -0
  2257. vibe_surf/langflow/components/perplexity/__init__.py +34 -0
  2258. vibe_surf/langflow/components/perplexity/perplexity.py +75 -0
  2259. vibe_surf/langflow/components/pgvector/__init__.py +34 -0
  2260. vibe_surf/langflow/components/pgvector/pgvector.py +72 -0
  2261. vibe_surf/langflow/components/pinecone/__init__.py +34 -0
  2262. vibe_surf/langflow/components/pinecone/pinecone.py +134 -0
  2263. vibe_surf/langflow/components/processing/__init__.py +117 -0
  2264. vibe_surf/langflow/components/processing/alter_metadata.py +109 -0
  2265. vibe_surf/langflow/components/processing/batch_run.py +205 -0
  2266. vibe_surf/langflow/components/processing/combine_text.py +40 -0
  2267. vibe_surf/langflow/components/processing/converter.py +150 -0
  2268. vibe_surf/langflow/components/processing/create_data.py +111 -0
  2269. vibe_surf/langflow/components/processing/data_operations.py +438 -0
  2270. vibe_surf/langflow/components/processing/data_to_dataframe.py +71 -0
  2271. vibe_surf/langflow/components/processing/dataframe_operations.py +310 -0
  2272. vibe_surf/langflow/components/processing/extract_key.py +54 -0
  2273. vibe_surf/langflow/components/processing/filter_data.py +43 -0
  2274. vibe_surf/langflow/components/processing/filter_data_values.py +89 -0
  2275. vibe_surf/langflow/components/processing/json_cleaner.py +104 -0
  2276. vibe_surf/langflow/components/processing/lambda_filter.py +154 -0
  2277. vibe_surf/langflow/components/processing/llm_router.py +499 -0
  2278. vibe_surf/langflow/components/processing/merge_data.py +91 -0
  2279. vibe_surf/langflow/components/processing/message_to_data.py +37 -0
  2280. vibe_surf/langflow/components/processing/parse_data.py +71 -0
  2281. vibe_surf/langflow/components/processing/parse_dataframe.py +69 -0
  2282. vibe_surf/langflow/components/processing/parse_json_data.py +91 -0
  2283. vibe_surf/langflow/components/processing/parser.py +143 -0
  2284. vibe_surf/langflow/components/processing/prompt.py +67 -0
  2285. vibe_surf/langflow/components/processing/python_repl_core.py +98 -0
  2286. vibe_surf/langflow/components/processing/regex.py +83 -0
  2287. vibe_surf/langflow/components/processing/save_file.py +208 -0
  2288. vibe_surf/langflow/components/processing/select_data.py +49 -0
  2289. vibe_surf/langflow/components/processing/split_text.py +141 -0
  2290. vibe_surf/langflow/components/processing/structured_output.py +206 -0
  2291. vibe_surf/langflow/components/processing/update_data.py +161 -0
  2292. vibe_surf/langflow/components/qdrant/__init__.py +34 -0
  2293. vibe_surf/langflow/components/qdrant/qdrant.py +109 -0
  2294. vibe_surf/langflow/components/redis/__init__.py +37 -0
  2295. vibe_surf/langflow/components/redis/redis.py +89 -0
  2296. vibe_surf/langflow/components/redis/redis_chat.py +43 -0
  2297. vibe_surf/langflow/components/sambanova/__init__.py +32 -0
  2298. vibe_surf/langflow/components/sambanova/sambanova.py +84 -0
  2299. vibe_surf/langflow/components/scrapegraph/__init__.py +40 -0
  2300. vibe_surf/langflow/components/scrapegraph/scrapegraph_markdownify_api.py +64 -0
  2301. vibe_surf/langflow/components/scrapegraph/scrapegraph_search_api.py +64 -0
  2302. vibe_surf/langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +71 -0
  2303. vibe_surf/langflow/components/searchapi/__init__.py +36 -0
  2304. vibe_surf/langflow/components/searchapi/search.py +79 -0
  2305. vibe_surf/langflow/components/serpapi/__init__.py +3 -0
  2306. vibe_surf/langflow/components/serpapi/serp.py +115 -0
  2307. vibe_surf/langflow/components/serper/__init__.py +3 -0
  2308. vibe_surf/langflow/components/serper/google_serper_api_core.py +74 -0
  2309. vibe_surf/langflow/components/supabase/__init__.py +37 -0
  2310. vibe_surf/langflow/components/supabase/supabase.py +76 -0
  2311. vibe_surf/langflow/components/tavily/__init__.py +4 -0
  2312. vibe_surf/langflow/components/tavily/tavily_extract.py +117 -0
  2313. vibe_surf/langflow/components/tavily/tavily_search.py +212 -0
  2314. vibe_surf/langflow/components/textsplitters/__init__.py +0 -0
  2315. vibe_surf/langflow/components/toolkits/__init__.py +0 -0
  2316. vibe_surf/langflow/components/tools/__init__.py +66 -0
  2317. vibe_surf/langflow/components/tools/calculator.py +104 -0
  2318. vibe_surf/langflow/components/tools/python_code_structured_tool.py +328 -0
  2319. vibe_surf/langflow/components/tools/python_repl.py +98 -0
  2320. vibe_surf/langflow/components/tools/search_api.py +88 -0
  2321. vibe_surf/langflow/components/tools/searxng.py +145 -0
  2322. vibe_surf/langflow/components/tools/serp_api.py +120 -0
  2323. vibe_surf/langflow/components/tools/tavily_search_tool.py +345 -0
  2324. vibe_surf/langflow/components/tools/wikidata_api.py +103 -0
  2325. vibe_surf/langflow/components/tools/wikipedia_api.py +50 -0
  2326. vibe_surf/langflow/components/tools/yahoo_finance.py +125 -0
  2327. vibe_surf/langflow/components/twelvelabs/__init__.py +52 -0
  2328. vibe_surf/langflow/components/twelvelabs/convert_astra_results.py +84 -0
  2329. vibe_surf/langflow/components/twelvelabs/pegasus_index.py +311 -0
  2330. vibe_surf/langflow/components/twelvelabs/split_video.py +291 -0
  2331. vibe_surf/langflow/components/twelvelabs/text_embeddings.py +57 -0
  2332. vibe_surf/langflow/components/twelvelabs/twelvelabs_pegasus.py +408 -0
  2333. vibe_surf/langflow/components/twelvelabs/video_embeddings.py +100 -0
  2334. vibe_surf/langflow/components/twelvelabs/video_file.py +179 -0
  2335. vibe_surf/langflow/components/unstructured/__init__.py +3 -0
  2336. vibe_surf/langflow/components/unstructured/unstructured.py +121 -0
  2337. vibe_surf/langflow/components/upstash/__init__.py +34 -0
  2338. vibe_surf/langflow/components/upstash/upstash.py +124 -0
  2339. vibe_surf/langflow/components/vectara/__init__.py +37 -0
  2340. vibe_surf/langflow/components/vectara/vectara.py +97 -0
  2341. vibe_surf/langflow/components/vectara/vectara_rag.py +164 -0
  2342. vibe_surf/langflow/components/vectorstores/__init__.py +34 -0
  2343. vibe_surf/langflow/components/vectorstores/local_db.py +262 -0
  2344. vibe_surf/langflow/components/vertexai/__init__.py +37 -0
  2345. vibe_surf/langflow/components/vertexai/vertexai.py +71 -0
  2346. vibe_surf/langflow/components/vertexai/vertexai_embeddings.py +67 -0
  2347. vibe_surf/langflow/components/weaviate/__init__.py +34 -0
  2348. vibe_surf/langflow/components/weaviate/weaviate.py +89 -0
  2349. vibe_surf/langflow/components/wikipedia/__init__.py +4 -0
  2350. vibe_surf/langflow/components/wikipedia/wikidata.py +86 -0
  2351. vibe_surf/langflow/components/wikipedia/wikipedia.py +53 -0
  2352. vibe_surf/langflow/components/wolframalpha/__init__.py +3 -0
  2353. vibe_surf/langflow/components/wolframalpha/wolfram_alpha_api.py +54 -0
  2354. vibe_surf/langflow/components/xai/__init__.py +32 -0
  2355. vibe_surf/langflow/components/xai/xai.py +167 -0
  2356. vibe_surf/langflow/components/youtube/__init__.py +52 -0
  2357. vibe_surf/langflow/components/youtube/channel.py +227 -0
  2358. vibe_surf/langflow/components/youtube/comments.py +231 -0
  2359. vibe_surf/langflow/components/youtube/playlist.py +33 -0
  2360. vibe_surf/langflow/components/youtube/search.py +120 -0
  2361. vibe_surf/langflow/components/youtube/trending.py +285 -0
  2362. vibe_surf/langflow/components/youtube/video_details.py +263 -0
  2363. vibe_surf/langflow/components/youtube/youtube_transcripts.py +118 -0
  2364. vibe_surf/langflow/components/zep/__init__.py +3 -0
  2365. vibe_surf/langflow/components/zep/zep.py +45 -0
  2366. vibe_surf/langflow/core/__init__.py +0 -0
  2367. vibe_surf/langflow/core/celery_app.py +11 -0
  2368. vibe_surf/langflow/core/celeryconfig.py +18 -0
  2369. vibe_surf/langflow/custom/__init__.py +4 -0
  2370. vibe_surf/langflow/custom/attributes.py +87 -0
  2371. vibe_surf/langflow/custom/code_parser/__init__.py +3 -0
  2372. vibe_surf/langflow/custom/code_parser/code_parser.py +361 -0
  2373. vibe_surf/langflow/custom/custom_component/__init__.py +0 -0
  2374. vibe_surf/langflow/custom/custom_component/base_component.py +118 -0
  2375. vibe_surf/langflow/custom/custom_component/component.py +1742 -0
  2376. vibe_surf/langflow/custom/custom_component/component_with_cache.py +8 -0
  2377. vibe_surf/langflow/custom/custom_component/custom_component.py +552 -0
  2378. vibe_surf/langflow/custom/dependency_analyzer.py +165 -0
  2379. vibe_surf/langflow/custom/directory_reader/__init__.py +3 -0
  2380. vibe_surf/langflow/custom/directory_reader/directory_reader.py +359 -0
  2381. vibe_surf/langflow/custom/directory_reader/utils.py +171 -0
  2382. vibe_surf/langflow/custom/eval.py +12 -0
  2383. vibe_surf/langflow/custom/schema.py +32 -0
  2384. vibe_surf/langflow/custom/tree_visitor.py +21 -0
  2385. vibe_surf/langflow/custom/utils.py +868 -0
  2386. vibe_surf/langflow/events/__init__.py +0 -0
  2387. vibe_surf/langflow/events/event_manager.py +108 -0
  2388. vibe_surf/langflow/exceptions/__init__.py +0 -0
  2389. vibe_surf/langflow/exceptions/api.py +34 -0
  2390. vibe_surf/langflow/exceptions/component.py +17 -0
  2391. vibe_surf/langflow/exceptions/serialization.py +56 -0
  2392. vibe_surf/langflow/field_typing/__init__.py +91 -0
  2393. vibe_surf/langflow/field_typing/constants.py +137 -0
  2394. vibe_surf/langflow/field_typing/range_spec.py +33 -0
  2395. vibe_surf/langflow/graph/__init__.py +6 -0
  2396. vibe_surf/langflow/graph/edge/__init__.py +0 -0
  2397. vibe_surf/langflow/graph/edge/base.py +277 -0
  2398. vibe_surf/langflow/graph/edge/schema.py +119 -0
  2399. vibe_surf/langflow/graph/edge/utils.py +0 -0
  2400. vibe_surf/langflow/graph/graph/__init__.py +0 -0
  2401. vibe_surf/langflow/graph/graph/ascii.py +202 -0
  2402. vibe_surf/langflow/graph/graph/base.py +2242 -0
  2403. vibe_surf/langflow/graph/graph/constants.py +58 -0
  2404. vibe_surf/langflow/graph/graph/runnable_vertices_manager.py +133 -0
  2405. vibe_surf/langflow/graph/graph/schema.py +53 -0
  2406. vibe_surf/langflow/graph/graph/state_model.py +66 -0
  2407. vibe_surf/langflow/graph/graph/utils.py +1024 -0
  2408. vibe_surf/langflow/graph/schema.py +75 -0
  2409. vibe_surf/langflow/graph/state/__init__.py +0 -0
  2410. vibe_surf/langflow/graph/state/model.py +237 -0
  2411. vibe_surf/langflow/graph/utils.py +229 -0
  2412. vibe_surf/langflow/graph/vertex/__init__.py +0 -0
  2413. vibe_surf/langflow/graph/vertex/base.py +811 -0
  2414. vibe_surf/langflow/graph/vertex/constants.py +0 -0
  2415. vibe_surf/langflow/graph/vertex/exceptions.py +4 -0
  2416. vibe_surf/langflow/graph/vertex/param_handler.py +255 -0
  2417. vibe_surf/langflow/graph/vertex/schema.py +26 -0
  2418. vibe_surf/langflow/graph/vertex/utils.py +19 -0
  2419. vibe_surf/langflow/graph/vertex/vertex_types.py +489 -0
  2420. vibe_surf/langflow/helpers/__init__.py +3 -0
  2421. vibe_surf/langflow/helpers/base_model.py +71 -0
  2422. vibe_surf/langflow/helpers/custom.py +13 -0
  2423. vibe_surf/langflow/helpers/data.py +206 -0
  2424. vibe_surf/langflow/helpers/flow.py +359 -0
  2425. vibe_surf/langflow/helpers/folders.py +26 -0
  2426. vibe_surf/langflow/helpers/user.py +27 -0
  2427. vibe_surf/langflow/initial_setup/__init__.py +0 -0
  2428. vibe_surf/langflow/initial_setup/constants.py +2 -0
  2429. vibe_surf/langflow/initial_setup/load.py +21 -0
  2430. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-01.svg +102 -0
  2431. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-02.svg +135 -0
  2432. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-03.svg +126 -0
  2433. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-04.svg +132 -0
  2434. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-05.svg +151 -0
  2435. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-06.svg +132 -0
  2436. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-07.svg +138 -0
  2437. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-08.svg +125 -0
  2438. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-09.svg +137 -0
  2439. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-10.svg +109 -0
  2440. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-11.svg +140 -0
  2441. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-12.svg +99 -0
  2442. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-13.svg +118 -0
  2443. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-14.svg +99 -0
  2444. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-15.svg +90 -0
  2445. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-16.svg +106 -0
  2446. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-17.svg +97 -0
  2447. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-18.svg +128 -0
  2448. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-19.svg +100 -0
  2449. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-20.svg +101 -0
  2450. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-21.svg +134 -0
  2451. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-22.svg +127 -0
  2452. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-23.svg +120 -0
  2453. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-24.svg +110 -0
  2454. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-25.svg +79 -0
  2455. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-26.svg +98 -0
  2456. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-27.svg +113 -0
  2457. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-01.svg +113 -0
  2458. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-02.svg +167 -0
  2459. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-03.svg +91 -0
  2460. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-04.svg +114 -0
  2461. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-05.svg +71 -0
  2462. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-06.svg +105 -0
  2463. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-07.svg +101 -0
  2464. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-08.svg +92 -0
  2465. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-09.svg +91 -0
  2466. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-10.svg +110 -0
  2467. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-11.svg +102 -0
  2468. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-12.svg +92 -0
  2469. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-13.svg +77 -0
  2470. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-14.svg +99 -0
  2471. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-15.svg +81 -0
  2472. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-16.svg +91 -0
  2473. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-17.svg +100 -0
  2474. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-18.svg +99 -0
  2475. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-19.svg +155 -0
  2476. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-20.svg +110 -0
  2477. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-21.svg +128 -0
  2478. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-22.svg +90 -0
  2479. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-23.svg +117 -0
  2480. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-24.svg +100 -0
  2481. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-25.svg +97 -0
  2482. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-26.svg +105 -0
  2483. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-27.svg +82 -0
  2484. vibe_surf/langflow/initial_setup/profile_pictures/Space/026-alien.svg +1 -0
  2485. vibe_surf/langflow/initial_setup/profile_pictures/Space/027-satellite.svg +1 -0
  2486. vibe_surf/langflow/initial_setup/profile_pictures/Space/028-alien.svg +1 -0
  2487. vibe_surf/langflow/initial_setup/profile_pictures/Space/029-telescope.svg +1 -0
  2488. vibe_surf/langflow/initial_setup/profile_pictures/Space/030-books.svg +1 -0
  2489. vibe_surf/langflow/initial_setup/profile_pictures/Space/031-planet.svg +1 -0
  2490. vibe_surf/langflow/initial_setup/profile_pictures/Space/032-constellation.svg +1 -0
  2491. vibe_surf/langflow/initial_setup/profile_pictures/Space/033-planet.svg +1 -0
  2492. vibe_surf/langflow/initial_setup/profile_pictures/Space/034-alien.svg +1 -0
  2493. vibe_surf/langflow/initial_setup/profile_pictures/Space/035-globe.svg +1 -0
  2494. vibe_surf/langflow/initial_setup/profile_pictures/Space/036-eclipse.svg +1 -0
  2495. vibe_surf/langflow/initial_setup/profile_pictures/Space/037-meteor.svg +1 -0
  2496. vibe_surf/langflow/initial_setup/profile_pictures/Space/038-eclipse.svg +1 -0
  2497. vibe_surf/langflow/initial_setup/profile_pictures/Space/039-Asteroid.svg +1 -0
  2498. vibe_surf/langflow/initial_setup/profile_pictures/Space/040-mission.svg +1 -0
  2499. vibe_surf/langflow/initial_setup/profile_pictures/Space/041-spaceship.svg +1 -0
  2500. vibe_surf/langflow/initial_setup/profile_pictures/Space/042-space shuttle.svg +1 -0
  2501. vibe_surf/langflow/initial_setup/profile_pictures/Space/043-space shuttle.svg +1 -0
  2502. vibe_surf/langflow/initial_setup/profile_pictures/Space/044-rocket.svg +1 -0
  2503. vibe_surf/langflow/initial_setup/profile_pictures/Space/045-astronaut.svg +1 -0
  2504. vibe_surf/langflow/initial_setup/profile_pictures/Space/046-rocket.svg +1 -0
  2505. vibe_surf/langflow/initial_setup/profile_pictures/Space/047-computer.svg +1 -0
  2506. vibe_surf/langflow/initial_setup/profile_pictures/Space/048-satellite.svg +1 -0
  2507. vibe_surf/langflow/initial_setup/profile_pictures/Space/049-astronaut.svg +1 -0
  2508. vibe_surf/langflow/initial_setup/profile_pictures/Space/050-space robot.svg +1 -0
  2509. vibe_surf/langflow/initial_setup/setup.py +1108 -0
  2510. vibe_surf/langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +1976 -0
  2511. vibe_surf/langflow/initial_setup/starter_projects/Basic Prompting.json +1051 -0
  2512. vibe_surf/langflow/initial_setup/starter_projects/Blog Writer.json +1529 -0
  2513. vibe_surf/langflow/initial_setup/starter_projects/Custom Component Generator.json +2671 -0
  2514. vibe_surf/langflow/initial_setup/starter_projects/Document Q&A.json +1522 -0
  2515. vibe_surf/langflow/initial_setup/starter_projects/Financial Report Parser.json +1418 -0
  2516. vibe_surf/langflow/initial_setup/starter_projects/Hybrid Search RAG.json +2718 -0
  2517. vibe_surf/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +1884 -0
  2518. vibe_surf/langflow/initial_setup/starter_projects/Instagram Copywriter.json +3069 -0
  2519. vibe_surf/langflow/initial_setup/starter_projects/Invoice Summarizer.json +1666 -0
  2520. vibe_surf/langflow/initial_setup/starter_projects/Knowledge Ingestion.json +1042 -0
  2521. vibe_surf/langflow/initial_setup/starter_projects/Knowledge Retrieval.json +630 -0
  2522. vibe_surf/langflow/initial_setup/starter_projects/Market Research.json +2532 -0
  2523. vibe_surf/langflow/initial_setup/starter_projects/Meeting Summary.json +3263 -0
  2524. vibe_surf/langflow/initial_setup/starter_projects/Memory Chatbot.json +1419 -0
  2525. vibe_surf/langflow/initial_setup/starter_projects/News Aggregator.json +1835 -0
  2526. vibe_surf/langflow/initial_setup/starter_projects/Nvidia Remix.json +4866 -0
  2527. vibe_surf/langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +1739 -0
  2528. vibe_surf/langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +2243 -0
  2529. vibe_surf/langflow/initial_setup/starter_projects/Price Deal Finder.json +2099 -0
  2530. vibe_surf/langflow/initial_setup/starter_projects/Research Agent.json +3032 -0
  2531. vibe_surf/langflow/initial_setup/starter_projects/Research Translation Loop.json +1580 -0
  2532. vibe_surf/langflow/initial_setup/starter_projects/SEO Keyword Generator.json +1091 -0
  2533. vibe_surf/langflow/initial_setup/starter_projects/SaaS Pricing.json +1416 -0
  2534. vibe_surf/langflow/initial_setup/starter_projects/Search agent.json +1455 -0
  2535. vibe_surf/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +4101 -0
  2536. vibe_surf/langflow/initial_setup/starter_projects/Simple Agent.json +1841 -0
  2537. vibe_surf/langflow/initial_setup/starter_projects/Social Media Agent.json +1759 -0
  2538. vibe_surf/langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +2557 -0
  2539. vibe_surf/langflow/initial_setup/starter_projects/Travel Planning Agents.json +3448 -0
  2540. vibe_surf/langflow/initial_setup/starter_projects/Twitter Thread Generator.json +1978 -0
  2541. vibe_surf/langflow/initial_setup/starter_projects/Vector Store RAG.json +4850 -0
  2542. vibe_surf/langflow/initial_setup/starter_projects/Youtube Analysis.json +2734 -0
  2543. vibe_surf/langflow/initial_setup/starter_projects/__init__.py +19 -0
  2544. vibe_surf/langflow/initial_setup/starter_projects/basic_prompting.py +28 -0
  2545. vibe_surf/langflow/initial_setup/starter_projects/blog_writer.py +46 -0
  2546. vibe_surf/langflow/initial_setup/starter_projects/complex_agent.py +96 -0
  2547. vibe_surf/langflow/initial_setup/starter_projects/document_qa.py +39 -0
  2548. vibe_surf/langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +69 -0
  2549. vibe_surf/langflow/initial_setup/starter_projects/memory_chatbot.py +31 -0
  2550. vibe_surf/langflow/initial_setup/starter_projects/sequential_tasks_agent.py +97 -0
  2551. vibe_surf/langflow/initial_setup/starter_projects/vector_store_rag.py +61 -0
  2552. vibe_surf/langflow/inputs/__init__.py +68 -0
  2553. vibe_surf/langflow/inputs/constants.py +2 -0
  2554. vibe_surf/langflow/inputs/input_mixin.py +312 -0
  2555. vibe_surf/langflow/inputs/inputs.py +706 -0
  2556. vibe_surf/langflow/inputs/utils.py +32 -0
  2557. vibe_surf/langflow/inputs/validators.py +19 -0
  2558. vibe_surf/langflow/interface/__init__.py +0 -0
  2559. vibe_surf/langflow/interface/components.py +496 -0
  2560. vibe_surf/langflow/interface/importing/__init__.py +5 -0
  2561. vibe_surf/langflow/interface/importing/utils.py +39 -0
  2562. vibe_surf/langflow/interface/initialize/__init__.py +3 -0
  2563. vibe_surf/langflow/interface/initialize/loading.py +200 -0
  2564. vibe_surf/langflow/interface/listing.py +26 -0
  2565. vibe_surf/langflow/interface/run.py +45 -0
  2566. vibe_surf/langflow/interface/utils.py +112 -0
  2567. vibe_surf/langflow/io/__init__.py +63 -0
  2568. vibe_surf/langflow/io/schema.py +304 -0
  2569. vibe_surf/langflow/langflow_launcher.py +51 -0
  2570. vibe_surf/langflow/legacy_custom/__init__.py +0 -0
  2571. vibe_surf/langflow/legacy_custom/customs.py +16 -0
  2572. vibe_surf/langflow/load/__init__.py +12 -0
  2573. vibe_surf/langflow/load/load.py +250 -0
  2574. vibe_surf/langflow/load/utils.py +126 -0
  2575. vibe_surf/langflow/logging/__init__.py +4 -0
  2576. vibe_surf/langflow/logging/logger.py +407 -0
  2577. vibe_surf/langflow/logging/setup.py +16 -0
  2578. vibe_surf/langflow/main.py +550 -0
  2579. vibe_surf/langflow/memory.py +326 -0
  2580. vibe_surf/langflow/middleware.py +59 -0
  2581. vibe_surf/langflow/processing/__init__.py +0 -0
  2582. vibe_surf/langflow/processing/process.py +216 -0
  2583. vibe_surf/langflow/processing/utils.py +25 -0
  2584. vibe_surf/langflow/py.typed +0 -0
  2585. vibe_surf/langflow/schema/__init__.py +6 -0
  2586. vibe_surf/langflow/schema/artifact.py +82 -0
  2587. vibe_surf/langflow/schema/content_block.py +62 -0
  2588. vibe_surf/langflow/schema/content_types.py +91 -0
  2589. vibe_surf/langflow/schema/data.py +306 -0
  2590. vibe_surf/langflow/schema/dataframe.py +206 -0
  2591. vibe_surf/langflow/schema/dotdict.py +71 -0
  2592. vibe_surf/langflow/schema/encoders.py +13 -0
  2593. vibe_surf/langflow/schema/graph.py +47 -0
  2594. vibe_surf/langflow/schema/image.py +128 -0
  2595. vibe_surf/langflow/schema/log.py +33 -0
  2596. vibe_surf/langflow/schema/message.py +483 -0
  2597. vibe_surf/langflow/schema/openai_responses_schemas.py +74 -0
  2598. vibe_surf/langflow/schema/playground_events.py +182 -0
  2599. vibe_surf/langflow/schema/properties.py +39 -0
  2600. vibe_surf/langflow/schema/schema.py +121 -0
  2601. vibe_surf/langflow/schema/serialize.py +14 -0
  2602. vibe_surf/langflow/schema/table.py +140 -0
  2603. vibe_surf/langflow/schema/validators.py +114 -0
  2604. vibe_surf/langflow/serialization/__init__.py +3 -0
  2605. vibe_surf/langflow/serialization/constants.py +2 -0
  2606. vibe_surf/langflow/serialization/serialization.py +320 -0
  2607. vibe_surf/langflow/server.py +70 -0
  2608. vibe_surf/langflow/services/__init__.py +4 -0
  2609. vibe_surf/langflow/services/auth/__init__.py +0 -0
  2610. vibe_surf/langflow/services/auth/factory.py +15 -0
  2611. vibe_surf/langflow/services/auth/mcp_encryption.py +120 -0
  2612. vibe_surf/langflow/services/auth/service.py +15 -0
  2613. vibe_surf/langflow/services/auth/utils.py +583 -0
  2614. vibe_surf/langflow/services/base.py +28 -0
  2615. vibe_surf/langflow/services/cache/__init__.py +12 -0
  2616. vibe_surf/langflow/services/cache/base.py +183 -0
  2617. vibe_surf/langflow/services/cache/disk.py +95 -0
  2618. vibe_surf/langflow/services/cache/factory.py +44 -0
  2619. vibe_surf/langflow/services/cache/service.py +355 -0
  2620. vibe_surf/langflow/services/cache/utils.py +169 -0
  2621. vibe_surf/langflow/services/chat/__init__.py +0 -0
  2622. vibe_surf/langflow/services/chat/cache.py +150 -0
  2623. vibe_surf/langflow/services/chat/config.py +2 -0
  2624. vibe_surf/langflow/services/chat/factory.py +11 -0
  2625. vibe_surf/langflow/services/chat/schema.py +10 -0
  2626. vibe_surf/langflow/services/chat/service.py +67 -0
  2627. vibe_surf/langflow/services/database/__init__.py +0 -0
  2628. vibe_surf/langflow/services/database/factory.py +21 -0
  2629. vibe_surf/langflow/services/database/models/__init__.py +19 -0
  2630. vibe_surf/langflow/services/database/models/api_key/__init__.py +3 -0
  2631. vibe_surf/langflow/services/database/models/api_key/crud.py +74 -0
  2632. vibe_surf/langflow/services/database/models/api_key/model.py +66 -0
  2633. vibe_surf/langflow/services/database/models/base.py +17 -0
  2634. vibe_surf/langflow/services/database/models/file/__init__.py +5 -0
  2635. vibe_surf/langflow/services/database/models/file/crud.py +14 -0
  2636. vibe_surf/langflow/services/database/models/file/model.py +19 -0
  2637. vibe_surf/langflow/services/database/models/flow/__init__.py +3 -0
  2638. vibe_surf/langflow/services/database/models/flow/model.py +283 -0
  2639. vibe_surf/langflow/services/database/models/flow/schema.py +6 -0
  2640. vibe_surf/langflow/services/database/models/flow/utils.py +42 -0
  2641. vibe_surf/langflow/services/database/models/folder/__init__.py +3 -0
  2642. vibe_surf/langflow/services/database/models/folder/constants.py +2 -0
  2643. vibe_surf/langflow/services/database/models/folder/model.py +61 -0
  2644. vibe_surf/langflow/services/database/models/folder/pagination_model.py +10 -0
  2645. vibe_surf/langflow/services/database/models/folder/utils.py +45 -0
  2646. vibe_surf/langflow/services/database/models/message/__init__.py +3 -0
  2647. vibe_surf/langflow/services/database/models/message/crud.py +26 -0
  2648. vibe_surf/langflow/services/database/models/message/model.py +182 -0
  2649. vibe_surf/langflow/services/database/models/transactions/__init__.py +3 -0
  2650. vibe_surf/langflow/services/database/models/transactions/crud.py +82 -0
  2651. vibe_surf/langflow/services/database/models/transactions/model.py +65 -0
  2652. vibe_surf/langflow/services/database/models/user/__init__.py +8 -0
  2653. vibe_surf/langflow/services/database/models/user/crud.py +69 -0
  2654. vibe_surf/langflow/services/database/models/user/model.py +82 -0
  2655. vibe_surf/langflow/services/database/models/variable/__init__.py +3 -0
  2656. vibe_surf/langflow/services/database/models/variable/model.py +73 -0
  2657. vibe_surf/langflow/services/database/models/vertex_builds/__init__.py +3 -0
  2658. vibe_surf/langflow/services/database/models/vertex_builds/crud.py +145 -0
  2659. vibe_surf/langflow/services/database/models/vertex_builds/model.py +83 -0
  2660. vibe_surf/langflow/services/database/service.py +485 -0
  2661. vibe_surf/langflow/services/database/session.py +62 -0
  2662. vibe_surf/langflow/services/database/utils.py +88 -0
  2663. vibe_surf/langflow/services/deps.py +259 -0
  2664. vibe_surf/langflow/services/factory.py +88 -0
  2665. vibe_surf/langflow/services/flow/__init__.py +0 -0
  2666. vibe_surf/langflow/services/flow/flow_runner.py +265 -0
  2667. vibe_surf/langflow/services/job_queue/__init__.py +0 -0
  2668. vibe_surf/langflow/services/job_queue/factory.py +11 -0
  2669. vibe_surf/langflow/services/job_queue/service.py +328 -0
  2670. vibe_surf/langflow/services/manager.py +149 -0
  2671. vibe_surf/langflow/services/mcp_composer/__init__.py +6 -0
  2672. vibe_surf/langflow/services/mcp_composer/factory.py +15 -0
  2673. vibe_surf/langflow/services/mcp_composer/service.py +591 -0
  2674. vibe_surf/langflow/services/schema.py +23 -0
  2675. vibe_surf/langflow/services/session/__init__.py +0 -0
  2676. vibe_surf/langflow/services/session/factory.py +18 -0
  2677. vibe_surf/langflow/services/session/service.py +63 -0
  2678. vibe_surf/langflow/services/session/utils.py +18 -0
  2679. vibe_surf/langflow/services/settings/__init__.py +3 -0
  2680. vibe_surf/langflow/services/settings/auth.py +147 -0
  2681. vibe_surf/langflow/services/settings/base.py +587 -0
  2682. vibe_surf/langflow/services/settings/constants.py +34 -0
  2683. vibe_surf/langflow/services/settings/factory.py +22 -0
  2684. vibe_surf/langflow/services/settings/feature_flags.py +11 -0
  2685. vibe_surf/langflow/services/settings/manager.py +49 -0
  2686. vibe_surf/langflow/services/settings/service.py +32 -0
  2687. vibe_surf/langflow/services/settings/utils.py +40 -0
  2688. vibe_surf/langflow/services/shared_component_cache/__init__.py +0 -0
  2689. vibe_surf/langflow/services/shared_component_cache/factory.py +18 -0
  2690. vibe_surf/langflow/services/shared_component_cache/service.py +7 -0
  2691. vibe_surf/langflow/services/socket/__init__.py +0 -0
  2692. vibe_surf/langflow/services/socket/factory.py +20 -0
  2693. vibe_surf/langflow/services/socket/service.py +84 -0
  2694. vibe_surf/langflow/services/socket/utils.py +112 -0
  2695. vibe_surf/langflow/services/state/__init__.py +0 -0
  2696. vibe_surf/langflow/services/state/factory.py +16 -0
  2697. vibe_surf/langflow/services/state/service.py +82 -0
  2698. vibe_surf/langflow/services/storage/__init__.py +0 -0
  2699. vibe_surf/langflow/services/storage/constants.py +28 -0
  2700. vibe_surf/langflow/services/storage/factory.py +30 -0
  2701. vibe_surf/langflow/services/storage/local.py +127 -0
  2702. vibe_surf/langflow/services/storage/s3.py +105 -0
  2703. vibe_surf/langflow/services/storage/service.py +51 -0
  2704. vibe_surf/langflow/services/storage/utils.py +5 -0
  2705. vibe_surf/langflow/services/store/__init__.py +0 -0
  2706. vibe_surf/langflow/services/store/exceptions.py +25 -0
  2707. vibe_surf/langflow/services/store/factory.py +20 -0
  2708. vibe_surf/langflow/services/store/schema.py +74 -0
  2709. vibe_surf/langflow/services/store/service.py +600 -0
  2710. vibe_surf/langflow/services/store/utils.py +67 -0
  2711. vibe_surf/langflow/services/task/__init__.py +0 -0
  2712. vibe_surf/langflow/services/task/backends/__init__.py +0 -0
  2713. vibe_surf/langflow/services/task/backends/anyio.py +117 -0
  2714. vibe_surf/langflow/services/task/backends/base.py +15 -0
  2715. vibe_surf/langflow/services/task/backends/celery.py +29 -0
  2716. vibe_surf/langflow/services/task/factory.py +14 -0
  2717. vibe_surf/langflow/services/task/service.py +40 -0
  2718. vibe_surf/langflow/services/task/temp_flow_cleanup.py +136 -0
  2719. vibe_surf/langflow/services/task/utils.py +23 -0
  2720. vibe_surf/langflow/services/telemetry/__init__.py +0 -0
  2721. vibe_surf/langflow/services/telemetry/factory.py +20 -0
  2722. vibe_surf/langflow/services/telemetry/opentelemetry.py +253 -0
  2723. vibe_surf/langflow/services/telemetry/schema.py +45 -0
  2724. vibe_surf/langflow/services/telemetry/service.py +281 -0
  2725. vibe_surf/langflow/services/tracing/__init__.py +0 -0
  2726. vibe_surf/langflow/services/tracing/arize_phoenix.py +375 -0
  2727. vibe_surf/langflow/services/tracing/base.py +71 -0
  2728. vibe_surf/langflow/services/tracing/factory.py +20 -0
  2729. vibe_surf/langflow/services/tracing/langfuse.py +170 -0
  2730. vibe_surf/langflow/services/tracing/langsmith.py +208 -0
  2731. vibe_surf/langflow/services/tracing/langwatch.py +185 -0
  2732. vibe_surf/langflow/services/tracing/opik.py +235 -0
  2733. vibe_surf/langflow/services/tracing/schema.py +20 -0
  2734. vibe_surf/langflow/services/tracing/service.py +460 -0
  2735. vibe_surf/langflow/services/tracing/traceloop.py +244 -0
  2736. vibe_surf/langflow/services/tracing/utils.py +29 -0
  2737. vibe_surf/langflow/services/utils.py +246 -0
  2738. vibe_surf/langflow/services/variable/__init__.py +0 -0
  2739. vibe_surf/langflow/services/variable/base.py +119 -0
  2740. vibe_surf/langflow/services/variable/constants.py +2 -0
  2741. vibe_surf/langflow/services/variable/factory.py +28 -0
  2742. vibe_surf/langflow/services/variable/kubernetes.py +204 -0
  2743. vibe_surf/langflow/services/variable/kubernetes_secrets.py +193 -0
  2744. vibe_surf/langflow/services/variable/service.py +195 -0
  2745. vibe_surf/langflow/settings.py +12 -0
  2746. vibe_surf/langflow/template/__init__.py +10 -0
  2747. vibe_surf/langflow/template/field/__init__.py +0 -0
  2748. vibe_surf/langflow/template/field/base.py +257 -0
  2749. vibe_surf/langflow/template/field/prompt.py +2 -0
  2750. vibe_surf/langflow/template/frontend_node/__init__.py +6 -0
  2751. vibe_surf/langflow/template/frontend_node/base.py +214 -0
  2752. vibe_surf/langflow/template/frontend_node/constants.py +65 -0
  2753. vibe_surf/langflow/template/frontend_node/custom_components.py +97 -0
  2754. vibe_surf/langflow/template/template/__init__.py +0 -0
  2755. vibe_surf/langflow/template/template/base.py +99 -0
  2756. vibe_surf/langflow/template/utils.py +217 -0
  2757. vibe_surf/langflow/type_extraction/__init__.py +0 -0
  2758. vibe_surf/langflow/type_extraction/type_extraction.py +78 -0
  2759. vibe_surf/langflow/utils/__init__.py +0 -0
  2760. vibe_surf/langflow/utils/async_helpers.py +42 -0
  2761. vibe_surf/langflow/utils/component_utils.py +147 -0
  2762. vibe_surf/langflow/utils/compression.py +19 -0
  2763. vibe_surf/langflow/utils/concurrency.py +60 -0
  2764. vibe_surf/langflow/utils/connection_string_parser.py +8 -0
  2765. vibe_surf/langflow/utils/constants.py +205 -0
  2766. vibe_surf/langflow/utils/data_structure.py +212 -0
  2767. vibe_surf/langflow/utils/image.py +102 -0
  2768. vibe_surf/langflow/utils/lazy_load.py +15 -0
  2769. vibe_surf/langflow/utils/migration.py +61 -0
  2770. vibe_surf/langflow/utils/payload.py +84 -0
  2771. vibe_surf/langflow/utils/schemas.py +117 -0
  2772. vibe_surf/langflow/utils/template_validation.py +284 -0
  2773. vibe_surf/langflow/utils/util.py +479 -0
  2774. vibe_surf/langflow/utils/util_strings.py +56 -0
  2775. vibe_surf/langflow/utils/validate.py +489 -0
  2776. vibe_surf/langflow/utils/version.py +72 -0
  2777. vibe_surf/langflow/utils/voice_utils.py +92 -0
  2778. vibe_surf/langflow/worker.py +37 -0
  2779. vibe_surf/llm/openai_compatible.py +36 -19
  2780. vibe_surf/logger.py +3 -3
  2781. vibe_surf/telemetry/__init__.py +60 -0
  2782. vibe_surf/telemetry/service.py +113 -0
  2783. vibe_surf/telemetry/views.py +188 -0
  2784. vibe_surf/tools/browser_use_tools.py +206 -134
  2785. vibe_surf/tools/composio_client.py +458 -0
  2786. vibe_surf/tools/file_system.py +9 -5
  2787. vibe_surf/tools/finance_tools.py +629 -0
  2788. vibe_surf/tools/mcp_client.py +21 -2
  2789. vibe_surf/tools/report_writer_tools.py +2 -1
  2790. vibe_surf/tools/utils.py +1540 -0
  2791. vibe_surf/tools/vibesurf_registry.py +52 -0
  2792. vibe_surf/tools/vibesurf_tools.py +1376 -83
  2793. vibe_surf/tools/views.py +215 -4
  2794. vibe_surf/tools/website_api/__init__.py +0 -0
  2795. vibe_surf/tools/website_api/douyin/__init__.py +0 -0
  2796. vibe_surf/tools/website_api/douyin/client.py +861 -0
  2797. vibe_surf/tools/website_api/douyin/helpers.py +239 -0
  2798. vibe_surf/tools/website_api/weibo/__init__.py +0 -0
  2799. vibe_surf/tools/website_api/weibo/client.py +777 -0
  2800. vibe_surf/tools/website_api/weibo/helpers.py +997 -0
  2801. vibe_surf/tools/website_api/xhs/__init__.py +0 -0
  2802. vibe_surf/tools/website_api/xhs/client.py +814 -0
  2803. vibe_surf/tools/website_api/xhs/helpers.py +302 -0
  2804. vibe_surf/tools/website_api/youtube/__init__.py +32 -0
  2805. vibe_surf/tools/website_api/youtube/client.py +1267 -0
  2806. vibe_surf/tools/website_api/youtube/helpers.py +420 -0
  2807. vibe_surf/utils.py +34 -0
  2808. vibe_surf/workflows/Browser/browser_click_element.py +189 -0
  2809. vibe_surf/workflows/Browser/browser_drag_drop.py +81 -0
  2810. vibe_surf/workflows/Browser/browser_evaluate_js.py +178 -0
  2811. vibe_surf/workflows/Browser/browser_extract_content.py +197 -0
  2812. vibe_surf/workflows/Browser/browser_focus_element.py +153 -0
  2813. vibe_surf/workflows/Browser/browser_generate_js.py +85 -0
  2814. vibe_surf/workflows/Browser/browser_go_back.py +45 -0
  2815. vibe_surf/workflows/Browser/browser_go_forward.py +44 -0
  2816. vibe_surf/workflows/Browser/browser_hover_element.py +154 -0
  2817. vibe_surf/workflows/Browser/browser_html_content.py +73 -0
  2818. vibe_surf/workflows/Browser/browser_input_text.py +169 -0
  2819. vibe_surf/workflows/Browser/browser_navigate.py +50 -0
  2820. vibe_surf/workflows/Browser/browser_new_tab.py +50 -0
  2821. vibe_surf/workflows/Browser/browser_page_info.py +67 -0
  2822. vibe_surf/workflows/Browser/browser_press_key.py +51 -0
  2823. vibe_surf/workflows/Browser/browser_reload.py +44 -0
  2824. vibe_surf/workflows/Browser/browser_scroll.py +99 -0
  2825. vibe_surf/workflows/Browser/browser_search.py +88 -0
  2826. vibe_surf/workflows/Browser/browser_select_options.py +94 -0
  2827. vibe_surf/workflows/Browser/browser_session.py +54 -0
  2828. vibe_surf/workflows/Browser/browser_take_screenshot.py +76 -0
  2829. vibe_surf/workflows/Browser/browser_upload_file.py +178 -0
  2830. vibe_surf/workflows/Browser/browser_wait.py +46 -0
  2831. vibe_surf/workflows/Browser/close_browser_session.py +51 -0
  2832. vibe_surf/workflows/FileSystem/extract_content_from_file.py +112 -0
  2833. vibe_surf/workflows/FileSystem/load_json.py +136 -0
  2834. vibe_surf/workflows/Integrations/composio_api.py +279 -0
  2835. vibe_surf/workflows/Integrations/douyin.py +232 -0
  2836. vibe_surf/workflows/Integrations/dropbox_compnent.py +11 -0
  2837. vibe_surf/workflows/Integrations/github_composio.py +11 -0
  2838. vibe_surf/workflows/Integrations/gmail_composio.py +38 -0
  2839. vibe_surf/workflows/Integrations/googlecalendar_composio.py +11 -0
  2840. vibe_surf/workflows/Integrations/googlemeet_composio.py +11 -0
  2841. vibe_surf/workflows/Integrations/googletasks_composio.py +8 -0
  2842. vibe_surf/workflows/Integrations/linear_composio.py +11 -0
  2843. vibe_surf/workflows/Integrations/outlook_composio.py +11 -0
  2844. vibe_surf/workflows/Integrations/reddit_composio.py +11 -0
  2845. vibe_surf/workflows/Integrations/slack_composio.py +11 -0
  2846. vibe_surf/workflows/Integrations/slackbot_composio.py +11 -0
  2847. vibe_surf/workflows/Integrations/supabase_composio.py +11 -0
  2848. vibe_surf/workflows/Integrations/todoist_composio.py +11 -0
  2849. vibe_surf/workflows/Integrations/weibo.py +244 -0
  2850. vibe_surf/workflows/Integrations/xiaohongshu.py +229 -0
  2851. vibe_surf/workflows/Integrations/yahoo.py +103 -0
  2852. vibe_surf/workflows/Integrations/youtube.py +251 -0
  2853. vibe_surf/workflows/Integrations/youtube_composio.py +11 -0
  2854. vibe_surf/workflows/VibeSurf/advanced_search.py +166 -0
  2855. vibe_surf/workflows/VibeSurf/browser_use_agent.py +150 -0
  2856. vibe_surf/workflows/VibeSurf/llm_profiles.py +103 -0
  2857. vibe_surf/workflows/VibeSurf/select_dataframe.py +44 -0
  2858. vibe_surf/workflows/VibeSurf/variable_manager.py +140 -0
  2859. vibe_surf/workflows/VibeSurf/vibesurf_agent.py +113 -0
  2860. vibesurf-0.2.6.dist-info/METADATA +406 -0
  2861. vibesurf-0.2.6.dist-info/RECORD +2916 -0
  2862. vibesurf-0.2.6.dist-info/licenses/LICENSE +22 -0
  2863. vibesurf-0.1.21.dist-info/METADATA +0 -125
  2864. vibesurf-0.1.21.dist-info/RECORD +0 -101
  2865. vibesurf-0.1.21.dist-info/licenses/LICENSE +0 -201
  2866. {vibesurf-0.1.21.dist-info → vibesurf-0.2.6.dist-info}/WHEEL +0 -0
  2867. {vibesurf-0.1.21.dist-info → vibesurf-0.2.6.dist-info}/entry_points.txt +0 -0
  2868. {vibesurf-0.1.21.dist-info → vibesurf-0.2.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,1742 @@
1
+ from __future__ import annotations
2
+
3
+ import ast
4
+ import asyncio
5
+ import inspect
6
+ import json
7
+ from collections.abc import AsyncIterator, Iterator
8
+ from copy import deepcopy
9
+ from textwrap import dedent
10
+ from typing import TYPE_CHECKING, Any, ClassVar, NamedTuple, get_type_hints
11
+ from uuid import UUID
12
+
13
+ import nanoid
14
+ import pandas as pd
15
+ import yaml
16
+ from langchain_core.tools import StructuredTool
17
+ from pydantic import BaseModel, ValidationError
18
+
19
+ from vibe_surf.langflow.base.tools.constants import (
20
+ TOOL_OUTPUT_DISPLAY_NAME,
21
+ TOOL_OUTPUT_NAME,
22
+ TOOLS_METADATA_INFO,
23
+ TOOLS_METADATA_INPUT_NAME,
24
+ )
25
+ from vibe_surf.langflow.custom.tree_visitor import RequiredInputsVisitor
26
+ from vibe_surf.langflow.exceptions.component import StreamingError
27
+ from vibe_surf.langflow.field_typing import Tool # noqa: TC001 Needed by _add_toolkit_output
28
+
29
+ # Lazy import to avoid circular dependency
30
+ # from vibe_surf.langflow.graph.state.model import create_state_model
31
+ # Lazy import to avoid circular dependency
32
+ # from vibe_surf.langflow.graph.utils import has_chat_output
33
+ from vibe_surf.langflow.helpers.custom import format_type
34
+ from vibe_surf.langflow.memory import astore_message, aupdate_messages, delete_message
35
+ from vibe_surf.langflow.schema.artifact import get_artifact_type, post_process_raw
36
+ from vibe_surf.langflow.schema.data import Data
37
+ from vibe_surf.langflow.schema.message import ErrorMessage, Message
38
+ from vibe_surf.langflow.schema.properties import Source
39
+ from vibe_surf.langflow.services.tracing.schema import Log
40
+ from vibe_surf.langflow.template.field.base import UNDEFINED, Input, Output
41
+ from vibe_surf.langflow.template.frontend_node.custom_components import ComponentFrontendNode
42
+ from vibe_surf.langflow.utils.async_helpers import run_until_complete
43
+ from vibe_surf.langflow.utils.util import find_closest_match
44
+
45
+ from .custom_component import CustomComponent
46
+
47
+ if TYPE_CHECKING:
48
+ from collections.abc import Callable
49
+
50
+ from vibe_surf.langflow.base.tools.component_tool import ComponentToolkit
51
+ from vibe_surf.langflow.events.event_manager import EventManager
52
+ from vibe_surf.langflow.graph.edge.schema import EdgeData
53
+ from vibe_surf.langflow.graph.vertex.base import Vertex
54
+ from vibe_surf.langflow.inputs.inputs import InputTypes
55
+ from vibe_surf.langflow.schema.dataframe import DataFrame
56
+ from vibe_surf.langflow.schema.log import LoggableType
57
+
58
+
59
+ _ComponentToolkit = None
60
+
61
+
62
+ def _get_component_toolkit():
63
+ global _ComponentToolkit # noqa: PLW0603
64
+ if _ComponentToolkit is None:
65
+ from vibe_surf.langflow.base.tools.component_tool import ComponentToolkit
66
+
67
+ _ComponentToolkit = ComponentToolkit
68
+ return _ComponentToolkit
69
+
70
+
71
+ BACKWARDS_COMPATIBLE_ATTRIBUTES = ["user_id", "vertex", "tracing_service"]
72
+ CONFIG_ATTRIBUTES = ["_display_name", "_description", "_icon", "_name", "_metadata"]
73
+
74
+
75
+ class PlaceholderGraph(NamedTuple):
76
+ """A placeholder graph structure for components, providing backwards compatibility.
77
+
78
+ and enabling component execution without a full graph object.
79
+
80
+ This lightweight structure contains essential information typically found in a complete graph,
81
+ allowing components to function in isolation or in simplified contexts.
82
+
83
+ Attributes:
84
+ flow_id (str | None): Unique identifier for the flow, if applicable.
85
+ user_id (str | None): Identifier of the user associated with the flow, if any.
86
+ session_id (str | None): Identifier for the current session, if applicable.
87
+ context (dict): Additional contextual information for the component's execution.
88
+ flow_name (str | None): Name of the flow, if available.
89
+ """
90
+
91
+ flow_id: str | None
92
+ user_id: str | None
93
+ session_id: str | None
94
+ context: dict
95
+ flow_name: str | None
96
+
97
+
98
+ class Component(CustomComponent):
99
+ inputs: list[InputTypes] = []
100
+ outputs: list[Output] = []
101
+ selected_output: str | None = None
102
+ code_class_base_inheritance: ClassVar[str] = "Component"
103
+
104
+ def __init__(self, **kwargs) -> None:
105
+ # Initialize instance-specific attributes first
106
+ if overlap := self._there_is_overlap_in_inputs_and_outputs():
107
+ msg = f"Inputs and outputs have overlapping names: {overlap}"
108
+ raise ValueError(msg)
109
+ self._output_logs: dict[str, list[Log]] = {}
110
+ self._current_output: str = ""
111
+ self._metadata: dict = {}
112
+ self._ctx: dict = {}
113
+ self._code: str | None = None
114
+ self._logs: list[Log] = []
115
+
116
+ # Initialize component-specific collections
117
+ self._inputs: dict[str, InputTypes] = {}
118
+ self._outputs_map: dict[str, Output] = {}
119
+ self._results: dict[str, Any] = {}
120
+ self._attributes: dict[str, Any] = {}
121
+ self._edges: list[EdgeData] = []
122
+ self._components: list[Component] = []
123
+ self._event_manager: EventManager | None = None
124
+ self._state_model = None
125
+
126
+ # Process input kwargs
127
+ inputs = {}
128
+ config = {}
129
+ for key, value in kwargs.items():
130
+ if key.startswith("_"):
131
+ config[key] = value
132
+ elif key in CONFIG_ATTRIBUTES:
133
+ config[key[1:]] = value
134
+ else:
135
+ inputs[key] = value
136
+
137
+ self._parameters = inputs or {}
138
+ self.set_attributes(self._parameters)
139
+
140
+ # Store original inputs and config for reference
141
+ self.__inputs = inputs
142
+ self.__config = config or {}
143
+
144
+ # Add unique ID if not provided
145
+ if "_id" not in self.__config:
146
+ self.__config |= {"_id": f"{self.__class__.__name__}-{nanoid.generate(size=5)}"}
147
+
148
+ # Initialize base class
149
+ super().__init__(**self.__config)
150
+
151
+ # Post-initialization setup
152
+ if hasattr(self, "_trace_type"):
153
+ self.trace_type = self._trace_type
154
+ if not hasattr(self, "trace_type"):
155
+ self.trace_type = "chain"
156
+
157
+ # Setup inputs and outputs
158
+ self._reset_all_output_values()
159
+ if self.inputs is not None:
160
+ self.map_inputs(self.inputs)
161
+ self.map_outputs()
162
+
163
+ # Final setup
164
+ self._set_output_types(list(self._outputs_map.values()))
165
+ self.set_class_code()
166
+
167
+ def _build_source(self, id_: str | None, display_name: str | None, source: str | None) -> Source:
168
+ source_dict = {}
169
+ if id_:
170
+ source_dict["id"] = id_
171
+ if display_name:
172
+ source_dict["display_name"] = display_name
173
+ if source:
174
+ # Handle case where source is a ChatOpenAI and other models objects
175
+ if hasattr(source, "model_name"):
176
+ source_dict["source"] = source.model_name
177
+ elif hasattr(source, "model"):
178
+ source_dict["source"] = str(source.model)
179
+ else:
180
+ source_dict["source"] = str(source)
181
+ return Source(**source_dict)
182
+
183
+ def get_incoming_edge_by_target_param(self, target_param: str) -> str | None:
184
+ """Get the source vertex ID for an incoming edge that targets a specific parameter.
185
+
186
+ This method delegates to the underlying vertex to find an incoming edge that connects
187
+ to the specified target parameter.
188
+
189
+ Args:
190
+ target_param (str): The name of the target parameter to find an incoming edge for
191
+
192
+ Returns:
193
+ str | None: The ID of the source vertex if an incoming edge is found, None otherwise
194
+ """
195
+ if self._vertex is None:
196
+ msg = "Vertex not found. Please build the graph first."
197
+ raise ValueError(msg)
198
+ return self._vertex.get_incoming_edge_by_target_param(target_param)
199
+
200
+ @property
201
+ def enabled_tools(self) -> list[str] | None:
202
+ """Dynamically determine which tools should be enabled.
203
+
204
+ This property can be overridden by subclasses to provide custom tool filtering.
205
+ By default, it returns None, which means all tools are enabled.
206
+
207
+ Returns:
208
+ list[str] | None: List of tool names or tags to enable, or None to enable all tools.
209
+ """
210
+ # Default implementation returns None (all tools enabled)
211
+ # Subclasses can override this to provide custom filtering
212
+ return None
213
+
214
+ def _there_is_overlap_in_inputs_and_outputs(self) -> set[str]:
215
+ """Check the `.name` of inputs and outputs to see if there is overlap.
216
+
217
+ Returns:
218
+ set[str]: Set of names that overlap between inputs and outputs.
219
+ """
220
+ # Create sets of input and output names for O(1) lookup
221
+ input_names = {input_.name for input_ in self.inputs if input_.name is not None}
222
+ output_names = {output.name for output in self.outputs}
223
+
224
+ # Return the intersection of the sets
225
+ return input_names & output_names
226
+
227
+ def get_base_args(self):
228
+ """Get the base arguments required for component initialization.
229
+
230
+ Returns:
231
+ dict: A dictionary containing the base arguments:
232
+ - _user_id: The ID of the current user
233
+ - _session_id: The ID of the current session
234
+ - _tracing_service: The tracing service instance for logging/monitoring
235
+ """
236
+ return {
237
+ "_user_id": self.user_id,
238
+ "_session_id": self.graph.session_id,
239
+ "_tracing_service": self._tracing_service,
240
+ }
241
+
242
+ @property
243
+ def ctx(self):
244
+ if not hasattr(self, "graph") or self.graph is None:
245
+ msg = "Graph not found. Please build the graph first."
246
+ raise ValueError(msg)
247
+ return self.graph.context
248
+
249
+ def add_to_ctx(self, key: str, value: Any, *, overwrite: bool = False) -> None:
250
+ """Add a key-value pair to the context.
251
+
252
+ Args:
253
+ key (str): The key to add.
254
+ value (Any): The value to associate with the key.
255
+ overwrite (bool, optional): Whether to overwrite the existing value. Defaults to False.
256
+
257
+ Raises:
258
+ ValueError: If the graph is not built.
259
+ """
260
+ if not hasattr(self, "graph") or self.graph is None:
261
+ msg = "Graph not found. Please build the graph first."
262
+ raise ValueError(msg)
263
+ if key in self.graph.context and not overwrite:
264
+ msg = f"Key {key} already exists in context. Set overwrite=True to overwrite."
265
+ raise ValueError(msg)
266
+ self.graph.context.update({key: value})
267
+
268
+ def update_ctx(self, value_dict: dict[str, Any]) -> None:
269
+ """Update the context with a dictionary of values.
270
+
271
+ Args:
272
+ value_dict (dict[str, Any]): The dictionary of values to update.
273
+
274
+ Raises:
275
+ ValueError: If the graph is not built.
276
+ """
277
+ if not hasattr(self, "graph") or self.graph is None:
278
+ msg = "Graph not found. Please build the graph first."
279
+ raise ValueError(msg)
280
+ if not isinstance(value_dict, dict):
281
+ msg = "Value dict must be a dictionary"
282
+ raise TypeError(msg)
283
+
284
+ self.graph.context.update(value_dict)
285
+
286
+ def _pre_run_setup(self):
287
+ pass
288
+
289
+ def set_event_manager(self, event_manager: EventManager | None = None) -> None:
290
+ self._event_manager = event_manager
291
+
292
+ def _reset_all_output_values(self) -> None:
293
+ if isinstance(self._outputs_map, dict):
294
+ for output in self._outputs_map.values():
295
+ output.value = UNDEFINED
296
+
297
+ def _build_state_model(self):
298
+ if self._state_model:
299
+ return self._state_model
300
+ name = self.name or self.__class__.__name__
301
+ model_name = f"{name}StateModel"
302
+ fields = {}
303
+ for output in self._outputs_map.values():
304
+ fields[output.name] = getattr(self, output.method)
305
+ # Lazy import to avoid circular dependency
306
+ from vibe_surf.langflow.graph.state.model import create_state_model
307
+
308
+ self._state_model = create_state_model(model_name=model_name, **fields)
309
+ return self._state_model
310
+
311
+ def get_state_model_instance_getter(self):
312
+ state_model = self._build_state_model()
313
+
314
+ def _instance_getter(_):
315
+ return state_model()
316
+
317
+ _instance_getter.__annotations__["return"] = state_model
318
+ return _instance_getter
319
+
320
+ def __deepcopy__(self, memo: dict) -> Component:
321
+ if id(self) in memo:
322
+ return memo[id(self)]
323
+ kwargs = deepcopy(self.__config, memo)
324
+ kwargs["inputs"] = deepcopy(self.__inputs, memo)
325
+ new_component = type(self)(**kwargs)
326
+ new_component._code = self._code
327
+ new_component._outputs_map = self._outputs_map
328
+ new_component._inputs = self._inputs
329
+ new_component._edges = self._edges
330
+ new_component._components = self._components
331
+ new_component._parameters = self._parameters
332
+ new_component._attributes = self._attributes
333
+ new_component._output_logs = self._output_logs
334
+ new_component._logs = self._logs # type: ignore[attr-defined]
335
+ memo[id(self)] = new_component
336
+ return new_component
337
+
338
+ def set_class_code(self) -> None:
339
+ # Get the source code of the calling class
340
+ if self._code:
341
+ return
342
+ try:
343
+ module = inspect.getmodule(self.__class__)
344
+ if module is None:
345
+ msg = "Could not find module for class"
346
+ raise ValueError(msg)
347
+
348
+ class_code = inspect.getsource(module)
349
+ self._code = class_code
350
+ except (OSError, TypeError) as e:
351
+ msg = f"Could not find source code for {self.__class__.__name__}"
352
+ raise ValueError(msg) from e
353
+
354
+ def set(self, **kwargs):
355
+ """Connects the component to other components or sets parameters and attributes.
356
+
357
+ Args:
358
+ **kwargs: Keyword arguments representing the connections, parameters, and attributes.
359
+
360
+ Returns:
361
+ None
362
+
363
+ Raises:
364
+ KeyError: If the specified input name does not exist.
365
+ """
366
+ for key, value in kwargs.items():
367
+ self._process_connection_or_parameters(key, value)
368
+ return self
369
+
370
+ def list_inputs(self):
371
+ """Returns a list of input names."""
372
+ return [_input.name for _input in self.inputs]
373
+
374
+ def list_outputs(self):
375
+ """Returns a list of output names."""
376
+ return [_output.name for _output in self._outputs_map.values()]
377
+
378
+ async def run(self):
379
+ """Executes the component's logic and returns the result.
380
+
381
+ Returns:
382
+ The result of executing the component's logic.
383
+ """
384
+ return await self._run()
385
+
386
+ def set_vertex(self, vertex: Vertex) -> None:
387
+ """Sets the vertex for the component.
388
+
389
+ Args:
390
+ vertex (Vertex): The vertex to set.
391
+
392
+ Returns:
393
+ None
394
+ """
395
+ self._vertex = vertex
396
+
397
+ def get_input(self, name: str) -> Any:
398
+ """Retrieves the value of the input with the specified name.
399
+
400
+ Args:
401
+ name (str): The name of the input.
402
+
403
+ Returns:
404
+ Any: The value of the input.
405
+
406
+ Raises:
407
+ ValueError: If the input with the specified name is not found.
408
+ """
409
+ if name in self._inputs:
410
+ return self._inputs[name]
411
+ msg = f"Input {name} not found in {self.__class__.__name__}"
412
+ raise ValueError(msg)
413
+
414
+ def get_output(self, name: str) -> Any:
415
+ """Retrieves the output with the specified name.
416
+
417
+ Args:
418
+ name (str): The name of the output to retrieve.
419
+
420
+ Returns:
421
+ Any: The output value.
422
+
423
+ Raises:
424
+ ValueError: If the output with the specified name is not found.
425
+ """
426
+ if name in self._outputs_map:
427
+ return self._outputs_map[name]
428
+ msg = f"Output {name} not found in {self.__class__.__name__}"
429
+ raise ValueError(msg)
430
+
431
+ def set_on_output(self, name: str, **kwargs) -> None:
432
+ output = self.get_output(name)
433
+ for key, value in kwargs.items():
434
+ if not hasattr(output, key):
435
+ msg = f"Output {name} does not have a method {key}"
436
+ raise ValueError(msg)
437
+ setattr(output, key, value)
438
+
439
+ def set_output_value(self, name: str, value: Any) -> None:
440
+ if name in self._outputs_map:
441
+ self._outputs_map[name].value = value
442
+ else:
443
+ msg = f"Output {name} not found in {self.__class__.__name__}"
444
+ raise ValueError(msg)
445
+
446
+ def map_outputs(self) -> None:
447
+ """Maps the given list of outputs to the component.
448
+
449
+ Args:
450
+ outputs (List[Output]): The list of outputs to be mapped.
451
+
452
+ Raises:
453
+ ValueError: If the output name is None.
454
+
455
+ Returns:
456
+ None
457
+ """
458
+ # override outputs (generated from the class code) with vertex outputs
459
+ # if they exist (generated from the frontend)
460
+ outputs = []
461
+ if self._vertex and self._vertex.outputs:
462
+ for output in self._vertex.outputs:
463
+ try:
464
+ output_ = Output(**output)
465
+ outputs.append(output_)
466
+ except ValidationError as e:
467
+ msg = f"Invalid output: {e}"
468
+ raise ValueError(msg) from e
469
+ else:
470
+ outputs = self.outputs
471
+ for output in outputs:
472
+ if output.name is None:
473
+ msg = "Output name cannot be None."
474
+ raise ValueError(msg)
475
+ # Deepcopy is required to avoid modifying the original component;
476
+ # allows each instance of each component to modify its own output
477
+ self._outputs_map[output.name] = deepcopy(output)
478
+
479
+ def map_inputs(self, inputs: list[InputTypes]) -> None:
480
+ """Maps the given inputs to the component.
481
+
482
+ Args:
483
+ inputs (List[InputTypes]): A list of InputTypes objects representing the inputs.
484
+
485
+ Raises:
486
+ ValueError: If the input name is None.
487
+
488
+ """
489
+ for input_ in inputs:
490
+ if input_.name is None:
491
+ msg = self.build_component_error_message("Input name cannot be None")
492
+ raise ValueError(msg)
493
+ try:
494
+ self._inputs[input_.name] = deepcopy(input_)
495
+ except TypeError:
496
+ self._inputs[input_.name] = input_
497
+
498
+ def validate(self, params: dict) -> None:
499
+ """Validates the component parameters.
500
+
501
+ Args:
502
+ params (dict): A dictionary containing the component parameters.
503
+
504
+ Raises:
505
+ ValueError: If the inputs are not valid.
506
+ ValueError: If the outputs are not valid.
507
+ """
508
+ self._validate_inputs(params)
509
+ self._validate_outputs()
510
+
511
+ async def run_and_validate_update_outputs(self, frontend_node: dict, field_name: str, field_value: Any):
512
+ frontend_node = self.update_outputs(frontend_node, field_name, field_value)
513
+ if field_name == "tool_mode" or frontend_node.get("tool_mode"):
514
+ is_tool_mode = field_value or frontend_node.get("tool_mode")
515
+ frontend_node["outputs"] = [self._build_tool_output()] if is_tool_mode else frontend_node["outputs"]
516
+ if is_tool_mode:
517
+ frontend_node.setdefault("template", {})
518
+ frontend_node["tool_mode"] = True
519
+ tools_metadata_input = await self._build_tools_metadata_input()
520
+ frontend_node["template"][TOOLS_METADATA_INPUT_NAME] = tools_metadata_input.to_dict()
521
+ self._append_tool_to_outputs_map()
522
+ elif "template" in frontend_node:
523
+ frontend_node["template"].pop(TOOLS_METADATA_INPUT_NAME, None)
524
+ self.tools_metadata = frontend_node.get("template", {}).get(TOOLS_METADATA_INPUT_NAME, {}).get("value")
525
+ return self._validate_frontend_node(frontend_node)
526
+
527
+ def _validate_frontend_node(self, frontend_node: dict):
528
+ # Check if all outputs are either Output or a valid Output model
529
+ for index, output in enumerate(frontend_node["outputs"]):
530
+ if isinstance(output, dict):
531
+ try:
532
+ output_ = Output(**output)
533
+ self._set_output_return_type(output_)
534
+ output_dict = output_.model_dump()
535
+ except ValidationError as e:
536
+ msg = f"Invalid output: {e}"
537
+ raise ValueError(msg) from e
538
+ elif isinstance(output, Output):
539
+ # we need to serialize it
540
+ self._set_output_return_type(output)
541
+ output_dict = output.model_dump()
542
+ else:
543
+ msg = f"Invalid output type: {type(output)}"
544
+ raise TypeError(msg)
545
+ frontend_node["outputs"][index] = output_dict
546
+ return frontend_node
547
+
548
+ def update_outputs(self, frontend_node: dict, field_name: str, field_value: Any) -> dict: # noqa: ARG002
549
+ """Default implementation for updating outputs based on field changes.
550
+
551
+ Subclasses can override this to modify outputs based on field_name and field_value.
552
+ """
553
+ return frontend_node
554
+
555
+ def _set_output_types(self, outputs: list[Output]) -> None:
556
+ for output in outputs:
557
+ self._set_output_return_type(output)
558
+
559
+ def _set_output_return_type(self, output: Output) -> None:
560
+ if output.method is None:
561
+ msg = f"Output {output.name} does not have a method"
562
+ raise ValueError(msg)
563
+ return_types = self._get_method_return_type(output.method)
564
+ output.add_types(return_types)
565
+
566
+ def _set_output_required_inputs(self) -> None:
567
+ for output in self.outputs:
568
+ if not output.method:
569
+ continue
570
+ method = getattr(self, output.method, None)
571
+ if not method or not callable(method):
572
+ continue
573
+ try:
574
+ source_code = inspect.getsource(method)
575
+ ast_tree = ast.parse(dedent(source_code))
576
+ except Exception: # noqa: BLE001
577
+ ast_tree = ast.parse(dedent(self._code or ""))
578
+
579
+ visitor = RequiredInputsVisitor(self._inputs)
580
+ visitor.visit(ast_tree)
581
+ output.required_inputs = sorted(visitor.required_inputs)
582
+
583
+ def get_output_by_method(self, method: Callable):
584
+ # method is a callable and output.method is a string
585
+ # we need to find the output that has the same method
586
+ output = next((output for output in self._outputs_map.values() if output.method == method.__name__), None)
587
+ if output is None:
588
+ method_name = method.__name__ if hasattr(method, "__name__") else str(method)
589
+ msg = f"Output with method {method_name} not found"
590
+ raise ValueError(msg)
591
+ return output
592
+
593
+ def _inherits_from_component(self, method: Callable):
594
+ # check if the method is a method from a class that inherits from Component
595
+ # and that it is an output of that class
596
+ return hasattr(method, "__self__") and isinstance(method.__self__, Component)
597
+
598
+ def _method_is_valid_output(self, method: Callable):
599
+ # check if the method is a method from a class that inherits from Component
600
+ # and that it is an output of that class
601
+ return (
602
+ hasattr(method, "__self__")
603
+ and isinstance(method.__self__, Component)
604
+ and method.__self__.get_output_by_method(method)
605
+ )
606
+
607
+ def _build_error_string_from_matching_pairs(self, matching_pairs: list[tuple[Output, Input]]):
608
+ text = ""
609
+ for output, input_ in matching_pairs:
610
+ text += f"{output.name}[{','.join(output.types)}]->{input_.name}[{','.join(input_.input_types or [])}]\n"
611
+ return text
612
+
613
+ def _find_matching_output_method(self, input_name: str, value: Component):
614
+ """Find the output method from the given component and input name.
615
+
616
+ Find the output method from the given component (`value`) that matches the specified input (`input_name`)
617
+ in the current component.
618
+ This method searches through all outputs of the provided component to find outputs whose types match
619
+ the input types of the specified input in the current component. If exactly one matching output is found,
620
+ it returns the corresponding method. If multiple matching outputs are found, it raises an error indicating
621
+ ambiguity. If no matching outputs are found, it raises an error indicating that no suitable output was found.
622
+
623
+ Args:
624
+ input_name (str): The name of the input in the current component to match.
625
+ value (Component): The component whose outputs are to be considered.
626
+
627
+ Returns:
628
+ Callable: The method corresponding to the matching output.
629
+
630
+ Raises:
631
+ ValueError: If multiple matching outputs are found, if no matching outputs are found,
632
+ or if the output method is invalid.
633
+ """
634
+ # Retrieve all outputs from the given component
635
+ outputs = value._outputs_map.values()
636
+ # Prepare to collect matching output-input pairs
637
+ matching_pairs = []
638
+ # Get the input object from the current component
639
+ input_ = self._inputs[input_name]
640
+ # Iterate over outputs to find matches based on types
641
+ matching_pairs = [
642
+ (output, input_)
643
+ for output in outputs
644
+ for output_type in output.types
645
+ # Check if the output type matches the input's accepted types
646
+ if input_.input_types and output_type in input_.input_types
647
+ ]
648
+ # If multiple matches are found, raise an error indicating ambiguity
649
+ if len(matching_pairs) > 1:
650
+ matching_pairs_str = self._build_error_string_from_matching_pairs(matching_pairs)
651
+ msg = self.build_component_error_message(
652
+ f"There are multiple outputs from {value.display_name} that can connect to inputs: {matching_pairs_str}"
653
+ )
654
+ raise ValueError(msg)
655
+ # If no matches are found, raise an error indicating no suitable output
656
+ if not matching_pairs:
657
+ msg = self.build_input_error_message(input_name, f"No matching output from {value.display_name} found")
658
+ raise ValueError(msg)
659
+ # Get the matching output and input pair
660
+ output, input_ = matching_pairs[0]
661
+ # Ensure that the output method is a valid method name (string)
662
+ if not isinstance(output.method, str):
663
+ msg = self.build_component_error_message(
664
+ f"Method {output.method} is not a valid output of {value.display_name}"
665
+ )
666
+ raise TypeError(msg)
667
+ return getattr(value, output.method)
668
+
669
+ def _process_connection_or_parameter(self, key, value) -> None:
670
+ # Special handling for Loop components: check if we're setting a loop-enabled output
671
+ if self._is_loop_connection(key, value):
672
+ self._process_loop_connection(key, value)
673
+ return
674
+
675
+ input_ = self._get_or_create_input(key)
676
+ # We need to check if callable AND if it is a method from a class that inherits from Component
677
+ if isinstance(value, Component):
678
+ # We need to find the Output that can connect to an input of the current component
679
+ # if there's more than one output that matches, we need to raise an error
680
+ # because we don't know which one to connect to
681
+ value = self._find_matching_output_method(key, value)
682
+ if callable(value) and self._inherits_from_component(value):
683
+ try:
684
+ self._method_is_valid_output(value)
685
+ except ValueError as e:
686
+ msg = f"Method {value.__name__} is not a valid output of {value.__self__.__class__.__name__}"
687
+ raise ValueError(msg) from e
688
+ self._connect_to_component(key, value, input_)
689
+ else:
690
+ self._set_parameter_or_attribute(key, value)
691
+
692
+ def _is_loop_connection(self, key: str, value) -> bool:
693
+ """Check if this is a loop feedback connection.
694
+
695
+ A loop connection occurs when:
696
+ 1. The key matches an output name of this component
697
+ 2. That output has allows_loop=True
698
+ 3. The value is a callable method from another component
699
+ """
700
+ # Check if key matches a loop-enabled output
701
+ if key not in self._outputs_map:
702
+ return False
703
+
704
+ output = self._outputs_map[key]
705
+ if not getattr(output, "allows_loop", False):
706
+ return False
707
+
708
+ # Check if value is a callable method from a Component
709
+ return callable(value) and self._inherits_from_component(value)
710
+
711
+ def _process_loop_connection(self, key: str, value) -> None:
712
+ """Process a loop feedback connection.
713
+
714
+ Creates a special edge that connects the source component's output
715
+ to this Loop component's loop-enabled output (not an input).
716
+ """
717
+ try:
718
+ self._method_is_valid_output(value)
719
+ except ValueError as e:
720
+ msg = f"Method {value.__name__} is not a valid output of {value.__self__.__class__.__name__}"
721
+ raise ValueError(msg) from e
722
+
723
+ source_component = value.__self__
724
+ self._components.append(source_component)
725
+ source_output = source_component.get_output_by_method(value)
726
+ target_output = self._outputs_map[key]
727
+
728
+ # Create special loop feedback edge
729
+ self._add_loop_edge(source_component, source_output, target_output)
730
+
731
+ def _add_loop_edge(self, source_component, source_output, target_output) -> None:
732
+ """Add a special loop feedback edge that targets an output instead of an input."""
733
+ self._edges.append(
734
+ {
735
+ "source": source_component._id,
736
+ "target": self._id,
737
+ "data": {
738
+ "sourceHandle": {
739
+ "dataType": source_component.name or source_component.__class__.__name__,
740
+ "id": source_component._id,
741
+ "name": source_output.name,
742
+ "output_types": source_output.types,
743
+ },
744
+ "targetHandle": {
745
+ # Special loop edge structure - targets an output, not an input
746
+ "dataType": self.name or self.__class__.__name__,
747
+ "id": self._id,
748
+ "name": target_output.name,
749
+ "output_types": target_output.types,
750
+ },
751
+ },
752
+ }
753
+ )
754
+
755
+ def _process_connection_or_parameters(self, key, value) -> None:
756
+ # if value is a list of components, we need to process each component
757
+ # Note this update make sure it is not a list str | int | float | bool | type(None)
758
+ if isinstance(value, list) and not any(
759
+ isinstance(val, str | int | float | bool | type(None) | Message | Data | StructuredTool) for val in value
760
+ ):
761
+ for val in value:
762
+ self._process_connection_or_parameter(key, val)
763
+ else:
764
+ self._process_connection_or_parameter(key, value)
765
+
766
+ def _get_or_create_input(self, key):
767
+ try:
768
+ return self._inputs[key]
769
+ except KeyError:
770
+ input_ = self._get_fallback_input(name=key, display_name=key)
771
+ self._inputs[key] = input_
772
+ self.inputs.append(input_)
773
+ return input_
774
+
775
+ def _connect_to_component(self, key, value, input_) -> None:
776
+ component = value.__self__
777
+ self._components.append(component)
778
+ output = component.get_output_by_method(value)
779
+ self._add_edge(component, key, output, input_)
780
+
781
+ def _add_edge(self, component, key, output, input_) -> None:
782
+ self._edges.append(
783
+ {
784
+ "source": component._id,
785
+ "target": self._id,
786
+ "data": {
787
+ "sourceHandle": {
788
+ "dataType": component.name or component.__class__.__name__,
789
+ "id": component._id,
790
+ "name": output.name,
791
+ "output_types": output.types,
792
+ },
793
+ "targetHandle": {
794
+ "fieldName": key,
795
+ "id": self._id,
796
+ "inputTypes": input_.input_types,
797
+ "type": input_.field_type,
798
+ },
799
+ },
800
+ }
801
+ )
802
+
803
+ def _set_parameter_or_attribute(self, key, value) -> None:
804
+ if isinstance(value, Component):
805
+ methods = ", ".join([f"'{output.method}'" for output in value.outputs])
806
+ msg = f"You set {value.display_name} as value for `{key}`. You should pass one of the following: {methods}"
807
+ raise TypeError(msg)
808
+ self._set_input_value(key, value)
809
+ self._parameters[key] = value
810
+ self._attributes[key] = value
811
+
812
+ def __call__(self, **kwargs):
813
+ self.set(**kwargs)
814
+
815
+ return run_until_complete(self.run())
816
+
817
+ async def _run(self):
818
+ # Resolve callable inputs
819
+ for key, _input in self._inputs.items():
820
+ if asyncio.iscoroutinefunction(_input.value):
821
+ self._inputs[key].value = await _input.value()
822
+ elif callable(_input.value):
823
+ self._inputs[key].value = await asyncio.to_thread(_input.value)
824
+
825
+ self.set_attributes({})
826
+
827
+ return await self.build_results()
828
+
829
+ def __getattr__(self, name: str) -> Any:
830
+ if "_attributes" in self.__dict__ and name in self.__dict__["_attributes"]:
831
+ # It is a dict of attributes that are not inputs or outputs all the raw data it should have the loop input.
832
+ return self.__dict__["_attributes"][name]
833
+ if "_inputs" in self.__dict__ and name in self.__dict__["_inputs"]:
834
+ return self.__dict__["_inputs"][name].value
835
+ if "_outputs_map" in self.__dict__ and name in self.__dict__["_outputs_map"]:
836
+ return self.__dict__["_outputs_map"][name]
837
+ if name in BACKWARDS_COMPATIBLE_ATTRIBUTES:
838
+ return self.__dict__[f"_{name}"]
839
+ if name.startswith("_") and name[1:] in BACKWARDS_COMPATIBLE_ATTRIBUTES:
840
+ return self.__dict__[name]
841
+ if name == "graph":
842
+ # If it got up to here it means it was going to raise
843
+ session_id = self._session_id if hasattr(self, "_session_id") else None
844
+ user_id = self._user_id if hasattr(self, "_user_id") else None
845
+ flow_name = self._flow_name if hasattr(self, "_flow_name") else None
846
+ flow_id = self._flow_id if hasattr(self, "_flow_id") else None
847
+ return PlaceholderGraph(
848
+ flow_id=flow_id, user_id=str(user_id), session_id=session_id, context={}, flow_name=flow_name
849
+ )
850
+ msg = f"Attribute {name} not found in {self.__class__.__name__}"
851
+ raise AttributeError(msg)
852
+
853
+ def _set_input_value(self, name: str, value: Any) -> None:
854
+ if name in self._inputs:
855
+ input_value = self._inputs[name].value
856
+ if isinstance(input_value, Component):
857
+ methods = ", ".join([f"'{output.method}'" for output in input_value.outputs])
858
+ msg = self.build_input_error_message(
859
+ name,
860
+ f"You set {input_value.display_name} as value. You should pass one of the following: {methods}",
861
+ )
862
+ raise ValueError(msg)
863
+ if callable(input_value) and hasattr(input_value, "__self__"):
864
+ msg = self.build_input_error_message(
865
+ name, f"Input is connected to {input_value.__self__.display_name}.{input_value.__name__}"
866
+ )
867
+ raise ValueError(msg)
868
+ try:
869
+ self._inputs[name].value = value
870
+ except Exception as e:
871
+ msg = f"Error setting input value for {name}: {e}"
872
+ raise ValueError(msg) from e
873
+ if hasattr(self._inputs[name], "load_from_db"):
874
+ self._inputs[name].load_from_db = False
875
+ else:
876
+ msg = self.build_component_error_message(f"Input {name} not found")
877
+ raise ValueError(msg)
878
+
879
+ def _validate_outputs(self) -> None:
880
+ # Raise Error if some rule isn't met
881
+ if self.selected_output is not None and self.selected_output not in self._outputs_map:
882
+ output_names = ", ".join(list(self._outputs_map.keys()))
883
+ msg = f"selected_output '{self.selected_output}' is not valid. Must be one of: {output_names}"
884
+ raise ValueError(msg)
885
+
886
+ def _map_parameters_on_frontend_node(self, frontend_node: ComponentFrontendNode) -> None:
887
+ for name, value in self._parameters.items():
888
+ frontend_node.set_field_value_in_template(name, value)
889
+
890
+ def _map_parameters_on_template(self, template: dict) -> None:
891
+ for name, value in self._parameters.items():
892
+ try:
893
+ template[name]["value"] = value
894
+ except KeyError as e:
895
+ close_match = find_closest_match(name, list(template.keys()))
896
+ if close_match:
897
+ msg = f"Parameter '{name}' not found in {self.__class__.__name__}. Did you mean '{close_match}'?"
898
+ raise ValueError(msg) from e
899
+ msg = f"Parameter {name} not found in {self.__class__.__name__}. "
900
+ raise ValueError(msg) from e
901
+
902
+ def _get_method_return_type(self, method_name: str) -> list[str]:
903
+ method = getattr(self, method_name)
904
+ return_type = get_type_hints(method).get("return")
905
+ if return_type is None:
906
+ return []
907
+ extracted_return_types = self._extract_return_type(return_type)
908
+ return [format_type(extracted_return_type) for extracted_return_type in extracted_return_types]
909
+
910
+ def _update_template(self, frontend_node: dict):
911
+ return frontend_node
912
+
913
+ def to_frontend_node(self):
914
+ # ! This part here is clunky but we need it like this for
915
+ # ! backwards compatibility. We can change how prompt component
916
+ # ! works and then update this later
917
+ field_config = self.get_template_config(self)
918
+ frontend_node = ComponentFrontendNode.from_inputs(**field_config)
919
+ for key in self._inputs:
920
+ frontend_node.set_field_load_from_db_in_template(key, value=False)
921
+ self._map_parameters_on_frontend_node(frontend_node)
922
+
923
+ frontend_node_dict = frontend_node.to_dict(keep_name=False)
924
+ frontend_node_dict = self._update_template(frontend_node_dict)
925
+ self._map_parameters_on_template(frontend_node_dict["template"])
926
+
927
+ frontend_node = ComponentFrontendNode.from_dict(frontend_node_dict)
928
+ if not self._code:
929
+ self.set_class_code()
930
+ code_field = Input(
931
+ dynamic=True,
932
+ required=True,
933
+ placeholder="",
934
+ multiline=True,
935
+ value=self._code,
936
+ password=False,
937
+ name="code",
938
+ advanced=True,
939
+ field_type="code",
940
+ is_list=False,
941
+ )
942
+ frontend_node.template.add_field(code_field)
943
+
944
+ for output in frontend_node.outputs:
945
+ if output.types:
946
+ continue
947
+ return_types = self._get_method_return_type(output.method)
948
+ output.add_types(return_types)
949
+
950
+ frontend_node.validate_component()
951
+ frontend_node.set_base_classes_from_outputs()
952
+
953
+ # Get the node dictionary and add selected_output if specified
954
+ node_dict = frontend_node.to_dict(keep_name=False)
955
+ if self.selected_output is not None:
956
+ node_dict["selected_output"] = self.selected_output
957
+
958
+ return {
959
+ "data": {
960
+ "node": node_dict,
961
+ "type": self.name or self.__class__.__name__,
962
+ "id": self._id,
963
+ },
964
+ "id": self._id,
965
+ }
966
+
967
+ def _validate_inputs(self, params: dict) -> None:
968
+ # Params keys are the `name` attribute of the Input objects
969
+ """Validates and assigns input values from the provided parameters dictionary.
970
+
971
+ For each parameter matching a defined input, sets the input's value and updates the parameter
972
+ dictionary with the validated value.
973
+ """
974
+ for key, value in params.copy().items():
975
+ if key not in self._inputs:
976
+ continue
977
+ input_ = self._inputs[key]
978
+ # BaseInputMixin has a `validate_assignment=True`
979
+
980
+ input_.value = value
981
+ params[input_.name] = input_.value
982
+
983
+ def set_attributes(self, params: dict) -> None:
984
+ """Sets component attributes from the given parameters, preventing conflicts with reserved attribute names.
985
+
986
+ Raises:
987
+ ValueError: If a parameter name matches a reserved attribute not managed in _attributes and its
988
+ value differs from the current attribute value.
989
+ """
990
+ self._validate_inputs(params)
991
+ attributes = {}
992
+ for key, value in params.items():
993
+ if key in self.__dict__ and key not in self._attributes and value != getattr(self, key):
994
+ msg = (
995
+ f"{self.__class__.__name__} defines an input parameter named '{key}' "
996
+ f"that is a reserved word and cannot be used."
997
+ )
998
+ raise ValueError(msg)
999
+ attributes[key] = value
1000
+ for key, input_obj in self._inputs.items():
1001
+ if key not in attributes and key not in self._attributes:
1002
+ attributes[key] = input_obj.value or None
1003
+
1004
+ self._attributes.update(attributes)
1005
+
1006
+ def _set_outputs(self, outputs: list[dict]) -> None:
1007
+ self.outputs = [Output(**output) for output in outputs]
1008
+ for output in self.outputs:
1009
+ setattr(self, output.name, output)
1010
+ self._outputs_map[output.name] = output
1011
+
1012
+ def get_trace_as_inputs(self):
1013
+ predefined_inputs = {
1014
+ input_.name: input_.value
1015
+ for input_ in self.inputs
1016
+ if hasattr(input_, "trace_as_input") and input_.trace_as_input
1017
+ }
1018
+ # Runtime inputs
1019
+ runtime_inputs = {name: input_.value for name, input_ in self._inputs.items() if hasattr(input_, "value")}
1020
+ return {**predefined_inputs, **runtime_inputs}
1021
+
1022
+ def get_trace_as_metadata(self):
1023
+ def safe_list_values(items):
1024
+ return [v if isinstance(v, str | int | float | bool) or v is None else str(v) for v in items]
1025
+
1026
+ def safe_value(val):
1027
+ if isinstance(val, str | int | float | bool) or val is None:
1028
+ return val
1029
+ if isinstance(val, list | tuple):
1030
+ return safe_list_values(val)
1031
+ try:
1032
+ return json.dumps(val)
1033
+ except (TypeError, ValueError):
1034
+ return str(val)
1035
+
1036
+ return {
1037
+ input_.name: safe_value(getattr(self, input_.name, input_.value))
1038
+ for input_ in self.inputs
1039
+ if getattr(input_, "trace_as_metadata", False)
1040
+ }
1041
+
1042
+ async def _build_with_tracing(self):
1043
+ inputs = self.get_trace_as_inputs()
1044
+ metadata = self.get_trace_as_metadata()
1045
+ async with self._tracing_service.trace_component(self, self.trace_name, inputs, metadata):
1046
+ results, artifacts = await self._build_results()
1047
+ self._tracing_service.set_outputs(self.trace_name, results)
1048
+
1049
+ return results, artifacts
1050
+
1051
+ async def _build_without_tracing(self):
1052
+ return await self._build_results()
1053
+
1054
+ async def build_results(self):
1055
+ """Build the results of the component."""
1056
+ if hasattr(self, "graph"):
1057
+ session_id = self.graph.session_id
1058
+ elif hasattr(self, "_session_id"):
1059
+ session_id = self._session_id
1060
+ else:
1061
+ session_id = None
1062
+ try:
1063
+ if self._tracing_service:
1064
+ return await self._build_with_tracing()
1065
+ return await self._build_without_tracing()
1066
+ except StreamingError as e:
1067
+ await self.send_error(
1068
+ exception=e.cause,
1069
+ session_id=session_id,
1070
+ trace_name=getattr(self, "trace_name", None),
1071
+ source=e.source,
1072
+ )
1073
+ raise e.cause # noqa: B904
1074
+ except Exception as e:
1075
+ await self.send_error(
1076
+ exception=e,
1077
+ session_id=session_id,
1078
+ source=Source(id=self._id, display_name=self.display_name, source=self.display_name),
1079
+ trace_name=getattr(self, "trace_name", None),
1080
+ )
1081
+ raise
1082
+
1083
+ async def _build_results(self) -> tuple[dict, dict]:
1084
+ results, artifacts = {}, {}
1085
+
1086
+ self._pre_run_setup_if_needed()
1087
+ self._handle_tool_mode()
1088
+
1089
+ for output in self._get_outputs_to_process():
1090
+ self._current_output = output.name
1091
+ result = await self._get_output_result(output)
1092
+ results[output.name] = result
1093
+ artifacts[output.name] = self._build_artifact(result)
1094
+ self._log_output(output)
1095
+
1096
+ self._finalize_results(results, artifacts)
1097
+ return results, artifacts
1098
+
1099
+ def _pre_run_setup_if_needed(self):
1100
+ if hasattr(self, "_pre_run_setup"):
1101
+ self._pre_run_setup()
1102
+
1103
+ def _handle_tool_mode(self):
1104
+ if (
1105
+ hasattr(self, "outputs") and any(getattr(_input, "tool_mode", False) for _input in self.inputs)
1106
+ ) or self.add_tool_output:
1107
+ self._append_tool_to_outputs_map()
1108
+
1109
+ def _should_process_output(self, output):
1110
+ """Determines whether a given output should be processed based on vertex edge configuration.
1111
+
1112
+ Returns True if the component has no vertex or outgoing edges, or if the output's name is among
1113
+ the vertex's source edge names.
1114
+ """
1115
+ if not self._vertex or not self._vertex.outgoing_edges:
1116
+ return True
1117
+ return output.name in self._vertex.edges_source_names
1118
+
1119
+ def _get_outputs_to_process(self):
1120
+ """Returns a list of outputs to process, ordered according to self.outputs.
1121
+
1122
+ Outputs are included only if they should be processed, as determined by _should_process_output.
1123
+ First processes outputs in the order defined by self.outputs, then processes any remaining outputs
1124
+ from _outputs_map that weren't in self.outputs.
1125
+
1126
+ Returns:
1127
+ list: Outputs to be processed in the defined order.
1128
+
1129
+ Raises:
1130
+ ValueError: If an output name in self.outputs is not present in _outputs_map.
1131
+ """
1132
+ result = []
1133
+ processed_names = set()
1134
+
1135
+ # First process outputs in the order defined by self.outputs
1136
+ for output in self.outputs:
1137
+ output_obj = self._outputs_map.get(output.name, deepcopy(output))
1138
+ if self._should_process_output(output_obj):
1139
+ result.append(output_obj)
1140
+ processed_names.add(output_obj.name)
1141
+
1142
+ # Then process any remaining outputs from _outputs_map
1143
+ for name, output_obj in self._outputs_map.items():
1144
+ if name not in processed_names and self._should_process_output(output_obj):
1145
+ result.append(output_obj)
1146
+
1147
+ return result
1148
+
1149
+ async def _get_output_result(self, output):
1150
+ """Computes and returns the result for a given output, applying caching and output options.
1151
+
1152
+ If the output is cached and a value is already defined, returns the cached value. Otherwise,
1153
+ invokes the associated output method asynchronously, applies output options, updates the cache,
1154
+ and returns the result. Raises a ValueError if the output method is not defined, or a TypeError
1155
+ if the method invocation fails.
1156
+ """
1157
+ if output.cache and output.value != UNDEFINED:
1158
+ return output.value
1159
+
1160
+ if output.method is None:
1161
+ msg = f'Output "{output.name}" does not have a method defined.'
1162
+ raise ValueError(msg)
1163
+
1164
+ method = getattr(self, output.method)
1165
+ try:
1166
+ result = await method() if inspect.iscoroutinefunction(method) else await asyncio.to_thread(method)
1167
+ except TypeError as e:
1168
+ msg = f'Error running method "{output.method}": {e}'
1169
+ raise TypeError(msg) from e
1170
+
1171
+ if (
1172
+ self._vertex is not None
1173
+ and isinstance(result, Message)
1174
+ and result.flow_id is None
1175
+ and self._vertex.graph.flow_id is not None
1176
+ ):
1177
+ result.set_flow_id(self._vertex.graph.flow_id)
1178
+ result = output.apply_options(result)
1179
+ output.value = result
1180
+
1181
+ return result
1182
+
1183
+ async def resolve_output(self, output_name: str) -> Any:
1184
+ """Resolves and returns the value for a specified output by name.
1185
+
1186
+ If output caching is enabled and a value is already available, returns the cached value;
1187
+ otherwise, computes and returns the output result. Raises a KeyError if the output name
1188
+ does not exist.
1189
+ """
1190
+ output = self._outputs_map.get(output_name)
1191
+ if output is None:
1192
+ msg = (
1193
+ f"Sorry, an output named '{output_name}' could not be found. "
1194
+ "Please ensure that the output is correctly configured and try again."
1195
+ )
1196
+ raise KeyError(msg)
1197
+ if output.cache and output.value != UNDEFINED:
1198
+ return output.value
1199
+ return await self._get_output_result(output)
1200
+
1201
+ def _build_artifact(self, result):
1202
+ """Builds an artifact dictionary containing a string representation, raw data, and type for a result.
1203
+
1204
+ The artifact includes a human-readable representation, the processed raw result, and its determined type.
1205
+ """
1206
+ custom_repr = self.custom_repr()
1207
+ if custom_repr is None and isinstance(result, dict | Data | str):
1208
+ custom_repr = result
1209
+ if not isinstance(custom_repr, str):
1210
+ custom_repr = str(custom_repr)
1211
+
1212
+ raw = self._process_raw_result(result)
1213
+ artifact_type = get_artifact_type(self.status or raw, result)
1214
+ raw, artifact_type = post_process_raw(raw, artifact_type)
1215
+ return {"repr": custom_repr, "raw": raw, "type": artifact_type}
1216
+
1217
+ def _process_raw_result(self, result):
1218
+ return self.extract_data(result)
1219
+
1220
+ def extract_data(self, result):
1221
+ """Extract the data from the result. this is where the self.status is set."""
1222
+ if isinstance(result, Message):
1223
+ self.status = result.get_text()
1224
+ return (
1225
+ self.status if self.status is not None else "No text available"
1226
+ ) # Provide a default message if .text_key is missing
1227
+ if hasattr(result, "data"):
1228
+ return result.data
1229
+ if hasattr(result, "model_dump"):
1230
+ return result.model_dump()
1231
+ if isinstance(result, Data | dict | str):
1232
+ return result.data if isinstance(result, Data) else result
1233
+
1234
+ if self.status:
1235
+ return self.status
1236
+ return result
1237
+
1238
+ def _log_output(self, output):
1239
+ self._output_logs[output.name] = self._logs
1240
+ self._logs = []
1241
+ self._current_output = ""
1242
+
1243
+ def _finalize_results(self, results, artifacts):
1244
+ self._artifacts = artifacts
1245
+ self._results = results
1246
+ if self._tracing_service:
1247
+ self._tracing_service.set_outputs(self.trace_name, results)
1248
+
1249
+ def custom_repr(self):
1250
+ if self.repr_value == "":
1251
+ self.repr_value = self.status
1252
+ if isinstance(self.repr_value, dict):
1253
+ return yaml.dump(self.repr_value)
1254
+ if isinstance(self.repr_value, str):
1255
+ return self.repr_value
1256
+ if isinstance(self.repr_value, BaseModel) and not isinstance(self.repr_value, Data):
1257
+ return str(self.repr_value)
1258
+ return self.repr_value
1259
+
1260
+ def build_inputs(self):
1261
+ """Builds the inputs for the custom component.
1262
+
1263
+ Returns:
1264
+ List[Input]: The list of inputs.
1265
+ """
1266
+ # This function is similar to build_config, but it will process the inputs
1267
+ # and return them as a dict with keys being the Input.name and values being the Input.model_dump()
1268
+ self.inputs = self.template_config.get("inputs", [])
1269
+ if not self.inputs:
1270
+ return {}
1271
+ return {_input.name: _input.model_dump(by_alias=True, exclude_none=True) for _input in self.inputs}
1272
+
1273
+ def _get_field_order(self):
1274
+ try:
1275
+ inputs = self.template_config["inputs"]
1276
+ return [field.name for field in inputs]
1277
+ except KeyError:
1278
+ return []
1279
+
1280
+ def build(self, **kwargs) -> None:
1281
+ self.set_attributes(kwargs)
1282
+
1283
+ def _get_fallback_input(self, **kwargs):
1284
+ return Input(**kwargs)
1285
+
1286
+ async def to_toolkit(self) -> list[Tool]:
1287
+ """Convert component to a list of tools.
1288
+
1289
+ This is a template method that defines the skeleton of the toolkit creation
1290
+ algorithm. Subclasses can override _get_tools() to provide custom tool
1291
+ implementations while maintaining the metadata update functionality.
1292
+
1293
+ Returns:
1294
+ list[Tool]: A list of tools with updated metadata. Each tool contains:
1295
+ - name: The name of the tool
1296
+ - description: A description of what the tool does
1297
+ - tags: List of tags associated with the tool
1298
+ """
1299
+ # Get tools from subclass implementation
1300
+ tools = await self._get_tools()
1301
+
1302
+ if hasattr(self, TOOLS_METADATA_INPUT_NAME):
1303
+ tools = self._filter_tools_by_status(tools=tools, metadata=self.tools_metadata)
1304
+ return self._update_tools_with_metadata(tools=tools, metadata=self.tools_metadata)
1305
+
1306
+ # If no metadata exists yet, filter based on enabled_tools
1307
+ return self._filter_tools_by_status(tools=tools, metadata=None)
1308
+
1309
+ async def _get_tools(self) -> list[Tool]:
1310
+ """Get the list of tools for this component.
1311
+
1312
+ This method can be overridden by subclasses to provide custom tool implementations.
1313
+ The default implementation uses ComponentToolkit.
1314
+
1315
+ Returns:
1316
+ list[Tool]: List of tools provided by this component
1317
+ """
1318
+ component_toolkit: type[ComponentToolkit] = _get_component_toolkit()
1319
+ return component_toolkit(component=self).get_tools(callbacks=self.get_langchain_callbacks())
1320
+
1321
+ def _extract_tools_tags(self, tools_metadata: list[dict]) -> list[str]:
1322
+ """Extract the first tag from each tool's metadata."""
1323
+ return [tool["tags"][0] for tool in tools_metadata if tool["tags"]]
1324
+
1325
+ def _update_tools_with_metadata(self, tools: list[Tool], metadata: DataFrame | None) -> list[Tool]:
1326
+ """Update tools with provided metadata."""
1327
+ component_toolkit: type[ComponentToolkit] = _get_component_toolkit()
1328
+ return component_toolkit(component=self, metadata=metadata).update_tools_metadata(tools=tools)
1329
+
1330
+ def check_for_tool_tag_change(self, old_tags: list[str], new_tags: list[str]) -> bool:
1331
+ # First check length - if different lengths, they can't be equal
1332
+ if len(old_tags) != len(new_tags):
1333
+ return True
1334
+ # Use set comparison for O(n) average case complexity, earlier the old_tags.sort() != new_tags.sort() was used
1335
+ return set(old_tags) != set(new_tags)
1336
+
1337
+ def _filter_tools_by_status(self, tools: list[Tool], metadata: pd.DataFrame | None) -> list[Tool]:
1338
+ """Filter tools based on their status in metadata.
1339
+
1340
+ Args:
1341
+ tools (list[Tool]): List of tools to filter.
1342
+ metadata (list[dict] | None): Tools metadata containing status information.
1343
+
1344
+ Returns:
1345
+ list[Tool]: Filtered list of tools.
1346
+ """
1347
+ # Convert metadata to a list of dicts if it's a DataFrame
1348
+ metadata_dict = None # Initialize as None to avoid lint issues with empty dict
1349
+ if isinstance(metadata, pd.DataFrame):
1350
+ metadata_dict = metadata.to_dict(orient="records")
1351
+
1352
+ # If metadata is None or empty, use enabled_tools
1353
+ if not metadata_dict:
1354
+ enabled = self.enabled_tools
1355
+ return (
1356
+ tools
1357
+ if enabled is None
1358
+ else [
1359
+ tool for tool in tools if any(enabled_name in [tool.name, *tool.tags] for enabled_name in enabled)
1360
+ ]
1361
+ )
1362
+
1363
+ # Ensure metadata is a list of dicts
1364
+ if not isinstance(metadata_dict, list):
1365
+ return tools
1366
+
1367
+ # Create a mapping of tool names to their status
1368
+ tool_status = {item["name"]: item.get("status", True) for item in metadata_dict}
1369
+ return [tool for tool in tools if tool_status.get(tool.name, True)]
1370
+
1371
+ def _build_tool_data(self, tool: Tool) -> dict:
1372
+ if tool.metadata is None:
1373
+ tool.metadata = {}
1374
+ return {
1375
+ "name": tool.name,
1376
+ "description": tool.description,
1377
+ "tags": tool.tags if hasattr(tool, "tags") and tool.tags else [tool.name],
1378
+ "status": True, # Initialize all tools with status True
1379
+ "display_name": tool.metadata.get("display_name", tool.name),
1380
+ "display_description": tool.metadata.get("display_description", tool.description),
1381
+ "readonly": tool.metadata.get("readonly", False),
1382
+ "args": tool.args,
1383
+ # "args_schema": tool.args_schema,
1384
+ }
1385
+
1386
+ async def _build_tools_metadata_input(self):
1387
+ try:
1388
+ from vibe_surf.langflow.io import ToolsInput
1389
+ except ImportError as e:
1390
+ msg = "Failed to import ToolsInput from vibe_surf.langflow.io"
1391
+ raise ImportError(msg) from e
1392
+ placeholder = None
1393
+ tools = []
1394
+ try:
1395
+ tools = await self._get_tools()
1396
+ placeholder = "Loading actions..." if len(tools) == 0 else ""
1397
+ except (TimeoutError, asyncio.TimeoutError):
1398
+ placeholder = "Timeout loading actions"
1399
+ except (ConnectionError, OSError, ValueError):
1400
+ placeholder = "Error loading actions"
1401
+ # Always use the latest tool data
1402
+ tool_data = [self._build_tool_data(tool) for tool in tools]
1403
+ # print(tool_data)
1404
+ if hasattr(self, TOOLS_METADATA_INPUT_NAME):
1405
+ old_tags = self._extract_tools_tags(self.tools_metadata)
1406
+ new_tags = self._extract_tools_tags(tool_data)
1407
+ if self.check_for_tool_tag_change(old_tags, new_tags):
1408
+ # If enabled tools are set, update status based on them
1409
+ enabled = self.enabled_tools
1410
+ if enabled is not None:
1411
+ for item in tool_data:
1412
+ item["status"] = any(enabled_name in [item["name"], *item["tags"]] for enabled_name in enabled)
1413
+ self.tools_metadata = tool_data
1414
+ else:
1415
+ # Preserve existing status values
1416
+ existing_status = {item["name"]: item.get("status", True) for item in self.tools_metadata}
1417
+ for item in tool_data:
1418
+ item["status"] = existing_status.get(item["name"], True)
1419
+ tool_data = self.tools_metadata
1420
+ else:
1421
+ # If enabled tools are set, update status based on them
1422
+ enabled = self.enabled_tools
1423
+ if enabled is not None:
1424
+ for item in tool_data:
1425
+ item["status"] = any(enabled_name in [item["name"], *item["tags"]] for enabled_name in enabled)
1426
+ self.tools_metadata = tool_data
1427
+
1428
+ return ToolsInput(
1429
+ name=TOOLS_METADATA_INPUT_NAME,
1430
+ placeholder=placeholder,
1431
+ display_name="Actions",
1432
+ info=TOOLS_METADATA_INFO,
1433
+ value=tool_data,
1434
+ )
1435
+
1436
+ def get_project_name(self):
1437
+ if hasattr(self, "_tracing_service") and self._tracing_service:
1438
+ return self._tracing_service.project_name
1439
+ return "Langflow"
1440
+
1441
+ def log(self, message: LoggableType | list[LoggableType], name: str | None = None) -> None:
1442
+ """Logs a message.
1443
+
1444
+ Args:
1445
+ message (LoggableType | list[LoggableType]): The message to log.
1446
+ name (str, optional): The name of the log. Defaults to None.
1447
+ """
1448
+ if name is None:
1449
+ name = f"Log {len(self._logs) + 1}"
1450
+ log = Log(message=message, type=get_artifact_type(message), name=name)
1451
+ self._logs.append(log)
1452
+ if self._tracing_service and self._vertex:
1453
+ self._tracing_service.add_log(trace_name=self.trace_name, log=log)
1454
+ if self._event_manager is not None and self._current_output:
1455
+ data = log.model_dump()
1456
+ data["output"] = self._current_output
1457
+ data["component_id"] = self._id
1458
+ self._event_manager.on_log(data=data)
1459
+
1460
+ def _append_tool_output(self) -> None:
1461
+ if next((output for output in self.outputs if output.name == TOOL_OUTPUT_NAME), None) is None:
1462
+ self.outputs.append(
1463
+ Output(
1464
+ name=TOOL_OUTPUT_NAME,
1465
+ display_name=TOOL_OUTPUT_DISPLAY_NAME,
1466
+ method="to_toolkit",
1467
+ types=["Tool"],
1468
+ )
1469
+ )
1470
+
1471
+ def is_connected_to_chat_output(self) -> bool:
1472
+ # Lazy import to avoid circular dependency
1473
+ from vibe_surf.langflow.graph.utils import has_chat_output
1474
+
1475
+ return has_chat_output(self.graph.get_vertex_neighbors(self._vertex))
1476
+
1477
+ def _should_skip_message(self, message: Message) -> bool:
1478
+ """Check if the message should be skipped based on vertex configuration and message type."""
1479
+ return (
1480
+ self._vertex is not None
1481
+ and not (self._vertex.is_output or self._vertex.is_input)
1482
+ and not self.is_connected_to_chat_output()
1483
+ and not isinstance(message, ErrorMessage)
1484
+ )
1485
+
1486
+ async def send_message(self, message: Message, id_: str | None = None):
1487
+ if self._should_skip_message(message):
1488
+ return message
1489
+ if (hasattr(self, "graph") and self.graph.session_id) and (message is not None and not message.session_id):
1490
+ session_id = (
1491
+ UUID(self.graph.session_id) if isinstance(self.graph.session_id, str) else self.graph.session_id
1492
+ )
1493
+ message.session_id = session_id
1494
+ if hasattr(message, "flow_id") and isinstance(message.flow_id, str):
1495
+ message.flow_id = UUID(message.flow_id)
1496
+ stored_message = await self._store_message(message)
1497
+
1498
+ self._stored_message_id = stored_message.id
1499
+ try:
1500
+ complete_message = ""
1501
+ if (
1502
+ self._should_stream_message(stored_message, message)
1503
+ and message is not None
1504
+ and isinstance(message.text, AsyncIterator | Iterator)
1505
+ ):
1506
+ complete_message = await self._stream_message(message.text, stored_message)
1507
+ stored_message.text = complete_message
1508
+ stored_message = await self._update_stored_message(stored_message)
1509
+ else:
1510
+ # Only send message event for non-streaming messages
1511
+ await self._send_message_event(stored_message, id_=id_)
1512
+ except Exception:
1513
+ # remove the message from the database
1514
+ await delete_message(stored_message.id)
1515
+ raise
1516
+ self.status = stored_message
1517
+ return stored_message
1518
+
1519
+ async def _store_message(self, message: Message) -> Message:
1520
+ flow_id: str | None = None
1521
+ if hasattr(self, "graph"):
1522
+ # Convert UUID to str if needed
1523
+ flow_id = str(self.graph.flow_id) if self.graph.flow_id else None
1524
+ stored_messages = await astore_message(message, flow_id=flow_id)
1525
+ if len(stored_messages) != 1:
1526
+ msg = "Only one message can be stored at a time."
1527
+ raise ValueError(msg)
1528
+ stored_message = stored_messages[0]
1529
+ return await Message.create(**stored_message.model_dump())
1530
+
1531
+ async def _send_message_event(self, message: Message, id_: str | None = None, category: str | None = None) -> None:
1532
+ if hasattr(self, "_event_manager") and self._event_manager:
1533
+ data_dict = message.model_dump()["data"] if hasattr(message, "data") else message.model_dump()
1534
+ if id_ and not data_dict.get("id"):
1535
+ data_dict["id"] = id_
1536
+ category = category or data_dict.get("category", None)
1537
+
1538
+ def _send_event():
1539
+ match category:
1540
+ case "error":
1541
+ self._event_manager.on_error(data=data_dict)
1542
+ case "remove_message":
1543
+ # Check if id exists in data_dict before accessing it
1544
+ if "id" in data_dict:
1545
+ self._event_manager.on_remove_message(data={"id": data_dict["id"]})
1546
+ else:
1547
+ # If no id, try to get it from the message object or id_ parameter
1548
+ message_id = getattr(message, "id", None) or id_
1549
+ if message_id:
1550
+ self._event_manager.on_remove_message(data={"id": message_id})
1551
+ case _:
1552
+ self._event_manager.on_message(data=data_dict)
1553
+
1554
+ await asyncio.to_thread(_send_event)
1555
+
1556
+ def _should_stream_message(self, stored_message: Message, original_message: Message) -> bool:
1557
+ return bool(
1558
+ hasattr(self, "_event_manager")
1559
+ and self._event_manager
1560
+ and stored_message.id
1561
+ and not isinstance(original_message.text, str)
1562
+ )
1563
+
1564
+ async def _update_stored_message(self, message: Message) -> Message:
1565
+ """Update the stored message."""
1566
+ if hasattr(self, "_vertex") and self._vertex is not None and hasattr(self._vertex, "graph"):
1567
+ flow_id = (
1568
+ UUID(self._vertex.graph.flow_id)
1569
+ if isinstance(self._vertex.graph.flow_id, str)
1570
+ else self._vertex.graph.flow_id
1571
+ )
1572
+
1573
+ message.flow_id = flow_id
1574
+
1575
+ message_tables = await aupdate_messages(message)
1576
+ if not message_tables:
1577
+ msg = "Failed to update message"
1578
+ raise ValueError(msg)
1579
+ message_table = message_tables[0]
1580
+ return await Message.create(**message_table.model_dump())
1581
+
1582
+ async def _stream_message(self, iterator: AsyncIterator | Iterator, message: Message) -> str:
1583
+ if not isinstance(iterator, AsyncIterator | Iterator):
1584
+ msg = "The message must be an iterator or an async iterator."
1585
+ raise TypeError(msg)
1586
+
1587
+ if isinstance(iterator, AsyncIterator):
1588
+ return await self._handle_async_iterator(iterator, message.id, message)
1589
+ try:
1590
+ complete_message = ""
1591
+ first_chunk = True
1592
+ for chunk in iterator:
1593
+ complete_message = await self._process_chunk(
1594
+ chunk.content, complete_message, message.id, message, first_chunk=first_chunk
1595
+ )
1596
+ first_chunk = False
1597
+ except Exception as e:
1598
+ raise StreamingError(cause=e, source=message.properties.source) from e
1599
+ else:
1600
+ return complete_message
1601
+
1602
+ async def _handle_async_iterator(self, iterator: AsyncIterator, message_id: str, message: Message) -> str:
1603
+ complete_message = ""
1604
+ first_chunk = True
1605
+ async for chunk in iterator:
1606
+ complete_message = await self._process_chunk(
1607
+ chunk.content, complete_message, message_id, message, first_chunk=first_chunk
1608
+ )
1609
+ first_chunk = False
1610
+ return complete_message
1611
+
1612
+ async def _process_chunk(
1613
+ self, chunk: str, complete_message: str, message_id: str, message: Message, *, first_chunk: bool = False
1614
+ ) -> str:
1615
+ complete_message += chunk
1616
+ if self._event_manager:
1617
+ if first_chunk:
1618
+ # Send the initial message only on the first chunk
1619
+ msg_copy = message.model_copy()
1620
+ msg_copy.text = complete_message
1621
+ await self._send_message_event(msg_copy, id_=message_id)
1622
+ await asyncio.to_thread(
1623
+ self._event_manager.on_token,
1624
+ data={
1625
+ "chunk": chunk,
1626
+ "id": str(message_id),
1627
+ },
1628
+ )
1629
+ return complete_message
1630
+
1631
+ async def send_error(
1632
+ self,
1633
+ exception: Exception,
1634
+ session_id: str,
1635
+ trace_name: str,
1636
+ source: Source,
1637
+ ) -> Message | None:
1638
+ """Send an error message to the frontend."""
1639
+ flow_id = self.graph.flow_id if hasattr(self, "graph") else None
1640
+ if not session_id:
1641
+ return None
1642
+ error_message = ErrorMessage(
1643
+ flow_id=flow_id,
1644
+ exception=exception,
1645
+ session_id=session_id,
1646
+ trace_name=trace_name,
1647
+ source=source,
1648
+ )
1649
+ await self.send_message(error_message)
1650
+ return error_message
1651
+
1652
+ def _append_tool_to_outputs_map(self):
1653
+ self._outputs_map[TOOL_OUTPUT_NAME] = self._build_tool_output()
1654
+ # add a new input for the tool schema
1655
+ # self.inputs.append(self._build_tool_schema())
1656
+
1657
+ def _build_tool_output(self) -> Output:
1658
+ return Output(name=TOOL_OUTPUT_NAME, display_name=TOOL_OUTPUT_DISPLAY_NAME, method="to_toolkit", types=["Tool"])
1659
+
1660
+ def get_input_display_name(self, input_name: str) -> str:
1661
+ """Get the display name of an input.
1662
+
1663
+ This is a public utility method that subclasses can use to get user-friendly
1664
+ display names for inputs when building error messages or UI elements.
1665
+
1666
+ Usage:
1667
+ msg = f"Input {self.get_input_display_name(input_name)} not found"
1668
+
1669
+ Args:
1670
+ input_name (str): The name of the input.
1671
+
1672
+ Returns:
1673
+ str: The display name of the input, or the input name if not found.
1674
+ """
1675
+ if input_name in self._inputs:
1676
+ return getattr(self._inputs[input_name], "display_name", input_name)
1677
+ return input_name
1678
+
1679
+ def get_output_display_name(self, output_name: str) -> str:
1680
+ """Get the display name of an output.
1681
+
1682
+ This is a public utility method that subclasses can use to get user-friendly
1683
+ display names for outputs when building error messages or UI elements.
1684
+
1685
+ Args:
1686
+ output_name (str): The name of the output.
1687
+
1688
+ Returns:
1689
+ str: The display name of the output, or the output name if not found.
1690
+ """
1691
+ if output_name in self._outputs_map:
1692
+ return getattr(self._outputs_map[output_name], "display_name", output_name)
1693
+ return output_name
1694
+
1695
+ def build_input_error_message(self, input_name: str, message: str) -> str:
1696
+ """Build an error message for an input.
1697
+
1698
+ This is a public utility method that subclasses can use to create consistent,
1699
+ user-friendly error messages that reference inputs by their display names.
1700
+ The input name is placed at the beginning to ensure it's visible even if the message is truncated.
1701
+
1702
+ Args:
1703
+ input_name (str): The name of the input.
1704
+ message (str): The error message.
1705
+
1706
+ Returns:
1707
+ str: The formatted error message with display name.
1708
+ """
1709
+ display_name = self.get_input_display_name(input_name)
1710
+ return f"[Input: {display_name}] {message}"
1711
+
1712
+ def build_output_error_message(self, output_name: str, message: str) -> str:
1713
+ """Build an error message for an output.
1714
+
1715
+ This is a public utility method that subclasses can use to create consistent,
1716
+ user-friendly error messages that reference outputs by their display names.
1717
+ The output name is placed at the beginning to ensure it's visible even if the message is truncated.
1718
+
1719
+ Args:
1720
+ output_name (str): The name of the output.
1721
+ message (str): The error message.
1722
+
1723
+ Returns:
1724
+ str: The formatted error message with display name.
1725
+ """
1726
+ display_name = self.get_output_display_name(output_name)
1727
+ return f"[Output: {display_name}] {message}"
1728
+
1729
+ def build_component_error_message(self, message: str) -> str:
1730
+ """Build an error message for the component.
1731
+
1732
+ This is a public utility method that subclasses can use to create consistent,
1733
+ user-friendly error messages that reference the component by its display name.
1734
+ The component name is placed at the beginning to ensure it's visible even if the message is truncated.
1735
+
1736
+ Args:
1737
+ message (str): The error message.
1738
+
1739
+ Returns:
1740
+ str: The formatted error message with component display name.
1741
+ """
1742
+ return f"[Component: {self.display_name or self.__class__.__name__}] {message}"