export interface GfiGateSettings { enabled: boolean; thresholds: { low_risk_block: number; high_risk_block: number; large_change_block: number; }; large_change_lines: number; ep_tier_multipliers: { '1': number; '2': number; '3': number; '4': number; '5': number; }; bash_safe_patterns: string[]; bash_dangerous_patterns: string[]; } export interface DiagnosticianSettings { context: { time_window_minutes: number; max_message_length: number; max_summary_length: number; }; } export interface PainSettings { language: 'en' | 'zh'; trajectory?: { blob_inline_threshold_bytes?: number; busy_timeout_ms?: number; orphan_blob_grace_days?: number; }; diagnostician?: DiagnosticianSettings; thresholds: { pain_trigger: number; cognitive_paralysis_input: number; stuck_loops_trigger: number; semantic_min_score: number; promotion_count_threshold: number; promotion_similarity_threshold: number; }; scores: { paralysis: number; default_confusion: number; default_loop: number; tool_failure_friction: number; exit_code_penalty: number; spiral_penalty: number; missing_test_command_penalty: number; subagent_error_penalty: number; subagent_timeout_penalty: number; }; severity_thresholds: { high: number; medium: number; low: number; }; empathy_engine?: { enabled?: boolean; dedupe_window_ms?: number; penalties?: { mild?: number; moderate?: number; severe?: number; }; rate_limit?: { max_per_turn?: number; max_per_hour?: number; }; model_calibration?: Record; }; gfi_gate?: GfiGateSettings; compression?: { /** 触发自动压缩的行数阈值 */ line_threshold?: number; /** 触发自动压缩的字节阈值 */ size_threshold_kb?: number; /** 自动压缩间隔(小时) */ interval_hours?: number; /** 保留的已完成任务数 */ keep_completed_tasks?: number; /** Working Memory 最大条数 */ max_working_memory_artifacts?: number; }; } export declare const DEFAULT_SETTINGS: PainSettings; export declare class PainConfig { private settings; private readonly filePath; constructor(stateDir: string); load(): void; save(): void; private deepMerge; /** * Gets a value using dot notation (e.g. 'thresholds.pain_trigger') */ get(keyPath: string): any; /** * Returns all settings as a plain object. */ getAll(): PainSettings; }