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

@@ -14,6 +14,7 @@ import { coreMemoryCommand } from './commands/core-memory.js';
import { hookCommand } from './commands/hook.js';
import { issueCommand } from './commands/issue.js';
import { workflowCommand } from './commands/workflow.js';
import { loopCommand } from './commands/loop.js';
import { readFileSync, existsSync } from 'fs';
import { fileURLToPath } from 'url';
import { dirname, join } from 'path';
@@ -172,7 +173,7 @@ export function run(argv: string[]): void {
.description('Unified CLI tool executor (gemini/qwen/codex/claude)')
.option('-p, --prompt <prompt>', 'Prompt text (alternative to positional argument)')
.option('-f, --file <file>', 'Read prompt from file (best for multi-line prompts)')
.option('--tool <tool>', 'CLI tool to use', 'gemini')
.option('--tool <tool>', 'CLI tool to use (reads from cli-settings.json defaultTool if not specified)')
.option('--mode <mode>', 'Execution mode: analysis, write, auto', 'analysis')
.option('-d, --debug', 'Enable debug logging for troubleshooting')
.option('--model <model>', 'Model override')
@@ -301,6 +302,13 @@ export function run(argv: string[]): void {
.option('--queue <queue-id>', 'Target queue ID for multi-queue operations')
.action((subcommand, args, options) => issueCommand(subcommand, args, options));
// Loop command - Loop management for multi-CLI orchestration
program
.command('loop [subcommand] [args...]')
.description('Loop management for automated multi-CLI execution')
.option('--session <name>', 'Specify workflow session')
.action((subcommand, args, options) => loopCommand(subcommand, args, options));
// Workflow command - Workflow installation and management
program
.command('workflow [subcommand] [args...]')