agentweaver 0.1.10 → 0.1.12

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 (110) hide show
  1. package/README.md +218 -224
  2. package/dist/artifacts.js +109 -55
  3. package/dist/executors/{codex-local-executor.js → codex-executor.js} +6 -5
  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/jira-fetch-executor.js +1 -0
  11. package/dist/executors/opencode-executor.js +22 -11
  12. package/dist/executors/process-executor.js +3 -0
  13. package/dist/executors/telegram-notifier-executor.js +54 -0
  14. package/dist/flow-state.js +46 -1
  15. package/dist/gitlab.js +13 -8
  16. package/dist/index.js +477 -514
  17. package/dist/interactive-ui.js +609 -88
  18. package/dist/jira.js +109 -5
  19. package/dist/pipeline/auto-flow.js +6 -6
  20. package/dist/pipeline/context.js +1 -0
  21. package/dist/pipeline/flow-catalog.js +34 -4
  22. package/dist/pipeline/flow-model-settings.js +77 -0
  23. package/dist/pipeline/flow-specs/auto-common.json +446 -0
  24. package/dist/pipeline/flow-specs/auto-golang.json +563 -0
  25. package/dist/pipeline/flow-specs/{bug-analyze.json → bugz/bug-analyze.json} +43 -25
  26. package/dist/pipeline/flow-specs/{bug-fix.json → bugz/bug-fix.json} +5 -4
  27. package/dist/pipeline/flow-specs/git-commit.json +196 -0
  28. package/dist/pipeline/flow-specs/{gitlab-diff-review.json → gitlab/gitlab-diff-review.json} +20 -50
  29. package/dist/pipeline/flow-specs/{gitlab-review.json → gitlab/gitlab-review.json} +65 -133
  30. package/dist/pipeline/flow-specs/{mr-description.json → gitlab/mr-description.json} +17 -10
  31. package/dist/pipeline/flow-specs/{run-go-linter-loop.json → go/run-go-linter-loop.json} +40 -14
  32. package/dist/pipeline/flow-specs/{run-go-tests-loop.json → go/run-go-tests-loop.json} +40 -14
  33. package/dist/pipeline/flow-specs/implement.json +5 -4
  34. package/dist/pipeline/flow-specs/plan.json +40 -148
  35. package/dist/pipeline/flow-specs/{review-fix.json → review/review-fix.json} +74 -13
  36. package/dist/pipeline/flow-specs/review/review-loop.json +282 -0
  37. package/dist/pipeline/flow-specs/review/review-project.json +87 -0
  38. package/dist/pipeline/flow-specs/review/review.json +126 -0
  39. package/dist/pipeline/flow-specs/task-describe.json +252 -11
  40. package/dist/pipeline/launch-profile-config.js +38 -0
  41. package/dist/pipeline/node-registry.js +75 -45
  42. package/dist/pipeline/nodes/build-failure-summary-node.js +16 -29
  43. package/dist/pipeline/nodes/build-review-fix-prompt-node.js +36 -0
  44. package/dist/pipeline/nodes/codex-prompt-node.js +41 -0
  45. package/dist/pipeline/nodes/commit-message-form-node.js +79 -0
  46. package/dist/pipeline/nodes/git-commit-form-node.js +138 -0
  47. package/dist/pipeline/nodes/git-commit-node.js +28 -0
  48. package/dist/pipeline/nodes/git-status-node.js +221 -0
  49. package/dist/pipeline/nodes/gitlab-review-artifacts-node.js +10 -6
  50. package/dist/pipeline/nodes/jira-context-node.js +10 -0
  51. package/dist/pipeline/nodes/jira-fetch-node.js +3 -0
  52. package/dist/pipeline/nodes/llm-prompt-node.js +62 -0
  53. package/dist/pipeline/nodes/plan-codex-node.js +1 -1
  54. package/dist/pipeline/nodes/read-file-node.js +11 -0
  55. package/dist/pipeline/nodes/review-findings-form-node.js +48 -14
  56. package/dist/pipeline/nodes/select-files-form-node.js +72 -0
  57. package/dist/pipeline/nodes/telegram-notifier-node.js +28 -0
  58. package/dist/pipeline/nodes/user-input-node.js +43 -8
  59. package/dist/pipeline/nodes/write-selection-file-node.js +46 -0
  60. package/dist/pipeline/prompt-registry.js +3 -4
  61. package/dist/pipeline/prompt-runtime.js +13 -3
  62. package/dist/pipeline/registry.js +6 -8
  63. package/dist/pipeline/spec-compiler.js +5 -0
  64. package/dist/pipeline/spec-types.js +9 -3
  65. package/dist/pipeline/spec-validator.js +4 -0
  66. package/dist/pipeline/types.js +1 -0
  67. package/dist/pipeline/value-resolver.js +50 -38
  68. package/dist/prompts.js +119 -110
  69. package/dist/runtime/agentweaver-home.js +8 -0
  70. package/dist/runtime/command-resolution.js +0 -38
  71. package/dist/runtime/env-loader.js +43 -0
  72. package/dist/runtime/process-runner.js +9 -3
  73. package/dist/structured-artifact-schema-registry.js +54 -0
  74. package/dist/structured-artifact-schemas.json +22 -20
  75. package/dist/structured-artifacts.js +3 -43
  76. package/dist/user-input.js +38 -3
  77. package/package.json +2 -6
  78. package/Dockerfile.codex +0 -56
  79. package/dist/executors/claude-executor.js +0 -46
  80. package/dist/executors/codex-docker-executor.js +0 -27
  81. package/dist/executors/configs/claude-config.js +0 -12
  82. package/dist/executors/configs/codex-docker-config.js +0 -10
  83. package/dist/executors/configs/verify-build-config.js +0 -7
  84. package/dist/executors/verify-build-executor.js +0 -123
  85. package/dist/pipeline/flow-specs/auto.json +0 -979
  86. package/dist/pipeline/flow-specs/opencode/auto-opencode.json +0 -1365
  87. package/dist/pipeline/flow-specs/opencode/bugz/bug-analyze-opencode.json +0 -382
  88. package/dist/pipeline/flow-specs/opencode/bugz/bug-fix-opencode.json +0 -56
  89. package/dist/pipeline/flow-specs/opencode/gitlab/gitlab-diff-review-opencode.json +0 -308
  90. package/dist/pipeline/flow-specs/opencode/gitlab/gitlab-review-opencode.json +0 -437
  91. package/dist/pipeline/flow-specs/opencode/gitlab/mr-description-opencode.json +0 -117
  92. package/dist/pipeline/flow-specs/opencode/go/run-go-linter-loop-opencode.json +0 -321
  93. package/dist/pipeline/flow-specs/opencode/go/run-go-tests-loop-opencode.json +0 -321
  94. package/dist/pipeline/flow-specs/opencode/implement-opencode.json +0 -64
  95. package/dist/pipeline/flow-specs/opencode/plan-opencode.json +0 -603
  96. package/dist/pipeline/flow-specs/opencode/review/review-fix-opencode.json +0 -209
  97. package/dist/pipeline/flow-specs/opencode/review/review-opencode.json +0 -452
  98. package/dist/pipeline/flow-specs/opencode/task-describe-opencode.json +0 -148
  99. package/dist/pipeline/flow-specs/review-project.json +0 -243
  100. package/dist/pipeline/flow-specs/review.json +0 -312
  101. package/dist/pipeline/flows/preflight-flow.js +0 -19
  102. package/dist/pipeline/nodes/claude-prompt-node.js +0 -54
  103. package/dist/pipeline/nodes/codex-docker-prompt-node.js +0 -32
  104. package/dist/pipeline/nodes/codex-local-prompt-node.js +0 -32
  105. package/dist/pipeline/nodes/review-claude-node.js +0 -38
  106. package/dist/pipeline/nodes/review-reply-codex-node.js +0 -40
  107. package/dist/pipeline/nodes/verify-build-node.js +0 -15
  108. package/dist/runtime/docker-runtime.js +0 -51
  109. package/docker-compose.yml +0 -445
  110. package/verify_build.sh +0 -105
