feat: add CLI Command Node and Prompt Node components for orchestrator

- Implemented CliCommandNode component for executing CLI tools with AI models.
- Implemented PromptNode component for constructing AI prompts with context.
- Added styling for mode and tool badges in both components.
- Enhanced user experience with command and argument previews, execution status, and error handling.

test: add comprehensive tests for ask_question tool

- Created direct test for ask_question tool execution.
- Developed end-to-end tests to validate ask_question tool integration with WebSocket and A2UI surfaces.
- Implemented simple and integrated WebSocket tests to ensure proper message handling and surface reception.
- Added tool registration test to verify ask_question tool is correctly registered.

chore: add WebSocket listener and simulation tests

- Added WebSocket listener for A2UI surfaces to facilitate testing.
- Implemented frontend simulation test to validate complete flow from backend to frontend.
- Created various test scripts to ensure robust testing of ask_question tool functionality.
This commit is contained in:
catlog22
2026-02-03 23:10:36 +08:00
parent a806d70d9b
commit c6093ef741
134 changed files with 6392 additions and 634 deletions

View File

@@ -334,7 +334,7 @@ export async function execute(params: AskQuestionParams): Promise<ToolResult<Ask
});
// Send A2UI surface via WebSocket to frontend
const a2uiSurface = createA2UISurface(question, surfaceId);
const a2uiSurface = generateQuestionSurface(question, surfaceId);
a2uiWebSocketHandler.sendSurface(a2uiSurface.surfaceUpdate);
// Wait for answer
@@ -474,3 +474,11 @@ export const schema: ToolSchema = {
required: ['question'],
},
};
/**
* Tool handler for MCP integration
* Wraps the execute function to match the expected handler signature
*/
export async function handler(params: Record<string, unknown>): Promise<ToolResult<AskQuestionResult>> {
return execute(params as AskQuestionParams);
}