workflow-ai
v1.5.1
Published
AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents
Readme
- Добавлено упоминание
human-gateв разделе про runner-стадии (пример конфига в pipeline.yaml: human-review-step типа manual-gate). - Добавлено упоминание
mark-blockedкак механизм нотификации autoblocked-тикетов (поля auto_blocked_reason/attempts/at).
Синглтон семантика Pipeline
Система workflow реализует паттерн синглтона для выполнения пайплайна: одновременно разрешена только одна активная инстанция пайплайна для каждого проекта.
Семантика Синглтона
При попытке запустить второй пайплайн, когда первый уже работает, система вернёт ошибку PIPELINE_ALREADY_RUNNING.
Структура .workflow/logs/.pipeline.lock
Файл блокировки содержит следующие поля:
pid: ID процесса работающего пайплайнаstarted_at: Временная метка запуска пайплайнаstarted_by: Инициатор запуска пайплайна (cli | mcp | extension)run_id: Уникальный идентификатор этого запускаpipeline_log: Путь к файлу логов пайплайнаproject_root: Корневая директория проектаpipeline_version: Версия выполняемого пайплайна
Команды
workflow run --project <path> [--started-by cli|mcp|extension] [--force]- Запустить пайплайн для указанного проектаworkflow stop --project <path> [--grace-sec N]- Мягко остановить пайплайн (SIGTERM → SIGKILL после N секунд)--forceфлаг - Обход блокировки (только для отладки, когда процесс зависает)
Восстановление
Если файл блокировки устарел (процесс упал, но блокировка не удалена):
- Проверь, что процесс мёртв:
workflow stop --project <path>(автоматически детектит устаревшие блокировки) - Если стандартная остановка не решает проблему:
workflow run --force --project <path>
Runner-стадии
В системе поддерживаются различные типы стадий для управления процессами разработки:
Human Gate
human-gate — стадия ручного контроля, которая требует вмешательства человека для продолжения выполнения пайплайна. Используется для критических точек, где необходима ручная проверка или утверждение.
Условия срабатывания:
- Стадия
manual-gate-humanблокирует пайплайн до ручного снятия gate - Gate снимается через команду
move-ticket.js <id> unblock - Поддерживает настройку таймаутов и условий повторных попыток
Пример конфигурации pipeline.yaml:
stages:
- name: manual-gate-human
type: manual-gate-human
config:
timeout: 3600 # 1 hour
max_attempts: 3
message: "Requires human approval before deployment"Пример полного файла pipeline.yaml доступен в docs/samples/pipeline-with-human-gate.yaml.
Autoblock notifications
Для автоматического блокировки тикетов при возникновении проблем используется механизм mark-blocked. Блокированные тикеты получают дополнительные поля в frontmatter для отслеживания причин и попыток:
auto_blocked_reason— причина автоматической блокировкиauto_blocked_attempts— количество попыток разблокировкиauto_blocked_at— время автоматической блокировки
