vibesurf 0.1.14__tar.gz → 0.1.16__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.
Files changed (112) hide show
  1. {vibesurf-0.1.14 → vibesurf-0.1.16}/PKG-INFO +1 -1
  2. {vibesurf-0.1.14 → vibesurf-0.1.16}/tests/test_agents.py +15 -5
  3. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/_version.py +3 -3
  4. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/agents/browser_use_agent.py +4 -0
  5. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/agents/prompts/vibe_surf_prompt.py +1 -1
  6. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/agents/vibe_surf_agent.py +2 -1
  7. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/llm/openai_compatible.py +5 -4
  8. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/tools/vibesurf_tools.py +4 -2
  9. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibesurf.egg-info/PKG-INFO +1 -1
  10. {vibesurf-0.1.14 → vibesurf-0.1.16}/.env.example +0 -0
  11. {vibesurf-0.1.14 → vibesurf-0.1.16}/.github/workflows/publish.yml +0 -0
  12. {vibesurf-0.1.14 → vibesurf-0.1.16}/.gitignore +0 -0
  13. {vibesurf-0.1.14 → vibesurf-0.1.16}/.python-version +0 -0
  14. {vibesurf-0.1.14 → vibesurf-0.1.16}/LICENSE +0 -0
  15. {vibesurf-0.1.14 → vibesurf-0.1.16}/MANIFEST.in +0 -0
  16. {vibesurf-0.1.14 → vibesurf-0.1.16}/README.md +0 -0
  17. {vibesurf-0.1.14 → vibesurf-0.1.16}/docs/EXECUTABLE_BUILD.md +0 -0
  18. {vibesurf-0.1.14 → vibesurf-0.1.16}/docs/PYPI_SETUP.md +0 -0
  19. {vibesurf-0.1.14 → vibesurf-0.1.16}/pyproject.toml +0 -0
  20. {vibesurf-0.1.14 → vibesurf-0.1.16}/scripts/build-local.bat +0 -0
  21. {vibesurf-0.1.14 → vibesurf-0.1.16}/scripts/build-local.sh +0 -0
  22. {vibesurf-0.1.14 → vibesurf-0.1.16}/setup.cfg +0 -0
  23. {vibesurf-0.1.14 → vibesurf-0.1.16}/tests/test_backend_api.py +0 -0
  24. {vibesurf-0.1.14 → vibesurf-0.1.16}/tests/test_browser.py +0 -0
  25. {vibesurf-0.1.14 → vibesurf-0.1.16}/tests/test_tools.py +0 -0
  26. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/__init__.py +0 -0
  27. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/agents/__init__.py +0 -0
  28. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/agents/prompts/__init__.py +0 -0
  29. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/agents/prompts/report_writer_prompt.py +0 -0
  30. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/agents/report_writer_agent.py +0 -0
  31. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/agents/views.py +0 -0
  32. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/__init__.py +0 -0
  33. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/api/__init__.py +0 -0
  34. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/api/activity.py +0 -0
  35. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/api/browser.py +0 -0
  36. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/api/config.py +0 -0
  37. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/api/files.py +0 -0
  38. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/api/models.py +0 -0
  39. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/api/task.py +0 -0
  40. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/database/__init__.py +0 -0
  41. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/database/manager.py +0 -0
  42. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/database/models.py +0 -0
  43. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/database/queries.py +0 -0
  44. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/database/schemas.py +0 -0
  45. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/llm_config.py +0 -0
  46. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/main.py +0 -0
  47. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/migrations/__init__.py +0 -0
  48. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/migrations/init_db.py +0 -0
  49. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/migrations/seed_data.py +0 -0
  50. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/shared_state.py +0 -0
  51. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/utils/__init__.py +0 -0
  52. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/utils/encryption.py +0 -0
  53. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/backend/utils/llm_factory.py +0 -0
  54. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/browser/__init__.py +0 -0
  55. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/browser/agen_browser_profile.py +0 -0
  56. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/browser/agent_browser_session.py +0 -0
  57. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/browser/browser_manager.py +0 -0
  58. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/browser/utils.py +0 -0
  59. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/browser/watchdogs/__init__.py +0 -0
  60. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/browser/watchdogs/action_watchdog.py +0 -0
  61. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/browser/watchdogs/dom_watchdog.py +0 -0
  62. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/background.js +0 -0
  63. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/config.js +0 -0
  64. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/content.js +0 -0
  65. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/dev-reload.js +0 -0
  66. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/icons/convert-svg.js +0 -0
  67. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/icons/logo-preview.html +0 -0
  68. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/icons/logo.icns +0 -0
  69. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/icons/logo.png +0 -0
  70. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/manifest.json +0 -0
  71. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/popup.html +0 -0
  72. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/api-client.js +0 -0
  73. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/file-manager.js +0 -0
  74. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/history-manager.js +0 -0
  75. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/main.js +0 -0
  76. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/markdown-it.min.js +0 -0
  77. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/modal-manager.js +0 -0
  78. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/session-manager.js +0 -0
  79. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/settings-manager.js +0 -0
  80. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/scripts/ui-manager.js +0 -0
  81. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/sidepanel.html +0 -0
  82. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/activity.css +0 -0
  83. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/animations.css +0 -0
  84. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/base.css +0 -0
  85. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/components.css +0 -0
  86. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/history-modal.css +0 -0
  87. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/input.css +0 -0
  88. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/layout.css +0 -0
  89. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/responsive.css +0 -0
  90. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/settings-environment.css +0 -0
  91. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/settings-forms.css +0 -0
  92. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/settings-modal.css +0 -0
  93. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/settings-profiles.css +0 -0
  94. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/settings-responsive.css +0 -0
  95. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/settings-utilities.css +0 -0
  96. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/chrome_extension/styles/variables.css +0 -0
  97. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/cli.py +0 -0
  98. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/common.py +0 -0
  99. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/llm/__init__.py +0 -0
  100. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/logger.py +0 -0
  101. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/tools/__init__.py +0 -0
  102. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/tools/browser_use_tools.py +0 -0
  103. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/tools/file_system.py +0 -0
  104. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/tools/mcp_client.py +0 -0
  105. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/tools/report_writer_tools.py +0 -0
  106. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibe_surf/tools/views.py +1 -1
  107. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibesurf.egg-info/SOURCES.txt +0 -0
  108. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibesurf.egg-info/dependency_links.txt +0 -0
  109. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibesurf.egg-info/entry_points.txt +0 -0
  110. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibesurf.egg-info/requires.txt +0 -0
  111. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibesurf.egg-info/top_level.txt +0 -0
  112. {vibesurf-0.1.14 → vibesurf-0.1.16}/vibesurf.spec +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.14
