mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-25 19:20:16 +00:00
f14280e2c4
When a user switched profiles and created a new session, the session was saved to the default profile directory instead of the active profile directory — because get_hermes_home_for_profile() silently fell back to _DEFAULT_HERMES_HOME when the profile directory didn't exist yet on disk. Root cause: api/profiles.py:156 had `if profile_dir.is_dir(): return profile_dir; return _DEFAULT_HERMES_HOME`. New profiles (no session yet, so no dir) routed every session back to default. Fix: remove the is_dir() guard, return the profile path unconditionally. The profile directory is created on first use by the agent/session layer. 5 regression tests in tests/test_issue1195_session_profile_routing.py: existing-profile, non-existent-profile (the core fix), None, empty- string, 'default' all return the expected path. Co-authored-by: bergeouss <bergeouss@users.noreply.github.com>
24 lines
1.1 KiB
Markdown
24 lines
1.1 KiB
Markdown
# Upstream Issues — Root Cause Analysis
|
|
|
|
## #1256: Browser tools fail with "Playwright not installed"
|
|
|
|
### Root Cause
|
|
The check lives in **hermes-agent** (upstream), not hermes-webui:
|
|
|
|
```
|
|
hermes-agent/tools/browser_tool.py → check_browser_requirements()
|
|
```
|
|
|
|
`check_browser_requirements()` does not recognize CDP (Chrome DevTools Protocol) mode — it only looks for a local Playwright/Puppeteer install. When the agent runs in CDP mode (connecting to an existing browser), the check still fails.
|
|
|
|
### WebUI side
|
|
The WebUI already passes `CLI_TOOLSETS` correctly per-request. The `enabled_toolsets` field in the cron/chat config is dynamic and works as intended.
|
|
|
|
### Fix required
|
|
The fix must happen in `hermes-agent/tools/browser_tool.py`:
|
|
- `check_browser_requirements()` should skip the Playwright check when CDP mode is configured
|
|
- Or add a `BROWSER_MODE=cdp` env var that bypasses the local browser requirement
|
|
|
|
### Workaround
|
|
Use `CLOUD_BROWSER=true` or configure `browser.base_url` to point to a remote CDP endpoint. This bypasses the local Playwright requirement.
|