ai 7.0.110 → 7.0.112
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 +22 -0
- package/dist/index.d.ts +163 -41
- package/dist/index.js +262 -73
- package/dist/index.js.map +1 -1
- package/dist/internal/index.d.ts +141 -2
- package/dist/internal/index.js +33 -4
- package/dist/internal/index.js.map +1 -1
- package/docs/03-ai-sdk-core/40-middleware.mdx +92 -7
- package/docs/03-ai-sdk-core/60-telemetry.mdx +56 -3
- package/docs/03-ai-sdk-core/65-lifecycle-callbacks.mdx +124 -2
- package/docs/06-advanced/02-stopping-streams.mdx +8 -0
- package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3 -3
- package/docs/07-reference/01-ai-sdk-core/14-evaluate.mdx +16 -9
- package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +9 -3
- package/package.json +12 -12
- package/src/batch/batch.ts +18 -3
- package/src/evaluate/evaluate-events.ts +131 -0
- package/src/evaluate/evaluate.ts +145 -40
- package/src/evaluate/index.ts +6 -0
- package/src/evaluate/restricted-telemetry-dispatcher.ts +46 -0
- package/src/generate-text/convert-language-model-content.ts +15 -6
- package/src/generate-text/generate-text.ts +7 -2
- package/src/generate-text/prune-messages.ts +3 -1
- package/src/generate-text/resolve-generated-file-data.ts +41 -0
- package/src/generate-text/stream-language-model-call.ts +5 -4
- package/src/prompt/convert-to-language-model-prompt.ts +12 -2
- package/src/prompt/file-part-data.ts +11 -1
- package/src/telemetry/create-telemetry-dispatcher.ts +12 -0
- package/src/telemetry/telemetry.ts +34 -0
- package/src/telemetry/tracing-channel.ts +2 -1
- package/src/ui/validate-ui-messages.ts +2 -2
- package/src/ui-message-stream/handle-ui-message-stream-finish.ts +5 -3
- package/src/ui-message-stream/ui-message-stream-on-end-callback.ts +8 -0
- package/src/ui-message-stream/ui-message-stream-outcome.ts +4 -0
|
@@ -5,6 +5,12 @@ import type {
|
|
|
5
5
|
EmbeddingModelCallEndEvent,
|
|
6
6
|
EmbeddingModelCallStartEvent,
|
|
7
7
|
} from '../embed/embed-events';
|
|
8
|
+
import type {
|
|
9
|
+
EvaluateEndEvent,
|
|
10
|
+
EvaluateStartEvent,
|
|
11
|
+
EvaluationModelCallEndEvent,
|
|
12
|
+
EvaluationModelCallStartEvent,
|
|
13
|
+
} from '../evaluate/evaluate-events';
|
|
8
14
|
import type {
|
|
9
15
|
GenerateObjectEndEvent,
|
|
10
16
|
GenerateObjectStartEvent,
|
|
@@ -92,6 +98,10 @@ export interface TelemetryDispatcher {
|
|
|
92
98
|
onEmbedEnd?: Callback<EmbeddingModelCallEndEvent>;
|
|
93
99
|
onRerankStart?: Callback<RerankingModelCallStartEvent>;
|
|
94
100
|
onRerankEnd?: Callback<RerankingModelCallEndEvent>;
|
|
101
|
+
experimental_onEvaluateStart?: Callback<EvaluateStartEvent>;
|
|
102
|
+
experimental_onEvaluationModelCallStart?: Callback<EvaluationModelCallStartEvent>;
|
|
103
|
+
experimental_onEvaluationModelCallEnd?: Callback<EvaluationModelCallEndEvent>;
|
|
104
|
+
experimental_onEvaluateEnd?: Callback<EvaluateEndEvent>;
|
|
95
105
|
onEnd?: Callback<OperationEndEvent>;
|
|
96
106
|
onAbort?: Callback<GenerateTextAbortEvent<ToolSet>>;
|
|
97
107
|
onError?: Callback<unknown>;
|
|
@@ -214,6 +224,30 @@ export interface Telemetry {
|
|
|
214
224
|
*/
|
|
215
225
|
onRerankEnd?: Callback<InferTelemetryEvent<RerankingModelCallEndEvent>>;
|
|
216
226
|
|
|
227
|
+
/** Called when an experimental evaluation operation begins. */
|
|
228
|
+
experimental_onEvaluateStart?: Callback<
|
|
229
|
+
InferTelemetryEvent<EvaluateStartEvent>
|
|
230
|
+
>;
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Called immediately before an experimental evaluation model call begins.
|
|
234
|
+
* The logical model call includes any provider retries.
|
|
235
|
+
*/
|
|
236
|
+
experimental_onEvaluationModelCallStart?: Callback<
|
|
237
|
+
InferTelemetryEvent<EvaluationModelCallStartEvent>
|
|
238
|
+
>;
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Called after an experimental evaluation model response has been validated.
|
|
242
|
+
* The logical model call includes any provider retries.
|
|
243
|
+
*/
|
|
244
|
+
experimental_onEvaluationModelCallEnd?: Callback<
|
|
245
|
+
InferTelemetryEvent<EvaluationModelCallEndEvent>
|
|
246
|
+
>;
|
|
247
|
+
|
|
248
|
+
/** Called when an experimental evaluation operation completes. */
|
|
249
|
+
experimental_onEvaluateEnd?: Callback<InferTelemetryEvent<EvaluateEndEvent>>;
|
|
250
|
+
|
|
217
251
|
/**
|
|
218
252
|
* Called when an operation completes. Fired for text generation
|
|
219
253
|
* (generateText/streamText), object generation (generateObject/streamObject),
|
|
@@ -489,7 +489,7 @@ async function safeValidateUIMessagesInternal<UI_MESSAGE extends UIMessage>(
|
|
|
489
489
|
|
|
490
490
|
if (metadataSchema) {
|
|
491
491
|
for (const [msgIdx, message] of validatedMessages.entries()) {
|
|
492
|
-
await validateTypes({
|
|
492
|
+
message.metadata = await validateTypes({
|
|
493
493
|
value: message.metadata,
|
|
494
494
|
schema: metadataSchema,
|
|
495
495
|
context: {
|
|
@@ -527,7 +527,7 @@ async function safeValidateUIMessagesInternal<UI_MESSAGE extends UIMessage>(
|
|
|
527
527
|
};
|
|
528
528
|
}
|
|
529
529
|
|
|
530
|
-
await validateTypes({
|
|
530
|
+
dataPart.data = await validateTypes({
|
|
531
531
|
value: dataPart.data,
|
|
532
532
|
schema: dataSchema,
|
|
533
533
|
context: {
|
|
@@ -147,7 +147,7 @@ export function handleUIMessageStreamFinish<UI_MESSAGE extends UIMessage>({
|
|
|
147
147
|
|
|
148
148
|
let finishCalled = false;
|
|
149
149
|
|
|
150
|
-
const callOnEnd = async () => {
|
|
150
|
+
const callOnEnd = async ({ isCancelled }: { isCancelled: boolean }) => {
|
|
151
151
|
if (finishCalled || !resolvedOnEnd) {
|
|
152
152
|
return;
|
|
153
153
|
}
|
|
@@ -160,9 +160,11 @@ export function handleUIMessageStreamFinish<UI_MESSAGE extends UIMessage>({
|
|
|
160
160
|
: declaredOutcome.status === 'unknown' && isAborted
|
|
161
161
|
? { status: 'aborted' }
|
|
162
162
|
: declaredOutcome;
|
|
163
|
+
const isConsumerCancellation = isCancelled && outcome.status === 'unknown';
|
|
163
164
|
|
|
164
165
|
await resolvedOnEnd({
|
|
165
166
|
isAborted: isAborted || outcome.status === 'aborted',
|
|
167
|
+
...(isConsumerCancellation ? { isCancelled: true as const } : {}),
|
|
166
168
|
isContinuation,
|
|
167
169
|
outcome,
|
|
168
170
|
responseMessage: state.message as UI_MESSAGE,
|
|
@@ -215,11 +217,11 @@ export function handleUIMessageStreamFinish<UI_MESSAGE extends UIMessage>({
|
|
|
215
217
|
},
|
|
216
218
|
// @ts-expect-error cancel is still new and missing from types https://developer.mozilla.org/en-US/docs/Web/API/TransformStream#browser_compatibility
|
|
217
219
|
async cancel() {
|
|
218
|
-
await callOnEnd();
|
|
220
|
+
await callOnEnd({ isCancelled: true });
|
|
219
221
|
},
|
|
220
222
|
|
|
221
223
|
async flush() {
|
|
222
|
-
await callOnEnd();
|
|
224
|
+
await callOnEnd({ isCancelled: false });
|
|
223
225
|
},
|
|
224
226
|
}),
|
|
225
227
|
);
|
|
@@ -20,6 +20,14 @@ export type UIMessageStreamOnEndCallback<UI_MESSAGE extends UIMessage> =
|
|
|
20
20
|
*/
|
|
21
21
|
isAborted: boolean;
|
|
22
22
|
|
|
23
|
+
/**
|
|
24
|
+
* Indicates that the consumer cancelled the stream before an outcome was
|
|
25
|
+
* declared, for example because the client disconnected.
|
|
26
|
+
*
|
|
27
|
+
* This property is only present when it is `true`.
|
|
28
|
+
*/
|
|
29
|
+
isCancelled?: true;
|
|
30
|
+
|
|
23
31
|
/**
|
|
24
32
|
* The operation-level outcome of the stream. Fatal stream-processing
|
|
25
33
|
* failures override outcomes declared by the stream owner.
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* This is separate from model finish reasons and individual stream chunks.
|
|
5
5
|
* Fatal stream-processing failures override outcomes declared by the stream
|
|
6
6
|
* owner.
|
|
7
|
+
*
|
|
8
|
+
* Consumer cancellation before an outcome is declared keeps the `unknown`
|
|
9
|
+
* status and is reported separately through the end callback's `isCancelled`
|
|
10
|
+
* property.
|
|
7
11
|
*/
|
|
8
12
|
export type UIMessageStreamOutcome =
|
|
9
13
|
| { status: 'completed' }
|