/** * Rule Loading Utility * * Loads behavioral rule files with precedence chain support: * 1. LEX_RULES_DIR (explicit environment override) * 2. .smartergpt/canon/rules/ (local overlay) * 3. Package canon/rules/ (resolved from package installation) */ import type { RuleContext, ResolvedRule } from "./types.js"; /** * Resolve rules with precedence chain * * @param context - Context for filtering and scoping rules * @returns Array of resolved rules matching the context * * Precedence chain: * 1. LEX_RULES_DIR (explicit environment override) * 2. .smartergpt/canon/rules/ (local overlay - untracked) * 3. Package canon/rules/ (package defaults) * * Rules are merged by rule_id with precedence (higher priority overrides lower). * Confidence threshold filtering is applied after precedence resolution. * * @example * ```typescript * const rules = resolveRules({ * environment: 'github-copilot', * context_tags: ['execution', 'tools'], * confidenceThreshold: 0.75 * }); * console.log(rules); // Array of high-confidence rules for this context * ``` * * @example With environment variable override * ```typescript * process.env.LEX_RULES_DIR = '/custom/rules'; * const rules = resolveRules({ environment: 'production' }); * // Loads from /custom/rules first * ``` */ export declare function resolveRules(context?: RuleContext): ResolvedRule[]; /** * List all available rule IDs across all precedence levels * * @returns Array of unique rule IDs (deduplicated) * * @example * ```typescript * const ruleIds = listRules(); * console.log(ruleIds); // ['tool-fallback-protocol', 'operator-role', ...] * ``` */ export declare function listRules(): string[]; /** * Get a specific rule by ID with precedence chain * * @param ruleId - ID of the rule to retrieve * @returns Resolved rule or null if not found * * @example * ```typescript * const rule = getRule('tool-fallback-protocol'); * if (rule) { * console.log(rule.text, rule.source); * } * ``` */ export declare function getRule(ruleId: string): ResolvedRule | null;