@@ -57,13 +57,15 @@
57
57
  "outputFile": {
58
58
  "artifact": {
59
59
  "kind": "gitlab-review-file",
60
- "taskKey": { "ref": "params.taskKey" }
60
+ "taskKey": { "ref": "params.taskKey" },
61
+ "iteration": { "ref": "params.gitlabReviewIteration" }
61
62
  }
62
63
  },
63
64
  "outputJsonFile": {
64
65
  "artifact": {
65
66
  "kind": "gitlab-review-json-file",
66
- "taskKey": { "ref": "params.taskKey" }
67
+ "taskKey": { "ref": "params.taskKey" },
68
+ "iteration": { "ref": "params.gitlabReviewIteration" }
67
69
  }
68
70
  }
69
71
  },
@@ -73,7 +75,8 @@
73
75
  "path": {
74
76
  "artifact": {
75
77
  "kind": "gitlab-review-file",
76
- "taskKey": { "ref": "params.taskKey" }
78
+ "taskKey": { "ref": "params.taskKey" },
79
+ "iteration": { "ref": "params.gitlabReviewIteration" }
77
80
  }
78
81
  },
79
82
  "message": "Fetch GitLab review node did not produce the markdown artifact."
@@ -85,7 +88,8 @@
85
88
  "path": {
86
89
  "artifact": {
87
90
  "kind": "gitlab-review-json-file",
88
- "taskKey": { "ref": "params.taskKey" }
91
+ "taskKey": { "ref": "params.taskKey" },
92
+ "iteration": { "ref": "params.gitlabReviewIteration" }
89
93
  }
90
94
  },
