ai 7.0.47 → 7.0.49

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,19 @@
1
1
  # ai
2
2
 
3
+ ## 7.0.49
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [fb6d2f8]
8
+ - @ai-sdk/gateway@4.0.38
9
+
10
+ ## 7.0.48
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [bdd5e28]
15
+ - @ai-sdk/gateway@4.0.37
16
+
3
17
  ## 7.0.47
4
18
 
5
19
  ### Patch Changes
package/dist/index.js CHANGED
@@ -1143,7 +1143,7 @@ import {
1143
1143
  } from "@ai-sdk/provider-utils";
1144
1144
 
1145
1145
  // src/version.ts
1146
- var VERSION = true ? "7.0.47" : "0.0.0-test";
1146
+ var VERSION = true ? "7.0.49" : "0.0.0-test";
1147
1147
 
1148
1148
  // src/util/download/download.ts
1149
1149
  var download = async ({
@@ -85,7 +85,7 @@ import {
85
85
  } from "@ai-sdk/provider-utils";
86
86
 
87
87
  // src/version.ts
88
- var VERSION = true ? "7.0.47" : "0.0.0-test";
88
+ var VERSION = true ? "7.0.49" : "0.0.0-test";
89
89
 
90
90
  // src/util/download/download.ts
91
91
  var download = async ({
@@ -24,7 +24,7 @@ import { useState } from 'react';
24
24
 
25
25
  export default function Page() {
26
26
  const [input, setInput] = useState('');
27
- const { messages, sendMessage, status } = useChat({
27
+ const { error, messages, sendMessage, status } = useChat({
28
28
  id: 'example-chat',
29
29
  transport: new DefaultChatTransport({
30
30
  api: '/api/chat',
@@ -50,6 +50,8 @@ export default function Page() {
50
50
  </div>
51
51
  ))}
52
52
 
53
+ {error && <div>{error.message}</div>}
54
+
53
55
  <form
54
56
  onSubmit={event => {
55
57
  event.preventDefault();
@@ -150,8 +152,10 @@ result stream back to a UI message stream:
150
152
  ```ts filename='app/api/chat/route.ts'
151
153
  import { agent } from './agent';
152
154
  import { detachAndPersist, resumeOrCreateSession } from './session-store';
155
+ import { getHarnessErrorMessage } from '@ai-sdk/harness/agent';
153
156
  import {
154
157
  convertToModelMessages,
158
+ createUIMessageStream,
155
159
  createUIMessageStreamResponse,
156
160
  toUIMessageStream,
157
161
  type UIMessage,
@@ -169,20 +173,34 @@ export async function POST(request: Request) {
169
173
 
170
174
  const chatId = body.id;
171
175
  const messages = await convertToModelMessages(body.messages);
172
- const session = await resumeOrCreateSession({ agent, chatId });
173
- const result = await agent.stream({ session, messages });
174
176
 
175
177
  return createUIMessageStreamResponse({
176
- stream: toUIMessageStream({
177
- stream: result.stream,
178
- onEnd: async () => {
179
- await detachAndPersist({ chatId, session });
178
+ stream: createUIMessageStream({
179
+ execute: async ({ writer }) => {
180
+ const session = await resumeOrCreateSession({ agent, chatId });
181
+ const result = await agent.stream({ session, messages });
182
+
183
+ writer.merge(
184
+ toUIMessageStream({
185
+ stream: result.stream,
186
+ onError: getHarnessErrorMessage,
187
+ onEnd: async () => {
188
+ await detachAndPersist({ chatId, session });
189
+ },
190
+ }),
191
+ );
180
192
  },
193
+ onError: getHarnessErrorMessage,
181
194
  }),
182
195
  });
183
196
  }
184
197
  ```
185
198
 
199
+ Creating the UI message stream before acquiring the session ensures sandbox,
200
+ bootstrap, and harness startup failures are sent as UI error parts instead of
201
+ becoming generic HTTP errors. `getHarnessErrorMessage` preserves reviewed,
202
+ client-safe harness messages and masks unknown server errors.
203
+
186
204
  Do not use `createAgentUIStreamResponse` directly with `HarnessAgent` unless you
187
205
  wrap the agent to inject the required session. `HarnessAgent.stream()` requires
188
206
  `session` on every call.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ai",
3
- "version": "7.0.47",
3
+ "version": "7.0.49",
4
4
  "type": "module",
5
5
  "description": "AI SDK by Vercel - build apps like ChatGPT, Claude, Gemini, and more with a single interface for any model using the Vercel AI Gateway or go direct to OpenAI, Anthropic, Google, or any other model provider.",
6
6
  "license": "Apache-2.0",
@@ -42,7 +42,7 @@
42
42
  }
43
43
  },
44
44
  "dependencies": {
45
- "@ai-sdk/gateway": "4.0.36",
45
+ "@ai-sdk/gateway": "4.0.38",
46
46
  "@ai-sdk/provider": "4.0.4",
47
47
  "@ai-sdk/provider-utils": "5.0.18"
48
48
  },