import assert from "node:assert/strict"; import test from "node:test"; import { Kernel } from "../../../kernel"; import { ExtensionId, Hook } from "../../catalog"; import { createModelsExtension, type ModelService } from "../models"; import { createDeepSeekExtension } from "."; test("reads DeepSeek settings from extension config", async (t) => { const environment = { DEEPSEEK_API_KEY: process.env.DEEPSEEK_API_KEY, DEEPSEEK_BASE_URL: process.env.DEEPSEEK_BASE_URL, DEEPSEEK_MODEL: process.env.DEEPSEEK_MODEL, }; delete process.env.DEEPSEEK_API_KEY; delete process.env.DEEPSEEK_BASE_URL; delete process.env.DEEPSEEK_MODEL; t.after(() => { for (const [name, value] of Object.entries(environment)) { if (value === undefined) delete process.env[name]; else process.env[name] = value; } }); let requestUrl = ""; let requestInit: RequestInit | undefined; const request = async (url: string, init: RequestInit) => { requestUrl = url; requestInit = init; return new Response("data: [DONE]\n\n"); }; const kernel = new Kernel({ extensionConfigs: { [ExtensionId.DeepSeek]: { apiKey: "config-key", baseUrl: "https://example.test/v1/", model: "config-model", request, }, }, }).use(createModelsExtension, createDeepSeekExtension); await kernel.start(); for await (const _ of kernel .get(Hook.Models) .chat([{ role: "user", content: "你好" }])) { // The test response contains no text chunks. } assert.equal(requestUrl, "https://example.test/v1/chat/completions"); assert.equal( (requestInit?.headers as Record).authorization, "Bearer config-key", ); assert.equal(JSON.parse(String(requestInit?.body)).model, "config-model"); await kernel.stop(); });