import { AIMessage, ContentBlock, UsageMetadata } from "@langchain/core/messages"; import { ContentBlock as ContentBlock$1, FinalizedContentBlock, MessageMetadata, MessagesEvent, UsageInfo } from "@langchain/protocol"; import { ChatModelStreamEvent } from "@langchain/core/language_models/event"; //#region src/client/stream/messages.d.ts type TextContentStream = AsyncIterable & PromiseLike & { full: AsyncIterable; }; type UsageMetadataStream = AsyncIterable & PromiseLike; type ToolCallsStream = AsyncIterable & PromiseLike> & { full: AsyncIterable>; }; /** * Mutable view of a streamed message as message and content-block events are * assembled into a single structure. */ interface AssembledMessage { id: string; namespace: string[]; blocks: ContentBlock$1[]; node?: string; usage?: UsageInfo; metadata?: MessageMetadata; finishMetadata?: Record; error?: { message: string; code?: string; }; } /** * Symbol keys for assembler → StreamingMessage communication. * Module-private: invisible to external consumers, accessible to * {@link StreamingMessageAssembler} within this file. */ declare const PUSH_TEXT: unique symbol; declare const PUSH_REASONING: unique symbol; declare const PUSH_EVENT: unique symbol; declare const UPDATE_CONTEXT: unique symbol; declare const FINISH: unique symbol; declare const ERROR: unique symbol; /** * Live streaming view of a single message lifecycle, matching the * in-process `ChatModelStream` dual-interface pattern. * * - `text` / `reasoning`: iterate for streaming deltas, or await for * the full concatenated string after the message completes. * - `usage`: promise that resolves with token usage on message-finish. * - `blocks`: the assembled content blocks (updated as deltas arrive). * * Created by {@link StreamingMessageAssembler} and yielded by * the `session.messages` lazy getter. */ declare class StreamingMessage implements AsyncIterable, PromiseLike { #private; readonly id: string; readonly namespace: string[]; node: string | undefined; readonly metadata: MessageMetadata | undefined; readonly assembled: AssembledMessage; constructor(assembled: AssembledMessage); get text(): TextContentStream; get reasoning(): TextContentStream; get usage(): UsageMetadataStream; get toolCalls(): ToolCallsStream; get output(): PromiseLike; get blocks(): ContentBlock$1[]; [Symbol.asyncIterator](): AsyncIterator; then(onfulfilled?: ((value: AIMessage) => TResult1 | PromiseLike) | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike) | null): PromiseLike; [PUSH_EVENT](event: ChatModelStreamEvent): void; [UPDATE_CONTEXT](event: MessagesEvent): void; [PUSH_TEXT](delta: string): void; [PUSH_REASONING](delta: string): void; [FINISH](): void; [ERROR](): void; } /** * Public view yielded by message projections. * * `StreamingMessage` is PromiseLike so callers can still `await` a message * object directly, but TypeScript applies `Awaited` to values produced by * `for await`. Exposing a non-thenable view keeps loop variables typed as the * streaming handle instead of as the finalized `AIMessage`. */ type StreamingMessageHandle = Omit; /** * Emitted by `MessageAssembler.consume()` to describe how a message changed in * response to a single protocol event. */ type MessageAssemblyUpdate = { kind: "message-start"; key: string; message: AssembledMessage; event: MessagesEvent; } | { kind: "content-block-start" | "content-block-delta"; key: string; message: AssembledMessage; index: number; block: ContentBlock$1; event: MessagesEvent; } | { kind: "content-block-finish"; key: string; message: AssembledMessage; index: number; block: FinalizedContentBlock; event: MessagesEvent; } | { kind: "usage"; key: string; message: AssembledMessage; event: MessagesEvent; } | { kind: "message-finish"; key: string; message: AssembledMessage; event: MessagesEvent; } | { kind: "message-error"; key: string; message: AssembledMessage; event: MessagesEvent; }; /** * Incrementally assembles `messages` events into complete message objects. */ declare class MessageAssembler { private readonly activeMessages; private readonly activeByNamespaceNode; private readonly blockIndexByProtocolIndexAndType; /** * Applies a single message event and returns the resulting assembly update. * * @param event - Incoming `messages` event to fold into the assembler state. */ consume(event: MessagesEvent): MessageAssemblyUpdate; private resolveBlockIndex; private resolveFinishBlockIndex; private clearBlockIndexAliases; } //#endregion export { AssembledMessage, MessageAssembler, MessageAssemblyUpdate, StreamingMessage, StreamingMessageHandle }; //# sourceMappingURL=messages.d.ts.map