@molecule/api-ai-tools 1.14.1 → 1.14.3
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 +82 -20
- package/dist/suite-overlap.d.ts +59 -4
- package/dist/suite-overlap.d.ts.map +1 -1
- package/dist/suite-overlap.js +99 -12
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +15 -3
- package/dist/trace-artifacts.d.ts +21 -11
- package/dist/trace-artifacts.d.ts.map +1 -1
- package/dist/trace-artifacts.js +68 -15
- package/dist/utilities.d.ts +18 -4
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +34 -5
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@ AUTO-GENERATED — DO NOT EDIT THIS FILE.
|
|
|
3
3
|
Generated by `mlcl sync-docs` from the package's src/index.ts JSDoc + mlcl/registry.json.
|
|
4
4
|
Edits here are overwritten on the next commit (molecule's pre-commit hook regenerates).
|
|
5
5
|
To change this document, edit the module-level JSDoc in src/index.ts.
|
|
6
|
-
Generated: 2026-10-
|
|
6
|
+
Generated: 2026-10-24T07:21:35.435Z
|
|
7
7
|
-->
|
|
8
8
|
|
|
9
9
|
# @molecule/api-ai-tools
|
|
@@ -550,6 +550,21 @@ interface DiagnosisRunContext {
|
|
|
550
550
|
* `excludedTestTitles` gives the rest of the platform.
|
|
551
551
|
*/
|
|
552
552
|
approvedExclusions?: readonly string[]
|
|
553
|
+
/**
|
|
554
|
+
* Whether the caller is STARTING this command as the graded proof itself — the run the app is
|
|
555
|
+
* judged by, composed and launched by the platform — rather than the executor's own diagnosis.
|
|
556
|
+
*
|
|
557
|
+
* A redeploy's proof is the targeted set the last walk left: its command names the failures it
|
|
558
|
+
* re-runs (`file:line`, and the specs they live in), so it reads as a narrowed run. That
|
|
559
|
+
* selection is the proof's own scope, so the graded run keeps the suite's retries instead of
|
|
560
|
+
* walking each failure once the way a diagnosis does. Only the selection is excused — a failed
|
|
561
|
+
* cap, a title filter, a last-failed set and a local targeted selection stay diagnoses whatever the caller
|
|
562
|
+
* says here — and only a command the PLATFORM composes and launches is ever the proof.
|
|
563
|
+
*
|
|
564
|
+
* Host code marks the launch input with {@link PLATFORM_PROOF} rather than a JSON key: tool
|
|
565
|
+
* input a model sends is JSON, and JSON has no symbol keys, so no model call can claim this.
|
|
566
|
+
*/
|
|
567
|
+
platformProof?: boolean
|
|
553
568
|
}
|
|
554
569
|
```
|
|
555
570
|
|
|
@@ -2726,13 +2741,15 @@ function withSuiteConfig(command: string, config: string | null | undefined): st
|
|
|
2726
2741
|
|
|
2727
2742
|
**Returns:** The command with the flag, or the command unchanged.
|
|
2728
2743
|
|
|
2729
|
-
#### `scopedRerunCommand(command, locations, excluded, config, cwd, env)`
|
|
2744
|
+
#### `scopedRerunCommand(command, locations, excluded, config, cwd, env, options)`
|
|
2730
2745
|
|
|
2731
2746
|
The whole-suite command made scoped to the tests it should re-run instead: the same
|
|
2732
2747
|
invocation — same launcher, same settings — with the named `file:line`s in place of every
|
|
2733
2748
|
positional selection the run carried (a spec file, a suite directory or a regex filter),
|
|
2734
2749
|
`--last-failed` dropped (it re-runs the tests that never ran too, X1 flash-m60) and
|
|
2735
|
-
`--retries=0` set (a re-run of a known failure does not need to pay for retries)
|
|
2750
|
+
`--retries=0` set (a re-run of a known failure does not need to pay for retries) — except the
|
|
2751
|
+
re-run of a run against a DEPLOYED URL, which keeps the suite's own retries and tracing
|
|
2752
|
+
(`options.suiteSettings`).
|
|
2736
2753
|
|
|
2737
2754
|
The re-run keeps the run's `> <file>` redirect only in the sense of keeping its OUTPUT there:
|
|
2738
2755
|
the target is rewritten to a fresh sibling ({@link redirectRunnerOutputsToFreshFiles}), so a
|
|
@@ -2754,6 +2771,7 @@ function scopedRerunCommand(
|
|
|
2754
2771
|
config?: string | null,
|
|
2755
2772
|
cwd?: string | null,
|
|
2756
2773
|
env?: readonly RunEnvSetting[],
|
|
2774
|
+
options?: { suiteSettings?: boolean },
|
|
2757
2775
|
): string
|
|
2758
2776
|
```
|
|
2759
2777
|
|
|
@@ -2763,6 +2781,7 @@ function scopedRerunCommand(
|
|
|
2763
2781
|
- `config` — The config the run loaded, when the caller knows it; added when the command does not name one.
|
|
2764
2782
|
- `cwd` — The directory `exec_command` was given, when it was; the base a location is resolved against when the command does not `cd` anywhere.
|
|
2765
2783
|
- `env` — The settings the REQUEST requires of the suite and this run left out ({@link withRunEnv}): the re-run carries them, so a re-run of a run measured in the wrong mode is not measured in that mode again (xr-molecule-flash-m182 +12:06).
|
|
2784
|
+
- `options` — `suiteSettings` for the re-run of a run against a DEPLOYED URL: it keeps the suite's own retries and tracing instead of the diagnosis ones. The graded measurement is the suite's own settings, and a retry is what leaves a failing test's trace there; the platform's `--retries=0` and its `--trace=retain-on-failure` are both a stricter measurement than the one that was graded, and on X1 xr-molecule-flash-h15 the recording alone turned three budget-bound deployed tests into timeouts.
|
|
2766
2785
|
|
|
2767
2786
|
**Returns:** The scoped command, or the command unchanged when it runs no Playwright suite.
|
|
2768
2787
|
|
|
@@ -2806,6 +2825,18 @@ function suiteRunInTheWay(candidate: { target: string }, inFlight: readonly T[])
|
|
|
2806
2825
|
|
|
2807
2826
|
**Returns:** The first run in the way, or null.
|
|
2808
2827
|
|
|
2828
|
+
#### `isPlatformProofLaunch(input)`
|
|
2829
|
+
|
|
2830
|
+
Whether an `exec_command` input object carries the host's {@link PLATFORM_PROOF} mark.
|
|
2831
|
+
|
|
2832
|
+
```typescript
|
|
2833
|
+
function isPlatformProofLaunch(input: unknown): boolean
|
|
2834
|
+
```
|
|
2835
|
+
|
|
2836
|
+
- `input` — The tool input as the handler received it.
|
|
2837
|
+
|
|
2838
|
+
**Returns:** True only for a launch host code marked; false for anything a model sent.
|
|
2839
|
+
|
|
2809
2840
|
#### `isDiagnosisRun(command, context)`
|
|
2810
2841
|
|
|
2811
2842
|
Whether a command walks a PART of a suite instead of all of it: a cap that stops it at a failure
|
|
@@ -2839,9 +2870,9 @@ function isDiagnosisRun(command: string, context?: DiagnosisRunContext): boolean
|
|
|
2839
2870
|
```
|
|
2840
2871
|
|
|
2841
2872
|
- `command` — The command as the executor sent it.
|
|
2842
|
-
- `context` — The request's approved exclusions, when the caller knows them.
|
|
2873
|
+
- `context` — The request's approved exclusions and whether this command IS the graded proof, when the caller knows them. A whole local walk still covers the whole suite; the launcher's separate local-target policy disables its retries. This predicate classifies narrowed selections and their proof purpose.
|
|
2843
2874
|
|
|
2844
|
-
**Returns:** True when the run is a diagnosis or a re-run, not the whole suite.
|
|
2875
|
+
**Returns:** True when the run is a diagnosis or a re-run, not the whole suite or a deployed proof selection.
|
|
2845
2876
|
|
|
2846
2877
|
#### `discoverSkills(backend)`
|
|
2847
2878
|
|
|
@@ -3278,20 +3309,25 @@ function suiteRecordsTraces(configText: string): boolean
|
|
|
3278
3309
|
#### `diagnosisTraceCommand(args)`
|
|
3279
3310
|
|
|
3280
3311
|
The command a Playwright run needs to leave a readable trace behind, when the suite's config
|
|
3281
|
-
would record none.
|
|
3312
|
+
would record none — except a run that can serve as proof, whose own settings are left alone.
|
|
3282
3313
|
|
|
3283
3314
|
The failing tests' requests are only readable if the run wrote them down (see the module doc),
|
|
3284
3315
|
and the config is where the decision about that lives — the platform does not edit the suite's
|
|
3285
|
-
config, so it passes the flag instead, on
|
|
3286
|
-
|
|
3287
|
-
|
|
3288
|
-
|
|
3289
|
-
|
|
3290
|
-
|
|
3291
|
-
|
|
3292
|
-
|
|
3293
|
-
|
|
3294
|
-
|
|
3316
|
+
config, so it passes the flag instead, on a Playwright run that starts tests, does not already
|
|
3317
|
+
decide its own `--trace`, and whose config keeps no trace for its failures.
|
|
3318
|
+
|
|
3319
|
+
A run that can serve as PROOF is the exception: the graded measurement is the suite's own
|
|
3320
|
+
settings, so it keeps its own tracing and retries. That was measured, not assumed — on one
|
|
3321
|
+
sandbox in X1 xr-molecule-flash-h15 (+46:53 → +49:30) the same build ran a three-test deployed
|
|
3322
|
+
subset 3/3 timed out under this flag (17.6–17.9 s against a 15 s per-test budget) and the whole
|
|
3323
|
+
file passed 14/14 without it (10.9–12.1 s). `retain-on-failure` RETAINS only a failing test's
|
|
3324
|
+
trace (Playwright's `_shouldAbandonTrace` unlinks a passing test's), but it RECORDS every
|
|
3325
|
+
action of every test, and for a test near its per-test budget that recording is the difference
|
|
3326
|
+
between passing and timing out. m163 (+24:58) is the failure this flag was added for: its
|
|
3327
|
+
deployed proof run left only an `error-context.md` because the suite traces
|
|
3328
|
+
`on-first-retry` and the run had no retries. That need is met without the flag — the graded
|
|
3329
|
+
|
|
3330
|
+
_(description truncated — read the full text in `node_modules/@molecule/api-ai-tools/dist/trace-artifacts.d.ts`.)_
|
|
3295
3331
|
|
|
3296
3332
|
```typescript
|
|
3297
3333
|
function diagnosisTraceCommand(args: {
|
|
@@ -3548,7 +3584,7 @@ function streamingBackgroundCommand(
|
|
|
3548
3584
|
```
|
|
3549
3585
|
|
|
3550
3586
|
- `command` — The command as the executor sent it.
|
|
3551
|
-
- `context` — What the caller knows beyond the command: the tests the person's request excludes by name ({@link DiagnosisRunContext}). A `--grep-invert` of exactly those is the request's own scope, not a diagnosis, so it keeps the suite's retries on a deployed proof (xr-molecule-flash-m170 +33:16).
|
|
3587
|
+
- `context` — What the caller knows beyond the command: the tests the person's request excludes by name, and whether this command IS the platform's graded proof ({@link DiagnosisRunContext}). A `--grep-invert` of exactly those exclusions is the request's own scope, not a diagnosis, so it keeps the suite's retries on a deployed proof (xr-molecule-flash-m170 +33:16) — and a proof the platform itself composed and launched keeps them whatever its scope, targeted set included (xr-molecule-flash-l48 +26:35).
|
|
3552
3588
|
- `reportPath` — Where this run should write Playwright's standard `json` report, when the caller keeps one ({@link ./playwright-report.js}). The reporter is added to the run's own reporter set, never in place of one, and its output goes to that file through `PLAYWRIGHT_JSON_OUTPUT_FILE` — so the log, the executors' own reporters and every verdict stay exactly as they are. Omitted, or a run whose reporter set is not this function's to place (already names `json`, sets the variable itself, or whose runner cannot be located), leaves the command untouched and the result's `reportPath` unset.
|
|
3553
3589
|
|
|
3554
3590
|
**Returns:** The command to run, one sentence per change made (empty when none), and the report path when one was actually wired — or `error` when the command starts the suite more than once.
|
|
@@ -4330,7 +4366,7 @@ function repeatingFailure(log: string): RepeatingFailure | null
|
|
|
4330
4366
|
|
|
4331
4367
|
**Returns:** The repeating cause, or null when no signature has {@link REPEATING_FAILURE_MIN} distinct tests behind it.
|
|
4332
4368
|
|
|
4333
|
-
#### `logShowsInlineFailureBodies(log)`
|
|
4369
|
+
#### `logShowsInlineFailureBodies(log, excluded)`
|
|
4334
4370
|
|
|
4335
4371
|
Whether the log read so far carries a failure's own body under a `✘` row — the evidence that a
|
|
4336
4372
|
run prints each failure's error as that test fails ({@link PLAYWRIGHT_FAILURES_INLINE_ENV}).
|
|
@@ -4347,13 +4383,20 @@ running wait must not be told "as it fails" about a log whose bodies only appear
|
|
|
4347
4383
|
During a wait the run has not ended (the exit file is read first), so a block beside a `✘` row
|
|
4348
4384
|
is one the reporter printed inline.
|
|
4349
4385
|
|
|
4386
|
+
A body for a test the request EXCLUDES is not that evidence: its failure does not count for
|
|
4387
|
+
this request ({@link matchingExcludedTitles}), so a wait that handed it over as the diagnostic
|
|
4388
|
+
spent a model round trip and 8 k of partial log on a test the same result says to ignore —
|
|
4389
|
+
exactly what xr-molecule-flash-h13 (+19:06) did twice while the platform's proof was still
|
|
4390
|
+
walking.
|
|
4391
|
+
|
|
4350
4392
|
```typescript
|
|
4351
|
-
function logShowsInlineFailureBodies(log: string): boolean
|
|
4393
|
+
function logShowsInlineFailureBodies(log: string, excluded?: readonly string[]): boolean
|
|
4352
4394
|
```
|
|
4353
4395
|
|
|
4354
4396
|
- `log` — A log, or the slice of one a wait reads.
|
|
4397
|
+
- `excluded` — The test titles the request carves out, if the caller knows them.
|
|
4355
4398
|
|
|
4356
|
-
**Returns:** True when a `✘` row's own test has a failure body under it.
|
|
4399
|
+
**Returns:** True when a `✘` row's own test, outside the request's exclusions, has a failure body under it.
|
|
4357
4400
|
|
|
4358
4401
|
#### `specFilesSelected(command)`
|
|
4359
4402
|
|
|
@@ -4602,6 +4645,10 @@ The command that re-runs the tests at `locations` the way the run IN FLIGHT ran
|
|
|
4602
4645
|
invocation, in the same directory, narrowed to those tests — or null when the running command
|
|
4603
4646
|
is not a Playwright run this can narrow.
|
|
4604
4647
|
|
|
4648
|
+
A run against a DEPLOYED URL keeps the suite's own retries and tracing in its re-run
|
|
4649
|
+
({@link scopedRerunCommand} `suiteSettings`): the deployed measurement is the one the deploy is
|
|
4650
|
+
graded on, and neither the platform's `--retries=0` nor its recording `--trace` belongs on it.
|
|
4651
|
+
|
|
4605
4652
|
The `locations` are the paths the run's own log printed, which are relative to the directory
|
|
4606
4653
|
that run started in, so the composer resolves them there ({@link scopedRerunCommand}): the
|
|
4607
4654
|
command names that directory unless it already changes into one of its own, because the
|
|
@@ -4870,6 +4917,21 @@ short settle (`sleep 2; curl …`) is a legitimate thing to run.
|
|
|
4870
4917
|
const MIN_PEEK_SLEEP_SECONDS: 5
|
|
4871
4918
|
```
|
|
4872
4919
|
|
|
4920
|
+
#### `PLATFORM_PROOF`
|
|
4921
|
+
|
|
4922
|
+
The key host code sets on an `exec_command` input object to mark the launch as the platform's
|
|
4923
|
+
own graded proof ({@link DiagnosisRunContext} `platformProof`).
|
|
4924
|
+
|
|
4925
|
+
A SYMBOL, deliberately: a model's tool input is JSON, and JSON cannot carry a symbol key, so a
|
|
4926
|
+
model can never forge this mark — a `platform_proof` key it writes into its own JSON is just an
|
|
4927
|
+
unknown input key, and the handler ignores it. Object spreads through a consumer's wrappers, and
|
|
4928
|
+
this package's own input normalization, keep symbol-keyed properties, so the host's intent
|
|
4929
|
+
survives the real launch path.
|
|
4930
|
+
|
|
4931
|
+
```typescript
|
|
4932
|
+
const PLATFORM_PROOF: typeof PLATFORM_PROOF
|
|
4933
|
+
```
|
|
4934
|
+
|
|
4873
4935
|
#### `SPLIT_WORK_ADVICE`
|
|
4874
4936
|
|
|
4875
4937
|
The closing advice on an over-budget message for a command that is not a test
|
package/dist/suite-overlap.d.ts
CHANGED
|
@@ -82,7 +82,9 @@ export declare function withSuiteConfig(command: string, config: string | null |
|
|
|
82
82
|
* invocation — same launcher, same settings — with the named `file:line`s in place of every
|
|
83
83
|
* positional selection the run carried (a spec file, a suite directory or a regex filter),
|
|
84
84
|
* `--last-failed` dropped (it re-runs the tests that never ran too, X1 flash-m60) and
|
|
85
|
-
* `--retries=0` set (a re-run of a known failure does not need to pay for retries)
|
|
85
|
+
* `--retries=0` set (a re-run of a known failure does not need to pay for retries) — except the
|
|
86
|
+
* re-run of a run against a DEPLOYED URL, which keeps the suite's own retries and tracing
|
|
87
|
+
* (`options.suiteSettings`).
|
|
86
88
|
*
|
|
87
89
|
* The re-run keeps the run's `> <file>` redirect only in the sense of keeping its OUTPUT there:
|
|
88
90
|
* the target is rewritten to a fresh sibling ({@link redirectRunnerOutputsToFreshFiles}), so a
|
|
@@ -112,9 +114,17 @@ export declare function withSuiteConfig(command: string, config: string | null |
|
|
|
112
114
|
* @param env - The settings the REQUEST requires of the suite and this run left out
|
|
113
115
|
* ({@link withRunEnv}): the re-run carries them, so a re-run of a run measured in the wrong
|
|
114
116
|
* mode is not measured in that mode again (xr-molecule-flash-m182 +12:06).
|
|
117
|
+
* @param options - `suiteSettings` for the re-run of a run against a DEPLOYED URL: it keeps the
|
|
118
|
+
* suite's own retries and tracing instead of the diagnosis ones. The graded measurement is the
|
|
119
|
+
* suite's own settings, and a retry is what leaves a failing test's trace there; the platform's
|
|
120
|
+
* `--retries=0` and its `--trace=retain-on-failure` are both a stricter measurement than the
|
|
121
|
+
* one that was graded, and on X1 xr-molecule-flash-h15 the recording alone turned three
|
|
122
|
+
* budget-bound deployed tests into timeouts.
|
|
115
123
|
* @returns The scoped command, or the command unchanged when it runs no Playwright suite.
|
|
116
124
|
*/
|
|
117
|
-
export declare function scopedRerunCommand(command: string, locations: readonly string[], excluded?: readonly string[], config?: string | null, cwd?: string | null, env?: readonly RunEnvSetting[]
|
|
125
|
+
export declare function scopedRerunCommand(command: string, locations: readonly string[], excluded?: readonly string[], config?: string | null, cwd?: string | null, env?: readonly RunEnvSetting[], options?: {
|
|
126
|
+
suiteSettings?: boolean;
|
|
127
|
+
}): string;
|
|
118
128
|
/** One `NAME=value` the request requires of a suite run. */
|
|
119
129
|
export interface RunEnvSetting {
|
|
120
130
|
name: string;
|
|
@@ -181,7 +191,40 @@ export interface DiagnosisRunContext {
|
|
|
181
191
|
* `excludedTestTitles` gives the rest of the platform.
|
|
182
192
|
*/
|
|
183
193
|
approvedExclusions?: readonly string[];
|
|
194
|
+
/**
|
|
195
|
+
* Whether the caller is STARTING this command as the graded proof itself — the run the app is
|
|
196
|
+
* judged by, composed and launched by the platform — rather than the executor's own diagnosis.
|
|
197
|
+
*
|
|
198
|
+
* A redeploy's proof is the targeted set the last walk left: its command names the failures it
|
|
199
|
+
* re-runs (`file:line`, and the specs they live in), so it reads as a narrowed run. That
|
|
200
|
+
* selection is the proof's own scope, so the graded run keeps the suite's retries instead of
|
|
201
|
+
* walking each failure once the way a diagnosis does. Only the selection is excused — a failed
|
|
202
|
+
* cap, a title filter, a last-failed set and a local targeted selection stay diagnoses whatever the caller
|
|
203
|
+
* says here — and only a command the PLATFORM composes and launches is ever the proof.
|
|
204
|
+
*
|
|
205
|
+
* Host code marks the launch input with {@link PLATFORM_PROOF} rather than a JSON key: tool
|
|
206
|
+
* input a model sends is JSON, and JSON has no symbol keys, so no model call can claim this.
|
|
207
|
+
*/
|
|
208
|
+
platformProof?: boolean;
|
|
184
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* The key host code sets on an `exec_command` input object to mark the launch as the platform's
|
|
212
|
+
* own graded proof ({@link DiagnosisRunContext} `platformProof`).
|
|
213
|
+
*
|
|
214
|
+
* A SYMBOL, deliberately: a model's tool input is JSON, and JSON cannot carry a symbol key, so a
|
|
215
|
+
* model can never forge this mark — a `platform_proof` key it writes into its own JSON is just an
|
|
216
|
+
* unknown input key, and the handler ignores it. Object spreads through a consumer's wrappers, and
|
|
217
|
+
* this package's own input normalization, keep symbol-keyed properties, so the host's intent
|
|
218
|
+
* survives the real launch path.
|
|
219
|
+
*/
|
|
220
|
+
export declare const PLATFORM_PROOF: unique symbol;
|
|
221
|
+
/**
|
|
222
|
+
* Whether an `exec_command` input object carries the host's {@link PLATFORM_PROOF} mark.
|
|
223
|
+
*
|
|
224
|
+
* @param input - The tool input as the handler received it.
|
|
225
|
+
* @returns True only for a launch host code marked; false for anything a model sent.
|
|
226
|
+
*/
|
|
227
|
+
export declare function isPlatformProofLaunch(input: unknown): boolean;
|
|
185
228
|
/**
|
|
186
229
|
* Whether a command walks a PART of a suite instead of all of it: a cap that stops it at a failure
|
|
187
230
|
* count, the failures the last run printed (`--last-failed`, `--only-changed`), a title filter, or
|
|
@@ -217,9 +260,21 @@ export interface DiagnosisRunContext {
|
|
|
217
260
|
* that exclusion, the rewriter added `--retries=0` to it, and the run lost the suite's retries on
|
|
218
261
|
* the one walk where a network blip is likeliest.
|
|
219
262
|
*
|
|
263
|
+
* A command the PLATFORM composed and launched AS the graded proof keeps the suite's retries for
|
|
264
|
+
* the SELECTION it composed — the failures a redeploy re-runs, named as files and `file:line`
|
|
265
|
+
* ({@link DiagnosisRunContext} `platformProof`). Only that selection is excused: a cap, a title
|
|
266
|
+
* filter, a last-failed set and a local targeted selection stay diagnoses, so the mark cannot turn a walk of
|
|
267
|
+
* part of the suite into the graded measurement. Which targets are local is
|
|
268
|
+
* {@link suiteCommandTarget}'s answer, and the launch rewrite asks it on the same reading
|
|
269
|
+
* ({@link ./utilities.js} `streamingBackgroundCommand`).
|
|
270
|
+
*
|
|
220
271
|
* @param command - The command as the executor sent it.
|
|
221
|
-
* @param context - The request's approved exclusions
|
|
222
|
-
*
|
|
272
|
+
* @param context - The request's approved exclusions and whether this command IS the graded
|
|
273
|
+
* proof, when the caller knows them.
|
|
274
|
+
* A whole local walk still covers the whole suite; the launcher's separate local-target policy
|
|
275
|
+
* disables its retries. This predicate classifies narrowed selections and their proof purpose.
|
|
276
|
+
*
|
|
277
|
+
* @returns True when the run is a diagnosis or a re-run, not the whole suite or a deployed proof selection.
|
|
223
278
|
*/
|
|
224
279
|
export declare function isDiagnosisRun(command: string, context?: DiagnosisRunContext): boolean;
|
|
225
280
|
//# sourceMappingURL=suite-overlap.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"suite-overlap.d.ts","sourceRoot":"","sources":["../src/suite-overlap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAaH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAS1F;AA4VD
|
|
1
|
+
{"version":3,"file":"suite-overlap.d.ts","sourceRoot":"","sources":["../src/suite-overlap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAaH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAKD;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAS1F;AA4VD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,QAAQ,GAAE,SAAS,MAAM,EAAO,EAChC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,EACtB,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,EACnB,GAAG,GAAE,SAAS,aAAa,EAAO,EAClC,OAAO,GAAE;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,MAAM,CA2DR;AAED,4DAA4D;AAC5D,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAmCD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,GAAE,SAAS,aAAa,EAAO,GAAG,MAAM,CAe3F;AAwOD;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,gBAAgB,EACzD,SAAS,EAAE;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EAC7B,QAAQ,EAAE,SAAS,CAAC,EAAE,GACrB,CAAC,GAAG,IAAI,CAMV;AAqHD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACtC;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,MAA4D,CAAA;AAEhG;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAM7D;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkDG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CA2BtF"}
|
package/dist/suite-overlap.js
CHANGED
|
@@ -445,7 +445,9 @@ function redirectRunnerOutputsToFreshFiles(command) {
|
|
|
445
445
|
* invocation — same launcher, same settings — with the named `file:line`s in place of every
|
|
446
446
|
* positional selection the run carried (a spec file, a suite directory or a regex filter),
|
|
447
447
|
* `--last-failed` dropped (it re-runs the tests that never ran too, X1 flash-m60) and
|
|
448
|
-
* `--retries=0` set (a re-run of a known failure does not need to pay for retries)
|
|
448
|
+
* `--retries=0` set (a re-run of a known failure does not need to pay for retries) — except the
|
|
449
|
+
* re-run of a run against a DEPLOYED URL, which keeps the suite's own retries and tracing
|
|
450
|
+
* (`options.suiteSettings`).
|
|
449
451
|
*
|
|
450
452
|
* The re-run keeps the run's `> <file>` redirect only in the sense of keeping its OUTPUT there:
|
|
451
453
|
* the target is rewritten to a fresh sibling ({@link redirectRunnerOutputsToFreshFiles}), so a
|
|
@@ -475,9 +477,15 @@ function redirectRunnerOutputsToFreshFiles(command) {
|
|
|
475
477
|
* @param env - The settings the REQUEST requires of the suite and this run left out
|
|
476
478
|
* ({@link withRunEnv}): the re-run carries them, so a re-run of a run measured in the wrong
|
|
477
479
|
* mode is not measured in that mode again (xr-molecule-flash-m182 +12:06).
|
|
480
|
+
* @param options - `suiteSettings` for the re-run of a run against a DEPLOYED URL: it keeps the
|
|
481
|
+
* suite's own retries and tracing instead of the diagnosis ones. The graded measurement is the
|
|
482
|
+
* suite's own settings, and a retry is what leaves a failing test's trace there; the platform's
|
|
483
|
+
* `--retries=0` and its `--trace=retain-on-failure` are both a stricter measurement than the
|
|
484
|
+
* one that was graded, and on X1 xr-molecule-flash-h15 the recording alone turned three
|
|
485
|
+
* budget-bound deployed tests into timeouts.
|
|
478
486
|
* @returns The scoped command, or the command unchanged when it runs no Playwright suite.
|
|
479
487
|
*/
|
|
480
|
-
export function scopedRerunCommand(command, locations, excluded = [], config, cwd, env = []) {
|
|
488
|
+
export function scopedRerunCommand(command, locations, excluded = [], config, cwd, env = [], options = {}) {
|
|
481
489
|
const run = playwrightStatement(command);
|
|
482
490
|
if (run === null)
|
|
483
491
|
return command;
|
|
@@ -508,13 +516,22 @@ export function scopedRerunCommand(command, locations, excluded = [], config, cw
|
|
|
508
516
|
// nothing — "No tests found" — so every location is rendered in a form Playwright can match
|
|
509
517
|
// ({@link playwrightLocations}).
|
|
510
518
|
const narrowed = playwrightLocations(locations, command, cwd);
|
|
511
|
-
|
|
519
|
+
// The recording flag the platform adds to a run whose config keeps no trace
|
|
520
|
+
// (`trace-artifacts.ts` `DIAGNOSIS_TRACE_FLAG`). It costs every test its recording, so a re-run
|
|
521
|
+
// measured with the suite's settings does not carry it.
|
|
522
|
+
const platformRecordingTrace = /\s*--trace=retain-on-failure(?![\w-])/g;
|
|
523
|
+
const keptSettings = options.suiteSettings === true;
|
|
524
|
+
const dropped = (keptSettings
|
|
525
|
+
? dropSupersededSelections(args, narrowed).replace(platformRecordingTrace, '')
|
|
526
|
+
: dropSupersededSelections(args, narrowed))
|
|
512
527
|
// `--last-failed` re-runs the tests that never ran too (flash-m60); its `--last-failed-file`
|
|
513
528
|
// sibling only moves the file it reads and is a real option of the re-run.
|
|
514
529
|
.replace(/\s*--last-failed(?!-)/g, '')
|
|
515
530
|
.replace(/\s*--retries(?:[= ]\d+)?/g, '');
|
|
531
|
+
// A re-run of a deployed run measures what the suite measures: its own retries (which is what
|
|
532
|
+
// leaves a failing test's retry trace), never the diagnosis `--retries=0`.
|
|
516
533
|
const scoped = command.slice(0, run.afterRunner) +
|
|
517
|
-
` ${narrowed.join(' ')} --retries=0${carry}${invert}` +
|
|
534
|
+
` ${narrowed.join(' ')}${keptSettings ? '' : ' --retries=0'}${carry}${invert}` +
|
|
518
535
|
dropped;
|
|
519
536
|
// A command that starts the suite AGAIN after this statement is a chain of walks, not a re-run:
|
|
520
537
|
// everything from the next suite runner on is dropped, so the composed command carries ONE walk.
|
|
@@ -865,10 +882,34 @@ function playwrightStatement(command) {
|
|
|
865
882
|
return null;
|
|
866
883
|
}
|
|
867
884
|
/**
|
|
868
|
-
* What narrows a Playwright run to a part of the suite
|
|
869
|
-
*
|
|
885
|
+
* What narrows a Playwright run to a part of the suite by naming the failures themselves: spec
|
|
886
|
+
* files and `file:line` locations. These are the selections a redeploy's targeted proof is
|
|
887
|
+
* composed from.
|
|
870
888
|
*/
|
|
871
|
-
const
|
|
889
|
+
const NAMED_SELECTION = /\.(?:spec|test)\.[cm]?[jt]sx?\b|\.[cm]?[jt]sx?:\d+/;
|
|
890
|
+
/**
|
|
891
|
+
* What narrows a Playwright run by a title filter, or by the failures the run before it printed.
|
|
892
|
+
* These are diagnoses however the run was launched. A cap is a diagnosis too, but
|
|
893
|
+
* {@link boundsFailures} reads it before this point because its own "no cap" spelling
|
|
894
|
+
* (`--max-failures=0`) has to be told apart.
|
|
895
|
+
*/
|
|
896
|
+
const FILTERED_SELECTION = /(?:^|\s)(?:-g|--grep|--grep-invert|-G|--last-failed|--only-changed)\b/;
|
|
897
|
+
/**
|
|
898
|
+
* What narrows a Playwright run to a part of the suite: either of the two above. Built from their
|
|
899
|
+
* own sources so the two readings cannot drift apart.
|
|
900
|
+
*/
|
|
901
|
+
const NARROWED_RUN = new RegExp(`(?:${NAMED_SELECTION.source})|(?:${FILTERED_SELECTION.source})`);
|
|
902
|
+
/**
|
|
903
|
+
* Whether a narrowed invocation is narrowed ONLY by the failures it names — the selection the
|
|
904
|
+
* platform composes a redeploy's proof from ({@link NAMED_SELECTION}) — rather than by a title
|
|
905
|
+
* filter or a last-failed set ({@link FILTERED_SELECTION}).
|
|
906
|
+
*
|
|
907
|
+
* @param run - The Playwright invocation's command-position text, without a `--grep-invert`.
|
|
908
|
+
* @returns True when files/lines are the only narrowing.
|
|
909
|
+
*/
|
|
910
|
+
function namesOnlySelection(run) {
|
|
911
|
+
return NAMED_SELECTION.test(run) && !FILTERED_SELECTION.test(run);
|
|
912
|
+
}
|
|
872
913
|
/**
|
|
873
914
|
* A `--grep-invert` (or its `-G` alias) with the pattern Playwright takes: quoted or bare, `=` or
|
|
874
915
|
* whitespace between flag and value, the last occurrence winning as it does on the runner's own
|
|
@@ -899,6 +940,28 @@ function grepInvertPattern(run) {
|
|
|
899
940
|
function withoutGrepInvert(run) {
|
|
900
941
|
return run.replace(GREP_INVERT_VALUE, ' ');
|
|
901
942
|
}
|
|
943
|
+
/**
|
|
944
|
+
* The key host code sets on an `exec_command` input object to mark the launch as the platform's
|
|
945
|
+
* own graded proof ({@link DiagnosisRunContext} `platformProof`).
|
|
946
|
+
*
|
|
947
|
+
* A SYMBOL, deliberately: a model's tool input is JSON, and JSON cannot carry a symbol key, so a
|
|
948
|
+
* model can never forge this mark — a `platform_proof` key it writes into its own JSON is just an
|
|
949
|
+
* unknown input key, and the handler ignores it. Object spreads through a consumer's wrappers, and
|
|
950
|
+
* this package's own input normalization, keep symbol-keyed properties, so the host's intent
|
|
951
|
+
* survives the real launch path.
|
|
952
|
+
*/
|
|
953
|
+
export const PLATFORM_PROOF = Symbol.for('@molecule/api-ai-tools/platform-proof');
|
|
954
|
+
/**
|
|
955
|
+
* Whether an `exec_command` input object carries the host's {@link PLATFORM_PROOF} mark.
|
|
956
|
+
*
|
|
957
|
+
* @param input - The tool input as the handler received it.
|
|
958
|
+
* @returns True only for a launch host code marked; false for anything a model sent.
|
|
959
|
+
*/
|
|
960
|
+
export function isPlatformProofLaunch(input) {
|
|
961
|
+
return (typeof input === 'object' &&
|
|
962
|
+
input !== null &&
|
|
963
|
+
input[PLATFORM_PROOF] === true);
|
|
964
|
+
}
|
|
902
965
|
/**
|
|
903
966
|
* The Playwright invocation's text when the command starts one, or null.
|
|
904
967
|
*
|
|
@@ -965,11 +1028,25 @@ function boundsFailures(command) {
|
|
|
965
1028
|
* that exclusion, the rewriter added `--retries=0` to it, and the run lost the suite's retries on
|
|
966
1029
|
* the one walk where a network blip is likeliest.
|
|
967
1030
|
*
|
|
1031
|
+
* A command the PLATFORM composed and launched AS the graded proof keeps the suite's retries for
|
|
1032
|
+
* the SELECTION it composed — the failures a redeploy re-runs, named as files and `file:line`
|
|
1033
|
+
* ({@link DiagnosisRunContext} `platformProof`). Only that selection is excused: a cap, a title
|
|
1034
|
+
* filter, a last-failed set and a local targeted selection stay diagnoses, so the mark cannot turn a walk of
|
|
1035
|
+
* part of the suite into the graded measurement. Which targets are local is
|
|
1036
|
+
* {@link suiteCommandTarget}'s answer, and the launch rewrite asks it on the same reading
|
|
1037
|
+
* ({@link ./utilities.js} `streamingBackgroundCommand`).
|
|
1038
|
+
*
|
|
968
1039
|
* @param command - The command as the executor sent it.
|
|
969
|
-
* @param context - The request's approved exclusions
|
|
970
|
-
*
|
|
1040
|
+
* @param context - The request's approved exclusions and whether this command IS the graded
|
|
1041
|
+
* proof, when the caller knows them.
|
|
1042
|
+
* A whole local walk still covers the whole suite; the launcher's separate local-target policy
|
|
1043
|
+
* disables its retries. This predicate classifies narrowed selections and their proof purpose.
|
|
1044
|
+
*
|
|
1045
|
+
* @returns True when the run is a diagnosis or a re-run, not the whole suite or a deployed proof selection.
|
|
971
1046
|
*/
|
|
972
1047
|
export function isDiagnosisRun(command, context) {
|
|
1048
|
+
// A cap bounds the walk whatever launched it. `--max-failures=0` is Playwright's own "no cap"
|
|
1049
|
+
// ({@link boundsFailures}), so the uncapped spelling is not read as a diagnosis here.
|
|
973
1050
|
if (boundsFailures(command))
|
|
974
1051
|
return true;
|
|
975
1052
|
const run = playwrightRun(command);
|
|
@@ -980,10 +1057,20 @@ export function isDiagnosisRun(command, context) {
|
|
|
980
1057
|
if (commandRunsNoTests(run))
|
|
981
1058
|
return true;
|
|
982
1059
|
const inverted = grepInvertPattern(run);
|
|
983
|
-
if (inverted === null)
|
|
984
|
-
return NARROWED_RUN.test(run);
|
|
985
1060
|
// A file, a line, a `-g`, `--last-failed` … narrows the run whatever the inversion also drops.
|
|
986
|
-
|
|
1061
|
+
const selection = inverted === null ? run : withoutGrepInvert(run);
|
|
1062
|
+
if (NARROWED_RUN.test(selection)) {
|
|
1063
|
+
// The platform's own proof keeps the suite's retries for the failures it re-runs — the one
|
|
1064
|
+
// selection a redeploy composes. Every other narrower is still a diagnosis: a filter or a
|
|
1065
|
+
// last-failed set measures a part of the suite, capped or not.
|
|
1066
|
+
if (context?.platformProof === true &&
|
|
1067
|
+
namesOnlySelection(selection) &&
|
|
1068
|
+
suiteCommandTarget(command) !== 'local')
|
|
1069
|
+
return false;
|
|
987
1070
|
return true;
|
|
1071
|
+
}
|
|
1072
|
+
if (inverted === null)
|
|
1073
|
+
return false;
|
|
1074
|
+
// No selector or filter narrows the run: only the inversion's own scope can make it a diagnosis.
|
|
988
1075
|
return matchingExcludedTitles(inverted, context?.approvedExclusions ?? []).length === 0;
|
|
989
1076
|
}
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAgS9C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAudD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAiInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA2DlF;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAoBpF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC,GACxE,qBAAqB,CAkBvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCxB;AA2GD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAgS9C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAudD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAiInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA2DlF;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUhE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGtE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,8FAA8F;IAC9F,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAA;AAoBpF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC,GACxE,qBAAqB,CAkBvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAiCxB;AA2GD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,MAAM,EAAE,CAwjGxF"}
|
package/dist/tools.js
CHANGED
|
@@ -701,7 +701,7 @@ async function backgroundTaskState(backend, command, seconds, ceilingMs) {
|
|
|
701
701
|
slice,
|
|
702
702
|
};
|
|
703
703
|
}
|
|
704
|
-
import { suiteCommandTarget } from './suite-overlap.js';
|
|
704
|
+
import { isPlatformProofLaunch, suiteCommandTarget } from './suite-overlap.js';
|
|
705
705
|
import { diagnosisTraceCommand } from './trace-artifacts.js';
|
|
706
706
|
import { addedRedactionMask, BRACE_GLOB_HINT, checkBlockedCommand, declaredBudgetSeconds, DEFAULT_SEARCH_EXCLUDED_DIRS, directoryReadHint, earlyReturnCause, emptyCallError, expandBraceGlob, failureCausesNote, findPathArgs, findPatternArgs, fusedLine, htmlOutline, isCommandTimeout, isEnvFilePath, isOutsideRoot, isPlaywrightRunCommand, isReadOnlyInspection, isSuiteRunCommand, linesWithinSerialized, literalDirPrefix, logShowsInlineFailureBodies, MAX_BATCH_READ_FILES, MAX_FIND_RESULTS, MAX_HTML_INLINE_CHARS, MAX_OUTPUT_SIZE, MAX_READ_CALL_CHARS, MAX_READ_RETURN_CHARS, MAX_READ_SIZE, MAX_SEARCH_CONTEXT_LINES, MAX_SEARCH_RESULTS, MAX_WRITE_SIZE, outputIsWithheldUntilExit, outputRedirectTarget, parseCheckCommand, parseCheckProblem, pathArgError, READ_RESULT_ENVELOPE_CHARS, redactSecrets, redactSecretsInCode, repeatedSuiteRunError, repeatingFailure, repeatingFailureNote, resolvePath, RUNNING_FAILURE_LINES, runningCauseCommand, runningLogReadCommand, runningOutputSliceCommand, searchTimeoutError, serializedChars, shellQuote, sliceLines, SMALL_FILE_WHOLE_CHARS, streamingBackgroundCommand, stripControlChars, suiteRunBudgetCommand, suiteRunConfigCommand, suiteRunPipelinePlacement, suiteRunPriorityLaunch, TOOL_RESULT_CHARS, truncateMiddle, universalCause, whitespaceTolerantReplace, withoutSuiteTimeout, withPlaywrightRunReport, } from './utilities.js';
|
|
707
707
|
/**
|
|
@@ -2912,7 +2912,16 @@ export function buildTools(backend, config) {
|
|
|
2912
2912
|
// restart (see reportByTask). A run whose reporter set is not this tool's to place — or
|
|
2913
2913
|
// one that already writes a report of its own — comes back with no report path and is
|
|
2914
2914
|
// launched exactly as before.
|
|
2915
|
-
|
|
2915
|
+
//
|
|
2916
|
+
// Whether this launch IS the platform's graded proof is a HOST fact, read off the symbol
|
|
2917
|
+
// `PLATFORM_PROOF` that only host code can set on the input object — not from a JSON key
|
|
2918
|
+
// in the model's arguments, which the model would control (a `platform_proof` key it
|
|
2919
|
+
// writes is an unknown input key and is ignored). A launch without the mark is read
|
|
2920
|
+
// exactly as before.
|
|
2921
|
+
const streaming = streamingBackgroundCommand(command, {
|
|
2922
|
+
approvedExclusions: excludedTestTitles?.() ?? [],
|
|
2923
|
+
platformProof: isPlatformProofLaunch(input),
|
|
2924
|
+
}, playwrightReportPathFor(id));
|
|
2916
2925
|
// A command that starts the suite more than once is refused here, before anything is
|
|
2917
2926
|
// written or launched: each walk measures the same code, and only the last is rewritten
|
|
2918
2927
|
// (X1 xr-molecule-flash-m157 +14:02 — two whole walks chained with `;`).
|
|
@@ -3591,7 +3600,10 @@ export function buildTools(backend, config) {
|
|
|
3591
3600
|
if (yieldDiagnostic &&
|
|
3592
3601
|
taskRecord &&
|
|
3593
3602
|
!taskRecord.diagnosticYielded &&
|
|
3594
|
-
|
|
3603
|
+
// A failure the request excludes by name is not a diagnostic to hand back — the same
|
|
3604
|
+
// matcher the finished run's causes note drops it with, so the wait keeps running and
|
|
3605
|
+
// the one yield stays available for a failure that counts (xr-molecule-flash-h13).
|
|
3606
|
+
logShowsInlineFailureBodies(causeLog, excludedTestTitles?.() ?? [])) {
|
|
3595
3607
|
// Completion during the log read still wins over a progress return.
|
|
3596
3608
|
exitCode = await readExit();
|
|
3597
3609
|
if (exitCode !== null)
|
|
@@ -854,20 +854,30 @@ export interface DiagnosisTraceRewrite {
|
|
|
854
854
|
}
|
|
855
855
|
/**
|
|
856
856
|
* The command a Playwright run needs to leave a readable trace behind, when the suite's config
|
|
857
|
-
* would record none.
|
|
857
|
+
* would record none — except a run that can serve as proof, whose own settings are left alone.
|
|
858
858
|
*
|
|
859
859
|
* The failing tests' requests are only readable if the run wrote them down (see the module doc),
|
|
860
860
|
* and the config is where the decision about that lives — the platform does not edit the suite's
|
|
861
|
-
* config, so it passes the flag instead, on
|
|
862
|
-
*
|
|
863
|
-
*
|
|
864
|
-
*
|
|
865
|
-
*
|
|
866
|
-
*
|
|
867
|
-
*
|
|
868
|
-
*
|
|
869
|
-
*
|
|
870
|
-
*
|
|
861
|
+
* config, so it passes the flag instead, on a Playwright run that starts tests, does not already
|
|
862
|
+
* decide its own `--trace`, and whose config keeps no trace for its failures.
|
|
863
|
+
*
|
|
864
|
+
* A run that can serve as PROOF is the exception: the graded measurement is the suite's own
|
|
865
|
+
* settings, so it keeps its own tracing and retries. That was measured, not assumed — on one
|
|
866
|
+
* sandbox in X1 xr-molecule-flash-h15 (+46:53 → +49:30) the same build ran a three-test deployed
|
|
867
|
+
* subset 3/3 timed out under this flag (17.6–17.9 s against a 15 s per-test budget) and the whole
|
|
868
|
+
* file passed 14/14 without it (10.9–12.1 s). `retain-on-failure` RETAINS only a failing test's
|
|
869
|
+
* trace (Playwright's `_shouldAbandonTrace` unlinks a passing test's), but it RECORDS every
|
|
870
|
+
* action of every test, and for a test near its per-test budget that recording is the difference
|
|
871
|
+
* between passing and timing out. m163 (+24:58) is the failure this flag was added for: its
|
|
872
|
+
* deployed proof run left only an `error-context.md` because the suite traces
|
|
873
|
+
* `on-first-retry` and the run had no retries. That need is met without the flag — the graded
|
|
874
|
+
* deployed run keeps the suite's own retries, so a failing test leaves its retry's trace — and
|
|
875
|
+
* the platform's re-run note carries `--trace=on` for a run that did leave none.
|
|
876
|
+
*
|
|
877
|
+
* Which runs are proof-capable is {@link suiteCommandTarget}'s answer: a run against a deployed
|
|
878
|
+
* URL. A LOCAL run is never left to its config, because the launcher gives every local run
|
|
879
|
+
* `--retries=0` (`@molecule/api-ai-tools` `streamingBackgroundCommand`), so its retry trace would
|
|
880
|
+
* never happen. A run that pins `--retries=0` itself is in the same position, whatever its target.
|
|
871
881
|
*
|
|
872
882
|
* @param args - The command, the directory it starts in, and the backend's file read.
|
|
873
883
|
* @returns The command to run and the sentence to report, or the command unchanged.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;
|
|
1
|
+
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAMH,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,iGAAiG;IACjG,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;;;OAQG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,iFAAiF;IACjF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAA;IACX,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB;;;;OAIG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,yFAAyF;IACzF,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAA;IACX,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,2FAA2F;IAC3F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,2CAA2C;IAC3C,OAAO,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,QAAQ,EAAE,YAAY,EAAE,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,IAAI,CAAA;CACf;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,sBAAsB;IACrC,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,4CAA4C;IAC5C,UAAU,EAAE,OAAO,CAAA;IACnB,iDAAiD;IACjD,SAAS,EAAE,OAAO,CAAA;IAClB,kEAAkE;IAClE,KAAK,EAAE,YAAY,CAAA;IACnB,kEAAkE;IAClE,IAAI,EAAE,YAAY,CAAA;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,gGAAgG;IAChG,OAAO,EAAE,MAAM,CAAA;IACf,2CAA2C;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,qEAAqE;IACrE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;OAGG;IACH,KAAK,CAAC,EAAE;QACN,kCAAkC;QAClC,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,6BAA6B;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,8BAA8B;QAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,0BAA0B;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,mBAAmB;QACnB,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,sBAAsB;QACtB,GAAG,CAAC,EAAE,MAAM,CAAA;KACb,CAAA;IACD,wEAAwE;IACxE,KAAK,CAAC,EAAE,IAAI,CAAA;CACb;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC9B,6CAA6C;IAC7C,GAAG,EAAE,MAAM,CAAA;IACX,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,sFAAsF;IACtF,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,mFAAmF;IACnF,MAAM,CAAC,EAAE,IAAI,CAAA;CACd;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAA;IACf,qEAAqE;IACrE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;IAChB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAA;IAChB;;;OAGG;IACH,MAAM,EAAE,WAAW,GAAG,eAAe,CAAA;IACrC,oFAAoF;IACpF,OAAO,CAAC,EAAE,eAAe,EAAE,CAAA;IAC3B,oEAAoE;IACpE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;OAGG;IACH,WAAW,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAAA;IACpD;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,sBAAsB,GAAG,aAAa,GAAG,gBAAgB,GAAG,qBAAqB,CAAA;CAC/F;AAED;;;;;;GAMG;AACH,UAAU,kBAAkB;IAC1B,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAA;IACZ,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6EAA6E;IAC7E,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ;AAED,gGAAgG;AAChG,MAAM,WAAW,aAAa;IAC5B,0FAA0F;IAC1F,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,6FAA6F;IAC7F,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB;;;;OAIG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB;;;;;;;;;;;;;;OAcG;IACH,UAAU,CAAC,EAAE,eAAe,CAAA;IAC5B;;;;;OAKG;IACH,OAAO,EAAE,WAAW,EAAE,CAAA;IACtB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,IAAI,CAAA;IACnB;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACtC;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,gBAAgB,CAAA;IAC9B;;;;;;;OAOG;IACH,iBAAiB,CAAC,EAAE,sBAAsB,CAAA;IAC1C;;;;;OAKG;IACH,SAAS,CAAC,EAAE,cAAc,CAAA;IAC1B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAA;IAClC;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,kBAAkB,EAAE,CAAA;IAC/B;;;;;;;;;;OAUG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAUxC,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAWrC,iDAAiD;AACjD,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC;;;;;;;;;GASG;AACH,eAAO,MAAM,uBAAuB,KAAK,CAAA;AAEzC,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAExC,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,MAAM,CAAA;AAEvC;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAK5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,eAAO,MAAM,oBAAoB,QAAO,MAyvDvC,CAAA;AAuND;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,EAAE,CA+DnE;AA6SD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAKnE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAG5D;AAYD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAGhE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAMzE;AAkDD;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAA;IACZ,4FAA4F;IAC5F,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,2DAA2D;AAC3D,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,eAAe,EAAE,CAAA;IACrC;;;;;OAKG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC;;;;;;OAMG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACtE;AA4aD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EACZ,aAAa,GAAE,SAAS,MAAM,EAAO,GACpC,OAAO,CAcT;AAk4BD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI,CA4C5E;AAgBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAsC1E;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI,CAUhF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoHG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,aAAa,EAAE,EAC/B,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,SAAS,MAAM,EAAO,EACvC,WAAW,GAAE,SAAS,MAAM,EAAO,EACnC,MAAM,GAAE,cAAmB,GAC1B,MAAM,GAAG,IAAI,CA+gBf;AAaD;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAG9D;AAoCD,iFAAiF;AACjF,eAAO,MAAM,oBAAoB,8BAA8B,CAAA;AAwG/D,oGAAoG;AACpG,MAAM,WAAW,qBAAqB;IACpC,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC5C,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAsCjC"}
|
package/dist/trace-artifacts.js
CHANGED
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
* @module
|
|
31
31
|
*/
|
|
32
32
|
import { locatedCommandSegments, statementArgumentEnd } from './command-position.js';
|
|
33
|
+
import { suiteCommandTarget } from './suite-overlap.js';
|
|
33
34
|
import { isPlaywrightRunCommand, redactSecrets } from './utilities.js';
|
|
34
35
|
/** How many traces one read reports, newest first. */
|
|
35
36
|
export const MAX_TRACE_ARTIFACTS = 12;
|
|
@@ -4469,6 +4470,38 @@ export function suiteRecordsTraces(configText) {
|
|
|
4469
4470
|
const text = configText.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/[^\n]*/g, '$1');
|
|
4470
4471
|
return [...text.matchAll(TRACE_SETTING)].some((m) => RECORDING_TRACE_MODES.includes(m[1] ?? ''));
|
|
4471
4472
|
}
|
|
4473
|
+
/** The trace modes that record only when a test is RETRIED (`on-first-retry`, `on-all-retries`). */
|
|
4474
|
+
const RETRY_TRACE_MODES = ['on-first-retry', 'on-all-retries'];
|
|
4475
|
+
/**
|
|
4476
|
+
* The trace mode a config records a RETRY with (`on-first-retry`, `on-all-retries`), or null.
|
|
4477
|
+
*
|
|
4478
|
+
* These modes are not "no trace": a test that fails and is retried leaves the trace of its retry
|
|
4479
|
+
* (`…-chromium-retry1/trace.zip`), which is exactly the artifact a failure's cause is read from.
|
|
4480
|
+
* They record nothing only when the run allows no retry at all — and that is the run this platform
|
|
4481
|
+
* completes with a flag, never the run whose settings are the graded measurement.
|
|
4482
|
+
*
|
|
4483
|
+
* @param configText - The config's source, or '' when none could be read.
|
|
4484
|
+
* @returns The mode as the config spells it, or null when it records no retry trace.
|
|
4485
|
+
*/
|
|
4486
|
+
function suiteTracesOnRetry(configText) {
|
|
4487
|
+
const text = configText.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/[^\n]*/g, '$1');
|
|
4488
|
+
for (const m of text.matchAll(TRACE_SETTING)) {
|
|
4489
|
+
const mode = m[1] ?? '';
|
|
4490
|
+
if (RETRY_TRACE_MODES.includes(mode))
|
|
4491
|
+
return mode;
|
|
4492
|
+
}
|
|
4493
|
+
return null;
|
|
4494
|
+
}
|
|
4495
|
+
/**
|
|
4496
|
+
* Whether the run itself pins `--retries=0` (either spelling): a run that cannot retry records no
|
|
4497
|
+
* retry trace, so it still needs one recorded for it.
|
|
4498
|
+
*
|
|
4499
|
+
* @param command - The shell command.
|
|
4500
|
+
* @returns True when the run allows no retry.
|
|
4501
|
+
*/
|
|
4502
|
+
function namesNoRetries(command) {
|
|
4503
|
+
return /(?:^|[\s;&|(])--retries(?:=|\s+)['"]?0(?![\d.])/.test(command);
|
|
4504
|
+
}
|
|
4472
4505
|
/** The `--trace` flag this platform adds, and the only value it adds it with. */
|
|
4473
4506
|
export const DIAGNOSIS_TRACE_FLAG = '--trace=retain-on-failure';
|
|
4474
4507
|
/**
|
|
@@ -4571,20 +4604,30 @@ async function readRunConfig(command, cwd, readFile) {
|
|
|
4571
4604
|
}
|
|
4572
4605
|
/**
|
|
4573
4606
|
* The command a Playwright run needs to leave a readable trace behind, when the suite's config
|
|
4574
|
-
* would record none.
|
|
4607
|
+
* would record none — except a run that can serve as proof, whose own settings are left alone.
|
|
4575
4608
|
*
|
|
4576
4609
|
* The failing tests' requests are only readable if the run wrote them down (see the module doc),
|
|
4577
4610
|
* and the config is where the decision about that lives — the platform does not edit the suite's
|
|
4578
|
-
* config, so it passes the flag instead, on
|
|
4579
|
-
*
|
|
4580
|
-
*
|
|
4581
|
-
*
|
|
4582
|
-
*
|
|
4583
|
-
*
|
|
4584
|
-
*
|
|
4585
|
-
*
|
|
4586
|
-
*
|
|
4587
|
-
*
|
|
4611
|
+
* config, so it passes the flag instead, on a Playwright run that starts tests, does not already
|
|
4612
|
+
* decide its own `--trace`, and whose config keeps no trace for its failures.
|
|
4613
|
+
*
|
|
4614
|
+
* A run that can serve as PROOF is the exception: the graded measurement is the suite's own
|
|
4615
|
+
* settings, so it keeps its own tracing and retries. That was measured, not assumed — on one
|
|
4616
|
+
* sandbox in X1 xr-molecule-flash-h15 (+46:53 → +49:30) the same build ran a three-test deployed
|
|
4617
|
+
* subset 3/3 timed out under this flag (17.6–17.9 s against a 15 s per-test budget) and the whole
|
|
4618
|
+
* file passed 14/14 without it (10.9–12.1 s). `retain-on-failure` RETAINS only a failing test's
|
|
4619
|
+
* trace (Playwright's `_shouldAbandonTrace` unlinks a passing test's), but it RECORDS every
|
|
4620
|
+
* action of every test, and for a test near its per-test budget that recording is the difference
|
|
4621
|
+
* between passing and timing out. m163 (+24:58) is the failure this flag was added for: its
|
|
4622
|
+
* deployed proof run left only an `error-context.md` because the suite traces
|
|
4623
|
+
* `on-first-retry` and the run had no retries. That need is met without the flag — the graded
|
|
4624
|
+
* deployed run keeps the suite's own retries, so a failing test leaves its retry's trace — and
|
|
4625
|
+
* the platform's re-run note carries `--trace=on` for a run that did leave none.
|
|
4626
|
+
*
|
|
4627
|
+
* Which runs are proof-capable is {@link suiteCommandTarget}'s answer: a run against a deployed
|
|
4628
|
+
* URL. A LOCAL run is never left to its config, because the launcher gives every local run
|
|
4629
|
+
* `--retries=0` (`@molecule/api-ai-tools` `streamingBackgroundCommand`), so its retry trace would
|
|
4630
|
+
* never happen. A run that pins `--retries=0` itself is in the same position, whatever its target.
|
|
4588
4631
|
*
|
|
4589
4632
|
* @param args - The command, the directory it starts in, and the backend's file read.
|
|
4590
4633
|
* @returns The command to run and the sentence to report, or the command unchanged.
|
|
@@ -4599,6 +4642,13 @@ export async function diagnosisTraceCommand(args) {
|
|
|
4599
4642
|
const config = await readRunConfig(args.command, args.cwd, args.readFile);
|
|
4600
4643
|
if (suiteRecordsTraces(config))
|
|
4601
4644
|
return unchanged;
|
|
4645
|
+
// A proof-capable run keeps the suite's own tracing and retries: its retry trace is the artifact
|
|
4646
|
+
// a failure is read from, and recording every action would change what the measurement says.
|
|
4647
|
+
const retryTrace = suiteTracesOnRetry(config);
|
|
4648
|
+
if (retryTrace !== null &&
|
|
4649
|
+
suiteCommandTarget(args.command) !== 'local' &&
|
|
4650
|
+
!namesNoRetries(args.command))
|
|
4651
|
+
return unchanged;
|
|
4602
4652
|
// The flag goes into the Playwright step's own argument list, at the end of it — an option of
|
|
4603
4653
|
// the run itself, whatever the command opens with, whatever pipes or redirects its output, and
|
|
4604
4654
|
// before the `)` that may close a subshell around it. Appended at the end of the whole command
|
|
@@ -4613,9 +4663,12 @@ export async function diagnosisTraceCommand(args) {
|
|
|
4613
4663
|
return unchanged;
|
|
4614
4664
|
return {
|
|
4615
4665
|
command: `${args.command.slice(0, at)} ${DIAGNOSIS_TRACE_FLAG}${args.command.slice(at)}`,
|
|
4616
|
-
change: `Added \`${DIAGNOSIS_TRACE_FLAG}\`:
|
|
4617
|
-
|
|
4618
|
-
|
|
4619
|
-
|
|
4666
|
+
change: `Added \`${DIAGNOSIS_TRACE_FLAG}\`: ` +
|
|
4667
|
+
(retryTrace === null
|
|
4668
|
+
? `the suite's config records no trace for a failure${/trace:/.test(config) ? '' : ' (it sets none)'}`
|
|
4669
|
+
: `the suite records traces only on a retry (\`${retryTrace}\`), and this run allows none`) +
|
|
4670
|
+
", and a failing test's own network log is what the platform reads the cause from. It keeps " +
|
|
4671
|
+
'a trace only for a test that fails; the recording still runs for every action of every test ' +
|
|
4672
|
+
'and slows each one, so measure a timing budget once with `--trace=off` before changing the app.',
|
|
4620
4673
|
};
|
|
4621
4674
|
}
|
package/dist/utilities.d.ts
CHANGED
|
@@ -232,9 +232,11 @@ export declare const PLAYWRIGHT_FAILURES_INLINE_ENV = "PLAYWRIGHT_LIST_PRINT_FAI
|
|
|
232
232
|
*
|
|
233
233
|
* @param command - The command as the executor sent it.
|
|
234
234
|
* @param context - What the caller knows beyond the command: the tests the person's request
|
|
235
|
-
* excludes by name
|
|
235
|
+
* excludes by name, and whether this command IS the platform's graded proof
|
|
236
|
+
* ({@link DiagnosisRunContext}). A `--grep-invert` of exactly those exclusions is the
|
|
236
237
|
* request's own scope, not a diagnosis, so it keeps the suite's retries on a deployed proof
|
|
237
|
-
* (xr-molecule-flash-m170 +33:16)
|
|
238
|
+
* (xr-molecule-flash-m170 +33:16) — and a proof the platform itself composed and launched
|
|
239
|
+
* keeps them whatever its scope, targeted set included (xr-molecule-flash-l48 +26:35).
|
|
238
240
|
* @param reportPath - Where this run should write Playwright's standard `json` report, when the
|
|
239
241
|
* caller keeps one ({@link ./playwright-report.js}). The reporter is added to the run's own
|
|
240
242
|
* reporter set, never in place of one, and its output goes to that file through
|
|
@@ -1058,10 +1060,18 @@ export declare function repeatingFailure(log: string): RepeatingFailure | null;
|
|
|
1058
1060
|
* During a wait the run has not ended (the exit file is read first), so a block beside a `✘` row
|
|
1059
1061
|
* is one the reporter printed inline.
|
|
1060
1062
|
*
|
|
1063
|
+
* A body for a test the request EXCLUDES is not that evidence: its failure does not count for
|
|
1064
|
+
* this request ({@link matchingExcludedTitles}), so a wait that handed it over as the diagnostic
|
|
1065
|
+
* spent a model round trip and 8 k of partial log on a test the same result says to ignore —
|
|
1066
|
+
* exactly what xr-molecule-flash-h13 (+19:06) did twice while the platform's proof was still
|
|
1067
|
+
* walking.
|
|
1068
|
+
*
|
|
1061
1069
|
* @param log - A log, or the slice of one a wait reads.
|
|
1062
|
-
* @
|
|
1070
|
+
* @param excluded - The test titles the request carves out, if the caller knows them.
|
|
1071
|
+
* @returns True when a `✘` row's own test, outside the request's exclusions, has a failure body
|
|
1072
|
+
* under it.
|
|
1063
1073
|
*/
|
|
1064
|
-
export declare function logShowsInlineFailureBodies(log: string): boolean;
|
|
1074
|
+
export declare function logShowsInlineFailureBodies(log: string, excluded?: readonly string[]): boolean;
|
|
1065
1075
|
/** How many of a repeating cause's failures the note lists before it says "and N more". */
|
|
1066
1076
|
export declare const REPEATING_FAILURE_LISTED = 5;
|
|
1067
1077
|
/**
|
|
@@ -1416,6 +1426,10 @@ regressedSpecs?: readonly string[]): string | null;
|
|
|
1416
1426
|
* invocation, in the same directory, narrowed to those tests — or null when the running command
|
|
1417
1427
|
* is not a Playwright run this can narrow.
|
|
1418
1428
|
*
|
|
1429
|
+
* A run against a DEPLOYED URL keeps the suite's own retries and tracing in its re-run
|
|
1430
|
+
* ({@link scopedRerunCommand} `suiteSettings`): the deployed measurement is the one the deploy is
|
|
1431
|
+
* graded on, and neither the platform's `--retries=0` nor its recording `--trace` belongs on it.
|
|
1432
|
+
*
|
|
1419
1433
|
* The `locations` are the paths the run's own log printed, which are relative to the directory
|
|
1420
1434
|
* that run started in, so the composer resolves them there ({@link scopedRerunCommand}): the
|
|
1421
1435
|
* command names that directory unless it already changes into one of its own, because the
|
package/dist/utilities.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../src/utilities.ts"],"names":[],"mappings":"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"}
|
package/dist/utilities.js
CHANGED
|
@@ -649,9 +649,11 @@ function isStatusOnlyStep(step) {
|
|
|
649
649
|
*
|
|
650
650
|
* @param command - The command as the executor sent it.
|
|
651
651
|
* @param context - What the caller knows beyond the command: the tests the person's request
|
|
652
|
-
* excludes by name
|
|
652
|
+
* excludes by name, and whether this command IS the platform's graded proof
|
|
653
|
+
* ({@link DiagnosisRunContext}). A `--grep-invert` of exactly those exclusions is the
|
|
653
654
|
* request's own scope, not a diagnosis, so it keeps the suite's retries on a deployed proof
|
|
654
|
-
* (xr-molecule-flash-m170 +33:16)
|
|
655
|
+
* (xr-molecule-flash-m170 +33:16) — and a proof the platform itself composed and launched
|
|
656
|
+
* keeps them whatever its scope, targeted set included (xr-molecule-flash-l48 +26:35).
|
|
655
657
|
* @param reportPath - Where this run should write Playwright's standard `json` report, when the
|
|
656
658
|
* caller keeps one ({@link ./playwright-report.js}). The reporter is added to the run's own
|
|
657
659
|
* reporter set, never in place of one, and its output goes to that file through
|
|
@@ -787,6 +789,13 @@ export function streamingBackgroundCommand(command, context, reportPath) {
|
|
|
787
789
|
// {@link isDiagnosisRun}'s answer and nobody else's: the platform's notes ask the same
|
|
788
790
|
// function, so a run cannot be a diagnosis to one of them and the whole suite to the other.
|
|
789
791
|
// Which targets are local is {@link suiteCommandTarget}'s answer.
|
|
792
|
+
//
|
|
793
|
+
// A run the PLATFORM composed and launched as the graded proof keeps the suite's retries for
|
|
794
|
+
// the selection it composed — the failures a redeploy re-runs, named as files and `file:line`
|
|
795
|
+
// ({@link isDiagnosisRun} reads the host mark). It does NOT excuse a cap, a title filter or a
|
|
796
|
+
// last-failed set: those read as a diagnosis on that same reading, so the mark cannot turn a
|
|
797
|
+
// walk of part of the suite into the graded measurement. A LOCAL target is never the graded
|
|
798
|
+
// deployed run either, whatever launched it.
|
|
790
799
|
const diagnosis = isDiagnosisRun(lastStep, context);
|
|
791
800
|
const localTarget = suiteCommandTarget(lastStep) === 'local';
|
|
792
801
|
// The last step's reporters: one printer, and it is `list`. Every branch below only ever moves
|
|
@@ -3071,10 +3080,18 @@ export function repeatingFailure(log) {
|
|
|
3071
3080
|
* During a wait the run has not ended (the exit file is read first), so a block beside a `✘` row
|
|
3072
3081
|
* is one the reporter printed inline.
|
|
3073
3082
|
*
|
|
3083
|
+
* A body for a test the request EXCLUDES is not that evidence: its failure does not count for
|
|
3084
|
+
* this request ({@link matchingExcludedTitles}), so a wait that handed it over as the diagnostic
|
|
3085
|
+
* spent a model round trip and 8 k of partial log on a test the same result says to ignore —
|
|
3086
|
+
* exactly what xr-molecule-flash-h13 (+19:06) did twice while the platform's proof was still
|
|
3087
|
+
* walking.
|
|
3088
|
+
*
|
|
3074
3089
|
* @param log - A log, or the slice of one a wait reads.
|
|
3075
|
-
* @
|
|
3090
|
+
* @param excluded - The test titles the request carves out, if the caller knows them.
|
|
3091
|
+
* @returns True when a `✘` row's own test, outside the request's exclusions, has a failure body
|
|
3092
|
+
* under it.
|
|
3076
3093
|
*/
|
|
3077
|
-
export function logShowsInlineFailureBodies(log) {
|
|
3094
|
+
export function logShowsInlineFailureBodies(log, excluded = []) {
|
|
3078
3095
|
const text = log.replace(ANSI_SGR, '');
|
|
3079
3096
|
const failed = new Set(distinctTests(failedTests(text)).map(retrylessTestKey));
|
|
3080
3097
|
if (failed.size === 0)
|
|
@@ -3084,6 +3101,9 @@ export function logShowsInlineFailureBodies(log) {
|
|
|
3084
3101
|
if (m === null)
|
|
3085
3102
|
continue;
|
|
3086
3103
|
const { where, title } = splitTitlePath(m[1] ?? '');
|
|
3104
|
+
const heading = where === '' ? title : `${where} › ${title}`;
|
|
3105
|
+
if (matchingExcludedTitles(heading, excluded).length > 0)
|
|
3106
|
+
continue;
|
|
3087
3107
|
if (failed.has(retrylessTestKey({ where, title, seconds: null })))
|
|
3088
3108
|
return true;
|
|
3089
3109
|
}
|
|
@@ -4264,6 +4284,10 @@ function omittedCausesRecap(omitted, run, excluded) {
|
|
|
4264
4284
|
* invocation, in the same directory, narrowed to those tests — or null when the running command
|
|
4265
4285
|
* is not a Playwright run this can narrow.
|
|
4266
4286
|
*
|
|
4287
|
+
* A run against a DEPLOYED URL keeps the suite's own retries and tracing in its re-run
|
|
4288
|
+
* ({@link scopedRerunCommand} `suiteSettings`): the deployed measurement is the one the deploy is
|
|
4289
|
+
* graded on, and neither the platform's `--retries=0` nor its recording `--trace` belongs on it.
|
|
4290
|
+
*
|
|
4267
4291
|
* The `locations` are the paths the run's own log printed, which are relative to the directory
|
|
4268
4292
|
* that run started in, so the composer resolves them there ({@link scopedRerunCommand}): the
|
|
4269
4293
|
* command names that directory unless it already changes into one of its own, because the
|
|
@@ -4286,7 +4310,12 @@ export function rerunOfRunningSuite(run, locations, excluded = []) {
|
|
|
4286
4310
|
// The run's own directory is the base a relative failure location resolves against: the
|
|
4287
4311
|
// reporter prints it from where the runner started, and Playwright matches file arguments
|
|
4288
4312
|
// against absolute paths (xr-molecule-flash-m118 +16:34, m124 +18:38).
|
|
4289
|
-
const scoped = scopedRerunCommand(run.command, locations, excluded, run.config, run.cwd, run.env ?? []
|
|
4313
|
+
const scoped = scopedRerunCommand(run.command, locations, excluded, run.config, run.cwd, run.env ?? [],
|
|
4314
|
+
// A run against a DEPLOYED URL is re-run with the suite's own retries and tracing: that is
|
|
4315
|
+
// the measurement the deploy is graded on, and the platform's `--retries=0` plus its
|
|
4316
|
+
// `--trace=retain-on-failure` made it a stricter one — on X1 xr-molecule-flash-h15 the
|
|
4317
|
+
// recording alone turned three budget-bound deployed tests into timeouts.
|
|
4318
|
+
{ suiteSettings: suiteCommandTarget(run.command) !== 'local' });
|
|
4290
4319
|
if (scoped === run.command)
|
|
4291
4320
|
return null;
|
|
4292
4321
|
if (!run.cwd || commandSegments(withoutHeredocs(run.command)).some((s) => s.program === 'cd'))
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@molecule/api-ai-tools",
|
|
3
|
-
"version": "1.14.
|
|
3
|
+
"version": "1.14.3",
|
|
4
4
|
"description": "Shared AI agent tools with backend abstraction for sandbox and local execution",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -31,8 +31,8 @@
|
|
|
31
31
|
"@molecule/api-ai": "^1.0.1"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@molecule/api-ai": "1.3.
|
|
35
|
-
"@types/node": "26.
|
|
34
|
+
"@molecule/api-ai": "1.3.5",
|
|
35
|
+
"@types/node": "26.6.5",
|
|
36
36
|
"esbuild": "0.28.2",
|
|
37
37
|
"typescript": "6.0.3",
|
|
38
38
|
"vitest": "4.1.12"
|