@openrouter/ai-sdk-provider 1.5.1 → 1.5.3

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 CHANGED
@@ -1025,10 +1025,10 @@ var FileAnnotationSchema = import_v43.z.object({
1025
1025
  import_v43.z.object({
1026
1026
  type: import_v43.z.string(),
1027
1027
  text: import_v43.z.string().optional()
1028
- }).passthrough()
1028
+ }).catchall(import_v43.z.any())
1029
1029
  ).optional()
1030
- }).passthrough()
1031
- });
1030
+ }).catchall(import_v43.z.any())
1031
+ }).catchall(import_v43.z.any());
1032
1032
  var OpenRouterProviderMetadataSchema = import_v43.z.object({
1033
1033
  provider: import_v43.z.string(),
1034
1034
  reasoning_details: import_v43.z.array(ReasoningDetailUnionSchema).optional(),
@@ -1037,18 +1037,18 @@ var OpenRouterProviderMetadataSchema = import_v43.z.object({
1037
1037
  promptTokens: import_v43.z.number(),
1038
1038
  promptTokensDetails: import_v43.z.object({
1039
1039
  cachedTokens: import_v43.z.number()
1040
- }).passthrough().optional(),
1040
+ }).catchall(import_v43.z.any()).optional(),
1041
1041
  completionTokens: import_v43.z.number(),
1042
1042
  completionTokensDetails: import_v43.z.object({
1043
1043
  reasoningTokens: import_v43.z.number()
1044
- }).passthrough().optional(),
1044
+ }).catchall(import_v43.z.any()).optional(),
1045
1045
  totalTokens: import_v43.z.number(),
1046
1046
  cost: import_v43.z.number().optional(),
1047
1047
  costDetails: import_v43.z.object({
1048
1048
  upstreamInferenceCost: import_v43.z.number()
1049
- }).passthrough().optional()
1050
- }).passthrough()
1051
- }).passthrough();
1049
+ }).catchall(import_v43.z.any()).optional()
1050
+ }).catchall(import_v43.z.any())
1051
+ }).catchall(import_v43.z.any());
1052
1052
  var OpenRouterProviderOptionsSchema = import_v43.z.object({
1053
1053
  openrouter: import_v43.z.object({
1054
1054
  reasoning_details: import_v43.z.array(ReasoningDetailUnionSchema).optional(),
@@ -1886,9 +1886,15 @@ var OpenRouterChatLanguageModel = class {
1886
1886
  const fileAnnotations = (_k = choice.message.annotations) == null ? void 0 : _k.filter(
1887
1887
  (a) => a.type === "file"
1888
1888
  );
1889
+ const hasToolCalls = choice.message.tool_calls && choice.message.tool_calls.length > 0;
1890
+ const hasEncryptedReasoning = reasoningDetails.some(
1891
+ (d) => d.type === "reasoning.encrypted" /* Encrypted */ && d.data
1892
+ );
1893
+ const shouldOverrideFinishReason = hasToolCalls && hasEncryptedReasoning && choice.finish_reason === "stop";
1894
+ const effectiveFinishReason = shouldOverrideFinishReason ? "tool-calls" : mapOpenRouterFinishReason(choice.finish_reason);
1889
1895
  return {
1890
1896
  content,
1891
- finishReason: mapOpenRouterFinishReason(choice.finish_reason),
1897
+ finishReason: effectiveFinishReason,
1892
1898
  usage: usageInfo,
1893
1899
  warnings: [],
1894
1900
  providerMetadata: {
@@ -1960,6 +1966,7 @@ var OpenRouterChatLanguageModel = class {
1960
1966
  };
1961
1967
  const openrouterUsage = {};
1962
1968
  const accumulatedReasoningDetails = [];
1969
+ const accumulatedFileAnnotations = [];
1963
1970
  let textStarted = false;
1964
1971
  let reasoningStarted = false;
1965
1972
  let textId;
@@ -2138,6 +2145,13 @@ var OpenRouterChatLanguageModel = class {
2138
2145
  }
2139
2146
  }
2140
2147
  });
2148
+ } else if (annotation.type === "file") {
2149
+ const file = annotation.file;
2150
+ if (file && typeof file === "object" && "hash" in file && "name" in file) {
2151
+ accumulatedFileAnnotations.push(
2152
+ annotation
2153
+ );
2154
+ }
2141
2155
  }
2142
2156
  }
2143
2157
  }
@@ -2266,6 +2280,13 @@ var OpenRouterChatLanguageModel = class {
2266
2280
  },
2267
2281
  flush(controller) {
2268
2282
  var _a16;
2283
+ const hasToolCalls = toolCalls.length > 0;
2284
+ const hasEncryptedReasoning = accumulatedReasoningDetails.some(
2285
+ (d) => d.type === "reasoning.encrypted" /* Encrypted */ && d.data
2286
+ );
2287
+ if (hasToolCalls && hasEncryptedReasoning && finishReason === "stop") {
2288
+ finishReason = "tool-calls";
2289
+ }
2269
2290
  if (finishReason === "tool-calls") {
2270
2291
  for (const toolCall of toolCalls) {
2271
2292
  if (toolCall && !toolCall.sent) {
@@ -2306,6 +2327,9 @@ var OpenRouterChatLanguageModel = class {
2306
2327
  if (accumulatedReasoningDetails.length > 0) {
2307
2328
  openrouterMetadata.reasoning_details = accumulatedReasoningDetails;
2308
2329
  }
2330
+ if (accumulatedFileAnnotations.length > 0) {
2331
+ openrouterMetadata.annotations = accumulatedFileAnnotations;
2332
+ }
2309
2333
  controller.enqueue({
2310
2334
  type: "finish",
2311
2335
  finishReason,
@@ -2857,7 +2881,7 @@ function withUserAgentSuffix(headers, ...userAgentSuffixParts) {
2857
2881
  }
2858
2882
 
2859
2883
  // src/version.ts
2860
- var VERSION = false ? "0.0.0-test" : "1.5.1";
2884
+ var VERSION = false ? "0.0.0-test" : "1.5.3";
2861
2885
 
2862
2886
  // src/provider.ts
2863
2887
  function createOpenRouter(options = {}) {