MCPcopy
hub / github.com/simstudioai/sim / setupVariablesHandlers

Function setupVariablesHandlers

apps/realtime/src/handlers/variables.ts:40–222  ·  view source on GitHub ↗
(socket: AuthenticatedSocket, roomManager: IRoomManager)

Source from the content-addressed store, hash-verified

38}
39
40export function setupVariablesHandlers(socket: AuthenticatedSocket, roomManager: IRoomManager) {
41 socket.on('variable-update', async (data) => {
42 const { workflowId: payloadWorkflowId, variableId, field, value, timestamp, operationId } = data
43
44 if (!roomManager.isReady()) {
45 socket.emit('operation-forbidden', {
46 type: 'ROOM_MANAGER_UNAVAILABLE',
47 message: 'Realtime unavailable',
48 })
49 if (operationId) {
50 socket.emit('operation-failed', {
51 operationId,
52 error: 'Realtime unavailable',
53 retryable: true,
54 })
55 }
56 return
57 }
58
59 try {
60 const sessionWorkflowId = await roomManager.getWorkflowIdForSocket(socket.id)
61 const session = await roomManager.getUserSession(socket.id)
62
63 if (!sessionWorkflowId || !session) {
64 logger.debug(`Ignoring variable update: socket not connected to any workflow room`, {
65 socketId: socket.id,
66 hasWorkflowId: !!sessionWorkflowId,
67 hasSession: !!session,
68 })
69 socket.emit('operation-forbidden', {
70 type: 'SESSION_ERROR',
71 message: 'Session expired, please rejoin workflow',
72 })
73 if (operationId) {
74 socket.emit('operation-failed', { operationId, error: 'Session expired' })
75 }
76 return
77 }
78
79 const workflowId = payloadWorkflowId || sessionWorkflowId
80
81 if (payloadWorkflowId && payloadWorkflowId !== sessionWorkflowId) {
82 logger.warn('Workflow ID mismatch in variable update', {
83 payloadWorkflowId,
84 sessionWorkflowId,
85 socketId: socket.id,
86 })
87 if (operationId) {
88 socket.emit('operation-failed', {
89 operationId,
90 error: 'Workflow ID mismatch',
91 retryable: true,
92 })
93 }
94 return
95 }
96
97 const hasRoom = await roomManager.hasWorkflowRoom(workflowId)

Callers 1

setupAllHandlersFunction · 0.90

Calls 15

assertWorkflowMutableFunction · 0.90
getErrorMessageFunction · 0.90
flushVariableUpdateFunction · 0.85
onMethod · 0.80
debugMethod · 0.80
errorMethod · 0.80
isReadyMethod · 0.65
getUserSessionMethod · 0.65
warnMethod · 0.65
hasWorkflowRoomMethod · 0.65

Tested by

no test coverage detected