import type { RunFeedbackCandidate, VerifyResult } from "./run.js"; export declare const FEEDBACK_SCHEMA = "humanish.feedback.v1"; export declare const FEEDBACK_RESULT_SCHEMA = "humanish.feedback-result.v1"; export interface FeedbackDraft { schema: typeof FEEDBACK_SCHEMA; run_id: string; adapter_id: string; scenario_id: string; persona_id: string; actor: RunFeedbackCandidate["actor"]; substrate: RunFeedbackCandidate["substrate"]; failure_owner: RunFeedbackCandidate["failure_owner"]; summary: string; expected: string; actual: string; source_candidate_id?: string; source_analysis?: { id: string; sha256: string; finding_id: string; finding_sha256: string; correction_id: string | null; }; source_bundle: string; evidence: Array<{ path: string; kind: RunFeedbackCandidate["evidence"][number]["kind"]; note: string; }>; redaction: { status: "passed"; notes: string; }; idempotency_key: string; proposed_next_state: RunFeedbackCandidate["proposed_next_state"]; acceptance_proof: string[]; } export interface FeedbackResult { schema: typeof FEEDBACK_RESULT_SCHEMA; ok: boolean; cwd: string; run: string; draftPath?: string; issuePath?: string; issueMarkdown?: string; issueUrl?: string; draft?: FeedbackDraft; /** Every usable candidate on the bundle, so a multi-lane study's second and third findings can be * chosen with `--candidate` instead of being invisible behind the first (#609). */ candidates?: FeedbackCandidateSummary[]; shareSafety?: VerifyResult["shareSafety"]; error?: { code: "HUMANISH_RUN_NOT_FOUND" | "HUMANISH_INVALID_RUN_BUNDLE" | "HUMANISH_INVALID_FEEDBACK_DRAFT" | "HUMANISH_FEEDBACK_SHARE_SAFETY_BLOCKED" | "HUMANISH_FEEDBACK_CANDIDATE_NOT_FOUND"; message: string; }; } /** One row of `feedback list`: enough to choose a candidate, never the evidence itself. */ export interface FeedbackCandidateSummary { id: string; stream_id?: string; persona_id: string; failure_owner: RunFeedbackCandidate["failure_owner"]; summary: string; } export interface FeedbackDraftOptions { /** A candidate id from `feedback list`. Absent: the first usable candidate, as before. */ candidate?: string; /** Explicitly select an independent interpretation, separate from participant-authored candidates. */ analysis?: string; finding?: string; } export declare function draftFeedback(cwdInput: string, runInput: string, options?: FeedbackDraftOptions): Promise; export declare function verifyFeedback(cwdInput: string, runInput: string, options?: FeedbackDraftOptions): Promise; export declare function renderIssueMarkdown(cwdInput: string, runInput: string, repo: string, options?: FeedbackDraftOptions): Promise; export declare function renderIssueUrl(cwdInput: string, runInput: string, repo: string, options?: FeedbackDraftOptions): Promise; export declare function listFeedback(cwdInput: string, runInput: string): Promise;