vibesurf 0.1.39__tar.gz → 0.1.41__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 (151) hide show
  1. {vibesurf-0.1.39 → vibesurf-0.1.41}/.gitignore +7 -1
  2. {vibesurf-0.1.39 → vibesurf-0.1.41}/PKG-INFO +1 -1
  3. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/_version.py +3 -3
  4. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/agents/vibe_surf_agent.py +2 -9
  5. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/browser/agen_browser_profile.py +5 -5
  6. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/browser/agent_browser_session.py +11 -48
  7. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/config.js +1 -0
  8. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/ui-manager.js +8 -1
  9. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/sidepanel.html +1 -1
  10. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/file_system.py +2 -1
  11. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/vibesurf_tools.py +6 -6
  12. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibesurf.egg-info/PKG-INFO +1 -1
  13. {vibesurf-0.1.39 → vibesurf-0.1.41}/.env.example +0 -0
  14. {vibesurf-0.1.39 → vibesurf-0.1.41}/.github/workflows/publish.yml +0 -0
  15. {vibesurf-0.1.39 → vibesurf-0.1.41}/.python-version +0 -0
  16. {vibesurf-0.1.39 → vibesurf-0.1.41}/LICENSE +0 -0
  17. {vibesurf-0.1.39 → vibesurf-0.1.41}/MANIFEST.in +0 -0
  18. {vibesurf-0.1.39 → vibesurf-0.1.41}/README.md +0 -0
  19. {vibesurf-0.1.39 → vibesurf-0.1.41}/README_zh.md +0 -0
  20. {vibesurf-0.1.39 → vibesurf-0.1.41}/docs/EXECUTABLE_BUILD.md +0 -0
  21. {vibesurf-0.1.39 → vibesurf-0.1.41}/docs/PYPI_SETUP.md +0 -0
  22. {vibesurf-0.1.39 → vibesurf-0.1.41}/pyproject.toml +0 -0
  23. {vibesurf-0.1.39 → vibesurf-0.1.41}/scripts/build-local.bat +0 -0
  24. {vibesurf-0.1.39 → vibesurf-0.1.41}/scripts/build-local.sh +0 -0
  25. {vibesurf-0.1.39 → vibesurf-0.1.41}/setup.cfg +0 -0
  26. {vibesurf-0.1.39 → vibesurf-0.1.41}/tests/test_agents.py +0 -0
  27. {vibesurf-0.1.39 → vibesurf-0.1.41}/tests/test_backend_api.py +0 -0
  28. {vibesurf-0.1.39 → vibesurf-0.1.41}/tests/test_browser.py +0 -0
  29. {vibesurf-0.1.39 → vibesurf-0.1.41}/tests/test_telemetry.py +0 -0
  30. {vibesurf-0.1.39 → vibesurf-0.1.41}/tests/test_tools.py +0 -0
  31. {vibesurf-0.1.39 → vibesurf-0.1.41}/tests/test_voice_api.py +0 -0
  32. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/__init__.py +0 -0
  33. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/agents/__init__.py +0 -0
  34. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/agents/browser_use_agent.py +0 -0
  35. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/agents/prompts/__init__.py +0 -0
  36. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/agents/prompts/report_writer_prompt.py +0 -0
  37. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/agents/prompts/vibe_surf_prompt.py +0 -0
  38. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/agents/report_writer_agent.py +0 -0
  39. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/agents/views.py +0 -0
  40. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/__init__.py +0 -0
  41. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/__init__.py +0 -0
  42. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/activity.py +0 -0
  43. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/agent.py +0 -0
  44. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/browser.py +0 -0
  45. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/composio.py +0 -0
  46. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/config.py +0 -0
  47. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/files.py +0 -0
  48. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/models.py +0 -0
  49. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/task.py +0 -0
  50. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/api/voices.py +0 -0
  51. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/__init__.py +0 -0
  52. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/manager.py +0 -0
  53. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/migrations/v001_initial_schema.sql +0 -0
  54. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/migrations/v002_add_agent_mode.sql +0 -0
  55. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql +0 -0
  56. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/migrations/v004_add_voice_profiles.sql +0 -0
  57. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/migrations/v005_add_composio_integration.sql +0 -0
  58. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/migrations/v006_add_credentials_table.sql +0 -0
  59. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/models.py +0 -0
  60. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/queries.py +0 -0
  61. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/database/schemas.py +0 -0
  62. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/llm_config.py +0 -0
  63. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/main.py +0 -0
  64. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/shared_state.py +0 -0
  65. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/utils/__init__.py +0 -0
  66. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/utils/encryption.py +0 -0
  67. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/utils/llm_factory.py +0 -0
  68. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/utils/utils.py +0 -0
  69. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/backend/voice_model_config.py +0 -0
  70. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/browser/__init__.py +0 -0
  71. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/browser/browser_manager.py +0 -0
  72. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/browser/utils.py +0 -0
  73. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/browser/watchdogs/__init__.py +0 -0
  74. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/browser/watchdogs/action_watchdog.py +0 -0
  75. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/browser/watchdogs/dom_watchdog.py +0 -0
  76. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/background.js +0 -0
  77. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/content.js +0 -0
  78. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/dev-reload.js +0 -0
  79. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/icons/logo.icns +0 -0
  80. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/icons/logo.png +0 -0
  81. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/manifest.json +0 -0
  82. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/permission-iframe.html +0 -0
  83. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/permission-request.html +0 -0
  84. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/popup.html +0 -0
  85. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/api-client.js +0 -0
  86. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/file-manager.js +0 -0
  87. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/history-manager.js +0 -0
  88. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/main.js +0 -0
  89. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/markdown-it.min.js +0 -0
  90. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/modal-manager.js +0 -0
  91. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/permission-iframe-request.js +0 -0
  92. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/permission-request.js +0 -0
  93. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/session-manager.js +0 -0
  94. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/settings-manager.js +0 -0
  95. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/user-settings-storage.js +0 -0
  96. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/scripts/voice-recorder.js +0 -0
  97. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/activity.css +0 -0
  98. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/animations.css +0 -0
  99. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/base.css +0 -0
  100. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/components.css +0 -0
  101. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/history-modal.css +0 -0
  102. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/input.css +0 -0
  103. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/layout.css +0 -0
  104. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/responsive.css +0 -0
  105. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/settings-environment.css +0 -0
  106. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/settings-forms.css +0 -0
  107. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/settings-integrations.css +0 -0
  108. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/settings-modal.css +0 -0
  109. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/settings-profiles.css +0 -0
  110. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/settings-responsive.css +0 -0
  111. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/settings-utilities.css +0 -0
  112. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/chrome_extension/styles/variables.css +0 -0
  113. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/cli.py +0 -0
  114. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/common.py +0 -0
  115. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/llm/__init__.py +0 -0
  116. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/llm/openai_compatible.py +0 -0
  117. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/logger.py +0 -0
  118. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/telemetry/__init__.py +0 -0
  119. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/telemetry/service.py +0 -0
  120. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/telemetry/views.py +0 -0
  121. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/__init__.py +0 -0
  122. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/browser_use_tools.py +0 -0
  123. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/composio_client.py +0 -0
  124. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/finance_tools.py +0 -0
  125. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/mcp_client.py +0 -0
  126. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/report_writer_tools.py +0 -0
  127. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/utils.py +0 -0
  128. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/vibesurf_registry.py +0 -0
  129. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/views.py +0 -0
  130. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/voice_asr.py +0 -0
  131. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/__init__.py +0 -0
  132. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/douyin/__init__.py +0 -0
  133. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/douyin/client.py +0 -0
  134. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/douyin/douyin.js +0 -0
  135. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/douyin/helpers.py +0 -0
  136. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/weibo/__init__.py +0 -0
  137. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/weibo/client.py +0 -0
  138. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/weibo/helpers.py +0 -0
  139. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/xhs/__init__.py +0 -0
  140. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/xhs/client.py +0 -0
  141. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/xhs/helpers.py +0 -0
  142. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/youtube/__init__.py +0 -0
  143. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/youtube/client.py +0 -0
  144. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/tools/website_api/youtube/helpers.py +0 -0
  145. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibe_surf/utils.py +0 -0
  146. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibesurf.egg-info/SOURCES.txt +0 -0
  147. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibesurf.egg-info/dependency_links.txt +0 -0
  148. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibesurf.egg-info/entry_points.txt +0 -0
  149. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibesurf.egg-info/requires.txt +0 -0
  150. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibesurf.egg-info/top_level.txt +0 -0
  151. {vibesurf-0.1.39 → vibesurf-0.1.41}/vibesurf.spec +0 -0