3
+ Version: 0.1.16
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: Shao Warm
6
6
  License: Apache-2.0
@@ -38,10 +38,20 @@ async def run_single_bu_agent():
38
38
  await main_browser_session.start()
39
39
  bu_tools = BrowserUseTools()
40
40
 
41
- llm = ChatOpenAICompatible(model='gemini-2.5-flash',
42
- base_url=os.getenv("OPENAI_ENDPOINT"),
43
- api_key=os.getenv("OPENAI_API_KEY"))
41
+ # llm = ChatOpenAICompatible(model='gemini-2.5-flash',
42
+ # base_url=os.getenv("OPENAI_ENDPOINT"),
43
+ # api_key=os.getenv("OPENAI_API_KEY"))
44
+
45
+ # llm = ChatOpenAICompatible(model='qwen-plus',
46
+ # base_url=os.getenv("ALIBABA_ENDPOINT"),
47
+ # api_key=os.getenv("ALIBABA_API_KEY"))
48
+
49
+ llm = ChatOpenAICompatible(model='kimi-k2-turbo-preview',
50
+ base_url=os.getenv("MOONSHOT_ENDPOINT"),
51
+ api_key=os.getenv("MOONSHOT_API_KEY"))
52
+
44
53
  task = "Search Google for 'Elon Mask' and tell me the top 3 results"
54
+
45
55
  # task = r"""
46
56
  # 1. 在新的tab 导航到 https://github.com/
47
57
  # 2. 在新的tab 导航到 https://vibemotion.co/
@@ -367,7 +377,7 @@ async def test_vibe_surf_agent_control():
367
377
 
368
378
 
369
379
  if __name__ == "__main__":
370
- # asyncio.run(run_single_bu_agent())
380
+ asyncio.run(run_single_bu_agent())
371
381
  # asyncio.run(run_multi_bu_agents())
372
- asyncio.run(test_vibe_surf_agent())
382
+ # asyncio.run(test_vibe_surf_agent())
373
383
  # asyncio.run(test_vibe_surf_agent_control())
@@ -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.14'
32
- __version_tuple__ = version_tuple = (0, 1, 14)
31
+ __version__ = version = '0.1.16'
32
+ __version_tuple__ = version_tuple = (0, 1, 16)
33
33
 
34
- __commit_id__ = commit_id = 'g2ea9daf98'
34
+ __commit_id__ = commit_id = 'gb9e253fde'
@@ -264,6 +264,10 @@ class BrowserUseAgent(Agent):
264
264
  '⚠️ Kimi-k2 models do not support use_vision=True yet. Setting use_vision=False for now...')
265
265
  self.settings.use_vision = False
266
266
 
267
+ if "qwen" in self.llm.model.lower() and "vl" not in self.llm.model.lower():
268
+ self.logger.warning("⚠️ Qwen without VL doesn't support vision. Ignore Vision input.")
269
+ self.settings.use_vision = False
270
+
267
271
  # Handle users trying to use use_vision=True with XAI models
268
272
  if 'grok' in self.llm.model.lower():
269
273
  self.logger.warning('⚠️ XAI models do not support use_vision=True yet. Setting use_vision=False for now...')
@@ -8,7 +8,7 @@ You are VibeSurf Agent, a professional AI browser assistant developed by [WarmSh
8
8
 
9
9
  You operate using with followed primary agents for collaboration:
10
10
 
11
- 1. **Browser Automation**: Execute web tasks using `execute_browser_use_agent_tasks`
11
+ 1. **Browser Automation**: Execute web tasks using `execute_browser_use_agent`
12
12
  - **Parallel Task Processing**: Execute multiple independent browser tasks simultaneously
13
13
  - **Efficiency Optimization**: Dramatically reduce execution time for multi-step workflows
14
14
  - **Intelligent Task Distribution**: Automatically identify parallelize subtasks
@@ -512,7 +512,8 @@ async def _browser_task_execution_node_impl(state: VibeSurfState) -> VibeSurfSta
512
512
  task_count = len(state.browser_tasks)
513
513
  if task_count == 0:
514
514
  raise ValueError("No browser tasks assigned. Please assign 1 task at least.")
515
-
515
+ if not state.browser_results:
516
+ state.browser_results = []
516
517
  if task_count <= 1:
517
518
  # Single task execution
518
519
  logger.info("📝 Using single execution for single task")
@@ -24,7 +24,7 @@ Example usage:
24
24
  temperature=0,
25
25
  )
26
26
  """
27
-
27
+ import pdb
28
28
  from dataclasses import dataclass
29
29
  from typing import Any, TypeVar, overload
30
30
  from pydantic import BaseModel
@@ -223,9 +223,11 @@ class ChatOpenAICompatible(ChatOpenAI):
223
223
  """
224
224
  # If this is not a special model or no structured output is requested,
225
225
  # use the parent implementation directly
226
+ if self._is_qwen_model() or self._is_kimi_model():
227
+ self.add_schema_to_system_prompt = True
228
+
226
229
  if not (self._is_gemini_model() or self._is_kimi_model()) or output_format is None:
227
230
  return await super().ainvoke(messages, output_format)
228
-
229
231
  openai_messages = OpenAIMessageSerializer.serialize_messages(messages)
230
232
 
231
233
  try:
@@ -269,9 +271,8 @@ class ChatOpenAICompatible(ChatOpenAI):
269
271
  )
270
272
 
271
273
  else:
272
- original_schema = SchemaOptimizer.create_optimized_json_schema(output_format)
273
-
274
274
  # Apply appropriate schema fix based on model type
275
+ original_schema = SchemaOptimizer.create_optimized_json_schema(output_format)
275
276
  if self._is_gemini_model():
276
277
  logger.debug(f"🔧 Applying Gemini schema fixes for model: {self.model}")
277
278
  fixed_schema = self._fix_gemini_schema(original_schema)
@@ -105,13 +105,15 @@ class VibeSurfTools:
105
105
 
106
106
  def _register_todo_actions(self):
107
107
  @self.registry.action(
108
- 'Generate a new todo.md file with the provided todo items in markdown checkbox format.'
108
+ 'Generate a new todo.md file with the provided todo items in markdown checkbox format.',
109
+ param_model=TodoGenerateAction
109
110
  )
110
- async def generate_todos(todo_items: list[str], file_system: CustomFileSystem):
111
+ async def generate_todos(params: TodoGenerateAction, file_system: CustomFileSystem):
111
112
  """Generate a new todo.md file with todo items in markdown format"""
112
113
  try:
113
114
  # Format todo items as markdown checkboxes
114
115
  formatted_items = []
116
+ todo_items = params.todo_items
115
117
  for item in todo_items:
116
118
  # Clean item and ensure it doesn't already have checkbox format
117
119
  clean_item = item.strip()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.14
3
+ Version: 0.1.16
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: Shao Warm
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
@@ -99,7 +99,6 @@ class TodoModification(BaseModel):
99
99
  description='Text of the todo item to operate on',
100
100
  )
101
101
 
102
-
103
102
  class TodoModifyAction(BaseModel):
104
103
  """Parameters for modifying todo items"""
105
104
  modifications: list[TodoModification] = Field(
@@ -108,6 +107,7 @@ class TodoModifyAction(BaseModel):
108
107
  )
109
108
 
110
109
 
110
+
111
111
  class VibeSurfDoneAction(BaseModel):
112
112
  """Parameters for task completion output"""
113
113
  response: str = Field(
File without changes