agentweaver 0.1.10 → 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 (106) hide show
  1. package/README.md +218 -224
  2. package/dist/artifacts.js +100 -55
  3. package/dist/executors/{codex-local-executor.js → codex-executor.js} +4 -4
  4. package/dist/executors/configs/{codex-local-config.js → codex-config.js} +1 -1
  5. package/dist/executors/configs/jira-fetch-config.js +2 -0
  6. package/dist/executors/configs/telegram-notifier-config.js +3 -0
  7. package/dist/executors/fetch-gitlab-diff-executor.js +1 -1
  8. package/dist/executors/fetch-gitlab-review-executor.js +1 -1
  9. package/dist/executors/git-commit-executor.js +25 -0
  10. package/dist/executors/telegram-notifier-executor.js +54 -0
  11. package/dist/flow-state.js +46 -1
  12. package/dist/gitlab.js +13 -8
  13. package/dist/index.js +469 -514
  14. package/dist/interactive-ui.js +144 -43
  15. package/dist/jira.js +52 -5
  16. package/dist/pipeline/auto-flow.js +6 -6
  17. package/dist/pipeline/context.js +1 -0
  18. package/dist/pipeline/flow-catalog.js +34 -4
  19. package/dist/pipeline/flow-model-settings.js +77 -0
  20. package/dist/pipeline/flow-specs/auto-common.json +446 -0
  21. package/dist/pipeline/flow-specs/auto-golang.json +563 -0
  22. package/dist/pipeline/flow-specs/{bug-analyze.json → bugz/bug-analyze.json} +43 -25
  23. package/dist/pipeline/flow-specs/{bug-fix.json → bugz/bug-fix.json} +5 -4
  24. package/dist/pipeline/flow-specs/git-commit.json +196 -0
  25. package/dist/pipeline/flow-specs/{gitlab-diff-review.json → gitlab/gitlab-diff-review.json} +20 -50
  26. package/dist/pipeline/flow-specs/gitlab/gitlab-review.json +165 -0
  27. package/dist/pipeline/flow-specs/{mr-description.json → gitlab/mr-description.json} +17 -10
  28. package/dist/pipeline/flow-specs/{run-go-linter-loop.json → go/run-go-linter-loop.json} +40 -14
  29. package/dist/pipeline/flow-specs/{run-go-tests-loop.json → go/run-go-tests-loop.json} +40 -14
  30. package/dist/pipeline/flow-specs/implement.json +5 -4
  31. package/dist/pipeline/flow-specs/plan.json +40 -148
  32. package/dist/pipeline/flow-specs/{review-fix.json → review/review-fix.json} +73 -13
  33. package/dist/pipeline/flow-specs/review/review-loop.json +280 -0
  34. package/dist/pipeline/flow-specs/review/review-project.json +87 -0
  35. package/dist/pipeline/flow-specs/review/review.json +126 -0
  36. package/dist/pipeline/flow-specs/task-describe.json +191 -11
  37. package/dist/pipeline/launch-profile-config.js +38 -0
  38. package/dist/pipeline/node-registry.js +75 -45
  39. package/dist/pipeline/nodes/build-failure-summary-node.js +16 -29
  40. package/dist/pipeline/nodes/build-review-fix-prompt-node.js +36 -0
  41. package/dist/pipeline/nodes/codex-prompt-node.js +41 -0
  42. package/dist/pipeline/nodes/commit-message-form-node.js +79 -0
  43. package/dist/pipeline/nodes/git-commit-form-node.js +138 -0
  44. package/dist/pipeline/nodes/git-commit-node.js +28 -0
  45. package/dist/pipeline/nodes/git-status-node.js +221 -0
  46. package/dist/pipeline/nodes/gitlab-review-artifacts-node.js +10 -6
  47. package/dist/pipeline/nodes/jira-context-node.js +10 -0
  48. package/dist/pipeline/nodes/llm-prompt-node.js +62 -0
  49. package/dist/pipeline/nodes/plan-codex-node.js +1 -1
  50. package/dist/pipeline/nodes/read-file-node.js +11 -0
  51. package/dist/pipeline/nodes/review-findings-form-node.js +18 -14
  52. package/dist/pipeline/nodes/select-files-form-node.js +72 -0
  53. package/dist/pipeline/nodes/telegram-notifier-node.js +28 -0
  54. package/dist/pipeline/nodes/user-input-node.js +29 -8
  55. package/dist/pipeline/nodes/write-selection-file-node.js +46 -0
  56. package/dist/pipeline/prompt-registry.js +2 -4
  57. package/dist/pipeline/prompt-runtime.js +13 -3
  58. package/dist/pipeline/registry.js +6 -8
  59. package/dist/pipeline/spec-compiler.js +5 -0
  60. package/dist/pipeline/spec-types.js +7 -3
  61. package/dist/pipeline/spec-validator.js +4 -0
  62. package/dist/pipeline/types.js +1 -0
  63. package/dist/pipeline/value-resolver.js +40 -38
  64. package/dist/prompts.js +104 -110
  65. package/dist/runtime/agentweaver-home.js +8 -0
  66. package/dist/runtime/command-resolution.js +0 -38
  67. package/dist/runtime/env-loader.js +43 -0
  68. package/dist/structured-artifact-schema-registry.js +53 -0
  69. package/dist/structured-artifact-schemas.json +0 -20
  70. package/dist/structured-artifacts.js +3 -43
  71. package/dist/user-input.js +30 -2
  72. package/package.json +2 -6
  73. package/Dockerfile.codex +0 -56
  74. package/dist/executors/claude-executor.js +0 -46
  75. package/dist/executors/codex-docker-executor.js +0 -27
  76. package/dist/executors/configs/claude-config.js +0 -12
  77. package/dist/executors/configs/codex-docker-config.js +0 -10
  78. package/dist/executors/configs/verify-build-config.js +0 -7
  79. package/dist/executors/verify-build-executor.js +0 -123
  80. package/dist/pipeline/flow-specs/auto.json +0 -979
  81. package/dist/pipeline/flow-specs/gitlab-review.json +0 -317
  82. package/dist/pipeline/flow-specs/opencode/auto-opencode.json +0 -1365
  83. package/dist/pipeline/flow-specs/opencode/bugz/bug-analyze-opencode.json +0 -382
  84. package/dist/pipeline/flow-specs/opencode/bugz/bug-fix-opencode.json +0 -56
  85. package/dist/pipeline/flow-specs/opencode/gitlab/gitlab-diff-review-opencode.json +0 -308
  86. package/dist/pipeline/flow-specs/opencode/gitlab/gitlab-review-opencode.json +0 -437
  87. package/dist/pipeline/flow-specs/opencode/gitlab/mr-description-opencode.json +0 -117
  88. package/dist/pipeline/flow-specs/opencode/go/run-go-linter-loop-opencode.json +0 -321
  89. package/dist/pipeline/flow-specs/opencode/go/run-go-tests-loop-opencode.json +0 -321
  90. package/dist/pipeline/flow-specs/opencode/implement-opencode.json +0 -64
  91. package/dist/pipeline/flow-specs/opencode/plan-opencode.json +0 -603
  92. package/dist/pipeline/flow-specs/opencode/review/review-fix-opencode.json +0 -209
  93. package/dist/pipeline/flow-specs/opencode/review/review-opencode.json +0 -452
  94. package/dist/pipeline/flow-specs/opencode/task-describe-opencode.json +0 -148
  95. package/dist/pipeline/flow-specs/review-project.json +0 -243
  96. package/dist/pipeline/flow-specs/review.json +0 -312
  97. package/dist/pipeline/flows/preflight-flow.js +0 -19
  98. package/dist/pipeline/nodes/claude-prompt-node.js +0 -54
  99. package/dist/pipeline/nodes/codex-docker-prompt-node.js +0 -32
  100. package/dist/pipeline/nodes/codex-local-prompt-node.js +0 -32
  101. package/dist/pipeline/nodes/review-claude-node.js +0 -38
  102. package/dist/pipeline/nodes/review-reply-codex-node.js +0 -40
  103. package/dist/pipeline/nodes/verify-build-node.js +0 -15
  104. package/dist/runtime/docker-runtime.js +0 -51
  105. package/docker-compose.yml +0 -445
  106. package/verify_build.sh +0 -105
