/** * Heuristics Configuration Module (CX-010) * * Provides config-driven heuristics for domain groups and tier rules. * This externalizes previously hardcoded constants from learning-engine.ts * and tiered-fetcher.ts to enable easier customization and updates. */ import type { DomainGroup } from '../types/index.js'; /** * Pattern rule for domain classification * Can be a string (converted to RegExp) or RegExp pattern */ export interface DomainPattern { /** Pattern string (will be converted to RegExp) */ pattern: string; /** Optional flags for RegExp (default: 'i' for case-insensitive) */ flags?: string; /** Description of what this pattern matches */ description?: string; } /** * Tier routing rules configuration */ export interface TierRulesConfig { /** Domains known to be static (prefer ContentIntelligence tier) */ staticDomains: DomainPattern[]; /** Domains requiring full browser rendering */ browserRequired: DomainPattern[]; /** HTML markers indicating content rendered properly */ contentMarkers: DomainPattern[]; /** HTML markers indicating incomplete JS rendering */ incompleteMarkers: DomainPattern[]; } /** * Complete heuristics configuration */ export interface HeuristicsConfig { /** Version of the config schema */ version: string; /** Pre-configured domain groups for cross-domain pattern sharing */ domainGroups: DomainGroup[]; /** Tier routing rules */ tierRules: TierRulesConfig; } /** * Get the current heuristics configuration */ export declare function getConfig(): HeuristicsConfig; /** * Get compiled static domain patterns */ export declare function getStaticDomainPatterns(): RegExp[]; /** * Get compiled browser-required domain patterns */ export declare function getBrowserRequiredPatterns(): RegExp[]; /** * Get compiled content marker patterns */ export declare function getContentMarkerPatterns(): RegExp[]; /** * Get compiled incomplete marker patterns */ export declare function getIncompleteMarkerPatterns(): RegExp[]; /** * Get domain groups configuration */ export declare function getDomainGroups(): DomainGroup[]; /** * Find domain group by domain name */ export declare function findDomainGroup(domain: string): DomainGroup | undefined; /** * Check if a domain matches static domain patterns */ export declare function isStaticDomain(domain: string): boolean; /** * Check if a domain requires full browser rendering */ export declare function isBrowserRequired(domain: string): boolean; /** * Check if HTML content has content markers */ export declare function hasContentMarkers(html: string): boolean; /** * Check if HTML content has incomplete markers */ export declare function hasIncompleteMarkers(html: string): boolean; /** * Update the active configuration * Clears cached compiled patterns */ export declare function setConfig(config: HeuristicsConfig): void; /** * Merge additional configuration into the active config * Useful for adding custom domain groups or patterns */ export declare function mergeConfig(partial: Partial): void; /** * Reset configuration to defaults */ export declare function resetConfig(): void; /** * Add a new domain group */ export declare function addDomainGroup(group: DomainGroup): void; /** * Add a static domain pattern */ export declare function addStaticDomainPattern(pattern: DomainPattern): void; /** * Add a browser-required domain pattern */ export declare function addBrowserRequiredPattern(pattern: DomainPattern): void; /** * Export configuration for serialization */ export declare function exportConfig(): HeuristicsConfig; /** * Import configuration from serialized format */ export declare function importConfig(configJson: string): void; //# sourceMappingURL=heuristics-config.d.ts.map