import { Serializable } from '../internals/serializable.cjs'; import { TextPart, ToolCallPart, ImagePart, FilePart, ToolResultPart } from 'ai'; import '../internals/types.cjs'; import '../internals/helpers/guards.cjs'; /** * Copyright 2025 © BeeAI a Series of LF Projects, LLC * SPDX-License-Identifier: Apache-2.0 */ type MessageRole = "user" | "system" | "tool" | "assistant"; type MessageContentPart = TextPart | ToolCallPart | ImagePart | FilePart | ToolResultPart; interface MessageMeta { [key: string]: any; createdAt?: Date; } interface MessageInput { id?: string; role: MessageRole; text: string; meta?: MessageMeta; } declare abstract class Message extends Serializable { readonly meta: MessageMeta; id: string | undefined; abstract readonly role: R; readonly content: T[]; constructor(content: T | T[] | string, meta?: MessageMeta, id?: string | undefined); protected assertContent(content: T): asserts content is T; protected abstract fromString(input: string): T; static of({ role, text, meta, id }: MessageInput): Message; get text(): string; getTexts(): TextPart[]; createSnapshot(): { id: string | undefined; content: T[]; meta: MessageMeta; role: R; }; loadSnapshot(snapshot: ReturnType): void; toPlain(): { readonly id: string | undefined; readonly role: R; readonly content: T[]; }; merge(other: Message): void; static fromChunks(this: new (...args: any[]) => M2, chunks: M2[]): M2; [Symbol.iterator](): Iterator; } declare class AssistantMessage extends Message { readonly role = "assistant"; getToolCalls(): ToolCallPart[]; protected fromString(text: string): TextPart; protected assertContent(content: TextPart | ToolCallPart | FilePart): asserts content is TextPart | ToolCallPart | FilePart; } declare class ToolMessage extends Message { readonly role = "tool"; getToolResults(): ToolResultPart[]; protected fromString(text: string): ToolResultPart; protected assertContent(content: ToolResultPart): asserts content is ToolResultPart; } declare class SystemMessage extends Message { readonly role: MessageRole; protected fromString(text: string): TextPart; } declare class UserMessage extends Message { readonly role = "user"; getImages(): ImagePart[]; getFiles(): FilePart[]; protected fromString(text: string): TextPart; } declare const Role: { readonly ASSISTANT: "assistant"; readonly SYSTEM: "system"; readonly USER: "user"; }; declare class CustomMessage extends Message { role: string; constructor(role: string, content: MessageContentPart | string, meta?: MessageMeta, id?: string); protected fromString(input: string): MessageContentPart; } export { AssistantMessage, CustomMessage, Message, type MessageContentPart, type MessageInput, type MessageMeta, type MessageRole, Role, SystemMessage, ToolMessage, UserMessage };