//! Schema-diff library for MCP server tool catalogs.
//!
//! When an MCP server ships a new release the tool catalog can drift in
//! ways that quietly break clients: a required argument appears, a field
//! disappears, a type narrows from `string` to `number`. The `mcptest diff`
//! library walks two `tools/list` JSON snapshots and reports each change,
//! flagging which ones are breaking for callers that already wrote against
//! the old shape. The state-machine and property-based test generation
//! story (also) builds on top of this; it is deferred
//! to a follow-up ticket.

pub mod feature_flags;
pub mod regen;
pub mod response_fingerprint;
pub mod scorecard;
pub mod tool_catalog;
// Data model for the diff, split out of `tool_catalog`. Kept
// private; the types reach the public surface through `tool_catalog`'s
// re-export and the re-export below, so external paths are unchanged.
mod catalog_types;

pub use feature_flags::{shared_feature_flags, FeatureFlag};
pub use regen::{build_regen_plan, RegenItem, RegenKind, RegenPlan, REGEN_MARKER};
pub use response_fingerprint::{
    diff_response_fingerprints, error_signature, fingerprint_response, ErrorSignature,
    ResponseFingerprint, SizeBucket, ToolResponseSample,
};
pub use scorecard::{score_diff, SchemaEvolutionScorecard};
pub use tool_catalog::{
    diff_server_snapshots, diff_tool_catalogs, CatalogChange, ChangeKind, DiffError, DiffReport,
    SchemaChange,
};
