diff --git a/extensions/ollama/index.test.ts b/extensions/ollama/index.test.ts index 0ea8baa3098..8e74a32df6f 100644 --- a/extensions/ollama/index.test.ts +++ b/extensions/ollama/index.test.ts @@ -69,6 +69,58 @@ function registerProviderWithPluginConfig(pluginConfig: Record) return registerProviderMock.mock.calls[0]?.[0]; } +function captureWrappedOllamaPayload(thinkingLevel: "off" | "low" | undefined) { + const provider = registerProvider(); + let payloadSeen: Record | undefined; + const baseStreamFn = vi.fn((_model, _context, options) => { + const payload: Record = { + messages: [], + options: { num_ctx: 65536 }, + stream: true, + }; + options?.onPayload?.(payload, _model); + payloadSeen = payload; + return {} as never; + }); + + const wrapped = provider.wrapStreamFn?.({ + config: { + models: { + providers: { + ollama: { + api: "ollama", + baseUrl: "http://127.0.0.1:11434", + models: [], + }, + }, + }, + }, + provider: "ollama", + modelId: "qwen3.5:9b", + thinkingLevel, + model: { + api: "ollama", + provider: "ollama", + id: "qwen3.5:9b", + baseUrl: "http://127.0.0.1:11434", + contextWindow: 131_072, + }, + streamFn: baseStreamFn, + }); + + expect(typeof wrapped).toBe("function"); + void wrapped?.( + { + api: "ollama", + provider: "ollama", + id: "qwen3.5:9b", + } as never, + {} as never, + {}, + ); + return { baseStreamFn, payloadSeen }; +} + describe("ollama plugin", () => { it("does not preselect a default model during provider auth setup", async () => { const provider = registerProvider(); @@ -425,162 +477,21 @@ describe("ollama plugin", () => { }); it("wraps native Ollama payloads with top-level think=false when thinking is off", () => { - const provider = registerProvider(); - let payloadSeen: Record | undefined; - const baseStreamFn = vi.fn((_model, _context, options) => { - const payload: Record = { - messages: [], - options: { num_ctx: 65536 }, - stream: true, - }; - options?.onPayload?.(payload, _model); - payloadSeen = payload; - return {} as never; - }); - - const wrapped = provider.wrapStreamFn?.({ - config: { - models: { - providers: { - ollama: { - api: "ollama", - baseUrl: "http://127.0.0.1:11434", - models: [], - }, - }, - }, - }, - provider: "ollama", - modelId: "qwen3.5:9b", - thinkingLevel: "off", - model: { - api: "ollama", - provider: "ollama", - id: "qwen3.5:9b", - baseUrl: "http://127.0.0.1:11434", - contextWindow: 131_072, - }, - streamFn: baseStreamFn, - }); - - expect(typeof wrapped).toBe("function"); - void wrapped?.( - { - api: "ollama", - provider: "ollama", - id: "qwen3.5:9b", - } as never, - {} as never, - {}, - ); + const { baseStreamFn, payloadSeen } = captureWrappedOllamaPayload("off"); expect(baseStreamFn).toHaveBeenCalledTimes(1); expect(payloadSeen?.think).toBe(false); expect((payloadSeen?.options as Record | undefined)?.think).toBeUndefined(); }); it("wraps native Ollama payloads with top-level think=true when thinking is enabled", () => { - const provider = registerProvider(); - let payloadSeen: Record | undefined; - const baseStreamFn = vi.fn((_model, _context, options) => { - const payload: Record = { - messages: [], - options: { num_ctx: 65536 }, - stream: true, - }; - options?.onPayload?.(payload, _model); - payloadSeen = payload; - return {} as never; - }); - - const wrapped = provider.wrapStreamFn?.({ - config: { - models: { - providers: { - ollama: { - api: "ollama", - baseUrl: "http://127.0.0.1:11434", - models: [], - }, - }, - }, - }, - provider: "ollama", - modelId: "qwen3.5:9b", - thinkingLevel: "low", - model: { - api: "ollama", - provider: "ollama", - id: "qwen3.5:9b", - baseUrl: "http://127.0.0.1:11434", - contextWindow: 131_072, - }, - streamFn: baseStreamFn, - }); - - expect(typeof wrapped).toBe("function"); - void wrapped?.( - { - api: "ollama", - provider: "ollama", - id: "qwen3.5:9b", - } as never, - {} as never, - {}, - ); + const { baseStreamFn, payloadSeen } = captureWrappedOllamaPayload("low"); expect(baseStreamFn).toHaveBeenCalledTimes(1); expect(payloadSeen?.think).toBe(true); expect((payloadSeen?.options as Record | undefined)?.think).toBeUndefined(); }); it("does not set think param when thinkingLevel is undefined", () => { - const provider = registerProvider(); - let payloadSeen: Record | undefined; - const baseStreamFn = vi.fn((_model, _context, options) => { - const payload: Record = { - messages: [], - options: { num_ctx: 65536 }, - stream: true, - }; - options?.onPayload?.(payload, _model); - payloadSeen = payload; - return {} as never; - }); - - const wrapped = provider.wrapStreamFn?.({ - config: { - models: { - providers: { - ollama: { - api: "ollama", - baseUrl: "http://127.0.0.1:11434", - models: [], - }, - }, - }, - }, - provider: "ollama", - modelId: "qwen3.5:9b", - thinkingLevel: undefined, - model: { - api: "ollama", - provider: "ollama", - id: "qwen3.5:9b", - baseUrl: "http://127.0.0.1:11434", - contextWindow: 131_072, - }, - streamFn: baseStreamFn, - }); - - expect(typeof wrapped).toBe("function"); - void wrapped?.( - { - api: "ollama", - provider: "ollama", - id: "qwen3.5:9b", - } as never, - {} as never, - {}, - ); + const { baseStreamFn, payloadSeen } = captureWrappedOllamaPayload(undefined); expect(baseStreamFn).toHaveBeenCalledTimes(1); expect(payloadSeen?.think).toBeUndefined(); });