UNPKG

@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.

134 lines 6.42 kB
/** * Strict schema validation for quality reports emitted by agents and persisted by the CLI. */ import type { AgentId } from "../types.js"; export declare const QUALITY_REPORT_KIND = "goat-flow-quality-report"; export declare const QUALITY_FINDING_TYPES: readonly ["setup_quality", "skill_flaw", "contradiction", "false_path", "content_quality", "framework_flaw"]; export declare const QUALITY_FINDING_SEVERITIES: readonly ["BLOCKER", "MAJOR", "MINOR"]; export declare const QUALITY_EVIDENCE_QUALITIES: readonly ["OBSERVED", "INFERRED"]; export declare const QUALITY_EVIDENCE_METHODS: readonly ["runtime-probe", "static-analysis", "mixed"]; export declare const QUALITY_SCOPES: readonly ["framework-self", "consumer"]; export declare const QUALITY_MODES: readonly ["process", "agent-setup", "harness", "skills"]; export declare const QUALITY_DELTA_TAGS: readonly ["new", "persisted"]; export declare const QUALITY_AUDIT_STATUSES: readonly ["pass", "fail", "unavailable"]; export declare const QUALITY_SCORE_VALUES: readonly [0, 5, 10, 15, 20, 25]; type QualityFindingType = (typeof QUALITY_FINDING_TYPES)[number]; type QualityFindingSeverity = (typeof QUALITY_FINDING_SEVERITIES)[number]; type QualityEvidenceQuality = (typeof QUALITY_EVIDENCE_QUALITIES)[number]; /** * How a finding was gathered: a live `runtime-probe`, `static-analysis` of source, or a `mixed` * combination. Present on v2+ reports; v1 reports omit it and are defaulted to static-analysis at * parse time, so readers should treat a defaulted value as "unknown", not a confirmed static check. */ export type QualityEvidenceMethod = (typeof QUALITY_EVIDENCE_METHODS)[number]; /** * Whether a report reviews goat-flow itself (`framework-self`) or a downstream `consumer` project. * Drives self-review filtering; absent on v1 reports, where scope is treated as unspecified. */ export type QualityScope = (typeof QUALITY_SCOPES)[number]; /** Quality workflow mode used to keep history and diffs within comparable report families. */ export type QualityMode = (typeof QUALITY_MODES)[number]; /** * Whether a finding first appeared in this report (`new`) or carried over from the prior same-agent * report (`persisted`). Computed during history comparison; null on findings with no prior context. */ export type QualityDeltaTag = (typeof QUALITY_DELTA_TAGS)[number]; type QualityAuditStatus = (typeof QUALITY_AUDIT_STATUSES)[number]; /** * A single rubric axis score, constrained to the fixed 0-25 five-point band so totals stay * comparable across reports. Values outside this set are rejected by the schema parser. */ export type QualityAxisScore = (typeof QUALITY_SCORE_VALUES)[number]; /** Setup-side quality rubric scores; axis values must sum to `total`. */ export interface QualitySetupScores { total: number; accuracy: QualityAxisScore; relevance: QualityAxisScore; completeness: QualityAxisScore; friction: QualityAxisScore; } /** System-side quality rubric scores; axis values must sum to `total`. */ export interface QualitySystemScores { total: number; usefulness: QualityAxisScore; signal_to_noise: QualityAxisScore; adaptability: QualityAxisScore; learnability: QualityAxisScore; } /** Paired score groups used by quality history and dashboard trend views. */ export interface QualityScores { setup: QualitySetupScores; system: QualitySystemScores; } /** One current agent-emitted quality finding before deterministic IDs are attached. */ export interface QualityFinding { type: QualityFindingType; severity: QualityFindingSeverity; file: string | null; line: number | null; summary: string; detail: string; evidence_quality: QualityEvidenceQuality; /** How the finding was observed. Present on v2+ reports (2026-04-19+). * Absent on v1 reports, defaulted to "static-analysis" at parse time. */ evidence_method: QualityEvidenceMethod; /** Optional compact command provenance for runtime-probe or mixed evidence. * These fields are intentionally summaries, not raw terminal transcripts. */ evidence_command?: string; evidence_exit_code?: number; evidence_summary?: string; evidence_warning_count?: number; evidence_excerpt?: string; delta_tag: QualityDeltaTag | null; } /** Persisted quality finding with a deterministic history/diff ID. */ export interface SavedQualityFinding extends QualityFinding { id: string; } /** Agent-emitted quality report schema accepted by `quality validate`. */ export interface QualityReport { report_kind: typeof QUALITY_REPORT_KIND; goat_flow_version: string; agent: AgentId; project_path: string; run_date: string; audit_status: QualityAuditStatus; /** Optional: "framework-self" for a goat-flow-on-goat-flow review, * "consumer" for a review of a downstream project. Absent on v1 reports. */ scope?: QualityScope; /** Optional: the rubric version under which scores were produced. * Lets readers trace score derivation. Absent on v1 reports. */ rubric_version?: string; /** Optional: the quality workflow that produced the report. * Absent on legacy reports, which are treated as agent-setup history. */ quality_mode?: QualityMode; /** Optional: the previous same-agent report used for delta_tag comparison. * Null or absent means no prior report context was available. */ prior_report_id?: string | null; scores: QualityScores; findings: QualityFinding[]; } /** Saved quality report schema after `attachFindingIds` has materialized finding IDs. */ export interface SavedQualityReport extends Omit<QualityReport, "findings"> { findings: SavedQualityFinding[]; } /** * Discriminated result of a schema parse: either `ok: true` with the validated report, or * `ok: false` with a human-readable `error`. Parsing never throws on bad input - callers must * branch on `ok` rather than try/catch, so a malformed report surfaces as a checked error value. * * @template T - the report shape returned on success (`QualityReport` or `SavedQualityReport`). */ export type ParseResult<T> = { ok: true; report: T; } | { ok: false; error: string; }; /** Parse strictness switch for current emissions versus legacy history files. */ export interface QualityReportParseOptions { requireCurrentFields?: boolean; } export {}; //# sourceMappingURL=schema-types.d.ts.map