@molecule/api-ai-tools 1.14.4 → 1.14.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/README.md +211 -184
  2. package/dist/browser-probe.d.ts +4 -4
  3. package/dist/browser-probe.d.ts.map +1 -1
  4. package/dist/browser-probe.js +5 -5
  5. package/dist/command-position.d.ts +15 -16
  6. package/dist/command-position.d.ts.map +1 -1
  7. package/dist/command-position.js +21 -23
  8. package/dist/cut-run.d.ts +9 -9
  9. package/dist/cut-run.js +6 -6
  10. package/dist/failure-kind.d.ts +6 -6
  11. package/dist/failure-kind.js +6 -6
  12. package/dist/index.d.ts +2 -2
  13. package/dist/index.js +2 -2
  14. package/dist/inline-script.d.ts +5 -5
  15. package/dist/inline-script.js +6 -6
  16. package/dist/line-diff.d.ts +2 -3
  17. package/dist/line-diff.d.ts.map +1 -1
  18. package/dist/line-diff.js +2 -3
  19. package/dist/no-test-run.d.ts +5 -5
  20. package/dist/no-test-run.d.ts.map +1 -1
  21. package/dist/no-test-run.js +9 -8
  22. package/dist/output-filter.d.ts +2 -2
  23. package/dist/output-filter.js +2 -2
  24. package/dist/pipeline-exit-note.d.ts +1 -1
  25. package/dist/pipeline-exit-note.js +1 -1
  26. package/dist/playwright-report.d.ts +1 -1
  27. package/dist/playwright-report.js +1 -1
  28. package/dist/server-command.d.ts +2 -2
  29. package/dist/server-command.js +2 -2
  30. package/dist/sleep-peek.d.ts +1 -1
  31. package/dist/sleep-peek.js +1 -1
  32. package/dist/suite-overlap.d.ts +24 -25
  33. package/dist/suite-overlap.d.ts.map +1 -1
  34. package/dist/suite-overlap.js +41 -43
  35. package/dist/tools.d.ts +26 -28
  36. package/dist/tools.d.ts.map +1 -1
  37. package/dist/tools.js +98 -69
  38. package/dist/trace-artifacts.d.ts +64 -65
  39. package/dist/trace-artifacts.d.ts.map +1 -1
  40. package/dist/trace-artifacts.js +73 -75
  41. package/dist/types.d.ts +5 -5
  42. package/dist/utilities.d.ts +107 -91
  43. package/dist/utilities.d.ts.map +1 -1
  44. package/dist/utilities.js +191 -143
  45. package/package.json +2 -2
@@ -2,7 +2,7 @@
2
2
  * A standalone Playwright probe that launches a browser and never closes it — the
3
3
  * resource-lifecycle hang `exec_command` did not yet classify.
4
4
  *
5
- * X1 xr-molecule-flash-m257 (+10:44 → +15:34) ran
5
+ * A real probe ran
6
6
  * `cd /workspace/my-app/app && node /workspace/.mol-scratch/fav-probe.mjs 2>&1 | tail -5`. The
7
7
  * 30-line script binds `const browser = await chromium.launch()`, walks a real page, reaches its
8
8
  * last `console.log`, and ends without `browser.close()`, `disconnect()`, a disposal scope or
@@ -28,8 +28,8 @@
28
28
  * `import`), or a persistent-process intent (`launchServer`, `connect`, a server `.listen`, a
29
29
  * timer or signal handler).
30
30
  *
31
- * Anything ambiguous is left alone. A wrong refusal costs a valid probe — the review that found
32
- * the m257 leak also proved five harmless scripts a raw substring match would refuse (a local
31
+ * Anything ambiguous is left alone. A wrong refusal costs a valid probe — a raw substring match
32
+ * would also refuse five harmless scripts (a local
33
33
  * engine stub, the launch text in a string, in a comment, in a template literal, and inside a
34
34
  * function that is never called) — and a missed leak costs the same budget the tool already had.
35
35
  * This is a lifecycle diagnostic, never an egress or security gate.
@@ -38,7 +38,7 @@
38
38
  */
39
39
  /** A browser launch bound to a variable, proven to have no cleanup path. */
40
40
  export interface BrowserProbeLeak {
41
- /** The variable the launched browser is bound to (`browser` in the m257 probe). */
41
+ /** The variable the launched browser is bound to (`browser` in the probe above). */
42
42
  readonly variable: string;
43
43
  }
44
44
  /** A foreground command that directly executes such a script. */
@@ -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,mFAAmF;IACnF,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;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"}
@@ -2,7 +2,7 @@
2
2
  * A standalone Playwright probe that launches a browser and never closes it — the
3
3
  * resource-lifecycle hang `exec_command` did not yet classify.
4
4
  *
5
- * X1 xr-molecule-flash-m257 (+10:44 → +15:34) ran
5
+ * A real probe ran
6
6
  * `cd /workspace/my-app/app && node /workspace/.mol-scratch/fav-probe.mjs 2>&1 | tail -5`. The
7
7
  * 30-line script binds `const browser = await chromium.launch()`, walks a real page, reaches its
8
8
  * last `console.log`, and ends without `browser.close()`, `disconnect()`, a disposal scope or
@@ -28,8 +28,8 @@
28
28
  * `import`), or a persistent-process intent (`launchServer`, `connect`, a server `.listen`, a
29
29
  * timer or signal handler).
30
30
  *
