/** * calibration-engine.ts * * Rubric-loading and feedback-context construction for the /attempt command. * * Rubric resolution order (highest priority first): * 1. /.pisces/rubric.json — dropped here by a domain package on activate * 2. /skills/attempt/rubric.json — Core fallback * * Domain packages call setIntegrityProfile() from integrity-guard with the * loaded spec's integrityProfile so the guard picks up skill routing automatically. */ import { type RubricSpec, type RubricSummary } from "@aethrekh/rubric-schema"; import type { AgeGroup } from "./workspace-detector"; /** * Infers an attempt type from an optional file extension and/or an explicit hint. * The hint (e.g. passed as a CLI flag `--type essay`) takes precedence. */ export declare function classifyAttemptType(filePath?: string, hint?: string): string; export interface RubricLoadResult { spec: RubricSpec; source: string; } /** * Returns only the disclosure-safe summary for a loaded rubric. * This is the ONLY sanctioned way to surface rubric information to users. * Never pass the full RubricLoadResult or RubricSpec to user-facing code paths. */ export declare function getRubricSummary(result: RubricLoadResult): RubricSummary; /** * Loads and validates a RubricSpec from the first resolvable path. * Returns null if no valid rubric is found (caller should fall back gracefully). */ export declare function loadRubric(cwd?: string): RubricLoadResult | null; export interface FeedbackContext { /** Markdown rubric table for injection into the model prompt */ rubricMarkdown: string; /** Deduplicated gap summary from correction-memory (may be empty) */ gapSummary: string; } /** * Builds the markdown context block that gets injected into the conversation * before the model evaluates a submitted attempt. */ export declare function buildFeedbackContext(spec: RubricSpec, gapSummary: string): FeedbackContext; /** * Assembles the full injection string that goes into the conversation * as a structured context block ahead of the model's evaluation. */ export declare function buildAttemptInjection(rubricResult: RubricLoadResult | null, gapSummary: string, submittedContent: string, ageGroup?: AgeGroup | null): string; //# sourceMappingURL=calibration-engine.d.ts.map