@blockrun/clawrouter 0.12.236 → 0.12.237
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/cli.js +15 -2
- package/dist/index.js +15 -2
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -84792,6 +84792,13 @@ function estimateAmount(modelId, bodyLength, maxTokens) {
|
|
|
84792
84792
|
const amountMicros = Math.max(1e3, Math.ceil(costUsd * 1.2 * 1e6));
|
|
84793
84793
|
return amountMicros.toString();
|
|
84794
84794
|
}
|
|
84795
|
+
function estimateBalancePreflightAmount(modelId, bodyLength, maxTokens) {
|
|
84796
|
+
const preflightMaxTokens = Math.min(
|
|
84797
|
+
maxTokens || BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP,
|
|
84798
|
+
BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP
|
|
84799
|
+
);
|
|
84800
|
+
return estimateAmount(modelId, bodyLength, preflightMaxTokens);
|
|
84801
|
+
}
|
|
84795
84802
|
function estimatePhoneCost(urlPath) {
|
|
84796
84803
|
const op = urlPath.replace(/^\/v1\//, "").split("?")[0];
|
|
84797
84804
|
for (const key2 of Object.keys(PHONE_PRICING).sort((a, b) => b.length - a.length)) {
|
|
@@ -87052,9 +87059,13 @@ async function proxyRequest(req, res, apiBase, payFetch, options, routerOpts, de
|
|
|
87052
87059
|
let isFreeModel = FREE_MODELS.has(modelId ?? "");
|
|
87053
87060
|
if (modelId && !options.skipBalanceCheck && !isFreeModel) {
|
|
87054
87061
|
const estimated = estimateAmount(modelId, body.length, maxTokens);
|
|
87062
|
+
const preflightEstimated = estimateBalancePreflightAmount(modelId, body.length, maxTokens);
|
|
87055
87063
|
if (estimated) {
|
|
87056
87064
|
estimatedCostMicros = BigInt(estimated);
|
|
87057
|
-
|
|
87065
|
+
}
|
|
87066
|
+
if (preflightEstimated) {
|
|
87067
|
+
const preflightEstimatedCostMicros = BigInt(preflightEstimated);
|
|
87068
|
+
const bufferedCostMicros = preflightEstimatedCostMicros * BigInt(Math.ceil(BALANCE_CHECK_BUFFER * 100)) / 100n;
|
|
87058
87069
|
let sufficiency = null;
|
|
87059
87070
|
let balanceCheckTimer;
|
|
87060
87071
|
try {
|
|
@@ -87084,6 +87095,7 @@ async function proxyRequest(req, res, apiBase, payFetch, options, routerOpts, de
|
|
|
87084
87095
|
);
|
|
87085
87096
|
modelId = freeFallback;
|
|
87086
87097
|
isFreeModel = true;
|
|
87098
|
+
estimatedCostMicros = void 0;
|
|
87087
87099
|
const parsed = JSON.parse(body.toString());
|
|
87088
87100
|
parsed.model = toUpstreamModelId(freeFallback);
|
|
87089
87101
|
body = Buffer.from(JSON.stringify(parsed));
|
|
@@ -88196,7 +88208,7 @@ data: [DONE]
|
|
|
88196
88208
|
});
|
|
88197
88209
|
}
|
|
88198
88210
|
}
|
|
88199
|
-
var paymentStore, BLOCKRUN_API, BLOCKRUN_SOLANA_API, IMAGE_DIR, AUDIO_DIR, VIDEO_DIR, AUTO_MODEL, ROUTING_PROFILES, FREE_MODELS, FREE_MODEL, MAX_MESSAGES, CONTEXT_LIMIT_KB, HEARTBEAT_INTERVAL_MS, BALANCE_CHECK_TIMEOUT_MS, DEFAULT_REQUEST_TIMEOUT_MS, PER_MODEL_TIMEOUT_MS, REASONING_MODEL_TIMEOUT_MS, REASONING_MODEL_IDS, MAX_FALLBACK_ATTEMPTS, HEALTH_CHECK_TIMEOUT_MS, RATE_LIMIT_COOLDOWN_MS, OVERLOAD_COOLDOWN_MS, PORT_RETRY_ATTEMPTS, PORT_RETRY_DELAY_MS, MODEL_BODY_READ_TIMEOUT_MS, ERROR_BODY_READ_TIMEOUT_MS, rateLimitedModels, overloadedModels, perProviderErrors, BALANCE_CHECK_BUFFER, PROVIDER_ERROR_PATTERNS, DEGRADED_RESPONSE_PATTERNS, DEGRADED_LOOP_PATTERNS, VALID_ROLES, ROLE_MAPPINGS, VALID_TOOL_ID_PATTERN, KIMI_BLOCK_RE, KIMI_TOKEN_RE, THINKING_TAG_RE, THINKING_BLOCK_RE, BLOCKRUN_MODEL_BY_ID, IMAGE_PRICING, VIDEO_PRICING, PHONE_PRICING;
|
|
88211
|
+
var paymentStore, BLOCKRUN_API, BLOCKRUN_SOLANA_API, IMAGE_DIR, AUDIO_DIR, VIDEO_DIR, AUTO_MODEL, ROUTING_PROFILES, FREE_MODELS, FREE_MODEL, MAX_MESSAGES, CONTEXT_LIMIT_KB, HEARTBEAT_INTERVAL_MS, BALANCE_CHECK_TIMEOUT_MS, DEFAULT_REQUEST_TIMEOUT_MS, PER_MODEL_TIMEOUT_MS, REASONING_MODEL_TIMEOUT_MS, REASONING_MODEL_IDS, MAX_FALLBACK_ATTEMPTS, HEALTH_CHECK_TIMEOUT_MS, RATE_LIMIT_COOLDOWN_MS, OVERLOAD_COOLDOWN_MS, PORT_RETRY_ATTEMPTS, PORT_RETRY_DELAY_MS, MODEL_BODY_READ_TIMEOUT_MS, ERROR_BODY_READ_TIMEOUT_MS, rateLimitedModels, overloadedModels, perProviderErrors, BALANCE_CHECK_BUFFER, BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP, PROVIDER_ERROR_PATTERNS, DEGRADED_RESPONSE_PATTERNS, DEGRADED_LOOP_PATTERNS, VALID_ROLES, ROLE_MAPPINGS, VALID_TOOL_ID_PATTERN, KIMI_BLOCK_RE, KIMI_TOKEN_RE, THINKING_TAG_RE, THINKING_BLOCK_RE, BLOCKRUN_MODEL_BY_ID, IMAGE_PRICING, VIDEO_PRICING, PHONE_PRICING;
|
|
88200
88212
|
var init_proxy = __esm({
|
|
88201
88213
|
"src/proxy.ts"() {
|
|
88202
88214
|
"use strict";
|
|
@@ -88288,6 +88300,7 @@ var init_proxy = __esm({
|
|
|
88288
88300
|
overloadedModels = /* @__PURE__ */ new Map();
|
|
88289
88301
|
perProviderErrors = /* @__PURE__ */ new Map();
|
|
88290
88302
|
BALANCE_CHECK_BUFFER = 1.5;
|
|
88303
|
+
BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP = 4096;
|
|
88291
88304
|
PROVIDER_ERROR_PATTERNS = [
|
|
88292
88305
|
/billing/i,
|
|
88293
88306
|
/insufficient.*balance/i,
|
package/dist/index.js
CHANGED
|
@@ -84612,6 +84612,13 @@ function estimateAmount(modelId, bodyLength, maxTokens) {
|
|
|
84612
84612
|
const amountMicros = Math.max(1e3, Math.ceil(costUsd * 1.2 * 1e6));
|
|
84613
84613
|
return amountMicros.toString();
|
|
84614
84614
|
}
|
|
84615
|
+
function estimateBalancePreflightAmount(modelId, bodyLength, maxTokens) {
|
|
84616
|
+
const preflightMaxTokens = Math.min(
|
|
84617
|
+
maxTokens || BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP,
|
|
84618
|
+
BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP
|
|
84619
|
+
);
|
|
84620
|
+
return estimateAmount(modelId, bodyLength, preflightMaxTokens);
|
|
84621
|
+
}
|
|
84615
84622
|
function estimatePhoneCost(urlPath) {
|
|
84616
84623
|
const op = urlPath.replace(/^\/v1\//, "").split("?")[0];
|
|
84617
84624
|
for (const key2 of Object.keys(PHONE_PRICING).sort((a, b) => b.length - a.length)) {
|
|
@@ -86872,9 +86879,13 @@ async function proxyRequest(req, res, apiBase, payFetch, options, routerOpts, de
|
|
|
86872
86879
|
let isFreeModel = FREE_MODELS.has(modelId ?? "");
|
|
86873
86880
|
if (modelId && !options.skipBalanceCheck && !isFreeModel) {
|
|
86874
86881
|
const estimated = estimateAmount(modelId, body.length, maxTokens);
|
|
86882
|
+
const preflightEstimated = estimateBalancePreflightAmount(modelId, body.length, maxTokens);
|
|
86875
86883
|
if (estimated) {
|
|
86876
86884
|
estimatedCostMicros = BigInt(estimated);
|
|
86877
|
-
|
|
86885
|
+
}
|
|
86886
|
+
if (preflightEstimated) {
|
|
86887
|
+
const preflightEstimatedCostMicros = BigInt(preflightEstimated);
|
|
86888
|
+
const bufferedCostMicros = preflightEstimatedCostMicros * BigInt(Math.ceil(BALANCE_CHECK_BUFFER * 100)) / 100n;
|
|
86878
86889
|
let sufficiency = null;
|
|
86879
86890
|
let balanceCheckTimer;
|
|
86880
86891
|
try {
|
|
@@ -86904,6 +86915,7 @@ async function proxyRequest(req, res, apiBase, payFetch, options, routerOpts, de
|
|
|
86904
86915
|
);
|
|
86905
86916
|
modelId = freeFallback;
|
|
86906
86917
|
isFreeModel = true;
|
|
86918
|
+
estimatedCostMicros = void 0;
|
|
86907
86919
|
const parsed = JSON.parse(body.toString());
|
|
86908
86920
|
parsed.model = toUpstreamModelId(freeFallback);
|
|
86909
86921
|
body = Buffer.from(JSON.stringify(parsed));
|
|
@@ -88016,7 +88028,7 @@ data: [DONE]
|
|
|
88016
88028
|
});
|
|
88017
88029
|
}
|
|
88018
88030
|
}
|
|
88019
|
-
var paymentStore, BLOCKRUN_API, BLOCKRUN_SOLANA_API, IMAGE_DIR, AUDIO_DIR, VIDEO_DIR, AUTO_MODEL, ROUTING_PROFILES, FREE_MODELS, FREE_MODEL, MAX_MESSAGES, CONTEXT_LIMIT_KB, HEARTBEAT_INTERVAL_MS, BALANCE_CHECK_TIMEOUT_MS, DEFAULT_REQUEST_TIMEOUT_MS, PER_MODEL_TIMEOUT_MS, REASONING_MODEL_TIMEOUT_MS, REASONING_MODEL_IDS, MAX_FALLBACK_ATTEMPTS, HEALTH_CHECK_TIMEOUT_MS, RATE_LIMIT_COOLDOWN_MS, OVERLOAD_COOLDOWN_MS, PORT_RETRY_ATTEMPTS, PORT_RETRY_DELAY_MS, MODEL_BODY_READ_TIMEOUT_MS, ERROR_BODY_READ_TIMEOUT_MS, rateLimitedModels, overloadedModels, perProviderErrors, BALANCE_CHECK_BUFFER, PROVIDER_ERROR_PATTERNS, DEGRADED_RESPONSE_PATTERNS, DEGRADED_LOOP_PATTERNS, VALID_ROLES, ROLE_MAPPINGS, VALID_TOOL_ID_PATTERN, KIMI_BLOCK_RE, KIMI_TOKEN_RE, THINKING_TAG_RE, THINKING_BLOCK_RE, BLOCKRUN_MODEL_BY_ID, IMAGE_PRICING, VIDEO_PRICING, PHONE_PRICING;
|
|
88031
|
+
var paymentStore, BLOCKRUN_API, BLOCKRUN_SOLANA_API, IMAGE_DIR, AUDIO_DIR, VIDEO_DIR, AUTO_MODEL, ROUTING_PROFILES, FREE_MODELS, FREE_MODEL, MAX_MESSAGES, CONTEXT_LIMIT_KB, HEARTBEAT_INTERVAL_MS, BALANCE_CHECK_TIMEOUT_MS, DEFAULT_REQUEST_TIMEOUT_MS, PER_MODEL_TIMEOUT_MS, REASONING_MODEL_TIMEOUT_MS, REASONING_MODEL_IDS, MAX_FALLBACK_ATTEMPTS, HEALTH_CHECK_TIMEOUT_MS, RATE_LIMIT_COOLDOWN_MS, OVERLOAD_COOLDOWN_MS, PORT_RETRY_ATTEMPTS, PORT_RETRY_DELAY_MS, MODEL_BODY_READ_TIMEOUT_MS, ERROR_BODY_READ_TIMEOUT_MS, rateLimitedModels, overloadedModels, perProviderErrors, BALANCE_CHECK_BUFFER, BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP, PROVIDER_ERROR_PATTERNS, DEGRADED_RESPONSE_PATTERNS, DEGRADED_LOOP_PATTERNS, VALID_ROLES, ROLE_MAPPINGS, VALID_TOOL_ID_PATTERN, KIMI_BLOCK_RE, KIMI_TOKEN_RE, THINKING_TAG_RE, THINKING_BLOCK_RE, BLOCKRUN_MODEL_BY_ID, IMAGE_PRICING, VIDEO_PRICING, PHONE_PRICING;
|
|
88020
88032
|
var init_proxy = __esm({
|
|
88021
88033
|
"src/proxy.ts"() {
|
|
88022
88034
|
"use strict";
|
|
@@ -88108,6 +88120,7 @@ var init_proxy = __esm({
|
|
|
88108
88120
|
overloadedModels = /* @__PURE__ */ new Map();
|
|
88109
88121
|
perProviderErrors = /* @__PURE__ */ new Map();
|
|
88110
88122
|
BALANCE_CHECK_BUFFER = 1.5;
|
|
88123
|
+
BALANCE_PREFLIGHT_OUTPUT_TOKEN_CAP = 4096;
|
|
88111
88124
|
PROVIDER_ERROR_PATTERNS = [
|
|
88112
88125
|
/billing/i,
|
|
88113
88126
|
/insufficient.*balance/i,
|
package/package.json
CHANGED