@@ -21,4 +21,10 @@ workspace
21
21
  *.db
22
22
  vibe_surf/_version.py
23
23
  .build-env
24
- .DS_Store
24
+ .DS_Store
25
+
26
+ vibe_surf/backend/frontend
27
+ vibe_surf/frontend/node_modules
28
+ vibe_surf/frontend/build
29
+
30
+ *.log
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.39
3
+ Version: 0.1.41
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.39'
32
- __version_tuple__ = version_tuple = (0, 1, 39)
31
+ __version__ = version = '0.1.41'
32
+ __version_tuple__ = version_tuple = (0, 1, 41)
33
33
 
34
- __commit_id__ = commit_id = 'g60f699d0a'
34
+ __commit_id__ = commit_id = 'gcf9a2adad'
@@ -507,15 +507,8 @@ async def _vibesurf_agent_node_impl(state: VibeSurfState) -> VibeSurfState:
507
507
  llm=vibesurf_agent.llm,
508
508
  file_system=vibesurf_agent.file_system,
509
509
  )
510
- if action_name in ['skill_search', 'skill_crawl', 'skill_summary', 'skill_deep_research']:
511
- state.current_step = "END"
512
- # Format final response
513
- final_response = f"{result.extracted_content}" or f"{result.error}"
514
- state.final_response = final_response
515
- logger.debug(final_response)
516
- state.is_complete = True
517
- else:
518
- state.current_step = "vibesurf_agent"
510
+
511
+ state.current_step = "vibesurf_agent"
519
512
 
