feat: add CCW Loop System for automated iterative workflow execution

Implements a complete loop execution system with multi-loop parallel support,
dashboard monitoring, and comprehensive security validation.

Core features:
- Loop orchestration engine (loop-manager, loop-state-manager)
- Multi-loop parallel execution with independent state management
- REST API endpoints for loop control (pause, resume, stop, retry)
- WebSocket real-time status updates
- Dashboard Loop Monitor view with live updates
- Security: path traversal protection and sandboxed JavaScript evaluation

Test coverage:
- 42 comprehensive tests covering multi-loop, API, WebSocket, security
- Security validation for success_condition injection attacks
- Edge case handling and end-to-end workflow tests
This commit is contained in:
catlog22
2026-01-21 22:55:24 +08:00
parent 64e064e775
commit d9f1d14d5e
28 changed files with 5912 additions and 17 deletions

View File

@@ -87,6 +87,10 @@ const i18n = {
'nav.liteFix': 'Lite Fix',
'nav.multiCliPlan': 'Multi-CLI Plan',
// Sidebar - Loops section
'nav.loops': 'Loops',
'nav.loopMonitor': 'Monitor',
// Sidebar - MCP section
'nav.mcpServers': 'MCP Servers',
'nav.manage': 'Manage',
@@ -2144,6 +2148,51 @@ const i18n = {
'title.issueManager': 'Issue Manager',
'title.issueDiscovery': 'Issue Discovery',
// Loop Monitor
'title.loopMonitor': 'Loop Monitor',
'loop.title': 'Loop Monitor',
'loop.status.created': 'Created',
'loop.status.running': 'Running',
'loop.status.paused': 'Paused',
'loop.status.completed': 'Completed',
'loop.status.failed': 'Failed',
'loop.tabs.timeline': 'Timeline',
'loop.tabs.logs': 'Logs',
'loop.tabs.variables': 'Variables',
'loop.buttons.pause': 'Pause',
'loop.buttons.resume': 'Resume',
'loop.buttons.stop': 'Stop',
'loop.buttons.retry': 'Retry',
'loop.buttons.newLoop': 'New Loop',
'loop.empty': 'No active loops',
'loop.metric.iteration': 'Iteration',
'loop.metric.step': 'Step',
'loop.metric.duration': 'Duration',
'loop.task.id': 'Task',
'loop.created': 'Created',
'loop.updated': 'Updated',
'loop.progress': 'Progress',
'loop.cliSequence': 'CLI Sequence',
'loop.stateVariables': 'State Variables',
'loop.executionHistory': 'Execution History',
'loop.failureReason': 'Failure Reason',
'loop.noLoopsFound': 'No loops found',
'loop.selectLoop': 'Select a loop to view details',
'loop.tasks': 'Tasks',
'loop.createTaskTitle': 'Create Loop Task',
'loop.loopsCount': 'loops',
'loop.paused': 'Loop paused',
'loop.resumed': 'Loop resumed',
'loop.stopped': 'Loop stopped',
'loop.startedSuccess': 'Loop started',
'loop.taskDescription': 'Description',
'loop.maxIterations': 'Max Iterations',
'loop.errorPolicy': 'Error Policy',
'loop.pauseOnError': 'Pause on error',
'loop.retryAutomatically': 'Retry automatically',
'loop.failImmediate': 'Fail immediately',
'loop.successCondition': 'Success Condition',
// Issue Discovery
'discovery.title': 'Issue Discovery',
'discovery.description': 'Discover potential issues from multiple perspectives',
@@ -2438,6 +2487,10 @@ const i18n = {
'nav.liteFix': '轻量修复',
'nav.multiCliPlan': '多CLI规划',
// Sidebar - Loops section
'nav.loops': '循环',
'nav.loopMonitor': '监控器',
// Sidebar - MCP section
'nav.mcpServers': 'MCP 服务器',
'nav.manage': '管理',
@@ -4507,6 +4560,51 @@ const i18n = {
'title.issueManager': '议题管理器',
'title.issueDiscovery': '议题发现',
// Loop Monitor
'title.loopMonitor': '循环监控',
'loop.title': '循环监控',
'loop.status.created': '已创建',
'loop.status.running': '运行中',
'loop.status.paused': '已暂停',
'loop.status.completed': '已完成',
'loop.status.failed': '失败',
'loop.tabs.timeline': '时间线',
'loop.tabs.logs': '日志',
'loop.tabs.variables': '变量',
'loop.buttons.pause': '暂停',
'loop.buttons.resume': '恢复',
'loop.buttons.stop': '停止',
'loop.buttons.retry': '重试',
'loop.buttons.newLoop': '新建循环',
'loop.empty': '没有活跃的循环',
'loop.metric.iteration': '迭代',
'loop.metric.step': '步骤',
'loop.metric.duration': '耗时',
'loop.task.id': '任务',
'loop.created': '创建时间',
'loop.updated': '更新时间',
'loop.progress': '进度',
'loop.cliSequence': 'CLI 序列',
'loop.stateVariables': '状态变量',
'loop.executionHistory': '执行历史',
'loop.failureReason': '失败原因',
'loop.noLoopsFound': '未找到循环',
'loop.selectLoop': '选择一个循环查看详情',
'loop.tasks': '任务',
'loop.createTaskTitle': '创建循环任务',
'loop.loopsCount': '个循环',
'loop.paused': '循环已暂停',
'loop.resumed': '循环已恢复',
'loop.stopped': '循环已停止',
'loop.startedSuccess': '循环已启动',
'loop.taskDescription': '描述',
'loop.maxIterations': '最大迭代数',
'loop.errorPolicy': '错误策略',
'loop.pauseOnError': '错误时暂停',
'loop.retryAutomatically': '自动重试',
'loop.failImmediate': '立即失败',
'loop.successCondition': '成功条件',
// Issue Discovery
'discovery.title': '议题发现',
'discovery.description': '从多个视角发现潜在问题',