ai 6.0.198 → 6.0.200
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 +16 -0
- package/dist/index.js +80 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +80 -13
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/02-foundations/02-providers-and-models.mdx +1 -0
- package/docs/04-ai-sdk-ui/01-overview.mdx +1 -1
- package/package.json +3 -3
- package/src/generate-text/stream-text.ts +88 -5
- package/src/ui/convert-to-model-messages.ts +1 -1
- package/src/ui/process-ui-message-stream.ts +6 -5
- package/src/util/create-id-map.ts +11 -0
package/dist/index.mjs
CHANGED
|
@@ -1144,7 +1144,7 @@ import {
|
|
|
1144
1144
|
} from "@ai-sdk/provider-utils";
|
|
1145
1145
|
|
|
1146
1146
|
// src/version.ts
|
|
1147
|
-
var VERSION = true ? "6.0.
|
|
1147
|
+
var VERSION = true ? "6.0.200" : "0.0.0-test";
|
|
1148
1148
|
|
|
1149
1149
|
// src/util/download/download.ts
|
|
1150
1150
|
var download = async ({
|
|
@@ -5324,6 +5324,11 @@ function isDataUIMessageChunk(chunk) {
|
|
|
5324
5324
|
return chunk.type.startsWith("data-");
|
|
5325
5325
|
}
|
|
5326
5326
|
|
|
5327
|
+
// src/util/create-id-map.ts
|
|
5328
|
+
function createIdMap() {
|
|
5329
|
+
return /* @__PURE__ */ Object.create(null);
|
|
5330
|
+
}
|
|
5331
|
+
|
|
5327
5332
|
// src/ui/ui-messages.ts
|
|
5328
5333
|
function isDataUIPart(part) {
|
|
5329
5334
|
return part.type.startsWith("data-");
|
|
@@ -5367,9 +5372,9 @@ function createStreamingUIMessageState({
|
|
|
5367
5372
|
role: "assistant",
|
|
5368
5373
|
parts: []
|
|
5369
5374
|
},
|
|
5370
|
-
activeTextParts:
|
|
5371
|
-
activeReasoningParts:
|
|
5372
|
-
partialToolCalls:
|
|
5375
|
+
activeTextParts: createIdMap(),
|
|
5376
|
+
activeReasoningParts: createIdMap(),
|
|
5377
|
+
partialToolCalls: createIdMap()
|
|
5373
5378
|
};
|
|
5374
5379
|
}
|
|
5375
5380
|
function processUIMessageStream({
|
|
@@ -5843,8 +5848,8 @@ function processUIMessageStream({
|
|
|
5843
5848
|
break;
|
|
5844
5849
|
}
|
|
5845
5850
|
case "finish-step": {
|
|
5846
|
-
state.activeTextParts =
|
|
5847
|
-
state.activeReasoningParts =
|
|
5851
|
+
state.activeTextParts = createIdMap();
|
|
5852
|
+
state.activeReasoningParts = createIdMap();
|
|
5848
5853
|
break;
|
|
5849
5854
|
}
|
|
5850
5855
|
case "start": {
|
|
@@ -6485,6 +6490,28 @@ var originalGenerateId2 = createIdGenerator2({
|
|
|
6485
6490
|
prefix: "aitxt",
|
|
6486
6491
|
size: 24
|
|
6487
6492
|
});
|
|
6493
|
+
var isOutputChunkType = {
|
|
6494
|
+
file: true,
|
|
6495
|
+
source: true,
|
|
6496
|
+
"text-start": true,
|
|
6497
|
+
"text-end": true,
|
|
6498
|
+
"text-delta": true,
|
|
6499
|
+
"reasoning-start": true,
|
|
6500
|
+
"reasoning-end": true,
|
|
6501
|
+
"reasoning-delta": true,
|
|
6502
|
+
"tool-input-start": true,
|
|
6503
|
+
"tool-input-end": true,
|
|
6504
|
+
"tool-input-delta": true,
|
|
6505
|
+
"tool-approval-request": true,
|
|
6506
|
+
"tool-call": true,
|
|
6507
|
+
"tool-result": true,
|
|
6508
|
+
"tool-error": true,
|
|
6509
|
+
"stream-start": false,
|
|
6510
|
+
"response-metadata": false,
|
|
6511
|
+
finish: false,
|
|
6512
|
+
error: false,
|
|
6513
|
+
raw: false
|
|
6514
|
+
};
|
|
6488
6515
|
function streamText({
|
|
6489
6516
|
model,
|
|
6490
6517
|
tools,
|
|
@@ -6703,6 +6730,7 @@ var DefaultStreamTextResult = class {
|
|
|
6703
6730
|
let recordedRequest = {};
|
|
6704
6731
|
let recordedWarnings = [];
|
|
6705
6732
|
const recordedSteps = [];
|
|
6733
|
+
let recordedNoOutputError;
|
|
6706
6734
|
const pendingDeferredToolCalls = /* @__PURE__ */ new Map();
|
|
6707
6735
|
let rootSpan;
|
|
6708
6736
|
let activeTextContent = {};
|
|
@@ -6716,7 +6744,11 @@ var DefaultStreamTextResult = class {
|
|
|
6716
6744
|
await (onChunk == null ? void 0 : onChunk({ chunk: part }));
|
|
6717
6745
|
}
|
|
6718
6746
|
if (part.type === "error") {
|
|
6719
|
-
|
|
6747
|
+
const error = wrapGatewayError(part.error);
|
|
6748
|
+
if (NoOutputGeneratedError.isInstance(error)) {
|
|
6749
|
+
recordedNoOutputError = error;
|
|
6750
|
+
}
|
|
6751
|
+
await onError({ error });
|
|
6720
6752
|
}
|
|
6721
6753
|
if (part.type === "text-start") {
|
|
6722
6754
|
activeTextContent[part.id] = {
|
|
@@ -6867,8 +6899,8 @@ var DefaultStreamTextResult = class {
|
|
|
6867
6899
|
async flush(controller) {
|
|
6868
6900
|
var _a21, _b, _c, _d, _e, _f, _g;
|
|
6869
6901
|
try {
|
|
6870
|
-
if (recordedSteps.length === 0) {
|
|
6871
|
-
const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : new NoOutputGeneratedError({
|
|
6902
|
+
if (recordedSteps.length === 0 || recordedNoOutputError != null) {
|
|
6903
|
+
const error = (abortSignal == null ? void 0 : abortSignal.aborted) ? abortSignal.reason : recordedNoOutputError != null ? recordedNoOutputError : new NoOutputGeneratedError({
|
|
6872
6904
|
message: "No output generated. Check the stream for errors."
|
|
6873
6905
|
});
|
|
6874
6906
|
self._finishReason.reject(error);
|
|
@@ -7367,6 +7399,8 @@ var DefaultStreamTextResult = class {
|
|
|
7367
7399
|
const activeToolCallToolNames = {};
|
|
7368
7400
|
let stepFinishReason = "other";
|
|
7369
7401
|
let stepRawFinishReason = void 0;
|
|
7402
|
+
let hasReceivedTerminalChunk = false;
|
|
7403
|
+
let hasReceivedOutputChunk = false;
|
|
7370
7404
|
let stepUsage = createNullLanguageModelUsage();
|
|
7371
7405
|
let stepProviderMetadata;
|
|
7372
7406
|
let stepFirstChunk = true;
|
|
@@ -7402,6 +7436,9 @@ var DefaultStreamTextResult = class {
|
|
|
7402
7436
|
});
|
|
7403
7437
|
}
|
|
7404
7438
|
const chunkType = chunk.type;
|
|
7439
|
+
if (isOutputChunkType[chunkType]) {
|
|
7440
|
+
hasReceivedOutputChunk = true;
|
|
7441
|
+
}
|
|
7405
7442
|
switch (chunkType) {
|
|
7406
7443
|
case "tool-approval-request":
|
|
7407
7444
|
case "text-start":
|
|
@@ -7461,6 +7498,7 @@ var DefaultStreamTextResult = class {
|
|
|
7461
7498
|
break;
|
|
7462
7499
|
}
|
|
7463
7500
|
case "finish": {
|
|
7501
|
+
hasReceivedTerminalChunk = true;
|
|
7464
7502
|
stepUsage = chunk.usage;
|
|
7465
7503
|
stepFinishReason = chunk.finishReason;
|
|
7466
7504
|
stepRawFinishReason = chunk.rawFinishReason;
|
|
@@ -7520,6 +7558,7 @@ var DefaultStreamTextResult = class {
|
|
|
7520
7558
|
break;
|
|
7521
7559
|
}
|
|
7522
7560
|
case "error": {
|
|
7561
|
+
hasReceivedTerminalChunk = true;
|
|
7523
7562
|
controller.enqueue(chunk);
|
|
7524
7563
|
stepFinishReason = "error";
|
|
7525
7564
|
break;
|
|
@@ -7541,6 +7580,19 @@ var DefaultStreamTextResult = class {
|
|
|
7541
7580
|
// invoke onFinish callback and resolve toolResults promise when the stream is about to close:
|
|
7542
7581
|
async flush(controller) {
|
|
7543
7582
|
var _a22, _b2, _c2, _d2, _e2, _f2, _g2;
|
|
7583
|
+
if (!hasReceivedTerminalChunk && !hasReceivedOutputChunk) {
|
|
7584
|
+
controller.enqueue({
|
|
7585
|
+
type: "error",
|
|
7586
|
+
error: new NoOutputGeneratedError({
|
|
7587
|
+
message: "No output generated. The model stream ended without a finish chunk."
|
|
7588
|
+
})
|
|
7589
|
+
});
|
|
7590
|
+
doStreamSpan.end();
|
|
7591
|
+
clearStepTimeout();
|
|
7592
|
+
clearChunkTimeout();
|
|
7593
|
+
self.closeStream();
|
|
7594
|
+
return;
|
|
7595
|
+
}
|
|
7544
7596
|
const stepToolCallsJson = stepToolCalls.length > 0 ? JSON.stringify(stepToolCalls) : void 0;
|
|
7545
7597
|
try {
|
|
7546
7598
|
doStreamSpan.setAttributes(
|
|
@@ -7818,14 +7870,29 @@ var DefaultStreamTextResult = class {
|
|
|
7818
7870
|
)
|
|
7819
7871
|
);
|
|
7820
7872
|
}
|
|
7873
|
+
rejectResultPromises(error) {
|
|
7874
|
+
if (this._finishReason.isPending())
|
|
7875
|
+
this._finishReason.reject(error);
|
|
7876
|
+
if (this._rawFinishReason.isPending())
|
|
7877
|
+
this._rawFinishReason.reject(error);
|
|
7878
|
+
if (this._totalUsage.isPending())
|
|
7879
|
+
this._totalUsage.reject(error);
|
|
7880
|
+
if (this._steps.isPending())
|
|
7881
|
+
this._steps.reject(error);
|
|
7882
|
+
}
|
|
7821
7883
|
async consumeStream(options) {
|
|
7822
7884
|
var _a21;
|
|
7823
7885
|
try {
|
|
7824
7886
|
await consumeStream({
|
|
7825
7887
|
stream: this.fullStream,
|
|
7826
|
-
onError:
|
|
7888
|
+
onError: (error) => {
|
|
7889
|
+
var _a22;
|
|
7890
|
+
this.rejectResultPromises(error);
|
|
7891
|
+
(_a22 = options == null ? void 0 : options.onError) == null ? void 0 : _a22.call(options, error);
|
|
7892
|
+
}
|
|
7827
7893
|
});
|
|
7828
7894
|
} catch (error) {
|
|
7895
|
+
this.rejectResultPromises(error);
|
|
7829
7896
|
(_a21 = options == null ? void 0 : options.onError) == null ? void 0 : _a21.call(options, error);
|
|
7830
7897
|
}
|
|
7831
7898
|
}
|
|
@@ -8518,7 +8585,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8518
8585
|
if (message.parts != null) {
|
|
8519
8586
|
let block = [];
|
|
8520
8587
|
async function processBlock() {
|
|
8521
|
-
var _a21, _b, _c, _d, _e, _f, _g;
|
|
8588
|
+
var _a21, _b, _c, _d, _e, _f, _g, _h;
|
|
8522
8589
|
if (block.length === 0) {
|
|
8523
8590
|
return;
|
|
8524
8591
|
}
|
|
@@ -8626,7 +8693,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8626
8693
|
toolName: getToolName(toolPart),
|
|
8627
8694
|
output: {
|
|
8628
8695
|
type: "error-text",
|
|
8629
|
-
value: (_f = toolPart.approval.reason) != null ?
|
|
8696
|
+
value: (_g = (_f = toolPart.approval) == null ? void 0 : _f.reason) != null ? _g : "Tool execution denied."
|
|
8630
8697
|
},
|
|
8631
8698
|
...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}
|
|
8632
8699
|
});
|
|
@@ -8643,7 +8710,7 @@ async function convertToModelMessages(messages, options) {
|
|
|
8643
8710
|
toolCallId: toolPart.toolCallId,
|
|
8644
8711
|
input: toolPart.input,
|
|
8645
8712
|
output: toolPart.state === "output-error" ? toolPart.errorText : toolPart.output,
|
|
8646
|
-
tool: (
|
|
8713
|
+
tool: (_h = options == null ? void 0 : options.tools) == null ? void 0 : _h[toolName],
|
|
8647
8714
|
errorMode: toolPart.state === "output-error" ? "text" : "none"
|
|
8648
8715
|
}),
|
|
8649
8716
|
...toolPart.callProviderMetadata != null ? { providerOptions: toolPart.callProviderMetadata } : {}
|