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 +10 -0
- package/dist/index.d.mts +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +24 -4
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +24 -4
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +7 -0
- package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +18 -6
- package/package.json +5 -5
- package/src/generate-text/stream-text-result.ts +2 -0
- package/src/generate-text/stream-text.ts +3 -0
- package/src/ui/process-ui-message-stream.ts +29 -3
- package/src/ui/ui-messages.ts +4 -0
- package/src/ui/validate-ui-messages.ts +2 -0
- package/src/ui-message-stream/ui-message-chunks.ts +3 -0
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.
|
|
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
|
|
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()
|