@molecule/api-ai-tools 1.16.1 → 1.16.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 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-11-03T19:00:07.291Z
6
+ Generated: 2026-11-04T11:19:09.206Z
7
7
  -->
8
8
 
9
9
  # @molecule/api-ai-tools
@@ -2719,6 +2719,20 @@ function suiteCommandTarget(command: string): string
2719
2719
 
2720
2720
  **Returns:** The target key.
2721
2721
 
2722
+ #### `playwrightCommandTarget(command, last)`
2723
+
2724
+ The target of the actual Playwright step, including inherited exports. URLs and option names
2725
+ in another program or a quoted title cannot decide whether this step is deployed.
2726
+
2727
+ ```typescript
2728
+ function playwrightCommandTarget(command: string, last?: boolean): string
2729
+ ```
2730
+
2731
+ - `command` — The shell command.
2732
+ - `last` — Read the last Playwright invocation, for the background launch rewrite.
2733
+
2734
+ **Returns:** The comparable target key, or local when no target setting is present.
2735
+
2722
2736
  #### `namesSuiteConfig(command)`
2723
2737
 
2724
2738
  Whether a Playwright statement names its own config — the reading {@link withSuiteConfig} and
@@ -2822,6 +2836,27 @@ function withRunEnv(command: string, settings?: readonly RunEnvSetting[]): strin
2822
2836
 
2823
2837
  **Returns:** The command, or the command unchanged when it already carries every setting.
2824
2838
 
2839
+ #### `suiteRunDirectory(command, cwd)`
2840
+
2841
+ The absolute directory the Playwright statement in a command runs in, or null when the command
2842
+ does not say.
2843
+
2844
+ The reporter prints a failing test's file relative to the process directory the runner started
2845
+ in (`../fixtures/…` from a run whose suite lives outside its own tree), so the directory has to
2846
+ come from the command itself: `exec_command`'s `cwd` when it was given, then each `cd` before
2847
+ the runner. Only a literal `cd` is followed — a target holding a variable, a glob or `~`
2848
+ resolves nowhere useful, and a guessed absolute path is worse than the relative one the
2849
+ reporter printed.
2850
+
2851
+ ```typescript
2852
+ function suiteRunDirectory(command: string, cwd?: string | null): string | null
2853
+ ```
2854
+
2855
+ - `command` — The shell command.
2856
+ - `cwd` — The `cwd` the tool was given, when it was.
2857
+
2858
+ **Returns:** The absolute directory, or null.
2859
+
2825
2860
  #### `resolvePlaywrightSelectionPaths(command, cwd)`
2826
2861
 
2827
2862
  Resolve literal `./`/`../` Playwright file selections against the runner's own directory.
@@ -3410,6 +3445,7 @@ function diagnosisTraceCommand(args: {
3410
3445
  command: string
3411
3446
  cwd: string
3412
3447
  readFile: (path: string) => Promise<string>
3448
+ readDir?: ReadConfigDirectory
3413
3449
  }): Promise<DiagnosisTraceRewrite>
