vibesurf 0.1.25__tar.gz → 0.1.26__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.25 → vibesurf-0.1.26}/PKG-INFO +1 -1
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/_version.py +3 -3
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/task.py +1 -1
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/queries.py +2 -2
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/utils/llm_factory.py +1 -1
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/cli.py +1 -1
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/llm/openai_compatible.py +1 -1
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/vibesurf_tools.py +38 -18
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibesurf.egg-info/PKG-INFO +1 -1
- {vibesurf-0.1.25 → vibesurf-0.1.26}/.env.example +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/.github/workflows/publish.yml +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/.gitignore +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/.python-version +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/LICENSE +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/MANIFEST.in +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/README.md +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/docs/EXECUTABLE_BUILD.md +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/docs/PYPI_SETUP.md +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/pyproject.toml +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/scripts/build-local.bat +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/scripts/build-local.sh +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/setup.cfg +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/tests/test_agents.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/tests/test_backend_api.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/tests/test_browser.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/tests/test_tools.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/tests/test_voice_api.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/agents/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/agents/browser_use_agent.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/agents/prompts/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/agents/prompts/report_writer_prompt.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/agents/prompts/vibe_surf_prompt.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/agents/report_writer_agent.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/agents/vibe_surf_agent.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/agents/views.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/activity.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/agent.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/browser.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/config.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/files.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/models.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/api/voices.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/manager.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/migrations/v001_initial_schema.sql +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/migrations/v002_add_agent_mode.sql +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/migrations/v003_fix_task_status_case.sql +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/migrations/v004_add_voice_profiles.sql +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/models.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/database/schemas.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/llm_config.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/main.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/shared_state.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/utils/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/utils/encryption.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/backend/voice_model_config.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/browser/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/browser/agen_browser_profile.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/browser/agent_browser_session.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/browser/browser_manager.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/browser/utils.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/browser/watchdogs/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/browser/watchdogs/action_watchdog.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/browser/watchdogs/dom_watchdog.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/background.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/config.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/content.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/dev-reload.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/icons/logo.icns +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/icons/logo.png +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/manifest.json +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/permission-iframe.html +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/permission-request.html +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/popup.html +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/api-client.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/file-manager.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/history-manager.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/main.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/markdown-it.min.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/modal-manager.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/permission-iframe-request.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/permission-request.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/session-manager.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/settings-manager.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/ui-manager.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/user-settings-storage.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/voice-recorder.js +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/sidepanel.html +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/activity.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/animations.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/base.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/components.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/history-modal.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/input.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/layout.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/responsive.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/settings-environment.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/settings-forms.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/settings-modal.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/settings-profiles.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/settings-responsive.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/settings-utilities.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/variables.css +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/common.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/llm/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/logger.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/__init__.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/browser_use_tools.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/file_system.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/finance_tools.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/mcp_client.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/report_writer_tools.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/vibesurf_registry.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/views.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/tools/voice_asr.py +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibesurf.egg-info/SOURCES.txt +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibesurf.egg-info/dependency_links.txt +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibesurf.egg-info/entry_points.txt +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibesurf.egg-info/requires.txt +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibesurf.egg-info/top_level.txt +0 -0
- {vibesurf-0.1.25 → vibesurf-0.1.26}/vibesurf.spec +0 -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.
|
|
32
|
-
__version_tuple__ = version_tuple = (0, 1,
|
|
31
|
+
__version__ = version = '0.1.26'
|
|
32
|
+
__version_tuple__ = version_tuple = (0, 1, 26)
|
|
33
33
|
|
|
34
|
-
__commit_id__ = commit_id = '
|
|
34
|
+
__commit_id__ = commit_id = 'g98ca63073'
|
|
@@ -104,7 +104,7 @@ async def submit_task(
|
|
|
104
104
|
logger.info("Using default empty MCP server configuration")
|
|
105
105
|
|
|
106
106
|
# DEBUG: Log the type and content of mcp_server_config
|
|
107
|
-
logger.
|
|
107
|
+
logger.debug(f"mcp_server_config type: {type(mcp_server_config)}, value: {mcp_server_config}")
|
|
108
108
|
|
|
109
109
|
# Create initial task record in database
|
|
110
110
|
from ..database.queries import TaskQueries
|
|
@@ -486,13 +486,13 @@ class TaskQueries:
|
|
|
486
486
|
return existing_task
|
|
487
487
|
else:
|
|
488
488
|
# DEBUG: Log the type and content of mcp_server_config before saving
|
|
489
|
-
logger.
|
|
489
|
+
logger.debug(
|
|
490
490
|
f"Creating task with mcp_server_config type: {type(mcp_server_config)}, value: {mcp_server_config}")
|
|
491
491
|
|
|
492
492
|
# Serialize mcp_server_config to JSON string if it's a dict
|
|
493
493
|
if isinstance(mcp_server_config, dict):
|
|
494
494
|
mcp_server_config_json = json.dumps(mcp_server_config)
|
|
495
|
-
logger.
|
|
495
|
+
logger.debug(f"Converted dict to JSON string: {mcp_server_config_json}")
|
|
496
496
|
else:
|
|
497
497
|
mcp_server_config_json = mcp_server_config
|
|
498
498
|
|
|
@@ -58,7 +58,7 @@ def create_llm_from_profile(llm_profile) -> BaseChatModel:
|
|
|
58
58
|
"deepseek": ["temperature"],
|
|
59
59
|
"aws_bedrock": ["temperature"],
|
|
60
60
|
"anthropic_bedrock": ["temperature"],
|
|
61
|
-
"openai_compatible": ["temperature"]
|
|
61
|
+
"openai_compatible": ["temperature", "max_tokens"]
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
# Build common parameters based on provider support
|
|
@@ -325,7 +325,7 @@ def start_backend(port: int) -> None:
|
|
|
325
325
|
console.print("[yellow]📝 Press Ctrl+C to stop the server[/yellow]\n")
|
|
326
326
|
|
|
327
327
|
# Run the server
|
|
328
|
-
uvicorn.run(app, host="127.0.0.1", port=port, log_level="
|
|
328
|
+
uvicorn.run(app, host="127.0.0.1", port=port, log_level="error")
|
|
329
329
|
|
|
330
330
|
except KeyboardInterrupt:
|
|
331
331
|
console.print("\n[yellow]🛑 Server stopped by user[/yellow]")
|
|
@@ -76,7 +76,7 @@ class ChatOpenAICompatible(ChatOpenAI):
|
|
|
76
76
|
The class automatically detects the model type and applies appropriate fixes.
|
|
77
77
|
"""
|
|
78
78
|
|
|
79
|
-
max_completion_tokens: int | None =
|
|
79
|
+
max_completion_tokens: int | None = 8192
|
|
80
80
|
|
|
81
81
|
def _is_gemini_model(self) -> bool:
|
|
82
82
|
"""Check if the current model is a Gemini model."""
|
|
@@ -231,7 +231,9 @@ Example format: ["query 1", "query 2", "query 3", "query 4", "query 5", "query 6
|
|
|
231
231
|
# Fallback to simple queries if parsing fails
|
|
232
232
|
try:
|
|
233
233
|
from json_repair import repair_json
|
|
234
|
-
|
|
234
|
+
search_queries_s = repair_json(response.completion.strip())
|
|
235
|
+
search_queries = json.loads(search_queries_s)
|
|
236
|
+
search_queries = search_queries[:query_num]
|
|
235
237
|
except Exception as e:
|
|
236
238
|
search_queries = [
|
|
237
239
|
params.query,
|
|
@@ -244,7 +246,7 @@ Example format: ["query 1", "query 2", "query 3", "query 4", "query 5", "query 6
|
|
|
244
246
|
# Step 2: Create browser sessions for parallel searching
|
|
245
247
|
register_sessions = []
|
|
246
248
|
|
|
247
|
-
for i, query in enumerate(search_queries):
|
|
249
|
+
for i, query in enumerate(search_queries[:query_num]):
|
|
248
250
|
agent_id = f"search_agent_{i + 1:03d}"
|
|
249
251
|
register_sessions.append(
|
|
250
252
|
browser_manager.register_agent(agent_id, target_id=None)
|
|
@@ -278,41 +280,59 @@ Example format: ["query 1", "query 2", "query 3", "query 4", "query 5", "query 6
|
|
|
278
280
|
# Step 5: Use LLM only for final ranking and selection (much smaller dataset now)
|
|
279
281
|
if all_results and len(all_results) > 10:
|
|
280
282
|
# Only use LLM if we have more than 10 results to rank
|
|
283
|
+
# Create indexed results for LLM prompt
|
|
284
|
+
indexed_results = []
|
|
285
|
+
for i, result in enumerate(all_results):
|
|
286
|
+
indexed_results.append({
|
|
287
|
+
"index": i,
|
|
288
|
+
"title": result.get('title', 'Unknown Title'),
|
|
289
|
+
"url": result.get('url', 'No URL'),
|
|
290
|
+
"summary": result.get('summary', 'No summary available')
|
|
291
|
+
})
|
|
292
|
+
|
|
281
293
|
ranking_prompt = f"""
|
|
282
294
|
Rank these search results for the query "{params.query}" by relevance and value.
|
|
283
295
|
Select the TOP 10 most relevant and valuable results.
|
|
284
296
|
|
|
285
|
-
Search Results ({len(
|
|
286
|
-
{json.dumps(
|
|
297
|
+
Search Results ({len(indexed_results)} total):
|
|
298
|
+
{json.dumps(indexed_results, indent=2, ensure_ascii=False)}
|
|
287
299
|
|
|
288
|
-
Return the top 10 results as a JSON array
|
|
289
|
-
|
|
290
|
-
- url: string
|
|
291
|
-
- summary: string (brief description of why this result is valuable)
|
|
300
|
+
Return ONLY the indices of the top 10 results as a JSON array of numbers.
|
|
301
|
+
For example: [0, 5, 2, 8, 1, 9, 3, 7, 4, 6]
|
|
292
302
|
|
|
293
|
-
Format: [
|
|
303
|
+
Format: [index1, index2, index3, ...]
|
|
294
304
|
"""
|
|
295
305
|
|
|
296
306
|
ranking_response = await llm.ainvoke([
|
|
297
307
|
SystemMessage(
|
|
298
|
-
content="You are an expert at ranking search results for relevance and value."),
|
|
308
|
+
content="You are an expert at ranking search results for relevance and value. Return only the indices of the top results."),
|
|
299
309
|
UserMessage(content=ranking_prompt)
|
|
300
310
|
])
|
|
301
311
|
|
|
302
312
|
try:
|
|
303
|
-
|
|
304
|
-
if not isinstance(
|
|
313
|
+
selected_indices = json.loads(ranking_response.completion.strip())
|
|
314
|
+
if not isinstance(selected_indices, list):
|
|
305
315
|
raise ValueError("Invalid ranking results format")
|
|
306
|
-
|
|
316
|
+
# Ensure indices are valid and limit to 10
|
|
317
|
+
valid_indices = [i for i in selected_indices if isinstance(i, int) and 0 <= i < len(all_results)][:10]
|
|
318
|
+
if valid_indices:
|
|
319
|
+
top_results = [all_results[i] for i in valid_indices]
|
|
320
|
+
else:
|
|
321
|
+
top_results = all_results[:10]
|
|
307
322
|
except (json.JSONDecodeError, ValueError):
|
|
308
323
|
try:
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
324
|
+
selected_indices_s = repair_json(ranking_response.completion.strip())
|
|
325
|
+
selected_indices = json.loads(selected_indices_s)
|
|
326
|
+
if isinstance(selected_indices, list):
|
|
327
|
+
valid_indices = [i for i in selected_indices if isinstance(i, int) and 0 <= i < len(all_results)][:10]
|
|
328
|
+
if valid_indices:
|
|
329
|
+
top_results = [all_results[i] for i in valid_indices]
|
|
330
|
+
else:
|
|
331
|
+
top_results = all_results[:10]
|
|
312
332
|
else:
|
|
313
333
|
top_results = all_results[:10]
|
|
314
334
|
except Exception:
|
|
315
|
-
# Fallback to first 10
|
|
335
|
+
# Fallback to first 10 results
|
|
316
336
|
top_results = all_results[:10]
|
|
317
337
|
elif all_results:
|
|
318
338
|
# If we have 10 or fewer results, skip LLM ranking
|
|
@@ -1075,7 +1095,7 @@ Please generate alternative JavaScript code that avoids this system error:"""
|
|
|
1075
1095
|
results = await self._extract_google_results_rule_based(browser_session)
|
|
1076
1096
|
if results and len(results) > 0:
|
|
1077
1097
|
# Rule-based extraction succeeded
|
|
1078
|
-
logger.
|
|
1098
|
+
logger.debug(f"Rule-based extraction found {len(results)} results for query: {query}")
|
|
1079
1099
|
return results[:search_ret_len] # Return top 6 results
|
|
1080
1100
|
|
|
1081
1101
|
# Fallback to LLM extraction if rule-based fails
|
|
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.25 → vibesurf-0.1.26}/vibe_surf/backend/database/migrations/v001_initial_schema.sql
RENAMED
|
File without changes
|
{vibesurf-0.1.25 → vibesurf-0.1.26}/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
|
{vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/permission-iframe-request.js
RENAMED
|
File without changes
|
{vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/permission-request.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/scripts/user-settings-storage.js
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
|
{vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/settings-environment.css
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{vibesurf-0.1.25 → vibesurf-0.1.26}/vibe_surf/chrome_extension/styles/settings-responsive.css
RENAMED
|
File without changes
|
{vibesurf-0.1.25 → vibesurf-0.1.26}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|