import type { DiffFile } from '@sofagent/core'; import type { RuleCheck } from './rules/types'; import type { RulesetSeverity } from './ruleset-loader'; /** 插件上下文——传给插件函数的参数 */ export interface PluginContext { /** git diff 解析的文件列表 */ diffFiles: DiffFile[]; /** 规则集中配置的可选参数 */ options?: Record; } /** 插件返回的单条检测结果 */ export interface PluginResult { /** 命中的文件路径 */ file: string; /** 行号(可选,缺省不显示行号) */ line?: number; /** 违规描述消息 */ message: string; } /** 插件函数签名 */ export type SofagentPlugin = (ctx: PluginContext) => PluginResult[]; /** plugin 类型规则的完整配置(从 RulesetRule 转换而来) */ export interface PluginRuleConfig { /** 规则 ID */ id: string; /** 规则显示名称 */ name: string; /** npm 包名 */ plugin: string; /** 严重级别 */ severity: RulesetSeverity; /** 传给插件的可选参数 */ options?: Record; /** 匹配时输出的消息模板 */ message?: string; } /** * 注入自定义模块加载器(测试用) * @param fn 自定义加载函数 */ export declare function _setModuleLoader(fn: (name: string) => unknown): void; /** 恢复默认模块加载器(测试用) */ export declare function _resetModuleLoader(): void; /** * 动态加载 npm 插件包 * * 插件可以两种形式导出: * 1. 默认导出函数:module.exports = function(ctx) { ... } * 2. 命名导出 run:module.exports = { run: function(ctx) { ... } } * * @param packageName npm 包名 * @returns 插件函数 * @throws Error 包不存在或导出格式不符合协议 */ export declare function loadPlugin(packageName: string): SofagentPlugin; /** * 校验插件返回的结果格式 * * @param raw 插件返回的原始值 * @returns 合法的 PluginResult 数组(过滤掉无效条目) */ export declare function validatePluginResults(raw: unknown): PluginResult[]; /** * 执行单条 plugin 类型规则 * * 加载外部 npm 包,调用插件函数,收集结果转为 RuleCheck。 * 插件异常会被捕获——降级为该规则的 WARN,不中断审计。 * * @param config 插件规则配置 * @param diffFiles diff 文件列表 * @returns 规则检查结果 */ export declare function runPluginRule(config: PluginRuleConfig, diffFiles: DiffFile[]): RuleCheck; //# sourceMappingURL=plugin-runner.d.ts.map