ai 6.0.307 → 6.0.308

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,15 @@
1
1
  # ai
2
2
 
3
+ ## 6.0.308
4
+
5
+ ### Patch Changes
6
+
7
+ - 739e9f6: Restore raw OpenAI custom-tool input deltas for consumers that forward them to Responses API clients. Mark streamed input with `inputEncoding: 'text'` so UI clients can display it progressively without JSON parsing. Preserve the encoding when partial UI messages are saved and resumed. Final provider tool-call inputs remain JSON-encoded.
8
+ - Updated dependencies [739e9f6]
9
+ - @ai-sdk/provider@3.0.19
10
+ - @ai-sdk/gateway@3.0.216
11
+ - @ai-sdk/provider-utils@4.0.60
12
+
3
13
  ## 6.0.307
4
14
 
5
15
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -1743,6 +1743,8 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1743
1743
  * and later resumed.
1744
1744
  */
1745
1745
  rawInput?: string;
1746
+ /** Encoding of `rawInput`. Defaults to JSON when omitted. */
1747
+ inputEncoding?: 'json' | 'text';
1746
1748
  output?: never;
1747
1749
  errorText?: never;
1748
1750
  callProviderMetadata?: ProviderMetadata;
@@ -1867,6 +1869,8 @@ type DynamicToolUIPart = {
1867
1869
  * and later resumed.
1868
1870
  */
1869
1871
  rawInput?: string;
1872
+ /** Encoding of `rawInput`. Defaults to JSON when omitted. */
1873
+ inputEncoding?: 'json' | 'text';
1870
1874
  output?: never;
1871
1875
  errorText?: never;
1872
1876
  callProviderMetadata?: ProviderMetadata;
@@ -2108,6 +2112,8 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2108
2112
  type: 'tool-input-start';
2109
2113
  toolCallId: string;
2110
2114
  toolName: string;
2115
+ /** Encoding of the input deltas. Defaults to JSON when omitted. */
2116
+ inputEncoding?: 'json' | 'text';
2111
2117
  providerExecuted?: boolean;
2112
2118
  providerMetadata?: ProviderMetadata;
2113
2119
  toolMetadata?: JSONObject;
@@ -2542,6 +2548,8 @@ type TextStreamPart<TOOLS extends ToolSet> = {
2542
2548
  type: 'tool-input-start';
2543
2549
  id: string;
2544
2550
  toolName: string;
2551
+ /** Encoding of the input deltas. Defaults to JSON when omitted. */
2552
+ inputEncoding?: 'json' | 'text';
2545
2553
  providerMetadata?: ProviderMetadata;
2546
2554
  toolMetadata?: JSONObject;
2547
2555
  providerExecuted?: boolean;
package/dist/index.d.ts CHANGED
@@ -1743,6 +1743,8 @@ type UIToolInvocation<TOOL extends UITool | Tool> = {
1743
1743
  * and later resumed.
1744
1744
  */
1745
1745
  rawInput?: string;
1746
+ /** Encoding of `rawInput`. Defaults to JSON when omitted. */
1747
+ inputEncoding?: 'json' | 'text';
1746
1748
  output?: never;
1747
1749
  errorText?: never;
1748
1750
  callProviderMetadata?: ProviderMetadata;
@@ -1867,6 +1869,8 @@ type DynamicToolUIPart = {
1867
1869
  * and later resumed.
1868
1870
  */
1869
1871
  rawInput?: string;
1872
+ /** Encoding of `rawInput`. Defaults to JSON when omitted. */
1873
+ inputEncoding?: 'json' | 'text';
1870
1874
  output?: never;
1871
1875
  errorText?: never;
1872
1876
  callProviderMetadata?: ProviderMetadata;
@@ -2108,6 +2112,8 @@ type UIMessageChunk<METADATA = unknown, DATA_TYPES extends UIDataTypes = UIDataT
2108
2112
  type: 'tool-input-start';
2109
2113
  toolCallId: string;
2110
2114
  toolName: string;
2115
+ /** Encoding of the input deltas. Defaults to JSON when omitted. */
2116
+ inputEncoding?: 'json' | 'text';
2111
2117
  providerExecuted?: boolean;
2112
2118
  providerMetadata?: ProviderMetadata;
2113
2119
  toolMetadata?: JSONObject;
@@ -2542,6 +2548,8 @@ type TextStreamPart<TOOLS extends ToolSet> = {
2542
2548
  type: 'tool-input-start';
2543
2549
  id: string;
2544
2550
  toolName: string;
2551
+ /** Encoding of the input deltas. Defaults to JSON when omitted. */
2552
+ inputEncoding?: 'json' | 'text';
2545
2553
  providerMetadata?: ProviderMetadata;
2546
2554
  toolMetadata?: JSONObject;
2547
2555
  providerExecuted?: boolean;
package/dist/index.js CHANGED
@@ -1335,7 +1335,7 @@ function detectMediaType({
1335
1335
  var import_provider_utils3 = require("@ai-sdk/provider-utils");
1336
1336
 
1337
1337
  // src/version.ts
1338
- var VERSION = true ? "6.0.307" : "0.0.0-test";
1338
+ var VERSION = true ? "6.0.308" : "0.0.0-test";
1339
1339
 
1340
1340
  // src/util/download/download.ts
1341
1341
  var download = async ({
@@ -5856,6 +5856,7 @@ var uiMessageChunkSchema = (0, import_provider_utils17.lazySchema)(
5856
5856
  type: import_v47.z.literal("tool-input-start"),
5857
5857
  toolCallId: import_v47.z.string(),
5858
5858
  toolName: import_v47.z.string(),
5859
+ inputEncoding: import_v47.z.enum(["json", "text"]).optional(),
5859
5860
  providerExecuted: import_v47.z.boolean().optional(),
5860
5861
  providerMetadata: providerMetadataSchema.optional(),
5861
5862
  toolMetadata: toolMetadataSchema.optional(),
@@ -6071,6 +6072,7 @@ function createStreamingUIMessageState({
6071
6072
  }
6072
6073
  partialToolCalls[part.toolCallId] = {
6073
6074
  text: (_a23 = part.rawInput) != null ? _a23 : "",
6075
+ inputEncoding: part.inputEncoding,
6074
6076
  index,
6075
6077
  toolName: part.type === "dynamic-tool" ? part.toolName : getStaticToolName(part),
6076
6078
  dynamic: part.type === "dynamic-tool",
@@ -6150,6 +6152,11 @@ function processUIMessageStream({
6150
6152
  anyPart.output = anyOptions.output;
6151
6153
  anyPart.errorText = anyOptions.errorText;
6152
6154
  anyPart.rawInput = anyOptions.rawInput;
6155
+ if (anyOptions.inputEncoding != null) {
6156
+ anyPart.inputEncoding = anyOptions.inputEncoding;
6157
+ } else {
6158
+ delete anyPart.inputEncoding;
6159
+ }
6153
6160
  anyPart.preliminary = anyOptions.preliminary;
6154
6161
  if (options.title !== void 0) {
6155
6162
  anyPart.title = options.title;
@@ -6175,6 +6182,7 @@ function processUIMessageStream({
6175
6182
  title: options.title,
6176
6183
  ...options.toolMetadata !== void 0 ? { toolMetadata: options.toolMetadata } : {},
6177
6184
  input: anyOptions.input,
6185
+ ...anyOptions.inputEncoding != null ? { inputEncoding: anyOptions.inputEncoding } : {},
6178
6186
  output: anyOptions.output,
6179
6187
  rawInput: anyOptions.rawInput,
6180
6188
  errorText: anyOptions.errorText,
@@ -6199,6 +6207,11 @@ function processUIMessageStream({
6199
6207
  anyPart.output = anyOptions.output;
6200
6208
  anyPart.errorText = anyOptions.errorText;
6201
6209
  anyPart.rawInput = anyOptions.rawInput;
6210
+ if (anyOptions.inputEncoding != null) {
6211
+ anyPart.inputEncoding = anyOptions.inputEncoding;
6212
+ } else {
6213
+ delete anyPart.inputEncoding;
6214
+ }
6202
6215
  anyPart.preliminary = anyOptions.preliminary;
6203
6216
  if (options.title !== void 0) {
6204
6217
  anyPart.title = options.title;
@@ -6223,6 +6236,7 @@ function processUIMessageStream({
6223
6236
  toolCallId: options.toolCallId,
6224
6237
  state: options.state,
6225
6238
  input: anyOptions.input,
6239
+ ...anyOptions.inputEncoding != null ? { inputEncoding: anyOptions.inputEncoding } : {},
6226
6240
  output: anyOptions.output,
6227
6241
  errorText: anyOptions.errorText,
6228
6242
  preliminary: anyOptions.preliminary,
@@ -6371,6 +6385,7 @@ function processUIMessageStream({
6371
6385
  const toolInvocations = getCurrentStepParts().filter(isStaticToolUIPart);
6372
6386
  state.partialToolCalls[chunk.toolCallId] = {
6373
6387
  text: "",
6388
+ inputEncoding: chunk.inputEncoding,
6374
6389
  toolName: chunk.toolName,
6375
6390
  index: toolInvocations.length,
6376
6391
  dynamic: chunk.dynamic,
@@ -6382,6 +6397,7 @@ function processUIMessageStream({
6382
6397
  toolCallId: chunk.toolCallId,
6383
6398
  toolName: chunk.toolName,
6384
6399
  state: "input-streaming",
6400
+ inputEncoding: chunk.inputEncoding,
6385
6401
  input: void 0,
6386
6402
  providerExecuted: chunk.providerExecuted,
6387
6403
  title: chunk.title,
@@ -6393,6 +6409,7 @@ function processUIMessageStream({
6393
6409
  toolCallId: chunk.toolCallId,
6394
6410
  toolName: chunk.toolName,
6395
6411
  state: "input-streaming",
6412
+ inputEncoding: chunk.inputEncoding,
6396
6413
  input: void 0,
6397
6414
  providerExecuted: chunk.providerExecuted,
6398
6415
  title: chunk.title,
@@ -6413,14 +6430,13 @@ function processUIMessageStream({
6413
6430
  });
6414
6431
  }
6415
6432
  partialToolCall.text += chunk.inputTextDelta;
6416
- const { value: partialArgs } = await parsePartialJson(
6417
- partialToolCall.text
6418
- );
6433
+ const partialArgs = partialToolCall.inputEncoding === "text" ? partialToolCall.text : (await parsePartialJson(partialToolCall.text)).value;
6419
6434
  if (partialToolCall.dynamic) {
6420
6435
  updateDynamicToolPart({
6421
6436
  toolCallId: chunk.toolCallId,
6422
6437
  toolName: partialToolCall.toolName,
6423
6438
  state: "input-streaming",
6439
+ inputEncoding: partialToolCall.inputEncoding,
6424
6440
  input: partialArgs,
6425
6441
  rawInput: partialToolCall.text,
6426
6442
  title: partialToolCall.title,
@@ -6431,6 +6447,7 @@ function processUIMessageStream({
6431
6447
  toolCallId: chunk.toolCallId,
6432
6448
  toolName: partialToolCall.toolName,
6433
6449
  state: "input-streaming",
6450
+ inputEncoding: partialToolCall.inputEncoding,
6434
6451
  input: partialArgs,
6435
6452
  rawInput: partialToolCall.text,
6436
6453
  title: partialToolCall.title,
@@ -9160,6 +9177,7 @@ var DefaultStreamTextResult = class {
9160
9177
  type: "tool-input-start",
9161
9178
  toolCallId: part.id,
9162
9179
  toolName: part.toolName,
9180
+ ...part.inputEncoding != null ? { inputEncoding: part.inputEncoding } : {},
9163
9181
  ...part.providerExecuted != null ? { providerExecuted: part.providerExecuted } : {},
9164
9182
  ...part.providerMetadata != null ? { providerMetadata: part.providerMetadata } : {},
9165
9183
  ...part.toolMetadata != null ? { toolMetadata: part.toolMetadata } : {},
@@ -10077,6 +10095,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(() => {
10077
10095
  state: import_v48.z.literal("input-streaming"),
10078
10096
  input: import_v48.z.unknown().optional(),
10079
10097
  rawInput: import_v48.z.string().optional(),
10098
+ inputEncoding: import_v48.z.enum(["json", "text"]).optional(),
10080
10099
  providerExecuted: import_v48.z.boolean().optional(),
10081
10100
  callProviderMetadata: providerMetadataSchema.optional(),
10082
10101
  output: import_v48.z.never().optional(),
@@ -10180,6 +10199,7 @@ var uiMessagesSchema = (0, import_provider_utils24.lazySchema)(() => {
10180
10199
  callProviderMetadata: providerMetadataSchema.optional(),
10181
10200
  input: import_v48.z.unknown().optional(),
10182
10201
  rawInput: import_v48.z.string().optional(),
10202
+ inputEncoding: import_v48.z.enum(["json", "text"]).optional(),
10183
10203
  output: import_v48.z.never().optional(),
10184
10204
  errorText: import_v48.z.never().optional(),
10185
10205
  approval: import_v48.z.never().optional()