| 86 | |
| 87 | // Handle incoming WebSocket messages |
| 88 | function handleWebSocketMessage(data: any) { |
| 89 | const { type } = data; |
| 90 | |
| 91 | switch (type) { |
| 92 | case 'state_update': |
| 93 | // Update pipeline state |
| 94 | if (data.state) { |
| 95 | const pipelineStore = usePipelineStore.getState(); |
| 96 | const currentPipeline = pipelineStore.currentPipeline; |
| 97 | if (currentPipeline) { |
| 98 | pipelineStore.updatePipeline(currentPipeline.id, data.state); |
| 99 | } |
| 100 | } |
| 101 | break; |
| 102 | |
| 103 | case 'workflow_update': |
| 104 | // Update workflow state |
| 105 | if (data.workflow) { |
| 106 | const { useWorkflowStore } = require('./workflowStore'); |
| 107 | const workflowStore = useWorkflowStore.getState(); |
| 108 | workflowStore.setWorkflow(data.workflow); |
| 109 | } |
| 110 | break; |
| 111 | |
| 112 | case 'workflow_state': |
| 113 | // Set initial workflow state |
| 114 | if (data.workflow) { |
| 115 | const { useWorkflowStore } = require('./workflowStore'); |
| 116 | const workflowStore = useWorkflowStore.getState(); |
| 117 | workflowStore.setWorkflow(data.workflow); |
| 118 | } |
| 119 | // Notify that state was received (even if null) |
| 120 | window.dispatchEvent(new CustomEvent('workflow-state-received')); |
| 121 | break; |
| 122 | |
| 123 | case 'approval_request': |
| 124 | // Handle approval requests |
| 125 | if (data.approval) { |
| 126 | const { useWorkflowStore } = require('./workflowStore'); |
| 127 | const workflowStore = useWorkflowStore.getState(); |
| 128 | // Trigger UI to show approval dialog |
| 129 | window.dispatchEvent(new CustomEvent('approval-request', { detail: data.approval })); |
| 130 | } |
| 131 | break; |
| 132 | |
| 133 | case 'execution_update': |
| 134 | // Handle execution updates |
| 135 | console.log('Execution update:', data); |
| 136 | break; |
| 137 | |
| 138 | case 'error': |
| 139 | // Handle error messages |
| 140 | console.error('WebSocket error:', data.message); |
| 141 | // Notify components about the error |
| 142 | window.dispatchEvent(new CustomEvent('websocket-error', { detail: data })); |
| 143 | break; |
| 144 | |
| 145 | case 'response': |