feat(connect): bridge native-messaging host to a CDP endpoint — end-to-end works
The __nm-host now exposes a Chrome-compatible CDP WebSocket endpoint and bridges it to the extension over native messaging via the relay translation core (relay.rs): incoming raw CDP commands are answered locally for browser-level Target discovery or forwarded to the extension as forwardCDPCommand; the extension's forwardCDPEvent/results are relayed back as raw CDP. Security without a token or user interaction: the ws URL carries an unguessable guid and is written to ~/.agent-browser/relay-cdp-url (perms 600), so only this user's agent-browser can drive the browser — mirroring how Chrome guards its own remote-debugging URL. Verified end-to-end on real Chrome: `agent-browser connect <relay-url>` then an eval navigated a tab and read back "Example Domain | https://example.com/" — abs → CDP → relay → native messaging → extension → chrome.debugger → real tab, zero token, zero confirmation. Adds the tokio io-std feature for the host's stdio. Remaining polish: re-attach the user's EXISTING tabs after a service-worker restart (currently attaches new tabs cleanly; existing ones need detach+reattach since chrome.debugger may still be bound), and an `open --extension` UX that reads relay-cdp-url so the URL isn't passed by hand.
This commit is contained in:
+1
-1
@@ -22,7 +22,7 @@ dirs = "5.0"
|
||||
include_dir = "0.7"
|
||||
base64 = "0.22"
|
||||
getrandom = "0.2"
|
||||
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "io-util", "time", "sync", "signal", "process"] }
|
||||
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "io-util", "io-std", "time", "sync", "signal", "process"] }
|
||||
tokio-tungstenite = { version = "0.24", features = ["rustls-tls-webpki-roots"] }
|
||||
futures-util = "0.3"
|
||||
url = "2"
|
||||
|
||||
Reference in New Issue
Block a user