520
513
  if result.extracted_content:
521
514
  vibesurf_agent.message_history.append(
@@ -45,11 +45,11 @@ class AgentBrowserProfile(BrowserProfile):
45
45
  'id': 'edibdbjcniadpccecjdfdjjppcpchdlm',
46
46
  'url': 'https://clients2.google.com/service/update2/crx?response=redirect&prodversion=130&acceptformat=crx3&x=id%3Dedibdbjcniadpccecjdfdjjppcpchdlm%26uc',
47
47
  },
48
- {
49
- 'name': 'Force Background Tab',
50
- 'id': 'gidlfommnbibbmegmgajdbikelkdcmcl',
51
- 'url': 'https://clients2.google.com/service/update2/crx?response=redirect&prodversion=133&acceptformat=crx3&x=id%3Dgidlfommnbibbmegmgajdbikelkdcmcl%26uc',
52
- },
48
+ # {
49
+ # 'name': 'Force Background Tab',
50
+ # 'id': 'gidlfommnbibbmegmgajdbikelkdcmcl',
51
+ # 'url': 'https://clients2.google.com/service/update2/crx?response=redirect&prodversion=133&acceptformat=crx3&x=id%3Dgidlfommnbibbmegmgajdbikelkdcmcl%26uc',
52
+ # },
53
53
  # {
54
54
  # 'name': 'ClearURLs',
55
55
  # 'id': 'lckanjgmijmafbedllaakclkaicjfmnk',
@@ -206,7 +206,7 @@ class AgentBrowserSession(BrowserSession):
206
206
  assert self._cdp_client_root is not None
207
207
  await self._cdp_client_root.start()
208
208
  await self._cdp_client_root.send.Target.setAutoAttach(
209
- params={'autoAttach': True, 'waitForDebuggerOnStart': False, 'flatten': True}
209
+ params={'autoAttach': False, 'waitForDebuggerOnStart': False, 'flatten': True}
210
210
  )
