UNPKG

autosnippet

Version:

Extract code patterns into a knowledge base for AI coding assistants

425 lines (424 loc) 11.8 kB
/** * MCP Handlers Guard 审计 & 项目扫描 * * 统一入口:autosnippet_guard * 无参数 review 模式(自动 git diff 增量文件 + inline recipe) * files: string[] 指定文件检查(+ inline recipe) * code: string 单文件内联检查 */ import type { McpContext } from './types.js'; export interface GuardViolation { ruleId: string; message: string; severity: string; line?: number; snippet?: string; fixSuggestion?: string | null; [key: string]: unknown; } interface GuardViolationEnriched { ruleId: string; message: string; severity: string; line?: number; snippet?: string; fixSuggestion: string | null; recipe?: { title: string; doClause: string | null; dontClause: string | null; coreCode: string | null; }; } export interface ReviewFileResult { filePath: string; language?: string; violations: GuardViolationEnriched[]; summary: { total: number; errors: number; warnings: number; }; error?: string; } interface GuardCheckArgs { code?: string; language?: string; filePath?: string; [key: string]: unknown; } interface GuardAuditArgs { files: Array<{ path: string; content?: string; }>; scope?: string; [key: string]: unknown; } interface GuardReviewArgs { files?: Array<string | { path?: string; [key: string]: unknown; }>; [key: string]: unknown; } interface ScanProjectArgs { maxFiles?: number; includeContent?: boolean; contentMaxLines?: number; [key: string]: unknown; } export declare function guardCheck(ctx: McpContext, args: GuardCheckArgs): Promise<{ success: boolean; errorCode: string | null; message: string; data: { language: string; violations: never[]; summary: { total: number; errors: number; warnings: number; }; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; } | { success: boolean; errorCode: string | null; message: string; data: { warnings?: "未能识别语言,部分语言相关规则可能未执行。建议提供 language 或 filePath 参数。"[] | undefined; language: string; violations: GuardViolation[]; summary: { total: number; errors: number; warnings: number; }; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; }>; export declare function guardAuditFiles(ctx: McpContext, args: GuardAuditArgs): Promise<{ success: boolean; errorCode: string | null; message: string; data: { capabilityReport?: { executedChecks: Record<string, { total: number; executed: number; skipped: number; }>; skippedChecks: unknown[]; boundaries: unknown[]; uncertainResults: Array<{ ruleId: string; message: string; layer: string; reason: string; detail: string; }>; checkCoverage: number; } | undefined; uncertainSummary?: { total: number; byLayer: Record<string, number>; byReason: Record<string, number>; } | undefined; boundaries?: unknown[] | undefined; crossFileViolations?: unknown[] | undefined; summary: { [key: string]: unknown; total: number; errors: number; warnings: number; }; files: { filePath: string; language: string; violations: GuardViolation[]; summary: { total: number; errors: number; warnings: number; uncertain?: number; }; }[]; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; }>; /** * Guard Review 编码后的代码质量检查 * * 设计要点: * 1. 无参数 自动从 git diff 检测增量文件(staged + unstaged + untracked) * 2. files: string[] 指定文件路径(简化,不再要求对象数组) * 3. violations 内联 recipe 修复指南(doClause + coreCode) * 4. 防无限循环:reviewRound 计数 + MAX_REVIEW_ROUNDS 限制 * 5. 不绑定 task ID 代码检查独立于任务系统 * * @param ctx MCP context with container * @param args { files?: string[] } */ export declare function guardReview(ctx: McpContext, args: GuardReviewArgs): Promise<{ success: boolean; errorCode: string | null; message: string; data: { passed: boolean; files: never[]; totalViolations: number; reviewRound: any; maxRoundsReached: boolean; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; } | { success: boolean; errorCode: string | null; message: string; data: { passed: boolean; files: never[]; totalViolations: number; reviewRound: any; fileSource: string; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; } | { success: boolean; errorCode: string | null; message: string; data: { uncertainSummary?: { total: number; byLayer: Record<string, number>; byReason: Record<string, number>; } | undefined; uncertainResults?: unknown[] | undefined; passed: boolean; reviewRound: any; fileSource: string; files: ReviewFileResult[]; totalViolations: number; summary: { total: number; errors: number; warnings: number; filesChecked: number; }; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; }>; export declare function scanProject(ctx: McpContext, args: ScanProjectArgs): Promise<{ success: boolean; errorCode: string | null; message: string; data: { targets: never[]; files: never[]; guardAudit: null; message: string; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; } | { success: boolean; errorCode: string | null; message: string; data: { targets: { name: string; type: string | undefined; packageName: string | undefined; }[]; files: { name: string; path: string; targetName: string; content?: string; totalLines?: number; truncated?: boolean; }[]; fileCount: number; guardAudit: { crossFileViolations?: unknown[] | undefined; summary: { [key: string]: unknown; total: number; errors: number; warnings: number; }; filesWithViolations: { filePath: string; language: string; violations: GuardViolation[]; summary: { total: number; errors: number; warnings: number; uncertain?: number; }; }[]; } | null; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; }>; interface ReverseAuditArgs { maxFiles?: number; [key: string]: unknown; } /** * 对所有 active rule Recipe 执行反向验证: * - 检查 coreCode 引用的符号是否还存在 * - 检查 guard pattern 匹配率是否骤降 */ export declare function guardReverseAudit(ctx: McpContext, args: ReverseAuditArgs): Promise<{ success: boolean; errorCode: string | null; message: string; data: { totalRecipes: number; healthy: number; investigate: number; decay: number; drifts: { recipeId: string; title: string; recommendation: import("#service/guard/ReverseGuard.js").ReverseRecommendation; signals: import("#service/guard/ReverseGuard.js").PatternDriftSignal[]; }[]; allResults: { recipeId: string; title: string; recommendation: import("#service/guard/ReverseGuard.js").ReverseRecommendation; signalCount: number; }[]; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; }>; interface CoverageMatrixArgs { [key: string]: unknown; } /** * 计算模块级 Guard 规则覆盖率矩阵 */ export declare function guardCoverageMatrix(ctx: McpContext, _args: CoverageMatrixArgs): Promise<{ success: boolean; errorCode: string | null; message: string; data: { overallCoverage: number; zeroModules: string[]; lowModules: string[]; modules: import("#service/guard/CoverageAnalyzer.js").ModuleCoverage[]; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; }>; interface ComplianceReportArgs { [key: string]: unknown; } /** * 生成 3D 合规报告(compliance + coverage + confidence) * 包含完整 uncertain 消费数据 */ export declare function guardComplianceReport(ctx: McpContext, _args: ComplianceReportArgs): Promise<{ success: boolean; errorCode: string | null; message: string; data: { scores: { compliance: number; coverage: number; confidence: number; }; qualityGate: { status: string; score: number; thresholds: { maxErrors: number; maxWarnings: number; minScore: number; }; }; summary: { filesScanned: number; totalViolations: number; errors: number; warnings: number; infos: number; }; uncertainSummary: { total: number; byLayer: Record<string, number>; byReason: Record<string, number>; }; boundaries: { type: string; description: string; affectedRules: string[]; suggestedAction: string; }[]; topViolations: any[]; trend: { errorsChange: number; warningsChange: number; hasHistory: boolean; }; } | null; meta: { source?: string | undefined; responseTimeMs?: number | undefined; version: string; tool?: string | undefined; }; }>; export {};