import { type UIMessage } from 'ai'; import type { ConversationOutcome } from '../outcomes/types.js'; import type { ChoiceOption } from '../types/selection.js'; import type { StreamPart } from '../types/stream.js'; export type KuralleMetadata = { sessionId?: string; }; export type KuralleDataParts = { 'kuralle-node': { event: 'enter' | 'exit'; node: string; }; 'kuralle-flow': { event: 'enter' | 'transition' | 'end'; flow?: string; from?: string; to?: string; reason?: string; }; 'kuralle-handoff': { targetAgent: string; reason?: string; }; 'kuralle-interactive': { nodeId: string; prompt: string; options: ChoiceOption[]; }; 'kuralle-safety': { kind: 'safety-blocked' | 'pipeline-validation-block'; moderator?: string; rationale: string; userFacingMessage?: string; }; 'kuralle-outcome': { outcome: ConversationOutcome; }; 'kuralle-control': { event: 'interrupted' | 'paused'; reason?: string; waitingFor?: string; interrupt?: import('../types/stream.js').HitlInterrupt; }; 'kuralle-custom': { name: string; data: unknown; }; }; export type KuralleUIMessage = UIMessage; export declare function harnessToUIMessageStream(source: AsyncIterable, opts?: { sessionId?: string; }): ReadableStream;