/** * Session transcript hygiene before LLM calls and after persistence. * Subset: no image/async paths here. */ import type { AgentMessage } from '@earendil-works/pi-agent-core'; import type { Api, Model } from '@earendil-works/pi-ai'; import { type TranscriptPolicy } from './transcript-policy.js'; export type TranscriptHygieneParams = { modelApi?: string | null; provider?: string | null; modelId?: string | null; }; export declare function resolvePolicyForModel(model: Model): TranscriptPolicy; /** * Apply provider-aware transcript fixes: thinking drop, tool input cleanup, * tool_use/tool_result pairing repair, strip non-LLM details, optional tool-call ID sanitize. */ export declare function applySessionTranscriptHygiene(messages: AgentMessage[], model: Model): AgentMessage[]; export declare function applySessionTranscriptHygieneWithPolicy(messages: AgentMessage[], policy: TranscriptPolicy): AgentMessage[]; export declare function tryApplySessionTranscriptHygiene(messages: AgentMessage[], model: Model): AgentMessage[]; /** * Hygiene for **writing session files** (gateway UI, history replay). * * Does **not** strip `thinking` blocks — those must remain on disk so web chat can show * reasoning after refresh. `dropThinkingBlocks` exists for **LLM** safety when loading * into the agent (`tryApplySessionTranscriptHygiene` in {@link prepareLoadedSessionMessages}). */ export declare function applySessionTranscriptHygieneForPersistence(messages: AgentMessage[], model: Model): AgentMessage[]; export declare function tryApplySessionTranscriptHygieneForPersistence(messages: AgentMessage[], model: Model): AgentMessage[];