mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-14 03:20:49 +00:00
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.
40 lines
1.4 KiB
TypeScript
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);
|
|
});
|
|
});
|