3414
3450
  ```
3415
3451
 
@@ -1 +1 @@
1
- {"version":3,"file":"browser-probe.d.ts","sourceRoot":"","sources":["../src/browser-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,iEAAiE;AACjE,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AA6aD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAyB7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,sBAAsB,EAC7B,aAAa,EAAE,MAAM,EACrB,KAAK,UAAQ,GACZ,MAAM,CAaR;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CASlF"}
1
+ {"version":3,"file":"browser-probe.d.ts","sourceRoot":"","sources":["../src/browser-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAIH,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B;AAED,iEAAiE;AACjE,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AA8ND;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAyB7E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,sBAAsB,EAC7B,aAAa,EAAE,MAAM,EACrB,KAAK,UAAQ,GACZ,MAAM,CAaR;AAED;;;;;;;GAOG;AACH,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,sBAAsB,GAAG,MAAM,CASlF"}
@@ -36,6 +36,7 @@
36
36
  *
37
37
  * @module
38
38
  */
39
+ import { codeWithModuleSpecifiers as codeOnly } from './source-code.js';
39
40
  /** A `const|let|var <name> = await [qualifier.]chromium|firefox|webkit.launch(` binding. */
40
41
  const LAUNCH = /(?<![\w$.])(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*(?::[^=\n]+)?=\s*await\s+(?:([A-Za-z_$][\w$]*)\s*\.\s*)?(chromium|firefox|webkit)\s*\.\s*launch\s*\(/g;
41
42
  /** A browser method that does not close the browser, so calling it leaves the handle alive. */
@@ -57,217 +58,6 @@ const ANY_CLEANUP = /\.\s*(?:close|disconnect|dispose)\s*\(|[A-Za-z_$][\w$]*\s*\
57
58
  const CLEANUP_HINT = /cleanup|teardown|close|dispose|shutdown|quit/i;
58
59
  /** The packages whose `chromium`/`firefox`/`webkit` export really launches a browser. */
59
60
  const PLAYWRIGHT_PACKAGE = '(?:playwright-core|playwright|@playwright/test)';
60
- /** The characters after which a `/` starts a regex literal rather than a division. */
61
- const REGEX_AFTER = new Set([
62
- '',
63
- '(',
64
- '[',
65
- '{',
66
- ',',
67
- ';',
68
- ':',
69
- '=',
70
- '!',
71
- '&',
72
- '|',
73
- '?',
74
- '+',
75
- '-',
76
- '*',
77
- '%',
78
- '^',
79
- '~',
80
- '<',
81
- '>',
82
- '}',
83
- ]);
84
- /**
85
- * A source with every comment and every string, template and regex literal blanked to spaces,
86
- * preserving offsets and newlines so a match's position still indexes the original source.
87
- *
88
- * A launch mentioned in prose is not a launch: a review proved scripts that only PRINT
89
- * `const browser = await chromium.launch()` — in a string, a comment and a template literal — and
90
- * a raw substring match refused all of them. Template `${…}` substitutions stay code (a `close()`
91
- * written there is a real cleanup path), nested braces are tracked so the substitution's end is
92
- * found, and regex literals are recognised by the token before them so a quote inside a character
93
- * class cannot blank the rest of the file.
94
- *
95
- * @param source - The script's source.
96
- * @returns The same text with literal/comment spans replaced by spaces.
97
- */
98
- function codeOnly(source) {
99
- const out = source.split('');
100
- const blank = (from, to) => {
101
- for (let i = from; i < to; i++)
102
- if (out[i] !== '\n')
103
- out[i] = ' ';
104
- };
105
- const stack = [{ mode: 'code', braces: 0 }];
106
- const top = () => stack[stack.length - 1];
107
- /** The last non-whitespace CODE character: decides whether a `/` opens a regex. */
108
- let lastCode = '';
109
- /** The last identifier word and the word being read — a module specifier follows `from`. */
110
- let lastWord = '';
111
- let word = '';
112
- /** A specifier (`from 'playwright'`, `require('playwright')`) stays readable to provenance. */
113
- const specifierAhead = () => lastWord === 'from' || lastWord === 'require' || lastWord === 'import';
114
- let i = 0;
115
- while (i < source.length) {
116
- const frame = top();
117
- const char = source[i] ?? '';
118
- const next = source[i + 1];
119
- if (frame.mode === 'code') {
120
- if (char === '/' && next === '/') {
121
- stack.push({ mode: 'line' });
122
- blank(i, i + 2);
123
- i += 2;
124
- continue;
125
- }
126
- if (char === '/' && next === '*') {
127
- stack.push({ mode: 'block' });
128
- blank(i, i + 2);
129
- i += 2;
130
- continue;
131
- }
132
- if (char === "'" || char === '"') {
133
- stack.push({ mode: 'string', quote: char, keep: specifierAhead() });
134
- if (!specifierAhead())
135
- out[i] = ' ';
136
- i += 1;
137
- continue;
138
- }
139
- if (char === '`') {
140
- stack.push({ mode: 'template' });
141
- out[i] = ' ';
142
- i += 1;
143
- continue;
144
- }
145
- if (char === '/' && REGEX_AFTER.has(lastCode)) {
146
- stack.push({ mode: 'regex', inClass: false });
147
- out[i] = ' ';
148
- i += 1;
149
- continue;
150
- }
151
- if (frame.braces > 0) {
152
- if (char === '{')
153
- frame.braces += 1;
154
- else if (char === '}') {
155
- frame.braces -= 1;
156
- if (frame.braces === 0) {
157
- stack.pop();
158
- out[i] = ' ';
159
- i += 1;
160
- continue;
161
- }
162
- }
163
- }
164
- if (/[\w$]/.test(char))
165
- word += char;
166
- else if (word !== '') {
167
- lastWord = word;
168
- word = '';
169
- }
170
- if (!/\s/.test(char))
171
- lastCode = char;
172
- i += 1;
173
- continue;
174
- }
175
- if (frame.mode === 'line') {
176
- if (char === '\n') {
177
- stack.pop();
178
- i += 1;
179
- continue;
180
- }
181
- out[i] = ' ';
182
- i += 1;
183
- continue;
184
- }
185
- if (frame.mode === 'block') {
186
- if (char === '*' && next === '/') {
187
- blank(i, i + 2);
188
- stack.pop();
189
- i += 2;
190
- continue;
191
- }
192
- if (char !== '\n')
193
- out[i] = ' ';
194
- i += 1;
195
- continue;
196
- }
197
- if (frame.mode === 'string') {
198
- if (char === '\\') {
199
- if (!frame.keep)
200
- blank(i, i + 2);
201
- i += 2;
202
- continue;
203
- }
204
- if (char === frame.quote) {
205
- if (!frame.keep)
206
- out[i] = ' ';
207
- stack.pop();
208
- // A string is an operand: the next `/` is division, not a regex.
209
- lastCode = 'x';
210
- i += 1;
211
- continue;
212
- }
213
- if (!frame.keep && char !== '\n')
214
- out[i] = ' ';
215
- i += 1;
216
- continue;
217
- }
218
- if (frame.mode === 'template') {
219
- if (char === '\\') {
220
- blank(i, i + 2);
221
- i += 2;
222
- continue;
223
- }
224
- if (char === '`') {
225
- out[i] = ' ';
226
- stack.pop();
227
- lastCode = 'x';
228
- i += 1;
229
- continue;
230
- }
231
- if (char === '$' && next === '{') {
232
- // The substitution is code: keep it visible and track its closing brace.
233
- blank(i, i + 2);
234
- stack.push({ mode: 'code', braces: 1 });
235
- lastCode = '{';
236
- i += 2;
237
- continue;
238
- }
239
- if (char !== '\n')
240
- out[i] = ' ';
241
- i += 1;
242
- continue;
243
- }
244
- // Regex literal: blank it, honour escapes and character classes, then its flags.
245
- if (char === '\\') {
246
- blank(i, i + 2);
247
- i += 2;
248
- continue;
249
- }
250
- if (char === '[')
251
- frame.inClass = true;
252
- else if (char === ']')
253
- frame.inClass = false;
254
- else if (char === '/' && !frame.inClass) {
255
- out[i] = ' ';
256
- stack.pop();
257
- lastCode = 'x';
258
- i += 1;
259
- while (i < source.length && /[a-z]/i.test(source[i] ?? '')) {
260
- out[i] = ' ';
261
- i += 1;
262
- }
263
- continue;
264
- }
265
- if (char !== '\n')
266
- out[i] = ' ';
267
- i += 1;
268
- }
269
- return out.join('');
270
- }
271
61
  /**
272
62
  * How many `{ … }` blocks are open at one offset of the code-only text.
273
63
  *
@@ -0,0 +1,17 @@
1
+ /** Shared lexical masking for source inspection without executing a module. */
2
+ /**
3
+ * A source with every comment and every string, template and regex literal blanked to spaces,
4
+ * preserving offsets and newlines so a match's position still indexes the original source.
5
+ *
6
+ * A launch mentioned in prose is not a launch: a review proved scripts that only PRINT
7
+ * `const browser = await chromium.launch()` — in a string, a comment and a template literal — and
8
+ * a raw substring match refused all of them. Template `${…}` substitutions stay code (a `close()`
9
+ * written there is a real cleanup path), nested braces are tracked so the substitution's end is
10
+ * found, and regex literals are recognised by the token before them so a quote inside a character
11
+ * class cannot blank the rest of the file.
12
+ *
13
+ * @param source - The script's source.
14
+ * @returns The same text with literal/comment spans replaced by spaces.
15
+ */
16
+ export declare function codeWithModuleSpecifiers(source: string): string;
17
+ //# sourceMappingURL=source-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-code.d.ts","sourceRoot":"","sources":["../src/source-code.ts"],"names":[],"mappings":"AAAA,+EAA+E;AA2B/E;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAwK/D"}
@@ -0,0 +1,214 @@
1
+ /** Shared lexical masking for source inspection without executing a module. */
2
+ /** The characters after which a `/` starts a regex literal rather than a division. */
3
+ const REGEX_AFTER = new Set([
4
+ '',
5
+ '(',
6
+ '[',
7
+ '{',
8
+ ',',
9
+ ';',
10
+ ':',
11
+ '=',
12
+ '!',
13
+ '&',
14
+ '|',
15
+ '?',
16
+ '+',
17
+ '-',
18
+ '*',
19
+ '%',
20
+ '^',
21
+ '~',
22
+ '<',
23
+ '>',
24
+ '}',
25
+ ]);
26
+ /**
27
+ * A source with every comment and every string, template and regex literal blanked to spaces,
28
+ * preserving offsets and newlines so a match's position still indexes the original source.
29
+ *
30
+ * A launch mentioned in prose is not a launch: a review proved scripts that only PRINT
31
+ * `const browser = await chromium.launch()` — in a string, a comment and a template literal — and
32
+ * a raw substring match refused all of them. Template `${…}` substitutions stay code (a `close()`
33
+ * written there is a real cleanup path), nested braces are tracked so the substitution's end is
34
+ * found, and regex literals are recognised by the token before them so a quote inside a character
35
+ * class cannot blank the rest of the file.
36
+ *
37
+ * @param source - The script's source.
38
+ * @returns The same text with literal/comment spans replaced by spaces.
39
+ */
40
+ export function codeWithModuleSpecifiers(source) {
41
+ const out = source.split('');
42
+ const blank = (from, to) => {
43
+ for (let i = from; i < to; i++)
44
+ if (out[i] !== '\n')
45
+ out[i] = ' ';
46
+ };
47
+ const stack = [{ mode: 'code', braces: 0 }];
48
+ const top = () => stack[stack.length - 1];
49
+ /** The last non-whitespace CODE character: decides whether a `/` opens a regex. */
50
+ let lastCode = '';
51
+ /** The last identifier word and the word being read — a module specifier follows `from`. */
52
+ let lastWord = '';
53
+ let word = '';
54
+ /** A specifier (`from 'playwright'`, `require('playwright')`) stays readable to provenance. */
55
+ const specifierAhead = () => (lastWord === 'from' && lastCode === 'm') ||
56
+ (lastWord === 'import' && lastCode === 't') ||
57
+ ((lastWord === 'require' || lastWord === 'import') && lastCode === '(');
58
+ let i = 0;
59
+ while (i < source.length) {
60
+ const frame = top();
61
+ const char = source[i] ?? '';
62
+ const next = source[i + 1];
63
+ if (frame.mode === 'code') {
64
+ if (char === '/' && next === '/') {
65
+ stack.push({ mode: 'line' });
66
+ blank(i, i + 2);
67
+ i += 2;
68
+ continue;
69
+ }
70
+ if (char === '/' && next === '*') {
71
+ stack.push({ mode: 'block' });
72
+ blank(i, i + 2);
73
+ i += 2;
74
+ continue;
75
+ }
76
+ if (char === "'" || char === '"') {
77
+ stack.push({ mode: 'string', quote: char, keep: specifierAhead() });
78
+ if (!specifierAhead())
79
+ out[i] = ' ';
80
+ i += 1;
81
+ continue;
82
+ }
83
+ if (char === '`') {
84
+ stack.push({ mode: 'template' });
85
+ out[i] = ' ';
86
+ i += 1;
87
+ continue;
88
+ }
89
+ if (char === '/' && REGEX_AFTER.has(lastCode)) {
90
+ stack.push({ mode: 'regex', inClass: false });
91
+ out[i] = ' ';
92
+ i += 1;
93
+ continue;
94
+ }
95
+ if (frame.braces > 0) {
96
+ if (char === '{')
97
+ frame.braces += 1;
98
+ else if (char === '}') {
99
+ frame.braces -= 1;
100
+ if (frame.braces === 0) {
101
+ stack.pop();
102
+ out[i] = ' ';
103
+ i += 1;
104
+ continue;
105
+ }
106
+ }
107
+ }
108
+ if (/[\w$]/.test(char))
109
+ word += char;
110
+ else if (word !== '') {
111
+ lastWord = word;
112
+ word = '';
113
+ }
114
+ if (!/\s/.test(char))
115
+ lastCode = char;
116
+ i += 1;
117
+ continue;
118
+ }
119
+ if (frame.mode === 'line') {
120
+ if (char === '\n') {
121
+ stack.pop();
122
+ i += 1;
123
+ continue;
124
+ }
125
+ out[i] = ' ';
126
+ i += 1;
127
+ continue;
128
+ }
129
+ if (frame.mode === 'block') {
130
+ if (char === '*' && next === '/') {
131
+ blank(i, i + 2);
132
+ stack.pop();
133
+ i += 2;
134
+ continue;
135
+ }
136
+ if (char !== '\n')
137
+ out[i] = ' ';
138
+ i += 1;
139
+ continue;
140
+ }
141
+ if (frame.mode === 'string') {
142
+ if (char === '\\') {
143
+ if (!frame.keep)
144
+ blank(i, i + 2);
145
+ i += 2;
146
+ continue;
147
+ }
148
+ if (char === frame.quote) {
149
+ if (!frame.keep)
150
+ out[i] = ' ';
151
+ stack.pop();
152
+ // A string is an operand: the next `/` is division, not a regex.
153
+ lastCode = 'x';
154
+ i += 1;
155
+ continue;
156
+ }
157
+ if (!frame.keep && char !== '\n')
158
+ out[i] = ' ';
159
+ i += 1;
160
+ continue;
161
+ }
162
+ if (frame.mode === 'template') {
163
+ if (char === '\\') {
164
+ blank(i, i + 2);
165
+ i += 2;
166
+ continue;
167
+ }
168
+ if (char === '`') {
169
+ out[i] = ' ';
170
+ stack.pop();
171
+ lastCode = 'x';
172
+ i += 1;
173
+ continue;
174
+ }
175
+ if (char === '$' && next === '{') {
176
+ // The substitution is code: keep it visible and track its closing brace.
177
+ blank(i, i + 2);
178
+ stack.push({ mode: 'code', braces: 1 });
179
+ lastCode = '{';
180
+ i += 2;
181
+ continue;
182
+ }
183
+ if (char !== '\n')
184
+ out[i] = ' ';
185
+ i += 1;
186
+ continue;
187
+ }
188
+ // Regex literal: blank it, honour escapes and character classes, then its flags.
189
+ if (char === '\\') {
190
+ blank(i, i + 2);
191
+ i += 2;
192
+ continue;
193
+ }
194
+ if (char === '[')
195
+ frame.inClass = true;
196
+ else if (char === ']')
197
+ frame.inClass = false;
198
+ else if (char === '/' && !frame.inClass) {
199
+ out[i] = ' ';
200
+ stack.pop();
201
+ lastCode = 'x';
202
+ i += 1;
203
+ while (i < source.length && /[a-z]/i.test(source[i] ?? '')) {
204
+ out[i] = ' ';
205
+ i += 1;
206
+ }
207
+ continue;
208
+ }
209
+ if (char !== '\n')
210
+ out[i] = ' ';
211
+ i += 1;
212
+ }
213
+ return out.join('');
214
+ }
@@ -50,6 +50,14 @@ export declare function withoutHeredocs(command: string): string;
50
50
  * @returns The target key.