91
95
  "schemaId": "gitlab-review/v1"
@@ -96,107 +100,26 @@
96
100
  ]
97
101
  },
98
102
  {
99
- "id": "materialize_review_artifacts",
100
- "node": "gitlab-review-artifacts",
101
- "params": {
102
- "gitlabReviewJsonFile": {
103
- "artifact": {
104
- "kind": "gitlab-review-json-file",
105
- "taskKey": { "ref": "params.taskKey" }
106
- }
107
- },
108
- "reviewFile": {
109
- "artifact": {
110
- "kind": "review-file",
111
- "taskKey": { "ref": "params.taskKey" },
112
- "iteration": { "ref": "params.iteration" }
113
- }
114
- },
115
- "reviewJsonFile": {
116
- "artifact": {
117
- "kind": "review-json-file",
118
- "taskKey": { "ref": "params.taskKey" },
119
- "iteration": { "ref": "params.iteration" }
120
- }
121
- }
122
- },
123
- "expect": [
124
- {
125
- "kind": "require-artifacts",
126
- "paths": {
127
- "list": [
128
- {
129
- "artifact": {
130
- "kind": "review-file",
131
- "taskKey": { "ref": "params.taskKey" },
132
- "iteration": { "ref": "params.iteration" }
133
- }
134
- }
135
- ]
136
- },
137
- "message": "GitLab review materialization did not produce the required review artifact."
138
- },
139
- {
140
- "kind": "require-structured-artifacts",
141
- "items": [
142
- {
143
- "path": {
144
- "artifact": {
145
- "kind": "review-json-file",
146
- "taskKey": { "ref": "params.taskKey" },
147
- "iteration": { "ref": "params.iteration" }
148
- }
149
- },
150
- "schemaId": "review-findings/v1"
151
- }
152
- ],
153
- "message": "GitLab review materialization produced invalid structured review artifacts."
154
- }
155
- ]
156
- },
157
- {
158
- "id": "summarize_review",
103
+ "id": "assess_gitlab_review",
159
104
  "when": { "not": { "ref": "context.dryRun" } },
160
- "node": "claude-prompt",
105
+ "node": "llm-prompt",
161
106
  "prompt": {
162
- "templateRef": "review-summary",
107
+ "templateRef": "gitlab-review",
163
108
  "vars": {
164
- "review_file": {
109
+ "gitlab_review_file": {
165
110
  "artifact": {
166
- "kind": "review-file",
111
+ "kind": "gitlab-review-file",
167
112
  "taskKey": { "ref": "params.taskKey" },
168
- "iteration": { "ref": "params.iteration" }
113
+ "iteration": { "ref": "params.gitlabReviewIteration" }
169
114
  }
170
115
  },
171
- "review_summary_file": {
116
+ "gitlab_review_json_file": {
172
117
  "artifact": {
173
- "kind": "review-summary-file",
118
+ "kind": "gitlab-review-json-file",
174
119
  "taskKey": { "ref": "params.taskKey" },
175
- "iteration": { "ref": "params.iteration" }
120
+ "iteration": { "ref": "params.gitlabReviewIteration" }
176
121
  }
177
- }
178
- },
179
- "format": "plain"
180
- },
181
- "params": {
182
- "labelText": { "const": "Preparing imported review summary" },
183
- "summaryTitle": { "const": "Imported GitLab Comments" },
184
- "model": { "const": "haiku" },
185
- "outputFile": {
186
- "artifact": {
187
- "kind": "review-summary-file",
188
- "taskKey": { "ref": "params.taskKey" },
189
- "iteration": { "ref": "params.iteration" }
190
- }
191
- }
192
- }
193
- },
194
- {
195
- "id": "run_codex_review_reply",
196
- "node": "codex-local-prompt",
197
- "prompt": {
198
- "templateRef": "review-reply-project",
199
- "vars": {
122
+ },
200
123
  "review_file": {
201
124
  "artifact": {
202
125
  "kind": "review-file",
@@ -211,16 +134,16 @@
211
134
  "iteration": { "ref": "params.iteration" }
212
135
  }
213
136
  },
214
- "review_reply_file": {
137
+ "review_assessment_file": {
215
138
  "artifact": {
216
- "kind": "review-reply-file",
139
+ "kind": "review-assessment-file",
217
140
  "taskKey": { "ref": "params.taskKey" },
218
141
  "iteration": { "ref": "params.iteration" }
219
142
  }
220
143
  },
221
- "review_reply_json_file": {
144
+ "review_assessment_json_file": {
222
145
  "artifact": {
223
- "kind": "review-reply-json-file",
146
+ "kind": "review-assessment-json-file",
224
147
  "taskKey": { "ref": "params.taskKey" },
225
148
  "iteration": { "ref": "params.iteration" }
226
149
  }
@@ -231,12 +154,13 @@
231
154
  },
232
155
  "params": {
233
156
  "labelText": {
234
- "template": "Running Codex review reply mode for imported GitLab review (iteration {iteration})",
157
+ "template": "Assessing GitLab findings and proposed fixes (iteration {iteration})",
235
158
  "vars": {
236
159
  "iteration": { "ref": "params.iteration" }
237
160
  }
238
161
  },
239
- "model": { "const": "gpt-5.4" }
162
+ "model": { "ref": "params.llmModel" },
163
+ "executor": { "ref": "params.llmExecutor" }
240
164
  },
241
165
  "expect": [
242
166
  {
@@ -246,14 +170,21 @@
246
170
  "list": [
247
171
  {
248
172
  "artifact": {
249
- "kind": "review-reply-file",
173
+ "kind": "review-file",
174
+ "taskKey": { "ref": "params.taskKey" },
175
+ "iteration": { "ref": "params.iteration" }
176
+ }
177
+ },
178
+ {
179
+ "artifact": {
180
+ "kind": "review-assessment-file",
250
181
  "taskKey": { "ref": "params.taskKey" },
251
182
  "iteration": { "ref": "params.iteration" }
252
183
  }
253
184
  }
254
185
  ]
255
186
  },
256
- "message": "Codex review reply did not produce the required review-reply artifact."
187
+ "message": "GitLab review assessment did not produce the required artifacts."
257
188
  },
258
189
  {
259
190
  "kind": "require-structured-artifacts",
@@ -262,53 +193,54 @@
262
193
  {
263
194
  "path": {
264
195
  "artifact": {
265
- "kind": "review-reply-json-file",
196
+ "kind": "review-json-file",
266
197
  "taskKey": { "ref": "params.taskKey" },
267
198
  "iteration": { "ref": "params.iteration" }
268
199
  }
269
200
  },
270
- "schemaId": "review-reply/v1"
201
+ "schemaId": "review-findings/v1"
202
+ },
203
+ {
204
+ "path": {
205
+ "artifact": {
206
+ "kind": "review-assessment-json-file",
207
+ "taskKey": { "ref": "params.taskKey" },
208
+ "iteration": { "ref": "params.iteration" }
209
+ }
210
+ },
211
+ "schemaId": "review-assessment/v1"
271
212
  }
272
213
  ],
273
- "message": "Codex review reply produced invalid structured artifacts."
214
+ "message": "GitLab review assessment produced invalid structured artifacts."
274
215
  }
275
216
  ]
276
217
  },
277
218
  {
278
- "id": "summarize_review_reply",
219
+ "id": "run_review_fix",
279
220
  "when": { "not": { "ref": "context.dryRun" } },
280
- "node": "claude-prompt",
281
- "prompt": {
282
- "templateRef": "review-reply-summary",
283
- "vars": {
284
- "review_reply_file": {
285
- "artifact": {
286
- "kind": "review-reply-file",
287
- "taskKey": { "ref": "params.taskKey" },
288
- "iteration": { "ref": "params.iteration" }
289
- }
290
- },
291
- "review_reply_summary_file": {
292
- "artifact": {
293
- "kind": "review-reply-summary-file",
294
- "taskKey": { "ref": "params.taskKey" },
295
- "iteration": { "ref": "params.iteration" }
296
- }
221
+ "node": "flow-run",
222
+ "params": {
223
+ "fileName": { "const": "review-fix.json" },
224
+ "labelText": {
225
+ "template": "Running review-fix for GitLab review (iteration {iteration})",
226
+ "vars": {
227
+ "iteration": { "ref": "params.iteration" }
297
228
  }
298
229
  },
299
- "format": "plain"
300
- },
301
- "params": {
302
- "labelText": { "const": "Preparing Codex reply summary" },
303
- "summaryTitle": { "const": "Codex Reply Summary" },
304
- "model": { "const": "haiku" },
305
- "outputFile": {
230
+ "taskKey": { "ref": "params.taskKey" },
231
+ "latestIteration": { "ref": "params.iteration" },
232
+ "reviewAssessmentJsonFile": {
306
233
  "artifact": {
307
- "kind": "review-reply-summary-file",
234
+ "kind": "review-assessment-json-file",
308
235
  "taskKey": { "ref": "params.taskKey" },
309
236
  "iteration": { "ref": "params.iteration" }
310
237
  }
311
- }
238
+ },
239
+ "reviewFixSelectionJsonFile": { "ref": "params.reviewFixSelectionJsonFile" },
240
+ "reviewFixPoints": { "ref": "params.reviewFixPoints" },
241
+ "extraPrompt": { "ref": "params.extraPrompt" },
242
+ "llmModel": { "ref": "params.llmModel" },
243
+ "llmExecutor": { "ref": "params.llmExecutor" }
312
244
  }
313
245
  }
314
246
  ]
@@ -6,8 +6,8 @@
6
6
  "id": "mr_description",
7
7
  "steps": [
8
8
  {
9
- "id": "run_codex_mr_description",
10
- "node": "codex-local-prompt",
9
+ "id": "run_mr_description",
10
+ "node": "llm-prompt",
11
11
  "prompt": {
12
12
  "templateRef": "mr-description",
13
13
  "vars": {
@@ -20,13 +20,15 @@
20
20
  "mr_description_file": {
21
21
  "artifact": {
22
22
  "kind": "mr-description-file",
23
- "taskKey": { "ref": "params.taskKey" }
23
+ "taskKey": { "ref": "params.taskKey" },
24
+ "iteration": { "ref": "params.iteration" }
24
25
  }
25
26
  },
26
27
  "mr_description_json_file": {
27
28
  "artifact": {
28
29
  "kind": "mr-description-json-file",
29
- "taskKey": { "ref": "params.taskKey" }
30
+ "taskKey": { "ref": "params.taskKey" },
31
+ "iteration": { "ref": "params.iteration" }
30
32
  }
31
33
  }
32
34
  },
@@ -34,20 +36,23 @@
34
36
  "format": "task-prompt"
35
37
  },
36
38
  "params": {
37
- "labelText": { "const": "Running Codex MR description mode" },
38
- "model": { "const": "gpt-5.4" },
39
+ "labelText": { "const": "Running MR description mode" },
40
+ "model": { "ref": "params.llmModel" },
41
+ "executor": { "ref": "params.llmExecutor" },
39
42
  "requiredArtifacts": {
40
43
  "list": [
41
44
  {
42
45
  "artifact": {
43
46
  "kind": "mr-description-file",
44
- "taskKey": { "ref": "params.taskKey" }
47
+ "taskKey": { "ref": "params.taskKey" },
48
+ "iteration": { "ref": "params.iteration" }
45
49
  }
46
50
  },
47
51
  {
48
52
  "artifact": {
49
53
  "kind": "mr-description-json-file",
50
- "taskKey": { "ref": "params.taskKey" }
54
+ "taskKey": { "ref": "params.taskKey" },
55
+ "iteration": { "ref": "params.iteration" }
51
56
  }
52
57
  }
53
58
  ]
@@ -60,7 +65,8 @@
60
65
  "path": {
61
66
  "artifact": {
62
67
  "kind": "mr-description-file",
63
- "taskKey": { "ref": "params.taskKey" }
68
+ "taskKey": { "ref": "params.taskKey" },
69
+ "iteration": { "ref": "params.iteration" }
64
70
  }
65
71
  },
66
72
  "message": "MR description mode did not produce the MR description artifact."
@@ -73,7 +79,8 @@
73
79
  "path": {
74
80
  "artifact": {
75
81
  "kind": "mr-description-json-file",
76
- "taskKey": { "ref": "params.taskKey" }
82
+ "taskKey": { "ref": "params.taskKey" },
83
+ "iteration": { "ref": "params.iteration" }
77
84
  }
78
85
  },
79
86
  "schemaId": "mr-description/v1"
@@ -18,7 +18,7 @@
18
18
  "artifact": {
19
19
  "kind": "run-go-linter-result-json-file",
20
20
  "taskKey": { "ref": "params.taskKey" },
21
- "iteration": { "const": 1 }
21
+ "iteration": { "ref": "params.runGoLinterIteration" }
22
22
  }
23
23
  },
24
24
  "labelText": {
@@ -33,7 +33,7 @@
33
33
  "artifact": {
34
34
  "kind": "run-go-linter-result-json-file",
35
35
  "taskKey": { "ref": "params.taskKey" },
36
- "iteration": { "const": 1 }
36
+ "iteration": { "ref": "params.runGoLinterIteration" }
37
37
  }
38
38
  },
39
39
  "message": "run-go-linter-loop did not produce the structured linter result artifact."
@@ -54,7 +54,7 @@
54
54
  { "const": false }
55
55
  ]
56
56
  },
57
- "node": "codex-local-prompt",
57
+ "node": "llm-prompt",
58
58
  "prompt": {
59
59
  "templateRef": "run-go-linter-loop-fix",
60
60
  "vars": {
@@ -62,7 +62,7 @@
62
62
  "artifact": {
63
63
  "kind": "run-go-linter-result-json-file",
64
64
  "taskKey": { "ref": "params.taskKey" },
65
- "iteration": { "const": 1 }
65
+ "iteration": { "ref": "params.runGoLinterIteration" }
66
66
  }
67
67
  }
68
68
  },
@@ -76,7 +76,7 @@
76
76
  "artifact": {
77
77
  "kind": "run-go-linter-result-json-file",
78
78
  "taskKey": { "ref": "params.taskKey" },
79
- "iteration": { "const": 1 }
79
+ "iteration": { "ref": "params.runGoLinterIteration" }
80
80
  }
81
81
  },
82
82
  "exit_code": { "ref": "steps.run_go_linter_try_1.run_go_linter.outputs.parsed.exitCode" },
@@ -90,9 +90,10 @@
90
90
  },
91
91
  "params": {
92
92
  "labelText": {
93
- "const": "Running Codex Go linter loop fix (attempt 1)"
93
+ "const": "Running Go linter loop fix (attempt 1)"
94
94
  },
95
- "model": { "const": "gpt-5.4" }
95
+ "model": { "ref": "params.llmModel" },
96
+ "executor": { "ref": "params.llmExecutor" }
96
97
  }
97
98
  }
98
99
  ]
@@ -126,7 +127,13 @@
126
127
  "artifact": {
127
128
  "kind": "run-go-linter-result-json-file",
128
129
  "taskKey": { "ref": "params.taskKey" },
129
- "iteration": { "ref": "repeat.attempt" }
130
+ "iteration": {
131
+ "add": [
132
+ { "ref": "params.runGoLinterIteration" },
133
+ { "const": -1 },
134
+ { "ref": "repeat.attempt" }
135
+ ]
136
+ }
130
137
  }
131
138
  },
132
139
  "labelText": {
@@ -141,7 +148,13 @@
141
148
  "artifact": {
142
149
  "kind": "run-go-linter-result-json-file",
143
150
  "taskKey": { "ref": "params.taskKey" },
144
- "iteration": { "ref": "repeat.attempt" }
151
+ "iteration": {
152
+ "add": [
153
+ { "ref": "params.runGoLinterIteration" },
154
+ { "const": -1 },
155
+ { "ref": "repeat.attempt" }
156
+ ]
157
+ }
145
158
  }
146
159
  },
147
160
  "message": "run-go-linter-loop did not produce the structured linter result artifact."
@@ -162,7 +175,7 @@
162
175
  { "const": false }
163
176
  ]
