diff --git a/api/controllers/console/app/online_user.py b/api/controllers/console/app/online_user.py index d3103a6666..92fe18bac3 100644 --- a/api/controllers/console/app/online_user.py +++ b/api/controllers/console/app/online_user.py @@ -240,11 +240,14 @@ def broadcast_online_users(workflow_id): def handle_collaboration_event(sid, data): """ Handle general collaboration events, include: - 1. mouseMove - 2. varsAndFeaturesUpdate - 3. syncRequest(ask leader to update graph) - 4. appStateUpdate - 5. mcpServerUpdate + 1. mouse_move + 2. vars_and_features_update + 3. sync_request (ask leader to update graph) + 4. app_state_update + 5. mcp_server_update + 6. workflow_update + 7. comments_update + 8. node_panel_presence """ mapping = redis_client.get(f"ws_sid_map:{sid}") diff --git a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/card-view.tsx b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/card-view.tsx index d0fc409769..6388c3d551 100644 --- a/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/card-view.tsx +++ b/web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/card-view.tsx @@ -56,7 +56,7 @@ const CardView: FC = ({ appId, isInPanel, className }) => { const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'appStateUpdate', + type: 'app_state_update', data: { timestamp: Date.now() }, timestamp: Date.now(), }) diff --git a/web/app/components/tools/mcp/mcp-service-card.tsx b/web/app/components/tools/mcp/mcp-service-card.tsx index 2fabab962b..e1c222476d 100644 --- a/web/app/components/tools/mcp/mcp-service-card.tsx +++ b/web/app/components/tools/mcp/mcp-service-card.tsx @@ -97,7 +97,7 @@ function MCPServiceCard({ const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'mcpServerUpdate', + type: 'mcp_server_update', data: { action: 'codeRegenerated', timestamp: Date.now(), @@ -139,7 +139,7 @@ function MCPServiceCard({ const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'mcpServerUpdate', + type: 'mcp_server_update', data: { action: 'statusChanged', status: state ? 'active' : 'inactive', diff --git a/web/app/components/workflow/collaboration/core/collaboration-manager.ts b/web/app/components/workflow/collaboration/core/collaboration-manager.ts index afc7580f45..7ffa08918b 100644 --- a/web/app/components/workflow/collaboration/core/collaboration-manager.ts +++ b/web/app/components/workflow/collaboration/core/collaboration-manager.ts @@ -285,7 +285,7 @@ export class CollaborationManager { const socket = webSocketClient.getSocket(this.currentAppId) if (socket) { socket.emit('collaboration_event', { - type: 'mouseMove', + type: 'mouse_move', userId: socket.id, data: { x: position.x, y: position.y }, timestamp: Date.now(), @@ -300,7 +300,7 @@ export class CollaborationManager { if (socket) { console.log('Emitting sync request to leader') socket.emit('collaboration_event', { - type: 'syncRequest', + type: 'sync_request', data: { timestamp: Date.now() }, timestamp: Date.now(), }) @@ -314,7 +314,7 @@ export class CollaborationManager { if (socket) { console.log('Emitting Workflow update event') socket.emit('collaboration_event', { - type: 'workflowUpdate', + type: 'workflow_update', data: { appId, timestamp: Date.now() }, timestamp: Date.now(), }) @@ -336,7 +336,7 @@ export class CollaborationManager { } socket.emit('collaboration_event', { - type: 'nodePanelPresence', + type: 'node_panel_presence', data: payload, timestamp: payload.timestamp, }) @@ -397,7 +397,7 @@ export class CollaborationManager { if (socket) { console.log('Emitting Comments update event') socket.emit('collaboration_event', { - type: 'commentsUpdate', + type: 'comments_update', data: { appId, timestamp: Date.now() }, timestamp: Date.now(), }) @@ -793,7 +793,7 @@ export class CollaborationManager { console.log('Setting up socket event listeners for collaboration') socket.on('collaboration_update', (update: any) => { - if (update.type === 'mouseMove') { + if (update.type === 'mouse_move') { // Update cursor state for this user this.cursors[update.userId] = { x: update.data.x, @@ -804,31 +804,31 @@ export class CollaborationManager { this.eventEmitter.emit('cursors', { ...this.cursors }) } - else if (update.type === 'varsAndFeaturesUpdate') { - console.log('Processing varsAndFeaturesUpdate event:', update) + else if (update.type === 'vars_and_features_update') { + console.log('Processing vars_and_features_update event:', update) this.eventEmitter.emit('varsAndFeaturesUpdate', update) } - else if (update.type === 'appStateUpdate') { - console.log('Processing appStateUpdate event:', update) + else if (update.type === 'app_state_update') { + console.log('Processing app_state_update event:', update) this.eventEmitter.emit('appStateUpdate', update) } - else if (update.type === 'mcpServerUpdate') { - console.log('Processing mcpServerUpdate event:', update) + else if (update.type === 'mcp_server_update') { + console.log('Processing mcp_server_update event:', update) this.eventEmitter.emit('mcpServerUpdate', update) } - else if (update.type === 'workflowUpdate') { - console.log('Processing workflowUpdate event:', update) + else if (update.type === 'workflow_update') { + console.log('Processing workflow_update event:', update) this.eventEmitter.emit('workflowUpdate', update.data) } - else if (update.type === 'commentsUpdate') { - console.log('Processing commentsUpdate event:', update) + else if (update.type === 'comments_update') { + console.log('Processing comments_update event:', update) this.eventEmitter.emit('commentsUpdate', update.data) } - else if (update.type === 'nodePanelPresence') { - console.log('Processing nodePanelPresence event:', update) + else if (update.type === 'node_panel_presence') { + console.log('Processing node_panel_presence event:', update) this.applyNodePanelPresenceUpdate(update.data as NodePanelPresenceEventData) } - else if (update.type === 'syncRequest') { + else if (update.type === 'sync_request') { console.log('Received sync request from another user') // Only process if we are the leader if (this.isLeader) { diff --git a/web/app/components/workflow/collaboration/types/collaboration.ts b/web/app/components/workflow/collaboration/types/collaboration.ts index beb9ad2648..46b98cd493 100644 --- a/web/app/components/workflow/collaboration/types/collaboration.ts +++ b/web/app/components/workflow/collaboration/types/collaboration.ts @@ -50,7 +50,7 @@ export type GraphSyncData = { } export type CollaborationUpdate = { - type: 'mouseMove' | 'graphUpdate' | 'userJoin' | 'userLeave' + type: 'mouse_move' | 'vars_and_features_update' | 'sync_request' | 'app_state_update' | 'mcp_server_update' | 'workflow_update' | 'comments_update' | 'node_panel_presence' userId: string data: any timestamp: number diff --git a/web/app/components/workflow/features.tsx b/web/app/components/workflow/features.tsx index 6ab7bf1417..f15e8fb8d8 100644 --- a/web/app/components/workflow/features.tsx +++ b/web/app/components/workflow/features.tsx @@ -70,7 +70,7 @@ const Features = () => { const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'varsAndFeaturesUpdate', + type: 'vars_and_features_update', }) } } diff --git a/web/app/components/workflow/panel/chat-variable-panel/index.tsx b/web/app/components/workflow/panel/chat-variable-panel/index.tsx index 5b681311fa..b7c654066b 100644 --- a/web/app/components/workflow/panel/chat-variable-panel/index.tsx +++ b/web/app/components/workflow/panel/chat-variable-panel/index.tsx @@ -86,7 +86,7 @@ const ChatVariablePanel = () => { const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'varsAndFeaturesUpdate', + type: 'vars_and_features_update', }) } @@ -128,7 +128,7 @@ const ChatVariablePanel = () => { const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'varsAndFeaturesUpdate', + type: 'vars_and_features_update', }) } @@ -169,7 +169,7 @@ const ChatVariablePanel = () => { const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'varsAndFeaturesUpdate', + type: 'vars_and_features_update', }) } diff --git a/web/app/components/workflow/panel/env-panel/index.tsx b/web/app/components/workflow/panel/env-panel/index.tsx index d90269987b..1d6a7fff11 100644 --- a/web/app/components/workflow/panel/env-panel/index.tsx +++ b/web/app/components/workflow/panel/env-panel/index.tsx @@ -82,7 +82,7 @@ const EnvPanel = () => { const socket = webSocketClient.getSocket(appId) if (socket?.connected) { socket.emit('collaboration_event', { - type: 'varsAndFeaturesUpdate', + type: 'vars_and_features_update', timestamp: Date.now(), }) } @@ -137,7 +137,7 @@ const EnvPanel = () => { const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'varsAndFeaturesUpdate', + type: 'vars_and_features_update', }) } @@ -203,7 +203,7 @@ const EnvPanel = () => { const socket = webSocketClient.getSocket(appId) if (socket) { socket.emit('collaboration_event', { - type: 'varsAndFeaturesUpdate', + type: 'vars_and_features_update', }) }