@mastra/core
Version:
Mastra is a framework for building AI-powered applications and agents with a modern TypeScript stack.
49 lines • 2.18 kB
TypeScript
import type { MastraDBMessage } from '../state/types.js';
/**
* MessageMerger - Handles complex logic for merging assistant messages
*
* When streaming responses from LLMs, we often receive multiple messages that need to be
* merged together:
* - Tool calls that need to be updated with their results
* - Text parts that need to be appended
* - Step-start markers that need to be inserted
*
* This class encapsulates all the complex merging logic that was previously spread
* throughout the MessageList.addOne method.
*/
export declare class MessageMerger {
/**
* Check if a message is sealed (should not be merged into).
* Messages are sealed after observation to preserve observation markers.
*/
static isSealed(message: MastraDBMessage): boolean;
/**
* Check if we should merge an incoming message with the latest message
*
* @param latestMessage - The most recent message in the list
* @param incomingMessage - The message being added
* @param messageSource - The source of the incoming message ('memory', 'input', 'response', 'context')
* @param isLatestFromMemory - Whether the latest message is from memory
* @param agentNetworkAppend - Whether agent network append mode is enabled
*/
static shouldMerge(latestMessage: MastraDBMessage | undefined, incomingMessage: MastraDBMessage, messageSource: string, isLatestFromMemory: boolean, agentNetworkAppend?: boolean): boolean;
/**
* Merge an incoming assistant message into the latest assistant message
*
* This handles:
* - Updating tool invocations with their results
* - Adding new parts in the correct order using anchor maps
* - Inserting step-start markers where needed
* - Updating timestamps and content strings
*/
static merge(latestMessage: MastraDBMessage, incomingMessage: MastraDBMessage): void;
/**
* Add parts from the incoming message to the latest message using anchor positions
*/
private static addPartsToMessage;
/**
* Push a new message part to the latest message
*/
private static pushNewPart;
}
//# sourceMappingURL=MessageMerger.d.ts.map