vibesurf 0.1.18__tar.gz → 0.1.20__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.
- {vibesurf-0.1.18 → vibesurf-0.1.20}/.env.example +2 -2
- {vibesurf-0.1.18 → vibesurf-0.1.20}/PKG-INFO +3 -2
- {vibesurf-0.1.18 → vibesurf-0.1.20}/pyproject.toml +2 -1
- vibesurf-0.1.20/tests/test_voice_api.py +26 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/_version.py +3 -3
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/agents/report_writer_agent.py +1 -1
- vibesurf-0.1.20/vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql +11 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/sidepanel.html +17 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/layout.css +55 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/tools/file_system.py +8 -0
- vibesurf-0.1.20/vibe_surf/tools/voice_asr.py +54 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibesurf.egg-info/PKG-INFO +3 -2
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibesurf.egg-info/SOURCES.txt +5 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibesurf.egg-info/requires.txt +2 -1
- {vibesurf-0.1.18 → vibesurf-0.1.20}/.github/workflows/publish.yml +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/.gitignore +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/.python-version +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/LICENSE +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/MANIFEST.in +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/README.md +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/docs/EXECUTABLE_BUILD.md +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/docs/PYPI_SETUP.md +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/scripts/build-local.bat +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/scripts/build-local.sh +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/setup.cfg +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/tests/test_agents.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/tests/test_backend_api.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/tests/test_browser.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/tests/test_tools.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/agents/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/agents/browser_use_agent.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/agents/prompts/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/agents/prompts/report_writer_prompt.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/agents/prompts/vibe_surf_prompt.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/agents/vibe_surf_agent.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/agents/views.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/api/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/api/activity.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/api/browser.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/api/config.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/api/files.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/api/models.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/api/task.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/manager.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/migrations/v001_initial_schema.sql +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/migrations/v002_add_agent_mode.sql +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/models.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/queries.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/schemas.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/llm_config.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/main.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/shared_state.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/utils/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/utils/encryption.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/utils/llm_factory.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/browser/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/browser/agen_browser_profile.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/browser/agent_browser_session.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/browser/browser_manager.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/browser/utils.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/browser/watchdogs/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/browser/watchdogs/action_watchdog.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/browser/watchdogs/dom_watchdog.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/background.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/config.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/content.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/dev-reload.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/icons/convert-svg.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/icons/logo-preview.html +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/icons/logo.icns +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/icons/logo.png +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/manifest.json +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/popup.html +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/api-client.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/file-manager.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/history-manager.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/main.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/markdown-it.min.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/modal-manager.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/session-manager.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/settings-manager.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/scripts/ui-manager.js +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/activity.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/animations.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/base.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/components.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/history-modal.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/input.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/responsive.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-environment.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-forms.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-modal.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-profiles.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-responsive.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-utilities.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/variables.css +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/cli.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/common.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/llm/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/llm/openai_compatible.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/logger.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/tools/__init__.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/tools/browser_use_tools.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/tools/mcp_client.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/tools/report_writer_tools.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/tools/vibesurf_tools.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/tools/views.py +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibesurf.egg-info/dependency_links.txt +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibesurf.egg-info/entry_points.txt +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibesurf.egg-info/top_level.txt +0 -0
- {vibesurf-0.1.18 → vibesurf-0.1.20}/vibesurf.spec +0 -0
|
@@ -18,8 +18,8 @@ MISTRAL_ENDPOINT=https://api.mistral.ai/v1
|
|
|
18
18
|
|
|
19
19
|
OLLAMA_ENDPOINT=http://localhost:11434
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
DASHSCOPE_ENDPOINT=https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
22
|
+
DASHSCOPE_API_KEY=
|
|
23
23
|
|
|
24
24
|
MOONSHOT_ENDPOINT=https://api.moonshot.cn/v1
|
|
25
25
|
MOONSHOT_API_KEY=
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vibesurf
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.20
|
|
4
4
|
Summary: VibeSurf: A powerful browser assistant for vibe surfing
|
|
5
5
|
Author: Shao Warm
|
|
6
6
|
License: Apache-2.0
|
|
@@ -37,11 +37,12 @@ Requires-Dist: aiosqlite>=0.21.0
|
|
|
37
37
|
Requires-Dist: rich>=13.0.0
|
|
38
38
|
Requires-Dist: greenlet>=3.2.4
|
|
39
39
|
Requires-Dist: getmac>=0.9.5
|
|
40
|
-
Requires-Dist: browser-use==0.7.
|
|
40
|
+
Requires-Dist: browser-use==0.7.8
|
|
41
41
|
Requires-Dist: markdown-pdf>=1.9
|
|
42
42
|
Requires-Dist: nanoid>=2.0.0
|
|
43
43
|
Requires-Dist: markdownify>=1.2.0
|
|
44
44
|
Requires-Dist: pathvalidate>=3.3.1
|
|
45
|
+
Requires-Dist: dashscope>=1.24.5
|
|
45
46
|
Dynamic: license-file
|
|
46
47
|
|
|
47
48
|
# VibeSurf: A powerful browser assistant for vibe surfing
|
|
@@ -38,11 +38,12 @@ dependencies = [
|
|
|
38
38
|
"rich>=13.0.0",
|
|
39
39
|
"greenlet>=3.2.4",
|
|
40
40
|
"getmac>=0.9.5",
|
|
41
|
-
"browser-use==0.7.
|
|
41
|
+
"browser-use==0.7.8",
|
|
42
42
|
"markdown-pdf>=1.9",
|
|
43
43
|
"nanoid>=2.0.0",
|
|
44
44
|
"markdownify>=1.2.0",
|
|
45
45
|
"pathvalidate>=3.3.1",
|
|
46
|
+
"dashscope>=1.24.5",
|
|
46
47
|
]
|
|
47
48
|
|
|
48
49
|
[project.urls]
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import pdb
|
|
3
|
+
import time
|
|
4
|
+
import random
|
|
5
|
+
import dashscope
|
|
6
|
+
import sys
|
|
7
|
+
|
|
8
|
+
sys.path.append(".")
|
|
9
|
+
|
|
10
|
+
from dotenv import load_dotenv
|
|
11
|
+
|
|
12
|
+
load_dotenv()
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
async def test_qwen3_asr_flash():
|
|
16
|
+
from vibe_surf.tools.voice_asr import QwenASR
|
|
17
|
+
|
|
18
|
+
qwen_asr = QwenASR(model="qwen3-asr-flash")
|
|
19
|
+
asr_text = qwen_asr.asr(wav_url="/Users/warmshao/Downloads/qiji-10s.mp3")
|
|
20
|
+
print(asr_text)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
if __name__ == "__main__":
|
|
24
|
+
import asyncio
|
|
25
|
+
|
|
26
|
+
asyncio.run(test_qwen3_asr_flash())
|
|
@@ -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.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
31
|
+
__version__ = version = '0.1.20'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 1, 20)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g073ae79d6'
|
|
@@ -136,7 +136,7 @@ class ReportWriterAgent:
|
|
|
136
136
|
create_result = await self.file_system.create_file(report_filename)
|
|
137
137
|
logger.info(f"Created report file: {create_result}")
|
|
138
138
|
|
|
139
|
-
max_iterations =
|
|
139
|
+
max_iterations = 10 # Prevent infinite loops
|
|
140
140
|
|
|
141
141
|
# Add system message with unified prompt only if message history is empty
|
|
142
142
|
if not self.message_history:
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
-- Migration: v003_fix_task_status_case.sql
|
|
2
|
+
-- Description: Fix task status values to use lowercase (enum values)
|
|
3
|
+
-- Version: 0.0.3
|
|
4
|
+
|
|
5
|
+
-- Update any uppercase status values to lowercase to match TaskStatus enum
|
|
6
|
+
UPDATE tasks SET status = 'pending' WHERE status = 'PENDING';
|
|
7
|
+
UPDATE tasks SET status = 'running' WHERE status = 'RUNNING';
|
|
8
|
+
UPDATE tasks SET status = 'paused' WHERE status = 'PAUSED';
|
|
9
|
+
UPDATE tasks SET status = 'completed' WHERE status = 'COMPLETED';
|
|
10
|
+
UPDATE tasks SET status = 'failed' WHERE status = 'FAILED';
|
|
11
|
+
UPDATE tasks SET status = 'stopped' WHERE status = 'STOPPED';
|
|
@@ -36,6 +36,23 @@
|
|
|
36
36
|
<div class="logo-brand">
|
|
37
37
|
<img src="icons/logo.png" alt="VibeSurf" class="logo-image">
|
|
38
38
|
<span class="logo-text">VibeSurf</span>
|
|
39
|
+
<div class="social-links">
|
|
40
|
+
<a href="https://github.com/vvincent1234/VibeSurf" class="social-link" title="GitHub" data-platform="github" target="_blank" rel="noopener noreferrer">
|
|
41
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
42
|
+
<path d="M12 0C5.374 0 0 5.373 0 12c0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z" fill="currentColor"/>
|
|
43
|
+
</svg>
|
|
44
|
+
</a>
|
|
45
|
+
<a href="https://discord.gg/WSeRwW2M" class="social-link" title="Discord" data-platform="discord" target="_blank" rel="noopener noreferrer">
|
|
46
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
47
|
+
<path d="M20.317 4.37a19.791 19.791 0 00-4.885-1.515.074.074 0 00-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 00-5.487 0 12.64 12.64 0 00-.617-1.25.077.077 0 00-.079-.037A19.736 19.736 0 003.677 4.37a.07.07 0 00-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 00.031.057 19.9 19.9 0 005.993 3.03.078.078 0 00.084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 00-.041-.106 13.107 13.107 0 01-1.872-.892.077.077 0 01-.008-.128 10.2 10.2 0 00.372-.292.074.074 0 01.077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 01.078.01c.12.098.246.198.373.292a.077.077 0 01-.006.127 12.299 12.299 0 01-1.873.892.077.077 0 00-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 00.084.028 19.839 19.839 0 006.002-3.03.077.077 0 00.032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 00-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418z" fill="currentColor"/>
|
|
48
|
+
</svg>
|
|
49
|
+
</a>
|
|
50
|
+
<a href="https://x.com/warmshao" class="social-link" title="X (Twitter)" data-platform="x" target="_blank" rel="noopener noreferrer">
|
|
51
|
+
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
52
|
+
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" fill="currentColor"/>
|
|
53
|
+
</svg>
|
|
54
|
+
</a>
|
|
55
|
+
</div>
|
|
39
56
|
</div>
|
|
40
57
|
<div class="session-info">
|
|
41
58
|
<span class="session-label">Session:</span>
|
|
@@ -43,6 +43,61 @@
|
|
|
43
43
|
font-weight: var(--font-weight-semibold);
|
|
44
44
|
}
|
|
45
45
|
|
|
46
|
+
/* Social Links */
|
|
47
|
+
.social-links {
|
|
48
|
+
display: flex;
|
|
49
|
+
align-items: center;
|
|
50
|
+
gap: var(--spacing-xs);
|
|
51
|
+
margin-left: var(--spacing-sm);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.social-link {
|
|
55
|
+
display: flex;
|
|
56
|
+
align-items: center;
|
|
57
|
+
justify-content: center;
|
|
58
|
+
width: 20px;
|
|
59
|
+
height: 20px;
|
|
60
|
+
border-radius: var(--radius-sm);
|
|
61
|
+
color: var(--text-muted);
|
|
62
|
+
text-decoration: none;
|
|
63
|
+
transition: all var(--transition-fast);
|
|
64
|
+
opacity: 0.7;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.social-link:hover {
|
|
68
|
+
color: var(--text-secondary);
|
|
69
|
+
background-color: var(--bg-hover);
|
|
70
|
+
opacity: 1;
|
|
71
|
+
transform: scale(1.1);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.social-link:active {
|
|
75
|
+
transform: scale(0.95);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
.social-link[data-platform="github"]:hover {
|
|
79
|
+
color: #333;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
.social-link[data-platform="discord"]:hover {
|
|
83
|
+
color: #5865F2;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
.social-link[data-platform="x"]:hover {
|
|
87
|
+
color: #000;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/* Dark mode adjustments for social links */
|
|
91
|
+
@media (prefers-color-scheme: dark) {
|
|
92
|
+
.social-link[data-platform="github"]:hover {
|
|
93
|
+
color: #f0f6fc;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.social-link[data-platform="x"]:hover {
|
|
97
|
+
color: #fff;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
46
101
|
.logo-image {
|
|
47
102
|
width: 24px;
|
|
48
103
|
height: 24px;
|
|
@@ -311,6 +311,14 @@ class CustomFileSystem(FileSystem):
|
|
|
311
311
|
except Exception as e:
|
|
312
312
|
return f"Error: Could not write to file '{full_filename}'. {str(e)}"
|
|
313
313
|
|
|
314
|
+
async def save_extracted_content(self, content: str) -> str:
|
|
315
|
+
"""Save extracted content to a numbered file"""
|
|
316
|
+
initial_filename = f'extracted_content_{self.extracted_content_count}'
|
|
317
|
+
extracted_filename = f'{initial_filename}.md'
|
|
318
|
+
await self.write_file(initial_filename, content)
|
|
319
|
+
self.extracted_content_count += 1
|
|
320
|
+
return f'Extracted content saved to file {extracted_filename} successfully.'
|
|
321
|
+
|
|
314
322
|
async def list_directory(self, directory_path: str = "") -> str:
|
|
315
323
|
"""List contents of a directory within the file system (data_dir only)"""
|
|
316
324
|
try:
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import pdb
|
|
3
|
+
|
|
4
|
+
import dashscope
|
|
5
|
+
from typing import Optional
|
|
6
|
+
from vibe_surf.logger import get_logger
|
|
7
|
+
|
|
8
|
+
logger = get_logger(__name__)
|
|
9
|
+
|
|
10
|
+
class QwenASR:
|
|
11
|
+
def __init__(self, model="qwen3-asr-flash", api_key: Optional[str] = None):
|
|
12
|
+
dashscope.api_key = api_key or os.getenv("DASHSCOPE_API_KEY")
|
|
13
|
+
self.model = model
|
|
14
|
+
|
|
15
|
+
def asr(self, wav_url: str, context=""):
|
|
16
|
+
if not wav_url.startswith("http"):
|
|
17
|
+
assert os.path.exists(wav_url), f"{wav_url} not exists!"
|
|
18
|
+
wav_url = f"file://{wav_url}"
|
|
19
|
+
|
|
20
|
+
try:
|
|
21
|
+
messages = [
|
|
22
|
+
{
|
|
23
|
+
"role": "system",
|
|
24
|
+
"content": [
|
|
25
|
+
{"text": context},
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
"role": "user",
|
|
30
|
+
"content": [
|
|
31
|
+
{"audio": wav_url},
|
|
32
|
+
]
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
response = dashscope.MultiModalConversation.call(
|
|
36
|
+
model=self.model,
|
|
37
|
+
messages=messages,
|
|
38
|
+
result_format="message",
|
|
39
|
+
asr_options={
|
|
40
|
+
"enable_lid": True,
|
|
41
|
+
"enable_itn": False
|
|
42
|
+
}
|
|
43
|
+
)
|
|
44
|
+
if response.status_code != 200:
|
|
45
|
+
raise Exception(f"http status_code: {response.status_code} {response}")
|
|
46
|
+
output = response['output']['choices'][0]
|
|
47
|
+
if output['finish_reason'] not in ('stop', 'function_call'):
|
|
48
|
+
logger.warning(f'{self.model} finish with error...\n{response}')
|
|
49
|
+
return ""
|
|
50
|
+
recog_text = output["message"]["content"][0]["text"]
|
|
51
|
+
return recog_text
|
|
52
|
+
except Exception as e:
|
|
53
|
+
logger.warning(str(e))
|
|
54
|
+
return ""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: vibesurf
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.20
|
|
4
4
|
Summary: VibeSurf: A powerful browser assistant for vibe surfing
|
|
5
5
|
Author: Shao Warm
|
|
6
6
|
License: Apache-2.0
|
|
@@ -37,11 +37,12 @@ Requires-Dist: aiosqlite>=0.21.0
|
|
|
37
37
|
Requires-Dist: rich>=13.0.0
|
|
38
38
|
Requires-Dist: greenlet>=3.2.4
|
|
39
39
|
Requires-Dist: getmac>=0.9.5
|
|
40
|
-
Requires-Dist: browser-use==0.7.
|
|
40
|
+
Requires-Dist: browser-use==0.7.8
|
|
41
41
|
Requires-Dist: markdown-pdf>=1.9
|
|
42
42
|
Requires-Dist: nanoid>=2.0.0
|
|
43
43
|
Requires-Dist: markdownify>=1.2.0
|
|
44
44
|
Requires-Dist: pathvalidate>=3.3.1
|
|
45
|
+
Requires-Dist: dashscope>=1.24.5
|
|
45
46
|
Dynamic: license-file
|
|
46
47
|
|
|
47
48
|
# VibeSurf: A powerful browser assistant for vibe surfing
|
|
@@ -37,6 +37,7 @@ vibesurf.spec
|
|
|
37
37
|
./vibe_surf/backend/database/schemas.py
|
|
38
38
|
./vibe_surf/backend/database/migrations/v001_initial_schema.sql
|
|
39
39
|
./vibe_surf/backend/database/migrations/v002_add_agent_mode.sql
|
|
40
|
+
./vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql
|
|
40
41
|
./vibe_surf/backend/utils/__init__.py
|
|
41
42
|
./vibe_surf/backend/utils/encryption.py
|
|
42
43
|
./vibe_surf/backend/utils/llm_factory.py
|
|
@@ -92,6 +93,7 @@ vibesurf.spec
|
|
|
92
93
|
./vibe_surf/tools/report_writer_tools.py
|
|
93
94
|
./vibe_surf/tools/vibesurf_tools.py
|
|
94
95
|
./vibe_surf/tools/views.py
|
|
96
|
+
./vibe_surf/tools/voice_asr.py
|
|
95
97
|
.github/workflows/publish.yml
|
|
96
98
|
docs/EXECUTABLE_BUILD.md
|
|
97
99
|
docs/PYPI_SETUP.md
|
|
@@ -101,6 +103,7 @@ tests/test_agents.py
|
|
|
101
103
|
tests/test_backend_api.py
|
|
102
104
|
tests/test_browser.py
|
|
103
105
|
tests/test_tools.py
|
|
106
|
+
tests/test_voice_api.py
|
|
104
107
|
vibe_surf/__init__.py
|
|
105
108
|
vibe_surf/cli.py
|
|
106
109
|
vibe_surf/common.py
|
|
@@ -131,6 +134,7 @@ vibe_surf/backend/database/queries.py
|
|
|
131
134
|
vibe_surf/backend/database/schemas.py
|
|
132
135
|
vibe_surf/backend/database/migrations/v001_initial_schema.sql
|
|
133
136
|
vibe_surf/backend/database/migrations/v002_add_agent_mode.sql
|
|
137
|
+
vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql
|
|
134
138
|
vibe_surf/backend/utils/__init__.py
|
|
135
139
|
vibe_surf/backend/utils/encryption.py
|
|
136
140
|
vibe_surf/backend/utils/llm_factory.py
|
|
@@ -186,6 +190,7 @@ vibe_surf/tools/mcp_client.py
|
|
|
186
190
|
vibe_surf/tools/report_writer_tools.py
|
|
187
191
|
vibe_surf/tools/vibesurf_tools.py
|
|
188
192
|
vibe_surf/tools/views.py
|
|
193
|
+
vibe_surf/tools/voice_asr.py
|
|
189
194
|
vibesurf.egg-info/PKG-INFO
|
|
190
195
|
vibesurf.egg-info/SOURCES.txt
|
|
191
196
|
vibesurf.egg-info/dependency_links.txt
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/migrations/v001_initial_schema.sql
RENAMED
|
File without changes
|
{vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/backend/database/migrations/v002_add_agent_mode.sql
RENAMED
|
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
|
|
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
|
|
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
|
{vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-environment.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-responsive.css
RENAMED
|
File without changes
|
{vibesurf-0.1.18 → vibesurf-0.1.20}/vibe_surf/chrome_extension/styles/settings-utilities.css
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|