vibesurf 0.1.41__tar.gz → 0.1.43__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (152) hide show
  1. {vibesurf-0.1.41 → vibesurf-0.1.43}/PKG-INFO +1 -1
  2. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/_version.py +3 -3
  3. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/agents/report_writer_agent.py +1 -1
  4. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/agents/vibe_surf_agent.py +17 -3
  5. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/browser/watchdogs/dom_watchdog.py +11 -2
  6. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/vibesurf_tools.py +11 -3
  7. vibesurf-0.1.43/vibe_surf/utils.py +34 -0
  8. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibesurf.egg-info/PKG-INFO +1 -1
  9. vibesurf-0.1.41/vibe_surf/utils.py +0 -13
  10. {vibesurf-0.1.41 → vibesurf-0.1.43}/.env.example +0 -0
  11. {vibesurf-0.1.41 → vibesurf-0.1.43}/.github/workflows/publish.yml +0 -0
  12. {vibesurf-0.1.41 → vibesurf-0.1.43}/.gitignore +0 -0
  13. {vibesurf-0.1.41 → vibesurf-0.1.43}/.python-version +0 -0
  14. {vibesurf-0.1.41 → vibesurf-0.1.43}/LICENSE +0 -0
  15. {vibesurf-0.1.41 → vibesurf-0.1.43}/MANIFEST.in +0 -0
  16. {vibesurf-0.1.41 → vibesurf-0.1.43}/README.md +0 -0
  17. {vibesurf-0.1.41 → vibesurf-0.1.43}/README_zh.md +0 -0
  18. {vibesurf-0.1.41 → vibesurf-0.1.43}/docs/EXECUTABLE_BUILD.md +0 -0
  19. {vibesurf-0.1.41 → vibesurf-0.1.43}/docs/PYPI_SETUP.md +0 -0
  20. {vibesurf-0.1.41 → vibesurf-0.1.43}/pyproject.toml +0 -0
  21. {vibesurf-0.1.41 → vibesurf-0.1.43}/scripts/build-local.bat +0 -0
  22. {vibesurf-0.1.41 → vibesurf-0.1.43}/scripts/build-local.sh +0 -0
  23. {vibesurf-0.1.41 → vibesurf-0.1.43}/setup.cfg +0 -0
  24. {vibesurf-0.1.41 → vibesurf-0.1.43}/tests/test_agents.py +0 -0
  25. {vibesurf-0.1.41 → vibesurf-0.1.43}/tests/test_backend_api.py +0 -0
  26. {vibesurf-0.1.41 → vibesurf-0.1.43}/tests/test_browser.py +0 -0
  27. {vibesurf-0.1.41 → vibesurf-0.1.43}/tests/test_telemetry.py +0 -0
  28. {vibesurf-0.1.41 → vibesurf-0.1.43}/tests/test_tools.py +0 -0
  29. {vibesurf-0.1.41 → vibesurf-0.1.43}/tests/test_voice_api.py +0 -0
  30. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/__init__.py +0 -0
  31. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/agents/__init__.py +0 -0
  32. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/agents/browser_use_agent.py +0 -0
  33. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/agents/prompts/__init__.py +0 -0
  34. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/agents/prompts/report_writer_prompt.py +0 -0
  35. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/agents/prompts/vibe_surf_prompt.py +0 -0
  36. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/agents/views.py +0 -0
  37. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/__init__.py +0 -0
  38. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/__init__.py +0 -0
  39. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/activity.py +0 -0
  40. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/agent.py +0 -0
  41. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/browser.py +0 -0
  42. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/composio.py +0 -0
  43. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/config.py +0 -0
  44. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/files.py +0 -0
  45. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/models.py +0 -0
  46. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/task.py +0 -0
  47. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/api/voices.py +0 -0
  48. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/__init__.py +0 -0
  49. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/manager.py +0 -0
  50. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/migrations/v001_initial_schema.sql +0 -0
  51. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/migrations/v002_add_agent_mode.sql +0 -0
  52. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql +0 -0
  53. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/migrations/v004_add_voice_profiles.sql +0 -0
  54. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/migrations/v005_add_composio_integration.sql +0 -0
  55. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/migrations/v006_add_credentials_table.sql +0 -0
  56. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/models.py +0 -0
  57. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/queries.py +0 -0
  58. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/database/schemas.py +0 -0
  59. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/llm_config.py +0 -0
  60. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/main.py +0 -0
  61. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/shared_state.py +0 -0
  62. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/utils/__init__.py +0 -0
  63. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/utils/encryption.py +0 -0
  64. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/utils/llm_factory.py +0 -0
  65. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/utils/utils.py +0 -0
  66. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/backend/voice_model_config.py +0 -0
  67. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/browser/__init__.py +0 -0
  68. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/browser/agen_browser_profile.py +0 -0
  69. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/browser/agent_browser_session.py +0 -0
  70. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/browser/browser_manager.py +0 -0
  71. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/browser/utils.py +0 -0
  72. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/browser/watchdogs/__init__.py +0 -0
  73. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/browser/watchdogs/action_watchdog.py +0 -0
  74. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/background.js +0 -0
  75. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/config.js +0 -0
  76. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/content.js +0 -0
  77. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/dev-reload.js +0 -0
  78. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/icons/logo.icns +0 -0
  79. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/icons/logo.png +0 -0
  80. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/manifest.json +0 -0
  81. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/permission-iframe.html +0 -0
  82. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/permission-request.html +0 -0
  83. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/popup.html +0 -0
  84. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/api-client.js +0 -0
  85. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/file-manager.js +0 -0
  86. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/history-manager.js +0 -0
  87. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/main.js +0 -0
  88. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/markdown-it.min.js +0 -0
  89. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/modal-manager.js +0 -0
  90. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/permission-iframe-request.js +0 -0
  91. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/permission-request.js +0 -0
  92. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/session-manager.js +0 -0
  93. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/settings-manager.js +0 -0
  94. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/ui-manager.js +0 -0
  95. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/user-settings-storage.js +0 -0
  96. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/scripts/voice-recorder.js +0 -0
  97. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/sidepanel.html +0 -0
  98. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/activity.css +0 -0
  99. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/animations.css +0 -0
  100. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/base.css +0 -0
  101. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/components.css +0 -0
  102. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/history-modal.css +0 -0
  103. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/input.css +0 -0
  104. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/layout.css +0 -0
  105. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/responsive.css +0 -0
  106. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/settings-environment.css +0 -0
  107. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/settings-forms.css +0 -0
  108. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/settings-integrations.css +0 -0
  109. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/settings-modal.css +0 -0
  110. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/settings-profiles.css +0 -0
  111. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/settings-responsive.css +0 -0
  112. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/settings-utilities.css +0 -0
  113. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/chrome_extension/styles/variables.css +0 -0
  114. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/cli.py +0 -0
  115. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/common.py +0 -0
  116. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/llm/__init__.py +0 -0
  117. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/llm/openai_compatible.py +0 -0
  118. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/logger.py +0 -0
  119. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/telemetry/__init__.py +0 -0
  120. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/telemetry/service.py +0 -0
  121. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/telemetry/views.py +0 -0
  122. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/__init__.py +0 -0
  123. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/browser_use_tools.py +0 -0
  124. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/composio_client.py +0 -0
  125. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/file_system.py +0 -0
  126. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/finance_tools.py +0 -0
  127. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/mcp_client.py +0 -0
  128. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/report_writer_tools.py +0 -0
  129. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/utils.py +0 -0
  130. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/vibesurf_registry.py +0 -0
  131. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/views.py +0 -0
  132. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/voice_asr.py +0 -0
  133. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/__init__.py +0 -0
  134. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/douyin/__init__.py +0 -0
  135. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/douyin/client.py +0 -0
  136. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/douyin/douyin.js +0 -0
  137. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/douyin/helpers.py +0 -0
  138. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/weibo/__init__.py +0 -0
  139. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/weibo/client.py +0 -0
  140. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/weibo/helpers.py +0 -0
  141. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/xhs/__init__.py +0 -0
  142. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/xhs/client.py +0 -0
  143. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/xhs/helpers.py +0 -0
  144. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/youtube/__init__.py +0 -0
  145. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/youtube/client.py +0 -0
  146. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibe_surf/tools/website_api/youtube/helpers.py +0 -0
  147. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibesurf.egg-info/SOURCES.txt +0 -0
  148. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibesurf.egg-info/dependency_links.txt +0 -0
  149. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibesurf.egg-info/entry_points.txt +0 -0
  150. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibesurf.egg-info/requires.txt +0 -0
  151. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibesurf.egg-info/top_level.txt +0 -0
  152. {vibesurf-0.1.41 → vibesurf-0.1.43}/vibesurf.spec +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.41
