@molecule/api-ai-tools 1.9.6 → 1.9.8
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 +178 -9
- package/dist/command-position.d.ts +36 -0
- package/dist/command-position.d.ts.map +1 -1
- package/dist/command-position.js +192 -19
- package/dist/cut-run.d.ts +8 -0
- package/dist/cut-run.d.ts.map +1 -1
- package/dist/cut-run.js +20 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/line-diff.d.ts +34 -0
- package/dist/line-diff.d.ts.map +1 -0
- package/dist/line-diff.js +150 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +70 -22
- package/dist/trace-artifacts.d.ts +57 -1
- package/dist/trace-artifacts.d.ts.map +1 -1
- package/dist/trace-artifacts.js +381 -43
- package/dist/utilities.d.ts +55 -5
- package/dist/utilities.d.ts.map +1 -1
- package/dist/utilities.js +150 -15
- package/package.json +1 -1
package/dist/tools.js
CHANGED
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @module
|
|
8
8
|
*/
|
|
9
|
+
import { posix } from 'path';
|
|
9
10
|
import { commandCutRun, CUT_AT_BUDGET, cutRunSentence, suiteRunExitCode } from './cut-run.js';
|
|
10
11
|
import { addChangeSpan, changedSpan, countLines, renderEditExcerpt, renderSmallFile, } from './edit-excerpt.js';
|
|
11
12
|
import { guardToolExecute, missingParamError, ToolInputError } from './input-normalizer.js';
|
|
13
|
+
import { diffLineCount } from './line-diff.js';
|
|
12
14
|
import { pipelineExitCodeNote } from './pipeline-exit-note.js';
|
|
13
15
|
import { TOOL_SCHEMAS } from './schemas.js';
|
|
14
16
|
import { leadingSleepPeek } from './sleep-peek.js';
|
|
@@ -361,7 +363,7 @@ async function backgroundTaskState(backend, command, seconds, ceilingMs) {
|
|
|
361
363
|
}
|
|
362
364
|
import { suiteCommandTarget } from './suite-overlap.js';
|
|
363
365
|
import { diagnosisTraceCommand } from './trace-artifacts.js';
|
|
364
|
-
import { checkBlockedCommand, declaredBudgetSeconds, DEFAULT_SEARCH_EXCLUDED_DIRS, directoryReadHint, earlyReturnCause, emptyCallError, failureCausesNote, findPathArgs, findPatternArgs, fusedLine, htmlOutline, isCommandTimeout, isEnvFilePath, isOutsideRoot, isPlaywrightRunCommand, isSuiteRunCommand, isValidGlob, linesWithinSerialized, literalDirPrefix, MAX_BATCH_READ_FILES, MAX_FIND_RESULTS, MAX_HTML_INLINE_CHARS, MAX_OUTPUT_SIZE, MAX_READ_CALL_CHARS, MAX_READ_RETURN_CHARS, MAX_READ_SIZE, MAX_SEARCH_CONTEXT_LINES, MAX_SEARCH_RESULTS, MAX_WRITE_SIZE, outputIsWithheldUntilExit, outputRedirectTarget, parseCheckCommand, parseCheckProblem, pathArgError, printsOnlySource, READ_RESULT_ENVELOPE_CHARS, redactSecrets, redactSecretsInCode, repeatingFailure, repeatingFailureNote, resolvePath, RUNNING_FAILURE_LINES, runningCauseCommand, runningOutputSliceCommand, searchTimeoutError, serializedChars, shellQuote, sliceLines, SMALL_FILE_WHOLE_CHARS, streamingBackgroundCommand, stripControlChars, suiteRunPipelinePlacement, suiteRunPriorityLaunch, truncateMiddle, universalCause, whitespaceTolerantReplace, } from './utilities.js';
|
|
366
|
+
import { checkBlockedCommand, declaredBudgetSeconds, DEFAULT_SEARCH_EXCLUDED_DIRS, directoryReadHint, earlyReturnCause, emptyCallError, failureCausesNote, findPathArgs, findPatternArgs, fusedLine, htmlOutline, isCommandTimeout, isEnvFilePath, isOutsideRoot, isPlaywrightRunCommand, isSuiteRunCommand, isValidGlob, linesWithinSerialized, literalDirPrefix, MAX_BATCH_READ_FILES, MAX_FIND_RESULTS, MAX_HTML_INLINE_CHARS, MAX_OUTPUT_SIZE, MAX_READ_CALL_CHARS, MAX_READ_RETURN_CHARS, MAX_READ_SIZE, MAX_SEARCH_CONTEXT_LINES, MAX_SEARCH_RESULTS, MAX_WRITE_SIZE, outputIsWithheldUntilExit, outputRedirectTarget, parseCheckCommand, parseCheckProblem, pathArgError, printsOnlySource, READ_RESULT_ENVELOPE_CHARS, redactSecrets, redactSecretsInCode, repeatingFailure, repeatingFailureNote, resolvePath, RUNNING_FAILURE_LINES, runningCauseCommand, runningOutputSliceCommand, searchTimeoutError, serializedChars, shellQuote, sliceLines, SMALL_FILE_WHOLE_CHARS, streamingBackgroundCommand, stripControlChars, suiteRunPipelinePlacement, suiteRunPriorityLaunch, truncateMiddle, universalCause, whitespaceTolerantReplace, withoutSuiteTimeout, } from './utilities.js';
|
|
365
367
|
/**
|
|
366
368
|
* How long exec_command waits for a command it backgrounded only because the
|
|
367
369
|
* command asked for more than the tool's ceiling, before handing back a task id.
|
|
@@ -920,21 +922,27 @@ export function buildTools(backend, config) {
|
|
|
920
922
|
/**
|
|
921
923
|
* Compute a lightweight diff summary for telemetry and UI badges.
|
|
922
924
|
*
|
|
925
|
+
* The counts are a real line diff ({@link diffLineCount}), not the change in
|
|
926
|
+
* line count: replacing one line with another leaves the file the same
|
|
927
|
+
* length, and a length delta reported that edit as `0/0` — reading to the
|
|
928
|
+
* model as "your write changed nothing" (xr-molecule-flash-m141 +09:56, a
|
|
929
|
+
* one-line rewrite of `ArticlePreview.tsx`). A write that leaves the content
|
|
930
|
+
* identical is `unchanged` rather than a `modified` with `0/0`, so the two
|
|
931
|
+
* are distinguishable.
|
|
932
|
+
*
|
|
923
933
|
* @param oldContent - Previous file contents, or `null` when creating a file.
|
|
924
934
|
* @param newContent - Replacement file contents after a write/edit.
|
|
925
|
-
* @returns Counts describing whether the file was created or
|
|
935
|
+
* @returns Counts describing whether the file was created, modified or left unchanged.
|
|
926
936
|
*/
|
|
927
937
|
function computeDiff(oldContent, newContent) {
|
|
928
938
|
if (oldContent === null) {
|
|
929
|
-
return { type: 'created', linesAdded: newContent
|
|
939
|
+
return { type: 'created', linesAdded: countLines(newContent), linesRemoved: 0 };
|
|
930
940
|
}
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
linesRemoved: Math.max(0, oldLines.length - newLines.length),
|
|
937
|
-
};
|
|
941
|
+
if (oldContent === newContent) {
|
|
942
|
+
return { type: 'unchanged', linesAdded: 0, linesRemoved: 0 };
|
|
943
|
+
}
|
|
944
|
+
const { added, removed } = diffLineCount(oldContent.split('\n'), newContent.split('\n'));
|
|
945
|
+
return { type: 'modified', linesAdded: added, linesRemoved: removed };
|
|
938
946
|
}
|
|
939
947
|
// ── Tool implementations ───────────────────────────────────────
|
|
940
948
|
/**
|
|
@@ -2136,6 +2144,16 @@ export function buildTools(backend, config) {
|
|
|
2136
2144
|
// an executor's commands routinely carry quotes, heredocs and
|
|
2137
2145
|
// newlines, and re-quoting them into a detached `sh -c` is how a
|
|
2138
2146
|
// background runner corrupts the very thing it is running.
|
|
2147
|
+
// The platform moved this run to the background because its own bound could not fit
|
|
2148
|
+
// this tool's ceiling — and in the background the ceiling no longer applies, so the
|
|
2149
|
+
// `timeout N` the executor wrote to fit it is the only bound left, and it kills the
|
|
2150
|
+
// walk mid-run with no tally (X1 xr-molecule-flash-m143 +24:45). Lift it from the
|
|
2151
|
+
// statement that runs the suite. A run the EXECUTOR detached keeps the bound it chose.
|
|
2152
|
+
const lifted = overCeiling && input.run_in_background !== true
|
|
2153
|
+
? withoutSuiteTimeout(command)
|
|
2154
|
+
: { command, seconds: null };
|
|
2155
|
+
if (lifted.seconds !== null)
|
|
2156
|
+
command = lifted.command;
|
|
2139
2157
|
// Keep the log growing while it runs (see streamingBackgroundCommand):
|
|
2140
2158
|
// an empty log is what wait_for_task reads as stuck.
|
|
2141
2159
|
const streaming = streamingBackgroundCommand(command);
|
|
@@ -2143,17 +2161,23 @@ export function buildTools(backend, config) {
|
|
|
2143
2161
|
// its changes are what this branch reports the run's own settings in.
|
|
2144
2162
|
if (traced.change)
|
|
2145
2163
|
streaming.changes.unshift(traced.change);
|
|
2164
|
+
// Said once, in the result that also hands back the task id or the run's output.
|
|
2165
|
+
if (lifted.seconds !== null) {
|
|
2166
|
+
streaming.changes.unshift(`Dropped your \`timeout ${lifted.seconds}\` from the suite run: in the background it ` +
|
|
2167
|
+
'is bounded by `wait_for_task` and the turn’s deadline, not by this tool’s ' +
|
|
2168
|
+
'ceiling, so the bound you wrote would only have killed the walk.');
|
|
2169
|
+
}
|
|
2146
2170
|
// A whole-suite run starves the sandbox it shares with the app and with
|
|
2147
2171
|
// every command the executor sends next, so it starts at lower CPU and
|
|
2148
2172
|
// IO priority (see suiteRunPriorityLaunch). Foreground runs are never
|
|
2149
2173
|
// touched, and a sandbox without the tools runs it unchanged.
|
|
2150
2174
|
const prioritized = suiteRunPriorityLaunch(streaming.command, `sh ${script} > ${log} 2>&1; echo $? > ${exitFile}`);
|
|
2175
|
+
// The target comes back without its shell quotes (`> '/tmp/x.log'` is `/tmp/x.log`);
|
|
2176
|
+
// `posix.resolve` leaves an absolute one absolute and places a relative one under the
|
|
2177
|
+
// cwd the command ran in (X1 flash-m134 +31:20: `${cwd}/${target}` produced
|
|
2178
|
+
// `/workspace/'/tmp/…'`, a path nothing writes).
|
|
2151
2179
|
const ownTarget = outputRedirectTarget(streaming.command);
|
|
2152
|
-
const ownFile = ownTarget
|
|
2153
|
-
? ownTarget.startsWith('/')
|
|
2154
|
-
? ownTarget
|
|
2155
|
-
: `${cwd}/${ownTarget}`
|
|
2156
|
-
: null;
|
|
2180
|
+
const ownFile = ownTarget === null ? null : posix.resolve(cwd, ownTarget);
|
|
2157
2181
|
if (ownFile)
|
|
2158
2182
|
outputFileByTask.set(id, ownFile);
|
|
2159
2183
|
runByTask.set(id, { command: streaming.command, cwd });
|
|
@@ -2209,8 +2233,15 @@ export function buildTools(backend, config) {
|
|
|
2209
2233
|
? { truncated: true, fullOutput: log }
|
|
2210
2234
|
: {}),
|
|
2211
2235
|
error: (sleepNote ? `${sleepNote} ` : '') +
|
|
2212
|
-
|
|
2213
|
-
|
|
2236
|
+
cutRunSentence(cut) +
|
|
2237
|
+
// A suite stopped in the background is never sent to the background again:
|
|
2238
|
+
// the sentence says what to do, and the advice's reason (it “takes the run
|
|
2239
|
+
// off this budget and writes its output to a log”) has already happened.
|
|
2240
|
+
(cut.background
|
|
2241
|
+
? ''
|
|
2242
|
+
: ` ${isSuiteRunCommand(command)
|
|
2243
|
+
? SUITE_OVER_BUDGET_ADVICE
|
|
2244
|
+
: SPLIT_WORK_ADVICE}`),
|
|
2214
2245
|
};
|
|
2215
2246
|
}
|
|
2216
2247
|
// The exit file holds the PIPELINE's code: when a stage this rewrite could not
|
|
@@ -2456,9 +2487,10 @@ export function buildTools(backend, config) {
|
|
|
2456
2487
|
const target = outputRedirectTarget(await backend.readFile(`/tmp/${taskId}.sh`));
|
|
2457
2488
|
// A relative target was written against the command's own cwd, which
|
|
2458
2489
|
// the handle does not carry; the project root is where a background
|
|
2459
|
-
// command runs unless the caller passed one.
|
|
2490
|
+
// command runs unless the caller passed one. An absolute target is
|
|
2491
|
+
// already resolved and stays as written.
|
|
2460
2492
|
if (target)
|
|
2461
|
-
outputFileByTask.set(taskId,
|
|
2493
|
+
outputFileByTask.set(taskId, posix.resolve(root, target));
|
|
2462
2494
|
}
|
|
2463
2495
|
catch (_error) {
|
|
2464
2496
|
// No script under that id: this process did not start the task, so
|
|
@@ -2587,12 +2619,24 @@ export function buildTools(backend, config) {
|
|
|
2587
2619
|
continue;
|
|
2588
2620
|
}
|
|
2589
2621
|
const found = repeatingFailure(causeLog);
|
|
2590
|
-
|
|
2622
|
+
// The page-renders-nothing cause needs no repeated signature: every spec waits for its
|
|
2623
|
+
// own first element, so the failures differ while the cause does not (m141).
|
|
2624
|
+
const universal = universalCause(causeLog, found, started?.command);
|
|
2625
|
+
if (!found && !universal)
|
|
2591
2626
|
continue;
|
|
2592
2627
|
// The ONE predicate behind this decision and `repeatingFailureNote`'s wording, so the two
|
|
2593
2628
|
// cannot come to different verdicts.
|
|
2594
|
-
const stopCause = earlyReturnCause(found,
|
|
2629
|
+
const stopCause = earlyReturnCause(found, universal);
|
|
2595
2630
|
if (stopCause) {
|
|
2631
|
+
// The note's rows and re-run hint are about the failures the cause covers; an
|
|
2632
|
+
// empty-page cause carries its own list, and a run with no repeated signature has no
|
|
2633
|
+
// other one.
|
|
2634
|
+
const noted = found ?? {
|
|
2635
|
+
count: stopCause.count,
|
|
2636
|
+
message: null,
|
|
2637
|
+
seconds: null,
|
|
2638
|
+
tests: stopCause.tests ?? [],
|
|
2639
|
+
};
|
|
2596
2640
|
// …and only now is the pid walk paid for.
|
|
2597
2641
|
repeatingCauseNoted.add(taskId);
|
|
2598
2642
|
const earlyMs = Date.now() - startedAt;
|
|
@@ -2601,7 +2645,7 @@ export function buildTools(backend, config) {
|
|
|
2601
2645
|
taskId,
|
|
2602
2646
|
status: 'repeating_failure',
|
|
2603
2647
|
waitedMs: earlyMs,
|
|
2604
|
-
note: repeatingFailureNote(
|
|
2648
|
+
note: repeatingFailureNote(noted, {
|
|
2605
2649
|
taskId,
|
|
2606
2650
|
log,
|
|
2607
2651
|
stop: await taskStopCommand(backend, taskId),
|
|
@@ -2614,6 +2658,10 @@ export function buildTools(backend, config) {
|
|
|
2614
2658
|
// to keep waiting for the run's own result, so it must not be told one in the status. The
|
|
2615
2659
|
// look keeps running for the same reason: an app that goes down mid-run turns a shared
|
|
2616
2660
|
// duration into a proven whole-run cause, and that one is worth returning early for.
|
|
2661
|
+
// Without a repeated signature there is no lead to note (the empty-page cause above is
|
|
2662
|
+
// the only reading that needs none).
|
|
2663
|
+
if (!found)
|
|
2664
|
+
continue;
|
|
2617
2665
|
if (!midRunLeadNoted.has(taskId)) {
|
|
2618
2666
|
midRunLeadNoted.add(taskId);
|
|
2619
2667
|
// A run against the sandbox's own app is changed by an edit while it walks — the two
|
|
@@ -78,6 +78,16 @@ export interface TraceArtifact {
|
|
|
78
78
|
line: number;
|
|
79
79
|
/** The requests the page made, the interesting ones first ({@link traceArtifactsScript}). */
|
|
80
80
|
requests: TraceRequest[];
|
|
81
|
+
/**
|
|
82
|
+
* The request the failing step itself sent: the trace's LAST `fetch`/`xhr` in recording order
|
|
83
|
+
* (a click's own call), else its document request. It leads the note's row, because a click that
|
|
84
|
+
* changed nothing is explained by the request the click sent and what came back — xr-molecule-
|
|
85
|
+
* flash-m135's Follow click sent `DELETE /api/profiles/x/follow → 200` (its `following` state was
|
|
86
|
+
* stale) and the note listed only the test's earlier, answered requests.
|
|
87
|
+
*
|
|
88
|
+
* Absent when the trace recorded neither, and on traces read before this field existed.
|
|
89
|
+
*/
|
|
90
|
+
lead?: TraceRequest;
|
|
81
91
|
/** The console errors and page errors the page raised. */
|
|
82
92
|
console: string[];
|
|
83
93
|
/**
|
|
@@ -107,6 +117,12 @@ export declare const TRACE_NOTE_URL_CHARS = 96;
|
|
|
107
117
|
export declare const TRACE_NOTE_SENT_CHARS = 160;
|
|
108
118
|
/** How much of the response body the note prints — the API's first error line. */
|
|
109
119
|
export declare const TRACE_NOTE_GOT_CHARS = 120;
|
|
120
|
+
/**
|
|
121
|
+
* How much of the FAILING STEP's response body the note prints. Longer than
|
|
122
|
+
* {@link TRACE_NOTE_GOT_CHARS}: it is the one line that answers "what did the click actually get
|
|
123
|
+
* back", and an app's own body (`{"profile":{…}}`) can carry the answer past its first clause.
|
|
124
|
+
*/
|
|
125
|
+
export declare const TRACE_NOTE_LEAD_GOT_CHARS = 200;
|
|
110
126
|
/**
|
|
111
127
|
* The Node program the sandbox runs to read a failed run's traces: `node <script> <dir>` prints one
|
|
112
128
|
* `TRACE <json>` line per `trace.zip` under `<dir>` (newest first, {@link MAX_TRACE_ARTIFACTS} of
|
|
@@ -173,6 +189,23 @@ export declare function failedRequest(request: TraceRequest): boolean;
|
|
|
173
189
|
* @returns True when the request is still in flight and worth naming.
|
|
174
190
|
*/
|
|
175
191
|
export declare function unansweredRequest(request: TraceRequest): boolean;
|
|
192
|
+
/**
|
|
193
|
+
* Whether a trace recorded a DOCUMENT SUBRESOURCE that never finished: a stylesheet, script or
|
|
194
|
+
* other asset the page itself loads, with no response and no error text — still in flight when
|
|
195
|
+
* the navigation timed out.
|
|
196
|
+
*
|
|
197
|
+
* The page shell's own incidental requests (`/sw.js`, the manifest, a favicon, a font) are
|
|
198
|
+
* excepted for the reason {@link isStaticAssetRequest} documents: m125's run was sent to write a
|
|
199
|
+
* caching service worker by an aborted `/sw.js`. A pending `/assets/*.css` is different — the
|
|
200
|
+
* navigation blocks on it, so it is the reason `page.goto` ran out of time rather than one of the
|
|
201
|
+
* app's API calls (xr-molecule-flash-m135 +34:10: three deployed `page.goto` timeouts on tests that
|
|
202
|
+
* pass locally, one 88 KB stylesheet fetch measured at 27 s, and the failing tests' traces each
|
|
203
|
+
* held the never-answered CSS while the note said "the cause is in the page").
|
|
204
|
+
*
|
|
205
|
+
* @param request - One request a trace recorded.
|
|
206
|
+
* @returns True when the request is a document subresource that never finished.
|
|
207
|
+
*/
|
|
208
|
+
export declare function stalledDocumentSubresource(request: TraceRequest): boolean;
|
|
176
209
|
/**
|
|
177
210
|
* The note a failed suite run's result carries: what each failing test's page actually sent, and
|
|
178
211
|
* what came back.
|
|
@@ -193,6 +226,12 @@ export declare function unansweredRequest(request: TraceRequest): boolean;
|
|
|
193
226
|
* line rather than inferred from the status; when one of those bodies is an object whose only key
|
|
194
227
|
* is `data`, the note names the call shape that produces it (xr-molecule-flash-m111 +11:36).
|
|
195
228
|
*
|
|
229
|
+
* Every row opens with the request the failing step ITSELF sent ({@link TraceArtifact.lead}) and
|
|
230
|
+
* its response — whatever its status — because the question a `waiting for locator` failure asks
|
|
231
|
+
* is what the click did: xr-molecule-flash-m135's Follow click sent `DELETE …/follow → 200` (an
|
|
232
|
+
* unfollow, from a stale `following` state) and the run's result named only the test's earlier
|
|
233
|
+
* answered requests, so the executor spent 14 minutes on its own browser probes.
|
|
234
|
+
*
|
|
196
235
|
* WHICH rows it spends is evidence, not artifact order (xr-molecule-flash-m112 +53:46): a row
|
|
197
236
|
* needs a recorded response, a real failure or a console error ({@link traceRowEvidence}), rows are
|
|
198
237
|
* deduplicated by the test's location, and they are ordered real failure → repeated from an
|
|
@@ -204,14 +243,31 @@ export declare function unansweredRequest(request: TraceRequest): boolean;
|
|
|
204
243
|
* transport error (`net::ERR_CONTENT_DECODING_FAILED` and friends) and the document it hit: nothing
|
|
205
244
|
* rendered, so no row below is app evidence (xr-molecule-flash-m118 +37:09).
|
|
206
245
|
*
|
|
246
|
+
* When a navigation never finished and one of the document's own subresources (a stylesheet, a
|
|
247
|
+
* script, an asset under `/assets/`) never got a response either, that request takes a row and the
|
|
248
|
+
* note says the page was waiting on it. It is not an API call, but on a `page.goto` timeout it is
|
|
249
|
+
* the only request that can explain the timeout — the deployed app was serving the page while one
|
|
250
|
+
* fetch stalled for 27 s (xr-molecule-flash-m135 +34:10). The page shell's incidental requests
|
|
251
|
+
* (`/sw.js`, the manifest, a favicon, a font) stay out, for m125's reason.
|
|
252
|
+
*
|
|
253
|
+
* A 404 whose path lacks the API prefix the app's own calls carry is called out with that prefix
|
|
254
|
+
* ({@link missingApiPrefixRequests}): xr-molecule-flash-m145 posted `/users` to `vite preview`,
|
|
255
|
+
* whose 404 was answered by the static server because the HTTP client's `baseURL` was never set —
|
|
256
|
+
* and the note printed "read the handler this route reaches in your own source", which presumes a
|
|
257
|
+
* request that never reached the API. The prefix is READ (the caller passes what the app's client
|
|
258
|
+
* config names; the traces add what their own requests show) and never assumed to be `/api`.
|
|
259
|
+
*
|
|
207
260
|
* @param items - The traces {@link parseTraceArtifacts} read.
|
|
208
261
|
* @param target - Where the run went — the deployed host, as the note names it.
|
|
209
262
|
* @param earlierFailures - The failing `file:line`s earlier walks of this suite left, so a repeat
|
|
210
263
|
* is ranked above a one-off. Empty when the caller knows of no earlier walk.
|
|
264
|
+
* @param apiPrefixes - The API path prefixes the app's client config names (`['/api']`), read from
|
|
265
|
+
* the app by the caller. Empty when the caller could not read one; the traces' own requests may
|
|
266
|
+
* still supply it. Never a hard-coded literal.
|
|
211
267
|
* @returns The note, or null when no trace held a recorded response, a real failure or a console
|
|
212
268
|
* error.
|
|
213
269
|
*/
|
|
214
|
-
export declare function failureTraceNote(items: readonly TraceArtifact[], target: string, earlierFailures?: readonly string[]): string | null;
|
|
270
|
+
export declare function failureTraceNote(items: readonly TraceArtifact[], target: string, earlierFailures?: readonly string[], apiPrefixes?: readonly string[]): string | null;
|
|
215
271
|
/**
|
|
216
272
|
* Whether a Playwright config records traces for the tests that fail.
|
|
217
273
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,iEAAiE;AACjE,MAAM,WAAW,YAAY;IAC3B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,iGAAiG;IACjG,IAAI,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAA;IACd;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,oFAAoF;IACpF,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,gFAAgF;AAChF,MAAM,WAAW,WAAW;IAC1B,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAA;IACX,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;CACnB;AAED,iGAAiG;AACjG,MAAM,WAAW,aAAa;IAC5B,0FAA0F;IAC1F,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,+EAA+E;IAC/E,IAAI,EAAE,MAAM,CAAA;IACZ,6FAA6F;IAC7F,QAAQ,EAAE,YAAY,EAAE,CAAA;IACxB,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB;;;;OAIG;IACH,OAAO,EAAE,WAAW,EAAE,CAAA;CACvB;AAED,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,KAAK,CAAA;AAErC,sDAAsD;AACtD,eAAO,MAAM,mBAAmB,IAAI,CAAA;AAEpC,4DAA4D;AAC5D,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,KAAK,CAAA;AAEpC,yFAAyF;AACzF,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAExC,uDAAuD;AACvD,eAAO,MAAM,oBAAoB,IAAI,CAAA;AAErC,iDAAiD;AACjD,eAAO,MAAM,uBAAuB,IAAI,CAAA;AAExC,gEAAgE;AAChE,eAAO,MAAM,oBAAoB,KAAK,CAAA;AAEtC,wFAAwF;AACxF,eAAO,MAAM,qBAAqB,MAAM,CAAA;AAExC,kFAAkF;AAClF,eAAO,MAAM,oBAAoB,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"trace-artifacts.d.ts","sourceRoot":"","sources":["../src/trace-artifacts.ts"],"names":[],"mappings":"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"}
|