@openrouter/ai-sdk-provider 2.3.0 → 2.3.2
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/dist/index.js +118 -3
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +118 -3
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +117 -2
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +117 -2
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -2760,11 +2760,12 @@ function convertToOpenRouterChatMessages(prompt) {
|
|
|
2760
2760
|
}
|
|
2761
2761
|
finalReasoningDetails = uniqueDetails.length > 0 ? uniqueDetails : void 0;
|
|
2762
2762
|
}
|
|
2763
|
+
const effectiveReasoning = reasoning && finalReasoningDetails ? reasoning : void 0;
|
|
2763
2764
|
messages.push({
|
|
2764
2765
|
role: "assistant",
|
|
2765
2766
|
content: text,
|
|
2766
2767
|
tool_calls: toolCalls.length > 0 ? toolCalls : void 0,
|
|
2767
|
-
reasoning:
|
|
2768
|
+
reasoning: effectiveReasoning,
|
|
2768
2769
|
reasoning_details: finalReasoningDetails,
|
|
2769
2770
|
annotations: messageAnnotations,
|
|
2770
2771
|
cache_control: getCacheControl(providerOptions)
|
|
@@ -2801,12 +2802,126 @@ function getToolResultContent(input) {
|
|
|
2801
2802
|
return input.output.value;
|
|
2802
2803
|
case "json":
|
|
2803
2804
|
case "error-json":
|
|
2804
|
-
case "content":
|
|
2805
2805
|
return JSON.stringify(input.output.value);
|
|
2806
|
+
case "content":
|
|
2807
|
+
return mapToolResultContentParts(input.output.value);
|
|
2806
2808
|
case "execution-denied":
|
|
2807
2809
|
return (_a16 = input.output.reason) != null ? _a16 : "Tool execution denied";
|
|
2808
2810
|
}
|
|
2809
2811
|
}
|
|
2812
|
+
function mapToolResultContentParts(parts) {
|
|
2813
|
+
return parts.map((part) => {
|
|
2814
|
+
var _a16, _b16, _c;
|
|
2815
|
+
switch (part.type) {
|
|
2816
|
+
case "text":
|
|
2817
|
+
return { type: "text", text: part.text };
|
|
2818
|
+
case "image-data":
|
|
2819
|
+
return {
|
|
2820
|
+
type: "image_url",
|
|
2821
|
+
image_url: {
|
|
2822
|
+
url: buildFileDataUrl({
|
|
2823
|
+
data: part.data,
|
|
2824
|
+
mediaType: part.mediaType,
|
|
2825
|
+
defaultMediaType: "image/jpeg"
|
|
2826
|
+
})
|
|
2827
|
+
}
|
|
2828
|
+
};
|
|
2829
|
+
case "image-url":
|
|
2830
|
+
return {
|
|
2831
|
+
type: "image_url",
|
|
2832
|
+
image_url: { url: part.url }
|
|
2833
|
+
};
|
|
2834
|
+
case "file-data": {
|
|
2835
|
+
const dataUrl = buildFileDataUrl({
|
|
2836
|
+
data: part.data,
|
|
2837
|
+
mediaType: part.mediaType,
|
|
2838
|
+
defaultMediaType: "application/octet-stream"
|
|
2839
|
+
});
|
|
2840
|
+
if ((_a16 = part.mediaType) == null ? void 0 : _a16.startsWith("image/")) {
|
|
2841
|
+
return {
|
|
2842
|
+
type: "image_url",
|
|
2843
|
+
image_url: { url: dataUrl }
|
|
2844
|
+
};
|
|
2845
|
+
}
|
|
2846
|
+
if ((_b16 = part.mediaType) == null ? void 0 : _b16.startsWith("audio/")) {
|
|
2847
|
+
const rawFormat = part.mediaType.replace("audio/", "");
|
|
2848
|
+
const format = MIME_TO_FORMAT[rawFormat];
|
|
2849
|
+
if (format !== void 0) {
|
|
2850
|
+
return {
|
|
2851
|
+
type: "input_audio",
|
|
2852
|
+
input_audio: {
|
|
2853
|
+
data: getBase64FromDataUrl(dataUrl),
|
|
2854
|
+
format
|
|
2855
|
+
}
|
|
2856
|
+
};
|
|
2857
|
+
}
|
|
2858
|
+
}
|
|
2859
|
+
return {
|
|
2860
|
+
type: "file",
|
|
2861
|
+
file: {
|
|
2862
|
+
filename: (_c = part.filename) != null ? _c : "",
|
|
2863
|
+
file_data: dataUrl
|
|
2864
|
+
}
|
|
2865
|
+
};
|
|
2866
|
+
}
|
|
2867
|
+
case "file-url": {
|
|
2868
|
+
if (looksLikeImageUrl(part.url)) {
|
|
2869
|
+
return {
|
|
2870
|
+
type: "image_url",
|
|
2871
|
+
image_url: { url: part.url }
|
|
2872
|
+
};
|
|
2873
|
+
}
|
|
2874
|
+
return {
|
|
2875
|
+
type: "file",
|
|
2876
|
+
file: {
|
|
2877
|
+
filename: filenameFromUrl(part.url),
|
|
2878
|
+
file_data: part.url
|
|
2879
|
+
}
|
|
2880
|
+
};
|
|
2881
|
+
}
|
|
2882
|
+
case "file-id":
|
|
2883
|
+
case "image-file-id":
|
|
2884
|
+
case "custom":
|
|
2885
|
+
return { type: "text", text: JSON.stringify(part) };
|
|
2886
|
+
default: {
|
|
2887
|
+
const _exhaustiveCheck = part;
|
|
2888
|
+
return { type: "text", text: JSON.stringify(_exhaustiveCheck) };
|
|
2889
|
+
}
|
|
2890
|
+
}
|
|
2891
|
+
});
|
|
2892
|
+
}
|
|
2893
|
+
var IMAGE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
2894
|
+
"jpg",
|
|
2895
|
+
"jpeg",
|
|
2896
|
+
"png",
|
|
2897
|
+
"gif",
|
|
2898
|
+
"webp",
|
|
2899
|
+
"svg",
|
|
2900
|
+
"bmp",
|
|
2901
|
+
"ico",
|
|
2902
|
+
"tif",
|
|
2903
|
+
"tiff",
|
|
2904
|
+
"avif"
|
|
2905
|
+
]);
|
|
2906
|
+
function looksLikeImageUrl(url) {
|
|
2907
|
+
var _a16;
|
|
2908
|
+
try {
|
|
2909
|
+
const pathname = new URL(url).pathname;
|
|
2910
|
+
const ext = (_a16 = pathname.split(".").pop()) == null ? void 0 : _a16.toLowerCase();
|
|
2911
|
+
return ext !== void 0 && IMAGE_EXTENSIONS.has(ext);
|
|
2912
|
+
} catch (e) {
|
|
2913
|
+
return false;
|
|
2914
|
+
}
|
|
2915
|
+
}
|
|
2916
|
+
function filenameFromUrl(url) {
|
|
2917
|
+
try {
|
|
2918
|
+
const pathname = new URL(url).pathname;
|
|
2919
|
+
const last = pathname.split("/").pop();
|
|
2920
|
+
return (last == null ? void 0 : last.includes(".")) ? last : "";
|
|
2921
|
+
} catch (e) {
|
|
2922
|
+
return "";
|
|
2923
|
+
}
|
|
2924
|
+
}
|
|
2810
2925
|
function findFirstReasoningDetails(content) {
|
|
2811
2926
|
var _a16, _b16, _c;
|
|
2812
2927
|
for (const part of content) {
|
|
@@ -4576,7 +4691,7 @@ function withUserAgentSuffix2(headers, ...userAgentSuffixParts) {
|
|
|
4576
4691
|
}
|
|
4577
4692
|
|
|
4578
4693
|
// src/version.ts
|
|
4579
|
-
var VERSION2 = false ? "0.0.0-test" : "2.3.
|
|
4694
|
+
var VERSION2 = false ? "0.0.0-test" : "2.3.2";
|
|
4580
4695
|
|
|
4581
4696
|
// src/provider.ts
|
|
4582
4697
|
function createOpenRouter(options = {}) {
|