import type { EvalResult } from "../contracts/eval-result.js"; import type { SprintContract } from "../contracts/sprint-contract.js"; import type { BoberConfig, EvalStrategy } from "../config/schema.js"; import type { EvaluatorPlugin } from "./plugin-interface.js"; /** * The aggregate result of running all configured evaluators for a sprint. */ export interface EvaluationRunResult { /** Whether all *required* evaluators passed. */ passed: boolean; /** Aggregate score (average of all evaluator scores). */ score: number; /** Individual results from each evaluator. */ results: EvalResult[]; /** Human-readable summary. */ summary: string; /** Timestamp when the evaluation completed. */ timestamp: string; } /** * Maps strategy type names to evaluator plugin instances. * * Built-in evaluators are registered by default. Custom plugins loaded * via the plugin-loader are added on top. */ export declare class EvaluatorRegistry { private readonly plugins; /** * Register an evaluator plugin under a given name. * Overwrites any previously registered plugin with the same name. */ register(name: string, plugin: EvaluatorPlugin): void; /** * Get a plugin by its registered name. */ get(name: string): EvaluatorPlugin | undefined; /** * Check whether a plugin is registered under the given name. */ has(name: string): boolean; /** * Return a read-only view of all registered plugins. */ all(): ReadonlyMap; /** * Get the appropriate plugin for a given strategy. * * Resolution order: * 1. If strategy has a `plugin` field → look up by plugin name * 2. If strategy type matches a registered plugin → use it * 3. If strategy has a `command` field → create an on-the-fly command runner * 4. Otherwise → undefined (strategy will be skipped) */ getForStrategy(strategy: EvalStrategy): EvaluatorPlugin | undefined; /** * List the names of all registered plugins that can run in the * given project context. */ listAvailable(projectRoot: string, config: BoberConfig): Promise; /** * Return all registered plugin names. */ listAll(): string[]; } /** * Create a registry pre-populated with all built-in evaluators. * Optionally loads custom plugins from the config. */ export declare function createDefaultRegistry(config?: BoberConfig): Promise; /** * Run all configured evaluation strategies and produce an aggregate result. * * Strategies are run sequentially to avoid resource contention (e.g. multiple * build processes or test runners at once). Each strategy that doesn't have * a matching plugin, or whose plugin can't run, is skipped with a warning. */ export declare function runEvaluation(registry: EvaluatorRegistry, projectRoot: string, config: BoberConfig, contract: SprintContract, changedFiles: string[]): Promise; //# sourceMappingURL=registry.d.ts.map