/** * Writing Validation Engine * * Core validation engine that scans text for AI detection patterns, banned phrases, * and authenticity markers. Provides comprehensive scoring and issue reporting. * * @implements @.aiwg/requirements/use-cases/UC-001-validate-ai-generated-content.md * @architecture @.aiwg/architecture/software-architecture-doc.md - Section 5.1 WritingValidator * @nfr @.aiwg/requirements/nfr-modules/performance.md - NFR-PERF-001 (<60s validation) * @nfr @.aiwg/requirements/nfr-modules/accuracy.md - NFR-ACC-001 (<5% false positives) * @tests @test/unit/writing/validation-engine.test.ts * @depends @src/writing/validation-rules.ts * @depends @src/writing/pattern-library.ts */ import { RuleSet, ValidationContext, Severity } from './validation-rules.js'; export interface ValidationIssue { type: 'banned_phrase' | 'ai_pattern' | 'missing_authenticity' | 'formulaic_structure'; severity: Severity; message: string; location: { start: number; end: number; line: number; column: number; }; suggestion?: string; context?: string; ruleId?: string; } export interface ValidationSummary { totalIssues: number; criticalCount: number; warningCount: number; infoCount: number; authenticityScore: number; aiPatternScore: number; wordCount: number; sentenceCount: number; } export interface ValidationResult { score: number; issues: ValidationIssue[]; summary: ValidationSummary; suggestions: string[]; humanMarkers: string[]; aiTells: string[]; } export interface AuthenticityAnalysis { score: number; humanMarkers: string[]; missingMarkers: string[]; aiTells: string[]; } /** * Core Writing Validation Engine */ export declare class WritingValidationEngine { private ruleLoader; private ruleSet; private initialized; constructor(guideBasePath?: string); /** * Initialize the engine by loading rules */ initialize(): Promise; /** * Validate content and return comprehensive results */ validate(content: string, context?: ValidationContext): Promise; /** * Validate a file */ validateFile(filePath: string, context?: ValidationContext): Promise; /** * Validate multiple files in batch */ validateBatch(files: string[], context?: ValidationContext): Promise>; /** * Detect banned phrases in content */ detectBannedPhrases(content: string, context?: ValidationContext): ValidationIssue[]; /** * Detect AI writing patterns */ detectAIPatterns(content: string, context?: ValidationContext): ValidationIssue[]; /** * Detect formulaic structures */ detectFormulicStructures(content: string): ValidationIssue[]; /** * Analyze content for authenticity markers */ analyzeAuthenticity(content: string): AuthenticityAnalysis; /** * Validate content for specific context */ validateForContext(content: string, context: 'academic' | 'technical' | 'executive' | 'casual'): Promise; /** * Load rules from AIWG */ loadRulesFromGuide(guidePath: string): void; /** * Update rules with custom rule set */ updateRules(rules: Partial): void; /** * Generate report from validation results */ generateReport(results: ValidationResult | Map, format: 'text' | 'json' | 'html'): string; private findPatternMatches; private calculateSummary; private calculateOverallScore; private generateSuggestions; private getContextAdjustments; private generateTextReport; private generateBatchReport; private generateHtmlReport; } //# sourceMappingURL=validation-engine.d.ts.map