import { ErrorCodes, errorShape } from "./protocol/index.js"; import { agentHandlers } from "./server-methods/agent.js"; import { chatHandlers } from "./server-methods/chat.js"; import { configHandlers } from "./server-methods/config.js"; import { connectHandlers } from "./server-methods/connect.js"; import { cronHandlers } from "./server-methods/cron.js"; import { healthHandlers } from "./server-methods/health.js"; import { modelsHandlers } from "./server-methods/models.js"; import { nodeHandlers } from "./server-methods/nodes.js"; import { providersHandlers } from "./server-methods/providers.js"; import { sendHandlers } from "./server-methods/send.js"; import { sessionsHandlers } from "./server-methods/sessions.js"; import { skillsHandlers } from "./server-methods/skills.js"; import { systemHandlers } from "./server-methods/system.js"; import { talkHandlers } from "./server-methods/talk.js"; import type { GatewayRequestHandlers, GatewayRequestOptions, } from "./server-methods/types.js"; import { usageHandlers } from "./server-methods/usage.js"; import { voicewakeHandlers } from "./server-methods/voicewake.js"; import { webHandlers } from "./server-methods/web.js"; import { wizardHandlers } from "./server-methods/wizard.js"; const handlers: GatewayRequestHandlers = { ...connectHandlers, ...voicewakeHandlers, ...healthHandlers, ...providersHandlers, ...chatHandlers, ...cronHandlers, ...webHandlers, ...modelsHandlers, ...configHandlers, ...wizardHandlers, ...talkHandlers, ...skillsHandlers, ...sessionsHandlers, ...systemHandlers, ...nodeHandlers, ...sendHandlers, ...usageHandlers, ...agentHandlers, }; export async function handleGatewayRequest( opts: GatewayRequestOptions, ): Promise { const { req, respond, client, isWebchatConnect, context } = opts; const handler = handlers[req.method]; if (!handler) { respond( false, undefined, errorShape(ErrorCodes.INVALID_REQUEST, `unknown method: ${req.method}`), ); return; } await handler({ req, params: (req.params ?? {}) as Record, client, isWebchatConnect, respond, context, }); }