51
51
  */
52
52
  export declare function suiteCommandTarget(command: string): string;
53
+ /**
54
+ * The target of the actual Playwright step, including inherited exports. URLs and option names
55
+ * in another program or a quoted title cannot decide whether this step is deployed.
56
+ * @param command - The shell command.
57
+ * @param last - Read the last Playwright invocation, for the background launch rewrite.
58
+ * @returns The comparable target key, or local when no target setting is present.
59
+ */
60
+ export declare function playwrightCommandTarget(command: string, last?: boolean): string;
53
61
  /**
54
62
  * Whether a Playwright statement names its own config — the reading {@link withSuiteConfig} and
55
63
  * {@link scopedRerunCommand} share, so neither adds a second `--config` to a command that has one.
@@ -147,6 +155,22 @@ export interface RunEnvSetting {
147
155
  * @returns The command, or the command unchanged when it already carries every setting.
148
156
  */
149
157
  export declare function withRunEnv(command: string, settings?: readonly RunEnvSetting[]): string;
158
+ /**
159
+ * The absolute directory the Playwright statement in a command runs in, or null when the command
160
+ * does not say.
161
+ *
162
+ * The reporter prints a failing test's file relative to the process directory the runner started
163
+ * in (`../fixtures/…` from a run whose suite lives outside its own tree), so the directory has to
164
+ * come from the command itself: `exec_command`'s `cwd` when it was given, then each `cd` before
165
+ * the runner. Only a literal `cd` is followed — a target holding a variable, a glob or `~`
166
+ * resolves nowhere useful, and a guessed absolute path is worse than the relative one the
167
+ * reporter printed.
168
+ *
169
+ * @param command - The shell command.
170
+ * @param cwd - The `cwd` the tool was given, when it was.
171
+ * @returns The absolute directory, or null.
172
+ */
173
+ export declare function suiteRunDirectory(command: string, cwd?: string | null): string | null;
150
174
  /**
151
175
  * Resolve literal `./`/`../` Playwright file selections against the runner's own directory.
152
176
  *
@@ -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;AA2VD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AA2PD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAa5F;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;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"}
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;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,UAAQ,GAAG,MAAM,CAwB7E;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;AA2VD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AAQD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAiCrF;AAkND;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,+BAA+B,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAa5F;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAA;IAClB,oFAAoF;IACpF,MAAM,EAAE,MAAM,CAAA;IACd;;;OAGG;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"}
@@ -75,6 +75,31 @@ export function suiteCommandTarget(command) {
75
75
  }
76
76
  return 'local';
77
77
  }
78
+ /**
79
+ * The target of the actual Playwright step, including inherited exports. URLs and option names
80
+ * in another program or a quoted title cannot decide whether this step is deployed.
81
+ * @param command - The shell command.
82
+ * @param last - Read the last Playwright invocation, for the background launch rewrite.
83
+ * @returns The comparable target key, or local when no target setting is present.
84
+ */
85
+ export function playwrightCommandTarget(command, last = false) {
86
+ const steps = locatedCommandSegments(command);
87
+ const runners = steps.filter((step) => step.segment?.program === 'playwright' && step.segment.args[0] === 'test');
88
+ const runner = runners.at(last ? -1 : 0);
89
+ if (!runner)
90
+ return suiteCommandTarget(command);
91
+ const inherited = steps
92
+ .slice(0, steps.indexOf(runner))
93
+ .filter((step) => (step.shellScope ?? []).every((scope, i) => scope === runner.shellScope?.[i]) &&
94
+ (step.segment === null || step.segment.program === 'export'));
95
+ const prefix = runner.start !== null && runner.programOffset !== null
96
+ ? command.slice(runner.start, runner.programOffset)
97
+ : runner.assignments.join(' ');
98
+ return suiteCommandTarget([
99
+ prefix,
100
+ ...inherited.reverse().map((step) => step.segment?.text ?? step.assignments.join(' ')),
101
+ ].join('; '));
102
+ }
78
103
  /** Whether a Playwright statement already names its own config (`-c`, `--config`, `--config=`). */
