@mastra/ai-sdk 1.1.5-alpha.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,63 @@
1
1
  # @mastra/ai-sdk
2
2
 
3
+ ## 1.2.0
4
+
5
+ ### Minor Changes
6
+
7
+ - Exposes `messageMetadata` option in `handleChatStream` for attaching custom metadata to streamed messages. ([#14315](https://github.com/mastra-ai/mastra/pull/14315))
8
+
9
+ ```ts
10
+ const stream = await handleChatStream({
11
+ mastra,
12
+ agentId: 'my-agent',
13
+ params,
14
+ messageMetadata: () => ({ createdAt: new Date().toISOString() }),
15
+ });
16
+ ```
17
+
18
+ ### Patch Changes
19
+
20
+ - Added support for AI SDK v6 response helpers while keeping the existing v5 stream path backwards compatible. ([#14405](https://github.com/mastra-ai/mastra/pull/14405))
21
+
22
+ ```ts
23
+ import { toAISdkStream } from '@mastra/ai-sdk';
24
+
25
+ // Existing default path for AI SDK v5
26
+ const v5Stream = toAISdkStream(mastraStream, { from: 'agent' });
27
+
28
+ // Use the v6 stream contract with AI SDK v6 response helpers
29
+ const v6Stream = toAISdkStream(mastraStream, { from: 'agent', version: 'v6' });
30
+ ```
31
+
32
+ `toAISdkStream`, the framework-agnostic `handle*Stream()` helpers, and the `chatRoute()` / `networkRoute()` / `workflowRoute()` route helpers keep the existing v5/default behavior. Pass `version: 'v6'` when your app is typed against AI SDK v6 response helpers.
33
+
34
+ - Fixed `withMastra` to accept `LanguageModelV3` models from the latest AI SDK (`@ai-sdk/openai@3+`, `ai@6+`). Previously, passing a V3 model caused a TypeScript error: `LanguageModelV3 is not assignable to LanguageModelV2`. The function now accepts both `LanguageModelV2` and `LanguageModelV3` via overloads. ([#14380](https://github.com/mastra-ai/mastra/pull/14380))
35
+
36
+ - Updated dependencies [[`cb611a1`](https://github.com/mastra-ai/mastra/commit/cb611a1e89a4f4cf74c97b57e0c27bb56f2eceb5), [`da93115`](https://github.com/mastra-ai/mastra/commit/da931155c1a9bc63d455d3d86b4ec984db5991fe), [`62d1d3c`](https://github.com/mastra-ai/mastra/commit/62d1d3cc08fe8182e7080237fd975de862ec8c91), [`9e1a3ed`](https://github.com/mastra-ai/mastra/commit/9e1a3ed07cfafb5e8e19a796ce0bee817002d7c0), [`8681ecb`](https://github.com/mastra-ai/mastra/commit/8681ecb86184d5907267000e4576cc442a9a83fc), [`28d0249`](https://github.com/mastra-ai/mastra/commit/28d0249295782277040ad1e0d243e695b7ab1ce4), [`681ee1c`](https://github.com/mastra-ai/mastra/commit/681ee1c811359efd1b8bebc4bce35b9bb7b14bec), [`bb0f09d`](https://github.com/mastra-ai/mastra/commit/bb0f09dbac58401b36069f483acf5673202db5b5), [`a579f7a`](https://github.com/mastra-ai/mastra/commit/a579f7a31e582674862b5679bc79af7ccf7429b8), [`5f7e9d0`](https://github.com/mastra-ai/mastra/commit/5f7e9d0db664020e1f3d97d7d18c6b0b9d4843d0), [`d7f14c3`](https://github.com/mastra-ai/mastra/commit/d7f14c3285cd253ecdd5f58139b7b6cbdf3678b5), [`0efe12a`](https://github.com/mastra-ai/mastra/commit/0efe12a5f008a939a1aac71699486ba40138054e)]:
37
+ - @mastra/core@1.15.0
38
+
39
+ ## 1.2.0-alpha.1
40
+
41
+ ### Minor Changes
42
+
43
+ - Exposes `messageMetadata` option in `handleChatStream` for attaching custom metadata to streamed messages. ([#14315](https://github.com/mastra-ai/mastra/pull/14315))
44
+
45
+ ```ts
46
+ const stream = await handleChatStream({
47
+ mastra,
48
+ agentId: 'my-agent',
49
+ params,
50
+ messageMetadata: () => ({ createdAt: new Date().toISOString() }),
51
+ });
52
+ ```
53
+
54
+ ### Patch Changes
55
+
56
+ - Fixed `withMastra` to accept `LanguageModelV3` models from the latest AI SDK (`@ai-sdk/openai@3+`, `ai@6+`). Previously, passing a V3 model caused a TypeScript error: `LanguageModelV3 is not assignable to LanguageModelV2`. The function now accepts both `LanguageModelV2` and `LanguageModelV3` via overloads. ([#14380](https://github.com/mastra-ai/mastra/pull/14380))
57
+
58
+ - Updated dependencies [[`9e1a3ed`](https://github.com/mastra-ai/mastra/commit/9e1a3ed07cfafb5e8e19a796ce0bee817002d7c0), [`a579f7a`](https://github.com/mastra-ai/mastra/commit/a579f7a31e582674862b5679bc79af7ccf7429b8)]:
59
+ - @mastra/core@1.15.0-alpha.2
60
+
3
61
  ## 1.1.5-alpha.0
4
62
 
5
63
  ### Patch Changes
@@ -1,3 +1,5 @@
1
+ import type { UIMessageStreamOptions as UIMessageStreamOptionsV5 } from './_types/@internal_ai-sdk-v5/dist/index.js';
2
+ import type { UIMessageStreamOptions as UIMessageStreamOptionsV6 } from './_types/@internal_ai-v6/dist/index.js';
1
3
  import type { AgentExecutionOptions } from '@mastra/core/agent';
2
4
  import type { Mastra } from '@mastra/core/mastra';
3
5
  import { registerApiRoute } from '@mastra/core/server';
@@ -18,12 +20,15 @@ export type ChatStreamHandlerOptions<UI_MESSAGE extends SupportedUIMessage = Sup
18
20
  sendFinish?: boolean;
19
21
  sendReasoning?: boolean;
20
22
  sendSources?: boolean;
23
+ messageMetadata?: UI_MESSAGE extends V6UIMessage ? UIMessageStreamOptionsV6<UI_MESSAGE>['messageMetadata'] : UI_MESSAGE extends V5UIMessage ? UIMessageStreamOptionsV5<UI_MESSAGE>['messageMetadata'] : never;
21
24
  };
22
- type ChatStreamHandlerOptionsV5<UI_MESSAGE extends V5UIMessage = V5UIMessage, OUTPUT = undefined> = Omit<ChatStreamHandlerOptions<UI_MESSAGE, OUTPUT>, 'version'> & {
25
+ type ChatStreamHandlerOptionsV5<UI_MESSAGE extends V5UIMessage = V5UIMessage, OUTPUT = undefined> = Omit<ChatStreamHandlerOptions<UI_MESSAGE, OUTPUT>, 'version' | 'messageMetadata'> & {
23
26
  version?: 'v5';
27
+ messageMetadata?: UIMessageStreamOptionsV5<UI_MESSAGE>['messageMetadata'];
24
28
  };
25
- type ChatStreamHandlerOptionsV6<UI_MESSAGE extends V6UIMessage = V6UIMessage, OUTPUT = undefined> = Omit<ChatStreamHandlerOptions<UI_MESSAGE, OUTPUT>, 'version'> & {
29
+ type ChatStreamHandlerOptionsV6<UI_MESSAGE extends V6UIMessage = V6UIMessage, OUTPUT = undefined> = Omit<ChatStreamHandlerOptions<UI_MESSAGE, OUTPUT>, 'version' | 'messageMetadata'> & {
26
30
  version: 'v6';
31
+ messageMetadata?: UIMessageStreamOptionsV6<UI_MESSAGE>['messageMetadata'];
27
32
  };
28
33
  /**
29
34
  * Framework-agnostic handler for streaming agent chat in AI SDK-compatible format.
@@ -1 +1 @@
1
- {"version":3,"file":"chat-route.d.ts","sourceRoot":"","sources":["../src/chat-route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-route.d.ts","sourceRoot":"","sources":["../src/chat-route.ts"],"names":[],"mappings":"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"}
package/dist/index.cjs CHANGED
@@ -9836,6 +9836,9 @@ var UIMessageStreamError = class extends AISDKError2 {
9836
9836
  }
9837
9837
  };
9838
9838
  _a154 = symbol154;
9839
+ function asArray2(value) {
9840
+ return value === void 0 ? [] : Array.isArray(value) ? value : [value];
9841
+ }
9839
9842
  var dataContentSchema2 = z4.z.union([
9840
9843
  z4.z.string(),
9841
9844
  z4.z.instanceof(Uint8Array),
@@ -11503,6 +11506,60 @@ function createUIMessageStream2({
11503
11506
  }
11504
11507
  createIdGenerator2({ prefix: "aiobj", size: 24 });
11505
11508
  createIdGenerator2({ prefix: "aiobj", size: 24 });
11509
+ var wrapLanguageModel2 = ({
11510
+ model,
11511
+ middleware: middlewareArg,
11512
+ modelId,
11513
+ providerId
11514
+ }) => {
11515
+ return [...asArray2(middlewareArg)].reverse().reduce((wrappedModel, middleware) => {
11516
+ return doWrap2({ model: wrappedModel, middleware, modelId, providerId });
11517
+ }, model);
11518
+ };
11519
+ var doWrap2 = ({
11520
+ model,
11521
+ middleware: {
11522
+ transformParams,
11523
+ wrapGenerate,
11524
+ wrapStream,
11525
+ overrideProvider,
11526
+ overrideModelId,
11527
+ overrideSupportedUrls
11528
+ },
11529
+ modelId,
11530
+ providerId
11531
+ }) => {
11532
+ var _a21, _b93, _c;
11533
+ async function doTransform({
11534
+ params,
11535
+ type
11536
+ }) {
11537
+ return transformParams ? await transformParams({ params, type, model }) : params;
11538
+ }
11539
+ return {
11540
+ specificationVersion: "v3",
11541
+ provider: (_a21 = providerId != null ? providerId : overrideProvider == null ? void 0 : overrideProvider({ model })) != null ? _a21 : model.provider,
11542
+ modelId: (_b93 = modelId != null ? modelId : overrideModelId == null ? void 0 : overrideModelId({ model })) != null ? _b93 : model.modelId,
11543
+ supportedUrls: (_c = overrideSupportedUrls == null ? void 0 : overrideSupportedUrls({ model })) != null ? _c : model.supportedUrls,
11544
+ async doGenerate(params) {
11545
+ const transformedParams = await doTransform({ params, type: "generate" });
11546
+ const doGenerate = async () => model.doGenerate(transformedParams);
11547
+ const doStream = async () => model.doStream(transformedParams);
11548
+ return wrapGenerate ? wrapGenerate({
11549
+ doGenerate,
11550
+ doStream,
11551
+ params: transformedParams,
11552
+ model
11553
+ }) : doGenerate();
11554
+ },
11555
+ async doStream(params) {
11556
+ const transformedParams = await doTransform({ params, type: "stream" });
11557
+ const doGenerate = async () => model.doGenerate(transformedParams);
11558
+ const doStream = async () => model.doStream(transformedParams);
11559
+ return wrapStream ? wrapStream({ doGenerate, doStream, params: transformedParams, model }) : doStream();
11560
+ }
11561
+ };
11562
+ };
11506
11563
 
11507
11564
  // src/utils.ts
11508
11565
  var isDataChunkType = (chunk) => {
@@ -13060,7 +13117,8 @@ async function handleChatStream({
13060
13117
  sendStart = true,
13061
13118
  sendFinish = true,
13062
13119
  sendReasoning = false,
13063
- sendSources = false
13120
+ sendSources = false,
13121
+ messageMetadata
13064
13122
  }) {
13065
13123
  const { messages, resumeData, runId, requestContext, trigger, ...rest } = params;
13066
13124
  if (resumeData && !runId) {
@@ -13110,7 +13168,8 @@ async function handleChatStream({
13110
13168
  sendStart,
13111
13169
  sendFinish,
13112
13170
  sendReasoning,
13113
- sendSources
13171
+ sendSources,
13172
+ messageMetadata
13114
13173
  })) {
13115
13174
  writer.write(part);
13116
13175
  }
@@ -13126,7 +13185,8 @@ async function handleChatStream({
13126
13185
  sendStart,
13127
13186
  sendFinish,
13128
13187
  sendReasoning,
13129
- sendSources
13188
+ sendSources,
13189
+ messageMetadata
13130
13190
  })) {
13131
13191
  writer.write(part);
13132
13192
  }
@@ -13626,16 +13686,25 @@ function withMastra(model, options = {}) {
13626
13686
  allOutputProcessors.push(semanticRecallProcessor);
13627
13687
  }
13628
13688
  }
13689
+ const middleware = createProcessorMiddleware({
13690
+ inputProcessors: allInputProcessors,
13691
+ outputProcessors: allOutputProcessors,
13692
+ memory: memory ? {
13693
+ threadId: memory.threadId,
13694
+ resourceId: memory.resourceId
13695
+ } : void 0
13696
+ });
13697
+ if (model.specificationVersion === "v3") {
13698
+ return wrapLanguageModel2({
13699
+ model,
13700
+ // withMastra supports v3 models at the wrapper level, while the
13701
+ // lower-level processor middleware remains v2-oriented for now.
13702
+ middleware
13703
+ });
13704
+ }
13629
13705
  return wrapLanguageModel({
13630
13706
  model,
13631
- middleware: createProcessorMiddleware({
13632
- inputProcessors: allInputProcessors,
13633
- outputProcessors: allOutputProcessors,
13634
- memory: memory ? {
13635
- threadId: memory.threadId,
13636
- resourceId: memory.resourceId
13637
- } : void 0
13638
- })
13707
+ middleware
13639
13708
  });
13640
13709
  }
13641
13710
  var StreamOutputAccumulator = class {
@@ -13786,9 +13855,6 @@ function createProcessorMiddleware(options) {
13786
13855
  }
13787
13856
  return {
13788
13857
  middlewareVersion: "v2",
13789
- /**
13790
- * Transform params runs input processors (processInput)
13791
- */
13792
13858
  async transformParams({ params }) {
13793
13859
  const messageList = new agent.MessageList({
13794
13860
  threadId: memory?.threadId,
@@ -13844,9 +13910,6 @@ function createProcessorMiddleware(options) {
13844
13910
  }
13845
13911
  };
13846
13912
  },
13847
- /**
13848
- * Wrap generate for non-streaming output processing
13849
- */
13850
13913
  async wrapGenerate({ doGenerate, params }) {
13851
13914
  const processorState = params.providerOptions?.mastraProcessors;
13852
13915
  if (processorState?.tripwire) {
@@ -13927,9 +13990,6 @@ function createProcessorMiddleware(options) {
13927
13990
  content: [{ type: "text", text: processedText }]
13928
13991
  };
13929
13992
  },
13930
- /**
13931
- * Wrap stream for streaming output processing
13932
- */
13933
13993
  async wrapStream({ doStream, params }) {
13934
13994
  const processorState = params.providerOptions?.mastraProcessors;
13935
13995
  if (processorState?.tripwire) {