//! Cassette support library.
//!
//! Recorded MCP responses contain values that change every run (timestamps,
//! UUIDs, ETags, trace IDs, Unix epochs). Without normalization, every replay
//! would fail. This module owns the **library** that detects those patterns,
//! produces normalized placeholders, and compares a normalized recording
//! against a fresh response.
//!
//! The module also owns the in-place refresh path behind
//! `mcptest run --update-cassettes` ([`update`]), which re-records a server
//! cassette from the live target named in its `meta` block.

pub(crate) mod live;
pub mod normalize;
mod patterns;
pub mod portable;
pub mod update;
pub mod verify;

pub use normalize::{
    NormalizationEntry, NormalizedValue, Normalizer, PlaceholderKind, EPOCH_PLACEHOLDER,
    ETAG_PLACEHOLDER, TIMESTAMP_PLACEHOLDER, TRACE_ID_PLACEHOLDER, UUID_PLACEHOLDER,
};
pub use portable::{
    replay, replay_with_strategy, Cassette, Exchange, ReplayOutcome, CASSETTE_FORMAT_VERSION,
};
pub use update::{
    finalize_recording, live_target, refresh_cassette, refresh_selected_cassettes, LiveTarget,
    RefreshOutcome, UpdateError, META_SOURCE_COMMAND, META_SOURCE_URL,
};
pub use verify::{verify as verify_exchange, Delta, ReplayStrategy};
