mirror of
https://github.com/Nezumi-2711/9router.git
synced 2026-09-22 13:38:31 +00:00
refactor(translator): P4 concern #5 buildUsage — apply to kiro/ollama/commandcode
- Replace 3 inline {prompt,completion,total} usage objects with buildUsage()
- Preserves ?? vs total fallback semantics (commandcode)
- Golden tests pass, identical output
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
import { register } from "../index.js";
|
import { register } from "../index.js";
|
||||||
import { FORMATS } from "../formats.js";
|
import { FORMATS } from "../formats.js";
|
||||||
import { buildChunk } from "../helpers/chunkBuilder.js";
|
import { buildChunk } from "../helpers/chunkBuilder.js";
|
||||||
|
import { buildUsage } from "../helpers/usageHelper.js";
|
||||||
import { reasoningDelta } from "../helpers/reasoningHelper.js";
|
import { reasoningDelta } from "../helpers/reasoningHelper.js";
|
||||||
import { toOpenAIFinish } from "../concerns/finishReasonMap.js";
|
import { toOpenAIFinish } from "../concerns/finishReasonMap.js";
|
||||||
|
|
||||||
@@ -157,11 +158,12 @@ export function convertCommandCodeToOpenAI(chunk, state) {
|
|||||||
const finalChunk = makeChunk(state, {}, finishReason);
|
const finalChunk = makeChunk(state, {}, finishReason);
|
||||||
const totalUsage = event.totalUsage || state.usage;
|
const totalUsage = event.totalUsage || state.usage;
|
||||||
if (totalUsage) {
|
if (totalUsage) {
|
||||||
finalChunk.usage = {
|
const inTok = totalUsage.inputTokens ?? 0, outTok = totalUsage.outputTokens ?? 0;
|
||||||
prompt_tokens: totalUsage.inputTokens ?? 0,
|
finalChunk.usage = buildUsage({
|
||||||
completion_tokens: totalUsage.outputTokens ?? 0,
|
promptTokens: inTok,
|
||||||
total_tokens: totalUsage.totalTokens ?? ((totalUsage.inputTokens ?? 0) + (totalUsage.outputTokens ?? 0)),
|
completionTokens: outTok,
|
||||||
};
|
totalTokens: totalUsage.totalTokens ?? (inTok + outTok),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
out.push(finalChunk);
|
out.push(finalChunk);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
import { register } from "../index.js";
|
import { register } from "../index.js";
|
||||||
import { FORMATS } from "../formats.js";
|
import { FORMATS } from "../formats.js";
|
||||||
import { buildChunk } from "../helpers/chunkBuilder.js";
|
import { buildChunk } from "../helpers/chunkBuilder.js";
|
||||||
|
import { buildUsage } from "../helpers/usageHelper.js";
|
||||||
import { fallbackToolCallId } from "../helpers/toolCallHelper.js";
|
import { fallbackToolCallId } from "../helpers/toolCallHelper.js";
|
||||||
import { reasoningDelta } from "../helpers/reasoningHelper.js";
|
import { reasoningDelta } from "../helpers/reasoningHelper.js";
|
||||||
|
|
||||||
@@ -143,11 +144,8 @@ export function convertKiroToOpenAI(chunk, state) {
|
|||||||
if (eventType === "usageEvent" || data.usageEvent) {
|
if (eventType === "usageEvent" || data.usageEvent) {
|
||||||
const usage = data.usageEvent || data;
|
const usage = data.usageEvent || data;
|
||||||
if (usage && typeof usage === 'object') {
|
if (usage && typeof usage === 'object') {
|
||||||
state.usage = {
|
const inTok = usage.inputTokens || 0, outTok = usage.outputTokens || 0;
|
||||||
prompt_tokens: usage.inputTokens || 0,
|
state.usage = buildUsage({ promptTokens: inTok, completionTokens: outTok, totalTokens: inTok + outTok });
|
||||||
completion_tokens: usage.outputTokens || 0,
|
|
||||||
total_tokens: (usage.inputTokens || 0) + (usage.outputTokens || 0)
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { register } from "../index.js";
|
import { register } from "../index.js";
|
||||||
import { FORMATS } from "../formats.js";
|
import { FORMATS } from "../formats.js";
|
||||||
import { buildChunk } from "../helpers/chunkBuilder.js";
|
import { buildChunk } from "../helpers/chunkBuilder.js";
|
||||||
|
import { buildUsage } from "../helpers/usageHelper.js";
|
||||||
import { fallbackToolCallId } from "../helpers/toolCallHelper.js";
|
import { fallbackToolCallId } from "../helpers/toolCallHelper.js";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -79,11 +80,8 @@ export function ollamaToOpenAI(chunk, state) {
|
|||||||
* Extract usage stats from Ollama response
|
* Extract usage stats from Ollama response
|
||||||
*/
|
*/
|
||||||
function extractUsage(ollamaChunk) {
|
function extractUsage(ollamaChunk) {
|
||||||
return {
|
const inTok = ollamaChunk.prompt_eval_count || 0, outTok = ollamaChunk.eval_count || 0;
|
||||||
prompt_tokens: ollamaChunk.prompt_eval_count || 0,
|
return buildUsage({ promptTokens: inTok, completionTokens: outTok, totalTokens: inTok + outTok });
|
||||||
completion_tokens: ollamaChunk.eval_count || 0,
|
|
||||||
total_tokens: (ollamaChunk.prompt_eval_count || 0) + (ollamaChunk.eval_count || 0)
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user