import type { EffectivenessScore } from '../../domain/loop/effectiveness-score.js'; import type { SessionTrace } from '../../domain/loop/session-trace.js'; import type { InsightPattern } from '../../domain/loop/insight-pattern.js'; import type { BehaviorEventEmitter } from '../behavior/behavior-event-emitter.js'; /** * Group traces by compactionStrategies[0]. Compute avg score per strategy. * If one strategy avg is >10 points higher with 3+ samples, emit pattern. */ export declare function extractCompactionAffinity(scores: readonly EffectivenessScore[], traces: readonly SessionTrace[]): InsightPattern | null; /** * Bucket traces by token usage ratio (tokensUsed/tokenBudget) in 10% bands. * Find band with highest avg score. If 3+ samples, emit pattern with recommended threshold. */ export declare function extractBudgetSweetSpot(scores: readonly EffectivenessScore[], traces: readonly SessionTrace[]): InsightPattern | null; /** * For each unique skill in traces, compare avg score with/without it. * If difference >10 with 3+ samples each, emit pattern for the most impactful skill. */ export declare function extractSkillEffectiveness(scores: readonly EffectivenessScore[], traces: readonly SessionTrace[]): InsightPattern | null; /** * Filter scores below 50. If 3+ low-scoring sessions share budgetExceeded=true, emit pattern. */ export declare function extractFailureModes(scores: readonly EffectivenessScore[], traces: readonly SessionTrace[]): InsightPattern | null; /** * If 5+ traces have zero skillsInvoked, emit a 'pack_gap' pattern suggesting skill installation. */ export declare function extractPackGaps(traces: readonly SessionTrace[]): InsightPattern | null; /** * Reads scores and traces, runs all extractors, filters out nulls. * Accepts an optional emitter to emit loop.pattern.extracted after extraction. */ export declare function extractPatterns(workspaceRoot: string, emitter?: BehaviorEventEmitter): Promise; //# sourceMappingURL=pattern-extractor.d.ts.map