79
104
  const NAMES_CONFIG = /(?:^|\s)(?:-c|--config)(?:\s+|=)/;
80
105
  /**
@@ -619,29 +644,40 @@ const unquoted = (word) => word.replace(/^['"]|['"]$/g, '');
619
644
  * @param cwd - The `cwd` the tool was given, when it was.
620
645
  * @returns The absolute directory, or null.
621
646
  */
622
- function suiteRunDirectory(command, cwd) {
623
- let dir = typeof cwd === 'string' && cwd.startsWith('/') ? posix.normalize(cwd) : null;
624
- for (const { segment } of locatedCommandSegments(command)) {
647
+ export function suiteRunDirectory(command, cwd) {
648
+ const dirs = new Map([
649
+ ['', typeof cwd === 'string' && cwd.startsWith('/') ? posix.normalize(cwd) : null],
650
+ ]);
651
+ for (const located of locatedCommandSegments(command)) {
652
+ const scope = located.shellScope ?? [];
653
+ const key = scope.join('\0');
654
+ if (!dirs.has(key)) {
655
+ let parent = scope.slice(0, -1);
656
+ while (!dirs.has(parent.join('\0')))
657
+ parent = parent.slice(0, -1);
658
+ dirs.set(key, dirs.get(parent.join('\0')) ?? null);
659
+ }
660
+ const { segment } = located;
625
661
  if (segment === null)
626
662
  continue;
627
663
  if (segment.program === 'cd') {
628
- const target = unquoted(segment.args[0] ?? '').replace(/\/+$/, '');
629
- if (!target || target.startsWith('-') || target.startsWith('~') || !LITERAL_DIR.test(target))
630
- return null;
631
- // A shell `cd /abs` DISCARDS the directory before it; only a relative target resolves
632
- // against the one the run started in.
633
- if (target.startsWith('/'))
634
- dir = posix.normalize(target);
635
- else if (dir === null)
636
- return null;
637
- else
638
- dir = posix.normalize(posix.join(dir, target));
639
- continue;
664
+ const words = segment.args.map(unquoted);
665
+ while (words[0] === '--' || words[0] === '-L' || words[0] === '-P')
666
+ words.shift();
667
+ const target = words[0] ?? '';
668
+ const dir = dirs.get(key) ?? null;
669
+ dirs.set(key, !target || target.startsWith('-') || target.startsWith('~') || !LITERAL_DIR.test(target)
670
+ ? null
671
+ : target.startsWith('/')
672
+ ? posix.normalize(target)
673
+ : dir === null
674
+ ? null
675
+ : posix.normalize(posix.join(dir, target)));
640
676
  }
641
677
  if (segment.program === 'playwright' && segment.args[0] === 'test')
642
- break;
678
+ return dirs.get(key) ?? null;
643
679
  }
644
- return dir;
680
+ return null;
645
681
  }
646
682
  /** A failure location's path and its `:line[:column]` suffix, split the way Playwright does. */
647
683
  const LOCATION_LINE = /^(.*?)(:\d+(?::\d+)?)$/;
@@ -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;AA2B9C,OAAO,EAIL,KAAK,mBAAmB,EAEzB,MAAM,wBAAwB,CAAA;AAsC/B;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,KAAK,CAAC,EACnD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAuLD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAwdD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAkInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA0DlF;;;;;;;;;;;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,CA6pGxF"}
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;AA2B9C,OAAO,EAIL,KAAK,mBAAmB,EAEzB,MAAM,wBAAwB,CAAA;AAsC/B;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,UAAU,GAAG,KAAK,CAAC,EACnD,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAuLD;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAahG;AAwdD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAkInE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,QAEA,CAAA;AAE9B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB,QAI6C,CAAA;AA0DlF;;;;;;;;;;;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,CAypGxF"}
package/dist/tools.js CHANGED
@@ -2819,17 +2819,13 @@ export function buildTools(backend, config) {
2819
2819
  };
2820
2820
  }
2821
2821
  }
2822
- // A Playwright run of a suite whose config records no trace gets one recorded anyway
2823
- // (`diagnosisTraceCommand`, trace-artifacts.ts): the failing tests' own network log is what
2824
- // tells a swallowed request error from a selector, and X1 xr-molecule-flash-m100 spent the
2825
- // last minutes of its run hand-writing Chromium probes for what the trace it never wrote
2826
- // down would have said. The whole rule is that function's; the whole-suite proof run gets it
2827
- // too, since a trace is retained only for a failing test (m163's proof run left none and the
2828
- // executor hunted one that did not exist).
2822
+ // Diagnostic runs need readable failure traces. A proof-capable deployed run retains its
2823
+ // own settings; diagnosisTraceCommand owns both decisions and uses the backend's readers.
2829
2824
  const traced = await diagnosisTraceCommand({
2830
2825
  command: rawCommand,
2831
2826
  cwd,
2832
2827
  readFile: (path) => backend.readFile(path),
2828
+ readDir: (path) => backend.readDir(path),
2833
2829
  });
