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

@@ -3,11 +3,7 @@ import logging
3
3
  import time
4
4
  from typing import Any
5
5
 
6
- from pydantic import BaseModel, ConfigDict, Field, create_model
7
6
 
8
- from browser_use.agent.views import ActionResult
9
- from browser_use.controller.registry.service import Registry
10
- from browser_use.controller.service import Controller
11
7
  from browser_use.telemetry import MCPClientTelemetryEvent, ProductTelemetry
12
8
  from browser_use.utils import get_browser_use_version
13
9
  from browser_use.mcp.client import MCPClient
@@ -8,7 +8,7 @@ import mimetypes
8
8
 
9
9
  from typing import Optional, Type, Callable, Dict, Any, Union, Awaitable, TypeVar
10
10
  from pydantic import BaseModel
11
- from browser_use.controller.service import Controller
11
+ from browser_use.tools.service import Controller, Tools
12
12
  import logging
13
13
  from browser_use.agent.views import ActionModel, ActionResult
14
14
  from browser_use.utils import time_execution_sync
@@ -16,7 +16,7 @@ from browser_use.filesystem.file_system import FileSystem
16
16
  from browser_use.browser import BrowserSession
17
17
  from browser_use.browser.events import UploadFileEvent
18
18
  from browser_use.observability import observe_debug
