testeiya 0.5.2 → 0.5.5
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/README.md +36 -9
- package/dist/prompt/thread.js +2 -0
- package/dist/prompt/thread.js.map +1 -1
- package/dist/src/args.js +5 -1
- package/dist/src/args.js.map +1 -1
- package/dist/src/output.js +6 -1
- package/dist/src/output.js.map +1 -1
- package/dist/src/run.js +17 -4
- package/dist/src/run.js.map +1 -1
- package/package.json +1 -1
- package/prompt/thread.ts +3 -0
- package/skills/skills.lock.json +2 -1
- package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +35 -1
- package/skills/testomatio/explorbot/explorbot-fundamentals/references/no-install.md +4 -1
- package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +12 -12
- package/skills/testomatio/explorbot/prima/SKILL.md +111 -24
- package/skills/testomatio/test-management/detect-useless-tests/SKILL.md +96 -0
package/README.md
CHANGED
|
@@ -9,13 +9,42 @@
|
|
|
9
9
|
|
|
10
10
|
An agent, app, and the goddess of testing.
|
|
11
11
|
|
|
12
|
-
Testeiya is an
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
Testeiya is an AI QA agent. This repository is home to two things:
|
|
13
|
+
|
|
14
|
+
- **Testeiya Desktop**, the app. Download it from [Releases](https://github.com/testomatio/testeiya-app/releases/latest).
|
|
15
|
+
- **Testeiya CLI**, the command-line agent for CI. Install it from [npm](https://www.npmjs.com/package/testeiya).
|
|
16
|
+
|
|
17
|
+
## Desktop app
|
|
18
|
+
|
|
19
|
+
Chat with a QA agent that works inside your project. It reads your code and
|
|
20
|
+
test files, writes and reviews test cases, runs tests, explores a live app in
|
|
21
|
+
its own browser, and syncs with your Testomat.io project.
|
|
22
|
+
|
|
23
|
+
| OS | Download |
|
|
24
|
+
|---|---|
|
|
25
|
+
| macOS (Apple Silicon) | [`stable-macos-arm64-Testeiya.dmg`](https://github.com/testomatio/testeiya-app/releases/latest/download/stable-macos-arm64-Testeiya.dmg) |
|
|
26
|
+
| Windows (x64) | [`stable-win-x64-Testeiya.zip`](https://github.com/testomatio/testeiya-app/releases/latest/download/stable-win-x64-Testeiya.zip) |
|
|
27
|
+
| Linux (x64) | [`Testeiya-x86_64.AppImage`](https://github.com/testomatio/testeiya-app/releases/latest/download/Testeiya-x86_64.AppImage) |
|
|
28
|
+
|
|
29
|
+
The builds are unsigned, so each OS warns once on first launch:
|
|
17
30
|
|
|
18
|
-
|
|
31
|
+
- **macOS**: open the `.dmg` and drag Testeiya into Applications. On first launch, right-click it and pick **Open**. If macOS still blocks it, run `xattr -dr com.apple.quarantine /Applications/Testeiya.app`.
|
|
32
|
+
- **Windows**: extract the zip to a short path such as `C:\Testeiya` and run `Testeiya\bin\launcher.exe`. If SmartScreen appears, click **More info**, then **Run anyway**.
|
|
33
|
+
- **Linux**: `chmod +x Testeiya-x86_64.AppImage && ./Testeiya-x86_64.AppImage`. Without FUSE, add `--appimage-extract-and-run`.
|
|
34
|
+
|
|
35
|
+
Once installed, the app updates itself. Add an LLM provider key in Settings, or
|
|
36
|
+
put one in `~/.testeiya/.env` to share it with the CLI, and open a project folder.
|
|
37
|
+
|
|
38
|
+
The app's source is not open. This repository holds what the agent reads: its
|
|
39
|
+
prompt and skills, shared with the CLI. Report app issues here too.
|
|
40
|
+
|
|
41
|
+
## CLI
|
|
42
|
+
|
|
43
|
+
The `testeiya` command is the same agent, built for CI. It reacts to triggers —
|
|
44
|
+
a pull request, a new issue, a failed test run, a deploy — runs exactly one
|
|
45
|
+
analysis, and delivers its verdict where your team works: a PR comment, a
|
|
46
|
+
markdown report, or a Testomat.io project. There is no interactive mode and no human in the loop. That is the point:
|
|
47
|
+
you wire it into CI once, and every event that should get QA thinking gets it.
|
|
19
48
|
|
|
20
49
|
| Folder | What it is |
|
|
21
50
|
|---|---|
|
|
@@ -23,9 +52,7 @@ It ships as a desktop app, a web app, and the command-line agent in this reposit
|
|
|
23
52
|
| `skills/` | The manifest of skills the agent can invoke. Every folder is fetched from its own upstream repository |
|
|
24
53
|
| `src/` | The `testeiya` command-line agent (Node) |
|
|
25
54
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
## Install
|
|
55
|
+
### Install
|
|
29
56
|
|
|
30
57
|
Requires Node 22.19 or newer, an LLM provider key, and a model.
|
|
31
58
|
|
package/dist/prompt/thread.js
CHANGED
|
@@ -144,6 +144,8 @@ function answer(options) {
|
|
|
144
144
|
parts.push('If earlier rounds of yours exist, open with "Since the last round": what was fixed, what is new, what is still open.');
|
|
145
145
|
}
|
|
146
146
|
parts.push('Its first line is the marker above.');
|
|
147
|
+
if (options.header)
|
|
148
|
+
parts.push(`Its second line is exactly \`${options.header}\`, then a blank line.`);
|
|
147
149
|
if (options.footer)
|
|
148
150
|
parts.push(`Its last line is exactly \`${options.footer}\`.`);
|
|
149
151
|
return parts.join(' ');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread.js","sourceRoot":"","sources":["../../prompt/thread.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread.js","sourceRoot":"","sources":["../../prompt/thread.ts"],"names":[],"mappings":"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"}
|
package/dist/src/args.js
CHANGED
|
@@ -86,7 +86,11 @@ Where the report goes
|
|
|
86
86
|
|
|
87
87
|
*🧚🏻♀️ Provided by [Testeiya QA Agent](https://testomat.ai/testeiya) & <model>*
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
A posted comment also opens with the Testeiya logo and heading, unless you
|
|
90
|
+
write your own --header.
|
|
91
|
+
|
|
92
|
+
--no-default-footer drops the signature and the heading, so does
|
|
93
|
+
TESTEIYA_NO_DEFAULT_FOOTER.
|
|
90
94
|
|
|
91
95
|
Every destination is checked before the run starts, so a missing gh costs no
|
|
92
96
|
tokens.
|
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;;;;;;;;;CAStB,CAAC;AAEF,MAAM,CAAC,MAAM,KAAK,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA0CmB,CAAC;AAEzC,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,KAAK
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/args.ts"],"names":[],"mappings":"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"}
|
package/dist/src/output.js
CHANGED
|
@@ -5,6 +5,7 @@ import { threadMarker } from "../prompt/thread.js";
|
|
|
5
5
|
const GH_SCHEME = "gh:";
|
|
6
6
|
const MINIMIZE = "mutation($id:ID!){minimizeComment(input:{subjectId:$id,classifier:OUTDATED}){minimizedComment{isMinimized}}}";
|
|
7
7
|
const MARKER = "<!-- testeiya";
|
|
8
|
+
const LOGO = "https://raw.githubusercontent.com/testomatio/testeiya-app/main/assets/testeiya-cli-logo-64.png";
|
|
8
9
|
/**
|
|
9
10
|
* Where the report goes. Only known schemes are recognised: a generic
|
|
10
11
|
* `<word>:` test would swallow `C:\reports\out.md` on Windows.
|
|
@@ -100,7 +101,7 @@ export function decorate(report, decoration) {
|
|
|
100
101
|
const header = decoration?.header?.trim();
|
|
101
102
|
const footer = decoration?.footer?.trim();
|
|
102
103
|
let body = stripMarker(report.trimEnd());
|
|
103
|
-
if (header)
|
|
104
|
+
if (header && !body.startsWith(header))
|
|
104
105
|
body = `${header}\n\n${body}`;
|
|
105
106
|
if (footer)
|
|
106
107
|
body = `${body}\n\n${footer}`;
|
|
@@ -131,6 +132,10 @@ export function threadName(value) {
|
|
|
131
132
|
const clean = (value ?? "").toLowerCase().replaceAll(/[^a-z0-9._/]+/g, "-");
|
|
132
133
|
return clean.replaceAll(/-+/g, "-").replaceAll(/^-|-$/g, "") || "default";
|
|
133
134
|
}
|
|
135
|
+
/** What a posted comment opens with when the caller writes no header of their own. */
|
|
136
|
+
export function defaultHeader() {
|
|
137
|
+
return `### <img src="${LOGO}" width="24" height="24" align="top" alt=""> Testeiya QA Agent`;
|
|
138
|
+
}
|
|
134
139
|
/** What signs the report when the caller writes no footer of their own. */
|
|
135
140
|
export function defaultFooter(model) {
|
|
136
141
|
return `*🧚🏻♀️ Provided by [Testeiya QA Agent](https://testomat.ai/testeiya) & ${modelName(model)}*`;
|
package/dist/src/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,SAAS,GAAG,KAAK,CAAC;AACxB,MAAM,QAAQ,GACZ,8GAA8G,CAAC;AACjH,MAAM,MAAM,GAAG,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/output.ts"],"names":[],"mappings":"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"}
|
package/dist/src/run.js
CHANGED
|
@@ -7,7 +7,7 @@ import { describeUpdate, lastCheckpoint, readCheckpoint, readRepo, saveCheckpoin
|
|
|
7
7
|
import { VERSION } from "./env.js";
|
|
8
8
|
import { hasTestomatio } from "./mcp.js";
|
|
9
9
|
import { UsageError } from "./model.js";
|
|
10
|
-
import { decorate, defaultFooter, deliver, marker, markdownPath, modelName, pullRequestNumber, threadComments, threadName, } from "./output.js";
|
|
10
|
+
import { decorate, defaultFooter, defaultHeader, deliver, marker, markdownPath, modelName, pullRequestNumber, threadComments, threadName, } from "./output.js";
|
|
11
11
|
import { commentThread, threadHost } from "../prompt/thread.js";
|
|
12
12
|
import { shortId } from "./sessions.js";
|
|
13
13
|
import { createTesteiyaSession } from "./session.js";
|
|
@@ -67,6 +67,7 @@ export async function runPrint(options) {
|
|
|
67
67
|
thread,
|
|
68
68
|
marker: marker(stamp),
|
|
69
69
|
reportFile: outputPath,
|
|
70
|
+
header: headerFor(options, inThread),
|
|
70
71
|
footer: footerFor(options, model),
|
|
71
72
|
delivered: Boolean(pr),
|
|
72
73
|
threadMode,
|
|
@@ -111,7 +112,7 @@ export async function runPrint(options) {
|
|
|
111
112
|
const written = await collectReport(session, run, outputPath, stampBefore);
|
|
112
113
|
if (!run.error && checkpoint)
|
|
113
114
|
saveCheckpoint(options.sessionManager, checkpoint);
|
|
114
|
-
const report = sign(written, options, model, stamp);
|
|
115
|
+
const report = sign(written, options, model, stamp, inThread);
|
|
115
116
|
run.unsubscribe();
|
|
116
117
|
if (verbose)
|
|
117
118
|
note("");
|
|
@@ -176,10 +177,10 @@ export function exitCode(error, status, wantsReport, report, exitZero) {
|
|
|
176
177
|
}
|
|
177
178
|
// The marker, header and footer go wherever the report goes, so they are added
|
|
178
179
|
// once, before anything is delivered.
|
|
179
|
-
function sign(report, options, model, fields) {
|
|
180
|
+
function sign(report, options, model, fields, inThread) {
|
|
180
181
|
if (!report)
|
|
181
182
|
return report;
|
|
182
|
-
return decorate(report, { ...fields, header: options
|
|
183
|
+
return decorate(report, { ...fields, header: headerFor(options, inThread), footer: footerFor(options, model) });
|
|
183
184
|
}
|
|
184
185
|
// The thread and the commit are what a later round matches and diffs against,
|
|
185
186
|
// so they are stamped only where a thread exists to match them in.
|
|
@@ -204,6 +205,18 @@ function footerFor(options, model) {
|
|
|
204
205
|
return undefined;
|
|
205
206
|
return defaultFooter(model);
|
|
206
207
|
}
|
|
208
|
+
// A posted comment opens with the logo, so a reader knows whose answer it is.
|
|
209
|
+
function headerFor(options, inThread) {
|
|
210
|
+
if (options.header !== undefined)
|
|
211
|
+
return options.header;
|
|
212
|
+
if (!inThread)
|
|
213
|
+
return undefined;
|
|
214
|
+
if (options.noDefaultFooter)
|
|
215
|
+
return undefined;
|
|
216
|
+
if (process.env.TESTEIYA_NO_DEFAULT_FOOTER)
|
|
217
|
+
return undefined;
|
|
218
|
+
return defaultHeader();
|
|
219
|
+
}
|
|
207
220
|
// A tool name alone says the run is alive and nothing else. The command or the
|
|
208
221
|
// path is what a watcher actually reads.
|
|
209
222
|
function target(args) {
|
package/dist/src/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,OAAO,EACP,MAAM,EACN,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,UAAU,GAIX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,8EAA8E;IAC9E,0EAA0E;IAC1E,wDAAwD;IACxD,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IACnE,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAE5F,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE;QAAE,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;IAElF,0EAA0E;IAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE5D,2EAA2E;IAC3E,8EAA8E;IAC9E,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,qEAAqE;QACrE,0EAA0E;QAC1E,iDAAiD;QACjD,MAAM,UAAU,GAAuC,CAAC,QAAQ;YAC9D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC5D,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,OAAO,CAAC;QAEd,OAAO,GAAG,MAAM,qBAAqB,CAAC;YACpC,GAAG;YACH,MAAM;YACN,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU;YACV,yEAAyE;YACzE,sEAAsE;YACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,CAAC;gBACrB,OAAO;oBACL,aAAa,CAAC;wBACZ,IAAI;wBACJ,MAAM;wBACN,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;wBACrB,UAAU,EAAE,UAAU;wBACtB,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;wBACjC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;wBACtB,UAAU;qBACX,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,GAAG,iBAAiB,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,GAAG,YAAY,UAAU;YAAE,MAAM,GAAG,CAAC;QACzC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IACrF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACpC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,gDAAgD;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC1F,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,MAAM;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAChF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC3E,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,UAAU;QAAE,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAEpD,GAAG,CAAC,WAAW,EAAE,CAAC;IAClB,IAAI,OAAO;QAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEtB,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAgB;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK;QAClC,MAAM;QACN,UAAU,EAAE,UAAU,IAAI,IAAI;QAC9B,KAAK;QACL,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAChD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;KACrC,CAAC;IAEF,0EAA0E;IAC1E,wEAAwE;IACxE,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACnC,gEAAgE;QAChE,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,MAAsB,EAAE,QAAiB;IAC/E,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,kCAAkC,KAAK,iBAAiB,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAoB,EACpB,MAAmC,EACnC,WAAoB,EACpB,MAAqB,EACrB,QAAkB;IAElB,IAAI,KAAK;QAAE,OAAO,CAAC,CAAC;IACpB,6EAA6E;IAC7E,6DAA6D;IAC7D,IAAI,QAAQ;QAAE,OAAO,CAAC,CAAC;IACvB,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IAChC,IAAI,WAAW,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,+EAA+E;AAC/E,sCAAsC;AACtC,SAAS,IAAI,CACX,MAAqB,EACrB,OAAqB,EACrB,KAAa,EACb,MAAoB;IAEpB,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AACpG,CAAC;AAED,8EAA8E;AAC9E,mEAAmE;AACnE,SAAS,KAAK,CACZ,OAAqB,EACrB,MAAc,EACd,MAAqB,EACrB,QAAiB;IAEjB,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC7B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iEAAiE;AACjE,SAAS,SAAS,CAAC,OAAqB,EAAE,KAAa;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IACxD,IAAI,OAAO,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,+EAA+E;AAC/E,yCAAyC;AACzC,SAAS,MAAM,CAAC,IAAa;IAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AACjC,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,IAAI;IACX,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,yEAAyE;AACzE,SAAS,SAAS,CAAC,YAA2B,EAAE,MAAqB;IACnE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;QACvC,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAClE,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,YAA2B;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC;QACjF,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gFAAgF;AAChF,6EAA6E;AAC7E,0DAA0D;AAC1D,SAAS,iBAAiB;IACxB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO;QACL,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;QACpC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,OAAqB;IACrC,MAAM,GAAG,GAAa,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC5F,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC1C,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACvC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YACjB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;gBACzC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,2BAA2B,CAAC;YACxE,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAqB,EAAE,IAAY,EAAE,GAAa;IAC1E,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAqB,EACrB,GAAa,EACb,IAAwB,EACxB,MAAqB;IAErB,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAAqB,EACrB,GAAa,EACb,IAAY,EACZ,MAAqB;IAErB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,CACd,OAAO,EACP,sCAAsC,IAAI,0CAA0C;QAClF,gDAAgD,EAClD,GAAG,CACJ,CAAC;IACF,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,GAAG,CAAC,KAAK,GAAG,wBAAwB,IAAI,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,MAAqB;IAC5D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,YAA2B;IAChD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACrF,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,SAAS,CAAC,IAAwB;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,OAAO,EAAE,IAAI,KAAK,WAAW;YAAE,SAAS;QAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI;YAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wFAAwF;AACxF,SAAS,UAAU,CAAC,OAAqB;IACvC,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,OAAO,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACnD,OAAO,YAAY,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,kBAAkB,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,OAAO,CAAC,OAAe;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,GAAG,CAAC;IACvC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;AACzD,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACzC,CAAC"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,WAAW,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC;AAGzC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAC3G,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,aAAa,EACb,OAAO,EACP,MAAM,EACN,YAAY,EACZ,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,UAAU,GAIX,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAG3C,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAc,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,8EAA8E;IAC9E,0EAA0E;IAC1E,wDAAwD;IACxD,MAAM,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,QAAQ,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;IACnE,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAE5F,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE;QAAE,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAChF,MAAM,MAAM,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAC;IAElF,0EAA0E;IAC1E,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE5D,2EAA2E;IAC3E,8EAA8E;IAC9E,yEAAyE;IACzE,iEAAiE;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEvE,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC;QACH,qEAAqE;QACrE,0EAA0E;QAC1E,iDAAiD;QACjD,MAAM,UAAU,GAAuC,CAAC,QAAQ;YAC9D,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAC5D,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,OAAO,CAAC;QAEd,OAAO,GAAG,MAAM,qBAAqB,CAAC;YACpC,GAAG;YACH,MAAM;YACN,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,UAAU;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU;YACV,yEAAyE;YACzE,sEAAsE;YACtE,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;gBAClB,IAAI,CAAC,IAAI;oBAAE,OAAO,EAAE,CAAC;gBACrB,OAAO;oBACL,aAAa,CAAC;wBACZ,IAAI;wBACJ,MAAM;wBACN,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;wBACrB,UAAU,EAAE,UAAU;wBACtB,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC;wBACpC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC;wBACjC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;wBACtB,UAAU;qBACX,CAAC;iBACH,CAAC;YACJ,CAAC;YACD,GAAG,iBAAiB,EAAE;SACvB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,2EAA2E;QAC3E,oEAAoE;QACpE,IAAI,GAAG,YAAY,UAAU;YAAE,MAAM,GAAG,CAAC;QACzC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3C,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;IACrF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC;QACpC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,6EAA6E;IAC7E,gDAAgD;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC1F,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,SAAS,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzE,IAAI,MAAM;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC,CAAC;QAChF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,OAAO,CAAC,YAAY,CAAC;YAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9E,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,CAAC;IAED,2EAA2E;IAC3E,8EAA8E;IAC9E,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE9B,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;IAC3E,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,UAAU;QAAE,cAAc,CAAC,OAAO,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAE9D,GAAG,CAAC,WAAW,EAAE,CAAC;IAClB,IAAI,OAAO;QAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAEtB,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC7F,MAAM,QAAQ,GAAgB;QAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;QACvD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK;QAClC,MAAM;QACN,UAAU,EAAE,UAAU,IAAI,IAAI;QAC9B,KAAK;QACL,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE;QAChD,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI;KACrC,CAAC;IAEF,0EAA0E;IAC1E,wEAAwE;IACxE,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3E,IAAI,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvC,IAAI,CAAC,EAAE,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3E,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACnC,gEAAgE;QAChE,IAAI,MAAM;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,CAAC;IACX,CAAC;IAED,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,MAAc,EAAE,MAAsB,EAAE,QAAiB;IAC/E,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,IAAI,CAAC,kCAAkC,KAAK,iBAAiB,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,QAAQ,CACtB,KAAoB,EACpB,MAAmC,EACnC,WAAoB,EACpB,MAAqB,EACrB,QAAkB;IAElB,IAAI,KAAK;QAAE,OAAO,CAAC,CAAC;IACpB,6EAA6E;IAC7E,6DAA6D;IAC7D,IAAI,QAAQ;QAAE,OAAO,CAAC,CAAC;IACvB,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,CAAC,CAAC;IAChC,IAAI,WAAW,IAAI,CAAC,MAAM;QAAE,OAAO,CAAC,CAAC;IACrC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,+EAA+E;AAC/E,sCAAsC;AACtC,SAAS,IAAI,CACX,MAAqB,EACrB,OAAqB,EACrB,KAAa,EACb,MAAoB,EACpB,QAAiB;IAEjB,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC;IAC3B,OAAO,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;AAClH,CAAC;AAED,8EAA8E;AAC9E,mEAAmE;AACnE,SAAS,KAAK,CACZ,OAAqB,EACrB,MAAc,EACd,MAAqB,EACrB,QAAiB;IAEjB,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,SAAS;QAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ;QAAE,OAAO,MAAM,CAAC;IAC7B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,IAAI,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iEAAiE;AACjE,SAAS,SAAS,CAAC,OAAqB,EAAE,KAAa;IACrD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IACxD,IAAI,OAAO,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,8EAA8E;AAC9E,SAAS,SAAS,CAAC,OAAqB,EAAE,QAAiB;IACzD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC;IACxD,IAAI,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC;IAChC,IAAI,OAAO,CAAC,eAAe;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B;QAAE,OAAO,SAAS,CAAC;IAC7D,OAAO,aAAa,EAAE,CAAC;AACzB,CAAC;AAED,+EAA+E;AAC/E,yCAAyC;AACzC,SAAS,MAAM,CAAC,IAAa;IAC3B,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,IAA+B,CAAC;IAC/C,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9E,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;IAChC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC;AACjC,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,IAAI;IACX,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AAC/C,CAAC;AAED,yEAAyE;AACzE,SAAS,SAAS,CAAC,YAA2B,EAAE,MAAqB;IACnE,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;QACvC,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI;YAAE,OAAO,IAAI,CAAC;QAClE,OAAO,WAAW,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,QAAQ,CAAC,YAA2B;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,IAAI,KAAK,UAAU;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClE,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,eAAe,CAAC,CAAC;QACjF,IAAI,WAAW,CAAC,IAAI,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,gFAAgF;AAChF,6EAA6E;AAC7E,0DAA0D;AAC1D,SAAS,iBAAiB;IACxB,IAAI,CAAC,aAAa,EAAE;QAAE,OAAO,EAAE,CAAC;IAChC,OAAO;QACL,UAAU,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE;QACpC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc;KACvC,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,OAAqB;IACrC,MAAM,GAAG,GAAa,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;IAC5F,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;QAC5C,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,EAAE,CAAC;YAC1C,GAAG,CAAC,KAAK,EAAE,CAAC;YACZ,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACpE,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;YACvC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YACjB,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;gBACzC,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,2BAA2B,CAAC;YACxE,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClD,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,OAAqB,EAAE,IAAY,EAAE,GAAa;IAC1E,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,KAAK,UAAU,aAAa,CAC1B,OAAqB,EACrB,GAAa,EACb,IAAwB,EACxB,MAAqB;IAErB,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,CAAC,IAAI;QAAE,OAAO,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,OAAO,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAAqB,EACrB,GAAa,EACb,IAAY,EACZ,MAAqB;IAErB,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC;IACvD,MAAM,UAAU,CACd,OAAO,EACP,sCAAsC,IAAI,0CAA0C;QAClF,gDAAgD,EAClD,GAAG,CACJ,CAAC;IACF,IAAI,GAAG,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC/C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,GAAG,CAAC,KAAK,GAAG,wBAAwB,IAAI,EAAE,CAAC;IAC3C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC;IACxD,KAAK,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7E,IAAI,CAAC,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE5C,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACzD,OAAO;IACT,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,MAAqB;IAC5D,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,OAAO,GAAG,IAAI,IAAI,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,YAA2B;IAChD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACrF,OAAO,IAAI,CAAC,MAAM,EAAE,EAAE,mBAAmB,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,SAAS,CAAC,IAAwB;IACzC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC5B,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAqB;IAC9C,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;IAC9C,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,OAAO,EAAE,IAAI,KAAK,WAAW;YAAE,SAAS;QAC5C,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI;YAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wFAAwF;AACxF,SAAS,UAAU,CAAC,OAAqB;IACvC,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,OAAO,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,CAAC;QACnD,OAAO,YAAY,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;IAClD,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,OAAO,kBAAkB,IAAI,EAAE,CAAC;AAClC,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,OAAO,CAAC;IAC7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,OAAO,CAAC,OAAe;IAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;IAC1D,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,GAAG,OAAO,GAAG,CAAC;IACvC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,KAAK,OAAO,GAAG,EAAE,GAAG,CAAC;AACzD,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACzC,CAAC"}
|
package/package.json
CHANGED
package/prompt/thread.ts
CHANGED
|
@@ -163,6 +163,7 @@ function answer(options: CommentThreadOptions): string {
|
|
|
163
163
|
parts.push('If earlier rounds of yours exist, open with "Since the last round": what was fixed, what is new, what is still open.');
|
|
164
164
|
}
|
|
165
165
|
parts.push('Its first line is the marker above.');
|
|
166
|
+
if (options.header) parts.push(`Its second line is exactly \`${options.header}\`, then a blank line.`);
|
|
166
167
|
if (options.footer) parts.push(`Its last line is exactly \`${options.footer}\`.`);
|
|
167
168
|
return parts.join(' ');
|
|
168
169
|
}
|
|
@@ -201,6 +202,8 @@ export interface CommentThreadOptions extends ThreadOptions {
|
|
|
201
202
|
marker: string;
|
|
202
203
|
/** The report file, so the comment body is the report and not a remark. */
|
|
203
204
|
reportFile?: string;
|
|
205
|
+
/** The heading the CLI would have opened the report with, if any. */
|
|
206
|
+
header?: string;
|
|
204
207
|
/** The line the CLI would have signed the report with, if any. */
|
|
205
208
|
footer?: string;
|
|
206
209
|
/** True when the command posts the answer and collapses the older ones. */
|
package/skills/skills.lock.json
CHANGED
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
{
|
|
4
4
|
"source": "testomatio/skills",
|
|
5
5
|
"ref": null,
|
|
6
|
-
"sha": "
|
|
6
|
+
"sha": "0d4a8add8c39301979a171dd42804823d38e11de",
|
|
7
7
|
"folder": "testomatio",
|
|
8
8
|
"skills": [
|
|
9
9
|
"automate-manual-test-cases",
|
|
10
10
|
"debug-fix-failed-flaky-autotests",
|
|
11
11
|
"detect-duplicate-test-cases",
|
|
12
|
+
"detect-useless-tests",
|
|
12
13
|
"epic-requirements-specification",
|
|
13
14
|
"explorbot-fundamentals",
|
|
14
15
|
"explorbot-plan",
|
|
@@ -4,7 +4,7 @@ description: Use when running or debugging Explorbot from the command line — w
|
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
author: Testomat.io
|
|
7
|
-
version: 1.
|
|
7
|
+
version: 1.3.0
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Explorbot Fundamentals
|
|
@@ -31,6 +31,38 @@ Details, including the per-command `EXPLORBOT_*` form for CI: [references/no-ins
|
|
|
31
31
|
|
|
32
32
|
Installing into the project instead — config, knowledge, and generated tests in the repo — is [[explorbot-setup]].
|
|
33
33
|
|
|
34
|
+
## What a run needs
|
|
35
|
+
|
|
36
|
+
Explorbot does not bring these itself. Check them before the first command on any new machine:
|
|
37
|
+
|
|
38
|
+
- **A browser.** `npx playwright install --with-deps chromium`. Without it every command that opens a page fails.
|
|
39
|
+
- **A provider key** in the environment, and a provider chosen by config or `EXPLORBOT_AI_PROVIDER`.
|
|
40
|
+
- **A known output folder** when something must collect the report. Set `EXPLORBOT_OUTPUT`; without a project config the default is `~/.explorbot/sites/<host>/`, not the working directory.
|
|
41
|
+
|
|
42
|
+
## Knowledge for one run
|
|
43
|
+
|
|
44
|
+
Login details and one-off facts go in per-run knowledge. Nothing is saved to the repo. Two channels, pick one:
|
|
45
|
+
|
|
46
|
+
- `--knowledge '<markdown>'` — repeatable. Plain text applies to every page. To scope it, start the text with a real frontmatter block:
|
|
47
|
+
|
|
48
|
+
```markdown
|
|
49
|
+
---
|
|
50
|
+
url: /users/sign_in
|
|
51
|
+
---
|
|
52
|
+
Sign in as ${env.LOGIN_EMAIL} / ${env.LOGIN_PASSWORD}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
- `EXPLORBOT_KNOWLEDGE` — plain text only, always every page. Frontmatter inside it is not read. For scoped knowledge from the environment use `EXPLORBOT_KNOWLEDGE_FILE`.
|
|
56
|
+
|
|
57
|
+
Rules:
|
|
58
|
+
|
|
59
|
+
- A `url:` line without the `---` fences is body text, not a scope.
|
|
60
|
+
- Scope keys are `url:` for pages and `endpoint:` for the API boat.
|
|
61
|
+
- `${env.NAME}` is resolved by Explorbot, so secrets stay out of the text.
|
|
62
|
+
- Never set the variable and pass the same text through the flag. It is applied twice.
|
|
63
|
+
|
|
64
|
+
Format and URL patterns: `docs/workflow/knowledge.md`.
|
|
65
|
+
|
|
34
66
|
## Docs
|
|
35
67
|
|
|
36
68
|
`node_modules/explorbot/docs/` after a local install, the repo's `docs/` when working inside Explorbot itself, otherwise `https://raw.githubusercontent.com/testomatio/explorbot/main/docs/<path>`. `docs/index.json` lists every page with a description — read it to pick the page, then open that page.
|
|
@@ -49,6 +81,8 @@ Explorbot writes into the project directory when the run used a project `explorb
|
|
|
49
81
|
| `output/explorbot.log` | run log — start here on a failure |
|
|
50
82
|
| `knowledge/`, `experience/` | what you taught it, and what it learned |
|
|
51
83
|
|
|
84
|
+
**Reporting is `@testomatio/reporter`.** Explorbot runs it inside and hands it every reporter variable, so `TESTOMATIO` sends the run to that Testomat.io project and the reporter's PR token posts the result to the open pull or merge request. Nothing else to wire. Variables: `testomatio-reporter` skill, or `docs/workflow/reporting.md`.
|
|
85
|
+
|
|
52
86
|
**Exit codes are not pass/fail.** `explore` and `test` exit `0` whenever the session completes; a failing scenario is a result, not a crash. Read the report. `navigate` is the exception — `1` means unreachable, which makes it a pre-flight check.
|
|
53
87
|
|
|
54
88
|
## Naming the site
|
|
@@ -29,7 +29,10 @@ EXPLORBOT_AI_PROVIDER=<name> \
|
|
|
29
29
|
```
|
|
30
30
|
|
|
31
31
|
- `npx explorbot --help` lists every `EXPLORBOT_*` variable of the installed version — read it there rather than copying a list.
|
|
32
|
-
- `EXPLORBOT_KNOWLEDGE="Log in as …"` applies
|
|
32
|
+
- `EXPLORBOT_KNOWLEDGE="Log in as …"` applies plain text to every page without a file. It cannot be scoped: frontmatter inside it is not read. `EXPLORBOT_KNOWLEDGE_FILE` points at a knowledge file, which can carry `url:` frontmatter. The `--knowledge` flag takes the same frontmatter inline.
|
|
33
|
+
- `EXPLORBOT_OUTPUT` sets where reports and state are written. Without it they go to `~/.explorbot/sites/<host>/`, not the working directory. Set it when something else must collect the report.
|
|
34
|
+
- With inline knowledge the output root holds `knowledge/global.md` with the resolved text. Share `reports/` only, never the whole root.
|
|
35
|
+
- A fresh machine has no browser. Install it first: `npx playwright install --with-deps chromium`.
|
|
33
36
|
- Model variables take a provider name for its recommendation, or `provider/model-id` to pin one.
|
|
34
37
|
- These variables win over `~/.explorbot/config.js`; a project `explorbot.config.js` wins over them.
|
|
35
38
|
- `EXPLORBOT_EPHEMERAL=1` keeps nothing between runs.
|
|
@@ -4,7 +4,7 @@ description: Use when the user wants to write an Explorbot test plan by hand —
|
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
author: Testomat.io
|
|
7
|
-
version: 0.
|
|
7
|
+
version: 0.2.0
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Writing Explorbot Test Plans
|
|
@@ -22,7 +22,6 @@ Installation is only required later to *run* the plan (see Output).
|
|
|
22
22
|
- The **start URL**: a path relative to the app host (e.g. `/login`), or a full absolute URL.
|
|
23
23
|
This is mandatory. Relative paths resolve against `web.url` in a project config, or against
|
|
24
24
|
the site the command names (`EXPLORBOT_URL` / a registered host) in global mode.
|
|
25
|
-
- Optional per-test start URLs when a scenario begins on a different page.
|
|
26
25
|
- Priority for each scenario: `critical`, `important`, `high`, `normal`, `low`.
|
|
27
26
|
|
|
28
27
|
## Format
|
|
@@ -40,9 +39,6 @@ priority: critical
|
|
|
40
39
|
-->
|
|
41
40
|
# User signs in with valid credentials
|
|
42
41
|
|
|
43
|
-
## Requirements
|
|
44
|
-
/login
|
|
45
|
-
|
|
46
42
|
## Steps
|
|
47
43
|
* Enter a registered email in the email field
|
|
48
44
|
* Enter the matching password
|
|
@@ -57,9 +53,6 @@ priority: high
|
|
|
57
53
|
-->
|
|
58
54
|
# Sign-in is rejected for an unknown account
|
|
59
55
|
|
|
60
|
-
## Requirements
|
|
61
|
-
/login
|
|
62
|
-
|
|
63
56
|
## Steps
|
|
64
57
|
* Enter an unregistered email and any password
|
|
65
58
|
* Submit the sign-in form
|
|
@@ -78,10 +71,8 @@ priority: high
|
|
|
78
71
|
`playwright.url`; absolute URLs work too.
|
|
79
72
|
- Each test: a `<!-- test` … `priority: <level>` … `-->` block, then `# Scenario` (h1).
|
|
80
73
|
Missing priority defaults to `normal`.
|
|
81
|
-
-
|
|
82
|
-
|
|
83
|
-
`## Requirements` URL; a test with no `## Requirements` may have no start URL and fail to
|
|
84
|
-
run. The canonical generated plans repeat the URL in every test for this reason.
|
|
74
|
+
- The Prerequisite URL is the start page for every test in the suite. A scenario that starts
|
|
75
|
+
on a different page goes in its own suite with its own Prerequisite URL.
|
|
85
76
|
- `## Steps` and `## Expected` use `* ` bullets; wrap a long bullet by indenting continuation
|
|
86
77
|
lines two spaces.
|
|
87
78
|
- Steps are **guidance** — the Tester adapts them; keep each step atomic and free of brittle
|
|
@@ -89,6 +80,15 @@ priority: high
|
|
|
89
80
|
state change, or UI change with a real side effect), not a restated step.
|
|
90
81
|
- Scenario titles describe a **business outcome**, not a click path.
|
|
91
82
|
|
|
83
|
+
## Validate
|
|
84
|
+
|
|
85
|
+
Before handing the plan over, check it has test cases and a `URL: /path` or `URL: https://…`
|
|
86
|
+
Prerequisite. Exit `0` passes; fix the plan and re-run on anything else:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
npx -y mdq-cli@latest 'comment(/^test/) && section("Prerequisite") item(/^URL: (\/|https?:\/\/)\S*$/)' <plan-file>
|
|
90
|
+
```
|
|
91
|
+
|
|
92
92
|
## Output
|
|
93
93
|
|
|
94
94
|
A hand-written plan is input only — Explorbot never rewrites it, so keep it in the repo next to
|
|
@@ -1,50 +1,95 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: prima
|
|
3
|
-
description: Use for any browser work — driving a web app, checking a behaviour, filling a form, reading a page — via npx prima-cli, in preference to npx playwright-cli, which prima runs on top of and falls back to. Covers npx prima-cli check, do, pw, verify, ask, research, go, status, report, browser, config, and session setup. Trigger on "prima", "prima-cli", "npx prima-cli", on a browser task described as behaviour ("confirm the editor saves"), and whenever npx playwright-cli would otherwise be driven step by step.
|
|
3
|
+
description: Use for any browser work — driving a web app, checking a behaviour, filling a form, reading a page — via npx prima-cli, in preference to npx playwright-cli, which prima runs on top of and falls back to. Covers npx prima-cli check, do, pw, verify, ask, research, go, status, report, browser, config, recommended-models, and session setup. Trigger on "prima", "prima-cli", "npx prima-cli", on a browser task described as behaviour ("confirm the editor saves"), and whenever npx playwright-cli would otherwise be driven step by step.
|
|
4
4
|
license: MIT
|
|
5
5
|
metadata:
|
|
6
6
|
author: Testomat.io
|
|
7
|
-
version: 0.
|
|
7
|
+
version: 0.5.0
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# Prima
|
|
11
11
|
|
|
12
|
-
Prima is an AI layer on top of playwright-cli. It drives the browser playwright-cli already has open, taking behaviour described in words instead of locators, and returns a plain-text envelope.
|
|
12
|
+
Prima is an AI layer on top of playwright-cli. It drives the browser playwright-cli already has open, taking behaviour described in words instead of locators, and returns a plain-text envelope. Invoke prima through npx (`npx prima-cli ...`); invoke playwright-cli as installed — bare `playwright-cli ...` when it is installed globally, otherwise `npx -y @playwright/cli ...`. Never use `npx playwright-cli@latest`: that package name does not exist and fails with "could not determine executable to run".
|
|
13
13
|
|
|
14
|
-
**Prefer prima to playwright-cli for anything on a web page.** Snapshots stay inside prima instead of landing in your context, and it reuses the research maps and recorded experience it already has for a page — so a scenario costs a fraction of the tokens of the same scenario driven by hand. Use `
|
|
14
|
+
**Prefer prima to playwright-cli for anything on a web page.** Snapshots stay inside prima instead of landing in your context, and it reuses the research maps and recorded experience it already has for a page — so a scenario costs a fraction of the tokens of the same scenario driven by hand. Use `playwright-cli` directly when prima has no command for the job, or when no AI model is configured (`pw` still works then).
|
|
15
15
|
|
|
16
|
-
## Models
|
|
16
|
+
## Models and Providers
|
|
17
17
|
|
|
18
|
-
Prima needs
|
|
18
|
+
Prima needs AI models taken from the environment — there is no init step. Multiple AI providers are supported (OpenRouter, OpenAI, Anthropic, Groq, Mistral, Google, Poolside).
|
|
19
|
+
|
|
20
|
+
To inspect all supported providers, their recommended models per role, and see which API keys are already configured in the environment, run:
|
|
19
21
|
|
|
20
22
|
```bash
|
|
21
|
-
|
|
23
|
+
npx prima-cli recommended-models
|
|
22
24
|
```
|
|
23
25
|
|
|
24
|
-
|
|
26
|
+
Always use `npx prima-cli recommended-models` to guide the user in setting up their keys and provider choice.
|
|
25
27
|
|
|
26
|
-
|
|
28
|
+
### 1. By Provider (recommended)
|
|
27
29
|
|
|
28
|
-
|
|
30
|
+
Export the API key and set the provider variable. Prima will automatically select that provider's recommended models for all three roles (`model` for fast execution, `visionModel` for screenshots, `agenticModel` for smart planning):
|
|
29
31
|
|
|
30
32
|
```bash
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
33
|
+
# OpenRouter
|
|
34
|
+
export OPENROUTER_API_KEY="sk-or-..."
|
|
35
|
+
export PRIMA_CLI_AI_PROVIDER=openrouter
|
|
36
|
+
|
|
37
|
+
# OpenAI
|
|
38
|
+
export OPENAI_API_KEY="sk-..."
|
|
39
|
+
export PRIMA_CLI_AI_PROVIDER=openai
|
|
40
|
+
|
|
41
|
+
# Anthropic
|
|
42
|
+
export ANTHROPIC_API_KEY="sk-ant-..."
|
|
43
|
+
export PRIMA_CLI_AI_PROVIDER=anthropic
|
|
44
|
+
|
|
45
|
+
# Groq
|
|
46
|
+
export GROQ_API_KEY="gsk_..."
|
|
47
|
+
export PRIMA_CLI_AI_PROVIDER=groq
|
|
48
|
+
|
|
49
|
+
# Mistral
|
|
50
|
+
export MISTRAL_API_KEY="..."
|
|
51
|
+
export PRIMA_CLI_AI_PROVIDER=mistral
|
|
52
|
+
|
|
53
|
+
# Google
|
|
54
|
+
export GOOGLE_GENERATIVE_AI_API_KEY="..."
|
|
55
|
+
export PRIMA_CLI_AI_PROVIDER=google
|
|
34
56
|
```
|
|
35
57
|
|
|
36
|
-
|
|
58
|
+
### 2. By Pinning Individual Models
|
|
59
|
+
|
|
60
|
+
To pin every role explicitly without a provider variable, or to mix providers, use `provider/model-id`:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
export PRIMA_CLI_AI_MODEL=openrouter/openai/gpt-oss-20b:nitro # fast / general
|
|
64
|
+
export PRIMA_CLI_VISION_MODEL=openrouter/openai/gpt-5.6-luna # screenshots
|
|
65
|
+
export PRIMA_CLI_AGENTIC_MODEL=openrouter/openai/gpt-5.6-luna # smart / agentic
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Vision Model
|
|
69
|
+
|
|
70
|
+
Screenshot analysis needs a vision model:
|
|
71
|
+
- When using `PRIMA_CLI_AI_PROVIDER`, the provider's recommended vision model is picked automatically (except Poolside, which does not serve vision).
|
|
72
|
+
- When pinning individual models, set `PRIMA_CLI_VISION_MODEL` (or pass `--vision-model <model>` for a single run). Without it prima still runs, but `check` settles outcomes from the run log rather than inspecting the screenshot.
|
|
73
|
+
|
|
74
|
+
### Inspecting Configuration
|
|
75
|
+
|
|
76
|
+
- `npx prima-cli config` prints what this directory resolves to; `--json` for machine form.
|
|
77
|
+
- Every `PRIMA_CLI_*` variable mirrors the `EXPLORBOT_*` variable (`PRIMA_CLI_AI_PROVIDER` / `EXPLORBOT_AI_PROVIDER`, `PRIMA_CLI_AI_MODEL` / `EXPLORBOT_AI_MODEL`, `PRIMA_CLI_VISION_MODEL` / `EXPLORBOT_VISION_MODEL`, `PRIMA_CLI_AGENTIC_MODEL` / `EXPLORBOT_AGENTIC_MODEL`) and wins over it, so an existing Explorbot setup is not disturbed.
|
|
78
|
+
|
|
79
|
+
## Session
|
|
80
|
+
|
|
81
|
+
Prima never launches a browser. It attaches to the session playwright-cli has open and disconnects when done, never closing it:
|
|
37
82
|
|
|
38
83
|
```bash
|
|
39
|
-
|
|
40
|
-
npx prima-cli <command> ...
|
|
41
|
-
|
|
84
|
+
playwright-cli open <url> # start
|
|
85
|
+
npx prima-cli <command> ... # drive
|
|
86
|
+
playwright-cli close # end
|
|
42
87
|
```
|
|
43
88
|
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
- `--
|
|
47
|
-
-
|
|
89
|
+
- With no session open, every prima command fails and prints the `playwright-cli open` command to run. Run it, then retry.
|
|
90
|
+
- `npx prima-cli browser start` only checks that a session is open and prints it.
|
|
91
|
+
- `--pw-session <title>` picks the session when several playwright-cli sessions are open. `--endpoint <ep>` attaches to a browser server directly, skipping discovery.
|
|
92
|
+
- Prima requires Node.js 22+.
|
|
48
93
|
- Every command is logged as it runs; `npx prima-cli report` turns the session into an html and markdown report, browser open or not.
|
|
49
94
|
- `npx explorbot prima <command>` runs the same tool if explorbot is already installed.
|
|
50
95
|
|
|
@@ -60,12 +105,23 @@ npx prima-cli pw "({ page }) => page.click('[data-test=submit]')"
|
|
|
60
105
|
|
|
61
106
|
- **Pass `do` the whole remaining sequence, never one step per call** — that is the entire cost advantage.
|
|
62
107
|
- `pw` takes executable code only. Never give it a description; never give `check`/`do` a locator.
|
|
108
|
+
- **`check` settles outcomes; it does not report.** Asking it to "list the fields" or "report what is shown" gives it nothing to settle and comes back `not verified`. Questions go to `ask`, navigation to `do`.
|
|
109
|
+
- `verify` takes exactly **one** assertion — several arguments is an error, not several claims. Repeat the command, or write one sentence.
|
|
63
110
|
- `check` and `do` legitimately run for minutes. Do not kill and retry.
|
|
64
111
|
- `check` runs on the page already open and never reloads it, so an open dialog, a selected tab or a filled form survives it.
|
|
65
112
|
- `--expected` is repeatable for several outcomes; without it the scenario text is the single expected outcome.
|
|
66
113
|
- Below `pw` sits playwright-cli itself.
|
|
67
114
|
|
|
68
|
-
Also
|
|
115
|
+
Also, with the argument each takes:
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
npx prima-cli ask "<question>" # --no-vision answers from structure only
|
|
119
|
+
npx prima-cli verify "<assertion>" # alias assert
|
|
120
|
+
npx prima-cli go "<target>" # a url, a path, or a page described in words
|
|
121
|
+
npx prima-cli status <hash>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
`research`, `report`, `config`, and `recommended-models` take no argument, and `browser` takes only its subcommand. `research` maps the whole page it is on — `--data` includes extraction, `--deep` expands hidden elements, `--fresh` re-maps past the cache; a question about that page goes to `ask` instead. Run `npx prima-cli <command> --help` for each.
|
|
69
125
|
|
|
70
126
|
## Reading the envelope
|
|
71
127
|
|
|
@@ -73,15 +129,46 @@ Also: `verify` (alias `assert`), `ask` (`--no-vision` answers from structure onl
|
|
|
73
129
|
- `ok: true` means the action you asked for landed; nothing is substituted or retried along a different route.
|
|
74
130
|
- `### Steps` marks each line `ok`, `FAIL` or `??`. `??` is an instruction that ran but the run ended without confirming — the actions that ran are listed above it, judge from those. Only `FAIL` and an instruction the page could not carry out fail the command.
|
|
75
131
|
- `not verified` means the run never checked that outcome — not that it is false, and not a failure.
|
|
76
|
-
-
|
|
132
|
+
- **When the run and the picture disagree, the page structure breaks the tie.** An outcome followed by a `resolved:` line was disputed and settled: the accessibility tree sided with the screenshot, so the run log was wrong and the PASSED or FAILED stands. Trust it like any other verdict; both sides stay quoted beneath it.
|
|
133
|
+
- **`CONTRADICTION` is a finding, not a verdict to argue with.** It remains only when the tie could not be broken, or when the tree sided with the run: the page holds something it does not display, and its `resolved:` line names that as a likely rendering bug. Both sides are quoted under the outcome, and `### Artifacts` names the html, aria and screenshot on disk — read those and judge the page yourself. Treat it as a bug in the app and look at it before anything else.
|
|
134
|
+
- **`go` to a url does not chase redirects.** `(redirected: <target> → <url>)` under `### Page` is the result: a login wall or an access rule sent the browser elsewhere. When that is not what you are testing, sign in with `do` first and go again.
|
|
77
135
|
- A `### Warning` saying the outcomes came from the run log alone means no screenshot backed them: set `PRIMA_CLI_VISION_MODEL` (or pass `--vision-model`), and until then do not trust a visual claim from `check`.
|
|
78
136
|
- A run that could not complete says so, rather than reporting it as a failure of the app.
|
|
79
137
|
- `npx prima-cli config` shows which model answers for each role.
|
|
80
138
|
|
|
139
|
+
## Artifacts
|
|
140
|
+
|
|
141
|
+
Every command writes down what it saw. The envelope's last line names it — `details: prima status <hash>` — and `do` prints the directory outright as `page after each step:`. Under `<site>/output/prima/<hash>/`:
|
|
142
|
+
|
|
143
|
+
- `aria.yml` — the whole page's accessibility tree, **with values and states**: `switch "Click elements" [checked]`, `spinbutton "Max pages": "20"`, `combobox "Scope": Default`.
|
|
144
|
+
- `page.html` — the DOM as it stood.
|
|
145
|
+
- `status.json` — url, title, state, visit count.
|
|
146
|
+
- `page.png` — only when a vision model ran.
|
|
147
|
+
- `do` adds a set per step: `N-<action>.aria.yaml`, `N-<action>.html`, and `N-<action>.diff.yaml`, which names what that step changed as `toggled` / `added` / `removed`.
|
|
148
|
+
|
|
149
|
+
**Never take a `playwright-cli snapshot` after a prima command.** The tree is already on disk, it carries values and states that snapshot does not, and grepping it costs nothing:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
grep -nE "Scope|Click elements|Advanced" <dir>/aria.yml
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
`prima status <hash>` prints the paths, but it drives the browser — read it while the session is still open, or go to the directory yourself.
|
|
156
|
+
|
|
157
|
+
## Before you drop to `pw`
|
|
158
|
+
|
|
159
|
+
Most `pw` calls are a question the tiers above have already answered.
|
|
160
|
+
|
|
161
|
+
- **A control's state or value** — grep `aria.yml` from the last command. Do not query the DOM for something already written down.
|
|
162
|
+
- **What a click changed** — `do`'s `N-*.diff.yaml`, not a snapshot before and after.
|
|
163
|
+
- **A locator** — `research` returns verified ones for the page.
|
|
164
|
+
- **Something missing from a screenshot** — the shot is the viewport, so anything below the fold is absent from it. Scroll it into view with `do`, or read `aria.yml`, which covers the whole page. A vision model that cannot see a control has not shown it is not there.
|
|
165
|
+
|
|
166
|
+
`pw` earns its place only where no wording can reach: seeding `localStorage`, reading a computed style, forcing a reload. It returns under `### Value`. A locator matching nothing costs a 3000ms timeout and fails the command, so read through `page.evaluate` and act through locators.
|
|
167
|
+
|
|
81
168
|
## Visual questions
|
|
82
169
|
|
|
83
170
|
Layout, position, colour, overlap, whether something is cut off — an accessibility tree does not carry any of it, and neither does an assertion that passed.
|
|
84
171
|
|
|
85
172
|
- `check` settles its outcomes against a screenshot of the final page. What a user can see is the proof; the run log only says what was done.
|
|
86
173
|
- `ask "<question>"` — reads a screenshot, answers in prose. Use for anything open-ended about appearance.
|
|
87
|
-
- `verify` proves claims with assertions; each comes back PASSED or FAILED with its playwright form, no overall verdict — read the lines and decide. When no assertion can express a claim it reports "none ran" instead of judging it failed.
|
|
174
|
+
- `verify` proves claims with assertions; each comes back PASSED or FAILED with its playwright form, no overall verdict — read the lines and decide. A FAILED line carries its error beneath it: a missing text or element settles the claim as false, but a syntax or locator error means the assertion never ran, so the claim is still open. When no assertion can express a claim it reports "none ran" instead of judging it failed.
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: detect-useless-tests
|
|
3
|
+
description: Find useless tests within one testing level (unit, e2e, manual) and list them by area, file, and line for review. Use when asked "which tests can we delete?", "find useless tests", or "what in our suite is not worth keeping?".
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Detect Useless Manual Tests
|
|
7
|
+
|
|
8
|
+
Go through tests of the same level (unit, e2e, manual) and detect useless ones.
|
|
9
|
+
User must provide exact locations of tests to check to identify the level of tests in pyramid.
|
|
10
|
+
Every test has tradeoffs in execution speed, conditions checked, and coupling to implementation details — judge tests against others of the same level only.
|
|
11
|
+
|
|
12
|
+
Judge each test primarily by its value to an end-user business flow.
|
|
13
|
+
Your top priority for interest are tests that are fragile to changes, that rely on time consumed heavy operations: db, browser, etc.
|
|
14
|
+
|
|
15
|
+
## Treat as likely useless
|
|
16
|
+
|
|
17
|
+
Flag tests that primarily cover:
|
|
18
|
+
|
|
19
|
+
- Internal observability, tracing, logging, metrics, or diagnostic structure.
|
|
20
|
+
- Developer-only switches, escape hatches, debug modes, build paths, or release internals.
|
|
21
|
+
- Cosmetic UI details such as wording, colors, shimmer, centering, labels, icons, breakpoints, or transient status text.
|
|
22
|
+
- Implementation workarounds rather than stable public behavior.
|
|
23
|
+
- Conditions with little or no impact on a customer workflow.
|
|
24
|
+
- Every variation of the same error, shortcut, platform, state transition, or entry point.
|
|
25
|
+
- Behavior already exercised by another test.
|
|
26
|
+
- Setup persistence or state-retention details that only save minor user effort.
|
|
27
|
+
- Expensive external-service, browser, installation, restart, CI, release, or multi-platform flows with weak business value.
|
|
28
|
+
- Regressions tied to an old implementation rather than the current public contract.
|
|
29
|
+
- Assertions that cannot meaningfully fail or whose expected result is vague.
|
|
30
|
+
- Check exact success/error message text instead of success/error behavior
|
|
31
|
+
- Implementation details not exposed via public API and never used outside the module scope.
|
|
32
|
+
|
|
33
|
+
A test can be technically valid and still be useless. Do not preserve a test merely because:
|
|
34
|
+
|
|
35
|
+
- it once caught a regression;
|
|
36
|
+
- it has assertions;
|
|
37
|
+
- it covers a distinct code path;
|
|
38
|
+
- no other test is an exact duplicate.
|
|
39
|
+
|
|
40
|
+
Exception: keep tests whose title, tag, or comment names a defect. A ticket or fix commit found in history doesn't count.
|
|
41
|
+
|
|
42
|
+
## Preserve only when justified
|
|
43
|
+
|
|
44
|
+
Keep a test only when it protects at least one of these:
|
|
45
|
+
|
|
46
|
+
- A critical end-user business flow.
|
|
47
|
+
- Data loss, security, permissions, billing, or irreversible actions.
|
|
48
|
+
- A stable public API or documented product contract.
|
|
49
|
+
- A defect explicitly identified in the test by an issue/defect reference or clearly described failure with material user impact.
|
|
50
|
+
|
|
51
|
+
A sentence such as “this used to happen” is not enough by itself.
|
|
52
|
+
|
|
53
|
+
When a defect requires protection, keep the smallest regression scenario possible. Merge permutations instead of preserving every trigger.
|
|
54
|
+
|
|
55
|
+
## Review method
|
|
56
|
+
|
|
57
|
+
1. Read the complete contents of every file in provided tests dir.
|
|
58
|
+
2. Review the explicit test cases—not just filenames, titles, priorities, or metadata.
|
|
59
|
+
3. Compare intent, business outcome, setup cost, assertions, and overlap.
|
|
60
|
+
4. Prefer removing whole suites when their subject is not appropriate for business-level testing.
|
|
61
|
+
5. For repetitive tests, select one canonical scenario and recommend merging or removing the others.
|
|
62
|
+
|
|
63
|
+
## Output
|
|
64
|
+
|
|
65
|
+
Return only cleanup candidates, grouped by area and file.
|
|
66
|
+
For rich UI output render output as table, otherwise (TUI) render as bullet list
|
|
67
|
+
|
|
68
|
+
Recommendations:
|
|
69
|
+
- `Remove`
|
|
70
|
+
- `Merge`
|
|
71
|
+
- `Simplify`
|
|
72
|
+
- `Move to lower-level automation`
|
|
73
|
+
|
|
74
|
+
Rules:
|
|
75
|
+
- Reference every file by relative path.
|
|
76
|
+
- Use one row per test.
|
|
77
|
+
- Name the exact test title.
|
|
78
|
+
- State the business-value problem directly.
|
|
79
|
+
- For duplicates, name the test that should remain.
|
|
80
|
+
- Do not list tests that should simply be kept.
|
|
81
|
+
- End with totals only: reviewed, remove, merge, simplify, move.
|
|
82
|
+
- Do not edit tests without approval.
|
|
83
|
+
|
|
84
|
+
Example as bullet points:
|
|
85
|
+
|
|
86
|
+
* path/to/test/file1:
|
|
87
|
+
- test name 1 <- [action] explain why it is useless
|
|
88
|
+
- test name 2 <- [action] explain why it is useless
|
|
89
|
+
|
|
90
|
+
* path/to/test/file2:
|
|
91
|
+
- test name 3 <- [action] explain why it is useless
|
|
92
|
+
- test name 4 <- [action] explain why it is useless
|
|
93
|
+
|
|
94
|
+
Example as table:
|
|
95
|
+
|
|
96
|
+
| File | Test | Action | Why it is useless |
|