agentweaver 0.1.9 → 0.1.11

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.
Files changed (101) hide show
  1. package/README.md +226 -200
  2. package/dist/artifacts.js +101 -56
  3. package/dist/errors.js +7 -0
  4. package/dist/executors/{codex-local-executor.js → codex-executor.js} +4 -4
  5. package/dist/executors/configs/{codex-local-config.js → codex-config.js} +1 -1
  6. package/dist/executors/configs/jira-fetch-config.js +2 -0
  7. package/dist/executors/configs/telegram-notifier-config.js +3 -0
  8. package/dist/executors/fetch-gitlab-diff-executor.js +1 -1
  9. package/dist/executors/fetch-gitlab-review-executor.js +1 -1
  10. package/dist/executors/git-commit-executor.js +25 -0
  11. package/dist/executors/telegram-notifier-executor.js +54 -0
  12. package/dist/flow-state.js +46 -1
  13. package/dist/gitlab.js +13 -8
  14. package/dist/index.js +507 -520
  15. package/dist/interactive-ui.js +495 -87
  16. package/dist/jira.js +52 -5
  17. package/dist/pipeline/auto-flow.js +6 -6
  18. package/dist/pipeline/context.js +1 -0
  19. package/dist/pipeline/declarative-flows.js +7 -4
  20. package/dist/pipeline/flow-catalog.js +60 -23
  21. package/dist/pipeline/flow-model-settings.js +77 -0
  22. package/dist/pipeline/flow-specs/auto-common.json +446 -0
  23. package/dist/pipeline/flow-specs/auto-golang.json +563 -0
  24. package/dist/pipeline/flow-specs/{bug-analyze.json → bugz/bug-analyze.json} +43 -25
  25. package/dist/pipeline/flow-specs/{bug-fix.json → bugz/bug-fix.json} +5 -4
  26. package/dist/pipeline/flow-specs/git-commit.json +196 -0
  27. package/dist/pipeline/flow-specs/{gitlab-diff-review.json → gitlab/gitlab-diff-review.json} +20 -50
  28. package/dist/pipeline/flow-specs/gitlab/gitlab-review.json +165 -0
  29. package/dist/pipeline/flow-specs/{mr-description.json → gitlab/mr-description.json} +17 -10
  30. package/dist/pipeline/flow-specs/{run-go-linter-loop.json → go/run-go-linter-loop.json} +40 -14
  31. package/dist/pipeline/flow-specs/{run-go-tests-loop.json → go/run-go-tests-loop.json} +40 -14
  32. package/dist/pipeline/flow-specs/implement.json +5 -4
  33. package/dist/pipeline/flow-specs/plan.json +40 -148
  34. package/dist/pipeline/flow-specs/{review-fix.json → review/review-fix.json} +73 -13
  35. package/dist/pipeline/flow-specs/review/review-loop.json +280 -0
  36. package/dist/pipeline/flow-specs/review/review-project.json +87 -0
  37. package/dist/pipeline/flow-specs/review/review.json +126 -0
  38. package/dist/pipeline/flow-specs/task-describe.json +191 -11
  39. package/dist/pipeline/launch-profile-config.js +38 -0
  40. package/dist/pipeline/node-registry.js +75 -45
  41. package/dist/pipeline/nodes/build-failure-summary-node.js +16 -29
  42. package/dist/pipeline/nodes/build-review-fix-prompt-node.js +36 -0
  43. package/dist/pipeline/nodes/codex-prompt-node.js +41 -0
  44. package/dist/pipeline/nodes/commit-message-form-node.js +79 -0
  45. package/dist/pipeline/nodes/git-commit-form-node.js +138 -0
  46. package/dist/pipeline/nodes/git-commit-node.js +28 -0
  47. package/dist/pipeline/nodes/git-status-node.js +221 -0
  48. package/dist/pipeline/nodes/gitlab-review-artifacts-node.js +10 -6
  49. package/dist/pipeline/nodes/jira-context-node.js +10 -0
  50. package/dist/pipeline/nodes/llm-prompt-node.js +62 -0
  51. package/dist/pipeline/nodes/plan-codex-node.js +1 -1
  52. package/dist/pipeline/nodes/read-file-node.js +11 -0
  53. package/dist/pipeline/nodes/review-findings-form-node.js +18 -14
  54. package/dist/pipeline/nodes/select-files-form-node.js +72 -0
  55. package/dist/pipeline/nodes/telegram-notifier-node.js +28 -0
  56. package/dist/pipeline/nodes/user-input-node.js +29 -8
  57. package/dist/pipeline/nodes/write-selection-file-node.js +46 -0
  58. package/dist/pipeline/prompt-registry.js +2 -4
  59. package/dist/pipeline/prompt-runtime.js +13 -3
  60. package/dist/pipeline/registry.js +6 -8
  61. package/dist/pipeline/spec-compiler.js +5 -0
  62. package/dist/pipeline/spec-loader.js +18 -7
  63. package/dist/pipeline/spec-types.js +7 -3
  64. package/dist/pipeline/spec-validator.js +4 -0
  65. package/dist/pipeline/types.js +1 -0
  66. package/dist/pipeline/value-resolver.js +40 -38
  67. package/dist/prompts.js +104 -110
  68. package/dist/runtime/agentweaver-home.js +8 -0
  69. package/dist/runtime/command-resolution.js +0 -38
  70. package/dist/runtime/env-loader.js +43 -0
  71. package/dist/runtime/process-runner.js +45 -1
  72. package/dist/structured-artifact-schema-registry.js +53 -0
  73. package/dist/structured-artifact-schemas.json +0 -20
  74. package/dist/structured-artifacts.js +3 -43
  75. package/dist/user-input.js +30 -2
  76. package/package.json +2 -6
  77. package/Dockerfile.codex +0 -56
  78. package/dist/executors/claude-executor.js +0 -46
  79. package/dist/executors/codex-docker-executor.js +0 -27
  80. package/dist/executors/configs/claude-config.js +0 -12
  81. package/dist/executors/configs/codex-docker-config.js +0 -10
  82. package/dist/executors/configs/verify-build-config.js +0 -7
  83. package/dist/executors/verify-build-executor.js +0 -123
  84. package/dist/pipeline/flow-specs/auto.json +0 -979
  85. package/dist/pipeline/flow-specs/gitlab-review.json +0 -317
  86. package/dist/pipeline/flow-specs/plan-opencode.json +0 -603
  87. package/dist/pipeline/flow-specs/preflight.json +0 -206
  88. package/dist/pipeline/flow-specs/review-project.json +0 -243
  89. package/dist/pipeline/flow-specs/review.json +0 -312
  90. package/dist/pipeline/flow-specs/run-linter-loop.json +0 -155
  91. package/dist/pipeline/flow-specs/run-tests-loop.json +0 -155
  92. package/dist/pipeline/flows/preflight-flow.js +0 -19
  93. package/dist/pipeline/nodes/claude-prompt-node.js +0 -54
  94. package/dist/pipeline/nodes/codex-docker-prompt-node.js +0 -32
  95. package/dist/pipeline/nodes/codex-local-prompt-node.js +0 -32
  96. package/dist/pipeline/nodes/review-claude-node.js +0 -38
  97. package/dist/pipeline/nodes/review-reply-codex-node.js +0 -40
  98. package/dist/pipeline/nodes/verify-build-node.js +0 -15
  99. package/dist/runtime/docker-runtime.js +0 -51
  100. package/docker-compose.yml +0 -445
  101. package/verify_build.sh +0 -105
