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 +14 -0
- package/dist/index.js +1 -1
- package/dist/internal/index.js +1 -1
- package/docs/03-ai-sdk-harnesses/07-ui.mdx +25 -7
- package/package.json +2 -2
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.
|
|
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 ({
|
package/dist/internal/index.js
CHANGED
|
@@ -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:
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
await
|
|
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.
|
|
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.
|
|
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
|
},
|