Enhance WebSocket message handling to support new message types and improve error reporting
This commit is contained in:
@@ -133,9 +133,11 @@ var isValid = function(s) {
|
|||||||
socket.onmessage = (event) => {
|
socket.onmessage = (event) => {
|
||||||
try {
|
try {
|
||||||
const message = JSON.parse(event.data);
|
const message = JSON.parse(event.data);
|
||||||
|
console.log('WebSocket message received:', message);
|
||||||
|
|
||||||
switch (message.type) {
|
switch (message.type) {
|
||||||
case 'output':
|
case 'output':
|
||||||
|
// Handle output message based on the format seen in the screenshot
|
||||||
setTerminalOutput(prev => [
|
setTerminalOutput(prev => [
|
||||||
...prev,
|
...prev,
|
||||||
{
|
{
|
||||||
@@ -145,21 +147,47 @@ var isValid = function(s) {
|
|||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'status':
|
case 'input_prompt':
|
||||||
|
// Handle input prompt message (e.g., "Enter your name:")
|
||||||
setTerminalOutput(prev => [
|
setTerminalOutput(prev => [
|
||||||
...prev,
|
...prev,
|
||||||
{ type: 'system', content: `Status: ${message.content.status}` }
|
{ type: 'output', content: message.content }
|
||||||
|
]);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'status':
|
||||||
|
let statusText = '';
|
||||||
|
if (typeof message.content === 'object') {
|
||||||
|
statusText = `Status: ${message.content.status}`;
|
||||||
|
} else {
|
||||||
|
statusText = `Status: ${message.content}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
setTerminalOutput(prev => [
|
||||||
|
...prev,
|
||||||
|
{ type: 'system', content: statusText }
|
||||||
]);
|
]);
|
||||||
|
|
||||||
if (message.content.status === 'completed' || message.content.status === 'failed') {
|
// If status contains "completed" or "failed", stop running
|
||||||
|
if ((typeof message.content === 'string' &&
|
||||||
|
(message.content.includes('completed') || message.content.includes('failed'))) ||
|
||||||
|
(message.content.status &&
|
||||||
|
(message.content.status.includes('completed') || message.content.status.includes('failed')))) {
|
||||||
setIsRunning(false);
|
setIsRunning(false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'error':
|
case 'error':
|
||||||
|
let errorContent = '';
|
||||||
|
if (typeof message.content === 'object' && message.content.message) {
|
||||||
|
errorContent = message.content.message;
|
||||||
|
} else {
|
||||||
|
errorContent = String(message.content);
|
||||||
|
}
|
||||||
|
|
||||||
setTerminalOutput(prev => [
|
setTerminalOutput(prev => [
|
||||||
...prev,
|
...prev,
|
||||||
{ type: 'error', content: message.content.message }
|
{ type: 'error', content: errorContent }
|
||||||
]);
|
]);
|
||||||
setIsRunning(false);
|
setIsRunning(false);
|
||||||
break;
|
break;
|
||||||
@@ -167,12 +195,19 @@ var isValid = function(s) {
|
|||||||
case 'system':
|
case 'system':
|
||||||
setTerminalOutput(prev => [
|
setTerminalOutput(prev => [
|
||||||
...prev,
|
...prev,
|
||||||
{ type: 'system', content: message.content }
|
{ type: 'system', content: String(message.content) }
|
||||||
]);
|
]);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
// Handle any other message types or direct string content
|
||||||
console.log('Unknown message type:', message);
|
console.log('Unknown message type:', message);
|
||||||
|
if (typeof message === 'object') {
|
||||||
|
setTerminalOutput(prev => [
|
||||||
|
...prev,
|
||||||
|
{ type: 'output', content: JSON.stringify(message) }
|
||||||
|
]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error parsing WebSocket message:', error);
|
console.error('Error parsing WebSocket message:', error);
|
||||||
@@ -424,10 +459,10 @@ var isValid = function(s) {
|
|||||||
onKeyPress={(e) => {
|
onKeyPress={(e) => {
|
||||||
if (e.key === 'Enter' && activeSocket) {
|
if (e.key === 'Enter' && activeSocket) {
|
||||||
const input = e.target.value;
|
const input = e.target.value;
|
||||||
// Send input to WebSocket
|
// Send input to WebSocket with the correct format
|
||||||
activeSocket.send(JSON.stringify({
|
activeSocket.send(JSON.stringify({
|
||||||
type: 'input',
|
"type": "input",
|
||||||
content: { text: input }
|
"content": input
|
||||||
}));
|
}));
|
||||||
|
|
||||||
// Add input to terminal output
|
// Add input to terminal output
|
||||||
|
|||||||
Reference in New Issue
Block a user