import { describe, expect, it } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; import { buildProviderRegistry, runCapability } from "./runner.js"; import { withAudioFixture } from "./runner.test-utils.js"; describe("runCapability deepgram provider options", () => { it("merges provider options, headers, and baseUrl overrides", async () => { await withAudioFixture("openclaw-deepgram", async ({ ctx, media, cache }) => { let seenQuery: Record | undefined; let seenBaseUrl: string | undefined; let seenHeaders: Record | undefined; const providerRegistry = buildProviderRegistry({ deepgram: { id: "deepgram", capabilities: ["audio"], transcribeAudio: async (req) => { seenQuery = req.query; seenBaseUrl = req.baseUrl; seenHeaders = req.headers; return { text: "ok", model: req.model }; }, }, }); const cfg = { models: { providers: { deepgram: { baseUrl: "https://provider.example", apiKey: "test-key", headers: { "X-Provider": "1", "X-Provider-Managed": "secretref-managed", }, models: [], }, }, }, tools: { media: { audio: { enabled: true, baseUrl: "https://config.example", headers: { "X-Config": "2", "X-Config-Managed": "secretref-env:DEEPGRAM_HEADER_TOKEN", }, providerOptions: { deepgram: { detect_language: true, punctuate: true, }, }, deepgram: { smartFormat: true }, models: [ { provider: "deepgram", model: "nova-3", baseUrl: "https://entry.example", headers: { "X-Entry": "3", "X-Entry-Managed": "secretref-managed", }, providerOptions: { deepgram: { detectLanguage: false, punctuate: false, smart_format: true, }, }, }, ], }, }, }, } as unknown as OpenClawConfig; const result = await runCapability({ capability: "audio", cfg, ctx, attachments: cache, media, providerRegistry, }); expect(result.outputs[0]?.text).toBe("ok"); expect(seenBaseUrl).toBe("https://entry.example"); expect(seenHeaders).toMatchObject({ "X-Provider": "1", "X-Provider-Managed": "secretref-managed", "X-Config": "2", "X-Config-Managed": "secretref-env:DEEPGRAM_HEADER_TOKEN", "X-Entry": "3", "X-Entry-Managed": "secretref-managed", }); expect(seenQuery).toMatchObject({ detect_language: false, punctuate: false, smart_format: true, }); expect((seenQuery as Record)["detectLanguage"]).toBeUndefined(); }); }); });