mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-28 09:23:08 +08:00
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:
@@ -61,29 +61,126 @@
|
||||
"updatedAt": "Updated",
|
||||
"solutions": "{count, plural, one {solution} other {solutions}}"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Issue Details",
|
||||
"tabs": {
|
||||
"overview": "Overview",
|
||||
"solutions": "Solutions",
|
||||
"history": "History",
|
||||
"json": "JSON"
|
||||
},
|
||||
"overview": {
|
||||
"title": "Title",
|
||||
"status": "Status",
|
||||
"priority": "Priority",
|
||||
"createdAt": "Created At",
|
||||
"updatedAt": "Updated At",
|
||||
"context": "Context",
|
||||
"labels": "Labels",
|
||||
"assignee": "Assignee"
|
||||
},
|
||||
"solutions": {
|
||||
"title": "Solutions",
|
||||
"empty": "No solutions yet",
|
||||
"addSolution": "Add Solution",
|
||||
"boundSolution": "Bound Solution"
|
||||
},
|
||||
"history": {
|
||||
"title": "History",
|
||||
"empty": "No history yet"
|
||||
}
|
||||
},
|
||||
"queue": {
|
||||
"title": "Queue",
|
||||
"pageTitle": "Issue Queue",
|
||||
"description": "Manage issue execution queue with execution groups",
|
||||
"status": {
|
||||
"pending": "Pending",
|
||||
"ready": "Ready",
|
||||
"executing": "Executing",
|
||||
"completed": "Completed",
|
||||
"failed": "Failed",
|
||||
"blocked": "Blocked",
|
||||
"active": "Active",
|
||||
"inactive": "Inactive"
|
||||
},
|
||||
"stats": {
|
||||
"totalItems": "Total Items",
|
||||
"groups": "Groups",
|
||||
"tasks": "Tasks",
|
||||
"solutions": "Solutions"
|
||||
"solutions": "Solutions",
|
||||
"items": "Items",
|
||||
"executionGroups": "Execution Groups"
|
||||
},
|
||||
"actions": {
|
||||
"activate": "Activate",
|
||||
"deactivate": "Deactivate",
|
||||
"delete": "Delete",
|
||||
"merge": "Merge",
|
||||
"split": "Split",
|
||||
"confirmDelete": "Are you sure you want to delete this queue?"
|
||||
},
|
||||
"executionGroup": "Execution Group",
|
||||
"executionGroups": "Execution Groups",
|
||||
"parallelGroup": "Parallel Group",
|
||||
"sequentialGroup": "Sequential Group",
|
||||
"items": "items",
|
||||
"itemCount": "{count} items",
|
||||
"groups": "groups",
|
||||
"parallel": "Parallel",
|
||||
"sequential": "Sequential",
|
||||
"emptyState": "No queue data available",
|
||||
"empty": "No data",
|
||||
"conflicts": "Conflicts detected in queue",
|
||||
"noQueueData": "No queue data"
|
||||
"noQueueData": "No queue data",
|
||||
"error": {
|
||||
"title": "Load Failed",
|
||||
"message": "Unable to load queue data, please try again later"
|
||||
},
|
||||
"conflicts": {
|
||||
"title": "Queue Conflicts",
|
||||
"description": "conflicts"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Delete Queue",
|
||||
"description": "Are you sure you want to delete this queue? This action cannot be undone."
|
||||
},
|
||||
"mergeDialog": {
|
||||
"title": "Merge Queues",
|
||||
"targetQueueLabel": "Target Queue ID",
|
||||
"targetQueuePlaceholder": "Enter the queue ID to merge into"
|
||||
},
|
||||
"splitDialog": {
|
||||
"title": "Split Queue",
|
||||
"selected": "{count}/{total} selected",
|
||||
"selectAll": "Select All",
|
||||
"clearAll": "Clear All",
|
||||
"noSelection": "Please select items to split",
|
||||
"cannotSplitAll": "Cannot split all items, source queue must retain at least one item"
|
||||
}
|
||||
},
|
||||
"solution": {
|
||||
"issue": "Issue",
|
||||
"solution": "Solution",
|
||||
"shortIssue": "Issue",
|
||||
"shortSolution": "Sol",
|
||||
"tabs": {
|
||||
"overview": "Overview",
|
||||
"tasks": "Tasks",
|
||||
"json": "JSON"
|
||||
},
|
||||
"overview": {
|
||||
"executionInfo": "Execution Info",
|
||||
"executionOrder": "Execution Order",
|
||||
"semanticPriority": "Semantic Priority",
|
||||
"group": "Execution Group",
|
||||
"taskCount": "Task Count",
|
||||
"dependencies": "Dependencies",
|
||||
"filesTouched": "Files Touched"
|
||||
},
|
||||
"tasks": {
|
||||
"comingSoon": "Task list coming soon"
|
||||
}
|
||||
},
|
||||
"discovery": {
|
||||
"title": "Discovery",
|
||||
|
||||
196
ccw/frontend/src/locales/en/issues.json.bak
Normal file
196
ccw/frontend/src/locales/en/issues.json.bak
Normal file
@@ -0,0 +1,196 @@
|
||||
{
|
||||
"title": "Issues",
|
||||
"description": "Track and manage issues",
|
||||
"status": {
|
||||
"open": "Open",
|
||||
"inProgress": "In Progress",
|
||||
"resolved": "Resolved",
|
||||
"closed": "Closed",
|
||||
"completed": "Completed"
|
||||
},
|
||||
"priority": {
|
||||
"low": "Low",
|
||||
"medium": "Medium",
|
||||
"high": "High",
|
||||
"critical": "Critical"
|
||||
},
|
||||
"actions": {
|
||||
"create": "New Issue",
|
||||
"edit": "Edit",
|
||||
"delete": "Delete",
|
||||
"viewDetails": "View Details",
|
||||
"changeStatus": "Change Status",
|
||||
"changePriority": "Change Priority",
|
||||
"startProgress": "Start Progress",
|
||||
"markResolved": "Mark Resolved",
|
||||
"github": "Pull from GitHub"
|
||||
},
|
||||
"filters": {
|
||||
"all": "All",
|
||||
"open": "Open",
|
||||
"inProgress": "In Progress",
|
||||
"resolved": "Resolved",
|
||||
"closed": "Closed",
|
||||
"byPriority": "By Priority"
|
||||
},
|
||||
"emptyState": {
|
||||
"title": "No Issues Found",
|
||||
"message": "No issues match your current filter.",
|
||||
"createFirst": "Create your first issue to get started"
|
||||
},
|
||||
"createDialog": {
|
||||
"title": "Create New Issue",
|
||||
"labels": {
|
||||
"title": "Title",
|
||||
"context": "Context",
|
||||
"priority": "Priority"
|
||||
},
|
||||
"placeholders": {
|
||||
"title": "Enter issue title...",
|
||||
"context": "Describe the issue context..."
|
||||
},
|
||||
"buttons": {
|
||||
"create": "Create",
|
||||
"cancel": "Cancel",
|
||||
"creating": "Creating..."
|
||||
}
|
||||
},
|
||||
"card": {
|
||||
"id": "ID",
|
||||
"createdAt": "Created",
|
||||
"updatedAt": "Updated",
|
||||
"solutions": "{count, plural, one {solution} other {solutions}}"
|
||||
},
|
||||
"queue": {
|
||||
"title": "Queue",
|
||||
"pageTitle": "Issue Queue",
|
||||
"description": "Manage issue execution queue with execution groups",
|
||||
"stats": {
|
||||
"totalItems": "Total Items",
|
||||
"groups": "Groups",
|
||||
"tasks": "Tasks",
|
||||
"solutions": "Solutions"
|
||||
},
|
||||
"actions": {
|
||||
"activate": "Activate",
|
||||
"deactivate": "Deactivate",
|
||||
"delete": "Delete",
|
||||
"merge": "Merge",
|
||||
"confirmDelete": "Are you sure you want to delete this queue?"
|
||||
},
|
||||
"executionGroup": "Execution Group",
|
||||
"parallel": "Parallel",
|
||||
"sequential": "Sequential",
|
||||
"emptyState": "No queue data available",
|
||||
"conflicts": "Conflicts detected in queue",
|
||||
"noQueueData": "No queue data"
|
||||
},
|
||||
"discovery": {
|
||||
"title": "Discovery",
|
||||
"pageTitle": "Issue Discovery",
|
||||
"description": "View and manage issue discovery sessions",
|
||||
"totalSessions": "Total Sessions",
|
||||
"completedSessions": "Completed",
|
||||
"runningSessions": "Running",
|
||||
"totalFindings": "Findings",
|
||||
"sessionList": "Session List",
|
||||
"noSessions": "No sessions found",
|
||||
"noSessionsDescription": "Start a new discovery session to begin",
|
||||
"findingsDetail": "Findings Detail",
|
||||
"selectSession": "Select a session to view findings",
|
||||
"sessionId": "Session ID",
|
||||
"name": "Name",
|
||||
"status": "Status",
|
||||
"createdAt": "Created At",
|
||||
"completedAt": "Completed At",
|
||||
"progress": "Progress",
|
||||
"findingsCount": "Findings Count",
|
||||
"export": "Export JSON",
|
||||
"exportSelected": "Export Selected ({count})",
|
||||
"exporting": "Exporting...",
|
||||
"exportAsIssues": "Export as Issues",
|
||||
"severityBreakdown": "Severity Breakdown",
|
||||
"typeBreakdown": "Type Breakdown",
|
||||
"tabFindings": "Findings",
|
||||
"tabProgress": "Progress",
|
||||
"tabInfo": "Session Info",
|
||||
"stats": {
|
||||
"totalSessions": "Total Sessions",
|
||||
"completed": "Completed",
|
||||
"running": "Running",
|
||||
"findings": "Findings"
|
||||
},
|
||||
"session": {
|
||||
"status": {
|
||||
"running": "Running",
|
||||
"completed": "Completed",
|
||||
"failed": "Failed"
|
||||
},
|
||||
"findings": "{count} findings",
|
||||
"startedAt": "Started"
|
||||
},
|
||||
"findings": {
|
||||
"title": "Findings",
|
||||
"filters": {
|
||||
"severity": "Severity",
|
||||
"type": "Type",
|
||||
"search": "Search findings..."
|
||||
},
|
||||
"severity": {
|
||||
"all": "All Severities",
|
||||
"critical": "Critical",
|
||||
"high": "High",
|
||||
"medium": "Medium",
|
||||
"low": "Low"
|
||||
},
|
||||
"type": {
|
||||
"all": "All Types"
|
||||
},
|
||||
"exportedStatus": {
|
||||
"all": "All Export Status",
|
||||
"exported": "Exported",
|
||||
"notExported": "Not Exported"
|
||||
},
|
||||
"issueStatus": {
|
||||
"all": "All Issue Status",
|
||||
"hasIssue": "Has Issue",
|
||||
"noIssue": "No Issue"
|
||||
},
|
||||
"noFindings": "No findings found",
|
||||
"noFindingsDescription": "No matching findings found",
|
||||
"searchPlaceholder": "Search findings...",
|
||||
"filterBySeverity": "Filter by severity",
|
||||
"filterByType": "Filter by type",
|
||||
"filterByExported": "Filter by export status",
|
||||
"filterByIssue": "Filter by issue link",
|
||||
"allSeverities": "All severities",
|
||||
"allTypes": "All types",
|
||||
"showingCount": "Showing {count} findings",
|
||||
"exported": "Exported",
|
||||
"hasIssue": "Linked",
|
||||
"export": "Export",
|
||||
"selectAll": "Select All",
|
||||
"deselectAll": "Deselect All"
|
||||
},
|
||||
"tabs": {
|
||||
"findings": "Findings",
|
||||
"progress": "Progress",
|
||||
"info": "Session Info"
|
||||
},
|
||||
"emptyState": "No discovery sessions found",
|
||||
"noSessionSelected": "Select a session to view findings",
|
||||
"actions": {
|
||||
"export": "Export Findings",
|
||||
"refresh": "Refresh"
|
||||
}
|
||||
},
|
||||
"hub": {
|
||||
"title": "Issue Hub",
|
||||
"description": "Unified management for issues, queues, and discoveries",
|
||||
"tabs": {
|
||||
"issues": "Issues",
|
||||
"queue": "Queue",
|
||||
"discovery": "Discovery"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,11 @@
|
||||
{
|
||||
"title": "MCP Servers",
|
||||
"description": "Manage Model Context Protocol (MCP) servers for cross-CLI integration",
|
||||
"tabs": {
|
||||
"templates": "Templates",
|
||||
"servers": "Servers",
|
||||
"crossCli": "Cross-CLI"
|
||||
},
|
||||
"mode": {
|
||||
"claude": "Claude",
|
||||
"codex": "Codex"
|
||||
@@ -25,7 +30,26 @@
|
||||
"codex": {
|
||||
"configPath": "Config Path",
|
||||
"readOnly": "Read-only",
|
||||
"readOnlyNotice": "Codex MCP servers are managed via config.toml and cannot be edited here."
|
||||
"readOnlyNotice": "Codex MCP servers are managed via config.toml and cannot be edited here.",
|
||||
"editable": "Editable",
|
||||
"editableNotice": "This server can be edited. Changes will be saved to config.toml.",
|
||||
"deleteConfirm": {
|
||||
"title": "Remove Server \"{name}\"?",
|
||||
"description": "This will remove \"{name}\" from your Codex config.toml file. This action cannot be undone.",
|
||||
"confirm": "Remove Server",
|
||||
"cancel": "Cancel",
|
||||
"deleting": "Removing..."
|
||||
}
|
||||
},
|
||||
"windows": {
|
||||
"title": "Windows Compatibility",
|
||||
"description": "Some MCP server commands require Windows-specific configuration for proper execution.",
|
||||
"missingCount": "{count} missing command(s)",
|
||||
"checking": "Checking Windows compatibility...",
|
||||
"fixing": "Applying Windows compatibility fix...",
|
||||
"autoFix": "Auto-Fix Commands",
|
||||
"autoFixHint": "This will wrap commands with 'cmd /c' prefix for Windows compatibility.",
|
||||
"install": "Download"
|
||||
},
|
||||
"filters": {
|
||||
"all": "All",
|
||||
@@ -126,5 +150,148 @@
|
||||
"saveConfig": "Save Configuration",
|
||||
"saving": "Saving..."
|
||||
}
|
||||
},
|
||||
"recommended": {
|
||||
"title": "Recommended Servers",
|
||||
"description": "Quickly install popular MCP servers with one click",
|
||||
"servers": {
|
||||
"ace": {
|
||||
"name": "ACE Tool",
|
||||
"description": "Advanced code search and context engine for intelligent code discovery",
|
||||
"command": "mcp__ace-tool__search_context",
|
||||
"install": "Install ACE",
|
||||
"installing": "Installing..."
|
||||
},
|
||||
"chrome": {
|
||||
"name": "Chrome DevTools",
|
||||
"description": "Browser automation and debugging tools for web development",
|
||||
"command": "mcp__chrome-devtools",
|
||||
"install": "Install Chrome",
|
||||
"installing": "Installing..."
|
||||
},
|
||||
"exa": {
|
||||
"name": "Exa Search",
|
||||
"description": "AI-powered web search with real-time crawling capabilities",
|
||||
"command": "mcp__exa__search",
|
||||
"install": "Install Exa",
|
||||
"installing": "Installing..."
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"install": "Install",
|
||||
"installing": "Installing...",
|
||||
"installed": "Installed",
|
||||
"viewAll": "View All Servers"
|
||||
}
|
||||
},
|
||||
"configType": {
|
||||
"label": "Config Format",
|
||||
"mcpJson": ".mcp.json",
|
||||
"claudeJson": ".claude.json",
|
||||
"switchWarning": "Switching config format will not migrate existing servers. You'll need to reconfigure servers in the new format.",
|
||||
"switchConfirm": "Switch Config Format",
|
||||
"switchCancel": "Keep Current"
|
||||
},
|
||||
"templates": {
|
||||
"title": "Templates",
|
||||
"description": "Reusable MCP server configuration templates",
|
||||
"searchPlaceholder": "Search templates by name or description...",
|
||||
"filter": {
|
||||
"allCategories": "All Categories"
|
||||
},
|
||||
"actions": {
|
||||
"install": "Install Template",
|
||||
"delete": "Delete Template",
|
||||
"saveAsTemplate": "Save as Template"
|
||||
},
|
||||
"loading": "Loading templates...",
|
||||
"empty": {
|
||||
"title": "No Templates Found",
|
||||
"message": "Create your first template or install templates from the community",
|
||||
"createFirst": "Create Your First Template"
|
||||
},
|
||||
"saveDialog": {
|
||||
"title": "Save as Template",
|
||||
"name": "Template Name",
|
||||
"namePlaceholder": "e.g., My Python MCP Server",
|
||||
"category": "Category",
|
||||
"categoryPlaceholder": "Select a category",
|
||||
"description": "Description",
|
||||
"descriptionPlaceholder": "Brief description of what this template does...",
|
||||
"validation": {
|
||||
"nameRequired": "Template name is required"
|
||||
},
|
||||
"save": "Save Template",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"deleteDialog": {
|
||||
"title": "Delete Template",
|
||||
"message": "Are you sure you want to delete the template \"{name}\"? This action cannot be undone.",
|
||||
"delete": "Delete",
|
||||
"deleting": "Deleting...",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"categories": {
|
||||
"stdio": "STDIO",
|
||||
"sse": "SSE",
|
||||
"language": "Language",
|
||||
"official": "Official",
|
||||
"custom": "Custom"
|
||||
},
|
||||
"feedback": {
|
||||
"installSuccess": "Template installed successfully",
|
||||
"installError": "Failed to install template",
|
||||
"deleteSuccess": "Template deleted successfully",
|
||||
"deleteError": "Failed to delete template",
|
||||
"saveSuccess": "Template saved successfully",
|
||||
"saveError": "Failed to save template"
|
||||
}
|
||||
},
|
||||
"crossCli": {
|
||||
"button": "Cross-CLI Copy",
|
||||
"title": "Copy MCP Servers Between CLIs",
|
||||
"selectServers": "Select servers to copy from {source}",
|
||||
"selectServersHint": "Choose servers to copy. Configuration will be transformed for the target CLI format.",
|
||||
"noServers": "No servers available in current configuration",
|
||||
"selectedCount": "{count} server(s) selected",
|
||||
"copying": "Copying...",
|
||||
"copyButton": "Copy to {target}"
|
||||
},
|
||||
"allProjects": {
|
||||
"title": "All Projects",
|
||||
"name": "Project Name",
|
||||
"servers": "Servers",
|
||||
"lastModified": "Last Modified",
|
||||
"actions": "Actions",
|
||||
"current": "Current",
|
||||
"openNewWindow": "Open in new window",
|
||||
"empty": "No projects found",
|
||||
"summary": "Showing {count} project(s)"
|
||||
},
|
||||
"otherProjects": {
|
||||
"title": "Other Projects",
|
||||
"description": "Discover and import MCP servers from your other projects",
|
||||
"selectProject": "Select a project",
|
||||
"selectProjectPlaceholder": "Choose a project...",
|
||||
"noProjects": "No other projects available",
|
||||
"noServers": "No MCP servers found in {project}",
|
||||
"import": "Import",
|
||||
"hint": "Imported servers will be added to your current project configuration"
|
||||
},
|
||||
"installCmd": {
|
||||
"title": "Installation Command",
|
||||
"cliCommand": "CLI Command",
|
||||
"cliCommandHint": "Run this command in your terminal to install the server",
|
||||
"jsonConfig": "JSON Configuration",
|
||||
"jsonConfigHint": "Add this to your {filename} file",
|
||||
"envVars": "Environment Variables",
|
||||
"steps": "Installation Steps",
|
||||
"step1": "Run the CLI command above in your terminal",
|
||||
"step2": "Or manually add the JSON config to your configuration file",
|
||||
"step3": "Restart your CLI to load the new server"
|
||||
},
|
||||
"enterprise": {
|
||||
"label": "Enterprise",
|
||||
"tooltip": "Enterprise MCP server"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,6 +143,18 @@
|
||||
"empty": "No nodes available",
|
||||
"clear": "Clear all"
|
||||
},
|
||||
"contextAssembler": {
|
||||
"title": "Context Template",
|
||||
"helpTitle": "Context Assembly Syntax",
|
||||
"helpSyntax1": "Reference node output: {{node:node-id}}",
|
||||
"helpSyntax2": "Reference variable: {{var:variableName}}",
|
||||
"helpSyntax3": "Combine multiple sources in custom format",
|
||||
"addNode": "Add Node Reference",
|
||||
"selectNode": "Select a node...",
|
||||
"addVariable": "Add Variable Reference",
|
||||
"selectVariable": "Select a variable...",
|
||||
"manualEdit": "Custom Template (use {{node:id}} or {{var:name}})"
|
||||
},
|
||||
"propertyPanel": {
|
||||
"title": "Properties",
|
||||
"open": "Open properties panel",
|
||||
@@ -160,7 +172,9 @@
|
||||
"variableName": "variableName",
|
||||
"condition": "e.g., result.success === true",
|
||||
"trueLabel": "True",
|
||||
"falseLabel": "False"
|
||||
"falseLabel": "False",
|
||||
"contextTemplate": "Template with {variable} placeholders",
|
||||
"promptText": "Enter your prompt here..."
|
||||
},
|
||||
"labels": {
|
||||
"label": "Label",
|
||||
@@ -179,7 +193,13 @@
|
||||
"trueLabel": "True Label",
|
||||
"falseLabel": "False Label",
|
||||
"joinMode": "Join Mode",
|
||||
"failFast": "Fail fast (stop all branches on first error)"
|
||||
"failFast": "Fail fast (stop all branches on first error)",
|
||||
"tool": "CLI Tool",
|
||||
"mode": "Mode",
|
||||
"promptType": "Prompt Type",
|
||||
"sourceNodes": "Source Nodes",
|
||||
"contextTemplate": "Context Template",
|
||||
"promptText": "Prompt Text"
|
||||
},
|
||||
"options": {
|
||||
"modeMainprocess": "Main Process",
|
||||
@@ -195,7 +215,18 @@
|
||||
"operationMove": "Move",
|
||||
"joinModeAll": "Wait for all branches",
|
||||
"joinModeAny": "Complete when any branch finishes",
|
||||
"joinModeNone": "No synchronization"
|
||||
"joinModeNone": "No synchronization",
|
||||
"toolGemini": "Gemini",
|
||||
"toolQwen": "Qwen",
|
||||
"toolCodex": "Codex",
|
||||
"modeAnalysis": "Analysis",
|
||||
"modeWrite": "Write",
|
||||
"modeReview": "Review",
|
||||
"promptTypeOrganize": "Organize",
|
||||
"promptTypeRefine": "Refine",
|
||||
"promptTypeSummarize": "Summarize",
|
||||
"promptTypeTransform": "Transform",
|
||||
"promptTypeCustom": "Custom"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user