19
- from browser_use.controller.views import (
19
+ from browser_use.tools.views import (
20
20
  ClickElementAction,
21
21
  CloseTabAction,
22
22
  DoneAction,
@@ -50,7 +50,7 @@ Context = TypeVar('Context')
50
50
  T = TypeVar('T', bound=BaseModel)
51
51
 
52
52
 
53
- class VibeSurfController(Controller):
53
+ class VibeSurfTools(Tools):
54
54
  def __init__(self,
55
55
  exclude_actions: list[str] = [],
56
56
  output_model: type[T] | None = None,
@@ -360,6 +360,11 @@ Provide the extracted information in a clear, structured format."""
360
360
 
361
361
  @self.registry.action('Read file_name from file system. If this is a file not in Current workspace dir or with a absolute path, Set external_file=True.')
362
362
  async def read_file(file_name: str, external_file: bool, file_system: FileSystem):
363
+ if not os.path.exists(file_name):
364
+ # if not exists, assume it is external_file
365
+ external_file = True
366
+ else:
367
+ external_file = False
363
368
  result = await file_system.read_file(file_name, external_file=external_file)
364
369
 
365
370
  MAX_MEMORY_SIZE = 1000
@@ -397,10 +402,10 @@ Provide the extracted information in a clear, structured format."""
397
402
  try:
398
403
  # Get file path
399
404
  file_path = params.file_path
400
-
405
+
401
406
  # Check if file exists
402
407
  if not os.path.exists(file_path):
403
- raise Exception(f'File not found: {file_path}')
408
+ file_path = os.path.join(file_system.get_dir(), file_path)
404
409
 
405
410
  # Determine if file is an image based on MIME type
406
411
  mime_type, _ = mimetypes.guess_type(file_path)
@@ -526,8 +531,8 @@ Provide the extracted information in a clear, structured format."""
526
531
 
527
532
  # Register tools to controller with prefix
528
533
  prefix = f"mcp.{server_name}."
529
- await client.register_to_controller(
530
- controller=self,
534
+ await client.register_to_tools(
535
+ tools=self,
531
536
  prefix=prefix
532
537
  )
533
538
 
@@ -573,44 +578,4 @@ Provide the extracted information in a clear, structured format."""
573
578
  self.mcp_clients.clear()
574
579
  logger.info('All MCP clients unregistered and disconnected')
575
580
 
576
- @observe_debug(ignore_input=True, ignore_output=True, name='act')
577
- @time_execution_sync('--act')
578
- async def act(
579
- self,
580
- action: ActionModel,
581
- browser_session: BrowserSession| None = None,
582
- #
583
- page_extraction_llm: BaseChatModel | None = None,
584
- sensitive_data: dict[str, str | dict[str, str]] | None = None,
585
- available_file_paths: list[str] | None = None,
586
- file_system: FileSystem | None = None,
587
- #
588
- context: Context | None = None,
589
- ) -> ActionResult:
590
- """Execute an action"""
591
-
592
- for action_name, params in action.model_dump(exclude_unset=True).items():
593
- if params is not None:
594
- try:
595
- result = await self.registry.execute_action(
596
- action_name=action_name,
597
- params=params,
598
- browser_session=browser_session,
599
- page_extraction_llm=page_extraction_llm,
600
- file_system=file_system,
601
- sensitive_data=sensitive_data,
602
- available_file_paths=available_file_paths,
603
- context=context,
604
- )
605
- except Exception as e:
606
- result = ActionResult(error=str(e))
607
-
608
- if isinstance(result, str):
609
- return ActionResult(extracted_content=result)
610
- elif isinstance(result, ActionResult):
611
- return result
612
- elif result is None:
613
- return ActionResult()
614
- else:
615
- raise ValueError(f'Invalid action result type: {type(result)} of {result}')
616
- return ActionResult()
581
+ VibeSurfController = VibeSurfTools
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: vibesurf
3
- Version: 0.1.7
3
+ Version: 0.1.8
4
4
  Summary: VibeSurf: A powerful browser assistant for vibe surfing
5
5
  Author: Shao Warm
6
6
  License: Apache-2.0
@@ -26,7 +26,7 @@ Requires-Dist: json-repair>=0.48.0
26
26
  Requires-Dist: aiohttp>=3.12.15
27
27
  Requires-Dist: scikit-image>=0.25.2
28
28
  Requires-Dist: python-socks>=2.7.2
29
- Requires-Dist: browser-use==0.6.1
29
+ Requires-Dist: browser-use==0.7.1
30
30
  Requires-Dist: langgraph>=0.6.4
31
31
  Requires-Dist: fastapi>=0.104.0
32
32
  Requires-Dist: uvicorn[standard]>=0.24.0
@@ -37,6 +37,7 @@ Requires-Dist: sqlalchemy>=2.0.43
37
37
  Requires-Dist: aiosqlite>=0.21.0
38
38
  Requires-Dist: rich>=13.0.0
39
39
  Requires-Dist: greenlet>=3.2.4
40
+ Requires-Dist: getmac>=0.9.5
40
41
  Dynamic: license-file
41
42
 
42
43
  # VibeSurf: A powerful browser assistant for vibe surfing
@@ -75,7 +76,7 @@ powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | ie
75
76
  ### Step 2: Setup and Install
76
77
  ```bash
77
78
  uv venv --python 3.12
78
- uv pip install vibesurf
79
+ uv pip install vibesurf -U
79
80
  ```
80
81
 
81
82
  ### Step 3: Launch
@@ -85,8 +86,12 @@ vibesurf
85
86
 
86
87
  ## 🎬 Demo
87
88
 
89
+ ### How to use?
88
90
  <video src="https://github.com/user-attachments/assets/0a4650c0-c4ed-423e-9e16-7889e9f9816d" controls="controls">Your browser does not support playing this video!</video>
89
91
 
92
+ ### Dozens of agent running in on browser
93
+ <video src="https://github.com/user-attachments/assets/9c461a6e-5d97-4335-ba09-59e8ec4ad47b" controls="controls">Your browser does not support playing this video!</video>
94
+
90
95
 
91
96
  ## 📝 License
92
97
 
@@ -1,16 +1,16 @@
1
1
  vibe_surf/__init__.py,sha256=WtduuMFGauMD_9dpk4fnRnLTAP6ka9Lfu0feAFNzLfo,339
2
- vibe_surf/_version.py,sha256=szvPIs2C82UunpzuvVg3MbF4QhzbBYTsVJ8DmPfq6_E,704
2
+ vibe_surf/_version.py,sha256=Zaz3s9gl_rzsS46-ymJOALojMxviW77EJq_agE8knLk,704
3
3
  vibe_surf/cli.py,sha256=Gy9a3JmfCdTTNJpM2-jc1fL2gczCWzqYXIZi8hngvgE,17109
4
4
  vibe_surf/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- vibe_surf/agents/browser_use_agent.py,sha256=NSSdZ9lnjtv_RyfR5Ay2rMnzJRJ-67S8Q3ytGAguiB0,50266
5
+ vibe_surf/agents/browser_use_agent.py,sha256=5NXZCQphHKlyNtLjhwG9ezBXFIo91ZnlFPRhUye7c3U,45202
6
6
  vibe_surf/agents/report_writer_agent.py,sha256=E5mSirewzH4Oyv385-Nn2Mf1Ug3OCVBz99PoTbvKRfQ,13860
7
- vibe_surf/agents/vibe_surf_agent.py,sha256=FxXQdIH1THJS7LcPdnw2nG2wWcX1YHpEGc7Op1dgfVA,70422
7
+ vibe_surf/agents/vibe_surf_agent.py,sha256=bl0Xl9Aw3qFvKGlWA6ctrWF5Y09DDadGfNaY524T_yQ,70370
8
8
  vibe_surf/agents/prompts/__init__.py,sha256=l4ieA0D8kLJthyNN85FKLNe4ExBa3stY3l-aImLDRD0,36
9
9
  vibe_surf/agents/prompts/vibe_surf_prompt.py,sha256=u-6KgLSnBbQohS5kiLZDcZ3aoT90ScVONXi9gNvdMoo,11006
10
10
  vibe_surf/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
11
  vibe_surf/backend/llm_config.py,sha256=9V8Gg065TQALbOKQnOqFWd8RzOJjegOD8w6YOf90Q7Y,5036
12
12
  vibe_surf/backend/main.py,sha256=Y1xZJNBjOhgOjNegmetZj9AGUIn2ft10FSCCvMl4XRo,4047
13
- vibe_surf/backend/shared_state.py,sha256=AJ_GU5krYBimWM0n0KTzJeNvm-jE4cqvLkwl91hjOKg,23140
13
+ vibe_surf/backend/shared_state.py,sha256=yTGyojod0k3Y4ZxtKr4l75ewLAyvnLtAR43nbbSCryU,23135
14
14
  vibe_surf/backend/api/__init__.py,sha256=XxF1jUOORpLYCfFuPrrnUGRnOrr6ClH0_MNPU-4RnSs,68
15
15
  vibe_surf/backend/api/activity.py,sha256=NRSTsN3JnE63kDFhfgH3rmC9qxAeIaMKUqbXrOuZlSQ,9364
16
16
  vibe_surf/backend/api/config.py,sha256=9yTip3L0dBCy8jP6MqbpX_hk1Zk8KYrR-W18R0i7wjI,27091
@@ -26,16 +26,16 @@ vibe_surf/backend/migrations/__init__.py,sha256=dLhZwW6AGyfBSid-QJPCpIlS4DnYDvO8
26
26
  vibe_surf/backend/migrations/init_db.py,sha256=pY2Yq7K1vPxqT8r3jlAQcYEQWK-GGbb0F7W5asGpuew,10399
27
27
  vibe_surf/backend/migrations/seed_data.py,sha256=L6Ll-u8P4cICAUlD5y9urQPSUld6M67erSBCEIdw8Uc,8239
28
28
  vibe_surf/backend/utils/__init__.py,sha256=V8leMFp7apAglUAoCHPZrNNcRHthSLYIudIJE5qwjb0,184
29
- vibe_surf/backend/utils/encryption.py,sha256=ppDRRsNX8pu9Or9yADcLS8KJUTm-edrSb-nZqVThNI0,4802
29
+ vibe_surf/backend/utils/encryption.py,sha256=JBl0olXQ-tESvZywuhGvy57soLhFw4ZKnbXWMWpgimg,3720
30
30
  vibe_surf/backend/utils/llm_factory.py,sha256=4oHaKpizqA069dcXm0iK5G1SS-fhhOY5l6cM3SCFmwE,9172
31
31
  vibe_surf/browser/__init__.py,sha256=_UToO2fZfSCrfjOcxhn4Qq7ZLbYeyPuUUEmqIva-Yv8,325
32
- vibe_surf/browser/agen_browser_profile.py,sha256=TPH2H7Og4OxDUnjNn1nNeIJ621H4Gws5c8jkFbvZoz0,5644
33
- vibe_surf/browser/agent_browser_session.py,sha256=-o24Y0BfjPBURuQDfKlCTpOHntjx8QxqxeKxgBxs0WY,19551
34
- vibe_surf/browser/browser_manager.py,sha256=0DUouEGNCuKHV0ytWPFiQgJ5whQIVAZEk-PMbd4hTx8,12297
35
- vibe_surf/browser/utils.py,sha256=0HsQkBJKVaEP7LORtZAhdYMZD5BK4poWav-BpfbHZrE,36048
32
+ vibe_surf/browser/agen_browser_profile.py,sha256=4H4qDjqLqHAfMi3niBI9fd0S1GlVDWYDUUOrEQoNkl8,5677
33
+ vibe_surf/browser/agent_browser_session.py,sha256=KGRl2AtNy0gt0Edfr9ShKqCb68qT4pT9jl0s5ZLN098,22250
34
+ vibe_surf/browser/browser_manager.py,sha256=38lF723AH44rBShl62P34GIDvxvcK4oy57IXyjqHDXs,12275
35
+ vibe_surf/browser/utils.py,sha256=Um_hTZgDH4gL-cCKSeUBMEqPLVForCMYp1nN7ugD5co,35704
36
36
  vibe_surf/browser/watchdogs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- vibe_surf/browser/watchdogs/action_watchdog.py,sha256=vmNt5iGCkWV9S6fryT14J6OvlzGwE9kbADJIc0HkB4E,14771
38
- vibe_surf/browser/watchdogs/dom_watchdog.py,sha256=XxhjQK7zQKBa1YVxvPZbgvGFeny1zUprvjCh5vRCdzk,45018
37
+ vibe_surf/browser/watchdogs/action_watchdog.py,sha256=6lM0nOR67clLzC6nVEMZ2Vam8VHDW8GRlg_jbGUHbPk,5297
38
+ vibe_surf/browser/watchdogs/dom_watchdog.py,sha256=leohqqM9loMbmqobtOMxPSsM2IrK9jyu-xYCSfXIiCA,13045
39
39
  vibe_surf/chrome_extension/background.js,sha256=P99qkisiN_Zsn8bu_9dWeXyK8CQthLD9FaGG2z1SMDU,16282
40
40
  vibe_surf/chrome_extension/config.js,sha256=g53UkfsaOFNC6fZG-THlBxdSjvswPsaQ9w8rxiHNq2E,1093
41
41
  vibe_surf/chrome_extension/content.js,sha256=q6JRpmHAEdPWNnFSIqoPv8eBm0T574c3H5hp-M4LYlc,8027
@@ -57,14 +57,14 @@ vibe_surf/chrome_extension/styles/main.css,sha256=Z5cIBkE6zJTQ2wvyhWXEqIubsMiwvn
57
57
  vibe_surf/chrome_extension/styles/settings.css,sha256=oKyLUiRsxW92f9VNkYwGkn7TNaXvjG0NPY2sxtYz5vo,20464
58
58
  vibe_surf/controller/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
59
  vibe_surf/controller/file_system.py,sha256=a2fXCzAhaC41qvV_bMLi9c50FmcFYjQ0nszSdKOdDrI,2637
60
- vibe_surf/controller/mcp_client.py,sha256=CHjRjk3tDLltTKIzdmPB5SYN5pfgnkEoIzofOc8mw_A,2643
61
- vibe_surf/controller/vibesurf_controller.py,sha256=UWz8SvOAHr9KG8tn4nTciZvt3JkxYlYIhocA36BKobI,28418
60
+ vibe_surf/controller/mcp_client.py,sha256=OjIxx49-XyNGk5wr58m2poT56DVpfkWrVaaeBVZqLY4,2415
61
+ vibe_surf/controller/vibesurf_tools.py,sha256=ynX-IWeFBIS2DzyYP1ZkFOM5nl5O2iTdB93HboOyxbs,26848
62
62
  vibe_surf/controller/views.py,sha256=BaPlvcHTy5h-Lfr0OSgR_t6ynitgzNQF4-VUJJt8Hi0,1072
63
63
  vibe_surf/llm/__init__.py,sha256=_vDVPo6STf343p1SgMQrF5023hicAx0g83pK2Gbk4Ek,601
64
64
  vibe_surf/llm/openai_compatible.py,sha256=oY32VZF4oDS6ZG0h1WGtqAlWzdlximlJVTw8e8p5Zrg,10175
65
- vibesurf-0.1.7.dist-info/licenses/LICENSE,sha256=czn6QYya0-jhLnStD9JqnMS-hwP5wRByipkrGTvoXLI,11355
66
- vibesurf-0.1.7.dist-info/METADATA,sha256=56ddydRqv231MzjI9JdxgGrPpzlpLkk427SYWAOSYBk,3851
67
- vibesurf-0.1.7.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
68
- vibesurf-0.1.7.dist-info/entry_points.txt,sha256=UxqpvMocL-PR33S6vLF2OmXn-kVzM-DneMeZeHcPMM8,48
69
- vibesurf-0.1.7.dist-info/top_level.txt,sha256=VPZGHqSb6EEqcJ4ZX6bHIuWfon5f6HXl3c7BYpbRqnY,10
70
- vibesurf-0.1.7.dist-info/RECORD,,
65
+ vibesurf-0.1.8.dist-info/licenses/LICENSE,sha256=czn6QYya0-jhLnStD9JqnMS-hwP5wRByipkrGTvoXLI,11355
66
+ vibesurf-0.1.8.dist-info/METADATA,sha256=RCQXq45W_9ZZzV8JIMsU45-LQjNZ2jNHFHFfwnw-mJM,4113
67
+ vibesurf-0.1.8.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
68
+ vibesurf-0.1.8.dist-info/entry_points.txt,sha256=UxqpvMocL-PR33S6vLF2OmXn-kVzM-DneMeZeHcPMM8,48
69
+ vibesurf-0.1.8.dist-info/top_level.txt,sha256=VPZGHqSb6EEqcJ4ZX6bHIuWfon5f6HXl3c7BYpbRqnY,10
70
+ vibesurf-0.1.8.dist-info/RECORD,,