2834
2830
  let command = traced.command;
2835
2831
  // A leading `sleep N; <read of a background task's log>` is a hand-rolled poll, and the
@@ -853,6 +853,11 @@ export declare function suiteRecordsTraces(configText: string): boolean;
853
853
  export declare function namesNoRetries(command: string): boolean;
854
854
  /** The `--trace` flag this platform adds, and the only value it adds it with. */
855
855
  export declare const DIAGNOSIS_TRACE_FLAG = "--trace=retain-on-failure";
856
+ /** The backend's existing directory capability, when available. */
857
+ type ReadConfigDirectory = (path: string) => Promise<Array<{
858
+ name: string;
859
+ type: 'file' | 'directory';
860
+ }>>;
856
861
  /** A command with the trace flag this platform decided to add, and the sentence to report it in. */
857
862
  export interface DiagnosisTraceRewrite {
858
863
  /** The command to run. */
@@ -887,6 +892,16 @@ export interface DiagnosisTraceRewrite {
887
892
  * `--retries=0` (`@molecule/api-ai-tools` `streamingBackgroundCommand`), so its retry trace would
888
893
  * never happen. A run that pins `--retries=0` itself is in the same position, whatever its target.
889
894
  *
895
+ * A proof-capable run is left alone WHATEVER its config traces. `--trace` is a per-run override of
896
+ * the suite's own `use.trace` (Playwright merges the CLI's `use` into every project's), and a test
897
+ * record carries the project settings it ran under: a run with the flag is not the suite's own
898
+ * measurement, so it can never count as deployed proof. Added to a deployed walk, the flag made the
899
+ * walk unprovable, and the platform's own answer — "run the current selection" — was a command this
900
+ * same rewrite then flagged again: X1 P140–P173 had 22 deployed walks the executor started, and
901
+ * not one moved the native proof counts (xr-molecule-flash-l1255 walked 73/73 green twice, at
902
+ * +18.2 and +22.9, and neither counted). A failure in a suite that keeps no trace at all is still
903
+ * readable: the platform's re-run note carries `--trace=on` for a run that left none.
904
+ *
890
905
  * @param args - The command, the directory it starts in, and the backend's file read.
891
906
  * @returns The command to run and the sentence to report, or the command unchanged.
892
907
  */
@@ -894,6 +909,7 @@ export declare function diagnosisTraceCommand(args: {
894
909
  command: string;
895
910
  cwd: string;
896
911
  readFile: (path: string) => Promise<string>;
912
+ readDir?: ReadConfigDirectory;
897
913
  }): Promise<DiagnosisTraceRewrite>;
898
914
  export {};
899
915
  //# sourceMappingURL=trace-artifacts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,8 @@
30
30
  * @module
31
31
  */
32
32
  import { locatedCommandSegments, statementArgumentEnd } from './command-position.js';
33
- import { suiteCommandTarget } from './suite-overlap.js';
33
+ import { codeWithModuleSpecifiers } from './source-code.js';
34
+ import { playwrightCommandTarget, suiteRunDirectory } from './suite-overlap.js';
34
35
  import { isPlaywrightRunCommand, redactSecrets } from './utilities.js';
35
36
  /** How many traces one read reports, newest first. */
36
37
  export const MAX_TRACE_ARTIFACTS = 12;
@@ -4465,8 +4466,13 @@ const TRACE_SETTING = /trace:\s*(?:\{[^{}]*?mode:\s*)?['"]?(on-first-retry|on-al
4465
4466
  * @returns True when the config records traces for failures.
4466
4467
  */
4467
4468
  export function suiteRecordsTraces(configText) {
4468
- const text = configText.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/[^\n]*/g, '$1');
4469
- return [...text.matchAll(TRACE_SETTING)].some((m) => RECORDING_TRACE_MODES.includes(m[1] ?? ''));
4469
+ const settings = traceSettings(configText);
4470
+ return settings.length > 0 && settings.every((m) => RECORDING_TRACE_MODES.includes(m[1] ?? ''));
4471
+ }
4472
+ /** Only trace keys in code can establish recording, never examples in comments or strings. */
4473
+ function traceSettings(text) {
4474
+ const code = codeWithModuleSpecifiers(text);
4475
+ return [...text.matchAll(TRACE_SETTING)].filter((m) => code.startsWith('trace:', m.index));
4470
4476
  }
4471
4477
  /** The trace modes that record only when a test is RETRIED (`on-first-retry`, `on-all-retries`). */
4472
4478
  const RETRY_TRACE_MODES = ['on-first-retry', 'on-all-retries'];
@@ -4482,8 +4488,7 @@ const RETRY_TRACE_MODES = ['on-first-retry', 'on-all-retries'];
4482
4488
  * @returns The mode as the config spells it, or null when it records no retry trace.
4483
4489
  */
4484
4490
  function suiteTracesOnRetry(configText) {
4485
- const text = configText.replace(/\/\*[\s\S]*?\*\//g, '').replace(/(^|[^:])\/\/[^\n]*/g, '$1');
4486
- for (const m of text.matchAll(TRACE_SETTING)) {
4491
+ for (const m of traceSettings(configText)) {
4487
4492
  const mode = m[1] ?? '';
4488
4493
  if (RETRY_TRACE_MODES.includes(mode))
4489
4494
  return mode;
@@ -4499,7 +4504,25 @@ function suiteTracesOnRetry(configText) {
4499
4504
  * @returns True when the run allows no retry.
4500
4505
  */
4501
4506
  export function namesNoRetries(command) {
4502
- return /(?:^|[\s;&|(])--retries(?:=|\s+)['"]?0(?![\d.])/.test(command);
4507
+ return playwrightOption(command, '--retries') === '0';
4508
+ }
4509
+ /** The last value a flag has in the runner's own argument list, never in another statement. */
4510
+ function playwrightOption(command, name) {
4511
+ const args = locatedCommandSegments(command).find(({ segment }) => segment?.program === 'playwright' && segment.args[0] === 'test')?.segment?.args ?? [];
4512
+ const unquote = (word) => word.replace(/^(['"])(.*)\1$/, '$2');
4513
+ let value = null;
4514
+ for (let i = 1; i < args.length; i++) {
4515
+ const word = unquote(args[i]);
4516
+ if (word === '--')
4517
+ break;
4518
+ if (word === name)
4519
+ value = unquote(args[++i] ?? '');
4520
+ else if (word.startsWith(name + '='))
4521
+ value = unquote(word.slice(name.length + 1));
4522
+ else if (/^(?:--config|-c|--grep|-g|--grep-invert|-G|--reporter|--project|--output|--timeout|--repeat-each|--browser|--trace|--retries|--workers|--global-timeout|--max-failures|--update-source-method)$/.test(word))
4523
+ i++;
4524
+ }
4525
+ return value;
4503
4526
  }
4504
4527
  /** The `--trace` flag this platform adds, and the only value it adds it with. */
4505
4528
  export const DIAGNOSIS_TRACE_FLAG = '--trace=retain-on-failure';
@@ -4508,7 +4531,7 @@ export const DIAGNOSIS_TRACE_FLAG = '--trace=retain-on-failure';
4508
4531
  * A run that names one is left exactly as the executor wrote it.
4509
4532
  */
4510
4533
  function namesTraceMode(command) {
4511
- return /(?:^|[\s;&|(])--trace(?:=|\s)/.test(command);
4534
+ return playwrightOption(command, '--trace') !== null;
4512
4535
  }
4513
4536
  /**
4514
4537
  * Where an option of the command's Playwright run belongs, or null when the shell parse cannot
@@ -4544,62 +4567,223 @@ function playwrightOptionOffset(command) {
4544
4567
  }
4545
4568
  return null;
4546
4569
  }
4547
- /** The config paths a candidate directory could hold, in the order Playwright itself looks. */
4570
+ /** Default names in Playwright's own loader order. */
4548
4571
  const CONFIG_NAMES = [
4549
4572
  'playwright.config.ts',
4550
- 'playwright.config.mts',
4551
4573
  'playwright.config.js',
4574
+ 'playwright.config.mts',
4552
4575
  'playwright.config.mjs',
4576
+ 'playwright.config.cts',
4553
4577
  'playwright.config.cjs',
4554
4578
  ];
4555
- /** The directories a command changes into, in order, as it writes them. */
4556
- function cdDirectories(command) {
4579
+ /** Runtime imports only: comments, prose strings and type-only imports are inert. */
4580
+ function relativeImports(text) {
4581
+ const code = codeWithModuleSpecifiers(text);
4557
4582
  const out = [];
4558
- for (const m of command.matchAll(/(?:^|[\s;&|(])cd\s+(?:'([^']+)'|"([^"]+)"|([^\s;&|)]+))/g)) {
4559
- const dir = m[1] ?? m[2] ?? m[3];
4560
- if (dir && !out.includes(dir))
4561
- out.push(dir);
4583
+ for (const m of code.matchAll(/\b(?:import|export)\s+(?!type\b)[^;'"`]*?\bfrom\s*['"](\.\.?\/[^'"\n]+)['"]|\b(?:require|import)\s*\(\s*['"](\.\.?\/[^'"\n]+)['"]\s*\)|\bimport\s*['"](\.\.?\/[^'"\n]+)['"]/g)) {
4584
+ const specifier = m[1] ?? m[2] ?? m[3];
4585
+ if (specifier && !out.includes(specifier))
4586
+ out.push(specifier);
4562
4587
  }
4563
4588
  return out;
4564
4589
  }
4565
- /** A path joined under a base, unless it is already absolute. */
4590
+ /** Only a spread or direct exported pass-through establishes imported settings statically. */
4591
+ function usesImportedSettings(text, specifier) {
4592
+ const code = codeWithModuleSpecifiers(text);
4593
+ const bindings = [];
4594
+ for (const m of code.matchAll(/\b(import|export)\s+(?!type\b)([^;'"`]*?)\s+from\s*(['"])([^'"\n]+)\3/g)) {
4595
+ if (m[4] !== specifier)
4596
+ continue;
4597
+ if (m[1] === 'export')
4598
+ return true;
4599
+ bindings.push(...(m[2].match(/[\w$]+/g) ?? []));
4600
+ }
4601
+ for (const m of code.matchAll(/\b(?:const|let|var)\s+([\w$]+)\s*=\s*\(?\s*(?:await\s+)?(?:require|import)\s*\(\s*(['"])([^'"\n]+)\2/g)) {
4602
+ if (m[3] === specifier)
4603
+ bindings.push(m[1]);
4604
+ }
4605
+ return bindings.some((name) => new RegExp(`(?:\\.\\.\\.\\s*|export\\s+default\\s+(?:defineConfig\\s*\\(\\s*)?|module\\.exports\\s*=\\s*)${name.replace(/[$]/g, '\\$')}\\b`).test(code));
4606
+ }
4607
+ /** Playwright's extension lookups, including NodeNext TypeScript fallbacks. */
4608
+ function moduleNames(target) {
4609
+ const replacements = {
4610
+ '.js': ['.jsx', '.ts', '.tsx'],
4611
+ '.jsx': ['.tsx'],
4612
+ '.cjs': ['.cts'],
4613
+ '.mjs': ['.mts'],
4614
+ '': ['.js', '.ts', '.jsx', '.tsx', '.cjs', '.mjs', '.cts', '.mts'],
4615
+ };
4616
+ const extension = /\.[cm]?[jt]sx?$/.exec(target)?.[0] ?? '';
4617
+ return [
4618
+ target,
4619
+ ...(replacements[extension] ?? []).map((suffix) => `${extension ? target.slice(0, -extension.length) : target}${suffix}`),
4620
+ ];
4621
+ }
4622
+ /** File-read budgets for config candidates and imported modules, respectively. */
4623
+ const CONFIG_READS = 6;
4624
+ const IMPORT_READS = 6;
4625
+ /** The directory part of an absolute path. */
4626
+ function directoryOf(path) {
4627
+ const at = path.lastIndexOf('/');
4628
+ return at <= 0 ? '/' : path.slice(0, at);
4629
+ }
4630
+ /** Resolve a literal path, clamping parent traversals at the filesystem root. */
4631
+ function normalizedPath(path) {
4632
+ const out = [];
4633
+ for (const part of path.split('/')) {
4634
+ if (!part || part === '.')
4635
+ continue;
4636
+ if (part === '..')
4637
+ out.pop();
4638
+ else
4639
+ out.push(part);
4640
+ }
4641
+ return `/${out.join('/')}`;
4642
+ }
4643
+ /** Join a path against its actual runner or importer directory. */
4566
4644
  function under(base, path) {
4567
- if (path.startsWith('/'))
4568
- return path;
4569
- return `${base.replace(/\/+$/, '')}/${path.replace(/^\.\//, '')}`;
4645
+ return normalizedPath(path.startsWith('/') ? path : `${base}/${path}`);
4570
4646
  }
4571
4647
  /**
4572
- * The config a Playwright command reads, read from the backend — the file its own `--config`
4573
- * names (resolved against the directory the command starts in, then against each `cd` it does
4574
- * first), else the first `playwright.config.*` in those directories.
4575
- *
4576
- * Best-effort and bounded: at most four candidate files are read, and a read that fails is a
4577
- * config that records nothing — the caller's `--trace` flag is what makes a missing trace
4578
- * impossible either way.
4579
- *
4580
- * @param command - The shell command.
4581
- * @param cwd - The directory the command starts in.
4582
- * @param readFile - The backend's file read.
4583
- * @returns The config's text, or '' when none could be read.
4648
+ * Read the actual runner's config and its relative imports, two levels deep. Directory metadata
4649
+ * reuses the backend's readDir capability: absent extensions cost no file reads, and directory
4650
+ * imports can resolve their package main or index. Metadata reads are also capped at six.
4651
+ * Without metadata, inspect bounded file candidates.
4652
+ * No supplied source is executed. An unreadable or unresolved setting cannot establish tracing.
4584
4653
  */
4585
- async function readRunConfig(command, cwd, readFile) {
4586
- const bases = [cwd, ...cdDirectories(command).map((dir) => under(cwd, dir))].slice(0, 2);
4587
- const config = /(?:^|[\s;&|(])--config(?:=|\s+)(?:'([^']+)'|"([^"]+)"|([^\s;&|)]+))/.exec(command);
4588
- const explicit = config?.[1] ?? config?.[2] ?? config?.[3] ?? null;
4589
- const candidates = explicit
4590
- ? bases.map((base) => under(base, explicit))
4591
- : bases.flatMap((base) => CONFIG_NAMES.map((name) => `${base.replace(/\/+$/, '')}/${name}`));
4592
- for (const candidate of candidates.slice(0, 4)) {
4654
+ async function readRunConfig(command, cwd, readFile, readDir) {
4655
+ const base = suiteRunDirectory(command, cwd);
4656
+ if (base === null)
4657
+ return '';
4658
+ const args = locatedCommandSegments(command).find(({ segment }) => segment?.program === 'playwright' && segment.args[0] === 'test')?.segment?.args ?? [];
4659
+ const unquote = (s) => s.replace(/^(['"])(.*)\1$/, '$2');
4660
+ let explicit = null;
4661
+ for (let i = 1; i < args.length; i++) {
4662
+ const arg = unquote(args[i]);
4663
+ if (arg === '--')
4664
+ break;
4665
+ if (arg === '--config' || arg === '-c')
4666
+ explicit = unquote(args[++i] ?? '');
4667
+ else if (arg.startsWith('--config='))
4668
+ explicit = unquote(arg.slice('--config='.length));
4669
+ else if (/^-c.+/.test(arg))
4670
+ explicit = unquote(arg.slice(2));
4671
+ }
4672
+ const directories = new Map();
4673
+ const list = async (path) => {
4674
+ if (!directories.has(path)) {
4675
+ if (directories.size >= 6)
4676
+ return null;
4677
+ try {
4678
+ directories.set(path, readDir ? await readDir(path) : null);
4679
+ }
4680
+ catch (_error) {
4681
+ // Unavailable metadata leaves the bounded file-only fallback.
4682
+ directories.set(path, null);
4683
+ }
4684
+ }
4685
+ return directories.get(path) ?? null;
4686
+ };
4687
+ const seen = new Set();
4688
+ let configReads = 0, importReads = 0;
4689
+ const read = async (path, imported) => {
4690
+ path = normalizedPath(path);
4691
+ if (seen.has(path) || (imported ? importReads >= IMPORT_READS : configReads >= CONFIG_READS))
4692
+ return null;
4693
+ seen.add(path);
4694
+ if (imported)
4695
+ importReads++;
4696
+ else
4697
+ configReads++;
4593
4698
  try {
4594
- const text = await readFile(candidate);
4595
- if (text)
4596
- return text;
4699
+ const text = await readFile(path);
4700
+ return text ? { path, text } : null;
4597
4701
  }
4598
4702
  catch (_error) {
4599
- continue;
4703
+ // Best-effort diagnosis: unreadable source is no evidence that a trace will exist.
4704
+ return null;
4600
4705
  }
4706
+ };
4707
+ const existing = async (names) => {
4708
+ const entries = await list(directoryOf(names[0]));
4709
+ return entries === null
4710
+ ? names
4711
+ : names.filter((name) => entries.some((entry) => entry.type === 'file' && entry.name === name.slice(name.lastIndexOf('/') + 1)));
4712
+ };
4713
+ const configPath = explicit ? under(base, explicit) : base;
4714
+ const isConfigDirectory = !explicit ||
4715
+ configPath === '/' ||
4716
+ (await list(directoryOf(configPath)))?.some((entry) => entry.type === 'directory' &&
4717
+ entry.name === configPath.slice(configPath.lastIndexOf('/') + 1));
4718
+ const candidates = isConfigDirectory
4719
+ ? CONFIG_NAMES.map((name) => under(configPath, name))
4720
+ : [configPath];
4721
+ let found = null;
4722
+ for (const candidate of isConfigDirectory ? await existing(candidates) : candidates) {
4723
+ found = await read(candidate, false);
4724
+ if (found)
4725
+ break;
4601
4726
  }
4602
- return '';
4727
+ if (!found)
4728
+ return '';
4729
+ const resolve = async (target, depth = 0) => {
4730
+ for (const name of await existing(moduleNames(target))) {
4731
+ const file = await read(name, true);
4732
+ if (file)
4733
+ return file;
4734
+ }
4735
+ const entries = readDir ? await list(target) : null;
4736
+ if (!entries || depth > 1)
4737
+ return null;
4738
+ if (entries.some((entry) => entry.name === 'package.json' && entry.type === 'file')) {
4739
+ const metadata = await read(under(target, 'package.json'), true);
4740
+ let main;
4741
+ try {
4742
+ main = metadata ? JSON.parse(metadata.text).main : null;
4743
+ }
4744
+ catch (_error) {
4745
+ // Invalid package metadata cannot establish inherited tracing.
4746
+ return null;
4747
+ }
4748
+ if (typeof main === 'string' && main && under(target, main) !== target) {
4749
+ const file = await resolve(under(target, main), depth + 1);
4750
+ if (file)
4751
+ return file;
4752
+ }
4753
+ }
4754
+ for (const name of await existing(moduleNames(under(target, 'index')))) {
4755
+ const file = await read(name, true);
4756
+ if (file)
4757
+ return file;
4758
+ }
4759
+ return null;
4760
+ };
4761
+ const imports = new Map();
4762
+ let level = [found];
4763
+ for (let depth = 0; depth < 2 && level.length; depth++) {
4764
+ const next = [];
4765
+ for (const file of level) {
4766
+ for (const specifier of relativeImports(file.text)) {
4767
+ const imported = await resolve(under(directoryOf(file.path), specifier));
4768
+ if (!imported)
4769
+ continue;
4770
+ if (usesImportedSettings(file.text, specifier)) {
4771
+ const children = imports.get(file.path) ?? [];
4772
+ children.push(imported);
4773
+ imports.set(file.path, children);
4774
+ }
4775
+ next.push(imported);
4776
+ }
4777
+ }
4778
+ level = next;
4779
+ }
4780
+ const effective = (file) => {
4781
+ // Each wrapper's explicit trace wins over the base it spreads, at every import level.
4782
+ if (traceSettings(file.text).length)
4783
+ return file.text;
4784
+ return [file.text, ...(imports.get(file.path) ?? []).map(effective)].join('\n');
4785
+ };
4786
+ return effective(found);
4603
4787
  }
4604
4788
  /**
4605
4789
  * The command a Playwright run needs to leave a readable trace behind, when the suite's config
@@ -4628,6 +4812,16 @@ async function readRunConfig(command, cwd, readFile) {
4628
4812
  * `--retries=0` (`@molecule/api-ai-tools` `streamingBackgroundCommand`), so its retry trace would
4629
4813
  * never happen. A run that pins `--retries=0` itself is in the same position, whatever its target.
4630
4814
  *
4815
+ * A proof-capable run is left alone WHATEVER its config traces. `--trace` is a per-run override of
4816
+ * the suite's own `use.trace` (Playwright merges the CLI's `use` into every project's), and a test
4817
+ * record carries the project settings it ran under: a run with the flag is not the suite's own
4818
+ * measurement, so it can never count as deployed proof. Added to a deployed walk, the flag made the
4819
+ * walk unprovable, and the platform's own answer — "run the current selection" — was a command this
4820
+ * same rewrite then flagged again: X1 P140–P173 had 22 deployed walks the executor started, and
4821
+ * not one moved the native proof counts (xr-molecule-flash-l1255 walked 73/73 green twice, at
4822
+ * +18.2 and +22.9, and neither counted). A failure in a suite that keeps no trace at all is still
4823
+ * readable: the platform's re-run note carries `--trace=on` for a run that left none.
4824
+ *
4631
4825
  * @param args - The command, the directory it starts in, and the backend's file read.
4632
4826
  * @returns The command to run and the sentence to report, or the command unchanged.
4633
4827
  */
@@ -4638,16 +4832,15 @@ export async function diagnosisTraceCommand(args) {
4638
4832
  // Only a Playwright run leaves a trace to read.
4639
4833
  if (!isPlaywrightRunCommand(args.command))
4640
4834
  return unchanged;
4641
- const config = await readRunConfig(args.command, args.cwd, args.readFile);
4835
+ // A proof-capable run keeps the suite's own tracing and retries: the graded measurement is the
4836
+ // suite's own settings, and a flag here would make the run's records unprovable (see above). No
4837
+ // config needs reading to know that.
4838
+ if (playwrightCommandTarget(args.command) !== 'local' && !namesNoRetries(args.command))
4839
+ return unchanged;
4840
+ const config = await readRunConfig(args.command, args.cwd, args.readFile, args.readDir);
4642
4841
  if (suiteRecordsTraces(config))
4643
4842
  return unchanged;
4644
- // A proof-capable run keeps the suite's own tracing and retries: its retry trace is the artifact
4645
- // a failure is read from, and recording every action would change what the measurement says.
4646
4843
  const retryTrace = suiteTracesOnRetry(config);
4647
- if (retryTrace !== null &&
4648
- suiteCommandTarget(args.command) !== 'local' &&
4649
- !namesNoRetries(args.command))
4650
- return unchanged;
4651
4844
  // The flag goes into the Playwright step's own argument list, at the end of it — an option of
4652
4845
  // the run itself, whatever the command opens with, whatever pipes or redirects its output, and
4653
4846
  // before the `)` that may close a subshell around it. Appended at the end of the whole command
@@ -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
@@ -9,7 +9,7 @@ import { commandSegments, executedCommands, locatedCommandSegments, statementArg
9
9
  import { classifyRunFailure } from './failure-kind.js';
10
10
  import { commandRunsNoTests } from './no-test-run.js';
11
11
  import { PLAYWRIGHT_REPORT_ENV } from './playwright-report.js';
12
- import { isDiagnosisRun, resolvePlaywrightSelectionPaths, scopedRerunCommand, suiteCommandTarget, suiteRunInTheWay, withoutHeredocs, withSuiteConfig, } from './suite-overlap.js';
12
+ import { isDiagnosisRun, playwrightCommandTarget, resolvePlaywrightSelectionPaths, scopedRerunCommand, suiteCommandTarget, suiteRunInTheWay, withoutHeredocs, withSuiteConfig, } from './suite-overlap.js';
13
13
  /**
14
14
  * Shell-safe quoting using single quotes. Unlike JSON.stringify (double quotes),
15
15
  * single-quoted strings prevent command substitution ($(), backticks) and variable expansion.
@@ -780,27 +780,13 @@ export function streamingBackgroundCommand(command, context, reportPath) {
780
780
  out = `${out.slice(0, at)} ${flag}${out.slice(at)}`;
781
781
  return true;
782
782
  };
783
- // A diagnosis or a re-run (capped, last-failed, grepped, or named files) walks each failure
784
- // once: the suite's own `retries` doubled every failure of X1 flash-m71's first whole run,
785
- // which had dropped the `--retries=0` it used one command earlier. A whole run whose TARGET is
786
- // local — its env names `localhost`/`127.0.0.1`/`0.0.0.0`, or names no URL at all, as the
787
- // wrapper config's default does — is not the proof run either and walks them once too:
788
- // xr-molecule-flash-m155 (+11:34) spent 10 minutes on its first local whole run, and the
789
- // suite's `retries: 1` walked each of its 68 failures a second time (0 flaky) for nothing.
790
- // The suite's retries are kept only for a run that names a non-local URL — the deployed proof
791
- // (xr-molecule-flash-m89), where they absorb a network blip. Which runs are diagnoses is
792
- // {@link isDiagnosisRun}'s answer and nobody else's: the platform's notes ask the same
793
- // function, so a run cannot be a diagnosis to one of them and the whole suite to the other.
794
- // Which targets are local is {@link suiteCommandTarget}'s answer.
795
- //
796
- // A run the PLATFORM composed and launched as the graded proof keeps the suite's retries for
797
- // the selection it composed — the failures a redeploy re-runs, named as files and `file:line`
798
- // ({@link isDiagnosisRun} reads the host mark). It does NOT excuse a cap, a title filter or a
799
- // last-failed set: those read as a diagnosis on that same reading, so the mark cannot turn a
800
- // walk of part of the suite into the graded measurement. A LOCAL target is never the graded
801
- // deployed run either, whatever launched it.
783
+ // Local walks diagnose each failure once. Deployed walks retain the suite's retries even when
784
+ // narrowed or capped: a native test record hashes retries, so changing them would prevent proof
785
+ // credit. Explicit executor flags remain the executor's choice.
802
786
  const diagnosis = isDiagnosisRun(lastStep, context);
803
- const localTarget = suiteCommandTarget(lastStep) === 'local';
787
+ // A narrowed deployed selection can count as native proof too. Its retries must remain the
788
+ // suite's own; only local diagnosis runs receive an automatic retry override.
789
+ const localTarget = playwrightCommandTarget(out, true) === 'local';
804
790
  // The last step's reporters: one printer, and it is `list`. Every branch below only ever moves
805
791
  // the command TO that shape — a reporter set is never left with two printers in it.
806
792
  const reporters = finalPlaywrightRun ? lastReporterFlag(lastStep) : null;
@@ -906,7 +892,7 @@ export function streamingBackgroundCommand(command, context, reportPath) {
906
892
  'summary at the end — so a run that is still walking already says what its failures are, ' +
907
893
  'and you need not wait for it to end to start on them.');
908
894
  }
909
- if (finalPlaywrightRun && (diagnosis || localTarget) && !/--retries\b/.test(lastStep)) {
895
+ if (finalPlaywrightRun && localTarget && !/--retries\b/.test(lastStep)) {
910
896
  // The reason named is the one that fired: a narrowed diagnosis against a DEPLOYED URL is not a
911
897
  // local run, and calling it one (xr-molecule-flash-m170's note did) reads as the platform having
912
898
  // misread the target.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@molecule/api-ai-tools",
3
- "version": "1.16.1",
3
+ "version": "1.16.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",