3
+ Version: 0.1.43
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: WarmShao
6
6
  License: Apache-2.0
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.1.41'
32
- __version_tuple__ = version_tuple = (0, 1, 41)
31
+ __version__ = version = '0.1.43'
32
+ __version_tuple__ = version_tuple = (0, 1, 43)
33
33
 
34
- __commit_id__ = commit_id = 'gcf9a2adad'
34
+ __commit_id__ = commit_id = 'g0bb1225f0'
@@ -153,7 +153,7 @@ class ReportWriterAgent:
153
153
  create_result = await self.file_system.create_file(report_filename)
154
154
  logger.info(f"Created report file: {create_result}")
155
155
 
156
- max_iterations = 10 # Prevent infinite loops
156
+ max_iterations = 20 # Prevent infinite loops
157
157
 
158
158
  # Add system message with unified prompt only if message history is empty
159
159
  if not self.message_history:
@@ -29,6 +29,7 @@ from browser_use.tokens.service import TokenCost
29
29
  from vibe_surf.agents.browser_use_agent import BrowserUseAgent
30
30
  from vibe_surf.agents.report_writer_agent import ReportWriterAgent, ReportTaskResult
31
31
  from vibe_surf.agents.views import CustomAgentOutput
32
+ from vibe_surf.utils import check_latest_vibesurf_version, get_vibesurf_version
32
33
 
