@assistant-ui/react-ai-sdk 1.1.20 → 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/README.md CHANGED
@@ -4,7 +4,7 @@ Vercel AI SDK integration for `@assistant-ui/react`.
4
4
 
5
5
  ## Features
6
6
 
7
- - Seamless integration with Vercel AI SDK v5
7
+ - Seamless integration with Vercel AI SDK v6
8
8
  - Automatic system message and frontend tools forwarding via `AssistantChatTransport`
9
9
  - Support for custom transport configuration
10
10
 
@@ -1,5 +1,5 @@
1
- import { UIMessage } from "ai";
1
+ import type { UIMessage } from "ai";
2
2
  import { MessageFormatAdapter } from "@assistant-ui/react";
3
3
  export type AISDKStorageFormat = Omit<UIMessage, "id">;
4
- export declare const aiSDKV5FormatAdapter: MessageFormatAdapter<UIMessage, AISDKStorageFormat>;
4
+ export declare const aiSDKV6FormatAdapter: MessageFormatAdapter<UIMessage, AISDKStorageFormat>;
5
5
  //# sourceMappingURL=aiSDKFormatAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aiSDKFormatAdapter.d.ts","sourceRoot":"","sources":["../../../src/ui/adapters/aiSDKFormatAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,oBAAoB,EAGrB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEvD,eAAO,MAAM,oBAAoB,EAAE,oBAAoB,CACrD,SAAS,EACT,kBAAkB,CA6BnB,CAAC"}
