vibesurf 0.1.43__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 (2835) 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 +41 -4
  4. vibe_surf/agents/report_writer_agent.py +18 -38
  5. vibe_surf/agents/vibe_surf_agent.py +121 -133
  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 +3 -1
  1738. vibe_surf/backend/main.py +705 -158
  1739. vibe_surf/backend/shared_state.py +366 -25
  1740. vibe_surf/backend/utils/utils.py +1 -1
  1741. vibe_surf/browser/agent_browser_session.py +19 -65
  1742. vibe_surf/browser/browser_manager.py +5 -4
  1743. vibe_surf/browser/find_page_element.py +1100 -0
  1744. vibe_surf/browser/page_operations.py +222 -0
  1745. vibe_surf/browser/watchdogs/dom_watchdog.py +1 -1
  1746. vibe_surf/chrome_extension/background.js +15 -5
  1747. vibe_surf/chrome_extension/config.js +2 -2
  1748. vibe_surf/chrome_extension/manifest.json +23 -8
  1749. vibe_surf/chrome_extension/scripts/api-client.js +134 -11
  1750. vibe_surf/chrome_extension/scripts/settings-general.js +513 -0
  1751. vibe_surf/chrome_extension/scripts/settings-integrations.js +998 -0
  1752. vibe_surf/chrome_extension/scripts/settings-manager.js +96 -2707
  1753. vibe_surf/chrome_extension/scripts/settings-profiles.js +1330 -0
  1754. vibe_surf/chrome_extension/scripts/settings-workflow.js +2911 -0
  1755. vibe_surf/chrome_extension/scripts/ui-manager.js +623 -505
  1756. vibe_surf/chrome_extension/scripts/version.js +3 -0
  1757. vibe_surf/chrome_extension/sidepanel.html +511 -6
  1758. vibe_surf/chrome_extension/styles/components.css +146 -0
  1759. vibe_surf/chrome_extension/styles/layout.css +2 -0
  1760. vibe_surf/chrome_extension/styles/settings-integrations.css +35 -17
  1761. vibe_surf/chrome_extension/styles/settings-workflow.css +2347 -0
  1762. vibe_surf/cli.py +3 -0
  1763. vibe_surf/langflow/__init__.py +0 -0
  1764. vibe_surf/langflow/__main__.py +954 -0
  1765. vibe_surf/langflow/alembic/README +1 -0
  1766. vibe_surf/langflow/alembic/env.py +124 -0
  1767. vibe_surf/langflow/alembic/script.py.mako +31 -0
  1768. vibe_surf/langflow/alembic/versions/006b3990db50_add_unique_constraints.py +66 -0
  1769. vibe_surf/langflow/alembic/versions/012fb73ac359_add_folder_table.py +82 -0
  1770. vibe_surf/langflow/alembic/versions/0882f9657f22_encrypt_existing_mcp_auth_settings_.py +122 -0
  1771. vibe_surf/langflow/alembic/versions/0ae3a2674f32_update_the_columns_that_need_to_change_.py +71 -0
  1772. vibe_surf/langflow/alembic/versions/0b8757876a7c_.py +32 -0
  1773. vibe_surf/langflow/alembic/versions/0d60fcbd4e8e_create_vertex_builds_table.py +51 -0
  1774. vibe_surf/langflow/alembic/versions/1a110b568907_replace_credential_table_with_variable.py +66 -0
  1775. vibe_surf/langflow/alembic/versions/1b8b740a6fa3_remove_fk_constraint_in_message_.py +337 -0
  1776. vibe_surf/langflow/alembic/versions/1c79524817ed_add_unique_constraints_per_user_in_.py +43 -0
  1777. vibe_surf/langflow/alembic/versions/1cb603706752_modify_uniqueness_constraint_on_file_.py +279 -0
  1778. vibe_surf/langflow/alembic/versions/1d90f8a0efe1_update_description_columns_type.py +71 -0
  1779. vibe_surf/langflow/alembic/versions/1eab2c3eb45e_event_error.py +53 -0
  1780. vibe_surf/langflow/alembic/versions/1ef9c4f3765d_.py +54 -0
  1781. vibe_surf/langflow/alembic/versions/1f4d6df60295_add_default_fields_column.py +43 -0
  1782. vibe_surf/langflow/alembic/versions/260dbcc8b680_adds_tables.py +151 -0
  1783. vibe_surf/langflow/alembic/versions/29fe8f1f806b_add_missing_index.py +44 -0
  1784. vibe_surf/langflow/alembic/versions/2ac71eb9c3ae_adds_credential_table.py +55 -0
  1785. vibe_surf/langflow/alembic/versions/3162e83e485f_add_auth_settings_to_folder_and_merge.py +58 -0
  1786. vibe_surf/langflow/alembic/versions/3bb0ddf32dfb_add_unique_constraints_per_user_in_flow_.py +55 -0
  1787. vibe_surf/langflow/alembic/versions/4e5980a44eaa_fix_date_times_again.py +124 -0
  1788. vibe_surf/langflow/alembic/versions/58b28437a398_modify_nullable.py +66 -0
  1789. vibe_surf/langflow/alembic/versions/5ace73a7f223_new_remove_table_upgrade_op.py +39 -0
  1790. vibe_surf/langflow/alembic/versions/631faacf5da2_add_webhook_columns.py +45 -0
  1791. vibe_surf/langflow/alembic/versions/63b9c451fd30_add_icon_and_icon_bg_color_to_flow.py +50 -0
  1792. vibe_surf/langflow/alembic/versions/66f72f04a1de_add_mcp_support_with_project_settings_.py +54 -0
  1793. vibe_surf/langflow/alembic/versions/67cc006d50bf_add_profile_image_column.py +57 -0
  1794. vibe_surf/langflow/alembic/versions/6e7b581b5648_fix_nullable.py +59 -0
  1795. vibe_surf/langflow/alembic/versions/7843803a87b5_store_updates.py +55 -0
  1796. vibe_surf/langflow/alembic/versions/79e675cb6752_change_datetime_type.py +124 -0
  1797. vibe_surf/langflow/alembic/versions/7d2162acc8b2_adds_updated_at_and_folder_cols.py +74 -0
  1798. vibe_surf/langflow/alembic/versions/90be8e2ed91e_create_transactions_table.py +51 -0
  1799. vibe_surf/langflow/alembic/versions/93e2705fa8d6_add_column_save_path_to_flow.py +43 -0
  1800. vibe_surf/langflow/alembic/versions/a72f5cf9c2f9_add_endpoint_name_col.py +52 -0
  1801. vibe_surf/langflow/alembic/versions/b2fa308044b5_add_unique_constraints.py +101 -0
  1802. vibe_surf/langflow/alembic/versions/bc2f01c40e4a_new_fixes.py +73 -0
  1803. vibe_surf/langflow/alembic/versions/c153816fd85f_set_name_and_value_to_not_nullable.py +52 -0
  1804. vibe_surf/langflow/alembic/versions/d066bfd22890_add_message_table.py +52 -0
  1805. vibe_surf/langflow/alembic/versions/d2d475a1f7c0_add_tags_column_to_flow.py +41 -0
  1806. vibe_surf/langflow/alembic/versions/d37bc4322900_drop_single_constraint_on_files_name_.py +169 -0
  1807. vibe_surf/langflow/alembic/versions/d3dbf656a499_add_gradient_column_in_flow.py +41 -0
  1808. vibe_surf/langflow/alembic/versions/d9a6ea21edcd_rename_default_folder.py +75 -0
  1809. vibe_surf/langflow/alembic/versions/dd9e0804ebd1_add_v2_file_table.py +49 -0
  1810. vibe_surf/langflow/alembic/versions/e3162c1804e6_add_persistent_locked_state.py +43 -0
  1811. vibe_surf/langflow/alembic/versions/e3bc869fa272_fix_nullable.py +68 -0
  1812. vibe_surf/langflow/alembic/versions/e56d87f8994a_add_optins_column_to_user.py +38 -0
  1813. vibe_surf/langflow/alembic/versions/e5a65ecff2cd_nullable_in_vertex_build.py +49 -0
  1814. vibe_surf/langflow/alembic/versions/eb5866d51fd2_change_columns_to_be_nullable.py +31 -0
  1815. vibe_surf/langflow/alembic/versions/eb5e72293a8e_add_error_and_edit_flags_to_message.py +49 -0
  1816. vibe_surf/langflow/alembic/versions/f3b2d1f1002d_add_column_access_type_to_flow.py +37 -0
  1817. vibe_surf/langflow/alembic/versions/f5ee9749d1a6_user_id_can_be_null_in_flow.py +42 -0
  1818. vibe_surf/langflow/alembic/versions/fd531f8868b1_fix_credential_table.py +60 -0
  1819. vibe_surf/langflow/alembic.ini +113 -0
  1820. vibe_surf/langflow/api/__init__.py +5 -0
  1821. vibe_surf/langflow/api/build.py +557 -0
  1822. vibe_surf/langflow/api/disconnect.py +31 -0
  1823. vibe_surf/langflow/api/health_check_router.py +65 -0
  1824. vibe_surf/langflow/api/limited_background_tasks.py +29 -0
  1825. vibe_surf/langflow/api/log_router.py +103 -0
  1826. vibe_surf/langflow/api/router.py +63 -0
  1827. vibe_surf/langflow/api/schemas.py +14 -0
  1828. vibe_surf/langflow/api/utils.py +381 -0
  1829. vibe_surf/langflow/api/v1/__init__.py +41 -0
  1830. vibe_surf/langflow/api/v1/api_key.py +88 -0
  1831. vibe_surf/langflow/api/v1/auth_helpers.py +75 -0
  1832. vibe_surf/langflow/api/v1/base.py +50 -0
  1833. vibe_surf/langflow/api/v1/callback.py +136 -0
  1834. vibe_surf/langflow/api/v1/chat.py +675 -0
  1835. vibe_surf/langflow/api/v1/endpoints.py +800 -0
  1836. vibe_surf/langflow/api/v1/files.py +193 -0
  1837. vibe_surf/langflow/api/v1/flows.py +579 -0
  1838. vibe_surf/langflow/api/v1/folders.py +95 -0
  1839. vibe_surf/langflow/api/v1/knowledge_bases.py +452 -0
  1840. vibe_surf/langflow/api/v1/login.py +166 -0
  1841. vibe_surf/langflow/api/v1/mcp.py +137 -0
  1842. vibe_surf/langflow/api/v1/mcp_projects.py +1230 -0
  1843. vibe_surf/langflow/api/v1/mcp_utils.py +348 -0
  1844. vibe_surf/langflow/api/v1/monitor.py +203 -0
  1845. vibe_surf/langflow/api/v1/openai_responses.py +561 -0
  1846. vibe_surf/langflow/api/v1/projects.py +447 -0
  1847. vibe_surf/langflow/api/v1/schemas.py +488 -0
  1848. vibe_surf/langflow/api/v1/starter_projects.py +17 -0
  1849. vibe_surf/langflow/api/v1/store.py +182 -0
  1850. vibe_surf/langflow/api/v1/users.py +146 -0
  1851. vibe_surf/langflow/api/v1/validate.py +48 -0
  1852. vibe_surf/langflow/api/v1/variable.py +106 -0
  1853. vibe_surf/langflow/api/v1/voice_mode.py +1375 -0
  1854. vibe_surf/langflow/api/v2/__init__.py +7 -0
  1855. vibe_surf/langflow/api/v2/files.py +532 -0
  1856. vibe_surf/langflow/api/v2/mcp.py +330 -0
  1857. vibe_surf/langflow/base/__init__.py +0 -0
  1858. vibe_surf/langflow/base/agents/__init__.py +0 -0
  1859. vibe_surf/langflow/base/agents/agent.py +267 -0
  1860. vibe_surf/langflow/base/agents/callback.py +130 -0
  1861. vibe_surf/langflow/base/agents/context.py +109 -0
  1862. vibe_surf/langflow/base/agents/crewai/__init__.py +0 -0
  1863. vibe_surf/langflow/base/agents/crewai/crew.py +231 -0
  1864. vibe_surf/langflow/base/agents/crewai/tasks.py +12 -0
  1865. vibe_surf/langflow/base/agents/default_prompts.py +23 -0
  1866. vibe_surf/langflow/base/agents/errors.py +15 -0
  1867. vibe_surf/langflow/base/agents/events.py +346 -0
  1868. vibe_surf/langflow/base/agents/utils.py +205 -0
  1869. vibe_surf/langflow/base/astra_assistants/__init__.py +0 -0
  1870. vibe_surf/langflow/base/astra_assistants/util.py +171 -0
  1871. vibe_surf/langflow/base/chains/__init__.py +0 -0
  1872. vibe_surf/langflow/base/chains/model.py +19 -0
  1873. vibe_surf/langflow/base/composio/__init__.py +0 -0
  1874. vibe_surf/langflow/base/composio/composio_base.py +1301 -0
  1875. vibe_surf/langflow/base/compressors/__init__.py +0 -0
  1876. vibe_surf/langflow/base/compressors/model.py +60 -0
  1877. vibe_surf/langflow/base/constants.py +46 -0
  1878. vibe_surf/langflow/base/curl/__init__.py +0 -0
  1879. vibe_surf/langflow/base/curl/parse.py +188 -0
  1880. vibe_surf/langflow/base/data/__init__.py +5 -0
  1881. vibe_surf/langflow/base/data/base_file.py +698 -0
  1882. vibe_surf/langflow/base/data/docling_utils.py +280 -0
  1883. vibe_surf/langflow/base/data/utils.py +198 -0
  1884. vibe_surf/langflow/base/document_transformers/__init__.py +0 -0
  1885. vibe_surf/langflow/base/document_transformers/model.py +43 -0
  1886. vibe_surf/langflow/base/embeddings/__init__.py +0 -0
  1887. vibe_surf/langflow/base/embeddings/aiml_embeddings.py +62 -0
  1888. vibe_surf/langflow/base/embeddings/model.py +26 -0
  1889. vibe_surf/langflow/base/flow_processing/__init__.py +0 -0
  1890. vibe_surf/langflow/base/flow_processing/utils.py +86 -0
  1891. vibe_surf/langflow/base/huggingface/__init__.py +0 -0
  1892. vibe_surf/langflow/base/huggingface/model_bridge.py +133 -0
  1893. vibe_surf/langflow/base/io/__init__.py +0 -0
  1894. vibe_surf/langflow/base/io/chat.py +20 -0
  1895. vibe_surf/langflow/base/io/text.py +22 -0
  1896. vibe_surf/langflow/base/knowledge_bases/__init__.py +0 -0
  1897. vibe_surf/langflow/base/knowledge_bases/knowledge_base_utils.py +137 -0
  1898. vibe_surf/langflow/base/langchain_utilities/__init__.py +0 -0
  1899. vibe_surf/langflow/base/langchain_utilities/model.py +35 -0
  1900. vibe_surf/langflow/base/langchain_utilities/spider_constants.py +1 -0
  1901. vibe_surf/langflow/base/langwatch/__init__.py +0 -0
  1902. vibe_surf/langflow/base/langwatch/utils.py +18 -0
  1903. vibe_surf/langflow/base/mcp/__init__.py +0 -0
  1904. vibe_surf/langflow/base/mcp/constants.py +2 -0
  1905. vibe_surf/langflow/base/mcp/util.py +1544 -0
  1906. vibe_surf/langflow/base/memory/__init__.py +0 -0
  1907. vibe_surf/langflow/base/memory/memory.py +49 -0
  1908. vibe_surf/langflow/base/memory/model.py +38 -0
  1909. vibe_surf/langflow/base/models/__init__.py +3 -0
  1910. vibe_surf/langflow/base/models/aiml_constants.py +51 -0
  1911. vibe_surf/langflow/base/models/anthropic_constants.py +49 -0
  1912. vibe_surf/langflow/base/models/aws_constants.py +151 -0
  1913. vibe_surf/langflow/base/models/chat_result.py +76 -0
  1914. vibe_surf/langflow/base/models/google_generative_ai_constants.py +70 -0
  1915. vibe_surf/langflow/base/models/groq_constants.py +134 -0
  1916. vibe_surf/langflow/base/models/model.py +375 -0
  1917. vibe_surf/langflow/base/models/model_input_constants.py +299 -0
  1918. vibe_surf/langflow/base/models/model_metadata.py +41 -0
  1919. vibe_surf/langflow/base/models/model_utils.py +8 -0
  1920. vibe_surf/langflow/base/models/novita_constants.py +35 -0
  1921. vibe_surf/langflow/base/models/ollama_constants.py +49 -0
  1922. vibe_surf/langflow/base/models/openai_constants.py +121 -0
  1923. vibe_surf/langflow/base/models/sambanova_constants.py +18 -0
  1924. vibe_surf/langflow/base/processing/__init__.py +0 -0
  1925. vibe_surf/langflow/base/prompts/__init__.py +0 -0
  1926. vibe_surf/langflow/base/prompts/api_utils.py +224 -0
  1927. vibe_surf/langflow/base/prompts/utils.py +61 -0
  1928. vibe_surf/langflow/base/textsplitters/__init__.py +0 -0
  1929. vibe_surf/langflow/base/textsplitters/model.py +28 -0
  1930. vibe_surf/langflow/base/tools/__init__.py +0 -0
  1931. vibe_surf/langflow/base/tools/base.py +26 -0
  1932. vibe_surf/langflow/base/tools/component_tool.py +324 -0
  1933. vibe_surf/langflow/base/tools/constants.py +49 -0
  1934. vibe_surf/langflow/base/tools/flow_tool.py +131 -0
  1935. vibe_surf/langflow/base/tools/run_flow.py +227 -0
  1936. vibe_surf/langflow/base/vectorstores/__init__.py +0 -0
  1937. vibe_surf/langflow/base/vectorstores/model.py +193 -0
  1938. vibe_surf/langflow/base/vectorstores/utils.py +22 -0
  1939. vibe_surf/langflow/base/vectorstores/vector_store_connection_decorator.py +52 -0
  1940. vibe_surf/langflow/cli/__init__.py +0 -0
  1941. vibe_surf/langflow/cli/progress.py +233 -0
  1942. vibe_surf/langflow/components/FAISS/__init__.py +34 -0
  1943. vibe_surf/langflow/components/FAISS/faiss.py +111 -0
  1944. vibe_surf/langflow/components/Notion/__init__.py +19 -0
  1945. vibe_surf/langflow/components/Notion/add_content_to_page.py +269 -0
  1946. vibe_surf/langflow/components/Notion/create_page.py +94 -0
  1947. vibe_surf/langflow/components/Notion/list_database_properties.py +68 -0
  1948. vibe_surf/langflow/components/Notion/list_pages.py +122 -0
  1949. vibe_surf/langflow/components/Notion/list_users.py +77 -0
  1950. vibe_surf/langflow/components/Notion/page_content_viewer.py +93 -0
  1951. vibe_surf/langflow/components/Notion/search.py +111 -0
  1952. vibe_surf/langflow/components/Notion/update_page_property.py +114 -0
  1953. vibe_surf/langflow/components/__init__.py +270 -0
  1954. vibe_surf/langflow/components/_importing.py +37 -0
  1955. vibe_surf/langflow/components/agentql/__init__.py +3 -0
  1956. vibe_surf/langflow/components/agentql/agentql_api.py +151 -0
  1957. vibe_surf/langflow/components/agents/__init__.py +4 -0
  1958. vibe_surf/langflow/components/agents/agent.py +608 -0
  1959. vibe_surf/langflow/components/agents/mcp_component.py +511 -0
  1960. vibe_surf/langflow/components/aiml/__init__.py +37 -0
  1961. vibe_surf/langflow/components/aiml/aiml.py +115 -0
  1962. vibe_surf/langflow/components/aiml/aiml_embeddings.py +37 -0
  1963. vibe_surf/langflow/components/amazon/__init__.py +36 -0
  1964. vibe_surf/langflow/components/amazon/amazon_bedrock_embedding.py +109 -0
  1965. vibe_surf/langflow/components/amazon/amazon_bedrock_model.py +124 -0
  1966. vibe_surf/langflow/components/amazon/s3_bucket_uploader.py +211 -0
  1967. vibe_surf/langflow/components/anthropic/__init__.py +34 -0
  1968. vibe_surf/langflow/components/anthropic/anthropic.py +187 -0
  1969. vibe_surf/langflow/components/apify/__init__.py +5 -0
  1970. vibe_surf/langflow/components/apify/apify_actor.py +325 -0
  1971. vibe_surf/langflow/components/arxiv/__init__.py +3 -0
  1972. vibe_surf/langflow/components/arxiv/arxiv.py +163 -0
  1973. vibe_surf/langflow/components/assemblyai/__init__.py +46 -0
  1974. vibe_surf/langflow/components/assemblyai/assemblyai_get_subtitles.py +83 -0
  1975. vibe_surf/langflow/components/assemblyai/assemblyai_lemur.py +183 -0
  1976. vibe_surf/langflow/components/assemblyai/assemblyai_list_transcripts.py +95 -0
  1977. vibe_surf/langflow/components/assemblyai/assemblyai_poll_transcript.py +72 -0
  1978. vibe_surf/langflow/components/assemblyai/assemblyai_start_transcript.py +188 -0
  1979. vibe_surf/langflow/components/azure/__init__.py +37 -0
  1980. vibe_surf/langflow/components/azure/azure_openai.py +95 -0
  1981. vibe_surf/langflow/components/azure/azure_openai_embeddings.py +83 -0
  1982. vibe_surf/langflow/components/baidu/__init__.py +32 -0
  1983. vibe_surf/langflow/components/baidu/baidu_qianfan_chat.py +113 -0
  1984. vibe_surf/langflow/components/bing/__init__.py +3 -0
  1985. vibe_surf/langflow/components/bing/bing_search_api.py +61 -0
  1986. vibe_surf/langflow/components/cassandra/__init__.py +40 -0
  1987. vibe_surf/langflow/components/cassandra/cassandra.py +264 -0
  1988. vibe_surf/langflow/components/cassandra/cassandra_chat.py +92 -0
  1989. vibe_surf/langflow/components/cassandra/cassandra_graph.py +238 -0
  1990. vibe_surf/langflow/components/chains/__init__.py +0 -0
  1991. vibe_surf/langflow/components/chroma/__init__.py +34 -0
  1992. vibe_surf/langflow/components/chroma/chroma.py +169 -0
  1993. vibe_surf/langflow/components/cleanlab/__init__.py +40 -0
  1994. vibe_surf/langflow/components/cleanlab/cleanlab_evaluator.py +157 -0
  1995. vibe_surf/langflow/components/cleanlab/cleanlab_rag_evaluator.py +254 -0
  1996. vibe_surf/langflow/components/cleanlab/cleanlab_remediator.py +131 -0
  1997. vibe_surf/langflow/components/clickhouse/__init__.py +34 -0
  1998. vibe_surf/langflow/components/clickhouse/clickhouse.py +135 -0
  1999. vibe_surf/langflow/components/cloudflare/__init__.py +32 -0
  2000. vibe_surf/langflow/components/cloudflare/cloudflare.py +81 -0
  2001. vibe_surf/langflow/components/cohere/__init__.py +40 -0
  2002. vibe_surf/langflow/components/cohere/cohere_embeddings.py +81 -0
  2003. vibe_surf/langflow/components/cohere/cohere_models.py +46 -0
  2004. vibe_surf/langflow/components/cohere/cohere_rerank.py +51 -0
  2005. vibe_surf/langflow/components/composio/__init__.py +73 -0
  2006. vibe_surf/langflow/components/composio/composio_api.py +279 -0
  2007. vibe_surf/langflow/components/composio/dropbox_compnent.py +11 -0
  2008. vibe_surf/langflow/components/composio/github_composio.py +11 -0
  2009. vibe_surf/langflow/components/composio/gmail_composio.py +38 -0
  2010. vibe_surf/langflow/components/composio/googlecalendar_composio.py +11 -0
  2011. vibe_surf/langflow/components/composio/googlemeet_composio.py +11 -0
  2012. vibe_surf/langflow/components/composio/googletasks_composio.py +8 -0
  2013. vibe_surf/langflow/components/composio/linear_composio.py +11 -0
  2014. vibe_surf/langflow/components/composio/outlook_composio.py +11 -0
  2015. vibe_surf/langflow/components/composio/reddit_composio.py +11 -0
  2016. vibe_surf/langflow/components/composio/slack_composio.py +11 -0
  2017. vibe_surf/langflow/components/composio/slackbot_composio.py +11 -0
  2018. vibe_surf/langflow/components/composio/supabase_composio.py +11 -0
  2019. vibe_surf/langflow/components/composio/todoist_composio.py +11 -0
  2020. vibe_surf/langflow/components/composio/youtube_composio.py +11 -0
  2021. vibe_surf/langflow/components/confluence/__init__.py +3 -0
  2022. vibe_surf/langflow/components/confluence/confluence.py +84 -0
  2023. vibe_surf/langflow/components/couchbase/__init__.py +34 -0
  2024. vibe_surf/langflow/components/couchbase/couchbase.py +102 -0
  2025. vibe_surf/langflow/components/crewai/__init__.py +49 -0
  2026. vibe_surf/langflow/components/crewai/crewai.py +108 -0
  2027. vibe_surf/langflow/components/crewai/hierarchical_crew.py +47 -0
  2028. vibe_surf/langflow/components/crewai/hierarchical_task.py +45 -0
  2029. vibe_surf/langflow/components/crewai/sequential_crew.py +53 -0
  2030. vibe_surf/langflow/components/crewai/sequential_task.py +74 -0
  2031. vibe_surf/langflow/components/crewai/sequential_task_agent.py +144 -0
  2032. vibe_surf/langflow/components/custom_component/__init__.py +34 -0
  2033. vibe_surf/langflow/components/custom_component/custom_component.py +31 -0
  2034. vibe_surf/langflow/components/data/__init__.py +25 -0
  2035. vibe_surf/langflow/components/data/api_request.py +555 -0
  2036. vibe_surf/langflow/components/data/csv_to_data.py +96 -0
  2037. vibe_surf/langflow/components/data/directory.py +113 -0
  2038. vibe_surf/langflow/components/data/file.py +632 -0
  2039. vibe_surf/langflow/components/data/json_to_data.py +99 -0
  2040. vibe_surf/langflow/components/data/news_search.py +164 -0
  2041. vibe_surf/langflow/components/data/rss.py +69 -0
  2042. vibe_surf/langflow/components/data/sql_executor.py +99 -0
  2043. vibe_surf/langflow/components/data/url.py +299 -0
  2044. vibe_surf/langflow/components/data/web_search.py +112 -0
  2045. vibe_surf/langflow/components/data/webhook.py +56 -0
  2046. vibe_surf/langflow/components/datastax/__init__.py +70 -0
  2047. vibe_surf/langflow/components/datastax/astra_assistant_manager.py +306 -0
  2048. vibe_surf/langflow/components/datastax/astra_db.py +68 -0
  2049. vibe_surf/langflow/components/datastax/astra_vectorize.py +122 -0
  2050. vibe_surf/langflow/components/datastax/astradb_cql.py +314 -0
  2051. vibe_surf/langflow/components/datastax/astradb_graph.py +326 -0
  2052. vibe_surf/langflow/components/datastax/astradb_tool.py +418 -0
  2053. vibe_surf/langflow/components/datastax/astradb_vectorstore.py +1292 -0
  2054. vibe_surf/langflow/components/datastax/create_assistant.py +58 -0
  2055. vibe_surf/langflow/components/datastax/create_thread.py +32 -0
  2056. vibe_surf/langflow/components/datastax/dotenv.py +35 -0
  2057. vibe_surf/langflow/components/datastax/get_assistant.py +37 -0
  2058. vibe_surf/langflow/components/datastax/getenvvar.py +30 -0
  2059. vibe_surf/langflow/components/datastax/graph_rag.py +141 -0
  2060. vibe_surf/langflow/components/datastax/hcd.py +314 -0
  2061. vibe_surf/langflow/components/datastax/list_assistants.py +25 -0
  2062. vibe_surf/langflow/components/datastax/run.py +89 -0
  2063. vibe_surf/langflow/components/deactivated/__init__.py +19 -0
  2064. vibe_surf/langflow/components/deactivated/amazon_kendra.py +66 -0
  2065. vibe_surf/langflow/components/deactivated/chat_litellm_model.py +158 -0
  2066. vibe_surf/langflow/components/deactivated/code_block_extractor.py +26 -0
  2067. vibe_surf/langflow/components/deactivated/documents_to_data.py +22 -0
  2068. vibe_surf/langflow/components/deactivated/embed.py +16 -0
  2069. vibe_surf/langflow/components/deactivated/extract_key_from_data.py +46 -0
  2070. vibe_surf/langflow/components/deactivated/json_document_builder.py +59 -0
  2071. vibe_surf/langflow/components/deactivated/list_flows.py +20 -0
  2072. vibe_surf/langflow/components/deactivated/merge_data.py +93 -0
  2073. vibe_surf/langflow/components/deactivated/message.py +37 -0
  2074. vibe_surf/langflow/components/deactivated/metal.py +54 -0
  2075. vibe_surf/langflow/components/deactivated/multi_query.py +59 -0
  2076. vibe_surf/langflow/components/deactivated/retriever.py +43 -0
  2077. vibe_surf/langflow/components/deactivated/selective_passthrough.py +77 -0
  2078. vibe_surf/langflow/components/deactivated/should_run_next.py +40 -0
  2079. vibe_surf/langflow/components/deactivated/split_text.py +63 -0
  2080. vibe_surf/langflow/components/deactivated/store_message.py +24 -0
  2081. vibe_surf/langflow/components/deactivated/sub_flow.py +124 -0
  2082. vibe_surf/langflow/components/deactivated/vectara_self_query.py +76 -0
  2083. vibe_surf/langflow/components/deactivated/vector_store.py +24 -0
  2084. vibe_surf/langflow/components/deepseek/__init__.py +34 -0
  2085. vibe_surf/langflow/components/deepseek/deepseek.py +136 -0
  2086. vibe_surf/langflow/components/docling/__init__.py +43 -0
  2087. vibe_surf/langflow/components/docling/chunk_docling_document.py +186 -0
  2088. vibe_surf/langflow/components/docling/docling_inline.py +249 -0
  2089. vibe_surf/langflow/components/docling/docling_remote.py +192 -0
  2090. vibe_surf/langflow/components/docling/export_docling_document.py +117 -0
  2091. vibe_surf/langflow/components/documentloaders/__init__.py +0 -0
  2092. vibe_surf/langflow/components/duckduckgo/__init__.py +3 -0
  2093. vibe_surf/langflow/components/duckduckgo/duck_duck_go_search_run.py +92 -0
  2094. vibe_surf/langflow/components/elastic/__init__.py +37 -0
  2095. vibe_surf/langflow/components/elastic/elasticsearch.py +267 -0
  2096. vibe_surf/langflow/components/elastic/opensearch.py +243 -0
  2097. vibe_surf/langflow/components/embeddings/__init__.py +37 -0
  2098. vibe_surf/langflow/components/embeddings/similarity.py +77 -0
  2099. vibe_surf/langflow/components/embeddings/text_embedder.py +65 -0
  2100. vibe_surf/langflow/components/exa/__init__.py +3 -0
  2101. vibe_surf/langflow/components/exa/exa_search.py +68 -0
  2102. vibe_surf/langflow/components/firecrawl/__init__.py +43 -0
  2103. vibe_surf/langflow/components/firecrawl/firecrawl_crawl_api.py +88 -0
  2104. vibe_surf/langflow/components/firecrawl/firecrawl_extract_api.py +136 -0
  2105. vibe_surf/langflow/components/firecrawl/firecrawl_map_api.py +89 -0
  2106. vibe_surf/langflow/components/firecrawl/firecrawl_scrape_api.py +73 -0
  2107. vibe_surf/langflow/components/git/__init__.py +4 -0
  2108. vibe_surf/langflow/components/git/git.py +262 -0
  2109. vibe_surf/langflow/components/git/gitextractor.py +196 -0
  2110. vibe_surf/langflow/components/glean/__init__.py +3 -0
  2111. vibe_surf/langflow/components/glean/glean_search_api.py +173 -0
  2112. vibe_surf/langflow/components/google/__init__.py +17 -0
  2113. vibe_surf/langflow/components/google/gmail.py +193 -0
  2114. vibe_surf/langflow/components/google/google_bq_sql_executor.py +157 -0
  2115. vibe_surf/langflow/components/google/google_drive.py +92 -0
  2116. vibe_surf/langflow/components/google/google_drive_search.py +152 -0
  2117. vibe_surf/langflow/components/google/google_generative_ai.py +147 -0
  2118. vibe_surf/langflow/components/google/google_generative_ai_embeddings.py +141 -0
  2119. vibe_surf/langflow/components/google/google_oauth_token.py +89 -0
  2120. vibe_surf/langflow/components/google/google_search_api_core.py +68 -0
  2121. vibe_surf/langflow/components/groq/__init__.py +34 -0
  2122. vibe_surf/langflow/components/groq/groq.py +140 -0
  2123. vibe_surf/langflow/components/helpers/__init__.py +52 -0
  2124. vibe_surf/langflow/components/helpers/calculator_core.py +89 -0
  2125. vibe_surf/langflow/components/helpers/create_list.py +40 -0
  2126. vibe_surf/langflow/components/helpers/current_date.py +42 -0
  2127. vibe_surf/langflow/components/helpers/id_generator.py +42 -0
  2128. vibe_surf/langflow/components/helpers/memory.py +253 -0
  2129. vibe_surf/langflow/components/helpers/output_parser.py +46 -0
  2130. vibe_surf/langflow/components/helpers/store_message.py +91 -0
  2131. vibe_surf/langflow/components/homeassistant/__init__.py +7 -0
  2132. vibe_surf/langflow/components/homeassistant/home_assistant_control.py +152 -0
  2133. vibe_surf/langflow/components/homeassistant/list_home_assistant_states.py +137 -0
  2134. vibe_surf/langflow/components/huggingface/__init__.py +37 -0
  2135. vibe_surf/langflow/components/huggingface/huggingface.py +199 -0
  2136. vibe_surf/langflow/components/huggingface/huggingface_inference_api.py +106 -0
  2137. vibe_surf/langflow/components/ibm/__init__.py +34 -0
  2138. vibe_surf/langflow/components/ibm/watsonx.py +203 -0
  2139. vibe_surf/langflow/components/ibm/watsonx_embeddings.py +135 -0
  2140. vibe_surf/langflow/components/icosacomputing/__init__.py +5 -0
  2141. vibe_surf/langflow/components/icosacomputing/combinatorial_reasoner.py +84 -0
  2142. vibe_surf/langflow/components/input_output/__init__.py +38 -0
  2143. vibe_surf/langflow/components/input_output/chat.py +99 -0
  2144. vibe_surf/langflow/components/input_output/chat_output.py +169 -0
  2145. vibe_surf/langflow/components/input_output/text.py +27 -0
  2146. vibe_surf/langflow/components/input_output/text_output.py +29 -0
  2147. vibe_surf/langflow/components/jigsawstack/__init__.py +23 -0
  2148. vibe_surf/langflow/components/jigsawstack/ai_scrape.py +126 -0
  2149. vibe_surf/langflow/components/jigsawstack/ai_web_search.py +136 -0
  2150. vibe_surf/langflow/components/jigsawstack/file_read.py +115 -0
  2151. vibe_surf/langflow/components/jigsawstack/file_upload.py +94 -0
  2152. vibe_surf/langflow/components/jigsawstack/image_generation.py +205 -0
  2153. vibe_surf/langflow/components/jigsawstack/nsfw.py +60 -0
  2154. vibe_surf/langflow/components/jigsawstack/object_detection.py +124 -0
  2155. vibe_surf/langflow/components/jigsawstack/sentiment.py +112 -0
  2156. vibe_surf/langflow/components/jigsawstack/text_to_sql.py +90 -0
  2157. vibe_surf/langflow/components/jigsawstack/text_translate.py +77 -0
  2158. vibe_surf/langflow/components/jigsawstack/vocr.py +107 -0
  2159. vibe_surf/langflow/components/knowledge_bases/__init__.py +34 -0
  2160. vibe_surf/langflow/components/knowledge_bases/ingestion.py +697 -0
  2161. vibe_surf/langflow/components/knowledge_bases/retrieval.py +264 -0
  2162. vibe_surf/langflow/components/langchain_utilities/__init__.py +109 -0
  2163. vibe_surf/langflow/components/langchain_utilities/character.py +53 -0
  2164. vibe_surf/langflow/components/langchain_utilities/conversation.py +52 -0
  2165. vibe_surf/langflow/components/langchain_utilities/csv_agent.py +107 -0
  2166. vibe_surf/langflow/components/langchain_utilities/fake_embeddings.py +26 -0
  2167. vibe_surf/langflow/components/langchain_utilities/html_link_extractor.py +35 -0
  2168. vibe_surf/langflow/components/langchain_utilities/json_agent.py +45 -0
  2169. vibe_surf/langflow/components/langchain_utilities/langchain_hub.py +126 -0
  2170. vibe_surf/langflow/components/langchain_utilities/language_recursive.py +49 -0
  2171. vibe_surf/langflow/components/langchain_utilities/language_semantic.py +138 -0
  2172. vibe_surf/langflow/components/langchain_utilities/llm_checker.py +39 -0
  2173. vibe_surf/langflow/components/langchain_utilities/llm_math.py +42 -0
  2174. vibe_surf/langflow/components/langchain_utilities/natural_language.py +61 -0
  2175. vibe_surf/langflow/components/langchain_utilities/openai_tools.py +53 -0
  2176. vibe_surf/langflow/components/langchain_utilities/openapi.py +48 -0
  2177. vibe_surf/langflow/components/langchain_utilities/recursive_character.py +60 -0
  2178. vibe_surf/langflow/components/langchain_utilities/retrieval_qa.py +83 -0
  2179. vibe_surf/langflow/components/langchain_utilities/runnable_executor.py +137 -0
  2180. vibe_surf/langflow/components/langchain_utilities/self_query.py +80 -0
  2181. vibe_surf/langflow/components/langchain_utilities/spider.py +142 -0
  2182. vibe_surf/langflow/components/langchain_utilities/sql.py +40 -0
  2183. vibe_surf/langflow/components/langchain_utilities/sql_database.py +35 -0
  2184. vibe_surf/langflow/components/langchain_utilities/sql_generator.py +78 -0
  2185. vibe_surf/langflow/components/langchain_utilities/tool_calling.py +59 -0
  2186. vibe_surf/langflow/components/langchain_utilities/vector_store_info.py +49 -0
  2187. vibe_surf/langflow/components/langchain_utilities/vector_store_router.py +33 -0
  2188. vibe_surf/langflow/components/langchain_utilities/xml_agent.py +71 -0
  2189. vibe_surf/langflow/components/langwatch/__init__.py +3 -0
  2190. vibe_surf/langflow/components/langwatch/langwatch.py +278 -0
  2191. vibe_surf/langflow/components/link_extractors/__init__.py +0 -0
  2192. vibe_surf/langflow/components/lmstudio/__init__.py +34 -0
  2193. vibe_surf/langflow/components/lmstudio/lmstudioembeddings.py +89 -0
  2194. vibe_surf/langflow/components/lmstudio/lmstudiomodel.py +129 -0
  2195. vibe_surf/langflow/components/logic/__init__.py +52 -0
  2196. vibe_surf/langflow/components/logic/conditional_router.py +208 -0
  2197. vibe_surf/langflow/components/logic/data_conditional_router.py +126 -0
  2198. vibe_surf/langflow/components/logic/flow_tool.py +111 -0
  2199. vibe_surf/langflow/components/logic/listen.py +29 -0
  2200. vibe_surf/langflow/components/logic/loop.py +125 -0
  2201. vibe_surf/langflow/components/logic/notify.py +88 -0
  2202. vibe_surf/langflow/components/logic/pass_message.py +36 -0
  2203. vibe_surf/langflow/components/logic/run_flow.py +71 -0
  2204. vibe_surf/langflow/components/logic/sub_flow.py +115 -0
  2205. vibe_surf/langflow/components/maritalk/__init__.py +32 -0
  2206. vibe_surf/langflow/components/maritalk/maritalk.py +52 -0
  2207. vibe_surf/langflow/components/mem0/__init__.py +3 -0
  2208. vibe_surf/langflow/components/mem0/mem0_chat_memory.py +136 -0
  2209. vibe_surf/langflow/components/milvus/__init__.py +34 -0
  2210. vibe_surf/langflow/components/milvus/milvus.py +115 -0
  2211. vibe_surf/langflow/components/mistral/__init__.py +37 -0
  2212. vibe_surf/langflow/components/mistral/mistral.py +114 -0
  2213. vibe_surf/langflow/components/mistral/mistral_embeddings.py +58 -0
  2214. vibe_surf/langflow/components/models/__init__.py +34 -0
  2215. vibe_surf/langflow/components/models/embedding_model.py +114 -0
  2216. vibe_surf/langflow/components/models/language_model.py +144 -0
  2217. vibe_surf/langflow/components/mongodb/__init__.py +34 -0
  2218. vibe_surf/langflow/components/mongodb/mongodb_atlas.py +213 -0
  2219. vibe_surf/langflow/components/needle/__init__.py +3 -0
  2220. vibe_surf/langflow/components/needle/needle.py +104 -0
  2221. vibe_surf/langflow/components/notdiamond/__init__.py +36 -0
  2222. vibe_surf/langflow/components/notdiamond/notdiamond.py +228 -0
  2223. vibe_surf/langflow/components/novita/__init__.py +32 -0
  2224. vibe_surf/langflow/components/novita/novita.py +130 -0
  2225. vibe_surf/langflow/components/nvidia/__init__.py +57 -0
  2226. vibe_surf/langflow/components/nvidia/nvidia.py +151 -0
  2227. vibe_surf/langflow/components/nvidia/nvidia_embedding.py +77 -0
  2228. vibe_surf/langflow/components/nvidia/nvidia_ingest.py +317 -0
  2229. vibe_surf/langflow/components/nvidia/nvidia_rerank.py +63 -0
  2230. vibe_surf/langflow/components/nvidia/system_assist.py +65 -0
  2231. vibe_surf/langflow/components/olivya/__init__.py +3 -0
  2232. vibe_surf/langflow/components/olivya/olivya.py +116 -0
  2233. vibe_surf/langflow/components/ollama/__init__.py +37 -0
  2234. vibe_surf/langflow/components/ollama/ollama.py +330 -0
  2235. vibe_surf/langflow/components/ollama/ollama_embeddings.py +106 -0
  2236. vibe_surf/langflow/components/openai/__init__.py +37 -0
  2237. vibe_surf/langflow/components/openai/openai.py +100 -0
  2238. vibe_surf/langflow/components/openai/openai_chat_model.py +158 -0
  2239. vibe_surf/langflow/components/openrouter/__init__.py +32 -0
  2240. vibe_surf/langflow/components/openrouter/openrouter.py +202 -0
  2241. vibe_surf/langflow/components/output_parsers/__init__.py +0 -0
  2242. vibe_surf/langflow/components/perplexity/__init__.py +34 -0
  2243. vibe_surf/langflow/components/perplexity/perplexity.py +75 -0
  2244. vibe_surf/langflow/components/pgvector/__init__.py +34 -0
  2245. vibe_surf/langflow/components/pgvector/pgvector.py +72 -0
  2246. vibe_surf/langflow/components/pinecone/__init__.py +34 -0
  2247. vibe_surf/langflow/components/pinecone/pinecone.py +134 -0
  2248. vibe_surf/langflow/components/processing/__init__.py +117 -0
  2249. vibe_surf/langflow/components/processing/alter_metadata.py +109 -0
  2250. vibe_surf/langflow/components/processing/batch_run.py +205 -0
  2251. vibe_surf/langflow/components/processing/combine_text.py +40 -0
  2252. vibe_surf/langflow/components/processing/converter.py +150 -0
  2253. vibe_surf/langflow/components/processing/create_data.py +111 -0
  2254. vibe_surf/langflow/components/processing/data_operations.py +438 -0
  2255. vibe_surf/langflow/components/processing/data_to_dataframe.py +71 -0
  2256. vibe_surf/langflow/components/processing/dataframe_operations.py +310 -0
  2257. vibe_surf/langflow/components/processing/extract_key.py +54 -0
  2258. vibe_surf/langflow/components/processing/filter_data.py +43 -0
  2259. vibe_surf/langflow/components/processing/filter_data_values.py +89 -0
  2260. vibe_surf/langflow/components/processing/json_cleaner.py +104 -0
  2261. vibe_surf/langflow/components/processing/lambda_filter.py +154 -0
  2262. vibe_surf/langflow/components/processing/llm_router.py +499 -0
  2263. vibe_surf/langflow/components/processing/merge_data.py +91 -0
  2264. vibe_surf/langflow/components/processing/message_to_data.py +37 -0
  2265. vibe_surf/langflow/components/processing/parse_data.py +71 -0
  2266. vibe_surf/langflow/components/processing/parse_dataframe.py +69 -0
  2267. vibe_surf/langflow/components/processing/parse_json_data.py +91 -0
  2268. vibe_surf/langflow/components/processing/parser.py +143 -0
  2269. vibe_surf/langflow/components/processing/prompt.py +67 -0
  2270. vibe_surf/langflow/components/processing/python_repl_core.py +98 -0
  2271. vibe_surf/langflow/components/processing/regex.py +83 -0
  2272. vibe_surf/langflow/components/processing/save_file.py +208 -0
  2273. vibe_surf/langflow/components/processing/select_data.py +49 -0
  2274. vibe_surf/langflow/components/processing/split_text.py +141 -0
  2275. vibe_surf/langflow/components/processing/structured_output.py +206 -0
  2276. vibe_surf/langflow/components/processing/update_data.py +161 -0
  2277. vibe_surf/langflow/components/qdrant/__init__.py +34 -0
  2278. vibe_surf/langflow/components/qdrant/qdrant.py +109 -0
  2279. vibe_surf/langflow/components/redis/__init__.py +37 -0
  2280. vibe_surf/langflow/components/redis/redis.py +89 -0
  2281. vibe_surf/langflow/components/redis/redis_chat.py +43 -0
  2282. vibe_surf/langflow/components/sambanova/__init__.py +32 -0
  2283. vibe_surf/langflow/components/sambanova/sambanova.py +84 -0
  2284. vibe_surf/langflow/components/scrapegraph/__init__.py +40 -0
  2285. vibe_surf/langflow/components/scrapegraph/scrapegraph_markdownify_api.py +64 -0
  2286. vibe_surf/langflow/components/scrapegraph/scrapegraph_search_api.py +64 -0
  2287. vibe_surf/langflow/components/scrapegraph/scrapegraph_smart_scraper_api.py +71 -0
  2288. vibe_surf/langflow/components/searchapi/__init__.py +36 -0
  2289. vibe_surf/langflow/components/searchapi/search.py +79 -0
  2290. vibe_surf/langflow/components/serpapi/__init__.py +3 -0
  2291. vibe_surf/langflow/components/serpapi/serp.py +115 -0
  2292. vibe_surf/langflow/components/serper/__init__.py +3 -0
  2293. vibe_surf/langflow/components/serper/google_serper_api_core.py +74 -0
  2294. vibe_surf/langflow/components/supabase/__init__.py +37 -0
  2295. vibe_surf/langflow/components/supabase/supabase.py +76 -0
  2296. vibe_surf/langflow/components/tavily/__init__.py +4 -0
  2297. vibe_surf/langflow/components/tavily/tavily_extract.py +117 -0
  2298. vibe_surf/langflow/components/tavily/tavily_search.py +212 -0
  2299. vibe_surf/langflow/components/textsplitters/__init__.py +0 -0
  2300. vibe_surf/langflow/components/toolkits/__init__.py +0 -0
  2301. vibe_surf/langflow/components/tools/__init__.py +66 -0
  2302. vibe_surf/langflow/components/tools/calculator.py +104 -0
  2303. vibe_surf/langflow/components/tools/python_code_structured_tool.py +328 -0
  2304. vibe_surf/langflow/components/tools/python_repl.py +98 -0
  2305. vibe_surf/langflow/components/tools/search_api.py +88 -0
  2306. vibe_surf/langflow/components/tools/searxng.py +145 -0
  2307. vibe_surf/langflow/components/tools/serp_api.py +120 -0
  2308. vibe_surf/langflow/components/tools/tavily_search_tool.py +345 -0
  2309. vibe_surf/langflow/components/tools/wikidata_api.py +103 -0
  2310. vibe_surf/langflow/components/tools/wikipedia_api.py +50 -0
  2311. vibe_surf/langflow/components/tools/yahoo_finance.py +125 -0
  2312. vibe_surf/langflow/components/twelvelabs/__init__.py +52 -0
  2313. vibe_surf/langflow/components/twelvelabs/convert_astra_results.py +84 -0
  2314. vibe_surf/langflow/components/twelvelabs/pegasus_index.py +311 -0
  2315. vibe_surf/langflow/components/twelvelabs/split_video.py +291 -0
  2316. vibe_surf/langflow/components/twelvelabs/text_embeddings.py +57 -0
  2317. vibe_surf/langflow/components/twelvelabs/twelvelabs_pegasus.py +408 -0
  2318. vibe_surf/langflow/components/twelvelabs/video_embeddings.py +100 -0
  2319. vibe_surf/langflow/components/twelvelabs/video_file.py +179 -0
  2320. vibe_surf/langflow/components/unstructured/__init__.py +3 -0
  2321. vibe_surf/langflow/components/unstructured/unstructured.py +121 -0
  2322. vibe_surf/langflow/components/upstash/__init__.py +34 -0
  2323. vibe_surf/langflow/components/upstash/upstash.py +124 -0
  2324. vibe_surf/langflow/components/vectara/__init__.py +37 -0
  2325. vibe_surf/langflow/components/vectara/vectara.py +97 -0
  2326. vibe_surf/langflow/components/vectara/vectara_rag.py +164 -0
  2327. vibe_surf/langflow/components/vectorstores/__init__.py +34 -0
  2328. vibe_surf/langflow/components/vectorstores/local_db.py +262 -0
  2329. vibe_surf/langflow/components/vertexai/__init__.py +37 -0
  2330. vibe_surf/langflow/components/vertexai/vertexai.py +71 -0
  2331. vibe_surf/langflow/components/vertexai/vertexai_embeddings.py +67 -0
  2332. vibe_surf/langflow/components/weaviate/__init__.py +34 -0
  2333. vibe_surf/langflow/components/weaviate/weaviate.py +89 -0
  2334. vibe_surf/langflow/components/wikipedia/__init__.py +4 -0
  2335. vibe_surf/langflow/components/wikipedia/wikidata.py +86 -0
  2336. vibe_surf/langflow/components/wikipedia/wikipedia.py +53 -0
  2337. vibe_surf/langflow/components/wolframalpha/__init__.py +3 -0
  2338. vibe_surf/langflow/components/wolframalpha/wolfram_alpha_api.py +54 -0
  2339. vibe_surf/langflow/components/xai/__init__.py +32 -0
  2340. vibe_surf/langflow/components/xai/xai.py +167 -0
  2341. vibe_surf/langflow/components/youtube/__init__.py +52 -0
  2342. vibe_surf/langflow/components/youtube/channel.py +227 -0
  2343. vibe_surf/langflow/components/youtube/comments.py +231 -0
  2344. vibe_surf/langflow/components/youtube/playlist.py +33 -0
  2345. vibe_surf/langflow/components/youtube/search.py +120 -0
  2346. vibe_surf/langflow/components/youtube/trending.py +285 -0
  2347. vibe_surf/langflow/components/youtube/video_details.py +263 -0
  2348. vibe_surf/langflow/components/youtube/youtube_transcripts.py +118 -0
  2349. vibe_surf/langflow/components/zep/__init__.py +3 -0
  2350. vibe_surf/langflow/components/zep/zep.py +45 -0
  2351. vibe_surf/langflow/core/__init__.py +0 -0
  2352. vibe_surf/langflow/core/celery_app.py +11 -0
  2353. vibe_surf/langflow/core/celeryconfig.py +18 -0
  2354. vibe_surf/langflow/custom/__init__.py +4 -0
  2355. vibe_surf/langflow/custom/attributes.py +87 -0
  2356. vibe_surf/langflow/custom/code_parser/__init__.py +3 -0
  2357. vibe_surf/langflow/custom/code_parser/code_parser.py +361 -0
  2358. vibe_surf/langflow/custom/custom_component/__init__.py +0 -0
  2359. vibe_surf/langflow/custom/custom_component/base_component.py +118 -0
  2360. vibe_surf/langflow/custom/custom_component/component.py +1742 -0
  2361. vibe_surf/langflow/custom/custom_component/component_with_cache.py +8 -0
  2362. vibe_surf/langflow/custom/custom_component/custom_component.py +552 -0
  2363. vibe_surf/langflow/custom/dependency_analyzer.py +165 -0
  2364. vibe_surf/langflow/custom/directory_reader/__init__.py +3 -0
  2365. vibe_surf/langflow/custom/directory_reader/directory_reader.py +359 -0
  2366. vibe_surf/langflow/custom/directory_reader/utils.py +171 -0
  2367. vibe_surf/langflow/custom/eval.py +12 -0
  2368. vibe_surf/langflow/custom/schema.py +32 -0
  2369. vibe_surf/langflow/custom/tree_visitor.py +21 -0
  2370. vibe_surf/langflow/custom/utils.py +868 -0
  2371. vibe_surf/langflow/events/__init__.py +0 -0
  2372. vibe_surf/langflow/events/event_manager.py +108 -0
  2373. vibe_surf/langflow/exceptions/__init__.py +0 -0
  2374. vibe_surf/langflow/exceptions/api.py +34 -0
  2375. vibe_surf/langflow/exceptions/component.py +17 -0
  2376. vibe_surf/langflow/exceptions/serialization.py +56 -0
  2377. vibe_surf/langflow/field_typing/__init__.py +91 -0
  2378. vibe_surf/langflow/field_typing/constants.py +137 -0
  2379. vibe_surf/langflow/field_typing/range_spec.py +33 -0
  2380. vibe_surf/langflow/graph/__init__.py +6 -0
  2381. vibe_surf/langflow/graph/edge/__init__.py +0 -0
  2382. vibe_surf/langflow/graph/edge/base.py +277 -0
  2383. vibe_surf/langflow/graph/edge/schema.py +119 -0
  2384. vibe_surf/langflow/graph/edge/utils.py +0 -0
  2385. vibe_surf/langflow/graph/graph/__init__.py +0 -0
  2386. vibe_surf/langflow/graph/graph/ascii.py +202 -0
  2387. vibe_surf/langflow/graph/graph/base.py +2242 -0
  2388. vibe_surf/langflow/graph/graph/constants.py +58 -0
  2389. vibe_surf/langflow/graph/graph/runnable_vertices_manager.py +133 -0
  2390. vibe_surf/langflow/graph/graph/schema.py +53 -0
  2391. vibe_surf/langflow/graph/graph/state_model.py +66 -0
  2392. vibe_surf/langflow/graph/graph/utils.py +1024 -0
  2393. vibe_surf/langflow/graph/schema.py +75 -0
  2394. vibe_surf/langflow/graph/state/__init__.py +0 -0
  2395. vibe_surf/langflow/graph/state/model.py +237 -0
  2396. vibe_surf/langflow/graph/utils.py +229 -0
  2397. vibe_surf/langflow/graph/vertex/__init__.py +0 -0
  2398. vibe_surf/langflow/graph/vertex/base.py +811 -0
  2399. vibe_surf/langflow/graph/vertex/constants.py +0 -0
  2400. vibe_surf/langflow/graph/vertex/exceptions.py +4 -0
  2401. vibe_surf/langflow/graph/vertex/param_handler.py +255 -0
  2402. vibe_surf/langflow/graph/vertex/schema.py +26 -0
  2403. vibe_surf/langflow/graph/vertex/utils.py +19 -0
  2404. vibe_surf/langflow/graph/vertex/vertex_types.py +489 -0
  2405. vibe_surf/langflow/helpers/__init__.py +3 -0
  2406. vibe_surf/langflow/helpers/base_model.py +71 -0
  2407. vibe_surf/langflow/helpers/custom.py +13 -0
  2408. vibe_surf/langflow/helpers/data.py +206 -0
  2409. vibe_surf/langflow/helpers/flow.py +359 -0
  2410. vibe_surf/langflow/helpers/folders.py +26 -0
  2411. vibe_surf/langflow/helpers/user.py +27 -0
  2412. vibe_surf/langflow/initial_setup/__init__.py +0 -0
  2413. vibe_surf/langflow/initial_setup/constants.py +2 -0
  2414. vibe_surf/langflow/initial_setup/load.py +21 -0
  2415. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-01.svg +102 -0
  2416. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-02.svg +135 -0
  2417. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-03.svg +126 -0
  2418. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-04.svg +132 -0
  2419. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-05.svg +151 -0
  2420. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-06.svg +132 -0
  2421. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-07.svg +138 -0
  2422. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-08.svg +125 -0
  2423. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-09.svg +137 -0
  2424. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-10.svg +109 -0
  2425. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-11.svg +140 -0
  2426. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-12.svg +99 -0
  2427. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-13.svg +118 -0
  2428. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-14.svg +99 -0
  2429. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-15.svg +90 -0
  2430. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-16.svg +106 -0
  2431. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-17.svg +97 -0
  2432. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-18.svg +128 -0
  2433. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-19.svg +100 -0
  2434. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-20.svg +101 -0
  2435. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-21.svg +134 -0
  2436. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-22.svg +127 -0
  2437. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-23.svg +120 -0
  2438. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-24.svg +110 -0
  2439. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-25.svg +79 -0
  2440. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-26.svg +98 -0
  2441. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-01-27.svg +113 -0
  2442. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-01.svg +113 -0
  2443. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-02.svg +167 -0
  2444. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-03.svg +91 -0
  2445. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-04.svg +114 -0
  2446. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-05.svg +71 -0
  2447. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-06.svg +105 -0
  2448. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-07.svg +101 -0
  2449. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-08.svg +92 -0
  2450. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-09.svg +91 -0
  2451. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-10.svg +110 -0
  2452. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-11.svg +102 -0
  2453. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-12.svg +92 -0
  2454. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-13.svg +77 -0
  2455. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-14.svg +99 -0
  2456. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-15.svg +81 -0
  2457. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-16.svg +91 -0
  2458. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-17.svg +100 -0
  2459. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-18.svg +99 -0
  2460. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-19.svg +155 -0
  2461. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-20.svg +110 -0
  2462. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-21.svg +128 -0
  2463. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-22.svg +90 -0
  2464. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-23.svg +117 -0
  2465. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-24.svg +100 -0
  2466. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-25.svg +97 -0
  2467. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-26.svg +105 -0
  2468. vibe_surf/langflow/initial_setup/profile_pictures/People/People Avatar-02-27.svg +82 -0
  2469. vibe_surf/langflow/initial_setup/profile_pictures/Space/026-alien.svg +1 -0
  2470. vibe_surf/langflow/initial_setup/profile_pictures/Space/027-satellite.svg +1 -0
  2471. vibe_surf/langflow/initial_setup/profile_pictures/Space/028-alien.svg +1 -0
  2472. vibe_surf/langflow/initial_setup/profile_pictures/Space/029-telescope.svg +1 -0
  2473. vibe_surf/langflow/initial_setup/profile_pictures/Space/030-books.svg +1 -0
  2474. vibe_surf/langflow/initial_setup/profile_pictures/Space/031-planet.svg +1 -0
  2475. vibe_surf/langflow/initial_setup/profile_pictures/Space/032-constellation.svg +1 -0
  2476. vibe_surf/langflow/initial_setup/profile_pictures/Space/033-planet.svg +1 -0
  2477. vibe_surf/langflow/initial_setup/profile_pictures/Space/034-alien.svg +1 -0
  2478. vibe_surf/langflow/initial_setup/profile_pictures/Space/035-globe.svg +1 -0
  2479. vibe_surf/langflow/initial_setup/profile_pictures/Space/036-eclipse.svg +1 -0
  2480. vibe_surf/langflow/initial_setup/profile_pictures/Space/037-meteor.svg +1 -0
  2481. vibe_surf/langflow/initial_setup/profile_pictures/Space/038-eclipse.svg +1 -0
  2482. vibe_surf/langflow/initial_setup/profile_pictures/Space/039-Asteroid.svg +1 -0
  2483. vibe_surf/langflow/initial_setup/profile_pictures/Space/040-mission.svg +1 -0
  2484. vibe_surf/langflow/initial_setup/profile_pictures/Space/041-spaceship.svg +1 -0
  2485. vibe_surf/langflow/initial_setup/profile_pictures/Space/042-space shuttle.svg +1 -0
  2486. vibe_surf/langflow/initial_setup/profile_pictures/Space/043-space shuttle.svg +1 -0
  2487. vibe_surf/langflow/initial_setup/profile_pictures/Space/044-rocket.svg +1 -0
  2488. vibe_surf/langflow/initial_setup/profile_pictures/Space/045-astronaut.svg +1 -0
  2489. vibe_surf/langflow/initial_setup/profile_pictures/Space/046-rocket.svg +1 -0
  2490. vibe_surf/langflow/initial_setup/profile_pictures/Space/047-computer.svg +1 -0
  2491. vibe_surf/langflow/initial_setup/profile_pictures/Space/048-satellite.svg +1 -0
  2492. vibe_surf/langflow/initial_setup/profile_pictures/Space/049-astronaut.svg +1 -0
  2493. vibe_surf/langflow/initial_setup/profile_pictures/Space/050-space robot.svg +1 -0
  2494. vibe_surf/langflow/initial_setup/setup.py +1108 -0
  2495. vibe_surf/langflow/initial_setup/starter_projects/Basic Prompt Chaining.json +1976 -0
  2496. vibe_surf/langflow/initial_setup/starter_projects/Basic Prompting.json +1051 -0
  2497. vibe_surf/langflow/initial_setup/starter_projects/Blog Writer.json +1529 -0
  2498. vibe_surf/langflow/initial_setup/starter_projects/Custom Component Generator.json +2671 -0
  2499. vibe_surf/langflow/initial_setup/starter_projects/Document Q&A.json +1522 -0
  2500. vibe_surf/langflow/initial_setup/starter_projects/Financial Report Parser.json +1418 -0
  2501. vibe_surf/langflow/initial_setup/starter_projects/Hybrid Search RAG.json +2718 -0
  2502. vibe_surf/langflow/initial_setup/starter_projects/Image Sentiment Analysis.json +1884 -0
  2503. vibe_surf/langflow/initial_setup/starter_projects/Instagram Copywriter.json +3069 -0
  2504. vibe_surf/langflow/initial_setup/starter_projects/Invoice Summarizer.json +1666 -0
  2505. vibe_surf/langflow/initial_setup/starter_projects/Knowledge Ingestion.json +1042 -0
  2506. vibe_surf/langflow/initial_setup/starter_projects/Knowledge Retrieval.json +630 -0
  2507. vibe_surf/langflow/initial_setup/starter_projects/Market Research.json +2532 -0
  2508. vibe_surf/langflow/initial_setup/starter_projects/Meeting Summary.json +3263 -0
  2509. vibe_surf/langflow/initial_setup/starter_projects/Memory Chatbot.json +1419 -0
  2510. vibe_surf/langflow/initial_setup/starter_projects/News Aggregator.json +1835 -0
  2511. vibe_surf/langflow/initial_setup/starter_projects/Nvidia Remix.json +4866 -0
  2512. vibe_surf/langflow/initial_setup/starter_projects/Pok/303/251dex Agent.json" +1739 -0
  2513. vibe_surf/langflow/initial_setup/starter_projects/Portfolio Website Code Generator.json +2243 -0
  2514. vibe_surf/langflow/initial_setup/starter_projects/Price Deal Finder.json +2099 -0
  2515. vibe_surf/langflow/initial_setup/starter_projects/Research Agent.json +3032 -0
  2516. vibe_surf/langflow/initial_setup/starter_projects/Research Translation Loop.json +1580 -0
  2517. vibe_surf/langflow/initial_setup/starter_projects/SEO Keyword Generator.json +1091 -0
  2518. vibe_surf/langflow/initial_setup/starter_projects/SaaS Pricing.json +1416 -0
  2519. vibe_surf/langflow/initial_setup/starter_projects/Search agent.json +1455 -0
  2520. vibe_surf/langflow/initial_setup/starter_projects/Sequential Tasks Agents.json +4101 -0
  2521. vibe_surf/langflow/initial_setup/starter_projects/Simple Agent.json +1841 -0
  2522. vibe_surf/langflow/initial_setup/starter_projects/Social Media Agent.json +1759 -0
  2523. vibe_surf/langflow/initial_setup/starter_projects/Text Sentiment Analysis.json +2557 -0
  2524. vibe_surf/langflow/initial_setup/starter_projects/Travel Planning Agents.json +3448 -0
  2525. vibe_surf/langflow/initial_setup/starter_projects/Twitter Thread Generator.json +1978 -0
  2526. vibe_surf/langflow/initial_setup/starter_projects/Vector Store RAG.json +4850 -0
  2527. vibe_surf/langflow/initial_setup/starter_projects/Youtube Analysis.json +2734 -0
  2528. vibe_surf/langflow/initial_setup/starter_projects/__init__.py +19 -0
  2529. vibe_surf/langflow/initial_setup/starter_projects/basic_prompting.py +28 -0
  2530. vibe_surf/langflow/initial_setup/starter_projects/blog_writer.py +46 -0
  2531. vibe_surf/langflow/initial_setup/starter_projects/complex_agent.py +96 -0
  2532. vibe_surf/langflow/initial_setup/starter_projects/document_qa.py +39 -0
  2533. vibe_surf/langflow/initial_setup/starter_projects/hierarchical_tasks_agent.py +69 -0
  2534. vibe_surf/langflow/initial_setup/starter_projects/memory_chatbot.py +31 -0
  2535. vibe_surf/langflow/initial_setup/starter_projects/sequential_tasks_agent.py +97 -0
  2536. vibe_surf/langflow/initial_setup/starter_projects/vector_store_rag.py +61 -0
  2537. vibe_surf/langflow/inputs/__init__.py +68 -0
  2538. vibe_surf/langflow/inputs/constants.py +2 -0
  2539. vibe_surf/langflow/inputs/input_mixin.py +312 -0
  2540. vibe_surf/langflow/inputs/inputs.py +706 -0
  2541. vibe_surf/langflow/inputs/utils.py +32 -0
  2542. vibe_surf/langflow/inputs/validators.py +19 -0
  2543. vibe_surf/langflow/interface/__init__.py +0 -0
  2544. vibe_surf/langflow/interface/components.py +496 -0
  2545. vibe_surf/langflow/interface/importing/__init__.py +5 -0
  2546. vibe_surf/langflow/interface/importing/utils.py +39 -0
  2547. vibe_surf/langflow/interface/initialize/__init__.py +3 -0
  2548. vibe_surf/langflow/interface/initialize/loading.py +200 -0
  2549. vibe_surf/langflow/interface/listing.py +26 -0
  2550. vibe_surf/langflow/interface/run.py +45 -0
  2551. vibe_surf/langflow/interface/utils.py +112 -0
  2552. vibe_surf/langflow/io/__init__.py +63 -0
  2553. vibe_surf/langflow/io/schema.py +304 -0
  2554. vibe_surf/langflow/langflow_launcher.py +51 -0
  2555. vibe_surf/langflow/legacy_custom/__init__.py +0 -0
  2556. vibe_surf/langflow/legacy_custom/customs.py +16 -0
  2557. vibe_surf/langflow/load/__init__.py +12 -0
  2558. vibe_surf/langflow/load/load.py +250 -0
  2559. vibe_surf/langflow/load/utils.py +126 -0
  2560. vibe_surf/langflow/logging/__init__.py +4 -0
  2561. vibe_surf/langflow/logging/logger.py +407 -0
  2562. vibe_surf/langflow/logging/setup.py +16 -0
  2563. vibe_surf/langflow/main.py +550 -0
  2564. vibe_surf/langflow/memory.py +326 -0
  2565. vibe_surf/langflow/middleware.py +59 -0
  2566. vibe_surf/langflow/processing/__init__.py +0 -0
  2567. vibe_surf/langflow/processing/process.py +216 -0
  2568. vibe_surf/langflow/processing/utils.py +25 -0
  2569. vibe_surf/langflow/py.typed +0 -0
  2570. vibe_surf/langflow/schema/__init__.py +6 -0
  2571. vibe_surf/langflow/schema/artifact.py +82 -0
  2572. vibe_surf/langflow/schema/content_block.py +62 -0
  2573. vibe_surf/langflow/schema/content_types.py +91 -0
  2574. vibe_surf/langflow/schema/data.py +306 -0
  2575. vibe_surf/langflow/schema/dataframe.py +206 -0
  2576. vibe_surf/langflow/schema/dotdict.py +71 -0
  2577. vibe_surf/langflow/schema/encoders.py +13 -0
  2578. vibe_surf/langflow/schema/graph.py +47 -0
  2579. vibe_surf/langflow/schema/image.py +128 -0
  2580. vibe_surf/langflow/schema/log.py +33 -0
  2581. vibe_surf/langflow/schema/message.py +483 -0
  2582. vibe_surf/langflow/schema/openai_responses_schemas.py +74 -0
  2583. vibe_surf/langflow/schema/playground_events.py +182 -0
  2584. vibe_surf/langflow/schema/properties.py +39 -0
  2585. vibe_surf/langflow/schema/schema.py +121 -0
  2586. vibe_surf/langflow/schema/serialize.py +14 -0
  2587. vibe_surf/langflow/schema/table.py +140 -0
  2588. vibe_surf/langflow/schema/validators.py +114 -0
  2589. vibe_surf/langflow/serialization/__init__.py +3 -0
  2590. vibe_surf/langflow/serialization/constants.py +2 -0
  2591. vibe_surf/langflow/serialization/serialization.py +320 -0
  2592. vibe_surf/langflow/server.py +70 -0
  2593. vibe_surf/langflow/services/__init__.py +4 -0
  2594. vibe_surf/langflow/services/auth/__init__.py +0 -0
  2595. vibe_surf/langflow/services/auth/factory.py +15 -0
  2596. vibe_surf/langflow/services/auth/mcp_encryption.py +120 -0
  2597. vibe_surf/langflow/services/auth/service.py +15 -0
  2598. vibe_surf/langflow/services/auth/utils.py +583 -0
  2599. vibe_surf/langflow/services/base.py +28 -0
  2600. vibe_surf/langflow/services/cache/__init__.py +12 -0
  2601. vibe_surf/langflow/services/cache/base.py +183 -0
  2602. vibe_surf/langflow/services/cache/disk.py +95 -0
  2603. vibe_surf/langflow/services/cache/factory.py +44 -0
  2604. vibe_surf/langflow/services/cache/service.py +355 -0
  2605. vibe_surf/langflow/services/cache/utils.py +169 -0
  2606. vibe_surf/langflow/services/chat/__init__.py +0 -0
  2607. vibe_surf/langflow/services/chat/cache.py +150 -0
  2608. vibe_surf/langflow/services/chat/config.py +2 -0
  2609. vibe_surf/langflow/services/chat/factory.py +11 -0
  2610. vibe_surf/langflow/services/chat/schema.py +10 -0
  2611. vibe_surf/langflow/services/chat/service.py +67 -0
  2612. vibe_surf/langflow/services/database/__init__.py +0 -0
  2613. vibe_surf/langflow/services/database/factory.py +21 -0
  2614. vibe_surf/langflow/services/database/models/__init__.py +19 -0
  2615. vibe_surf/langflow/services/database/models/api_key/__init__.py +3 -0
  2616. vibe_surf/langflow/services/database/models/api_key/crud.py +74 -0
  2617. vibe_surf/langflow/services/database/models/api_key/model.py +66 -0
  2618. vibe_surf/langflow/services/database/models/base.py +17 -0
  2619. vibe_surf/langflow/services/database/models/file/__init__.py +5 -0
  2620. vibe_surf/langflow/services/database/models/file/crud.py +14 -0
  2621. vibe_surf/langflow/services/database/models/file/model.py +19 -0
  2622. vibe_surf/langflow/services/database/models/flow/__init__.py +3 -0
  2623. vibe_surf/langflow/services/database/models/flow/model.py +283 -0
  2624. vibe_surf/langflow/services/database/models/flow/schema.py +6 -0
  2625. vibe_surf/langflow/services/database/models/flow/utils.py +42 -0
  2626. vibe_surf/langflow/services/database/models/folder/__init__.py +3 -0
  2627. vibe_surf/langflow/services/database/models/folder/constants.py +2 -0
  2628. vibe_surf/langflow/services/database/models/folder/model.py +61 -0
  2629. vibe_surf/langflow/services/database/models/folder/pagination_model.py +10 -0
  2630. vibe_surf/langflow/services/database/models/folder/utils.py +45 -0
  2631. vibe_surf/langflow/services/database/models/message/__init__.py +3 -0
  2632. vibe_surf/langflow/services/database/models/message/crud.py +26 -0
  2633. vibe_surf/langflow/services/database/models/message/model.py +182 -0
  2634. vibe_surf/langflow/services/database/models/transactions/__init__.py +3 -0
  2635. vibe_surf/langflow/services/database/models/transactions/crud.py +82 -0
  2636. vibe_surf/langflow/services/database/models/transactions/model.py +65 -0
  2637. vibe_surf/langflow/services/database/models/user/__init__.py +8 -0
  2638. vibe_surf/langflow/services/database/models/user/crud.py +69 -0
  2639. vibe_surf/langflow/services/database/models/user/model.py +82 -0
  2640. vibe_surf/langflow/services/database/models/variable/__init__.py +3 -0
  2641. vibe_surf/langflow/services/database/models/variable/model.py +73 -0
  2642. vibe_surf/langflow/services/database/models/vertex_builds/__init__.py +3 -0
  2643. vibe_surf/langflow/services/database/models/vertex_builds/crud.py +145 -0
  2644. vibe_surf/langflow/services/database/models/vertex_builds/model.py +83 -0
  2645. vibe_surf/langflow/services/database/service.py +485 -0
  2646. vibe_surf/langflow/services/database/session.py +62 -0
  2647. vibe_surf/langflow/services/database/utils.py +88 -0
  2648. vibe_surf/langflow/services/deps.py +259 -0
  2649. vibe_surf/langflow/services/factory.py +88 -0
  2650. vibe_surf/langflow/services/flow/__init__.py +0 -0
  2651. vibe_surf/langflow/services/flow/flow_runner.py +265 -0
  2652. vibe_surf/langflow/services/job_queue/__init__.py +0 -0
  2653. vibe_surf/langflow/services/job_queue/factory.py +11 -0
  2654. vibe_surf/langflow/services/job_queue/service.py +328 -0
  2655. vibe_surf/langflow/services/manager.py +149 -0
  2656. vibe_surf/langflow/services/mcp_composer/__init__.py +6 -0
  2657. vibe_surf/langflow/services/mcp_composer/factory.py +15 -0
  2658. vibe_surf/langflow/services/mcp_composer/service.py +591 -0
  2659. vibe_surf/langflow/services/schema.py +23 -0
  2660. vibe_surf/langflow/services/session/__init__.py +0 -0
  2661. vibe_surf/langflow/services/session/factory.py +18 -0
  2662. vibe_surf/langflow/services/session/service.py +63 -0
  2663. vibe_surf/langflow/services/session/utils.py +18 -0
  2664. vibe_surf/langflow/services/settings/__init__.py +3 -0
  2665. vibe_surf/langflow/services/settings/auth.py +147 -0
  2666. vibe_surf/langflow/services/settings/base.py +587 -0
  2667. vibe_surf/langflow/services/settings/constants.py +34 -0
  2668. vibe_surf/langflow/services/settings/factory.py +22 -0
  2669. vibe_surf/langflow/services/settings/feature_flags.py +11 -0
  2670. vibe_surf/langflow/services/settings/manager.py +49 -0
  2671. vibe_surf/langflow/services/settings/service.py +32 -0
  2672. vibe_surf/langflow/services/settings/utils.py +40 -0
  2673. vibe_surf/langflow/services/shared_component_cache/__init__.py +0 -0
  2674. vibe_surf/langflow/services/shared_component_cache/factory.py +18 -0
  2675. vibe_surf/langflow/services/shared_component_cache/service.py +7 -0
  2676. vibe_surf/langflow/services/socket/__init__.py +0 -0
  2677. vibe_surf/langflow/services/socket/factory.py +20 -0
  2678. vibe_surf/langflow/services/socket/service.py +84 -0
  2679. vibe_surf/langflow/services/socket/utils.py +112 -0
  2680. vibe_surf/langflow/services/state/__init__.py +0 -0
  2681. vibe_surf/langflow/services/state/factory.py +16 -0
  2682. vibe_surf/langflow/services/state/service.py +82 -0
  2683. vibe_surf/langflow/services/storage/__init__.py +0 -0
  2684. vibe_surf/langflow/services/storage/constants.py +28 -0
  2685. vibe_surf/langflow/services/storage/factory.py +30 -0
  2686. vibe_surf/langflow/services/storage/local.py +127 -0
  2687. vibe_surf/langflow/services/storage/s3.py +105 -0
  2688. vibe_surf/langflow/services/storage/service.py +51 -0
  2689. vibe_surf/langflow/services/storage/utils.py +5 -0
  2690. vibe_surf/langflow/services/store/__init__.py +0 -0
  2691. vibe_surf/langflow/services/store/exceptions.py +25 -0
  2692. vibe_surf/langflow/services/store/factory.py +20 -0
  2693. vibe_surf/langflow/services/store/schema.py +74 -0
  2694. vibe_surf/langflow/services/store/service.py +600 -0
  2695. vibe_surf/langflow/services/store/utils.py +67 -0
  2696. vibe_surf/langflow/services/task/__init__.py +0 -0
  2697. vibe_surf/langflow/services/task/backends/__init__.py +0 -0
  2698. vibe_surf/langflow/services/task/backends/anyio.py +117 -0
  2699. vibe_surf/langflow/services/task/backends/base.py +15 -0
  2700. vibe_surf/langflow/services/task/backends/celery.py +29 -0
  2701. vibe_surf/langflow/services/task/factory.py +14 -0
  2702. vibe_surf/langflow/services/task/service.py +40 -0
  2703. vibe_surf/langflow/services/task/temp_flow_cleanup.py +136 -0
  2704. vibe_surf/langflow/services/task/utils.py +23 -0
  2705. vibe_surf/langflow/services/telemetry/__init__.py +0 -0
  2706. vibe_surf/langflow/services/telemetry/factory.py +20 -0
  2707. vibe_surf/langflow/services/telemetry/opentelemetry.py +253 -0
  2708. vibe_surf/langflow/services/telemetry/schema.py +45 -0
  2709. vibe_surf/langflow/services/telemetry/service.py +281 -0
  2710. vibe_surf/langflow/services/tracing/__init__.py +0 -0
  2711. vibe_surf/langflow/services/tracing/arize_phoenix.py +375 -0
  2712. vibe_surf/langflow/services/tracing/base.py +71 -0
  2713. vibe_surf/langflow/services/tracing/factory.py +20 -0
  2714. vibe_surf/langflow/services/tracing/langfuse.py +170 -0
  2715. vibe_surf/langflow/services/tracing/langsmith.py +208 -0
  2716. vibe_surf/langflow/services/tracing/langwatch.py +185 -0
  2717. vibe_surf/langflow/services/tracing/opik.py +235 -0
  2718. vibe_surf/langflow/services/tracing/schema.py +20 -0
  2719. vibe_surf/langflow/services/tracing/service.py +460 -0
  2720. vibe_surf/langflow/services/tracing/traceloop.py +244 -0
  2721. vibe_surf/langflow/services/tracing/utils.py +29 -0
  2722. vibe_surf/langflow/services/utils.py +246 -0
  2723. vibe_surf/langflow/services/variable/__init__.py +0 -0
  2724. vibe_surf/langflow/services/variable/base.py +119 -0
  2725. vibe_surf/langflow/services/variable/constants.py +2 -0
  2726. vibe_surf/langflow/services/variable/factory.py +28 -0
  2727. vibe_surf/langflow/services/variable/kubernetes.py +204 -0
  2728. vibe_surf/langflow/services/variable/kubernetes_secrets.py +193 -0
  2729. vibe_surf/langflow/services/variable/service.py +195 -0
  2730. vibe_surf/langflow/settings.py +12 -0
  2731. vibe_surf/langflow/template/__init__.py +10 -0
  2732. vibe_surf/langflow/template/field/__init__.py +0 -0
  2733. vibe_surf/langflow/template/field/base.py +257 -0
  2734. vibe_surf/langflow/template/field/prompt.py +2 -0
  2735. vibe_surf/langflow/template/frontend_node/__init__.py +6 -0
  2736. vibe_surf/langflow/template/frontend_node/base.py +214 -0
  2737. vibe_surf/langflow/template/frontend_node/constants.py +65 -0
  2738. vibe_surf/langflow/template/frontend_node/custom_components.py +97 -0
  2739. vibe_surf/langflow/template/template/__init__.py +0 -0
  2740. vibe_surf/langflow/template/template/base.py +99 -0
  2741. vibe_surf/langflow/template/utils.py +217 -0
  2742. vibe_surf/langflow/type_extraction/__init__.py +0 -0
  2743. vibe_surf/langflow/type_extraction/type_extraction.py +78 -0
  2744. vibe_surf/langflow/utils/__init__.py +0 -0
  2745. vibe_surf/langflow/utils/async_helpers.py +42 -0
  2746. vibe_surf/langflow/utils/component_utils.py +147 -0
  2747. vibe_surf/langflow/utils/compression.py +19 -0
  2748. vibe_surf/langflow/utils/concurrency.py +60 -0
  2749. vibe_surf/langflow/utils/connection_string_parser.py +8 -0
  2750. vibe_surf/langflow/utils/constants.py +205 -0
  2751. vibe_surf/langflow/utils/data_structure.py +212 -0
  2752. vibe_surf/langflow/utils/image.py +102 -0
  2753. vibe_surf/langflow/utils/lazy_load.py +15 -0
  2754. vibe_surf/langflow/utils/migration.py +61 -0
  2755. vibe_surf/langflow/utils/payload.py +84 -0
  2756. vibe_surf/langflow/utils/schemas.py +117 -0
  2757. vibe_surf/langflow/utils/template_validation.py +284 -0
  2758. vibe_surf/langflow/utils/util.py +479 -0
  2759. vibe_surf/langflow/utils/util_strings.py +56 -0
  2760. vibe_surf/langflow/utils/validate.py +489 -0
  2761. vibe_surf/langflow/utils/version.py +72 -0
  2762. vibe_surf/langflow/utils/voice_utils.py +92 -0
  2763. vibe_surf/langflow/worker.py +37 -0
  2764. vibe_surf/logger.py +3 -3
  2765. vibe_surf/telemetry/service.py +2 -1
  2766. vibe_surf/tools/browser_use_tools.py +0 -18
  2767. vibe_surf/tools/composio_client.py +4 -2
  2768. vibe_surf/tools/utils.py +1423 -1
  2769. vibe_surf/tools/vibesurf_tools.py +352 -846
  2770. vibe_surf/tools/views.py +33 -7
  2771. vibe_surf/tools/website_api/douyin/client.py +20 -4
  2772. vibe_surf/tools/website_api/weibo/client.py +13 -82
  2773. vibe_surf/tools/website_api/xhs/client.py +49 -42
  2774. vibe_surf/tools/website_api/xhs/helpers.py +3 -2
  2775. vibe_surf/tools/website_api/youtube/client.py +13 -4
  2776. vibe_surf/workflows/Browser/browser_click_element.py +189 -0
  2777. vibe_surf/workflows/Browser/browser_drag_drop.py +81 -0
  2778. vibe_surf/workflows/Browser/browser_evaluate_js.py +178 -0
  2779. vibe_surf/workflows/Browser/browser_extract_content.py +197 -0
  2780. vibe_surf/workflows/Browser/browser_focus_element.py +153 -0
  2781. vibe_surf/workflows/Browser/browser_generate_js.py +85 -0
  2782. vibe_surf/workflows/Browser/browser_go_back.py +45 -0
  2783. vibe_surf/workflows/Browser/browser_go_forward.py +44 -0
  2784. vibe_surf/workflows/Browser/browser_hover_element.py +154 -0
  2785. vibe_surf/workflows/Browser/browser_html_content.py +73 -0
  2786. vibe_surf/workflows/Browser/browser_input_text.py +169 -0
  2787. vibe_surf/workflows/Browser/browser_navigate.py +50 -0
  2788. vibe_surf/workflows/Browser/browser_new_tab.py +50 -0
  2789. vibe_surf/workflows/Browser/browser_page_info.py +67 -0
  2790. vibe_surf/workflows/Browser/browser_press_key.py +51 -0
  2791. vibe_surf/workflows/Browser/browser_reload.py +44 -0
  2792. vibe_surf/workflows/Browser/browser_scroll.py +99 -0
  2793. vibe_surf/workflows/Browser/browser_search.py +88 -0
  2794. vibe_surf/workflows/Browser/browser_select_options.py +94 -0
  2795. vibe_surf/workflows/Browser/browser_session.py +54 -0
  2796. vibe_surf/workflows/Browser/browser_take_screenshot.py +76 -0
  2797. vibe_surf/workflows/Browser/browser_upload_file.py +178 -0
  2798. vibe_surf/workflows/Browser/browser_wait.py +46 -0
  2799. vibe_surf/workflows/Browser/close_browser_session.py +51 -0
  2800. vibe_surf/workflows/FileSystem/extract_content_from_file.py +112 -0
  2801. vibe_surf/workflows/FileSystem/load_json.py +136 -0
  2802. vibe_surf/workflows/Integrations/composio_api.py +279 -0
  2803. vibe_surf/workflows/Integrations/douyin.py +232 -0
  2804. vibe_surf/workflows/Integrations/dropbox_compnent.py +11 -0
  2805. vibe_surf/workflows/Integrations/github_composio.py +11 -0
  2806. vibe_surf/workflows/Integrations/gmail_composio.py +38 -0
  2807. vibe_surf/workflows/Integrations/googlecalendar_composio.py +11 -0
  2808. vibe_surf/workflows/Integrations/googlemeet_composio.py +11 -0
  2809. vibe_surf/workflows/Integrations/googletasks_composio.py +8 -0
  2810. vibe_surf/workflows/Integrations/linear_composio.py +11 -0
  2811. vibe_surf/workflows/Integrations/outlook_composio.py +11 -0
  2812. vibe_surf/workflows/Integrations/reddit_composio.py +11 -0
  2813. vibe_surf/workflows/Integrations/slack_composio.py +11 -0
  2814. vibe_surf/workflows/Integrations/slackbot_composio.py +11 -0
  2815. vibe_surf/workflows/Integrations/supabase_composio.py +11 -0
  2816. vibe_surf/workflows/Integrations/todoist_composio.py +11 -0
  2817. vibe_surf/workflows/Integrations/weibo.py +244 -0
  2818. vibe_surf/workflows/Integrations/xiaohongshu.py +229 -0
  2819. vibe_surf/workflows/Integrations/yahoo.py +103 -0
  2820. vibe_surf/workflows/Integrations/youtube.py +251 -0
  2821. vibe_surf/workflows/Integrations/youtube_composio.py +11 -0
  2822. vibe_surf/workflows/VibeSurf/advanced_search.py +166 -0
  2823. vibe_surf/workflows/VibeSurf/browser_use_agent.py +150 -0
  2824. vibe_surf/workflows/VibeSurf/llm_profiles.py +103 -0
  2825. vibe_surf/workflows/VibeSurf/select_dataframe.py +44 -0
  2826. vibe_surf/workflows/VibeSurf/variable_manager.py +140 -0
  2827. vibe_surf/workflows/VibeSurf/vibesurf_agent.py +113 -0
  2828. vibesurf-0.2.9a2.dist-info/METADATA +406 -0
  2829. vibesurf-0.2.9a2.dist-info/RECORD +2916 -0
  2830. vibesurf-0.1.43.dist-info/METADATA +0 -192
  2831. vibesurf-0.1.43.dist-info/RECORD +0 -128
  2832. {vibesurf-0.1.43.dist-info → vibesurf-0.2.9a2.dist-info}/WHEEL +0 -0
  2833. {vibesurf-0.1.43.dist-info → vibesurf-0.2.9a2.dist-info}/entry_points.txt +0 -0
  2834. {vibesurf-0.1.43.dist-info → vibesurf-0.2.9a2.dist-info}/licenses/LICENSE +0 -0
  2835. {vibesurf-0.1.43.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
221
+ current_url = None
284
222
  if browser_session._dom_watchdog and browser_session._dom_watchdog.enhanced_dom_tree:
285
223
  current_target_id = browser_session._dom_watchdog.enhanced_dom_tree.target_id
286
- if current_target_id != 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:
287
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
285
+ current_url = None
343
286
  if browser_session._dom_watchdog and browser_session._dom_watchdog.enhanced_dom_tree:
344
287
  current_target_id = browser_session._dom_watchdog.enhanced_dom_tree.target_id
345
- if current_target_id != 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:
346
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,318 +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()
463
-
464
- page_html_content = await browser_session.get_html_content()
465
- web_page_html = clean_html_basic(page_html_content)
466
-
467
- max_html_len = 60000
468
- if len(web_page_html) > max_html_len:
469
- gap_len = (len(web_page_html) - max_html_len) // 2
470
- clip_len = max_html_len // 3
471
- web_page_html = (web_page_html[:clip_len] + "\n\n...\n\n" +
472
- web_page_html[
473
- clip_len + gap_len: clip_len + gap_len + clip_len + 10000] + "\n\n...\n\n" +
474
- web_page_html[
475
- clip_len + gap_len * 2 + clip_len: clip_len + gap_len * 2 + 2 * clip_len - 10000])
406
+ from vibe_surf.tools.utils import generate_java_script_code
476
407
 
477
- # Get current page URL for context
478
- current_url = await browser_session.get_current_page_url()
479
-
480
- # Create base system prompt for JavaScript code generation
481
- base_system_prompt = """You are an expert JavaScript developer specializing in browser automation and DOM manipulation.
482
-
483
- You will be given a functional requirement or code prompt, along with the current page's DOM structure information.
484
- Your task is to generate valid, executable JavaScript code that accomplishes the specified requirement.
485
-
486
- IMPORTANT GUIDELINES:
487
- This JavaScript code gets executed with Runtime.evaluate and 'returnByValue': True, 'awaitPromise': True
488
-
489
- SYNTAX RULES - FAILURE TO FOLLOW CAUSES "Uncaught at line 0" ERRORS:
490
- - ALWAYS wrap your code in IIFE: (function(){ ... })() or (async function(){ ... })() for async code
491
- - ALWAYS add try-catch blocks to prevent execution errors
492
- - ALWAYS use proper semicolons and valid JavaScript syntax
493
- - NEVER write multiline code without proper IIFE wrapping
494
- - ALWAYS validate elements exist before accessing them
495
-
496
- EXAMPLES:
497
- 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 ....
498
- You can also use it to explore the website.
499
- - Write code to solve problems you could not solve with other tools.
500
- - Don't write comments in here, no human reads that.
501
- - Write only valid js code.
502
- - use this to e.g. extract + filter links, convert the page to json into the format you need etc...
503
-
504
- - limit the output otherwise your context will explode
505
- - think if you deal with special elements like iframes / shadow roots etc
506
- - Adopt your strategy for React Native Web, React, Angular, Vue, MUI pages etc.
507
- - e.g. with synthetic events, keyboard simulation, shadow DOM, etc.
508
-
509
- PROPER SYNTAX EXAMPLES:
510
- CORRECT: (function(){ try { const el = document.querySelector('#id'); return el ? el.value : 'not found'; } catch(e) { return 'Error: ' + e.message; } })()
511
- CORRECT: (async function(){ try { await new Promise(r => setTimeout(r, 100)); return 'done'; } catch(e) { return 'Error: ' + e.message; } })()
512
-
513
- WRONG: const el = document.querySelector('#id'); el ? el.value : '';
514
- WRONG: document.querySelector('#id').value
515
- WRONG: Multiline code without IIFE wrapping
516
-
517
- SHADOW DOM ACCESS EXAMPLE:
518
- (function(){
519
- try {
520
- const hosts = document.querySelectorAll('*');
521
- for (let host of hosts) {
522
- if (host.shadowRoot) {
523
- const el = host.shadowRoot.querySelector('#target');
524
- if (el) return el.textContent;
525
- }
526
- }
527
- return 'Not found';
528
- } catch(e) {
529
- return 'Error: ' + e.message;
530
- }
531
- })()
532
-
533
- ## Return values:
534
- - Async functions (with await, promises, timeouts) are automatically handled
535
- - Returns strings, numbers, booleans, and serialized objects/arrays
536
- - Use JSON.stringify() for complex objects: JSON.stringify(Array.from(document.querySelectorAll('a')).map(el => el.textContent.trim()))
537
-
538
- OUTPUT FORMAT:
539
- Return ONLY the JavaScript code, no explanations or markdown formatting."""
540
-
541
- # Initialize message history for iterative prompting
542
- from browser_use.llm.messages import SystemMessage, UserMessage
543
- message_history = [SystemMessage(content=base_system_prompt)]
544
-
545
- # Initial user prompt
546
- initial_user_prompt = f"""Current Page URL: {current_url}
547
-
548
- USER REQUIREMENT: {params.code_requirement}
549
-
550
- Web Page Content:
551
- {web_page_html}
552
-
553
- Generate JavaScript code to fulfill the requirement:"""
554
-
555
- message_history.append(UserMessage(content=initial_user_prompt))
556
-
557
- # Get CDP session for JavaScript execution
558
- cdp_session = await browser_session.get_or_create_cdp_session()
559
-
560
- # Iterative code generation and execution
561
- for iteration in range(1, MAX_ITERATIONS + 1):
562
- try:
563
- logger.info(f'🔄 Skill Code iteration {iteration}/{MAX_ITERATIONS}')
564
-
565
- # Generate JavaScript code using LLM with message history
566
- response = await asyncio.wait_for(
567
- page_extraction_llm.ainvoke(message_history),
568
- timeout=60.0,
569
- )
570
-
571
- generated_js_code = response.completion.strip()
572
- message_history.append(AssistantMessage(content=generated_js_code))
573
-
574
- # Clean up the generated code (remove markdown if present)
575
- if generated_js_code.startswith('```javascript'):
576
- generated_js_code = generated_js_code.replace('```javascript', '').replace('```',
577
- '').strip()
578
- elif generated_js_code.startswith('```js'):
579
- generated_js_code = generated_js_code.replace('```js', '').replace('```', '').strip()
580
- elif generated_js_code.startswith('```'):
581
- generated_js_code = generated_js_code.replace('```', '').strip()
582
-
583
- # Execute the generated JavaScript code
584
- try:
585
- logger.info(generated_js_code)
586
- # Always use awaitPromise=True - it's ignored for non-promises
587
- result = await cdp_session.cdp_client.send.Runtime.evaluate(
588
- params={'expression': generated_js_code, 'returnByValue': True, 'awaitPromise': True},
589
- session_id=cdp_session.session_id,
590
- )
591
-
592
- logger.info(result)
593
- # Check for JavaScript execution errors
594
- if result.get('exceptionDetails'):
595
- exception = result['exceptionDetails']
596
- error_msg = f'JavaScript execution error: {exception.get("text", "Unknown error")}'
597
- if 'lineNumber' in exception:
598
- error_msg += f' at line {exception["lineNumber"]}'
599
-
600
- # Add error feedback to message history for next iteration
601
- if iteration < MAX_ITERATIONS:
602
- error_feedback = f"""The previous JavaScript code failed with error:
603
- {error_msg}
604
-
605
- Please fix the error and generate corrected JavaScript code:"""
606
- message_history.append(UserMessage(content=error_feedback))
607
- continue # Try next iteration
608
- else:
609
- # Final iteration, return error
610
- msg = f'Requirement: {params.code_requirement}\n\nFinal Generated Code (Iteration {iteration}): {generated_js_code}\n\nError: {error_msg}'
611
- logger.info(msg)
612
- return ActionResult(error=msg)
613
-
614
- # Get the result data
615
- result_data = result.get('result', {})
616
-
617
- # Check for wasThrown flag (backup error detection)
618
- if result_data.get('wasThrown'):
619
- error_msg = 'JavaScript execution failed (wasThrown=true)'
620
-
621
- # Add error feedback to message history for next iteration
622
- if iteration < MAX_ITERATIONS:
623
- error_feedback = f"""The previous JavaScript code failed with error:
624
- {error_msg}
625
-
626
- Please fix the error and generate corrected JavaScript code:"""
627
- message_history.append(UserMessage(content=error_feedback))
628
- continue # Try next iteration
629
- else:
630
- # Final iteration, return error
631
- msg = f'Requirement: {params.code_requirement}\n\nFinal Generated Code (Iteration {iteration}): {generated_js_code}\n\nError: {error_msg}'
632
- logger.info(msg)
633
- return ActionResult(error=msg)
634
-
635
- # Get the actual value
636
- value = result_data.get('value')
637
-
638
- # Handle different value types
639
- if value is None:
640
- # Could be legitimate null/undefined result
641
- result_text = str(value) if 'value' in result_data else 'undefined'
642
- elif isinstance(value, (dict, list)):
643
- # Complex objects - should be serialized by returnByValue
644
- try:
645
- result_text = json.dumps(value, ensure_ascii=False, indent=2)
646
- except (TypeError, ValueError):
647
- # Fallback for non-serializable objects
648
- result_text = str(value)
649
- else:
650
- # Primitive values (string, number, boolean)
651
- result_text = str(value)
652
-
653
- # Check if result is empty or meaningless
654
- if (not result_text or
655
- result_text.strip() in ['', 'null', 'undefined', '[]', '{}'] or
656
- len(result_text.strip()) == 0):
657
-
658
- # Add empty result feedback to message history for next iteration
659
- if iteration < MAX_ITERATIONS:
660
- empty_feedback = f"""The previous JavaScript code executed successfully but returned empty/meaningless result:
661
- Result: {result_text}
662
-
663
- The result is empty or not useful. Please generate improved JavaScript code that returns meaningful data:"""
664
- message_history.append(UserMessage(content=empty_feedback))
665
- continue # Try next iteration
666
- else:
667
- # Final iteration, return empty result with warning
668
- msg = f'Requirement: {params.code_requirement}\n\nFinal Generated Code (Iteration {iteration}): {generated_js_code}\n\nWarning: Empty or meaningless result: {result_text}'
669
- logger.info(msg)
670
- return ActionResult(
671
- extracted_content=msg,
672
- long_term_memory=f'Generated JavaScript code (iteration {iteration}) for requirement: {params.code_requirement} - Empty result warning',
673
- )
674
-
675
- # Apply length limit with better truncation
676
- if len(result_text) > 30000:
677
- result_text = result_text[:30000] + '\n... [Truncated after 30000 characters]'
678
-
679
- # Success! Return the result
680
- msg = f'Generated Code (Iteration {iteration}): \n```javascript\n{generated_js_code}\n```\nResult:\n```json\n {result_text}\n```\n'
681
- logger.info(f'✅ Skill Code succeeded on iteration {iteration}')
682
-
683
- return ActionResult(
684
- extracted_content=msg,
685
- long_term_memory=f'Generated and executed JavaScript code (iteration {iteration}) for requirement: {params.code_requirement}',
686
- )
687
-
688
- except Exception as e:
689
- # CDP communication or other system errors
690
- error_msg = f'Failed to execute JavaScript: {type(e).__name__}: {e}'
691
-
692
- # Add system error feedback to message history for next iteration
693
- if iteration < MAX_ITERATIONS:
694
- system_error_feedback = f"""The previous JavaScript code failed to execute due to system error:
695
- {error_msg}
696
-
697
- Please generate alternative JavaScript code that avoids this system error:"""
698
- message_history.append(UserMessage(content=system_error_feedback))
699
- continue # Try next iteration
700
- else:
701
- # Final iteration, return system error
702
- error_msg = f'Requirement: {params.code_requirement}\n\nFinal Generated Code (Iteration {iteration}): {generated_js_code}\n\nError: {error_msg}'
703
- logger.info(error_msg)
704
- return ActionResult(error=error_msg)
705
-
706
- except Exception as e:
707
- # LLM generation error
708
- logger.error(f'❌ LLM generation failed on iteration {iteration}: {e}')
709
- if iteration == MAX_ITERATIONS:
710
- return ActionResult(
711
- error=f'LLM generation failed after {MAX_ITERATIONS} iterations: {str(e)}')
712
- continue # Try next iteration with same message history
713
-
714
- # Should not reach here, but just in case
715
- 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)
716
416
 
