mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 13:38:31 +00:00
- Bug B1-B7: media UI m.kind||m.type, serviceKinds, gemini mediaPriority, schema kind, models/info lookup by kind - Dead code D1-D6: safeParseJSON, drop PROVIDER_ENDPOINTS, orphan fetcher, GITHUB_CONFIG derive, getProviderConfig internal, legacy kiro file - Translator concerns: toOpenAIUsage, toOpenAIFinish (gemini/kiro/ollama + fix kiro tool finish), thinking effort maps - Reorg helpers/ → concerns/ (logic) + formats/ (per-format) + schema/ (pure enums: roles/blocks/finishReasons/defaults) - Wire ~280 hardcoded role/block/finish/default literals to schema enums across 20+ files - collapseTextParts + extractTextContent dedup - Normalize translator fn names to openaiToXRequest / xToOpenAIResponse - Golden tests lock behavior; 0 regression (byte-for-byte providers/alias, 26=26 known fails) Co-authored-by: Cursor <cursoragent@cursor.com>
28 lines
946 B
JavaScript
28 lines
946 B
JavaScript
import { DEFAULT_MAX_TOKENS, DEFAULT_MIN_TOKENS } from "../../config/runtimeConfig.js";
|
|
|
|
/**
|
|
* Adjust max_tokens based on request context
|
|
* @param {object} body - Request body
|
|
* @returns {number} Adjusted max_tokens
|
|
*/
|
|
export function adjustMaxTokens(body) {
|
|
let maxTokens = body.max_tokens || DEFAULT_MAX_TOKENS;
|
|
|
|
// Auto-increase for tool calling to prevent truncated arguments
|
|
if (body.tools && Array.isArray(body.tools) && body.tools.length > 0) {
|
|
if (maxTokens < DEFAULT_MIN_TOKENS) {
|
|
maxTokens = DEFAULT_MIN_TOKENS;
|
|
}
|
|
}
|
|
|
|
// Ensure max_tokens > thinking.budget_tokens (Claude API requirement)
|
|
// Claude API requires strictly greater, so add buffer instead of using DEFAULT_MAX_TOKENS
|
|
// which could equal budget_tokens when budget_tokens >= 64000
|
|
if (body.thinking?.budget_tokens && maxTokens <= body.thinking.budget_tokens) {
|
|
maxTokens = body.thinking.budget_tokens + 1024;
|
|
}
|
|
|
|
return maxTokens;
|
|
}
|
|
|