UNPKG

@gacua/backend

Version:

GACUA Backend

70 lines 2.36 kB
/** * @license * Copyright 2025 MuleRun * SPDX-License-Identifier: Apache-2.0 */ import { runComputerUseAgent } from '../services/computer-use/index.js'; import { logger } from '../logger.js'; const messageHandlerLogger = logger.child({ module: 'websocket-message-handler', }); export async function handleMessage(ws, message) { let sessionId = 'unknown'; let messageType = 'unknown'; try { const data = JSON.parse(message.toString()); sessionId = data.sessionId; messageType = data.type; const handlerLogger = messageHandlerLogger.child({ sessionId, messageType, }); let input; let model; if (data.type === 'tool_review') { input = data.payload; handlerLogger.info({ input }, 'Tool review message received'); } else { // data.type === 'user_input' input = data.payload.input; model = data.payload.model; handlerLogger.info({ model, input }, 'User input message received'); } await runComputerUseAgent(sessionId, input, model, (event) => { const eventString = JSON.stringify(event); handlerLogger.debug({ eventType: event.type, eventPayloadSize: eventString.length, }, 'Sending event to WebSocket client'); ws.send(eventString); }); handlerLogger.debug('WebSocket message processed successfully'); } catch (error) { messageHandlerLogger.error({ sessionId, messageType, err: error, }, 'WebSocket message handling error'); const sessionErrorEvent = { type: 'session_status', sessionId, payload: { status: 'error', message: `Internal server error: ${error}`, }, }; try { ws.send(JSON.stringify(sessionErrorEvent)); messageHandlerLogger.debug({ sessionId }, 'Error response sent to WebSocket client'); } catch (sendError) { messageHandlerLogger.error({ sessionId, err: sendError, }, 'Failed to send error response to WebSocket client'); } } } //# sourceMappingURL=handle-message.js.map