mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-13 15:47:28 +00:00
70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import type { OpenClawConfig } from "openclaw/plugin-sdk/config-contracts";
|
|
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
import {
|
|
__testing,
|
|
buildDeepgramRealtimeTranscriptionProvider,
|
|
} from "./realtime-transcription-provider.js";
|
|
|
|
describe("buildDeepgramRealtimeTranscriptionProvider", () => {
|
|
afterEach(() => {
|
|
vi.unstubAllEnvs();
|
|
});
|
|
|
|
it("normalizes nested provider config", () => {
|
|
const provider = buildDeepgramRealtimeTranscriptionProvider();
|
|
const resolved = provider.resolveConfig?.({
|
|
cfg: {} as OpenClawConfig,
|
|
rawConfig: {
|
|
providers: {
|
|
deepgram: {
|
|
apiKey: "dg-key",
|
|
model: "nova-3",
|
|
encoding: "g711_ulaw",
|
|
sample_rate: "8000",
|
|
interim_results: "true",
|
|
endpointing: "500",
|
|
language: "en-US",
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
expect(resolved).toEqual({
|
|
apiKey: "dg-key",
|
|
baseUrl: undefined,
|
|
model: "nova-3",
|
|
language: "en-US",
|
|
sampleRate: 8000,
|
|
encoding: "mulaw",
|
|
interimResults: true,
|
|
endpointingMs: 500,
|
|
});
|
|
});
|
|
|
|
it("builds a Deepgram listen websocket URL", () => {
|
|
const url = __testing.toDeepgramRealtimeWsUrl({
|
|
apiKey: "dg-key",
|
|
baseUrl: "https://api.deepgram.com/v1",
|
|
model: "nova-3",
|
|
providerConfig: {},
|
|
sampleRate: 8000,
|
|
encoding: "mulaw",
|
|
interimResults: true,
|
|
endpointingMs: 800,
|
|
});
|
|
|
|
expect(url).toContain("wss://api.deepgram.com/v1/listen?");
|
|
expect(url).toContain("model=nova-3");
|
|
expect(url).toContain("encoding=mulaw");
|
|
expect(url).toContain("sample_rate=8000");
|
|
});
|
|
|
|
it("requires an API key when creating sessions", () => {
|
|
vi.stubEnv("DEEPGRAM_API_KEY", "");
|
|
const provider = buildDeepgramRealtimeTranscriptionProvider();
|
|
expect(() => provider.createSession({ providerConfig: {} })).toThrow(
|
|
"Deepgram API key missing",
|
|
);
|
|
});
|
|
});
|