refactor(translator): P4 concern #6 finishReasonMap — switch-by-format, default common

- concerns/finishReasonMap.js: toOpenAIFinish/fromOpenAIFinish, switch special formats, default passthrough
- Replace 3 inline switch maps (claude→oai, oai→claude, commandcode→oai)
- Golden translator tests pass, behavior identical

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
decolua
2026-06-13 21:20:22 +07:00
parent d2b0960bf7
commit 4cc667253a
4 changed files with 49 additions and 30 deletions

View File

@@ -1,5 +1,6 @@
import { register } from "../index.js";
import { FORMATS } from "../formats.js";
import { fromOpenAIFinish } from "../concerns/finishReasonMap.js";
// Prefix for Claude OAuth tool names (must match request translator)
const CLAUDE_OAUTH_TOOL_PREFIX = "proxy_";
@@ -252,15 +253,7 @@ export function openaiToClaudeResponse(chunk, state) {
return results.length > 0 ? results : null;
}
// Convert OpenAI finish_reason to Claude stop_reason
function convertFinishReason(reason) {
switch (reason) {
case "stop": return "end_turn";
case "length": return "max_tokens";
case "tool_calls": return "tool_use";
default: return "end_turn";
}
}
const convertFinishReason = (reason) => fromOpenAIFinish(reason, "claude");
// Register
register(FORMATS.OPENAI, FORMATS.CLAUDE, null, openaiToClaudeResponse);