@xn-intenton-z2a/agentic-lib 7.4.22 → 7.4.24
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.
- package/.github/agents/agent-issue-resolution.md +2 -0
- package/.github/agents/agent-supervisor.md +2 -2
- package/.github/workflows/agentic-lib-flow.yml +331 -25
- package/.github/workflows/agentic-lib-init.yml +1 -1
- package/.github/workflows/agentic-lib-schedule.yml +1 -1
- package/.github/workflows/agentic-lib-workflow.yml +234 -32
- package/agentic-lib.toml +37 -4
- package/package.json +1 -1
- package/src/actions/agentic-step/tasks/direct.js +52 -0
- package/src/actions/agentic-step/tasks/fix-code.js +7 -6
- package/src/actions/agentic-step/tasks/maintain-features.js +5 -4
- package/src/actions/agentic-step/tasks/maintain-library.js +5 -4
- package/src/actions/agentic-step/tasks/supervise.js +25 -0
- package/src/actions/agentic-step/tasks/transform.js +152 -27
- package/src/copilot/config.js +23 -1
- package/src/copilot/copilot-session.js +10 -5
- package/src/iterate.js +1 -1
- package/src/seeds/zero-package.json +1 -1
|
@@ -85,6 +85,8 @@ When writing both tests and implementation:
|
|
|
85
85
|
**Both unit tests AND behaviour tests must pass.** The project runs `npm test` (unit tests) and
|
|
86
86
|
`npm run test:behaviour` (Playwright). Both are gated — your changes must pass both.
|
|
87
87
|
|
|
88
|
+
**Code coverage:** Aim for the coverage thresholds stated in the Constraints section of the prompt. Write tests that exercise the code paths you're adding or modifying.
|
|
89
|
+
|
|
88
90
|
### Test philosophy
|
|
89
91
|
|
|
90
92
|
- **Unit tests** bind to the detail: exact return values, error types, edge cases, parameter validation.
|
|
@@ -68,7 +68,7 @@ If an **Implementation Review** section is present in the prompt, examine it car
|
|
|
68
68
|
|
|
69
69
|
## Priority Order
|
|
70
70
|
|
|
71
|
-
1. **Always strive to close gaps** — every action you take should aim to satisfy the remaining NOT MET metrics. If the code is already complete (see Source Exports and Recently Closed Issues), use `nop` and let the director evaluate. Otherwise,
|
|
71
|
+
1. **Always strive to close gaps** — every action you take should aim to satisfy the remaining NOT MET metrics. If the code is already complete (see Source Exports and Recently Closed Issues), use `nop` and let the director evaluate. Otherwise, assess the full gap between current state and mission, then create as many distinct issues as needed to cover the entire gap. Ideally one comprehensive issue covering the whole gap, but if the work is naturally separable (e.g. different features, different layers), create multiple focused issues. Create up to the WIP limit. Each issue should be self-contained and independently deliverable.
|
|
72
72
|
2. **Dispatch transform when ready issues exist** — transform is where code gets written. Always prefer it over maintain when there are open issues with the `ready` label.
|
|
73
73
|
3. **Dispatch review after transform** — when recent workflow runs show a transform completion, dispatch review to close resolved issues and add `ready` labels to new issues. This keeps the pipeline flowing.
|
|
74
74
|
4. **Fix failing PRs** — dispatch fix-code for any PR with failing checks (include pr-number).
|
|
@@ -78,7 +78,7 @@ If an **Implementation Review** section is present in the prompt, examine it car
|
|
|
78
78
|
|
|
79
79
|
1. **Check what's already in progress** — don't duplicate work. If the workflow is already running, don't dispatch another.
|
|
80
80
|
2. **Prioritise code generation** — the goal is working code. Prefer actions that produce code (dev-only, fix) over metadata (maintain, label).
|
|
81
|
-
3. **Right-size the work** — break the mission into chunks
|
|
81
|
+
3. **Right-size the work** — break the mission into the fewest chunks that can each be reliably delivered in a single transform. Create all the issues needed upfront rather than waiting for each to land before creating the next. Each issue should request maximum implementation in its scope.
|
|
82
82
|
4. **Respect limits** — don't create issues beyond the WIP limit shown in the context. Don't dispatch workflows that will fail due to missing prerequisites.
|
|
83
83
|
|
|
84
84
|
## When to use each action
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
# .github/workflows/agentic-lib-flow.yml
|
|
4
4
|
#
|
|
5
5
|
# Uber workflow: runs the full pipeline end-to-end.
|
|
6
|
-
# Pattern: update → init → (test + bot + N×workflow) × 4 → test + bot → verify
|
|
6
|
+
# Pattern: update → init → (test + bot + N×workflow) × 4 → test + bot → verify → report
|
|
7
7
|
# Each sub-workflow dispatches at HEAD of main at dispatch time (not at uber job start).
|
|
8
|
+
# Mission-complete/failed checks before each workflow run to skip remaining iterations.
|
|
8
9
|
|
|
9
10
|
name: agentic-lib-flow
|
|
10
11
|
run-name: "agentic-lib-flow [${{ github.ref_name }}] ${{ inputs.mission-seed }} (${{ inputs.workflow-runs }} runs)"
|
|
@@ -51,9 +52,8 @@ on:
|
|
|
51
52
|
description: "Copilot SDK model"
|
|
52
53
|
type: choice
|
|
53
54
|
required: false
|
|
54
|
-
default: ""
|
|
55
|
+
default: "gpt-5-mini"
|
|
55
56
|
options:
|
|
56
|
-
- ""
|
|
57
57
|
- gpt-5-mini
|
|
58
58
|
- claude-sonnet-4
|
|
59
59
|
- gpt-4.1
|
|
@@ -61,11 +61,10 @@ on:
|
|
|
61
61
|
description: "Tuning profile"
|
|
62
62
|
type: choice
|
|
63
63
|
required: false
|
|
64
|
-
default: ""
|
|
64
|
+
default: "max"
|
|
65
65
|
options:
|
|
66
|
-
- ""
|
|
67
66
|
- min
|
|
68
|
-
-
|
|
67
|
+
- med
|
|
69
68
|
- max
|
|
70
69
|
workflow-runs:
|
|
71
70
|
description: "Number of workflow iterations (1-16)"
|
|
@@ -125,27 +124,104 @@ jobs:
|
|
|
125
124
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
126
125
|
secrets: inherit
|
|
127
126
|
|
|
128
|
-
|
|
127
|
+
check-1:
|
|
129
128
|
needs: [bot-1]
|
|
130
129
|
if: always() && needs.bot-1.result == 'success' && inputs.workflow-runs >= 1
|
|
130
|
+
runs-on: ubuntu-latest
|
|
131
|
+
outputs:
|
|
132
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
133
|
+
steps:
|
|
134
|
+
- uses: actions/checkout@v6
|
|
135
|
+
with:
|
|
136
|
+
ref: main
|
|
137
|
+
fetch-depth: 1
|
|
138
|
+
- id: check
|
|
139
|
+
run: |
|
|
140
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
141
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
142
|
+
echo "Mission is over — skipping remaining workflow runs"
|
|
143
|
+
else
|
|
144
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
145
|
+
fi
|
|
146
|
+
|
|
147
|
+
workflow-1:
|
|
148
|
+
needs: [check-1]
|
|
149
|
+
if: always() && needs.check-1.result == 'success' && needs.check-1.outputs.mission-over != 'true' && inputs.workflow-runs >= 1
|
|
131
150
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
132
151
|
secrets: inherit
|
|
133
152
|
|
|
134
|
-
|
|
153
|
+
check-2:
|
|
135
154
|
needs: [workflow-1]
|
|
136
155
|
if: always() && needs.workflow-1.result == 'success' && inputs.workflow-runs >= 2
|
|
156
|
+
runs-on: ubuntu-latest
|
|
157
|
+
outputs:
|
|
158
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
159
|
+
steps:
|
|
160
|
+
- uses: actions/checkout@v6
|
|
161
|
+
with:
|
|
162
|
+
ref: main
|
|
163
|
+
fetch-depth: 1
|
|
164
|
+
- id: check
|
|
165
|
+
run: |
|
|
166
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
167
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
168
|
+
else
|
|
169
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
170
|
+
fi
|
|
171
|
+
|
|
172
|
+
workflow-2:
|
|
173
|
+
needs: [check-2]
|
|
174
|
+
if: always() && needs.check-2.result == 'success' && needs.check-2.outputs.mission-over != 'true' && inputs.workflow-runs >= 2
|
|
137
175
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
138
176
|
secrets: inherit
|
|
139
177
|
|
|
140
|
-
|
|
178
|
+
check-3:
|
|
141
179
|
needs: [workflow-2]
|
|
142
180
|
if: always() && needs.workflow-2.result == 'success' && inputs.workflow-runs >= 3
|
|
181
|
+
runs-on: ubuntu-latest
|
|
182
|
+
outputs:
|
|
183
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
184
|
+
steps:
|
|
185
|
+
- uses: actions/checkout@v6
|
|
186
|
+
with:
|
|
187
|
+
ref: main
|
|
188
|
+
fetch-depth: 1
|
|
189
|
+
- id: check
|
|
190
|
+
run: |
|
|
191
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
192
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
193
|
+
else
|
|
194
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
195
|
+
fi
|
|
196
|
+
|
|
197
|
+
workflow-3:
|
|
198
|
+
needs: [check-3]
|
|
199
|
+
if: always() && needs.check-3.result == 'success' && needs.check-3.outputs.mission-over != 'true' && inputs.workflow-runs >= 3
|
|
143
200
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
144
201
|
secrets: inherit
|
|
145
202
|
|
|
146
|
-
|
|
203
|
+
check-4:
|
|
147
204
|
needs: [workflow-3]
|
|
148
205
|
if: always() && needs.workflow-3.result == 'success' && inputs.workflow-runs >= 4
|
|
206
|
+
runs-on: ubuntu-latest
|
|
207
|
+
outputs:
|
|
208
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
209
|
+
steps:
|
|
210
|
+
- uses: actions/checkout@v6
|
|
211
|
+
with:
|
|
212
|
+
ref: main
|
|
213
|
+
fetch-depth: 1
|
|
214
|
+
- id: check
|
|
215
|
+
run: |
|
|
216
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
217
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
218
|
+
else
|
|
219
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
220
|
+
fi
|
|
221
|
+
|
|
222
|
+
workflow-4:
|
|
223
|
+
needs: [check-4]
|
|
224
|
+
if: always() && needs.check-4.result == 'success' && needs.check-4.outputs.mission-over != 'true' && inputs.workflow-runs >= 4
|
|
149
225
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
150
226
|
secrets: inherit
|
|
151
227
|
|
|
@@ -162,27 +238,103 @@ jobs:
|
|
|
162
238
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
163
239
|
secrets: inherit
|
|
164
240
|
|
|
165
|
-
|
|
241
|
+
check-5:
|
|
166
242
|
needs: [bot-2]
|
|
167
243
|
if: always() && needs.bot-2.result == 'success' && inputs.workflow-runs >= 5
|
|
244
|
+
runs-on: ubuntu-latest
|
|
245
|
+
outputs:
|
|
246
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
247
|
+
steps:
|
|
248
|
+
- uses: actions/checkout@v6
|
|
249
|
+
with:
|
|
250
|
+
ref: main
|
|
251
|
+
fetch-depth: 1
|
|
252
|
+
- id: check
|
|
253
|
+
run: |
|
|
254
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
255
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
256
|
+
else
|
|
257
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
258
|
+
fi
|
|
259
|
+
|
|
260
|
+
workflow-5:
|
|
261
|
+
needs: [check-5]
|
|
262
|
+
if: always() && needs.check-5.result == 'success' && needs.check-5.outputs.mission-over != 'true' && inputs.workflow-runs >= 5
|
|
168
263
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
169
264
|
secrets: inherit
|
|
170
265
|
|
|
171
|
-
|
|
266
|
+
check-6:
|
|
172
267
|
needs: [workflow-5]
|
|
173
268
|
if: always() && needs.workflow-5.result == 'success' && inputs.workflow-runs >= 6
|
|
269
|
+
runs-on: ubuntu-latest
|
|
270
|
+
outputs:
|
|
271
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
272
|
+
steps:
|
|
273
|
+
- uses: actions/checkout@v6
|
|
274
|
+
with:
|
|
275
|
+
ref: main
|
|
276
|
+
fetch-depth: 1
|
|
277
|
+
- id: check
|
|
278
|
+
run: |
|
|
279
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
280
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
281
|
+
else
|
|
282
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
283
|
+
fi
|
|
284
|
+
|
|
285
|
+
workflow-6:
|
|
286
|
+
needs: [check-6]
|
|
287
|
+
if: always() && needs.check-6.result == 'success' && needs.check-6.outputs.mission-over != 'true' && inputs.workflow-runs >= 6
|
|
174
288
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
175
289
|
secrets: inherit
|
|
176
290
|
|
|
177
|
-
|
|
291
|
+
check-7:
|
|
178
292
|
needs: [workflow-6]
|
|
179
293
|
if: always() && needs.workflow-6.result == 'success' && inputs.workflow-runs >= 7
|
|
294
|
+
runs-on: ubuntu-latest
|
|
295
|
+
outputs:
|
|
296
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
297
|
+
steps:
|
|
298
|
+
- uses: actions/checkout@v6
|
|
299
|
+
with:
|
|
300
|
+
ref: main
|
|
301
|
+
fetch-depth: 1
|
|
302
|
+
- id: check
|
|
303
|
+
run: |
|
|
304
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
305
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
306
|
+
else
|
|
307
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
308
|
+
fi
|
|
309
|
+
|
|
310
|
+
workflow-7:
|
|
311
|
+
needs: [check-7]
|
|
312
|
+
if: always() && needs.check-7.result == 'success' && needs.check-7.outputs.mission-over != 'true' && inputs.workflow-runs >= 7
|
|
180
313
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
181
314
|
secrets: inherit
|
|
182
315
|
|
|
183
|
-
|
|
316
|
+
check-8:
|
|
184
317
|
needs: [workflow-7]
|
|
185
318
|
if: always() && needs.workflow-7.result == 'success' && inputs.workflow-runs >= 8
|
|
319
|
+
runs-on: ubuntu-latest
|
|
320
|
+
outputs:
|
|
321
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
322
|
+
steps:
|
|
323
|
+
- uses: actions/checkout@v6
|
|
324
|
+
with:
|
|
325
|
+
ref: main
|
|
326
|
+
fetch-depth: 1
|
|
327
|
+
- id: check
|
|
328
|
+
run: |
|
|
329
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
330
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
331
|
+
else
|
|
332
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
333
|
+
fi
|
|
334
|
+
|
|
335
|
+
workflow-8:
|
|
336
|
+
needs: [check-8]
|
|
337
|
+
if: always() && needs.check-8.result == 'success' && needs.check-8.outputs.mission-over != 'true' && inputs.workflow-runs >= 8
|
|
186
338
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
187
339
|
secrets: inherit
|
|
188
340
|
|
|
@@ -199,27 +351,103 @@ jobs:
|
|
|
199
351
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
200
352
|
secrets: inherit
|
|
201
353
|
|
|
202
|
-
|
|
354
|
+
check-9:
|
|
203
355
|
needs: [bot-3]
|
|
204
356
|
if: always() && needs.bot-3.result == 'success' && inputs.workflow-runs >= 9
|
|
357
|
+
runs-on: ubuntu-latest
|
|
358
|
+
outputs:
|
|
359
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
360
|
+
steps:
|
|
361
|
+
- uses: actions/checkout@v6
|
|
362
|
+
with:
|
|
363
|
+
ref: main
|
|
364
|
+
fetch-depth: 1
|
|
365
|
+
- id: check
|
|
366
|
+
run: |
|
|
367
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
368
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
369
|
+
else
|
|
370
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
371
|
+
fi
|
|
372
|
+
|
|
373
|
+
workflow-9:
|
|
374
|
+
needs: [check-9]
|
|
375
|
+
if: always() && needs.check-9.result == 'success' && needs.check-9.outputs.mission-over != 'true' && inputs.workflow-runs >= 9
|
|
205
376
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
206
377
|
secrets: inherit
|
|
207
378
|
|
|
208
|
-
|
|
379
|
+
check-10:
|
|
209
380
|
needs: [workflow-9]
|
|
210
381
|
if: always() && needs.workflow-9.result == 'success' && inputs.workflow-runs >= 10
|
|
382
|
+
runs-on: ubuntu-latest
|
|
383
|
+
outputs:
|
|
384
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
385
|
+
steps:
|
|
386
|
+
- uses: actions/checkout@v6
|
|
387
|
+
with:
|
|
388
|
+
ref: main
|
|
389
|
+
fetch-depth: 1
|
|
390
|
+
- id: check
|
|
391
|
+
run: |
|
|
392
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
393
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
394
|
+
else
|
|
395
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
396
|
+
fi
|
|
397
|
+
|
|
398
|
+
workflow-10:
|
|
399
|
+
needs: [check-10]
|
|
400
|
+
if: always() && needs.check-10.result == 'success' && needs.check-10.outputs.mission-over != 'true' && inputs.workflow-runs >= 10
|
|
211
401
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
212
402
|
secrets: inherit
|
|
213
403
|
|
|
214
|
-
|
|
404
|
+
check-11:
|
|
215
405
|
needs: [workflow-10]
|
|
216
406
|
if: always() && needs.workflow-10.result == 'success' && inputs.workflow-runs >= 11
|
|
407
|
+
runs-on: ubuntu-latest
|
|
408
|
+
outputs:
|
|
409
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
410
|
+
steps:
|
|
411
|
+
- uses: actions/checkout@v6
|
|
412
|
+
with:
|
|
413
|
+
ref: main
|
|
414
|
+
fetch-depth: 1
|
|
415
|
+
- id: check
|
|
416
|
+
run: |
|
|
417
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
418
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
419
|
+
else
|
|
420
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
421
|
+
fi
|
|
422
|
+
|
|
423
|
+
workflow-11:
|
|
424
|
+
needs: [check-11]
|
|
425
|
+
if: always() && needs.check-11.result == 'success' && needs.check-11.outputs.mission-over != 'true' && inputs.workflow-runs >= 11
|
|
217
426
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
218
427
|
secrets: inherit
|
|
219
428
|
|
|
220
|
-
|
|
429
|
+
check-12:
|
|
221
430
|
needs: [workflow-11]
|
|
222
431
|
if: always() && needs.workflow-11.result == 'success' && inputs.workflow-runs >= 12
|
|
432
|
+
runs-on: ubuntu-latest
|
|
433
|
+
outputs:
|
|
434
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
435
|
+
steps:
|
|
436
|
+
- uses: actions/checkout@v6
|
|
437
|
+
with:
|
|
438
|
+
ref: main
|
|
439
|
+
fetch-depth: 1
|
|
440
|
+
- id: check
|
|
441
|
+
run: |
|
|
442
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
443
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
444
|
+
else
|
|
445
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
446
|
+
fi
|
|
447
|
+
|
|
448
|
+
workflow-12:
|
|
449
|
+
needs: [check-12]
|
|
450
|
+
if: always() && needs.check-12.result == 'success' && needs.check-12.outputs.mission-over != 'true' && inputs.workflow-runs >= 12
|
|
223
451
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
224
452
|
secrets: inherit
|
|
225
453
|
|
|
@@ -236,31 +464,107 @@ jobs:
|
|
|
236
464
|
uses: ./.github/workflows/agentic-lib-bot.yml
|
|
237
465
|
secrets: inherit
|
|
238
466
|
|
|
239
|
-
|
|
467
|
+
check-13:
|
|
240
468
|
needs: [bot-4]
|
|
241
469
|
if: always() && needs.bot-4.result == 'success' && inputs.workflow-runs >= 13
|
|
470
|
+
runs-on: ubuntu-latest
|
|
471
|
+
outputs:
|
|
472
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
473
|
+
steps:
|
|
474
|
+
- uses: actions/checkout@v6
|
|
475
|
+
with:
|
|
476
|
+
ref: main
|
|
477
|
+
fetch-depth: 1
|
|
478
|
+
- id: check
|
|
479
|
+
run: |
|
|
480
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
481
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
482
|
+
else
|
|
483
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
484
|
+
fi
|
|
485
|
+
|
|
486
|
+
workflow-13:
|
|
487
|
+
needs: [check-13]
|
|
488
|
+
if: always() && needs.check-13.result == 'success' && needs.check-13.outputs.mission-over != 'true' && inputs.workflow-runs >= 13
|
|
242
489
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
243
490
|
secrets: inherit
|
|
244
491
|
|
|
245
|
-
|
|
492
|
+
check-14:
|
|
246
493
|
needs: [workflow-13]
|
|
247
494
|
if: always() && needs.workflow-13.result == 'success' && inputs.workflow-runs >= 14
|
|
495
|
+
runs-on: ubuntu-latest
|
|
496
|
+
outputs:
|
|
497
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
498
|
+
steps:
|
|
499
|
+
- uses: actions/checkout@v6
|
|
500
|
+
with:
|
|
501
|
+
ref: main
|
|
502
|
+
fetch-depth: 1
|
|
503
|
+
- id: check
|
|
504
|
+
run: |
|
|
505
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
506
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
507
|
+
else
|
|
508
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
509
|
+
fi
|
|
510
|
+
|
|
511
|
+
workflow-14:
|
|
512
|
+
needs: [check-14]
|
|
513
|
+
if: always() && needs.check-14.result == 'success' && needs.check-14.outputs.mission-over != 'true' && inputs.workflow-runs >= 14
|
|
248
514
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
249
515
|
secrets: inherit
|
|
250
516
|
|
|
251
|
-
|
|
517
|
+
check-15:
|
|
252
518
|
needs: [workflow-14]
|
|
253
519
|
if: always() && needs.workflow-14.result == 'success' && inputs.workflow-runs >= 15
|
|
520
|
+
runs-on: ubuntu-latest
|
|
521
|
+
outputs:
|
|
522
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
523
|
+
steps:
|
|
524
|
+
- uses: actions/checkout@v6
|
|
525
|
+
with:
|
|
526
|
+
ref: main
|
|
527
|
+
fetch-depth: 1
|
|
528
|
+
- id: check
|
|
529
|
+
run: |
|
|
530
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
531
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
532
|
+
else
|
|
533
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
534
|
+
fi
|
|
535
|
+
|
|
536
|
+
workflow-15:
|
|
537
|
+
needs: [check-15]
|
|
538
|
+
if: always() && needs.check-15.result == 'success' && needs.check-15.outputs.mission-over != 'true' && inputs.workflow-runs >= 15
|
|
254
539
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
255
540
|
secrets: inherit
|
|
256
541
|
|
|
257
|
-
|
|
542
|
+
check-16:
|
|
258
543
|
needs: [workflow-15]
|
|
259
544
|
if: always() && needs.workflow-15.result == 'success' && inputs.workflow-runs >= 16
|
|
545
|
+
runs-on: ubuntu-latest
|
|
546
|
+
outputs:
|
|
547
|
+
mission-over: ${{ steps.check.outputs.mission-over }}
|
|
548
|
+
steps:
|
|
549
|
+
- uses: actions/checkout@v6
|
|
550
|
+
with:
|
|
551
|
+
ref: main
|
|
552
|
+
fetch-depth: 1
|
|
553
|
+
- id: check
|
|
554
|
+
run: |
|
|
555
|
+
if [ -f MISSION_COMPLETE.md ] || [ -f MISSION_FAILED.md ]; then
|
|
556
|
+
echo "mission-over=true" >> "$GITHUB_OUTPUT"
|
|
557
|
+
else
|
|
558
|
+
echo "mission-over=false" >> "$GITHUB_OUTPUT"
|
|
559
|
+
fi
|
|
560
|
+
|
|
561
|
+
workflow-16:
|
|
562
|
+
needs: [check-16]
|
|
563
|
+
if: always() && needs.check-16.result == 'success' && needs.check-16.outputs.mission-over != 'true' && inputs.workflow-runs >= 16
|
|
260
564
|
uses: ./.github/workflows/agentic-lib-workflow.yml
|
|
261
565
|
secrets: inherit
|
|
262
566
|
|
|
263
|
-
# ── Final: test + bot
|
|
567
|
+
# ── Final: test + bot (always runs) ────────────────────────────────
|
|
264
568
|
test-final:
|
|
265
569
|
needs: [workflow-4, workflow-8, workflow-12, workflow-16]
|
|
266
570
|
if: always()
|
|
@@ -310,7 +614,6 @@ jobs:
|
|
|
310
614
|
run: |
|
|
311
615
|
git fetch origin agentic-lib-logs --depth=1 2>/dev/null || true
|
|
312
616
|
git show origin/agentic-lib-logs:agentic-lib-state.toml > /tmp/state.toml 2>/dev/null || echo "# no state" > /tmp/state.toml
|
|
313
|
-
# List agent log files
|
|
314
617
|
git ls-tree origin/agentic-lib-logs --name-only 2>/dev/null | grep '^agent-log-' | sort > /tmp/log-files.txt || true
|
|
315
618
|
|
|
316
619
|
- name: Read source and mission
|
|
@@ -321,7 +624,7 @@ jobs:
|
|
|
321
624
|
|
|
322
625
|
- name: Generate report
|
|
323
626
|
run: |
|
|
324
|
-
REPORT_NUM=$(printf "%03d" $(( $(ls
|
|
627
|
+
REPORT_NUM=$(printf "%03d" $(( $(ls BENCHMARK_REPORT_FLOW_*.md 2>/dev/null | wc -l) + 1 )))
|
|
325
628
|
MISSION_SEED="${{ inputs.mission-seed }}"
|
|
326
629
|
MODEL="${{ inputs.model || 'default' }}"
|
|
327
630
|
PROFILE="${{ inputs.profile || 'default' }}"
|
|
@@ -329,7 +632,9 @@ jobs:
|
|
|
329
632
|
SOURCE_LINES=$(cat /tmp/source-lines.txt)
|
|
330
633
|
TEST_FILES=$(cat /tmp/test-files.txt)
|
|
331
634
|
MISSION_COMPLETE="NO"
|
|
635
|
+
MISSION_FAILED="NO"
|
|
332
636
|
if [ -f MISSION_COMPLETE.md ]; then MISSION_COMPLETE="YES"; fi
|
|
637
|
+
if [ -f MISSION_FAILED.md ]; then MISSION_FAILED="YES"; fi
|
|
333
638
|
|
|
334
639
|
cat > "BENCHMARK_REPORT_FLOW_${REPORT_NUM}.md" << REPORT_EOF
|
|
335
640
|
# Flow Benchmark Report ${REPORT_NUM}
|
|
@@ -362,6 +667,7 @@ jobs:
|
|
|
362
667
|
| Metric | Value |
|
|
363
668
|
|--------|-------|
|
|
364
669
|
| Mission complete | ${MISSION_COMPLETE} |
|
|
670
|
+
| Mission failed | ${MISSION_FAILED} |
|
|
365
671
|
| Source lines | ${SOURCE_LINES} |
|
|
366
672
|
| Test files | ${TEST_FILES} |
|
|
367
673
|
| Agent log files | $(wc -l < /tmp/log-files.txt) |
|