// FORSLAG TIL opax-web/backend/socketHandlers.js (ENDELIG KORRIGERT) const SAFE_ACTIONS = {}; /** * Registrerer sikre, nettleser-eksponerte Socket.IO-handlere. * @param {import('socket.io').Socket} socket - Den tilkoblede socketen. * @param {{callAgentFn: function}} dependencies - Injisert avhengighet for å kalle MCP. */ export function registerBrowserSocketHandlers(socket, { callAgentFn }) { // Avvis den gamle, usikre mcp-call-handleren socket.on('mcp-call', (payload) => { const safeId = (payload && typeof payload.id === 'string' && payload.id.length <= 128) ? payload.id : null; socket.emit('mcp-result', { id: safeId, error: 'Denne funksjonen er ikke tilgjengelig.', }); }); // Registrer de nye, sikre handlerne for (const eventName in SAFE_ACTIONS) { const config = SAFE_ACTIONS[eventName]; socket.on(eventName, async () => { if (!socket.request.session?.user) { return socket.emit(`${config.responseEvent}:error`, { message: 'Du må være logget inn.' }); } try { const result = await callAgentFn(config.tool, {}); const normalizedData = config.normalize(result); socket.emit(`${config.responseEvent}:result`, { data: normalizedData }); } catch (e) { console.error(`[Socket Handler Error] Event: ${eventName}, User: ${socket.request.session.user.email}, Error:`, e); // e.message logges ikke eller sendes til klienten. socket.emit(`${config.responseEvent}:error`, { message: config.errorMessage }); } }); } }