211
211
  self.logger.debug('CDP client connected successfully')
212
212
 
@@ -228,39 +228,9 @@ class AgentBrowserSession(BrowserSession):
228
228
  from browser_use.utils import is_new_tab_page
229
229
 
230
230
  # Collect all targets that need redirection
231
- redirected_targets = []
232
- redirect_sessions = {} # Store sessions created for redirection to potentially reuse
233
- for target in page_targets:
234
- target_url = target.get('url', '')
235
- if is_new_tab_page(target_url) and target_url != '':
236
- # Redirect chrome://newtab to about:blank to avoid JS issues preventing driving chrome://newtab
237
- target_id = target['targetId']
238
- self.logger.debug(f'🔄 Redirecting {target_url} to about:blank for target {target_id}')
239
- try:
240
- # Create a CDP session for redirection (minimal domains to avoid duplicate event handlers)
241
- # Only enable Page domain for navigation, avoid duplicate event handlers
242
- redirect_session = await CDPSession.for_target(self._cdp_client_root, target_id,
243
- domains=['Page'])
244
- # Navigate to about:blank
245
- await redirect_session.cdp_client.send.Page.navigate(
246
- params={'url': ''}, session_id=redirect_session.session_id
247
- )
248
- redirected_targets.append(target_id)
249
- redirect_sessions[target_id] = redirect_session # Store for potential reuse
250
- # Update the target's URL in our list for later use
251
- target['url'] = ''
252
- # Small delay to ensure navigation completes
253
- await asyncio.sleep(0.1)
254
- except Exception as e:
255
- self.logger.warning(f'Failed to redirect {target_url} to about:blank: {e}')
256
-
257
- # Log summary of redirections
258
- if redirected_targets:
259
- self.logger.debug(f'Redirected {len(redirected_targets)} chrome://newtab pages to about:blank')
260
-
261
231
  if not page_targets:
262
232
  # No pages found, create a new one
263
- new_target = await self._cdp_client_root.send.Target.createTarget(params={'url': ''})
233
+ new_target = await self._cdp_client_root.send.Target.createTarget(params={'url': 'chrome://newtab/'})
264
234
  target_id = new_target['targetId']
265
235
  self.logger.debug(f'📄 Created new blank page with target ID: {target_id}')
266
236
  else:
@@ -268,14 +238,8 @@ class AgentBrowserSession(BrowserSession):
268
238
  target_id = [page for page in page_targets if page.get('type') == 'page'][0]['targetId']
269
239
  self.logger.debug(f'📄 Using existing page with target ID: {target_id}')
270
240
 
271
- # Store the current page target ID and add to pool
272
- # Reuse redirect session if available, otherwise create new one
273
- if target_id in redirect_sessions:
274
- self.logger.debug(f'Reusing redirect session for target {target_id}')
275
- self.agent_focus = redirect_sessions[target_id]
276
- else:
277
- # For the initial connection, we'll use the shared root WebSocket
278
- self.agent_focus = await CDPSession.for_target(self._cdp_client_root, target_id, new_socket=False)
241
+ self.agent_focus = await CDPSession.for_target(self._cdp_client_root, target_id, new_socket=False)
242
+
279
243
  if self.agent_focus:
280
244
  self._cdp_session_pool[target_id] = self.agent_focus
281
245
 
@@ -297,13 +261,12 @@ class AgentBrowserSession(BrowserSession):
297
261
  for idx, target in enumerate(page_targets):
298
262
  target_url = target.get('url', '')
299
263
  self.logger.debug(f'Dispatching TabCreatedEvent for initial tab {idx}: {target_url}')
300
- await self.event_bus.dispatch(TabCreatedEvent(url=target_url, target_id=target['targetId']))
264
+ self.event_bus.dispatch(TabCreatedEvent(url=target_url, target_id=target['targetId']))
301
265
 
302
266
  # Dispatch initial focus event
303
267
  if page_targets:
304
268
  initial_url = page_targets[0].get('url', '')
