import { type PageTraits } from "./capture.js"; import { type NoteAssessment, type BuildHint } from "./taste-fidelity.js"; import { type PortFidelityResult } from "./port-fidelity.js"; import type { TasteStore } from "./taste-store.js"; export { tasteHome } from "./taste-store.js"; export type TasteSeverity = "block" | "warn" | "nit"; export type TasteRule = { rule_id: string; clause_text: string; category: string; severity_default: TasteSeverity; negative_prompt: string; owner: "taste" | "raven"; delegate_to: string; scope: string; }; export type TasteCorpusRecord = { artifact: string; verdict: "accept" | "revise" | "reject"; violated_rule: string; severity: TasteSeverity | ""; wrong: string; right: string; id: string; labeled_at: string; }; export type TasteProfile = { name: string; version: 1; created_at: string; updated_at: string; rules: TasteRule[]; corpus: TasteCorpusRecord[]; }; export type TasteFinding = { rule_id: string; clause_cited: string; severity: TasteSeverity; owner: "taste" | "raven"; source: "taste" | "raven"; evidence: string; fix: string; }; export type TasteAuditResult = { tool: "audit_taste"; profile: string; target: "html" | "text"; findings: TasteFinding[]; suppressed: { rule_id: string; corpus_id: string; evidence: string; }[]; not_assessed: { rule_id: string; reason: string; }[]; skipped_out_of_scope: { rule_id: string; scope: string; }[]; disabled_by_binding: { rule_id: string; severity: "off"; }[]; binding: string; surface_applied: string; voice_note?: string; design_notes?: Record; note_assessments?: NoteAssessment[]; fidelity_findings?: TasteFinding[]; port_fidelity?: PortFidelityResult; build_hints?: BuildHint[]; calibration_hint?: string; quoted_evidence_exempt?: { elements: number; chars: number; }; note_fidelity_skipped?: string; verdict: "BLOCK" | "WARN" | "PASS"; verdict_line: string; }; export type SurfaceOverride = { rule_id: string; severity: TasteSeverity | "off"; }; export type ReferenceCapture = { url: string; liked?: string; traits?: PageTraits; captured_at?: string; }; export type SurfaceBinding = { project: string; surface: string; hosts: string[]; overrides: SurfaceOverride[]; voice_note: string; design_notes: Record; references?: ReferenceCapture[]; bound_at: string; uncalibrated_ack?: string; }; export type TasteDecisionSource = "user-directed" | "user-approved" | "user-corrected"; export type TasteDecision = { id: string; project: string; dimension: string; decision: string; rejected: string[]; why: string; source: TasteDecisionSource; recorded_at: string; }; export type TasteInterviewQuestion = { id: string; question: string; skippable: boolean; priority: "core" | "extended"; options?: string[]; examples?: { register: string; sample: string; }[]; suggestions?: string[]; }; type PageIssueInput = { rule: string; severity: string; status?: "pass" | "fail" | "indeterminate"; message: string; fix?: string; }; export declare const TASTE_TEMPLATE_NAMES: readonly ["portfolio", "saas-marketing", "app"]; export type TasteTemplateName = typeof TASTE_TEMPLATE_NAMES[number]; export declare function createTasteProfile(store: TasteStore, input: { name: string; rules?: unknown[]; corpus?: unknown[]; markdown?: string; template?: TasteTemplateName; }): Promise; export declare function getTasteProfile(store: TasteStore, name: string): Promise; export declare function listTasteProfiles(store: TasteStore): Promise<{ name: string; rules: number; corpus: number; updated_at: string; }[]>; export declare function labelFinding(store: TasteStore, profileName: string, rec: { artifact: string; verdict: string; violated_rule: string; severity: string; wrong: string; right: string; }): Promise<{ profile: string; corpus_count: number; record: TasteCorpusRecord; }>; export declare function ruleInScope(rule: TasteRule, surface?: string): boolean; export declare function getTasteInterview(store: TasteStore, profileName: string, project?: string, mode?: "kickoff" | "refine", depth?: "first_run" | "full"): Promise<{ tool: "get_taste_interview"; profile: string; project: string; existing_binding: SurfaceBinding | null; scopes: { scope: string; rules: { rule_id: string; clause_text: string; severity_default: TasteSeverity; }[]; }[]; voice_rules: { rule_id: string; clause_text: string; severity_default: TasteSeverity; }[]; rule_ids: string[]; questions: TasteInterviewQuestion[]; more_questions: TasteInterviewQuestion[]; then: string; }>; export declare function bindTasteSurface(store: TasteStore, profileName: string, input: { project: string; surface: string; hosts?: unknown; overrides?: unknown; voice_note?: unknown; design_notes?: unknown; references?: unknown; uncalibrated_ack?: unknown; }): Promise; export declare function recordTasteDecision(store: TasteStore, profileName: string, input: { project: string; dimension: string; decision: string; rejected?: unknown; why?: unknown; source?: unknown; }): Promise; export declare function listTasteDecisions(store: TasteStore, profileName: string, filter?: { project?: string; dimension?: string; }): Promise; export declare function listSurfaceBindings(store: TasteStore, profileName: string): Promise; export declare function resolveSurfaceBinding(store: TasteStore, profileName: string, hints: { project?: string; url?: string; }): Promise; export declare function isPngPathReference(url: string): boolean; export declare function checkBindingConsistency(design_notes: Record, references: ReferenceCapture[]): string[]; export declare function auditTaste(store: TasteStore, input: { profile: string | TasteProfile; html?: string; text?: string; source_text?: string; page_issues?: PageIssueInput[]; surface?: string; project?: string; binding?: SurfaceBinding | null; traits?: PageTraits; document_kind?: "artifact" | "portrait"; }): Promise; export declare function stripQuotedEvidence(html: string): { stripped: string; elements: number; chars: number; };