workflow-ai 1.0.22 → 1.0.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -482,6 +482,6 @@ pipeline:
482
482
  # ===========================================================================
483
483
  execution:
484
484
  max_steps: 1500
485
- delay_between_stages: 1
485
+ delay_between_stages: 5
486
486
  timeout_per_stage: 1800
487
487
  log_file: ".workflow/logs/pipeline.log"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "workflow-ai",
3
- "version": "1.0.22",
3
+ "version": "1.0.23",
4
4
  "description": "AI Agent Workflow Coordinator — kanban-based pipeline for AI coding agents",
5
5
  "type": "module",
6
6
  "bin": {
package/src/lib/utils.mjs CHANGED
@@ -117,10 +117,16 @@ export function getLastReviewStatus(content) {
117
117
  if (!content) return null;
118
118
 
119
119
  // Находим секцию "## Ревью" — захватываем всё до следующего заголовка ## или конца файла
120
- const reviewSectionMatch = content.match(/^##\s*Ревью\s*\n([\s\S]*)(?=\n^##\s|$)/m);
121
- if (!reviewSectionMatch) return null;
120
+ const headerIdx = content.search(/^##\s*Ревью\s*$/m);
121
+ if (headerIdx === -1) return null;
122
122
 
123
- const reviewSection = reviewSectionMatch[1].trim();
123
+ const bodyStart = content.indexOf('\n', headerIdx);
124
+ if (bodyStart === -1) return null;
125
+
126
+ const nextH2 = content.indexOf('\n## ', bodyStart);
127
+ const reviewSection = (nextH2 === -1
128
+ ? content.slice(bodyStart + 1)
129
+ : content.slice(bodyStart + 1, nextH2)).trim();
124
130
  if (!reviewSection) return null;
125
131
 
126
132
  // Пробуем распарсить табличный формат
@@ -83,6 +83,8 @@ ID тикета передаётся в промпте как `ticket_id` в с
83
83
 
84
84
  ### 4. Сформировать вердикт
85
85
 
86
+ > **ВАЖНО:** Review-result НИКОГДА не пишет статус `skipped`. Допустимы только `passed` или `failed`. Статус `skipped` — прерогатива check-relevance.
87
+
86
88
  Возвращать структурированный результат строго в одном из двух форматов:
87
89
 
88
90
  > **КРИТИЧНО**: `status` принимает ТОЛЬКО два значения: `passed` или `failed`.