import type { ModelMessage, SystemModelMessage } from "ai"; import type { StepCatalog } from "#execution/catalog/step-catalog.js"; import { createCurrentMessages } from "#harness/current-messages.js"; import { type HarnessModelMessage, type UserModelMessage } from "#harness/messages.js"; import type { ModelProfile } from "#harness/model-profile.js"; import type { Step } from "#harness/step/context.js"; import type { HarnessSession } from "#harness/types.js"; export type RequestMessages = ReturnType; /** * The messages one model call sends: the durable prompt, then the step's system instructions and * announcements. Announcements persist ahead of the new input, or after earlier tool results on a * continuation, so later requests keep the full prefix. */ export declare function requestMessages(step: Step, input: { readonly messages: readonly HarnessModelMessage[]; readonly projectedMessages: readonly HarnessModelMessage[]; readonly turnMessages: readonly UserModelMessage[]; readonly catalog: StepCatalog; readonly hidesHeldText: boolean; readonly pendingApprovalsNote: string | undefined; }): RequestMessages; /** The call's system instructions: a retry's note, the agent's system prompt, then the step's. */ export declare function modelInstructions(input: { readonly session: HarnessSession; readonly systemMessages: readonly SystemModelMessage[]; readonly anthropicCache: ModelProfile["anthropicCache"]; readonly extraSystemNote?: string; }): SystemModelMessage | string | undefined; /** A retry's note, trailing the call's messages. */ export declare function withTrailingUserNote(messages: readonly ModelMessage[], note?: string): ModelMessage[]; export declare function mergeSystemInstructions(instructions: readonly SystemModelMessage[]): SystemModelMessage | undefined;