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

@@ -3,9 +3,9 @@
<head>
<meta charset="UTF-8">
<meta name="generator" content="Docusaurus v3.9.2">
<title data-rh="true">Page Not Found | CCW Help Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://ccw.dev/docs/404.html"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" property="og:locale:alternate" content="zh"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Page Not Found | CCW Help Documentation"><link data-rh="true" rel="icon" href="/docs/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://ccw.dev/docs/404.html"><link data-rh="true" rel="alternate" href="https://ccw.dev/docs/404.html" hreflang="en"><link data-rh="true" rel="alternate" href="https://ccw.dev/docs/zh/404.html" hreflang="zh"><link data-rh="true" rel="alternate" href="https://ccw.dev/docs/404.html" hreflang="x-default"><link rel="stylesheet" href="/docs/assets/css/styles.43777f0a.css">
<script src="/docs/assets/js/runtime~main.cbfbf29d.js" defer="defer"></script>
<script src="/docs/assets/js/main.6c671094.js" defer="defer"></script>
<title data-rh="true">Page Not Found | CCW Help Documentation</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="http://localhost:3001/docs/404.html"><meta data-rh="true" property="og:locale" content="en"><meta data-rh="true" property="og:locale:alternate" content="zh"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_tag" content="default"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:docusaurus_tag" content="default"><meta data-rh="true" property="og:title" content="Page Not Found | CCW Help Documentation"><link data-rh="true" rel="icon" href="/docs/img/favicon.ico"><link data-rh="true" rel="canonical" href="http://localhost:3001/docs/404.html"><link data-rh="true" rel="alternate" href="http://localhost:3001/docs/404.html" hreflang="en"><link data-rh="true" rel="alternate" href="http://localhost:3001/docs/zh/404.html" hreflang="zh"><link data-rh="true" rel="alternate" href="http://localhost:3001/docs/404.html" hreflang="x-default"><link rel="stylesheet" href="/docs/assets/css/styles.43777f0a.css">
<script src="/docs/assets/js/runtime~main.0220a52f.js" defer="defer"></script>
<script src="/docs/assets/js/main.d2194b90.js" defer="defer"></script>
</head>
<body class="navigation-with-keyboard">
<svg style="display: none;"><defs>