profileShare

rasmusjy / voicetask

Read-only snapshot

No repository description.

main default branch 105 files Expires Sep 13, 2026, 9:06 AM
factory.ts 1,105 bytes
1 import { createLlmAnthropic } from './llmAnthropic'
2 import { createLlmMock } from './llmMock'
3 import { createSttMock } from './sttMock'
4 import { createSttOpenai } from './sttOpenai'
5 import type { InterviewLlm, SttProvider } from './types'
6
7 function isMockMode(): boolean {
8 return process.env.MOCK_PROVIDERS === '1'
9 }
10
11 export function createSttProvider(): SttProvider {
12 if (isMockMode()) return createSttMock()
13 return createSttOpenai()
14 }
15
16 export function createInterviewLlm(): InterviewLlm {
17 if (isMockMode()) return createLlmMock()
18 return createLlmAnthropic()
19 }
20
21 // Resolved per call so keys saved from the setup screen take effect without a
22 // server restart. Construction is local work only; no provider is contacted.
23 export function createLazySttProvider(): SttProvider {
24 return {
25 transcribe: (audio, mimeType) => createSttProvider().transcribe(audio, mimeType),
26 }
27 }
28
29 export function createLazyInterviewLlm(): InterviewLlm {
30 return {
31 nextTurn: (context) => createInterviewLlm().nextTurn(context),
32 generateFile: (request) => createInterviewLlm().generateFile(request),
33 }
34 }
35