305
- await self.event_bus.dispatch(
306
- AgentFocusChangedEvent(target_id=page_targets[0]['targetId'], url=initial_url))
269
+ self.event_bus.dispatch(AgentFocusChangedEvent(target_id=page_targets[0]['targetId'], url=initial_url))
307
270
  self.logger.debug(f'Initial agent focus set to tab 0: {initial_url}')
308
271
 
309
272
  except Exception as e:
@@ -329,8 +292,8 @@ class AgentBrowserSession(BrowserSession):
329
292
  self.logger.info(f"Agent {self.id}: Assigned target {target_id}")
330
293
  self.agent_focus = await CDPSession.for_target(self._cdp_client_root, target_id, new_socket=True,
331
294
  cdp_url=self.cdp_url)
332
- await self.agent_focus.cdp_client.send.Target.activateTarget(
333
- params={'targetId': target_id})
295
+ # await self.agent_focus.cdp_client.send.Target.activateTarget(
296
+ # params={'targetId': target_id})
334
297
  await self.agent_focus.cdp_client.send.Runtime.runIfWaitingForDebugger(
335
298
  session_id=self.agent_focus.session_id)
336
299
  self._cdp_session_pool[target_id] = self.agent_focus
@@ -524,7 +487,7 @@ class AgentBrowserSession(BrowserSession):
524
487
  self.agent_focus = session
525
488
 
526
489
  # Activate target without events
527
- await session.cdp_client.send.Target.activateTarget(params={'targetId': target_id})
490
+ # await session.cdp_client.send.Target.activateTarget(params={'targetId': target_id})
528
491
  await session.cdp_client.send.Runtime.runIfWaitingForDebugger(session_id=session.session_id)
529
492
  else:
530
493
  # Use current tab - no tab switching events
@@ -747,7 +710,7 @@ class AgentBrowserSession(BrowserSession):
747
710
  )
748
711
  self.agent_focus = session
749
712
  if focus:
750
- await session.cdp_client.send.Target.activateTarget(params={'targetId': session.target_id})
713
+ # await session.cdp_client.send.Target.activateTarget(params={'targetId': session.target_id})
751
714
  await session.cdp_client.send.Runtime.runIfWaitingForDebugger(session_id=session.session_id)
752
715
  # else:
753
716
  # self.logger.debug(f'[get_or_create_cdp_session] Reusing existing session for {target_id} (focus={focus})')
@@ -780,7 +743,7 @@ class AgentBrowserSession(BrowserSession):
780
743
  f'[get_or_create_cdp_session] Switching agent focus from {self.agent_focus.target_id} to {target_id}'
781
744
  )
782
745
  self.agent_focus = session
783
- await session.cdp_client.send.Target.activateTarget(params={'targetId': session.target_id})
746
+ # await session.cdp_client.send.Target.activateTarget(params={'targetId': session.target_id})
784
747
  await session.cdp_client.send.Runtime.runIfWaitingForDebugger(session_id=session.session_id)
785
748
  else:
