import type { ExperimentResult } from "../../harness/loop/experimental-executor.js"; export interface SkillUsageRecord { skillName: string; outcome: "success" | "failure"; context: string; timestamp: string; } export interface SkillPerformanceReport { skillName: string; successRate: number; usageCount: number; recentFailures: SkillUsageRecord[]; } /** Callback that evaluates a revised skill and returns an ExperimentResult. */ export type SkillTestFn = (skillName: string, revisedContent: string, testTask: string) => Promise; export interface SkillEvolverConfig { /** Minimum success rate before a skill is considered for improvement */ weaknessThreshold?: number; /** Minimum usage samples before proposing improvement */ minSamples?: number; /** Root path for reading/writing SKILL.md files */ skillsRoot?: string; /** * Optional callback used by `testSkillRevision` to evaluate a revised skill. * When omitted, `testSkillRevision` optimistically returns success so the * self-improvement loop is not blocked. */ runTest?: SkillTestFn; } export declare class SkillEvolver { private readonly usageHistory; private readonly weaknessThreshold; private readonly minSamples; private readonly skillsRoot; private readonly runTest; constructor(config?: SkillEvolverConfig); recordSkillUsage(skillName: string, outcome: "success" | "failure", context: string): void; identifyWeakSkills(threshold?: number): SkillPerformanceReport[]; proposeSkillImprovement(skillName: string, llm: { chat: (opts: { messages: Array<{ role: string; content: string; }>; maxTokens?: number; }) => Promise<{ content: string; }>; }): Promise; testSkillRevision(skillName: string, revisedContent: string, testTask: string, runTest?: SkillTestFn): Promise; commitOrRevert(skillName: string, experiment: ExperimentResult, revisedContent: string): Promise; } //# sourceMappingURL=skill-evolver.d.ts.map