1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// ABOUTME: Headless-Chrome automation primitives shared across dravr crates
// ABOUTME: Launch, persistent profiles, stealth, CDP input, cookie sessions, streaming capture, vision seam
//
// SPDX-License-Identifier: MIT OR Apache-2.0
// Copyright (c) 2026 dravr.ai
//! # dravr-browser
//!
//! Reusable headless-Chrome automation primitives extracted so multiple dravr
//! crates share one battle-tested browser stack instead of each re-rolling it.
//!
//! ## What's here
//!
//! - [`launch`] — launch Chrome with a **persistent profile** (cookies survive
//! across runs) or attach to an external Chrome via CDP.
//! - [`stealth`] — inject anti-detection + an optional network-capture hook,
//! including a streaming ([`stealth::StealthOptions::capture_stream`]) variant
//! that tees SSE bodies as they arrive.
//! - [`capture`] — read the capture buffer and parse SSE `data:` payloads.
//! - [`input`] — CDP mouse/keyboard input and DOM helpers.
//! - [`session`] — capture/inject cookie sessions ([`session::AuthSession`]).
//! - [`vision`] — the [`vision::VisionAnalyzer`] seam consumers implement to
//! supply screenshot analysis without this crate depending on any LLM.
//!
//! This crate is intentionally LLM-agnostic: it never depends on a concrete
//! model crate, so consumers (which may *be* LLM crates) avoid a dependency
//! cycle.
/// Error type for browser automation.
/// Chrome launch + persistent-profile management.
/// Anti-detection stealth + optional network capture hook.
/// Reading the capture buffer and parsing SSE bodies.
/// CDP-based input and DOM helpers.
/// Cookie-based session capture/injection.
/// The vision-LLM seam.
/// JavaScript string-escaping utilities for CDP evaluate calls.
/// Process-wide browser-teardown signal for WS-reset log suppression.
// Re-export the underlying chromiumoxide handles so consumers can name them
// without taking a direct chromiumoxide dependency (keeping versions in lockstep).
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;
pub use ;