pub mod anthropic;
pub mod generic_mcp;
pub mod openai;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ProviderName {
GenericMcp,
OpenAi,
Anthropic,
Cursor,
Continue,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum ClientKind {
Inspector,
RemoteConnector,
LocalIde,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum CompatTransport {
Stdio,
Http,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum CompatAuthMode {
LocalConfig,
OAuthBearer,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct ProviderTarget {
pub provider: ProviderName,
pub client_kind: ClientKind,
pub mcp_transport: CompatTransport,
pub auth_mode: CompatAuthMode,
pub enabled_features: Vec<String>,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct CompatibilityScenario {
pub scenario_id: String,
pub provider_target: ProviderTarget,
pub tool_name: String,
pub input_fixture: serde_json::Value,
pub expected_shape: String,
pub expected_auth_behavior: String,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct RedactionReport {
pub checked_fields: Vec<String>,
pub leaks_found: Vec<String>,
pub redactions: Vec<String>,
pub secret_scan_result: String,
}
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, JsonSchema)]
pub struct CompatibilitySnapshot {
pub snapshot_id: String,
pub scenario_id: String,
pub tool_schema_hash: String,
pub response_hash: String,
pub redaction_report: RedactionReport,
pub created_at: String,
}