@molecule/api-ai-tools 1.6.6 → 1.8.1
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 +613 -52
- package/dist/command-position.d.ts.map +1 -1
- package/dist/command-position.js +163 -2
- package/dist/cut-run.d.ts +98 -8
- package/dist/cut-run.d.ts.map +1 -1
- package/dist/cut-run.js +182 -29
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/suite-overlap.d.ts +5 -1
- package/dist/suite-overlap.d.ts.map +1 -1
- package/dist/suite-overlap.js +16 -2
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +290 -82
- package/dist/trace-artifacts.d.ts +147 -0
- package/dist/trace-artifacts.d.ts.map +1 -0
- package/dist/trace-artifacts.js +511 -0
- package/dist/types.d.ts +13 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utilities.d.ts +198 -26
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +594 -67
- package/package.json +2 -2
package/dist/types.d.ts
CHANGED
|
@@ -128,6 +128,19 @@ export interface ToolBuildConfig {
|
|
|
128
128
|
* @returns True when a large HTML read should be outlined rather than returned.
|
|
129
129
|
*/
|
|
130
130
|
outlineLargeHtml?: () => boolean;
|
|
131
|
+
/**
|
|
132
|
+
* The test titles the person's request EXCLUDES by name (molecule-dev's `excludedTestTitles`),
|
|
133
|
+
* asked when a finished suite run's cause note is built. Their failures are not causes to fix:
|
|
134
|
+
* the note drops them, says so at the end, and inverts them out of the narrowed re-run it hands
|
|
135
|
+
* over — a result must never name a test beside "it does not count" (xr-molecule-flash-m101
|
|
136
|
+
* +12:00, where the executor spent a turn and an edit on the excluded test).
|
|
137
|
+
*
|
|
138
|
+
* A getter, not an array, because the request is read per turn while the tool set is built
|
|
139
|
+
* once. Unset means no test is excluded.
|
|
140
|
+
*
|
|
141
|
+
* @returns The quoted titles the request carves out.
|
|
142
|
+
*/
|
|
143
|
+
excludedTestTitles?: () => readonly string[];
|
|
131
144
|
/** Post-write hook (e.g. auto-format via Prettier/ESLint). Called after every write_file/edit_file. */
|
|
132
145
|
onAfterWrite?: (path: string) => Promise<void>;
|
|
133
146
|
/** Diff tracking callback. Called before writes with old/new content. */
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/utilities.d.ts
CHANGED
|
@@ -110,6 +110,20 @@ export declare function outputIsWithheldUntilExit(command: string): boolean;
|
|
|
110
110
|
* @returns The target as written, or null (`/dev/null` and `&1`/`&2` are not files).
|
|
111
111
|
*/
|
|
112
112
|
export declare function outputRedirectTarget(command: string): string | null;
|
|
113
|
+
/**
|
|
114
|
+
* Playwright's switch for printing each failure's own error as that test fails, instead of only in
|
|
115
|
+
* the summary at the end: `list` reads it in its constructor (`ListReporterOptions.printFailuresInline`,
|
|
116
|
+
* `playwright/lib/reporters/list.js` — 1.63, the version the toolchain pins), and when it prints
|
|
117
|
+
* inline the end-of-run repeat is suppressed with it (`epilogue(!printFailuresInline)`), so one
|
|
118
|
+
* reporter still prints each failure exactly once.
|
|
119
|
+
*
|
|
120
|
+
* A background suite is put on `list` (see {@link streamingBackgroundCommand}) and this with it, so
|
|
121
|
+
* the log names its causes WHILE it walks. Without it the log's only failure lines are `✘` rows:
|
|
122
|
+
* X1 xr-molecule-flash-m99 (+19:27 → +21:00, 2026-10-16) was told to `grep -n -A 20 '<test name>'`
|
|
123
|
+
* the log, got nothing back through four greps, inferred causes from the spec prose instead, and
|
|
124
|
+
* edited `app/src` while the run was still walking — which voids the run.
|
|
125
|
+
*/
|
|
126
|
+
export declare const PLAYWRIGHT_FAILURES_INLINE_ENV = "PLAYWRIGHT_LIST_PRINT_FAILURES_INLINE";
|
|
113
127
|
/**
|
|
114
128
|
* Rewrite a command about to run in the background so its log grows while it
|
|
115
129
|
* runs. Two shapes left the log empty until exit, and an empty log is what
|
|
@@ -118,11 +132,15 @@ export declare function outputRedirectTarget(command: string): string | null;
|
|
|
118
132
|
*
|
|
119
133
|
* - a trailing `| tail -N`, which holds everything back until the command ends.
|
|
120
134
|
* It is dropped: `wait_for_task` already returns the end of the log.
|
|
135
|
+
* - any output-only filter piped after a SUITE runner (`| grep … | tail -20`), which hides the
|
|
136
|
+
* failing test's own error and leaves the pipeline's exit status — the filter's — as the run's.
|
|
137
|
+
* Every such stage is dropped ({@link stripTrailingSuiteFilters}); `wait_for_task` already
|
|
138
|
+
* returns the end of the full log, and a run whose tally shows a failure must never report 0
|
|
139
|
+
* (xr-molecule-flash-m101 +25:54).
|
|
121
140
|
* - `playwright test` with no `--reporter`, which runs the config's reporter —
|
|
122
141
|
* often `html`, which prints nothing per test. `--reporter=list` is added
|
|
123
|
-
* when the playwright run is the command's last step
|
|
124
|
-
*
|
|
125
|
-
* shape the platform reads a background suite back in.
|
|
142
|
+
* when the playwright run is the command's last step, piped or not: it writes each result as
|
|
143
|
+
* it finishes, and it is the shape the platform reads a background suite back in.
|
|
126
144
|
*
|
|
127
145
|
* The run ends up with exactly ONE reporter that prints each failure — `list`. A run that names
|
|
128
146
|
* any other printing reporter has it REPLACED, never joined: two of them write every test result
|
|
@@ -135,6 +153,11 @@ export declare function outputRedirectTarget(command: string): string | null;
|
|
|
135
153
|
* `junit`) is the
|
|
136
154
|
* executor's own and is left exactly as it is — so is any reporter this build does not know.
|
|
137
155
|
*
|
|
156
|
+
* A run put on `list` is also given {@link PLAYWRIGHT_FAILURES_INLINE_ENV}, so each failure's own
|
|
157
|
+
* error is in the log as that test fails rather than only at the end: a suite that is still walking
|
|
158
|
+
* is exactly when the executor reads the log, and without it a running log carries `✘` rows and
|
|
159
|
+
* nothing else (xr-molecule-flash-m99 spent ~90 s on greps of one, then fixed what it guessed).
|
|
160
|
+
*
|
|
138
161
|
* Only the command's last step is touched, and only its reporter, and only when that step runs
|
|
139
162
|
* something: `npx playwright test --list` takes two seconds and writes nothing per test, so
|
|
140
163
|
* neither reporter nor `--retries=0` is added to it ({@link isPlaywrightRunCommand}).
|
|
@@ -174,6 +197,45 @@ export declare function isSuiteRunCommand(command: string): boolean;
|
|
|
174
197
|
* @returns True when the command starts a Playwright run.
|
|
175
198
|
*/
|
|
176
199
|
export declare function isPlaywrightRunCommand(command: string): boolean;
|
|
200
|
+
/** A command with the output filters after its suite runner removed. */
|
|
201
|
+
export interface SuiteFilterStrip {
|
|
202
|
+
/** The command to run. */
|
|
203
|
+
command: string;
|
|
204
|
+
/** The pipeline stages dropped, as written (`| grep … | tail -20`), or '' when none were. */
|
|
205
|
+
dropped: string;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Drop the output-only filters piped after the command's suite runner.
|
|
209
|
+
*
|
|
210
|
+
* A filter after the runner is not "the end of the log" the executor asked for: it hides the
|
|
211
|
+
* failing test's own error (it usually matches none of `✘|passed|failed`), and the pipeline's exit
|
|
212
|
+
* status becomes the FILTER's, so `… 2>&1 | grep -E "✘|passed|failed|skipped" | tail -20` came back
|
|
213
|
+
* `exitCode: 0` for a run with a failure in it (xr-molecule-flash-m101 +25:54). The tool returns
|
|
214
|
+
* the end of the full log anyway, so the filter only costs diagnosability.
|
|
215
|
+
*
|
|
216
|
+
* Only a contiguous suffix of the stages after the runner is cut, and only stages the parse proves
|
|
217
|
+
* are output-only ({@link isOutputOnlyFilter}): a `| tee` or `| xargs` keeps its place, and a
|
|
218
|
+
* caller that reports the run's exit code must then treat it as unknown
|
|
219
|
+
* ({@link suiteRunPipedAfterRunner}).
|
|
220
|
+
*
|
|
221
|
+
* @param command - The shell command.
|
|
222
|
+
* @returns The rewritten command and the stages dropped.
|
|
223
|
+
*/
|
|
224
|
+
export declare function stripTrailingSuiteFilters(command: string): SuiteFilterStrip;
|
|
225
|
+
/**
|
|
226
|
+
* Whether the command's last step runs a suite whose output still passes through a stage after
|
|
227
|
+
* the runner — one {@link stripTrailingSuiteFilters} could not prove is output-only (`| tee log`,
|
|
228
|
+
* `| xargs …`). The pipeline's exit status is that stage's, not the run's.
|
|
229
|
+
*
|
|
230
|
+
* A command whose stages cannot be placed in the text (irregular whitespace inside the run) is
|
|
231
|
+
* reported as piped too: whether a pipe follows the runner is then UNKNOWN, and an unknown exit
|
|
232
|
+
* code that gets trusted is a failing run read as a pass — the failure this rule exists to stop.
|
|
233
|
+
*
|
|
234
|
+
* @param command - The shell command, after the streaming rewrite when one was applied.
|
|
235
|
+
* @returns True when a pipe this tool must not drop still follows the suite runner, or when the
|
|
236
|
+
* command runs a suite the parse cannot place.
|
|
237
|
+
*/
|
|
238
|
+
export declare function suiteRunPipedAfterRunner(command: string): boolean;
|
|
177
239
|
/**
|
|
178
240
|
* Start a background suite run at lower CPU and IO priority, so the sandbox it
|
|
179
241
|
* shares with everything else stays responsive to what the executor does next.
|
|
@@ -602,10 +664,12 @@ export declare const RUNNING_FAILURE_LINE_RE = "^[[:space:]]*(\u2718|\u2717|\u00
|
|
|
602
664
|
* The shell command whose stdout is the interesting part of a log that is still being written:
|
|
603
665
|
* the failure lines so far (capped at {@link RUNNING_FAILURE_LINES}), then the end of the log.
|
|
604
666
|
*
|
|
605
|
-
* A Playwright `list` run prints one line per test as it finishes
|
|
606
|
-
*
|
|
607
|
-
*
|
|
608
|
-
*
|
|
667
|
+
* A Playwright `list` run prints one line per test as it finishes, so the LAST bytes of a running
|
|
668
|
+
* log are its least informative part — in X1 flash-m61 the last 3 000 bytes of a 139-test walk
|
|
669
|
+
* were the skip list, and all 61 failures were above them, which cost the run the grep it had to
|
|
670
|
+
* make anyway. A background run also carries each failure's own error as it fails
|
|
671
|
+
* ({@link PLAYWRIGHT_FAILURES_INLINE_ENV}), and {@link RUNNING_FAILURE_LINE_RE} already matches
|
|
672
|
+
* those blocks' headers and their `Error:` lines, so this slice shows the causes too.
|
|
609
673
|
*
|
|
610
674
|
* @param log - The task log path.
|
|
611
675
|
* @param own - A file the command redirects its own output to, if any.
|
|
@@ -661,9 +725,11 @@ export interface RepeatingFailure {
|
|
|
661
725
|
* The cause repeating among a running suite's failures, or null.
|
|
662
726
|
*
|
|
663
727
|
* Playwright's `list` reporter prints one line per test as it finishes — its mark, its title
|
|
664
|
-
* path and how long it ran — and
|
|
665
|
-
*
|
|
666
|
-
*
|
|
728
|
+
* path and how long it ran — and, on a run the platform started in the background, each failure's
|
|
729
|
+
* own error with it ({@link PLAYWRIGHT_FAILURES_INLINE_ENV}); a `list` run with no error bodies in
|
|
730
|
+
* its log (an older Playwright, a log the bodies have been cut from) carries only the duration as
|
|
731
|
+
* a signature. Where the log carries the failure bodies (either inline, or in a finished run's
|
|
732
|
+
* summary) the signature is the
|
|
667
733
|
* error itself — {@link failureMessage}: the error class plus the locator or the values that
|
|
668
734
|
* differ — which is stronger (it needs no assumption about how long a failure should take), so
|
|
669
735
|
* the message is looked for first and the duration is then left with the tests whose bodies the
|
|
@@ -686,8 +752,29 @@ export interface RepeatingFailure {
|
|
|
686
752
|
export declare function repeatingFailure(log: string): RepeatingFailure | null;
|
|
687
753
|
/** How many of a repeating cause's failures the note lists before it says "and N more". */
|
|
688
754
|
export declare const REPEATING_FAILURE_LISTED = 5;
|
|
689
|
-
/**
|
|
690
|
-
|
|
755
|
+
/**
|
|
756
|
+
* The platform's cap on one tool result's text: `MAX_TOOL_OUTPUT_CHARS` in molecule-dev's
|
|
757
|
+
* `api/src/ai/chat-handler.ts`, which cuts a longer string field's MIDDLE. A finished run's
|
|
758
|
+
* stdout is cut to it, so the cause list must not depend on reading the log back — and must
|
|
759
|
+
* itself fit inside it, or the cut lands in the list.
|
|
760
|
+
*/
|
|
761
|
+
export declare const TOOL_RESULT_CHARS = 8000;
|
|
762
|
+
/**
|
|
763
|
+
* The characters a finished run's cause list may use of {@link TOOL_RESULT_CHARS}. The recap
|
|
764
|
+
* measured by xr-molecule-flash-m102 (+12:43) was `12 failures, 8 causes`: one cause line is
|
|
765
|
+
* ~200 chars and ~80 more with its two body lines, so 8 causes is ~2.3 k against the 8 k cap —
|
|
766
|
+
* the old 5-cause cap withheld 3 causes that the same result had room for.
|
|
767
|
+
*
|
|
768
|
+
* The rest of the cap is left to the header, the narrowed re-run command and the exclusion
|
|
769
|
+
* line, which ride the same note.
|
|
770
|
+
*/
|
|
771
|
+
export declare const FAILURE_CAUSES_CHARS: number;
|
|
772
|
+
/**
|
|
773
|
+
* How many causes a finished run's summary lists at most. The character budget above is the
|
|
774
|
+
* bound that must hold (it is what keeps the note on the surviving side of the tool-result
|
|
775
|
+
* cut); this is the bound past which a list stops being read at all.
|
|
776
|
+
*/
|
|
777
|
+
export declare const FAILURE_CAUSES_LISTED = 12;
|
|
691
778
|
/** How many of one cause's tests that summary names before it says "and N more". */
|
|
692
779
|
export declare const FAILURE_CAUSE_TESTS_LISTED = 6;
|
|
693
780
|
/**
|
|
@@ -726,6 +813,59 @@ export interface UniversalCause {
|
|
|
726
813
|
* @returns The cause's count and files, or null when the run is not failing whole.
|
|
727
814
|
*/
|
|
728
815
|
export declare function universalCause(log: string, found: RepeatingFailure): UniversalCause | null;
|
|
816
|
+
/**
|
|
817
|
+
* The ONE finding that ends a wait early, and the only one a note may hand a stop command over
|
|
818
|
+
* for: a PROVEN cause that is failing the whole run.
|
|
819
|
+
*
|
|
820
|
+
* Both halves are load-bearing, each of them learned from a run that lost minutes to the other.
|
|
821
|
+
*
|
|
822
|
+
* - **Failing the WHOLE run** is {@link universalCause}: every failure the log names, across
|
|
823
|
+
* {@link UNIVERSAL_CAUSE_FILES} spec files or more, with nothing passing since the first — the
|
|
824
|
+
* dont-stop-runs rule. X1 flash-m83 (2026-10-16) stopped eight local runs at their first
|
|
825
|
+
* repeating cause in 14.5 minutes and never finished one, and a run that still has other causes
|
|
826
|
+
* left to name is the only thing that will name them.
|
|
827
|
+
* - **A PROVEN cause** is an error repeated VERBATIM. A shared DURATION is a LEAD, never a cause:
|
|
828
|
+
* a suite whose config sets a timeout spends that timeout on every failure that waits for
|
|
829
|
+
* anything, so three unrelated tests timing out together look exactly like one broken run
|
|
830
|
+
* (`~7 s` is a property of the CONFIG, not of the cause — {@link normalizedSignature}). X1
|
|
831
|
+
* xr-molecule-flash-m99 (2026-10-16) was told `status: 'repeating_failure'` twice on that
|
|
832
|
+
* shape — three `url-navigation.spec.ts` tests at ~16.2 s, one `timeout: 15_000` plus teardown
|
|
833
|
+
* — read the early return as "stop waiting, edit now", and voided a run that was still walking;
|
|
834
|
+
* the second cost a 224 s wait that ended with no result at all.
|
|
835
|
+
*
|
|
836
|
+
* Neither half alone is enough, and {@link repeatingFailure} finding a signature is not either:
|
|
837
|
+
* that answers "is a cause repeating among this run's failures", which is worth telling the
|
|
838
|
+
* executor mid-run as a NOTE while the wait goes on. This answers the narrower question the wait
|
|
839
|
+
* needs — is the run over as a measuring instrument — and it is THE one predicate behind both
|
|
840
|
+
* that decision and the note's wording, so the two cannot come to different verdicts.
|
|
841
|
+
*
|
|
842
|
+
* @param found - What {@link repeatingFailure} found mid-run.
|
|
843
|
+
* @param universal - What {@link universalCause} found for it, if anything.
|
|
844
|
+
* @returns The cause to stop the run over, or null — in which case nothing may be stopped, the
|
|
845
|
+
* wait keeps going, and the finding rides the run's result as a note.
|
|
846
|
+
*/
|
|
847
|
+
export declare function earlyReturnCause(found: RepeatingFailure, universal: UniversalCause | null | undefined): UniversalCause | null;
|
|
848
|
+
/**
|
|
849
|
+
* The titles a request excludes that a test's heading names — the ONE matcher for "is this
|
|
850
|
+
* failure one the request does not count?".
|
|
851
|
+
*
|
|
852
|
+
* The request quotes a test's own title (`… except "should require login to post comment"`,
|
|
853
|
+
* extracted by molecule-dev's `excludedTestTitles`) while a run's heading carries more of it
|
|
854
|
+
* (`comments.spec.ts › Comments › should require login to post comment`), so containment is the
|
|
855
|
+
* comparison. Whitespace is normalised and case is ignored: a brief may wrap the title across a
|
|
856
|
+
* line (`xr-molecule-flash-m44`), and the reporter's own casing never has to match the brief's.
|
|
857
|
+
*
|
|
858
|
+
* Two readers used to answer this separately — the causes note (which therefore asked the
|
|
859
|
+
* executor to fix a test the same result said not to) and molecule-dev's exclusion notes — and
|
|
860
|
+
* xr-molecule-flash-m101 paid for the gap (+12:00: a turn and an edit spent on the excluded
|
|
861
|
+
* test).
|
|
862
|
+
*
|
|
863
|
+
* @param heading - The text to match against: a test's title, its whole `file › describe › title`
|
|
864
|
+
* path, or (for a note that only has the run's output) the run's text.
|
|
865
|
+
* @param excluded - The titles the request carves out, if the caller knows them.
|
|
866
|
+
* @returns The excluded titles this heading names, in the request's order.
|
|
867
|
+
*/
|
|
868
|
+
export declare function matchingExcludedTitles(heading: string, excluded: readonly string[]): string[];
|
|
729
869
|
/** One cause of failure in a run, and the tests it hit. */
|
|
730
870
|
export interface FailureCause {
|
|
731
871
|
/** The error line its tests all reported, or null when only the duration ties them together. */
|
|
@@ -734,6 +874,12 @@ export interface FailureCause {
|
|
|
734
874
|
seconds: number | null;
|
|
735
875
|
/** The distinct tests it hit, in the order the log named them. */
|
|
736
876
|
tests: FailedTest[];
|
|
877
|
+
/**
|
|
878
|
+
* The FIRST failure's two most useful body lines — the values that differ, or the locator from
|
|
879
|
+
* its `Call log` ({@link failureEvidence}) — so a fix round needs no re-read of the log. Empty
|
|
880
|
+
* for a duration group, whose blocks carried no bodies.
|
|
881
|
+
*/
|
|
882
|
+
evidence: string[];
|
|
737
883
|
}
|
|
738
884
|
/**
|
|
739
885
|
* Every failure a run names, grouped by the cause behind it — one group per cause, with the
|
|
@@ -744,16 +890,23 @@ export interface FailureCause {
|
|
|
744
890
|
* bodies to read; X1 flash-m83 (2026-10-16) spent three deploys (6.7 minutes) each fixing a
|
|
745
891
|
* single cause, two of them found by runs stopped before they walked the rest.
|
|
746
892
|
*
|
|
747
|
-
* The signature is the cause itself where the log carries the failures' bodies (a finished run,
|
|
748
|
-
*
|
|
749
|
-
*
|
|
750
|
-
* why a duration group is labelled as a duration and not as a
|
|
751
|
-
* printed twice, or failed twice, is one test.
|
|
893
|
+
* The signature is the cause itself where the log carries the failures' bodies (a finished run, a
|
|
894
|
+
* background `list` run — whose failures print as they fail — or a `line` reporter) —
|
|
895
|
+
* {@link failureMessage}: the error class plus the locator or the values that differ — and how long
|
|
896
|
+
* they took where it does not, which is why a duration group is labelled as a duration and not as a
|
|
897
|
+
* proven cause. A test the log printed twice, or failed twice, is one test.
|
|
898
|
+
*
|
|
899
|
+
* A test the request EXCLUDES by name is not a cause to fix: its failure does not count for
|
|
900
|
+
* this request ({@link matchingExcludedTitles}), so it is dropped here rather than handed to the
|
|
901
|
+
* executor as work — a result that names it beside "it does not count" is the contradiction
|
|
902
|
+
* xr-molecule-flash-m101 filed (+12:00: the model spent a turn and an edit on the excluded test,
|
|
903
|
+
* on a page that was passing).
|
|
752
904
|
*
|
|
753
905
|
* @param log - The log of a finished or running run.
|
|
906
|
+
* @param excluded - The test titles the request carves out, if the caller knows them.
|
|
754
907
|
* @returns The causes, the one with the most tests first.
|
|
755
908
|
*/
|
|
756
|
-
export declare function failuresByCause(log: string): FailureCause[];
|
|
909
|
+
export declare function failuresByCause(log: string, excluded?: readonly string[]): FailureCause[];
|
|
757
910
|
/**
|
|
758
911
|
* The one-line-per-cause summary of a finished run's failures, or null when the run named fewer
|
|
759
912
|
* than two of them.
|
|
@@ -762,10 +915,23 @@ export declare function failuresByCause(log: string): FailureCause[];
|
|
|
762
915
|
* executor reads, so one round of fixes covers all of them rather than the one cause a run
|
|
763
916
|
* stopped early happened to reach.
|
|
764
917
|
*
|
|
918
|
+
* A test the request excludes is not one of the causes — it is dropped and named once, at the
|
|
919
|
+
* end, so a result never asks to fix a test it also says to ignore. Where the caller knows how
|
|
920
|
+
* the run was started, the note also hands over the narrowed re-run of exactly those tests
|
|
921
|
+
* ({@link rerunOfRunningSuite}) instead of leaving the executor to re-run the whole suite.
|
|
922
|
+
*
|
|
765
923
|
* @param log - The finished run's output.
|
|
924
|
+
* @param excluded - The test titles the request carves out, if the caller knows them.
|
|
925
|
+
* @param run - How the run was started, when the caller knows it: the narrowed re-run is built
|
|
926
|
+
* from `command`/`cwd`, and `log` (the path the output was written to) is what the "left out"
|
|
927
|
+
* sentence greps when more causes exist than the result has room for.
|
|
766
928
|
* @returns The note, or null.
|
|
767
929
|
*/
|
|
768
|
-
export declare function failureCausesNote(log: string
|
|
930
|
+
export declare function failureCausesNote(log: string, excluded?: readonly string[], run?: {
|
|
931
|
+
command: string;
|
|
932
|
+
cwd?: string;
|
|
933
|
+
log?: string;
|
|
934
|
+
}): string | null;
|
|
769
935
|
/**
|
|
770
936
|
* The command that re-runs the tests at `locations` the way the run IN FLIGHT ran them: the same
|
|
771
937
|
* invocation, in the same directory, narrowed to those tests — or null when the running command
|
|
@@ -781,12 +947,14 @@ export declare function failureCausesNote(log: string): string | null;
|
|
|
781
947
|
* @param run - The run in flight: the command it was started with, as it was run, and the
|
|
782
948
|
* directory that command ran in.
|
|
783
949
|
* @param locations - The failing `file:line`s to re-run, as the run's log printed them.
|
|
950
|
+
* @param excluded - The test titles the request carves out: the re-run inverts them out
|
|
951
|
+
* (`--grep-invert`) so it cannot report them again.
|
|
784
952
|
* @returns The re-run command, or null when there is no suite to narrow.
|
|
785
953
|
*/
|
|
786
954
|
export declare function rerunOfRunningSuite(run: {
|
|
787
955
|
command: string;
|
|
788
956
|
cwd?: string;
|
|
789
|
-
}, locations: readonly string[]): string | null;
|
|
957
|
+
}, locations: readonly string[], excluded?: readonly string[]): string | null;
|
|
790
958
|
/**
|
|
791
959
|
* The sentence that names a cause repeating among a running suite's failures, mid-run.
|
|
792
960
|
*
|
|
@@ -795,11 +963,15 @@ export declare function rerunOfRunningSuite(run: {
|
|
|
795
963
|
* tests, so the note never names one or two tests as a cause.
|
|
796
964
|
*
|
|
797
965
|
* The note names the cause early so the executor can START FIXING while the run keeps walking,
|
|
798
|
-
* and it
|
|
799
|
-
*
|
|
800
|
-
*
|
|
801
|
-
*
|
|
802
|
-
*
|
|
966
|
+
* and it hands a stop command over only when {@link earlyReturnCause} says so — the SAME
|
|
967
|
+
* predicate the wait uses to decide whether to return early, so a finding the wait keeps waiting
|
|
968
|
+
* on is a finding this note never asks to stop for. X1 flash-m76 (2026-10-16) spent 4.0 minutes
|
|
969
|
+
* walking 15 tests whose one cause was certain at the third, 47 s in, and the note answers
|
|
970
|
+
* exactly that; X1 flash-m83 then stopped eight runs at their first repeating cause in 14.5
|
|
971
|
+
* minutes and never finished one, so the note must not say to stop when the run still has other
|
|
972
|
+
* causes to name. X1 xr-molecule-flash-m99 (2026-10-16) is the third shape: a shared duration is
|
|
973
|
+
* not a cause at all, so a lead reaches the executor as a note on a result it is still waiting
|
|
974
|
+
* for — never as a verdict with a stop command in it.
|
|
803
975
|
*
|
|
804
976
|
* The run is STILL WALKING while this note is written — both callers produce it mid-run — so a
|
|
805
977
|
* re-run of one of its tests is a second run against the same app and database, and the platform
|
|
@@ -813,7 +985,7 @@ export declare function rerunOfRunningSuite(run: {
|
|
|
813
985
|
*
|
|
814
986
|
* @param found - What {@link repeatingFailure} found.
|
|
815
987
|
* @param o - The run's facts: its `taskId`, its `log` path, `stop` — the shell command that
|
|
816
|
-
* stops it, printed only for
|
|
988
|
+
* stops it, printed only for an {@link earlyReturnCause} — `universal`, what
|
|
817
989
|
* {@link universalCause} found (absent means the run is not failing whole), and `run`, how the
|
|
818
990
|
* run was started ({@link rerunOfRunningSuite}) when the caller knows it.
|
|
819
991
|
* @returns The note.
|
package/dist/utilities.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAcH;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAS5C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,GAAI,GAAG,MAAM,KAAG,MAEE,CAAA;AAuGhD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAKD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAsCzD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAUpF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElE;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWnE;AAuDD
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"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"}
|