mod extensions;
mod generator;
mod parser;
mod policy;
pub use extensions::{ChioExtensions, Sensitivity};
pub use generator::{GeneratorConfig, ManifestGenerator};
pub use parser::{OpenApiSpec, Operation, Parameter, ParameterLocation, PathItem};
pub use policy::{DefaultPolicy, PolicyDecision};
use thiserror::Error;
#[derive(Debug, Error)]
pub enum OpenApiError {
#[error("invalid JSON: {0}")]
InvalidJson(#[from] serde_json::Error),
#[error("invalid YAML: {0}")]
InvalidYaml(#[from] serde_yml::Error),
#[error("missing required field: {0}")]
MissingField(String),
#[error("unsupported OpenAPI version: {0}")]
UnsupportedVersion(String),
#[error("unresolved reference: {0}")]
UnresolvedRef(String),
}
pub type Result<T> = std::result::Result<T, OpenApiError>;
pub fn tools_from_spec(input: &str) -> Result<Vec<chio_core_types::ToolDefinition>> {
let spec = OpenApiSpec::parse(input)?;
let generator = ManifestGenerator::new(GeneratorConfig::default());
Ok(generator.generate_tools(&spec))
}