@assistant-ui/react-ai-sdk 1.1.21 → 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,EAEjC,MAAM,qBAAqB,CAAC;AAsK7B,eAAO,MAAM,qBAAqB;;;;;;;;0HAnJX,sDAEN;yHAIP,sDACR;;;CA0MD,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 {
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@assistant-ui/react-ai-sdk",
3
- "version": "1.1.21",
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",
34
+ "@ai-sdk/react": "^3.0.44",
35
+ "ai": "^6.0.42",
36
36
  "zod": "^4.3.5"
37
37
  },
38
38
  "peerDependencies": {
39
- "@assistant-ui/react": "^0.11.56",
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",
54
+ "@types/react": "^19.2.9",
55
55
  "react": "^19.2.3",
56
- "@assistant-ui/react": "0.11.56",
57
- "@assistant-ui/x-buildutils": "0.0.1"
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,
@@ -9,6 +9,7 @@ import {
9
9
  type useExternalMessageConverter,
10
10
  type ThreadMessageLike,
11
11
  } from "@assistant-ui/react";
12
+ import type { ReadonlyJSONObject } from "assistant-stream/utils";
12
13
 
13
14
  type MessageMetadata = ThreadMessageLike["metadata"];
14
15
 
@@ -45,26 +46,28 @@ const convertParts = (
45
46
  } satisfies ReasoningMessagePart;
46
47
  }
47
48
 
48
- // 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
49
51
  if (isToolUIPart(part)) {
50
- const toolName = type.replace("tool-", "");
52
+ // Use getToolName which works for both static and dynamic tools
53
+ const toolName = getToolName(part);
51
54
  const toolCallId = part.toolCallId;
52
55
 
53
56
  // Extract args and result based on state
54
- let args: any = {};
55
- let result: any;
57
+ let args: ReadonlyJSONObject = {};
58
+ let result: unknown;
56
59
  let isError = false;
57
60
 
58
61
  if (
59
62
  part.state === "input-streaming" ||
60
63
  part.state === "input-available"
61
64
  ) {
62
- args = part.input || {};
65
+ args = (part.input as ReadonlyJSONObject) || {};
63
66
  } else if (part.state === "output-available") {
64
- args = part.input || {};
67
+ args = (part.input as ReadonlyJSONObject) || {};
65
68
  result = part.output;
66
69
  } else if (part.state === "output-error") {
67
- args = part.input || {};
70
+ args = (part.input as ReadonlyJSONObject) || {};
68
71
  isError = true;
69
72
  result = { error: part.errorText };
70
73
  }
@@ -95,49 +98,6 @@ const convertParts = (
95
98
  } satisfies ToolCallMessagePart;
96
99
  }
97
100
 
98
- // Handle dynamic-tool parts
99
- if (type === "dynamic-tool") {
100
- const toolName = part.toolName;
101
- const toolCallId = part.toolCallId;
102
-
103
- // Extract args and result based on state
104
- let args: any = {};
105
- let result: any;
106
- let isError = false;
107
-
108
- if (
109
- part.state === "input-streaming" ||
110
- part.state === "input-available"
111
- ) {
112
- args = part.input || {};
113
- } else if (part.state === "output-available") {
114
- args = part.input || {};
115
- result = part.output;
116
- } else if (part.state === "output-error") {
117
- args = part.input || {};
118
- isError = true;
119
- result = { error: part.errorText };
120
- }
121
-
122
- const toolStatus = metadata.toolStatuses?.[toolCallId];
123
- return {
124
- type: "tool-call",
125
- toolName,
126
- toolCallId,
127
- argsText: JSON.stringify(args),
128
- args,
129
- result,
130
- isError,
131
- ...(toolStatus?.type === "interrupt" && {
132
- interrupt: toolStatus.payload,
133
- status: {
134
- type: "requires-action" as const,
135
- reason: "interrupt",
136
- },
137
- }),
138
- } satisfies ToolCallMessagePart;
139
- }
140
-
141
101
  // Handle source-url parts
142
102
  if (type === "source-url") {
143
103
  return {