agentweaver 0.1.6 → 0.1.8

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.
@@ -33,6 +33,139 @@
33
33
  }
34
34
  ]
35
35
  },
36
+ {
37
+ "id": "load_existing_task_summary",
38
+ "when": {
39
+ "all": [
40
+ { "not": { "ref": "params.forceRefresh" } },
41
+ {
42
+ "exists": {
43
+ "artifact": {
44
+ "kind": "task-summary-file",
45
+ "taskKey": { "ref": "params.taskKey" }
46
+ }
47
+ }
48
+ }
49
+ ]
50
+ },
51
+ "node": "summary-file-load",
52
+ "params": {
53
+ "path": {
54
+ "artifact": {
55
+ "kind": "task-summary-file",
56
+ "taskKey": { "ref": "params.taskKey" }
57
+ }
58
+ }
59
+ }
60
+ },
61
+ {
62
+ "id": "generate_task_summary",
63
+ "when": {
64
+ "any": [
65
+ { "ref": "params.forceRefresh" },
66
+ {
67
+ "not": {
68
+ "exists": {
69
+ "artifact": {
70
+ "kind": "task-summary-file",
71
+ "taskKey": { "ref": "params.taskKey" }
72
+ }
73
+ }
74
+ }
75
+ }
76
+ ]
77
+ },
78
+ "node": "claude-prompt",
79
+ "prompt": {
80
+ "templateRef": "task-summary",
81
+ "vars": {
82
+ "jira_task_file": {
83
+ "artifact": {
84
+ "kind": "jira-task-file",
85
+ "taskKey": { "ref": "params.taskKey" }
86
+ }
87
+ },
88
+ "task_summary_file": {
89
+ "artifact": {
90
+ "kind": "task-summary-file",
91
+ "taskKey": { "ref": "params.taskKey" }
92
+ }
93
+ },
94
+ "task_summary_json_file": {
95
+ "artifact": {
96
+ "kind": "task-summary-json-file",
97
+ "taskKey": { "ref": "params.taskKey" }
98
+ }
99
+ }
100
+ },
101
+ "format": "plain"
102
+ },
103
+ "params": {
104
+ "labelText": { "const": "Preparing task summary" },
105
+ "outputFile": {
106
+ "artifact": {
107
+ "kind": "task-summary-file",
108
+ "taskKey": { "ref": "params.taskKey" }
109
+ }
110
+ },
111
+ "requiredArtifacts": {
112
+ "list": [
113
+ {
114
+ "artifact": {
115
+ "kind": "task-summary-json-file",
116
+ "taskKey": { "ref": "params.taskKey" }
117
+ }
118
+ }
119
+ ]
120
+ },
121
+ "model": { "const": "haiku" }
122
+ },
123
+ "expect": [
124
+ {
125
+ "kind": "require-artifacts",
126
+ "when": { "not": { "ref": "context.dryRun" } },
127
+ "paths": {
128
+ "list": [
129
+ {
130
+ "artifact": {
131
+ "kind": "task-summary-file",
132
+ "taskKey": { "ref": "params.taskKey" }
133
+ }
134
+ }
135
+ ]
136
+ },
137
+ "message": "Claude summary did not produce the task summary artifact."
138
+ },
139
+ {
140
+ "kind": "require-structured-artifacts",
141
+ "when": { "not": { "ref": "context.dryRun" } },
142
+ "items": [
143
+ {
144
+ "path": {
145
+ "artifact": {
146
+ "kind": "task-summary-json-file",
147
+ "taskKey": { "ref": "params.taskKey" }
148
+ }
149
+ },
150
+ "schemaId": "task-summary/v1"
151
+ }
152
+ ],
153
+ "message": "Claude summary produced invalid structured artifacts."
154
+ }
155
+ ],
156
+ "after": [
157
+ {
158
+ "kind": "set-summary-from-file",
159
+ "when": { "not": { "ref": "context.dryRun" } },
160
+ "path": {
161
+ "artifact": {
162
+ "kind": "task-summary-file",
163
+ "taskKey": { "ref": "params.taskKey" }
164
+ }
165
+ }
166
+ }
167
+ ]
168
+ },
36
169
  {
37
170
  "id": "run_codex_plan",
38
171
  "node": "codex-local-prompt",
@@ -184,474 +317,479 @@
184
317
  ]
