import type { DiffFile } from '@sofagent/core'; import type { LogEntry } from '@sofagent/core'; import type { AuditConfig } from '@sofagent/core'; import type { RuleCheck } from './rules/types'; import type { AuditHistoryEntry } from './audit-history'; export type { RuleCheck } from './rules/types'; export interface AuditResult { rules: RuleCheck[]; exitCode: number; /** v1.1.0:权限拒绝列表(permission 集成审计) */ permissionDenials?: string[]; } /** * 产品签名行(感知层——让用户明确知道「这是 sofagent 的审计结果」)。 * * 仅用于 text/table 等**人类可读**输出格式的头部;`--json` 输出绝不使用 * (保持机器可读纯净,不破坏 acceptance scenario 6 的 JSON 结构断言)。 * * 判定映射与 printResults 保持一致:exit 0=PASS / 1=WARN / 2=FAIL。 * FAIL(拦截)时使用 ❌ 前缀,让用户明确知道「是 sofagent 拦的」。 * * @param exitCode 审计退出码(0/1/2) * @param ruleCount 参与本次审计的规则数 * @returns 形如「━━━ sofagent 审计 · N 规则 · PASS ━━━」的签名行(N 为运行时规则数,非写死值) */ export declare function productSignature(exitCode: number, ruleCount: number): string; /** * v1.3.8 P1-B4: runRules 选项对象——十位置参数(四布尔陷阱)重构为对象参数。 * 布尔位置参数调用处极易错位(如 quick 模式第 6 参 commitMsg 与第 7 参 config * 混传即静默假绿)。新调用方一律用 options 对象。 */ export interface RunRulesOptions { /** git diff 解析出的文件变更列表 */ diffFiles: DiffFile[]; /** 任务日志条目 */ logEntries: LogEntry[]; /** 任务描述(--task 参数) */ task?: string; /** 严格模式 */ strict?: boolean; /** 沉默模式(跳过日志依赖规则,走 diff 启发式) */ silent?: boolean; /** commit message(用于 E2/A5 规则及 #10 回退) */ commitMsg?: string; /** 审计配置(.sofagent/config.yml 加载,三级 fallback) */ config?: AuditConfig; /** 历史审计记录(可选;不传则 runner 自动从文件加载) */ history?: AuditHistoryEntry[]; /** v1.3.1 交付 2:国标对齐 GB/T 48000.3-2026 维度(opt-in 默认 false) */ gb48000?: boolean; /** v1.3.3 #8:quick 模式标记(cli-quick 零配置审计),A3 见到跳过越界检查 */ quickMode?: boolean; } /** * 运行全部审计规则(fast-fail 模式,v1.0.7) * 委托到 rules/runner.ts 的 runRules,内部按 AUDIT_PRIORITY 分组执行。 * * v1.3.8 P1-B4:新增对象参数签名(推荐)——`runRules({ diffFiles, silent: true, ... })`。 * 旧的位置参数签名保留兼容(既有调用方/测试较多,全量迁移另行排期), * 两个签名最终都汇入同一实现,行为完全一致。 */ export declare function runRules(diffFilesOrOptions: DiffFile[] | RunRulesOptions, logEntries?: LogEntry[], task?: string, strict?: boolean, silent?: boolean, commitMsg?: string, config?: AuditConfig, history?: AuditHistoryEntry[], gb48000?: boolean, quickMode?: boolean): AuditResult; /** * v1.3.4 P2-4: 格式化 FAIL/WARN 规则的详细明细 * * 原 bug:二进制/大文件审计 FAIL 时报告只说「1 违规」,没指明是 A11 还是 A17 还是其他。 * 本函数对每条命中规则输出「规则名 + 触发原因 + 文件路径」,让用户一眼看到是哪条规则拦的。 * * @param results 审计结果 * @returns 格式化后的明细行数组(每行包含规则名 + 原因 + 文件路径) */ export declare function formatRuleDetails(results: AuditResult): string[]; /** * v1.3.4 P2-4: 生成 FAIL 报告汇总——含规则明细 * * 用于 CLI / CI 输出场景,确保用户看到完整的安全画像: * - 总违规数 / 警告数 * - 每条命中规则的规则名 + ID + 触发原因 + 文件路径 * * @param results 审计结果 * @returns 汇总报告字符串(多行) */ export declare function generateFailReport(results: AuditResult): string; //# sourceMappingURL=reporter.d.ts.map