fix(translator): ESM-safe registry + tool-id pairing + responses max_tokens; add real-creds tests
- translator/index.js: replace require() with static side-effect imports (ESM-safe), lazy-init registry maps to survive circular import order - openai-responses->openai: map max_output_tokens -> max_tokens (avoid leaking field upstream) - gemini/antigravity -> openai: derive deterministic tool_call id from name so functionCall/functionResponse pair correctly (fixes provider tool-pairing 400s) - add offline unit tests (finish-reason, usage, session-manager, ollama malformed args, const guard) - add real-creds integration tests (provider-cases + all-formats matrix: 6 inbound formats x 4 scenarios) Includes co-located provider registry refactor (pricing/capabilities/media providers) and sessionManager updates. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
30
tests/unit/openai-to-ollama-malformed.test.js
Normal file
30
tests/unit/openai-to-ollama-malformed.test.js
Normal file
@@ -0,0 +1,30 @@
|
||||
// A4 (case #10): malformed tool_calls args must not throw -> safeParseJSON returns {}.
|
||||
import { describe, it, expect } from "vitest";
|
||||
import { openaiToOllamaRequest } from "../../open-sse/translator/request/openai-to-ollama.js";
|
||||
|
||||
function reqWith(args) {
|
||||
return {
|
||||
messages: [
|
||||
{
|
||||
role: "assistant",
|
||||
content: "",
|
||||
tool_calls: [{ id: "c1", type: "function", function: { name: "get_weather", arguments: args } }],
|
||||
},
|
||||
],
|
||||
};
|
||||
}
|
||||
|
||||
describe("openaiToOllamaRequest - tool_calls arguments parsing", () => {
|
||||
it("malformed JSON args -> {} (no throw)", () => {
|
||||
let out;
|
||||
expect(() => {
|
||||
out = openaiToOllamaRequest("m", reqWith("{invalid json"), true);
|
||||
}).not.toThrow();
|
||||
expect(out.messages[0].tool_calls[0].function.arguments).toEqual({});
|
||||
});
|
||||
|
||||
it("valid JSON args -> parsed object", () => {
|
||||
const out = openaiToOllamaRequest("m", reqWith('{"a":1}'), true);
|
||||
expect(out.messages[0].tool_calls[0].function.arguments).toEqual({ a: 1 });
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user