786
749
  self.logger.debug(
@@ -33,6 +33,7 @@ const VIBESURF_CONFIG = {
33
33
  github: "https://github.com/vibesurf-ai/VibeSurf",
34
34
  discord: "https://discord.gg/EZ2YnUXP",
35
35
  x: "https://x.com/warmshao",
36
+ reportBug: "https://github.com/vibesurf-ai/VibeSurf/issues/new/choose",
36
37
  website: "https://vibe-surf.com/"
37
38
  },
38
39
 
@@ -1475,7 +1475,7 @@ class VibeSurfUIManager {
1475
1475
  <div class="task-icon">🔍</div>
1476
1476
  <div class="task-content">
1477
1477
  <div class="task-title">Research Founders</div>
1478
- <div class="task-description">Search information about browser-use and browser-use-webui, write a brief report</div>
1478
+ <div class="task-description">Search information about AI browser assistant: VibeSurf, write a brief report</div>
1479
1479
  </div>
1480
1480
  </div>
1481
1481
  <div class="task-suggestion" data-task="news">
@@ -3603,6 +3603,13 @@ class VibeSurfUIManager {
3603
3603
  break;
3604
3604
 
3605
3605
 
3606
+ case 'reportbug':
3607
+ title = 'Report Bug';
3608
+ svg = `<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
3609
+ <path d="M20 8h-2.81c-.45-.78-1.07-1.45-1.82-1.96L17 4.41 15.59 3l-2.17 2.17C12.96 5.06 12.49 5 12 5c-.49 0-.96.06-1.42.17L8.41 3 7 4.41l1.62 1.63C7.88 6.55 7.26 7.22 6.81 8H4v2h2.09c-.05.33-.09.66-.09 1v1H4v2h2v1c0 .34.04.67.09 1H4v2h2.81c1.04 1.79 2.97 3 5.19 3s4.15-1.21 5.19-3H20v-2h-2.09c.05-.33.09-.66.09-1v-1h2v-2h-2v-1c0-.34-.04-.67-.09-1H20V8zm-6 8h-4v-2h4v2zm0-4h-4v-2h4v2z" fill="currentColor"/>
3610
+ </svg>`;
3611
+ break;
3612
+
3606
3613
  default:
3607
3614
  console.warn(`[UIManager] Unknown social platform: ${platform}`);
3608
3615
  return null;
@@ -88,7 +88,7 @@
88
88
  <div class="task-icon">🔍</div>
89
89
  <div class="task-content">
90
90
  <div class="task-title">Research Founders</div>
91
- <div class="task-description">Search information about browser-use and browser-use-webui, write a brief report</div>
91
+ <div class="task-description">Search information about AI browser assistant: VibeSurf, write a brief report</div>
92
92
  </div>
93
93
  </div>
94
94
  <div class="task-suggestion" data-task="news">
@@ -65,7 +65,8 @@ class CustomFileSystem(FileSystem):
65
65
 
66
66
  async def display_file(self, full_filename: str) -> str | None:
67
67
  """Display file content using file-specific display method"""
68
- if not self.file_exist(full_filename):
68
+ if_file_exist = await self.file_exist(full_filename)
69
+ if not if_file_exist:
69
70
  return f"{full_filename} does not exist."
70
71
 
71
72
  file_content = await self.read_file(full_filename)
@@ -281,10 +281,10 @@ Format: [index1, index2, index3, ...]
281
281
  if params.tab_id:
282
282
  target_id = await browser_session.get_target_id_from_tab_id(params.tab_id)
283
283
  current_target_id = None
284
- if browser_session.agent_focus:
285
- current_target_id = browser_session.agent_focus.target_id
284
+ if browser_session._dom_watchdog and browser_session._dom_watchdog.enhanced_dom_tree:
285
+ current_target_id = browser_session._dom_watchdog.enhanced_dom_tree.target_id
286
286
  if current_target_id != target_id:
287
- browser_session._dom_watchdog.enhanced_dom_tree = None
287
+ browser_session._dom_watchdog.clear_cache()
288
288
  await browser_session.get_or_create_cdp_session(target_id, focus=True)
289
289
 
290
290
  # Extract structured content using the existing method
@@ -340,10 +340,10 @@ Format: [index1, index2, index3, ...]
340
340
  if params.tab_id:
341
341
  target_id = await browser_session.get_target_id_from_tab_id(params.tab_id)
342
342
  current_target_id = None
343
- if browser_session.agent_focus:
344
- current_target_id = browser_session.agent_focus.target_id
343
+ if browser_session._dom_watchdog and browser_session._dom_watchdog.enhanced_dom_tree:
344
+ current_target_id = browser_session._dom_watchdog.enhanced_dom_tree.target_id
345
345
  if current_target_id != target_id:
346
- browser_session._dom_watchdog.enhanced_dom_tree = None
346
+ browser_session._dom_watchdog.clear_cache()
347
347
  await browser_session.get_or_create_cdp_session(target_id, focus=True)
348
348
 
349
349
  # Extract and summarize content
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.39
3
+ Version: 0.1.41
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: WarmShao
6
6
  License: Apache-2.0
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