mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-13 02:41:50 +08:00
feat(websocket): integrate A2UI message handling and answer callback registration
This commit is contained in:
@@ -58,6 +58,23 @@ export class A2UIWebSocketHandler {
|
||||
timestamp: number;
|
||||
}>();
|
||||
|
||||
private answerCallback?: (answer: QuestionAnswer) => boolean;
|
||||
|
||||
/**
|
||||
* Register callback for handling question answers
|
||||
* @param callback - Function to handle incoming answers
|
||||
*/
|
||||
registerAnswerCallback(callback: (answer: QuestionAnswer) => boolean): void {
|
||||
this.answerCallback = callback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the registered answer callback
|
||||
*/
|
||||
getAnswerCallback(): ((answer: QuestionAnswer) => boolean) | undefined {
|
||||
return this.answerCallback;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send A2UI surface to all connected clients
|
||||
* @param surfaceUpdate - A2UI surface update to send
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
import { createHash } from 'crypto';
|
||||
import type { IncomingMessage } from 'http';
|
||||
import type { Duplex } from 'stream';
|
||||
import { a2uiWebSocketHandler, handleA2UIMessage } from './a2ui/A2UIWebSocketHandler.js';
|
||||
import { handleAnswer } from '../tools/ask-question.js';
|
||||
|
||||
// WebSocket clients for real-time notifications
|
||||
export const wsClients = new Set<Duplex>();
|
||||
@@ -174,6 +176,11 @@ export function handleWebSocketUpgrade(req: IncomingMessage, socket: Duplex, _he
|
||||
case 0x1: // Text frame
|
||||
if (payload) {
|
||||
console.log('[WS] Received:', payload);
|
||||
// Try to handle as A2UI message
|
||||
const handledAsA2UI = handleA2UIMessage(payload, a2uiWebSocketHandler, handleAnswer);
|
||||
if (handledAsA2UI) {
|
||||
console.log('[WS] Handled as A2UI message');
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x8: // Close frame
|
||||
|
||||
Reference in New Issue
Block a user