31
- * Anything ambiguous is left alone. A wrong refusal costs a valid probe — the review that found
32
- * the m257 leak also proved five harmless scripts a raw substring match would refuse (a local
31
+ * Anything ambiguous is left alone. A wrong refusal costs a valid probe — a raw substring match
32
+ * would also refuse five harmless scripts (a local
33
33
  * engine stub, the launch text in a string, in a comment, in a template literal, and inside a
34
34
  * function that is never called) — and a missed leak costs the same budget the tool already had.
35
35
  * This is a lifecycle diagnostic, never an egress or security gate.
@@ -85,7 +85,7 @@ const REGEX_AFTER = new Set([
85
85
  * A source with every comment and every string, template and regex literal blanked to spaces,
86
86
  * preserving offsets and newlines so a match's position still indexes the original source.
87
87
  *
88
- * A launch mentioned in prose is not a launch: the m257 review proved scripts that only PRINT
88
+ * A launch mentioned in prose is not a launch: a review proved scripts that only PRINT
89
89
  * `const browser = await chromium.launch()` — in a string, a comment and a template literal — and
90
90
  * a raw substring match refused all of them. Template `${…}` substitutions stay code (a `close()`
91
91
  * written there is a real cleanup path), nested braces are tracked so the substitution's end is
@@ -308,7 +308,7 @@ function topLevelThrow(code) {
308
308
  * This is the conservative guard for the one shape the lexer cannot read: a regex literal whose
309
309
  * opening `/` follows a `)` (`if (x) /…/.test(s)`) reads as division, so the launch text inside it
310
310
  * survives blanking. A mid-line top-level launch is a deliberate false negative; every positive
311
- * shape (the m257 probe, `import * as pw` + `pw.chromium.launch`, a destructured require) declares
311
+ * shape (the probe above, `import * as pw` + `pw.chromium.launch`, a destructured require) declares
312
312
  * at line start.
313
313
  *
314
314
  * @param code - The {@link codeOnly} text.
@@ -3,12 +3,11 @@
3
3
  * arguments to something else.
4
4
  *
5
5
  * Every classifier that read a command as "this runs the suite" matched the runner's NAME
6
- * anywhere in the text, so a runner named in an argument was read as an invocation: X1
7
- * xr-molecule-flash-m81 (+20:03) sent
6
+ * anywhere in the text, so a runner named in an argument was read as an invocation:
8
7
  * `cd /workspace/fixtures/realworld/specs/api && ls && head -30 run-api-tests-hurl.sh` — two
9
8
  * reads of a file that was already there — and the suite-overlap hold answered "a Playwright
10
- * suite is already running against this app and database … wait for it", costing a minute of
11
- * forced idling on a command that writes nothing and runs nothing. `cat`, `grep`, `sed -n`,
9
+ * suite is already running against this app and database … wait for it", idling a command that
10
+ * writes nothing and runs nothing. `cat`, `grep`, `sed -n`,
12
11
  * `wc`, `ls` and `git show` of a runner script are the same shape.
13
12
  *
14
13
  * So this parser answers it in one place, for every caller: split the command at its pipeline
@@ -28,7 +27,7 @@
28
27
  * `end`, `programOffset` and `assignmentOffset` are the offsets a caller splices at. They are
29
28
  * token positions from this walk, never a search for re-joined text — the words are joined back
30
29
  * with single spaces for matching, so `command.indexOf(segment.text)` fails on irregular spacing,
31
- * on grouping braces, and on anything a heredoc body shifts (xr-molecule-flash-m105 +08:12).
30
+ * on grouping braces, and on anything a heredoc body shifts.
32
31
  *
33
32
  * @module
34
33
  */
@@ -110,8 +109,8 @@ export declare function commandSubstitutions(command: string): string[];
110
109
  * not a text match. The command-position parser already knows what runs and what is only quoted
111
110
  * data ({@link commandSegments}), so a pattern never reads a `|` inside a quoted grep alternation
112
111
  * as a pipeline: `grep -E "USER CALLS|ENV|BUTTON" app.log` prints log lines, and the `ENV` in
113
- * its pattern started nothing (X0 xr-molecule-flash-m331 blocked exactly that call as an
114
- * environment dump). What the shell DOES run stays visible through the same walk: a bare
112
+ * its pattern starts nothing — a text match would block exactly that call as an environment
113
+ * dump. What the shell DOES run stays visible through the same walk: a bare
115
114
  * launcher (`ls | env`), a shell string (`bash -c 'env'`), a substitution
116
115
  * (`echo "$(printenv)"`) and a nested one (`sh -c 'x; env'`) are all commands here.
117
116
  *
@@ -131,7 +130,7 @@ export declare function executedCommands(command: string): ExecutedCommand[];
131
130
  * executor's own command in more than one place, and a value written for the runner belongs in
132
131
  * the runner's own statement: `APP_BASE=https://… cd app && npx playwright test` sets the variable
133
132
  * for `cd` alone, so the Playwright config falls back to the local app while the command line
134
- * still names the deployed host (xr-molecule-flash-m103 +28:08).
133
+ * still names the deployed host.
135
134
  */
136
135
  export interface LocatedCommandSegment {
137
136
  /**
@@ -196,7 +195,7 @@ export interface LocatedCommandSegment {
196
195
  * The file this statement sends its own output to (`> out.log`, `>> log`, `&> run.log`,
197
196
  * `| tee file`), or null. Only a redirect written at the command's own level counts: one
198
197
  * inside a `( … )` / `{ … }` group writes through that group, and one that feeds a heredoc's
199
- * file (`cat > cfg.ts <<'EOF'`) is writing a config (X1 flash-m44, flash-m136).
198
+ * file (`cat > cfg.ts <<'EOF'`) is writing a config.
200
199
  */
201
200
  redirectTarget: string | null;
202
201
  }
@@ -216,8 +215,8 @@ export declare function locatedCommandSegments(command: string): LocatedCommandS
216
215
  * redirection (`… 2>&1`), and a statement can sit inside a group whose closer belongs to the
217
216
  * shell, not to the words (`( … )`, `{ …; }`). Appending after that closer is a different shell
218
217
  * word that the group has already closed — `… --config=x 2>&1) --reporter=list` is
219
- * `sh: Syntax error: word unexpected`, which killed a backgrounded walk at once and pushed the
220
- * model off the platform's runner shape (xr-molecule-flash-m129 +34:29). Write the option where
218
+ * `sh: Syntax error: word unexpected`, which kills a backgrounded walk at once and pushes the
219
+ * model off the platform's runner shape. Write the option where
221
220
  * the program's own arguments end and the rest of the statement still parses:
222
221
  * `… --config=x --reporter=list 2>&1)`.
223
222
  *
@@ -239,8 +238,8 @@ export declare function statementArgumentEnd(command: string, start: number | nu
239
238
  * parses its last stage as `tail` with the argument `-25)`. {@link LocatedCommandSegment.end}
240
239
  * therefore says one past the `)`, and a caller cutting that stage out of the command takes the
241
240
  * group's closer with it — the rewritten command is then `( … 2>&1`, which no shell parses
242
- * (xr-molecule-flash-m418 +23:31: a heredoc config plus a parenthesized Playwright pipeline came
243
- * back as `end of file unexpected` from the background runner).
241
+ * (a heredoc config plus a parenthesized Playwright pipeline came back as `end of file
242
+ * unexpected` from the background runner).
244
243
  *
245
244
  * The parse's own group depths answer which closers belong to an enclosing group: the depth a
246
245
  * statement was written at is its first character's depth (an opener is recorded at the depth
@@ -285,9 +284,9 @@ export declare function commandTimeoutSeconds(command: string): number | null;
285
284
  * The platform moves a run to the background precisely because its own bound cannot fit this
286
285
  * tool's ceiling, and a background task has no ceiling — its wait is bounded by `wait_for_task`
287
286
  * and the turn's deadline. The `timeout N` an executor wrote to fit the ceiling therefore keeps
288
- * killing the run at N in the background, where nothing needed it: X1 xr-molecule-flash-m143
289
- * (+24:45) wrote `timeout 280` for a 31-test walk, the tool backgrounded it, and the prefix stopped
290
- * the walk with no tally — then the cut sentence told the executor to "run it in the background",
287
+ * killing the run at N in the background, where nothing needed it: an executor wrote
288
+ * `timeout 280` for a 31-test walk, the tool backgrounded it, and the prefix stopped the walk
289
+ * with no tally — then the cut sentence told the executor to "run it in the background",
291
290
  * which is where it already was.
292
291
  *
293
292
  * The wrapper is found by the same parse every other command reader uses ({@link commandStart}):
@@ -1 +1 @@
1
- {"version":3,"file":"command-position.d.ts","sourceRoot":"","sources":["../src/command-position.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-position.d.ts","sourceRoot":"","sources":["../src/command-position.ts"],"names":[],"mappings":"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"}
@@ -3,12 +3,11 @@
3
3
  * arguments to something else.
4
4
  *
5
5
  * Every classifier that read a command as "this runs the suite" matched the runner's NAME
6
- * anywhere in the text, so a runner named in an argument was read as an invocation: X1
7
- * xr-molecule-flash-m81 (+20:03) sent
6
+ * anywhere in the text, so a runner named in an argument was read as an invocation:
8
7
  * `cd /workspace/fixtures/realworld/specs/api && ls && head -30 run-api-tests-hurl.sh` — two
9
8
  * reads of a file that was already there — and the suite-overlap hold answered "a Playwright
10
- * suite is already running against this app and database … wait for it", costing a minute of
11
- * forced idling on a command that writes nothing and runs nothing. `cat`, `grep`, `sed -n`,
9
+ * suite is already running against this app and database … wait for it", idling a command that
10
+ * writes nothing and runs nothing. `cat`, `grep`, `sed -n`,
12
11
  * `wc`, `ls` and `git show` of a runner script are the same shape.
13
12
  *
14
13
  * So this parser answers it in one place, for every caller: split the command at its pipeline
@@ -28,7 +27,7 @@
28
27
  * `end`, `programOffset` and `assignmentOffset` are the offsets a caller splices at. They are
29
28
  * token positions from this walk, never a search for re-joined text — the words are joined back
30
29
  * with single spaces for matching, so `command.indexOf(segment.text)` fails on irregular spacing,
31
- * on grouping braces, and on anything a heredoc body shifts (xr-molecule-flash-m105 +08:12).
30
+ * on grouping braces, and on anything a heredoc body shifts.
32
31
  *
33
32
  * @module
34
33
  */
@@ -310,11 +309,11 @@ const SHELLS = new Set(['ash', 'bash', 'dash', 'ksh', 'sh', 'zsh']);
310
309
  * `node script.mjs` RUNS that script, so the parser's answer for it stays `node`.
311
310
  *
312
311
  * The Playwright runner is spelled this way whenever a project reaches it by file instead of by
313
- * the `.bin` shim: xr-molecule-flash-m179 (+17:51) ran
312
+ * the `.bin` shim: a run that sent
314
313
  * `node /workspace/node_modules/.bin/playwright test` after `npx playwright test` in every
315
- * earlier call, and no reader recognised it — the run got no `--trace`, no suite-budget pin and
316
- * no proof credit, and the platform spent the rest of the turn re-walking a suite it had already
317
- * walked green.
314
+ * earlier call got no `--trace`, no suite-budget pin and no proof credit, because no reader
315
+ * recognised it — and the platform then spent the rest of the turn re-walking a suite it had
316
+ * already walked green.
318
317
  */
319
318
  const NODE = new Set(['node']);
320
319
  /**
@@ -653,8 +652,7 @@ function nestedCommand(words, from) {
653
652
  * program: the leading words, and the ones behind an `env` wrapper (`env -i PATH=$PATH
654
653
  * BASE_URL=https://… npx playwright test`). A shell passes those to the program in exactly the
655
654
  * same way — `env` is the POSIX form of the leading-word form — so a reader that only saw the
656
- * leading ones called a deployed walk local (X0 xr-molecule-flash-m204 +38:15: two green deployed
657
- * walks were refused, 5.2 min).
655
+ * leading ones called a deployed walk local (two green deployed walks were refused, 5.2 min).
658
656
  *
659
657
  * @param words - The segment's words, quotes kept.
660
658
  * @returns The index of the word in command position (one past the end when the segment runs
@@ -798,8 +796,8 @@ function commentStartsAt(command, at) {
798
796
  * <<'EOF' … import { defineConfig, devices } from '@playwright/test' … EOF` writes a file and runs
799
797
  * `cat`. Read as shell, though, every line of the body is a statement — and the words joined back
800
798
  * for matching are not the words written, so a caller that placed a statement by searching for
801
- * them found nothing, in a command whose real statements sat all along. On X1
802
- * xr-molecule-flash-m105 (+08:12) the body's `import { defineConfig, devices } …` alone made
799
+ * them found nothing, in a command whose real statements sat all along. A heredoc body's
800
+ * `import { defineConfig, devices } …` alone made
803
801
  * `suiteRunPipedAfterRunner` answer "piped" for a run with no pipe left, and the run's exit code
804
802
  * was dropped for the rest of the session.
805
803
  *
@@ -925,7 +923,7 @@ function blankHeredocBodies(command) {
925
923
  * A flat walk read that first inner `"` as the CLOSE of the outer one, so the `)` that ends the
926
924
  * outer substitution landed inside a quote that was never opened, the depth was left standing at
927
925
  * 1, and every newline in the rest of the script was swallowed: the script's own `hurl --test`
928
- * never reached command position, and X1 xr-molecule-flash-m89 saw seven passing Hurl runs the
926
+ * never reached command position, and seven passing Hurl runs were invisible to the
929
927
  * platform could not see (the runner is read from the tree's own script TEXT —
930
928
  * `molecule-dev/api/src/ai/supplied-tree-guard.ts` — so a script that does not classify records
931
929
  * no runner, and every run of it reads as nothing).
@@ -1391,8 +1389,8 @@ export function commandSubstitutions(command) {
1391
1389
  * not a text match. The command-position parser already knows what runs and what is only quoted
1392
1390
  * data ({@link commandSegments}), so a pattern never reads a `|` inside a quoted grep alternation
1393
1391
  * as a pipeline: `grep -E "USER CALLS|ENV|BUTTON" app.log` prints log lines, and the `ENV` in
1394
- * its pattern started nothing (X0 xr-molecule-flash-m331 blocked exactly that call as an
1395
- * environment dump). What the shell DOES run stays visible through the same walk: a bare
1392
+ * its pattern starts nothing — a text match would block exactly that call as an environment
1393
+ * dump. What the shell DOES run stays visible through the same walk: a bare
1396
1394
  * launcher (`ls | env`), a shell string (`bash -c 'env'`), a substitution
1397
1395
  * (`echo "$(printenv)"`) and a nested one (`sh -c 'x; env'`) are all commands here.
1398
1396
  *
@@ -1491,8 +1489,8 @@ function substitutionDepth(text) {
1491
1489
  * redirection (`… 2>&1`), and a statement can sit inside a group whose closer belongs to the
1492
1490
  * shell, not to the words (`( … )`, `{ …; }`). Appending after that closer is a different shell
1493
1491
  * word that the group has already closed — `… --config=x 2>&1) --reporter=list` is
1494
- * `sh: Syntax error: word unexpected`, which killed a backgrounded walk at once and pushed the
1495
- * model off the platform's runner shape (xr-molecule-flash-m129 +34:29). Write the option where
1492
+ * `sh: Syntax error: word unexpected`, which kills a backgrounded walk at once and pushes the
1493
+ * model off the platform's runner shape. Write the option where
1496
1494
  * the program's own arguments end and the rest of the statement still parses:
1497
1495
  * `… --config=x --reporter=list 2>&1)`.
1498
1496
  *
@@ -1577,8 +1575,8 @@ export function statementArgumentEnd(command, start, end) {
1577
1575
  * parses its last stage as `tail` with the argument `-25)`. {@link LocatedCommandSegment.end}
1578
1576
  * therefore says one past the `)`, and a caller cutting that stage out of the command takes the
1579
1577
  * group's closer with it — the rewritten command is then `( … 2>&1`, which no shell parses
1580
- * (xr-molecule-flash-m418 +23:31: a heredoc config plus a parenthesized Playwright pipeline came
1581
- * back as `end of file unexpected` from the background runner).
1578
+ * (a heredoc config plus a parenthesized Playwright pipeline came back as `end of file
1579
+ * unexpected` from the background runner).
1582
1580
  *
1583
1581
  * The parse's own group depths answer which closers belong to an enclosing group: the depth a
1584
1582
  * statement was written at is its first character's depth (an opener is recorded at the depth
@@ -1781,9 +1779,9 @@ export function commandTimeoutSeconds(command) {
1781
1779
  * The platform moves a run to the background precisely because its own bound cannot fit this
1782
1780
  * tool's ceiling, and a background task has no ceiling — its wait is bounded by `wait_for_task`
1783
1781
  * and the turn's deadline. The `timeout N` an executor wrote to fit the ceiling therefore keeps
1784
- * killing the run at N in the background, where nothing needed it: X1 xr-molecule-flash-m143
1785
- * (+24:45) wrote `timeout 280` for a 31-test walk, the tool backgrounded it, and the prefix stopped
1786
- * the walk with no tally — then the cut sentence told the executor to "run it in the background",
1782
+ * killing the run at N in the background, where nothing needed it: an executor wrote
1783
+ * `timeout 280` for a 31-test walk, the tool backgrounded it, and the prefix stopped the walk
1784
+ * with no tally — then the cut sentence told the executor to "run it in the background",
1787
1785
  * which is where it already was.
1788
1786
  *
1789
1787
  * The wrapper is found by the same parse every other command reader uses ({@link commandStart}):
package/dist/cut-run.d.ts CHANGED
@@ -2,13 +2,13 @@
2
2
  * A command that a budget stopped before it finished, and the state its result carries so no
3
3
  * reader can mistake it for a run that ended.
4
4
  *
5
- * X1 xr-molecule-flash-m93 (2026-10-16, +12:37) sent the supplied RealWorld suite as
6
- * `timeout 280 hurl --test --continue-on-error --jobs 1 … hurl/*.hurl 2>&1 | tail -60` and got
5
+ * A command such as
6
+ * `timeout 280 hurl --test --continue-on-error --jobs 1 … hurl/*.hurl 2>&1 | tail -60` came
7
7
  * back `exitCode: 0`, four finished files' lines and nothing else. Two lies in one result: the
8
8
  * `timeout 280` killed the run at 280 s, and the `| tail` made the pipeline's status the status —
9
9
  * so the executor read a suite that stopped at its fifth file as a suite that ran and nearly
10
- * passed, fixed one message, and immediately sent the same 280-second command again (the run's
11
- * third, ~14 minutes of a 60-minute cap across three of them).
10
+ * passed, fixed one message, and immediately sent the same 280-second command again (~14 minutes
11
+ * of a 60-minute cap across three of them).
12
12
  *
13
13
  * So the tool never reports a stopped run as `exitCode: 0`. Such a result carries
14
14
  * `status: 'cut_at_budget'` and an exit code that is `null` whenever the number the pipeline
@@ -19,7 +19,7 @@
19
19
  *
20
20
  * 1. **Its own bound** — a `timeout <N>` the command carries ({@link commandTimeoutSeconds}). The
21
21
  * run used it, so the run was killed at it; with no closing tally in the output, the run did
22
- * not finish. This is m93's shape.
22
+ * not finish. This is the first shape.
23
23
  * 2. **This tool's budget** — the backend runs the command under `timeout` (see
24
24
  * `backends/sandbox.ts`), which reports 124 whatever the pipeline did, and returns everything
25
25
  * printed until then. The budget is the tool's own, so its number belongs to the tool.
@@ -104,7 +104,7 @@ export declare function suiteTally(text: string): boolean;
104
104
  * The code in a background result is the code of the command's LAST pipeline stage. When a stage
105
105
  * after the suite runner still consumes its output (`| tee run.log`, or a filter the platform could
106
106
  * not prove output-only), that stage produced the code, not the run — and `… | grep … | tail -20`
107
- * exited 0 for a run with a failure in it (xr-molecule-flash-m101 +25:54). No code is reported
107
+ * can exit 0 for a run with a failure in it. No code is reported
108
108
  * then: the log's own tally decides.
109
109
  *
110
110
  * The same reading covers a code of 0 beside a tally that names a failure: whatever ended the
@@ -139,7 +139,7 @@ export interface CutRun {
139
139
  * ({@link commandCutRun}'s `budgetSeconds` is 0). A background run is bounded by what its own
140
140
  * command carries — so a `command-timeout` cut there is that prefix killing the walk, and the
141
141
  * executor must be told to drop the prefix, never to start the run in the background it is
142
- * already in (X1 xr-molecule-flash-m143 +24:45).
142
+ * already in.
143
143
  */
144
144
  background: boolean;
145
145
  /**
@@ -164,12 +164,12 @@ export interface CutRun {
164
164
  /**
165
165
  * The interpreter of an inline program that only touches local files (`python3`, `node`, …), or
166
166
  * null. Such a program is stopped by its short budget because it is stuck, never because the work
167
- * is slow, so the sentence must not send it to the background (xr-molecule-flash-m200 +03:45).
167
+ * is slow, so the sentence must not send it to the background.
168
168
  */
169
169
  inlineScript?: string | null;
170
170
  /**
171
171
  * The variable a leaked standalone browser launch is bound to, when the command ran such a probe
172
- * and the cut reader could only classify it after the run (xr-molecule-flash-m257). A leaked
172
+ * and the cut reader could only classify it after the run. A leaked
173
173
  * handle is not a slow workload: the background is the one place it must not be sent, so the
174
174
  * sentence names the close instead.
175
175
  */
package/dist/cut-run.js CHANGED
@@ -2,13 +2,13 @@
2
2
  * A command that a budget stopped before it finished, and the state its result carries so no
3
3
  * reader can mistake it for a run that ended.
4
4
  *
5
- * X1 xr-molecule-flash-m93 (2026-10-16, +12:37) sent the supplied RealWorld suite as
6
- * `timeout 280 hurl --test --continue-on-error --jobs 1 … hurl/*.hurl 2>&1 | tail -60` and got
5
+ * A command such as
6
+ * `timeout 280 hurl --test --continue-on-error --jobs 1 … hurl/*.hurl 2>&1 | tail -60` came
7
7
  * back `exitCode: 0`, four finished files' lines and nothing else. Two lies in one result: the
8
8
  * `timeout 280` killed the run at 280 s, and the `| tail` made the pipeline's status the status —
9
9
  * so the executor read a suite that stopped at its fifth file as a suite that ran and nearly
10
- * passed, fixed one message, and immediately sent the same 280-second command again (the run's
11
- * third, ~14 minutes of a 60-minute cap across three of them).
10
+ * passed, fixed one message, and immediately sent the same 280-second command again (~14 minutes
11
+ * of a 60-minute cap across three of them).
12
12
  *
13
13
  * So the tool never reports a stopped run as `exitCode: 0`. Such a result carries
14
14
  * `status: 'cut_at_budget'` and an exit code that is `null` whenever the number the pipeline
@@ -19,7 +19,7 @@
19
19
  *
20
20
  * 1. **Its own bound** — a `timeout <N>` the command carries ({@link commandTimeoutSeconds}). The
21
21
  * run used it, so the run was killed at it; with no closing tally in the output, the run did
22
- * not finish. This is m93's shape.
22
+ * not finish. This is the first shape.
23
23
  * 2. **This tool's budget** — the backend runs the command under `timeout` (see
24
24
  * `backends/sandbox.ts`), which reports 124 whatever the pipeline did, and returns everything
25
25
  * printed until then. The budget is the tool's own, so its number belongs to the tool.
@@ -173,7 +173,7 @@ const FAILED_TALLY = /\b[1-9]\d*\s+failed\b/;
173
173
  * The code in a background result is the code of the command's LAST pipeline stage. When a stage
174
174
  * after the suite runner still consumes its output (`| tee run.log`, or a filter the platform could
175
175
  * not prove output-only), that stage produced the code, not the run — and `… | grep … | tail -20`
176
- * exited 0 for a run with a failure in it (xr-molecule-flash-m101 +25:54). No code is reported
176
+ * can exit 0 for a run with a failure in it. No code is reported
177
177
  * then: the log's own tally decides.
178
178
  *
179
179
  * The same reading covers a code of 0 beside a tally that names a failure: whatever ended the
@@ -10,12 +10,12 @@
10
10
  * - **status** — a response arrived and the HTTP status disagreed with what the suite asserts.
11
11
  * - **assertion** — a response arrived and an assertion over its body failed.
12
12
  *
13
- * X0 xr-molecule-flash-m110 (+18:42 → +20:09) is the case this exists for: one Hurl file on the
14
- * freshly deployed URL failed with `(28) Operation timed out … 0 bytes received` while the other
15
- * twelve passed and 138 requests executed, and every note on the result read it as an assertion.
16
- * The executor rewrote a CORS middleware, bisected a second server and latency-compared the two,
17
- * then re-ran the same file — which passed in 3 s. A single re-run was the whole fix, and the one
18
- * fact that would have said so is the failure's LAYER.
13
+ * The case this exists for: one Hurl file on the freshly deployed URL failed with
14
+ * `(28) Operation timed out … 0 bytes received` while the other twelve passed and 138 requests
15
+ * executed, and every note on the result read it as an assertion. The executor rewrote a CORS
16
+ * middleware, bisected a second server and latency-compared the two, then re-ran the same file —
17
+ * which passed in 3 s. A single re-run was the whole fix, and the one fact that would have said
18
+ * so is the failure's LAYER.
19
19
  *
20
20
  * ONE classifier, used by the causes note ({@link ./utilities.ts} `failureCausesNote`) and by the
21
21
  * platform's own proof result (`molecule-dev` `suite-proof.ts`), so the two can never disagree
@@ -10,12 +10,12 @@
10
10
  * - **status** — a response arrived and the HTTP status disagreed with what the suite asserts.
11
11
  * - **assertion** — a response arrived and an assertion over its body failed.
12
12
  *
13
- * X0 xr-molecule-flash-m110 (+18:42 → +20:09) is the case this exists for: one Hurl file on the
14
- * freshly deployed URL failed with `(28) Operation timed out … 0 bytes received` while the other
15
- * twelve passed and 138 requests executed, and every note on the result read it as an assertion.
16
- * The executor rewrote a CORS middleware, bisected a second server and latency-compared the two,
17
- * then re-ran the same file — which passed in 3 s. A single re-run was the whole fix, and the one
18
- * fact that would have said so is the failure's LAYER.
13
+ * The case this exists for: one Hurl file on the freshly deployed URL failed with
14
+ * `(28) Operation timed out … 0 bytes received` while the other twelve passed and 138 requests
15
+ * executed, and every note on the result read it as an assertion. The executor rewrote a CORS
16
+ * middleware, bisected a second server and latency-compared the two, then re-ran the same file —
17
+ * which passed in 3 s. A single re-run was the whole fix, and the one fact that would have said
18
+ * so is the failure's LAYER.
19
19
  *
20
20
  * ONE classifier, used by the causes note ({@link ./utilities.ts} `failureCausesNote`) and by the
21
21
  * platform's own proof result (`molecule-dev` `suite-proof.ts`), so the two can never disagree
package/dist/index.d.ts CHANGED
@@ -31,7 +31,7 @@
31
31
  * ceiling the request side puts on a single tool result: whole files are
32
32
  * returned up to it and every path past that is named in `note` and listed as
33
33
  * `not returned`, so a file is never handed back in part — the shape that lost
34
- * the middle of a ten-file batch to the request-side cut (X0 flash-m81). Each
34
+ * the middle of a ten-file batch to the request-side cut. Each
35
35
  * entry carries its own content or its own error, so one bad path never fails
36
36
  * the batch.
37
37
  * - **`edit_file` shows the result, so the model need not re-read.** A
@@ -57,7 +57,7 @@
57
57
  * added or removed and nothing else, the edit can only move text across lines —
58
58
  * joining the next line onto the replaced text, or pushing the rest of the line
59
59
  * down — which is what a weak model does by accident when it repeats a line it
60
- * means to keep (flash-m28, m55, m62, m89, five times in the m89 run alone). The
60
+ * means to keep. The
61
61
  * replacement is skipped, the rest of the batch is applied, and the result
62
62
  * carries `skippedNote`: one line naming the replacement, what applying it would
63
63
  * have done, and how to say it on purpose (include the next line in `old_string`).
package/dist/index.js CHANGED
@@ -31,7 +31,7 @@
31
31
  * ceiling the request side puts on a single tool result: whole files are
32
32
  * returned up to it and every path past that is named in `note` and listed as
33
33
  * `not returned`, so a file is never handed back in part — the shape that lost
34
- * the middle of a ten-file batch to the request-side cut (X0 flash-m81). Each
34
+ * the middle of a ten-file batch to the request-side cut. Each
35
35
  * entry carries its own content or its own error, so one bad path never fails
36
36
  * the batch.
37
37
  * - **`edit_file` shows the result, so the model need not re-read.** A
@@ -57,7 +57,7 @@
57
57
  * added or removed and nothing else, the edit can only move text across lines —
58
58
  * joining the next line onto the replaced text, or pushing the rest of the line
59
59
  * down — which is what a weak model does by accident when it repeats a line it
60
- * means to keep (flash-m28, m55, m62, m89, five times in the m89 run alone). The
60
+ * means to keep. The
61
61
  * replacement is skipped, the rest of the batch is applied, and the result
62
62
  * carries `skippedNote`: one line naming the replacement, what applying it would
63
63
  * have done, and how to say it on purpose (include the next line in `old_string`).
@@ -2,7 +2,7 @@
2
2
  * An inline interpreter program (`python3 -c`, `python3 - <<EOF`, `node -e`) that only touches local
3
3
  * files — work that takes milliseconds or never ends, never minutes of honest progress.
4
4
  *
5
- * xr-molecule-flash-m200 (+03:45, 2026-10-19) spent 291 s of a 60-minute cap on
5
+ * One such step spent 291 s of a 60-minute cap on
6
6
  * `python3 - <<'EOF' … re.findall(r'([^{}]*:before[^{}]*)\{content:"[^"]*"\}', s) … EOF` rewriting a
7
7
  * minified CSS file whose first rule is one ~25 KB selector list: the pattern's two unbounded
8
8
  * `[^{}]*` around a literal backtrack cubically, printed nothing, and was stopped by the tool's
@@ -15,10 +15,10 @@
15
15
  * a short budget ({@link INLINE_SCRIPT_BUDGET_MS}), and a cut says what happened: a runaway
16
16
  * transform, not slow work ({@link inlineScriptRunawaySentence}).
17
17
  *
18
- * The short budget needs the WHOLE command to be that shape. xr-molecule-flash-m254 (+12:48)
19
- * chained the m200 heredoc with `node …/smoke.mjs | tail -25` — a Playwright walk whose import
20
- * lives inside the file — and the walk was stopped after 20 s while the result blamed the python
21
- * transform. Every statement must be proven local ({@link LOCAL_UTILITY}) before the budget applies.
18
+ * The short budget needs the WHOLE command to be that shape. A command that chained such a
19
+ * heredoc with `node …/smoke.mjs | tail -25` — a Playwright walk whose import lives inside the
20
+ * file — had the walk stopped after 20 s while the result blamed the python transform. Every
21
+ * statement must be proven local ({@link LOCAL_UTILITY}) before the budget applies.
22
22
  *
23
23
  * @module
24
24
  */
@@ -2,7 +2,7 @@
2
2
  * An inline interpreter program (`python3 -c`, `python3 - <<EOF`, `node -e`) that only touches local
3
3
  * files — work that takes milliseconds or never ends, never minutes of honest progress.
4
4
  *
5
- * xr-molecule-flash-m200 (+03:45, 2026-10-19) spent 291 s of a 60-minute cap on
5
+ * One such step spent 291 s of a 60-minute cap on
6
6
  * `python3 - <<'EOF' … re.findall(r'([^{}]*:before[^{}]*)\{content:"[^"]*"\}', s) … EOF` rewriting a
7
7
  * minified CSS file whose first rule is one ~25 KB selector list: the pattern's two unbounded
8
8
  * `[^{}]*` around a literal backtrack cubically, printed nothing, and was stopped by the tool's
@@ -15,10 +15,10 @@
15
15
  * a short budget ({@link INLINE_SCRIPT_BUDGET_MS}), and a cut says what happened: a runaway
16
16
  * transform, not slow work ({@link inlineScriptRunawaySentence}).
17
17
  *
18
- * The short budget needs the WHOLE command to be that shape. xr-molecule-flash-m254 (+12:48)
19
- * chained the m200 heredoc with `node …/smoke.mjs | tail -25` — a Playwright walk whose import
20
- * lives inside the file — and the walk was stopped after 20 s while the result blamed the python
21
- * transform. Every statement must be proven local ({@link LOCAL_UTILITY}) before the budget applies.
18
+ * The short budget needs the WHOLE command to be that shape. A command that chained such a
19
+ * heredoc with `node …/smoke.mjs | tail -25` — a Playwright walk whose import lives inside the
20
+ * file — had the walk stopped after 20 s while the result blamed the python transform. Every
21
+ * statement must be proven local ({@link LOCAL_UTILITY}) before the budget applies.
22
22
  *
23
23
  * @module
24
24
  */
@@ -66,7 +66,7 @@ const EXTERNAL_EFFECT = /\b(?:curl|wget|aria2c|rsync|scp|sftp|ftp|ssh|urllib3?|h
66
66
  * The only OTHER programs a proven-local inline program may share its command with: plain file
67
67
  * utilities (`cd app && python3 - <<'EOF' … EOF`, `… EOF | tail -25`).
68
68
  *
69
- * xr-molecule-flash-m254 (+12:48) ran `python3 - <<'EOF' … EOF` and then, in the same command,
69
+ * A command ran `python3 - <<'EOF' … EOF` and then, in the same command,
70
70
  * `node /workspace/.mol-scratch/smoke.mjs | tail -25` — the agent's Playwright UI walk. The
71
71
  * heredoc alone is local, so the whole chain got the 20 s budget, the walk was stopped, and the
72
72
  * result blamed the python transform. A script FILE can do anything (the `playwright` import is
@@ -4,9 +4,8 @@
4
4
  * The count is a diff, not an arithmetic delta: replacing one line with another
5
5
  * leaves the line count unchanged, so `new.length - old.length` is 0 for the
6
6
  * edit that changed the file — a result that reads to the model as "your write
7
- * did nothing" (X0 xr-molecule-flash-m141 +09:56: `write_file` rewrote
8
- * `ArticlePreview.tsx`'s favorite label and reported
9
- * `"linesAdded":0,"linesRemoved":0`). The lines an edit actually changed are
7
+ * did nothing" — `write_file` rewrote `ArticlePreview.tsx`'s favorite label and reported
8
+ * `"linesAdded":0,"linesRemoved":0`. The lines an edit actually changed are
10
9
  * found with the same longest-common-subsequence line diff the IDE's tool cards
11
10
  * use (`@molecule/app-ide-react`'s `diffLineCount`); it is mirrored here because
12
11
  * the API and App halves of the workspace cannot import each other (AGENTS.md
@@ -1 +1 @@
1
- {"version":3,"file":"line-diff.d.ts","sourceRoot":"","sources":["../src/line-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAmGH;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuBpC"}
1
+ {"version":3,"file":"line-diff.d.ts","sourceRoot":"","sources":["../src/line-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAmGH;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAuBpC"}
package/dist/line-diff.js CHANGED
@@ -4,9 +4,8 @@
4
4
  * The count is a diff, not an arithmetic delta: replacing one line with another
5
5
  * leaves the line count unchanged, so `new.length - old.length` is 0 for the
6
6
  * edit that changed the file — a result that reads to the model as "your write
7
- * did nothing" (X0 xr-molecule-flash-m141 +09:56: `write_file` rewrote
8
- * `ArticlePreview.tsx`'s favorite label and reported
9
- * `"linesAdded":0,"linesRemoved":0`). The lines an edit actually changed are
7
+ * did nothing" — `write_file` rewrote `ArticlePreview.tsx`'s favorite label and reported
8
+ * `"linesAdded":0,"linesRemoved":0`. The lines an edit actually changed are
10
9
  * found with the same longest-common-subsequence line diff the IDE's tool cards
11
10
  * use (`@molecule/app-ide-react`'s `diffLineCount`); it is mirrored here because
12
11
  * the API and App halves of the workspace cannot import each other (AGENTS.md
@@ -9,13 +9,13 @@
9
9
  * prints with `--help`/`--version`, the same way.
10
10
  *
11
11
  * Every check in the platform read such a command as a whole-suite run, because each one
12
- * matched the runner's NAME. X1 xr-molecule-flash-m79's first Playwright command was a config
12
+ * matched the runner's NAME. A first Playwright command that was a config
13
13
  * check — a config written to `/tmp`, `cp`'d beside the suite and used with `--list` — and it
14
14
  * came back HELD, `status: not_run`, with a ~4 KB `suiteNote` telling it to send the same
15
15
  * command with `--max-failures=15` ("uncapped it walks every test … 8–13 minutes"), beside an
16
16
  * environment block saying the run "ran on their defaults" and an import note about a path the
17
17
  * `cp` had already fixed. Nothing ran. The model gave up on the approach, wrote a second
18
- * config, and its next command was held again (flash-m74's "same command three times" shape):
18
+ * config, and its next command was held again ("same command three times" shape):
19
19
  * two holds, zero tests, and the config check it asked for never answered.
20
20
  *
21
21
  * So the classifiers live here, in one place, and callers ask them instead of their own
@@ -27,8 +27,8 @@
27
27
  * What counts as an invocation is COMMAND POSITION, read by `@molecule/api-ai-tools`'
28
28
  * `commandSegments`: `npx playwright test --list`, `hurl --help` and `bash run.sh` invoke the
29
29
  * runner, while a runner named as an argument (`grep -n playwright e2e/README.md`,
30
- * `head -30 run-api-tests-hurl.sh`) invokes nothing at all. X1 xr-molecule-flash-m81 (+20:03)
31
- * read a runner script with `head -30` and the suite-overlap hold answered "a Playwright suite is
30
+ * `head -30 run-api-tests-hurl.sh`) invokes nothing at all. Reading a runner script with
31
+ * `head -30` has had the suite-overlap hold answer "a Playwright suite is
32
32
  * already running … wait for it", for a command that runs nothing.
33
33
  *
34
34
  * @module
@@ -41,7 +41,7 @@
41
41
  * position of a segment, after its wrapper prefixes. A runner named in an argument is not an
42
42
  * invocation — `head -30 run-api-tests-hurl.sh` and `grep -n playwright e2e/README.md` name a
43
43
  * file to read, and a `--list` written inside a file the command writes is not a flag anyone runs
44
- * with (flash-m81).
44
+ * with.
45
45
  *
46
46
  * A command that invokes no runner is NOT one of these (false): "the command runs no test" is
47
47
  * then true for `ls`, which is not the question any caller is asking. The question is whether
@@ -1 +1 @@
1
- {"version":3,"file":"no-test-run.d.ts","sourceRoot":"","sources":["../src/no-test-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAiLH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiB3D"}
1
+ {"version":3,"file":"no-test-run.d.ts","sourceRoot":"","sources":["../src/no-test-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAkLH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiB3D"}