@bastani/pi-ai 0.9.41 → 0.9.42
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 +26 -0
- package/README.md +2 -0
- package/dist/api/anthropic-messages.d.ts.map +1 -1
- package/dist/api/anthropic-messages.js +37 -3
- package/dist/api/anthropic-messages.js.map +1 -1
- package/dist/api/azure-openai-responses.d.ts.map +1 -1
- package/dist/api/azure-openai-responses.js +12 -4
- package/dist/api/azure-openai-responses.js.map +1 -1
- package/dist/api/mistral-conversations.d.ts.map +1 -1
- package/dist/api/mistral-conversations.js +3 -1
- package/dist/api/mistral-conversations.js.map +1 -1
- package/dist/api/openai-codex-responses.d.ts.map +1 -1
- package/dist/api/openai-codex-responses.js +3 -1
- package/dist/api/openai-codex-responses.js.map +1 -1
- package/dist/api/openai-completions.d.ts.map +1 -1
- package/dist/api/openai-completions.js +12 -4
- package/dist/api/openai-completions.js.map +1 -1
- package/dist/api/openai-responses.d.ts.map +1 -1
- package/dist/api/openai-responses.js +4 -3
- package/dist/api/openai-responses.js.map +1 -1
- package/dist/auth/types.d.ts +4 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/types.js.map +1 -1
- package/dist/compat/extension-oauth-types.d.ts +4 -0
- package/dist/compat/extension-oauth-types.d.ts.map +1 -1
- package/dist/compat/extension-oauth-types.js.map +1 -1
- package/dist/providers/data/.manifest.json +1 -1
- package/dist/providers/data/fireworks.json +1 -1
- package/dist/providers/data/huggingface.json +1 -1
- package/dist/providers/data/mistral.json +1 -1
- package/dist/providers/data/nvidia.json +1 -1
- package/dist/providers/data/opencode-go.json +1 -1
- package/dist/providers/data/opencode.json +1 -1
- package/dist/providers/data/openrouter.json +1 -1
- package/dist/providers/data/vercel-ai-gateway.json +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/openrouter-cost.d.ts +24 -0
- package/dist/utils/openrouter-cost.d.ts.map +1 -0
- package/dist/utils/openrouter-cost.js +34 -0
- package/dist/utils/openrouter-cost.js.map +1 -0
- package/dist/utils/request-admission.d.ts +12 -0
- package/dist/utils/request-admission.d.ts.map +1 -0
- package/dist/utils/request-admission.js +37 -0
- package/dist/utils/request-admission.js.map +1 -0
- package/dist/utils/version.d.ts +1 -1
- package/dist/utils/version.js +1 -1
- package/dist/utils/version.js.map +1 -1
- package/package.json +2 -2
|
@@ -5,8 +5,10 @@ import { shortHash } from "../utils/hash.js";
|
|
|
5
5
|
import { headersToRecord } from "../utils/headers.js";
|
|
6
6
|
import { getIdentityHeaders } from "../utils/identity.js";
|
|
7
7
|
import { parseStreamingJson, parseToolCallArguments } from "../utils/json-parse.js";
|
|
8
|
+
import { applyOpenRouterReportedCost, isOpenRouterModel, } from "../utils/openrouter-cost.js";
|
|
8
9
|
import { getProviderEnvValue } from "../utils/provider-env.js";
|
|
9
10
|
import { retryProviderRequest } from "../utils/provider-retry.js";
|
|
11
|
+
import { admitOpenAIRequests, getFetchAdmission } from "../utils/request-admission.js";
|
|
10
12
|
import { getProviderRetryAfterMs } from "../utils/retry-hints.js";
|
|
11
13
|
import { sanitizeSurrogates } from "../utils/sanitize-unicode.js";
|
|
12
14
|
import { createStreamDeadline, withStreamDeadline } from "../utils/stream-deadline.js";
|
|
@@ -575,14 +577,14 @@ function createClient(model, context, apiKey, optionsHeaders, identity, fetch, s
|
|
|
575
577
|
if (optionsHeaders) {
|
|
576
578
|
Object.assign(headers, optionsHeaders);
|
|
577
579
|
}
|
|
578
|
-
return new RetryHintOpenAI({
|
|
580
|
+
return admitOpenAIRequests(new RetryHintOpenAI({
|
|
579
581
|
apiKey,
|
|
580
582
|
baseURL: model.baseUrl,
|
|
581
583
|
dangerouslyAllowBrowser: true,
|
|
582
|
-
fetch,
|
|
584
|
+
fetch: getFetchAdmission(fetch)?.fetch ?? fetch,
|
|
583
585
|
// Affinity defaults yield to explicit model and request headers, including null suppression.
|
|
584
586
|
defaultHeaders: { ...sessionAffinityHeaders, ...headers },
|
|
585
|
-
});
|
|
587
|
+
}), fetch);
|
|
586
588
|
}
|
|
587
589
|
function buildParams(model, context, options, compat = getCompat(model), cacheRetention = resolveCacheRetention(options?.cacheRetention, options?.env), grammarToolInputProperties = createGrammarToolInputProperties(getDeclaredTools(context.messages), compat.supportsOpenAIGrammarTools)) {
|
|
588
590
|
const transcriptTools = resolveTranscriptTools(context.messages, compat.supportsMidConvoSystemMessages === true && compat.supportsMidConvoToolAdditions === true
|
|
@@ -1241,7 +1243,10 @@ function convertTools(tools, compat) {
|
|
|
1241
1243
|
};
|
|
1242
1244
|
});
|
|
1243
1245
|
}
|
|
1244
|
-
function parseChunkUsage(
|
|
1246
|
+
function parseChunkUsage(
|
|
1247
|
+
// OpenRouter adds billing fields to streamed usage at runtime,
|
|
1248
|
+
// although the OpenAI SDK does not type those fields.
|
|
1249
|
+
rawUsage, model) {
|
|
1245
1250
|
const promptTokens = rawUsage.prompt_tokens || 0;
|
|
1246
1251
|
const cacheReadTokens = rawUsage.prompt_tokens_details?.cached_tokens ?? rawUsage.prompt_cache_hit_tokens ?? rawUsage.cached_tokens ?? 0;
|
|
1247
1252
|
const cacheWriteTokens = rawUsage.prompt_tokens_details?.cache_write_tokens || 0;
|
|
@@ -1269,6 +1274,9 @@ function parseChunkUsage(rawUsage, model) {
|
|
|
1269
1274
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
|
1270
1275
|
};
|
|
1271
1276
|
calculateCost(model, usage);
|
|
1277
|
+
if (isOpenRouterModel(model)) {
|
|
1278
|
+
applyOpenRouterReportedCost(usage, rawUsage);
|
|
1279
|
+
}
|
|
1272
1280
|
return usage;
|
|
1273
1281
|
}
|
|
1274
1282
|
function mapStopReason(reason) {
|