@@ -1,1365 +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": {
16
- "ref": "params.jiraApiUrl"
17
- },
18
- "outputFile": {
19
- "artifact": {
20
- "kind": "jira-task-file",
21
- "taskKey": {
22
- "ref": "params.taskKey"
23
- }
24
- }
25
- },
26
- "attachmentsManifestFile": {
27
- "artifact": {
28
- "kind": "jira-attachments-manifest-file",
29
- "taskKey": {
30
- "ref": "params.taskKey"
31
- }
32
- }
33
- },
34
- "attachmentsContextFile": {
35
- "artifact": {
36
- "kind": "jira-attachments-context-file",
37
- "taskKey": {
38
- "ref": "params.taskKey"
39
- }
40
- }
41
- }
42
- },
43
- "expect": [
44
- {
45
- "kind": "require-file",
46
- "path": {
47
- "artifact": {
48
- "kind": "jira-task-file",
49
- "taskKey": {
50
- "ref": "params.taskKey"
51
- }
52
- }
53
- },
54
- "message": "Jira fetch node did not produce the Jira task file."
55
- },
56
- {
57
- "kind": "require-file",
58
- "path": {
59
- "artifact": {
60
- "kind": "jira-attachments-manifest-file",
61
- "taskKey": {
62
- "ref": "params.taskKey"
63
- }
64
- }
65
- },
66
- "message": "Jira fetch node did not produce the Jira attachments manifest file."
67
- },
68
- {
69
- "kind": "require-file",
70
- "path": {
71
- "artifact": {
72
- "kind": "jira-attachments-context-file",
73
- "taskKey": {
74
- "ref": "params.taskKey"
75
- }
76
- }
77
- },
78
- "message": "Jira fetch node did not produce the Jira attachments context file."
79
- }
80
- ]
81
- },
82
- {
83
- "id": "load_existing_task_summary",
84
- "when": {
85
- "all": [
86
- {
87
- "not": {
88
- "ref": "params.forceRefresh"
89
- }
90
- },
91
- {
92
- "exists": {
93
- "artifact": {
94
- "kind": "task-summary-file",
95
- "taskKey": {
96
- "ref": "params.taskKey"
97
- }
98
- }
99
- }
100
- }
101
- ]
102
- },
103
- "node": "summary-file-load",
104
- "params": {
105
- "path": {
106
- "artifact": {
107
- "kind": "task-summary-file",
108
- "taskKey": {
109
- "ref": "params.taskKey"
110
- }
111
- }
112
- }
113
- }
114
- },
115
- {
116
- "id": "generate_task_summary",
117
- "when": {
118
- "any": [
119
- {
120
- "ref": "params.forceRefresh"
121
- },
122
- {
123
- "not": {
124
- "exists": {
125
- "artifact": {
126
- "kind": "task-summary-file",
127
- "taskKey": {
128
- "ref": "params.taskKey"
129
- }
130
- }
131
- }
132
- }
133
- }
134
- ]
135
- },
136
- "node": "opencode-prompt",
137
- "prompt": {
138
- "templateRef": "task-summary",
139
- "vars": {
140
- "jira_task_file": {
141
- "artifact": {
142
- "kind": "jira-task-file",
143
- "taskKey": {
144
- "ref": "params.taskKey"
145
- }
146
- }
147
- },
148
- "task_summary_file": {
149
- "artifact": {
150
- "kind": "task-summary-file",
151
- "taskKey": {
152
- "ref": "params.taskKey"
153
- }
154
- }
155
- },
156
- "task_summary_json_file": {
157
- "artifact": {
158
- "kind": "task-summary-json-file",
159
- "taskKey": {
160
- "ref": "params.taskKey"
161
- }
162
- }
163
- }
164
- },
165
- "format": "plain"
166
- },
167
- "params": {
168
- "labelText": {
169
- "const": "Preparing task summary"
170
- },
171
- "outputFile": {
172
- "artifact": {
173
- "kind": "task-summary-file",
174
- "taskKey": {
175
- "ref": "params.taskKey"
176
- }
177
- }
178
- },
179
- "requiredArtifacts": {
180
- "list": [
181
- {
182
- "artifact": {
183
- "kind": "task-summary-json-file",
184
- "taskKey": {
185
- "ref": "params.taskKey"
186
- }
187
- }
188
- }
189
- ]
190
- },
191
- "model": {
192
- "const": "minimax-coding-plan/MiniMax-M2.7"
193
- }
194
- },
195
- "expect": [
196
- {
197
- "kind": "require-artifacts",
198
- "when": {
199
- "not": {
200
- "ref": "context.dryRun"
201
- }
202
- },
203
- "paths": {
204
- "list": [
205
- {
206
- "artifact": {
207
- "kind": "task-summary-file",
208
- "taskKey": {
209
- "ref": "params.taskKey"
210
- }
211
- }
212
- }
213
- ]
214
- },
215
- "message": "Claude summary did not produce the task summary artifact."
216
- },
217
- {
218
- "kind": "require-structured-artifacts",
219
- "when": {
220
- "not": {
221
- "ref": "context.dryRun"
222
- }
223
- },
224
- "items": [
225
- {
226
- "path": {
227
- "artifact": {
228
- "kind": "task-summary-json-file",
229
- "taskKey": {
230
- "ref": "params.taskKey"
231
- }
232
- }
233
- },
234
- "schemaId": "task-summary/v1"
235
- }
236
- ],
237
- "message": "Claude summary produced invalid structured artifacts."
238
- }
239
- ],
240
- "after": [
241
- {
242
- "kind": "set-summary-from-file",
243
- "when": {
244
- "not": {
245
- "ref": "context.dryRun"
246
- }
247
- },
248
- "path": {
249
- "artifact": {
250
- "kind": "task-summary-file",
251
- "taskKey": {
252
- "ref": "params.taskKey"
253
- }
254
- }
255
- }
256
- }
257
- ]
258
- },
259
- {
260
- "id": "generate_planning_questions",
261
- "node": "opencode-prompt",
262
- "prompt": {
263
- "templateRef": "plan-questions",
264
- "vars": {
265
- "jira_task_file": {
266
- "artifact": {
267
- "kind": "jira-task-file",
268
- "taskKey": {
269
- "ref": "params.taskKey"
270
- }
271
- }
272
- },
273
- "jira_attachments_manifest_file": {
274
- "artifact": {
275
- "kind": "jira-attachments-manifest-file",
276
- "taskKey": {
277
- "ref": "params.taskKey"
278
- }
279
- }
280
- },
281
- "jira_attachments_context_file": {
282
- "artifact": {
283
- "kind": "jira-attachments-context-file",
284
- "taskKey": {
285
- "ref": "params.taskKey"
286
- }
287
- }
288
- },
289
- "planning_questions_json_file": {
290
- "artifact": {
291
- "kind": "planning-questions-json-file",
292
- "taskKey": {
293
- "ref": "params.taskKey"
294
- }
295
- }
296
- }
297
- },
298
- "extraPrompt": {
299
- "ref": "params.extraPrompt"
300
- },
301
- "format": "task-prompt"
302
- },
303
- "params": {
304
- "labelText": {
305
- "const": "Generating planning questions"
306
- },
307
- "model": {
308
- "const": "minimax-coding-plan/MiniMax-M2.7"
309
- },
310
- "requiredArtifacts": {
311
- "list": [
312
- {
313
- "artifact": {
314
- "kind": "planning-questions-json-file",
315
- "taskKey": {
316
- "ref": "params.taskKey"
317
- }
318
- }
319
- }
320
- ]
321
- }
322
- },
323
- "expect": [
324
- {
325
- "kind": "require-artifacts",
326
- "when": {
327
- "not": {
328
- "ref": "context.dryRun"
329
- }
330
- },
331
- "paths": {
332
- "list": [
333
- {
334
- "artifact": {
335
- "kind": "planning-questions-json-file",
336
- "taskKey": {
337
- "ref": "params.taskKey"
338
- }
339
- }
340
- }
341
- ]
342
- },
343
- "message": "Planning questions step did not produce the questions artifact."
344
- },
345
- {
346
- "kind": "require-structured-artifacts",
347
- "when": {
348
- "not": {
349
- "ref": "context.dryRun"
350
- }
351
- },
352
- "items": [
353
- {
354
- "path": {
355
- "artifact": {
356
- "kind": "planning-questions-json-file",
357
- "taskKey": {
358
- "ref": "params.taskKey"
359
- }
360
- }
361
- },
362
- "schemaId": "planning-questions/v1"
363
- }
364
- ],
365
- "message": "Planning questions step produced invalid structured artifacts."
366
- }
367
- ]
368
- },
369
- {
370
- "id": "build_planning_questions_form",
371
- "node": "planning-questions-form",
372
- "params": {
373
- "planningQuestionsJsonFile": {
374
- "artifact": {
375
- "kind": "planning-questions-json-file",
376
- "taskKey": {
377
- "ref": "params.taskKey"
378
- }
379
- }
380
- },
381
- "formId": {
382
- "const": "planning-questions"
383
- },
384
- "title": {
385
- "const": "Planning Questions"
386
- },
387
- "description": {
388
- "const": "Ответьте на вопросы модели, если они нужны для точного design/plan. Если вопросов нет, шаг завершится автоматически."
389
- }
390
- }
391
- },
392
- {
393
- "id": "collect_planning_answers",
394
- "node": "user-input",
395
- "params": {
396
- "formId": {
397
- "ref": "steps.plan.build_planning_questions_form.value.formId"
398
- },
399
- "title": {
400
- "ref": "steps.plan.build_planning_questions_form.value.title"
401
- },
402
- "description": {
403
- "ref": "steps.plan.build_planning_questions_form.value.description"
404
- },
405
- "submitLabel": {
406
- "const": "Continue planning"
407
- },
408
- "fields": {
409
- "ref": "steps.plan.build_planning_questions_form.value.fields"
410
- },
411
- "outputFile": {
412
- "artifact": {
413
- "kind": "planning-answers-json-file",
414
- "taskKey": {
415
- "ref": "params.taskKey"
416
- }
417
- }
418
- }
419
- },
420
- "expect": [
421
- {
422
- "kind": "require-structured-artifacts",
423
- "items": [
424
- {
425
- "path": {
426
- "artifact": {
427
- "kind": "planning-answers-json-file",
428
- "taskKey": {
429
- "ref": "params.taskKey"
430
- }
431
- }
432
- },
433
- "schemaId": "user-input/v1"
434
- }
435
- ],
436
- "message": "Planning answers input is missing or invalid."
437
- }
438
- ]
439
- },
440
- {
441
- "id": "run_plan",
442
- "node": "opencode-prompt",
443
- "prompt": {
444
- "templateRef": "plan",
445
- "vars": {
446
- "jira_task_file": {
447
- "artifact": {
448
- "kind": "jira-task-file",
449
- "taskKey": {
450
- "ref": "params.taskKey"
451
- }
452
- }
453
- },
454
- "jira_attachments_manifest_file": {
455
- "artifact": {
456
- "kind": "jira-attachments-manifest-file",
457
- "taskKey": {
458
- "ref": "params.taskKey"
459
- }
460
- }
461
- },
462
- "jira_attachments_context_file": {
463
- "artifact": {
464
- "kind": "jira-attachments-context-file",
465
- "taskKey": {
466
- "ref": "params.taskKey"
467
- }
468
- }
469
- },
470
- "design_file": {
471
- "artifact": {
472
- "kind": "design-file",
473
- "taskKey": {
474
- "ref": "params.taskKey"
475
- }
476
- }
477
- },
478
- "design_json_file": {
479
- "artifact": {
480
- "kind": "design-json-file",
481
- "taskKey": {
482
- "ref": "params.taskKey"
483
- }
484
- }
485
- },
486
- "plan_file": {
487
- "artifact": {
488
- "kind": "plan-file",
489
- "taskKey": {
490
- "ref": "params.taskKey"
491
- }
492
- }
493
- },
494
- "plan_json_file": {
495
- "artifact": {
496
- "kind": "plan-json-file",
497
- "taskKey": {
498
- "ref": "params.taskKey"
499
- }
500
- }
501
- },
502
- "qa_file": {
503
- "artifact": {
504
- "kind": "qa-file",
505
- "taskKey": {
506
- "ref": "params.taskKey"
507
- }
508
- }
509
- },
510
- "qa_json_file": {
511
- "artifact": {
512
- "kind": "qa-json-file",
513
- "taskKey": {
514
- "ref": "params.taskKey"
515
- }
516
- }
517
- }
518
- },
519
- "extraPrompt": {
520
- "appendPrompt": {
521
- "base": {
522
- "ref": "params.extraPrompt"
523
- },
524
- "suffix": {
525
- "ref": "steps.plan.collect_planning_answers.value.promptSuffix"
526
- }
527
- }
528
- },
529
- "format": "task-prompt"
530
- },
531
- "params": {
532
- "labelText": {
533
- "const": "Running OpenCode planning mode"
534
- },
535
- "model": {
536
- "const": "minimax-coding-plan/MiniMax-M2.7"
537
- }
538
- },
539
- "expect": [
540
- {
541
- "kind": "require-artifacts",
542
- "when": {
543
- "not": {
544
- "ref": "context.dryRun"
545
- }
546
- },
547
- "paths": {
548
- "artifactList": {
549
- "kind": "plan-artifacts",
550
- "taskKey": {
551
- "ref": "params.taskKey"
552
- }
553
- }
554
- },
555
- "message": "Plan mode did not produce the required artifacts."
556
- },
557
- {
558
- "kind": "require-structured-artifacts",
559
- "when": {
560
- "not": {
561
- "ref": "context.dryRun"
562
- }
563
- },
564
- "items": [
565
- {
566
- "path": {
567
- "artifact": {
568
- "kind": "design-json-file",
569
- "taskKey": {
570
- "ref": "params.taskKey"
571
- }
572
- }
573
- },
574
- "schemaId": "implementation-design/v1"
575
- },
576
- {
577
- "path": {
578
- "artifact": {
579
- "kind": "plan-json-file",
580
- "taskKey": {
581
- "ref": "params.taskKey"
582
- }
583
- }
584
- },
585
- "schemaId": "implementation-plan/v1"
586
- },
587
- {
588
- "path": {
589
- "artifact": {
590
- "kind": "qa-json-file",
591
- "taskKey": {
592
- "ref": "params.taskKey"
593
- }
594
- }
595
- },
596
- "schemaId": "qa-plan/v1"
597
- }
598
- ],
599
- "message": "Plan mode produced invalid structured artifacts."
600
- }
601
- ]
602
- }
603
- ]
604
- },
605
- {
606
- "id": "implement",
607
- "steps": [
608
- {
609
- "id": "run_implement",
610
- "node": "opencode-prompt",
611
- "prompt": {
612
- "templateRef": "implement",
613
- "vars": {
614
- "design_file": {
615
- "artifact": {
616
- "kind": "design-file",
617
- "taskKey": {
618
- "ref": "params.taskKey"
619
- }
620
- }
621
- },
622
- "design_json_file": {
623
- "artifact": {
624
- "kind": "design-json-file",
625
- "taskKey": {
626
- "ref": "params.taskKey"
627
- }
628
- }
629
- },
630
- "plan_file": {
631
- "artifact": {
632
- "kind": "plan-file",
633
- "taskKey": {
634
- "ref": "params.taskKey"
635
- }
636
- }
637
- },
638
- "plan_json_file": {
639
- "artifact": {
640
- "kind": "plan-json-file",
641
- "taskKey": {
642
- "ref": "params.taskKey"
643
- }
644
- }
645
- }
646
- },
647
- "extraPrompt": {
648
- "ref": "params.extraPrompt"
649
- },
650
- "format": "task-prompt"
651
- },
652
- "params": {
653
- "labelText": {
654
- "const": "Running OpenCode implementation mode locally"
655
- },
656
- "model": {
657
- "const": "minimax-coding-plan/MiniMax-M2.7"
658
- }
659
- }
660
- }
661
- ]
662
- },
663
- {
664
- "id": "run_go_linter_loop_after_implement",
665
- "steps": [
666
- {
667
- "id": "run_go_linter_loop",
668
- "node": "flow-run",
669
- "params": {
670
- "fileName": {
671
- "const": "run-go-linter-loop-opencode.json"
672
- },
673
- "labelText": {
674
- "const": "Running run-go-linter-loop after implement"
675
- },
676
- "taskKey": {
677
- "ref": "params.taskKey"
678
- },
679
- "runGoLinterScript": {
680
- "ref": "params.runGoLinterScript"
681
- },
682
- "extraPrompt": {
683
- "ref": "params.extraPrompt"
684
- }
685
- }
686
- }
687
- ]
688
- },
689
- {
690
- "id": "run_go_tests_loop_after_implement",
691
- "steps": [
692
- {
693
- "id": "run_go_tests_loop",
694
- "node": "flow-run",
695
- "params": {
696
- "fileName": {
697
- "const": "run-go-tests-loop-opencode.json"
698
- },
699
- "labelText": {
700
- "const": "Running run-go-tests-loop after implement"
701
- },
702
- "taskKey": {
703
- "ref": "params.taskKey"
704
- },
705
- "runGoTestsScript": {
706
- "ref": "params.runGoTestsScript"
707
- },
708
- "extraPrompt": {
709
- "ref": "params.extraPrompt"
710
- }
711
- }
712
- }
713
- ]
714
- },
715
- {
716
- "id": "review",
717
- "when": {
718
- "not": {
719
- "exists": {
720
- "artifact": {
721
- "kind": "ready-to-merge-file",
722
- "taskKey": {
723
- "ref": "params.taskKey"
724
- }
725
- }
726
- }
727
- }
728
- },
729
- "steps": [
730
- {
731
- "id": "run_review",
732
- "node": "opencode-prompt",
733
- "prompt": {
734
- "templateRef": "review",
735
- "vars": {
736
- "jira_task_file": {
737
- "artifact": {
738
- "kind": "jira-task-file",
739
- "taskKey": {
740
- "ref": "params.taskKey"
741
- }
742
- }
743
- },
744
- "design_file": {
745
- "artifact": {
746
- "kind": "design-file",
747
- "taskKey": {
748
- "ref": "params.taskKey"
749
- }
750
- }
751
- },
752
- "design_json_file": {
753
- "artifact": {
754
- "kind": "design-json-file",
755
- "taskKey": {
756
- "ref": "params.taskKey"
757
- }
758
- }
759
- },
760
- "plan_file": {
761
- "artifact": {
762
- "kind": "plan-file",
763
- "taskKey": {
764
- "ref": "params.taskKey"
765
- }
766
- }
767
- },
768
- "plan_json_file": {
769
- "artifact": {
770
- "kind": "plan-json-file",
771
- "taskKey": {
772
- "ref": "params.taskKey"
773
- }
774
- }
775
- },
776
- "review_file": {
777
- "artifact": {
778
- "kind": "review-file",
779
- "taskKey": {
780
- "ref": "params.taskKey"
781
- },
782
- "iteration": {
783
- "const": 1
784
- }
785
- }
786
- },
787
- "review_json_file": {
788
- "artifact": {
789
- "kind": "review-json-file",
790
- "taskKey": {
791
- "ref": "params.taskKey"
792
- },
793
- "iteration": {
794
- "const": 1
795
- }
796
- }
797
- }
798
- },
799
- "extraPrompt": {
800
- "ref": "params.extraPrompt"
801
- },
802
- "format": "task-prompt"
803
- },
804
- "params": {
805
- "labelText": {
806
- "const": "Running OpenCode review mode"
807
- },
808
- "model": {
809
- "const": "minimax-coding-plan/MiniMax-M2.7"
810
- }
811
- },
812
- "expect": [
813
- {
814
- "kind": "require-artifacts",
815
- "when": {
816
- "not": {
817
- "ref": "context.dryRun"
818
- }
819
- },
820
- "paths": {
821
- "list": [
822
- {
823
- "artifact": {
824
- "kind": "review-file",
825
- "taskKey": {
826
- "ref": "params.taskKey"
827
- },
828
- "iteration": {
829
- "const": 1
830
- }
831
- }
832
- }
833
- ]
834
- },
835
- "message": "Review did not produce the required review artifact."
836
- },
837
- {
838
- "kind": "require-structured-artifacts",
839
- "when": {
840
- "not": {
841
- "ref": "context.dryRun"
842
- }
843
- },
844
- "items": [
845
- {
846
- "path": {
847
- "artifact": {
848
- "kind": "review-json-file",
849
- "taskKey": {
850
- "ref": "params.taskKey"
851
- },
852
- "iteration": {
853
- "const": 1
854
- }
855
- }
856
- },
857
- "schemaId": "review-findings/v1"
858
- }
859
- ],
860
- "message": "Claude review produced invalid structured artifacts."
861
- }
862
- ]
863
- },
864
- {
865
- "id": "summarize_review",
866
- "when": {
867
- "not": {
868
- "ref": "context.dryRun"
869
- }
870
- },
871
- "node": "opencode-prompt",
872
- "prompt": {
873
- "templateRef": "review-summary",
874
- "vars": {
875
- "review_file": {
876
- "artifact": {
877
- "kind": "review-file",
878
- "taskKey": {
879
- "ref": "params.taskKey"
880
- },
881
- "iteration": {
882
- "const": 1
883
- }
884
- }
885
- },
886
- "review_summary_file": {
887
- "artifact": {
888
- "kind": "review-summary-file",
889
- "taskKey": {
890
- "ref": "params.taskKey"
891
- },
892
- "iteration": {
893
- "const": 1
894
- }
895
- }
896
- }
897
- },
898
- "format": "plain"
899
- },
900
- "params": {
901
- "labelText": {
902
- "const": "Preparing OpenCode review summary"
903
- },
904
- "outputFile": {
905
- "artifact": {
906
- "kind": "review-summary-file",
907
- "taskKey": {
908
- "ref": "params.taskKey"
909
- },
910
- "iteration": {
911
- "const": 1
912
- }
913
- }
914
- },
915
- "summaryTitle": {
916
- "const": "OpenCode Comments"
917
- },
918
- "model": {
919
- "const": "minimax-coding-plan/MiniMax-M2.7"
920
- }
921
- }
922
- },
923
- {
924
- "id": "run_review_reply",
925
- "node": "opencode-prompt",
926
- "prompt": {
927
- "templateRef": "review-reply",
928
- "vars": {
929
- "review_file": {
930
- "artifact": {
931
- "kind": "review-file",
932
- "taskKey": {
933
- "ref": "params.taskKey"
934
- },
935
- "iteration": {
936
- "const": 1
937
- }
938
- }
939
- },
940
- "review_json_file": {
941
- "artifact": {
942
- "kind": "review-json-file",
943
- "taskKey": {
944
- "ref": "params.taskKey"
945
- },
946
- "iteration": {
947
- "const": 1
948
- }
949
- }
950
- },
951
- "jira_task_file": {
952
- "artifact": {
953
- "kind": "jira-task-file",
954
- "taskKey": {
955
- "ref": "params.taskKey"
956
- }
957
- }
958
- },
959
- "design_file": {
960
- "artifact": {
961
- "kind": "design-file",
962
- "taskKey": {
963
- "ref": "params.taskKey"
964
- }
965
- }
966
- },
967
- "design_json_file": {
968
- "artifact": {
969
- "kind": "design-json-file",
970
- "taskKey": {
971
- "ref": "params.taskKey"
972
- }
973
- }
974
- },
975
- "plan_file": {
976
- "artifact": {
977
- "kind": "plan-file",
978
- "taskKey": {
979
- "ref": "params.taskKey"
980
- }
981
- }
982
- },
983
- "plan_json_file": {
984
- "artifact": {
985
- "kind": "plan-json-file",
986
- "taskKey": {
987
- "ref": "params.taskKey"
988
- }
989
- }
990
- },
991
- "review_reply_file": {
992
- "artifact": {
993
- "kind": "review-reply-file",
994
- "taskKey": {
995
- "ref": "params.taskKey"
996
- },
997
- "iteration": {
998
- "const": 1
999
- }
1000
- }
1001
- },
1002
- "review_reply_json_file": {
1003
- "artifact": {
1004
- "kind": "review-reply-json-file",
1005
- "taskKey": {
1006
- "ref": "params.taskKey"
1007
- },
1008
- "iteration": {
1009
- "const": 1
1010
- }
1011
- }
1012
- }
1013
- },
1014
- "extraPrompt": {
1015
- "ref": "params.extraPrompt"
1016
- },
1017
- "format": "task-prompt"
1018
- },
1019
- "params": {
1020
- "labelText": {
1021
- "const": "Running OpenCode review reply mode"
1022
- },
1023
- "model": {
1024
- "const": "minimax-coding-plan/MiniMax-M2.7"
1025
- }
1026
- },
1027
- "expect": [
1028
- {
1029
- "kind": "require-artifacts",
1030
- "when": {
1031
- "not": {
1032
- "ref": "context.dryRun"
1033
- }
1034
- },
1035
- "paths": {
1036
- "list": [
1037
- {
1038
- "artifact": {
1039
- "kind": "review-reply-file",
1040
- "taskKey": {
1041
- "ref": "params.taskKey"
1042
- },
1043
- "iteration": {
1044
- "const": 1
1045
- }
1046
- }
1047
- }
1048
- ]
1049
- },
1050
- "message": "Review reply did not produce the required review-reply artifact."
1051
- },
1052
- {
1053
- "kind": "require-structured-artifacts",
1054
- "when": {
1055
- "not": {
1056
- "ref": "context.dryRun"
1057
- }
1058
- },
1059
- "items": [
1060
- {
1061
- "path": {
1062
- "artifact": {
1063
- "kind": "review-reply-json-file",
1064
- "taskKey": {
1065
- "ref": "params.taskKey"
1066
- },
1067
- "iteration": {
1068
- "const": 1
1069
- }
1070
- }
1071
- },
1072
- "schemaId": "review-reply/v1"
1073
- }
1074
- ],
1075
- "message": "Codex review reply produced invalid structured artifacts."
1076
- }
1077
- ]
1078
- },
1079
- {
1080
- "id": "summarize_review_reply",
1081
- "when": {
1082
- "not": {
1083
- "ref": "context.dryRun"
1084
- }
1085
- },
1086
- "node": "opencode-prompt",
1087
- "prompt": {
1088
- "templateRef": "review-reply-summary",
1089
- "vars": {
1090
- "review_reply_file": {
1091
- "artifact": {
1092
- "kind": "review-reply-file",
1093
- "taskKey": {
1094
- "ref": "params.taskKey"
1095
- },
1096
- "iteration": {
1097
- "const": 1
1098
- }
1099
- }
1100
- },
1101
- "review_reply_summary_file": {
1102
- "artifact": {
1103
- "kind": "review-reply-summary-file",
1104
- "taskKey": {
1105
- "ref": "params.taskKey"
1106
- },
1107
- "iteration": {
1108
- "const": 1
1109
- }
1110
- }
1111
- }
1112
- },
1113
- "format": "plain"
1114
- },
1115
- "params": {
1116
- "labelText": {
1117
- "const": "Preparing OpenCode reply summary"
1118
- },
1119
- "outputFile": {
1120
- "artifact": {
1121
- "kind": "review-reply-summary-file",
1122
- "taskKey": {
1123
- "ref": "params.taskKey"
1124
- },
1125
- "iteration": {
1126
- "const": 1
1127
- }
1128
- }
1129
- },
1130
- "summaryTitle": {
1131
- "const": "OpenCode Reply Summary"
1132
- },
1133
- "model": {
1134
- "const": "minimax-coding-plan/MiniMax-M2.7"
1135
- }
1136
- }
1137
- },
1138
- {
1139
- "id": "check_ready_to_merge",
1140
- "node": "file-check",
1141
- "stopFlowIf": {
1142
- "ref": "steps.review.check_ready_to_merge.outputs.exists"
1143
- },
1144
- "params": {
1145
- "path": {
1146
- "artifact": {
1147
- "kind": "ready-to-merge-file",
1148
- "taskKey": {
1149
- "ref": "params.taskKey"
1150
- }
1151
- }
1152
- },
1153
- "panelTitle": {
1154
- "const": "Ready To Merge"
1155
- },
1156
- "foundMessage": {
1157
- "const": "Изменения готовы к merge\nФайл ready-to-merge.md создан."
1158
- },
1159
- "tone": {
1160
- "const": "green"
1161
- }
1162
- }
1163
- }
1164
- ]
1165
- },
1166
- {
1167
- "id": "review_fix",
1168
- "when": {
1169
- "not": {
1170
- "ref": "steps.review.check_ready_to_merge.outputs.exists"
1171
- }
1172
- },
1173
- "steps": [
1174
- {
1175
- "id": "run_review_fix",
1176
- "node": "opencode-prompt",
1177
- "prompt": {
1178
- "templateRef": "review-fix",
1179
- "vars": {
1180
- "review_reply_file": {
1181
- "artifact": {
1182
- "kind": "review-reply-file",
1183
- "taskKey": {
1184
- "ref": "params.taskKey"
1185
- },
1186
- "iteration": {
1187
- "const": 1
1188
- }
1189
- }
1190
- },
1191
- "review_reply_json_file": {
1192
- "artifact": {
1193
- "kind": "review-reply-json-file",
1194
- "taskKey": {
1195
- "ref": "params.taskKey"
1196
- },
1197
- "iteration": {
1198
- "const": 1
1199
- }
1200
- }
1201
- },
1202
- "items": {
1203
- "ref": "params.reviewFixPoints"
1204
- },
1205
- "review_fix_file": {
1206
- "artifact": {
1207
- "kind": "review-fix-file",
1208
- "taskKey": {
1209
- "ref": "params.taskKey"
1210
- },
1211
- "iteration": {
1212
- "const": 1
1213
- }
1214
- }
1215
- },
1216
- "review_fix_json_file": {
1217
- "artifact": {
1218
- "kind": "review-fix-json-file",
1219
- "taskKey": {
1220
- "ref": "params.taskKey"
1221
- },
1222
- "iteration": {
1223
- "const": 1
1224
- }
1225
- }
1226
- }
1227
- },
1228
- "extraPrompt": {
1229
- "appendPrompt": {
1230
- "base": {
1231
- "ref": "params.extraPrompt"
1232
- },
1233
- "suffix": {
1234
- "ref": "flow.autoReviewFixExtraPrompt"
1235
- }
1236
- }
1237
- },
1238
- "format": "task-prompt"
1239
- },
1240
- "params": {
1241
- "labelText": {
1242
- "const": "Running OpenCode review-fix mode locally"
1243
- },
1244
- "model": {
1245
- "const": "minimax-coding-plan/MiniMax-M2.7"
1246
- }
1247
- },
1248
- "expect": [
1249
- {
1250
- "kind": "require-artifacts",
1251
- "when": {
1252
- "not": {
1253
- "ref": "context.dryRun"
1254
- }
1255
- },
1256
- "paths": {
1257
- "list": [
1258
- {
1259
- "artifact": {
1260
- "kind": "review-fix-file",
1261
- "taskKey": {
1262
- "ref": "params.taskKey"
1263
- },
1264
- "iteration": {
1265
- "const": 1
1266
- }
1267
- }
1268
- }
1269
- ]
1270
- },
1271
- "message": "Review-fix mode did not produce the required review-fix artifact."
1272
- },
1273
- {
1274
- "kind": "require-structured-artifacts",
1275
- "when": {
1276
- "not": {
1277
- "ref": "context.dryRun"
1278
- }
1279
- },
1280
- "items": [
1281
- {
1282
- "path": {
1283
- "artifact": {
1284
- "kind": "review-fix-json-file",
1285
- "taskKey": {
1286
- "ref": "params.taskKey"
1287
- },
1288
- "iteration": {
1289
- "const": 1
1290
- }
1291
- }
1292
- },
1293
- "schemaId": "review-fix-report/v1"
1294
- }
1295
- ],
1296
- "message": "Review-fix mode produced invalid structured artifacts."
1297
- }
1298
- ]
1299
- }
1300
- ]
1301
- },
1302
- {
1303
- "id": "run_go_linter_loop_after_review_fix",
1304
- "when": {
1305
- "not": {
1306
- "ref": "steps.review.check_ready_to_merge.outputs.exists"
1307
- }
1308
- },
1309
- "steps": [
1310
- {
1311
- "id": "run_go_linter_loop",
1312
- "node": "flow-run",
1313
- "params": {
1314
- "fileName": {
1315
- "const": "run-go-linter-loop-opencode.json"
1316
- },
1317
- "labelText": {
1318
- "const": "Running run-go-linter-loop after review-fix"
1319
- },
1320
- "taskKey": {
1321
- "ref": "params.taskKey"
1322
- },
1323
- "runGoLinterScript": {
1324
- "ref": "params.runGoLinterScript"
1325
- },
1326
- "extraPrompt": {
1327
- "ref": "params.extraPrompt"
1328
- }
1329
- }
1330
- }
1331
- ]
1332
- },
1333
- {
1334
- "id": "run_go_tests_loop_after_review_fix",
1335
- "when": {
1336
- "not": {
1337
- "ref": "steps.review.check_ready_to_merge.outputs.exists"
1338
- }
1339
- },
1340
- "steps": [
1341
- {
1342
- "id": "run_go_tests_loop",
1343
- "node": "flow-run",
1344
- "params": {
1345
- "fileName": {
1346
- "const": "run-go-tests-loop-opencode.json"
1347
- },
1348
- "labelText": {
1349
- "const": "Running run-go-tests-loop after review-fix"
1350
- },
1351
- "taskKey": {
1352
- "ref": "params.taskKey"
1353
- },
1354
- "runGoTestsScript": {
1355
- "ref": "params.runGoTestsScript"
1356
- },
1357
- "extraPrompt": {
1358
- "ref": "params.extraPrompt"
1359
- }
1360
- }
1361
- }
1362
- ]
1363
- }
1364
- ]
1365
- }