tasq/node_modules/@claude-flow/guidance/dist/ledger.d.ts

162 lines
4.4 KiB
TypeScript

/**
* Run Ledger + Evaluators
*
* Logs every run as an event with a minimum schema, then runs evaluators
* to assess compliance and quality.
*
* Objective evaluators:
* 1. Tests pass
* 2. Lint pass
* 3. Forbidden dependency scan
* 4. Forbidden command scan
* 5. Required sections present in plan
*
* Subjective evaluators:
* 1. Reviewer rating (pass/fail)
* 2. Architecture compliance (pass/fail)
*
* @module @claude-flow/guidance/ledger
*/
import type { RunEvent, EvaluatorResult, TaskIntent, OptimizationMetrics, ViolationRanking } from './types.js';
export interface IEvaluator {
/** Evaluator name */
name: string;
/** Whether this is objective (automated) or subjective (human) */
type: 'objective' | 'subjective';
/** Run the evaluation */
evaluate(event: RunEvent): Promise<EvaluatorResult>;
}
/**
* Tests Pass evaluator - checks test results
*/
export declare class TestsPassEvaluator implements IEvaluator {
name: string;
type: "objective";
evaluate(event: RunEvent): Promise<EvaluatorResult>;
}
/**
* Forbidden command scan evaluator
*/
export declare class ForbiddenCommandEvaluator implements IEvaluator {
name: string;
type: "objective";
private forbiddenPatterns;
constructor(forbiddenPatterns?: RegExp[]);
evaluate(event: RunEvent): Promise<EvaluatorResult>;
}
/**
* Forbidden dependency scan evaluator
*/
export declare class ForbiddenDependencyEvaluator implements IEvaluator {
name: string;
type: "objective";
private forbiddenPackages;
constructor(forbiddenPackages?: string[]);
evaluate(event: RunEvent): Promise<EvaluatorResult>;
}
/**
* Violation rate evaluator - checks violation count
*/
export declare class ViolationRateEvaluator implements IEvaluator {
name: string;
type: "objective";
private maxViolations;
constructor(maxViolations?: number);
evaluate(event: RunEvent): Promise<EvaluatorResult>;
}
/**
* Diff quality evaluator - checks rework ratio
*/
export declare class DiffQualityEvaluator implements IEvaluator {
name: string;
type: "objective";
private maxReworkRatio;
constructor(maxReworkRatio?: number);
evaluate(event: RunEvent): Promise<EvaluatorResult>;
}
export declare class RunLedger {
private events;
private evaluators;
private readonly maxEvents;
/**
* @param maxEvents - Maximum events to retain in memory (0 = unlimited).
* When the limit is exceeded the oldest events are evicted.
*/
constructor(maxEvents?: number);
/**
* Add a custom evaluator
*/
addEvaluator(evaluator: IEvaluator): void;
/**
* Remove an evaluator by name
*/
removeEvaluator(name: string): void;
/**
* Log a run event
*/
logEvent(event: RunEvent | Omit<RunEvent, 'eventId'>): RunEvent;
/**
* Create a new run event with defaults
*/
createEvent(taskId: string, intent: TaskIntent, guidanceHash: string): RunEvent;
/**
* Finalize and store an event
*/
finalizeEvent(event: RunEvent): RunEvent;
/**
* Evict oldest events when maxEvents is exceeded.
* Trims 10% in a batch to amortize the O(n) splice cost.
*/
private evictIfNeeded;
/**
* Run all evaluators against an event
*/
evaluate(event: RunEvent): Promise<EvaluatorResult[]>;
/**
* Get all events
*/
getEvents(): RunEvent[];
/**
* Get events by task ID
*/
getEventsByTask(taskId: string): RunEvent[];
/**
* Get events within a time range
*/
getEventsInRange(startMs: number, endMs: number): RunEvent[];
/**
* Get recent events
*/
getRecentEvents(count: number): RunEvent[];
/**
* Compute optimization metrics from events
*/
computeMetrics(events?: RunEvent[]): OptimizationMetrics;
/**
* Rank violations by frequency and cost (rework lines)
*/
rankViolations(windowEvents?: RunEvent[]): ViolationRanking[];
/**
* Get event count
*/
get eventCount(): number;
/**
* Export events for persistence
*/
exportEvents(): RunEvent[];
/**
* Import events from persistence
*/
importEvents(events: RunEvent[]): void;
/**
* Clear all events
*/
clear(): void;
}
/**
* Create a run ledger instance
*
* @param maxEvents - Maximum events to retain in memory (0 = unlimited).
*/
export declare function createLedger(maxEvents?: number): RunLedger;
//# sourceMappingURL=ledger.d.ts.map