crawlex 1.0.4

Stealth crawler with Chrome-perfect TLS/H2 fingerprint, render pool, hooks, persistent queue
Documentation
//! NDJSON event bus — public contract between the crawler runtime and any
//! external consumer (CLI piping, SDKs, hooks).
//!
//! The envelope is versioned (`v: 1`) and every event carries
//! `run_id`/`session_id` when available, so multiple concurrent runs can
//! share a single stream. `data` is event-specific; `why` is a short
//! structured reason used by `decision.made` and `job.failed`.
//!
//! Consumers should treat *unknown event kinds* as forward-compatible and
//! ignore them. Event kind names are lowercase with `.` separators and are
//! part of the stable contract.

pub mod envelope;
pub mod sink;

pub use envelope::{
    ArtifactSavedData, Event, EventEnvelope, EventKind, FetchCompletedData, VitalsSummary,
};
pub use sink::{EventSink, MemorySink, NdjsonStdoutSink, NullSink};