@mastra/core
Version:
Mastra is the Typescript framework for building AI agents and assistants. It’s used by some of the largest companies in the world to build internal AI automation tooling and customer-facing agents.
258 lines • 10.8 kB
TypeScript
import type { LanguageModelV1Message } from '@ai-sdk/provider';
import type { LanguageModelV2Prompt } from '@ai-sdk/provider-v5';
import * as AIV4 from 'ai';
import * as AIV5 from 'ai-v5';
import type { AIV4Type, AIV5Type } from './types.js';
type AIV5LanguageModelV2Message = LanguageModelV2Prompt[0];
type AIV5ResponseMessage = AIV5.StepResult<any>['response']['messages'][number];
type MastraMessageShared = {
id: string;
role: 'user' | 'assistant' | 'system';
createdAt: Date;
threadId?: string;
resourceId?: string;
type?: string;
};
export type MastraMessageContentV2 = {
format: 2;
parts: (AIV4Type.UIMessage['parts'][number] & {
providerMetadata?: AIV5Type.ProviderMetadata;
})[];
experimental_attachments?: AIV4Type.UIMessage['experimental_attachments'];
content?: AIV4Type.UIMessage['content'];
toolInvocations?: AIV4Type.UIMessage['toolInvocations'];
reasoning?: AIV4Type.UIMessage['reasoning'];
annotations?: AIV4Type.UIMessage['annotations'];
metadata?: Record<string, unknown>;
};
export type MastraMessageV2 = MastraMessageShared & {
content: MastraMessageContentV2;
};
export type MastraMessageContentV3 = {
format: 3;
parts: AIV5Type.UIMessage['parts'];
metadata?: AIV5Type.UIMessage['metadata'];
};
export type MastraMessageV3 = MastraMessageShared & {
role: AIV5Type.UIMessage['role'];
content: MastraMessageContentV3;
};
export type MastraMessageV1 = {
id: string;
content: string | AIV4Type.CoreMessage['content'];
role: 'system' | 'user' | 'assistant' | 'tool';
createdAt: Date;
threadId?: string;
resourceId?: string;
toolCallIds?: string[];
toolCallArgs?: Record<string, unknown>[];
toolNames?: string[];
type: 'text' | 'tool-call' | 'tool-result';
};
export type UIMessageWithMetadata = AIV4Type.UIMessage & {
metadata?: Record<string, unknown>;
};
export type MessageInput = AIV5Type.UIMessage | AIV5Type.ModelMessage | UIMessageWithMetadata | AIV4Type.Message | AIV4Type.CoreMessage | MastraMessageV1 | MastraMessageV2 | MastraMessageV3;
export { convertMessages } from './utils/convert-messages.js';
export type { OutputFormat } from './utils/convert-messages.js';
type MessageSource = 'memory' | 'response' | 'input' | 'system' | 'context' | 'user';
export type MessageListInput = string | string[] | MessageInput | MessageInput[];
export declare class MessageList {
private messages;
private systemMessages;
private taggedSystemMessages;
private memoryInfo;
private memoryMessages;
private newUserMessages;
private newResponseMessages;
private userContextMessages;
private memoryMessagesPersisted;
private newUserMessagesPersisted;
private newResponseMessagesPersisted;
private userContextMessagesPersisted;
private generateMessageId?;
private _agentNetworkAppend;
constructor({ threadId, resourceId, generateMessageId, _agentNetworkAppend, }?: {
threadId?: string;
resourceId?: string;
generateMessageId?: AIV4Type.IdGenerator;
});
add(messages: MessageListInput, messageSource: MessageSource): this;
getLatestUserContent(): string | null;
get get(): {
all: {
v3: () => MastraMessageV3[];
v2: () => MastraMessageV2[];
v1: () => MastraMessageV1[];
aiV5: {
model: () => AIV5Type.ModelMessage[];
ui: () => AIV5Type.UIMessage[];
prompt: () => AIV5Type.ModelMessage[];
llmPrompt: (options?: {
downloadConcurrency?: number;
downloadRetries?: number;
supportedUrls?: Record<string, RegExp[]>;
}) => Promise<LanguageModelV2Prompt>;
};
prompt: () => AIV4.CoreMessage[];
ui: () => UIMessageWithMetadata[];
core: () => AIV4Type.CoreMessage[];
aiV4: {
ui: () => UIMessageWithMetadata[];
core: () => AIV4Type.CoreMessage[];
prompt: () => AIV4.CoreMessage[];
llmPrompt: () => AIV4Type.LanguageModelV1Prompt;
};
};
remembered: {
v3: () => MastraMessageV3[];
v2: () => MastraMessageV2[];
v1: () => import("../..").MastraMessageV1[];
aiV5: {
model: () => AIV5.ModelMessage[];
ui: () => AIV5Type.UIMessage[];
};
ui: () => UIMessageWithMetadata[];
core: () => AIV4Type.CoreMessage[];
aiV4: {
ui: () => UIMessageWithMetadata[];
core: () => AIV4Type.CoreMessage[];
};
};
input: {
v3: () => MastraMessageV3[];
v2: () => MastraMessageV2[];
v1: () => import("../..").MastraMessageV1[];
aiV5: {
model: () => AIV5.ModelMessage[];
ui: () => AIV5Type.UIMessage[];
};
ui: () => UIMessageWithMetadata[];
core: () => AIV4.CoreMessage[];
aiV4: {
ui: () => UIMessageWithMetadata[];
core: () => AIV4Type.CoreMessage[];
};
};
response: {
v3: () => MastraMessageV3[];
v2: () => MastraMessageV2[];
v1: () => MastraMessageV1[];
aiV5: {
ui: () => AIV5Type.UIMessage[];
model: () => AIV5ResponseMessage[];
modelContent: (stepNumber?: number) => AIV5Type.StepResult<any>["content"];
stepContent: (message?: AIV5Type.ModelMessage) => AIV5Type.StepResult<any>["content"];
};
aiV4: {
ui: () => UIMessageWithMetadata[];
core: () => AIV4Type.CoreMessage[];
};
};
};
get getPersisted(): {
remembered: {
v2: () => MastraMessageV2[];
v1: () => import("../..").MastraMessageV1[];
ui: () => UIMessageWithMetadata[];
core: () => AIV4.CoreMessage[];
};
input: {
v3: () => MastraMessageV3[];
v2: () => MastraMessageV2[];
v1: () => MastraMessageV1[];
ui: () => UIMessageWithMetadata[];
core: () => AIV4.CoreMessage[];
};
taggedSystemMessages: Record<string, AIV4.CoreSystemMessage[]>;
response: {
v3: () => MastraMessageV3[];
v2: () => MastraMessageV2[];
ui: () => UIMessageWithMetadata[];
};
};
get clear(): {
input: {
v2: () => MastraMessageV2[];
};
response: {
v2: () => MastraMessageV2[];
};
};
private all;
private remembered;
private rememberedPersisted;
private input;
private inputPersisted;
private response;
private responsePersisted;
drainUnsavedMessages(): MastraMessageV2[];
getEarliestUnsavedMessageTimestamp(): number | undefined;
getSystemMessages(tag?: string): AIV4Type.CoreMessage[];
addSystem(messages: AIV4Type.CoreMessage | AIV4Type.CoreMessage[] | AIV5Type.ModelMessage | AIV5Type.ModelMessage[] | string | string[] | null, tag?: string): this;
private aiV4UIMessagesToAIV4CoreMessages;
private sanitizeAIV4UIMessages;
private addOneSystem;
private isDuplicateSystem;
private static mastraMessageV2ToAIV4UIMessage;
private getMessageById;
private shouldReplaceMessage;
private addOne;
private pushMessageToSource;
/**
* Pushes a new message part to the latest message.
* @param latestMessage - The latest message to push the part to.
* @param newMessage - The new message to push the part from.
* @param part - The part to push.
* @param insertAt - The index at which to insert the part. Optional.
*/
private pushNewMessagePart;
/**
* Upserts parts of messageV2 into latestMessage based on the anchorMap.
* This is used when appending a message to the last assistant message to ensure that parts are inserted in the correct order.
* @param latestMessage - The latest message to upsert parts into.
* @param messageV2 - The message to upsert parts from.
* @param anchorMap - The anchor map to use for upserting parts.
*/
private addPartsToLatestMessage;
private inputToMastraMessageV2;
private lastCreatedAt?;
private generateCreatedAt;
private newMessageId;
private mastraMessageV1ToMastraMessageV2;
private hydrateMastraMessageV3Fields;
private hydrateMastraMessageV2Fields;
private aiV4UIMessageToMastraMessageV2;
private aiV4CoreMessageToMastraMessageV2;
static isAIV4UIMessage(msg: MessageInput): msg is AIV4Type.UIMessage;
static isAIV5CoreMessage(msg: MessageInput): msg is AIV5Type.ModelMessage;
static isAIV4CoreMessage(msg: MessageInput): msg is AIV4Type.CoreMessage;
static isMastraMessage(msg: MessageInput): msg is MastraMessageV2 | MastraMessageV1 | MastraMessageV3;
static isMastraMessageV1(msg: MessageInput): msg is MastraMessageV1;
static isMastraMessageV2(msg: MessageInput): msg is MastraMessageV2;
static isMastraMessageV3(msg: MessageInput): msg is MastraMessageV3;
private static getRole;
private static cacheKeyFromAIV4Parts;
static coreContentToString(content: AIV4Type.CoreMessage['content']): string;
private static cacheKeyFromAIV4CoreMessageContent;
private static messagesAreEqual;
private cleanV3Metadata;
static aiV4CoreMessageToV1PromptMessage(coreMessage: AIV4Type.CoreMessage): LanguageModelV1Message;
static aiV5ModelMessageToV2PromptMessage(modelMessage: AIV5Type.ModelMessage): AIV5LanguageModelV2Message;
private static mastraMessageV3ToV2;
private mastraMessageV2ToMastraMessageV3;
private aiV5UIMessagesToAIV5ModelMessages;
private addStartStepPartsForAIV5;
private sanitizeV5UIMessages;
private static mastraMessageV3ToAIV5UIMessage;
private aiV5ModelMessagesToAIV4CoreMessages;
private aiV4CoreMessagesToAIV5ModelMessages;
private aiV5UIMessageToMastraMessageV3;
private aiV5ModelMessageToMastraMessageV3;
static hasAIV5UIMessageCharacteristics(msg: AIV5Type.UIMessage | AIV4Type.UIMessage | AIV4Type.Message): msg is AIV5Type.UIMessage;
static isAIV5UIMessage(msg: MessageInput): msg is AIV5Type.UIMessage;
static hasAIV5CoreMessageCharacteristics(msg: AIV4Type.CoreMessage | AIV5Type.ModelMessage | AIV4Type.Message): msg is AIV5Type.ModelMessage;
private static cacheKeyFromAIV5Parts;
private static cacheKeyFromAIV5ModelMessageContent;
}
//# sourceMappingURL=index.d.ts.map