/** * Where operator words enter the ledger (DES-decision-capture §4.3.1 / §4.3.2 / §4.3.3, DC-S4a + S4b). * * The structured hosts — a gate note, an elicitation answer, a run inject — call * {@link ingestDecision} POST-COMMIT, after their action succeeded; the studio chat recorder * (`chat-recorder.ts`) calls it at the end of a turn with the model's labels. Only a `human` actor is * recorded: an agent's words are never a decision source (operator decision 4). `auth_mode` is the * daemon's resolved auth and decides auto eligibility (§4.4). Derivation is deterministic; under * `WICKED_DECISIONS=on` the record's route is then acted on (auto → `remember()`, offer → the review * queue). Never throws into the host route: a failure is logged and the host's answer stands. */ import type { Actor } from '../core/types.js'; import { type DecisionService } from './land.js'; import type { DecisionHost, DecisionModelLabels, DecisionRecord, DecisionType } from './types.js'; export interface HostWords { host: Extract; actor: Actor; /** The operator's verbatim free text ('' when the decision was a bare choice). */ words: string; /** A bare approve/reject, or a picked elicitation option, when there were no words. */ choice?: string; projectId: string | null; /** The structured hosts: the run the words steered. */ runId?: string; ord?: number; gateId?: string; elicitationId?: string; /** The chat host: the chat and the turn whose operator message carried the words. */ chatId?: string; turnId?: string; /** The chat host: the recorder seat's labels for this span, and the other seats' votes. */ labels?: DecisionModelLabels; votes?: Array<{ cli_key: string; type: DecisionType; codify: boolean; }>; /** The chat host, DOC-4: the proposal a go-ahead approved (the previous turn, the recorder seat). */ proposal?: { turn_id: string; cli_key: string; excerpt: string; } | null; /** * DOC-4: the decision text written from the approved proposal (+ amendment). It replaces the * derived statement — a bare approval has no template of its own — while ORIGIN keeps the words. */ statement?: string; } export declare function ingestDecision(service: DecisionService, input: HostWords): Promise; //# sourceMappingURL=ingest.d.ts.map