Improve browser tool cleanup, PATH setup, and screenshot recovery#1001
Open
davetist wants to merge 2 commits intoNousResearch:mainfrom
Open
Improve browser tool cleanup, PATH setup, and screenshot recovery#1001davetist wants to merge 2 commits intoNousResearch:mainfrom
davetist wants to merge 2 commits intoNousResearch:mainfrom
Conversation
Unify browser session teardown so manual close, inactivity cleanup, and emergency shutdown all follow the same cleanup path instead of partially duplicating logic. This changes browser_close() to delegate to cleanup_browser(), which means recording shutdown, Browserbase release, activity bookkeeping cleanup, and local socket-directory removal now happen consistently. It also updates emergency cleanup to route through cleanup_all_browsers() and explicitly clear in-memory tracking state after teardown so stale active-session, last-activity, and recording entries are not left behind on exit. The screenshot fallback path has also been fixed. _extract_screenshot_path_from_text() now matches real absolute PNG paths, including quoted output, so browser_vision() can recover screenshots when agent-browser emits human-readable text instead of JSON. Regression coverage was added in tests/tools/test_browser_cleanup.py for screenshot path extraction, cleanup_browser() state removal, browser_close() delegation, and emergency cleanup state clearing. Verified with: - python -m pytest tests/tools/test_browser_cleanup.py -q - python -m pytest tests/tools/test_browser_console.py tests/gateway/test_send_image_file.py -q
117b984 to
73bbfdf
Compare
Author
|
It modifies the session id too because apparently in macOS if the name is too long it doesn't work |
Author
|
Added more context to the PR description |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR hardens the browser tool in three areas:
PATH, Node resolution, and local socket usageagent-browseremits human-readable output instead of JSONWhat Changed
Session lifecycle and cleanup
browser_close()to delegate tocleanup_browser()instead of doing a partial inline teardown_emergency_cleanup_all_sessions()to route throughcleanup_all_browsers()and clear in-memory tracking state after shutdown_active_sessionsremoval_session_last_activityremovalLocal session reliability
/tmpon macOS via_socket_safe_tmpdir()to avoid longAF_UNIXsocket paths under/var/folders/...agent-browserdaemon/socket failures on macOSBrowser command execution
_run_browser_command()to build a safer subprocessPATH$HERMES_HOME/node/binbefore standard system directoriesnodebinary is actually being used, which makes environment/debugging issues easier to diagnoseNon-JSON output handling
agent-browserreturns non-JSON outputScreenshot capture and vision flow
_extract_screenshot_path_from_text()so it matches real absolute PNG paths, including quoted paths, such as:/tmp/foo.png/Users/david/.hermes/browser_screenshots/shot.pngbrowser_vision()to request a full-page screenshot with--fullagent-browserreturns a different screenshot path in its JSON payload,browser_vision()now uses that actual path instead of assuming the original requested pathUpstream merge / conflict resolution
upstream/maininto this branch to resolve the open PR conflictcall_llm(...)integration for:browser_vision()analysisTests
tests/tools/test_browser_cleanup.pyfor:cleanup_browser()state cleanupbrowser_close()delegationVerification
Passed:
python -m pytest tests/tools/test_browser_cleanup.py -qpython -m pytest tests/tools/test_browser_console.py tests/gateway/test_send_image_file.py -qpython -m pytest tests/tools/test_browser_cleanup.py tests/tools/test_browser_console.py tests/gateway/test_send_image_file.py -qFull Suite Note
I also ran the full suite on this branch and on
mainwith:python -m pytest tests/ -qThe full suite is already red on
main, with widespread failures outside this change area, so this PR is not introducing a uniquely broken full-suite state.