ai 5.0.0-alpha.3 → 5.0.0-alpha.4
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 +17 -0
- package/dist/index.d.mts +64 -12
- package/dist/index.d.ts +64 -12
- package/dist/index.js +71 -45
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +70 -44
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.mjs
CHANGED
@@ -1586,18 +1586,18 @@ var SerialJobExecutor = class {
|
|
1586
1586
|
function shouldResubmitMessages({
|
1587
1587
|
originalMaxToolInvocationStep,
|
1588
1588
|
originalMessageCount,
|
1589
|
-
maxSteps
|
1589
|
+
maxSteps,
|
1590
1590
|
messages
|
1591
1591
|
}) {
|
1592
1592
|
var _a17;
|
1593
1593
|
const lastMessage = messages[messages.length - 1];
|
1594
1594
|
return (
|
1595
1595
|
// check if the feature is enabled:
|
1596
|
-
|
1596
|
+
maxSteps > 1 && // ensure there is a last message:
|
1597
1597
|
lastMessage != null && // ensure we actually have new steps (to prevent infinite loops in case of errors):
|
1598
1598
|
(messages.length > originalMessageCount || extractMaxToolInvocationStep(getToolInvocations(lastMessage)) !== originalMaxToolInvocationStep) && // check that next step is possible:
|
1599
1599
|
isAssistantMessageWithCompletedToolCalls(lastMessage) && // limit the number of automatic steps:
|
1600
|
-
((_a17 = extractMaxToolInvocationStep(getToolInvocations(lastMessage))) != null ? _a17 : 0) <
|
1600
|
+
((_a17 = extractMaxToolInvocationStep(getToolInvocations(lastMessage))) != null ? _a17 : 0) < maxSteps
|
1601
1601
|
);
|
1602
1602
|
}
|
1603
1603
|
function isAssistantMessageWithCompletedToolCalls(message) {
|
@@ -1637,7 +1637,7 @@ var ChatStore = class {
|
|
1637
1637
|
chats = {},
|
1638
1638
|
generateId: generateId3,
|
1639
1639
|
transport,
|
1640
|
-
maxSteps
|
1640
|
+
maxSteps = 1,
|
1641
1641
|
messageMetadataSchema,
|
1642
1642
|
dataPartSchemas
|
1643
1643
|
}) {
|
@@ -1653,7 +1653,7 @@ var ChatStore = class {
|
|
1653
1653
|
}
|
1654
1654
|
])
|
1655
1655
|
);
|
1656
|
-
this.maxSteps =
|
1656
|
+
this.maxSteps = maxSteps;
|
1657
1657
|
this.transport = transport;
|
1658
1658
|
this.subscribers = /* @__PURE__ */ new Set();
|
1659
1659
|
this.generateId = generateId3 != null ? generateId3 : generateIdFunc;
|
@@ -2244,7 +2244,7 @@ function defaultChatStore({
|
|
2244
2244
|
generateId: generateId3 = generateIdFunc2,
|
2245
2245
|
dataPartSchemas,
|
2246
2246
|
messageMetadataSchema,
|
2247
|
-
maxSteps
|
2247
|
+
maxSteps = 1,
|
2248
2248
|
chats
|
2249
2249
|
}) {
|
2250
2250
|
return new ChatStore({
|
@@ -2259,7 +2259,7 @@ function defaultChatStore({
|
|
2259
2259
|
generateId: generateId3,
|
2260
2260
|
messageMetadataSchema,
|
2261
2261
|
dataPartSchemas,
|
2262
|
-
maxSteps
|
2262
|
+
maxSteps,
|
2263
2263
|
chats
|
2264
2264
|
});
|
2265
2265
|
}
|
@@ -5403,6 +5403,11 @@ var DefaultSpeechResult = class {
|
|
5403
5403
|
// core/generate-text/generate-text.ts
|
5404
5404
|
import { createIdGenerator as createIdGenerator3 } from "@ai-sdk/provider-utils";
|
5405
5405
|
|
5406
|
+
// src/util/as-array.ts
|
5407
|
+
function asArray(value) {
|
5408
|
+
return value === void 0 ? [] : Array.isArray(value) ? value : [value];
|
5409
|
+
}
|
5410
|
+
|
5406
5411
|
// core/prompt/prepare-tools-and-tool-choice.ts
|
5407
5412
|
import { asSchema as asSchema2 } from "@ai-sdk/provider-utils";
|
5408
5413
|
|
@@ -5624,8 +5629,8 @@ var DefaultStepResult = class {
|
|
5624
5629
|
};
|
5625
5630
|
|
5626
5631
|
// core/generate-text/stop-condition.ts
|
5627
|
-
function
|
5628
|
-
return ({ steps }) => steps.length
|
5632
|
+
function stepCountIs(stepCount) {
|
5633
|
+
return ({ steps }) => steps.length === stepCount;
|
5629
5634
|
}
|
5630
5635
|
function hasToolCall(toolName) {
|
5631
5636
|
return ({ steps }) => {
|
@@ -5635,6 +5640,12 @@ function hasToolCall(toolName) {
|
|
5635
5640
|
)) != null ? _c : false;
|
5636
5641
|
};
|
5637
5642
|
}
|
5643
|
+
async function isStopConditionMet({
|
5644
|
+
stopConditions,
|
5645
|
+
steps
|
5646
|
+
}) {
|
5647
|
+
return (await Promise.all(stopConditions.map((condition) => condition({ steps })))).some((result) => result);
|
5648
|
+
}
|
5638
5649
|
|
5639
5650
|
// core/generate-text/to-response-messages.ts
|
5640
5651
|
function toResponseMessages({
|
@@ -5709,12 +5720,14 @@ async function generateText({
|
|
5709
5720
|
maxRetries: maxRetriesArg,
|
5710
5721
|
abortSignal,
|
5711
5722
|
headers,
|
5712
|
-
|
5723
|
+
stopWhen = stepCountIs(1),
|
5713
5724
|
experimental_output: output,
|
5714
5725
|
experimental_telemetry: telemetry,
|
5715
5726
|
providerOptions,
|
5716
|
-
experimental_activeTools
|
5717
|
-
|
5727
|
+
experimental_activeTools,
|
5728
|
+
activeTools = experimental_activeTools,
|
5729
|
+
experimental_prepareStep,
|
5730
|
+
prepareStep = experimental_prepareStep,
|
5718
5731
|
experimental_repairToolCall: repairToolCall,
|
5719
5732
|
_internal: {
|
5720
5733
|
generateId: generateId3 = originalGenerateId3,
|
@@ -5723,6 +5736,7 @@ async function generateText({
|
|
5723
5736
|
onStepFinish,
|
5724
5737
|
...settings
|
5725
5738
|
}) {
|
5739
|
+
const stopConditions = asArray(stopWhen);
|
5726
5740
|
const { maxRetries, retry } = prepareRetries({ maxRetries: maxRetriesArg });
|
5727
5741
|
const callSettings = prepareCallSettings(settings);
|
5728
5742
|
const baseTelemetryAttributes = getBaseTelemetryAttributes({
|
@@ -5786,7 +5800,7 @@ async function generateText({
|
|
5786
5800
|
const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({
|
5787
5801
|
tools,
|
5788
5802
|
toolChoice: (_b = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _b : toolChoice,
|
5789
|
-
activeTools: (_c = prepareStepResult == null ? void 0 : prepareStepResult.
|
5803
|
+
activeTools: (_c = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _c : activeTools
|
5790
5804
|
});
|
5791
5805
|
currentModelResponse = await retry(
|
5792
5806
|
() => {
|
@@ -5931,8 +5945,8 @@ async function generateText({
|
|
5931
5945
|
} while (
|
5932
5946
|
// there are tool calls:
|
5933
5947
|
currentToolCalls.length > 0 && // all current tool calls have results:
|
5934
|
-
currentToolResults.length === currentToolCalls.length && // continue until
|
5935
|
-
!await
|
5948
|
+
currentToolResults.length === currentToolCalls.length && // continue until a stop condition is met:
|
5949
|
+
!await isStopConditionMet({ stopConditions, steps })
|
5936
5950
|
);
|
5937
5951
|
span.setAttributes(
|
5938
5952
|
selectTelemetryAttributes({
|
@@ -6282,11 +6296,6 @@ function smoothStream({
|
|
6282
6296
|
// core/generate-text/stream-text.ts
|
6283
6297
|
import { createIdGenerator as createIdGenerator4 } from "@ai-sdk/provider-utils";
|
6284
6298
|
|
6285
|
-
// src/util/as-array.ts
|
6286
|
-
function asArray(value) {
|
6287
|
-
return value === void 0 ? [] : Array.isArray(value) ? value : [value];
|
6288
|
-
}
|
6289
|
-
|
6290
6299
|
// core/generate-text/run-tools-transformation.ts
|
6291
6300
|
import { generateId } from "@ai-sdk/provider-utils";
|
6292
6301
|
function runToolsTransformation({
|
@@ -6497,13 +6506,15 @@ function streamText({
|
|
6497
6506
|
maxRetries,
|
6498
6507
|
abortSignal,
|
6499
6508
|
headers,
|
6500
|
-
|
6509
|
+
stopWhen = stepCountIs(1),
|
6501
6510
|
experimental_output: output,
|
6502
6511
|
experimental_telemetry: telemetry,
|
6512
|
+
prepareStep,
|
6503
6513
|
providerOptions,
|
6504
6514
|
experimental_toolCallStreaming = false,
|
6505
6515
|
toolCallStreaming = experimental_toolCallStreaming,
|
6506
|
-
experimental_activeTools
|
6516
|
+
experimental_activeTools,
|
6517
|
+
activeTools = experimental_activeTools,
|
6507
6518
|
experimental_repairToolCall: repairToolCall,
|
6508
6519
|
experimental_transform: transform,
|
6509
6520
|
onChunk,
|
@@ -6533,9 +6544,10 @@ function streamText({
|
|
6533
6544
|
transforms: asArray(transform),
|
6534
6545
|
activeTools,
|
6535
6546
|
repairToolCall,
|
6536
|
-
|
6547
|
+
stopConditions: asArray(stopWhen),
|
6537
6548
|
output,
|
6538
6549
|
providerOptions,
|
6550
|
+
prepareStep,
|
6539
6551
|
onChunk,
|
6540
6552
|
onError,
|
6541
6553
|
onFinish,
|
@@ -6610,9 +6622,10 @@ var DefaultStreamTextResult = class {
|
|
6610
6622
|
transforms,
|
6611
6623
|
activeTools,
|
6612
6624
|
repairToolCall,
|
6613
|
-
|
6625
|
+
stopConditions,
|
6614
6626
|
output,
|
6615
6627
|
providerOptions,
|
6628
|
+
prepareStep,
|
6616
6629
|
now: now2,
|
6617
6630
|
currentDate,
|
6618
6631
|
generateId: generateId3,
|
@@ -6831,6 +6844,7 @@ var DefaultStreamTextResult = class {
|
|
6831
6844
|
responseMessages,
|
6832
6845
|
usage
|
6833
6846
|
}) {
|
6847
|
+
var _a17, _b, _c;
|
6834
6848
|
stepFinish = new DelayedPromise();
|
6835
6849
|
const initialPrompt = await standardizePrompt({
|
6836
6850
|
system,
|
@@ -6841,6 +6855,11 @@ var DefaultStreamTextResult = class {
|
|
6841
6855
|
...initialPrompt.messages,
|
6842
6856
|
...responseMessages
|
6843
6857
|
];
|
6858
|
+
const prepareStepResult = await (prepareStep == null ? void 0 : prepareStep({
|
6859
|
+
model,
|
6860
|
+
steps: recordedSteps,
|
6861
|
+
stepNumber: recordedSteps.length
|
6862
|
+
}));
|
6844
6863
|
const promptMessages = await convertToLanguageModelPrompt({
|
6845
6864
|
prompt: {
|
6846
6865
|
system: initialPrompt.system,
|
@@ -6848,9 +6867,12 @@ var DefaultStreamTextResult = class {
|
|
6848
6867
|
},
|
6849
6868
|
supportedUrls: await model.supportedUrls
|
6850
6869
|
});
|
6851
|
-
const
|
6852
|
-
|
6853
|
-
|
6870
|
+
const stepModel = (_a17 = prepareStepResult == null ? void 0 : prepareStepResult.model) != null ? _a17 : model;
|
6871
|
+
const { toolChoice: stepToolChoice, tools: stepTools } = prepareToolsAndToolChoice({
|
6872
|
+
tools,
|
6873
|
+
toolChoice: (_b = prepareStepResult == null ? void 0 : prepareStepResult.toolChoice) != null ? _b : toolChoice,
|
6874
|
+
activeTools: (_c = prepareStepResult == null ? void 0 : prepareStepResult.activeTools) != null ? _c : activeTools
|
6875
|
+
});
|
6854
6876
|
const {
|
6855
6877
|
result: { stream: stream2, response, request },
|
6856
6878
|
doStreamSpan,
|
@@ -6866,24 +6888,23 @@ var DefaultStreamTextResult = class {
|
|
6866
6888
|
telemetry
|
6867
6889
|
}),
|
6868
6890
|
...baseTelemetryAttributes,
|
6891
|
+
// model:
|
6892
|
+
"ai.model.provider": stepModel.provider,
|
6893
|
+
"ai.model.id": stepModel.modelId,
|
6894
|
+
// prompt:
|
6869
6895
|
"ai.prompt.messages": {
|
6870
6896
|
input: () => JSON.stringify(promptMessages)
|
6871
6897
|
},
|
6872
6898
|
"ai.prompt.tools": {
|
6873
6899
|
// convert the language model level tools:
|
6874
|
-
input: () =>
|
6875
|
-
var _a17;
|
6876
|
-
return (_a17 = toolsAndToolChoice.tools) == null ? void 0 : _a17.map(
|
6877
|
-
(tool2) => JSON.stringify(tool2)
|
6878
|
-
);
|
6879
|
-
}
|
6900
|
+
input: () => stepTools == null ? void 0 : stepTools.map((tool2) => JSON.stringify(tool2))
|
6880
6901
|
},
|
6881
6902
|
"ai.prompt.toolChoice": {
|
6882
|
-
input: () =>
|
6903
|
+
input: () => stepToolChoice != null ? JSON.stringify(stepToolChoice) : void 0
|
6883
6904
|
},
|
6884
6905
|
// standardized gen-ai llm span attributes:
|
6885
|
-
"gen_ai.system":
|
6886
|
-
"gen_ai.request.model":
|
6906
|
+
"gen_ai.system": stepModel.provider,
|
6907
|
+
"gen_ai.request.model": stepModel.modelId,
|
6887
6908
|
"gen_ai.request.frequency_penalty": callSettings.frequencyPenalty,
|
6888
6909
|
"gen_ai.request.max_tokens": callSettings.maxOutputTokens,
|
6889
6910
|
"gen_ai.request.presence_penalty": callSettings.presencePenalty,
|
@@ -6900,9 +6921,10 @@ var DefaultStreamTextResult = class {
|
|
6900
6921
|
startTimestampMs: now2(),
|
6901
6922
|
// get before the call
|
6902
6923
|
doStreamSpan: doStreamSpan2,
|
6903
|
-
result: await
|
6924
|
+
result: await stepModel.doStream({
|
6904
6925
|
...callSettings,
|
6905
|
-
|
6926
|
+
tools: stepTools,
|
6927
|
+
toolChoice: stepToolChoice,
|
6906
6928
|
responseFormat: output == null ? void 0 : output.responseFormat,
|
6907
6929
|
prompt: promptMessages,
|
6908
6930
|
providerOptions,
|
@@ -6955,7 +6977,7 @@ var DefaultStreamTextResult = class {
|
|
6955
6977
|
streamWithToolResults.pipeThrough(
|
6956
6978
|
new TransformStream({
|
6957
6979
|
async transform(chunk, controller) {
|
6958
|
-
var
|
6980
|
+
var _a18, _b2, _c2, _d;
|
6959
6981
|
if (chunk.type === "stream-start") {
|
6960
6982
|
warnings = chunk.warnings;
|
6961
6983
|
return;
|
@@ -7018,9 +7040,9 @@ var DefaultStreamTextResult = class {
|
|
7018
7040
|
}
|
7019
7041
|
case "response-metadata": {
|
7020
7042
|
stepResponse = {
|
7021
|
-
id: (
|
7022
|
-
timestamp: (
|
7023
|
-
modelId: (
|
7043
|
+
id: (_a18 = chunk.id) != null ? _a18 : stepResponse.id,
|
7044
|
+
timestamp: (_b2 = chunk.timestamp) != null ? _b2 : stepResponse.timestamp,
|
7045
|
+
modelId: (_c2 = chunk.modelId) != null ? _c2 : stepResponse.modelId
|
7024
7046
|
};
|
7025
7047
|
break;
|
7026
7048
|
}
|
@@ -7109,7 +7131,11 @@ var DefaultStreamTextResult = class {
|
|
7109
7131
|
const combinedUsage = addLanguageModelUsage(usage, stepUsage);
|
7110
7132
|
await stepFinish.promise;
|
7111
7133
|
if (stepToolCalls.length > 0 && // all current tool calls have results:
|
7112
|
-
stepToolResults.length === stepToolCalls.length &&
|
7134
|
+
stepToolResults.length === stepToolCalls.length && // continue until a stop condition is met:
|
7135
|
+
!await isStopConditionMet({
|
7136
|
+
stopConditions,
|
7137
|
+
steps: recordedSteps
|
7138
|
+
})) {
|
7113
7139
|
responseMessages.push(
|
7114
7140
|
...toResponseMessages({
|
7115
7141
|
content: stepContent,
|
@@ -8601,7 +8627,6 @@ export {
|
|
8601
8627
|
isAssistantMessageWithCompletedToolCalls,
|
8602
8628
|
isDeepEqualData,
|
8603
8629
|
jsonSchema2 as jsonSchema,
|
8604
|
-
maxSteps,
|
8605
8630
|
modelMessageSchema,
|
8606
8631
|
parsePartialJson,
|
8607
8632
|
pipeTextStreamToResponse,
|
@@ -8610,6 +8635,7 @@ export {
|
|
8610
8635
|
simulateReadableStream,
|
8611
8636
|
simulateStreamingMiddleware,
|
8612
8637
|
smoothStream,
|
8638
|
+
stepCountIs,
|
8613
8639
|
streamObject,
|
8614
8640
|
streamText,
|
8615
8641
|
systemModelMessageSchema,
|