ai 5.0.36 → 5.0.38
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 +13 -0
- package/dist/index.d.mts +52 -32
- package/dist/index.d.ts +52 -32
- package/dist/index.js +200 -189
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +200 -189
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
@@ -5747,17 +5747,217 @@ var DefaultStreamTextResult = class {
|
|
5747
5747
|
}
|
5748
5748
|
};
|
5749
5749
|
|
5750
|
+
// src/ui/convert-to-model-messages.ts
|
5751
|
+
function convertToModelMessages(messages, options) {
|
5752
|
+
const modelMessages = [];
|
5753
|
+
if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {
|
5754
|
+
messages = messages.map((message) => ({
|
5755
|
+
...message,
|
5756
|
+
parts: message.parts.filter(
|
5757
|
+
(part) => !isToolOrDynamicToolUIPart(part) || part.state !== "input-streaming" && part.state !== "input-available"
|
5758
|
+
)
|
5759
|
+
}));
|
5760
|
+
}
|
5761
|
+
for (const message of messages) {
|
5762
|
+
switch (message.role) {
|
5763
|
+
case "system": {
|
5764
|
+
const textParts = message.parts.filter((part) => part.type === "text");
|
5765
|
+
const providerMetadata = textParts.reduce((acc, part) => {
|
5766
|
+
if (part.providerMetadata != null) {
|
5767
|
+
return { ...acc, ...part.providerMetadata };
|
5768
|
+
}
|
5769
|
+
return acc;
|
5770
|
+
}, {});
|
5771
|
+
modelMessages.push({
|
5772
|
+
role: "system",
|
5773
|
+
content: textParts.map((part) => part.text).join(""),
|
5774
|
+
...Object.keys(providerMetadata).length > 0 ? { providerOptions: providerMetadata } : {}
|
5775
|
+
});
|
5776
|
+
break;
|
5777
|
+
}
|
5778
|
+
case "user": {
|
5779
|
+
modelMessages.push({
|
5780
|
+
role: "user",
|
5781
|
+
content: message.parts.filter(
|
5782
|
+
(part) => part.type === "text" || part.type === "file"
|
5783
|
+
).map((part) => {
|
5784
|
+
switch (part.type) {
|
5785
|
+
case "text":
|
5786
|
+
return {
|
5787
|
+
type: "text",
|
5788
|
+
text: part.text,
|
5789
|
+
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
5790
|
+
};
|
5791
|
+
case "file":
|
5792
|
+
return {
|
5793
|
+
type: "file",
|
5794
|
+
mediaType: part.mediaType,
|
5795
|
+
filename: part.filename,
|
5796
|
+
data: part.url,
|
5797
|
+
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
5798
|
+
};
|
5799
|
+
default:
|
5800
|
+
return part;
|
5801
|
+
}
|
5802
|
+
})
|
5803
|
+
});
|
5804
|
+
break;
|
5805
|
+
}
|
5806
|
+
case "assistant": {
|
5807
|
+
if (message.parts != null) {
|
5808
|
+
let processBlock2 = function() {
|
5809
|
+
var _a17, _b;
|
5810
|
+
if (block.length === 0) {
|
5811
|
+
return;
|
5812
|
+
}
|
5813
|
+
const content = [];
|
5814
|
+
for (const part of block) {
|
5815
|
+
if (part.type === "text") {
|
5816
|
+
content.push({
|
5817
|
+
type: "text",
|
5818
|
+
text: part.text,
|
5819
|
+
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
5820
|
+
});
|
5821
|
+
} else if (part.type === "file") {
|
5822
|
+
content.push({
|
5823
|
+
type: "file",
|
5824
|
+
mediaType: part.mediaType,
|
5825
|
+
filename: part.filename,
|
5826
|
+
data: part.url
|
5827
|
+
});
|
5828
|
+
} else if (part.type === "reasoning") {
|
5829
|
+
content.push({
|
5830
|
+
type: "reasoning",
|
5831
|
+
text: part.text,
|
5832
|
+
providerOptions: part.providerMetadata
|
5833
|
+
});
|
5834
|
+
} else if (part.type === "dynamic-tool") {
|
5835
|
+
const toolName = part.toolName;
|
5836
|
+
if (part.state !== "input-streaming") {
|
5837
|
+
content.push({
|
5838
|
+
type: "tool-call",
|
5839
|
+
toolCallId: part.toolCallId,
|
5840
|
+
toolName,
|
5841
|
+
input: part.input,
|
5842
|
+
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
5843
|
+
});
|
5844
|
+
}
|
5845
|
+
} else if (isToolUIPart(part)) {
|
5846
|
+
const toolName = getToolName(part);
|
5847
|
+
if (part.state !== "input-streaming") {
|
5848
|
+
content.push({
|
5849
|
+
type: "tool-call",
|
5850
|
+
toolCallId: part.toolCallId,
|
5851
|
+
toolName,
|
5852
|
+
input: part.state === "output-error" ? (_a17 = part.input) != null ? _a17 : part.rawInput : part.input,
|
5853
|
+
providerExecuted: part.providerExecuted,
|
5854
|
+
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
5855
|
+
});
|
5856
|
+
if (part.providerExecuted === true && (part.state === "output-available" || part.state === "output-error")) {
|
5857
|
+
content.push({
|
5858
|
+
type: "tool-result",
|
5859
|
+
toolCallId: part.toolCallId,
|
5860
|
+
toolName,
|
5861
|
+
output: createToolModelOutput({
|
5862
|
+
output: part.state === "output-error" ? part.errorText : part.output,
|
5863
|
+
tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],
|
5864
|
+
errorMode: part.state === "output-error" ? "json" : "none"
|
5865
|
+
})
|
5866
|
+
});
|
5867
|
+
}
|
5868
|
+
}
|
5869
|
+
} else {
|
5870
|
+
const _exhaustiveCheck = part;
|
5871
|
+
throw new Error(`Unsupported part: ${_exhaustiveCheck}`);
|
5872
|
+
}
|
5873
|
+
}
|
5874
|
+
modelMessages.push({
|
5875
|
+
role: "assistant",
|
5876
|
+
content
|
5877
|
+
});
|
5878
|
+
const toolParts = block.filter(
|
5879
|
+
(part) => isToolUIPart(part) && part.providerExecuted !== true || part.type === "dynamic-tool"
|
5880
|
+
);
|
5881
|
+
if (toolParts.length > 0) {
|
5882
|
+
modelMessages.push({
|
5883
|
+
role: "tool",
|
5884
|
+
content: toolParts.map((toolPart) => {
|
5885
|
+
var _a18;
|
5886
|
+
switch (toolPart.state) {
|
5887
|
+
case "output-error":
|
5888
|
+
case "output-available": {
|
5889
|
+
const toolName = toolPart.type === "dynamic-tool" ? toolPart.toolName : getToolName(toolPart);
|
5890
|
+
return {
|
5891
|
+
type: "tool-result",
|
5892
|
+
toolCallId: toolPart.toolCallId,
|
5893
|
+
toolName,
|
5894
|
+
output: createToolModelOutput({
|
5895
|
+
output: toolPart.state === "output-error" ? toolPart.errorText : toolPart.output,
|
5896
|
+
tool: (_a18 = options == null ? void 0 : options.tools) == null ? void 0 : _a18[toolName],
|
5897
|
+
errorMode: toolPart.state === "output-error" ? "text" : "none"
|
5898
|
+
})
|
5899
|
+
};
|
5900
|
+
}
|
5901
|
+
default: {
|
5902
|
+
return null;
|
5903
|
+
}
|
5904
|
+
}
|
5905
|
+
}).filter(
|
5906
|
+
(output) => output != null
|
5907
|
+
)
|
5908
|
+
});
|
5909
|
+
}
|
5910
|
+
block = [];
|
5911
|
+
};
|
5912
|
+
var processBlock = processBlock2;
|
5913
|
+
let block = [];
|
5914
|
+
for (const part of message.parts) {
|
5915
|
+
if (part.type === "text" || part.type === "reasoning" || part.type === "file" || part.type === "dynamic-tool" || isToolUIPart(part)) {
|
5916
|
+
block.push(part);
|
5917
|
+
} else if (part.type === "step-start") {
|
5918
|
+
processBlock2();
|
5919
|
+
}
|
5920
|
+
}
|
5921
|
+
processBlock2();
|
5922
|
+
break;
|
5923
|
+
}
|
5924
|
+
break;
|
5925
|
+
}
|
5926
|
+
default: {
|
5927
|
+
const _exhaustiveCheck = message.role;
|
5928
|
+
throw new MessageConversionError({
|
5929
|
+
originalMessage: message,
|
5930
|
+
message: `Unsupported role: ${_exhaustiveCheck}`
|
5931
|
+
});
|
5932
|
+
}
|
5933
|
+
}
|
5934
|
+
}
|
5935
|
+
return modelMessages;
|
5936
|
+
}
|
5937
|
+
var convertToCoreMessages = convertToModelMessages;
|
5938
|
+
|
5750
5939
|
// src/agent/agent.ts
|
5751
5940
|
var Agent = class {
|
5752
5941
|
constructor(settings) {
|
5753
5942
|
this.settings = settings;
|
5754
5943
|
}
|
5944
|
+
get tools() {
|
5945
|
+
return this.settings.tools;
|
5946
|
+
}
|
5755
5947
|
async generate(options) {
|
5756
5948
|
return generateText({ ...this.settings, ...options });
|
5757
5949
|
}
|
5758
5950
|
stream(options) {
|
5759
5951
|
return streamText({ ...this.settings, ...options });
|
5760
5952
|
}
|
5953
|
+
/**
|
5954
|
+
* Creates a response object that streams UI messages to the client.
|
5955
|
+
*/
|
5956
|
+
respond(options) {
|
5957
|
+
return this.stream({
|
5958
|
+
prompt: convertToModelMessages(options.messages)
|
5959
|
+
}).toUIMessageStreamResponse();
|
5960
|
+
}
|
5761
5961
|
};
|
5762
5962
|
|
5763
5963
|
// src/embed/embed.ts
|
@@ -9638,195 +9838,6 @@ var AbstractChat = class {
|
|
9638
9838
|
}
|
9639
9839
|
};
|
9640
9840
|
|
9641
|
-
// src/ui/convert-to-model-messages.ts
|
9642
|
-
function convertToModelMessages(messages, options) {
|
9643
|
-
const modelMessages = [];
|
9644
|
-
if (options == null ? void 0 : options.ignoreIncompleteToolCalls) {
|
9645
|
-
messages = messages.map((message) => ({
|
9646
|
-
...message,
|
9647
|
-
parts: message.parts.filter(
|
9648
|
-
(part) => !isToolOrDynamicToolUIPart(part) || part.state !== "input-streaming" && part.state !== "input-available"
|
9649
|
-
)
|
9650
|
-
}));
|
9651
|
-
}
|
9652
|
-
for (const message of messages) {
|
9653
|
-
switch (message.role) {
|
9654
|
-
case "system": {
|
9655
|
-
const textParts = message.parts.filter((part) => part.type === "text");
|
9656
|
-
const providerMetadata = textParts.reduce((acc, part) => {
|
9657
|
-
if (part.providerMetadata != null) {
|
9658
|
-
return { ...acc, ...part.providerMetadata };
|
9659
|
-
}
|
9660
|
-
return acc;
|
9661
|
-
}, {});
|
9662
|
-
modelMessages.push({
|
9663
|
-
role: "system",
|
9664
|
-
content: textParts.map((part) => part.text).join(""),
|
9665
|
-
...Object.keys(providerMetadata).length > 0 ? { providerOptions: providerMetadata } : {}
|
9666
|
-
});
|
9667
|
-
break;
|
9668
|
-
}
|
9669
|
-
case "user": {
|
9670
|
-
modelMessages.push({
|
9671
|
-
role: "user",
|
9672
|
-
content: message.parts.filter(
|
9673
|
-
(part) => part.type === "text" || part.type === "file"
|
9674
|
-
).map((part) => {
|
9675
|
-
switch (part.type) {
|
9676
|
-
case "text":
|
9677
|
-
return {
|
9678
|
-
type: "text",
|
9679
|
-
text: part.text,
|
9680
|
-
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
9681
|
-
};
|
9682
|
-
case "file":
|
9683
|
-
return {
|
9684
|
-
type: "file",
|
9685
|
-
mediaType: part.mediaType,
|
9686
|
-
filename: part.filename,
|
9687
|
-
data: part.url,
|
9688
|
-
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
9689
|
-
};
|
9690
|
-
default:
|
9691
|
-
return part;
|
9692
|
-
}
|
9693
|
-
})
|
9694
|
-
});
|
9695
|
-
break;
|
9696
|
-
}
|
9697
|
-
case "assistant": {
|
9698
|
-
if (message.parts != null) {
|
9699
|
-
let processBlock2 = function() {
|
9700
|
-
var _a17, _b;
|
9701
|
-
if (block.length === 0) {
|
9702
|
-
return;
|
9703
|
-
}
|
9704
|
-
const content = [];
|
9705
|
-
for (const part of block) {
|
9706
|
-
if (part.type === "text") {
|
9707
|
-
content.push({
|
9708
|
-
type: "text",
|
9709
|
-
text: part.text,
|
9710
|
-
...part.providerMetadata != null ? { providerOptions: part.providerMetadata } : {}
|
9711
|
-
});
|
9712
|
-
} else if (part.type === "file") {
|
9713
|
-
content.push({
|
9714
|
-
type: "file",
|
9715
|
-
mediaType: part.mediaType,
|
9716
|
-
filename: part.filename,
|
9717
|
-
data: part.url
|
9718
|
-
});
|
9719
|
-
} else if (part.type === "reasoning") {
|
9720
|
-
content.push({
|
9721
|
-
type: "reasoning",
|
9722
|
-
text: part.text,
|
9723
|
-
providerOptions: part.providerMetadata
|
9724
|
-
});
|
9725
|
-
} else if (part.type === "dynamic-tool") {
|
9726
|
-
const toolName = part.toolName;
|
9727
|
-
if (part.state !== "input-streaming") {
|
9728
|
-
content.push({
|
9729
|
-
type: "tool-call",
|
9730
|
-
toolCallId: part.toolCallId,
|
9731
|
-
toolName,
|
9732
|
-
input: part.input,
|
9733
|
-
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
9734
|
-
});
|
9735
|
-
}
|
9736
|
-
} else if (isToolUIPart(part)) {
|
9737
|
-
const toolName = getToolName(part);
|
9738
|
-
if (part.state !== "input-streaming") {
|
9739
|
-
content.push({
|
9740
|
-
type: "tool-call",
|
9741
|
-
toolCallId: part.toolCallId,
|
9742
|
-
toolName,
|
9743
|
-
input: part.state === "output-error" ? (_a17 = part.input) != null ? _a17 : part.rawInput : part.input,
|
9744
|
-
providerExecuted: part.providerExecuted,
|
9745
|
-
...part.callProviderMetadata != null ? { providerOptions: part.callProviderMetadata } : {}
|
9746
|
-
});
|
9747
|
-
if (part.providerExecuted === true && (part.state === "output-available" || part.state === "output-error")) {
|
9748
|
-
content.push({
|
9749
|
-
type: "tool-result",
|
9750
|
-
toolCallId: part.toolCallId,
|
9751
|
-
toolName,
|
9752
|
-
output: createToolModelOutput({
|
9753
|
-
output: part.state === "output-error" ? part.errorText : part.output,
|
9754
|
-
tool: (_b = options == null ? void 0 : options.tools) == null ? void 0 : _b[toolName],
|
9755
|
-
errorMode: part.state === "output-error" ? "json" : "none"
|
9756
|
-
})
|
9757
|
-
});
|
9758
|
-
}
|
9759
|
-
}
|
9760
|
-
} else {
|
9761
|
-
const _exhaustiveCheck = part;
|
9762
|
-
throw new Error(`Unsupported part: ${_exhaustiveCheck}`);
|
9763
|
-
}
|
9764
|
-
}
|
9765
|
-
modelMessages.push({
|
9766
|
-
role: "assistant",
|
9767
|
-
content
|
9768
|
-
});
|
9769
|
-
const toolParts = block.filter(
|
9770
|
-
(part) => isToolUIPart(part) && part.providerExecuted !== true || part.type === "dynamic-tool"
|
9771
|
-
);
|
9772
|
-
if (toolParts.length > 0) {
|
9773
|
-
modelMessages.push({
|
9774
|
-
role: "tool",
|
9775
|
-
content: toolParts.map((toolPart) => {
|
9776
|
-
var _a18;
|
9777
|
-
switch (toolPart.state) {
|
9778
|
-
case "output-error":
|
9779
|
-
case "output-available": {
|
9780
|
-
const toolName = toolPart.type === "dynamic-tool" ? toolPart.toolName : getToolName(toolPart);
|
9781
|
-
return {
|
9782
|
-
type: "tool-result",
|
9783
|
-
toolCallId: toolPart.toolCallId,
|
9784
|
-
toolName,
|
9785
|
-
output: createToolModelOutput({
|
9786
|
-
output: toolPart.state === "output-error" ? toolPart.errorText : toolPart.output,
|
9787
|
-
tool: (_a18 = options == null ? void 0 : options.tools) == null ? void 0 : _a18[toolName],
|
9788
|
-
errorMode: toolPart.state === "output-error" ? "text" : "none"
|
9789
|
-
})
|
9790
|
-
};
|
9791
|
-
}
|
9792
|
-
default: {
|
9793
|
-
return null;
|
9794
|
-
}
|
9795
|
-
}
|
9796
|
-
}).filter(
|
9797
|
-
(output) => output != null
|
9798
|
-
)
|
9799
|
-
});
|
9800
|
-
}
|
9801
|
-
block = [];
|
9802
|
-
};
|
9803
|
-
var processBlock = processBlock2;
|
9804
|
-
let block = [];
|
9805
|
-
for (const part of message.parts) {
|
9806
|
-
if (part.type === "text" || part.type === "reasoning" || part.type === "file" || part.type === "dynamic-tool" || isToolUIPart(part)) {
|
9807
|
-
block.push(part);
|
9808
|
-
} else if (part.type === "step-start") {
|
9809
|
-
processBlock2();
|
9810
|
-
}
|
9811
|
-
}
|
9812
|
-
processBlock2();
|
9813
|
-
break;
|
9814
|
-
}
|
9815
|
-
break;
|
9816
|
-
}
|
9817
|
-
default: {
|
9818
|
-
const _exhaustiveCheck = message.role;
|
9819
|
-
throw new MessageConversionError({
|
9820
|
-
originalMessage: message,
|
9821
|
-
message: `Unsupported role: ${_exhaustiveCheck}`
|
9822
|
-
});
|
9823
|
-
}
|
9824
|
-
}
|
9825
|
-
}
|
9826
|
-
return modelMessages;
|
9827
|
-
}
|
9828
|
-
var convertToCoreMessages = convertToModelMessages;
|
9829
|
-
|
9830
9841
|
// src/ui/last-assistant-message-is-complete-with-tool-calls.ts
|
9831
9842
|
function lastAssistantMessageIsCompleteWithToolCalls({
|
9832
9843
|
messages
|