UNPKG

@mastra/core

Version:
172 lines • 7.19 kB
import type { FilePart, TextPart, UserModelMessage } from '../_types/@internal_ai-sdk-v5/dist/index.d.ts'; import type { MastraDBMessage, MastraProviderMetadata } from './message-list/state/types.js'; /** * @experimental Agent signals are experimental and may change in a future release. */ export type AgentSignalCategory = 'user' | 'state' | 'reactive' | 'notification'; /** * @experimental Agent signals are experimental and may change in a future release. */ export type AgentLegacySignalType = 'user-message' | 'system-reminder'; export type AgentSignalType = AgentSignalCategory | AgentLegacySignalType; export type AgentSignalTagName = string; export type SignalPart = TextPart | SignalFilePart; type SignalFilePart = { type: 'file'; data: string; mediaType: string; filename?: string; providerOptions?: MastraProviderMetadata; }; /** * @experimental Agent signals are experimental and may change in a future release. */ export type AgentSignalContents = string | Array<TextPart | FilePart>; export type AgentSignalAttributes = Record<string, string | number | boolean | null | undefined>; export type AgentStateSignalMode = 'snapshot' | 'delta'; export type AgentStateSignalInput = { id: string; cacheKey: string; contents: AgentSignalContents; mode?: AgentStateSignalMode; value?: unknown; delta?: unknown; attributes?: AgentSignalAttributes; metadata?: Record<string, unknown>; providerOptions?: MastraProviderMetadata; tagName?: AgentSignalTagName; }; export type AgentMessageInput = AgentSignalContents | { contents: AgentSignalContents; attributes?: AgentSignalAttributes; metadata?: Record<string, unknown>; providerOptions?: MastraProviderMetadata; }; type AgentSignalInputBase = { id?: string; createdAt?: Date | string; acceptedAt?: Date | string; tagName?: AgentSignalTagName; contents: AgentSignalContents; attributes?: AgentSignalAttributes; metadata?: Record<string, unknown>; /** * Provider options attached to the resulting prompt turn. Surfaces as `providerOptions` on the * `UserModelMessage` sent to the model and as `content.providerMetadata` on the persisted DB * message (also visible to UI consumers via `useChat` message metadata). */ providerOptions?: MastraProviderMetadata; }; export type AgentSignalInput = (AgentSignalInputBase & { type: 'state'; /** * State signals cannot be transient: they maintain cross-turn tracking * (version/cacheKey/activeCopies) that is rebuilt from persisted history, so a * delivery-only state signal would silently break dedupe. */ transient?: never; }) | (AgentSignalInputBase & { type: Exclude<AgentSignalType, 'state'>; /** * Whether this signal is transient. Defaults to `false`. * * A transient signal is delivered to the model for the current call (it appears in the prompt * for this turn), but it is not retained as part of the conversation: it is not written to * storage and never re-enters the prompt on later turns. Re-send it each turn from a processor * to keep a single fresh copy near the latest message instead of an accumulating history. * * Transient takes precedence over `persist` delivery behaviors: combining them means the * signal is dropped without being stored or delivered, and the accepted result reports * `action: 'discard'`. */ transient?: boolean; }); /** * @experimental Agent signals are experimental and may change in a future release. */ export type AgentSignalDataPart = { type: 'data-user-message' | 'data-signal'; data: { id: string; type: AgentSignalCategory; tagName?: AgentSignalTagName; contents: AgentSignalContents; createdAt: string; acceptedAt?: string; attributes?: AgentSignalAttributes; metadata?: Record<string, unknown>; providerOptions?: MastraProviderMetadata; transient?: boolean; }; transient: true; }; type CreatedAgentSignalBase = Omit<AgentSignalInputBase, 'id' | 'createdAt' | 'acceptedAt'> & { __isCreatedSignal: true; id: string; createdAt: Date; acceptedAt?: Date; toDBMessage: (options?: { threadId?: string; resourceId?: string; }) => MastraDBMessage; toLLMMessage: () => UserModelMessage; toDataPart: () => AgentSignalDataPart; }; /** * A signal created and validated by `createSignal`. * * @experimental Agent signals are experimental and may change in a future release. */ export type CreatedAgentSignal = (CreatedAgentSignalBase & { type: 'state'; transient?: never; }) | (CreatedAgentSignalBase & { type: Exclude<AgentSignalCategory, 'state'>; transient?: boolean; }); export declare function isMastraSignalMessage(message: MastraDBMessage): message is MastraDBMessage & { role: 'signal'; }; /** * True for a signal DB message created with `transient: true`. * * @mastra/memory keeps a matching local predicate because its peer range includes core versions * without this export. Keep both copies in sync until that peer range can be tightened. * * @experimental Agent signals are experimental and may change in a future release. */ export declare function isTransientSignalMessage(message: MastraDBMessage): boolean; export declare function signalToXmlMarkup(signal: Pick<AgentSignalInput, 'type' | 'tagName' | 'attributes'> & { contents?: string; }): string; export declare function isCreatedAgentSignal(input: unknown): input is CreatedAgentSignal; export declare function createSignal(input: Extract<AgentSignalInput, { type: 'state'; }>): Extract<CreatedAgentSignal, { type: 'state'; }>; export declare function createSignal(input: Extract<AgentSignalInput, { type: Exclude<AgentSignalType, 'state'>; }>): Extract<CreatedAgentSignal, { type: Exclude<AgentSignalCategory, 'state'>; }>; export declare function createSignal(input: AgentSignalInput): CreatedAgentSignal; /** * Resolve delivery option attributes into concrete `attributes` on a signal. * Returns a new signal with the selected branch's `attributes` merged into * top-level `attributes`. * * @experimental */ export declare function resolveDeliveryAttributes(signal: CreatedAgentSignal, attributes: AgentSignalAttributes | undefined): CreatedAgentSignal; export declare function signalToMessage(signal: AgentSignalInput | CreatedAgentSignal): UserModelMessage; export declare function signalToMastraDBMessage(signal: AgentSignalInput | CreatedAgentSignal, options?: { threadId?: string; resourceId?: string; }): MastraDBMessage; export declare function signalToDataPartFormat(signal: AgentSignalInput | CreatedAgentSignal): AgentSignalDataPart; export declare function mastraDBMessageToSignal(message: MastraDBMessage): CreatedAgentSignal; export declare function createMessageSignal(input: AgentMessageInput, options?: Pick<AgentSignalInput, 'id' | 'createdAt' | 'acceptedAt'>): CreatedAgentSignal; export declare function dataPartToSignal(part: AgentSignalDataPart): CreatedAgentSignal; export {}; //# sourceMappingURL=signals.d.ts.map