//! MCP tool transport for `serde_json` — navigate, query, and transform JSON values as tools.
//!
//! Wraps `serde_json::Value`, `serde_json::Map<String, Value>`, and `serde_json::Number`
//! as elicitation-enabled newtypes with MCP tools generated by `#[reflect_methods]`.
//! Also provides [`JsonWorkflowPlugin`] for verified, proof-carrying JSON composition workflows.
//!
//! # Quick Start
//!
//! ```ignore
//! use elicit_serde_json::{JsonWorkflowPlugin, JsonValue};
//! use elicitation::PluginRegistry;
//!
//! #[tokio::main]
//! async fn main() {
//!     let registry = PluginRegistry::new()
//!         .register("json_workflow", JsonWorkflowPlugin);
//!     // registry.serve(rmcp::transport::stdio()).await.unwrap();
//! }
//! ```

#![forbid(unsafe_code)]
#![warn(missing_docs)]

mod number;
mod value;
mod workflow;

pub use number::JsonNumber;
pub use value::JsonValue;
pub use workflow::{
    FieldChainEmit, FocusedJson, IsObject, JsonParsed, JsonWorkflowPlugin, LocatedValue,
    MissingKeyPolicy, ObjectJson, ObjectMergeMode, ParseAndFocusEmit, ParsedJson, ParsedObject,
    PointerResolved, PointerUpdateEmit, RawJson, RequiredKeysPresent, SafeMergeEmit, UpdateApplied,
    ValidateObjectEmit, ValidatedObject,
};