717
417
  except Exception as e:
718
418
  logger.error(f'❌ Skill Code failed: {e}')
719
419
  return ActionResult(error=f'Skill code failed: {str(e)}')
720
420
 
721
- @self.registry.action(
722
- 'Return the guideline for deep research. Please follow the guideline to do real deep research actions.',
723
- param_model=NoParamsAction,
724
- )
725
- async def skill_deep_research(
726
- _: NoParamsAction,
727
- ):
728
- """
729
- Skill: Deep research mode activation
730
- """
731
- research_prompt = f"""
732
- 🔬 **DEEP RESEARCH GUIDELINE**
733
-
734
- To proceed with comprehensive research, please:
735
-
736
- 1. **Set up a detailed TODO list** for this research project that includes:
737
- - Background research and context gathering
738
- - Key questions to investigate
739
- - Multiple source verification
740
- - Data collection and analysis steps
741
- - Report generation with proper citations
742
-
743
- 2. **Conduct systematic research** following these principles:
744
- - Use multiple search strategies and sources
745
- - Verify information across different platforms
746
- - Document all sources with URLs for citation
747
- - Take notes and screenshots of key findings
748
- - Organize findings by themes or categories
749
-
750
- 3. **Generate a comprehensive report** that includes:
751
- - Executive summary
752
- - Detailed findings with analysis
753
- - Proper citations and source references
754
- - Supporting evidence (screenshots, quotes)
755
- - Conclusions and recommendations
756
- - Areas for further investigation
757
-
758
- 4. **Maintain research traceability** by:
759
- - Recording all search queries used
760
- - Saving important URLs and sources
761
- - Including direct quotes with attribution
762
- - Documenting methodology and approach
763
-
764
- This deep research mode ensures thorough, traceable, and well-documented investigation of your topic with proper academic rigor and source citation.
765
- """
766
-
767
- return ActionResult(
768
- extracted_content=research_prompt,
769
- include_extracted_content_only_once=True,
770
- )
771
-
772
421
  @self.registry.action(
773
422
  'Get comprehensive financial data for stocks - retrieve company information, historical prices, news, earnings, dividends, analyst recommendations and other financial data using Yahoo Finance.',
774
423
  param_model=SkillFinanceAction,
@@ -1274,326 +923,241 @@ Please generate alternative JavaScript code that avoids this system error:"""
1274
923
  logger.error(error_msg)
1275
924
  return ActionResult(error=error_msg, extracted_content=error_msg)
1276
925
 
1277
- async def _extract_google_results_rule_based(self, browser_session):
1278
- """Rule-based extraction of Google search results using JavaScript"""
1279
- try:
1280
- cdp_session = await browser_session.get_or_create_cdp_session()
1281
-
1282
- # JavaScript code to extract Google search results using DOM selectors
1283
- js_extraction_code = """
1284
- (function() {
1285
- try {
1286
- const results = [];
1287
-
1288
- // Multiple selector strategies for different Google layouts
1289
- const selectors = [
1290
- 'div[data-sokoban-container] div[data-sokoban-feature]', // Standard results
1291
- 'div.g:not(.g-blk)', // Classic results container
1292
- '.tF2Cxc', // Modern result container
1293
- 'div[data-ved] h3', // Result titles
1294
- ];
1295
-
1296
- let resultElements = [];
1297
-
1298
- // Try each selector until we find results
1299
- for (const selector of selectors) {
1300
- const elements = document.querySelectorAll(selector);
1301
- if (elements.length > 0) {
1302
- resultElements = Array.from(elements).slice(0, 10); // Get up to 10 results
1303
- break;
1304
- }
1305
- }
1306
-
1307
- // If no results found with specific selectors, try broader search
1308
- if (resultElements.length === 0) {
1309
- // Look for any divs containing h3 elements (likely search results)
1310
- const h3Elements = document.querySelectorAll('h3');
1311
- resultElements = Array.from(h3Elements)
1312
- .map(h3 => h3.closest('div'))
1313
- .filter(div => div && div.querySelector('a[href]'))
1314
- .slice(0, 10);
1315
- }
926
+ def _register_extra_tools(self):
927
+ """
928
+ Register extra tools for dynamic toolkit and MCP tool access
929
+ """
1316
930
 
1317
- for (let i = 0; i < Math.min(resultElements.length, 10); i++) {
1318
- const element = resultElements[i];
1319
-
1320
- // Extract title
1321
- let title = '';
1322
- const titleSelectors = ['h3', '[role="heading"]', 'a > span', '.LC20lb'];
1323
- for (const sel of titleSelectors) {
1324
- const titleEl = element.querySelector(sel);
1325
- if (titleEl && titleEl.textContent.trim()) {
1326
- title = titleEl.textContent.trim();
1327
- break;
1328
- }
1329
- }
1330
-
1331
- // Extract URL
1332
- let url = '';
1333
- const linkSelectors = ['a[href^="http"]', 'a[href^="/url?q="]', 'a[href]'];
1334
- for (const sel of linkSelectors) {
1335
- const linkEl = element.querySelector(sel);
1336
- if (linkEl && linkEl.href) {
1337
- url = linkEl.href;
1338
- // Clean Google redirect URLs
1339
- if (url.includes('/url?q=')) {
1340
- const urlMatch = url.match(/[?&]q=([^&]*)/);
1341
- if (urlMatch) {
1342
- url = decodeURIComponent(urlMatch[1]);
1343
- }
1344
- }
1345
- break;
1346
- }
1347
- }
1348
-
1349
- // Extract summary/description
1350
- let summary = '';
1351
- const summarySelectors = [
1352
- '.VwiC3b', // Description text
1353
- '.yXK7lf', // Snippet text
1354
- '[data-content-feature="1"] span',
1355
- '.s', // Classic description
1356
- 'span:not(:has(a))'
1357
- ];
1358
- for (const sel of summarySelectors) {
1359
- const summaryEl = element.querySelector(sel);
1360
- if (summaryEl && summaryEl.textContent.trim() && summaryEl.textContent.length > 10) {
1361
- summary = summaryEl.textContent.trim();
1362
- break;
1363
- }
1364
- }
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
1365
938
 
1366
- // Only add if we have at least title or URL
1367
- if (title || url) {
1368
- results.push({
1369
- title: title || 'No title',
1370
- url: url || 'No URL',
1371
- summary: summary || 'No description available'
1372
- });
1373
- }
1374
- }
1375
-
1376
- return JSON.stringify(results);
1377
-
1378
- } catch (e) {
1379
- return JSON.stringify([{
1380
- title: 'Error extracting results',
1381
- url: window.location.href,
1382
- summary: 'JavaScript extraction failed: ' + e.message
1383
- }]);
1384
- }
1385
- })()
1386
- """
1387
-
1388
- # Execute JavaScript to extract results
1389
- result = await cdp_session.cdp_client.send.Runtime.evaluate(
1390
- params={'expression': js_extraction_code, 'returnByValue': True, 'awaitPromise': True},
1391
- session_id=cdp_session.session_id,
1392
- )
1393
-
1394
- if result.get('exceptionDetails'):
1395
- logger.warning(f"JavaScript extraction failed: {result['exceptionDetails']}")
1396
- return []
1397
-
1398
- result_data = result.get('result', {})
1399
- value = result_data.get('value', '[]')
1400
-
939
+ Returns:
940
+ ActionResult with list of all toolkit type names
941
+ """
1401
942
  try:
1402
- extracted_results = json.loads(value)
1403
- return extracted_results if isinstance(extracted_results, list) else []
1404
- except (json.JSONDecodeError, ValueError):
1405
- logger.warning(f"Failed to parse extraction results: {value}")
1406
- return []
1407
-
1408
- except Exception as e:
1409
- logger.error(f"Rule-based extraction failed: {e}")
1410
- return []
1411
-
1412
- async def _perform_google_search(self, browser_session, query: str, llm: BaseChatModel):
1413
- """Helper method to perform Google search and extract top 5 results using rule-based extraction"""
1414
- try:
1415
- # Navigate to Google search
1416
- search_url = f'https://www.google.com/search?q={query}&udm=14'
1417
- await browser_session.navigate_to_url(search_url, new_tab=False)
1418
-
1419
- # Wait a moment for page to load
1420
- await asyncio.sleep(2)
1421
-
1422
- # Use rule-based extraction first (much faster than LLM)
1423
- search_ret_len = 10
1424
- results = await self._extract_google_results_rule_based(browser_session)
1425
- if results and len(results) > 0:
1426
- # Rule-based extraction succeeded
1427
- logger.debug(f"Rule-based extraction found {len(results)} results for query: {query}")
1428
- return results[:search_ret_len] # Return top 6 results
1429
-
1430
- # Fallback to LLM extraction if rule-based fails
1431
- logger.warning(f"Rule-based extraction failed for query '{query}', falling back to LLM")
1432
-
1433
- extraction_query = f"""
1434
- Extract the top {search_ret_len} search results from this Google search page. For each result, provide:
1435
- - title: The clickable title/headline
1436
- - url: The website URL
1437
- - summary: A brief description of what this result contains
1438
-
1439
- Return results as a JSON array: [{{"title": "...", "url": "...", "summary": "..."}}, ...]
1440
- """
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)}')
1441
982
 
