@mastra/core
Version:
41 lines • 2.35 kB
TypeScript
import type { LanguageModelV2Prompt } from '../../../_types/@ai-sdk_provider-v5/dist/index.d.ts';
import type { LanguageModelV1Prompt, CoreMessage as CoreMessageV4 } from '../../../_types/@internal_ai-sdk-v4/dist/index.d.ts';
import type { AIV5Type } from '../types.js';
type AIV5LanguageModelV2Message = LanguageModelV2Prompt[0];
type LanguageModelV1Message = LanguageModelV1Prompt[0];
/**
* Convert an AI SDK V4 CoreMessage to a V1 LanguageModel prompt message.
* Used for creating LLM prompt messages without AI SDK streamText/generateText.
*/
export declare function aiV4CoreMessageToV1PromptMessage(coreMessage: CoreMessageV4): LanguageModelV1Message;
/**
* Convert an AI SDK V5 ModelMessage to a V2 LanguageModel prompt message.
* Used for creating LLM prompt messages without AI SDK streamText/generateText.
*/
export declare function aiV5ModelMessageToV2PromptMessage(modelMessage: AIV5Type.ModelMessage): AIV5LanguageModelV2Message;
/**
* Convert a V2 (AI SDK v5 / spec `v2`) prompt into the shape AI SDK v6
* (spec `v3`) providers expect, by translating tool-result `media` parts into
* the `image-data`/`file-data` content parts that v6 providers consume.
*
* This is a single-responsibility conversion meant to be chained after the
* base v5 prompt build: `aiV6.llmPrompt()` = `aiV5.llmPrompt()` -> this.
*
* Mastra's `toModelOutput` and the vendored AI SDK v5 use `{ type: 'media' }`
* as the authored multimodal tool-result content type. AI SDK v6 added a
* `mapToolResultOutput` step that converts `media` -> `image-data` (for
* `image/*` media types) or `file-data` (everything else) before the prompt
* reaches the provider, and v6 providers (e.g. `@ai-sdk/anthropic@3`) only
* recognize `image-data`/`file-data` — they have no `media` case. The vendored
* v5 converter does not run that translation, so a v5-built prompt handed to a
* v6 provider drops the raw `media` part (image tool results arrive empty).
*
* This MUST only run for v6 (`v3`) providers: v5 providers (spec `v2`) accept
* `media` and have no `image-data`/`file-data` case, so translating for them
* would re-break v5.
*
* See: https://github.com/mastra-ai/mastra/issues/17876
*/
export declare function aiV5PromptToAIV6Prompt(prompt: LanguageModelV2Prompt): LanguageModelV2Prompt;
export {};
//# sourceMappingURL=to-prompt.d.ts.map