@openrouter/ai-sdk-provider 2.3.3 → 2.4.0
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.d.mts +18 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.js +56 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +56 -8
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +49 -3
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/index.mjs +49 -3
- package/dist/internal/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/internal/index.mjs
CHANGED
|
@@ -2382,6 +2382,31 @@ function createFinishReason(unified, raw) {
|
|
|
2382
2382
|
return { unified, raw };
|
|
2383
2383
|
}
|
|
2384
2384
|
|
|
2385
|
+
// src/utils/with-stream-error-handling.ts
|
|
2386
|
+
function withStreamErrorHandling(source, onError) {
|
|
2387
|
+
const reader = source.getReader();
|
|
2388
|
+
return new ReadableStream({
|
|
2389
|
+
async pull(controller) {
|
|
2390
|
+
try {
|
|
2391
|
+
const { done, value } = await reader.read();
|
|
2392
|
+
if (done) {
|
|
2393
|
+
controller.close();
|
|
2394
|
+
} else {
|
|
2395
|
+
controller.enqueue(value);
|
|
2396
|
+
}
|
|
2397
|
+
} catch (err) {
|
|
2398
|
+
onError(err);
|
|
2399
|
+
reader.cancel().catch(() => {
|
|
2400
|
+
});
|
|
2401
|
+
controller.close();
|
|
2402
|
+
}
|
|
2403
|
+
},
|
|
2404
|
+
cancel(reason) {
|
|
2405
|
+
reader.cancel(reason);
|
|
2406
|
+
}
|
|
2407
|
+
});
|
|
2408
|
+
}
|
|
2409
|
+
|
|
2385
2410
|
// src/utils/reasoning-details-duplicate-tracker.ts
|
|
2386
2411
|
var _seenKeys;
|
|
2387
2412
|
var ReasoningDetailsDuplicateTracker = class {
|
|
@@ -2769,6 +2794,7 @@ function convertToOpenRouterChatMessages(prompt) {
|
|
|
2769
2794
|
role: "tool",
|
|
2770
2795
|
tool_call_id: toolResponse.toolCallId,
|
|
2771
2796
|
content: content2,
|
|
2797
|
+
name: toolResponse.toolName,
|
|
2772
2798
|
cache_control: (_h = getCacheControl(providerOptions)) != null ? _h : getCacheControl(toolResponse.providerOptions)
|
|
2773
2799
|
});
|
|
2774
2800
|
}
|
|
@@ -3431,7 +3457,8 @@ var OpenRouterChatLanguageModel = class {
|
|
|
3431
3457
|
(d) => d.type === "reasoning.encrypted" /* Encrypted */ && d.data
|
|
3432
3458
|
);
|
|
3433
3459
|
const shouldOverrideFinishReason = hasToolCalls && hasEncryptedReasoning && choice.finish_reason === "stop";
|
|
3434
|
-
const
|
|
3460
|
+
const mappedFinishReason = shouldOverrideFinishReason ? createFinishReason("tool-calls", (_j = choice.finish_reason) != null ? _j : void 0) : mapOpenRouterFinishReason(choice.finish_reason);
|
|
3461
|
+
const effectiveFinishReason = hasToolCalls && mappedFinishReason.unified === "other" ? createFinishReason("tool-calls", mappedFinishReason.raw) : mappedFinishReason;
|
|
3435
3462
|
return {
|
|
3436
3463
|
content,
|
|
3437
3464
|
finishReason: effectiveFinishReason,
|
|
@@ -3495,6 +3522,10 @@ var OpenRouterChatLanguageModel = class {
|
|
|
3495
3522
|
abortSignal: options.abortSignal,
|
|
3496
3523
|
fetch: this.config.fetch
|
|
3497
3524
|
});
|
|
3525
|
+
let streamError;
|
|
3526
|
+
const safeResponse = withStreamErrorHandling(response, (err) => {
|
|
3527
|
+
streamError = err;
|
|
3528
|
+
});
|
|
3498
3529
|
const toolCalls = [];
|
|
3499
3530
|
let finishReason = createFinishReason("other");
|
|
3500
3531
|
const usage = {
|
|
@@ -3523,7 +3554,7 @@ var OpenRouterChatLanguageModel = class {
|
|
|
3523
3554
|
let openrouterResponseId;
|
|
3524
3555
|
let provider;
|
|
3525
3556
|
return {
|
|
3526
|
-
stream:
|
|
3557
|
+
stream: safeResponse.pipeThrough(
|
|
3527
3558
|
new TransformStream({
|
|
3528
3559
|
transform(chunk, controller) {
|
|
3529
3560
|
var _a17, _b17, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u;
|
|
@@ -3845,12 +3876,19 @@ var OpenRouterChatLanguageModel = class {
|
|
|
3845
3876
|
flush(controller) {
|
|
3846
3877
|
var _a17;
|
|
3847
3878
|
const hasToolCalls = toolCalls.length > 0;
|
|
3879
|
+
if (streamError != null) {
|
|
3880
|
+
finishReason = createFinishReason("error");
|
|
3881
|
+
controller.enqueue({ type: "error", error: streamError });
|
|
3882
|
+
}
|
|
3848
3883
|
const hasEncryptedReasoning = accumulatedReasoningDetails.some(
|
|
3849
3884
|
(d) => d.type === "reasoning.encrypted" /* Encrypted */ && d.data
|
|
3850
3885
|
);
|
|
3851
3886
|
if (hasToolCalls && hasEncryptedReasoning && finishReason.unified === "stop") {
|
|
3852
3887
|
finishReason = createFinishReason("tool-calls", finishReason.raw);
|
|
3853
3888
|
}
|
|
3889
|
+
if (hasToolCalls && finishReason.unified === "other") {
|
|
3890
|
+
finishReason = createFinishReason("tool-calls", finishReason.raw);
|
|
3891
|
+
}
|
|
3854
3892
|
if (finishReason.unified === "tool-calls") {
|
|
3855
3893
|
for (const toolCall of toolCalls) {
|
|
3856
3894
|
if (toolCall && !toolCall.sent) {
|
|
@@ -4236,6 +4274,10 @@ var OpenRouterCompletionLanguageModel = class {
|
|
|
4236
4274
|
abortSignal: options.abortSignal,
|
|
4237
4275
|
fetch: this.config.fetch
|
|
4238
4276
|
});
|
|
4277
|
+
let streamError;
|
|
4278
|
+
const safeResponse = withStreamErrorHandling(response, (err) => {
|
|
4279
|
+
streamError = err;
|
|
4280
|
+
});
|
|
4239
4281
|
let finishReason = createFinishReason("other");
|
|
4240
4282
|
const usage = {
|
|
4241
4283
|
inputTokens: {
|
|
@@ -4255,7 +4297,7 @@ var OpenRouterCompletionLanguageModel = class {
|
|
|
4255
4297
|
let provider;
|
|
4256
4298
|
let rawUsage;
|
|
4257
4299
|
return {
|
|
4258
|
-
stream:
|
|
4300
|
+
stream: safeResponse.pipeThrough(
|
|
4259
4301
|
new TransformStream({
|
|
4260
4302
|
transform(chunk, controller) {
|
|
4261
4303
|
var _a16, _b16, _c, _d, _e;
|
|
@@ -4319,6 +4361,10 @@ var OpenRouterCompletionLanguageModel = class {
|
|
|
4319
4361
|
}
|
|
4320
4362
|
},
|
|
4321
4363
|
flush(controller) {
|
|
4364
|
+
if (streamError != null) {
|
|
4365
|
+
finishReason = createFinishReason("error");
|
|
4366
|
+
controller.enqueue({ type: "error", error: streamError });
|
|
4367
|
+
}
|
|
4322
4368
|
usage.raw = rawUsage;
|
|
4323
4369
|
const openrouterMetadata = {
|
|
4324
4370
|
usage: openrouterUsage
|