@@ -1,979 +0,0 @@
1
- {
2
- "kind": "auto-flow",
3
- "version": 1,
4
- "constants": {
5
- "autoReviewFixExtraPrompt": "Исправлять только блокеры, критикалы и важные"
6
- },
7
- "phases": [
8
- {
9
- "id": "plan",
10
- "steps": [
11
- {
12
- "id": "fetch_jira",
13
- "node": "jira-fetch",
14
- "params": {
15
- "jiraApiUrl": { "ref": "params.jiraApiUrl" },
16
- "outputFile": {
17
- "artifact": {
18
- "kind": "jira-task-file",
19
- "taskKey": { "ref": "params.taskKey" }
20
- }
21
- },
22
- "attachmentsManifestFile": {
23
- "artifact": {
24
- "kind": "jira-attachments-manifest-file",
25
- "taskKey": { "ref": "params.taskKey" }
26
- }
27
- },
28
- "attachmentsContextFile": {
29
- "artifact": {
30
- "kind": "jira-attachments-context-file",
31
- "taskKey": { "ref": "params.taskKey" }
32
- }
33
- }
34
- },
35
- "expect": [
36
- {
37
- "kind": "require-file",
38
- "path": {
39
- "artifact": {
40
- "kind": "jira-task-file",
41
- "taskKey": { "ref": "params.taskKey" }
42
- }
43
- },
44
- "message": "Jira fetch node did not produce the Jira task file."
45
- },
46
- {
47
- "kind": "require-file",
48
- "path": {
49
- "artifact": {
50
- "kind": "jira-attachments-manifest-file",
51
- "taskKey": { "ref": "params.taskKey" }
52
- }
53
- },
54
- "message": "Jira fetch node did not produce the Jira attachments manifest file."
55
- },
56
- {
57
- "kind": "require-file",
58
- "path": {
59
- "artifact": {
60
- "kind": "jira-attachments-context-file",
61
- "taskKey": { "ref": "params.taskKey" }
62
- }
63
- },
64
- "message": "Jira fetch node did not produce the Jira attachments context file."
65
- }
66
- ]
67
- },
68
- {
69
- "id": "load_existing_task_summary",
70
- "when": {
71
- "all": [
72
- { "not": { "ref": "params.forceRefresh" } },
73
- {
74
- "exists": {
75
- "artifact": {
76
- "kind": "task-summary-file",
77
- "taskKey": { "ref": "params.taskKey" }
78
- }
79
- }
80
- }
81
- ]
82
- },
83
- "node": "summary-file-load",
84
- "params": {
85
- "path": {
86
- "artifact": {
87
- "kind": "task-summary-file",
88
- "taskKey": { "ref": "params.taskKey" }
89
- }
90
- }
91
- }
92
- },
93
- {
94
- "id": "generate_task_summary",
95
- "when": {
96
- "any": [
97
- { "ref": "params.forceRefresh" },
98
- {
99
- "not": {
100
- "exists": {
101
- "artifact": {
102
- "kind": "task-summary-file",
103
- "taskKey": { "ref": "params.taskKey" }
104
- }
105
- }
106
- }
107
- }
108
- ]
109
- },
110
- "node": "claude-prompt",
111
- "prompt": {
112
- "templateRef": "task-summary",
113
- "vars": {
114
- "jira_task_file": {
115
- "artifact": {
116
- "kind": "jira-task-file",
117
- "taskKey": { "ref": "params.taskKey" }
118
- }
119
- },
120
- "task_summary_file": {
121
- "artifact": {
122
- "kind": "task-summary-file",
123
- "taskKey": { "ref": "params.taskKey" }
124
- }
125
- },
126
- "task_summary_json_file": {
127
- "artifact": {
128
- "kind": "task-summary-json-file",
129
- "taskKey": { "ref": "params.taskKey" }
130
- }
131
- }
132
- },
133
- "format": "plain"
134
- },
135
- "params": {
136
- "labelText": { "const": "Preparing task summary" },
137
- "outputFile": {
138
- "artifact": {
139
- "kind": "task-summary-file",
140
- "taskKey": { "ref": "params.taskKey" }
141
- }
142
- },
143
- "requiredArtifacts": {
144
- "list": [
145
- {
146
- "artifact": {
147
- "kind": "task-summary-json-file",
148
- "taskKey": { "ref": "params.taskKey" }
149
- }
150
- }
151
- ]
152
- },
153
- "model": { "const": "haiku" }
154
- },
155
- "expect": [
156
- {
157
- "kind": "require-artifacts",
158
- "when": { "not": { "ref": "context.dryRun" } },
159
- "paths": {
160
- "list": [
161
- {
162
- "artifact": {
163
- "kind": "task-summary-file",
164
- "taskKey": { "ref": "params.taskKey" }
165
- }
166
- }
167
- ]
168
- },
169
- "message": "Claude summary did not produce the task summary artifact."
170
- },
171
- {
172
- "kind": "require-structured-artifacts",
173
- "when": { "not": { "ref": "context.dryRun" } },
174
- "items": [
175
- {
176
- "path": {
177
- "artifact": {
178
- "kind": "task-summary-json-file",
179
- "taskKey": { "ref": "params.taskKey" }
180
- }
181
- },
182
- "schemaId": "task-summary/v1"
183
- }
184
- ],
185
- "message": "Claude summary produced invalid structured artifacts."
186
- }
187
- ],
188
- "after": [
189
- {
190
- "kind": "set-summary-from-file",
191
- "when": { "not": { "ref": "context.dryRun" } },
192
- "path": {
193
- "artifact": {
194
- "kind": "task-summary-file",
195
- "taskKey": { "ref": "params.taskKey" }
196
- }
197
- }
198
- }
199
- ]
200
- },
201
- {
202
- "id": "generate_planning_questions",
203
- "node": "codex-local-prompt",
204
- "prompt": {
205
- "templateRef": "plan-questions",
206
- "vars": {
207
- "jira_task_file": {
208
- "artifact": {
209
- "kind": "jira-task-file",
210
- "taskKey": { "ref": "params.taskKey" }
211
- }
212
- },
213
- "jira_attachments_manifest_file": {
214
- "artifact": {
215
- "kind": "jira-attachments-manifest-file",
216
- "taskKey": { "ref": "params.taskKey" }
217
- }
218
- },
219
- "jira_attachments_context_file": {
220
- "artifact": {
221
- "kind": "jira-attachments-context-file",
222
- "taskKey": { "ref": "params.taskKey" }
223
- }
224
- },
225
- "planning_questions_json_file": {
226
- "artifact": {
227
- "kind": "planning-questions-json-file",
228
- "taskKey": { "ref": "params.taskKey" }
229
- }
230
- }
231
- },
232
- "extraPrompt": { "ref": "params.extraPrompt" },
233
- "format": "task-prompt"
234
- },
235
- "params": {
236
- "labelText": { "const": "Generating planning questions" },
237
- "model": { "const": "gpt-5.4" },
238
- "requiredArtifacts": {
239
- "list": [
240
- {
241
- "artifact": {
242
- "kind": "planning-questions-json-file",
243
- "taskKey": { "ref": "params.taskKey" }
244
- }
245
- }
246
- ]
247
- }
248
- },
249
- "expect": [
250
- {
251
- "kind": "require-artifacts",
252
- "when": { "not": { "ref": "context.dryRun" } },
253
- "paths": {
254
- "list": [
255
- {
256
- "artifact": {
257
- "kind": "planning-questions-json-file",
258
- "taskKey": { "ref": "params.taskKey" }
259
- }
260
- }
261
- ]
262
- },
263
- "message": "Planning questions step did not produce the questions artifact."
264
- },
265
- {
266
- "kind": "require-structured-artifacts",
267
- "when": { "not": { "ref": "context.dryRun" } },
268
- "items": [
269
- {
270
- "path": {
271
- "artifact": {
272
- "kind": "planning-questions-json-file",
273
- "taskKey": { "ref": "params.taskKey" }
274
- }
275
- },
276
- "schemaId": "planning-questions/v1"
277
- }
278
- ],
279
- "message": "Planning questions step produced invalid structured artifacts."
280
- }
281
- ]
282
- },
283
- {
284
- "id": "build_planning_questions_form",
285
- "node": "planning-questions-form",
286
- "params": {
287
- "planningQuestionsJsonFile": {
288
- "artifact": {
289
- "kind": "planning-questions-json-file",
290
- "taskKey": { "ref": "params.taskKey" }
291
- }
292
- },
293
- "formId": { "const": "planning-questions" },
294
- "title": { "const": "Planning Questions" },
295
- "description": {
296
- "const": "Ответьте на вопросы модели, если они нужны для точного design/plan. Если вопросов нет, шаг завершится автоматически."
297
- }
298
- }
299
- },
300
- {
301
- "id": "collect_planning_answers",
302
- "node": "user-input",
303
- "params": {
304
- "formId": { "ref": "steps.plan.build_planning_questions_form.value.formId" },
305
- "title": { "ref": "steps.plan.build_planning_questions_form.value.title" },
306
- "description": { "ref": "steps.plan.build_planning_questions_form.value.description" },
307
- "submitLabel": { "const": "Continue planning" },
308
- "fields": { "ref": "steps.plan.build_planning_questions_form.value.fields" },
309
- "outputFile": {
310
- "artifact": {
311
- "kind": "planning-answers-json-file",
312
- "taskKey": { "ref": "params.taskKey" }
313
- }
314
- }
315
- },
316
- "expect": [
317
- {
318
- "kind": "require-structured-artifacts",
319
- "items": [
320
- {
321
- "path": {
322
- "artifact": {
323
- "kind": "planning-answers-json-file",
324
- "taskKey": { "ref": "params.taskKey" }
325
- }
326
- },
327
- "schemaId": "user-input/v1"
328
- }
329
- ],
330
- "message": "Planning answers input is missing or invalid."
331
- }
332
- ]
333
- },
334
- {
335
- "id": "run_codex_plan",
336
- "node": "codex-local-prompt",
337
- "prompt": {
338
- "templateRef": "plan",
339
- "vars": {
340
- "jira_task_file": {
341
- "artifact": {
342
- "kind": "jira-task-file",
343
- "taskKey": { "ref": "params.taskKey" }
344
- }
345
- },
346
- "jira_attachments_manifest_file": {
347
- "artifact": {
348
- "kind": "jira-attachments-manifest-file",
349
- "taskKey": { "ref": "params.taskKey" }
350
- }
351
- },
352
- "jira_attachments_context_file": {
353
- "artifact": {
354
- "kind": "jira-attachments-context-file",
355
- "taskKey": { "ref": "params.taskKey" }
356
- }
357
- },
358
- "design_file": {
359
- "artifact": {
360
- "kind": "design-file",
361
- "taskKey": { "ref": "params.taskKey" }
362
- }
363
- },
364
- "design_json_file": {
365
- "artifact": {
366
- "kind": "design-json-file",
367
- "taskKey": { "ref": "params.taskKey" }
368
- }
369
- },
370
- "plan_file": {
371
- "artifact": {
372
- "kind": "plan-file",
373
- "taskKey": { "ref": "params.taskKey" }
374
- }
375
- },
376
- "plan_json_file": {
377
- "artifact": {
378
- "kind": "plan-json-file",
379
- "taskKey": { "ref": "params.taskKey" }
380
- }
381
- },
382
- "qa_file": {
383
- "artifact": {
384
- "kind": "qa-file",
385
- "taskKey": { "ref": "params.taskKey" }
386
- }
387
- },
388
- "qa_json_file": {
389
- "artifact": {
390
- "kind": "qa-json-file",
391
- "taskKey": { "ref": "params.taskKey" }
392
- }
393
- }
394
- },
395
- "extraPrompt": {
396
- "appendPrompt": {
397
- "base": { "ref": "params.extraPrompt" },
398
- "suffix": { "ref": "steps.plan.collect_planning_answers.value.promptSuffix" }
399
- }
400
- },
401
- "format": "task-prompt"
402
- },
403
- "params": {
404
- "labelText": { "const": "Running Codex planning mode" },
405
- "model": { "const": "gpt-5.4" }
406
- },
407
- "expect": [
408
- {
409
- "kind": "require-artifacts",
410
- "when": { "not": { "ref": "context.dryRun" } },
411
- "paths": {
412
- "artifactList": {
413
- "kind": "plan-artifacts",
414
- "taskKey": { "ref": "params.taskKey" }
415
- }
416
- },
417
- "message": "Plan mode did not produce the required artifacts."
418
- },
419
- {
420
- "kind": "require-structured-artifacts",
421
- "when": { "not": { "ref": "context.dryRun" } },
422
- "items": [
423
- {
424
- "path": {
425
- "artifact": {
426
- "kind": "design-json-file",
427
- "taskKey": { "ref": "params.taskKey" }
428
- }
429
- },
430
- "schemaId": "implementation-design/v1"
431
- },
432
- {
433
- "path": {
434
- "artifact": {
435
- "kind": "plan-json-file",
436
- "taskKey": { "ref": "params.taskKey" }
437
- }
438
- },
439
- "schemaId": "implementation-plan/v1"
440
- },
441
- {
442
- "path": {
443
- "artifact": {
444
- "kind": "qa-json-file",
445
- "taskKey": { "ref": "params.taskKey" }
446
- }
447
- },
448
- "schemaId": "qa-plan/v1"
449
- }
450
- ],
451
- "message": "Plan mode produced invalid structured artifacts."
452
- }
453
- ]
454
- }
455
- ]
456
- },
457
- {
458
- "id": "implement",
459
- "steps": [
460
- {
461
- "id": "run_codex_implement",
462
- "node": "codex-local-prompt",
463
- "prompt": {
464
- "templateRef": "implement",
465
- "vars": {
466
- "design_file": {
467
- "artifact": {
468
- "kind": "design-file",
469
- "taskKey": { "ref": "params.taskKey" }
470
- }
471
- },
472
- "design_json_file": {
473
- "artifact": {
474
- "kind": "design-json-file",
475
- "taskKey": { "ref": "params.taskKey" }
476
- }
477
- },
478
- "plan_file": {
479
- "artifact": {
480
- "kind": "plan-file",
481
- "taskKey": { "ref": "params.taskKey" }
482
- }
483
- },
484
- "plan_json_file": {
485
- "artifact": {
486
- "kind": "plan-json-file",
487
- "taskKey": { "ref": "params.taskKey" }
488
- }
489
- }
490
- },
491
- "extraPrompt": { "ref": "params.extraPrompt" },
492
- "format": "task-prompt"
493
- },
494
- "params": {
495
- "labelText": { "const": "Running Codex implementation mode locally" },
496
- "model": { "const": "gpt-5.4" }
497
- }
498
- }
499
- ]
500
- },
501
- {
502
- "id": "run_go_linter_loop_after_implement",
503
- "steps": [
504
- {
505
- "id": "run_go_linter_loop",
506
- "node": "flow-run",
507
- "params": {
508
- "fileName": { "const": "run-go-linter-loop.json" },
509
- "labelText": { "const": "Running run-go-linter-loop after implement" },
510
- "taskKey": { "ref": "params.taskKey" },
511
- "runGoLinterScript": { "ref": "params.runGoLinterScript" },
512
- "extraPrompt": { "ref": "params.extraPrompt" }
513
- }
514
- }
515
- ]
516
- },
517
- {
518
- "id": "run_go_tests_loop_after_implement",
519
- "steps": [
520
- {
521
- "id": "run_go_tests_loop",
522
- "node": "flow-run",
523
- "params": {
524
- "fileName": { "const": "run-go-tests-loop.json" },
525
- "labelText": { "const": "Running run-go-tests-loop after implement" },
526
- "taskKey": { "ref": "params.taskKey" },
527
- "runGoTestsScript": { "ref": "params.runGoTestsScript" },
528
- "extraPrompt": { "ref": "params.extraPrompt" }
529
- }
530
- }
531
- ]
532
- },
533
- {
534
- "id": "review",
535
- "when": {
536
- "not": {
537
- "exists": {
538
- "artifact": {
539
- "kind": "ready-to-merge-file",
540
- "taskKey": { "ref": "params.taskKey" }
541
- }
542
- }
543
- }
544
- },
545
- "steps": [
546
- {
547
- "id": "run_claude_review",
548
- "node": "claude-prompt",
549
- "prompt": {
550
- "templateRef": "review",
551
- "vars": {
552
- "jira_task_file": {
553
- "artifact": {
554
- "kind": "jira-task-file",
555
- "taskKey": { "ref": "params.taskKey" }
556
- }
557
- },
558
- "design_file": {
559
- "artifact": {
560
- "kind": "design-file",
561
- "taskKey": { "ref": "params.taskKey" }
562
- }
563
- },
564
- "design_json_file": {
565
- "artifact": {
566
- "kind": "design-json-file",
567
- "taskKey": { "ref": "params.taskKey" }
568
- }
569
- },
570
- "plan_file": {
571
- "artifact": {
572
- "kind": "plan-file",
573
- "taskKey": { "ref": "params.taskKey" }
574
- }
575
- },
576
- "plan_json_file": {
577
- "artifact": {
578
- "kind": "plan-json-file",
579
- "taskKey": { "ref": "params.taskKey" }
580
- }
581
- },
582
- "review_file": {
583
- "artifact": {
584
- "kind": "review-file",
585
- "taskKey": { "ref": "params.taskKey" },
586
- "iteration": { "const": 1 }
587
- }
588
- },
589
- "review_json_file": {
590
- "artifact": {
591
- "kind": "review-json-file",
592
- "taskKey": { "ref": "params.taskKey" },
593
- "iteration": { "const": 1 }
594
- }
595
- }
596
- },
597
- "extraPrompt": { "ref": "params.extraPrompt" },
598
- "format": "task-prompt"
599
- },
600
- "params": {
601
- "labelText": { "const": "Running Claude review mode" },
602
- "model": { "const": "opus" }
603
- },
604
- "expect": [
605
- {
606
- "kind": "require-artifacts",
607
- "when": { "not": { "ref": "context.dryRun" } },
608
- "paths": {
609
- "list": [
610
- {
611
- "artifact": {
612
- "kind": "review-file",
613
- "taskKey": { "ref": "params.taskKey" },
614
- "iteration": { "const": 1 }
615
- }
616
- }
617
- ]
618
- },
619
- "message": "Claude review did not produce the required review artifact."
620
- },
621
- {
622
- "kind": "require-structured-artifacts",
623
- "when": { "not": { "ref": "context.dryRun" } },
624
- "items": [
625
- {
626
- "path": {
627
- "artifact": {
628
- "kind": "review-json-file",
629
- "taskKey": { "ref": "params.taskKey" },
630
- "iteration": { "const": 1 }
631
- }
632
- },
633
- "schemaId": "review-findings/v1"
634
- }
635
- ],
636
- "message": "Claude review produced invalid structured artifacts."
637
- }
638
- ]
639
- },
640
- {
641
- "id": "summarize_review",
642
- "when": { "not": { "ref": "context.dryRun" } },
643
- "node": "claude-prompt",
644
- "prompt": {
645
- "templateRef": "review-summary",
646
- "vars": {
647
- "review_file": {
648
- "artifact": {
649
- "kind": "review-file",
650
- "taskKey": { "ref": "params.taskKey" },
651
- "iteration": { "const": 1 }
652
- }
653
- },
654
- "review_summary_file": {
655
- "artifact": {
656
- "kind": "review-summary-file",
657
- "taskKey": { "ref": "params.taskKey" },
658
- "iteration": { "const": 1 }
659
- }
660
- }
661
- },
662
- "format": "plain"
663
- },
664
- "params": {
665
- "labelText": { "const": "Preparing Claude review summary" },
666
- "outputFile": {
667
- "artifact": {
668
- "kind": "review-summary-file",
669
- "taskKey": { "ref": "params.taskKey" },
670
- "iteration": { "const": 1 }
671
- }
672
- },
673
- "summaryTitle": { "const": "Claude Comments" },
674
- "model": { "const": "haiku" }
675
- }
676
- },
677
- {
678
- "id": "run_codex_review_reply",
679
- "node": "codex-local-prompt",
680
- "prompt": {
681
- "templateRef": "review-reply",
682
- "vars": {
683
- "review_file": {
684
- "artifact": {
685
- "kind": "review-file",
686
- "taskKey": { "ref": "params.taskKey" },
687
- "iteration": { "const": 1 }
688
- }
689
- },
690
- "review_json_file": {
691
- "artifact": {
692
- "kind": "review-json-file",
693
- "taskKey": { "ref": "params.taskKey" },
694
- "iteration": { "const": 1 }
695
- }
696
- },
697
- "jira_task_file": {
698
- "artifact": {
699
- "kind": "jira-task-file",
700
- "taskKey": { "ref": "params.taskKey" }
701
- }
702
- },
703
- "design_file": {
704
- "artifact": {
705
- "kind": "design-file",
706
- "taskKey": { "ref": "params.taskKey" }
707
- }
708
- },
709
- "design_json_file": {
710
- "artifact": {
711
- "kind": "design-json-file",
712
- "taskKey": { "ref": "params.taskKey" }
713
- }
714
- },
715
- "plan_file": {
716
- "artifact": {
717
- "kind": "plan-file",
718
- "taskKey": { "ref": "params.taskKey" }
719
- }
720
- },
721
- "plan_json_file": {
722
- "artifact": {
723
- "kind": "plan-json-file",
724
- "taskKey": { "ref": "params.taskKey" }
725
- }
726
- },
727
- "review_reply_file": {
728
- "artifact": {
729
- "kind": "review-reply-file",
730
- "taskKey": { "ref": "params.taskKey" },
731
- "iteration": { "const": 1 }
732
- }
733
- },
734
- "review_reply_json_file": {
735
- "artifact": {
736
- "kind": "review-reply-json-file",
737
- "taskKey": { "ref": "params.taskKey" },
738
- "iteration": { "const": 1 }
739
- }
740
- }
741
- },
742
- "extraPrompt": { "ref": "params.extraPrompt" },
743
- "format": "task-prompt"
744
- },
745
- "params": {
746
- "labelText": { "const": "Running Codex review reply mode" },
747
- "model": { "const": "gpt-5.4" }
748
- },
749
- "expect": [
750
- {
751
- "kind": "require-artifacts",
752
- "when": { "not": { "ref": "context.dryRun" } },
753
- "paths": {
754
- "list": [
755
- {
756
- "artifact": {
757
- "kind": "review-reply-file",
758
- "taskKey": { "ref": "params.taskKey" },
759
- "iteration": { "const": 1 }
760
- }
761
- }
762
- ]
763
- },
764
- "message": "Codex review reply did not produce the required review-reply artifact."
765
- },
766
- {
767
- "kind": "require-structured-artifacts",
768
- "when": { "not": { "ref": "context.dryRun" } },
769
- "items": [
770
- {
771
- "path": {
772
- "artifact": {
773
- "kind": "review-reply-json-file",
774
- "taskKey": { "ref": "params.taskKey" },
775
- "iteration": { "const": 1 }
776
- }
777
- },
778
- "schemaId": "review-reply/v1"
779
- }
780
- ],
781
- "message": "Codex review reply produced invalid structured artifacts."
782
- }
783
- ]
784
- },
785
- {
786
- "id": "summarize_review_reply",
787
- "when": { "not": { "ref": "context.dryRun" } },
788
- "node": "claude-prompt",
789
- "prompt": {
790
- "templateRef": "review-reply-summary",
791
- "vars": {
792
- "review_reply_file": {
793
- "artifact": {
794
- "kind": "review-reply-file",
795
- "taskKey": { "ref": "params.taskKey" },
796
- "iteration": { "const": 1 }
797
- }
798
- },
799
- "review_reply_summary_file": {
800
- "artifact": {
801
- "kind": "review-reply-summary-file",
802
- "taskKey": { "ref": "params.taskKey" },
803
- "iteration": { "const": 1 }
804
- }
805
- }
806
- },
807
- "format": "plain"
808
- },
809
- "params": {
810
- "labelText": { "const": "Preparing Codex reply summary" },
811
- "outputFile": {
812
- "artifact": {
813
- "kind": "review-reply-summary-file",
814
- "taskKey": { "ref": "params.taskKey" },
815
- "iteration": { "const": 1 }
816
- }
817
- },
818
- "summaryTitle": { "const": "Codex Reply Summary" },
819
- "model": { "const": "haiku" }
820
- }
821
- },
822
- {
823
- "id": "check_ready_to_merge",
824
- "node": "file-check",
825
- "stopFlowIf": {
826
- "ref": "steps.review.check_ready_to_merge.outputs.exists"
827
- },
828
- "params": {
829
- "path": {
830
- "artifact": {
831
- "kind": "ready-to-merge-file",
832
- "taskKey": { "ref": "params.taskKey" }
833
- }
834
- },
835
- "panelTitle": { "const": "Ready To Merge" },
836
- "foundMessage": { "const": "Изменения готовы к merge\nФайл ready-to-merge.md создан." },
837
- "tone": { "const": "green" }
838
- }
839
- }
840
- ]
841
- },
842
- {
843
- "id": "review_fix",
844
- "when": {
845
- "not": {
846
- "ref": "steps.review.check_ready_to_merge.outputs.exists"
847
- }
848
- },
849
- "steps": [
850
- {
851
- "id": "run_codex_review_fix",
852
- "node": "codex-local-prompt",
853
- "prompt": {
854
- "templateRef": "review-fix",
855
- "vars": {
856
- "review_reply_file": {
857
- "artifact": {
858
- "kind": "review-reply-file",
859
- "taskKey": { "ref": "params.taskKey" },
860
- "iteration": { "const": 1 }
861
- }
862
- },
863
- "review_reply_json_file": {
864
- "artifact": {
865
- "kind": "review-reply-json-file",
866
- "taskKey": { "ref": "params.taskKey" },
867
- "iteration": { "const": 1 }
868
- }
869
- },
870
- "items": { "ref": "params.reviewFixPoints" },
871
- "review_fix_file": {
872
- "artifact": {
873
- "kind": "review-fix-file",
874
- "taskKey": { "ref": "params.taskKey" },
875
- "iteration": { "const": 1 }
876
- }
877
- },
878
- "review_fix_json_file": {
879
- "artifact": {
880
- "kind": "review-fix-json-file",
881
- "taskKey": { "ref": "params.taskKey" },
882
- "iteration": { "const": 1 }
883
- }
884
- }
885
- },
886
- "extraPrompt": {
887
- "appendPrompt": {
888
- "base": { "ref": "params.extraPrompt" },
889
- "suffix": { "ref": "flow.autoReviewFixExtraPrompt" }
890
- }
891
- },
892
- "format": "task-prompt"
893
- },
894
- "params": {
895
- "labelText": { "const": "Running Codex review-fix mode locally" },
896
- "model": { "const": "gpt-5.4" }
897
- },
898
- "expect": [
899
- {
900
- "kind": "require-artifacts",
901
- "when": { "not": { "ref": "context.dryRun" } },
902
- "paths": {
903
- "list": [
904
- {
905
- "artifact": {
906
- "kind": "review-fix-file",
907
- "taskKey": { "ref": "params.taskKey" },
908
- "iteration": { "const": 1 }
909
- }
910
- }
911
- ]
912
- },
913
- "message": "Review-fix mode did not produce the required review-fix artifact."
914
- },
915
- {
916
- "kind": "require-structured-artifacts",
917
- "when": { "not": { "ref": "context.dryRun" } },
918
- "items": [
919
- {
920
- "path": {
921
- "artifact": {
922
- "kind": "review-fix-json-file",
923
- "taskKey": { "ref": "params.taskKey" },
924
- "iteration": { "const": 1 }
925
- }
926
- },
927
- "schemaId": "review-fix-report/v1"
928
- }
929
- ],
930
- "message": "Review-fix mode produced invalid structured artifacts."
931
- }
932
- ]
933
- }
934
- ]
935
- },
936
- {
937
- "id": "run_go_linter_loop_after_review_fix",
938
- "when": {
939
- "not": {
940
- "ref": "steps.review.check_ready_to_merge.outputs.exists"
941
- }
942
- },
943
- "steps": [
944
- {
945
- "id": "run_go_linter_loop",
946
- "node": "flow-run",
947
- "params": {
948
- "fileName": { "const": "run-go-linter-loop.json" },
949
- "labelText": { "const": "Running run-go-linter-loop after review-fix" },
950
- "taskKey": { "ref": "params.taskKey" },
951
- "runGoLinterScript": { "ref": "params.runGoLinterScript" },
952
- "extraPrompt": { "ref": "params.extraPrompt" }
953
- }
954
- }
955
- ]
956
- },
957
- {
958
- "id": "run_go_tests_loop_after_review_fix",
959
- "when": {
960
- "not": {
961
- "ref": "steps.review.check_ready_to_merge.outputs.exists"
962
- }
963
- },
964
- "steps": [
965
- {
966
- "id": "run_go_tests_loop",
967
- "node": "flow-run",
968
- "params": {
969
- "fileName": { "const": "run-go-tests-loop.json" },
970
- "labelText": { "const": "Running run-go-tests-loop after review-fix" },
971
- "taskKey": { "ref": "params.taskKey" },
972
- "runGoTestsScript": { "ref": "params.runGoTestsScript" },
973
- "extraPrompt": { "ref": "params.extraPrompt" }
974
- }
975
- }
976
- ]
977
- }
978
- ]
979
- }