/** * Agentic QE v3 - Contract Testing MCP Tool * * qe/contracts/validate - Validate API contracts and detect breaking changes * * This tool wraps the contract-testing domain services: * - ContractValidatorService for contract/schema validation * - ApiCompatibilityService for breaking change detection */ import { MCPToolBase, MCPToolConfig, MCPToolContext } from '../base.js'; import { ToolResult } from '../../types.js'; export interface ContractValidateParams { contractPath?: string; contractContent?: string; providerUrl?: string; consumerName?: string; baselineVersion?: string; baselineContent?: string; checkBreakingChanges?: boolean; format?: 'openapi' | 'pact' | 'graphql' | 'asyncapi'; [key: string]: unknown; } export interface ContractValidateResult { isValid: boolean; validationErrors: ValidationError[]; breakingChanges?: BreakingChange[]; verificationResult?: VerificationResult; compatibility: CompatibilityReport; recommendations: string[]; } export interface ValidationError { path: string; message: string; code: string; severity: 'error' | 'warning' | 'info'; } export interface BreakingChange { type: 'removed-endpoint' | 'removed-field' | 'type-change' | 'required-field-added' | 'enum-value-removed'; location: string; description: string; impact: 'high' | 'medium' | 'low'; affectedConsumers: string[]; migrationPath?: string; } export interface VerificationResult { provider: string; consumer: string; passed: boolean; failures: ContractFailure[]; warnings: ContractWarning[]; } export interface ContractFailure { endpoint: string; type: 'schema-mismatch' | 'status-code-mismatch' | 'missing-endpoint' | 'response-body-mismatch'; expected: string; actual: string; message: string; } export interface ContractWarning { endpoint: string; message: string; severity: 'high' | 'medium' | 'low'; } export interface CompatibilityReport { isBackwardCompatible: boolean; breakingChangeCount: number; nonBreakingChangeCount: number; deprecations: Deprecation[]; } export interface Deprecation { location: string; reason: string; removalVersion?: string; replacement?: string; } export declare class ContractValidateTool extends MCPToolBase { readonly config: MCPToolConfig; private contractValidator; private apiCompatibility; private getServices; execute(params: ContractValidateParams, context: MCPToolContext): Promise>; private buildContractFromContent; private convertValidationError; private convertBreakingChange; private convertDeprecation; private generateDefaultCompatibility; private verifyAgainstProvider; private generateRecommendations; } //# sourceMappingURL=validate.d.ts.map