185
318
  },
186
319
  {
187
- "id": "test_after_implement",
320
+ "id": "run_go_linter_loop_after_implement",
188
321
  "steps": [
189
322
  {
190
- "id": "run_linter_loop_after_implement",
323
+ "id": "run_go_linter_loop",
191
324
  "node": "flow-run",
192
325
  "params": {
193
- "fileName": { "const": "run-linter-loop.json" },
194
- "labelText": { "const": "Running run-linter-loop after implement" },
326
+ "fileName": { "const": "run-go-linter-loop.json" },
327
+ "labelText": { "const": "Running run-go-linter-loop after implement" },
195
328
  "taskKey": { "ref": "params.taskKey" },
196
- "runLinterScript": { "ref": "params.runLinterScript" },
329
+ "runGoLinterScript": { "ref": "params.runGoLinterScript" },
197
330
  "extraPrompt": { "ref": "params.extraPrompt" }
198
331
  }
199
- },
332
+ }
333
+ ]
334
+ },
335
+ {
336
+ "id": "run_go_tests_loop_after_implement",
337
+ "steps": [
200
338
  {
201
- "id": "run_tests_loop_after_implement",
339
+ "id": "run_go_tests_loop",
202
340
  "node": "flow-run",
203
341
  "params": {
204
- "fileName": { "const": "run-tests-loop.json" },
205
- "labelText": { "const": "Running run-tests-loop after implement" },
342
+ "fileName": { "const": "run-go-tests-loop.json" },
343
+ "labelText": { "const": "Running run-go-tests-loop after implement" },
206
344
  "taskKey": { "ref": "params.taskKey" },
207
- "runTestsScript": { "ref": "params.runTestsScript" },
345
+ "runGoTestsScript": { "ref": "params.runGoTestsScript" },
208
346
  "extraPrompt": { "ref": "params.extraPrompt" }
209
347
  }
210
348
  }
211
349
  ]
212
350
  },
