Repository navigation
Releases
v0.2.1
browsy-bot 0.2.0
What's new
Tier 1 features on top of the multi-tool CDP core (v0.1.0). Same zero-middleware architecture — direct Chrome DevTools Protocol, no Puppeteer/Playwright/ChromeDriver.
browsy doctor
Read-only diagnostics that tell you why nothing works. Probes CDP endpoint reachability, target/page count, browser-binary discovery, and memorius availability, then returns an actionable DoctorReport with next-step suggestions.
browsy doctor --json
# not ready: CDP endpoint ws://localhost:9222 is unreachable: ECONNREFUSED.
# Launch Chrome with: <chrome> --remote-debugging-port=9222 --headless --no-sandbox,
# or run "browsy ensure-browser" to start one for you.browsy extract <selector> [field...]
First-class structured data extraction — no more bespoke Runtime.evaluate boilerplate. One in-page script pulls typed records from every matching element, capped by --limit.
browsy extract "article.card" text "attr:src" value
# -> [ { "text": "...", "src": "...", "value": null }, ... ]Field specs: text, html, textContent, value, or attr:<name>.
browsy ensure-browser / browsy stop-browser
Self-service browser lifecycle. ensure-browser probes the endpoint; if it's down it spawns Chrome/Chromium on a dedicated user-data-dir under the browsy state dir ($BROWSY_STATE_DIR or ~/.browsy) — never your logged-in profile — writes a pidfile, and polls /json/version until the CDP endpoint answers. stop-browser SIGTERMs the recorded pid and clears the pidfile.
browsy ensure-browser --port 9222 --no-headless
browsy stop-browserTrusted input (--trusted)
click and fill gain an opt-in --trusted flag that dispatches renderer-trusted CDP input events (Input.dispatchMouseEvent / Input.insertText) instead of JS-dispatched el.click() / el.value =. The page's event listeners see a user-originated input event. Default JS-dispatch path is unchanged for backward compatibility.
browsy click ".save" --trusted
browsy fill "#email" "a@b.c" --trustedAPI additions (library)
extract(session, selector, fields, { limit })→Record<string, unknown>[]doctor(browserUrl, options?)→DoctorReport; probesprobeVersion,findBrowserBinary,checkMemoriusare exported tooensureBrowser/launchBrowser/stopBrowser/buildBrowserArgs/resolveBrowserBinary/waitForReadyclick/fillnow accept{ trusted?: boolean }
Notes
- 78/78 tests (up from 49 in v0.1.0) — new suites for diagnostics, extraction, and browser lifecycle; trusted-input cases in the actions suite.
- Security: the CDP endpoint is still full browser control.
ensure-browseris profile-scoped to keep the blast radius small; the--trustedpath carries a TOCTOU caveat (see the Security section of the README). - CLI exit codes unchanged:
0success,1runtime/CDP failure,2usage error,3CDP connection failure.
browsy-bot 0.1.0
Tool-agnostic CDP core + MCP server + hardened CLI. Zero-middleware CDP browser automation: one core, three adapters (OpenCode plugin, universal MCP server, CLI with --json). Memorius learning, portable skill. The tag-triggered release workflow is in place; npm publish needs a valid NPM_TOKEN in repo secrets.