1442
- 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)}')
1443
1060
 
1444
- # 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
+ """
1445
1075
  try:
1446
- results = json.loads(results_text.strip())
1447
- if isinstance(results, list):
1448
- return results[:search_ret_len] # Ensure max 5 results
1449
- 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
1450
1084
  try:
1451
- results = repair_json(results_text.strip())
1452
- if isinstance(results, list):
1453
- 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)
1454
1087
  except Exception as e:
1455
- logger.warning(f"Failed to parse JSON from LLM search results: {results_text}")
1456
-
1457
- # Fallback: return raw text as single result
1458
- current_url = await browser_session.get_current_page_url()
1459
- return [{
1460
- "title": f"Search results for: {query}",
1461
- "url": current_url,
1462
- "summary": results_text[:200] + "..." if len(results_text) > 200 else results_text
1463
- }]
1464
-
1465
- except Exception as e:
1466
- logger.error(f"Google search failed for query '{query}': {e}")
1467
- return []
1468
-
1469
- def _rule_based_deduplication(self, results):
1470
- """Rule-based deduplication to reduce dataset before LLM processing"""
1471
- if not results:
1472
- return []
1473
-
1474
- deduplicated = []
1475
- seen_urls = set()
1476
- seen_titles = set()
1477
-
1478
- for result in results:
1479
- url = result.get('url', '').strip()
1480
- title = result.get('title', '').strip().lower()
1481
-
1482
- # Skip results with missing essential data
1483
- if not url or not title or url == 'No URL' or title == 'no title':
1484
- continue
1485
-
1486
- # Normalize URL for comparison (remove fragments, query params for deduplication)
1487
- normalized_url = url.split('#')[0].split('?')[0].lower()
1488
-
1489
- # Check for duplicate URLs
1490
- if normalized_url in seen_urls:
1491
- continue
1492
-
1493
- # Check for very similar titles (basic similarity)
1494
- title_normalized = ''.join(c for c in title if c.isalnum()).lower()
1495
- if len(title_normalized) > 10: # Only check titles with substantial content
1496
- similar_found = False
1497
- for seen_title in seen_titles:
1498
- # Simple similarity check: if 80% of characters match
1499
- if len(title_normalized) > 0 and len(seen_title) > 0:
1500
- common_chars = sum(1 for c in title_normalized if c in seen_title)
1501
- similarity = common_chars / max(len(title_normalized), len(seen_title))
1502
- if similarity > 0.8:
1503
- similar_found = True
1504
- break
1505
-
1506
- if similar_found:
1507
- continue
1508
-
1509
- # Add to deduplicated results
1510
- seen_urls.add(normalized_url)
1511
- seen_titles.add(title_normalized)
1512
- deduplicated.append(result)
1513
-
1514
- # Sort by relevance indicators (prioritize results with longer summaries, non-generic titles)
1515
- def relevance_score(result):
1516
- score = 0
1517
- title = result.get('title', '')
1518
- summary = result.get('summary', '')
1519
-
1520
- # Longer summaries are typically more informative
1521
- score += min(len(summary), 200) / 10
1522
-
1523
- # Non-generic titles score higher
1524
- generic_terms = ['search results', 'no title', 'error', 'loading']
1525
- if not any(term in title.lower() for term in generic_terms):
1526
- score += 10
1527
-
1528
- # Prefer results with actual descriptions
1529
- if summary and summary != 'No description available' and len(summary) > 20:
1530
- score += 5
1531
-
1532
- return score
1533
-
1534
- deduplicated.sort(key=relevance_score, reverse=True)
1535
- return deduplicated
1536
-
1537
- async def _extract_structured_content(self, browser_session, query: str, llm: BaseChatModel,
1538
- target_id: str | None = None, extract_links: bool = False):
1539
- """Helper method to extract structured content from current page"""
1540
- MAX_CHAR_LIMIT = 30000
1541
-
1542
- # Extract clean markdown using the existing method
1543
- try:
1544
- from browser_use.dom.markdown_extractor import extract_clean_markdown
1545
-
1546
- content, content_stats = await extract_clean_markdown(
1547
- browser_session=browser_session, extract_links=extract_links
1548
- )
1549
- except Exception as e:
1550
- raise RuntimeError(f'Could not extract clean markdown: {e}')
1551
-
1552
- # Smart truncation with context preservation
1553
- if len(content) > MAX_CHAR_LIMIT:
1554
- # Try to truncate at a natural break point
1555
- truncate_at = MAX_CHAR_LIMIT
1556
- paragraph_break = content.rfind('\n\n', MAX_CHAR_LIMIT - 500, MAX_CHAR_LIMIT)
1557
- if paragraph_break > 0:
1558
- truncate_at = paragraph_break
1559
- else:
1560
- sentence_break = content.rfind('.', MAX_CHAR_LIMIT - 200, MAX_CHAR_LIMIT)
1561
- if sentence_break > 0:
1562
- truncate_at = sentence_break + 1
1563
- content = content[:truncate_at]
1564
-
1565
- system_prompt = """
1566
- You are an expert at extracting data from the markdown of a webpage.
1567
-
1568
- <input>
1569
- You will be given a query and the markdown of a webpage that has been filtered to remove noise and advertising content.
1570
- </input>
1571
-
1572
- <instructions>
1573
- - You are tasked to extract information from the webpage that is relevant to the query.
1574
- - 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.
1575
- - If the information relevant to the query is not available in the page, your response should mention that.
1576
- - If the query asks for all items, products, etc., make sure to directly list all of them.
1577
- </instructions>
1578
-
1579
- <output>
1580
- - Your output should present ALL the information relevant to the query in a concise way.
1581
- - Do not answer in conversational format - directly output the relevant information or that the information is unavailable.
1582
- </output>
1583
- """.strip()
1584
-
1585
- 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)}')
1586
1098
 
1587
- try:
1588
- from browser_use.llm.messages import SystemMessage, UserMessage
1589
- response = await asyncio.wait_for(
1590
- llm.ainvoke([SystemMessage(content=system_prompt), UserMessage(content=prompt)]),
1591
- timeout=120.0,
1592
- )
1593
- return response.completion
1594
- except Exception as e:
1595
- logger.debug(f'Error extracting content: {e}')
1596
- 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)}')
1597
1161
 
1598
1162
  def _register_browser_use_agent(self):
1599
1163
  @self.registry.action(
@@ -1876,71 +1440,13 @@ You will be given a query and the markdown of a webpage that has been filtered t
1876
1440
  if not os.path.exists(full_file_path):
1877
1441
  full_file_path = os.path.join(str(file_system.get_dir()), file_path)
1878
1442
 
1879
- # Determine if file is an image based on MIME type
1880
- mime_type, _ = mimetypes.guess_type(file_path)
1881
- is_image = mime_type and mime_type.startswith('image/')
1882
-
1883
- if is_image:
1884
- # Handle image files with LLM vision
1885
- try:
1886
- # Read image file and encode to base64
1887
- with open(full_file_path, 'rb') as image_file:
1888
- image_data = image_file.read()
1889
- image_base64 = base64.b64encode(image_data).decode('utf-8')
1890
-
1891
- # Create content parts similar to the user's example
1892
- content_parts: list[ContentPartTextParam | ContentPartImageParam] = [
1893
- ContentPartTextParam(text=f"Query: {params.query}")
1894
- ]
1895
-
1896
- # Add the image
1897
- content_parts.append(
1898
- ContentPartImageParam(
1899
- image_url=ImageURL(
1900
- url=f'data:{mime_type};base64,{image_base64}',
1901
- media_type=mime_type,
1902
- detail='high',
1903
- ),
1904
- )
1905
- )
1906
-
1907
- # Create user message and invoke LLM
1908
- user_message = UserMessage(content=content_parts, cache=True)
1909
- response = await asyncio.wait_for(
1910
- page_extraction_llm.ainvoke([user_message]),
1911
- timeout=120.0,
1912
- )
1913
-
1914
- extracted_content = f'File: {file_path}\nQuery: {params.query}\nExtracted Content:\n{response.completion}'
1915
-
1916
- except Exception as e:
1917
- raise Exception(f'Failed to process image file {file_path}: {str(e)}')
1918
-
1919
- else:
1920
- # Handle non-image files by reading content
1921
- try:
1922
- file_content = await file_system.read_file(full_file_path, external_file=True)
1923
-
1924
- # Create a simple prompt for text extraction
1925
- prompt = f"""Extract the requested information from this file content.
1926
-
1927
- Query: {params.query}
1928
-
1929
- File: {file_path}
1930
- File Content:
1931
- {file_content}
1932
-
1933
- Provide the extracted information in a clear, structured format."""
1934
-
1935
- response = await asyncio.wait_for(
1936
- page_extraction_llm.ainvoke([UserMessage(content=prompt)]),
1937
- timeout=120.0,
1938
- )
1939
-
1940
- extracted_content = f'File: {file_path}\nQuery: {params.query}\nExtracted Content:\n{response.completion}'
1941
-
1942
- except Exception as e:
1943
- 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
+ )
1944
1450
 
1945
1451
  # Handle memory storage
1946
1452
  if len(extracted_content) < 1000:
@@ -2303,7 +1809,7 @@ You will be given a query and the markdown of a webpage that has been filtered t
2303
1809
  else:
2304
1810
  # Update the composio instance
2305
1811
  self.composio_client.update_composio_instance(composio_instance)
2306
-
1812
+ self.composio_toolkits = toolkit_tools_dict
2307
1813
  # Register tools if we have both instance and toolkit tools
2308
1814
  if composio_instance and toolkit_tools_dict:
2309
1815
  await self.composio_client.register_to_tools(
@@ -2328,7 +1834,7 @@ You will be given a query and the markdown of a webpage that has been filtered t
2328
1834
  if self.composio_client:
2329
1835
  self.composio_client.unregister_all_tools(self)
2330
1836
  logger.info('All Composio tools unregistered')
2331
-
1837
+ self.composio_toolkits.clear()
2332
1838
  except Exception as e:
2333
1839
  logger.error(f'Failed to unregister Composio clients: {str(e)}')
2334
1840
 
@@ -2347,7 +1853,7 @@ You will be given a query and the markdown of a webpage that has been filtered t
2347
1853
 
2348
1854
  # Register new tools
2349
1855
  await self.register_composio_clients(composio_instance, toolkit_tools_dict)
2350
-
1856
+ self.composio_toolkits = toolkit_tools_dict
2351
1857
  logger.info('Composio tools updated successfully')
2352
1858
 
2353
1859
  except Exception as e: