vibesurf 0.1.37__py3-none-any.whl → 0.1.38__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.

Potentially problematic release.


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

vibe_surf/_version.py CHANGED
@@ -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.37'
32
- __version_tuple__ = version_tuple = (0, 1, 37)
31
+ __version__ = version = '0.1.38'
32
+ __version_tuple__ = version_tuple = (0, 1, 38)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -78,7 +78,7 @@ When using Composio tools (those with `cpo.{toolkit_name}.{tool_name}` prefix):
78
78
  - **Special Cases**: `skill_deep_research` only returns guidelines only, then follow guidelines to conduct actual research
79
79
  - **Execution Policy**: Skill actions execute only once (no need to retry if errors occur), and all results - whether successful or failed - should be presented to users in structured markdown format.
80
80
  - **Follow-up Operations**: When users input skill operations without specifying additional tasks, do not automatically perform subsequent operations. Only perform additional tool operations when users specifically request actions like saving results to files or writing reports.
81
- - After `/search` completion, NEVER use browser agent to deeply investigate search result (unless explicitly emphasized by the user). The user usually only need the search results. Just return the search results.
81
+ - **Search Skill Usage**: `/search` should ONLY be used when users want to quickly obtain specific information or news. Please analyze user intent carefully - if the request contains other browser tasks or requires more complex web operations, you should generally execute browser tasks instead of using skill search.
82
82
 
83
83
  ## Language Adaptability
84
84
 
@@ -163,19 +163,19 @@ class ReportWriterAgent:
163
163
  You must ALWAYS respond with a valid JSON in this exact format:
164
164
  {{
165
165
  "thinking": "A structured <think>-style reasoning.",
166
- "action":[{{"task_done": {{ }}, // ... more actions in sequence]
166
+ "action":[{{"<action_name>": {{<action_params>}}]
167
167
  }}
168
168
 
169
- Action list should NEVER be empty.
169
+ Action list should NEVER be empty and Each step can only output one action. If multiple actions are output, only the first one will be executed.
170
170
  """
171
171
  else:
172
172
  report_system_prompt += """
173
173
  You must ALWAYS respond with a valid JSON in this exact format:
174
174
  {{
175
- "action":[{{"task_done": {{ }}, // ... more actions in sequence]
175
+ "action":[{{"<action_name>": {{<action_params>}}]
176
176
  }}
177
177
 
178
- Action list should NEVER be empty.
178
+ Action list should NEVER be empty and Each step can only output one action. If multiple actions are output, only the first one will be executed.
179
179
  """
180
180
  self.message_history.append(SystemMessage(content=report_system_prompt))
181
181
 
@@ -234,7 +234,7 @@ Please analyze the task, determine if you need to read any additional files, the
234
234
  results = []
235
235
  time_start = time.time()
236
236
 
237
- for i, action in enumerate(actions):
237
+ for i, action in enumerate(actions[:1]):
238
238
  action_data = action.model_dump(exclude_unset=True)
239
239
  action_name = next(iter(action_data.keys())) if action_data else 'unknown'
240
240
  logger.info(f"🛠️ Executing action {i + 1}/{len(actions)}: {action_name}")
@@ -427,7 +427,7 @@ async def _vibesurf_agent_node_impl(state: VibeSurfState) -> VibeSurfState:
427
427
  if hasattr(parsed, 'thinking') and parsed.thinking:
428
428
  await log_agent_activity(state, agent_name, "thinking", parsed.thinking)
429
429
 
430
- for i, action in enumerate(actions):
430
+ for i, action in enumerate(actions[:1]):
431
431
  action_data = action.model_dump(exclude_unset=True)
432
432
  action_name = next(iter(action_data.keys())) if action_data else 'unknown'
433
433
  logger.info(f"🛠️ Processing VibeSurf action {i + 1}/{len(actions)}: {action_name}")
@@ -1651,19 +1651,19 @@ Please continue with your assigned work, incorporating this guidance only if it'
1651
1651
  You must ALWAYS respond with a valid JSON in this exact format:
1652
1652
  {{
1653
1653
  "thinking": "A structured <think>-style reasoning.",
1654
- "action":[{{"task_done": {{ }}, // ... more actions in sequence]
1654
+ "action":[{{"<action_name>": {{<action_params>}}]
1655
1655
  }}
1656
1656
 
1657
- Action list should NEVER be empty.
1657
+ Action list should NEVER be empty and Each step can only output one action. If multiple actions are output, only the first one will be executed.
1658
1658
  """
1659
1659
  else:
1660
1660
  vibesurf_system_prompt += """
1661
1661
  You must ALWAYS respond with a valid JSON in this exact format:
1662
1662
  {{
1663
- "action":[{{"task_done": {{ }}, // ... more actions in sequence]
1663
+ "action":[{{"<action_name>": {{<action_params>}}]
1664
1664
  }}
1665
1665
 
1666
- Action list should NEVER be empty.
1666
+ Action list should NEVER be empty and Each step can only output one action. If multiple actions are output, only the first one will be executed.
1667
1667
  """
1668
1668
  self.message_history.append(SystemMessage(content=vibesurf_system_prompt))
1669
1669
 
@@ -69,6 +69,12 @@ LLM_PROVIDERS = {
69
69
  "anthropic_bedrock": [
70
70
  ],
71
71
  "openai_compatible": [
72
+ ],
73
+ "lm_studio":[
74
+ "qwen/qwen3-vl-8b",
75
+ "qwen/qwen3-vl-30b",
76
+ "qwen/qwen3-14b",
77
+ "openai/gpt-oss-20b"
72
78
  ]
73
79
  }
74
80
 
@@ -167,15 +173,23 @@ PROVIDER_METADATA = {
167
173
  "qwen": {
168
174
  "display_name": "Qwen",
169
175
  "requires_api_key": True,
170
- "requires_base_url": True,
176
+ "requires_base_url": False,
171
177
  "supports_tools": True,
172
- "supports_vision": True,
178
+ "supports_vision": False,
173
179
  "default_model": ""
174
180
  },
175
181
  "kimi": {
176
182
  "display_name": "Kimi",
177
183
  "requires_api_key": True,
178
- "requires_base_url": True,
184
+ "requires_base_url": False,
185
+ "supports_tools": True,
186
+ "supports_vision": False,
187
+ "default_model": ""
188
+ },
189
+ "lm_studio": {
190
+ "display_name": "LM Studio",
191
+ "requires_api_key": False,
192
+ "requires_base_url": False,
179
193
  "supports_tools": True,
180
194
  "supports_vision": True,
181
195
  "default_model": ""
@@ -193,6 +193,14 @@ def create_llm_from_profile(llm_profile) -> BaseChatModel:
193
193
  **common_params
194
194
  )
195
195
 
196
+ elif provider == "lm_studio":
197
+ return ChatOpenAI(
198
+ model=model,
199
+ base_url="http://localhost:1234/v1" or base_url,
200
+ api_key="lm_studio",
201
+ **common_params
202
+ )
203
+
196
204
  elif provider == "openai_compatible":
197
205
  if not base_url:
198
206
  raise ValueError("OpenAI Compatible provider requires base_url")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.37
3
+ Version: 0.1.38
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: WarmShao
6
6
  License: Apache-2.0
@@ -1,19 +1,19 @@
1
1
  vibe_surf/__init__.py,sha256=WtduuMFGauMD_9dpk4fnRnLTAP6ka9Lfu0feAFNzLfo,339
2
- vibe_surf/_version.py,sha256=Un30RAtqEXXKI1lbcmQdjd4zLY640yIy_ojmAQvwoug,706
2
+ vibe_surf/_version.py,sha256=4Rjl2vv51c5O5nP6rSO_kAjD_5DtEsSqfA7Qrjnt-UY,706
3
3
  vibe_surf/cli.py,sha256=pzJs--bjV6ZU7njJnxK_lh76l3pQ3opg_5V9Hw17PQw,21924
4
4
  vibe_surf/common.py,sha256=_WWMxen5wFwzUjEShn3yDVC1OBFUiJ6Vccadi6tuG6w,1215
5
5
  vibe_surf/logger.py,sha256=k53MFA96QX6t9OfcOf1Zws8PP0OOqjVJfhUD3Do9lKw,3043
6
6
  vibe_surf/utils.py,sha256=3j6uRkgjOAIDYmbpW8C-DpYhdf1Kvahz715KSriVIk0,261
7
7
  vibe_surf/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
8
8
  vibe_surf/agents/browser_use_agent.py,sha256=Uj9tbCR5_dbrSSnKuajbL4zP_E9CwLMrdvw0EmDwnC0,34473
9
- vibe_surf/agents/report_writer_agent.py,sha256=0MqRFHQpL7-HIDJt8r3TUqI0qh9SMb3LlkZSWc3d0Sg,23903
10
- vibe_surf/agents/vibe_surf_agent.py,sha256=y9qD72wBpx9q2Vk2nSP07t1L8cycpJ0zh6EB11-8cb0,78793
9
+ vibe_surf/agents/report_writer_agent.py,sha256=EiG0ITPGctCGJ8BCc6eVT92Pvb0J39nPArZuXmDUkzg,24097
10
+ vibe_surf/agents/vibe_surf_agent.py,sha256=8dR2WQGFzO_Y4dKpVGxrBZehBfowJ5Xq1NmWdmv57Kc,78987
11
11
  vibe_surf/agents/views.py,sha256=yHjNJloa-aofVTGyuRy08tBYP_Y3XLqt1DUWOUmHRng,4825
12
12
  vibe_surf/agents/prompts/__init__.py,sha256=l4ieA0D8kLJthyNN85FKLNe4ExBa3stY3l-aImLDRD0,36
13
13
  vibe_surf/agents/prompts/report_writer_prompt.py,sha256=sZE8MUT1CDLmRzbnbEQzAvTwJjpITgh2Q8g1_eXmkzE,4454
14
- vibe_surf/agents/prompts/vibe_surf_prompt.py,sha256=UnZxgy9sgr4u1RNYr6VJBk3sEUbFasu2z75QGsILXk8,7507
14
+ vibe_surf/agents/prompts/vibe_surf_prompt.py,sha256=9omjK6lT6REjCD_gcVriQUOIexczDdh_VPLZgF4WHHQ,7612
15
15
  vibe_surf/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
16
- vibe_surf/backend/llm_config.py,sha256=buzNzncyz_Lu__mRU7aMtCpfKmWjbgpneBzcz_cH9Jg,5697
16
+ vibe_surf/backend/llm_config.py,sha256=Ez2ZEMLRINqKOnxbmWD1mZCOKXwIv3GphxP5Y94fL0A,6065
17
17
  vibe_surf/backend/main.py,sha256=8_n9dUF972E_UqguXK4zfq5AeulTUeey4X60qOXnigY,8272
18
18
  vibe_surf/backend/shared_state.py,sha256=AK7MGBZMbaCxhuBgnfRtfcxMQS9SACh75W6UM8w4vMA,28654
19
19
  vibe_surf/backend/voice_model_config.py,sha256=oee4fvOexXKzKRDv2-FEKQj7Z2OznACrj6mfWRGy7h0,567
@@ -40,7 +40,7 @@ vibe_surf/backend/database/migrations/v005_add_composio_integration.sql,sha256=Q
40
40
  vibe_surf/backend/database/migrations/v006_add_credentials_table.sql,sha256=udyVO_L8CvdBKGNfmnxj-kU7UxR9EzUqMpHuV1h46vU,812
41
41
  vibe_surf/backend/utils/__init__.py,sha256=V8leMFp7apAglUAoCHPZrNNcRHthSLYIudIJE5qwjb0,184
42
42
  vibe_surf/backend/utils/encryption.py,sha256=LYTKJdOrKfQt8U7GUXIEsns6iBeXnZ7jlOPOgxvkD5c,5112
43
- vibe_surf/backend/utils/llm_factory.py,sha256=KKxi3yi61OU6Prd3druzYkD7JQkqwArkzALWYYb8G3g,9570
43
+ vibe_surf/backend/utils/llm_factory.py,sha256=WO2MI83n9p5YraPnmQhq_OEH3TBznm34kqhHpESnFng,9817
44
44
  vibe_surf/backend/utils/utils.py,sha256=nY5-DGY4MfPumpQxXLQiodO0Db7lChryWIHbY9h971o,1137
45
45
  vibe_surf/browser/__init__.py,sha256=_UToO2fZfSCrfjOcxhn4Qq7ZLbYeyPuUUEmqIva-Yv8,325
46
46
  vibe_surf/browser/agen_browser_profile.py,sha256=fHk5q6hkwHfoNIuUitUBPJLdqbsZ7xjsLU6vTTlXEQI,6177
@@ -120,9 +120,9 @@ vibe_surf/tools/website_api/xhs/helpers.py,sha256=Dq2RyYKClBQ2ha2yEfpS1mtZswx0z9
120
120
  vibe_surf/tools/website_api/youtube/__init__.py,sha256=QWmZWSqo1O6XtaWP-SuL3HrBLYINjEWEyOy-KCytGDw,1145
121
121
  vibe_surf/tools/website_api/youtube/client.py,sha256=0kKy7fkBNc63hRvDgXaKnguDpDJ92rG8T2nT_Y1F5MQ,51989
122
122
  vibe_surf/tools/website_api/youtube/helpers.py,sha256=GPgqfNirLYjIpk1OObvoXd2Ktq-ahKOOKHO2WwQVXCw,12931
123
- vibesurf-0.1.37.dist-info/licenses/LICENSE,sha256=vRmTjOYvD8RLiSGYYmFHnveYNswtO1uvSk1sd-Eu7sg,2037
124
- vibesurf-0.1.37.dist-info/METADATA,sha256=R4NaabFRS7T1PU4X2kp1u1x4lu4uI85UzBhyqjDOP38,6787
125
- vibesurf-0.1.37.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
126
- vibesurf-0.1.37.dist-info/entry_points.txt,sha256=UxqpvMocL-PR33S6vLF2OmXn-kVzM-DneMeZeHcPMM8,48
127
- vibesurf-0.1.37.dist-info/top_level.txt,sha256=VPZGHqSb6EEqcJ4ZX6bHIuWfon5f6HXl3c7BYpbRqnY,10
128
- vibesurf-0.1.37.dist-info/RECORD,,
123
+ vibesurf-0.1.38.dist-info/licenses/LICENSE,sha256=vRmTjOYvD8RLiSGYYmFHnveYNswtO1uvSk1sd-Eu7sg,2037
124
+ vibesurf-0.1.38.dist-info/METADATA,sha256=6Tk3I3iT9WxmMsvCjnztsSLnf2yReqhYVSN6oBy5kh4,6787
125
+ vibesurf-0.1.38.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
126
+ vibesurf-0.1.38.dist-info/entry_points.txt,sha256=UxqpvMocL-PR33S6vLF2OmXn-kVzM-DneMeZeHcPMM8,48
127
+ vibesurf-0.1.38.dist-info/top_level.txt,sha256=VPZGHqSb6EEqcJ4ZX6bHIuWfon5f6HXl3c7BYpbRqnY,10
128
+ vibesurf-0.1.38.dist-info/RECORD,,