use crate::mcp_pmcp::tool_functions;
use crate::mcp_pmcp::tool_schemas::{build_tool_info, paths_object_schema};
use async_trait::async_trait;
use pmcp::types::ToolInfo;
use pmcp::{Error, RequestHandlerExtra, Result, ToolHandler};
use serde::Deserialize;
use serde_json::{json, Value};
use std::path::PathBuf;
use tracing::debug;
#[derive(Debug, Deserialize)]
struct QualityGateArgs {
paths: Vec<String>,
#[serde(default)]
strict: bool,
#[serde(default)]
file: Option<String>,
}
pub struct QualityGateTool;
impl QualityGateTool {
#[must_use]
#[provable_contracts_macros::contract("pmat-core.yaml", equation = "check_compliance")]
pub fn new() -> Self {
Self
}
}
impl Default for QualityGateTool {
fn default() -> Self {
Self::new()
}
}
#[derive(Debug, Deserialize)]
struct QualityGateSummaryArgs {
paths: Vec<String>,
#[serde(default)]
format: Option<String>,
}
pub struct QualityGateSummaryTool;
impl QualityGateSummaryTool {
#[must_use]
#[provable_contracts_macros::contract("pmat-core.yaml", equation = "check_compliance")]
pub fn new() -> Self {
Self
}
}
impl Default for QualityGateSummaryTool {
fn default() -> Self {
Self::new()
}
}
#[derive(Debug, Deserialize)]
struct QualityGateBaselineArgs {
paths: Vec<String>,
#[serde(default)]
output: Option<String>,
}
pub struct QualityGateBaselineTool;
impl QualityGateBaselineTool {
#[must_use]
#[provable_contracts_macros::contract("pmat-core.yaml", equation = "check_compliance")]
pub fn new() -> Self {
Self
}
}
impl Default for QualityGateBaselineTool {
fn default() -> Self {
Self::new()
}
}
#[derive(Debug, Deserialize)]
struct QualityGateCompareArgs {
baseline: String,
paths: Vec<String>,
}
pub struct QualityGateCompareTool;
impl QualityGateCompareTool {
#[must_use]
#[provable_contracts_macros::contract("pmat-core.yaml", equation = "check_compliance")]
pub fn new() -> Self {
Self
}
}
impl Default for QualityGateCompareTool {
fn default() -> Self {
Self::new()
}
}
include!("quality_handlers_impl.rs");
include!("quality_handlers_tests.rs");