autosnippet
Version:
Extract code patterns into a knowledge base for AI coding assistants
56 lines (55 loc) • 2.21 kB
TypeScript
import Logger from '../../infrastructure/logging/Logger.js';
import type { Constitution, ConstitutionRule } from './Constitution.js';
export interface ValidationRequest {
actor?: string;
action?: string;
resource?: string;
data?: Record<string, unknown>;
confirmed?: boolean;
authorized?: boolean;
code?: string;
[key: string]: unknown;
}
export interface Violation {
rule: string;
reason: string;
suggestion: string;
}
export interface ValidationResult {
compliant: boolean;
violations: Violation[];
}
type RuleChecker = (req: ValidationRequest, rule: ConstitutionRule) => Violation | null;
/**
* ConstitutionValidator — 数据守护验证器
*
* 精简设计: 4 条纯数据完整性规则,不做伦理/价值观判断。
* 每条规则对应 constitution.yaml 中的一个 rule.check 值。
*/
export declare class ConstitutionValidator {
checkers: Record<string, RuleChecker>;
constitution: Constitution;
logger: ReturnType<typeof Logger.getInstance>;
constructor(constitution: Constitution);
/** 验证操作,返回违规列表 */
validate(request: ValidationRequest): Promise<ValidationResult>;
/** 强制验证(违规时抛异常) */
enforce(request: ValidationRequest): Promise<ValidationResult>;
/** 删除操作需要确认 */
_checkDestructive(req: ValidationRequest, rule: ConstitutionRule): Violation | null;
/** 创建候选/Recipe 需要内容 */
_checkContent(req: ValidationRequest, rule: ConstitutionRule): Violation | null;
/** AI 不能直接创建/批准 Recipe */
_checkAiRecipe(req: ValidationRequest, rule: ConstitutionRule): Violation | null;
/** 批量操作需要授权 */
_checkBatch(req: ValidationRequest, rule: ConstitutionRule): Violation | null;
_verb(action: string | undefined): string;
_resource(action: string | undefined, resource: string | undefined): string;
_isAI(actor: string | undefined): boolean;
/** 兼容旧 priorities 格式 */
_checkLegacyPriority(priority: {
id: number;
[key: string]: unknown;
}, request: ValidationRequest): Promise<Violation[]>;
}
export default ConstitutionValidator;