@jevitate/cli 0.2.0 → 0.3.0
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/dist/ai-cli.d.ts +31 -11
- package/dist/ai-cli.js +100 -67
- package/dist/ai-cli.js.map +1 -1
- package/dist/author-journey-cli.js +3 -1
- package/dist/author-journey-cli.js.map +1 -1
- package/dist/bin.js +48218 -39969
- package/dist/browser-run-options.d.ts +32 -1
- package/dist/browser-run-options.js +69 -0
- package/dist/browser-run-options.js.map +1 -1
- package/dist/build-info.generated.js +2 -2
- package/dist/campaign-api.d.ts +151 -0
- package/dist/campaign-api.js +446 -0
- package/dist/campaign-api.js.map +1 -0
- package/dist/campaign-cli.d.ts +6 -0
- package/dist/campaign-cli.js +66 -0
- package/dist/campaign-cli.js.map +1 -0
- package/dist/check-api.js +3 -2
- package/dist/check-api.js.map +1 -1
- package/dist/check-budget.js +2 -1
- package/dist/check-budget.js.map +1 -1
- package/dist/check-execute.d.ts +4 -0
- package/dist/check-execute.js +41 -6
- package/dist/check-execute.js.map +1 -1
- package/dist/check-plan.d.ts +5 -0
- package/dist/check-plan.js +72 -4
- package/dist/check-plan.js.map +1 -1
- package/dist/check-suite.d.ts +14 -1
- package/dist/check-suite.js +26 -1
- package/dist/check-suite.js.map +1 -1
- package/dist/cli-output.d.ts +4 -0
- package/dist/cli-output.js +52 -5
- package/dist/cli-output.js.map +1 -1
- package/dist/cli-shared.d.ts +13 -3
- package/dist/cli-shared.js +52 -7
- package/dist/cli-shared.js.map +1 -1
- package/dist/defect-evidence.js +6 -3
- package/dist/defect-evidence.js.map +1 -1
- package/dist/demo-aspect-api.js +2 -1
- package/dist/demo-aspect-api.js.map +1 -1
- package/dist/demo-aspect-cli.js +3 -1
- package/dist/demo-aspect-cli.js.map +1 -1
- package/dist/demo-capture.d.ts +37 -3
- package/dist/demo-capture.js +119 -20
- package/dist/demo-capture.js.map +1 -1
- package/dist/explore-adversarial.d.ts +11 -4
- package/dist/explore-adversarial.js +21 -12
- package/dist/explore-adversarial.js.map +1 -1
- package/dist/explore-cli.js +262 -26
- package/dist/explore-cli.js.map +1 -1
- package/dist/explore-coverage.d.ts +17 -2
- package/dist/explore-coverage.js +19 -13
- package/dist/explore-coverage.js.map +1 -1
- package/dist/explore-feature.d.ts +0 -2
- package/dist/explore-feature.js +6 -8
- package/dist/explore-feature.js.map +1 -1
- package/dist/explore-goal.d.ts +25 -7
- package/dist/explore-goal.js +61 -18
- package/dist/explore-goal.js.map +1 -1
- package/dist/explore-shared.d.ts +27 -2
- package/dist/explore-shared.js +21 -1
- package/dist/explore-shared.js.map +1 -1
- package/dist/fixture-auth.d.ts +13 -2
- package/dist/fixture-auth.js +19 -6
- package/dist/fixture-auth.js.map +1 -1
- package/dist/fixture-cli.d.ts +29 -0
- package/dist/fixture-cli.js +121 -7
- package/dist/fixture-cli.js.map +1 -1
- package/dist/github-issue-filer.js +2 -1
- package/dist/github-issue-filer.js.map +1 -1
- package/dist/host-health-run.d.ts +2 -1
- package/dist/host-health-run.js +8 -2
- package/dist/host-health-run.js.map +1 -1
- package/dist/init-cli.js +34 -5
- package/dist/init-cli.js.map +1 -1
- package/dist/init-keys.d.ts +11 -0
- package/dist/init-keys.js +5 -2
- package/dist/init-keys.js.map +1 -1
- package/dist/journey-annotate-api.js +17 -4
- package/dist/journey-annotate-api.js.map +1 -1
- package/dist/journey-annotate-cli.js +3 -1
- package/dist/journey-annotate-cli.js.map +1 -1
- package/dist/journey-api.d.ts +26 -1
- package/dist/journey-api.js +51 -25
- package/dist/journey-api.js.map +1 -1
- package/dist/journey-cli.d.ts +1 -1
- package/dist/journey-cli.js +44 -3
- package/dist/journey-cli.js.map +1 -1
- package/dist/journey-demo-api.d.ts +2 -0
- package/dist/journey-demo-api.js +23 -10
- package/dist/journey-demo-api.js.map +1 -1
- package/dist/journey-demo-cli.js +5 -2
- package/dist/journey-demo-cli.js.map +1 -1
- package/dist/journey-prefix.d.ts +194 -0
- package/dist/journey-prefix.js +279 -0
- package/dist/journey-prefix.js.map +1 -0
- package/dist/key-report.d.ts +49 -0
- package/dist/key-report.js +101 -0
- package/dist/key-report.js.map +1 -0
- package/dist/kill-signal.js +0 -1
- package/dist/kill-signal.js.map +1 -1
- package/dist/ledger-api.js +3 -1
- package/dist/ledger-api.js.map +1 -1
- package/dist/log-correlation.d.ts +54 -1
- package/dist/log-correlation.js +83 -14
- package/dist/log-correlation.js.map +1 -1
- package/dist/log-sources.js +6 -5
- package/dist/log-sources.js.map +1 -1
- package/dist/log-trace.d.ts +80 -0
- package/dist/log-trace.js +210 -0
- package/dist/log-trace.js.map +1 -0
- package/dist/logs-retention.js +2 -1
- package/dist/logs-retention.js.map +1 -1
- package/dist/masked-input.d.ts +22 -0
- package/dist/masked-input.js +99 -0
- package/dist/masked-input.js.map +1 -0
- package/dist/mcp-api.d.ts +3 -1
- package/dist/mcp-api.js +49 -7
- package/dist/mcp-api.js.map +1 -1
- package/dist/mcp-args.d.ts +12 -0
- package/dist/mcp-args.js +33 -0
- package/dist/mcp-args.js.map +1 -1
- package/dist/mcp-cli-tools.d.ts +5 -1
- package/dist/mcp-cli-tools.js +73 -16
- package/dist/mcp-cli-tools.js.map +1 -1
- package/dist/mission-api.js +2 -1
- package/dist/mission-api.js.map +1 -1
- package/dist/mission-cli.js +2 -1
- package/dist/mission-cli.js.map +1 -1
- package/dist/mission-fixtures.d.ts +10 -1
- package/dist/mission-fixtures.js +49 -15
- package/dist/mission-fixtures.js.map +1 -1
- package/dist/mission-queue-runner.js +11 -2
- package/dist/mission-queue-runner.js.map +1 -1
- package/dist/multi-run-cli.js +7 -1
- package/dist/multi-run-cli.js.map +1 -1
- package/dist/openrouter-call.js +3 -2
- package/dist/openrouter-call.js.map +1 -1
- package/dist/program.js +4 -0
- package/dist/program.js.map +1 -1
- package/dist/project-dir.js +3 -2
- package/dist/project-dir.js.map +1 -1
- package/dist/record-api.d.ts +3 -1
- package/dist/record-api.js +5 -2
- package/dist/record-api.js.map +1 -1
- package/dist/record-cli.js +14 -2
- package/dist/record-cli.js.map +1 -1
- package/dist/regression-api.d.ts +6 -0
- package/dist/regression-api.js +4 -2
- package/dist/regression-api.js.map +1 -1
- package/dist/regression-cli.js +56 -4
- package/dist/regression-cli.js.map +1 -1
- package/dist/report-api.js +2 -1
- package/dist/report-api.js.map +1 -1
- package/dist/resource-preflight.d.ts +87 -0
- package/dist/resource-preflight.js +160 -0
- package/dist/resource-preflight.js.map +1 -0
- package/dist/result-schema.d.ts +1 -1
- package/dist/result-schema.js +1 -1
- package/dist/run-key-preflight.d.ts +42 -0
- package/dist/run-key-preflight.js +82 -0
- package/dist/run-key-preflight.js.map +1 -0
- package/dist/run-screenshots.js +11 -5
- package/dist/run-screenshots.js.map +1 -1
- package/dist/runtime-env.js +3 -2
- package/dist/runtime-env.js.map +1 -1
- package/dist/server-log-verify.d.ts +2 -0
- package/dist/server-log-verify.js +8 -3
- package/dist/server-log-verify.js.map +1 -1
- package/dist/site-gate-cli.js +2 -1
- package/dist/site-gate-cli.js.map +1 -1
- package/dist/source-api.js +2 -1
- package/dist/source-api.js.map +1 -1
- package/dist/suite-explore-options.d.ts +32 -0
- package/dist/suite-explore-options.js +22 -0
- package/dist/suite-explore-options.js.map +1 -1
- package/dist/target-config.d.ts +6 -0
- package/dist/target-config.js +9 -0
- package/dist/target-config.js.map +1 -1
- package/dist/type-fixture-file.d.ts +9 -0
- package/dist/type-fixture-file.js +48 -0
- package/dist/type-fixture-file.js.map +1 -0
- package/dist/ui-api.js +4 -3
- package/dist/ui-api.js.map +1 -1
- package/dist/usability-capture.js +4 -3
- package/dist/usability-capture.js.map +1 -1
- package/dist/usage-config.d.ts +1 -1
- package/dist/usage-config.js +1 -1
- package/dist/ux-claim-probe.d.ts +45 -0
- package/dist/ux-claim-probe.js +386 -0
- package/dist/ux-claim-probe.js.map +1 -0
- package/dist/ux-cli.js +8 -1
- package/dist/ux-cli.js.map +1 -1
- package/dist/ux-product.d.ts +14 -0
- package/dist/ux-product.js +39 -0
- package/dist/ux-product.js.map +1 -0
- package/dist/ux-review.d.ts +4 -0
- package/dist/ux-review.js +27 -7
- package/dist/ux-review.js.map +1 -1
- package/dist/ux-usability.d.ts +34 -9
- package/dist/ux-usability.js +100 -14
- package/dist/ux-usability.js.map +1 -1
- package/dist/verify-fix-api.d.ts +21 -0
- package/dist/verify-fix-api.js +85 -33
- package/dist/verify-fix-api.js.map +1 -1
- package/dist/verify-fix-cli.js +7 -2
- package/dist/verify-fix-cli.js.map +1 -1
- package/package.json +9 -9
- package/skills/jevitate-explore/SKILL.md +8 -0
- package/skills/jevitate-getting-started/SKILL.md +2 -1
- package/skills/jevitate-test-campaign/SKILL.md +203 -0
|
@@ -2,6 +2,7 @@ import { type MissionOutcome } from "@jevitate/domain";
|
|
|
2
2
|
import { type TranscriptEntry } from "@jevitate/explore";
|
|
3
3
|
import { type LogSourceSpec } from "./log-sources.js";
|
|
4
4
|
import { type LogDefectMatcher, type LogIgnoreMatcher, type LogLevel } from "./log-lines.js";
|
|
5
|
+
import { type RequestEvents } from "./log-trace.js";
|
|
5
6
|
/**
|
|
6
7
|
* Correlates tailed backend log lines to the mission step they landed during (#142): each step's
|
|
7
8
|
* "window" runs from the previous step's settle time to this step's own settle time (a mission's
|
|
@@ -16,6 +17,15 @@ import { type LogDefectMatcher, type LogIgnoreMatcher, type LogLevel } from "./l
|
|
|
16
17
|
* Fail closed: every line is redacted with the run's own secret list before it is ever attached to
|
|
17
18
|
* a step, turned into a defect, or counted in the summary — a log line can contain secrets the page
|
|
18
19
|
* never showed.
|
|
20
|
+
*
|
|
21
|
+
* #204 — by trace / correlation id first: a line that carries an id one of the run's requests sent
|
|
22
|
+
* or received (`traceparent`, `x-request-id`, …; see `log-trace.ts`) is attached to EXACTLY that
|
|
23
|
+
* request (`request: { method, url, status, id }`) and to the step that sent it, whenever it
|
|
24
|
+
* landed. Only a line with no id falls back to the time window. Once ids demonstrably correlate, a
|
|
25
|
+
* line carrying ANOTHER id is other work (another user, a background job) and is never this run's.
|
|
26
|
+
*
|
|
27
|
+
* #282 — `--log-scope`: when given, only lines matching it (a tenant id, a run marker) are
|
|
28
|
+
* attributed; the rest count as `ignoredLines`. A line carrying one of the run's ids is in scope.
|
|
19
29
|
*/
|
|
20
30
|
export interface ServerLogEvidence {
|
|
21
31
|
readonly level: LogLevel;
|
|
@@ -27,6 +37,18 @@ export interface ServerLogEvidence {
|
|
|
27
37
|
readonly epochMs: number;
|
|
28
38
|
/** The logger's own target/category, when known (#169). */
|
|
29
39
|
readonly target?: string;
|
|
40
|
+
/**
|
|
41
|
+
* #204: the run's request this line was correlated to by a trace/correlation id it carries —
|
|
42
|
+
* method, redacted URL, response status (null: no response) and the id. Unset: attached by time.
|
|
43
|
+
*/
|
|
44
|
+
readonly request?: ServerLogRequest;
|
|
45
|
+
}
|
|
46
|
+
/** #204: the request a server log line belongs to, by a correlation id both carry. */
|
|
47
|
+
export interface ServerLogRequest {
|
|
48
|
+
readonly method: string;
|
|
49
|
+
readonly url: string;
|
|
50
|
+
readonly status: number | null;
|
|
51
|
+
readonly id: string;
|
|
30
52
|
}
|
|
31
53
|
export type TranscriptEntryWithLogs = TranscriptEntry & {
|
|
32
54
|
readonly serverLogs?: readonly ServerLogEvidence[];
|
|
@@ -56,8 +78,21 @@ export interface ServerLogsSummary {
|
|
|
56
78
|
readonly attachedLines: number;
|
|
57
79
|
readonly unattributedLines: number;
|
|
58
80
|
/** Lines excluded by `--log-ignore` (#169 item 3) — known noise, never attached, never a defect
|
|
59
|
-
* candidate, not counted in `byLevel`/`topMessages
|
|
81
|
+
* candidate, not counted in `byLevel`/`topMessages` — plus lines outside `--log-scope` (#282) and
|
|
82
|
+
* lines carrying another request's correlation id (#204), broken down in `correlation`. */
|
|
60
83
|
readonly ignoredLines: number;
|
|
84
|
+
/**
|
|
85
|
+
* #204/#282: how lines were correlated — set when a request carried a correlation id or
|
|
86
|
+
* `--log-scope` was given. `idMatchedLines`: attached to their exact request by id;
|
|
87
|
+
* `foreignLines`: carried another request's id (never this run's); `outOfScopeLines`: outside
|
|
88
|
+
* `--log-scope`. The last two are included in `ignoredLines`.
|
|
89
|
+
*/
|
|
90
|
+
readonly correlation?: {
|
|
91
|
+
readonly requestsWithIds: number;
|
|
92
|
+
readonly idMatchedLines: number;
|
|
93
|
+
readonly foreignLines: number;
|
|
94
|
+
readonly outOfScopeLines: number;
|
|
95
|
+
};
|
|
61
96
|
/**
|
|
62
97
|
* False when `--log-defect` was given but at least one declared source is unhealthy: it never
|
|
63
98
|
* opened/errored, OR it opened and delivered not one line while NOT declared `--log-quiet-ok`
|
|
@@ -82,12 +117,16 @@ export interface ServerLogDefect {
|
|
|
82
117
|
readonly repro: {
|
|
83
118
|
readonly recordingStepIndex: number;
|
|
84
119
|
};
|
|
120
|
+
/** #204: the request the first occurrence was correlated to by id, when it was. */
|
|
121
|
+
readonly request?: ServerLogRequest;
|
|
85
122
|
/** So `verify-fix` can re-open the SAME sources and re-check the SAME matcher (#142). */
|
|
86
123
|
readonly serverLog: {
|
|
87
124
|
readonly sources: readonly string[];
|
|
88
125
|
readonly matcher: string;
|
|
89
126
|
readonly normalizedMessage: string;
|
|
90
127
|
readonly drainMs: number;
|
|
128
|
+
/** #282: the run's `--log-scope` (raw specs): verify-fix counts only lines in scope too. */
|
|
129
|
+
readonly scope?: readonly string[];
|
|
91
130
|
};
|
|
92
131
|
}
|
|
93
132
|
export interface ServerLogRuntimeResult {
|
|
@@ -108,6 +147,13 @@ export interface ServerLogRuntimeOptions {
|
|
|
108
147
|
/** Already-parsed `--log-ignore` matchers (#169 item 3): known-noise lines excluded from
|
|
109
148
|
* correlation AND the defect oracle, counted separately (`serverLogs.ignoredLines`). */
|
|
110
149
|
readonly logIgnore?: readonly LogIgnoreMatcher[];
|
|
150
|
+
/** #282: `--log-scope` matchers (same `/regex/` or substring grammar as `--log-ignore`): only lines
|
|
151
|
+
* matching one are attributed (or carrying one of the run's correlation ids); the rest are ignored. */
|
|
152
|
+
readonly logScope?: readonly LogIgnoreMatcher[];
|
|
153
|
+
/** #204: extra response/request headers carrying a correlation id (`--log-correlation-header`). */
|
|
154
|
+
readonly correlationHeaders?: readonly string[];
|
|
155
|
+
/** #204: `--log-id-pattern`s: how an id is written in a log line of the operator's own format. */
|
|
156
|
+
readonly idPatterns?: readonly RegExp[];
|
|
111
157
|
/** The journal's own listener — still called for every entry (the crash-safe flush is unchanged). */
|
|
112
158
|
readonly onTranscriptEntry?: (entry: TranscriptEntry, all: readonly TranscriptEntry[]) => void;
|
|
113
159
|
}
|
|
@@ -119,6 +165,11 @@ export declare function openServerLogRuntime(opts: ServerLogRuntimeOptions): Ser
|
|
|
119
165
|
export declare class ServerLogRuntime {
|
|
120
166
|
#private;
|
|
121
167
|
constructor(opts: ServerLogRuntimeOptions);
|
|
168
|
+
/**
|
|
169
|
+
* #204: records the correlation ids of every request this page sends and receives. Call before
|
|
170
|
+
* the page's first navigation (the seed load's requests count too).
|
|
171
|
+
*/
|
|
172
|
+
observe(page: RequestEvents): void;
|
|
122
173
|
/** Wraps the journal's own `TranscriptListener`: unchanged persistence, plus this step's epoch. */
|
|
123
174
|
readonly onTranscriptEntry: (entry: TranscriptEntry, all: readonly TranscriptEntry[]) => void;
|
|
124
175
|
/** Call once the mission function has returned. Waits out the drain window, closes every source,
|
|
@@ -135,6 +186,8 @@ export declare class ServerLogRuntime {
|
|
|
135
186
|
export declare function parseLogDefectSpecs(raw: readonly string[]): LogDefectMatcher[];
|
|
136
187
|
/** Parses `--log-ignore` values, failing closed on the first bad one (#169 item 3). */
|
|
137
188
|
export declare function parseLogIgnoreSpecs(raw: readonly string[]): LogIgnoreMatcher[];
|
|
189
|
+
/** Parses `--log-scope` values (#282): the `--log-ignore` grammar, a `/regex/flags/` or a substring. */
|
|
190
|
+
export declare function parseLogScopeSpecs(raw: readonly string[]): LogIgnoreMatcher[];
|
|
138
191
|
/**
|
|
139
192
|
* Folds a server-log correlation result into an already-computed `MissionOutcome` (#142, follow-up
|
|
140
193
|
* on the exit-code requirement): a found `server-log` defect is at least `defects-found` — via
|
package/dist/log-correlation.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { redactText } from "@jevitate/ai-core";
|
|
2
|
-
import { worstOutcome } from "@jevitate/domain";
|
|
2
|
+
import { worstOutcome, clock } from "@jevitate/domain";
|
|
3
3
|
import { normalizeRoute } from "@jevitate/explore";
|
|
4
4
|
import { closeLogSources, openLogSources, } from "./log-sources.js";
|
|
5
|
-
import { DotnetEntryGrouper, matchesLogDefect, matchesLogIgnore, normalizeLogMessage, parseLogDefectSpec, parseLogIgnoreSpec, parseLogLine, serverLogFingerprint, } from "./log-lines.js";
|
|
5
|
+
import { DotnetEntryGrouper, LogSpecError, matchesLogDefect, matchesLogIgnore, normalizeLogMessage, parseLogDefectSpec, parseLogIgnoreSpec, parseLogLine, serverLogFingerprint, } from "./log-lines.js";
|
|
6
|
+
import { RequestIdLedger, declaredIds } from "./log-trace.js";
|
|
6
7
|
const UNATTRIBUTED_ROUTE = "(run)";
|
|
7
8
|
/** Only these levels are auto-attached as step evidence (a `--log-defect` match is ALWAYS attached,
|
|
8
9
|
* whatever its level, since it is now a candidate defect). */
|
|
@@ -10,7 +11,7 @@ const ATTACH_LEVELS = new Set(["warn", "error"]);
|
|
|
10
11
|
export const DEFAULT_SERVER_LOG_DRAIN_MS = 3_000;
|
|
11
12
|
function sleep(ms) {
|
|
12
13
|
return new Promise((resolve) => {
|
|
13
|
-
const t = setTimeout(resolve, ms);
|
|
14
|
+
const t = clock.setTimeout(resolve, ms);
|
|
14
15
|
t.unref?.();
|
|
15
16
|
});
|
|
16
17
|
}
|
|
@@ -28,12 +29,15 @@ export class ServerLogRuntime {
|
|
|
28
29
|
#groupers = [];
|
|
29
30
|
#lines = [];
|
|
30
31
|
#stepEpoch = new Map();
|
|
31
|
-
#missionStartEpochMs =
|
|
32
|
+
#missionStartEpochMs = clock.now();
|
|
32
33
|
#secrets;
|
|
33
34
|
#matchers;
|
|
34
35
|
#drainMs;
|
|
35
36
|
#quietOk;
|
|
36
37
|
#logIgnore;
|
|
38
|
+
#logScope;
|
|
39
|
+
#idPatterns;
|
|
40
|
+
#ledger;
|
|
37
41
|
#ignoredLines = 0;
|
|
38
42
|
#inner;
|
|
39
43
|
#maxTotalLines = 20_000;
|
|
@@ -48,6 +52,9 @@ export class ServerLogRuntime {
|
|
|
48
52
|
this.#drainMs = opts.drainMs ?? DEFAULT_SERVER_LOG_DRAIN_MS;
|
|
49
53
|
this.#quietOk = new Set(opts.quietOk ?? []);
|
|
50
54
|
this.#logIgnore = opts.logIgnore ?? [];
|
|
55
|
+
this.#logScope = opts.logScope ?? [];
|
|
56
|
+
this.#idPatterns = opts.idPatterns ?? [];
|
|
57
|
+
this.#ledger = new RequestIdLedger({ headers: opts.correlationHeaders ?? [] });
|
|
51
58
|
this.#inner = opts.onTranscriptEntry;
|
|
52
59
|
// One `openLogSources` call per spec: each source's `onLine` must stamp ITS OWN spec onto every
|
|
53
60
|
// `LogLine` (a shared callback across sources could not tell them apart). Each source also gets
|
|
@@ -87,9 +94,16 @@ export class ServerLogRuntime {
|
|
|
87
94
|
this.#pushLine(entry.raw, entry.epochMs, spec);
|
|
88
95
|
});
|
|
89
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* #204: records the correlation ids of every request this page sends and receives. Call before
|
|
99
|
+
* the page's first navigation (the seed load's requests count too).
|
|
100
|
+
*/
|
|
101
|
+
observe(page) {
|
|
102
|
+
this.#ledger.observe(page);
|
|
103
|
+
}
|
|
90
104
|
/** Wraps the journal's own `TranscriptListener`: unchanged persistence, plus this step's epoch. */
|
|
91
105
|
onTranscriptEntry = (entry, all) => {
|
|
92
|
-
this.#stepEpoch.set(entry.step,
|
|
106
|
+
this.#stepEpoch.set(entry.step, clock.now());
|
|
93
107
|
this.#inner?.(entry, all);
|
|
94
108
|
};
|
|
95
109
|
/** Call once the mission function has returned. Waits out the drain window, closes every source,
|
|
@@ -97,7 +111,7 @@ export class ServerLogRuntime {
|
|
|
97
111
|
* empty result) — never blocks the mission itself, only this post-processing step. */
|
|
98
112
|
async finish(transcript) {
|
|
99
113
|
if (this.#finished)
|
|
100
|
-
return { transcript, summary: this.#summary([]), defects: [] };
|
|
114
|
+
return { transcript, summary: this.#summary([], this.#lines), defects: [] };
|
|
101
115
|
this.#finished = true;
|
|
102
116
|
await sleep(this.#drainMs);
|
|
103
117
|
this.#flushGroupers();
|
|
@@ -122,8 +136,37 @@ export class ServerLogRuntime {
|
|
|
122
136
|
const perStepRaw = new Map();
|
|
123
137
|
const unattributed = [];
|
|
124
138
|
let attachedLines = 0;
|
|
139
|
+
// #204: which lines carry one of the run's own correlation ids (and so belong to that request).
|
|
140
|
+
const byId = new Map();
|
|
125
141
|
for (const line of this.#lines) {
|
|
126
|
-
const
|
|
142
|
+
const hit = this.#ledger.requestFor(line.raw);
|
|
143
|
+
if (hit !== undefined)
|
|
144
|
+
byId.set(line, hit);
|
|
145
|
+
}
|
|
146
|
+
// Ids demonstrably correlate (a line matched one): a line declaring ANOTHER id is other work.
|
|
147
|
+
const idsLive = byId.size > 0;
|
|
148
|
+
let foreignLines = 0;
|
|
149
|
+
let outOfScopeLines = 0;
|
|
150
|
+
const kept = [];
|
|
151
|
+
for (const line of this.#lines) {
|
|
152
|
+
if (!byId.has(line)) {
|
|
153
|
+
if (this.#logScope.length > 0 && !this.#logScope.some((m) => matchesLogIgnore(line, m))) {
|
|
154
|
+
outOfScopeLines += 1;
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
157
|
+
if (idsLive && declaredIds(line.raw, this.#idPatterns).length > 0) {
|
|
158
|
+
foreignLines += 1;
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
kept.push(line);
|
|
163
|
+
}
|
|
164
|
+
const windowAt = (epochMs) => windows.find((w) => epochMs >= w.startMs && epochMs <= w.endMs) ?? (epochMs < (windows[0]?.startMs ?? 0) ? windows[0] : undefined);
|
|
165
|
+
const requests = new Map();
|
|
166
|
+
for (const line of kept) {
|
|
167
|
+
const hit = byId.get(line);
|
|
168
|
+
// An id-correlated line belongs to the step that SENT its request, whenever the line landed.
|
|
169
|
+
const win = hit === undefined ? windows.find((w) => line.epochMs >= w.startMs && line.epochMs <= w.endMs) : windowAt(hit.request.startedAtMs);
|
|
127
170
|
const isDefectCandidate = this.#matchers.some((m) => matchesLogDefect(line, m));
|
|
128
171
|
const attach = ATTACH_LEVELS.has(line.level) || isDefectCandidate;
|
|
129
172
|
if (win === undefined) {
|
|
@@ -134,6 +177,11 @@ export class ServerLogRuntime {
|
|
|
134
177
|
if (!attach)
|
|
135
178
|
continue;
|
|
136
179
|
attachedLines += 1;
|
|
180
|
+
const request = hit === undefined
|
|
181
|
+
? undefined
|
|
182
|
+
: { method: hit.request.method, url: redactText(hit.request.url, this.#secrets), status: hit.request.status, id: redactText(hit.id, this.#secrets) };
|
|
183
|
+
if (request !== undefined)
|
|
184
|
+
requests.set(line, request);
|
|
137
185
|
const list = perStep.get(win.step) ?? [];
|
|
138
186
|
list.push({
|
|
139
187
|
level: line.level,
|
|
@@ -142,6 +190,7 @@ export class ServerLogRuntime {
|
|
|
142
190
|
source: line.source,
|
|
143
191
|
epochMs: line.epochMs,
|
|
144
192
|
...(line.target === undefined ? {} : { target: redactText(line.target, this.#secrets) }),
|
|
193
|
+
...(request === undefined ? {} : { request }),
|
|
145
194
|
});
|
|
146
195
|
perStep.set(win.step, list);
|
|
147
196
|
const rawList = perStepRaw.get(win.step) ?? [];
|
|
@@ -152,11 +201,14 @@ export class ServerLogRuntime {
|
|
|
152
201
|
const logs = perStep.get(entry.step);
|
|
153
202
|
return logs === undefined || logs.length === 0 ? entry : { ...entry, serverLogs: logs };
|
|
154
203
|
});
|
|
155
|
-
const defects = this.#matchers.length === 0 ? [] : this.#buildDefects(transcript, perStepRaw, unattributed);
|
|
156
|
-
const
|
|
204
|
+
const defects = this.#matchers.length === 0 ? [] : this.#buildDefects(transcript, perStepRaw, unattributed, requests);
|
|
205
|
+
const correlation = this.#ledger.requestsWithIds > 0 || this.#logScope.length > 0
|
|
206
|
+
? { requestsWithIds: this.#ledger.requestsWithIds, idMatchedLines: kept.filter((l) => byId.has(l)).length, foreignLines, outOfScopeLines }
|
|
207
|
+
: undefined;
|
|
208
|
+
const summary = this.#summary(unattributed, kept, attachedLines, correlation);
|
|
157
209
|
return { transcript: augmented, summary, defects };
|
|
158
210
|
}
|
|
159
|
-
#buildDefects(transcript, perStepRaw, unattributed) {
|
|
211
|
+
#buildDefects(transcript, perStepRaw, unattributed, requests) {
|
|
160
212
|
const grouped = new Map();
|
|
161
213
|
const lastStep = transcript.length > 0 ? transcript[transcript.length - 1].step : 0;
|
|
162
214
|
const consider = (line, route, atStep) => {
|
|
@@ -174,6 +226,7 @@ export class ServerLogRuntime {
|
|
|
174
226
|
// fingerprint already used internally) — two occurrences that only differ by an id in the URL
|
|
175
227
|
// read as the same defect everywhere, not just in the hash.
|
|
176
228
|
const templatedRoute = route === UNATTRIBUTED_ROUTE ? route : normalizeRoute(route);
|
|
229
|
+
const request = requests.get(line);
|
|
177
230
|
grouped.set(fp, {
|
|
178
231
|
count: 1,
|
|
179
232
|
defect: {
|
|
@@ -186,11 +239,13 @@ export class ServerLogRuntime {
|
|
|
186
239
|
message: redactText(line.message, this.#secrets),
|
|
187
240
|
occurrences: 1,
|
|
188
241
|
repro: { recordingStepIndex: recordingStepIndexFor(transcript, atStep) },
|
|
242
|
+
...(request === undefined ? {} : { request }),
|
|
189
243
|
serverLog: {
|
|
190
244
|
sources: this.#handles.map((h) => h.spec.raw),
|
|
191
245
|
matcher: matched.raw,
|
|
192
246
|
normalizedMessage,
|
|
193
247
|
drainMs: this.#drainMs,
|
|
248
|
+
...(this.#logScope.length === 0 ? {} : { scope: this.#logScope.map((m) => m.raw) }),
|
|
194
249
|
},
|
|
195
250
|
},
|
|
196
251
|
});
|
|
@@ -204,12 +259,12 @@ export class ServerLogRuntime {
|
|
|
204
259
|
consider(line, UNATTRIBUTED_ROUTE, lastStep);
|
|
205
260
|
return [...grouped.values()].map(({ defect, count }) => ({ ...defect, occurrences: count }));
|
|
206
261
|
}
|
|
207
|
-
#summary(unattributed, attachedLines = 0) {
|
|
262
|
+
#summary(unattributed, lines, attachedLines = 0, correlation) {
|
|
208
263
|
const byLevel = {};
|
|
209
|
-
for (const line of
|
|
264
|
+
for (const line of lines)
|
|
210
265
|
byLevel[line.level] = (byLevel[line.level] ?? 0) + 1;
|
|
211
266
|
const counts = new Map();
|
|
212
|
-
for (const line of
|
|
267
|
+
for (const line of lines) {
|
|
213
268
|
const message = normalizeLogMessage(line.message);
|
|
214
269
|
const key = `${line.level}|${line.target ?? ""}|${message}`;
|
|
215
270
|
const e = counts.get(key);
|
|
@@ -259,7 +314,8 @@ export class ServerLogRuntime {
|
|
|
259
314
|
topMessages,
|
|
260
315
|
attachedLines,
|
|
261
316
|
unattributedLines: unattributed.length,
|
|
262
|
-
ignoredLines: this.#ignoredLines,
|
|
317
|
+
ignoredLines: this.#ignoredLines + (correlation?.foreignLines ?? 0) + (correlation?.outOfScopeLines ?? 0),
|
|
318
|
+
...(correlation === undefined ? {} : { correlation }),
|
|
263
319
|
oracleOk,
|
|
264
320
|
...(oracleReason === undefined ? {} : { oracleReason }),
|
|
265
321
|
};
|
|
@@ -304,6 +360,19 @@ export function parseLogDefectSpecs(raw) {
|
|
|
304
360
|
export function parseLogIgnoreSpecs(raw) {
|
|
305
361
|
return raw.map(parseLogIgnoreSpec);
|
|
306
362
|
}
|
|
363
|
+
/** Parses `--log-scope` values (#282): the `--log-ignore` grammar, a `/regex/flags/` or a substring. */
|
|
364
|
+
export function parseLogScopeSpecs(raw) {
|
|
365
|
+
return raw.map((r) => {
|
|
366
|
+
try {
|
|
367
|
+
return parseLogIgnoreSpec(r);
|
|
368
|
+
}
|
|
369
|
+
catch (e) {
|
|
370
|
+
if (e instanceof LogSpecError)
|
|
371
|
+
throw new LogSpecError(e.message.replace(/--log-ignore/g, "--log-scope"));
|
|
372
|
+
throw e;
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
}
|
|
307
376
|
/**
|
|
308
377
|
* Folds a server-log correlation result into an already-computed `MissionOutcome` (#142, follow-up
|
|
309
378
|
* on the exit-code requirement): a found `server-log` defect is at least `defects-found` — via
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-correlation.js","sourceRoot":"","sources":["../src/log-correlation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAuB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,cAAc,EAAwB,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,eAAe,EACf,cAAc,GAGf,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,GAKrB,MAAM,gBAAgB,CAAC;AAmGxB,MAAM,kBAAkB,GAAG,OAAO,CAAC;AACnC;+DAC+D;AAC/D,MAAM,aAAa,GAA0B,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,CAAC;AAEjD,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAkBD;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA6B;IAChE,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChD,OAAO,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,OAAO,gBAAgB;IAClB,QAAQ,CAAoB;IAC5B,SAAS,GAAyB,EAAE,CAAC;IACrC,MAAM,GAAc,EAAE,CAAC;IACvB,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,oBAAoB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAClC,QAAQ,CAAoB;IAC5B,SAAS,CAA8B;IACvC,QAAQ,CAAS;IACjB,QAAQ,CAAsB;IAC9B,UAAU,CAA8B;IACjD,aAAa,GAAG,CAAC,CAAC;IACT,MAAM,CAAkF;IACxF,cAAc,GAAG,MAAM,CAAC;IACjC,SAAS,GAAG,KAAK,CAAC;IACT,SAAS,GAAG,GAAS,EAAE;QAC9B,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ;YAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,YAAY,IAA6B;QACvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,2BAA2B,CAAC;QAC5D,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACrC,gGAAgG;QAChG,gGAAgG;QAChG,iGAAiG;QACjG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,kBAAkB,EAAE,CAAC;YAC7C,OAAO,cAAc,CAAC,CAAC,IAAI,CAAC,EAAE;gBAC5B,MAAM,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE;oBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAuB,CAAC;oBACxD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC;wBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC5G,CAAC;aACF,CAAC,CAAC,CAAC,CAAoB,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAED,SAAS,CAAC,GAAW,EAAE,OAAe,EAAE,SAAiB;QACvD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc;YAAE,OAAO;QACtD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACrD,yFAAyF;QACzF,0FAA0F;QAC1F,yFAAyF;QACzF,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;YACxB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED;sEACkE;IAClE,cAAc;QACZ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;YACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC;YACxC,IAAI,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS;gBAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mGAAmG;IAC1F,iBAAiB,GAAG,CAAC,KAAsB,EAAE,GAA+B,EAAQ,EAAE;QAC7F,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC;IAEF;;2FAEuF;IACvF,KAAK,CAAC,MAAM,CAAC,UAAsC;QACjD,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACnF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,UAAU,CAAC,UAAsC;QAC/C,MAAM,OAAO,GAAG,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnG,MAAM,OAAO,GAAG,IAAI,GAAG,EAA+B,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAqB,CAAC;QAChD,MAAM,YAAY,GAAc,EAAE,CAAC;QACnC,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;YACtF,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YAChF,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC;YAClE,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,IAAI,MAAM;oBAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACpC,SAAS;YACX,CAAC;YACD,IAAI,CAAC,MAAM;gBAAE,SAAS;YACtB,aAAa,IAAI,CAAC,CAAC;YACnB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC;gBACR,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;gBAChD,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;gBACxC,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;aACzF,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5B,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACpC,CAAC;QAED,MAAM,SAAS,GAA8B,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACpE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QAC1F,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,UAAU,EAAE,YAAY,CAAC,CAAC;QAC5G,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;QAC3D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACrD,CAAC;IAED,aAAa,CACX,UAAsC,EACtC,UAA0C,EAC1C,YAAgC;QAEhC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAsD,CAAC;QAC9E,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAEzG,MAAM,QAAQ,GAAG,CAAC,IAAa,EAAE,KAAa,EAAE,MAAc,EAAQ,EAAE;YACtE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAO;YAClC,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5D,MAAM,EAAE,GAAG,oBAAoB,CAAC,KAAK,EAAE,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;gBACpB,OAAO;YACT,CAAC;YACD,6FAA6F;YAC7F,8FAA8F;YAC9F,4DAA4D;YAC5D,MAAM,cAAc,GAAG,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACpF,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE;gBACd,KAAK,EAAE,CAAC;gBACR,MAAM,EAAE;oBACN,WAAW,EAAE,EAAE;oBACf,OAAO,EAAE,CAAC,EAAE,CAAC;oBACb,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,cAAc,IAAI,CAAC,KAAK,OAAO,cAAc,KAAK,kBAAkB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,GAAG,KAAK,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;oBAC3M,KAAK,EAAE,cAAc;oBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,OAAO,EAAE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC;oBAChD,WAAW,EAAE,CAAC;oBACd,KAAK,EAAE,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE;oBACxE,SAAS,EAAE;wBACT,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;wBAC7C,OAAO,EAAE,OAAO,CAAC,GAAG;wBACpB,iBAAiB;wBACjB,OAAO,EAAE,IAAI,CAAC,QAAQ;qBACvB;iBACF;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;YACxB,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzF,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,YAAY;YAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;QAE9E,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/F,CAAC;IAED,QAAQ,CAAC,YAAgC,EAAE,aAAa,GAAG,CAAC;QAC1D,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAErF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAgF,CAAC;QACvG,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;;gBACzI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QACpB,CAAC;QACD,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAExF,MAAM,OAAO,GAA4B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACjE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG;YAChB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YACpD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5D,CAAC,CAAC,CAAC;QAEJ,iGAAiG;QACjG,gGAAgG;QAChG,kGAAkG;QAClG,+EAA+E;QAC/E,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YACrC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS;gBAAE,OAAO,IAAI,CAAC;YACpD,OAAO,CAAC,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;QACvE,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnG,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACjG,IAAI,YAAgC,CAAC;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,YAAY,GAAG,SAAS,CAAC;QAC3B,CAAC;aAAM,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnC,YAAY;gBACV,oJAAoJ,CAAC;QACzJ,CAAC;aAAM,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACpC,YAAY,GAAG,8BAA8B,CAAC;QAChD,CAAC;aAAM,CAAC;YACN,YAAY,GAAG,0CAA0C,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAmC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAC9J,CAAC;QAED,OAAO;YACL,OAAO;YACP,OAAO;YACP,WAAW;YACX,aAAa;YACb,iBAAiB,EAAE,YAAY,CAAC,MAAM;YACtC,YAAY,EAAE,IAAI,CAAC,aAAa;YAChC,QAAQ;YACR,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;SACxD,CAAC;IACJ,CAAC;CACF;AAED;mGACmG;AACnG,SAAS,WAAW,CAClB,UAAsC,EACtC,SAAsC,EACtC,mBAA2B,EAC3B,OAAe;IAEf,MAAM,OAAO,GAA4D,EAAE,CAAC;IAC5E,IAAI,OAAO,GAAG,mBAAmB,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAoB,CAAC;QAC/C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC;QACpD,MAAM,MAAM,GAAG,CAAC,KAAK,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5D,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB,CAAC,UAAsC,EAAE,QAAgB;IACrF,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,CAAC,IAAI,GAAG,QAAQ;YAAE,MAAM;QAC7B,IAAI,CAAC,CAAC,KAAK;YAAE,GAAG,IAAI,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1B,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,mBAAmB,CAAC,GAAsB;IACxD,OAAO,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACrC,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CAAC,GAAsB;IACxD,OAAO,GAAG,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAuB,EAAE,GAAuC;IACpG,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACtC,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC1E,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,KAAK,OAAO;QAAE,OAAO,cAAc,CAAC;IACxE,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
1
|
+
{"version":3,"file":"log-correlation.js","sourceRoot":"","sources":["../src/log-correlation.ts"],"names":[],"mappings":"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"}
|
package/dist/log-sources.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { createReadStream, statSync } from "node:fs";
|
|
3
|
+
import { clock } from "@jevitate/domain";
|
|
3
4
|
export class LogSourceSpecError extends Error {
|
|
4
5
|
code = "E_LOG_SOURCE_SPEC";
|
|
5
6
|
constructor(message) {
|
|
@@ -47,7 +48,7 @@ function lineSplitter(onLine) {
|
|
|
47
48
|
carry = lines.pop() ?? "";
|
|
48
49
|
for (const line of lines)
|
|
49
50
|
if (line !== "")
|
|
50
|
-
onLine(line,
|
|
51
|
+
onLine(line, clock.now());
|
|
51
52
|
};
|
|
52
53
|
}
|
|
53
54
|
function boundedOnLine(handle, opts) {
|
|
@@ -82,14 +83,14 @@ function openFileSource(spec, opts) {
|
|
|
82
83
|
close: async () => {
|
|
83
84
|
closed = true;
|
|
84
85
|
if (timer !== undefined)
|
|
85
|
-
clearInterval(timer);
|
|
86
|
+
clock.clearInterval(timer);
|
|
86
87
|
if (!handle.opened)
|
|
87
88
|
handle.error = `${spec.path}: never appeared during the run`;
|
|
88
89
|
},
|
|
89
90
|
killSync: () => {
|
|
90
91
|
closed = true;
|
|
91
92
|
if (timer !== undefined)
|
|
92
|
-
clearInterval(timer);
|
|
93
|
+
clock.clearInterval(timer);
|
|
93
94
|
},
|
|
94
95
|
};
|
|
95
96
|
const deliver = lineSplitter(boundedOnLine(handle, opts));
|
|
@@ -122,7 +123,7 @@ function openFileSource(spec, opts) {
|
|
|
122
123
|
stream.on("error", () => undefined);
|
|
123
124
|
position = size;
|
|
124
125
|
};
|
|
125
|
-
timer = setInterval(poll, opts.filePollMs ?? DEFAULT_FILE_POLL_MS);
|
|
126
|
+
timer = clock.setInterval(poll, opts.filePollMs ?? DEFAULT_FILE_POLL_MS);
|
|
126
127
|
timer.unref?.();
|
|
127
128
|
return handle;
|
|
128
129
|
}
|
|
@@ -169,7 +170,7 @@ function openProcessSource(spec, command, args, opts, useShell) {
|
|
|
169
170
|
}
|
|
170
171
|
const done = () => resolve();
|
|
171
172
|
child.once("exit", done);
|
|
172
|
-
const t = setTimeout(done, 2000);
|
|
173
|
+
const t = clock.setTimeout(done, 2000);
|
|
173
174
|
t.unref?.();
|
|
174
175
|
});
|
|
175
176
|
},
|
package/dist/log-sources.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-sources.js","sourceRoot":"","sources":["../src/log-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAA4B,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"log-sources.js","sourceRoot":"","sources":["../src/log-sources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request ↔ backend-log correlation by TRACE / CORRELATION ID (#204), instead of by time window.
|
|
3
|
+
*
|
|
4
|
+
* The browser side (`RequestIdLedger`) records, for every request the run's page sends, the ids it
|
|
5
|
+
* carries: W3C `traceparent` (its trace-id), `x-request-id`, `x-correlation-id`, `request-id`,
|
|
6
|
+
* `x-amzn-trace-id` (its `Root`), `x-b3-traceid`, `x-cloud-trace-context` (its trace) — on the
|
|
7
|
+
* REQUEST (a frontend with OpenTelemetry) or the RESPONSE (a server-generated request id) — plus
|
|
8
|
+
* any operator-named header (`--log-correlation-header`). The log side (`lineIds`) finds those
|
|
9
|
+
* ids in a backend log line: any whitespace/punctuation-delimited token equal to a recorded id
|
|
10
|
+
* (exact — never a prefix or a substring of a longer token).
|
|
11
|
+
*
|
|
12
|
+
* `ServerLogRuntime` then attaches a line that carries a run's id to EXACTLY that request (method,
|
|
13
|
+
* URL, status) and to the step that sent it — whatever time the line landed — and falls back to the
|
|
14
|
+
* time window only for lines with no id. Once ids demonstrably correlate (at least one line matched
|
|
15
|
+
* a run's id), a line carrying a DIFFERENT id (`foreignIds`: a `trace_id=`/`request_id=` key, a
|
|
16
|
+
* `traceparent`, or an operator `--log-id-pattern`) belongs to other work — another user, a
|
|
17
|
+
* background job — and is never attributed to this run.
|
|
18
|
+
*
|
|
19
|
+
* Ids are not secrets, but every URL is redacted and every attached line is redacted with the run's
|
|
20
|
+
* secrets, as before.
|
|
21
|
+
*/
|
|
22
|
+
/** Headers whose value identifies a request across the browser and the backend (lower-case). */
|
|
23
|
+
export declare const DEFAULT_CORRELATION_HEADERS: readonly string[];
|
|
24
|
+
/** The correlation id(s) a header value carries. */
|
|
25
|
+
export declare function idsFromHeader(name: string, value: string): string[];
|
|
26
|
+
/** One request the run's page sent, with the ids that identify it to the backend. */
|
|
27
|
+
export interface CorrelatedRequest {
|
|
28
|
+
readonly method: string;
|
|
29
|
+
/** Redacted URL (the shared `redactUrl` rule). */
|
|
30
|
+
readonly url: string;
|
|
31
|
+
/** The response status; null while (or if never) answered. */
|
|
32
|
+
status: number | null;
|
|
33
|
+
/** When it was sent (epoch ms). */
|
|
34
|
+
readonly startedAtMs: number;
|
|
35
|
+
readonly ids: string[];
|
|
36
|
+
}
|
|
37
|
+
/** The page surface the ledger listens on (Playwright's `Page`, structurally). */
|
|
38
|
+
export interface RequestEvents {
|
|
39
|
+
on(event: "request", fn: (r: LedgerRequest) => void): unknown;
|
|
40
|
+
on(event: "response", fn: (r: {
|
|
41
|
+
request(): LedgerRequest;
|
|
42
|
+
status(): number;
|
|
43
|
+
headers(): Record<string, string>;
|
|
44
|
+
}) => void): unknown;
|
|
45
|
+
}
|
|
46
|
+
export interface LedgerRequest {
|
|
47
|
+
url(): string;
|
|
48
|
+
method(): string;
|
|
49
|
+
headers(): Record<string, string>;
|
|
50
|
+
}
|
|
51
|
+
/** Validates `--log-correlation-header` names (fails closed on the first bad one). */
|
|
52
|
+
export declare function parseCorrelationHeaders(raw: readonly string[]): string[];
|
|
53
|
+
/**
|
|
54
|
+
* Parses `--log-id-pattern` values: `/regex/flags` whose first capture group (or whole match) is a
|
|
55
|
+
* correlation id in a log line of the operator's own format. Bounded and compiled once.
|
|
56
|
+
*/
|
|
57
|
+
export declare function parseLogIdPatterns(raw: readonly string[]): RegExp[];
|
|
58
|
+
/** Records every request a run's page sends with its correlation ids (#204). */
|
|
59
|
+
export declare class RequestIdLedger {
|
|
60
|
+
#private;
|
|
61
|
+
constructor(opts?: {
|
|
62
|
+
readonly headers?: readonly string[];
|
|
63
|
+
readonly now?: () => number;
|
|
64
|
+
});
|
|
65
|
+
/** Starts listening on a page (call before its first navigation). */
|
|
66
|
+
observe(page: RequestEvents): void;
|
|
67
|
+
/** How many requests carried at least one id. */
|
|
68
|
+
get requestsWithIds(): number;
|
|
69
|
+
/** The request a log line belongs to (by an id it carries), or undefined. */
|
|
70
|
+
requestFor(raw: string): {
|
|
71
|
+
readonly request: CorrelatedRequest;
|
|
72
|
+
readonly id: string;
|
|
73
|
+
} | undefined;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* The correlation ids a log line DECLARES (#204): a keyed id (`trace_id=`, `"requestId":`, …), a
|
|
77
|
+
* `traceparent`, or an operator `--log-id-pattern` match. Used to tell another request's line
|
|
78
|
+
* (foreign) from one with no id at all (time-window fallback).
|
|
79
|
+
*/
|
|
80
|
+
export declare function declaredIds(raw: string, patterns?: readonly RegExp[]): string[];
|