import { scoreCodexQaText } from "../ab/codexQa/scoring.js"; import { type SuppliedContextCodexRepeat } from "./codexSuppliedContext.js"; import { compareContextEfficiency } from "./contextEfficiencyMetrics.js"; export declare const SKILL_SUITE_DIR = ".mcp-benchmarks/skill-suite-head-to-head"; export interface SkillSuiteTaskResult { taskName: string; graphifyContextFile: string; repoContextContextFile: string; graphifyContextTokens: number; repoContextContextTokens: number; graphifyLocalScore: ReturnType; repoContextLocalScore: ReturnType; contextEfficiency: ReturnType; graphifyRepeats: SuppliedContextCodexRepeat[]; repoContextRepeats: SuppliedContextCodexRepeat[]; graphifyMedianCodex: number | null; repoContextMedianCodex: number | null; graphifyMinQuality: number | null; repoContextMinQuality: number | null; codexTokenWin: boolean; qualityWin: boolean; contextEfficiencyWin: boolean; perTaskTokenWin: boolean; taskComplete: { graphify: boolean; repoContext: boolean; }; repeatsComplete: { graphify: number; repoContext: number; }; mcpClean: boolean; noCrossContamination: boolean; } export interface SkillSuiteSummary { generatedAt: string; measuredClient: "codex"; codexBin: string; noMcp: true; repeats: number; tasks: SkillSuiteTaskResult[]; perTaskWins: { codex: number; quality: number; contextEfficiency: number; taskComplete: number; }; suiteCodexWin: boolean; suiteQualityWin: boolean; suiteContextEfficiencyWin: boolean; allowedClaim: string; verdict: string; incomplete: boolean; incompleteReason?: string; tasksCompleted: number; suiteClaimAllowed: boolean; } export declare function runSkillSuiteHeadToHead(options: { repoPath?: string; codexBin?: string; repeats?: number; tasks?: string[]; runsRoot?: string; }): Promise; export declare function writeSkillSuiteSummary(summary: SkillSuiteSummary, runsRoot?: string): void;