feat(T3.2): implement workflow templates system
- Add WorkflowTemplate for YAML-based workflow definition
- Implement WorkflowTemplateManager for template lifecycle
- Save/load templates from disk (YAML format)
- Validate templates (name, planner, dependencies)
- Export templates to JSON
- Task configuration with dependency tracking
- Orchestrator configuration per template
- Template metadata (author, version, description)
- Default variables and tags support
- Template usage tracking and statistics
- Batch load templates from directory
- 26 workflow template tests, all passing
Features:
- WorkflowTemplate structure with metadata
- OrchestratorConfig per template (URLs, timeouts, retries)
- TaskConfig with dependencies and priority
- Save to YAML (human-readable)
- Load from YAML (auto-cached)
- Validate dependencies (no cycles, all tasks exist)
- Export to JSON for external systems
- Usage tracking (exec count, last used time)
- Directory loading for multi-template setups
Template Structure:
- Metadata: name, version, author, description
- Timestamps: created_at, updated_at
- Orchestrator config: planner/judge/implementer URLs
- Task list with dependencies
- Default variables
- Tags for organization
Validation:
- Template name required
- Planner URL required
- At least one task required
- All dependencies must reference existing tasks
- No circular dependencies
Operations:
- SaveTemplate() - persist to YAML
- LoadTemplate() - load from file
- GetTemplate() - retrieve cached
- ListTemplates() - enumerate all
- DeleteTemplate() - remove from disk
- ValidateTemplate() - check validity
- ExportTemplateJSON() - external format
- RecordUsage() - track usage stats
- LoadTemplateDirectory() - batch load
Test Coverage:
- 26 workflow template tests
- Save/load cycle verified
- Validation logic tested
- Dependency checking tested
- JSON export tested
- Usage tracking tested
- Directory loading tested
- Timestamp management tested
- Defaults and tags support tested
- Error handling comprehensive
Performance:
- Fast YAML parsing (single file)
- Cached templates in memory
- O(1) lookup by name
- Minimal disk I/O
Format Example:
---
name: golang-project
version: 1.0.0
author: platform-team
orchestrator:
planner_url: http://planner:8000
judge_url: http://judge:8000
timeout_seconds: 300
tasks:
- id: T0.1
title: Analyze Requirements
type: feature
priority: high
- id: T0.2
title: Implement
type: feature
depends_on: [T0.1]
Next: T3.3 (Task dependency graph)