213
351
  {
214
- "repeat": {
215
- "var": "iteration",
216
- "from": 1,
217
- "to": 3
352
+ "id": "review",
353
+ "when": {
354
+ "not": {
355
+ "exists": {
356
+ "artifact": {
357
+ "kind": "ready-to-merge-file",
358
+ "taskKey": { "ref": "params.taskKey" }
359
+ }
360
+ }
361
+ }
218
362
  },
219
- "phases": [
363
+ "steps": [
220
364
  {
221
- "id": "review_${iteration}",
222
- "when": {
223
- "not": {
224
- "exists": {
365
+ "id": "run_claude_review",
366
+ "node": "claude-prompt",
367
+ "prompt": {
368
+ "templateRef": "review",
369
+ "vars": {
370
+ "jira_task_file": {
225
371
  "artifact": {
226
- "kind": "ready-to-merge-file",
372
+ "kind": "jira-task-file",
373
+ "taskKey": { "ref": "params.taskKey" }
374
+ }
375
+ },
376
+ "design_file": {
377
+ "artifact": {
378
+ "kind": "design-file",
227
379
  "taskKey": { "ref": "params.taskKey" }
228
380
  }
381
+ },
382
+ "design_json_file": {
383
+ "artifact": {
384
+ "kind": "design-json-file",
385
+ "taskKey": { "ref": "params.taskKey" }
386
+ }
387
+ },
388
+ "plan_file": {
389
+ "artifact": {
390
+ "kind": "plan-file",
391
+ "taskKey": { "ref": "params.taskKey" }
392
+ }
393
+ },
394
+ "plan_json_file": {
395
+ "artifact": {
396
+ "kind": "plan-json-file",
397
+ "taskKey": { "ref": "params.taskKey" }
398
+ }
399
+ },
400
+ "review_file": {
401
+ "artifact": {
402
+ "kind": "review-file",
403
+ "taskKey": { "ref": "params.taskKey" },
404
+ "iteration": { "const": 1 }
405
+ }
406
+ },
407
+ "review_json_file": {
408
+ "artifact": {
409
+ "kind": "review-json-file",
410
+ "taskKey": { "ref": "params.taskKey" },
411
+ "iteration": { "const": 1 }
412
+ }
229
413
  }
230
- }
414
+ },
415
+ "extraPrompt": { "ref": "params.extraPrompt" },
416
+ "format": "task-prompt"
417
+ },
418
+ "params": {
419
+ "labelText": { "const": "Running Claude review mode" },
420
+ "model": { "const": "opus" }
231
421
  },
232
- "steps": [
422
+ "expect": [
233
423
  {
234
- "id": "run_claude_review",
235
- "node": "claude-prompt",
236
- "prompt": {
237
- "templateRef": "review",
238
- "vars": {
239
- "jira_task_file": {
240
- "artifact": {
241
- "kind": "jira-task-file",
242
- "taskKey": { "ref": "params.taskKey" }
243
- }
244
- },
245
- "design_file": {
246
- "artifact": {
247
- "kind": "design-file",
248
- "taskKey": { "ref": "params.taskKey" }
249
- }
250
- },
251
- "design_json_file": {
252
- "artifact": {
253
- "kind": "design-json-file",
254
- "taskKey": { "ref": "params.taskKey" }
255
- }
256
- },
257
- "plan_file": {
258
- "artifact": {
259
- "kind": "plan-file",
260
- "taskKey": { "ref": "params.taskKey" }
261
- }
262
- },
263
- "plan_json_file": {
264
- "artifact": {
265
- "kind": "plan-json-file",
266
- "taskKey": { "ref": "params.taskKey" }
267
- }
268
- },
269
- "review_file": {
424
+ "kind": "require-artifacts",
425
+ "when": { "not": { "ref": "context.dryRun" } },
426
+ "paths": {
427
+ "list": [
428
+ {
270
429
  "artifact": {
271
430
  "kind": "review-file",
272
431
  "taskKey": { "ref": "params.taskKey" },
273
- "iteration": { "ref": "repeat.iteration" }
274
- }
275
- },
276
- "review_json_file": {
277
- "artifact": {
278
- "kind": "review-json-file",
279
- "taskKey": { "ref": "params.taskKey" },
280
- "iteration": { "ref": "repeat.iteration" }
432
+ "iteration": { "const": 1 }
281
433
  }
282
434
  }
283
- },
284
- "extraPrompt": { "ref": "params.extraPrompt" },
285
- "format": "task-prompt"
286
- },
287
- "params": {
288
- "labelText": {
289
- "template": "Running Claude review mode (iteration {iteration})",
290
- "vars": {
291
- "iteration": { "ref": "repeat.iteration" }
292
- }
293
- },
294
- "model": { "const": "opus" }
435
+ ]
295
436
  },
296
- "expect": [
297
- {
298
- "kind": "require-artifacts",
299
- "when": { "not": { "ref": "context.dryRun" } },
300
- "paths": {
301
- "list": [
302
- {
303
- "artifact": {
304
- "kind": "review-file",
305
- "taskKey": { "ref": "params.taskKey" },
306
- "iteration": { "ref": "repeat.iteration" }
307
- }
308
- }
309
- ]
310
- },
311
- "message": "Claude review did not produce the required review artifact."
312
- },
313
- {
314
- "kind": "require-structured-artifacts",
315
- "when": { "not": { "ref": "context.dryRun" } },
316
- "items": [
317
- {
318
- "path": {
319
- "artifact": {
320
- "kind": "review-json-file",
321
- "taskKey": { "ref": "params.taskKey" },
322
- "iteration": { "ref": "repeat.iteration" }
323
- }
324
- },
325
- "schemaId": "review-findings/v1"
326
- }
327
- ],
328
- "message": "Claude review produced invalid structured artifacts."
329
- }
330
- ]
437
+ "message": "Claude review did not produce the required review artifact."
331
438
  },
332
439
  {
333
- "id": "summarize_review",
440
+ "kind": "require-structured-artifacts",
334
441
  "when": { "not": { "ref": "context.dryRun" } },
335
- "node": "claude-prompt",
336
- "prompt": {
337
- "templateRef": "review-summary",
338
- "vars": {
339
- "review_file": {
442
+ "items": [
443
+ {
444
+ "path": {
340
445
  "artifact": {
341
- "kind": "review-file",
446
+ "kind": "review-json-file",
342
447
  "taskKey": { "ref": "params.taskKey" },
343
- "iteration": { "ref": "repeat.iteration" }
448
+ "iteration": { "const": 1 }
344
449
  }
345
450
  },
346
- "review_summary_file": {
347
- "artifact": {
348
- "kind": "review-summary-file",
349
- "taskKey": { "ref": "params.taskKey" },
350
- "iteration": { "ref": "repeat.iteration" }
351
- }
352
- }
353
- },
354
- "format": "plain"
451
+ "schemaId": "review-findings/v1"
452
+ }
453
+ ],
454
+ "message": "Claude review produced invalid structured artifacts."
455
+ }
456
+ ]
457
+ },
458
+ {
459
+ "id": "summarize_review",
460
+ "when": { "not": { "ref": "context.dryRun" } },
461
+ "node": "claude-prompt",
462
+ "prompt": {
463
+ "templateRef": "review-summary",
464
+ "vars": {
465
+ "review_file": {
466
+ "artifact": {
467
+ "kind": "review-file",
468
+ "taskKey": { "ref": "params.taskKey" },
469
+ "iteration": { "const": 1 }
470
+ }
355
471
  },
356
- "params": {
357
- "labelText": { "const": "Preparing Claude review summary" },
358
- "outputFile": {
359
- "artifact": {
360
- "kind": "review-summary-file",
361
- "taskKey": { "ref": "params.taskKey" },
362
- "iteration": { "ref": "repeat.iteration" }
363
- }
364
- },
365
- "summaryTitle": { "const": "Claude Comments" },
366
- "model": { "const": "haiku" }
472
+ "review_summary_file": {
473
+ "artifact": {
474
+ "kind": "review-summary-file",
475
+ "taskKey": { "ref": "params.taskKey" },
476
+ "iteration": { "const": 1 }
477
+ }
478
+ }
479
+ },
480
+ "format": "plain"
481
+ },
482
+ "params": {
483
+ "labelText": { "const": "Preparing Claude review summary" },
484
+ "outputFile": {
485
+ "artifact": {
486
+ "kind": "review-summary-file",
487
+ "taskKey": { "ref": "params.taskKey" },
488
+ "iteration": { "const": 1 }
489
+ }
490
+ },
491
+ "summaryTitle": { "const": "Claude Comments" },
492
+ "model": { "const": "haiku" }
493
+ }
494
+ },
495
+ {
496
+ "id": "run_codex_review_reply",
497
+ "node": "codex-local-prompt",
498
+ "prompt": {
499
+ "templateRef": "review-reply",
500
+ "vars": {
501
+ "review_file": {
502
+ "artifact": {
503
+ "kind": "review-file",
504
+ "taskKey": { "ref": "params.taskKey" },
505
+ "iteration": { "const": 1 }
506
+ }
507
+ },
508
+ "review_json_file": {
509
+ "artifact": {
510
+ "kind": "review-json-file",
511
+ "taskKey": { "ref": "params.taskKey" },
512
+ "iteration": { "const": 1 }
513
+ }
514
+ },
515
+ "jira_task_file": {
516
+ "artifact": {
517
+ "kind": "jira-task-file",
518
+ "taskKey": { "ref": "params.taskKey" }
519
+ }
520
+ },
521
+ "design_file": {
522
+ "artifact": {
523
+ "kind": "design-file",
524
+ "taskKey": { "ref": "params.taskKey" }
525
+ }
526
+ },
527
+ "design_json_file": {
528
+ "artifact": {
529
+ "kind": "design-json-file",
530
+ "taskKey": { "ref": "params.taskKey" }
531
+ }
532
+ },
533
+ "plan_file": {
534
+ "artifact": {
535
+ "kind": "plan-file",
536
+ "taskKey": { "ref": "params.taskKey" }
537
+ }
538
+ },
539
+ "plan_json_file": {
540
+ "artifact": {
541
+ "kind": "plan-json-file",
542
+ "taskKey": { "ref": "params.taskKey" }
543
+ }
544
+ },
545
+ "review_reply_file": {
546
+ "artifact": {
547
+ "kind": "review-reply-file",
548
+ "taskKey": { "ref": "params.taskKey" },
549
+ "iteration": { "const": 1 }
550
+ }
551
+ },
552
+ "review_reply_json_file": {
553
+ "artifact": {
554
+ "kind": "review-reply-json-file",
555
+ "taskKey": { "ref": "params.taskKey" },
556
+ "iteration": { "const": 1 }
557
+ }
367
558
  }
368
559
  },
560
+ "extraPrompt": { "ref": "params.extraPrompt" },
561
+ "format": "task-prompt"
562
+ },
563
+ "params": {
564
+ "labelText": { "const": "Running Codex review reply mode" },
565
+ "model": { "const": "gpt-5.4" }
566
+ },
567
+ "expect": [
369
568
  {
370
- "id": "run_codex_review_reply",
371
- "node": "codex-local-prompt",
372
- "prompt": {
373
- "templateRef": "review-reply",
374
- "vars": {
375
- "review_file": {
376
- "artifact": {
377
- "kind": "review-file",
378
- "taskKey": { "ref": "params.taskKey" },
379
- "iteration": { "ref": "repeat.iteration" }
380
- }
381
- },
382
- "review_json_file": {
383
- "artifact": {
384
- "kind": "review-json-file",
385
- "taskKey": { "ref": "params.taskKey" },
386
- "iteration": { "ref": "repeat.iteration" }
387
- }
388
- },
389
- "jira_task_file": {
390
- "artifact": {
391
- "kind": "jira-task-file",
392
- "taskKey": { "ref": "params.taskKey" }
393
- }
394
- },
395
- "design_file": {
396
- "artifact": {
397
- "kind": "design-file",
398
- "taskKey": { "ref": "params.taskKey" }
399
- }
400
- },
401
- "design_json_file": {
402
- "artifact": {
403
- "kind": "design-json-file",
404
- "taskKey": { "ref": "params.taskKey" }
405
- }
406
- },
407
- "plan_file": {
408
- "artifact": {
409
- "kind": "plan-file",
410
- "taskKey": { "ref": "params.taskKey" }
411
- }
412
- },
413
- "plan_json_file": {
414
- "artifact": {
415
- "kind": "plan-json-file",
416
- "taskKey": { "ref": "params.taskKey" }
417
- }
418
- },
419
- "review_reply_file": {
569
+ "kind": "require-artifacts",
570
+ "when": { "not": { "ref": "context.dryRun" } },
571
+ "paths": {
572
+ "list": [
573
+ {
420
574
  "artifact": {
421
575
  "kind": "review-reply-file",
422
576
  "taskKey": { "ref": "params.taskKey" },
423
- "iteration": { "ref": "repeat.iteration" }
424
- }
425
- },
426
- "review_reply_json_file": {
427
- "artifact": {
428
- "kind": "review-reply-json-file",
429
- "taskKey": { "ref": "params.taskKey" },
430
- "iteration": { "ref": "repeat.iteration" }
577
+ "iteration": { "const": 1 }
431
578
  }
432
579
  }
433
- },
434
- "extraPrompt": { "ref": "params.extraPrompt" },
435
- "format": "task-prompt"
436
- },
437
- "params": {
438
- "labelText": {
439
- "template": "Running Codex review reply mode (iteration {iteration})",
440
- "vars": {
441
- "iteration": { "ref": "repeat.iteration" }
442
- }
443
- },
444
- "model": { "const": "gpt-5.4" }
580
+ ]
445
581
  },
446
- "expect": [
447
- {
448
- "kind": "require-artifacts",
449
- "when": { "not": { "ref": "context.dryRun" } },
450
- "paths": {
451
- "list": [
452
- {
453
- "artifact": {
454
- "kind": "review-reply-file",
455
- "taskKey": { "ref": "params.taskKey" },
456
- "iteration": { "ref": "repeat.iteration" }
457
- }
458
- }
459
- ]
460
- },
461
- "message": "Codex review reply did not produce the required review-reply artifact."
462
- },
463
- {
464
- "kind": "require-structured-artifacts",
465
- "when": { "not": { "ref": "context.dryRun" } },
466
- "items": [
467
- {
468
- "path": {
469
- "artifact": {
470
- "kind": "review-reply-json-file",
471
- "taskKey": { "ref": "params.taskKey" },
472
- "iteration": { "ref": "repeat.iteration" }
473
- }
474
- },
475
- "schemaId": "review-reply/v1"
476
- }
477
- ],
478
- "message": "Codex review reply produced invalid structured artifacts."
479
- }
480
- ]
582
+ "message": "Codex review reply did not produce the required review-reply artifact."
481
583
  },
482
584
  {
483
- "id": "summarize_review_reply",
585
+ "kind": "require-structured-artifacts",
484
586
  "when": { "not": { "ref": "context.dryRun" } },
485
- "node": "claude-prompt",
486
- "prompt": {
487
- "templateRef": "review-reply-summary",
488
- "vars": {
489
- "review_reply_file": {
587
+ "items": [
588
+ {
589
+ "path": {
490
590
  "artifact": {
491
- "kind": "review-reply-file",
591
+ "kind": "review-reply-json-file",
492
592
  "taskKey": { "ref": "params.taskKey" },
493
- "iteration": { "ref": "repeat.iteration" }
593
+ "iteration": { "const": 1 }
494
594
  }
495
595
  },
496
- "review_reply_summary_file": {
497
- "artifact": {
498
- "kind": "review-reply-summary-file",
499
- "taskKey": { "ref": "params.taskKey" },
500
- "iteration": { "ref": "repeat.iteration" }
501
- }
502
- }
503
- },
504
- "format": "plain"
596
+ "schemaId": "review-reply/v1"
597
+ }
598
+ ],
599
+ "message": "Codex review reply produced invalid structured artifacts."
600
+ }
601
+ ]
602
+ },
603
+ {
604
+ "id": "summarize_review_reply",
605
+ "when": { "not": { "ref": "context.dryRun" } },
606
+ "node": "claude-prompt",
607
+ "prompt": {
608
+ "templateRef": "review-reply-summary",
609
+ "vars": {
610
+ "review_reply_file": {
611
+ "artifact": {
612
+ "kind": "review-reply-file",
613
+ "taskKey": { "ref": "params.taskKey" },
614
+ "iteration": { "const": 1 }
615
+ }
505
616
  },
506
- "params": {
507
- "labelText": { "const": "Preparing Codex reply summary" },
508
- "outputFile": {
509
- "artifact": {
510
- "kind": "review-reply-summary-file",
511
- "taskKey": { "ref": "params.taskKey" },
512
- "iteration": { "ref": "repeat.iteration" }
513
- }
514
- },
515
- "summaryTitle": { "const": "Codex Reply Summary" },
516
- "model": { "const": "haiku" }
617
+ "review_reply_summary_file": {
618
+ "artifact": {
619
+ "kind": "review-reply-summary-file",
620
+ "taskKey": { "ref": "params.taskKey" },
621
+ "iteration": { "const": 1 }
622
+ }
517
623
  }
518
624
  },
519
- {
520
- "id": "check_ready_to_merge",
521
- "node": "file-check",
522
- "stopFlowIf": {
523
- "ref": "steps.review_${iteration}.check_ready_to_merge.outputs.exists"
524
- },
525
- "params": {
526
- "path": {
527
- "artifact": {
528
- "kind": "ready-to-merge-file",
529
- "taskKey": { "ref": "params.taskKey" }
530
- }
531
- },
532
- "panelTitle": { "const": "Ready To Merge" },
533
- "foundMessage": { "const": "Изменения готовы к merge\nФайл ready-to-merge.md создан." },
534
- "tone": { "const": "green" }
625
+ "format": "plain"
626
+ },
627
+ "params": {
628
+ "labelText": { "const": "Preparing Codex reply summary" },
629
+ "outputFile": {
630
+ "artifact": {
631
+ "kind": "review-reply-summary-file",
632
+ "taskKey": { "ref": "params.taskKey" },
633
+ "iteration": { "const": 1 }
535
634
  }
536
- }
537
- ]
635
+ },
636
+ "summaryTitle": { "const": "Codex Reply Summary" },
637
+ "model": { "const": "haiku" }
638
+ }
538
639
  },
539
640
  {
540
- "id": "review_fix_${iteration}",
541
- "when": {
542
- "not": {
543
- "ref": "steps.review_${iteration}.check_ready_to_merge.outputs.exists"
544
- }
641
+ "id": "check_ready_to_merge",
642
+ "node": "file-check",
643
+ "stopFlowIf": {
644
+ "ref": "steps.review.check_ready_to_merge.outputs.exists"
545
645
  },
546
- "steps": [
646
+ "params": {
647
+ "path": {
648
+ "artifact": {
649
+ "kind": "ready-to-merge-file",
650
+ "taskKey": { "ref": "params.taskKey" }
651
+ }
652
+ },
653
+ "panelTitle": { "const": "Ready To Merge" },
654
+ "foundMessage": { "const": "Изменения готовы к merge\nФайл ready-to-merge.md создан." },
655
+ "tone": { "const": "green" }
656
+ }
657
+ }
658
+ ]
659
+ },
660
+ {
661
+ "id": "review_fix",
662
+ "when": {
663
+ "not": {
664
+ "ref": "steps.review.check_ready_to_merge.outputs.exists"
665
+ }
666
+ },
667
+ "steps": [
668
+ {
669
+ "id": "run_codex_review_fix",
670
+ "node": "codex-local-prompt",
671
+ "prompt": {
672
+ "templateRef": "review-fix",
673
+ "vars": {
674
+ "review_reply_file": {
675
+ "artifact": {
676
+ "kind": "review-reply-file",
677
+ "taskKey": { "ref": "params.taskKey" },
678
+ "iteration": { "const": 1 }
679
+ }
680
+ },
681
+ "review_reply_json_file": {
682
+ "artifact": {
683
+ "kind": "review-reply-json-file",
684
+ "taskKey": { "ref": "params.taskKey" },
685
+ "iteration": { "const": 1 }
686
+ }
687
+ },
688
+ "items": { "ref": "params.reviewFixPoints" },
689
+ "review_fix_file": {
690
+ "artifact": {
691
+ "kind": "review-fix-file",
692
+ "taskKey": { "ref": "params.taskKey" },
693
+ "iteration": { "const": 1 }
694
+ }
695
+ },
696
+ "review_fix_json_file": {
697
+ "artifact": {
698
+ "kind": "review-fix-json-file",
699
+ "taskKey": { "ref": "params.taskKey" },
700
+ "iteration": { "const": 1 }
701
+ }
702
+ }
703
+ },
704
+ "extraPrompt": {
705
+ "appendPrompt": {
706
+ "base": { "ref": "params.extraPrompt" },
707
+ "suffix": { "ref": "flow.autoReviewFixExtraPrompt" }
708
+ }
709
+ },
710
+ "format": "task-prompt"
711
+ },
712
+ "params": {
713
+ "labelText": { "const": "Running Codex review-fix mode locally" },
714
+ "model": { "const": "gpt-5.4" }
715
+ },
716
+ "expect": [
547
717
  {
548
- "id": "run_codex_review_fix",
549
- "node": "codex-local-prompt",
550
- "prompt": {
551
- "templateRef": "review-fix",
552
- "vars": {
553
- "review_reply_file": {
554
- "artifact": {
555
- "kind": "review-reply-file",
556
- "taskKey": { "ref": "params.taskKey" },
557
- "iteration": { "ref": "repeat.iteration" }
558
- }
559
- },
560
- "review_reply_json_file": {
561
- "artifact": {
562
- "kind": "review-reply-json-file",
563
- "taskKey": { "ref": "params.taskKey" },
564
- "iteration": { "ref": "repeat.iteration" }
565
- }
566
- },
567
- "items": { "ref": "params.reviewFixPoints" },
568
- "review_fix_file": {
718
+ "kind": "require-artifacts",
719
+ "when": { "not": { "ref": "context.dryRun" } },
720
+ "paths": {
721
+ "list": [
722
+ {
569
723
  "artifact": {
570
724
  "kind": "review-fix-file",
571
725
  "taskKey": { "ref": "params.taskKey" },
572
- "iteration": { "ref": "repeat.iteration" }
726
+ "iteration": { "const": 1 }
573
727
  }
574
- },
575
- "review_fix_json_file": {
728
+ }
729
+ ]
730
+ },
731
+ "message": "Review-fix mode did not produce the required review-fix artifact."
732
+ },
733
+ {
734
+ "kind": "require-structured-artifacts",
735
+ "when": { "not": { "ref": "context.dryRun" } },
736
+ "items": [
737
+ {
738
+ "path": {
576
739
  "artifact": {
577
740
  "kind": "review-fix-json-file",
578
741
  "taskKey": { "ref": "params.taskKey" },
579
- "iteration": { "ref": "repeat.iteration" }
742
+ "iteration": { "const": 1 }
580
743
  }
581
- }
582
- },
583
- "extraPrompt": {
584
- "appendPrompt": {
585
- "base": { "ref": "params.extraPrompt" },
586
- "suffix": { "ref": "flow.autoReviewFixExtraPrompt" }
587
- }
588
- },
589
- "format": "task-prompt"
590
- },
591
- "params": {
592
- "labelText": {
593
- "template": "Running Codex review-fix mode locally (iteration {iteration})",
594
- "vars": {
595
- "iteration": { "ref": "repeat.iteration" }
596
- }
597
- },
598
- "model": { "const": "gpt-5.4" }
599
- },
600
- "expect": [
601
- {
602
- "kind": "require-artifacts",
603
- "when": { "not": { "ref": "context.dryRun" } },
604
- "paths": {
605
- "list": [
606
- {
607
- "artifact": {
608
- "kind": "review-fix-file",
609
- "taskKey": { "ref": "params.taskKey" },
610
- "iteration": { "ref": "repeat.iteration" }
611
- }
612
- }
613
- ]
614
744
  },
615
- "message": "Review-fix mode did not produce the required review-fix artifact."
616
- },
617
- {
618
- "kind": "require-structured-artifacts",
619
- "when": { "not": { "ref": "context.dryRun" } },
620
- "items": [
621
- {
622
- "path": {
623
- "artifact": {
624
- "kind": "review-fix-json-file",
625
- "taskKey": { "ref": "params.taskKey" },
626
- "iteration": { "ref": "repeat.iteration" }
627
- }
628
- },
629
- "schemaId": "review-fix-report/v1"
630
- }
631
- ],
632
- "message": "Review-fix mode produced invalid structured artifacts."
745
+ "schemaId": "review-fix-report/v1"
633
746
  }
634
- ]
747
+ ],
748
+ "message": "Review-fix mode produced invalid structured artifacts."
635
749
  }
636
750
  ]
637
- },
751
+ }
752
+ ]
753
+ },
754
+ {
755
+ "id": "run_go_linter_loop_after_review_fix",
756
+ "when": {
757
+ "not": {
758
+ "ref": "steps.review.check_ready_to_merge.outputs.exists"
759
+ }
760
+ },
761
+ "steps": [
638
762
  {
639
- "id": "test_after_review_fix_${iteration}",
640
- "when": {
641
- "not": {
642
- "ref": "steps.review_${iteration}.check_ready_to_merge.outputs.exists"
643
- }
644
- },
645
- "steps": [
646
- {
647
- "id": "verify_build_after_review_fix",
648
- "node": "verify-build",
649
- "params": {
650
- "dockerComposeFile": { "ref": "params.dockerComposeFile" },
651
- "labelText": { "const": "Running build verification in isolated Docker" }
652
- }
653
- }
654
- ]
763
+ "id": "run_go_linter_loop",
764
+ "node": "flow-run",
765
+ "params": {
766
+ "fileName": { "const": "run-go-linter-loop.json" },
767
+ "labelText": { "const": "Running run-go-linter-loop after review-fix" },
768
+ "taskKey": { "ref": "params.taskKey" },
769
+ "runGoLinterScript": { "ref": "params.runGoLinterScript" },
770
+ "extraPrompt": { "ref": "params.extraPrompt" }
771
+ }
772
+ }
773
+ ]
774
+ },
775
+ {
776
+ "id": "run_go_tests_loop_after_review_fix",
777
+ "when": {
778
+ "not": {
779
+ "ref": "steps.review.check_ready_to_merge.outputs.exists"
780
+ }
781
+ },
782
+ "steps": [
783
+ {
784
+ "id": "run_go_tests_loop",
785
+ "node": "flow-run",
786
+ "params": {
787
+ "fileName": { "const": "run-go-tests-loop.json" },
788
+ "labelText": { "const": "Running run-go-tests-loop after review-fix" },
789
+ "taskKey": { "ref": "params.taskKey" },
790
+ "runGoTestsScript": { "ref": "params.runGoTestsScript" },
791
+ "extraPrompt": { "ref": "params.extraPrompt" }
792
+ }
655
793
  }
656
794
  ]
657
795
  }