UNPKG

@vapi-ai/mcp-server

Version:
201 lines (200 loc) 6.11 kB
// ===== Assistant Transformers ===== export function transformAssistantInput(input) { const assistantDto = { name: input.name, }; assistantDto.model = { provider: input.llm.provider, model: input.llm.model, }; if (input.toolIds && input.toolIds.length > 0) { assistantDto.model.toolIds = input.toolIds; } if (input.instructions) { assistantDto.model.messages = [ { role: 'system', content: input.instructions, }, ]; } assistantDto.transcriber = { provider: input.transcriber.provider, ...(input.transcriber.model ? { model: input.transcriber.model } : {}), }; assistantDto.voice = { provider: input.voice.provider, voiceId: input.voice.voiceId, ...(input.voice.model ? { model: input.voice.model } : {}), }; if (input.firstMessage) { assistantDto.firstMessage = input.firstMessage; } if (input.firstMessageMode) { assistantDto.firstMessageMode = input.firstMessageMode; } return assistantDto; } export function transformUpdateAssistantInput(input) { const updateDto = {}; if (input.name) { updateDto.name = input.name; } if (input.llm) { updateDto.model = { provider: input.llm.provider, model: input.llm.model, }; if (input.toolIds && input.toolIds.length > 0) { updateDto.model.toolIds = input.toolIds; } if (input.instructions) { updateDto.model.messages = [ { role: 'system', content: input.instructions, }, ]; } } else { if (input.toolIds && input.toolIds.length > 0) { updateDto.model = { toolIds: input.toolIds }; } if (input.instructions) { if (!updateDto.model) updateDto.model = {}; updateDto.model.messages = [ { role: 'system', content: input.instructions, }, ]; } } if (input.transcriber) { updateDto.transcriber = { provider: input.transcriber.provider, ...(input.transcriber.model ? { model: input.transcriber.model } : {}), }; } if (input.voice) { updateDto.voice = { provider: input.voice.provider, voiceId: input.voice.voiceId, ...(input.voice.model ? { model: input.voice.model } : {}), }; } if (input.firstMessage) { updateDto.firstMessage = input.firstMessage; } if (input.firstMessageMode) { updateDto.firstMessageMode = input.firstMessageMode; } return updateDto; } export function transformAssistantOutput(assistant) { return { id: assistant.id, createdAt: assistant.createdAt, updatedAt: assistant.updatedAt, name: assistant.name || 'Vapi Assistant', llm: { provider: assistant.model?.provider || 'openai', model: assistant.model?.model || 'gpt-4o-mini', }, voice: { provider: assistant.voice?.provider || '11labs', voiceId: getAssistantVoiceId(assistant.voice), model: getAssistantVoiceModel(assistant.voice) || 'eleven_turbo_v2_5', }, transcriber: { provider: assistant.transcriber?.provider || 'deepgram', model: getAssistantTranscriberModel(assistant.transcriber) || 'nova-3', }, toolIds: assistant.model?.toolIds || [], }; } function getAssistantVoiceId(voice) { if (!voice) return ''; const voiceAny = voice; return voiceAny.voiceId || voiceAny.voice || ''; } function getAssistantVoiceModel(voice) { if (!voice) return ''; const voiceAny = voice; return voiceAny.model || ''; } function getAssistantTranscriberModel(transcriber) { if (!transcriber) return ''; const transcriberAny = transcriber; return transcriberAny.model || transcriberAny.transcriber || ''; } // ===== Call Transformers ===== export function transformCallInput(input) { return { ...(input.assistantId ? { assistantId: input.assistantId } : {}), ...(input.phoneNumberId ? { phoneNumberId: input.phoneNumberId } : {}), ...(input.customer ? { customer: { number: input.customer.number, }, } : {}), ...(input.scheduledAt ? { schedulePlan: { earliestAt: input.scheduledAt, }, } : {}), ...(input.assistantOverrides ? { assistantOverrides: input.assistantOverrides, } : {}), }; } export function transformCallOutput(call) { return { id: call.id, createdAt: call.createdAt, updatedAt: call.updatedAt, status: call.status || '', endedReason: call.endedReason, assistantId: call.assistantId, phoneNumberId: call.phoneNumberId, customer: call.customer ? { number: call.customer.number || '', } : undefined, scheduledAt: call.schedulePlan?.earliestAt, }; } // ===== Phone Number Transformers ===== export function transformPhoneNumberOutput(phoneNumber) { return { id: phoneNumber.id, name: phoneNumber.name, createdAt: phoneNumber.createdAt, updatedAt: phoneNumber.updatedAt, phoneNumber: phoneNumber.number, status: phoneNumber.status, }; } // ===== Tool Transformers ===== export function transformToolOutput(tool) { return { id: tool.id, createdAt: tool.createdAt, updatedAt: tool.updatedAt, type: tool.type || '', name: tool.function?.name || '', description: tool.function?.description || '', }; }