41 lines
1.5 KiB
JavaScript
41 lines
1.5 KiB
JavaScript
// 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 });
|
|
}
|
|
});
|
|
}
|
|
}
|