UNPKG

@gguf/claw

Version:

Multi-channel AI gateway with extensible messaging integrations

41 lines (34 loc) 1.25 kB
import type { VoiceCallConfig } from "../config.js"; import type { VoiceCallProvider } from "../providers/base.js"; import type { CallId, CallRecord } from "../types.js"; export type TranscriptWaiter = { resolve: (text: string) => void; reject: (err: Error) => void; timeout: NodeJS.Timeout; }; export type CallManagerRuntimeState = { activeCalls: Map<CallId, CallRecord>; providerCallIdMap: Map<string, CallId>; processedEventIds: Set<string>; /** Provider call IDs we already sent a reject hangup for; avoids duplicate hangup calls. */ rejectedProviderCallIds: Set<string>; }; export type CallManagerRuntimeDeps = { provider: VoiceCallProvider | null; config: VoiceCallConfig; storePath: string; webhookUrl: string | null; }; export type CallManagerTransientState = { activeTurnCalls: Set<CallId>; transcriptWaiters: Map<CallId, TranscriptWaiter>; maxDurationTimers: Map<CallId, NodeJS.Timeout>; }; export type CallManagerHooks = { /** Optional runtime hook invoked after an event transitions a call into answered state. */ onCallAnswered?: (call: CallRecord) => void; }; export type CallManagerContext = CallManagerRuntimeState & CallManagerRuntimeDeps & CallManagerTransientState & CallManagerHooks;