Files
openclaw/src/utils/provider-utils.test.ts
Glucksberg 74193ff754 fix(ollama): remove Ollama from isReasoningTagProvider (#2279)
Ollama's OpenAI-compatible endpoint handles reasoning natively via the
`reasoning` field in streaming chunks. Treating Ollama as a
reasoning-tag provider incorrectly forces <think>/<final> tag
enforcement, which causes stripBlockTags() to discard all output
(since Ollama models don't emit <final> tags), resulting in
'(no output)' for every Ollama model.

This fix removes 'ollama' from the isReasoningTagProvider() check,
allowing Ollama models to work correctly through the standard
content/reasoning field separation.
2026-02-14 14:21:34 +01:00

40 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { isReasoningTagProvider } from "./provider-utils.js";
describe("isReasoningTagProvider", () => {
it("returns false for ollama — native reasoning field, no tags needed (#2279)", () => {
expect(isReasoningTagProvider("ollama")).toBe(false);
expect(isReasoningTagProvider("Ollama")).toBe(false);
});
it("returns true for google-gemini-cli", () => {
expect(isReasoningTagProvider("google-gemini-cli")).toBe(true);
});
it("returns true for google-generative-ai", () => {
expect(isReasoningTagProvider("google-generative-ai")).toBe(true);
});
it("returns true for google-antigravity", () => {
expect(isReasoningTagProvider("google-antigravity")).toBe(true);
expect(isReasoningTagProvider("google-antigravity/gemini-3")).toBe(true);
});
it("returns true for minimax", () => {
expect(isReasoningTagProvider("minimax")).toBe(true);
expect(isReasoningTagProvider("minimax-cn")).toBe(true);
});
it("returns false for null/undefined/empty", () => {
expect(isReasoningTagProvider(null)).toBe(false);
expect(isReasoningTagProvider(undefined)).toBe(false);
expect(isReasoningTagProvider("")).toBe(false);
});
it("returns false for standard providers", () => {
expect(isReasoningTagProvider("anthropic")).toBe(false);
expect(isReasoningTagProvider("openai")).toBe(false);
expect(isReasoningTagProvider("openrouter")).toBe(false);
});
});