1
+ {"version":3,"file":"aiSDKFormatAdapter.d.ts","sourceRoot":"","sources":["../../../src/ui/adapters/aiSDKFormatAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EACL,oBAAoB,EAGrB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAEvD,eAAO,MAAM,oBAAoB,EAAE,oBAAoB,CACrD,SAAS,EACT,kBAAkB,CA6BnB,CAAC"}
@@ -1,5 +1,5 @@
1
- export const aiSDKV5FormatAdapter = {
2
- format: "ai-sdk/v5",
1
+ export const aiSDKV6FormatAdapter = {
2
+ format: "ai-sdk/v6",
3
3
  encode({ message: { id, parts, ...message }, }) {
4
4
  // Filter out FileContentParts until they are supported
5
5
  return {
@@ -7,7 +7,7 @@ import { toCreateMessage } from "../utils/toCreateMessage.js";
7
7
  import { vercelAttachmentAdapter } from "../utils/vercelAttachmentAdapter.js";
8
8
  import { getVercelAIMessages } from "../getVercelAIMessages.js";
9
9
  import { AISDKMessageConverter } from "../utils/convertMessage.js";
10
- import { aiSDKV5FormatAdapter, } from "../adapters/aiSDKFormatAdapter.js";
10
+ import { aiSDKV6FormatAdapter, } from "../adapters/aiSDKFormatAdapter.js";
11
11
  import { useExternalHistory } from "./useExternalHistory.js";
12
12
  export const useAISDKRuntime = (chatHelpers, { adapters, toCreateMessage: customToCreateMessage, cancelPendingToolCallsOnSend = true, } = {}) => {
13
13
  const contextAdapters = useRuntimeAdapters();
@@ -46,7 +46,7 @@ export const useAISDKRuntime = (chatHelpers, { adapters, toCreateMessage: custom
46
46
  },
47
47
  setToolStatuses,
48
48
  });
49
- const isLoading = useExternalHistory(runtimeRef, adapters?.history ?? contextAdapters?.history, AISDKMessageConverter.toThreadMessages, aiSDKV5FormatAdapter, (messages) => {
49
+ const isLoading = useExternalHistory(runtimeRef, adapters?.history ?? contextAdapters?.history, AISDKMessageConverter.toThreadMessages, aiSDKV6FormatAdapter, (messages) => {
50
50
  chatHelpers.setMessages(messages);
51
51
  });
52
52
  const completePendingToolCalls = async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"convertMessage.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/convertMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,SAAS,EAAE,MAAM,IAAI,CAAC;AAClD,OAAO,EAOL,KAAK,2BAA2B,EACjC,MAAM,qBAAqB,CAAC;AAoK7B,eAAO,MAAM,qBAAqB;;;;;;;;0HA9IxB,sDACT;yHAIW,sDACP;;;CA4MJ,CAAC"}
1
+ {"version":3,"file":"convertMessage.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/convertMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/D,OAAO,EAOL,KAAK,2BAA2B,EAEjC,MAAM,qBAAqB,CAAC;AA8H7B,eAAO,MAAM,qBAAqB;;;;;;;;0HA5GJ,sDAAyB;yHAIjC,sDACF;;;CAqKnB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { isToolUIPart } from "ai";
1
+ import { isToolUIPart, getToolName } from "ai";
2
2
  import { unstable_createMessageConverter, } from "@assistant-ui/react";
3
3
  function stripClosingDelimiters(json) {
4
4
  return json.replace(/[}\]"]+$/, "");
@@ -25,9 +25,11 @@ const convertParts = (message, metadata) => {
25
25
  text: part.text,
26
26
  };
27
27
  }
28
- // Handle tool-* parts (AI SDK v5 tool calls)
28
+ // Handle tool parts (both static tool-* and dynamic-tool)
29
+ // In AI SDK v6, isToolUIPart returns true for both static and dynamic tools
29
30
  if (isToolUIPart(part)) {
30
- const toolName = type.replace("tool-", "");
31
+ // Use getToolName which works for both static and dynamic tools
32
+ const toolName = getToolName(part);
31
33
  const toolCallId = part.toolCallId;
32
34
  // Extract args and result based on state
33
35
  let args = {};
@@ -70,45 +72,6 @@ const convertParts = (message, metadata) => {
70
72
  }),
71
73
  };
72
74
  }
73
- // Handle dynamic-tool parts
74
- if (type === "dynamic-tool") {
75
- const toolName = part.toolName;
76
- const toolCallId = part.toolCallId;
77
- // Extract args and result based on state
78
- let args = {};
79
- let result;
80
- let isError = false;
81
- if (part.state === "input-streaming" ||
82
- part.state === "input-available") {
83
- args = part.input || {};
84
- }
85
- else if (part.state === "output-available") {
86
- args = part.input || {};
87
- result = part.output;
88
- }
89
- else if (part.state === "output-error") {
90
- args = part.input || {};
91
- isError = true;
92
- result = { error: part.errorText };
93
- }
94
- const toolStatus = metadata.toolStatuses?.[toolCallId];
95
- return {
96
- type: "tool-call",
97
- toolName,
98
- toolCallId,
99
- argsText: JSON.stringify(args),
100
- args,
101
- result,
102
- isError,
103
- ...(toolStatus?.type === "interrupt" && {
104
- interrupt: toolStatus.payload,
105
- status: {
106
- type: "requires-action",
107
- reason: "interrupt",
108
- },
109
- }),
110
- };
111
- }
112
75
  // Handle source-url parts
113
76
  if (type === "source-url") {
114
77
  return {
@@ -174,6 +137,7 @@ export const AISDKMessageConverter = unstable_createMessageConverter((message, m
174
137
  status: { type: "complete" },
175
138
  };
176
139
  }),
140
+ metadata: message.metadata,
177
141
  };
178
142
  case "system":
179
143
  return {
@@ -181,6 +145,7 @@ export const AISDKMessageConverter = unstable_createMessageConverter((message, m
181
145
  id: message.id,
182
146
  createdAt,
183
147
  content: convertParts(message, metadata),
148
+ metadata: message.metadata,
184
149
  };
185
150
  case "assistant":
186
151
  return {
@@ -188,15 +153,7 @@ export const AISDKMessageConverter = unstable_createMessageConverter((message, m
188
153
  id: message.id,
189
154
  createdAt,
190
155
  content: convertParts(message, metadata),
191
- metadata: {
192
- unstable_annotations: message.annotations,
193
- unstable_data: Array.isArray(message.data)
194
- ? message.data
195
- : message.data
196
- ? [message.data]
197
- : undefined,
198
- custom: {},
199
- },
156
+ metadata: message.metadata,
200
157
  };
201
158
  default:
202
159
  console.warn(`Unsupported message role: ${message.role}`);
@@ -1 +1 @@
1
- {"version":3,"file":"convertMessage.js","sourceRoot":"","sources":["../../../src/ui/utils/convertMessage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"convertMessage.js","sourceRoot":"","sources":["../../../src/ui/utils/convertMessage.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"toCreateMessage.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/toCreateMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,eAAe,EAEf,SAAS,EAGV,MAAM,IAAI,CAAC;AAEZ,eAAO,MAAM,eAAe,GAAI,UAAU,SAAS,SAAS,GAAG,SAAS,EACtE,SAAS,aAAa,KACrB,eAAe,CAAC,UAAU,CAyC5B,CAAC"}
1
+ {"version":3,"file":"toCreateMessage.d.ts","sourceRoot":"","sources":["../../../src/ui/utils/toCreateMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,eAAe,EAEf,SAAS,EAGV,MAAM,IAAI,CAAC;AAEZ,eAAO,MAAM,eAAe,GAAI,UAAU,SAAS,SAAS,GAAG,SAAS,EACtE,SAAS,aAAa,KACrB,eAAe,CAAC,UAAU,CA0C5B,CAAC"}
@@ -34,6 +34,7 @@ export const toCreateMessage = (message) => {
34
34
  return {
35
35
  role: message.role,
36
36
  parts,
37
+ metadata: message.metadata,
37
38
  };
38
39
  };
39
40
  //# sourceMappingURL=toCreateMessage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toCreateMessage.js","sourceRoot":"","sources":["../../../src/ui/utils/toCreateMessage.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAsB,EACO,EAAE;IAC/B,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpB,GAAG,CAAC;YACJ,QAAQ,EAAE,CAAC,CAAC,IAAI;SACjB,CAAC,CAAC,CACJ,IAAI,EAAE,CAAC;KACT,CAAC;IAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAuC,EAAE;QACzE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,IAAI,CAAC,KAAK;oBACf,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACjD,SAAS,EAAE,WAAW;iBACvB,CAAC;YACJ,KAAK,MAAM;gBACT,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,IAAI,CAAC,IAAI;oBACd,SAAS,EAAE,IAAI,CAAC,QAAQ;oBACxB,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;iBAClD,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;KAC8D,CAAC;AACxE,CAAC,CAAC"}
1
+ {"version":3,"file":"toCreateMessage.js","sourceRoot":"","sources":["../../../src/ui/utils/toCreateMessage.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,OAAsB,EACO,EAAE;IAC/B,MAAM,UAAU,GAAG;QACjB,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;QACnD,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CACrC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpB,GAAG,CAAC;YACJ,QAAQ,EAAE,CAAC,CAAC,IAAI;SACjB,CAAC,CAAC,CACJ,IAAI,EAAE,CAAC;KACT,CAAC;IAEF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAuC,EAAE;QACzE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,MAAM;gBACT,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC;YACJ,KAAK,OAAO;gBACV,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,IAAI,CAAC,KAAK;oBACf,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACjD,SAAS,EAAE,WAAW;iBACvB,CAAC;YACJ,KAAK,MAAM;gBACT,OAAO;oBACL,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,IAAI,CAAC,IAAI;oBACd,SAAS,EAAE,IAAI,CAAC,QAAQ;oBACxB,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;iBAClD,CAAC;YACJ;gBACE,MAAM,IAAI,KAAK,CAAC,0BAA0B,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;QACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;KACyC,CAAC;AACxE,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react-ai-sdk",
3
- "version": "1.1.20",
3
+ "version": "1.2.0",
4
4
  "description": "Vercel AI SDK adapter for assistant-ui",
5
5
  "keywords": [
6
6
  "ai-sdk",
@@ -31,12 +31,12 @@
31
31
  ],
32
32
  "sideEffects": false,
33
33
  "dependencies": {
34
- "@ai-sdk/react": "^2.0.118",
35
- "ai": "^5.0.116",
36
- "zod": "^4.2.1"
34
+ "@ai-sdk/react": "^3.0.44",
35
+ "ai": "^6.0.42",
36
+ "zod": "^4.3.5"
37
37
  },
38
38
  "peerDependencies": {
39
- "@assistant-ui/react": "^0.11.53",
39
+ "@assistant-ui/react": "^0.11.58",
40
40
  "@types/react": "*",
41
41
  "assistant-cloud": "*",
42
42
  "react": "^18 || ^19"
@@ -51,10 +51,11 @@
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/json-schema": "^7.0.15",
54
- "@types/react": "^19.2.7",
55
- "react": "19.2.3",
56
- "@assistant-ui/react": "0.11.53",
57
- "@assistant-ui/x-buildutils": "0.0.1"
54
+ "@types/react": "^19.2.9",
55
+ "react": "^19.2.3",
56
+ "@assistant-ui/react": "0.11.58",
57
+ "@assistant-ui/x-buildutils": "0.0.1",
58
+ "assistant-stream": "0.2.47"
58
59
  },
59
60
  "publishConfig": {
60
61
  "access": "public",
@@ -1,4 +1,4 @@
1
- import { UIMessage } from "ai";
1
+ import type { UIMessage } from "ai";
2
2
  import {
3
3
  MessageFormatAdapter,
4
4
  MessageFormatItem,
@@ -8,11 +8,11 @@ import {
8
8
  // Storage format for AI SDK messages - just the UIMessage
9
9
  export type AISDKStorageFormat = Omit<UIMessage, "id">;
10
10
 
11
- export const aiSDKV5FormatAdapter: MessageFormatAdapter<
11
+ export const aiSDKV6FormatAdapter: MessageFormatAdapter<
12
12
  UIMessage,
13
13
  AISDKStorageFormat
14
14
  > = {
15
- format: "ai-sdk/v5",
15
+ format: "ai-sdk/v6",
16
16
 
17
17
  encode({
18
18
  message: { id, parts, ...message },
@@ -22,7 +22,7 @@ import { getVercelAIMessages } from "../getVercelAIMessages";
22
22
  import { AISDKMessageConverter } from "../utils/convertMessage";
23
23
  import {
24
24
  type AISDKStorageFormat,
25
- aiSDKV5FormatAdapter,
25
+ aiSDKV6FormatAdapter,
26
26
  } from "../adapters/aiSDKFormatAdapter";
27
27
  import { useExternalHistory } from "./useExternalHistory";
28
28
 
@@ -113,7 +113,7 @@ export const useAISDKRuntime = <UI_MESSAGE extends UIMessage = UIMessage>(
113
113
  AISDKMessageConverter.toThreadMessages as (
114
114
  messages: UI_MESSAGE[],
115
115
  ) => ThreadMessage[],
116
- aiSDKV5FormatAdapter as MessageFormatAdapter<
116
+ aiSDKV6FormatAdapter as MessageFormatAdapter<
117
117
  UI_MESSAGE,
118
118
  AISDKStorageFormat
119
119
  >,
@@ -1,4 +1,4 @@
1
- import { isToolUIPart, type UIMessage } from "ai";
1
+ import { isToolUIPart, getToolName, type UIMessage } from "ai";
2
2
  import {
3
3
  unstable_createMessageConverter,
4
4
  type ReasoningMessagePart,
@@ -7,7 +7,11 @@ import {
7
7
  type DataMessagePart,
8
8
  type SourceMessagePart,
9
9
  type useExternalMessageConverter,
10
+ type ThreadMessageLike,
10
11
  } from "@assistant-ui/react";
12
+ import type { ReadonlyJSONObject } from "assistant-stream/utils";
13
+
14
+ type MessageMetadata = ThreadMessageLike["metadata"];
11
15
 
12
16
  function stripClosingDelimiters(json: string) {
13
17
  return json.replace(/[}\]"]+$/, "");
@@ -42,26 +46,28 @@ const convertParts = (
42
46
  } satisfies ReasoningMessagePart;
43
47
  }
44
48
 
45
- // Handle tool-* parts (AI SDK v5 tool calls)
49
+ // Handle tool parts (both static tool-* and dynamic-tool)
50
+ // In AI SDK v6, isToolUIPart returns true for both static and dynamic tools
46
51
  if (isToolUIPart(part)) {
47
- const toolName = type.replace("tool-", "");
52
+ // Use getToolName which works for both static and dynamic tools
53
+ const toolName = getToolName(part);
48
54
  const toolCallId = part.toolCallId;
49
55
 
50
56
  // Extract args and result based on state
51
- let args: any = {};
52
- let result: any;
57
+ let args: ReadonlyJSONObject = {};
58
+ let result: unknown;
53
59
  let isError = false;
54
60
 
55
61
  if (
56
62
  part.state === "input-streaming" ||
57
63
  part.state === "input-available"
58
64
  ) {
59
- args = part.input || {};
65
+ args = (part.input as ReadonlyJSONObject) || {};
60
66
  } else if (part.state === "output-available") {
61
- args = part.input || {};
67
+ args = (part.input as ReadonlyJSONObject) || {};
62
68
  result = part.output;
63
69
  } else if (part.state === "output-error") {
64
- args = part.input || {};
70
+ args = (part.input as ReadonlyJSONObject) || {};
65
71
  isError = true;
66
72
  result = { error: part.errorText };
67
73
  }
@@ -92,49 +98,6 @@ const convertParts = (
92
98
  } satisfies ToolCallMessagePart;
93
99
  }
94
100
 
95
- // Handle dynamic-tool parts
96
- if (type === "dynamic-tool") {
97
- const toolName = part.toolName;
98
- const toolCallId = part.toolCallId;
99
-
100
- // Extract args and result based on state
101
- let args: any = {};
102
- let result: any;
103
- let isError = false;
104
-
105
- if (
106
- part.state === "input-streaming" ||
107
- part.state === "input-available"
108
- ) {
109
- args = part.input || {};
110
- } else if (part.state === "output-available") {
111
- args = part.input || {};
112
- result = part.output;
113
- } else if (part.state === "output-error") {
114
- args = part.input || {};
115
- isError = true;
116
- result = { error: part.errorText };
117
- }
118
-
119
- const toolStatus = metadata.toolStatuses?.[toolCallId];
120
- return {
121
- type: "tool-call",
122
- toolName,
123
- toolCallId,
124
- argsText: JSON.stringify(args),
125
- args,
126
- result,
127
- isError,
128
- ...(toolStatus?.type === "interrupt" && {
129
- interrupt: toolStatus.payload,
130
- status: {
131
- type: "requires-action" as const,
132
- reason: "interrupt",
133
- },
134
- }),
135
- } satisfies ToolCallMessagePart;
136
- }
137
-
138
101
  // Handle source-url parts
139
102
  if (type === "source-url") {
140
103
  return {
@@ -207,6 +170,7 @@ export const AISDKMessageConverter = unstable_createMessageConverter(
207
170
  status: { type: "complete" as const },
208
171
  };
209
172
  }),
173
+ metadata: message.metadata as MessageMetadata,
210
174
  };
211
175
 
212
176
  case "system":
@@ -215,6 +179,7 @@ export const AISDKMessageConverter = unstable_createMessageConverter(
215
179
  id: message.id,
216
180
  createdAt,
217
181
  content: convertParts(message, metadata),
182
+ metadata: message.metadata as MessageMetadata,
218
183
  };
219
184
 
220
185
  case "assistant":
@@ -223,15 +188,7 @@ export const AISDKMessageConverter = unstable_createMessageConverter(
223
188
  id: message.id,
224
189
  createdAt,
225
190
  content: convertParts(message, metadata),
226
- metadata: {
227
- unstable_annotations: (message as any).annotations,
228
- unstable_data: Array.isArray((message as any).data)
229
- ? (message as any).data
230
- : (message as any).data
231
- ? [(message as any).data]
232
- : undefined,
233
- custom: {},
234
- },
191
+ metadata: message.metadata as MessageMetadata,
235
192
  };
236
193
 
237
194
  default:
@@ -49,5 +49,6 @@ export const toCreateMessage = <UI_MESSAGE extends UIMessage = UIMessage>(
49
49
  return {
50
50
  role: message.role,
51
51
  parts,
52
+ metadata: message.metadata,
52
53
  } satisfies CreateUIMessage<UIMessage> as CreateUIMessage<UI_MESSAGE>;
53
54
  };