@jevitate/cli 0.2.0 → 0.4.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 +48715 -40027
- 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 +153 -0
- package/dist/campaign-api.js +447 -0
- package/dist/campaign-api.js.map +1 -0
- package/dist/campaign-cli.d.ts +8 -0
- package/dist/campaign-cli.js +109 -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 +46 -10
- package/dist/check-execute.js.map +1 -1
- package/dist/check-plan.d.ts +5 -0
- package/dist/check-plan.js +77 -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.d.ts +3 -2
- package/dist/defect-evidence.js +12 -8
- 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 +22 -13
- package/dist/explore-adversarial.js.map +1 -1
- package/dist/explore-cli.js +282 -31
- package/dist/explore-cli.js.map +1 -1
- package/dist/explore-coverage.d.ts +17 -2
- package/dist/explore-coverage.js +20 -14
- package/dist/explore-coverage.js.map +1 -1
- package/dist/explore-feature.d.ts +0 -2
- package/dist/explore-feature.js +7 -9
- package/dist/explore-feature.js.map +1 -1
- package/dist/explore-goal.d.ts +25 -7
- package/dist/explore-goal.js +62 -19
- package/dist/explore-goal.js.map +1 -1
- package/dist/explore-shared.d.ts +53 -3
- package/dist/explore-shared.js +48 -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 +63 -1
- package/dist/log-correlation.js +125 -16
- 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-cli.js +60 -1
- package/dist/logs-cli.js.map +1 -1
- 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 +6 -1
- package/dist/mcp-cli-tools.js +103 -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 +3 -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.d.ts +2 -0
- package/dist/mission-queue-runner.js +18 -5
- 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/signal-triage.d.ts +147 -0
- package/dist/signal-triage.js +281 -0
- package/dist/signal-triage.js.map +1 -0
- 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 +36 -0
- package/dist/suite-explore-options.js +23 -0
- package/dist/suite-explore-options.js.map +1 -1
- package/dist/target-config.d.ts +12 -0
- package/dist/target-config.js +15 -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 +102 -16
- 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 +11 -11
- package/skills/jevitate-explore/SKILL.md +13 -0
- package/skills/jevitate-getting-started/SKILL.md +2 -1
- package/skills/jevitate-test-campaign/SKILL.md +206 -0
|
@@ -2,6 +2,8 @@ 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";
|
|
6
|
+
import { type SignalEntry } from "./signal-triage.js";
|
|
5
7
|
/**
|
|
6
8
|
* Correlates tailed backend log lines to the mission step they landed during (#142): each step's
|
|
7
9
|
* "window" runs from the previous step's settle time to this step's own settle time (a mission's
|
|
@@ -16,6 +18,15 @@ import { type LogDefectMatcher, type LogIgnoreMatcher, type LogLevel } from "./l
|
|
|
16
18
|
* Fail closed: every line is redacted with the run's own secret list before it is ever attached to
|
|
17
19
|
* a step, turned into a defect, or counted in the summary — a log line can contain secrets the page
|
|
18
20
|
* never showed.
|
|
21
|
+
*
|
|
22
|
+
* #204 — by trace / correlation id first: a line that carries an id one of the run's requests sent
|
|
23
|
+
* or received (`traceparent`, `x-request-id`, …; see `log-trace.ts`) is attached to EXACTLY that
|
|
24
|
+
* request (`request: { method, url, status, id }`) and to the step that sent it, whenever it
|
|
25
|
+
* landed. Only a line with no id falls back to the time window. Once ids demonstrably correlate, a
|
|
26
|
+
* line carrying ANOTHER id is other work (another user, a background job) and is never this run's.
|
|
27
|
+
*
|
|
28
|
+
* #282 — `--log-scope`: when given, only lines matching it (a tenant id, a run marker) are
|
|
29
|
+
* attributed; the rest count as `ignoredLines`. A line carrying one of the run's ids is in scope.
|
|
19
30
|
*/
|
|
20
31
|
export interface ServerLogEvidence {
|
|
21
32
|
readonly level: LogLevel;
|
|
@@ -27,6 +38,18 @@ export interface ServerLogEvidence {
|
|
|
27
38
|
readonly epochMs: number;
|
|
28
39
|
/** The logger's own target/category, when known (#169). */
|
|
29
40
|
readonly target?: string;
|
|
41
|
+
/**
|
|
42
|
+
* #204: the run's request this line was correlated to by a trace/correlation id it carries —
|
|
43
|
+
* method, redacted URL, response status (null: no response) and the id. Unset: attached by time.
|
|
44
|
+
*/
|
|
45
|
+
readonly request?: ServerLogRequest;
|
|
46
|
+
}
|
|
47
|
+
/** #204: the request a server log line belongs to, by a correlation id both carry. */
|
|
48
|
+
export interface ServerLogRequest {
|
|
49
|
+
readonly method: string;
|
|
50
|
+
readonly url: string;
|
|
51
|
+
readonly status: number | null;
|
|
52
|
+
readonly id: string;
|
|
30
53
|
}
|
|
31
54
|
export type TranscriptEntryWithLogs = TranscriptEntry & {
|
|
32
55
|
readonly serverLogs?: readonly ServerLogEvidence[];
|
|
@@ -56,8 +79,21 @@ export interface ServerLogsSummary {
|
|
|
56
79
|
readonly attachedLines: number;
|
|
57
80
|
readonly unattributedLines: number;
|
|
58
81
|
/** Lines excluded by `--log-ignore` (#169 item 3) — known noise, never attached, never a defect
|
|
59
|
-
* candidate, not counted in `byLevel`/`topMessages
|
|
82
|
+
* candidate, not counted in `byLevel`/`topMessages` — plus lines outside `--log-scope` (#282) and
|
|
83
|
+
* lines carrying another request's correlation id (#204), broken down in `correlation`. */
|
|
60
84
|
readonly ignoredLines: number;
|
|
85
|
+
/**
|
|
86
|
+
* #204/#282: how lines were correlated — set when a request carried a correlation id or
|
|
87
|
+
* `--log-scope` was given. `idMatchedLines`: attached to their exact request by id;
|
|
88
|
+
* `foreignLines`: carried another request's id (never this run's); `outOfScopeLines`: outside
|
|
89
|
+
* `--log-scope`. The last two are included in `ignoredLines`.
|
|
90
|
+
*/
|
|
91
|
+
readonly correlation?: {
|
|
92
|
+
readonly requestsWithIds: number;
|
|
93
|
+
readonly idMatchedLines: number;
|
|
94
|
+
readonly foreignLines: number;
|
|
95
|
+
readonly outOfScopeLines: number;
|
|
96
|
+
};
|
|
61
97
|
/**
|
|
62
98
|
* False when `--log-defect` was given but at least one declared source is unhealthy: it never
|
|
63
99
|
* opened/errored, OR it opened and delivered not one line while NOT declared `--log-quiet-ok`
|
|
@@ -82,18 +118,28 @@ export interface ServerLogDefect {
|
|
|
82
118
|
readonly repro: {
|
|
83
119
|
readonly recordingStepIndex: number;
|
|
84
120
|
};
|
|
121
|
+
/** #204: the request the first occurrence was correlated to by id, when it was. */
|
|
122
|
+
readonly request?: ServerLogRequest;
|
|
85
123
|
/** So `verify-fix` can re-open the SAME sources and re-check the SAME matcher (#142). */
|
|
86
124
|
readonly serverLog: {
|
|
87
125
|
readonly sources: readonly string[];
|
|
88
126
|
readonly matcher: string;
|
|
89
127
|
readonly normalizedMessage: string;
|
|
90
128
|
readonly drainMs: number;
|
|
129
|
+
/** #282: the run's `--log-scope` (raw specs): verify-fix counts only lines in scope too. */
|
|
130
|
+
readonly scope?: readonly string[];
|
|
91
131
|
};
|
|
92
132
|
}
|
|
93
133
|
export interface ServerLogRuntimeResult {
|
|
94
134
|
readonly transcript: readonly TranscriptEntryWithLogs[];
|
|
95
135
|
readonly summary: ServerLogsSummary;
|
|
96
136
|
readonly defects: ServerLogDefect[];
|
|
137
|
+
/** #313 (`signals: true`): the run's whole redacted signal timeline — every backend line at every
|
|
138
|
+
* level plus the browser's console, page errors and failed requests — each placed in its step. */
|
|
139
|
+
readonly signals?: {
|
|
140
|
+
readonly entries: readonly SignalEntry[];
|
|
141
|
+
readonly truncated: boolean;
|
|
142
|
+
};
|
|
97
143
|
}
|
|
98
144
|
export declare const DEFAULT_SERVER_LOG_DRAIN_MS = 3000;
|
|
99
145
|
export interface ServerLogRuntimeOptions {
|
|
@@ -108,6 +154,15 @@ export interface ServerLogRuntimeOptions {
|
|
|
108
154
|
/** Already-parsed `--log-ignore` matchers (#169 item 3): known-noise lines excluded from
|
|
109
155
|
* correlation AND the defect oracle, counted separately (`serverLogs.ignoredLines`). */
|
|
110
156
|
readonly logIgnore?: readonly LogIgnoreMatcher[];
|
|
157
|
+
/** #282: `--log-scope` matchers (same `/regex/` or substring grammar as `--log-ignore`): only lines
|
|
158
|
+
* matching one are attributed (or carrying one of the run's correlation ids); the rest are ignored. */
|
|
159
|
+
readonly logScope?: readonly LogIgnoreMatcher[];
|
|
160
|
+
/** #204: extra response/request headers carrying a correlation id (`--log-correlation-header`). */
|
|
161
|
+
readonly correlationHeaders?: readonly string[];
|
|
162
|
+
/** #204: `--log-id-pattern`s: how an id is written in a log line of the operator's own format. */
|
|
163
|
+
readonly idPatterns?: readonly RegExp[];
|
|
164
|
+
/** #313 `--log-triage`: also record the whole signal timeline (`ServerLogRuntimeResult.signals`). */
|
|
165
|
+
readonly signals?: boolean;
|
|
111
166
|
/** The journal's own listener — still called for every entry (the crash-safe flush is unchanged). */
|
|
112
167
|
readonly onTranscriptEntry?: (entry: TranscriptEntry, all: readonly TranscriptEntry[]) => void;
|
|
113
168
|
}
|
|
@@ -119,6 +174,11 @@ export declare function openServerLogRuntime(opts: ServerLogRuntimeOptions): Ser
|
|
|
119
174
|
export declare class ServerLogRuntime {
|
|
120
175
|
#private;
|
|
121
176
|
constructor(opts: ServerLogRuntimeOptions);
|
|
177
|
+
/**
|
|
178
|
+
* #204: records the correlation ids of every request this page sends and receives. Call before
|
|
179
|
+
* the page's first navigation (the seed load's requests count too).
|
|
180
|
+
*/
|
|
181
|
+
observe(page: RequestEvents): void;
|
|
122
182
|
/** Wraps the journal's own `TranscriptListener`: unchanged persistence, plus this step's epoch. */
|
|
123
183
|
readonly onTranscriptEntry: (entry: TranscriptEntry, all: readonly TranscriptEntry[]) => void;
|
|
124
184
|
/** Call once the mission function has returned. Waits out the drain window, closes every source,
|
|
@@ -135,6 +195,8 @@ export declare class ServerLogRuntime {
|
|
|
135
195
|
export declare function parseLogDefectSpecs(raw: readonly string[]): LogDefectMatcher[];
|
|
136
196
|
/** Parses `--log-ignore` values, failing closed on the first bad one (#169 item 3). */
|
|
137
197
|
export declare function parseLogIgnoreSpecs(raw: readonly string[]): LogIgnoreMatcher[];
|
|
198
|
+
/** Parses `--log-scope` values (#282): the `--log-ignore` grammar, a `/regex/flags/` or a substring. */
|
|
199
|
+
export declare function parseLogScopeSpecs(raw: readonly string[]): LogIgnoreMatcher[];
|
|
138
200
|
/**
|
|
139
201
|
* Folds a server-log correlation result into an already-computed `MissionOutcome` (#142, follow-up
|
|
140
202
|
* 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,10 @@
|
|
|
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";
|
|
7
|
+
import { observeBrowserSignals, redactSignalText } from "./signal-triage.js";
|
|
6
8
|
const UNATTRIBUTED_ROUTE = "(run)";
|
|
7
9
|
/** Only these levels are auto-attached as step evidence (a `--log-defect` match is ALWAYS attached,
|
|
8
10
|
* whatever its level, since it is now a candidate defect). */
|
|
@@ -10,7 +12,7 @@ const ATTACH_LEVELS = new Set(["warn", "error"]);
|
|
|
10
12
|
export const DEFAULT_SERVER_LOG_DRAIN_MS = 3_000;
|
|
11
13
|
function sleep(ms) {
|
|
12
14
|
return new Promise((resolve) => {
|
|
13
|
-
const t = setTimeout(resolve, ms);
|
|
15
|
+
const t = clock.setTimeout(resolve, ms);
|
|
14
16
|
t.unref?.();
|
|
15
17
|
});
|
|
16
18
|
}
|
|
@@ -28,15 +30,21 @@ export class ServerLogRuntime {
|
|
|
28
30
|
#groupers = [];
|
|
29
31
|
#lines = [];
|
|
30
32
|
#stepEpoch = new Map();
|
|
31
|
-
#missionStartEpochMs =
|
|
33
|
+
#missionStartEpochMs = clock.now();
|
|
32
34
|
#secrets;
|
|
33
35
|
#matchers;
|
|
34
36
|
#drainMs;
|
|
35
37
|
#quietOk;
|
|
36
38
|
#logIgnore;
|
|
39
|
+
#logScope;
|
|
40
|
+
#idPatterns;
|
|
41
|
+
#ledger;
|
|
37
42
|
#ignoredLines = 0;
|
|
38
43
|
#inner;
|
|
39
44
|
#maxTotalLines = 20_000;
|
|
45
|
+
#signalsOn;
|
|
46
|
+
#browserSignals = [];
|
|
47
|
+
#signalsDropped = false;
|
|
40
48
|
#finished = false;
|
|
41
49
|
#exitHook = () => {
|
|
42
50
|
for (const h of this.#handles)
|
|
@@ -48,7 +56,11 @@ export class ServerLogRuntime {
|
|
|
48
56
|
this.#drainMs = opts.drainMs ?? DEFAULT_SERVER_LOG_DRAIN_MS;
|
|
49
57
|
this.#quietOk = new Set(opts.quietOk ?? []);
|
|
50
58
|
this.#logIgnore = opts.logIgnore ?? [];
|
|
59
|
+
this.#logScope = opts.logScope ?? [];
|
|
60
|
+
this.#idPatterns = opts.idPatterns ?? [];
|
|
61
|
+
this.#ledger = new RequestIdLedger({ headers: opts.correlationHeaders ?? [] });
|
|
51
62
|
this.#inner = opts.onTranscriptEntry;
|
|
63
|
+
this.#signalsOn = opts.signals === true;
|
|
52
64
|
// One `openLogSources` call per spec: each source's `onLine` must stamp ITS OWN spec onto every
|
|
53
65
|
// `LogLine` (a shared callback across sources could not tell them apart). Each source also gets
|
|
54
66
|
// its OWN `DotnetEntryGrouper` (#165) — a multi-line .NET entry must never straddle two sources.
|
|
@@ -65,8 +77,10 @@ export class ServerLogRuntime {
|
|
|
65
77
|
process.on("exit", this.#exitHook);
|
|
66
78
|
}
|
|
67
79
|
#pushLine(raw, epochMs, sourceRaw) {
|
|
68
|
-
if (this.#lines.length >= this.#maxTotalLines)
|
|
80
|
+
if (this.#lines.length >= this.#maxTotalLines) {
|
|
81
|
+
this.#signalsDropped = true;
|
|
69
82
|
return;
|
|
83
|
+
}
|
|
70
84
|
const parsed = parseLogLine(raw, epochMs, sourceRaw);
|
|
71
85
|
// #169 item 3: a known-noise line is dropped here, BEFORE it can become step evidence, a
|
|
72
86
|
// `topMessages`/`byLevel` entry or a defect candidate — but it was still delivered by the
|
|
@@ -87,9 +101,22 @@ export class ServerLogRuntime {
|
|
|
87
101
|
this.#pushLine(entry.raw, entry.epochMs, spec);
|
|
88
102
|
});
|
|
89
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* #204: records the correlation ids of every request this page sends and receives. Call before
|
|
106
|
+
* the page's first navigation (the seed load's requests count too).
|
|
107
|
+
*/
|
|
108
|
+
observe(page) {
|
|
109
|
+
this.#ledger.observe(page);
|
|
110
|
+
// #313: with --log-triage, the browser's own signals join the same timeline.
|
|
111
|
+
if (this.#signalsOn) {
|
|
112
|
+
observeBrowserSignals(page, this.#browserSignals, () => clock.now(), () => {
|
|
113
|
+
this.#signalsDropped = true;
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
}
|
|
90
117
|
/** Wraps the journal's own `TranscriptListener`: unchanged persistence, plus this step's epoch. */
|
|
91
118
|
onTranscriptEntry = (entry, all) => {
|
|
92
|
-
this.#stepEpoch.set(entry.step,
|
|
119
|
+
this.#stepEpoch.set(entry.step, clock.now());
|
|
93
120
|
this.#inner?.(entry, all);
|
|
94
121
|
};
|
|
95
122
|
/** Call once the mission function has returned. Waits out the drain window, closes every source,
|
|
@@ -97,7 +124,7 @@ export class ServerLogRuntime {
|
|
|
97
124
|
* empty result) — never blocks the mission itself, only this post-processing step. */
|
|
98
125
|
async finish(transcript) {
|
|
99
126
|
if (this.#finished)
|
|
100
|
-
return { transcript, summary: this.#summary([]), defects: [] };
|
|
127
|
+
return { transcript, summary: this.#summary([], this.#lines), defects: [] };
|
|
101
128
|
this.#finished = true;
|
|
102
129
|
await sleep(this.#drainMs);
|
|
103
130
|
this.#flushGroupers();
|
|
@@ -122,8 +149,37 @@ export class ServerLogRuntime {
|
|
|
122
149
|
const perStepRaw = new Map();
|
|
123
150
|
const unattributed = [];
|
|
124
151
|
let attachedLines = 0;
|
|
152
|
+
// #204: which lines carry one of the run's own correlation ids (and so belong to that request).
|
|
153
|
+
const byId = new Map();
|
|
154
|
+
for (const line of this.#lines) {
|
|
155
|
+
const hit = this.#ledger.requestFor(line.raw);
|
|
156
|
+
if (hit !== undefined)
|
|
157
|
+
byId.set(line, hit);
|
|
158
|
+
}
|
|
159
|
+
// Ids demonstrably correlate (a line matched one): a line declaring ANOTHER id is other work.
|
|
160
|
+
const idsLive = byId.size > 0;
|
|
161
|
+
let foreignLines = 0;
|
|
162
|
+
let outOfScopeLines = 0;
|
|
163
|
+
const kept = [];
|
|
125
164
|
for (const line of this.#lines) {
|
|
126
|
-
|
|
165
|
+
if (!byId.has(line)) {
|
|
166
|
+
if (this.#logScope.length > 0 && !this.#logScope.some((m) => matchesLogIgnore(line, m))) {
|
|
167
|
+
outOfScopeLines += 1;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
if (idsLive && declaredIds(line.raw, this.#idPatterns).length > 0) {
|
|
171
|
+
foreignLines += 1;
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
kept.push(line);
|
|
176
|
+
}
|
|
177
|
+
const windowAt = (epochMs) => windows.find((w) => epochMs >= w.startMs && epochMs <= w.endMs) ?? (epochMs < (windows[0]?.startMs ?? 0) ? windows[0] : undefined);
|
|
178
|
+
const requests = new Map();
|
|
179
|
+
for (const line of kept) {
|
|
180
|
+
const hit = byId.get(line);
|
|
181
|
+
// An id-correlated line belongs to the step that SENT its request, whenever the line landed.
|
|
182
|
+
const win = hit === undefined ? windows.find((w) => line.epochMs >= w.startMs && line.epochMs <= w.endMs) : windowAt(hit.request.startedAtMs);
|
|
127
183
|
const isDefectCandidate = this.#matchers.some((m) => matchesLogDefect(line, m));
|
|
128
184
|
const attach = ATTACH_LEVELS.has(line.level) || isDefectCandidate;
|
|
129
185
|
if (win === undefined) {
|
|
@@ -134,6 +190,11 @@ export class ServerLogRuntime {
|
|
|
134
190
|
if (!attach)
|
|
135
191
|
continue;
|
|
136
192
|
attachedLines += 1;
|
|
193
|
+
const request = hit === undefined
|
|
194
|
+
? undefined
|
|
195
|
+
: { method: hit.request.method, url: redactText(hit.request.url, this.#secrets), status: hit.request.status, id: redactText(hit.id, this.#secrets) };
|
|
196
|
+
if (request !== undefined)
|
|
197
|
+
requests.set(line, request);
|
|
137
198
|
const list = perStep.get(win.step) ?? [];
|
|
138
199
|
list.push({
|
|
139
200
|
level: line.level,
|
|
@@ -142,6 +203,7 @@ export class ServerLogRuntime {
|
|
|
142
203
|
source: line.source,
|
|
143
204
|
epochMs: line.epochMs,
|
|
144
205
|
...(line.target === undefined ? {} : { target: redactText(line.target, this.#secrets) }),
|
|
206
|
+
...(request === undefined ? {} : { request }),
|
|
145
207
|
});
|
|
146
208
|
perStep.set(win.step, list);
|
|
147
209
|
const rawList = perStepRaw.get(win.step) ?? [];
|
|
@@ -152,11 +214,41 @@ export class ServerLogRuntime {
|
|
|
152
214
|
const logs = perStep.get(entry.step);
|
|
153
215
|
return logs === undefined || logs.length === 0 ? entry : { ...entry, serverLogs: logs };
|
|
154
216
|
});
|
|
155
|
-
const defects = this.#matchers.length === 0 ? [] : this.#buildDefects(transcript, perStepRaw, unattributed);
|
|
156
|
-
const
|
|
157
|
-
|
|
217
|
+
const defects = this.#matchers.length === 0 ? [] : this.#buildDefects(transcript, perStepRaw, unattributed, requests);
|
|
218
|
+
const correlation = this.#ledger.requestsWithIds > 0 || this.#logScope.length > 0
|
|
219
|
+
? { requestsWithIds: this.#ledger.requestsWithIds, idMatchedLines: kept.filter((l) => byId.has(l)).length, foreignLines, outOfScopeLines }
|
|
220
|
+
: undefined;
|
|
221
|
+
const summary = this.#summary(unattributed, kept, attachedLines, correlation);
|
|
222
|
+
if (!this.#signalsOn)
|
|
223
|
+
return { transcript: augmented, summary, defects };
|
|
224
|
+
// #313: every kept line (all levels) and every browser signal, redacted, placed in its step.
|
|
225
|
+
const place = (step) => step === undefined ? {} : { step, recordingStepIndex: recordingStepIndexFor(transcript, step) };
|
|
226
|
+
const entries = [
|
|
227
|
+
...kept.map((line) => {
|
|
228
|
+
const hit = byId.get(line);
|
|
229
|
+
const win = hit === undefined ? windows.find((w) => line.epochMs >= w.startMs && line.epochMs <= w.endMs) : windowAt(hit.request.startedAtMs);
|
|
230
|
+
return {
|
|
231
|
+
epochMs: line.epochMs,
|
|
232
|
+
source: `server:${line.source}`,
|
|
233
|
+
level: line.level,
|
|
234
|
+
text: redactSignalText(line.raw, this.#secrets),
|
|
235
|
+
...place(win?.step),
|
|
236
|
+
...(hit === undefined
|
|
237
|
+
? {}
|
|
238
|
+
: { request: { method: hit.request.method, url: redactSignalText(hit.request.url, this.#secrets), ...(hit.request.status === null ? {} : { status: hit.request.status }), id: redactText(hit.id, this.#secrets) } }),
|
|
239
|
+
};
|
|
240
|
+
}),
|
|
241
|
+
...this.#browserSignals.map((b) => ({
|
|
242
|
+
epochMs: b.epochMs,
|
|
243
|
+
source: b.source,
|
|
244
|
+
level: b.level,
|
|
245
|
+
text: redactSignalText(b.text, this.#secrets),
|
|
246
|
+
...place(windows.find((w) => b.epochMs >= w.startMs && b.epochMs <= w.endMs)?.step),
|
|
247
|
+
})),
|
|
248
|
+
].sort((a, b) => a.epochMs - b.epochMs);
|
|
249
|
+
return { transcript: augmented, summary, defects, signals: { entries, truncated: this.#signalsDropped } };
|
|
158
250
|
}
|
|
159
|
-
#buildDefects(transcript, perStepRaw, unattributed) {
|
|
251
|
+
#buildDefects(transcript, perStepRaw, unattributed, requests) {
|
|
160
252
|
const grouped = new Map();
|
|
161
253
|
const lastStep = transcript.length > 0 ? transcript[transcript.length - 1].step : 0;
|
|
162
254
|
const consider = (line, route, atStep) => {
|
|
@@ -174,6 +266,7 @@ export class ServerLogRuntime {
|
|
|
174
266
|
// fingerprint already used internally) — two occurrences that only differ by an id in the URL
|
|
175
267
|
// read as the same defect everywhere, not just in the hash.
|
|
176
268
|
const templatedRoute = route === UNATTRIBUTED_ROUTE ? route : normalizeRoute(route);
|
|
269
|
+
const request = requests.get(line);
|
|
177
270
|
grouped.set(fp, {
|
|
178
271
|
count: 1,
|
|
179
272
|
defect: {
|
|
@@ -186,11 +279,13 @@ export class ServerLogRuntime {
|
|
|
186
279
|
message: redactText(line.message, this.#secrets),
|
|
187
280
|
occurrences: 1,
|
|
188
281
|
repro: { recordingStepIndex: recordingStepIndexFor(transcript, atStep) },
|
|
282
|
+
...(request === undefined ? {} : { request }),
|
|
189
283
|
serverLog: {
|
|
190
284
|
sources: this.#handles.map((h) => h.spec.raw),
|
|
191
285
|
matcher: matched.raw,
|
|
192
286
|
normalizedMessage,
|
|
193
287
|
drainMs: this.#drainMs,
|
|
288
|
+
...(this.#logScope.length === 0 ? {} : { scope: this.#logScope.map((m) => m.raw) }),
|
|
194
289
|
},
|
|
195
290
|
},
|
|
196
291
|
});
|
|
@@ -204,12 +299,12 @@ export class ServerLogRuntime {
|
|
|
204
299
|
consider(line, UNATTRIBUTED_ROUTE, lastStep);
|
|
205
300
|
return [...grouped.values()].map(({ defect, count }) => ({ ...defect, occurrences: count }));
|
|
206
301
|
}
|
|
207
|
-
#summary(unattributed, attachedLines = 0) {
|
|
302
|
+
#summary(unattributed, lines, attachedLines = 0, correlation) {
|
|
208
303
|
const byLevel = {};
|
|
209
|
-
for (const line of
|
|
304
|
+
for (const line of lines)
|
|
210
305
|
byLevel[line.level] = (byLevel[line.level] ?? 0) + 1;
|
|
211
306
|
const counts = new Map();
|
|
212
|
-
for (const line of
|
|
307
|
+
for (const line of lines) {
|
|
213
308
|
const message = normalizeLogMessage(line.message);
|
|
214
309
|
const key = `${line.level}|${line.target ?? ""}|${message}`;
|
|
215
310
|
const e = counts.get(key);
|
|
@@ -259,7 +354,8 @@ export class ServerLogRuntime {
|
|
|
259
354
|
topMessages,
|
|
260
355
|
attachedLines,
|
|
261
356
|
unattributedLines: unattributed.length,
|
|
262
|
-
ignoredLines: this.#ignoredLines,
|
|
357
|
+
ignoredLines: this.#ignoredLines + (correlation?.foreignLines ?? 0) + (correlation?.outOfScopeLines ?? 0),
|
|
358
|
+
...(correlation === undefined ? {} : { correlation }),
|
|
263
359
|
oracleOk,
|
|
264
360
|
...(oracleReason === undefined ? {} : { oracleReason }),
|
|
265
361
|
};
|
|
@@ -304,6 +400,19 @@ export function parseLogDefectSpecs(raw) {
|
|
|
304
400
|
export function parseLogIgnoreSpecs(raw) {
|
|
305
401
|
return raw.map(parseLogIgnoreSpec);
|
|
306
402
|
}
|
|
403
|
+
/** Parses `--log-scope` values (#282): the `--log-ignore` grammar, a `/regex/flags/` or a substring. */
|
|
404
|
+
export function parseLogScopeSpecs(raw) {
|
|
405
|
+
return raw.map((r) => {
|
|
406
|
+
try {
|
|
407
|
+
return parseLogIgnoreSpec(r);
|
|
408
|
+
}
|
|
409
|
+
catch (e) {
|
|
410
|
+
if (e instanceof LogSpecError)
|
|
411
|
+
throw new LogSpecError(e.message.replace(/--log-ignore/g, "--log-scope"));
|
|
412
|
+
throw e;
|
|
413
|
+
}
|
|
414
|
+
});
|
|
415
|
+
}
|
|
307
416
|
/**
|
|
308
417
|
* Folds a server-log correlation result into an already-computed `MissionOutcome` (#142, follow-up
|
|
309
418
|
* 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":"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"}
|
|
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[];
|