@blundergoat/goat-flow
Version:
AI coding agent harness and local dashboard for Claude Code, OpenAI Codex, Google Antigravity, and GitHub Copilot - setup audits, guardrails, structured skills, deny hooks, and persistent learning loops.
129 lines • 5 kB
TypeScript
import type { AgentId } from "../types.js";
import type { QualityMode, SavedQualityFinding, SavedQualityReport } from "./schema.js";
/** Parsed quality report; invariant: filename-derived ids are the cross-run diff keys. */
export interface QualityHistoryEntry {
id: string;
path: string;
date: string;
time: string;
agent: AgentId;
randomId: string;
report: SavedQualityReport;
}
/** Display row for history tables after same-agent deltas have been calculated. */
export interface QualityHistoryRow {
id: string;
date: string;
agent: AgentId;
qualityMode: QualityMode;
setupTotal: number;
systemTotal: number;
setupDelta: number | null;
blockerCount: number;
majorCount: number;
minorCount: number;
/** Distinct evidence methods used across this run's findings. Lets the
* dashboard distinguish runtime-probe runs from static-only runs. */
evidenceMethods: SavedQualityFinding["evidence_method"][];
}
/** Finding summary row shared by resolved, new, persisted, and stuck diff sections. */
export interface QualityDiffFindingRow {
id: string;
severity: SavedQualityFinding["severity"];
type: SavedQualityFinding["type"];
summary: string;
}
/** Diff result for two same-agent, same-mode quality-history entries. */
export interface QualityDiffResult {
from: QualityHistoryEntry;
to: QualityHistoryEntry;
setupDelta: number;
systemDelta: number;
resolved: QualityDiffFindingRow[];
newFindings: QualityDiffFindingRow[];
persisted: QualityDiffFindingRow[];
stuck: QualityDiffFindingRow[];
}
/**
* Load every saved quality-history report from disk.
*
* Reports malformed files as warnings and skips them because agent-written
* history must be non-blocking. Invariant: returned entries stay newest-first
* and use filename-derived ids for stable diff selection.
*
* @param projectPath - Project root containing `.goat-flow/logs/quality`.
* @returns Parsed entries sorted newest-first plus non-fatal parse warnings.
*/
export declare function loadQualityHistory(projectPath: string): {
entries: QualityHistoryEntry[];
warnings: string[];
};
/**
* Load only the newest dashboard-sized quality-history window. For selected
* agent tables, one extra matching entry is parsed so the oldest displayed row
* can still calculate its delta without parsing the whole history directory.
*
* @param projectPath - Project root containing `.goat-flow/logs/quality`.
* @param options - Agent/mode filters and optional dashboard row limit.
* @returns Bounded entries sorted newest-first plus non-fatal parse warnings.
*/
export declare function loadQualityHistoryWindow(projectPath: string, options: {
agent: AgentId | null;
limit: number | null;
qualityMode?: QualityMode | null;
}): {
entries: QualityHistoryEntry[];
warnings: string[];
};
/**
* Find the latest quality report for one agent/mode without parsing all files.
* Scans filenames newest-first, filters by agent from the filename, and parses
* only matching JSON until a valid entry is found.
*
* @param projectPath - Project root containing `.goat-flow/logs/quality`.
* @param agent - Agent whose newest report should be found.
* @param qualityMode - Optional mode filter; `null` accepts any mode.
* @returns Latest valid entry plus warnings for malformed matching files.
*/
export declare function findLatestQualityReport(projectPath: string, agent: AgentId, qualityMode?: QualityMode | null): {
entry: QualityHistoryEntry | null;
warnings: string[];
};
/**
* Select visible quality-history entries after agent, mode, and limit filters.
*
* @param entries - Pre-sorted quality-history entries.
* @param options - Filter and limit options from CLI or dashboard callers.
* @returns Filtered entries, preserving input order.
*/
export declare function selectQualityHistoryEntries(entries: QualityHistoryEntry[], options: {
agent: AgentId | null;
limit: number | null;
qualityMode?: QualityMode | null;
}): QualityHistoryEntry[];
/**
* Build display rows with same-agent, same-mode setup deltas.
*
* @param entries - Pre-sorted quality-history entries.
* @param options - Filter and limit options from CLI or dashboard callers.
* @returns History table rows, preserving newest-first order.
*/
export declare function buildQualityHistoryRows(entries: QualityHistoryEntry[], options: {
agent: AgentId | null;
limit: number | null;
qualityMode?: QualityMode | null;
}): QualityHistoryRow[];
/** Build the diff between two quality-history runs. */
export declare function buildQualityDiff(entries: QualityHistoryEntry[], options: {
agent: AgentId | null;
pair: string | null;
qualityMode?: QualityMode | null;
}): {
ok: true;
diff: QualityDiffResult;
} | {
ok: false;
error: string;
};
export { renderQualityDiffText, renderQualityHistoryText, } from "./history-render.js";
//# sourceMappingURL=history.d.ts.map