vibesurf 0.1.37__py3-none-any.whl → 0.2.9a2__py3-none-any.whl

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