33
34
  from vibe_surf.agents.prompts.vibe_surf_prompt import (
34
35
  VIBESURF_SYSTEM_PROMPT,
@@ -448,7 +449,8 @@ async def _vibesurf_agent_node_impl(state: VibeSurfState) -> VibeSurfState:
448
449
  for browser_task in state.browser_tasks:
449
450
  bu_task = browser_task.get('task', "")
450
451
  if bu_task:
451
- browser_tasks_md.append(f"- [ ] {bu_task}")
452
+ bu_task_tabid = browser_task.get('tab_id', "")
453
+ browser_tasks_md.append(f"- [ ] Tab id: {bu_task_tabid} working {bu_task}")
452
454
  browser_tasks_md = '\n'.join(browser_tasks_md)
453
455
  agent_msg = f"Routing to browser task execution with {len(state.browser_tasks)} browser tasks:\n\n{browser_tasks_md}"
454
456
  await log_agent_activity(state, agent_name, "working", agent_msg)
@@ -624,7 +626,7 @@ async def execute_parallel_browser_tasks(state: VibeSurfState) -> List[BrowserTa
624
626
  task_description = task_info.get('task', '')
625
627
  if not task_description:
626
628
  continue
627
- target_id = task_info.get('target_id', None)
629
+ target_id = task_info.get('tab_id', None)
628
630
  register_sessions.append(
629
631
  state.vibesurf_agent.browser_manager.register_agent(agent_id, target_id=target_id)
630
632
  )
@@ -756,7 +758,7 @@ async def execute_parallel_browser_tasks(state: VibeSurfState) -> List[BrowserTa
756
758
  finally:
757
759
  # Remove agents from control tracking and cleanup browser sessions
758
760
  for i, agent_id in enumerate(bu_agent_ids):
759
- if not isinstance(pending_tasks[i], list):
761
+ if pending_tasks[i].get('tab_id', None) is None:
760
762
  await state.vibesurf_agent.browser_manager.unregister_agent(agent_id, close_tabs=True)
761
763
  if state.vibesurf_agent and hasattr(state.vibesurf_agent, '_running_agents'):
762
764
  state.vibesurf_agent._running_agents.pop(agent_id, None)
@@ -1680,6 +1682,18 @@ Action list should NEVER be empty and Each step can only output one action. If m
1680
1682
  }
1681
1683
  self.activity_logs.append(activity_entry)
1682
1684
 
1685
+ latest_version = await check_latest_vibesurf_version()
1686
+ current_version = get_vibesurf_version()
1687
+ if latest_version and latest_version != current_version:
1688
+ update_msg = f'📦 Newer version of vibesurf available: {latest_version} (current: {current_version}). \nUpgrade with: \n`uv pip install vibesurf -U`\nor\nDownload [Windows Installer](https://github.com/vibesurf-ai/VibeSurf/releases/latest/download/vibesurf-windows-x64.exe).'
1689
+ logger.info(update_msg)
1690
+ activity_update_tip = {
1691
+ "agent_name": 'System',
1692
+ "agent_status": 'tip', # working, result, error
1693
+ "agent_msg": update_msg
1694
+ }
1695
+ self.activity_logs.append(activity_update_tip)
1696
+
1683
1697
  # Initialize state first (needed for file processing)
1684
1698
  initial_state = VibeSurfState(
1685
1699
  original_task=task,
@@ -120,7 +120,8 @@ class CustomDOMWatchdog(DOMWatchdog):
120
120
  try:
121
121
  self.logger.debug(
122
122
  '🔍 DOMWatchdog.on_BrowserStateRequestEvent: 🎨 Applying Python-based highlighting...')
123
- from browser_use.browser.python_highlights import create_highlighted_screenshot_async
123
+ # from browser_use.browser.python_highlights import create_highlighted_screenshot_async
124
+ from vibe_surf.browser.utils import create_highlighted_screenshot_async
124
125
 
125
126
  # Get CDP session for viewport info
126
127
  cdp_session = await self.browser_session.get_or_create_cdp_session()
@@ -129,8 +130,16 @@ class CustomDOMWatchdog(DOMWatchdog):
129
130
  screenshot_b64,
130
131
  content.selector_map,
131
132
  cdp_session,
132
- self.browser_session.browser_profile.filter_highlight_ids,
133
133
  )
134
+ #
135
+ # import base64
136
+ # import os
137
+ # image_data = base64.b64decode(screenshot_b64)
138
+ # output_path = os.path.join("/Users/warmshao/AIBrowsers/VibeSurf/vibe_surf/tmp/vibesurf_workspace/", "screenshots", f"{time.time()}.png")
139
+ # os.makedirs(os.path.dirname(output_path), exist_ok=True)
140
+ # with open(output_path, 'wb') as f:
141
+ # f.write(image_data)
142
+ # pdb.set_trace()
134
143
 
135
144
  self.logger.debug(
136
145
  f'🔍 DOMWatchdog.on_BrowserStateRequestEvent: ✅ Applied highlights to {len(content.selector_map)} elements'
@@ -463,8 +463,16 @@ Format: [index1, index2, index3, ...]
463
463
 
464
464
  page_html_content = await browser_session.get_html_content()
465
465
  web_page_html = clean_html_basic(page_html_content)
466
- if len(web_page_html) > 30000:
467
- web_page_html = web_page_html[:24000] + "..." + web_page_html[-6000:]
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])
468
476
 
469
477
  # Get current page URL for context
470
478
  current_url = await browser_session.get_current_page_url()
@@ -1589,7 +1597,7 @@ You will be given a query and the markdown of a webpage that has been filtered t
1589
1597
 
1590
1598
  def _register_browser_use_agent(self):
1591
1599
  @self.registry.action(
1592
- 'Execute browser_use agent tasks.',
1600
+ 'Execute browser_use agent tasks. Please specify a tab id to an agent, if you want to let agent work on this tab.',
1593
1601
  param_model=BrowserUseAgentExecution,
1594
1602
  )
1595
1603
  async def execute_browser_use_agent(
@@ -0,0 +1,34 @@
1
+ import pdb
2
+
3
+ import httpx
4
+
5
+ def singleton(cls):
6
+ instance = [None]
7
+
8
+ def wrapper(*args, **kwargs):
9
+ if instance[0] is None:
10
+ instance[0] = cls(*args, **kwargs)
11
+ return instance[0]
12
+
13
+ return wrapper
14
+
15
+ def get_vibesurf_version() -> str:
16
+ import vibe_surf
17
+ return str(vibe_surf.__version__)
18
+
19
+ async def check_latest_vibesurf_version() -> str | None:
20
+ """Check the latest version of browser-use from PyPI asynchronously.
21
+
22
+ Returns:
23
+ The latest version string if successful, None if failed
24
+ """
25
+ try:
26
+ async with httpx.AsyncClient(timeout=3.0) as client:
27
+ response = await client.get('https://pypi.org/pypi/vibesurf/json')
28
+ if response.status_code == 200:
29
+ data = response.json()
30
+ return data['info']['version']
31
+ except Exception:
32
+ # Silently fail - we don't want to break agent startup due to network issues
33
+ pass
34
+ return None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.41
3
+ Version: 0.1.43
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: WarmShao
6
6
  License: Apache-2.0
@@ -1,13 +0,0 @@
1
- def singleton(cls):
2
- instance = [None]
3
-
4
- def wrapper(*args, **kwargs):
5
- if instance[0] is None:
6
- instance[0] = cls(*args, **kwargs)
7
- return instance[0]
8
-
9
- return wrapper
10
-
11
- def get_vibesurf_version() -> str:
12
- import vibe_surf
13
- return str(vibe_surf.__version__)
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes