testeiya 0.9.0 โ 0.10.0
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/PIPELINES.md +153 -19
- package/README.md +28 -14
- package/dist/prompt/pipeline-report.js +23 -0
- package/dist/prompt/pipeline-report.js.map +1 -0
- package/dist/prompt/report.js +1 -1
- package/dist/prompt/testomat.io.js +2 -2
- package/dist/prompt/testomat.io.js.map +1 -1
- package/dist/src/args.js +19 -1
- package/dist/src/args.js.map +1 -1
- package/dist/src/cli.js +4 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/doctor.js +8 -10
- package/dist/src/doctor.js.map +1 -1
- package/dist/src/langfuse-extension.js +2 -0
- package/dist/src/langfuse-extension.js.map +1 -1
- package/dist/src/mcp.js +20 -90
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/pipeline/command-stage.js +2 -2
- package/dist/src/pipeline/command-stage.js.map +1 -1
- package/dist/src/pipeline/log.js +5 -0
- package/dist/src/pipeline/log.js.map +1 -1
- package/dist/src/pipeline/overlay.js +217 -0
- package/dist/src/pipeline/overlay.js.map +1 -0
- package/dist/src/pipeline/pipeline-file.js +67 -5
- package/dist/src/pipeline/pipeline-file.js.map +1 -1
- package/dist/src/pipeline/pipeline.js +48 -29
- package/dist/src/pipeline/pipeline.js.map +1 -1
- package/dist/src/pipeline/stage.js +49 -13
- package/dist/src/pipeline/stage.js.map +1 -1
- package/dist/src/pipeline/state.js +3 -1
- package/dist/src/pipeline/state.js.map +1 -1
- package/dist/src/pipeline/summary-stage.js +99 -0
- package/dist/src/pipeline/summary-stage.js.map +1 -0
- package/dist/src/pipeline/task-stage.js +25 -10
- package/dist/src/pipeline/task-stage.js.map +1 -1
- package/dist/src/pipeline/variables.js +34 -2
- package/dist/src/pipeline/variables.js.map +1 -1
- package/dist/src/session.js +19 -14
- package/dist/src/session.js.map +1 -1
- package/package.json +6 -9
- package/pipelines/api-testing.yml +9 -6
- package/pipelines/issue-test-cases.yml +14 -13
- package/pipelines/pr-review.yml +13 -9
- package/pipelines/regression.yml +6 -3
- package/pipelines/web-testing.yml +13 -12
- package/prompt/pipeline-report.ts +23 -0
- package/prompt/report.ts +1 -1
- package/prompt/testomat.io.ts +4 -4
- package/dist/src/mcp-extension.js +0 -9
- package/dist/src/mcp-extension.js.map +0 -1
- package/dist/vendor/mcp.js +0 -14801
- package/mcp-tools.json +0 -1949
package/PIPELINES.md
CHANGED
|
@@ -40,6 +40,8 @@ when: [coverage]
|
|
|
40
40
|
|
|
41
41
|
stages:
|
|
42
42
|
- id: tests
|
|
43
|
+
title: Tests
|
|
44
|
+
emoji: ๐งช
|
|
43
45
|
when: [testomatio]
|
|
44
46
|
run: |
|
|
45
47
|
npx -y @testomatio/reporter run --kind detect --warn \
|
|
@@ -48,11 +50,12 @@ stages:
|
|
|
48
50
|
timeout: 30m
|
|
49
51
|
|
|
50
52
|
- id: failures
|
|
53
|
+
title: Failures
|
|
54
|
+
emoji: ๐
|
|
51
55
|
when: [local, test-command]
|
|
52
56
|
session: triage
|
|
53
57
|
task: |
|
|
54
|
-
|
|
55
|
-
if it is flaky, or if the test is out of date. /debug-fix-failed-flaky-autotests
|
|
58
|
+
Triage the failures in tests.log without editing files. /debug-fix-failed-flaky-autotests
|
|
56
59
|
Fail the run if this change caused a failure.
|
|
57
60
|
inputs: [tests.log]
|
|
58
61
|
```
|
|
@@ -61,6 +64,7 @@ stages:
|
|
|
61
64
|
|
|
62
65
|
| Key | Required | Meaning |
|
|
63
66
|
|---|---|---|
|
|
67
|
+
| `extends` | no | A bundled pipeline or a `.yml` path to start from. See [Overrides](#overrides) |
|
|
64
68
|
| `name` | no | Shown in logs and `pipeline.json`. Default: the file name |
|
|
65
69
|
| `description` | no | One line, shown by `testeiya pipeline` |
|
|
66
70
|
| `summary` | no | Extra instructions for the final summary |
|
|
@@ -76,12 +80,14 @@ An unknown key is an error, found before anything runs.
|
|
|
76
80
|
| Key | Meaning |
|
|
77
81
|
|---|---|
|
|
78
82
|
| `id` | Required. Lowercase words joined by dashes. Unique. Names the stage's files. `pipeline` and `summary` are reserved |
|
|
83
|
+
| `title` | Required. The stage's heading in the final report |
|
|
84
|
+
| `emoji` | Required. Shown before the title in the final report |
|
|
79
85
|
| `task` | An agent stage: the task text. `/skill` names expand |
|
|
80
86
|
| `run` | A command stage: a shell command, run with `sh` in the checkout |
|
|
81
87
|
| `when` | Gates this stage needs. One fails: the stage is skipped with its message |
|
|
82
88
|
| `session` | A named, persistent conversation. See [Sessions](#sessions) |
|
|
83
|
-
| `inputs` | Files the stage reads,
|
|
84
|
-
| `outputs` | Files the stage must leave in
|
|
89
|
+
| `inputs` | Files the stage reads, linked into its folder. See [Files](#files) |
|
|
90
|
+
| `outputs` | Files the stage must leave in its folder |
|
|
85
91
|
| `each_line` | Run once per non-empty line of this file. See [Loops](#loops) |
|
|
86
92
|
| `each_file` | Run once per file matching this mask |
|
|
87
93
|
| `stopOn` | `fail`, `gate`, or both as a list. See [Stopping](#stopping) |
|
|
@@ -142,8 +148,8 @@ testeiya pipeline-check regression --set TEST_COMMAND="npx playwright test"
|
|
|
142
148
|
- Validates the file the way a run does, then checks every gate it declares,
|
|
143
149
|
used or not, plus `ai` and any `--gate`.
|
|
144
150
|
- Prints each gate as passed or not, with its `message` when it does not pass.
|
|
145
|
-
- Runs no stage and spends no tokens. Takes `--set`, `--gate`, `--
|
|
146
|
-
and `--json`.
|
|
151
|
+
- Runs no stage and spends no tokens. Takes `--set`, `--gate`, `--stage`,
|
|
152
|
+
`--pipeline`, `--dir`, `--model` and `--json`.
|
|
147
153
|
- Exit code: `0` every gate passes, `1` one does not, `2` the file is invalid.
|
|
148
154
|
- `--diagram` also writes `<name>.diagram.md` to the current folder: a Mermaid
|
|
149
155
|
chart of the stages in order, the files they pass on (dotted), and the gates
|
|
@@ -176,6 +182,23 @@ Every key is optional. All given must hold, and at least one file must count.
|
|
|
176
182
|
- `${NAME}` and `${NAME:-default}` expand in `task`, `env`, `outputs` and gate
|
|
177
183
|
values. Unset is empty. `run` goes to the shell, which uses the same rules and
|
|
178
184
|
more, like `${NAME:+word}`.
|
|
185
|
+
- `${NAME | filter}` runs [Liquid filters](https://liquidjs.com/filters/overview.html)
|
|
186
|
+
on the value: `strip`, `downcase`, `capitalize`, `replace: "/", "-"`,
|
|
187
|
+
`slugify`, `default: "x"`, and the rest. Two more are for URLs: `host` and
|
|
188
|
+
`path`. Filters chain left to right.
|
|
189
|
+
- A shell command cannot use filters. Set a variable in `env:` and use that:
|
|
190
|
+
|
|
191
|
+
```yaml
|
|
192
|
+
env:
|
|
193
|
+
SITE: ${STAGING_URL | host} # staging.example.com
|
|
194
|
+
PAGE: ${STAGING_URL | path | slugify} # users-settings
|
|
195
|
+
NAME: ${SITE}-${PAGE}
|
|
196
|
+
stages:
|
|
197
|
+
- id: explore
|
|
198
|
+
run: explorbot explore "$STAGING_URL" --output "$STAGE_DIR/$NAME"
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
- An unknown filter fails the file, so `pipeline-check` catches it.
|
|
179
202
|
- `--set KEY=VALUE` and the job's own environment reach every stage. `--set` wins
|
|
180
203
|
over `env:`.
|
|
181
204
|
- The runner sets:
|
|
@@ -183,6 +206,7 @@ Every key is optional. All given must hold, and at least one file must count.
|
|
|
183
206
|
| Variable | Value |
|
|
184
207
|
|---|---|
|
|
185
208
|
| `PIPELINE_DIR` | absolute path of the pipeline folder |
|
|
209
|
+
| `STAGE_DIR` | absolute path of the stage's own folder |
|
|
186
210
|
| `PIPELINE_NAME` | the pipeline's name |
|
|
187
211
|
| `PIPELINE_ROUND` | 1, 2, โฆ |
|
|
188
212
|
| `ITEM` | in a loop: the line, or the file's path |
|
|
@@ -194,8 +218,36 @@ they belong to a single task.
|
|
|
194
218
|
|
|
195
219
|
## Files
|
|
196
220
|
|
|
197
|
-
Every stage runs in the checkout
|
|
198
|
-
|
|
221
|
+
Every stage runs in the checkout and keeps its files in a folder of its own,
|
|
222
|
+
numbered in stage order, `$STAGE_DIR`. Open the folders in order to review a run:
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
.qa/
|
|
226
|
+
pipeline.json
|
|
227
|
+
changes.txt
|
|
228
|
+
1-requirements/
|
|
229
|
+
requirements.md
|
|
230
|
+
requirements.json
|
|
231
|
+
2-review/
|
|
232
|
+
requirements.md -> ../1-requirements/requirements.md
|
|
233
|
+
review.md
|
|
234
|
+
review.json
|
|
235
|
+
3-explore/
|
|
236
|
+
explore.log
|
|
237
|
+
explorbot/
|
|
238
|
+
summary/
|
|
239
|
+
draft.md
|
|
240
|
+
summary.md
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
- With 10 stages or more the numbers are padded: `01-review`, `02-check`.
|
|
244
|
+
- Hand a stage's report to the next one, `inputs: [requirements.md]`. Declare
|
|
245
|
+
an extra output only when a command needs its format, like a list to loop
|
|
246
|
+
over. Outputs are never part of the final report.
|
|
247
|
+
- When a skill fits, keep the task to two lines: what to work on, the skill,
|
|
248
|
+
and where files go. The skill holds the method and the format.
|
|
249
|
+
- Paths in `inputs`, `outputs` and loops are relative to the stage folder. A
|
|
250
|
+
path ending in `/` is a folder.
|
|
199
251
|
|
|
200
252
|
Each stage leaves its own files:
|
|
201
253
|
|
|
@@ -206,11 +258,16 @@ Each stage leaves its own files:
|
|
|
206
258
|
| `<id>.log` | command | stdout and stderr |
|
|
207
259
|
|
|
208
260
|
- A later stage reads them by name: `inputs: [review.md]`.
|
|
209
|
-
-
|
|
261
|
+
- Before a stage runs, each input is linked into its folder, from the last
|
|
262
|
+
earlier stage that wrote it or from the top of the pipeline folder. A command
|
|
263
|
+
reads it as `"$STAGE_DIR/review.md"`. Stage numbers never appear in a path.
|
|
264
|
+
- An `outputs` entry may not reuse one of these names, nor be one of the stage's
|
|
265
|
+
inputs. Write a new file.
|
|
210
266
|
- Every input must come from an earlier stage, from the runner (`changes.txt`),
|
|
211
|
-
or exist in the folder at start.
|
|
212
|
-
- After a stage, every `outputs` entry must exist, or the stage is
|
|
213
|
-
|
|
267
|
+
or exist in the pipeline folder at start.
|
|
268
|
+
- After a stage, every `outputs` entry must exist in its folder, or the stage is
|
|
269
|
+
`broken`.
|
|
270
|
+
- An agent stage's task gets a block that names its folder, the files to read,
|
|
214
271
|
the files to write, and inputs a skipped stage did not produce.
|
|
215
272
|
- A command stage whose inputs all come from skipped stages is skipped too. An
|
|
216
273
|
agent stage still runs and is told what is missing.
|
|
@@ -219,18 +276,23 @@ Each stage leaves its own files:
|
|
|
219
276
|
|
|
220
277
|
```yaml
|
|
221
278
|
- id: explore
|
|
279
|
+
title: API exploration
|
|
280
|
+
emoji: ๐ค
|
|
222
281
|
each_line: endpoints.txt
|
|
223
282
|
run: npx -y explorbot api explore "$ITEM"
|
|
224
283
|
|
|
225
284
|
- id: sync
|
|
285
|
+
title: Sync to Testomat.io
|
|
286
|
+
emoji: ๐
|
|
226
287
|
each_file: test-cases/*.md
|
|
227
288
|
task: Sync ${ITEM} to Testomat.io. /sync-test-cases-with-tms
|
|
228
289
|
```
|
|
229
290
|
|
|
230
291
|
- `each_line` runs once per non-empty line. `each_file` runs once per matching
|
|
231
292
|
file, sorted, with `*` and `**`.
|
|
232
|
-
- Both resolve against the
|
|
233
|
-
starts,
|
|
293
|
+
- Both resolve against the stage folder and are matched when the stage starts.
|
|
294
|
+
The folder an `each_file` mask starts with, `test-cases/` here, counts as an
|
|
295
|
+
input and is linked in from the stage that wrote it.
|
|
234
296
|
- Nothing to loop over: the stage is skipped.
|
|
235
297
|
- Items run one after another. A failed item does not stop the others. The stage
|
|
236
298
|
takes the worst item's status.
|
|
@@ -253,10 +315,24 @@ Each stage leaves its own files:
|
|
|
253
315
|
A pipeline with more than one stage ends with a summary. It is not written in
|
|
254
316
|
the file: the runner adds it.
|
|
255
317
|
|
|
256
|
-
-
|
|
257
|
-
|
|
318
|
+
- The runner writes `summary/draft.md`: every stage's report, word for word,
|
|
319
|
+
under its own section. Its headings move down to fit under the section.
|
|
320
|
+
- An agent then trims the draft into `summary/summary.md`. It drops what an
|
|
321
|
+
earlier section already said and shortens sections that are too long. It
|
|
322
|
+
never adds, renames or drops a heading, and never writes content of its own.
|
|
323
|
+
The `summary:` text is passed to it.
|
|
258
324
|
- Its report is the only thing sent to `--output`. Every other stage runs with
|
|
259
325
|
`--no-thread` and posts nothing.
|
|
326
|
+
- It lists every stage, in order, as its own section and nothing else:
|
|
327
|
+
|
|
328
|
+
```markdown
|
|
329
|
+
### ๐งช Tests
|
|
330
|
+
|
|
331
|
+
<the stage's report>
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
- A skipped stage shows its gate message. A stage that did not run says so.
|
|
335
|
+
- Stage reports are not signed. The summary is signed once.
|
|
260
336
|
- It explains the pipeline's verdict and never changes it.
|
|
261
337
|
- It runs after the last stage, and after a stage that stopped the pipeline. Not
|
|
262
338
|
after Ctrl-C, and not when the run was skipped.
|
|
@@ -293,14 +369,72 @@ runs, as a CI cache per pull request, and each run is a round:
|
|
|
293
369
|
|
|
294
370
|
- A retry keeps stages that passed or failed and uses the folder's copy of the
|
|
295
371
|
file, so the stages cannot change half-way.
|
|
296
|
-
- A new round
|
|
297
|
-
`changes` from the last round's commit.
|
|
298
|
-
|
|
372
|
+
- A new round moves the last round's files to `.last/`, keeps `.sessions/`,
|
|
373
|
+
and counts `changes` from the last round's commit.
|
|
374
|
+
- Each agent stage whose folder is in `.last/` is pointed at it and told to
|
|
375
|
+
update that result: keep what still holds, redo what the changes touch. The
|
|
376
|
+
summary is built from those updated reports and updates its comment.
|
|
377
|
+
- Stages match by folder name. A stage that moved gets no last round.
|
|
299
378
|
- `--dir` may not be the checkout or a folder above it.
|
|
300
379
|
|
|
301
380
|
`pipeline.json` in the folder holds the round, each stage's status and the
|
|
302
381
|
round history. `--json` prints it.
|
|
303
382
|
|
|
383
|
+
## Overrides
|
|
384
|
+
|
|
385
|
+
Change a pipeline without copying it. Two ways in, one set of rules.
|
|
386
|
+
|
|
387
|
+
From the command line, for one run:
|
|
388
|
+
|
|
389
|
+
```bash
|
|
390
|
+
testeiya pipeline issue-test-cases \
|
|
391
|
+
--stage 'requirements:append_task: Never assume user credentials. Ask for them.' \
|
|
392
|
+
--stage 'sync:append_when: [release]' \
|
|
393
|
+
--pipeline 'gates: {release: {env: [RELEASE], message: Not a release.}}'
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
From a file, to keep in the repo:
|
|
397
|
+
|
|
398
|
+
```yaml
|
|
399
|
+
# .github/testeiya/issue-test-cases.yml
|
|
400
|
+
extends: issue-test-cases
|
|
401
|
+
gates:
|
|
402
|
+
release:
|
|
403
|
+
env: [RELEASE]
|
|
404
|
+
message: Not a release.
|
|
405
|
+
stages:
|
|
406
|
+
- id: requirements
|
|
407
|
+
append_task: Never assume user credentials. Ask for them.
|
|
408
|
+
- id: sync
|
|
409
|
+
append_when: [release]
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
- `--stage ID:YAML` changes one stage. It splits on the first colon. Several
|
|
413
|
+
keys go in one flow map: `--stage 'explore:{timeout: 45m, append_when: staging}'`.
|
|
414
|
+
- The value is YAML, so quote text that holds `: `:
|
|
415
|
+
`--stage 'plan:append_task: "Note: be brief."'`.
|
|
416
|
+
- `--pipeline YAML` changes the top level: `summary`, `env`, `gates`, `when`, `stages`.
|
|
417
|
+
- `extends` takes a bundled name or a path relative to the file. The rest of the
|
|
418
|
+
file is laid over it. It inherits the base's `name` unless it sets its own.
|
|
419
|
+
- Order: `extends`, then every `--pipeline`, then every `--stage`.
|
|
420
|
+
|
|
421
|
+
| Key | Text: `task`, `run`, `summary`, `message` | List: `when`, `inputs`, `outputs`, `stopOn`, gate `env` and `file` | Map: `env`, `gates` |
|
|
422
|
+
|---|---|---|---|
|
|
423
|
+
| `key` | replaces | replaces | merges by key |
|
|
424
|
+
| `append_key` | adds at the end, on a new line | adds at the end | error |
|
|
425
|
+
| `prepend_key` | adds at the start, on a new line | adds at the start | error |
|
|
426
|
+
| `remove_key` | error | drops the items given | drops the keys given |
|
|
427
|
+
|
|
428
|
+
- Any other key, like `timeout` or `title`, only replaces.
|
|
429
|
+
- Stages match by `id`. An unknown id with a `task` or `run` is a new stage,
|
|
430
|
+
added at the end. Without one it is an error.
|
|
431
|
+
- `remove_stages: [id]` and `remove_gates: [name]` drop a stage or a gate.
|
|
432
|
+
- The result is checked like any pipeline file, before anything runs. A typo,
|
|
433
|
+
a missing stage or a gate no one defines is an error and exits 2.
|
|
434
|
+
- `--dry-run` and `pipeline-check` print every override and the keys it changes.
|
|
435
|
+
- `pipeline.yml` in the folder holds the pipeline with every override applied.
|
|
436
|
+
A retry runs that copy, so it repeats the round it started.
|
|
437
|
+
|
|
304
438
|
## In CI
|
|
305
439
|
|
|
306
440
|
Find what only the job knows in a step of its own, then run the pipeline in one
|
package/README.md
CHANGED
|
@@ -228,28 +228,35 @@ gates:
|
|
|
228
228
|
run: ls "${PLAYWRIGHT_BROWSERS_PATH:-$HOME/.cache/ms-playwright}" | grep -q chromium
|
|
229
229
|
message: No browser. Run npx playwright install --with-deps chromium.
|
|
230
230
|
|
|
231
|
-
env:
|
|
232
|
-
EXPLORBOT_OUTPUT: ${PIPELINE_DIR}/explorbot
|
|
233
|
-
|
|
234
231
|
stages:
|
|
235
232
|
- id: review
|
|
233
|
+
title: Review
|
|
234
|
+
emoji: ๐
|
|
236
235
|
session: qa
|
|
237
236
|
task: Review this pull request. Write browser scenarios to plan.md. /explorbot-plan
|
|
238
237
|
outputs: [plan.md]
|
|
239
238
|
- id: explore
|
|
239
|
+
title: Browser testing
|
|
240
|
+
emoji: ๐
|
|
240
241
|
when: [staging, browser]
|
|
241
|
-
run: npx -y explorbot test "$
|
|
242
|
+
run: EXPLORBOT_OUTPUT="$STAGE_DIR/explorbot" npx -y explorbot test "$STAGE_DIR/plan.md" '*'
|
|
243
|
+
inputs: [plan.md]
|
|
244
|
+
outputs: [explorbot/]
|
|
242
245
|
timeout: 30m
|
|
243
246
|
- id: results
|
|
247
|
+
title: Results
|
|
248
|
+
emoji: ๐
|
|
244
249
|
session: qa
|
|
245
250
|
task: Read the Explorbot report under explorbot/ and say what broke.
|
|
246
251
|
inputs: [explorbot/]
|
|
247
252
|
```
|
|
248
253
|
|
|
249
|
-
- A stage is a `task` for the agent or a `run` shell command.
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
`
|
|
254
|
+
- A stage is a `task` for the agent or a `run` shell command. Its `title` and
|
|
255
|
+
`emoji` head its section in the final report, `### ๐ Review`.
|
|
256
|
+
- Each stage keeps its files in a numbered folder, `1-review/`, `2-explore/`, โฆ,
|
|
257
|
+
so a run reads in order. An agent stage writes `<id>.md` and `<id>.json`, a
|
|
258
|
+
command writes `<id>.log`. `outputs` name the rest. `inputs` are linked into
|
|
259
|
+
the folder from the stage that wrote them, as `$STAGE_DIR/<file>`.
|
|
253
260
|
- `gates` are named checks: `env`, `file`, `run`, or `changes` (`paths`,
|
|
254
261
|
`ignore`, `min_files`). `when:` names the gates a stage needs. One fails and
|
|
255
262
|
the stage is skipped with its message. In the top-level `when:` it skips the
|
|
@@ -263,16 +270,19 @@ stages:
|
|
|
263
270
|
|
|
264
271
|
The full format is in [PIPELINES.md](PIPELINES.md).
|
|
265
272
|
|
|
266
|
-
A pipeline with more than one stage ends with a summary
|
|
267
|
-
|
|
268
|
-
|
|
273
|
+
A pipeline with more than one stage ends with a summary: one `### <emoji> <title>`
|
|
274
|
+
section per stage holding that stage's report, trimmed, with nothing repeated
|
|
275
|
+
between sections. It never adds content of its own. It is the
|
|
276
|
+
only thing posted to `--output`. Every other stage runs with `--no-thread`, so
|
|
277
|
+
nothing else touches the pull request.
|
|
269
278
|
|
|
270
279
|
### Rounds
|
|
271
280
|
|
|
272
281
|
Keep `--dir` between runs, as a CI cache per pull request, and each run is a
|
|
273
282
|
round. A re-run on the same commit retries from the stage that stopped. A new
|
|
274
|
-
commit starts a new round: `changes` count from the last round's commit,
|
|
275
|
-
|
|
283
|
+
commit starts a new round: `changes` count from the last round's commit, the
|
|
284
|
+
last round's files move to `.last/`, and each agent stage updates its own last
|
|
285
|
+
result instead of starting over. The summary updates its comment.
|
|
276
286
|
|
|
277
287
|
```yaml
|
|
278
288
|
- uses: actions/cache/restore@v4
|
|
@@ -294,7 +304,11 @@ those belong to a single task. Use `--thread` on the pipeline instead.
|
|
|
294
304
|
`--set KEY=VALUE` sets a variable for every stage. `--gate NAME:COMMAND` adds a
|
|
295
305
|
check from the CI job: when the command fails, the whole run is skipped and exits
|
|
296
306
|
0, before any output is checked. Use it for what only the job knows, like
|
|
297
|
-
whether this push belongs to a pull request. `--
|
|
307
|
+
whether this push belongs to a pull request. `--stage ID:YAML` and
|
|
308
|
+
`--pipeline YAML` change a pipeline for one run, e.g. `--stage
|
|
309
|
+
'requirements:append_task: Never assume credentials.'`. A plain key replaces,
|
|
310
|
+
`append_` and `prepend_` add, `remove_` drops. A file that starts with
|
|
311
|
+
`extends: <name>` keeps the same changes in the repo. `--dry-run` prints every
|
|
298
312
|
gate and stage and spends nothing. `testeiya pipeline-check` checks the file and
|
|
299
313
|
every gate it declares, used or not, and prints the message of each one that
|
|
300
314
|
does not pass. `--diagram` also writes the pipeline as a Mermaid chart.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import dedent from "dedent";
|
|
2
|
+
export const pipelineReport = dedent `
|
|
3
|
+
<pipeline-report>
|
|
4
|
+
The draft is the report: every stage's report, word for word, under its own \`### <emoji> <title>\` heading. Your job is to trim it, never to write it. This format overrides <final-report>, its title included.
|
|
5
|
+
|
|
6
|
+
1. Copy the draft to the report file with the \`write\` tool, word for word.
|
|
7
|
+
2. Trim it with the \`edit\` tool:
|
|
8
|
+
* Drop a line that repeats what an earlier section already said.
|
|
9
|
+
* When a section is too long, shorten its lines or drop its least important bullets.
|
|
10
|
+
3. Nothing repeats and nothing is too long: leave the copy as it is.
|
|
11
|
+
|
|
12
|
+
Never:
|
|
13
|
+
* Add, rename, merge, reorder or drop a heading.
|
|
14
|
+
* Add a sentence, a title, an intro, a conclusion or a closing summary.
|
|
15
|
+
* Change a fact, a number, an id or a link. Reword only to shorten.
|
|
16
|
+
* Cut a numbered list, or replace a list with a count like "10 items, see the file".
|
|
17
|
+
* Add findings, assumptions or advice of your own.
|
|
18
|
+
|
|
19
|
+
* A command stage's section links its log. You may add up to three bullets quoting its failures from the log.
|
|
20
|
+
* The verdict is given. Do not call a result tool to set one.
|
|
21
|
+
</pipeline-report>
|
|
22
|
+
`;
|
|
23
|
+
//# sourceMappingURL=pipeline-report.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline-report.js","sourceRoot":"","sources":["../../prompt/pipeline-report.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAA;;;;;;;;;;;;;;;;;;;;CAoBnC,CAAC"}
|
package/dist/prompt/report.js
CHANGED
|
@@ -17,7 +17,7 @@ export function finalReport(path) {
|
|
|
17
17
|
<final-report>
|
|
18
18
|
* Write your complete final report to \`${path}\` with the \`write\` tool. Writing it is required before you finish.
|
|
19
19
|
* That file is your answer. It is the run's deliverable; nothing else you say is kept.
|
|
20
|
-
* A skill's output format overrides every rule in this block, including the title. Follow it strictly.
|
|
20
|
+
* A skill's or the task's output format overrides every rule in this block, including the title. Follow it strictly.
|
|
21
21
|
* Decide the **severity of your report**. Low severity: a few short bullets, nothing more.
|
|
22
22
|
* Do not make the reader go through a long report for a minor issue with no effect.
|
|
23
23
|
* Severity decides how many items you report, not how long each one is. Even a critical finding is: what breaks, for whom, when.
|
|
@@ -36,8 +36,8 @@ export function testomatio(options) {
|
|
|
36
36
|
`;
|
|
37
37
|
}
|
|
38
38
|
function dynamicData(tms) {
|
|
39
|
-
if (tms === "mcp-
|
|
40
|
-
return "Get them through the
|
|
39
|
+
if (tms === "mcp-tools") {
|
|
40
|
+
return "Get them through the `mcp__testomatio__*` tools, one per entity (`tests`, `runs`, `testruns`, `issues`, โฆ); pick the operation with its `command` param.";
|
|
41
41
|
}
|
|
42
42
|
if (tms === "cli-only") {
|
|
43
43
|
return "There are no Testomat.io tools in this session. Get them from the REST API: `curl` with the `TESTOMATIO` token as the Authorization header against `$TESTOMATIO_URL/api/v2`. Keep to documented endpoints; never invent paths or parameters.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testomat.io.js","sourceRoot":"","sources":["../../prompt/testomat.io.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,MAAM,CAAA;;;;;;;KAOZ,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,CAAC,UAAU;QAAE,GAAG,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,CAAC;IAC7D,OAAO,MAAM,CAAA;;;;;6FAK8E,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;;;;;;;;8IAQyB,GAAG;;GAE9I,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAc;IACjC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,OAAO,
|
|
1
|
+
{"version":3,"file":"testomat.io.js","sourceRoot":"","sources":["../../prompt/testomat.io.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B;;;;GAIG;AACH,MAAM,UAAU,UAAU,CAAC,OAA0B;IACnD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,MAAM,CAAA;;;;;;;KAOZ,CAAC;IACJ,CAAC;IAED,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,OAAO,CAAC,UAAU;QAAE,GAAG,GAAG,OAAO,OAAO,CAAC,UAAU,KAAK,CAAC;IAC7D,OAAO,MAAM,CAAA;;;;;6FAK8E,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC;;;;;;;;8IAQyB,GAAG;;GAE9I,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,GAAc;IACjC,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;QACxB,OAAO,0JAA0J,CAAC;IACpK,CAAC;IACD,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;QACvB,OAAO,8OAA8O,CAAC;IACxP,CAAC;IACD,OAAO,+IAA+I,CAAC;AACzJ,CAAC"}
|
package/dist/src/args.js
CHANGED
|
@@ -47,6 +47,8 @@ Pipeline options:
|
|
|
47
47
|
--dry-run show gates and stages, spend no tokens
|
|
48
48
|
--set KEY=VALUE set a variable for every stage, repeatable
|
|
49
49
|
--gate NAME:COMMAND skip the whole run unless COMMAND exits 0, repeatable
|
|
50
|
+
--stage ID:YAML change one stage, e.g. 'plan:append_task: Be brief.'
|
|
51
|
+
--pipeline YAML change the pipeline, e.g. 'append_summary: Be brief.'
|
|
50
52
|
-h, --help show this
|
|
51
53
|
-v, --version show version
|
|
52
54
|
|
|
@@ -195,10 +197,18 @@ Pipelines
|
|
|
195
197
|
--gate adds a check from the CI job, e.g. --gate 'pr:test -n "$PR_NUMBER"'.
|
|
196
198
|
When it fails the whole run is skipped and exits 0.
|
|
197
199
|
|
|
200
|
+
--stage and --pipeline change a pipeline without copying it. Their value is
|
|
201
|
+
YAML: a plain key replaces, append_ and prepend_ add, remove_ drops.
|
|
202
|
+
|
|
203
|
+
testeiya pipeline issue-test-cases --stage 'requirements:append_task: Never assume credentials.'
|
|
204
|
+
testeiya pipeline web-testing --stage 'explore:{timeout: 45m, append_when: [staging]}'
|
|
205
|
+
|
|
206
|
+
A file of your own can start with "extends: <name>" and hold only the changes.
|
|
207
|
+
|
|
198
208
|
A stage whose gate fails is skipped with the gate's message. A final summary
|
|
199
209
|
reads every stage and is the only thing posted. Keep --dir between runs, as a
|
|
200
210
|
CI cache per pull request, and a re-run on the same commit retries from the
|
|
201
|
-
stage that stopped, while a new commit starts a round
|
|
211
|
+
stage that stopped, while a new commit starts a round that updates the last one.
|
|
202
212
|
--dry-run shows the plan and spends nothing. "testeiya pipeline-check" checks
|
|
203
213
|
the file and every gate it declares, and prints the message of each gate that
|
|
204
214
|
does not pass. It exits 1 when one does not, 2 when the file is invalid.
|
|
@@ -266,6 +276,10 @@ export function parseCliArgs(argv) {
|
|
|
266
276
|
return { error: gates };
|
|
267
277
|
args.gates = gates;
|
|
268
278
|
}
|
|
279
|
+
if (Array.isArray(values.pipeline))
|
|
280
|
+
args.pipelineOverrides = values.pipeline;
|
|
281
|
+
if (Array.isArray(values.stage))
|
|
282
|
+
args.stageOverrides = values.stage;
|
|
269
283
|
if (Array.isArray(values.output))
|
|
270
284
|
args.outputs = values.output;
|
|
271
285
|
if (values.json)
|
|
@@ -346,6 +360,8 @@ const PIPELINE_OPTIONS = {
|
|
|
346
360
|
"dry-run": { type: "boolean" },
|
|
347
361
|
set: { type: "string", multiple: true },
|
|
348
362
|
gate: { type: "string", multiple: true },
|
|
363
|
+
pipeline: { type: "string", multiple: true },
|
|
364
|
+
stage: { type: "string", multiple: true },
|
|
349
365
|
help: HELP_FLAG,
|
|
350
366
|
};
|
|
351
367
|
const OPTIONS = {
|
|
@@ -358,6 +374,8 @@ const OPTIONS = {
|
|
|
358
374
|
dir: PIPELINE_OPTIONS.dir,
|
|
359
375
|
set: PIPELINE_OPTIONS.set,
|
|
360
376
|
gate: PIPELINE_OPTIONS.gate,
|
|
377
|
+
pipeline: PIPELINE_OPTIONS.pipeline,
|
|
378
|
+
stage: PIPELINE_OPTIONS.stage,
|
|
361
379
|
diagram: { type: "boolean" },
|
|
362
380
|
help: HELP_FLAG,
|
|
363
381
|
},
|
package/dist/src/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAwB,MAAM,WAAW,CAAC;AAE5D,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;CAUtB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.js
CHANGED
|
@@ -118,6 +118,8 @@ async function pipeline(args) {
|
|
|
118
118
|
dryRun: args.dryRun,
|
|
119
119
|
sets: args.sets,
|
|
120
120
|
gates: args.gates,
|
|
121
|
+
pipelineOverrides: args.pipelineOverrides,
|
|
122
|
+
stageOverrides: args.stageOverrides,
|
|
121
123
|
outputs: args.outputs,
|
|
122
124
|
thread: args.thread,
|
|
123
125
|
header: args.header,
|
|
@@ -130,8 +132,8 @@ async function pipeline(args) {
|
|
|
130
132
|
}).run();
|
|
131
133
|
}
|
|
132
134
|
async function pipelineCheck(args) {
|
|
133
|
-
const { dir, sets, gates, model, json, diagram } = args;
|
|
134
|
-
return new Pipeline({ name: args.pipeline, dir, sets, gates, model, json, diagram, checkAi }).check();
|
|
135
|
+
const { dir, sets, gates, pipelineOverrides, stageOverrides, model, json, diagram } = args;
|
|
136
|
+
return new Pipeline({ name: args.pipeline, dir, sets, gates, pipelineOverrides, stageOverrides, model, json, diagram, checkAi }).check();
|
|
135
137
|
}
|
|
136
138
|
async function checkAi(model) {
|
|
137
139
|
try {
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/src/doctor.js
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { existsSync } from "node:fs";
|
|
2
2
|
import { relative } from "node:path";
|
|
3
|
-
import { fileURLToPath } from "node:url";
|
|
4
3
|
import { TESTEIYA_HOME } from "./env.js";
|
|
5
4
|
import { langfuseConfig } from "./langfuse.js";
|
|
6
|
-
import { hasMcp, hasTestomatio,
|
|
5
|
+
import { hasMcp, hasTestomatio, mcpServerScript } from "./mcp.js";
|
|
7
6
|
import { PROVIDER_KEYS, resolveModel, UsageError } from "./model.js";
|
|
8
7
|
import { loadBundledSkills } from "./skills.js";
|
|
9
8
|
import { BUNDLED_SKILLS_DIR, createRuntime } from "./session.js";
|
|
@@ -20,7 +19,7 @@ export async function runDoctor(options) {
|
|
|
20
19
|
checks.push(model.check);
|
|
21
20
|
const skills = await skillsChecks();
|
|
22
21
|
checks.push(...skills.checks);
|
|
23
|
-
checks.push(testomatioCheck(),
|
|
22
|
+
checks.push(testomatioCheck(), mcpCheck(), langfuseCheck(options.envSources));
|
|
24
23
|
if (options.probe)
|
|
25
24
|
checks.push(await probeCheck(runtime, model.resolved));
|
|
26
25
|
if (options.json) {
|
|
@@ -140,17 +139,16 @@ function langfuseCheck(sources) {
|
|
|
140
139
|
const from = sources.get("LANGFUSE_PUBLIC_KEY") ?? "environment";
|
|
141
140
|
return { name: "langfuse", status: "ok", detail: `${config.baseUrl}, keys from ${from}` };
|
|
142
141
|
}
|
|
143
|
-
function
|
|
142
|
+
function mcpCheck() {
|
|
144
143
|
if (!hasMcp())
|
|
145
144
|
return { name: "mcp", status: "ok", detail: "off" };
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
return { name: "mcp", status: "
|
|
145
|
+
try {
|
|
146
|
+
mcpServerScript();
|
|
147
|
+
return { name: "mcp", status: "ok", detail: "@testomatio/mcp, direct tools" };
|
|
149
148
|
}
|
|
150
|
-
|
|
151
|
-
return { name: "mcp", status: "
|
|
149
|
+
catch {
|
|
150
|
+
return { name: "mcp", status: "fail", detail: "@testomatio/mcp is not installed" };
|
|
152
151
|
}
|
|
153
|
-
return { name: "mcp", status: "ok", detail: "direct tools and proxy" };
|
|
154
152
|
}
|
|
155
153
|
async function probeCheck(runtime, model) {
|
|
156
154
|
if (!model)
|