164
177
  },
165
- "node": "codex-local-prompt",
178
+ "node": "llm-prompt",
166
179
  "prompt": {
167
180
  "templateRef": "run-go-linter-loop-fix",
168
181
  "vars": {
@@ -170,7 +183,13 @@
170
183
  "artifact": {
171
184
  "kind": "run-go-linter-result-json-file",
172
185
  "taskKey": { "ref": "params.taskKey" },
173
- "iteration": { "ref": "repeat.attempt" }
186
+ "iteration": {
187
+ "add": [
188
+ { "ref": "params.runGoLinterIteration" },
189
+ { "const": -1 },
190
+ { "ref": "repeat.attempt" }
191
+ ]
192
+ }
174
193
  }
175
194
  }
176
195
  },
@@ -184,7 +203,13 @@
184
203
  "artifact": {
185
204
  "kind": "run-go-linter-result-json-file",
186
205
  "taskKey": { "ref": "params.taskKey" },
187
- "iteration": { "ref": "repeat.attempt" }
206
+ "iteration": {
207
+ "add": [
208
+ { "ref": "params.runGoLinterIteration" },
209
+ { "const": -1 },
210
+ { "ref": "repeat.attempt" }
211
+ ]
212
+ }
188
213
  }
189
214
  },
190
215
  "exit_code": { "ref": "steps.run_go_linter_try_${attempt}.run_go_linter.outputs.parsed.exitCode" },
@@ -198,9 +223,10 @@
198
223
  },
199
224
  "params": {
200
225
  "labelText": {
201
- "template": "Running Codex Go linter loop fix (attempt ${attempt})"
226
+ "template": "Running Go linter loop fix (attempt ${attempt})"
202
227
  },
203
- "model": { "const": "gpt-5.4" }
228
+ "model": { "ref": "params.llmModel" },
229
+ "executor": { "ref": "params.llmExecutor" }
204
230
  }
205
231
  }
206
232
  ]
@@ -18,7 +18,7 @@
18
18
  "artifact": {
19
19
  "kind": "run-go-tests-result-json-file",
20
20
  "taskKey": { "ref": "params.taskKey" },
21
- "iteration": { "const": 1 }
21
+ "iteration": { "ref": "params.runGoTestsIteration" }
22
22
  }
23
23
  },
24
24
  "labelText": {
@@ -33,7 +33,7 @@
33
33
  "artifact": {
34
34
  "kind": "run-go-tests-result-json-file",
35
35
  "taskKey": { "ref": "params.taskKey" },
36
- "iteration": { "const": 1 }
36
+ "iteration": { "ref": "params.runGoTestsIteration" }
37
37
  }
38
38
  },
39
39
  "message": "run-go-tests-loop did not produce the structured tests result artifact."
@@ -54,7 +54,7 @@
54
54
  { "const": false }
55
55
  ]
56
56
  },
57
- "node": "codex-local-prompt",
57
+ "node": "llm-prompt",
58
58
  "prompt": {
59
59
  "templateRef": "run-go-tests-loop-fix",
60
60
  "vars": {
@@ -62,7 +62,7 @@
62
62
  "artifact": {
63
63
  "kind": "run-go-tests-result-json-file",
64
64
  "taskKey": { "ref": "params.taskKey" },
65
- "iteration": { "const": 1 }
65
+ "iteration": { "ref": "params.runGoTestsIteration" }
66
66
  }
67
67
  }
68
68
  },
@@ -76,7 +76,7 @@
76
76
  "artifact": {
77
77
  "kind": "run-go-tests-result-json-file",
78
78
  "taskKey": { "ref": "params.taskKey" },
79
- "iteration": { "const": 1 }
79
+ "iteration": { "ref": "params.runGoTestsIteration" }
80
80
  }
81
81
  },
82
82
  "exit_code": { "ref": "steps.run_go_tests_try_1.run_go_tests.outputs.parsed.exitCode" },
@@ -90,9 +90,10 @@
90
90
  },
91
91
  "params": {
92
92
  "labelText": {
93
- "const": "Running Codex Go tests loop fix (attempt 1)"
93
+ "const": "Running Go tests loop fix (attempt 1)"
94
94
  },
95
- "model": { "const": "gpt-5.4" }
95
+ "model": { "ref": "params.llmModel" },
96
+ "executor": { "ref": "params.llmExecutor" }
96
97
  }
97
98
  }
98
99
  ]
@@ -126,7 +127,13 @@
126
127
  "artifact": {
127
128
  "kind": "run-go-tests-result-json-file",
128
129
  "taskKey": { "ref": "params.taskKey" },
129
- "iteration": { "ref": "repeat.attempt" }
130
+ "iteration": {
131
+ "add": [
132
+ { "ref": "params.runGoTestsIteration" },
133
+ { "const": -1 },
134
+ { "ref": "repeat.attempt" }
135
+ ]
136
+ }
130
137
  }
131
138
  },
132
139
  "labelText": {
@@ -141,7 +148,13 @@
141
148
  "artifact": {
142
149
  "kind": "run-go-tests-result-json-file",
143
150
  "taskKey": { "ref": "params.taskKey" },
144
- "iteration": { "ref": "repeat.attempt" }
151
+ "iteration": {
152
+ "add": [
153
+ { "ref": "params.runGoTestsIteration" },
154
+ { "const": -1 },
155
+ { "ref": "repeat.attempt" }
156
+ ]
157
+ }
145
158
  }
146
159
  },
147
160
  "message": "run-go-tests-loop did not produce the structured tests result artifact."
@@ -162,7 +175,7 @@
162
175
  { "const": false }
163
176
  ]
164
177
  },
165
- "node": "codex-local-prompt",
178
+ "node": "llm-prompt",
166
179
  "prompt": {
167
180
  "templateRef": "run-go-tests-loop-fix",
168
181
  "vars": {
@@ -170,7 +183,13 @@
170
183
  "artifact": {
171
184
  "kind": "run-go-tests-result-json-file",
172
185
  "taskKey": { "ref": "params.taskKey" },
173
- "iteration": { "ref": "repeat.attempt" }
186
+ "iteration": {
187
+ "add": [
188
+ { "ref": "params.runGoTestsIteration" },
189
+ { "const": -1 },
190
+ { "ref": "repeat.attempt" }
191
+ ]
192
+ }
174
193
  }
175
194
  }
176
195
  },
@@ -184,7 +203,13 @@
184
203
  "artifact": {
185
204
  "kind": "run-go-tests-result-json-file",
186
205
  "taskKey": { "ref": "params.taskKey" },
187
- "iteration": { "ref": "repeat.attempt" }
206
+ "iteration": {
207
+ "add": [
208
+ { "ref": "params.runGoTestsIteration" },
209
+ { "const": -1 },
210
+ { "ref": "repeat.attempt" }
211
+ ]
212
+ }
188
213
  }
189
214
  },
190
215
  "exit_code": { "ref": "steps.run_go_tests_try_${attempt}.run_go_tests.outputs.parsed.exitCode" },
@@ -198,9 +223,10 @@
198
223
  },
199
224
  "params": {
200
225
  "labelText": {
201
- "template": "Running Codex Go tests loop fix (attempt ${attempt})"
226
+ "template": "Running Go tests loop fix (attempt ${attempt})"
202
227
  },
203
- "model": { "const": "gpt-5.4" }
228
+ "model": { "ref": "params.llmModel" },
229
+ "executor": { "ref": "params.llmExecutor" }
204
230
  }
205
231
  }
206
232
  ]