ai 5.0.0-beta.12 → 5.0.0-beta.13

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,14 @@
1
1
  # ai
2
2
 
3
+ ## 5.0.0-beta.13
4
+
5
+ ### Patch Changes
6
+
7
+ - 377bbcf: fix (ui): tool input can be undefined during input-streaming
8
+ - ce1d1f3: feat (ai): export mock image, speech, and transcription models
9
+ - c040e2f: fix (ui): inject generated response message id
10
+ - c808e4d: fix (ui): do not send changing assistant message ids when onFinish is provided
11
+
3
12
  ## 5.0.0-beta.12
4
13
 
5
14
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1324,7 +1324,7 @@ type ToolUIPart<TOOLS extends UITools = UITools> = ValueOf<{
1324
1324
  toolCallId: string;
1325
1325
  } & ({
1326
1326
  state: 'input-streaming';
1327
- input: DeepPartial<TOOLS[NAME]['input']>;
1327
+ input: DeepPartial<TOOLS[NAME]['input']> | undefined;
1328
1328
  providerExecuted?: boolean;
1329
1329
  output?: never;
1330
1330
  errorText?: never;
@@ -1462,6 +1462,13 @@ type UIMessageStreamOptions<UI_MESSAGE extends UIMessage> = {
1462
1462
  * and a message ID is provided for the response message.
1463
1463
  */
1464
1464
  originalMessages?: UI_MESSAGE[];
1465
+ /**
1466
+ * Generate a message ID for the response message.
1467
+ *
1468
+ * If not provided, no message ID will be set for the response message (unless
1469
+ * the original messages are provided and the last message is an assistant message).
1470
+ */
1471
+ generateMessageId?: IdGenerator;
1465
1472
  onFinish?: (options: {
1466
1473
  /**
1467
1474
  * The updates list of UI messages.
package/dist/index.d.ts CHANGED
@@ -1324,7 +1324,7 @@ type ToolUIPart<TOOLS extends UITools = UITools> = ValueOf<{
1324
1324
  toolCallId: string;
1325
1325
  } & ({
1326
1326
  state: 'input-streaming';
1327
- input: DeepPartial<TOOLS[NAME]['input']>;
1327
+ input: DeepPartial<TOOLS[NAME]['input']> | undefined;
1328
1328
  providerExecuted?: boolean;
1329
1329
  output?: never;
1330
1330
  errorText?: never;
@@ -1462,6 +1462,13 @@ type UIMessageStreamOptions<UI_MESSAGE extends UIMessage> = {
1462
1462
  * and a message ID is provided for the response message.
1463
1463
  */
1464
1464
  originalMessages?: UI_MESSAGE[];
1465
+ /**
1466
+ * Generate a message ID for the response message.
1467
+ *
1468
+ * If not provided, no message ID will be set for the response message (unless
1469
+ * the original messages are provided and the last message is an assistant message).
1470
+ */
1471
+ generateMessageId?: IdGenerator;
1465
1472
  onFinish?: (options: {
1466
1473
  /**
1467
1474
  * The updates list of UI messages.
package/dist/index.js CHANGED
@@ -3281,13 +3281,31 @@ function handleUIMessageStreamFinish({
3281
3281
  onError,
3282
3282
  stream
3283
3283
  }) {
3284
+ let lastMessage = originalMessages == null ? void 0 : originalMessages[originalMessages.length - 1];
3285
+ if ((lastMessage == null ? void 0 : lastMessage.role) !== "assistant") {
3286
+ lastMessage = void 0;
3287
+ } else {
3288
+ messageId = lastMessage.id;
3289
+ }
3290
+ const idInjectedStream = stream.pipeThrough(
3291
+ new TransformStream({
3292
+ transform(chunk, controller) {
3293
+ if (chunk.type === "start") {
3294
+ const startChunk = chunk;
3295
+ if (startChunk.messageId == null && messageId != null) {
3296
+ startChunk.messageId = messageId;
3297
+ }
3298
+ }
3299
+ controller.enqueue(chunk);
3300
+ }
3301
+ })
3302
+ );
3284
3303
  if (onFinish == null) {
3285
- return stream;
3304
+ return idInjectedStream;
3286
3305
  }
3287
- const lastMessage = originalMessages == null ? void 0 : originalMessages[originalMessages.length - 1];
3288
3306
  const state = createStreamingUIMessageState({
3289
3307
  lastMessage: lastMessage ? structuredClone(lastMessage) : void 0,
3290
- messageId
3308
+ messageId: messageId != null ? messageId : ""
3291
3309
  // will be overridden by the stream
3292
3310
  });
3293
3311
  const runUpdateMessageJob = async (job) => {
@@ -3295,19 +3313,7 @@ function handleUIMessageStreamFinish({
3295
3313
  } });
3296
3314
  };
3297
3315
  return processUIMessageStream({
3298
- stream: stream.pipeThrough(
3299
- new TransformStream({
3300
- transform(chunk, controller) {
3301
- if (chunk.type === "start") {
3302
- const startChunk = chunk;
3303
- if (startChunk.messageId == null) {
3304
- startChunk.messageId = messageId;
3305
- }
3306
- }
3307
- controller.enqueue(chunk);
3308
- }
3309
- })
3310
- ),
3316
+ stream: idInjectedStream,
3311
3317
  runUpdateMessageJob,
3312
3318
  onError
3313
3319
  }).pipeThrough(
@@ -4671,6 +4677,7 @@ var DefaultStreamTextResult = class {
4671
4677
  }
4672
4678
  toUIMessageStream({
4673
4679
  originalMessages,
4680
+ generateMessageId,
4674
4681
  onFinish,
4675
4682
  messageMetadata,
4676
4683
  sendReasoning = true,
@@ -4863,7 +4870,7 @@ var DefaultStreamTextResult = class {
4863
4870
  );
4864
4871
  return handleUIMessageStreamFinish({
4865
4872
  stream: baseStream,
4866
- messageId: responseMessageId != null ? responseMessageId : this.generateId(),
4873
+ messageId: responseMessageId != null ? responseMessageId : generateMessageId == null ? void 0 : generateMessageId(),
4867
4874
  originalMessages,
4868
4875
  onFinish,
4869
4876
  onError
@@ -4871,6 +4878,7 @@ var DefaultStreamTextResult = class {
4871
4878
  }
4872
4879
  pipeUIMessageStreamToResponse(response, {
4873
4880
  originalMessages,
4881
+ generateMessageId,
4874
4882
  onFinish,
4875
4883
  messageMetadata,
4876
4884
  sendReasoning,
@@ -4884,6 +4892,7 @@ var DefaultStreamTextResult = class {
4884
4892
  response,
4885
4893
  stream: this.toUIMessageStream({
4886
4894
  originalMessages,
4895
+ generateMessageId,
4887
4896
  onFinish,
4888
4897
  messageMetadata,
4889
4898
  sendReasoning,
@@ -4904,6 +4913,7 @@ var DefaultStreamTextResult = class {
4904
4913
  }
4905
4914
  toUIMessageStreamResponse({
4906
4915
  originalMessages,
4916
+ generateMessageId,
4907
4917
  onFinish,
4908
4918
  messageMetadata,
4909
4919
  sendReasoning,
@@ -4916,6 +4926,7 @@ var DefaultStreamTextResult = class {
4916
4926
  return createUIMessageStreamResponse({
4917
4927
  stream: this.toUIMessageStream({
4918
4928
  originalMessages,
4929
+ generateMessageId,
4919
4930
  onFinish,
4920
4931
  messageMetadata,
4921
4932
  sendReasoning,